diff options
Diffstat (limited to 'src/main_menu.c')
-rw-r--r-- | src/main_menu.c | 343 |
1 files changed, 211 insertions, 132 deletions
diff --git a/src/main_menu.c b/src/main_menu.c index 37cd217..30c6642 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,11 +1,17 @@ #include "global.h" +#include "text.h" +#include "menu.h" +#include "input.h" + +#include "adventure_log.h" #include "debug_menu.h" +#include "ds_menus.h" +#include "friend_rescue.h" +#include "load_screen.h" #include "main_menu.h" -#include "adventure_log.h" -#include "input.h" -#include "menu.h" #include "memory.h" -#include "text.h" +#include "rescue_password_menu.h" +#include "save.h" #include "trade_items_menu.h" // NOTE: 0x13 and 0x14 @@ -22,47 +28,13 @@ // Deletes the Save -extern void sub_8094C14(void); -extern void sub_8099690(u32); -extern void sub_8036FDC(s32); -extern void CreateWirelessCommsMenu(void); -extern void CreateFriendRescueMenu(void); -extern void CreateDualSlotMenu(void); -extern void CreateWonderMailMenu(void); -extern void CreateLoadScreen(u32); -extern void CreateRescuePasswordMenu(u32); -extern void CreateSaveMenu(u32); -extern u32 UpdateMainMenu(void); -extern s32 UpdateLoadScreenMenu(void); -extern s32 UpdateFriendRescueMenu(void); -extern s32 UpdateWonderMailMenu(void); -extern s32 UpdateDualSlotMenu(void); -extern s32 UpdateWirelessCommsMenu(void); -extern s32 UpdateRescuePasswordMenu(void); -extern s32 sub_80383D4(void); -extern s32 UpdateSaveMenu(void); -extern void CleanLoadScreen(void); -extern void sub_80370D4(void); -extern void CleanFriendRescueMenu(void); -extern void CleanWonderMailMenu(void); -extern void CleanDualSlotMenu(void); -extern void CleanWirelessCommsMenu(void); -extern void CleanRescuePasswordMenu(void); -extern void sub_80383A8(void); -extern void CleanSaveMenu(void); -extern u8 sub_8012FD8(u32 *); -extern void sub_8013114(u32 *, s32 *); -extern u8 sub_803D0D8(); -extern s32 sub_8011C34(); -extern s32 sub_8095324(u32); - -void CleanMainMenu(void); -void DrawMainMenu(void); -s32 sub_8035DB4(u32); -void sub_803623C(void); -bool8 SetMainMenuText(); -void SetMainMenuItems(); -void sub_8035DA0(void); +struct unkStruct_Menu +{ + // size 0x50; + u8 fil0[0x4C]; + u8 unk4C; + u8 fill4D[0x50 - 0x4D]; +}; struct unkStruct_203B34C { @@ -89,18 +61,55 @@ EWRAM_DATA struct unkStruct_203B34C *gUnknown_203B34C; EWRAM_DATA u32 gUnknown_203B350; EWRAM_DATA u32 gUnknown_203B354; // unused everywhere else except here.. +extern void sub_8094C14(void); +extern void sub_8099690(u32); +extern void sub_8036FDC(s32); +extern void CreateWonderMailMenu(void); +extern void CreateSaveMenu(u32); +extern u32 UpdateMainMenu(void); +extern s32 UpdateWonderMailMenu(void); +extern s32 sub_80383D4(void); +extern s32 UpdateSaveMenu(void); +extern void sub_80370D4(void); +extern void CleanWonderMailMenu(void); +extern void sub_80383A8(void); +extern void CleanSaveMenu(void); +extern u8 sub_8012FD8(u32 *); +extern void sub_8013114(u32 *, s32 *); +extern u8 sub_803D0D8(); +extern s32 sub_8095324(u32); +extern void sub_8012D60(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); +extern void sub_8012E04(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); + +void CleanMainMenu(void); +void DrawMainMenu(void); +s32 sub_8035DB4(u32); +void sub_803623C(void); +bool8 SetMainMenuText(); +void SetMainMenuItems(); +void sub_8035DA0(void); -extern const char NewGame_80E5A20[]; -extern const char AdventureLog_80E5A10[]; -extern const char WonderMail_80E5A54[]; -extern const char Continue_80E5AF0[]; -extern const char DeleteSaveData_80E5ADC[]; -extern const char FriendRescue_80E5ACC[]; -extern const char TradeItems_80E5AC0[]; -extern const char ReviveTeam_80E5C0C[]; -extern const char SendItems_80E5C90[]; -extern const char ReceiveItems_80E5C80[]; -extern const char AwaitingRescue_80E5B7C[]; +static const u8 sUnknown_80E5CE4[]; +static const u8 sUnknown_80E5CE8[]; +static const u8 sUnknown_80E5D24[]; +static const u8 sUnknown_80E5D60[]; +static const u8 sUnknown_80E5D88[]; +static const u8 sUnknown_80E5DB8[]; +static const u8 sUnknown_80E5DCC[]; +static const u8 sUnknown_80E5E08[]; +static const u8 sUnknown_80E5E34[]; +static const u8 sUnknown_80E5EA0[]; +static const u8 sUnknown_80E5E74[]; +static const u8 sUnknown_80E5EF8[]; +static const u8 sUnknown_80E5ED4[]; +static const u8 sUnknown_80E5F58[]; +static const u8 sUnknown_80E5F34[]; +static const u8 sUnknown_80E5FB0[]; +static const u8 sUnknown_80E5F98[]; +static const u8 sUnknown_80E5FE4[]; +static const u8 sUnknown_80E6008[]; +static const u8 sUnknown_80E6048[]; +static const u8 sUnknown_80E6070[]; const struct UnkTextStruct2 gUnknown_80E59A8 = { 0x00, 0x00, 0x00, 0x00, @@ -111,7 +120,7 @@ const struct UnkTextStruct2 gUnknown_80E59A8 = { NULL }; -const char main_menu_fill[] = "pksdir0"; +static const char main_menu_fill[] = "pksdir0"; const struct UnkTextStruct2 gUnknown_80E59C8 = { 0x00, 0x00, 0x00, 0x00, @@ -133,14 +142,11 @@ const struct UnkTextStruct2 gUnknown_80E59E0 = { const struct MenuItem gUnknown_80E59F8[] = { - {NewGame_80E5A20, MENU_NEW_GAME}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, + {"New Game", MENU_NEW_GAME}, + {"Adventure Log", MENU_ADVENTURE_LOG}, {NULL, 0xffdd}, }; -const char AdventureLog_80E5A10[] = "Adventure Log"; -const char NewGame_80E5A20[] = "New Game"; - const struct UnkTextStruct2 gUnknown_80E5A29 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, @@ -152,12 +158,10 @@ const struct UnkTextStruct2 gUnknown_80E5A29 = { const struct MenuItem gUnknown_80E5A44[] = { - {WonderMail_80E5A54, MENU_WONDER_MAIL}, + {"Wonder Mail", MENU_WONDER_MAIL}, {NULL, 0xffdd}, }; -const char WonderMail_80E5A54[] = "Wonder Mail"; - const struct UnkTextStruct2 gUnknown_80E5A60 = { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, @@ -178,28 +182,22 @@ const struct UnkTextStruct2 gUnknown_80E5A78 = { const struct MenuItem gUnknown_80E5A90[] = { - {Continue_80E5AF0, MENU_CONTINUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, + {"Continue", MENU_CONTINUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, {NULL, 0xffdd}, }; -const char TradeItems_80E5AC0[] = "Trade Items"; -const char FriendRescue_80E5ACC[] = "Friend Rescue"; -const char DeleteSaveData_80E5ADC[] = "Delete Save Data"; -const char Continue_80E5AF0[] = "Continue"; - - const struct MenuItem gUnknown_80E5AFC[] = { - {Continue_80E5AF0, MENU_CONTINUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, - {WonderMail_80E5A54, MENU_WONDER_MAIL}, + {"Continue", MENU_CONTINUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, + {"Wonder Mail", MENU_WONDER_MAIL}, {NULL, 0xffdd}, }; @@ -214,23 +212,22 @@ const struct UnkTextStruct2 gUnknown_80E5B34 = { const struct MenuItem gUnknown_80E5B4C[] = { - {AwaitingRescue_80E5B7C, MENU_AWAITING_RESCUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, + {"Awaiting Rescue", MENU_AWAITING_RESCUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, {NULL, 0xffdd}, }; -const char AwaitingRescue_80E5B7C[] = "Awaiting Rescue"; const struct MenuItem gUnknown_80E5B8C[] = { - {AwaitingRescue_80E5B7C, MENU_AWAITING_RESCUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, - {WonderMail_80E5A54, MENU_WONDER_MAIL}, + {"Awaiting Rescue", MENU_AWAITING_RESCUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, + {"Wonder Mail", MENU_WONDER_MAIL}, {NULL, 0xffdd}, }; @@ -245,23 +242,22 @@ const struct UnkTextStruct2 gUnknown_80E5BC4 = { const struct MenuItem gUnknown_80E5BDC[] = { - {ReviveTeam_80E5C0C, MENU_CONTINUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, + {"Revive Team", MENU_CONTINUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, {NULL, 0xffdd}, }; -const char ReviveTeam_80E5C0C[] = "Revive Team"; const struct MenuItem gUnknown_80E5C18[] = { - {ReviveTeam_80E5C0C, MENU_CONTINUE}, - {DeleteSaveData_80E5ADC, MENU_DELETE_SAVE_PROMPT}, - {AdventureLog_80E5A10, MENU_ADVENTURE_LOG}, - {FriendRescue_80E5ACC, MENU_FRIEND_RESCUE}, - {TradeItems_80E5AC0, MENU_TRADE_ITEMS}, - {WonderMail_80E5A54, MENU_WONDER_MAIL}, + {"Revive Team", MENU_CONTINUE}, + {"Delete Save Data", MENU_DELETE_SAVE_PROMPT}, + {"Adventure Log", MENU_ADVENTURE_LOG}, + {"Friend Rescue", MENU_FRIEND_RESCUE}, + {"Trade Items", MENU_TRADE_ITEMS}, + {"Wonder Mail", MENU_WONDER_MAIL}, {NULL, 0xffdd}, }; @@ -276,46 +272,129 @@ const struct UnkTextStruct2 gUnknown_80E5C50 = { const struct MenuItem gUnknown_80E5C68[] = { - {SendItems_80E5C90, MENU_SEND_ITEMS}, - {ReceiveItems_80E5C80, MENU_RECEIVE_ITEMS}, + {"Send Items", MENU_SEND_ITEMS}, + {"Receive Items", MENU_RECEIVE_ITEMS}, {NULL, 0xffdd}, }; -const char ReceiveItems_80E5C80[] = "Receive Items"; -const char SendItems_80E5C90[] = "Send Items"; - const struct MenuItem gUnknown_80E5C9C[] = { - {SendItems_80E5C90, -1}, - {ReceiveItems_80E5C80, MENU_RECEIVE_ITEMS}, + {"Send Items", -1}, + {"Receive Items", MENU_RECEIVE_ITEMS}, {NULL, 0xffdd}, }; -extern const struct UnkTextStruct2 gUnknown_80E5CB4; -extern const struct MenuItem gUnknown_80E5CCC[]; -extern const struct MenuItem gUnknown_80E5D0C[]; -extern const struct MenuItem gUnknown_80E5D48[]; -extern const struct MenuItem gUnknown_80E5DA0[]; -extern const struct MenuItem gUnknown_80E5DF0[]; -extern const struct MenuItem gUnknown_80E5E5C[]; -extern const struct MenuItem gUnknown_80E5EBC[]; -extern const struct MenuItem gUnknown_80E5F1C[]; -extern const struct MenuItem gUnknown_80E5F80[]; -extern const struct MenuItem gUnknown_80E5FCC[]; -extern const struct MenuItem gUnknown_80E6030[]; +const struct UnkTextStruct2 gUnknown_80E5CB4 = { + 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x0F, 0x00, + 0x1A, 0x03, + 0x03, 0x00, + NULL +}; +const struct MenuItem gUnknown_80E5CCC[] = +{ + {sUnknown_80E5CE8, 0xffde}, + {sUnknown_80E5CE4, 0xffde}, + {NULL, 0xffdd}, +}; +static const u8 sUnknown_80E5CE4[] = " "; +static const u8 sUnknown_80E5CE8[] = "Start an entirely new adventure."; -struct unkStruct_Menu +const struct MenuItem gUnknown_80E5D0C[] = { - // size 0x50; - u8 fil0[0x4C]; - u8 unk4C; - u8 fill4D[0x50 - 0x4D]; + {sUnknown_80E5D24, 0xffde}, + {sUnknown_80E5CE4, 0xffde}, + {NULL, 0xffdd}, }; -extern void sub_8012D60(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); -extern void sub_8012E04(struct unkStruct_Menu *, const struct MenuItem *, u32, u32, u32, u32); +static const u8 sUnknown_80E5D24[] = "Check your career as an adventurer."; + +const struct MenuItem gUnknown_80E5D48[] = +{ + {sUnknown_80E5D88, 0xffde}, + {sUnknown_80E5D60, 0xffde}, + {NULL, 0xffdd}, +}; + +static const u8 sUnknown_80E5D60[] = _("It won{APOSTROPHE}t be in the release version."); +static const u8 sUnknown_80E5D88[] = "This is the Debug Mode."; + +const struct MenuItem gUnknown_80E5DA0[] = +{ + {sUnknown_80E5DCC, 0xffde}, + {sUnknown_80E5DB8, 0xffde}, + {NULL, 0xffdd}, +}; + +static const u8 sUnknown_80E5DB8[] = "you last saved. "; +static const u8 sUnknown_80E5DCC[] = "Resume your adventure from where"; + +const struct MenuItem gUnknown_80E5DF0[] = { + {sUnknown_80E5E34, 0xFFDE}, + {sUnknown_80E5E08, 0xFFDE}, + {0, 0xFFDD} +}; + +static const u8 sUnknown_80E5E08[] = _("#C2Beware#R! This will delete it forever!"); +static const u8 sUnknown_80E5E34[] = "This will delete your saved game data."; + +const struct MenuItem gUnknown_80E5E5C[] = { + {sUnknown_80E5EA0, 0xFFDE}, + {sUnknown_80E5E74, 0xFFDE}, + {0, 0xFFDD} +}; + +ALIGNED(4) static const u8 sUnknown_80E5E74[] = _("passwords{COMMA} friends may rescue each other."); +static const u8 sUnknown_80E5EA0[] = "Using a Game Link cable or"; + +const struct MenuItem gUnknown_80E5EBC[] = { + {sUnknown_80E5EF8, 0xFFDE}, + {sUnknown_80E5ED4, 0xFFDE}, + {0, 0xFFDD} +}; + +static const u8 sUnknown_80E5ED4[] = "trade stored items with a friend."; +ALIGNED(4) static const u8 sUnknown_80E5EF8[] = _("Using a Game Link cable{COMMA} you can"); + +const struct MenuItem gUnknown_80E5F1C[] = { + {sUnknown_80E5F58, 0xFFDE}, + {sUnknown_80E5F34, 0xFFDE}, + {0, 0xFFDD} +}; + +static const u8 sUnknown_80E5F34[] = "You can give up waiting for rescue."; +static const u8 sUnknown_80E5F58[] = "You are awaiting rescue by a friend."; + +const struct MenuItem gUnknown_80E5F80[] = { + {sUnknown_80E5FB0, 0xFFDE}, + {sUnknown_80E5F98, 0xFFDE}, + {0, 0xFFDD} +}; + +static const u8 sUnknown_80E5F98[] = "receive Wonder Mail."; +ALIGNED(4) static const u8 sUnknown_80E5FB0[] = _("Using passwords{COMMA} you can"); + +const struct MenuItem gUnknown_80E5FCC[] = { + {sUnknown_80E6008, 0xFFDE}, + {sUnknown_80E5FE4, 0xFFDE}, + {NULL, 0xFFDD} +}; + +static const u8 sUnknown_80E5FE4[] = "receive teams from your friends."; +ALIGNED(4) static const u8 sUnknown_80E6008[] = _("Using the Dual Slot function{COMMA} you can"); + +const struct MenuItem gUnknown_80E6030[] = { + {sUnknown_80E6070, 0xFFDE}, + {sUnknown_80E6048, 0xFFDE}, + {NULL, 0xFFDD} +}; + +static const u8 sUnknown_80E6048[] = "go on an adventure to unknown worlds."; +ALIGNED(4) static const u8 sUnknown_80E6070[] = _("Using wireless communication{COMMA} you can"); +static const u8 sMainMenu_fill0[] = "pksdir0"; void InitMainMenu(void) |