summaryrefslogtreecommitdiff
path: root/src/main_menu_1.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-04-19 21:55:40 -0700
committerGitHub <noreply@github.com>2021-04-19 23:55:40 -0500
commitf65dee5a143bd543c74c010d7252eb76893ee243 (patch)
treed343e826c63f8b501d37873c3c7bc1f010819deb /src/main_menu_1.c
parentd316d1e359c7672277a9cf644acd4e40170f5968 (diff)
Wonder mail and some boss dialogues (#36)
* more wonder mail and main menu work * Lots of things.. doc'ing, decomping, and other things * continue decomping boss scenes * up to Suicune * up to Mewtwo dialogue * up to Raquaza * fix spelling error on Rayquaza and decomp a few more * up to groudon * divide > shift
Diffstat (limited to 'src/main_menu_1.c')
-rw-r--r--src/main_menu_1.c225
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;
+}