summaryrefslogtreecommitdiff
path: root/src/nw4r/g3d/g3d_init.cpp
blob: 7244c4ac1ae77aed8d44e4207f022d22dc417944 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "nw4r/g3d.h" // IWYU pragma: export

#include "nw4r/ut.h" // IWYU pragma: export

#include "rvl/GX.h" // IWYU pragma: export
#include "rvl/OS.h" // IWYU pragma: export
#include "rvl/VI.h"

namespace {

NW4R_LIB_VERSION(G3D, "Dec 22 2009", "02:11:33", "0x4302_158");

} // namespace

namespace nw4r {
namespace g3d {

void G3dInit(bool enableLockedCache) {
    OSRegisterVersion(NW4R_G3D_Version_);

    if (enableLockedCache) {
        ut::LC::Enable();
    } else {
        ut::LC::Disable();
    }

    InitFastCast();

    GXRenderModeObj *pMode;
    switch ((u32)VIGetTvFormat()) {
        case VI_TV_FMT_NTSC: {
            pMode = &GXNtsc480IntDf;
            break;
        }

        case VI_TV_FMT_PAL: {
            pMode = &GXPal528IntDf;
            break;
        }

        case VI_TV_FMT_EURGB60: {
            pMode = &GXEurgb60Hz480IntDf;
            break;
        }

        case VI_TV_FMT_MPAL: {
            pMode = &GXMpal480IntDf;
            break;
        }

        default: {
            pMode = &GXNtsc480IntDf;
            break;
        }
    }

    G3DState::SetRenderModeObj(*pMode);
}

void G3dReset() {
    G3DState::Invalidate();
}

} // namespace g3d
} // namespace nw4r