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
|
#include "global.h"
#include "main.h"
#include "PAD_pad.h"
#include "poke_overlay.h"
FS_EXTERN_OVERLAY(MODULE_52);
FS_EXTERN_OVERLAY(MODULE_63);
#define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT)
extern struct Unk21C48B8 gUnknown21C48B8;
extern void OS_WaitIrq();
extern void FUN_02016438(s32);
extern void InitSystemForTheGame(void);
extern void InitGraphicMemory(void);
extern void FUN_020163BC(void);
extern void FUN_02022294(void);
extern void FUN_0201259C(void);
extern void FUN_02000DF4(void);
extern void FUN_02002C14(void);
extern void FUN_02002C50(int, int);
extern struct UnkStruct_021C59C8 * FUN_0202254C(void);
extern void FUN_02003B98(int, int);
extern int FUN_02029EF8(struct UnkStruct_021C59C8 *);
extern int LoadPlayerDataAddress(struct UnkStruct_021C59C8 *);
extern void FUN_02020AFC(void);
extern int FUN_020337E8(int);
extern void FUN_02034188(int, int);
extern int FUN_020227FC(struct UnkStruct_021C59C8 *);
extern void FUN_02089D90(int);
extern void FUN_02000E7C(FSOverlayID, struct Unk21DBE18 *);
extern void InitializeMainRNG(void);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
extern void FUN_02000EE8(void);
void DoSoftReset(u32 parameter);
extern BOOL FUN_0202FB80(void);
extern void FUN_02000E0C(void);
extern void FUN_0201B5CC(int);
extern void FUN_020125D4(void);
extern void FUN_02015E60(void);
extern void FUN_020222C4(void);
extern void FUN_0200A318(void);
extern void FUN_0200E2D8(void);
extern void FUN_02003C10(void);
extern void FUN_02000FE8(void);
extern void FUN_02016464(void);
extern struct Unk21DBE18 MOD63_UNK_021DBE18;
extern struct Unk21DBE18 MOD52_UNK_021D76C8;
extern u8 SDK_STATIC_BSS_START[];
const enum GameVersion gGameVersion = VERSION_DIAMOND;
const enum GameLanguage gGameLanguage = LANGUAGE_ENGLISH;
THUMB_FUNC void NitroMain(void)
{
InitSystemForTheGame();
InitGraphicMemory();
FUN_020163BC();
FUN_02016438(0);
PM_GetBackLight((PMBackLightSwitch *)SDK_STATIC_BSS_START, NULL);
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 (*((s32 *)HW_RESET_PARAMETER_BUF))
{
case 0:
gBacklightTop.unk1C = 0;
FUN_02000E7C(FS_OVERLAY_ID(MODULE_63), &MOD63_UNK_021DBE18);
break;
case 1:
gBacklightTop.unk1C = 1;
FUN_02000E7C(FS_OVERLAY_ID(MODULE_52), &MOD52_UNK_021D76C8);
break;
default:
ErrorHandling();
break;
}
}
gUnknown21C48B8.unk6C = 1;
gUnknown21C48B8.unk30 = 0;
InitializeMainRNG();
FUN_0200A2AC();
FUN_02015E30();
gBacklightTop.unk4 = 0;
for (;;)
{
FUN_02000EE8();
FUN_02000FE8();
FUN_02016464();
if ((gUnknown21C48B8.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gUnk021C4918.unk8) // soft reset?
{
DoSoftReset(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);
}
}
|