summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-06-09 22:54:21 -0500
committerGitHub <noreply@github.com>2021-06-09 22:54:21 -0500
commit377bd14ea67d6177250fb401e12d7dfcf44e2cf6 (patch)
tree5440970e02a7890791b234aa233e91e5c1d65b40 /src
parenteaa141c612dd1689936a21bd57018a55ff686b69 (diff)
Dungeon pokemon/Floor ID JSON Part 1 (#39)
* move Thunderwave and Tiny Woods pokemon to json * rule tweaking to actually build tool before parsing JSON * delete .inc pokemon for tiny Woods and Thunderwave * silence git complaining about br_ips and ips_patch * use defines for species and pass the header file for species * convert sinister woods * convert MtThunderPeak * convert silent chasm * add trial floor_id w/ tiny woods * change make rule name to fix compile * MtSteel converted and bugfix * convert few floor headers and great canyon pokemon * code cleanup * unify unkData into UnkTextStruct2 * more code cleanup and some text decomp * doc more funcs and decomp/split some stuff * document more save stuff * more save work and move some data * pika sniped UpdateNatureTotal * decomp a litle and convert a few more dungeons * better scanning for json files * mt freeze and peak
Diffstat (limited to 'src')
-rw-r--r--src/adventure_log.c26
-rw-r--r--src/adventure_log_menu.c2
-rw-r--r--src/code_2.c19
-rw-r--r--src/code_800D090.c2
-rw-r--r--src/code_80118A4.c10
-rw-r--r--src/code_8012A18_1.c9
-rw-r--r--src/code_801C620.c17
-rw-r--r--src/code_801D760.c38
-rw-r--r--src/code_801DCC4.c71
-rw-r--r--src/code_8027C84_pre.c86
-rw-r--r--src/code_80521D0_1.c25
-rw-r--r--src/code_808DAB4.c21
-rw-r--r--src/code_8097670.c188
-rw-r--r--src/code_8098BDC.c12
-rw-r--r--src/debug.c49
-rw-r--r--src/debug_menu.c36
-rw-r--r--src/debug_menu_1.c17
-rw-r--r--src/debug_menu_2.c186
-rw-r--r--src/debug_menu_mid.c102
-rw-r--r--src/ds_menus.c2
-rw-r--r--src/exclusive_pokemon.c2
-rw-r--r--src/felicity_bank.c18
-rw-r--r--src/friend_area.c8
-rw-r--r--src/friend_area_1.c2
-rw-r--r--src/friend_area_action_menu.c246
-rw-r--r--src/friend_area_action_menu_1.c122
-rw-r--r--src/friend_rescue.c2
-rw-r--r--src/gulpin_shop.c158
-rw-r--r--src/items.c9
-rw-r--r--src/kangaskhan_storage.c10
-rw-r--r--src/kangaskhan_storage_2.c94
-rw-r--r--src/kecleon_items.c10
-rw-r--r--src/kecleon_items_1.c20
-rw-r--r--src/load_screen.c71
-rw-r--r--src/main.c12
-rw-r--r--src/main_menu.c13
-rw-r--r--src/main_menu_1.c20
-rw-r--r--src/makuhita_dojo.c15
-rw-r--r--src/memory_mid.c20
-rw-r--r--src/other_menus.c54
-rw-r--r--src/personality_test.c169
-rw-r--r--src/play_time.c6
-rw-r--r--src/pokemon.c12
-rw-r--r--src/pokemon_1.c9
-rw-r--r--src/pokemon_mid.c38
-rw-r--r--src/post_office_guide.c27
-rw-r--r--src/rescue_team_info.c6
-rw-r--r--src/save.c352
-rw-r--r--src/text_1.c27
-rw-r--r--src/trade_items_menu.c46
-rw-r--r--src/unk_menu_203B360.c19
-rw-r--r--src/unk_menu_203B360_1.c12
-rw-r--r--src/unk_menu_203B364.c19
-rw-r--r--src/wonder_mail.c158
-rw-r--r--src/wonder_mail_2.c29
-rw-r--r--src/wonder_mail_main_menu.c23
-rw-r--r--src/wonder_mail_pre.c6
57 files changed, 1794 insertions, 988 deletions
diff --git a/src/adventure_log.c b/src/adventure_log.c
index 4c9b10f..f7c2250 100644
--- a/src/adventure_log.c
+++ b/src/adventure_log.c
@@ -2,15 +2,7 @@
#include "input.h"
#include "gba/io_reg.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[14];
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u8 *unk14;
-};
+#include "text.h"
struct AdventureLog
{
@@ -22,8 +14,8 @@ struct AdventureLog
u16 unk20;
u8 fill22[0x34 - 0x22];
u32 unk34;
- struct unkData *unk38;
- struct unkData unk3C[3];
+ struct UnkTextStruct2 *unk38;
+ struct UnkTextStruct2 unk3C[3];
u8 fill84[0x9C - 0x84];
u8 unk9C;
/* 0x9D */ u8 currPage_u8;
@@ -33,19 +25,19 @@ struct AdventureLog
extern struct AdventureLog *gAdventureLog;
-const struct unkData gUnknown_80E1FF0 = {
+const struct UnkTextStruct2 gUnknown_80E1FF0 = {
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00,
+ 0x00, 0x00,
0x00, 0x00,
NULL
};
-const struct unkData gUnknown_80E2008 = {
+const struct UnkTextStruct2 gUnknown_80E2008 = {
0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x00,
0x02, 0x00, 0x02, 0x00,
- 0x1A, 0x00, 0x04,
+ 0x1A, 0x04,
0x06, 0x00,
NULL
};
@@ -55,8 +47,6 @@ const u8 gAdventureLogHeaderText[] = "Adventure Log";
const u8 gUnknown_80E2030[] = "~95~95~95~95~95~95~95~95~95~95~95~95~95~95~95 "; // string of ???????
const u8 fill_adven[] = "pksdir0";
-extern void sub_8006518(struct unkData *);
-extern void sub_800641C(void *, u32, u32);
void sub_8032084();
void DisplayAdventureLog();
extern void sub_8013818(void *, u32, u32, u32);
@@ -145,7 +135,7 @@ void sub_8032084(void)
sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10;
// TODO needs asr r3, r0, r16
// and lsr r0, r0, r16
- gAdventureLog->unk3C[gAdventureLog->unk34].unkD = sVar2;
+ gAdventureLog->unk3C[gAdventureLog->unk34].unkE = sVar2;
// Good past here except regs for this store
gAdventureLog->unk3C[gAdventureLog->unk34].unk10 = sVar2 + 2;
ResetUnusedInputStruct();
diff --git a/src/adventure_log_menu.c b/src/adventure_log_menu.c
index b935716..0f9e9a7 100644
--- a/src/adventure_log_menu.c
+++ b/src/adventure_log_menu.c
@@ -2,8 +2,8 @@
#include "input.h"
#include "main_menu.h"
#include "adventure_log.h"
+#include "text.h"
-extern void sub_800641C(u8 *, u32, u32);
extern void CreateAdventureLogScreen(u32);
extern u32 HandleAdventureLogInput(u32);
extern void CleanAdventureLogScreen();
diff --git a/src/code_2.c b/src/code_2.c
index c4362b3..55f802b 100644
--- a/src/code_2.c
+++ b/src/code_2.c
@@ -9,18 +9,19 @@
#include "play_time.h"
#include "save.h"
#include "gUnknown_203B46C.h"
+#include "text.h"
+#include "exclusive_pokemon.h"
+#include "pokemon.h"
+#include "rescue_team_info.h"
extern void NDS_DebugInit(void);
extern void sub_801180C(void);
extern void NDS_LoadOverlay_GroundMain(void);
extern void sub_8014144(void);
-extern void LoadMonsterParameters(void);
extern void sub_8097670(void);
extern void LoadGameOptions(void);
extern void sub_8094C14(void);
-extern void LoadExclusivePokemon(void);
extern void LoadItemParameters(void);
-extern void LoadRescueTeamInfo(void);
extern void LoadWazaParameters(void);
extern void sub_80950BC(void);
extern void sub_80958E8(void);
@@ -35,15 +36,13 @@ extern void sub_80015C0(u32, u32);
extern u32 sub_8001658(u32, u32);
extern void sub_800A8F8(u32);
extern void ResetSprites(u32);
-extern void xxx_update_some_bg_tiles(u32);
extern void sub_80097B0(void);
extern void sub_800CDA8(u32);
-extern void sub_800641C(u32, u32, u32);
extern void LoadTitleScreen(void);
extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *);
extern void sub_80095CC(u32, u32);
extern void InitMainMenu(void);
-extern u8 sub_80363E0(void);
+extern bool8 sub_80363E0(void);
extern void SetUpMenu(void);
extern u32 UpdateMenu(void);
extern void CleanUpMenu(void);
@@ -139,10 +138,10 @@ void GameLoop(void)
xxx_update_stuff(0);
}
if (tmp3) {
- sub_8012468();
- while ((u8)(tmp3 = sub_8012484()))
+ PrepareSavePakRead();
+ while ((tmp3 = ReadSavePak()))
xxx_update_stuff(0);
- sub_8012558();
+ FinishReadSavePak();
}
tmp3 = 1;
StartNewBGM(MUS_LOADING_SCREEN);
@@ -150,7 +149,7 @@ void GameLoop(void)
sub_80095CC(0, 20);
InitMainMenu();
while (1) {
- if ((u8)sub_80363E0()) {
+ if (sub_80363E0()) {
if (gRealInputs.pressed & L_BUTTON) {
flag = FALSE;
SetBGOBJEnableFlags(19);
diff --git a/src/code_800D090.c b/src/code_800D090.c
index fc93392..45f89f7 100644
--- a/src/code_800D090.c
+++ b/src/code_800D090.c
@@ -76,7 +76,7 @@ void sub_800D098(void)
while(REG_KEYINPUT != KEYS_MASK){} // All buttons
}
-void sub_800D158(u8 *buffer, const char *text, ...)
+void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...)
{
va_list vArgv;
va_start(vArgv, text);
diff --git a/src/code_80118A4.c b/src/code_80118A4.c
index 815a737..d6832ba 100644
--- a/src/code_80118A4.c
+++ b/src/code_80118A4.c
@@ -41,11 +41,11 @@ struct UnkBgStruct
extern struct UnkBgStruct *gUnknown_203B0E4;
-extern u16 gUnknown_80D4144[];
-extern s16 gUnknown_202DE20;
-extern s16 gUnknown_202DE22;
-extern s16 gUnknown_202DE24;
-extern u32 gUnknown_202DE1C;
+extern const u16 gUnknown_80D4144[8];
+EWRAM_DATA u32 gUnknown_202DE1C;
+EWRAM_DATA s16 gUnknown_202DE20;
+EWRAM_DATA s16 gUnknown_202DE22;
+EWRAM_DATA s16 gUnknown_202DE24;
void nullsub_8(u32);
void sub_8005838(u32, u32);
diff --git a/src/code_8012A18_1.c b/src/code_8012A18_1.c
index 62dc64d..e91d971 100644
--- a/src/code_8012A18_1.c
+++ b/src/code_8012A18_1.c
@@ -3,16 +3,17 @@
#include "file_system.h"
#include "memory.h"
#include "input.h"
-
-extern void sub_800641C(u32, u32, u32);
+#include "text.h"
struct unkStruct_203B200
{
+ // size: 0x50
u32 unk0;
u32 unk4;
u8 *pokeName;
s32 state;
/* 0x10 */ struct MenuItem menus[3];
+ u8 fill[0x50 - 0x28];
};
extern struct unkStruct_203B200 *gUnknown_203B200;
extern const char *gUnknown_80D4920;
@@ -94,7 +95,7 @@ u32 sub_801602C(u32 r0, u8 *name)
{
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
- gUnknown_203B200 = MemoryAlloc(0x50, 8);
+ gUnknown_203B200 = MemoryAlloc(sizeof(struct unkStruct_203B200), 8);
gUnknown_203B200->unk0 = r0;
gUnknown_203B200->pokeName = name;
switch(r0)
@@ -139,8 +140,6 @@ u32 sub_8016080(void)
return 0;
}
-extern void MemoryFree(void *);
-
void sub_80160D8(void)
{
if(gUnknown_203B200 != NULL)
diff --git a/src/code_801C620.c b/src/code_801C620.c
index 66269c9..c2c2c44 100644
--- a/src/code_801C620.c
+++ b/src/code_801C620.c
@@ -1,12 +1,7 @@
#include "global.h"
#include "input.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[24];
-};
-
+#include "text.h"
struct subStruct_203B240
{
@@ -16,6 +11,7 @@ struct subStruct_203B240
struct unkStruct_203B240
{
+ // size: 0x94
s32 unk0;
u8 unk4;
u8 fill5[3];
@@ -25,8 +21,10 @@ struct unkStruct_203B240
u8 fill14[0x20 - 0x18];
u32 unk20;
u32 unk24;
- struct unkData unk28[4];
+ struct UnkTextStruct2 unk28[4];
u32 unk88;
+ u32 unk8C;
+ u32 unk90;
};
extern struct unkStruct_203B240 *gUnknown_203B240;
@@ -38,8 +36,7 @@ extern u8 gAvailablePokemonNames[0x58];
extern void ResetSprites(u32);
extern void sub_801317C(u32 *);
-extern void sub_80140B4(struct unkData *);
-extern void sub_800641C(struct unkData *,u32, u32);
+extern void sub_80140B4(struct UnkTextStruct2 *);
extern void sub_8014FF0(u32, u32, char *, u32, u32);
@@ -62,7 +59,7 @@ void sub_801C848();
u32 sub_801C620(u8 param_1)
{
ResetSprites(1);
- gUnknown_203B240 = MemoryAlloc(0x94,8);
+ gUnknown_203B240 = MemoryAlloc(sizeof(struct unkStruct_203B240),8);
gUnknown_203B240->unk4 = param_1;
sub_801317C(&gUnknown_203B240->unk88);
gUnknown_203B240->unk24 = 0;
diff --git a/src/code_801D760.c b/src/code_801D760.c
index be96c88..3b07d05 100644
--- a/src/code_801D760.c
+++ b/src/code_801D760.c
@@ -4,12 +4,7 @@
#include "gUnknown_203B460.h"
#include "memory.h"
#include "input.h"
-
-struct unkData
-{
- u8 unk0[0x14];
- u32 *unk14;
-};
+#include "text.h"
struct unkStruct_203B258
{
@@ -18,16 +13,14 @@ struct unkStruct_203B258
u32 unk14;
u8 fill18[0x34 - 0x18];
u32 unk34;
- struct unkData *unk38;
- struct unkData unk3C[4];
- u32 unk9C;
+ struct UnkTextStruct2 *unk38;
+ struct UnkTextStruct2 unk3C[4];
+ u8 unk9C[4];
};
extern struct unkStruct_203B258 *gUnknown_203B258;
-extern struct unkData gUnknown_80DBF88;
+extern struct UnkTextStruct2 gUnknown_80DBF88;
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void sub_8006518(struct unkData *);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_8013878(void *, s32);
extern u8 sub_80138B8(void *, u32);
@@ -62,7 +55,6 @@ extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern const char *sub_8098FB4();
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
-extern const char *GetFriendAreaName(u8);
extern s32 sub_8008ED0(u8 *);
extern void xxx_call_draw_string(s32 size, u32, u8 *, u32, u32);
extern const char *GetFriendAreaName(u8);
@@ -73,7 +65,7 @@ extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
void LoadTeamRankBadge(u32, u32, u32);
-extern void sub_800D158(u8 *, u32 *, ...);
+extern void ExpandPlaceholdersBuffer(u8 *, u32 *, ...);
extern void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray);
extern void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32);
@@ -316,7 +308,7 @@ void sub_801D894(void)
// Stored on stack
u32 *preload_string;
u32 *r5; // R5
- u8 auStack116 [96]; // sp +4
+ u8 buffer [96]; // sp +4
if (gUnknown_203B250->currFriendAreaLocation == NONE) {
location = sub_8098FB4();
@@ -325,12 +317,12 @@ void sub_801D894(void)
location = GetFriendAreaName(gUnknown_203B250->currFriendAreaLocation);
}
// TODO this is def a hack
- xxx_format_string(location, auStack116, &preload_string + 1, 0);
- location_length = sub_8008ED0(auStack116);
+ xxx_format_string(location, buffer, &preload_string + 1, 0);
+ location_length = sub_8008ED0(buffer);
x_coord = (128 - location_length) / 2; // Centers the location name
sub_8008C54(1);
sub_80073B8(1);
- xxx_call_draw_string(x_coord, 4, auStack116, 1, 0);
+ xxx_call_draw_string(x_coord, 4, buffer, 1, 0);
sub_80073E0(1);
sub_8008C54(2);
sub_80073B8(2);
@@ -339,10 +331,10 @@ void sub_801D894(void)
// Have to load before TeamRank funcs
r5 = &gUnknown_80DBF3C; // %s #C5%d#R Pts.
rank = GetRescueTeamRank();
- sub_800D158(auStack116, r5, GetTeamRankString(rank), GetTeamRankPts());
- xxx_call_draw_string(32, 4, auStack116, 2, 0);
- sub_800D158(auStack116, &gUnknown_80DBF4C, gUnknown_203B460->teamMoney);
- xxx_call_draw_string(32, 18, auStack116, 2, 0);
+ ExpandPlaceholdersBuffer(buffer, r5, GetTeamRankString(rank), GetTeamRankPts());
+ xxx_call_draw_string(32, 4, buffer, 2, 0);
+ ExpandPlaceholdersBuffer(buffer, &gUnknown_80DBF4C, gUnknown_203B460->teamMoney);
+ xxx_call_draw_string(32, 18, buffer, 2, 0);
sub_80073E0(2);
}
@@ -374,7 +366,7 @@ u32 sub_801D9E4(void)
gUnknown_203B258->unk38 = &gUnknown_203B258->unk3C[3];
sub_8006518(gUnknown_203B258->unk3C);
gUnknown_203B258->unk3C[gUnknown_203B258->unk34] = gUnknown_80DBF88;
- gUnknown_203B258->unk38->unk14 = &gUnknown_203B258->unk9C;
+ gUnknown_203B258->unk38->unk14 = gUnknown_203B258->unk9C;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B258->unk3C,1,1);
sub_8013818(gUnknown_203B258,0xe5,10,gUnknown_203B258->unk34);
diff --git a/src/code_801DCC4.c b/src/code_801DCC4.c
index d713bd6..0fde1a2 100644
--- a/src/code_801DCC4.c
+++ b/src/code_801DCC4.c
@@ -2,16 +2,7 @@
#include "memory.h"
#include "menu.h"
#include "gUnknown_203B46C.h"
-
-struct unkData
-{
- u8 unk0[0xB];
- u16 unkB;
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u32 *unk14;
-};
+#include "text.h"
struct unkStruct_203B25C
{
@@ -25,7 +16,7 @@ struct unkStruct_203B25C
struct MenuItem unk6C[3];
u8 fill84[0xAC - 0x84];
u16 unkAC[8];
- struct unkData unkBC[4];
+ struct UnkTextStruct2 unkBC[4];
};
@@ -58,9 +49,12 @@ extern void sub_801E2C4(void);
extern s32 sub_80144A4(s32 *);
extern void sub_8094C14(void);
extern void sub_8099690(u32);
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
extern struct UnkSaveStruct1 *gUnknown_203B46C;
extern struct unkStruct_203B25C *gUnknown_203B25C;
+extern const struct UnkTextStruct2 gUnknown_80DBFCC;
+extern const struct UnkTextStruct2 gUnknown_80DBFB0;
extern const char gOthers_MenuOption[];
extern const char gUnknown_80DBFEC[];
@@ -131,6 +125,60 @@ void sub_801DD6C(u32 newState)
sub_801DED0();
}
+#ifdef NONMATCHING
+void sub_801DD84(void)
+{
+ s32 iVar3;
+ sub_8006518(gUnknown_203B25C->unkBC);
+ switch(gUnknown_203B25C->state)
+ {
+ case 0:
+ CreateOthersMenu();
+ // TODO probably could be cleaned up to actually match
+ iVar3 = 0;
+ if (gUnknown_203B25C->unkAC[iVar3] == 0) {
+ gUnknown_203B25C->unk18 = gUnknown_203B25C->unk6C[iVar3].menuAction;
+ }
+ else {
+ do {
+ iVar3++;
+ if(iVar3 > 7)
+ break;
+ if(gUnknown_203B25C->unkAC[iVar3] == 0){
+ gUnknown_203B25C->unk18 = gUnknown_203B25C->unk6C[iVar3].menuAction;
+ break;
+ }
+ } while (iVar3 < 8);
+ }
+ for(iVar3 = 0; iVar3 < 4; iVar3++)
+ {
+ gUnknown_203B25C->unkBC[iVar3] = gUnknown_80DBFCC;
+ }
+ gUnknown_203B25C->unkBC[0] = gUnknown_80DBFB0;
+ sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->unk6C);
+ gUnknown_203B25C->unkBC[0].unk0c = 0xA;
+ break;
+ case 1:
+ CreateOthersMenu();
+ for(iVar3 = 0; iVar3 < 4; iVar3++)
+ {
+ gUnknown_203B25C->unkBC[iVar3] = gUnknown_80DBFB0;
+ }
+ gUnknown_203B25C->unkBC[0] = gUnknown_80DBFCC;
+ sub_8012CAC(&gUnknown_203B25C->unkBC[0], gUnknown_203B25C->unk6C);
+ gUnknown_203B25C->unkBC[0].unk0c = 0xA;
+ break;
+ default:
+ for(iVar3 = 0; iVar3 < 4; iVar3++)
+ {
+ gUnknown_203B25C->unkBC[iVar3] = gUnknown_80DBFB0;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B25C->unkBC, 1, 1);
+}
+#else
NAKED
void sub_801DD84(void)
{
@@ -297,6 +345,7 @@ void sub_801DD84(void)
"\t.align 2, 0\n"
"_0801DECC: .4byte gUnknown_203B25C");
}
+#endif
void sub_801DED0(void)
{
diff --git a/src/code_8027C84_pre.c b/src/code_8027C84_pre.c
deleted file mode 100644
index 9ff107e..0000000
--- a/src/code_8027C84_pre.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "global.h"
-
-
-struct UnkOtherStructTemp
-{
- /* 0x0 */ u32 unk0;
- /* 0x4 */ u32 unk4;
- /* 0x8 */ u32 unk8;
- /* 0xC */ u32 unkC;
- /* 0x10 */ u32 unk10;
- /* 0x14 */ u32 unk14;
- /* 0x18 */ u32 unk18;
- /* 0x1C */ u32 unk1C;
- /* 0x20 */ u16 *unk20;
- /* 0x24 */ u16 unk24;
- /* 0x26 */ u16 unk26;
- /* 0x28 */ u16 unk28;
- /* 0x2A */ u16 unk2A;
-};
-
-struct UnkStructTemp
-{
- /* 0x0 */ u32 unk0;
- /* 0x4 */ u32 unk4;
- /* 0x8 */ u32 unk8;
- /* 0xC */ u32 unkC;
- /* 0x10 */ u32 unk10;
- /* 0x14 */ u32 unk14;
- /* 0x18 */ u32 unk18;
- /* 0x1C */ u32 unk1C;
- /* 0x20 */ u32 unk20;
- /* 0x24 */ u16 unk24;
- /* 0x26 */ u16 unk26;
- /* 0x28 */ u16 unk28;
- /* 0x2A */ u16 *unk2A;
-};
-
-
-extern struct UnkStructTemp *gUnknown_203B2BC;
-u32 sub_801B410();
-void sub_801B450();
-void sub_8027184(u8 r0);
-u32 sub_801EF38(u8 r0);
-struct UnkOtherStructTemp *sub_801F194();
-void sub_8027184(u8 r0);
-void sub_801F214();
-
-void sub_8027C84()
-{
- u32 temp = sub_801B410();
- if(temp <= 1)
- return;
- if(temp > 3)
- return;
- sub_801B450();
- sub_8027184(0xB);
-}
-
-//void sub_8027CA0()
-//{
-// struct UnkOtherStructTemp *temp_store;
-// u32 temp = sub_801EF38(1);
-// if(temp > 4)
-// return;
-// switch(temp)
-// {
-// case 0:
-// case 1:
-// break;
-// case 2:
-// sub_801F214();
-// sub_8027184(0x2);
-// return;
-// case 3:
-// case 4:
-// temp_store = sub_801F194();
-// gUnknown_203B2BC->unk20 = temp_store;
-// // TODO missing
-// // lsls r0, 3
-// // adds r0, r1, r0
-// // Why are we shifting the pointer by 3?
-// gUnknown_203B2BC->unk24 = temp_store->unk2A[temp_store];
-// sub_8027184(0x10);
-// break;
-// }
-//}
diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c
index ec29b38..c70de32 100644
--- a/src/code_80521D0_1.c
+++ b/src/code_80521D0_1.c
@@ -110,7 +110,7 @@ extern void sub_803F878(u32, s32);
extern void sub_8086A70(struct unkDungeon_8041D5C *, u32, u32);
extern void sub_8085C54(u32, u32, u32, u32, u32);
extern void sub_803E9D0(void);
-extern void sub_808C4C4(void);
+extern void DeoxysScreenFlash(void);
extern void sub_8085EB0();
extern void sub_808563C(void *);
extern void sub_80858AC(u32 *, u32);
@@ -131,7 +131,7 @@ extern void sub_80861B8(struct unkDungeon_8041D5C *, u32, u32);
void nullsub_99();
extern u32 sub_8084100(s32);
-extern u8 *gFriendAreas;
+extern bool8 *gFriendAreas;
extern void sub_8049884();
extern void sub_8049B8C();
@@ -258,7 +258,7 @@ u8 JirachiFriendAreaSearch(void)
unlockCondition = GetFriendAreaUnlockCondition(friendAreaCounter);
if (!(unlockCondition == UNLOCK_LEGENDARY_REQUEST)){
if (!(unlockCondition == UNLOCK_WONDER_MAIL)){
- if(gFriendAreas[friendAreaCounter] == FALSE) {
+ if(!gFriendAreas[friendAreaCounter]) {
friendAreas[numUnlockableAreas] = friendAreaCounter;
numUnlockableAreas++;
}
@@ -579,9 +579,9 @@ void DeoxysPreFightDialogue(void)
sub_8083EA8(0x1a,0x3c);
sub_808C550();
sub_8052910(&gUnknown_81062E8);
- sub_808C4C4();
+ DeoxysScreenFlash();
sub_8052910(&gUnknown_8106368);
- sub_808C4C4();
+ DeoxysScreenFlash();
sub_8052910(&gUnknown_8106390);
sub_803E708(10,0x46);
sub_808563C(sub_808C5AC);
@@ -589,7 +589,7 @@ void DeoxysPreFightDialogue(void)
}
}
-void sub_808C4C4(void)
+void DeoxysScreenFlash(void)
{
s32 iVar1;
@@ -619,12 +619,12 @@ void sub_808C550(void)
sub_803E9D0();
sub_803E46C(0x46);
gUnknown_203B418->unk7 = 0;
- sub_808C4C4();
+ DeoxysScreenFlash();
}
void sub_808C590(struct unkDungeon_8041D5C *r0)
{
- sub_8068FE0(r0, 0x87 << 2, 0);
+ sub_8068FE0(r0, 0x21C, 0);
}
void sub_808C5A0(struct unkDungeon_8041D5C *r0)
@@ -658,6 +658,7 @@ void sub_808C5C0(void)
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_CELEBI);
}
+// Dummy Celebi Fight Dialogue??
void nullsub_100(void)
{
}
@@ -1190,7 +1191,7 @@ void MedichamResuceDialogue(void)
sub_806CE68(temp, 0);
sub_803E708(0x20, 0x46);
sub_8042B0C(temp);
- sub_8068FE0(temp, 0x87 << 2, 0);
+ sub_8068FE0(temp, 0x21C, 0);
gUnknown_203B418->unk4 = 1;
gUnknown_203B418->unk11 = 4;
}
@@ -1205,7 +1206,7 @@ void sub_808CB5C(void)
sub_8083E88(0x72);
sub_80854D4();
sub_8085930(4);
- sub_8068FE0(temp_2, 0x87 << 2, 0);
+ sub_8068FE0(temp_2, 0x21C, 0);
sub_8085860(temp->unk4, temp->unk6);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
}
@@ -1280,7 +1281,7 @@ void SmeargleRescueDialogue(void)
sub_806CE68(temp, 0);
sub_803E708(0x20, 0x46);
sub_8042B0C(temp);
- sub_8068FE0(temp, 0x87 << 2, 0);
+ sub_8068FE0(temp, 0x21C, 0);
gUnknown_203B418->unk4 = 1;
gUnknown_203B418->unk11 = 4;
@@ -1297,7 +1298,7 @@ void sub_808CD44(void)
sub_80854D4();
sub_8085930(4);
sub_80855E4(sub_8086A3C);
- sub_8068FE0(temp_2, 0x87 << 2, 0);
+ sub_8068FE0(temp_2, 0x21C, 0);
sub_8085860(temp->unk4, temp->unk6 - 3);
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE);
}
diff --git a/src/code_808DAB4.c b/src/code_808DAB4.c
deleted file mode 100644
index f606355..0000000
--- a/src/code_808DAB4.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "global.h"
-
-struct unkStruct_203B45C
-{
- u8 unk0;
- u8 padding1;
- u8 unk2;
- u8 padding2;
- u8 unk4;
- u8 array[0x53];
-};
-
-extern struct unkStruct_203B45C *gRecruitedPokemonRef;
-
-extern void sub_808DE50(void* r0, struct unkStruct_203B45C *r1, u32 r2, u32 r3);
-
-
-void sub_808DE30(void* r0, u32 r1)
-{
- sub_808DE50(r0, &gRecruitedPokemonRef[r1], r1, r1 * sizeof(struct unkStruct_203B45C));
-}
diff --git a/src/code_8097670.c b/src/code_8097670.c
new file mode 100644
index 0000000..388bce6
--- /dev/null
+++ b/src/code_8097670.c
@@ -0,0 +1,188 @@
+#include "global.h"
+
+struct unkStruct_203B494
+{
+ // size: 0xC8?
+ u32 unk0;
+ s32 numAdventures;
+ s32 unk8;
+ s32 unkC;
+ u8 unk10; // location?
+ u8 unk11;
+ u8 fill12[2];
+ s16 unk14;
+ s16 unk16;
+ s16 unk18;
+ u32 unk1C[0xE];
+ u8 fill54[0x8C - 0x54];
+ u32 unk8C[0xD];
+ union UNKC0{
+ s32 unkC0;
+ s16 unkC0_16;
+ } UNKC0;
+};
+
+extern struct unkStruct_203B494 *gUnknown_203B494;
+extern struct unkStruct_203B494 gUnknown_2039778;
+extern const u8 *gAdventureLogText[];
+
+void sub_8097670(void)
+{
+ gUnknown_203B494 = &gUnknown_2039778;
+}
+
+struct unkStruct_203B494 *sub_8097680(void)
+{
+ return &gUnknown_2039778;
+}
+
+void sub_8097688(u8 *r0)
+{
+ gUnknown_203B494->unk10 = r0[0];
+ gUnknown_203B494->unk11 = r0[1];
+}
+
+u8 *sub_809769C(void)
+{
+ return &gUnknown_203B494->unk10;
+}
+
+void sub_80976A8(void)
+{
+ s32 iVar2;
+
+ gUnknown_203B494->unk0 = 0;
+ gUnknown_203B494->unk14 = 0;
+ gUnknown_203B494->unk16 = 0;
+ gUnknown_203B494->unk18 = 0;
+ gUnknown_203B494->UNKC0.unkC0 = 0;
+ gUnknown_203B494->unk8 = 0;
+ gUnknown_203B494->unkC = 0;
+
+ for(iVar2 = 0; iVar2 < 0xE; iVar2++)
+ {
+ gUnknown_203B494->unk1C[iVar2] = 0;
+ }
+
+ for(iVar2 = 0; iVar2 < 0xD; iVar2++)
+ {
+ gUnknown_203B494->unk8C[iVar2] = 0;
+ }
+}
+
+void sub_80976F8(u8 r0)
+{
+ gUnknown_203B494->unk0 |= (1 << r0);
+}
+
+u8 sub_8097710(u8 r0)
+{
+ if((gUnknown_203B494->unk0 & (1 << r0)) != 0)
+ return 1;
+ else
+ return 0;
+}
+
+const u8 *GetAdventureLogLine(u8 index)
+{
+ return gAdventureLogText[index];
+}
+
+void ResetNumAdventures(void)
+{
+ gUnknown_203B494->numAdventures = 0;
+}
+
+void IncrementNumAdventures(void)
+{
+ gUnknown_203B494->numAdventures++;
+ if(gUnknown_203B494->numAdventures > 99999)
+ gUnknown_203B494->numAdventures = 99999;
+}
+
+s32 GetNumAdventures(void)
+{
+ return gUnknown_203B494->numAdventures;
+}
+
+void SetNumAdventures(s32 numAdventures)
+{
+ gUnknown_203B494->numAdventures = numAdventures;
+}
+
+void sub_8097790(void)
+{
+ gUnknown_203B494->unk8++;
+ if(gUnknown_203B494->unk8 > 99999)
+ gUnknown_203B494->unk8 = 99999;
+ sub_80976F8(8);
+}
+
+s32 sub_80977B8(void)
+{
+ return gUnknown_203B494->unk8;
+}
+
+void sub_80977C4(s32 r0)
+{
+ gUnknown_203B494->unk8 = r0;
+}
+
+void sub_80977D0(void)
+{
+ gUnknown_203B494->unkC++;
+ if(gUnknown_203B494->unkC > 99999)
+ gUnknown_203B494->unkC = 99999;
+ sub_80976F8(9);
+}
+
+s32 sub_80977F8(void)
+{
+ return gUnknown_203B494->unkC;
+}
+
+void sub_8097804(s32 r0)
+{
+ gUnknown_203B494->unkC = r0;
+}
+
+void sub_8097810(void)
+{
+ if(gUnknown_203B494->unk14 < 9999)
+ gUnknown_203B494->unk14++;
+ sub_80976F8(0xB);
+}
+
+s16 sub_8097838(void)
+{
+ return gUnknown_203B494->unk14;
+}
+
+void sub_8097848(void)
+{
+ if(gUnknown_203B494->unk16 < 9999)
+ gUnknown_203B494->unk16++;
+ sub_80976F8(0xA);
+}
+
+s16 sub_8097870(void)
+{
+ return gUnknown_203B494->unk16;
+}
+
+s16 sub_8097880(void)
+{
+ return gUnknown_203B494->unk18;
+}
+
+void sub_8097890(void)
+{
+ if(gUnknown_203B494->UNKC0.unkC0 < 99999)
+ gUnknown_203B494->UNKC0.unkC0++;
+ sub_80976F8(0xC);
+}
+
+s16 sub_80978B8(void)
+{
+ return gUnknown_203B494->UNKC0.unkC0_16;
+}
diff --git a/src/code_8098BDC.c b/src/code_8098BDC.c
index f4a745f..c060642 100644
--- a/src/code_8098BDC.c
+++ b/src/code_8098BDC.c
@@ -257,13 +257,13 @@ bool8 sub_8098E18(s16 r0, u32 r1)
}
// Unused
-u32 sub_8098EB0(u32 r0, u32 r1, u32 r2, u32 r3)
+u32 sub_8098EB0(u32 r0)
{
if(gUnknown_20398A8 == 0)
{
if(gUnknown_203B49D != 0)
{
- Log(NULL, &gUnknown_8115FA4, r0, r3);
+ Log(NULL, &gUnknown_8115FA4, r0);
gUnknown_20398A8 = 7;
gUnknown_20398AC = 1;
gUnknown_20398B0 = r0;
@@ -274,11 +274,11 @@ u32 sub_8098EB0(u32 r0, u32 r1, u32 r2, u32 r3)
return 0;
}
-u32 sub_8098F00(u32 r0, u32 r1, u32 r2, u32 r3)
+u32 sub_8098F00(u32 r0)
{
if(gUnknown_20398A8 == 0)
{
- Log(NULL, &gUnknown_8115FC8, r0, r3);
+ Log(NULL, &gUnknown_8115FC8, r0);
gUnknown_20398A8 = 9;
gUnknown_20398AC = 1;
gUnknown_20398B0 = r0;
@@ -288,11 +288,11 @@ u32 sub_8098F00(u32 r0, u32 r1, u32 r2, u32 r3)
return 0;
}
-u32 sub_8098F44(u32 r0, u32 r1, u32 r2, u32 r3)
+u32 sub_8098F44(u32 r0)
{
if(gUnknown_20398A8 == 0)
{
- Log(NULL, &gUnknown_8115FE8, r0, r3);
+ Log(NULL, &gUnknown_8115FE8, r0);
gUnknown_20398A8 = 10;
gUnknown_20398AC = 1;
gUnknown_20398B0 = r0;
diff --git a/src/debug.c b/src/debug.c
index 0f4cf35..59fdc1a 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -9,14 +9,49 @@ extern void Hang();
extern bool32 gNDS_DebugEnabled;
extern u8 gUnknown_203B150;
-extern const char gUnknown_80D421C[];
-extern const char gNotMountText[];
-extern const char gNotEntryText[];
extern const char gFuncFileLineString[];
-extern const char gFuncFileLineStringWPrefix[];
-extern const char gFuncFileLineString2[];
-extern const char gFatalText[];
-extern const char gUnknown_80D42D4[];
+
+ALIGNED(4) const char gNotEntryText[] = _("--- not entry ---");
+ALIGNED(4) const char gFuncFileLineStringWPrefix[] = _("%sfunc = '%s'\n"
+ "file = '%s' line = %5d\n");
+
+ALIGNED(4) const char gFuncFileLineString2[] = _("func = '%s'\n"
+ "file = '%s' line = %5d\n");
+
+ALIGNED(4) const char debug_fill14[] = _("pksdir0");
+ALIGNED(4) const char gUnknown_80D421C[] = _(" Print ");
+ALIGNED(4) const char debug_fill13[] = _("pksdir0");
+
+ALIGNED(4) const char Performance_Text[] = _("Performance");
+ALIGNED(4) const char MemoryCard_Text[] = _("Memory Card");
+ALIGNED(4) const char Memory_Text[] = _("Memory");
+ALIGNED(4) const char Flag_Text[] = _("Flag");
+ALIGNED(4) const char Se_Text[] = _("Se");
+ALIGNED(4) const char Bgm_Text[] = _("Bgm");
+ALIGNED(4) const char Sound_Text[] = _("Sound");
+ALIGNED(4) const char Dungeon_Text[] = _("Dungeon");
+ALIGNED(4) const char GroundScript_Text[] = _("GroundScript");
+ALIGNED(4) const char Ground_Text[] = _("Ground");
+
+
+ALIGNED(4) const char gNotMountText[] = _("not mount log system");
+ALIGNED(4) const char debug_fill9[] = _("pksdir0");
+ALIGNED(4) const char debug_fill10[] = _("pksdir0");
+ALIGNED(4) const char debug_fill11[] = _("pksdir0");
+ALIGNED(4) const char debug_fill12[] = _("pksdir0");
+
+ALIGNED(4) const char gFatalText[] = _("!!!!! Fatal !!!!!\n");
+ALIGNED(4) const char gUnknown_80D42D4[] = _("%s\n");
+
+ALIGNED(4) const char debug_fill0[] = _("pksdir0");
+ALIGNED(4) const char debug_fill1[] = _("pksdir0");
+ALIGNED(4) const char debug_fill2[] = _("pksdir0");
+ALIGNED(4) const char debug_fill3[] = _("pksdir0");
+ALIGNED(4) const char debug_fill4[] = _("pksdir0");
+ALIGNED(4) const char debug_fill5[] = _("pksdir0");
+ALIGNED(4) const char debug_fill6[] = _("pksdir0");
+ALIGNED(4) const char debug_fill7[] = _("pksdir0");
+ALIGNED(4) const char debug_fill8[] = _("pksdir0");
void NDS_DebugInit(void)
{
diff --git a/src/debug_menu.c b/src/debug_menu.c
index 54f25d9..c0c8b68 100644
--- a/src/debug_menu.c
+++ b/src/debug_menu.c
@@ -6,24 +6,24 @@
extern struct DebugMenu *gUnknown_203B3EC;
-const struct unkData gUnknown_80E7D40 =
+const struct UnkTextStruct2 gUnknown_80E7D40 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
+ 0x00, 0x00,
+ 0x00, 0x00,
+ NULL
};
-const struct unkData gUnknown_80E7D58 =
+const struct UnkTextStruct2 gUnknown_80E7D58 =
{
0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x02, 0x00, 0x02, 0x00,
- 0x09, 0x00, 0x0b, 0x00,
- 0x0b, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
+ 0x09, 0x0b,
+ 0x0b, 0x00,
+ NULL
};
extern const char dungeons_string[];
@@ -55,16 +55,14 @@ ALIGNED(4) const char field_map_string[] = _("Field Map");
ALIGNED(4) const char field_string[] = _("Field");
ALIGNED(4) const char dungeons_string[] = _("Dungeons");
-ALIGNED(4) const char debug_fill0[] = _("pksdir0");
-ALIGNED(4) const char debug_fill1[] = _("pksdir0");
-ALIGNED(4) const char debug_fill2[] = _("pksdir0");
-ALIGNED(4) const char debug_fill3[] = _("pksdir0");
-ALIGNED(4) const char debug_fill4[] = _("pksdir0");
-ALIGNED(4) const char debug_fill5[] = _("pksdir0");
-ALIGNED(4) const char debug_fill6[] = _("pksdir0");
-
+ALIGNED(4) const char debug_menu_fill0[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill1[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill2[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill3[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill4[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill5[] = _("pksdir0");
+ALIGNED(4) const char debug_menu_fill6[] = _("pksdir0");
-extern void sub_800641C(struct unkData *, u32, u32);
extern void ResetUnusedInputStruct(void);
extern u8 sub_8012FD8(struct DebugMenu *);
@@ -73,9 +71,9 @@ extern void sub_80976F8(u8);
extern void sub_803A3BC(void);
extern void sub_803A3A0(void);
-extern void SetMenuItems(void *menu, struct unkData *, u32, const struct unkData *, const struct MenuItem *entries, u32, u32, u32);
+extern void SetMenuItems(void *menu, struct UnkTextStruct2 *, u32, const struct UnkTextStruct2 *, const struct MenuItem *entries, u32, u32, u32);
extern void sub_8035CF4(struct DebugMenu *, u32, u32);
-extern void sub_8035CC0(struct unkData *, u32);
+extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
void CreateDebugMenu(void)
{
diff --git a/src/debug_menu_1.c b/src/debug_menu_1.c
index 705a23f..0104c07 100644
--- a/src/debug_menu_1.c
+++ b/src/debug_menu_1.c
@@ -1,17 +1,12 @@
#include "global.h"
-
-struct subStruct
-{
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 unk3;
-};
+#include "pokemon.h"
struct unkStruct_203B3F8
{
- u8 fill0[8];
- struct subStruct *unk8;
+ // size: 0x140
+ u32 state;
+ u32 unk4;
+ struct PokemonStruct *pokemon;
u8 fill4[4];
u32 unk10;
u8 fill14[0x60 - 0x14];
@@ -61,7 +56,7 @@ void sub_803AFE8(void)
default:
break;
case 3:
- gUnknown_203B3F8->unk8->unk3 = gUnknown_203B3F8->unk60;
+ gUnknown_203B3F8->pokemon->unk3 = gUnknown_203B3F8->unk60;
// Fallthrough is needed to match
case 2:
sub_803ACD0(2);
diff --git a/src/debug_menu_2.c b/src/debug_menu_2.c
new file mode 100644
index 0000000..158f540
--- /dev/null
+++ b/src/debug_menu_2.c
@@ -0,0 +1,186 @@
+#include "global.h"
+#include "memory.h"
+#include "pokemon.h"
+#include "text.h"
+#include "input.h"
+#include "menu.h"
+
+struct unkStruct_203B3F8
+{
+ // size: 0x140
+ u32 state;
+ u32 unk4;
+ struct PokemonStruct *pokemon;
+ u32 unkC;
+ const char *unk10;
+ u8 fill14[0x60 - 0x14];
+ u32 unk60;
+ u32 unk64;
+ u32 unk68;
+ u32 unk6C;
+ u32 unk70;
+ u32 unk74;
+ struct UnkTextStruct2 *unk78;
+ u32 unk7C;
+ u32 unk80;
+ u8 fill84[0x90 - 0x84];
+ struct MenuItem unk90[3];
+ u8 fillA8[0xD0 - 0xA8];
+ u16 unkD0[8];
+ struct UnkTextStruct2 unkE0[4];
+};
+extern struct unkStruct_203B3F8 *gUnknown_203B3F8;
+extern struct UnkTextStruct2 gUnknown_80E7ED4;
+extern struct UnkTextStruct2 gUnknown_80E7EEC;
+extern struct UnkTextStruct2 gUnknown_80E7F04;
+extern u8 gDebug_NumberText2[];
+
+extern void sub_8008C54(u32);
+extern void sub_80073B8(u32);
+extern void sub_8013C68(u32 *);
+extern void sub_80073E0(u32);
+extern void sub_8023DA4(void);
+extern void sub_8012EA4(const char **, u32);
+extern void xxx_call_draw_string(u32, u32, u8 *, u32, u32);
+
+void sub_803ACD0(u32);
+extern void sub_803ACE8();
+extern void sub_803AD88();
+extern void sub_803AF38();
+extern void sub_803AF88();
+extern void sub_803AFE8();
+extern void sub_803B034();
+extern void sub_8023868(u32, u32, u32, u32);
+extern void sub_8023B7C(u32);
+extern void sub_8023DA4();
+extern void sub_8013AA0(u32 *);
+extern void sub_803AE58();
+extern void sub_801602C(u32, u8 *);
+
+extern void sub_803AEB0();
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void sub_8012D60(const char **, struct MenuItem *, u32, u16 *, u32, u32);
+
+u32 sub_803AC24(void)
+{
+ gUnknown_203B3F8 = MemoryAlloc(sizeof(struct unkStruct_203B3F8), 8);
+ sub_803ACD0(0);
+ return 1;
+}
+
+u32 sub_803AC48(void)
+{
+ switch(gUnknown_203B3F8->state)
+ {
+ case 0:
+ sub_803ACD0(1);
+ break;
+ case 1:
+ case 2:
+ sub_803AF38();
+ break;
+ case 3:
+ sub_803AF88();
+ break;
+ case 5:
+ sub_803AFE8();
+ break;
+ case 6:
+ sub_803B034();
+ break;
+ case 4:
+ case 7:
+ default:
+ return 3;
+ }
+ return 0;
+}
+
+void sub_803ACB4(void)
+{
+ if(gUnknown_203B3F8 != NULL)
+ {
+ MemoryFree(gUnknown_203B3F8);
+ gUnknown_203B3F8 = NULL;
+ }
+}
+
+void sub_803ACD0(u32 newState)
+{
+ gUnknown_203B3F8->state = newState;
+ sub_803ACE8();
+ sub_803AD88();
+}
+
+void sub_803ACE8(void)
+{
+ s32 iVar2;
+ sub_8006518(gUnknown_203B3F8->unkE0);
+ switch(gUnknown_203B3F8->state)
+ {
+ case 3:
+ sub_803AEB0();
+ gUnknown_203B3F8->unkE0[2] = gUnknown_80E7EEC;
+ sub_8012CAC(&gUnknown_203B3F8->unkE0[2], gUnknown_203B3F8->unk90);
+ break;
+ case 5:
+ gUnknown_203B3F8->unkE0[3] = gUnknown_80E7F04;
+ break;
+ default:
+ for(iVar2 = 0; iVar2 < 4; iVar2++)
+ {
+ gUnknown_203B3F8->unkE0[iVar2] = gUnknown_80E7ED4;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B3F8->unkE0, 1, 1);
+}
+
+void sub_803AD88(void)
+{
+ switch(gUnknown_203B3F8->state)
+ {
+ case 1:
+ sub_8023868(1, 0, 0, 10);
+ break;
+ case 2:
+ sub_8023B7C(1);
+ break;
+ case 3:
+ sub_8023DA4();
+ sub_8012D60(&gUnknown_203B3F8->unk10, gUnknown_203B3F8->unk90, 0, gUnknown_203B3F8->unkD0, gUnknown_203B3F8->unkC, 2);
+ break;
+ case 5:
+ gUnknown_203B3F8->unk70 = 3;
+ gUnknown_203B3F8->unk68 = 1;
+ gUnknown_203B3F8->unk6C = 0x64;
+ gUnknown_203B3F8->unk64 = gUnknown_203B3F8->pokemon->unk3;
+ gUnknown_203B3F8->unk74 = 3;
+ gUnknown_203B3F8->unk78 = &gUnknown_203B3F8->unkE0[3];
+ gUnknown_203B3F8->unk7C = 0x2C;
+ gUnknown_203B3F8->unk80 = 0x12;
+ sub_8013AA0(&gUnknown_203B3F8->unk60);
+ sub_803AE58();
+ break;
+ case 6:
+ sub_801602C(2, gUnknown_203B3F8->pokemon->name);
+ case 0:
+ case 4:
+ case 7:
+ default:
+ break;
+
+ }
+}
+
+void sub_803AE58(void)
+{
+ sub_8008C54(gUnknown_203B3F8->unk74);
+ sub_80073B8(gUnknown_203B3F8->unk74);
+ xxx_call_draw_string(4, 0, gDebug_NumberText2, gUnknown_203B3F8->unk74, 0);
+ sub_8013C68(&gUnknown_203B3F8->unk60);
+ sub_80073E0(gUnknown_203B3F8->unk74);
+ sub_8023DA4();
+ sub_8012EA4(&gUnknown_203B3F8->unk10, 0);
+}
diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c
index 796ac2a..995a30a 100644
--- a/src/debug_menu_mid.c
+++ b/src/debug_menu_mid.c
@@ -2,26 +2,17 @@
#include "input.h"
#include "gUnknown_203B460.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[24];
-};
-
+#include "menu.h"
+#include "text.h"
struct unkStruct_203B3F0
{
// size: 0x138
- u32 unk0;
- u8 unk4;
+ u32 state;
+ u8 itemIndex;
u8 fill5[0x8 - 5];
u32 unk8;
- u32 *unkC;
- u32 unk10;
- u32 unk14;
- u32 unk18;
- u32 unk1C;
- u32 unk20;
+ struct MenuItem menus[3];
u8 fill24[0x4C - 0x24];
u32 unk4C;
u8 fill50[0x9C - 0x50];
@@ -31,11 +22,11 @@ struct unkStruct_203B3F0
u32 unkA8;
u32 unkAC;
u32 unkB0;
- struct unkData *unkB4;
+ struct UnkTextStruct2 *unkB4;
u32 unkB8;
u32 unkBC;
u8 fill4[0xD8 - 0xC0];
- struct unkData unkD8[4];
+ struct UnkTextStruct2 unkD8[4];
};
extern struct unkStruct_203B3F0 *gUnknown_203B3F0;
@@ -43,20 +34,15 @@ extern struct unkStruct_203B3F0 *gUnknown_203B3F0;
struct unkStruct_203B3F4
{
// size: 0xFC
- u32 unk0;
+ u32 state;
u8 unk4;
u8 fill5[0x8 - 5];
u32 unk8;
- u32 *unkC;
- u32 unk10;
- u32 unk14;
- u32 unk18;
- u32 unk1C;
- u32 unk20;
+ struct MenuItem menus[3];
u8 fill24[0x4C - 0x24];
u32 unk4C;
u8 fill50[0x9C - 0x50];
- struct unkData unk9C[4];
+ struct UnkTextStruct2 unk9C[4];
};
extern struct unkStruct_203B3F4 *gUnknown_203B3F4;
@@ -67,29 +53,27 @@ extern void sub_801B3C0(u8 *);
extern void sub_8090A8C(u8 *, u8, u32);
extern void sub_8013AA0(u32 *);
-extern struct unkData gUnknown_80E7E4C;
-extern struct unkData gUnknown_80E7E34;
-extern struct unkData gUnknown_80E7E64;
-extern struct unkData gUnknown_80E7EA4;
-extern struct unkData gUnknown_80E7E8C;
+extern struct UnkTextStruct2 gUnknown_80E7E34;
+extern struct UnkTextStruct2 gUnknown_80E7E4C;
+extern struct UnkTextStruct2 gUnknown_80E7E64;
+extern const char gDebug_NumberText;
+extern struct UnkTextStruct2 gUnknown_80E7E8C;
+extern struct UnkTextStruct2 gUnknown_80E7EA4;
-extern u32 gDebug_NumberText;
-extern u32 gUnknown_80D4970;
+extern const char *gUnknown_80D4970[];
-extern void sub_800641C(void *, u32, u32);
-extern void sub_8006518(void *);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_801CB5C(u32);
extern void sub_801CCD8();
-extern void sub_8012D60(u32 *, u32 **, u32, u32, u32, u32);
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8012EA4(u32 *, u32);
extern void sub_80073E0(u32);
extern void sub_8013C68(u32 *);
-extern void xxx_call_draw_string(s32, u32, u32 *, u32, u32);
-extern u8 sub_8091524(u8);
+extern void xxx_call_draw_string(s32, u32, const char *, u32, u32);
+extern bool8 sub_8091524(u8);
extern u32 sub_801CA08(u32);
extern u8 sub_801CB24();
extern void sub_801CBB8();
@@ -135,7 +119,7 @@ u32 sub_803A45C(void)
u32 sub_803A48C(void)
{
- switch(gUnknown_203B3F0->unk0) {
+ switch(gUnknown_203B3F0->state) {
case 0:
case 1:
sub_803A740();
@@ -166,7 +150,7 @@ void sub_803A4E8(void)
void sub_803A504(u32 newState)
{
- gUnknown_203B3F0->unk0 = newState;
+ gUnknown_203B3F0->state = newState;
sub_803A51C();
sub_803A5A0();
}
@@ -176,7 +160,7 @@ void sub_803A51C(void)
s32 iVar4;
sub_8006518(gUnknown_203B3F0->unkD8);
- switch(gUnknown_203B3F0->unk0)
+ switch(gUnknown_203B3F0->state)
{
case 3:
gUnknown_203B3F0->unkD8[1] = gUnknown_80E7E64;
@@ -199,7 +183,7 @@ void sub_803A5A0(void)
{
u8 auStack8 [4];
- switch(gUnknown_203B3F0->unk0) {
+ switch(gUnknown_203B3F0->state) {
case 0:
sub_801C8C4(2,3,0,10);
break;
@@ -209,13 +193,13 @@ void sub_803A5A0(void)
case 2:
sub_801CCD8();
sub_803A6F0();
- sub_8012D60(&gUnknown_203B3F0->unk4C, &gUnknown_203B3F0->unkC, 0, 0, gUnknown_203B3F0->unk8, 2);
+ sub_8012D60(&gUnknown_203B3F0->unk4C, gUnknown_203B3F0->menus, 0, 0, gUnknown_203B3F0->unk8, 2);
break;
case 3:
gUnknown_203B3F0->unkAC = 3;
gUnknown_203B3F0->unkA4 = 0;
gUnknown_203B3F0->unkA8 = 0x3e7;
- gUnknown_203B3F0->unkA0 = gUnknown_203B460->unk50[gUnknown_203B3F0->unk4];
+ gUnknown_203B3F0->unkA0 = gUnknown_203B460->unk50[gUnknown_203B3F0->itemIndex];
gUnknown_203B3F0->unkB0 = 1;
gUnknown_203B3F0->unkB4 = &gUnknown_203B3F0->unkD8[1];
gUnknown_203B3F0->unkB8 = 0x2C;
@@ -224,7 +208,7 @@ void sub_803A5A0(void)
sub_803A690();
break;
case 4:
- sub_8090A8C(auStack8,gUnknown_203B3F0->unk4,0);
+ sub_8090A8C(auStack8,gUnknown_203B3F0->itemIndex,0);
sub_801B3C0(auStack8);
break;
case 5:
@@ -248,20 +232,20 @@ void sub_803A6F0(void)
s32 temp1;
struct unkStruct_203B3F0 *preload;
- gUnknown_203B3F0->unkC = &gDebug_NumberText;
- gUnknown_203B3F0->unk10 = 2;
+ gUnknown_203B3F0->menus[0].text = &gDebug_NumberText;
+ gUnknown_203B3F0->menus[0].menuAction = 2;
gUnknown_203B3F0->unk8 = 2;
- if (sub_8091524(gUnknown_203B3F0->unk4) == 0) {
- gUnknown_203B3F0->unk10 = -1;
+ if (!sub_8091524(gUnknown_203B3F0->itemIndex)) {
+ gUnknown_203B3F0->menus[0].menuAction = -1;
gUnknown_203B3F0->unk8 = 3;
}
preload = gUnknown_203B3F0;
// this var gets loaded in between the sets... very dumb
temp1 = 1;
- preload->unk14 = gUnknown_80D4970;
- preload->unk18 = 3;
- preload->unk1C = 0;
- preload->unk20 = temp1;
+ preload->menus[1].text = *gUnknown_80D4970;
+ preload->menus[1].menuAction = 3;
+ preload->menus[2].text = NULL;
+ preload->menus[2].menuAction = temp1;
}
void sub_803A740(void)
@@ -271,11 +255,11 @@ void sub_803A740(void)
case 1:
break;
case 3:
- gUnknown_203B3F0->unk4 = sub_801CB24();
+ gUnknown_203B3F0->itemIndex = sub_801CB24();
sub_803A504(2);
break;
case 4:
- gUnknown_203B3F0->unk4 = sub_801CB24();
+ gUnknown_203B3F0->itemIndex = sub_801CB24();
sub_803A504(4);
break;
case 2:
@@ -316,7 +300,7 @@ void sub_803A810(void)
switch(sub_8013BBC(&gUnknown_203B3F0->unk9C))
{
case 3:
- gUnknown_203B460->unk50[gUnknown_203B3F0->unk4] = gUnknown_203B3F0->unk9C;
+ gUnknown_203B460->unk50[gUnknown_203B3F0->itemIndex] = gUnknown_203B3F0->unk9C;
// Fallthrough needed to match
case 2:
sub_803A504(1);
@@ -355,7 +339,7 @@ u32 sub_803A888(void)
u32 sub_803A8B8(void)
{
- switch(gUnknown_203B3F4->unk0) {
+ switch(gUnknown_203B3F4->state) {
case 0:
case 1:
sub_803AAC4();
@@ -383,7 +367,7 @@ void sub_803A908(void)
void sub_803A924(u32 newState)
{
- gUnknown_203B3F4->unk0 = newState;
+ gUnknown_203B3F4->state = newState;
sub_803A93C();
sub_803A9AC();
}
@@ -392,7 +376,7 @@ void sub_803A93C(void)
{
s32 iVar4;
sub_8006518(gUnknown_203B3F4->unk9C);
- if(gUnknown_203B3F4->unk0 == 2)
+ if(gUnknown_203B3F4->state == 2)
{
gUnknown_203B3F4->unk9C[2] = gUnknown_80E7EA4;
}
@@ -409,7 +393,7 @@ void sub_803A93C(void)
void sub_803A9AC(void)
{
- switch(gUnknown_203B3F4->unk0) {
+ switch(gUnknown_203B3F4->state) {
case 0:
sub_80211AC(0,3);
break;
@@ -419,7 +403,7 @@ void sub_803A9AC(void)
case 2:
sub_8021494();
sub_803AA34();
- sub_8012D60(&gUnknown_203B3F4->unk4C,&gUnknown_203B3F4->unkC,0,0,gUnknown_203B3F4->unk8,2);
+ sub_8012D60(&gUnknown_203B3F4->unk4C,gUnknown_203B3F4->menus,0,0,gUnknown_203B3F4->unk8,2);
break;
case 3:
sub_8021774(gUnknown_203B3F4->unk4,1,0);
diff --git a/src/ds_menus.c b/src/ds_menus.c
index 47cece9..29100b6 100644
--- a/src/ds_menus.c
+++ b/src/ds_menus.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "input.h"
+#include "text.h"
extern u8 *gUnknown_203B3E8;
-extern void sub_800641C(void *, u32, u32);
extern void nullsub_54();
extern void sub_8039E18();
diff --git a/src/exclusive_pokemon.c b/src/exclusive_pokemon.c
index cbcdf0c..903b189 100644
--- a/src/exclusive_pokemon.c
+++ b/src/exclusive_pokemon.c
@@ -28,7 +28,7 @@ const u8 filler_ex1[8] =
};
extern struct ExclusivePokemonData *gUnknown_203B498;
-extern struct ExclusivePokemonData gExclusivePokemonInfo;
+EWRAM_DATA struct ExclusivePokemonData gExclusivePokemonInfo;
void LoadExclusivePokemon(void)
diff --git a/src/felicity_bank.c b/src/felicity_bank.c
index 8a2aae8..28550dd 100644
--- a/src/felicity_bank.c
+++ b/src/felicity_bank.c
@@ -10,12 +10,10 @@ extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];
extern struct unkStruct_203B204 *gUnknown_203B204;
-extern struct unkData gUnknown_80DB6DC;
-extern struct unkData gUnknown_80DB6F4;
-extern struct unkData gUnknown_80DB70C;
+extern struct UnkTextStruct2 gUnknown_80DB6DC;
+extern struct UnkTextStruct2 gUnknown_80DB6F4;
+extern struct UnkTextStruct2 gUnknown_80DB70C;
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void sub_8006518(struct unkData *);
extern void sub_8016B24();
extern void sub_80169BC();
extern void Felicity_DepositMoney();
@@ -115,17 +113,17 @@ void sub_801645C(void)
switch(gUnknown_203B204->currState)
{
case 2:
- gUnknown_203B204->unkA8[0].unk0[0] = 0x80;
- gUnknown_203B204->unkA8[1].unk0[0] = 0x80;
- gUnknown_203B204->unkA8[2].unk0[0] = 0x80;
+ gUnknown_203B204->unkA8[0].fill00[0] = 0x80;
+ gUnknown_203B204->unkA8[1].fill00[0] = 0x80;
+ gUnknown_203B204->unkA8[2].fill00[0] = 0x80;
gUnknown_203B204->unkA8[3] = gUnknown_80DB6F4;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B204->unkA8, 1, 0);
break;
case 8:
case 11:
- gUnknown_203B204->unkA8[0].unk0[0] = 0x80;
- gUnknown_203B204->unkA8[1].unk0[0] = 0x80;
+ gUnknown_203B204->unkA8[0].fill00[0] = 0x80;
+ gUnknown_203B204->unkA8[1].fill00[0] = 0x80;
gUnknown_203B204->unkA8[3] = gUnknown_80DB6F4;
gUnknown_203B204->unkA8[2] = gUnknown_80DB70C;
ResetUnusedInputStruct();
diff --git a/src/friend_area.c b/src/friend_area.c
index a6fd1d5..329670e 100644
--- a/src/friend_area.c
+++ b/src/friend_area.c
@@ -3,7 +3,7 @@
#include "friend_area.h"
#include "pokemon.h"
-extern bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
+EWRAM_DATA bool8 gBoughtFriendAreas[NUM_FRIEND_AREAS];
extern bool8 *gFriendAreas;
@@ -16,7 +16,7 @@ extern const char *gFriendAreaNames[];
extern const char gUnknown_81098A4;
extern const char gUnknown_81098AC;
-extern void sub_800D158(u8 *buffer, const char *r2, ...);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
extern void sub_8090FEC(u32, u32 *r1, u32);
const struct FriendAreaSettings gFriendAreaSettings[NUM_FRIEND_AREAS] =
@@ -601,7 +601,7 @@ u32 GetFriendAreaPrice(u8 index)
void sub_8092558(u8 *buffer, u8 index)
{
// colors the friend area name green and prints to buffer?
- sub_800D158(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
+ ExpandPlaceholdersBuffer(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
}
void sub_8092578(u8 *buffer, u8 index, u8 r2)
@@ -611,7 +611,7 @@ void sub_8092578(u8 *buffer, u8 index, u8 r2)
if(r2)
{
sub_8090FEC(gFriendAreaSettings[index].price, (&temp[0]), 1);
- sub_800D158(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, temp);
+ ExpandPlaceholdersBuffer(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, temp);
}
else
{
diff --git a/src/friend_area_1.c b/src/friend_area_1.c
index c3dd57f..bd089c0 100644
--- a/src/friend_area_1.c
+++ b/src/friend_area_1.c
@@ -26,7 +26,7 @@ u32 SaveFriendAreas(u8 *r0, u32 r1)
return temp[2];
}
-u32 ReadSavedFriendAreas(u8 *r0, u32 r1)
+u32 ReadSavedFriendAreas(u8 *r0, s32 r1)
{
u32 temp[5];
s32 counter;
diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c
new file mode 100644
index 0000000..04896d2
--- /dev/null
+++ b/src/friend_area_action_menu.c
@@ -0,0 +1,246 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "input.h"
+#include "menu.h"
+#include "friend_area_action_menu.h"
+
+extern struct unkStruct_203B2BC *gUnknown_203B2BC;
+extern struct UnkTextStruct2 gUnknown_80DD74C;
+extern struct UnkTextStruct2 gUnknown_80DD704;
+extern struct UnkTextStruct2 gUnknown_80DD6EC;
+extern struct UnkTextStruct2 gUnknown_80DD71C;
+extern const char gUnknown_80DD764[];
+extern const char gUnknown_80DD7FC[];
+extern const char gUnknown_80DD8A0[];
+extern const char gUnknown_80DD8D0[];
+
+extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
+extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32);
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32 *, u32, u32);
+extern void sub_8027D40(u32, u8 *);
+extern void sub_8023868(u32, u32, u32, u32);
+extern void sub_8023B7C(u32);
+extern void sub_8023DA4();
+extern void sub_8024458(s16, u32);
+extern void sub_801BEEC(s16);
+extern void sub_8093560(u32, u32 *, u32 *);
+extern void sub_801F808(u32 *);
+extern void sub_8027794();
+extern void sub_801A5D8(u32, u32, u32, u32);
+extern void sub_801A8D0(u32);
+extern void sub_801A9E0();
+extern void sub_801F1B0(u32, u32);
+extern void sub_8090B64(u8 *, u8 *);
+extern void sub_801B3C0(u8 *);
+extern void sub_809401C(u32 *, u32 *);
+extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32);
+
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void sub_8027184(u32);
+extern void ResetSprites(u8 );
+extern void sub_802719C();
+extern void sub_8027274();
+extern void sub_80277FC();
+extern void sub_80278B4();
+extern void sub_8027A40();
+extern void sub_8027A5C();
+extern void sub_8027D1C();
+extern void sub_8027A78();
+extern void sub_8027AE4();
+extern void sub_8027B28();
+extern void sub_8027BD8();
+extern void sub_8027C84();
+extern void sub_8027CA0();
+extern void sub_8027D00();
+extern void CreateFriendActionMenu();
+extern void sub_80276A8();
+
+
+u32 sub_8027074(void)
+{
+ ResetSprites(0);
+ gUnknown_203B2BC = MemoryAlloc(sizeof(struct unkStruct_203B2BC), 8);
+ gUnknown_203B2BC->unk70 = 0;
+ gUnknown_203B2BC->unk74 = 0;
+ gUnknown_203B2BC->unk78 = 0;
+ sub_8027184(0);
+ return 1;
+}
+
+u32 sub_80270A4(void)
+{
+ switch(gUnknown_203B2BC->state) {
+ case 0:
+ sub_8027184(1);
+ break;
+ case 1:
+ case 2:
+ sub_80277FC();
+ break;
+ case 3:
+ sub_80278B4();
+ break;
+ case 4:
+ sub_8027A40();
+ break;
+ case 5:
+ sub_8027A5C();
+ break;
+ case 8:
+ sub_8027A78();
+ break;
+ case 9:
+ sub_8027AE4();
+ break;
+ case 10:
+ case 0xb:
+ sub_8027B28();
+ break;
+ case 0xc:
+ sub_8027BD8();
+ break;
+ case 0xd:
+ sub_8027C84();
+ break;
+ case 0xe:
+ case 0xf:
+ sub_8027CA0();
+ break;
+ case 0x10:
+ sub_8027D00();
+ break;
+ default:
+ sub_8027D1C();
+ break;
+ case 0x11:
+ return 3;
+ }
+ return 0;
+}
+
+void sub_8027168(void)
+{
+ if(gUnknown_203B2BC != NULL)
+ {
+ MemoryFree(gUnknown_203B2BC);
+ gUnknown_203B2BC = NULL;
+ }
+}
+
+void sub_8027184(u32 newState)
+{
+ gUnknown_203B2BC->state = newState;
+ sub_802719C();
+ sub_8027274();
+}
+
+void sub_802719C(void)
+{
+ s32 iVar3;
+
+ sub_8006518(gUnknown_203B2BC->unk180);
+ switch(gUnknown_203B2BC->state)
+ {
+ case 3:
+ gUnknown_203B2BC->unk180[3] = gUnknown_80DD74C;
+ CreateFriendActionMenu();
+ gUnknown_203B2BC->unk180[2] = gUnknown_80DD704;
+ sub_8012CAC(&gUnknown_203B2BC->unk180[2], gUnknown_203B2BC->menuItems);
+ break;
+ case 0xC:
+ sub_80276A8();
+ gUnknown_203B2BC->unk180[2] = gUnknown_80DD71C;
+ sub_8012CAC(&gUnknown_203B2BC->unk180[2], gUnknown_203B2BC->menuItems);
+ break;
+ default:
+ for(iVar3 = 0; iVar3 < 4; iVar3++)
+ {
+ gUnknown_203B2BC->unk180[iVar3] = gUnknown_80DD6EC;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B2BC->unk180, 1, 1);
+}
+
+void sub_8027274(void)
+{
+ u8 auStack12 [4];
+
+ switch(gUnknown_203B2BC->state) {
+ case 0:
+ case 0x11:
+ break;
+ case 1:
+ sub_8023868(1,0,0,7);
+ break;
+ case 2:
+ sub_8023B7C(1);
+ break;
+ case 3:
+ sub_8027D40(3,&gUnknown_203B2BC->unk14);
+ sub_8023DA4();
+ sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk70,2);
+ break;
+ case 4:
+ sub_8024458(gUnknown_203B2BC->unk8,2);
+ break;
+ case 5:
+ sub_801BEEC(gUnknown_203B2BC->unk8);
+ break;
+ case 10:
+ sub_801A5D8(1,0,0,10);
+ break;
+ case 0xb:
+ sub_801A8D0(1);
+ break;
+ case 0xc:
+ sub_801A9E0();
+ sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk74,2);
+ break;
+ case 0xd:
+ sub_8090B64(auStack12,&gUnknown_203B2BC->unk10);
+ sub_801B3C0(auStack12);
+ break;
+ case 0xe:
+ sub_809401C(&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk18->unk2C);
+ sub_801EE10(3,gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk28,0,0,0);
+ break;
+ case 0xf:
+ sub_801F1B0(1,0);
+ break;
+ case 8:
+ sub_8027794();
+ // You have chosen to say farewell to this Pokemon.
+ // The pokemon will leave its friend area.
+ // It will no longer be available for adventures.
+ // Is that OK?
+ sub_8014248(gUnknown_80DD764,0,3,gUnknown_203B2BC->menuItems,0,4,0,0,0x101);
+ break;
+ case 9:
+ sub_8027794();
+ // If you say farewell to this Pokemon, it will be gone forever.
+ // You will never be able to get another one
+ // like it to join your team.
+ // Will you release it anyway?
+ sub_8014248(gUnknown_80DD7FC,0,3,gUnknown_203B2BC->menuItems,0,4,0,0,0x101);
+ break;
+ case 0x10:
+ sub_8093560(gUnknown_203B2BC->unk20,&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk68);
+ sub_801F808(&gUnknown_203B2BC->unk68);
+ break;
+ case 6:
+ gUnknown_203B2BC->unk4 = 2;
+ // The #C4$i0#R was
+ // returned to the Toolbox
+ sub_80141B4(gUnknown_80DD8A0,0,0,0x101);
+ break;
+ case 7:
+ gUnknown_203B2BC->unk4 = 2;
+ // The #C4$i0#R was
+ // returned to storage
+ sub_80141B4(gUnknown_80DD8D0,0,0,0x101);
+ break;
+ }
+}
diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c
new file mode 100644
index 0000000..a6a84ba
--- /dev/null
+++ b/src/friend_area_action_menu_1.c
@@ -0,0 +1,122 @@
+#include "global.h"
+#include "text.h"
+#include "input.h"
+#include "menu.h"
+#include "gUnknown_203B460.h"
+#include "friend_area_action_menu.h"
+
+extern struct unkStruct_203B2BC *gUnknown_203B2BC;
+extern struct unkStruct_203B460 *gUnknown_203B460;
+
+u32 sub_801B410();
+void sub_801B450();
+u32 sub_801EF38(u8 r0);
+void sub_801F214();
+
+extern void sub_8027184(u32);
+extern u8 sub_8012FD8(u32 *r0);
+extern void sub_8013114(u32 *, s32 *);
+extern void PlaySound(u32);
+extern void sub_80911F8(u32);
+extern void sub_80910B4();
+extern void nullsub_104();
+extern void sub_8091274(u8 *);
+extern void sub_801A928();
+extern void sub_8099690(u32);
+extern void sub_808D800(s16, u8 *);
+extern u32 sub_801A8AC();
+extern u32 sub_801A6E8(u32);
+
+extern s32 sub_80144A4(s32 *);
+extern void sub_8027EB8();
+extern void sub_808D31C(struct unkSubStruct_203B2BC *);
+
+void sub_8027AE4(void)
+{
+ s32 local_8;
+
+ if (sub_80144A4(&local_8) == 0) {
+ switch(local_8)
+ {
+ case 1:
+ case 3:
+ sub_8027184(2);
+ break;
+ case 2:
+ sub_8027EB8();
+ sub_808D31C(gUnknown_203B2BC->unk18);
+ break;
+ }
+ }
+}
+
+void sub_8027B28(void)
+{
+ switch(sub_801A6E8(1))
+ {
+ case 3:
+ gUnknown_203B2BC->unkC = sub_801A8AC();
+ gUnknown_203B2BC->unk10 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex;
+ gUnknown_203B2BC->unk11 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems;
+ sub_8027184(0xc);
+ break;
+ case 4:
+ gUnknown_203B2BC->unkC = sub_801A8AC();
+ gUnknown_203B2BC->unk10 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex;
+ gUnknown_203B2BC->unk11 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems;
+ sub_8099690(0);
+ sub_8027184(0xd);
+ break;
+ case 2:
+ sub_801A928();
+ sub_8027184(2);
+ break;
+ case 0:
+ case 1:
+ break;
+ }
+}
+
+void sub_8027BD8(void)
+{
+ s32 menuAction;
+
+ menuAction = 0;
+ sub_801A6E8(0);
+ if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) {
+ gUnknown_203B2BC->unk74 = menuAction;
+ }
+ switch(menuAction)
+ {
+ case 10:
+ PlaySound(0x14d);
+ sub_80911F8(gUnknown_203B2BC->unkC);
+ sub_80910B4();
+ if (gUnknown_203B2BC->unk14 != 0) {
+ sub_8091274(&gUnknown_203B2BC->unk14);
+ }
+ sub_808D800(gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk10);
+ sub_801A928();
+ nullsub_104();
+ sub_8027184(2);
+ break;
+ case 4:
+ sub_8099690(0);
+ sub_8027184(0xd);
+ break;
+ case 1:
+ sub_8027184(0xb);
+ break;
+ }
+}
+
+void sub_8027C84()
+{
+ u32 temp = sub_801B410();
+ if(temp <= 1)
+ return;
+ if(temp > 3)
+ return;
+ sub_801B450();
+ sub_8027184(0xB);
+}
diff --git a/src/friend_rescue.c b/src/friend_rescue.c
index bbff322..ef1d729 100644
--- a/src/friend_rescue.c
+++ b/src/friend_rescue.c
@@ -3,6 +3,7 @@
#include "pokemon.h"
#include "constants/species.h"
#include "memory.h"
+#include "text.h"
extern void sub_80338C4(u32);
extern s32 sub_80144A4(s32 *);
@@ -18,7 +19,6 @@ extern struct WonderMailStruct_203B33C *gUnknown_203B33C;
extern u8 sub_8039880(void);
void ResetUnusedInputStruct(void);
-void sub_800641C(void *, u32, u32);
extern void sub_8035300(void);
extern void sub_8035404(u32);
diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c
new file mode 100644
index 0000000..810a191
--- /dev/null
+++ b/src/gulpin_shop.c
@@ -0,0 +1,158 @@
+#include "global.h"
+#include "file_system.h"
+#include "pokemon.h"
+#include "memory.h"
+#include "constants/species.h"
+#include "text.h"
+#include "input.h"
+
+struct unkStruct_Gulpin
+{
+ u8 fill0[0x22];
+ u16 unk22;
+};
+
+struct unkStruct_203B26C
+{
+// size: 0x18C
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ s16 unkC;
+ u8 unkE;
+ struct unkStruct_Gulpin * unk10;
+ u8 fill14[0x1C - 0x14];
+ u16 unk1C;
+ u8 fill20[0x28 - 0x20];
+ u32 unk28;
+ u8 fill2C[0x118 - 0x2C];
+ /* 0x118 */ struct OpenedFile *faceFile;
+ /* 0x11C */ u8 *faceData;
+ /* 0x120 */ u16 unk120;
+ u16 unk122;
+ u8 unk124;
+ u8 unk125;
+ u8 unk126;
+ u8 unk127;
+ struct OpenedFile **unk128;
+ struct UnkTextStruct2 unk12C[4];
+};
+extern struct unkStruct_203B26C *gUnknown_203B26C;
+extern const struct UnkTextStruct2 gUnknown_80DC11C;
+extern const struct UnkTextStruct2 gUnknown_80DC134;
+
+extern void UpdateGulpinShopState(u32);
+extern void sub_801ECBC();
+extern void sub_801ED28();
+extern void sub_801EDA4();
+extern void sub_801EDC0();
+extern void sub_801E980();
+extern void sub_801EA28();
+extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *);
+extern void sub_801EBC4();
+
+u32 DisplayGulpinDialogueSprite(s32 param_1,s16 param_2,struct unkStruct_Gulpin *param_3)
+{
+ struct OpenedFile *faceFile;
+ s32 param2_32;
+
+ param2_32 = param_2; // dumb cast needed to get lsr/asr combo
+
+ gUnknown_203B26C = MemoryAlloc(0x18c,8);
+ gUnknown_203B26C->unk0 = param_1;
+ gUnknown_203B26C->unkC = param2_32;
+ gUnknown_203B26C->unk10 = param_3;
+ gUnknown_203B26C->unk1C = param_3->unk22;
+
+ if (param_1 == 0) {
+ gUnknown_203B26C->unk128 = &gUnknown_203B26C->faceFile;
+ }
+ else {
+ gUnknown_203B26C->unk128 = NULL;
+ }
+ faceFile = GetDialogueSpriteDataPtr(SPECIES_GULPIN);
+ gUnknown_203B26C->faceFile = faceFile;
+ gUnknown_203B26C->faceData = faceFile->data;
+
+ gUnknown_203B26C->unk124 = 0;
+ gUnknown_203B26C->unk125 = 0;
+ gUnknown_203B26C->unk126 = 0;
+
+ gUnknown_203B26C->unk120 = 2;
+ gUnknown_203B26C->unk122 = 8;
+ UpdateGulpinShopState(0);
+ return 1;
+}
+
+u32 sub_801E8C0(void)
+{
+ switch(gUnknown_203B26C->unk4)
+ {
+ case 0:
+ case 1:
+ sub_801ECBC();
+ break;
+ case 2:
+ sub_801ED28();
+ break;
+ case 3:
+ sub_801EDA4();
+ break;
+ case 4:
+ sub_801EDC0();
+ if(gUnknown_203B26C->unk4 == 5)
+ return 3;
+ break;
+ case 5:
+ return 3;
+ case 6:
+ return 2;
+ }
+ return 0;
+}
+
+u8 sub_801E930(void)
+{
+ return gUnknown_203B26C->unkE;
+}
+
+void sub_801E93C(void)
+{
+ if(gUnknown_203B26C != NULL)
+ {
+ CloseFile(gUnknown_203B26C->faceFile);
+ MemoryFree(gUnknown_203B26C);
+ gUnknown_203B26C = NULL;
+ }
+}
+
+void UpdateGulpinShopState(u32 newState)
+{
+ gUnknown_203B26C->unk4 = newState;
+ sub_801E980();
+ sub_801EA28();
+}
+
+void sub_801E980(void)
+{
+ s32 iVar2;
+
+ sub_8006518(gUnknown_203B26C->unk12C);
+ switch(gUnknown_203B26C->unk4)
+ {
+ case 2:
+ sub_801EBC4();
+ gUnknown_203B26C->unk12C[1] = gUnknown_80DC11C;
+ gUnknown_203B26C->unk12C[2] = gUnknown_80DC134;
+ sub_8012CAC(&gUnknown_203B26C->unk12C[2], &gUnknown_203B26C->unk28);
+ break;
+ default:
+ for(iVar2 = 0; iVar2 < 4; iVar2++)
+ {
+ gUnknown_203B26C->unk12C[iVar2] = gUnknown_80DC11C;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B26C->unk12C, 1, 1);
+}
diff --git a/src/items.c b/src/items.c
index 238bc06..d6128f5 100644
--- a/src/items.c
+++ b/src/items.c
@@ -8,8 +8,9 @@ extern struct unkStruct_203B460 *gUnknown_203B460;
extern struct unkStruct_203B460 gUnknown_20389A8;
extern struct FileArchive gSystemFileArchive;
extern const char gUnknown_8109764;
-extern struct OpenedFile *gItemParametersFile;
-extern struct Item *gItemParametersData;
+
+EWRAM_DATA struct OpenedFile *gItemParametersFile;
+EWRAM_DATA struct Item *gItemParametersData;
extern void sub_8091840(u8);
extern u8 GetItemType(u8);
@@ -52,10 +53,10 @@ void InitializeMoneyItems(void)
gUnknown_203B460->teamSavings = 0;
}
-u32 sub_8090A34(void)
+s32 sub_8090A34(void)
{
s32 iVar2;
- u32 iVar3;
+ s32 iVar3;
iVar3 = 0;
for(iVar2 = 0; iVar2 < 0x14; iVar2++)
diff --git a/src/kangaskhan_storage.c b/src/kangaskhan_storage.c
index 6d7cdd1..f77d129 100644
--- a/src/kangaskhan_storage.c
+++ b/src/kangaskhan_storage.c
@@ -7,15 +7,13 @@
#include "memory.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
-extern struct unkData gUnknown_80DB748;
-extern struct unkData gUnknown_80DB778;
-extern struct unkData gUnknown_80DB790;
-extern struct unkData gUnknown_80DB760;
+extern struct UnkTextStruct2 gUnknown_80DB748;
+extern struct UnkTextStruct2 gUnknown_80DB778;
+extern struct UnkTextStruct2 gUnknown_80DB790;
+extern struct UnkTextStruct2 gUnknown_80DB760;
extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void sub_8006518(struct unkData *);
void UpdateKangaskhanStorageState(u32);
extern void sub_8017828();
diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c
index ebef475..d9d253c 100644
--- a/src/kangaskhan_storage_2.c
+++ b/src/kangaskhan_storage_2.c
@@ -1,6 +1,11 @@
#include "global.h"
#include "input.h"
#include "memory.h"
+#include "text.h"
+#include "item.h"
+#include "kangaskhan_storage.h"
+
+extern struct unkStruct_203B208 *gUnknown_203B208;
struct unkStruct_203B20C
{
@@ -12,10 +17,6 @@ struct unkStruct_203B20C
};
extern struct unkStruct_203B20C *gUnknown_203B20C;
-extern void sub_800641C(u8 *, u32, u32);
-extern void sub_8017F10(u32);
-
-
extern void sub_8017F10(u32);
extern void sub_8018588(void);
extern void sub_8018620(void);
@@ -29,6 +30,91 @@ extern void sub_8018AE4(void);
extern void sub_8017F28();
extern void sub_8018100();
+extern void UpdateKangaskhanStorageState(u32);
+extern s32 sub_80144A4(s32 *);
+extern void sub_801B450();
+extern u32 sub_801B410(void);
+
+extern u8 sub_8012FD8(u32 *r0);
+extern void sub_8013114(u32 *, s32 *);
+extern void sub_801CBB8();
+extern void sub_801CA08();
+
+void sub_8017D24(void)
+{
+ s32 menuAction;
+ menuAction = 0;
+ sub_801CA08();
+ if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) {
+ sub_8013114(&gUnknown_203B208->unk58, &menuAction);
+ if(menuAction != 1) gUnknown_203B208->unk20 = menuAction;
+ }
+
+ switch(menuAction)
+ {
+ case 3:
+ if (sub_8090A34() > 0x13)
+ {
+ sub_801CBB8();
+ UpdateKangaskhanStorageState(0x6);
+ }
+ else
+ {
+ if(sub_8090A60(gUnknown_203B208->itemIndex))
+ UpdateKangaskhanStorageState(0x18);
+ else
+ UpdateKangaskhanStorageState(0x1B);
+ }
+ break;
+ case 6:
+ UpdateKangaskhanStorageState(0x1A);
+ break;
+ case 1:
+ UpdateKangaskhanStorageState(0x17);
+ break;
+ }
+}
+
+void sub_8017DC0(void)
+{
+ switch(sub_801B410())
+ {
+ case 0:
+ case 1:
+ default:
+ break;
+ case 2:
+ case 3:
+ sub_801B450();
+ UpdateKangaskhanStorageState(0xE);
+ break;
+ }
+}
+
+void sub_8017DDC(void)
+{
+ switch(sub_801B410())
+ {
+ case 0:
+ case 1:
+ default:
+ break;
+ case 2:
+ case 3:
+ sub_801B450();
+ UpdateKangaskhanStorageState(0x17);
+ break;
+ }
+}
+
+void sub_8017DF8(void)
+{
+ s32 temp;
+ if(sub_80144A4(&temp) == 0)
+ {
+ UpdateKangaskhanStorageState(gUnknown_203B208->unk8);
+ }
+}
u32 sub_8017E1C(void)
{
diff --git a/src/kecleon_items.c b/src/kecleon_items.c
index 59b9ec6..f1f2806 100644
--- a/src/kecleon_items.c
+++ b/src/kecleon_items.c
@@ -9,10 +9,10 @@
extern struct unkStruct_203B210 *gUnknown_203B210;
extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];
-extern struct unkData gUnknown_80DB840;
-extern struct unkData gUnknown_80DB870;
-extern struct unkData gUnknown_80DB888;
-extern struct unkData gUnknown_80DB858;
+extern struct UnkTextStruct2 gUnknown_80DB840;
+extern struct UnkTextStruct2 gUnknown_80DB870;
+extern struct UnkTextStruct2 gUnknown_80DB888;
+extern struct UnkTextStruct2 gUnknown_80DB858;
void UpdateKecleonStoreState(u32);
@@ -29,8 +29,6 @@ extern void sub_8019D4C();
extern void sub_8019D68();
extern void sub_8018D30();
extern void sub_8018E88();
-extern void sub_8006518(struct unkData *);
-extern void sub_800641C(struct unkData *, u32, u32);
u32 DisplayKeckleonDialogueSprite(u32 param_1)
{
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c
index f305c6f..0db9bb3 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -60,19 +60,19 @@ void sub_8019B08(void)
void sub_8019BBC(void)
{
- int local_c;
+ int menuAction;
- local_c = 0;
+ menuAction = 0;
if (gUnknown_203B210->unk4 != 0) {
sub_8019EDC(0);
}
else {
sub_801A2A8(0);
}
- if ((sub_8012FD8(&gUnknown_203B210->unk84) == 0) && (sub_8013114(&gUnknown_203B210->unk84,&local_c), local_c != 1)) {
- gUnknown_203B210->unk30 = local_c;
+ if ((sub_8012FD8(&gUnknown_203B210->unk84) == 0) && (sub_8013114(&gUnknown_203B210->unk84,&menuAction), menuAction != 1)) {
+ gUnknown_203B210->unk30 = menuAction;
}
- switch(local_c){
+ switch(menuAction){
case 2:
if (gUnknown_203B460->teamMoney == 0) {
UpdateKecleonStoreState(0x6);
@@ -97,14 +97,14 @@ void sub_8019BBC(void)
void sub_8019C78(void)
{
- int local_c;
+ int menuAction;
- local_c = 0;
+ menuAction = 0;
sub_801A6E8(0);
- if ((sub_8012FD8(&gUnknown_203B210->unk84) == '\0') && (sub_8013114(&gUnknown_203B210->unk84,&local_c), local_c != 1)) {
- gUnknown_203B210->unk2C = local_c;
+ if ((sub_8012FD8(&gUnknown_203B210->unk84) == '\0') && (sub_8013114(&gUnknown_203B210->unk84,&menuAction), menuAction != 1)) {
+ gUnknown_203B210->unk2C = menuAction;
}
- switch(local_c){
+ switch(menuAction){
case 3:
sub_8099690(0);
if (sub_80914E4(gUnknown_203B210->unk1C.itemIndex) == '\0') {
diff --git a/src/load_screen.c b/src/load_screen.c
index 2b40564..6271dbc 100644
--- a/src/load_screen.c
+++ b/src/load_screen.c
@@ -4,6 +4,7 @@
#include "play_time.h"
#include "file_system.h"
#include "memory.h"
+#include "text.h"
extern struct PlayTimeStruct *gPlayTimeRef;
extern struct PlayTimeStruct gPlayTime;
@@ -19,16 +20,11 @@ struct unkStruct_808D33C
struct unkStruct_203B484
{
u8 fill0[0xC];
- s16 unkC;
+ s16 speciesIndex;
u8 fillE[0x50 - 0xE];
u32 unk50;
};
-struct unkData
-{
- u8 unk0[24];
-};
-
struct unkStruct_203B374
{
// size: 0x27c
@@ -39,7 +35,7 @@ struct unkStruct_203B374
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u8 fillA8[0x144 - 0xA8];
- struct unkData unk144[4];
+ struct UnkTextStruct2 unk144[4];
/* 0x1A4 */ u8 formattedTeamName[0x24];
/* 0x1C8 */ u8 formattedPlayerName[0x24];
/* 0x1EC */ u8 formattedLocation[0x24];
@@ -54,15 +50,15 @@ extern u32 gUnknown_203B3B8[];
extern u32 gUnknown_203B388[];
extern struct unkStruct_203B484 *gUnknown_203B484;
-extern struct unkData gUnknown_80E75F8;
-extern struct unkData gUnknown_80E7610;
-extern struct unkData gUnknown_80E762C;
+extern struct UnkTextStruct2 gUnknown_80E75F8;
+extern struct UnkTextStruct2 gUnknown_80E7610;
+extern struct UnkTextStruct2 gUnknown_80E762C;
extern u32 gUnknown_80E7644;
extern u32 gUnknown_80E7684;
extern u32 gUnknown_80E76B8;
extern u32 gUnknown_80E76E8;
extern u32 gUnknown_80E7730;
-extern struct unkData gUnknown_80E7784;
+extern struct UnkTextStruct2 gUnknown_80E7784;
extern u32 gUnknown_80E779C;
extern u8 gUnknown_80E77BC;
extern u8 gUnknown_80E77C4;
@@ -85,8 +81,7 @@ extern const char gUnknown_80E785C[]; // clmkpat
u8 IsQuickSave(void);
void DrawLoadScreenText(void);
extern void sub_8035CF4(u32 *, u32, u32);
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void SetMenuItems(u32 *, struct unkData *, u32, struct unkData *, u32 *, u32, u32, u32);
+extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, u32 *, u32, u32, u32);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_8095240(u32);
@@ -96,10 +91,10 @@ extern void sub_80920D8(u8 *);
extern struct unkStruct_808D33C *sub_808D33C(void);
extern u8 sub_80023E4(u32);
extern u8 *sub_8098FB4();
-extern void sub_800D158(u8 *buffer, u8 *text, ...);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, u8 *text, ...);
extern s32 sub_8011C1C(void);
extern u8 *sub_809769C(void);
-extern u32 sub_8097778(void);
+extern u32 GetNumAdventures(void);
extern void xxx_call_draw_string(u32 x, u32 y, u8 *, u32, u32);
extern void sub_8090228(u8 *, u8 *);
extern void sub_80922B4(u8 *, u8 *, u32);
@@ -244,7 +239,7 @@ void DrawLoadScreenText(void)
else {
strcpy(teamNameBuffer,&gUnknown_80E77F8);
}
- sub_800D158(gUnknown_203B374->formattedTeamName,&gUnknown_80E7804,teamNameBuffer);
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedTeamName,&gUnknown_80E7804,teamNameBuffer);
xxx_call_draw_string(64,0,gUnknown_203B374->formattedTeamName,0,0);
// Draw Player Name
@@ -255,7 +250,7 @@ void DrawLoadScreenText(void)
else {
sub_80922B4(playerName,&playerInfo->unk4C,10);
}
- sub_800D158(gUnknown_203B374->formattedPlayerName,&gUnknown_80E7804,playerName);
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayerName,&gUnknown_80E7804,playerName);
xxx_call_draw_string(64,12,gUnknown_203B374->formattedPlayerName,0,0);
// Draw Location Info
@@ -265,25 +260,25 @@ void DrawLoadScreenText(void)
sub_8090228(gUnknown_203B374->formattedLocation,sub_809769C());
}
else {
- sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
}
}
else {
switch(sub_8011C1C())
{
default:
- sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E7824); // Location unknown
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E7824); // Location unknown
break;
case 1:
switch(sub_8001658(0,24))
{
default:
- sub_800D158(auStack356,&gUnknown_80E7804,sub_8098FB4());
+ ExpandPlaceholdersBuffer(auStack356,&gUnknown_80E7804,sub_8098FB4());
xxx_format_string(auStack356,gUnknown_203B374->formattedLocation,gUnknown_203B374->formattedPlayTime,0);
break;
case 0x7:
case 0xB:
- sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
break;
}
break;
@@ -292,7 +287,7 @@ void DrawLoadScreenText(void)
{
sub_8090228(gUnknown_203B374->formattedLocation,sub_809769C());
} else {
- sub_800D158(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedLocation,&gUnknown_80E780C); // Quicksave data deleted
}
break;
}
@@ -301,23 +296,23 @@ void DrawLoadScreenText(void)
// Draw Play Time
DeconstructPlayTime(gPlayTimeRef,&hours,&minutes,&seconds);
- sub_800D158(gUnknown_203B374->formattedPlayTime,&gUnknown_80E7838,hours,minutes,seconds);
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedPlayTime,&gUnknown_80E7838,hours,minutes,seconds);
xxx_call_draw_string(64,36,gUnknown_203B374->formattedPlayTime,0,0);
// Draw Adventures Info
- numAdventures = sub_8097778();
- sub_800D158(gUnknown_203B374->formattedAdventures,&gUnknown_80E7848,numAdventures); // %d
+ numAdventures = GetNumAdventures();
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedAdventures,&gUnknown_80E7848,numAdventures); // %d
xxx_call_draw_string(64,48,gUnknown_203B374->formattedAdventures,0,0);
// Draw Helper Info
- if ((iVar2 == 0xf1207) && (gUnknown_203B484->unkC != 0)) {
- sub_808D930(speciesHelper,gUnknown_203B484->unkC);
+ if ((iVar2 == 0xf1207) && (gUnknown_203B484->speciesIndex != 0)) {
+ sub_808D930(speciesHelper,gUnknown_203B484->speciesIndex);
// TODO very hacky match here
sub_80922B4(nameHelper,(u8 *)(&gUnknown_203B484 + 0x14),10);
- sub_800D158(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E784C,nameHelper,speciesHelper); // %s (%s)
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E784C,nameHelper,speciesHelper); // %s (%s)
}
else {
- sub_800D158(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E7854); // -----
+ ExpandPlaceholdersBuffer(gUnknown_203B374->formattedHelperInfo,&gUnknown_80E7854); // -----
}
xxx_call_draw_string(64,60,gUnknown_203B374->formattedHelperInfo,0,0);
@@ -404,7 +399,7 @@ void DrawLoadScreenText(void)
"\tlsls r4, 1\n"
"\tadds r0, r4\n"
"\tldr r1, _08039590\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tldr r2, [r5]\n"
"\tadds r2, r4\n"
"\tmovs r0, 0\n"
@@ -443,7 +438,7 @@ void DrawLoadScreenText(void)
"\tadds r0, r4\n"
"\tldr r6, _080395F4\n"
"\tadds r1, r6, 0\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tldr r2, [r5]\n"
"\tadds r2, r4\n"
"\tmovs r0, 0\n"
@@ -505,7 +500,7 @@ void DrawLoadScreenText(void)
"\tadds r2, r0, 0\n"
"\tadd r0, sp, 0x4\n"
"\tadds r1, r6, 0\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tldr r0, [r5]\n"
"\tmovs r3, 0xF6\n"
"\tlsls r3, 1\n"
@@ -549,7 +544,7 @@ void DrawLoadScreenText(void)
"_08039690:\n"
"\tldr r1, _0803974C\n"
"_08039692:\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"_08039696:\n"
"\tldr r7, _08039750\n"
"\tldr r2, [r7]\n"
@@ -580,7 +575,7 @@ void DrawLoadScreenText(void)
"\tadd r4, sp, 0x14C\n"
"\tldr r4, [r4]\n"
"\tstr r4, [sp]\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tldr r2, [r7]\n"
"\tadds r2, r5\n"
"\tstr r6, [sp]\n"
@@ -588,14 +583,14 @@ void DrawLoadScreenText(void)
"\tmovs r1, 0x24\n"
"\tmovs r3, 0\n"
"\tbl xxx_call_draw_string\n"
- "\tbl sub_8097778\n"
+ "\tbl GetNumAdventures\n"
"\tadds r2, r0, 0\n"
"\tldr r0, [r7]\n"
"\tmovs r4, 0x8D\n"
"\tlsls r4, 2\n"
"\tadds r0, r4\n"
"\tldr r1, _0803975C\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tldr r2, [r7]\n"
"\tadds r2, r4\n"
"\tstr r6, [sp]\n"
@@ -629,7 +624,7 @@ void DrawLoadScreenText(void)
"\tldr r1, _08039768\n"
"\tadds r2, r4, 0\n"
"\tadds r3, r5, 0\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"\tb _0803977C\n"
"\t.align 2, 0\n"
"_0803974C: .4byte gUnknown_80E780C\n"
@@ -647,7 +642,7 @@ void DrawLoadScreenText(void)
"\tlsls r1, 2\n"
"\tadds r0, r1\n"
"\tldr r1, _080397B0\n"
- "\tbl sub_800D158\n"
+ "\tbl ExpandPlaceholdersBuffer\n"
"_0803977C:\n"
"\tldr r0, _080397AC\n"
"\tldr r2, [r0]\n"
diff --git a/src/main.c b/src/main.c
index ee657d6..d18d0de 100644
--- a/src/main.c
+++ b/src/main.c
@@ -8,14 +8,14 @@ extern char ewram_start[];
typedef void (*IntrCallback)(void);
-extern u8 IntrMain_Buffer[0x120];
-extern IntrCallback gIntrCallbacks[6];
+EWRAM_DATA u8 IntrMain_Buffer[0x120];
+EWRAM_DATA u32 gIntrTable[6];
+EWRAM_DATA IntrCallback gIntrCallbacks[6];
extern u16 gBldCnt;
extern u8 gUnknown_202D7FE;
extern u8 gInterruptsEnabled;
extern u16 gUnknown_203B0AC;
extern s16 gUnknown_203B0AE;
-extern u32 gIntrTable[];
extern char alt_203B038[];
@@ -227,9 +227,9 @@ void AckInterrupt(u16 flag)
void InitIntrTable(const u32 *interrupt_table)
{
- CpuCopy32(interrupt_table, &gIntrTable, 0x18); // 0x18 = 0x6 * 4 (0x4f00 is 32 bits)
- CpuCopy32(&IntrMain, &IntrMain_Buffer, 0x120); // 0x120 = 0x48 * 4 (0x4f00 is 32 bits)
- INTR_VECTOR = &IntrMain_Buffer;
+ CpuCopy32(interrupt_table, gIntrTable, sizeof(gIntrTable)); // 0x18 = 0x6 * 4 (0x4f00 is 32 bits)
+ CpuCopy32(IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer)); // 0x120 = 0x48 * 4 (0x4f00 is 32 bits)
+ INTR_VECTOR = IntrMain_Buffer;
}
u32 *sub_800B6E8(u32 r0)
diff --git a/src/main_menu.c b/src/main_menu.c
index 052ad49..81b7525 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -5,6 +5,7 @@
#include "input.h"
#include "menu.h"
#include "memory.h"
+#include "text.h"
// NOTE: 0x13 and 0x14
// Communication Screen?
@@ -74,17 +75,15 @@ struct unkStruct_203B34C
u8 fillC[0x30 - 0xC];
s16 menuIndex;
u8 fill32[0x144 - 0x32];
- struct unkData unk144[4];
+ struct UnkTextStruct2 unk144[4];
/* 0x1A4 */ u32 currMenuChoice;
};
extern struct unkStruct_203B34C *gUnknown_203B34C;
extern struct MainMenu *gMainMenu;
-extern struct unkData gUnknown_80E59A8;
-extern struct unkData gUnknown_80E59C8;
-extern void sub_8006518(struct unkData *);
-extern void sub_800641C(struct unkData *, u32, u32);
+extern struct UnkTextStruct2 gUnknown_80E59A8;
+extern struct UnkTextStruct2 gUnknown_80E59C8;
extern bool8 SetMainMenuText();
extern void SetMainMenuItems();
@@ -349,7 +348,7 @@ void sub_8035C1C(void)
}
void
-SetMenuItems(struct unkStruct_Menu *param_1, struct unkData *unkData, int param_3, const struct unkData *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8)
+SetMenuItems(struct unkStruct_Menu *param_1, struct UnkTextStruct2 *unkData, int param_3, const struct UnkTextStruct2 *param_4, const struct MenuItem *param_5, char param_6 ,u32 param_7, u32 unused_8)
{
unkData[param_3] = *param_4;
ResetUnusedInputStruct();
@@ -363,7 +362,7 @@ SetMenuItems(struct unkStruct_Menu *param_1, struct unkData *unkData, int param_
param_1[param_3].unk4C = 1;
}
-void sub_8035CC0(struct unkData *dataArray, u32 index)
+void sub_8035CC0(struct UnkTextStruct2 *dataArray, u32 index)
{
sub_8006518(dataArray);
dataArray[index] = gUnknown_80E59A8;
diff --git a/src/main_menu_1.c b/src/main_menu_1.c
index 5363bf9..668df86 100644
--- a/src/main_menu_1.c
+++ b/src/main_menu_1.c
@@ -1,11 +1,7 @@
#include "global.h"
#include "main_menu.h"
#include "menu.h"
-
-struct unkData
-{
- u8 unk0[24];
-};
+#include "text.h"
struct unkStruct_203B34C
{
@@ -16,7 +12,7 @@ struct unkStruct_203B34C
u8 fillC[0x30 - 0xC];
s16 menuIndex;
u8 fill32[0x144 - 0x32];
- struct unkData unk144[4];
+ struct UnkTextStruct2 unk144[4];
/* 0x1A4 */ u32 currMenuChoice;
};
@@ -53,11 +49,11 @@ extern const struct MenuItem gUnknown_80E6030[];
extern u8 sub_803D0D8();
extern s32 sub_8011C34();
extern s32 sub_8095324(u32);
-extern void SetMenuItems(u32 *, struct unkData *, u32, u32 *, const struct MenuItem *, u32, u32, u32);
+extern void SetMenuItems(u32 *, struct UnkTextStruct2 *, u32, u32 *, const struct MenuItem *, u32, u32, u32);
void SetMainMenuItems(void);
extern bool8 SetMainMenuText();
extern void sub_8035CF4(u32 *, u32, u32);
-extern void sub_8035CC0(struct unkData *, u32);
+extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
bool8 SetMainMenuText(void)
{
@@ -210,11 +206,11 @@ void SetMainMenuItems(void)
}
}
-u8 sub_80363E0(void)
+bool8 sub_80363E0(void)
{
if(gUnknown_203B34C == NULL)
- return 0;
+ return FALSE;
if(gUnknown_203B34C->unk0 == 0xC)
- return 0;
- return 1;
+ return FALSE;
+ return TRUE;
}
diff --git a/src/makuhita_dojo.c b/src/makuhita_dojo.c
index d35a659..b01e1a6 100644
--- a/src/makuhita_dojo.c
+++ b/src/makuhita_dojo.c
@@ -4,11 +4,7 @@
#include "input.h"
#include "constants/species.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[24];
-};
+#include "text.h"
struct unkStruct_203B318
{
@@ -28,16 +24,13 @@ struct unkStruct_203B318
u8 unk66;
u8 unk67;
struct OpenedFile** unk68;
- struct unkData unk6C[4];
+ struct UnkTextStruct2 unk6C[4];
};
extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];
extern struct unkStruct_203B318 *gUnknown_203B318;
-extern struct unkData gUnknown_80E0760;
-
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void sub_8006518(struct unkData *);
+extern struct UnkTextStruct2 gUnknown_80E0760;
extern void sub_8030208();
extern void sub_8030258();
@@ -56,7 +49,7 @@ u32 CreateMakuhitaShop(u32 param_1)
ResetUnusedInputStruct();
sub_800641C(0,1,1);
- gUnknown_203B318 = MemoryAlloc(0xcc,8);
+ gUnknown_203B318 = MemoryAlloc(sizeof(struct unkStruct_203B318),8);
gUnknown_203B318->unk10 = -1;
gUnknown_203B318->unk0 = param_1;
switch(param_1) {
diff --git a/src/memory_mid.c b/src/memory_mid.c
index 32628cb..1eb707c 100644
--- a/src/memory_mid.c
+++ b/src/memory_mid.c
@@ -15,32 +15,32 @@ void *DoAlloc(struct HeapDescriptor *, s32, u32);
void FatalError(u32 *, u32 *, ...) __attribute__((noreturn));
-s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 param_3)
+s32 _LocateSet(struct HeapDescriptor *heap, s32 size, s32 group)
{
s32 index;
struct HeapDescriptor * uVar2;
- s32 uVar3;
+ s32 atb;
if (heap == NULL) {
heap = &gMainHeapDescriptor;
}
// Set some sort flag/attr?
- uVar3 = param_3 >> 8 | 1;
+ atb = group >> 8 | 1;
// Reset it?
- param_3 = param_3 & 0xff;
+ group = group & 0xff;
- if ((uVar3 & 2) != 0) {
- index = MemorySearchFromFront(heap,uVar3,size);
+ if ((atb & 2) != 0) {
+ index = MemorySearchFromFront(heap,atb,size);
if (index < 0) goto error;
- uVar2 = _LocateSetFront(heap,index,uVar3,size,param_3);
+ uVar2 = _LocateSetFront(heap,index,atb,size,group);
return uVar2->freeCount;
}
else {
- index = MemorySearchFromBack(heap,uVar3,size);
+ index = MemorySearchFromBack(heap,atb,size);
if (index < 0) goto error;
- uVar2 = _LocateSetBack(heap,index,uVar3,size,param_3);
+ uVar2 = _LocateSetBack(heap,index,atb,size,group);
return uVar2->freeCount;
}
@@ -49,7 +49,7 @@ error:
// atb %02x grp %3d
FatalError(&gUnknown_80B7F14,
&gUnknown_80B7F20,
- heap,size,uVar3,param_3);
+ heap,size,atb,group);
}
void *MemoryAlloc(s32 size, s32 b)
diff --git a/src/other_menus.c b/src/other_menus.c
index 193d800..0cfe949 100644
--- a/src/other_menus.c
+++ b/src/other_menus.c
@@ -4,16 +4,7 @@
#include "gUnknown_203B460.h"
#include "menu.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[14];
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u8 *unk14;
-};
-
+#include "text.h"
struct unkStruct_203B35C
{
@@ -24,41 +15,41 @@ struct unkStruct_203B35C
u8 fillC[0x1C - 0xC];
u32 unk1C;
u8 fill20[0x15C - 0x20];
- struct unkData unk15C[4];
+ struct UnkTextStruct2 unk15C[4];
u8 unk1BC[4];
u32 unk1C0[9];
};
extern struct unkStruct_203B35C *gUnknown_203B35C;
-extern struct unkData gUnknown_80E653C;
+extern struct UnkTextStruct2 gUnknown_80E653C;
-extern struct unkData gUnknown_80E66BC;
+extern struct UnkTextStruct2 gUnknown_80E66BC;
extern struct MenuItem gUnknown_80E66D4[];
-extern struct unkData gUnknown_80E6748;
+extern struct UnkTextStruct2 gUnknown_80E6748;
extern struct MenuItem gUnknown_80E6760[];
-extern struct unkData gUnknown_80E67D4;
+extern struct UnkTextStruct2 gUnknown_80E67D4;
extern struct MenuItem gUnknown_80E67EC[];
-extern struct unkData gUnknown_80E689C;
+extern struct UnkTextStruct2 gUnknown_80E689C;
extern struct MenuItem gUnknown_80E68B4[];
-extern struct unkData gUnknown_80E6938;
+extern struct UnkTextStruct2 gUnknown_80E6938;
extern struct MenuItem gUnknown_80E6950[];
-extern struct unkData gUnknown_80E69B0;
+extern struct UnkTextStruct2 gUnknown_80E69B0;
extern struct MenuItem gUnknown_80E69C8[];
-extern struct unkData gUnknown_80E6A10;
+extern struct UnkTextStruct2 gUnknown_80E6A10;
extern struct MenuItem gUnknown_80E6A28[];
-extern struct unkData gUnknown_80E6A74;
+extern struct UnkTextStruct2 gUnknown_80E6A74;
extern struct MenuItem gUnknown_80E6A8C[];
-extern struct unkData gUnknown_80E6B78;
+extern struct UnkTextStruct2 gUnknown_80E6B78;
extern struct MenuItem gUnknown_80E6B90[];
-extern struct unkData gUnknown_80E6BF4;
+extern struct UnkTextStruct2 gUnknown_80E6BF4;
extern struct MenuItem gUnknown_80E6C0C[];
-extern struct unkData gUnknown_80E6C50;
+extern struct UnkTextStruct2 gUnknown_80E6C50;
extern struct MenuItem gUnknown_80E6C68[];
-extern struct unkData gUnknown_80E6CD0;
+extern struct UnkTextStruct2 gUnknown_80E6CD0;
extern struct MenuItem gUnknown_80E6CE8[];
-extern struct unkData gUnknown_80E6DDC;
+extern struct UnkTextStruct2 gUnknown_80E6DDC;
extern struct MenuItem gUnknown_80E6DF4[];
-extern struct unkData gUnknown_80E6D54;
+extern struct UnkTextStruct2 gUnknown_80E6D54;
extern struct MenuItem gUnknown_80E6D6C[];
struct unkStruct_8035D94
@@ -73,11 +64,10 @@ extern struct unkStruct_8035D94 *sub_8035D94();
extern struct unkStruct_203B460 *gUnknown_203B460;
extern void sub_8037400(void);
-extern void sub_800641C(void *, u32, u32);
extern void ResetSprites(u32);
extern void sub_8035CF4(u32 *,u32, u32);
extern void sub_80376CC();
-extern void sub_8035CC0(void *, u32);
+extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
@@ -87,7 +77,7 @@ extern void sub_80371B8(void);
extern void sub_8037900(void);
extern void PlayMenuSoundEffect(u32);
extern u32 sub_8037798(void);
-extern void SetMenuItems(void *, void *, u32, struct unkData *, struct MenuItem *, u32, u32, u32);
+extern void SetMenuItems(void *, void *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern void sub_8005838(u32, u32);
extern void sub_80060EC();
extern void sub_800CB20();
@@ -309,7 +299,7 @@ void sub_80371B8(void)
{
struct unkStruct_8035D94 *pbVar2;
struct MenuItem *MenuItems;
- struct unkData *puVar5;
+ struct UnkTextStruct2 *puVar5;
puVar5 = NULL;
MenuItems = NULL;
@@ -317,7 +307,7 @@ void sub_80371B8(void)
if ((gUnknown_203B35C->unk0 < 2) &&(gUnknown_203B35C->unk4 == 0)) {
if (sub_8037C10(0) != 0) {
sub_80376CC();
- sub_8035CC0(&gUnknown_203B35C->unk15C,0);
+ sub_8035CC0(gUnknown_203B35C->unk15C,0);
// Success!
// The item exchange with your friend
// went through successfully
@@ -327,7 +317,7 @@ void sub_80371B8(void)
}
else {
sub_80376CC();
- sub_8035CC0(&gUnknown_203B35C->unk15C, 0);
+ sub_8035CC0(gUnknown_203B35C->unk15C, 0);
switch(gUnknown_203B35C->unk4) {
case 0:
puVar5 = &gUnknown_80E66BC;
diff --git a/src/personality_test.c b/src/personality_test.c
index ef31ec1..1ec55e2 100644
--- a/src/personality_test.c
+++ b/src/personality_test.c
@@ -9,9 +9,9 @@
#include "save.h"
#include "memory.h"
#include "gUnknown_203B46C.h"
+#include "text.h"
extern void sub_801317C(u32 *);
-extern void sub_8099690(u32);
extern void sub_8001024(u32 *);
extern s32 sub_8094E4C(void);
extern void sub_8094D28(s32);
@@ -29,8 +29,6 @@ extern u32 sub_8016080(void);
extern void sub_80160D8(void);
extern void sub_8099690(u32);
-extern void sub_8006518(void *);
-extern void sub_800641C(void *, u32, u32);
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
extern void sub_8008C54(u32);
@@ -48,36 +46,13 @@ extern void PlayMenuSoundEffect(u32);
extern void sub_8013984(struct UnkInputStruct **r0);
u32 sub_8013800(struct UnkInputStruct **r0, u32);
extern void AddMenuCursorSprite(struct UnkInputStruct **r0);
-extern void xxx_call_draw_string(u32 size, u32, const char *text, u32, u32);
+extern void xxx_call_draw_string(u32 x, u32 y, const char *text, u32, u32);
extern u32 sub_80095E4(s16, u32);
-
-struct PersonalityAnswer
-{
- const char * text;
- int effect;
-};
-
-struct PersonalityQuestion
-{
- const char * question;
- const struct PersonalityAnswer * answers;
- const u8 (*effects[16]);
-};
-
extern struct PersonalityQuestion *gPersonalityQuestionPointerTable[NUM_QUIZ_QUESTIONS];
extern struct UnkSaveStruct1 *gUnknown_203B46C;
-struct stack_PartnerSprite
-{
- // size: 0x60
- u32 unk0;
- u8 padding[0x18 - 4];
- struct unkData data;
- u32 padding2[12];
-};
-
extern const char gStarterReveal[];
extern const char gGenderText[];
extern u32 gGenderMenu;
@@ -100,17 +75,17 @@ extern const char gRelaxedDescription[];
extern const char gLonelyDescription[];
extern const char gQuirkyDescription[];
-const char gStarterReveal[] = _("\n{CENTER_ALIGN}The Pokémon $m0!");
+ALIGNED(4) const char gStarterReveal[] = _("\n{CENTER_ALIGN}The Pokémon $m0!");
const char * const gStarterRevealPtr = gStarterReveal;
-const char gPartnerPrompt[] = _(
+ALIGNED(4) const char gPartnerPrompt[] = _(
"{CENTER_ALIGN}This is the final step.{WAIT_PRESS}\n"
"{CENTER_ALIGN}Who would you like to have as a partner?{EXTRA_MSG}"
"{CENTER_ALIGN}Choose the Pokémon you want\n"
"{CENTER_ALIGN}as your partner from this group.");
const char * const gPartnerPromptPtr = gPartnerPrompt;
-const char gPartnerNickPrompt[] = _("{CENTER_ALIGN}What is your partner~27s nickname?");
+ALIGNED(4) const char gPartnerNickPrompt[] = _("{CENTER_ALIGN}What is your partner~27s nickname?");
const char * const gPartnerNickPromptPtr = gPartnerNickPrompt;
ALIGNED(4) const char gEndIntroText[] = _(
@@ -139,13 +114,13 @@ const char * const gPersonalityTypeDescriptionTable[NUM_PERSONALITIES] =
#include "data/nature_description.h"
-struct unkData gUnknown_80F4244 =
+const struct UnkTextStruct2 gUnknown_80F4244 =
{
- 0, 0,
- 5, 0,
- 0xC, 6,
- 5, 5,
- 5,0,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x06, 0x00,
+ 0x05, 0x05,
+ 0x05, 0x00,
NULL
};
@@ -165,31 +140,31 @@ const s16 gPartners[NUM_PARTNERS] =
SPECIES_MUDKIP
};
-const struct unkData gUnknown_80F4278 =
+const struct UnkTextStruct2 gUnknown_80F4278 =
{
- 0x00, 0x00,
- 0x03, 0x00,
- 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
NULL
};
-const struct unkData gUnknown_80F4290 =
+const struct UnkTextStruct2 gUnknown_80F4290 =
{
- 0x00, 0x00,
- 0x06, 0x00,
- 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00,
0x09, 0x0B,
0x0D, 0x00,
NULL
};
-const struct unkData gUnknown_80F42A8 =
+const struct UnkTextStruct2 gUnknown_80F42A8 =
{
- 0x00, 0x00,
- 0x05, 0x00,
- 0x0E, 0x04,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x04, 0x00,
0x05, 0x05,
0x05, 0x00,
NULL
@@ -344,67 +319,31 @@ void CallPromptNewQuestion(void)
gUnknown_203B400->TestState = 2;
}
-NAKED
-void UpdateNatureTotals(void)
+void UpdateNatureTotals()
{
- asm_unified(
- "\tpush {r4-r6,lr}\n"
- "\tsub sp, 0x4\n"
- "\tmov r0, sp\n"
- "\tbl sub_80144A4\n"
- "\tcmp r0, 0\n"
- "\tbne _0803C97C\n"
- "\tldr r3, [sp]\n"
- "\tcmp r3, 0x63\n"
- "\tbne _0803C944\n"
- "\tldr r0, _0803C940\n"
- "\tldr r1, [r0]\n"
- "\tmovs r0, 0x37\n"
- "\tstr r0, [r1, 0x3C]\n"
- "\tmovs r0, 0x1\n"
- "\tb _0803C97A\n"
- "\t.align 2, 0\n"
-"_0803C940: .4byte gUnknown_203B400\n"
-"_0803C944:\n"
- "\tldr r1, _0803C984\n"
- "\tldr r2, _0803C988\n"
- "\tldr r0, [r2]\n"
- "\tldr r0, [r0, 0x3C]\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r1\n"
- "\tldr r0, [r0]\n"
- "\tldr r4, [r0, 0x8]\n"
- "\tlsls r0, r3, 4\n"
- "\tadds r4, r0\n"
- "\tmovs r3, 0\n"
- "\tadds r6, r2, 0\n"
- "\tadds r5, r6, 0\n"
-"_0803C95E:\n"
- "\tldr r1, [r5]\n"
- "\tlsls r0, r3, 2\n"
- "\tadds r1, 0x44\n"
- "\tadds r1, r0\n"
- "\tadds r0, r4, r3\n"
- "\tldrb r2, [r0]\n"
- "\tldr r0, [r1]\n"
- "\tadds r0, r2\n"
- "\tstr r0, [r1]\n"
- "\tadds r3, 0x1\n"
- "\tcmp r3, 0xC\n"
- "\tble _0803C95E\n"
- "\tldr r1, [r6]\n"
- "\tmovs r0, 0\n"
-"_0803C97A:\n"
- "\tstr r0, [r1, 0x34]\n"
-"_0803C97C:\n"
- "\tadd sp, 0x4\n"
- "\tpop {r4-r6}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
-"_0803C984: .4byte gPersonalityQuestionPointerTable\n"
-"_0803C988: .4byte gUnknown_203B400"
- );
+ s32 answerIndex;
+ s32 natureIndex;
+ const u8 *pointArray;
+
+ if (!sub_80144A4(&answerIndex))
+ {
+ if (answerIndex == 99)
+ {
+ gUnknown_203B400->currQuestionIndex = NUM_QUIZ_QUESTIONS;
+ gUnknown_203B400->TestState = 1;
+ }
+ else
+ {
+ pointArray = gPersonalityQuestionPointerTable[gUnknown_203B400->currQuestionIndex]->effects;
+ // Skip until we get to the one for our answer
+ pointArray += 16 * answerIndex;
+ for (natureIndex = 0; natureIndex < NUM_PERSONALITIES; natureIndex++)
+ {
+ gUnknown_203B400->NatureTotals[natureIndex] += pointArray[natureIndex];
+ }
+ gUnknown_203B400->TestState = 0;
+ }
+ }
}
void SetPlayerGender(void)
@@ -635,13 +574,13 @@ void PersonalityTest_DisplayStarterSprite(void)
int palleteIndex;
u8 *r6;
u32 faceIndex;
- struct stack_PartnerSprite stackArray;
+ struct UnkTextStruct2 stackArray[4];
starterID = gUnknown_203B400->StarterID;
- sub_8006518(&stackArray);
- stackArray.data = gUnknown_80F4244;
+ sub_8006518(stackArray);
+ stackArray[1] = gUnknown_80F4244;
ResetUnusedInputStruct();
- sub_800641C(&stackArray, 1, 0);
+ sub_800641C(stackArray, 1, 0);
sub_8008C54(1);
sub_80073B8(1);
faceFile = GetDialogueSpriteDataPtr(starterID);
@@ -753,7 +692,7 @@ void sub_803CECC(void)
void RedrawPartnerSelectionMenu(void)
{
s32 sVar1;
- u32 uVar2;
+ u32 yCoord;
const char *monName;
s32 monCounter;
@@ -776,9 +715,9 @@ void RedrawPartnerSelectionMenu(void)
monCounter = 0;
while (monCounter < gUnknown_203B404->unk32) {
- uVar2 = sub_8013800(&gUnknown_203B404->unk18, monCounter);
+ yCoord = sub_8013800(&gUnknown_203B404->unk18, monCounter);
monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]);
- xxx_call_draw_string(8, uVar2, monName, gUnknown_203B404->unk4C, 0);
+ xxx_call_draw_string(8, yCoord, monName, gUnknown_203B404->unk4C, 0);
monCounter++;
}
sub_80073E0(gUnknown_203B404->unk4C);
diff --git a/src/play_time.c b/src/play_time.c
index 37af5fe..7622e31 100644
--- a/src/play_time.c
+++ b/src/play_time.c
@@ -2,7 +2,7 @@
#include "play_time.h"
extern struct PlayTimeStruct *gPlayTimeRef;
-extern struct PlayTimeStruct gPlayTime;
+EWRAM_DATA struct PlayTimeStruct gPlayTime;
extern void sub_809488C(u8 *r0, u8 *r1, u32);
extern void sub_8094924(u8 *r0, u8 *r1, u32);
@@ -76,7 +76,7 @@ void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinut
}
}
-void sub_8095044(u8 *r0)
+void WritePlayTime(u8 *r0)
{
sub_809488C(r0, (&(gPlayTimeRef->frames)), 6);
sub_809488C(r0, (&(gPlayTimeRef->seconds)), 6);
@@ -84,7 +84,7 @@ void sub_8095044(u8 *r0)
sub_809488C(r0, (u8 *)(&(gPlayTimeRef->hours)), 14);
}
-void sub_8095080(u8 *r0)
+void ReadPlayTime(u8 *r0)
{
sub_8094924(r0, (&(gPlayTimeRef->frames)), 6);
sub_8094924(r0, (&(gPlayTimeRef->seconds)), 6);
diff --git a/src/pokemon.c b/src/pokemon.c
index e87c8c6..2499e11 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -3,17 +3,17 @@
#include "file_system.h"
#include "constants/species.h"
-extern struct unkStruct_203B45C gRecruitedPokemon[];
extern struct FileArchive gSystemFileArchive;
extern const char gUnknown_81075F4;
-extern struct OpenedFile *gMonsterParametersFile;
-extern u16 gLevelCurrentPokeId;
-extern struct gPokemon *gMonsterParameters;
+EWRAM_DATA struct gPokemon *gMonsterParameters;
+EWRAM_DATA struct OpenedFile *gMonsterParametersFile;
+EWRAM_DATA struct unkStruct_203B45C gRecruitedPokemon;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
+EWRAM_DATA u16 gLevelCurrentPokeId;
void LoadMonsterParameters(void)
{
- gRecruitedPokemonRef = gRecruitedPokemon;
+ gRecruitedPokemonRef = &gRecruitedPokemon;
gMonsterParametersFile = OpenFileAndGetFileDataPtr(&gUnknown_81075F4, &gSystemFileArchive);
gMonsterParameters = (struct gPokemon *)gMonsterParametersFile->data;
gLevelCurrentPokeId = 0;
@@ -21,7 +21,7 @@ void LoadMonsterParameters(void)
struct unkStruct_203B45C *GetRecruitedPokemon(void)
{
- return gRecruitedPokemon;
+ return &gRecruitedPokemon;
}
void InitializeRecruitedPokemon(void)
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index a6aff55..86f410d 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -7,6 +7,10 @@ extern int sprintf(char *, const char *, ...);
extern struct gPokemon *gMonsterParameters;
extern struct FileArchive gMonsterFileArchive;
extern const char gUnknown_8107684[];
+extern struct unkStruct_203B45C *gRecruitedPokemonRef;
+
+extern void sub_808DE50(void* r0, struct PokemonStruct *r1, u32 r2, u32 r3);
+
u8 *GetCategoryString(s16 index)
{
@@ -217,3 +221,8 @@ bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 r1)
// checking to see if dialogue sprite is available??
return (gMonsterParameters[index].dialogue_sprites >> r1) & 1;
}
+
+void sub_808DE30(void* r0, u32 r1)
+{
+ sub_808DE50(r0, &gRecruitedPokemonRef->pokemon[r1], r1, r1 * sizeof(struct PokemonStruct));
+}
diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c
index e8405c8..9653217 100644
--- a/src/pokemon_mid.c
+++ b/src/pokemon_mid.c
@@ -10,12 +10,12 @@ extern const char gUnknown_8107630[];
extern const char gUnknown_8107638[];
extern const char gUnknown_810763C[];
-extern void sub_800D158(u8 *buffer, const char *r2, ...);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
extern s16 sub_808E770(u32);
extern s32 GetUnownIndex(s32);
extern void sub_80922B4(u8 *, u8 *, s32);
-extern void sub_800D158(u8 *buffer, const char *r2, ...);
+extern void ExpandPlaceholdersBuffer(u8 *buffer, const char *r2, ...);
void CopySpeciesNametoBuffer(u8 * buffer, s16 index)
{
@@ -25,13 +25,13 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index)
void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index)
{
s32 new_index = index;
- sub_800D158(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // #c6%s#r
+ ExpandPlaceholdersBuffer(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // #c6%s#r
}
void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index)
{
s32 new_index = index;
- sub_800D158(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // #c5%s#r
+ ExpandPlaceholdersBuffer(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // #c5%s#r
}
void sub_808D930(u8 *buffer, s16 index)
@@ -46,10 +46,10 @@ void sub_808D930(u8 *buffer, s16 index)
preload = gUnknown_8107630; // %s%c
unownString = GetMonSpecies(SPECIES_UNOWN);
unownIndex = GetUnownIndex(newIndex);
- sub_800D158(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!?
+ ExpandPlaceholdersBuffer(buffer,preload,unownString,gUnownLetters[unownIndex]); // ABCDEFGHIJKLMNOPQRSTUVWXYZ!?
}
else {
- sub_800D158(buffer,gUnknown_8107638, gMonsterParameters[newIndex].species); // %s
+ ExpandPlaceholdersBuffer(buffer,gUnknown_8107638, gMonsterParameters[newIndex].species); // %s
}
}
@@ -58,37 +58,37 @@ char * GetMonSpecies(s16 index)
return gMonsterParameters[index].species;
}
-void sub_808D9AC(u8 *param_1, u8 *param_2, s32 param_3)
+void sub_808D9AC(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum)
{
u8 auStack32 [20];
- sub_80922B4(auStack32, param_2 + 0x4c, 10);
- if (param_3 == 0) {
- param_3 = 5;
+ sub_80922B4(auStack32, pokemon->name, 10);
+ if (colorNum == 0) {
+ colorNum = 5;
}
- sub_800D158(param_1,gUnknown_810763C,param_3,auStack32); // #c%c%s#r
+ ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,auStack32); // #c%c%s#r
}
-void sub_808D9DC(u8 *param_1, u8 *param_2, s32 param_3)
+void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
{
u8 auStack32 [20];
sub_80922B4(auStack32, param_2 + 0x58, 10);
- if (param_3 == 0) {
- param_3 = 6;
+ if (colorNum == 0) {
+ colorNum = 6;
}
- sub_800D158(param_1,gUnknown_810763C,param_3,auStack32); // #c%c%s#r
+ ExpandPlaceholdersBuffer(buffer,gUnknown_810763C,colorNum,auStack32); // #c%c%s#r
}
-void sub_808DA0C(u8 *param_1, u8 *param_2)
+void sub_808DA0C(u8 *buffer, u8 *param_2)
{
u8 auStack32 [20];
sub_80922B4(auStack32, param_2 + 0x58, 10);
- sub_800D158(param_1,gUnknown_8107638,auStack32); // %s
+ ExpandPlaceholdersBuffer(buffer,gUnknown_8107638,auStack32); // %s
}
-void sub_808DA34(u8 *param_1, u8 *param_2)
+void sub_808DA34(u8 *buffer, struct PokemonStruct *pokemon)
{
- sub_80922B4(param_1, param_2 + 0x4c, 10);
+ sub_80922B4(buffer, pokemon->name, 10);
}
diff --git a/src/post_office_guide.c b/src/post_office_guide.c
index dd28446..2c0f1d6 100644
--- a/src/post_office_guide.c
+++ b/src/post_office_guide.c
@@ -5,6 +5,7 @@
#include "constants/species.h"
#include "menu.h"
#include "memory.h"
+#include "text.h"
struct PostOfficeHelper
{
@@ -23,12 +24,6 @@ struct PostOfficeHelper
extern struct PostOfficeHelper *gPostOfficeHelper;
-struct unkData
-{
- u8 unk0[20];
- const u8 *unk20;
-};
-
struct unkStruct_203B330
{
// size: 0x78
@@ -38,8 +33,8 @@ struct unkStruct_203B330
u8 unkD;
u8 fillE[2];
u32 unk10;
- struct unkData *unk14;
- struct unkData unk18[3];
+ struct UnkTextStruct2 *unk14;
+ struct UnkTextStruct2 unk18[3];
};
extern struct unkStruct_203B330 *gUnknown_203B330;
@@ -137,25 +132,25 @@ ALIGNED(4) const char GettingHelp_Text[] = _("Getting Help");
ALIGNED(4) const u8 wonder_mail_fill[] = _("pksdir0");
-const struct unkData gUnknown_80E1EFC =
+const struct UnkTextStruct2 gUnknown_80E1EFC =
{
0, 0, 0, 0,
3, 0, 0, 0,
0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
+ 0, 0,
+ 0, 0,
NULL
};
const u8 gUnkData_80E1F14[] = {1, 0, 8, 0};
-const struct unkData gUnknown_80E1F18 =
+const struct UnkTextStruct2 gUnknown_80E1F18 =
{
0, 0, 0, 0,
6, 0, 0, 0,
2, 0, 2, 0,
- 0x14, 0, 4, 0,
- 4, 0, 0, 0,
+ 0x14, 4,
+ 4, 0,
gUnkData_80E1F14
};
@@ -168,8 +163,6 @@ extern void sub_8031AE8();
extern u8 gUnknown_202E5D8[];
extern u8 gAvailablePokemonNames[];
-extern void sub_800641C(struct unkData *, u32, u32);
-extern void sub_8006518(struct unkData *);
extern void sub_8031A2C(void);
extern void sub_801317C(void *);
@@ -184,7 +177,7 @@ extern void HandlePostOfficeHelpGetHelpMenuSelection();
extern void sub_8031988();
extern s32 sub_80144A4(s32 *);
extern s32 sub_80969D0(u8);
-extern void sub_8012D08(struct unkData *, s32);
+extern void sub_8012D08(struct UnkTextStruct2 *, s32);
u32 CreateHelperPelipperMenu(s16 speciesID)
diff --git a/src/rescue_team_info.c b/src/rescue_team_info.c
index 205ce18..0f3b0f9 100644
--- a/src/rescue_team_info.c
+++ b/src/rescue_team_info.c
@@ -2,7 +2,7 @@
#include "rescue_team_info.h"
extern struct RescueTeamData *gRescueTeamInfoRef;
-extern struct RescueTeamData gRescueTeamInfo;
+EWRAM_DATA struct RescueTeamData gRescueTeamInfo;
extern void sub_809485C(u32 *r0, u8 *r1, u32 r2);
extern void sub_809486C(u32 *r0, u8 *r1, u32 r2);
@@ -131,7 +131,7 @@ u8 sub_80921B8(void)
return gRescueTeamInfoRef->unk10;
}
-u32 sub_80921C4(u8 *param_1, u32 param_2)
+u32 SaveRescueTeamInfo(u8 *param_1, u32 param_2)
{
u32 auStack36[4];
@@ -160,7 +160,7 @@ u32 sub_80921C4(u8 *param_1, u32 param_2)
return auStack36[2];
}
-u32 sub_809222C(u8 *param_1, u32 param_2)
+u32 ReadRescueTeamInfo(u8 *param_1, u32 param_2)
{
u32 auStack32 [4];
u8 byteArray[4];
diff --git a/src/save.c b/src/save.c
index 4f71d9a..b040f72 100644
--- a/src/save.c
+++ b/src/save.c
@@ -10,72 +10,69 @@
struct unk_struct
{
+ // size: 0x800
u32 unk0;
- u32 unk4;
- u32 unk8;
- u32 unkC;
- u32 unk10;
+ u8 unk4[0x10]; // has "POKE_DUNGEON__05
u32 unk14;
u32 unk18;
u32 unk1C;
- u32 padding[504];
+ u32 unk20;
+ u32 padding[503];
};
-struct unk_203B188
+struct SavePakRead
{
u32 state;
u32 readStatus;
};
+extern struct SavePakRead *gSavePakRead;
-extern struct unk_203B188 *gUnknown_203B188;
-
-struct unkStruct_203B18C
+struct SavePakWrite
{
u32 state;
s32 unk4;
u32 saveStatus;
struct OpenedFile *faceFile;
u8 *faceData;
- u16 unk14;
- u16 unk16;
- u8 unk18;
- u8 unk19;
- u8 unk1A;
- u8 unk1B;
- u16 pokeID;
+ u16 unk14;
+ u16 unk16;
+ u8 unk18;
+ u8 unk19;
+ u8 unk1A;
+ u8 unk1B;
+ u16 pokeID;
};
-extern struct unkStruct_203B18C *gUnknown_203B18C;
+extern struct SavePakWrite *gSavePakWrite;
-struct unkStruct_203B190
+struct QuickSaveRead
{
s32 state;
- u8 *unk4;
- u32 unk8;
- u8 unkC;
+ u8 *dest;
+ u32 size;
+ bool8 saveValid;
};
-extern struct unkStruct_203B190 *gUnknown_203B190;
+extern struct QuickSaveRead *gQuickSaveRead;
-struct unkStruct_203B194
+struct QuickSaveWrite
{
s32 state;
u8 *unk4;
u32 unk8;
u8 unkC;
- u8 fillD[3];
u32 quickSaveStatus;
};
-extern struct unkStruct_203B194 *gUnknown_203B194;
+extern struct QuickSaveWrite *gQuickSaveWrite;
extern s32 gUnknown_202DE28;
extern u32 gUnknown_203B17C;
extern char *gUnknown_203B180;
-extern u32 *gRecruitedPokemonRef;
-extern u32 *gUnknown_203B460;
+extern struct unkStruct_203B45C *gRecruitedPokemonRef;
+extern struct unkStruct_203B460 *gUnknown_203B460;
extern struct RescueTeamData *gRescueTeamInfoRef;
-extern u8 *gFriendAreas;
+extern bool8 *gFriendAreas;
extern u32 gUnknown_203B46C;
extern u8 *gUnknown_203B480;
extern u8 *gUnknown_203B484;
@@ -85,10 +82,17 @@ extern u32 gUnknown_203B490;
extern u32 gUnknown_203B494;
extern struct ExclusivePokemonData *gUnknown_203B498;
+ALIGNED(4) const char PokeDungeon_Text[] = _("POKE_DUNGEON__05");
+
+ALIGNED(4) const char fill_save0[] = _("pksdir0");
+ALIGNED(4) const char fill_save1[] = _("pksdir0");
+ALIGNED(4) const char fill_save2[] = _("pksdir0");
+ALIGNED(4) const char fill_save3[] = _("pksdir0");
+
ALIGNED(4) const char gSaveCorrupted[] = _("#+The game data is corrupted.\n"
"#+Your data will be erased.");
-ALIGNED(4) const char fill_save0[] = _("pksdir0");
+ALIGNED(4) const char fill_save4[] = _("pksdir0");
ALIGNED(4) const char gSavingAdventure[] = _("#+Saving your adventure...\n"
"#+Please don~27t turn off the power.");
@@ -105,7 +109,7 @@ ALIGNED(4) const char gSaveNotWritten[] = _("#+The data could not be written.\n"
ALIGNED(4) const char gSaveFailed[] = _("#+Save failed.");
-ALIGNED(4) const char fill_save1[] = _("pksdir0");
+ALIGNED(4) const char fill_save5[] = _("pksdir0");
ALIGNED(4) const char gUnknown_80D44C8[] = _("#+Your data was not properly saved~2c\n"
"#+so your game cannot be resumed\n"
@@ -114,7 +118,7 @@ ALIGNED(4) const char gUnknown_80D44C8[] = _("#+Your data was not properly saved
"#+Before shutting down~2c save in your\n"
"#+team base~2c or quicksave in a dungeon.");
-ALIGNED(4) const char fill_save2[] = _("pksdir0");
+ALIGNED(4) const char fill_save6[] = _("pksdir0");
ALIGNED(4) const char gUnknown_80D45AC[] = _("#+Quicksaving your adventure...\n"
"#+Please don~27t turn off the power.");
@@ -135,7 +139,7 @@ ALIGNED(4) const char gSaveNotWritten2[] = _("#+The data could not be written.\n
"#+and reinsert the DS Card.");
ALIGNED(4) const char gSaveFailed2[] = _("#+Save failed.");
-ALIGNED(4) const char fill_save3[] = _("pksdir0");
+ALIGNED(4) const char fill_save7[] = _("pksdir0");
extern volatile struct UnkStruct_203B184 *gUnknown_203B184;
@@ -147,15 +151,13 @@ extern void sub_80140DC();
extern void sub_8014114();
extern void sub_80141B4(const char *r0, u32 r1, u8 *r2, u16 r3);
extern u32 sub_80144A4(u32 *a);
-extern u32 sub_808ED78(u8 *, u32);
-extern u32 sub_808EE9C(void* a, s32 b);
+extern u32 SaveRecruitedPokemon(u8 *, u32);
+extern u32 ReadRecruitedPokemon(void* a, s32 b);
extern u32 sub_808F154(u8 *, u32);
extern u32 sub_808F2B0(void* a, s32 b);
extern u32 sub_8091C68(u8 *, u32);
extern u32 sub_8091D14(void* a, s32 b);
extern u32 sub_80921C4(u8 *, u32);
-extern u32 SaveFriendAreas(u8 *, u32);
-extern u32 ReadSavedFriendAreas(void* a, s32 b);
extern u8 *sub_8095100(void);
extern u32 *sub_8095108(void);
extern u32 *sub_8095110(void);
@@ -169,10 +171,6 @@ extern u32 sub_8097D60(u8 *, u32);
extern u32 sub_8097D98(void* a, s32 b);
extern void sub_80993E4();
extern void sub_800135C(void);
-extern u32 *GetRecruitedPokemon(void);
-extern void InitializeRecruitedPokemon(void);
-extern u32 *GetMoneyItemsInfo(void);
-extern void InitializeMoneyItems(void);
extern u32 GetGameOptions(void);
extern void InitializeGameOptions(u8 r0);
extern u8 *sub_80950F8(void);
@@ -183,7 +181,7 @@ extern void sub_80972F4(void);
extern u32 sub_8097680(void);
extern u32 *sub_809769C(void);
extern void sub_80974E8(void);
-extern void sub_8097748(void);
+extern void ResetNumAdventures(void);
extern void sub_80993D8(void);
extern struct PlayTimeStruct *gPlayTimeRef;
@@ -213,7 +211,7 @@ void sub_8011C40(s32 in)
char *sub_8011C4C(void)
{
- return gUnknown_203B180;
+ return gUnknown_203B180; // returns POKE_DUNGEON__05
}
void CalculateChecksum(u8 *out, u32 size)
@@ -304,15 +302,15 @@ u32 ReadSaveSector(s32 *a, u8 *dest, s32 size)
}
}
else {
- return 1;
+ return READ_SAVE_FAILED;
}
if (r1) {
- return 1;
+ return READ_SAVE_FAILED;
}
if (ValidateChecksum(dest, size)) {
- return 2;
+ return READ_SAVE_CHECKSUM_ERROR;
}
- return 0;
+ return READ_SAVE_VALID;
}
// Unused
@@ -346,12 +344,12 @@ u32 ReadSaveFromPak(u32 *a)
if (gUnknown_203B184 == NULL) {
sub_8011C28(r5->unk41C);
sub_8011C40(r5->unk418);
- SetRngState(r5->unk420);
+ SetRngState(r5->RngState);
}
else {
gUnknown_203B184->unk054 = r5->unk41C;
gUnknown_203B184->unk050 = r5->unk418;
- gUnknown_203B184->unk058 = r5->unk420;
+ gUnknown_203B184->RngState = r5->RngState;
}
}
if (!r7)
@@ -367,8 +365,8 @@ u32 ReadSaveFromPak(u32 *a)
}
if (!r7)
{
- r1 = sub_808EE9C(r4, 0x4650);
- if (r1 != r5->unk424) {
+ r1 = ReadRecruitedPokemon(r4, 0x4650);
+ if (r1 != r5->savedRecruitedPokemon) {
r7 = 3;
}
r4 += 0x4650;
@@ -382,8 +380,8 @@ u32 ReadSaveFromPak(u32 *a)
r7 = 3;
}
r4 += 0x1d8;
- r1 = sub_809222C(r4, 0x10);
- if (r1 != r5->unk434) {
+ r1 = ReadRescueTeamInfo(r4, 0x10);
+ if (r1 != r5->savedRescueTeamInfo) {
r7 = 3;
}
r4 += 0x10;
@@ -424,7 +422,7 @@ u32 sub_8011FA8(void)
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
temp = 0x1F;
temp2 = ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct));
- if( temp2 == 0)
+ if( temp2 == READ_SAVE_VALID)
{
if(r5->unk14 != 0x5071412)
{
@@ -432,7 +430,7 @@ u32 sub_8011FA8(void)
}
}
temp3 = 0xf1209;
- if(temp2 == 0)
+ if(temp2 == READ_SAVE_VALID)
{
temp3 = r5->unk18;
}
@@ -447,7 +445,7 @@ bool8 IsSaveCorrupted(void)
struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
temp = 0x1F;
isCorrupted = FALSE;
- if(ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct)) == 0)
+ if(ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct)) == READ_SAVE_VALID)
{
if(r5->unk14 == 0x5071412)
{
@@ -471,30 +469,30 @@ u32 WriteSavetoPak(s32 *param_1,u32 param_2)
if (gUnknown_203B184 == NULL) {
iVar1->unk41C = param_2;
iVar1->unk418 = sub_8011C34();
- iVar1->unk420 = GetRngState();
+ iVar1->RngState = GetRngState();
}
else {
iVar1->unk41C = gUnknown_203B184->unk054;
iVar1->unk418 = gUnknown_203B184->unk050;
- iVar1->unk420 = gUnknown_203B184->unk058;
+ iVar1->RngState = gUnknown_203B184->RngState;
}
iVar1->unk414 = 0x5071412;
__src = sub_8011C4C();
- strncpy(iVar1->unk404,__src,16);
+ strncpy(iVar1->unk404,__src, ARRAY_COUNT(iVar1->unk404));
if (gUnknown_203B184 == NULL) {
- sub_8002700(&iVar1->unk004);
+ sub_8002700(iVar1->unk004);
}
else {
- MemoryCopy8(iVar1->unk004,gUnknown_203B184->unk04C,0x400);
+ MemoryCopy8(iVar1->unk004,gUnknown_203B184->unk04C,ARRAY_COUNT(iVar1->unk004));
}
- iVar1->unk424 = sub_808ED78(array_ptr,0x4650);
+ iVar1->savedRecruitedPokemon = SaveRecruitedPokemon(array_ptr,0x4650);
array_ptr += 0x4650;
iVar1->unk428 = sub_808F154(array_ptr,0x258);
array_ptr += 0x258;
iVar1->unk430 = sub_8091C68(array_ptr,0x1D8);
array_ptr += 0x1D8;
- iVar1->unk434 = sub_80921C4(array_ptr,0x10);
+ iVar1->savedRescueTeamInfo = SaveRescueTeamInfo(array_ptr,0x10);
array_ptr += 0x10;
iVar1->savedFriendAreas = SaveFriendAreas(array_ptr,8);
array_ptr += 8;
@@ -508,12 +506,12 @@ u32 WriteSavetoPak(s32 *param_1,u32 param_2)
r4 = WriteSaveSector(param_1,(u8 *)iVar1,sizeof(struct UnkStruct_sub_8011DAC));
MemoryFree(iVar1);
- if (r5 != 0)
+ if (r5 != SAVE_COMPLETED)
return r5;
- if (r4 != 0)
+ if (r4 != SAVE_COMPLETED)
return r4;
- return 0; // Success
+ return SAVE_COMPLETED;
}
@@ -525,7 +523,7 @@ s32 sub_80121D4(s32 *a, u8 *src, s32 size)
u32 sub_80121E0(u32 r0)
{
u32 temp;
- char *temp2;
+ char *string;
u32 temp3;
struct unk_struct *r4 = MemoryAlloc(sizeof(struct unk_struct), 5);
temp = 0x1F;
@@ -534,8 +532,8 @@ u32 sub_80121E0(u32 r0)
r4->unk1C = *sub_809769C();
r4->unk14 = 0x5071412;
- temp2 = sub_8011C4C();
- strncpy((u8 *)r4 + 4, temp2, 16);
+ string = sub_8011C4C();
+ strncpy(r4->unk4, string, ARRAY_COUNT(r4->unk4));
sub_80958E4((u8 *)r4 + 32, 0);
temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct));
MemoryFree(r4);
@@ -591,7 +589,7 @@ void sub_80122D0(void)
{
sub_8011C28(0);
sub_8011C40(-1);
- sub_8097748();
+ ResetNumAdventures();
ResetPlayTime(gPlayTimeRef);
}
@@ -626,7 +624,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gUnknown_203B184 = r0;
if(r0 != NULL)
{
- gUnknown_203B460 = r0->unk0;
+ gUnknown_203B460 = r0->MoneyItems;
gRecruitedPokemonRef = r0->recruitedPokemon;
gUnknown_203B480 = r0->unk8;
gUnknown_203B484 = r0->unkC;
@@ -657,52 +655,52 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
}
-void sub_8012468(void)
+void PrepareSavePakRead(void)
{
- gUnknown_203B188 = MemoryAlloc(sizeof(struct unk_203B188), 5);
- gUnknown_203B188->state = 1;
+ gSavePakRead = MemoryAlloc(sizeof(struct SavePakRead), 5);
+ gSavePakRead->state = 1;
}
-u8 sub_8012484(void)
+u8 ReadSavePak(void)
{
u32 temp;
u32 temp2;
- switch(gUnknown_203B188->state)
+ switch(gSavePakRead->state)
{
case 0:
- gUnknown_203B188->state = 1;
+ gSavePakRead->state = 1;
break;
case 1:
temp = 0;
- gUnknown_203B188->readStatus = ReadSaveFromPak(&temp);
- gUnknown_203B188->state = 2;
+ gSavePakRead->readStatus = ReadSaveFromPak(&temp);
+ gSavePakRead->state = 2;
break;
case 2:
- if(gUnknown_203B188->readStatus != 0)
+ if(gSavePakRead->readStatus != READ_SAVE_VALID)
{
if(IsSaveCorrupted())
{
sub_80141B4(gSaveCorrupted, 0, 0, 0x301);
- gUnknown_203B188->state = 3;
+ gSavePakRead->state = 3;
}
else
{
- gUnknown_203B188->state = 4;
+ gSavePakRead->state = 4;
}
}
else
{
- gUnknown_203B188->state = 6;
+ gSavePakRead->state = 6;
}
break;
case 3:
if(sub_80144A4(&temp2) == 0)
- gUnknown_203B188->state = 4;
+ gSavePakRead->state = 4;
break;
case 4:
sub_8012298();
- gUnknown_203B188->state = 6;
+ gSavePakRead->state = 6;
case 5:
break;
case 6:
@@ -711,16 +709,16 @@ u8 sub_8012484(void)
return 1;
}
-void sub_8012558(void)
+void FinishReadSavePak(void)
{
- if(gUnknown_203B188 != NULL)
+ if(gSavePakRead != NULL)
{
- MemoryFree(gUnknown_203B188);
- gUnknown_203B188 = NULL;
+ MemoryFree(gSavePakRead);
+ gSavePakRead = NULL;
}
}
-void sub_8012574(s16 PokemonID)
+void PrepareSavePakWrite(s16 PokemonID)
{
struct OpenedFile *file;
s32 id_s32;
@@ -729,138 +727,138 @@ void sub_8012574(s16 PokemonID)
id_s32 = PokemonID; // had to cast for asr shift
sub_80993D8();
- gUnknown_203B18C = MemoryAlloc(sizeof(struct unkStruct_203B18C),5);
- gUnknown_203B18C->pokeID = id_s32;
- gUnknown_203B18C->faceFile = NULL;
- gUnknown_203B18C->faceData = NULL;
+ gSavePakWrite = MemoryAlloc(sizeof(struct SavePakWrite),5);
+ gSavePakWrite->pokeID = id_s32;
+ gSavePakWrite->faceFile = NULL;
+ gSavePakWrite->faceData = NULL;
if (PokemonID != 0) {
file = GetDialogueSpriteDataPtr(PokemonID);
- gUnknown_203B18C->faceFile = file;
- gUnknown_203B18C->faceData = file->data;
- gUnknown_203B18C->unk18 = 0;
- gUnknown_203B18C->unk19 = 0;
- gUnknown_203B18C->unk1A = 0;
- gUnknown_203B18C->unk14 = 2;
- gUnknown_203B18C->unk16 = 8;
+ gSavePakWrite->faceFile = file;
+ gSavePakWrite->faceData = file->data;
+ gSavePakWrite->unk18 = 0;
+ gSavePakWrite->unk19 = 0;
+ gSavePakWrite->unk1A = 0;
+ gSavePakWrite->unk14 = 2;
+ gSavePakWrite->unk16 = 8;
}
- if (gUnknown_203B18C->faceFile != 0) {
- preload_face = (u8 *)&gUnknown_203B18C->faceFile;
+ if (gSavePakWrite->faceFile != 0) {
+ preload_face = (u8 *)&gSavePakWrite->faceFile;
sub_80141B4(gSavingAdventure,0,preload_face,0x20);
}
else {
sub_80141B4(gSavingAdventure,0,0,0x20);
}
- gUnknown_203B18C->state = 3;
+ gSavePakWrite->state = 3;
}
-bool8 sub_8012600(void)
+bool8 WriteSavePak(void)
{
struct OpenedFile **faceFile;
u32 local_14;
u32 other_stack;
faceFile = NULL;
- if (gUnknown_203B18C->faceFile != 0) {
- faceFile = &gUnknown_203B18C->faceFile;
+ if (gSavePakWrite->faceFile != 0) {
+ faceFile = &gSavePakWrite->faceFile;
}
- switch(gUnknown_203B18C->state)
+ switch(gSavePakWrite->state)
{
case 0:
- gUnknown_203B18C->state = 7;
+ gSavePakWrite->state = 7;
break;
case 1:
- gUnknown_203B18C->unk4++;
- if (gUnknown_203B18C->unk4 > 8) {
+ gSavePakWrite->unk4++;
+ if (gSavePakWrite->unk4 > 8) {
sub_80141B4(gWriteGamePak, 0, 0, 0x20);
- gUnknown_203B18C->state = 3;
+ gSavePakWrite->state = 3;
}
break;
case 2:
break;
case 3:
- gUnknown_203B18C->state = 4;
+ gSavePakWrite->state = 4;
break;
case 4:
local_14 = 0;
sub_80140DC();
- gUnknown_203B18C->saveStatus = WriteSavetoPak(&local_14, sub_8011C1C());
- switch(gUnknown_203B18C->saveStatus)
+ gSavePakWrite->saveStatus = WriteSavetoPak(&local_14, sub_8011C1C());
+ switch(gSavePakWrite->saveStatus)
{
case SAVE_COMPLETED:
- if(gUnknown_203B18C->faceFile != NULL)
+ if(gSavePakWrite->faceFile != NULL)
sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
else
sub_80141B4(gSaveCompleted, 0, (u8 *)faceFile, 0x101);
- gUnknown_203B18C->state = 5;
+ gSavePakWrite->state = 5;
break;
case SAVE_NOT_WRTTEN:
sub_80141B4(gSaveNotWritten, 0, 0, 0);
- gUnknown_203B18C->state = 6;
+ gSavePakWrite->state = 6;
break;
default:
- if(gUnknown_203B18C->faceFile != NULL)
+ if(gSavePakWrite->faceFile != NULL)
sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
else
sub_80141B4(gSaveFailed, 0, (u8 *)faceFile, 0x101);
- gUnknown_203B18C->state = 5;
+ gSavePakWrite->state = 5;
break;
}
sub_8014114();
break;
case 5:
if (sub_80144A4(&other_stack) == 0)
- gUnknown_203B18C->state = 7;
+ gSavePakWrite->state = 7;
break;
case 6:
break;
case 7:
- return 0;
+ return FALSE;
}
- return 1;
+ return TRUE;
}
-u32 sub_8012744(void)
+u32 GetSavePakStatus(void)
{
- return gUnknown_203B18C->saveStatus;
+ return gSavePakWrite->saveStatus;
}
-void sub_8012750(void)
+void FinishWriteSavePak(void)
{
- if(gUnknown_203B18C != NULL)
+ if(gSavePakWrite != NULL)
{
- if(gUnknown_203B18C->faceFile != NULL)
- CloseFile(gUnknown_203B18C->faceFile);
- MemoryFree(gUnknown_203B18C);
- gUnknown_203B18C = NULL;
+ if(gSavePakWrite->faceFile != NULL)
+ CloseFile(gSavePakWrite->faceFile);
+ MemoryFree(gSavePakWrite);
+ gSavePakWrite = NULL;
}
sub_80993E4();
}
-void sub_801277C(u8 *r0, u32 r1)
+void PrepareQuickSaveRead(u8 *dest, u32 size)
{
- gUnknown_203B190 = MemoryAlloc(sizeof(struct unkStruct_203B190), 5);
- gUnknown_203B190->unk4 = r0;
- gUnknown_203B190->unk8 = r1;
- gUnknown_203B190->unkC = 0;
- gUnknown_203B190->state = 1;
+ gQuickSaveRead = MemoryAlloc(sizeof(struct QuickSaveRead), 5);
+ gQuickSaveRead->dest = dest;
+ gQuickSaveRead->size = size;
+ gQuickSaveRead->saveValid = FALSE;
+ gQuickSaveRead->state = 1;
}
-u32 sub_80127A8(void)
+bool8 ReadQuickSave(void)
{
u32 stack_1;
u32 stack_2;
- switch(gUnknown_203B190->state)
+ switch(gQuickSaveRead->state)
{
case 0:
- gUnknown_203B190->state = 1;
+ gQuickSaveRead->state = 1;
break;
case 1:
stack_1 = 16;
- if(sub_8011F9C(&stack_1, gUnknown_203B190->unk4, gUnknown_203B190->unk8) == 0)
+ if(sub_8011F9C(&stack_1, gQuickSaveRead->dest, gQuickSaveRead->size) == READ_SAVE_VALID)
{
- gUnknown_203B190->unkC = 1;
- gUnknown_203B190->state = 3;
+ gQuickSaveRead->saveValid = TRUE;
+ gQuickSaveRead->state = 3;
}
else
{
@@ -870,42 +868,42 @@ u32 sub_80127A8(void)
// Before shutting down, save in your
// team base or quicksave in a dungeon
sub_80141B4(gUnknown_80D44C8, 0, 0, 0x301);
- gUnknown_203B190->state = 2;
+ gQuickSaveRead->state = 2;
}
break;
case 2:
if(sub_80144A4(&stack_2) == 0)
- gUnknown_203B190->state = 3;
+ gQuickSaveRead->state = 3;
break;
case 3:
- return 0;
+ return FALSE;
default:
break;
}
- return 1;
+ return TRUE;
}
-u8 sub_8012828(void)
+bool8 IsQuickSaveValid(void)
{
- return gUnknown_203B190->unkC;
+ return gQuickSaveRead->saveValid;
}
-void sub_8012834(void)
+void FinishQuickSaveRead(void)
{
- if(gUnknown_203B190 != NULL){
- MemoryFree(gUnknown_203B190);
- gUnknown_203B190 = 0;
+ if(gQuickSaveRead != NULL){
+ MemoryFree(gQuickSaveRead);
+ gQuickSaveRead = 0;
}
}
-void sub_8012850(u8 *r0, u32 r1, u8 r2)
+void PrepareQuickSaveWrite(u8 *r0, u32 r1, u8 r2)
{
- gUnknown_203B194 = MemoryAlloc(sizeof(struct unkStruct_203B194), 5);
- gUnknown_203B194->unk4 = r0;
- gUnknown_203B194->unk8 = r1;
- gUnknown_203B194->unkC = r2;
- gUnknown_203B194->state = 0;
- if(gUnknown_203B194->unkC != 0)
+ gQuickSaveWrite = MemoryAlloc(sizeof(struct QuickSaveWrite), 5);
+ gQuickSaveWrite->unk4 = r0;
+ gQuickSaveWrite->unk8 = r1;
+ gQuickSaveWrite->unkC = r2;
+ gQuickSaveWrite->state = 0;
+ if(gQuickSaveWrite->unkC != 0)
// Quicksaving your adventure...
// Please don't turn off the power.
sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
@@ -915,30 +913,30 @@ void sub_8012850(u8 *r0, u32 r1, u8 r2)
sub_80141B4(gUnknown_80D45AC, 0, 0, 0x20);
}
-u32 sub_80128B0(void)
+u32 WriteQuickSave(void)
{
u32 stack_1;
u32 stack_2;
- switch(gUnknown_203B194->state)
+ switch(gQuickSaveWrite->state)
{
case 0:
- gUnknown_203B194->state = 1;
+ gQuickSaveWrite->state = 1;
break;
case 1:
sub_80140DC();
stack_1 = 16;
- gUnknown_203B194->quickSaveStatus = sub_80121D4(&stack_1, gUnknown_203B194->unk4, gUnknown_203B194->unk8);
- gUnknown_203B194->state = 2;
+ gQuickSaveWrite->quickSaveStatus = sub_80121D4(&stack_1, gQuickSaveWrite->unk4, gQuickSaveWrite->unk8);
+ gQuickSaveWrite->state = 2;
return 1;
case 2:
stack_1 = 0;
- if(gUnknown_203B194->quickSaveStatus == 0)
- gUnknown_203B194->quickSaveStatus = WriteSavetoPak(&stack_1, 2);
- switch(gUnknown_203B194->quickSaveStatus)
+ if(gQuickSaveWrite->quickSaveStatus == 0)
+ gQuickSaveWrite->quickSaveStatus = WriteSavetoPak(&stack_1, 2);
+ switch(gQuickSaveWrite->quickSaveStatus)
{
case SAVE_COMPLETED:
sub_80121E0(0xf1207);
- if(gUnknown_203B194->unkC != 0)
+ if(gQuickSaveWrite->unkC != 0)
// Your adventure has been saved
// When you are in a dungeon, quicksave
// your progress before ending the game.
@@ -950,31 +948,31 @@ u32 sub_80128B0(void)
// save your progress in your team base,
// or quicksave in a dungeon.
sub_80141B4(gUnknown_80D4668, 0, 0, 0x301);
- gUnknown_203B194->state = 3;
+ gQuickSaveWrite->state = 3;
break;
case SAVE_NOT_WRTTEN:
// The data could not be written.
// Please turn off the power and remove
// and reinsert the DS Card
sub_80141B4(gSaveNotWritten2, 0, 0, 0);
- gUnknown_203B194->state = 4;
+ gQuickSaveWrite->state = 4;
break;
default:
sub_80121E0(0xf1209);
sub_80141B4(gSaveFailed2, 0, 0, 0x301);
- gUnknown_203B194->state = 3;
+ gQuickSaveWrite->state = 3;
break;
}
sub_8014114();
break;
case 3:
if(sub_80144A4(&stack_2) == 0)
- gUnknown_203B194->state = 5;
+ gQuickSaveWrite->state = 5;
break;
case 4:
break;
case 5:
- if(gUnknown_203B194->quickSaveStatus == SAVE_COMPLETED)
+ if(gQuickSaveWrite->quickSaveStatus == SAVE_COMPLETED)
return 2;
else
return 3;
@@ -985,11 +983,11 @@ u32 sub_80128B0(void)
return 0;
}
-void sub_80129FC()
+void FinishQuickSaveWrite()
{
- if (gUnknown_203B194) {
- MemoryFree(gUnknown_203B194);
- gUnknown_203B194 = NULL;
+ if (gQuickSaveWrite) {
+ MemoryFree(gQuickSaveWrite);
+ gQuickSaveWrite = NULL;
}
}
diff --git a/src/text_1.c b/src/text_1.c
new file mode 100644
index 0000000..068417c
--- /dev/null
+++ b/src/text_1.c
@@ -0,0 +1,27 @@
+#include "global.h"
+#include "text.h"
+
+extern struct UnkTextStruct2 gUnknown_202AFC0[4];
+extern u32 gUnknown_80B8814[];
+
+void nullsub_152(void)
+{
+}
+
+void sub_8006518(struct UnkTextStruct2 *unkData)
+{
+ s32 iVar2;
+ for(iVar2 = 0; iVar2 < 4; iVar2++)
+ {
+ unkData[iVar2] = gUnknown_202AFC0[iVar2];
+ }
+}
+
+void nullsub_153(void)
+{
+}
+
+u32 sub_8006544(u32 index)
+{
+ return gUnknown_80B8814[index];
+}
diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c
index cb86468..d9cdc33 100644
--- a/src/trade_items_menu.c
+++ b/src/trade_items_menu.c
@@ -3,13 +3,14 @@
#include "trade_items_menu.h"
#include "gUnknown_203B460.h"
#include "memory.h"
+#include "save.h"
extern struct TradeItemsMenu *gTradeItemsMenu;
extern struct unkStruct_203B460 *gUnknown_203B460;
extern u32 gUnknown_202DE30;
extern u32 gUnknown_202DE58;
-extern struct unkData gUnknown_80E6174;
+extern struct UnkTextStruct2 gUnknown_80E6174;
// Trade Items Menu Link Error Messages
extern u32 gTradeItemsCommunicationError;
@@ -36,18 +37,16 @@ extern u32 gUnknown_80E6314;
extern void sub_8013AA0(u32 *);
-extern void sub_800641C(u32 *, u32, u32);
extern void sub_8035C1C();
extern void sub_8035DA0();
extern s32 sub_80144A4(s32 *);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
extern u8 sub_801CB24();
-extern void sub_8006518(u32 *);
extern void sub_801B3C0(u8 *);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
-extern void sub_8035CC0(struct unkData *, u32);
+extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
extern void sub_801CCD8();
extern u32 sub_801B410();
extern void sub_801B450();
@@ -56,13 +55,8 @@ extern void sub_8035CF4(u32 *, u32, u32);
extern u32 sub_8013BBC(u32 *);
void sub_8036F30();
extern void TradeItem_AddItem();
-extern void sub_8012574(u32);
extern void sub_80141B4(u32 *, u32, u32, u32);
-extern void sub_8012574(u32);
-extern u8 sub_8012600(void);
-extern void sub_8012750();
-
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_8013C68(u32 *);
@@ -254,7 +248,7 @@ void sub_80365AC(void)
gTradeItemsMenu->unk4 = 2;
gTradeItemsMenu->chosenItem = sub_801CB24();
gTradeItemsMenu->chosenNum = 1;
- sub_8006518(&gTradeItemsMenu->unk1E4);
+ sub_8006518(gTradeItemsMenu->unk1E4);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gTradeItemsMenu->unk25C);
@@ -278,7 +272,7 @@ void sub_8036674(void)
break;
case 4: // Info
gTradeItemsMenu->unk4 = 0x13;
- sub_8006518(&gTradeItemsMenu->unk1E4);
+ sub_8006518(gTradeItemsMenu->unk1E4);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gTradeItemsMenu->unk25C);
@@ -302,7 +296,7 @@ void sub_8036728(void)
case 3:
sub_801B450();
ResetUnusedInputStruct();
- sub_800641C(&gTradeItemsMenu->unk1E4, 1, 1);
+ sub_800641C(gTradeItemsMenu->unk1E4, 1, 1);
sub_801CB5C(1);
if (gTradeItemsMenu->unk4 == 0x13) {
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 1);
@@ -363,7 +357,7 @@ void TradeItem_SendItemConfirm(void)
load -= gTradeItemsMenu->numItemsToSend;
gUnknown_203B460->unk50[gTradeItemsMenu->chosenItem] = load;
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
break;
case 6:
case 0:
@@ -405,7 +399,7 @@ void sub_80368D4(void)
{
TradeItem_AddItem();
SetTradeItemMenu(0x11);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
break;
}
@@ -444,7 +438,7 @@ void sub_8036950(void)
// Link Failure
TradeItem_AddItem(); // Add back the item
SetTradeItemMenu(0xb);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
else {
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
@@ -488,7 +482,7 @@ void sub_8036A34(void)
if(sub_80144A4(&temp) == 0)
{
SetTradeItemMenu(0x10);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
}
@@ -497,9 +491,9 @@ void sub_8036A54(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- if(sub_8012600() == 0)
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
SetTradeItemMenu(TRADE_ITEMS_EXIT);
}
}
@@ -510,9 +504,9 @@ void sub_8036A7C(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- if(sub_8012600() == 0)
+ if(!WriteSavePak())
{
- sub_8012750(); // cleans up from Save Message
+ FinishWriteSavePak(); // cleans up from Save Message
SetTradeItemMenu(0x8);
}
}
@@ -523,9 +517,9 @@ void sub_8036AA4(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- if(sub_8012600() == 0)
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus);
SetTradeItemMenu(0xC);
}
@@ -537,9 +531,9 @@ void sub_8036ADC(void)
s32 temp;
if(sub_80144A4(&temp) == 0)
{
- if(sub_8012600() == 0)
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
SetTradeItemMenu(TRADE_ITEMS_EXIT);
}
}
@@ -1079,7 +1073,7 @@ void sub_8036ECC(u32 index, u32 r1)
sub_8013AA0(&gTradeItemsMenu->numItemsToSend);
gTradeItemsMenu->unk184[index] = gUnknown_80E6174;
ResetUnusedInputStruct();
- sub_800641C((u32 *)&gTradeItemsMenu->unk184, 1, 1);
+ sub_800641C(gTradeItemsMenu->unk184, 1, 1);
}
void sub_8036F30(void)
@@ -1097,7 +1091,7 @@ void sub_8036F30(void)
void sub_8036F74(void)
{
- sub_8006518((u32 *)&gTradeItemsMenu->unk184);
+ sub_8006518(gTradeItemsMenu->unk184);
sub_8036ECC(2, gUnknown_203B460->unk50[gTradeItemsMenu->chosenItem]);
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0);
diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c
index 2d22ef1..beb5205 100644
--- a/src/unk_menu_203B360.c
+++ b/src/unk_menu_203B360.c
@@ -2,15 +2,7 @@
#include "input.h"
#include "main_menu.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[14];
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u8 *unk14;
-};
+#include "text.h"
struct unkStruct_203B360
{
@@ -19,21 +11,20 @@ struct unkStruct_203B360
u32 unk4; // state
u32 unk8;
u8 fill8[0x148 - 0xC];
- struct unkData unk148[4];
+ struct UnkTextStruct2 unk148[4];
u32 unk1A8;
u32 unk1AC;
u32 unk1B0; // sprite count?
};
extern struct unkStruct_203B360 *gUnknown_203B360;
-extern struct unkData gUnknown_80E6E7C;
-extern struct unkData gUnknown_80E6E94;
+extern struct UnkTextStruct2 gUnknown_80E6E7C;
+extern struct UnkTextStruct2 gUnknown_80E6E94;
extern struct MenuItem gUnknown_80E6EAC[];
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
-extern void sub_800641C(void *, u32, u32);
-extern void SetMenuItems(void *, struct unkData *, u32, struct unkData *, struct MenuItem *, u32, u32, u32);
+extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_80384D0();
diff --git a/src/unk_menu_203B360_1.c b/src/unk_menu_203B360_1.c
index 1b84f52..743b134 100644
--- a/src/unk_menu_203B360_1.c
+++ b/src/unk_menu_203B360_1.c
@@ -1,13 +1,5 @@
#include "global.h"
-
-struct unkData
-{
- u8 unk0[14];
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u8 *unk14;
-};
+#include "text.h"
struct unkStruct_203B360
{
@@ -16,7 +8,7 @@ struct unkStruct_203B360
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
- struct unkData unk148[4];
+ struct UnkTextStruct2 unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
diff --git a/src/unk_menu_203B364.c b/src/unk_menu_203B364.c
index 4d8a716..c4dcd62 100644
--- a/src/unk_menu_203B364.c
+++ b/src/unk_menu_203B364.c
@@ -3,15 +3,7 @@
#include "menu.h"
#include "main_menu.h"
#include "memory.h"
-
-struct unkData
-{
- u8 unk0[14];
- u16 unkD;
- u16 unk10;
- u16 unk12;
- u8 *unk14;
-};
+#include "text.h"
struct unkStruct_203B360
{
@@ -20,7 +12,7 @@ struct unkStruct_203B360
u32 unk4;
u32 unk8;
u8 fill8[0x148 - 0xC];
- struct unkData unk148[4];
+ struct UnkTextStruct2 unk148[4];
u16 unk1A8;
u16 unk1AA;
u16 unk1AC;
@@ -29,15 +21,14 @@ struct unkStruct_203B360
};
extern struct unkStruct_203B360 *gUnknown_203B364;
-extern struct unkData gUnknown_80E6F20;
-extern struct unkData gUnknown_80E6F38;
+extern struct UnkTextStruct2 gUnknown_80E6F20;
+extern struct UnkTextStruct2 gUnknown_80E6F38;
extern struct MenuItem gUnknown_80E7090[];
extern struct MenuItem gUnknown_80E6F50[];
extern void sub_8038440();
extern void sub_8035CF4(u32 *, u32, u32);
-extern void sub_800641C(void *, u32, u32);
-extern void SetMenuItems(void *, struct unkData *, u32, struct unkData *, struct MenuItem *, u32, u32, u32);
+extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
extern u8 sub_80130A8(u32 *);
extern void sub_8013114(u32 *, u32 *);
extern void sub_80384D0();
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index 48bb3fc..05d3d03 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -5,6 +5,7 @@
#include "constants/species.h"
#include "wonder_mail.h"
#include "memory.h"
+#include "text.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
@@ -76,16 +77,13 @@ extern void sub_803084C();
extern u32 sub_8030768(u32);
extern s8 sub_80307EC();
extern void sub_8030D40(u8, u32);
-extern void sub_8006518(u32 *r0);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8030810(u32);
-extern void sub_8035CC0(u32 *r0, u32);
+extern void sub_8035CC0(struct UnkTextStruct2 *r0, u32);
extern void sub_8035CF4(u32 *r0, u32, u32);
extern u32 sub_8030DA0(void);
extern void sub_8030DE4(void);
extern void sub_803092C(void);
-extern void sub_8011C28(u32);
-
extern u32 sub_80154F0();
extern u32 sub_8039068(u32, u8 *r1, u8 *r0);
@@ -94,7 +92,6 @@ extern void sub_8095274(u32);
extern void sub_80155F0();
extern void sub_80951BC(u8 *r0);
extern void sub_8013114(u32 *r0, s32 *r1);
-extern void sub_8035CC0(u32 *r0, u32);
extern void sub_8023C60();
extern u32 sub_8023A94(u32);
extern void sub_8024458(s16, u32);
@@ -164,7 +161,6 @@ extern u8 sub_8099B94();
extern void sub_8099A5C(u32, u32, u32*);
extern void sub_8099AFC(u32, u32, u32*);
-extern void sub_800641C(void *, u32, u32);
extern void ResetUnusedInputStruct();
extern void sub_8099690(u32);
extern void sub_80141B4(const char *r0, u32, u32 *r1, u32);
@@ -178,10 +174,8 @@ extern void sub_8030D40(u8, u32);
extern u32 sub_8030768(u32);
extern void sub_803084C(void);
extern s8 sub_80307EC(void);
-extern void sub_8006518(u32 *);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
-extern void sub_8035CC0(u32 *, u32);
extern void sub_8030810(u32);
extern u32 sub_8030DA0();
extern void sub_8030DE4();
@@ -200,7 +194,7 @@ extern void sub_8011C28(u32);
void sub_8028B04(u32 r0)
{
- gUnknown_203B2C0->unk4 = r0;
+ gUnknown_203B2C0->state = r0;
nullsub_130();
sub_8028348();
}
@@ -484,7 +478,7 @@ void sub_8028E84()
}
sub_8028B04(24);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
void sub_8028EAC()
@@ -495,9 +489,9 @@ void sub_8028EAC()
{
return;
}
- if(!sub_8012600())
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
sub_8028B04(25);
}
}
@@ -549,7 +543,7 @@ void sub_8028F30()
}
sub_8028B04(22);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
void sub_8028F58()
@@ -560,9 +554,9 @@ void sub_8028F58()
{
return;
}
- if(!sub_8012600())
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
sub_8028B04(2);
}
}
@@ -644,7 +638,7 @@ void sub_8029044(void)
case 4:
gUnknown_203B2C0->unk0 = 0x1F;
gUnknown_203B2C0->unk218 = sub_80307EC();
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8030D40(gUnknown_203B2C0->unk218, 0);
@@ -665,14 +659,14 @@ void sub_80290D4(void)
void sub_80290F0(void)
{
- s32 temp;
- temp = -1;
+ s32 menuAction;
+ menuAction = -1;
sub_8030768(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
{
- sub_8013114(&(gUnknown_203B2C0->unk30C), &temp);
+ sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
}
- switch(temp)
+ switch(menuAction)
{
case 11:
sub_803084C();
@@ -680,7 +674,7 @@ void sub_80290F0(void)
break;
case 12:
gUnknown_203B2C0->unk0 = 0x3D;
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8030D40(gUnknown_203B2C0->unk218, 0);
@@ -688,7 +682,7 @@ void sub_80290F0(void)
break;
case 4:
case 10:
- sub_8035CC0(&(gUnknown_203B2C0->unk35C), 2);
+ sub_8035CC0(gUnknown_203B2C0->unk35C, 2);
sub_8030810(1);
sub_8028B04(31);
break;
@@ -705,7 +699,7 @@ void sub_80291AC(void)
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
- sub_800641C(&(gUnknown_203B2C0->unk3BC), 1, 1);
+ sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
sub_803092C();
if(gUnknown_203B2C0->unk0 == 0x3D)
{
@@ -733,7 +727,7 @@ void sub_8029208(void)
case 13:
case 14:
- gUnknown_203B2C0->unk534 = 0xD;
+ gUnknown_203B2C0->unk534 = 13;
switch(gUnknown_203B2C0->unk538)
{
case 0:
@@ -747,7 +741,7 @@ void sub_8029208(void)
}
break;
case 15:
- gUnknown_203B2C0->unk534 = temp;
+ gUnknown_203B2C0->unk534 = 15;
switch(gUnknown_203B2C0->unk538)
{
case 0:
@@ -845,7 +839,7 @@ void sub_8029374(void)
}
sub_8028B04(0x24);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
void sub_802939C(void)
@@ -856,10 +850,10 @@ void sub_802939C(void)
{
return;
}
- if(!sub_8012600())
+ if(!WriteSavePak())
{
- saveStatus = sub_8012744();
- sub_8012750();
+ saveStatus = GetSavePakStatus();
+ FinishWriteSavePak();
if(saveStatus == SAVE_COMPLETED)
{
sub_8028B04(0x25);
@@ -892,7 +886,7 @@ void sub_80293F4(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), &temp.unk0))
+ switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0))
{
case 8:
case 9:
@@ -937,7 +931,7 @@ void sub_80293F4(void)
case 2:
sub_80155F0();
ResetUnusedInputStruct();
- sub_800641C(&(gUnknown_203B2C0->unk3BC), 1, 1);
+ sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
sub_8028B04(1);
break;
default:
@@ -1008,7 +1002,7 @@ void sub_80295D8(void)
case 4:
gUnknown_203B2C0->unk0 = 0x2A;
gUnknown_203B2C0->unk218 = sub_80307EC();
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8030D40(gUnknown_203B2C0->unk218, 0);
@@ -1029,14 +1023,14 @@ void sub_8029668(void)
void sub_8029684(void)
{
- s32 temp;
- temp = -1;
+ s32 menuAction;
+ menuAction = -1;
sub_8030768(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
{
- sub_8013114(&(gUnknown_203B2C0->unk30C), &temp);
+ sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
}
- switch(temp)
+ switch(menuAction)
{
case 0xB:
sub_803084C();
@@ -1044,7 +1038,7 @@ void sub_8029684(void)
break;
case 0xC:
gUnknown_203B2C0->unk0 = 0x3D;
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8030D40(gUnknown_203B2C0->unk218, 0);
@@ -1052,7 +1046,7 @@ void sub_8029684(void)
break;
case 0x4:
case 0xA:
- sub_8035CC0(&(gUnknown_203B2C0->unk35C),2);
+ sub_8035CC0(gUnknown_203B2C0->unk35C,2);
sub_8030810(1);
sub_8028B04(0x2A);
break;
@@ -1067,7 +1061,7 @@ void sub_8029740(void)
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
- sub_800641C(&(gUnknown_203B2C0->unk3BC), 1, 1);
+ sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
sub_803092C();
if(gUnknown_203B2C0->unk0 == 0x3D)
{
@@ -1118,7 +1112,7 @@ void sub_80297D4(void)
case 4:
gUnknown_203B2C0->unk0 = 0x33;
gUnknown_203B2C0->unk544 = sub_8023B44();
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8024458(gUnknown_203B2C0->unk544, 0);
@@ -1129,14 +1123,14 @@ void sub_80297D4(void)
void sub_8029884(void)
{
- s32 temp;
- temp = -1;
+ s32 menuAction;
+ menuAction = -1;
sub_8023A94(0);
if(sub_8012FD8(&(gUnknown_203B2C0->unk30C)) == 0)
{
- sub_8013114(&(gUnknown_203B2C0->unk30C), &temp);
+ sub_8013114(&(gUnknown_203B2C0->unk30C), &menuAction);
}
- switch(temp)
+ switch(menuAction)
{
case 0xB:
sub_8023C60();
@@ -1144,7 +1138,7 @@ void sub_8029884(void)
break;
case 0xC:
gUnknown_203B2C0->unk0 = 0x3D;
- sub_8006518(&(gUnknown_203B2C0->unk3BC));
+ sub_8006518(gUnknown_203B2C0->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0, 1, 1);
sub_8024458(gUnknown_203B2C0->unk544, 0);
@@ -1152,7 +1146,7 @@ void sub_8029884(void)
break;
case 0x4:
case 0xA:
- sub_8035CC0(&(gUnknown_203B2C0->unk35C), 3);
+ sub_8035CC0(gUnknown_203B2C0->unk35C, 3);
sub_8023B7C(1);
sub_8028B04(0x33);
break;
@@ -1176,7 +1170,7 @@ void sub_8029944(void)
case 3:
sub_802453C();
ResetUnusedInputStruct();
- sub_800641C(&(gUnknown_203B2C0->unk3BC), 1, 1);
+ sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
sub_8023B7C(1);
if(gUnknown_203B2C0->unk0 == 0x3D)
{
@@ -1278,9 +1272,9 @@ void sub_8029A88(void)
{
return;
}
- if(!sub_8012600())
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
sub_8028B04(0x39);
}
}
@@ -1294,7 +1288,7 @@ void sub_8029AB0(void)
}
sub_8028B04(0x38);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
void sub_8029AD8(void)
@@ -1316,7 +1310,7 @@ void sub_8029AF4(void)
case 3:
sub_8031E10();
ResetUnusedInputStruct();
- sub_800641C(&(gUnknown_203B2C0->unk3BC), 1, 1);
+ sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
sub_8028B04(0x3C);
break;
case 1:
@@ -1361,8 +1355,8 @@ u32 sub_8029B50(void)
gUnknown_203B2C4->unk428 = 2;
gUnknown_203B2C4->unk42A = 8;
- for(counter = 0; counter < 0x36; counter++){
- gUnknown_203B2C4->unk8[counter] = 0;
+ for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
+ gUnknown_203B2C4->passwordBuffer[counter] = 0;
}
gUnknown_203B2C4->unk534 = 3;
@@ -1388,7 +1382,7 @@ u32 sub_8029B50(void)
u32 sub_8029C98(void)
{
- switch(gUnknown_203B2C4->unk0) {
+ switch(gUnknown_203B2C4->state) {
case 5:
sub_802AB7C();
break;
@@ -1592,7 +1586,7 @@ void sub_8029F98(void)
if (sub_80144A4(&auStack20) != 0) {
return;
}
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, 4);
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct unkStruct_41C));
gUnknown_203B2C4->unk41C.unk41E = 0;
gUnknown_203B2C4->unk41C.unk41D = 1;
gUnknown_203B2C4->unk41C.unk41C = 0;
@@ -1637,7 +1631,7 @@ void sub_802A050(void)
case 2:
sub_8031E10();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
sub_802B2BC(0x1B);
break;
case 1:
@@ -1683,7 +1677,7 @@ void sub_802A0C8(void)
case 4:
gUnknown_203B2C4->unk4 = 0x10;
gUnknown_203B2C4->unk218 = sub_80307EC();
- sub_8006518(&gUnknown_203B2C4->unk3BC);
+ sub_8006518(gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
@@ -1703,15 +1697,15 @@ void sub_802A158(void)
void sub_802A174(void)
{
- s32 temp;
+ s32 menuAction;
- temp = -1;
+ menuAction = -1;
sub_8030768(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
- sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
+ sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
}
- switch(temp)
+ switch(menuAction)
{
case 0xB:
sub_803084C();
@@ -1719,7 +1713,7 @@ void sub_802A174(void)
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
- sub_8006518(&gUnknown_203B2C4->unk3BC);
+ sub_8006518(gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_8030D40(gUnknown_203B2C4->unk218,0);
@@ -1727,7 +1721,7 @@ void sub_802A174(void)
break;
case 0:
case 0xD:
- sub_8035CC0(&gUnknown_203B2C4->unk35C,2);
+ sub_8035CC0(gUnknown_203B2C4->unk35C,2);
sub_8030810(1);
sub_802B2BC(0x10);
default:
@@ -1743,7 +1737,7 @@ void sub_802A230(void)
case 3:
sub_8030DE4();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
sub_803092C();
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
@@ -1778,7 +1772,7 @@ void sub_802A28C(void)
case 4:
gUnknown_203B2C4->unk4 = 0x13;
gUnknown_203B2C4->unk41C.unk41E = sub_801CB24();
- sub_8006518(&gUnknown_203B2C4->unk3BC);
+ sub_8006518(gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gUnknown_203B2C4->unk41C);
@@ -1795,7 +1789,7 @@ void sub_802A33C(void)
case 3:
sub_801B450();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B2C4->unk3BC,1,1);
+ sub_800641C(gUnknown_203B2C4->unk3BC,1,1);
sub_801CB5C(1);
if (gUnknown_203B2C4->unk4 == 0x2b) {
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
@@ -1813,15 +1807,15 @@ void sub_802A33C(void)
void sub_802A39C(void)
{
- s32 temp;
+ s32 menuAction;
- temp = -1;
+ menuAction = -1;
sub_801CA08(0);
if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) {
- sub_8013114(&gUnknown_203B2C4->unk30C, &temp);
+ sub_8013114(&gUnknown_203B2C4->unk30C, &menuAction);
}
- switch(temp)
+ switch(menuAction)
{
case 0xB:
sub_801CBB8();
@@ -1829,7 +1823,7 @@ void sub_802A39C(void)
break;
case 0xC:
gUnknown_203B2C4->unk4 = 0x2b;
- sub_8006518(&gUnknown_203B2C4->unk3BC);
+ sub_8006518(gUnknown_203B2C4->unk3BC);
ResetUnusedInputStruct();
sub_800641C(0,1,1);
sub_801B3C0(&gUnknown_203B2C4->unk41C);
@@ -1837,7 +1831,7 @@ void sub_802A39C(void)
break;
case 0:
case 0xD:
- sub_8035CC0(&gUnknown_203B2C4->unk35C, 3);
+ sub_8035CC0(gUnknown_203B2C4->unk35C, 3);
sub_801CCD8();
sub_802B2BC(0x13);
default:
@@ -1879,7 +1873,7 @@ void sub_802A4AC(void)
{
sub_802B2BC(0x18);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
}
@@ -1913,7 +1907,7 @@ void sub_802A50C(void)
switch(return_var)
{
case 3:
- switch(sub_8039068(0x20,gUnknown_203B2C4->unk8,&temp.unk0))
+ switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0))
{
case 7:
case 8:
@@ -1956,7 +1950,7 @@ void sub_802A50C(void)
case 2:
sub_80155F0();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1);
+ sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
sub_802B2BC(1);
break;
}
@@ -1967,8 +1961,8 @@ void sub_802A68C(void)
s32 temp;
if (sub_80144A4(&temp) == 0) {
- if (sub_8012600() == 0) {
- sub_8012750();
+ if (!WriteSavePak()) {
+ FinishWriteSavePak();
sub_802B2BC(0xd);
}
}
@@ -1980,9 +1974,9 @@ void sub_802A6B4(void)
u32 temp;
if (sub_80144A4(&temp) == 0) {
- if (sub_8012600() == 0) {
- saveStatus = sub_8012744();
- sub_8012750();
+ if (!WriteSavePak()) {
+ saveStatus = GetSavePakStatus();
+ FinishWriteSavePak();
if (saveStatus == SAVE_COMPLETED) {
sub_802B2BC(0x20);
}
@@ -2000,7 +1994,7 @@ void sub_802A6F0(void)
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x18);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
}
@@ -2011,7 +2005,7 @@ void sub_802A718(void)
if (sub_80144A4(&temp) == 0) {
sub_802B2BC(0x25);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
}
diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c
index 84bc576..2791d0c 100644
--- a/src/wonder_mail_2.c
+++ b/src/wonder_mail_2.c
@@ -4,6 +4,8 @@
#include "pokemon.h"
#include "constants/species.h"
#include "memory.h"
+#include "text.h"
+#include "save.h"
struct unkStruct_203B2C8
{
@@ -19,9 +21,9 @@ struct unkStruct_203B2C8
/* 0x11 */ u8 unk11;
/* 0x12 */ u8 unk12;
/* 0x13 */ u8 unk13;
- /* 0x14 */ u8 unk14[4]; // Figure out size of this buffer
+ /* 0x14 */ u8 teamName[4]; // Figure out size of this buffer
u8 fill18[0x114 - 0x18];
- u8 unk114[0xA]; // holds species name
+ u8 speciesName[0xA]; // holds species name
u8 fill118[0x128 - 0x11E];
u16 unk128;
u8 unk12A;
@@ -72,16 +74,9 @@ extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern u32 sub_802F298();
extern void sub_802F2C0();
-extern u32 sub_8011C34();
-extern void sub_800641C(void *, u32, u32);
extern u8 sub_8099394(u8 *);
extern void sub_802B548(u32);
extern u32 sub_80144A4(s32 *);
-extern void sub_8011C28(u32);
-extern void sub_8012574(u32);
-extern void sub_8012750();
-extern bool8 sub_8012600();
-
extern void sub_802B560();
extern void sub_802B57C();
@@ -89,7 +84,7 @@ extern void sub_802B5B8();
extern void sub_802B5FC();
extern void sub_802B624();
-void sub_800D158(u8 *buffer, const char *text, ...);
+void ExpandPlaceholdersBuffer(u8 *buffer, const char *text, ...);
extern void sub_802F204(u8 *, u32);
extern void sub_803C37C(u8 *, u32, u8 *);
extern u32 sub_803C200(u8 *, u32);
@@ -183,13 +178,13 @@ void sub_802B3E0(void)
strcpy(teamNameBuffer,gUnknown_80DF9F0);
}
// Print and expand placeholders?
- sub_800D158(gUnknown_203B2C8->unk14,gUnknown_80DF9F8,teamNameBuffer);
+ ExpandPlaceholdersBuffer(gUnknown_203B2C8->teamName,gUnknown_80DF9F8,teamNameBuffer);
// Display to screen with Pelliper face
- sub_80141B4(gUnknown_203B2C8->unk14, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d);
+ sub_80141B4(gUnknown_203B2C8->teamName, 0, (u32 *)&gUnknown_203B2C8->faceFile, 0x10d);
break;
case 1:
monName = GetMonSpecies(SPECIES_PELIPPER);
- strcpy(gUnknown_203B2C8->unk114, monName);
+ strcpy(gUnknown_203B2C8->speciesName, monName);
gUnknown_203B2C8->unk128 = 0x130;
gUnknown_203B2C8->unk12A = 2;
gUnknown_203B2C8->unk12C = 0;
@@ -201,7 +196,7 @@ void sub_802B3E0(void)
gUnknown_203B2C8->unk132 = 0;
gUnknown_203B2C8->unk133 = 10;
gUnknown_203B2C8->unk134 = 0;
- sub_802F204(gUnknown_203B2C8->unk114, 0);
+ sub_802F204(gUnknown_203B2C8->speciesName, 0);
break;
case 2:
// I hope you will keep on rescuing your friends
@@ -260,7 +255,7 @@ void sub_802B5B8(void)
puVar3->unk28 = uVar2;
sub_802B548(3);
sub_8011C28(1);
- sub_8012574(0);
+ PrepareSavePakWrite(0);
}
}
@@ -269,8 +264,8 @@ void sub_802B5FC(void)
s32 temp;
if (sub_80144A4(&temp) == 0) {
- if (sub_8012600() == '\0') {
- sub_8012750();
+ if (!WriteSavePak()) {
+ FinishWriteSavePak();
sub_802B548(4);
}
}
diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c
index 204f622..2b475a8 100644
--- a/src/wonder_mail_main_menu.c
+++ b/src/wonder_mail_main_menu.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "save.h"
#include "memory.h"
+#include "text.h"
+#include "input.h"
#define EXIT_TO_MAIN_MENU 5
#define PASSWORD_SUCCESS 13
@@ -20,10 +22,9 @@ struct unkStruct_203B3E8
struct unkWonderMailData unk38; // 0x30 - 0x14
u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack)
u8 fill68[0x1EC - 0x68];
- u32 unk1EC;
- u8 fill1F0[0x24C - 0x1F0];
+ struct UnkTextStruct2 unk1EC[4];
u32 unk24C;
- u32 unk250;
+ u32 wonderMailStatus;
u8 fill254[0x3C0 - 0x254];
struct unkWonderMailData unk3C0; // 0x3C0 + 0x14
u8 fill3D0[0x490 - 0x3D4];
@@ -40,8 +41,6 @@ extern u32 sub_80144A4(s32 *);
extern u32 sub_8011C1C(void);
extern struct unkStruct_203B3E8 *gUnknown_203B3E8;
extern void sub_803A1C0(u8);
-extern void ResetUnusedInputStruct(void);
-extern void sub_800641C(void *, u32, u32);
extern void sub_8030DE4(void);
extern void sub_801B450(void);
extern void sub_803084C(void);
@@ -252,7 +251,7 @@ void sub_8039B58(void)
s32 temp;
if (sub_80144A4(&temp) == 0) {
- if (gUnknown_203B3E8->unk250 == 0) {
+ if (gUnknown_203B3E8->wonderMailStatus == 0) {
switch(gUnknown_203B3E8->unk24C){
case 9:
sub_803A1C0(7);
@@ -263,7 +262,7 @@ void sub_8039B58(void)
}
}
else {
- sub_8039BAC(gUnknown_203B3E8->unk250);
+ sub_8039BAC(gUnknown_203B3E8->wonderMailStatus);
sub_803A1C0(10);
}
}
@@ -328,7 +327,7 @@ void sub_8039C60(void)
case 3:
sub_80155F0();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
+ sub_800641C(gUnknown_203B3E8->unk1EC,1,1);
if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) )
{
// Invalid password
@@ -346,7 +345,7 @@ void sub_8039C60(void)
case 2:
sub_80155F0();
ResetUnusedInputStruct();
- sub_800641C(&gUnknown_203B3E8->unk1EC,1,1);
+ sub_800641C(gUnknown_203B3E8->unk1EC,1,1);
sub_803A1C0(EXIT_TO_MAIN_MENU);
break;
}
@@ -381,7 +380,7 @@ void sub_8039D68(void)
if(sub_80144A4(&iVar2) == 0)
{
sub_803A1C0(0xF);
- sub_8012574(0); // "Saving Adventure.."
+ PrepareSavePakWrite(0); // "Saving Adventure.."
}
}
@@ -399,9 +398,9 @@ void sub_8039DA4(void)
int iVar2;
if(sub_80144A4(&iVar2) == 0)
{
- if(!sub_8012600())
+ if(!WriteSavePak())
{
- sub_8012750();
+ FinishWriteSavePak();
sub_803A1C0(0x10);
}
}
diff --git a/src/wonder_mail_pre.c b/src/wonder_mail_pre.c
index 9d15ab3..4cf76c8 100644
--- a/src/wonder_mail_pre.c
+++ b/src/wonder_mail_pre.c
@@ -7,8 +7,6 @@
#include "memory.h"
-extern void sub_800641C(void *r0, u8, u8);
-
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
@@ -89,8 +87,8 @@ u32 sub_8027F88(void)
gUnknown_203B2C0->unk42E = 0;
gUnknown_203B2C0->unk428 = 2;
gUnknown_203B2C0->unk42A = 8;
- for(counter = 0; counter < 0x36; counter++){
- gUnknown_203B2C0->unk8[counter] = 0;
+ for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
+ gUnknown_203B2C0->passwordBuffer[counter] = 0;
}
gUnknown_203B2C0->unk0 = 0x3D;
sub_8028B04(0); // Set initial state to 0?