From 239b0b1d4343f987936019c76abb2bc7ff815fee Mon Sep 17 00:00:00 2001 From: Mor Date: Sat, 18 Apr 2020 17:32:11 +0300 Subject: rudimentary matching decompilation of NitroMain --- src/main.c | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 src/main.c (limited to 'src') diff --git a/src/main.c b/src/main.c new file mode 100644 index 00000000..844d069d --- /dev/null +++ b/src/main.c @@ -0,0 +1,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 gUnknown2106FA0; +extern struct Unk2106FA0 gUnknown2106FA0_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 FUN_020D50D8(); +extern void FUN_020C9C0C(); +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) +{ + FUN_02016014(); + FUN_02016148(); + FUN_020163BC(); + FUN_02016438(0); + + FUN_020D50D8(&gUnknown2106FA0_2, 0); // should be blx please + + FUN_02022294(); + FUN_0201259C(); + FUN_02000DF4(); + FUN_02002C14(); + FUN_02002C50(0, 3); + FUN_02002C50(1, 3); + FUN_02002C50(3, 3); + gUnknown2106FA0.unk18 = -1; + gUnknown2106FA0.unk20 = FUN_0202254C(); + FUN_02003B98(FUN_02029EF8(gUnknown2106FA0.unk20), FUN_02023900(gUnknown2106FA0.unk20)); + FUN_02020AFC(); + if (FUN_020337E8(3) == 3) + FUN_02034188(3, 0); + if (FUN_020227FC(gUnknown2106FA0.unk20) == 0) + { + FUN_02089D90(0); + } + else + { + switch (gUnk027FFC20) + { + case 0: + gUnknown2106FA0.unk1C = 0; + FUN_02000E7C(&CONST_3F, &gUnk021DBE18); + break; + case 1: + gUnknown2106FA0.unk1C = 1; + FUN_02000E7C(&CONST_34, &gUnk021D76C8); + break; + default: + FUN_02020C2C(); + break; + } + } + gUnknown21C48B8.unk6C = 1; + gUnknown21C48B8.unk30 = 0; + FUN_02000FA4(); + FUN_0200A2AC(); + FUN_02015E30(); + gUnknown2106FA0.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) + { + FUN_020C9C0C(1, 1); + gUnknown21C48B8.unk2C++; + } + } + FUN_020125D4(); + FUN_02015E60(); + FUN_020222C4(); + FUN_0201B5CC(gUnknown21C48B8.unk24); + FUN_020C9C0C(1, 1); + gUnknown21C48B8.unk2C++; + gUnknown21C48B8.unk30 = 0; + FUN_0200A318(); + FUN_0200E2D8(); + if (gUnknown21C48B8.unk0) + gUnknown21C48B8.unk0(gUnknown21C48B8.unk4); + FUN_02003C10(); + FUN_0201B5CC(gUnknown21C48B8.unk20); + } +} \ No newline at end of file -- cgit v1.2.3 From 1359eb179bf7a94a37c51c2e735b17a49e0719a0 Mon Sep 17 00:00:00 2001 From: Mor Date: Sat, 18 Apr 2020 18:27:34 +0300 Subject: fixed c tabs and names --- src/FUN_02000DF4.c | 10 ++-- src/main.c | 166 ++++++++++++++++++++++++++--------------------------- 2 files changed, 88 insertions(+), 88 deletions(-) (limited to 'src') diff --git a/src/FUN_02000DF4.c b/src/FUN_02000DF4.c index c4532fdd..f62d1bf8 100644 --- a/src/FUN_02000DF4.c +++ b/src/FUN_02000DF4.c @@ -13,12 +13,12 @@ struct Unk2106FA0 { s32 unk14; }; -extern struct Unk2106FA0 gUnknown2106FA0; +extern struct Unk2106FA0 gBacklightTop; void FUN_02000DF4(void) { - gUnknown2106FA0.unk8 = -1; - gUnknown2106FA0.unkC = 0; - gUnknown2106FA0.unk10 = -1; - gUnknown2106FA0.unk14 = 0; + gBacklightTop.unk8 = -1; + gBacklightTop.unkC = 0; + gBacklightTop.unk10 = -1; + gBacklightTop.unk14 = 0; } diff --git a/src/main.c b/src/main.c index 844d069d..fa31dde5 100644 --- a/src/main.c +++ b/src/main.c @@ -42,8 +42,8 @@ struct Unk21C48B8 s32 unk6C; }; -extern struct Unk2106FA0 gUnknown2106FA0; -extern struct Unk2106FA0 gUnknown2106FA0_2; // same as the first one, it's referenced twice in the constant pool... +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; @@ -54,8 +54,8 @@ extern struct { u8 unk8; } gUnk021C4918; -extern void FUN_020D50D8(); -extern void FUN_020C9C0C(); +extern void PM_GetBackLight(); +extern void OS_WaitIrq(); extern void FUN_02016438(s32); extern const s32 CONST_3F; // 0x0000003F @@ -67,85 +67,85 @@ extern struct Unk21DBE18 gUnk021D76C8; void NitroMain(void) { - FUN_02016014(); - FUN_02016148(); - FUN_020163BC(); - FUN_02016438(0); + InitSystemForTheGame(); + InitGraphicMemory(); + FUN_020163BC(); + FUN_02016438(0); - FUN_020D50D8(&gUnknown2106FA0_2, 0); // should be blx please + 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); - gUnknown2106FA0.unk18 = -1; - gUnknown2106FA0.unk20 = FUN_0202254C(); - FUN_02003B98(FUN_02029EF8(gUnknown2106FA0.unk20), FUN_02023900(gUnknown2106FA0.unk20)); - FUN_02020AFC(); - if (FUN_020337E8(3) == 3) - FUN_02034188(3, 0); - if (FUN_020227FC(gUnknown2106FA0.unk20) == 0) - { - FUN_02089D90(0); - } - else - { - switch (gUnk027FFC20) - { - case 0: - gUnknown2106FA0.unk1C = 0; - FUN_02000E7C(&CONST_3F, &gUnk021DBE18); - break; - case 1: - gUnknown2106FA0.unk1C = 1; - FUN_02000E7C(&CONST_34, &gUnk021D76C8); - break; - default: - FUN_02020C2C(); - break; - } - } - gUnknown21C48B8.unk6C = 1; - gUnknown21C48B8.unk30 = 0; - FUN_02000FA4(); - FUN_0200A2AC(); - FUN_02015E30(); - gUnknown2106FA0.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) - { - FUN_020C9C0C(1, 1); - gUnknown21C48B8.unk2C++; - } - } - FUN_020125D4(); - FUN_02015E60(); - FUN_020222C4(); - FUN_0201B5CC(gUnknown21C48B8.unk24); - FUN_020C9C0C(1, 1); - gUnknown21C48B8.unk2C++; - gUnknown21C48B8.unk30 = 0; - FUN_0200A318(); - FUN_0200E2D8(); - if (gUnknown21C48B8.unk0) - gUnknown21C48B8.unk0(gUnknown21C48B8.unk4); - FUN_02003C10(); - FUN_0201B5CC(gUnknown21C48B8.unk20); - } + 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); + } } \ No newline at end of file -- cgit v1.2.3 From 95090b7c1f27818f5f01d7b1da2296a6887d03a9 Mon Sep 17 00:00:00 2001 From: Mor Date: Sat, 18 Apr 2020 18:29:07 +0300 Subject: fixed struct definition indentation --- src/main.c | 62 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index fa31dde5..d703331d 100644 --- a/src/main.c +++ b/src/main.c @@ -8,38 +8,38 @@ typedef signed long s32; struct Unk2106FA0 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; + 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; + 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; @@ -49,9 +49,9 @@ extern struct Unk21C48B8 gUnknown21C48B8; extern s32 gUnk027FFC20; extern struct { - s32 unk0; - s32 unk4; - u8 unk8; + s32 unk0; + s32 unk4; + u8 unk8; } gUnk021C4918; extern void PM_GetBackLight(); -- cgit v1.2.3