summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/data_80D47B8.s63
-rw-r--r--data/data_80DED44.s167
-rw-r--r--data/data_80E59A8.s163
-rw-r--r--include/ds_menus.h11
-rw-r--r--include/load_screen.h9
-rw-r--r--src/ds_menus.c2
-rw-r--r--src/main_menu.c252
-rw-r--r--src/wonder_mail.c50
-rw-r--r--src/wonder_mail_2.c116
9 files changed, 360 insertions, 473 deletions
diff --git a/data/data_80D47B8.s b/data/data_80D47B8.s
index 1b63067..b0eb331 100644
--- a/data/data_80D47B8.s
+++ b/data/data_80D47B8.s
@@ -4894,66 +4894,3 @@ gUnknown_80DDAE4: @ 80DDAE4
.byte 0x06, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DDAFC
-gUnknown_80DDAFC: @ 80DDAFC
- .4byte Confirm_80DDB1C
- .byte 0xB, 0x00, 0x00, 0x00
- .4byte Info_80DDB14
- .byte 0xC, 0x00, 0x00, 0x00
- .byte 0x0, 0x00, 0x00, 0x00
- .byte 0xA, 0x00, 0x00, 0x00
-
- .global Info_80DDB14
- Info_80DDB14:
- .string "Info\0"
- .align 2,0
-
- .global Confirm_80DDB1C
- Confirm_80DDB1C:
- .string "Confirm\0"
- .align 2,0
-
- .global gUnknown_80DDB24
-gUnknown_80DDB24: @ 80DDB24
- .4byte GameLinkCable_80DDB50
- .byte 0xD, 0x00, 0x00, 0x00
- .4byte Password_80DDB44
- .byte 0xF, 0x00, 0x00, 0x00
- .4byte gWonderMailCancel
- .byte 0xA, 0x00, 0x00, 0x00
- .byte 0x0, 0x00, 0x00, 0x00
- .byte 0xA, 0x00, 0x00, 0x00
-
- .global Password_80DDB44
- Password_80DDB44:
- .string "Password\0"
- .align 2,0
-
- .global GameLinkCable_80DDB50
- GameLinkCable_80DDB50:
- .string "Game Link cable\0"
- .align 2,0
-
- .global gUnknown_80DDB60
-gUnknown_80DDB60: @ 80DDB60
-
- .4byte SendPokemon_80DDB98
- .byte 0x11, 0x00, 0x00, 0x00
- .4byte DontSendPokemon_80DDB80
- .byte 0x12, 0x00, 0x00, 0x00
- .4byte gWonderMailCancel
- .byte 0x0a, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x0a, 0x00, 0x00, 0x00
-
- .global DontSendPokemon_80DDB80
- DontSendPokemon_80DDB80:
- .string "Don{APOSTROPHE}t Send Pokémon\0"
- .align 2,0
-
- .global SendPokemon_80DDB98
- SendPokemon_80DDB98:
- .string "Send Pokémon\0"
- .align 2,0
-
diff --git a/data/data_80DED44.s b/data/data_80DED44.s
index 758d88b..2f6040a 100644
--- a/data/data_80DED44.s
+++ b/data/data_80DED44.s
@@ -1,98 +1,7 @@
.section .rodata
- .global gUnknown_80DFBD0
-gUnknown_80DFBD0: @ 80DFBD0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .byte 0x00, 0x00, 0x00, 0x00
-
-
- .global gUnknown_80DFBE8
-gUnknown_80DFBE8: @ 80DFBE8
- .byte 0x01, 0x00, 0x0c, 0x00
-
- .global gUnknown_80DFBEC
-gUnknown_80DFBEC: @ 80DFBEC
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x02, 0x00
- .byte 0x18, 0x00, 0x0e, 0x00
- .byte 0x0e, 0x00, 0x00, 0x00
- .4byte gUnknown_80DFBE8
-
-
- .global gUnknown_80DFC04
-gUnknown_80DFC04: @ 80DFC04
- .string "News List\0"
- .align 2,0
- .string "pksdir0\0"
-
- .global gUnknown_80DFC18
-gUnknown_80DFC18: @ 80DFC18
- .byte 0x00, 0x00, 0x00, 0x00
-
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnkData_80DFC30
- gUnkData_80DFC30:
- .byte 0x01, 0x00, 0x16, 0x00
-
- .global gUnknown_80DFC34
-gUnknown_80DFC34: @ 80DFC34
- .byte 0x00, 0x00, 0x00, 0x00
-
- .byte 0x06, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x02, 0x00
- .byte 0x1A, 0x00, 0x10, 0x00
- .byte 0x10, 0x00, 0x00, 0x00
-
- .4byte gUnkData_80DFC30
-
- .global gUnknown_80DFC4C
-gUnknown_80DFC4C: @ 80DFC4C
- .string "She\0"
-
- .global gUnknown_80DFC50
-gUnknown_80DFC50: @ 80DFC50
- .string "He\0"
- .align 2,0
- .string "pksdir0\0"
-
- .global gUnknown_80DFC5C
-gUnknown_80DFC5C: @ 80DFC5C
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DFC74
-gUnknown_80DFC74: @ 80DFC74
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x02, 0x00
- .byte 0x18, 0x00, 0x0e, 0x00
- .byte 0x0e, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gMailboxText
-gMailboxText: @ 80DFC8C
- .string "Mailbox\0"
- .string "pksdir0\0"
-
- .global gUnknown_80DFC9C
-gUnknown_80DFC9C: @ 80DFC9C
+ .global gUnknown_80DFCE4
+gUnknown_80DFCE4: @ 80DFCE4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
@@ -100,8 +9,8 @@ gUnknown_80DFC9C: @ 80DFC9C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
- .global gUnknown_80DFCB4
-gUnknown_80DFCB4: @ 80DFCB4
+ .global gUnknown_80DFCFC
+gUnknown_80DFCFC: @ 80DFCFC
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
.byte 0x02, 0x00, 0x02, 0x00
@@ -109,36 +18,6 @@ gUnknown_80DFCB4: @ 80DFCB4
.byte 0x0e, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
- .global gBulletinBoardText
-gBulletinBoardText: @ 80DFCCC
- .string "Bulletin Board\0"
- .align 2,0
- .string "pksdir0\0"
-
- .global gUnknown_80DFCE4
-gUnknown_80DFCE4: @ 80DFCE4
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80DFCFC
-gUnknown_80DFCFC: @ 80DFCFC
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x06, 0x00
- .byte 0x00, 0x00
- .byte 0x02, 0x00
- .byte 0x02, 0x00
- .byte 0x18, 0x00
- .byte 0x0e, 0x00
- .byte 0x0e, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
-
.global gUnknown_80DFD14
gUnknown_80DFD14: @ 80DFD14
.string "Job List\0"
@@ -156,33 +35,21 @@ gUnknown_80DFD28: @ 80DFD28
.global gUnknown_80DFD40
gUnknown_80DFD40: @ 80DFD40
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x04, 0x00
- .byte 0x00, 0x00
- .byte 0x15, 0x00
- .byte 0x06, 0x00
- .byte 0x07, 0x00
- .byte 0x03, 0x00
- .byte 0x03, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00
+ .byte 0x15, 0x00, 0x06, 0x00
+ .byte 0x07, 0x00, 0x03, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DFD58
gUnknown_80DFD58: @ 80DFD58
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x04, 0x00
- .byte 0x00, 0x00
- .byte 0x15, 0x00
- .byte 0x0f, 0x00
- .byte 0x06, 0x00
- .byte 0x03, 0x00
- .byte 0x03, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
- .byte 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x04, 0x00, 0x00, 0x00
+ .byte 0x15, 0x00, 0x0f, 0x00
+ .byte 0x06, 0x00, 0x03, 0x00
+ .byte 0x03, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
.global gUnknown_80DFD70
gUnknown_80DFD70: @ 80DFD70
@@ -207,7 +74,7 @@ gUnknown_80DFD8C: @ 80DFD8C
gUnknown_80DFDA4: @ 80DFDA4
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x06, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x02, 0x0
+ .byte 0x02, 0x00, 0x02, 0x00
.byte 0x18, 0x00, 0x0e, 0x00
.byte 0x0e, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
diff --git a/data/data_80E59A8.s b/data/data_80E59A8.s
index 9e16004..23b0695 100644
--- a/data/data_80E59A8.s
+++ b/data/data_80E59A8.s
@@ -1,168 +1,5 @@
.section .rodata
- .global gUnknown_80E5CB4
-gUnknown_80E5CB4: @ 80E5CB4
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x02, 0x00, 0x0F, 0x00
- .byte 0x1A, 0x00, 0x03, 0x00
- .byte 0x03, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global gUnknown_80E5CCC
-gUnknown_80E5CCC: @ 80E5CCC
- .byte 0xe8, 0x5c, 0x0e, 0x08
- .byte 0xde, 0xff, 0x00, 0x00
- .byte 0xe4, 0x5c, 0x0e, 0x08
- .byte 0xde, 0xff, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0xdd, 0xff, 0x00, 0x00
-
-sUnknown_80E5CE4: @ 80E5CE4
- .string " \0"
- .align 2,0
-
- .string "Start an entirely new adventure.\0"
- .align 2,0
-
- .global gUnknown_80E5D0C
-gUnknown_80E5D0C: @ 80E5D0C
- .4byte sUnknown_80E5D24, 0xFFDE
- .4byte sUnknown_80E5CE4, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5D24: @ 80E5D24
- .string "Check your career as an adventurer.\0"
- .align 2, 0
-
- .global gUnknown_80E5D48
-gUnknown_80E5D48: @ 80E5D48
- .4byte sUnknown_80E5D88, 0xFFDE
- .4byte sUnknown_80E5D60, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5D60: @ 80E5D60
- .string "It won~27t be in the release version.\0"
- .align 2, 0
-
-sUnknown_80E5D88: @ 80E5D88
- .string "This is the Debug Mode.\0"
- .align 2, 0
-
- .global gUnknown_80E5DA0
-gUnknown_80E5DA0: @ 80E5DA0
- .4byte sUnknown_80E5DCC, 0xFFDE
- .4byte sUnknown_80E5DB8, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5DB8:
- .string "you last saved. \0"
- .align 2, 0
-
-sUnknown_80E5DCC:
- .string "Resume your adventure from where\0"
- .align 2, 0
-
- .global gUnknown_80E5DF0
-gUnknown_80E5DF0: @ 80E5DF0
- .4byte sUnknown_80E5E34, 0xFFDE
- .4byte sUnknown_80E5E08, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5E08:
- .string "#C2Beware#R! This will delete it forever!\0"
- .align 2, 0
-
-sUnknown_80E5E34:
- .string "This will delete your saved game data.\0"
- .align 2, 0
-
- .global gUnknown_80E5E5C
-gUnknown_80E5E5C: @ 80E5E5C
- .4byte sUnknown_80E5EA0, 0xFFDE
- .4byte sUnknown_80E5E74, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5E74:
- .string "passwords~2c friends may rescue each other.\0"
- .align 2, 0
-
-sUnknown_80E5EA0:
- .string "Using a Game Link cable or\0"
- .align 2, 0
-
- .global gUnknown_80E5EBC
-gUnknown_80E5EBC: @ 80E5EBC
- .4byte sUnknown_80E5EF8, 0xFFDE
- .4byte sUnknown_80E5ED4, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5ED4:
- .string "trade stored items with a friend.\0"
- .align 2, 0
-
-sUnknown_80E5EF8:
- .string "Using a Game Link cable~2c you can\0"
- .align 2, 0
-
- .global gUnknown_80E5F1C
-gUnknown_80E5F1C: @ 80E5F1C
- .4byte sUnknown_80E5F58, 0xFFDE
- .4byte sUnknown_80E5F34, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5F34:
- .string "You can give up waiting for rescue.\0"
- .align 2, 0
-
-sUnknown_80E5F58:
- .string "You are awaiting rescue by a friend.\0"
- .align 2, 0
-
- .global gUnknown_80E5F80
-gUnknown_80E5F80: @ 80E5F80
- .4byte sUnknown_80E5FB0, 0xFFDE
- .4byte sUnknown_80E5F98, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5F98:
- .string "receive Wonder Mail.\0"
- .align 2, 0
-
-sUnknown_80E5FB0:
- .string "Using passwords~2c you can\0"
- .align 2, 0
-
- .global gUnknown_80E5FCC
-gUnknown_80E5FCC: @ 80E5FCC
- .4byte sUnknown_80E6008, 0xFFDE
- .4byte sUnknown_80E5FE4, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E5FE4:
- .string "receive teams from your friends.\0"
- .align 2, 0
-
-sUnknown_80E6008:
- .string "Using the Dual Slot function~2c you can\0"
- .align 2, 0
-
- .global gUnknown_80E6030
-gUnknown_80E6030: @ 80E6030
- .4byte sUnknown_80E6070, 0xFFDE
- .4byte sUnknown_80E6048, 0xFFDE
- .4byte 0, 0xFFDD
-
-sUnknown_80E6048:
- .string "go on an adventure to unknown worlds.\0"
- .align 2, 0
-
-sUnknown_80E6070:
- .string "Using wireless communication~2c you can\0"
- .align 2, 0
-
- .string "pksdir0\0"
-
@ Start of Trade Items Data
.global gUnknown_80E60A0
diff --git a/include/ds_menus.h b/include/ds_menus.h
new file mode 100644
index 0000000..4c7d90f
--- /dev/null
+++ b/include/ds_menus.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_DS_MENUS_H
+#define GUARD_DS_MENUS_H
+
+u32 CreateDualSlotMenu(void);
+u32 UpdateDualSlotMenu(void);
+void CleanDualSlotMenu(void);
+u32 CreateWirelessCommsMenu(void);
+u32 UpdateWirelessCommsMenu(void);
+void CleanWirelessCommsMenu(void);
+
+#endif // GUARD_DS_MENUS_H
diff --git a/include/load_screen.h b/include/load_screen.h
new file mode 100644
index 0000000..690ed1c
--- /dev/null
+++ b/include/load_screen.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_LOAD_SCREEN_H
+#define GUARD_LOAD_SCREEN_H
+
+void CreateLoadScreen(u32);
+s32 UpdateLoadScreenMenu(void);
+void CleanLoadScreen(void);
+
+#endif // GUARD_LOAD_SCREEN_H
+
diff --git a/src/ds_menus.c b/src/ds_menus.c
index 4e53311..42c4d13 100644
--- a/src/ds_menus.c
+++ b/src/ds_menus.c
@@ -12,7 +12,7 @@ u32 UpdateDualSlotMenu(void)
return 0;
}
-void CleanDualSlotMenu()
+void CleanDualSlotMenu(void)
{
}
diff --git a/src/main_menu.c b/src/main_menu.c
index 37cd217..557f277 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -1,5 +1,7 @@
#include "global.h"
#include "debug_menu.h"
+#include "ds_menus.h"
+#include "load_screen.h"
#include "main_menu.h"
#include "adventure_log.h"
#include "input.h"
@@ -22,31 +24,56 @@
// Deletes the Save
+struct unkStruct_Menu
+{
+ // size 0x50;
+ u8 fil0[0x4C];
+ u8 unk4C;
+ u8 fill4D[0x50 - 0x4D];
+};
+
+struct unkStruct_203B34C
+{
+ // size: 0x1A8
+ u32 unk0;
+ u32 unk4;
+ struct MenuItem *unk8; // Array of menu choices??
+ u8 fillC[0x30 - 0xC];
+ s16 menuIndex;
+ u8 fill32[0x54 - 0x32];
+
+ u32 unk54;
+ u8 fill58[0xA4 - 0x58];
+
+ u32 unkA4;
+ u32 unkA8;
+ u8 fillAC[0x144 - 0xAC];
+ struct UnkTextStruct2 unk144[4];
+ /* 0x1A4 */ u32 currMenuChoice;
+};
+
+EWRAM_DATA struct MainMenu *gMainMenu;
+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 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);
@@ -55,6 +82,8 @@ extern void sub_8013114(u32 *, s32 *);
extern u8 sub_803D0D8();
extern s32 sub_8011C34();
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);
@@ -64,43 +93,38 @@ bool8 SetMainMenuText();
void SetMainMenuItems();
void sub_8035DA0(void);
-struct unkStruct_203B34C
-{
- // size: 0x1A8
- u32 unk0;
- u32 unk4;
- struct MenuItem *unk8; // Array of menu choices??
- u8 fillC[0x30 - 0xC];
- s16 menuIndex;
- u8 fill32[0x54 - 0x32];
-
- u32 unk54;
- u8 fill58[0xA4 - 0x58];
-
- u32 unkA4;
- u32 unkA8;
- u8 fillAC[0x144 - 0xAC];
- struct UnkTextStruct2 unk144[4];
- /* 0x1A4 */ u32 currMenuChoice;
-};
-
-EWRAM_DATA struct MainMenu *gMainMenu;
-EWRAM_DATA struct unkStruct_203B34C *gUnknown_203B34C;
-EWRAM_DATA u32 gUnknown_203B350;
-EWRAM_DATA u32 gUnknown_203B354; // unused everywhere else except here..
-
-
-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 char NewGame_80E5A20[];
+static const char AdventureLog_80E5A10[];
+static const char WonderMail_80E5A54[];
+static const char Continue_80E5AF0[];
+static const char DeleteSaveData_80E5ADC[];
+static const char FriendRescue_80E5ACC[];
+static const char TradeItems_80E5AC0[];
+static const char ReviveTeam_80E5C0C[];
+static const char SendItems_80E5C90[];
+static const char ReceiveItems_80E5C80[];
+static 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,
@@ -186,11 +210,10 @@ const struct MenuItem gUnknown_80E5A90[] =
{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";
-
+static const char TradeItems_80E5AC0[] = "Trade Items";
+static const char FriendRescue_80E5ACC[] = "Friend Rescue";
+static const char DeleteSaveData_80E5ADC[] = "Delete Save Data";
+static const char Continue_80E5AF0[] = "Continue";
const struct MenuItem gUnknown_80E5AFC[] =
{
@@ -281,8 +304,8 @@ const struct MenuItem gUnknown_80E5C68[] =
{NULL, 0xffdd},
};
-const char ReceiveItems_80E5C80[] = "Receive Items";
-const char SendItems_80E5C90[] = "Send Items";
+static const char ReceiveItems_80E5C80[] = "Receive Items";
+static const char SendItems_80E5C90[] = "Send Items";
const struct MenuItem gUnknown_80E5C9C[] =
{
@@ -291,32 +314,117 @@ const struct MenuItem gUnknown_80E5C9C[] =
{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)
{
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index fd5e1df..b4c0a5d 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -23,6 +23,46 @@ extern void sub_80310B4();
extern u32 sub_8095350();
extern u8 sub_80A2824(u8);
+extern const u8 DontSendPokemon_80DDB80[];
+extern const u8 SendPokemon_80DDB98[];
+extern const u8 gWonderMailCancel[];
+extern const u8 Password_80DDB44[];
+extern const u8 GameLinkCable_80DDB50[];
+extern const u8 Confirm_80DDB1C[];
+extern const u8 Info_80DDB14[];
+
+const struct MenuItem gUnknown_80DDAFC[] =
+{
+ {Confirm_80DDB1C, 0xB},
+ {Info_80DDB14, 0xC},
+ {NULL, 0xA},
+};
+
+ALIGNED(4) const u8 Info_80DDB14[] = "Info";
+ALIGNED(4) const u8 Confirm_80DDB1C[] = "Confirm";
+
+const struct MenuItem gUnknown_80DDB24[] =
+{
+ {GameLinkCable_80DDB50, 0xD},
+ {Password_80DDB44, 0xF},
+ {gWonderMailCancel, 0xA},
+ {NULL, 0xA},
+};
+
+ALIGNED(4) const u8 Password_80DDB44[] = "Password";
+ALIGNED(4) const u8 GameLinkCable_80DDB50[] = "Game Link cable";
+
+const struct MenuItem gUnknown_80DDB60[] =
+{
+ {SendPokemon_80DDB98, 0x11},
+ {DontSendPokemon_80DDB80, 0x12},
+ {gWonderMailCancel, 0xA},
+ {NULL, 0xA},
+};
+
+ALIGNED(4) const u8 DontSendPokemon_80DDB80[] = _("Don{APOSTROPHE}t Send Pokémon");
+ALIGNED(4) const u8 SendPokemon_80DDB98[] = _("Send Pokémon");
+
#include "data/wonder_mail_1.h"
extern u8 sub_809539C(u32, u32);
@@ -51,7 +91,7 @@ extern void sub_803092C(void);
extern u32 sub_80154F0();
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
-extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, void *r5, u32);
+extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, void *r5, u32);
extern void sub_8095274(u32);
extern void sub_80155F0();
extern void sub_80951BC(u8 *r0);
@@ -83,16 +123,14 @@ extern void sub_8031E10(void);
extern void sub_803084C(void);
extern void sub_8030DE4();
extern u8 gUnknown_80DDAE4[];
+extern u8 gUnknown_80DDACC[];
extern struct MenuItem gUnknown_80DDAA0[];
extern struct MenuItem gUnknown_80DDA80[];
-extern struct MenuItem gUnknown_80DDAFC[];
-extern struct MenuItem gUnknown_80DDB60[];
extern struct MenuItem gUnknown_80DDA64[];
-extern struct MenuItem gUnknown_80DDB24[];
extern struct MenuItem gUnknown_80DD9EC[];
-extern u8 gUnknown_80DDACC[];
extern struct MenuItem gUnknown_80DD970[];
+
extern void nullsub_23(u32);
extern s32 sub_8037D64(u32, void *, void *);
extern s32 sub_80381F4(u32, void *, void *);
@@ -108,7 +146,7 @@ extern u32 sub_8023CE8(void);
extern u32 sub_8030894(void);
extern void sub_8030F58(u32);
extern void sub_8023DA4(void);
-extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, u8 *, struct MenuItem *, u32, u32, u32);
+extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, u8 *, const struct MenuItem *, u32, u32, u32);
extern void sub_8029B34(void);
extern void sub_8029AD8(void);
extern void sub_8029AF4(void);
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 3ce4aa2..816dba2 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -119,14 +119,6 @@ extern void sub_802BB28(void);
extern void sub_8013E54(void);
extern s32 sub_8012A64(u32 *, u32);
-extern struct UnkTextStruct2 gUnknown_80DFBEC;
-
-extern struct UnkTextStruct2 gUnknown_80DFBD0;
-
-extern struct UnkTextStruct2 gUnknown_80DFC34;
-
-extern struct UnkTextStruct2 gUnknown_80DFC18;
-
extern struct unkStruct_203B2C8 *gUnknown_203B2C8;
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u32, u32, u32, struct OpenedFile **r5, u32);
@@ -135,8 +127,6 @@ extern void sub_80920D8(u8 *buffer);
extern void sub_8097790(void);
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
-extern u8 gUnknown_80DFC4C[];
-extern u8 gUnknown_80DFC50[];
extern u32 sub_802F298(void);
extern void sub_802F2C0(void);
extern u8 sub_8099394(u8 *);
@@ -158,15 +148,11 @@ extern u8 sub_80023E4(u32);
extern void nullsub_131(void);
extern void sub_802ABF8(void);
-extern u8 gUnknown_80DFC04[];
-extern u8 gUnknown_80DFBE8[];
-extern struct UnkTextStruct2 gUnknown_80DFC74;
-extern struct UnkTextStruct2 gUnknown_80DFC5C;
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_802BC7C(void);
extern void sub_80073E0(u32);
-extern void xxx_call_draw_string(s32 x, u32 y, u8 *, u32 , u32);
+extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
extern void sub_803B6B0(u32, u32, u32, u32);
@@ -182,9 +168,8 @@ extern void sub_8012D34(struct UnkTextStruct2 *, u32);
extern s32 CountEmptyMailSlots(void);
extern void sub_8013848(u32 *, s32, u32, u32);
-ALIGNED(4) const char gUnknown_80DF9F0[] = "????";
+ALIGNED(4) const char gRescueTeamNamePlaceholder[] = "????";
-// NOTE: had to be pre-proc'd to match
ALIGNED(4) const char gUnknown_80DF9F8[] = _(
" Oh{COMMA} hello!\n"
"Your rescue mission went well{COMMA} didn{APOSTROPHE}t it?\n"
@@ -209,7 +194,102 @@ ALIGNED(4) const char gUnknown_80DFB14[] = _(
ALIGNED(4) const char wonder_mail_2_fill[] = "pksdir0";
+const struct UnkTextStruct2 gUnknown_80DFBD0 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
+};
+
+const u8 gUnknown_80DFBE8[] = { 0x01, 0x00, 0x0C, 0x00 };
+
+const struct UnkTextStruct2 gUnknown_80DFBEC =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
+ 0x18, 0x0E,
+ 0x0E, 0x00,
+ gUnknown_80DFBE8
+};
+
+ALIGNED(4) const u8 gUnknown_80DFC04[] = "News List";
+ALIGNED(4) static const char wonder_mail_2_fill1[] = "pksdir0";
+
+const struct UnkTextStruct2 gUnknown_80DFC18 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
+};
+
+const u8 gUnkData_80DFC30[] = { 0x01, 0x00, 0x16, 0x00 };
+
+const struct UnkTextStruct2 gUnknown_80DFC34 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
+ 0x1A, 0x10,
+ 0x10, 0x00,
+ gUnkData_80DFC30
+};
+
+ALIGNED(4) const u8 gUnknown_80DFC4C[] = "She";
+ALIGNED(4) const u8 gUnknown_80DFC50[] = "He";
+ALIGNED(4) static const char wonder_mail_2_fill2[] = "pksdir0";
+
+const struct UnkTextStruct2 gUnknown_80DFC5C =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
+};
+
+const struct UnkTextStruct2 gUnknown_80DFC74 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
+ 0x18, 0x0E,
+ 0x0E, 0x00,
+ NULL
+};
+
+ALIGNED(4) const u8 gMailboxText[] = "Mailbox";
+ALIGNED(4) static const char wonder_mail_2_fill3[] = "pksdir0";
+
+const struct UnkTextStruct2 gUnknown_80DFC9C =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
+};
+
+const struct UnkTextStruct2 gUnknown_80DFCB4 =
+{
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
+ 0x18, 0x0E,
+ 0x0E, 0x00,
+ NULL
+};
+ALIGNED(4) const u8 gBulletinBoardText[] = "Bulletin Board";
+ALIGNED(4) static const char wonder_mail_2_fill4[] = "pksdir0";
u32 sub_802B2D4(void)
{
@@ -291,7 +371,7 @@ void sub_802B3E0(void)
}
else {
// Copy "????" to buffer
- strcpy(teamNameBuffer,gUnknown_80DF9F0);
+ strcpy(teamNameBuffer,gRescueTeamNamePlaceholder);
}
// Print and expand placeholders?
ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);