diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/code_8009804.c | 79 | ||||
-rw-r--r-- | src/code_80A7714.c | 4 | ||||
-rw-r--r-- | src/main_menu.c | 296 | ||||
-rw-r--r-- | src/wonder_mail_1.c | 47 |
4 files changed, 424 insertions, 2 deletions
diff --git a/src/code_8009804.c b/src/code_8009804.c new file mode 100644 index 0000000..1f1b054 --- /dev/null +++ b/src/code_8009804.c @@ -0,0 +1,79 @@ +#include "global.h" + +extern u8 gUnknown_202D238[4]; + +extern s32 gUnknown_202D23C; + +struct unkStruct_202D240 +{ + u32 *unk0; + u32 *unk4; + u32 *unk8; +}; +extern struct unkStruct_202D240 gUnknown_202D240[8]; + +void vram_related_8009804(void) +{ + u32 counter; + u32 *r1; + + r1 = (u32 *) VRAM; + for(counter = 0; counter < 0x13C0; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) 0x06007000; + for(counter = 0; counter < 0x400; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) 0x06008000; + for(counter = 0; counter < 0x2000; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) OBJ_VRAM0; + for(counter = 0; counter < 0x1f80; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) PLTT; + for(counter = 0; counter < 0x78; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) OBJ_PLTT; + for(counter = 0; counter < 0x78; counter++) + { + *r1++ = 0; + } + r1 = (u32 *) OAM; + for(counter = 0; counter < 0x100; counter++) + { + *r1++ = 0xa000a0; + } +} + +void sub_80098A0(void) +{ + gUnknown_202D23C = 0; + gUnknown_202D238[0] = 0; + gUnknown_202D238[1] = 0; + gUnknown_202D238[2] = 0; + gUnknown_202D238[3] = 0; +} + +void sub_80098BC(u32 *r0, u32 *r1, u32 *r2) +{ + if(gUnknown_202D23C < 8){ + gUnknown_202D240[gUnknown_202D23C].unk0 = r0; + gUnknown_202D240[gUnknown_202D23C].unk4 = r1; + gUnknown_202D240[gUnknown_202D23C].unk8 = r2; + gUnknown_202D23C++; + } +} + +void sub_80098F8(u32 r0) +{ + gUnknown_202D238[r0] = 1; +} diff --git a/src/code_80A7714.c b/src/code_80A7714.c index 035f58b..7944091 100644 --- a/src/code_80A7714.c +++ b/src/code_80A7714.c @@ -7,7 +7,7 @@ extern void sub_80A7784(); extern s16 gUnknown_2039DE0; extern u32 gUnknown_8117EFC; -extern u32 *gUnknown_811E258[]; +extern u32 *gMapScriptTable[]; void sub_80A7714(void) { @@ -75,7 +75,7 @@ u32 *sub_80A77D0(s16 r0) { if(r0 != -1) { - return gUnknown_811E258[r0]; + return gMapScriptTable[r0]; } else { diff --git a/src/main_menu.c b/src/main_menu.c new file mode 100644 index 0000000..714ae61 --- /dev/null +++ b/src/main_menu.c @@ -0,0 +1,296 @@ +#include "global.h" + +struct MainMenu +{ + u32 unk0; + s32 unk4; + u32 unk8; + u8 padding[0x20]; + u8 unk2C; + u8 unk2D; + u8 unk2E; + u8 padding2[0x30 - 0x2F]; + u32 unk30; + u32 unk34; + u16 unk38; + u8 unk3A; + u8 unk3B; + s32 unk3C; +}; + +extern struct MainMenu *gUnknown_203B348; +extern void* MemoryAlloc(u32 a, u32 b); +extern void MemoryFill8(u8 *dest, u8 value, s32 size); +void sub_8035DA0(void); +extern void MemoryFree(void *); + +extern void sub_8094C14(void); +extern void sub_8099690(u32); +extern void sub_8035E10(void); +extern void CreateDebugMenu(void); +extern void sub_8036400(void); +extern void sub_8036FDC(void); +extern void sub_803A1E4(void); +extern void sub_803225C(void); +extern void sub_803A1D8(void); +extern void sub_80398AC(void); +extern void sub_80382A0(void); +extern void sub_8039254(u32); +extern void sub_8035DB4(u32); +extern void sub_8038900(u32); +extern void sub_803850C(u32); +extern s32 sub_8035EEC(void); +extern s32 sub_803941C(void); +extern s32 sub_8036448(void); +extern s32 sub_8032318(void); +extern s32 sub_8039928(void); +extern s32 sub_803A1DC(void); +extern s32 sub_803A1E8(void); +extern s32 sub_8038A90(void); +extern s32 sub_80382C0(void); +extern s32 sub_80383D4(void); +extern s32 sub_8038630(void); +extern s32 sub_803A2A4(void); + +extern void sub_8035EC0(void); +extern void sub_80393F0(void); +extern void sub_8036B04(void); +extern void sub_80370D4(void); +extern void sub_80327E4(void); +extern void sub_80399E4(void); +extern void nullsub_55(void); +extern void sub_803A1EC(void); +extern void sub_8038A5C(void); +extern void sub_80382AC(void); +extern void sub_80383A8(void); +extern void sub_8038604(void); +extern void DeleteDebugMenu(void); + +void InitMainMenu(void) +{ + if (gUnknown_203B348 == NULL) { + gUnknown_203B348 = MemoryAlloc(sizeof(struct MainMenu),8); + MemoryFill8((u8 *)gUnknown_203B348, 0, sizeof(struct MainMenu)); + } + gUnknown_203B348->unk0 = 0xffdc; + gUnknown_203B348->unk4 = 1; + gUnknown_203B348->unk8 = 1; + gUnknown_203B348->unk38 = 0xffdc + 0x23; + gUnknown_203B348->unk3C = -1; + gUnknown_203B348->unk2E = 0; + gUnknown_203B348->unk2C = 1; + gUnknown_203B348->unk2D = 0; + sub_8035DA0(); + gUnknown_203B348->unk3A = 0; +} + +void sub_80357D0(void) +{ + if(gUnknown_203B348){ + MemoryFree(gUnknown_203B348); + gUnknown_203B348 = NULL; + } +} + +void SetUpMenu(void) +{ + if (gUnknown_203B348->unk0 != gUnknown_203B348->unk4) { + switch(gUnknown_203B348->unk4) { + case 1: + sub_8094C14(); + sub_8099690(0); + sub_8035E10(); + break; + case 6: + case 7: + case 8: + case 9: + sub_8039254(gUnknown_203B348->unk4); + break; + case 0xc: + sub_8036400(); + break; + case 0x13: + case 0x14: + sub_8035DB4(gUnknown_203B348->unk4); + sub_8036FDC(); + break; + case 0xb: + sub_803225C(); + break; + case 0xd: + sub_80398AC(); + break; + case 0xe: + sub_803A1D8(); + break; + case 0xf: + sub_803A1E4(); + break; + case 0x21: + case 0x22: + sub_8038900(gUnknown_203B348->unk4); + break; + case 0xA: + sub_80382A0(); + break; + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + sub_803850C(gUnknown_203B348->unk4); + break; + case 0x10: + CreateDebugMenu(); + break; + } + gUnknown_203B348->unk0 = gUnknown_203B348->unk4; + } +} + +s32 UpdateMenu(void) +{ + s32 iVar1; + s32 iVar2; + + iVar2 = 0xffdc; + switch(gUnknown_203B348->unk4) { + case 1: + iVar2 = sub_8035EEC(); + break; + case 6: + case 7: + case 8: + case 9: + iVar2 = sub_803941C(); + break; + case 0xc: + iVar1 = sub_8036448(); + iVar2 = 1; + if (iVar1 != 3) { + iVar2 = 0xffdc; + } + break; + case 0xb: + iVar1 = sub_8032318(); + iVar2 = 1; + if (iVar1 != 3) { + iVar2 = 0xffdc; + } + break; + case 0xd: + iVar1 = sub_8039928(); + iVar2 = 1; + if (iVar1 != 3) { + iVar2 = 0xffdc; + } + break; + case 0xe: + iVar1 = sub_803A1DC(); + iVar2 = 1; + if (iVar1 != 3) { + iVar2 = 0xffdc; + } + break; + case 0xf: + iVar1 = sub_803A1E8(); + iVar2 = 5; + if ((iVar1 != 3) && (iVar2 = 0xffdc, iVar1 == 2)) { + iVar2 = 1; + } + break; + case 0x21: + case 0x22: + iVar2 = sub_8038A90(); + break; + case 10: + iVar2 = sub_80382C0(); + break; + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + iVar2 = sub_80383D4(); + break; + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + iVar2 = sub_8038630(); + break; + case 0x10: + iVar2 = sub_803A2A4(); + break; + } + if (iVar2 != 0xffdc) { + gUnknown_203B348->unk4 = iVar2; + } + return iVar2; +} + +void CleanUpMenu(void) +{ + if (gUnknown_203B348->unk8 != gUnknown_203B348->unk4) { + switch(gUnknown_203B348->unk8) { + case 1: + sub_8035EC0(); + break; + case 6: + case 7: + case 8: + case 9: + sub_80393F0(); + break; + case 0xc: + sub_8036B04(); + break; + case 0x13: + case 0x14: + sub_80370D4(); + break; + case 0xb: + sub_80327E4(); + break; + case 0xd: + sub_80399E4(); + break; + case 0xe: + nullsub_55(); + break; + case 0xf: + sub_803A1EC(); + break; + case 0x21: + case 0x22: + sub_8038A5C(); + break; + case 10: + sub_80382AC(); + break; + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + sub_80383A8(); + break; + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + sub_8038604(); + break; + case 0x10: + DeleteDebugMenu(); + break; + } + gUnknown_203B348->unk8 = gUnknown_203B348->unk4; + } +} diff --git a/src/wonder_mail_1.c b/src/wonder_mail_1.c new file mode 100644 index 0000000..e8ca386 --- /dev/null +++ b/src/wonder_mail_1.c @@ -0,0 +1,47 @@ +#include "global.h" + +extern void sub_80338C4(u32); +extern u32 *gUnknown_203B33C; + +u32 sub_80144A4(s32 *); + +void sub_8035374(void) +{ + s32 temp; + if(sub_80144A4(&temp) != 0) + return; + switch(temp) + { + case 0x19: + sub_80338C4(0x78); + break; + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + gUnknown_203B33C[0x159] = temp; + sub_80338C4(0x7B); + break; + } +} + +void sub_80353BC(void) +{ + s32 temp; + if(sub_80144A4(&temp) != 0) + return; + switch(temp) + { + case 0x19: + sub_80338C4(0x78); + break; + case 0x23: + case 0x24: + case 0x25: + case 0x26: + gUnknown_203B33C[0x159] = temp; + sub_80338C4(0x7D); + break; + } +} |