diff options
Diffstat (limited to 'src/main_menu.c')
-rw-r--r-- | src/main_menu.c | 240 |
1 files changed, 115 insertions, 125 deletions
diff --git a/src/main_menu.c b/src/main_menu.c index d0a8f36..71db487 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,26 +1,20 @@ #include "global.h" +#include "debug_menu.h" +#include "main_menu.h" -struct MainMenuSub -{ - u8 unk2C; - u8 unk2D; - u8 unk2E; -}; +// NOTE: 0x13 and 0x14 +// Communication Screen? +// Got Communication warning when I wrote them to the struct + +// NOTE: 0x29, 0x2A, 0x2B, 0x2C +// Triggers a save + +// NOTE: 0x2D +// Triggers a save and then goes to 0x13 (comms warning) + +// NOTE: 0x2E +// Deletes the Save -struct MainMenu -{ - s32 unk0; - s32 unk4; - s32 unk8; - u8 padding[0x20]; - /* 0x2C */ struct MainMenuSub sub; - u32 unk30; - u32 unk34; - s16 unk38; - u8 unk3A; - u8 unk3B; - s32 unk3C; -}; extern struct MainMenu *gUnknown_203B348; extern void* MemoryAlloc(u32 a, u32 b); @@ -31,44 +25,41 @@ extern void MemoryFree(void *); extern void sub_8094C14(void); extern void sub_8099690(u32); extern void DrawMainMenu(void); -extern void CreateDebugMenu(void); -extern void sub_8036400(void); -extern void sub_8036FDC(void); +extern void CreateTradeItemsMenu(void); +extern void sub_8036FDC(s32); extern void sub_803A1E4(void); -extern void sub_803225C(void); +extern void CreateFriendRescueMenu(void); extern void sub_803A1D8(void); -extern void sub_80398AC(void); -extern void sub_80382A0(void); +extern void CreateWonderMailMenu(void); +extern void CreateAdventureLogMenu(void); extern void CreateLoadScreen(u32); -extern void sub_8035DB4(u32); -extern void sub_8038900(u32); +extern s32 sub_8035DB4(u32); +extern void CreateRescuePasswordMenu(u32); extern void sub_803850C(u32); -extern s32 sub_8035EEC(void); +extern s32 UpdateMainMenu(void); extern s32 sub_803941C(void); -extern s32 sub_8036448(void); -extern s32 sub_8032318(void); -extern s32 sub_8039928(void); +extern s32 UpdateTradeItemsMenu(void); +extern s32 UpdateFriendRescueMenu(void); +extern s32 UpdateWonderMailMenu(void); extern s32 sub_803A1DC(void); extern s32 sub_803A1E8(void); -extern s32 sub_8038A90(void); -extern s32 sub_80382C0(void); +extern s32 UpdateRescuePasswordMenu(void); +extern s32 UpdateAdventureLogMenu(void); extern s32 sub_80383D4(void); extern s32 sub_8038630(void); -extern s32 sub_803A2A4(void); extern void CleanMainMenu(void); extern void CleanLoadScreen(void); -extern void sub_8036B04(void); +extern void CleanTradeItemsMenu(void); extern void sub_80370D4(void); -extern void sub_80327E4(void); -extern void sub_80399E4(void); +extern void CleanFriendRescueMenu(void); +extern void CleanWonderMailMenu(void); extern void nullsub_55(void); extern void sub_803A1EC(void); -extern void sub_8038A5C(void); -extern void sub_80382AC(void); +extern void CleanRescuePasswordMenu(void); +extern void CleanAdventureLogMenu(void); extern void sub_80383A8(void); extern void sub_8038604(void); -extern void DeleteDebugMenu(void); void InitMainMenu(void) { @@ -76,9 +67,9 @@ void InitMainMenu(void) 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->currMenu = 0xffdc; + gUnknown_203B348->nextMenu = MENU_MAIN_SCREEN; + gUnknown_203B348->lastMenu = MENU_MAIN_SCREEN; gUnknown_203B348->unk38 = -1; gUnknown_203B348->unk3C = -1; gUnknown_203B348->sub.unk2E = 0; @@ -98,32 +89,31 @@ void DeleteMainMenu(void) void SetUpMenu(void) { - if (gUnknown_203B348->unk0 != gUnknown_203B348->unk4) { - switch(gUnknown_203B348->unk4) { - case 1: + if (gUnknown_203B348->currMenu != gUnknown_203B348->nextMenu) { + switch(gUnknown_203B348->nextMenu) { + case MENU_MAIN_SCREEN: sub_8094C14(); sub_8099690(0); DrawMainMenu(); break; case 6: - case 7: - case 8: + case MENU_CONTINUE: + case MENU_DELETE_SAVE_PROMPT: case 9: - CreateLoadScreen(gUnknown_203B348->unk4); + CreateLoadScreen(gUnknown_203B348->nextMenu); break; - case 0xc: - sub_8036400(); + case MENU_TRADE_ITEMS: + CreateTradeItemsMenu(); break; - case 0x13: - case 0x14: - sub_8035DB4(gUnknown_203B348->unk4); - sub_8036FDC(); + case MENU_COMMUNICATION_1: + case MENU_COMMUNICATION_2: + sub_8036FDC(sub_8035DB4(gUnknown_203B348->nextMenu)); break; - case 0xb: - sub_803225C(); + case MENU_FRIEND_RESCUE: + CreateFriendRescueMenu(); break; - case 0xd: - sub_80398AC(); + case MENU_WONDER_MAIL: + CreateWonderMailMenu(); break; case 0xe: sub_803A1D8(); @@ -131,12 +121,12 @@ void SetUpMenu(void) case 0xf: sub_803A1E4(); break; - case 0x21: - case 0x22: - sub_8038900(gUnknown_203B348->unk4); + case MENU_DISPLAY_RESCUE_PASSWORD: + case MENU_RESCUE_PASSWORD_ENTRY: + CreateRescuePasswordMenu(gUnknown_203B348->nextMenu); break; - case 0xA: - sub_80382A0(); + case MENU_ADVENTURE_LOG: + CreateAdventureLogMenu(); break; case 0x29: case 0x2a: @@ -144,80 +134,80 @@ void SetUpMenu(void) case 0x2c: case 0x2d: case 0x2e: - sub_803850C(gUnknown_203B348->unk4); + sub_803850C(gUnknown_203B348->nextMenu); break; - case 0x10: + case MENU_DEBUG: CreateDebugMenu(); break; } - gUnknown_203B348->unk0 = gUnknown_203B348->unk4; + gUnknown_203B348->currMenu = gUnknown_203B348->nextMenu; } } s32 UpdateMenu(void) { s32 iVar1; - s32 iVar2; + s32 nextMenu; - iVar2 = 0xffdc; - switch(gUnknown_203B348->unk4) { - case 1: - iVar2 = sub_8035EEC(); + nextMenu = MENU_NO_SCREEN_CHANGE; + switch(gUnknown_203B348->nextMenu) { + case MENU_MAIN_SCREEN: + nextMenu = UpdateMainMenu(); break; case 6: - case 7: - case 8: + case MENU_CONTINUE: + case MENU_DELETE_SAVE_PROMPT: case 9: - iVar2 = sub_803941C(); + nextMenu = sub_803941C(); break; - case 0xc: - iVar1 = sub_8036448(); - iVar2 = 1; + case MENU_TRADE_ITEMS: + iVar1 = UpdateTradeItemsMenu(); + nextMenu = MENU_MAIN_SCREEN; if (iVar1 != 3) { - iVar2 = 0xffdc; + nextMenu = MENU_NO_SCREEN_CHANGE; } break; - case 0xb: - iVar1 = sub_8032318(); - iVar2 = 1; + case MENU_FRIEND_RESCUE: + iVar1 = UpdateFriendRescueMenu(); + nextMenu = MENU_MAIN_SCREEN; if (iVar1 != 3) { - iVar2 = 0xffdc; + nextMenu = MENU_NO_SCREEN_CHANGE; } break; - case 0xd: - iVar1 = sub_8039928(); - iVar2 = 1; + case MENU_WONDER_MAIL: + iVar1 = UpdateWonderMailMenu(); + nextMenu = MENU_MAIN_SCREEN; if (iVar1 != 3) { - iVar2 = 0xffdc; + nextMenu = MENU_NO_SCREEN_CHANGE; } break; case 0xe: iVar1 = sub_803A1DC(); - iVar2 = 1; + nextMenu = MENU_MAIN_SCREEN; if (iVar1 != 3) { - iVar2 = 0xffdc; + nextMenu = MENU_NO_SCREEN_CHANGE; } break; case 0xf: iVar1 = sub_803A1E8(); - iVar2 = 5; - if ((iVar1 != 3) && (iVar2 = 0xffdc, iVar1 == 2)) { - iVar2 = 1; + nextMenu = 5; + if ((iVar1 != 3) && (nextMenu = MENU_NO_SCREEN_CHANGE, iVar1 == 2)) { + nextMenu = MENU_MAIN_SCREEN; } break; - case 0x21: - case 0x22: - iVar2 = sub_8038A90(); + case MENU_DISPLAY_RESCUE_PASSWORD: + case MENU_RESCUE_PASSWORD_ENTRY: + nextMenu = UpdateRescuePasswordMenu(); break; - case 10: - iVar2 = sub_80382C0(); + case MENU_ADVENTURE_LOG: + nextMenu = UpdateAdventureLogMenu(); break; case 0x24: case 0x25: case 0x26: case 0x27: case 0x28: - iVar2 = sub_80383D4(); + nextMenu = sub_80383D4(); break; case 0x29: case 0x2a: @@ -225,43 +215,43 @@ s32 UpdateMenu(void) case 0x2c: case 0x2d: case 0x2e: - iVar2 = sub_8038630(); + nextMenu = sub_8038630(); break; - case 0x10: - iVar2 = sub_803A2A4(); + case MENU_DEBUG: + nextMenu = UpdateDebugMenu(); break; } - if (iVar2 != 0xffdc) { - gUnknown_203B348->unk4 = iVar2; + if (nextMenu != MENU_NO_SCREEN_CHANGE) { + gUnknown_203B348->nextMenu = nextMenu; } - return iVar2; + return nextMenu; } void CleanUpMenu(void) { - if (gUnknown_203B348->unk8 != gUnknown_203B348->unk4) { - switch(gUnknown_203B348->unk8) { - case 1: + if (gUnknown_203B348->lastMenu != gUnknown_203B348->nextMenu) { + switch(gUnknown_203B348->lastMenu) { + case MENU_MAIN_SCREEN: CleanMainMenu(); break; case 6: - case 7: - case 8: + case MENU_CONTINUE: + case MENU_DELETE_SAVE_PROMPT: case 9: CleanLoadScreen(); break; - case 0xc: - sub_8036B04(); + case MENU_TRADE_ITEMS: + CleanTradeItemsMenu(); break; - case 0x13: - case 0x14: + case MENU_COMMUNICATION_1: + case MENU_COMMUNICATION_2: sub_80370D4(); break; - case 0xb: - sub_80327E4(); + case MENU_FRIEND_RESCUE: + CleanFriendRescueMenu(); break; - case 0xd: - sub_80399E4(); + case MENU_WONDER_MAIL: + CleanWonderMailMenu(); break; case 0xe: nullsub_55(); @@ -269,12 +259,12 @@ void CleanUpMenu(void) case 0xf: sub_803A1EC(); break; - case 0x21: - case 0x22: - sub_8038A5C(); + case MENU_DISPLAY_RESCUE_PASSWORD: + case MENU_RESCUE_PASSWORD_ENTRY: + CleanRescuePasswordMenu(); break; - case 10: - sub_80382AC(); + case MENU_ADVENTURE_LOG: + CleanAdventureLogMenu(); break; case 0x24: case 0x25: @@ -291,11 +281,11 @@ void CleanUpMenu(void) case 0x2e: sub_8038604(); break; - case 0x10: + case MENU_DEBUG: DeleteDebugMenu(); break; } - gUnknown_203B348->unk8 = gUnknown_203B348->unk4; + gUnknown_203B348->lastMenu = gUnknown_203B348->nextMenu; } } |