summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-01-31 19:07:31 -0600
committerGitHub <noreply@github.com>2021-01-31 19:07:31 -0600
commit74daf03fd70e7c71b92390c9133c9dd543bcb28d (patch)
tree8e73e4ed117b088264afe424beac03b3bb7e9c0b /src
parent076ff9ce59bf7da841cfd17412196487657a7b44 (diff)
Main Menu and Scripts (#25)
* label more funcs, dump scripts/text, and decomp main menu * decomp vram func and dump more data * add forgotten file * get rid of goto in UpdateMenu
Diffstat (limited to 'src')
-rw-r--r--src/code_8009804.c79
-rw-r--r--src/code_80A7714.c4
-rw-r--r--src/main_menu.c296
-rw-r--r--src/wonder_mail_1.c47
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;
+ }
+}