diff options
Diffstat (limited to 'src/main_menu_1.c')
-rw-r--r-- | src/main_menu_1.c | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/main_menu_1.c b/src/main_menu_1.c new file mode 100644 index 0000000..6715af4 --- /dev/null +++ b/src/main_menu_1.c @@ -0,0 +1,225 @@ +#include "global.h" +#include "main_menu.h" + +struct unkData +{ + u8 unk0[24]; +}; + +struct unkSubStruct +{ + u32 unk0; + u32 unk4; +}; + +struct unkStruct_203B34C +{ + // size: 0x1A8 + u32 unk0; + u32 unk4; + struct unkSubStruct *unk8; // Array of menu choices?? + u8 fillC[0x30 - 0xC]; + s16 unk30; + u8 fill32[0x144 - 0x32]; + struct unkData unk144[4]; + /* 0x1A4 */ u32 currMenuChoice; +}; + +extern struct unkStruct_203B34C *gUnknown_203B34C; + + +extern u32 gUnknown_80E59E0; +extern u32 gUnknown_203B350; +extern u32 gUnknown_80E59F8; +extern u32 gUnknown_80E5A78; +extern u32 gUnknown_80E5B34; +extern u32 gUnknown_80E5A90; +extern u32 gUnknown_80E5A60; +extern u32 gUnknown_80E5AFC; +extern u32 gUnknown_80E5B8C; +extern u32 gUnknown_80E5B4C; +extern u32 gUnknown_80E5BC4; +extern u32 gUnknown_80E5BDC; +extern u32 gUnknown_80E5C18; + +extern u32 gUnknown_80E5CB4; +extern u32 gUnknown_80E5D48; +extern u32 gUnknown_80E5CCC; +extern u32 gUnknown_80E5F1C; +extern u32 gUnknown_80E5DA0; +extern u32 gUnknown_80E5DF0; +extern u32 gUnknown_80E5D0C; +extern u32 gUnknown_80E6030; +extern u32 gUnknown_80E5FCC; +extern u32 gUnknown_80E5F80; +extern u32 gUnknown_80E5EBC; +extern u32 gUnknown_80E5E5C; + +extern u8 sub_803D0D8(); +extern s32 sub_8011C34(); +extern s32 sub_8095324(u32); +extern void SetMenuItems(u32 *, struct unkData *, u32, u32 *, u32 *, u32, u32, u32); +void SetMainMenuItems(void); +extern u8 SetMainMenuText(); +extern void sub_8035CF4(u32 *, u32, u32); +extern void sub_8035CC0(struct unkData *, u32); + +u8 SetMainMenuText(void) +{ + u32 menuChoice; + struct unkSubStruct *preload; + + // Have to load the pointer before the index + preload = gUnknown_203B34C->unk8; + menuChoice = preload[gUnknown_203B34C->unk30].unk4; // chosen menu action? + if (gUnknown_203B34C->currMenuChoice == menuChoice) { + return 0; + } + + gUnknown_203B34C->currMenuChoice = menuChoice; + sub_8035CC0(gUnknown_203B34C->unk144,2); + sub_8035CC0(gUnknown_203B34C->unk144,3); + switch(menuChoice) { + case MENU_WIRELESS_COMMS: + // Using wireless communications, you can go on an adventure to unknown worlds. + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E6030,0,0,0); + break; + case MENU_WONDER_MAIL: + // Using passwords, you can receive Wonder Mail + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5F80,0,0,0); + break; + case MENU_AWAITING_RESCUE: + // You are awaiting resuce by a friend + // You can give up waiting for rescue + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5F1C,0,0,0); + break; + case MENU_NEW_GAME: + // Start an entirely new adventure + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5CCC,0,0,0); + break; + case MENU_CONTINUE: + // Resume your adventure from where you last saved + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5DA0,0,0,0); + break; + case MENU_DELETE_SAVE_PROMPT: + // This will delete your saved game data. + // Beware! This will delete it forever + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5DF0,0,0,0); + break; + case MENU_ADVENTURE_LOG: + // Check your career as an adventurer + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5D0C,0,0,0); + break; + case MENU_FRIEND_RESCUE: + // Using a Game Link cable or passwords, friends may rescue each other + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5E5C,0,0,0); + break; + case MENU_TRADE_ITEMS: + // Using a Game Link cable you can trade stored items with a friend + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5EBC,0,0,0); + break; + case MENU_DUAL_SLOT: + // Using Dual Slot function, you can receive teams from your friends + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5FCC,0,0,0); + break; + case MENU_DEBUG: + // This is the Debug Mode. + // It won't be in the release version + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,2,&gUnknown_80E5CB4,&gUnknown_80E5D48,0,0,0); + break; + default: + break; + } + return 1; +} + +void sub_803623C(void) +{ + sub_8035CC0(gUnknown_203B34C->unk144,1); + SetMainMenuItems(); + gUnknown_203B34C->currMenuChoice = -1; + if (SetMainMenuText() != 0) { + sub_8035CF4(&gUnknown_203B34C->unk4,2,0); + } + sub_8035CF4(&gUnknown_203B34C->unk4,0,1); +} + +void SetMainMenuItems(void) +{ + if (sub_8011C34() != -1) { + if (sub_8095324(1) == 0) { + if (sub_8095324(7) != 0) { + if (sub_803D0D8() != 0) { + // Revive Team + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + // Wonder Mail + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5C18,1,gUnknown_203B350,1); + } + else { + // Revive Team + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5BC4,&gUnknown_80E5BDC,1,gUnknown_203B350,1); + } + } + else { + if (sub_803D0D8() != 0) { + // Continue + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + // Wonder Mail + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5AFC,1,gUnknown_203B350,1); + } + else { + // Continue + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A60,&gUnknown_80E5A90,1,gUnknown_203B350,1); + } + } + } + else { + if (sub_803D0D8() != 0) { + // Awaiting Rescue + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + // Wonder Mail + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5A78,&gUnknown_80E5B8C,1,gUnknown_203B350,1); + } + else { + // Awaiting Rescue + // Delete Save Data + // Adventure Log + // Friend Rescue + // Trade Items + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E5B34,&gUnknown_80E5B4C,1,gUnknown_203B350,1); + } + } + } + else + { + // New Game + // Adventure Log + SetMenuItems(&gUnknown_203B34C->unk4,gUnknown_203B34C->unk144,0,&gUnknown_80E59E0,&gUnknown_80E59F8,1,gUnknown_203B350,1); + } +} + +u8 sub_80363E0(void) +{ + if(gUnknown_203B34C == NULL) + return 0; + if(gUnknown_203B34C->unk0 == 0xC) + return 0; + return 1; +} |