blob: d703331ddf78e07ccee73054d11e0520cb6e76d7 (
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
typedef signed char s8;
typedef signed short s16;
typedef signed long s32;
struct Unk2106FA0
{
s32 unk0;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
};
struct Unk21C48B8
{
void (*unk0)(s32);
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
s32 unk24;
s32 unk28;
s32 unk2C;
s32 unk30;
s32 unk34;
s32 unk38;
u8 filler3C[0xC];
s32 unk48;
u8 filler4C[0x20];
s32 unk6C;
};
extern struct Unk2106FA0 gBacklightTop;
extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
extern struct Unk2106FA0 gUnknown2106FB8;
extern struct Unk21C48B8 gUnknown21C48B8;
extern s32 gUnk027FFC20;
extern struct {
s32 unk0;
s32 unk4;
u8 unk8;
} gUnk021C4918;
extern void PM_GetBackLight();
extern void OS_WaitIrq();
extern void FUN_02016438(s32);
extern const s32 CONST_3F; // 0x0000003F
extern const s32 CONST_34; // 0x00000034
extern struct Unk21DBE18 gUnk021DBE18;
extern struct Unk21DBE18 gUnk021D76C8;
void NitroMain(void)
{
InitSystemForTheGame();
InitGraphicMemory();
FUN_020163BC();
FUN_02016438(0);
PM_GetBackLight(&gBacklightTop_2, 0);
FUN_02022294();
FUN_0201259C();
FUN_02000DF4();
FUN_02002C14();
FUN_02002C50(0, 3);
FUN_02002C50(1, 3);
FUN_02002C50(3, 3);
gBacklightTop.unk18 = -1;
gBacklightTop.unk20 = FUN_0202254C();
FUN_02003B98(FUN_02029EF8(gBacklightTop.unk20), LoadPlayerDataAddress(gBacklightTop.unk20));
FUN_02020AFC();
if (FUN_020337E8(3) == 3)
FUN_02034188(3, 0);
if (FUN_020227FC(gBacklightTop.unk20) == 0)
{
FUN_02089D90(0);
}
else
{
switch (gUnk027FFC20)
{
case 0:
gBacklightTop.unk1C = 0;
FUN_02000E7C(&CONST_3F, &gUnk021DBE18);
break;
case 1:
gBacklightTop.unk1C = 1;
FUN_02000E7C(&CONST_34, &gUnk021D76C8);
break;
default:
ErrorHandling();
break;
}
}
gUnknown21C48B8.unk6C = 1;
gUnknown21C48B8.unk30 = 0;
FUN_02000FA4();
FUN_0200A2AC();
FUN_02015E30();
gBacklightTop.unk4 = 0;
for (;;)
{
FUN_02000EE8();
FUN_02000FE8();
FUN_02016464();
if ((gUnknown21C48B8.unk38 & 0x30C) == 0x30C && !gUnk021C4918.unk8) // soft reset?
{
FUN_02000F18(0); // soft reset?
}
if (FUN_0202FB80())
{
FUN_02000E0C();
FUN_0201B5CC(gUnknown21C48B8.unk18);
FUN_0201B5CC(gUnknown21C48B8.unk24);
if (!gUnknown21C48B8.unk30)
{
OS_WaitIrq(1, 1);
gUnknown21C48B8.unk2C++;
}
}
FUN_020125D4();
FUN_02015E60();
FUN_020222C4();
FUN_0201B5CC(gUnknown21C48B8.unk24);
OS_WaitIrq(1, 1);
gUnknown21C48B8.unk2C++;
gUnknown21C48B8.unk30 = 0;
FUN_0200A318();
FUN_0200E2D8();
if (gUnknown21C48B8.unk0)
gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
FUN_02003C10();
FUN_0201B5CC(gUnknown21C48B8.unk20);
}
}
|