From c64aa61420ecfcc48877e0c5358e20a3e3e27876 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 13 Jul 2024 14:10:54 +0200 Subject: [PATCH] fix instances of sub80095e4 memes --- include/adventure_log.h | 12 +- include/code_801D9E4.h | 12 +- include/hints_menu1.h | 11 +- include/kecleon_bros2.h | 12 +- include/kecleon_bros3.h | 12 +- include/makuhita_dojo2.h | 9 +- include/pokemon_news1.h | 8 +- include/structs/struct_sub80095e4.h | 44 ++++++++ src/adventure_log.c | 137 ++++++----------------- src/code_801D9E4.c | 142 ++++++++---------------- src/code_801F428.c | 120 ++++++-------------- src/hints_menu1.c | 48 +------- src/kecleon_bros2.c | 141 +++++++----------------- src/kecleon_bros3.c | 140 +++++++----------------- src/makuhita_dojo2.c | 136 ++++++----------------- src/menu_input.c | 26 ++--- src/pokemon_news1.c | 110 ++++++------------- src/wonder_mail_3_mid.c | 163 ++++++++-------------------- 18 files changed, 376 insertions(+), 907 deletions(-) create mode 100644 include/structs/struct_sub80095e4.h diff --git a/include/adventure_log.h b/include/adventure_log.h index f1c33815a..f4b37a52b 100644 --- a/include/adventure_log.h +++ b/include/adventure_log.h @@ -4,18 +4,8 @@ #include "structs/menu.h" #include "structs/str_text.h" -// size: 0xA0 -typedef struct AdventureLog -{ - /* 0x0 */ MenuInputStruct input; - u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; - u8 unk9C[4]; -} AdventureLog; - void CleanAdventureLogScreen(void); bool8 CreateAdventureLogScreen(u32 kind); u32 HandleAdventureLogInput(bool8); -#endif // GUARD_ADVENTURE_LOG_H \ No newline at end of file +#endif // GUARD_ADVENTURE_LOG_H diff --git a/include/code_801D9E4.h b/include/code_801D9E4.h index 6d88d641c..a828449cf 100644 --- a/include/code_801D9E4.h +++ b/include/code_801D9E4.h @@ -4,16 +4,6 @@ #include "structs/menu.h" #include "structs/str_text.h" -// size: 0xA0 -struct unkStruct_203B258 -{ - /* 0x0 */ MenuInputStruct input; - u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; - u8 unk9C[4]; -}; - // size: 0x1C struct unkStruct_81188F0 { @@ -32,4 +22,4 @@ u32 sub_801DA78(void); s16 sub_801DAC0(void); void sub_801DB0C(void); -#endif // GUARD_CODE_801D9E4_H \ No newline at end of file +#endif // GUARD_CODE_801D9E4_H diff --git a/include/hints_menu1.h b/include/hints_menu1.h index 68dbd1225..629f3425c 100644 --- a/include/hints_menu1.h +++ b/include/hints_menu1.h @@ -4,15 +4,6 @@ #include "structs/menu.h" #include "structs/str_text.h" -// size: 0x9C -struct unkStruct_203B264 -{ - MenuInputStruct input; - u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; -}; - void CreateHintSelectionScreen(bool8 cursorSprite); s32 GetChosenHintIndex(void); @@ -20,4 +11,4 @@ bool8 sub_801E3F0(u32); u32 sub_801E474(bool8); void sub_801E54C(void); -#endif // GUARD_HINTS_MENU1_H \ No newline at end of file +#endif // GUARD_HINTS_MENU1_H diff --git a/include/kecleon_bros2.h b/include/kecleon_bros2.h index 6500558fa..65b3572d6 100644 --- a/include/kecleon_bros2.h +++ b/include/kecleon_bros2.h @@ -4,16 +4,6 @@ #include "structs/menu.h" #include "structs/str_text.h" -// size: 0xA0 -typedef struct unkStruct_203B214 -{ - /* 0x0 */ MenuInputStruct input; - u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; - u8 unk9C[4]; -} unkStruct_203B214; - bool8 sub_8019E40(u32); u32 sub_8019EDC(bool8); u8 sub_8019FB0(void); @@ -21,4 +11,4 @@ void sub_8019FCC(bool8); void sub_801A010(void); void sub_801A0D8(void); -#endif // GUARD_KECLEON_BROS2_H \ No newline at end of file +#endif // GUARD_KECLEON_BROS2_H diff --git a/include/kecleon_bros3.h b/include/kecleon_bros3.h index c815b448e..26fbb85fa 100644 --- a/include/kecleon_bros3.h +++ b/include/kecleon_bros3.h @@ -4,16 +4,6 @@ #include "structs/menu.h" #include "structs/str_text.h" -// size: 0xA0 -typedef struct unkStruct_203B21C -{ - /* 0x0 */ MenuInputStruct input; - u32 unk34; - UnkTextStruct2 *unk38; - UnkTextStruct2 unk3C[4]; - u8 unk9C[4]; -} unkStruct_203B21C; - u8 sub_801A20C(u32); u32 sub_801A2A8(bool8); u8 sub_801A37C(void); @@ -21,4 +11,4 @@ void sub_801A398(bool8); void sub_801A3DC(void); void sub_801A4A4(void); -#endif // GUARD_KECLEON_BROS3_H \ No newline at end of file +#endif // GUARD_KECLEON_BROS3_H diff --git a/include/makuhita_dojo2.h b/include/makuhita_dojo2.h index 85636a9be..a7c1d32bb 100644 --- a/include/makuhita_dojo2.h +++ b/include/makuhita_dojo2.h @@ -4,16 +4,13 @@ #include "constants/dungeon.h" #include "structs/menu.h" #include "structs/str_text.h" +#include "structs/struct_sub80095e4.h" // size: 0xD0 typedef struct MakuhitaDojoWork2 { s16 unk0[NUM_DUNGEON_MAZE]; - /* 0x30 */ MenuInputStruct input; - u32 unk64; - UnkTextStruct2 *unk68; - UnkTextStruct2 unk6C[4]; - u8 unkCC[4]; + /* 0x30 */ struct_Sub80095E4_2 s30; } MakuhitaDojoWork2; bool8 MakuhitaDojo_ReturnFalse(void); @@ -23,4 +20,4 @@ u32 sub_80303AC(bool8); s16 sub_8030418(void); void sub_8030480(void); -#endif // GUARD_MAKUHITA_DOJO2_H \ No newline at end of file +#endif // GUARD_MAKUHITA_DOJO2_H diff --git a/include/pokemon_news1.h b/include/pokemon_news1.h index 89ace4596..68458586b 100644 --- a/include/pokemon_news1.h +++ b/include/pokemon_news1.h @@ -4,15 +4,13 @@ #include "constants/wonder_mail.h" #include "structs/menu.h" #include "structs/str_text.h" +#include "structs/struct_sub80095e4.h" // size: 0xD4; struct unkStruct_203B2CC { /* 0x0 */ u8 receivedNewsletters[NUM_POKEMON_NEWS]; - /* 0x38 */ MenuInputStruct input; - u32 unk6C; - UnkTextStruct2 *unk70; - UnkTextStruct2 unk74[4]; + /* 0x38 */ struct_Sub80095E4 s38; }; u8 GetPokemonNewsIndex(void); @@ -23,4 +21,4 @@ u32 sub_802B720(bool8); void sub_802B7D0(bool8 cursorSprite); void sub_802B81C(void); -#endif // GUARD_POKEMON_NEWS1_H \ No newline at end of file +#endif // GUARD_POKEMON_NEWS1_H diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h new file mode 100644 index 000000000..a41a93cc7 --- /dev/null +++ b/include/structs/struct_sub80095e4.h @@ -0,0 +1,44 @@ +#ifndef GUARD_struct_sub80095e4_H +#define GUARD_struct_sub80095e4_H + +#include "structs/menu.h" +#include "structs/str_text.h" + +s32 sub_80095E4(s32 a0, s32 a1); + +// Struct related with sub_80095E4 +typedef struct struct_Sub80095E4 +{ + /* 0x0 */ MenuInputStruct input; + u32 unk34; + UnkTextStruct2 *unk38; + UnkTextStruct2 unk3C[4]; + // size: 0x9C +} struct_Sub80095E4; + +// Has 1 additional array. +// size: 0xA0 +typedef struct struct_Sub80095E4_2 +{ + /* 0x0 */ struct_Sub80095E4 s0; // s as in 'struct' ; decided to go against unk as to not have `->unk0->unk3C` + u8 unk9C[4]; +} struct_Sub80095E4_2; + +// Note: In order to get matching ASM, this macro had to be created. +// It's probable the code below is not exactly how it was originally written, but it generates the same asm. +#define SUB_80095E4_CALL(ptr) \ +{ \ + s16 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \ + UNUSED s32 a0_ = a0; \ + UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \ + UNUSED s32 new10 = a0 + 2; \ + s16 newE = a0; \ + \ + (ptr).unk3C[(ptr).unk34].unkE = newE; \ + (ptr).unk3C[(ptr).unk34].unk10 = a0 + 2; \ + \ + ResetUnusedInputStruct(); \ + sub_800641C((ptr).unk3C, TRUE, TRUE); \ +} + +#endif // GUARD_struct_sub80095e4_H diff --git a/src/adventure_log.c b/src/adventure_log.c index ff97dfc24..f2f67b91f 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -10,10 +10,11 @@ #include "menu_input.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" extern u32 gUnknown_202DE30; -static EWRAM_DATA_2 AdventureLog *sAdventureLog = {0}; +static EWRAM_DATA_2 struct_Sub80095E4_2 *sAdventureLog = {0}; #include "data/adventure_log.h" @@ -23,16 +24,16 @@ static void sub_8032084(); bool8 CreateAdventureLogScreen(u32 kind) { - sAdventureLog = MemoryAlloc(sizeof(AdventureLog), 8); - sAdventureLog->unk34 = kind; - sAdventureLog->unk38 = &sAdventureLog->unk3C[kind]; - sub_8006518(sAdventureLog->unk3C); - sAdventureLog->unk3C[sAdventureLog->unk34] = sUnknown_80E2008; - sAdventureLog->unk38->unk14 = sAdventureLog->unk9C; + sAdventureLog = MemoryAlloc(sizeof(*sAdventureLog), 8); + sAdventureLog->s0.unk34 = kind; + sAdventureLog->s0.unk38 = &sAdventureLog->s0.unk3C[kind]; + sub_8006518(sAdventureLog->s0.unk3C); + sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E2008; + sAdventureLog->s0.unk38->unk14 = sAdventureLog->unk9C; ResetUnusedInputStruct(); - sub_800641C(sAdventureLog->unk3C, TRUE, TRUE); - sub_8013818(&sAdventureLog->input, 0x20, 8, kind); + sub_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); + sub_8013818(&sAdventureLog->s0.input, 0x20, 8, kind); sub_8032084(); DisplayAdventureLog(); return TRUE; @@ -41,11 +42,11 @@ bool8 CreateAdventureLogScreen(u32 kind) u32 HandleAdventureLogInput(bool8 a0) { if (!a0) { - sub_8013660(&sAdventureLog->input); + sub_8013660(&sAdventureLog->s0.input); return 0; } - switch (GetKeyPress(&sAdventureLog->input)) { + switch (GetKeyPress(&sAdventureLog->s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -53,7 +54,7 @@ u32 HandleAdventureLogInput(bool8 a0) PlayMenuSoundEffect(0); return 3; default: - if (sub_8013938(&sAdventureLog->input)) { + if (sub_8013938(&sAdventureLog->s0.input)) { sub_8032084(); DisplayAdventureLog(); return 1; @@ -65,93 +66,23 @@ u32 HandleAdventureLogInput(bool8 a0) void CleanAdventureLogScreen(void) { if (sAdventureLog != NULL) { - sAdventureLog->unk3C[sAdventureLog->unk34] = sUnknown_80E1FF0; + sAdventureLog->s0.unk3C[sAdventureLog->s0.unk34] = sUnknown_80E1FF0; ResetUnusedInputStruct(); - sub_800641C(sAdventureLog->unk3C, TRUE, TRUE); + sub_800641C(sAdventureLog->s0.unk3C, TRUE, TRUE); MemoryFree(sAdventureLog); sAdventureLog = NULL; } } -#ifdef NONMATCHING // sub_80095E4 memes static void sub_8032084(void) { - u32 sVar2; - - sAdventureLog->unk9C[0] = sAdventureLog->unk20; - sAdventureLog->unk9C[1] = sAdventureLog->unk0.unk1E; + sAdventureLog->unk9C[0] = sAdventureLog->s0.input.unk20; + sAdventureLog->unk9C[1] = sAdventureLog->s0.input.unk1E; sAdventureLog->unk9C[2] = 11; sAdventureLog->unk9C[3] = 0; - // So a sign extend.. - sVar2 = sub_80095E4(sAdventureLog->unk0.unk1A, 12) + 2 << 0x10; - // TODO needs asr r3, r0, r16 - // and lsr r0, r0, r16 - sAdventureLog->unk3C[sAdventureLog->unk34].unkE = sVar2; - // Good past here except regs for this store - sAdventureLog->unk3C[sAdventureLog->unk34].unk10 = sVar2 + 2; - ResetUnusedInputStruct(); - sub_800641C(sAdventureLog->unk3C, TRUE, TRUE); + + SUB_80095E4_CALL(sAdventureLog->s0); } -#else -NAKED -static void sub_8032084(void) -{ - asm_unified("\tpush {r4,lr}\n" - "\tldr r4, _080320F4\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x20]\n" - "\tadds r0, 0x9C\n" - "\tmovs r2, 0\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x1E]\n" - "\tadds r0, 0x9D\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9E\n" - "\tmovs r1, 0xB\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9F\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0x1A\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x34]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x4A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x34]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x4C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_080320F4: .4byte sAdventureLog"); -} -#endif static void DisplayAdventureLog(void) { @@ -161,59 +92,59 @@ static void DisplayAdventureLog(void) u8 temp; s32 v1, v2, v3, v4, v5, v6; - sub_8008C54(sAdventureLog->unk34); - sub_80073B8(sAdventureLog->unk34); - r4 = sAdventureLog->input.unk1E * 8; + sub_8008C54(sAdventureLog->s0.unk34); + sub_80073B8(sAdventureLog->s0.unk34); + r4 = sAdventureLog->s0.input.unk1E * 8; r6 = r4; r6 += 10; - xxx_call_draw_string(r6, 0, sAdventureLogText, sAdventureLog->unk34, 0); + xxx_call_draw_string(r6, 0, sAdventureLogText, sAdventureLog->s0.unk34, 0); r4 += 4; r6 = r4 + (sAdventureLog->unk9C[2] * 8); - sub_8012BC4(r6, 0, sAdventureLog->input.unk1E + 1, 1, 7, sAdventureLog->unk34); + sub_8012BC4(r6, 0, sAdventureLog->s0.input.unk1E + 1, 1, 7, sAdventureLog->s0.unk34); - for (i = 0; i < sAdventureLog->input.unk1A; i++) { - temp = (sAdventureLog->input.unk1E * sAdventureLog->input.unk1C) + i; + for (i = 0; i < sAdventureLog->s0.input.unk1A; i++) { + temp = (sAdventureLog->s0.input.unk1E * sAdventureLog->s0.input.unk1C) + i; if (sub_8097710(temp)) { switch (temp) { case 12: v1 = sub_80978B8(); gUnknown_202DE30 = (s16)v1; - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 7: v2 = sub_8097880(); gUnknown_202DE30 = (s16)v2; - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 11: v3 = sub_8097838(); gUnknown_202DE30 = (s16)v3; - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 8: v4 = sub_80977B8(); gUnknown_202DE30 = v4; - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 9: v5 = sub_80977F8(); gUnknown_202DE30 = v5; - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; case 10: v6 = sub_8097870(); gUnknown_202DE30 = (s16)v6; // fallthrough default: - xxx_format_and_draw(8, sub_8013800(&sAdventureLog->input, i), GetAdventureLogLine(temp), sAdventureLog->unk34, 0); + xxx_format_and_draw(8, sub_8013800(&sAdventureLog->s0.input, i), GetAdventureLogLine(temp), sAdventureLog->s0.unk34, 0); break; } } else - xxx_call_draw_string(8, sub_8013800(&sAdventureLog->input, i), sPlaceholder, sAdventureLog->unk34, 0); + xxx_call_draw_string(8, sub_8013800(&sAdventureLog->s0.input, i), sPlaceholder, sAdventureLog->s0.unk34, 0); } - sub_80073E0(sAdventureLog->unk34); + sub_80073E0(sAdventureLog->s0.unk34); } diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index 6d891cdbf..18538057a 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -9,8 +9,9 @@ #include "menu_input.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" -static EWRAM_DATA_2 struct unkStruct_203B258 *sUnknown_203B258 = {0}; +static EWRAM_DATA_2 struct struct_Sub80095E4_2 *sUnknown_203B258 = {0}; extern struct unkStruct_81188F0 gUnknown_81188F0[10]; extern unkStruct_811BAF4 gUnknown_811BAF4[10]; @@ -22,15 +23,15 @@ static void sub_801DBD4(void); bool8 sub_801D9E4(void) { - sUnknown_203B258 = MemoryAlloc(sizeof(struct unkStruct_203B258), 8); - sUnknown_203B258->unk34 = 3; - sUnknown_203B258->unk38 = &sUnknown_203B258->unk3C[3]; - sub_8006518(sUnknown_203B258->unk3C); - sUnknown_203B258->unk3C[sUnknown_203B258->unk34] = sUnknown_80DBF88; - sUnknown_203B258->unk38->unk14 = sUnknown_203B258->unk9C; + sUnknown_203B258 = MemoryAlloc(sizeof(*sUnknown_203B258), 8); + sUnknown_203B258->s0.unk34 = 3; + sUnknown_203B258->s0.unk38 = &sUnknown_203B258->s0.unk3C[3]; + sub_8006518(sUnknown_203B258->s0.unk3C); + sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF88; + sUnknown_203B258->s0.unk38->unk14 = sUnknown_203B258->unk9C; ResetUnusedInputStruct(); - sub_800641C(sUnknown_203B258->unk3C, TRUE, TRUE); - sub_8013818(&sUnknown_203B258->input, 229, 10, sUnknown_203B258->unk34); + sub_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + sub_8013818(&sUnknown_203B258->s0.input, 229, 10, sUnknown_203B258->s0.unk34); sub_801DB54(); sub_801DBD4(); return TRUE; @@ -40,21 +41,21 @@ void sub_801DA58(s16 a0) { s32 cast; cast = a0; - sub_8013878(&sUnknown_203B258->input, cast); + sub_8013878(&sUnknown_203B258->s0.input, cast); sub_801DB54(); sub_801DBD4(); } u32 sub_801DA78(void) { - switch (GetKeyPress(&sUnknown_203B258->input)) { + switch (GetKeyPress(&sUnknown_203B258->s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; case INPUT_A_BUTTON: return 3; default: - if (sub_80138B8(&sUnknown_203B258->input, 1)) { + if (sub_80138B8(&sUnknown_203B258->s0.input, 1)) { sub_801DB54(); sub_801DBD4(); return 1; @@ -65,126 +66,73 @@ u32 sub_801DA78(void) s16 sub_801DAC0(void) { - return (sUnknown_203B258->input.unk1E * sUnknown_203B258->input.unk1C) + sUnknown_203B258->input.menuIndex; + return (sUnknown_203B258->s0.input.unk1E * sUnknown_203B258->s0.input.unk1C) + sUnknown_203B258->s0.input.menuIndex; } UNUSED static void sub_801DADC(bool8 a0) { - sUnknown_203B258->input.unk22 = 229; - sub_8013984(&sUnknown_203B258->input); + sUnknown_203B258->s0.input.unk22 = 229; + sub_8013984(&sUnknown_203B258->s0.input); sub_801DB54(); sub_801DBD4(); if (a0) - AddMenuCursorSprite(&sUnknown_203B258->input); + AddMenuCursorSprite(&sUnknown_203B258->s0.input); } void sub_801DB0C(void) { if (sUnknown_203B258 != NULL) { - sUnknown_203B258->unk3C[sUnknown_203B258->unk34] = sUnknown_80DBF70; + sUnknown_203B258->s0.unk3C[sUnknown_203B258->s0.unk34] = sUnknown_80DBF70; ResetUnusedInputStruct(); - sub_800641C(sUnknown_203B258->unk3C, TRUE, TRUE); + sub_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B258); sUnknown_203B258 = NULL; } } -NAKED // sub_80095E4 memes static void sub_801DB54(void) { - asm_unified( - "\tpush {r4,lr}\n" - "\tldr r4, _0801DBD0\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9C\n" - "\tmovs r2, 0\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9D\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9E\n" - "\tmovs r1, 0x8\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9F\n" - "\tstrb r2, [r0]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0x1A\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x34]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x4A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x34]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x4C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0801DBD0: .4byte sUnknown_203B258"); + sUnknown_203B258->unk9C[0] = 1; + sUnknown_203B258->unk9C[1] = 0; + sUnknown_203B258->unk9C[2] = 8; + sUnknown_203B258->unk9C[3] = 0; + + ResetUnusedInputStruct(); + sub_800641C(sUnknown_203B258->s0.unk3C, TRUE, TRUE); + + SUB_80095E4_CALL(sUnknown_203B258->s0); } static void sub_801DBD4(void) { unkStruct_811BAF4 *temp; struct unkStruct_81188F0 *temp2; - s32 y; -#ifndef NONMATCHING - register s32 x asm("r4"); -#else - s32 x; -#endif + s32 x, y, n; s16 index; int counter; - sub_8008C54(sUnknown_203B258->unk34); - sub_80073B8(sUnknown_203B258->unk34); - xxx_call_draw_string(10, 0, sField, sUnknown_203B258->unk34, 0); // Field + sub_8008C54(sUnknown_203B258->s0.unk34); + sub_80073B8(sUnknown_203B258->s0.unk34); + xxx_call_draw_string(10, 0, sField, sUnknown_203B258->s0.unk34, 0); // Field x = (sUnknown_203B258->unk9C[2] * 8) - 2; - sub_8012BC4(x, 0, sUnknown_203B258->input.unk1E + 1, 2, 7, sUnknown_203B258->unk34); + n = sUnknown_203B258->s0.input.unk1E + 1; + sub_8012BC4(x, 0, n, 2, 7, sUnknown_203B258->s0.unk34); - for (counter = 0; counter < sUnknown_203B258->input.unk1A; counter++) { - index = (sUnknown_203B258->input.unk1E * sUnknown_203B258->input.unk1C) + counter; + // This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. Remove if you don't care about matching. + if (x) { counter = 0; } + + for (counter = 0; counter < sUnknown_203B258->s0.input.unk1A; counter++) { + index = (sUnknown_203B258->s0.input.unk1E * sUnknown_203B258->s0.input.unk1C) + counter; temp = &gUnknown_811BAF4[index]; temp2 = &gUnknown_81188F0[temp->unk4]; - y = sub_8013800(&sUnknown_203B258->input, counter); - xxx_call_draw_string(8, y, temp2->text1, sUnknown_203B258->unk34, 0); + y = sub_8013800(&sUnknown_203B258->s0.input, counter); + xxx_call_draw_string(8, y, temp2->text1, sUnknown_203B258->s0.unk34, 0); - y = sub_8013800(&sUnknown_203B258->input, counter); - xxx_call_draw_string(62, y, temp->text, sUnknown_203B258->unk34, 0); + y = sub_8013800(&sUnknown_203B258->s0.input, counter); + xxx_call_draw_string(62, y, temp->text, sUnknown_203B258->s0.unk34, 0); } - sub_80073E0(sUnknown_203B258->unk34); -} \ No newline at end of file + sub_80073E0(sUnknown_203B258->s0.unk34); +} diff --git a/src/code_801F428.c b/src/code_801F428.c index d726236b2..d70f74e90 100644 --- a/src/code_801F428.c +++ b/src/code_801F428.c @@ -9,6 +9,7 @@ #include "pokemon.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" struct unkStruct_203B274 { @@ -16,11 +17,7 @@ struct unkStruct_203B274 PokemonStruct1 *pokeStruct; unkStruct_808E218_arg *unk4; unkStruct_808E218_arg unk8; - MenuInputStruct input; - s32 unk37C; - UnkTextStruct2 *unk380; - UnkTextStruct2 unk384[4]; - u8 unk3E4[4]; + struct_Sub80095E4_2 s348; }; extern struct unkStruct_203B274 *gUnknown_203B274; @@ -57,18 +54,18 @@ bool8 sub_801F428(s16 index, s32 param_2) gUnknown_203B274 = MemoryAlloc(sizeof(struct unkStruct_203B274), 0x8); gUnknown_203B274->pokeStruct = &gRecruitedPokemonRef->pokemon[index_s32]; gUnknown_203B274->unk4 = &gUnknown_203B274->unk8; - gUnknown_203B274->unk37C = param_2; - gUnknown_203B274->unk380 = &gUnknown_203B274->unk384[gUnknown_203B274->unk37C]; - sub_8006518(gUnknown_203B274->unk384); - gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2C4; - gUnknown_203B274->unk380->unk14 = gUnknown_203B274->unk3E4; - gUnknown_203B274->unk3E4[0] = 1; - gUnknown_203B274->unk3E4[1] = 0; - gUnknown_203B274->unk3E4[2] = 0xC; - gUnknown_203B274->unk3E4[3] = 0; + gUnknown_203B274->s348.s0.unk34 = param_2; + gUnknown_203B274->s348.s0.unk38 = &gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34]; + sub_8006518(gUnknown_203B274->s348.s0.unk3C); + gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2C4; + gUnknown_203B274->s348.s0.unk38->unk14 = gUnknown_203B274->s348.unk9C; + gUnknown_203B274->s348.unk9C[0] = 1; + gUnknown_203B274->s348.unk9C[1] = 0; + gUnknown_203B274->s348.unk9C[2] = 0xC; + gUnknown_203B274->s348.unk9C[3] = 0; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); - sub_8013818(&gUnknown_203B274->input, sub_801F7E4(), 4, param_2); + sub_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); + sub_8013818(&gUnknown_203B274->s348.s0.input, sub_801F7E4(), 4, param_2); sub_801F690(); sub_801F700(); return TRUE; @@ -77,11 +74,11 @@ bool8 sub_801F428(s16 index, s32 param_2) u32 sub_801F520(u8 param_1) { if (param_1 == 0) { - sub_8013660(&gUnknown_203B274->input); + sub_8013660(&gUnknown_203B274->s348.s0.input); return 0; } else { - switch(GetKeyPress(&gUnknown_203B274->input)) + switch(GetKeyPress(&gUnknown_203B274->s348.s0.input)) { case 2: PlayMenuSoundEffect(1); @@ -95,7 +92,7 @@ u32 sub_801F520(u8 param_1) default: break; } - if (sub_80138B8(&gUnknown_203B274->input,1) != 0) { + if (sub_80138B8(&gUnknown_203B274->s348.s0.input,1) != 0) { sub_801F690(); sub_801F700(); return 1; @@ -107,87 +104,36 @@ u32 sub_801F520(u8 param_1) } u16 sub_801F5B4(void) -{ - return gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + gUnknown_203B274->input.menuIndex]; +{ + return gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + gUnknown_203B274->s348.s0.input.menuIndex]; } void sub_801F5F0(bool8 r0) { ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, FALSE, FALSE); - sub_8013984(&gUnknown_203B274->input); + sub_800641C(gUnknown_203B274->s348.s0.unk3C, FALSE, FALSE); + sub_8013984(&gUnknown_203B274->s348.s0.input); sub_801F690(); sub_801F700(); if(r0) - AddMenuCursorSprite(&gUnknown_203B274->input); + AddMenuCursorSprite(&gUnknown_203B274->s348.s0.input); } void sub_801F63C(void) { if(gUnknown_203B274 != NULL) { - gUnknown_203B274->unk384[gUnknown_203B274->unk37C] = sUnknown_80DC2AC; + gUnknown_203B274->s348.s0.unk3C[gUnknown_203B274->s348.s0.unk34] = sUnknown_80DC2AC; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B274->unk384, TRUE, TRUE); + sub_800641C(gUnknown_203B274->s348.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B274); gUnknown_203B274 = NULL; } } -NAKED // sub_80095E4 memes void sub_801F690(void) { - asm_unified( - "\tpush {r4,r5,lr}\n" - "\tldr r5, _0801F6F4\n" - "\tldr r0, [r5]\n" - "\tldr r1, _0801F6F8\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tldrsh r0, [r0, r2]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r3, [r5]\n" - "\tmovs r1, 0xDF\n" - "\tlsls r1, 2\n" - "\tadds r4, r3, r1\n" - "\tldr r2, [r4]\n" - "\tlsls r1, r2, 1\n" - "\tadds r1, r2\n" - "\tlsls r1, 3\n" - "\tadds r1, r3, r1\n" - "\tldr r2, _0801F6FC\n" - "\tadds r1, r2\n" - "\tasrs r2, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r4]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r3, r0\n" - "\tadds r2, 0x2\n" - "\tmovs r0, 0xE5\n" - "\tlsls r0, 2\n" - "\tadds r3, r0\n" - "\tstrh r2, [r3]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r5]\n" - "\tmovs r1, 0xE1\n" - "\tlsls r1, 2\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0801F6F4: .4byte gUnknown_203B274\n" -"_0801F6F8: .4byte 0x00000362\n" -"_0801F6FC: .4byte 0x00000392"); + SUB_80095E4_CALL(gUnknown_203B274->s348.s0); } void sub_801F700(void) @@ -197,17 +143,17 @@ void sub_801F700(void) u8 buffer2 [48]; u8 buffer1 [128]; - sub_8008C54(gUnknown_203B274->unk37C); - sub_80073B8(gUnknown_203B274->unk37C); - sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->input.unk1E + 1,gUnknown_203B274->input.unk20); // Moves Page: %d/%d - xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->unk37C,0); - for(index = 0; index < gUnknown_203B274->input.unk1A; index++) + sub_8008C54(gUnknown_203B274->s348.s0.unk34); + sub_80073B8(gUnknown_203B274->s348.s0.unk34); + sprintfStatic(buffer1,gUnknown_80DC2DC,gUnknown_203B274->s348.s0.input.unk1E + 1,gUnknown_203B274->s348.s0.input.unk20); // Moves Page: %d/%d + xxx_call_draw_string(0x10,0,buffer1,gUnknown_203B274->s348.s0.unk34,0); + for(index = 0; index < gUnknown_203B274->s348.s0.input.unk1A; index++) { - sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->input.unk1E * gUnknown_203B274->input.unk1C + index]); - y = sub_8013800(&gUnknown_203B274->input, index); - xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->unk37C,0); + sub_8092C84(buffer2,gUnknown_203B274->unk4->unk0[gUnknown_203B274->s348.s0.input.unk1E * gUnknown_203B274->s348.s0.input.unk1C + index]); + y = sub_8013800(&gUnknown_203B274->s348.s0.input, index); + xxx_call_draw_string(8,y,buffer2,gUnknown_203B274->s348.s0.unk34,0); } - sub_80073E0(gUnknown_203B274->unk37C); + sub_80073E0(gUnknown_203B274->s348.s0.unk34); } u32 sub_801F7E4(void) diff --git a/src/hints_menu1.c b/src/hints_menu1.c index 2f6e13d0e..048458e32 100644 --- a/src/hints_menu1.c +++ b/src/hints_menu1.c @@ -8,8 +8,9 @@ #include "menu_input.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" -static EWRAM_DATA_2 struct unkStruct_203B264 *sUnknown_203B264 = {0}; +static EWRAM_DATA_2 struct_Sub80095E4 *sUnknown_203B264 = {0}; #include "data/hints_menu1.h" @@ -20,7 +21,7 @@ static void sub_801E594(void); bool8 sub_801E3F0(u32 a0) { if (sUnknown_203B264 == NULL) - sUnknown_203B264 = MemoryAlloc(sizeof(struct unkStruct_203B264), 8); + sUnknown_203B264 = MemoryAlloc(sizeof(*sUnknown_203B264), 8); sUnknown_203B264->unk34 = a0; sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C[a0]; @@ -93,48 +94,9 @@ void sub_801E54C(void) } } -NAKED // sub_80095E4 memes static void sub_801E594(void) { - asm_unified( - "\tpush {r4,lr}\n" - "\tldr r4, _0801E5E4\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0x1A\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x34]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x4A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x34]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x4C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0801E5E4: .4byte sUnknown_203B264"); + SUB_80095E4_CALL(*sUnknown_203B264); } static void DrawHintSelectionMenu(void) @@ -152,4 +114,4 @@ static void DrawHintSelectionMenu(void) } sub_80073E0(sUnknown_203B264->unk34); -} \ No newline at end of file +} diff --git a/src/kecleon_bros2.c b/src/kecleon_bros2.c index 707beedc0..7a28006e7 100644 --- a/src/kecleon_bros2.c +++ b/src/kecleon_bros2.c @@ -10,8 +10,9 @@ #include "menu_input.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" -static EWRAM_DATA_2 unkStruct_203B214 *gUnknown_203B214 = {0}; +static EWRAM_DATA_2 struct_Sub80095E4_2 *gUnknown_203B214 = {0}; static EWRAM_DATA_2 u16 gUnknown_203B218 = {0}; #include "data/kecleon_bros2.h" @@ -23,17 +24,17 @@ bool8 sub_8019E40(u32 r0) if (CountKecleonShopItems() == 0) return FALSE; - gUnknown_203B214 = MemoryAlloc(sizeof(unkStruct_203B214), 8); - gUnknown_203B214->unk34 = r0; - gUnknown_203B214->unk38 = &gUnknown_203B214->unk3C[gUnknown_203B214->unk34]; - sub_8006518(gUnknown_203B214->unk3C); - gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = sUnknown_80DB8CC; - gUnknown_203B214->unk38->unk14 = gUnknown_203B214->unk9C; + gUnknown_203B214 = MemoryAlloc(sizeof(*gUnknown_203B214), 8); + gUnknown_203B214->s0.unk34 = r0; + gUnknown_203B214->s0.unk38 = &gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34]; + sub_8006518(gUnknown_203B214->s0.unk3C); + gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8CC; + gUnknown_203B214->s0.unk38->unk14 = gUnknown_203B214->unk9C; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B214->unk3C, TRUE, TRUE); - sub_8013818(&gUnknown_203B214->input, CountKecleonShopItems(), 10, r0); - gUnknown_203B214->input.menuIndex = gUnknown_203B218; - sub_8013984(&gUnknown_203B214->input); + sub_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); + sub_8013818(&gUnknown_203B214->s0.input, CountKecleonShopItems(), 10, r0); + gUnknown_203B214->s0.input.menuIndex = gUnknown_203B218; + sub_8013984(&gUnknown_203B214->s0.input); sub_801A064(); sub_801A0D8(); return TRUE; @@ -45,11 +46,11 @@ u32 sub_8019EDC(bool8 r0) BulkItem *item; if (!r0) { - sub_8013660(&gUnknown_203B214->input); + sub_8013660(&gUnknown_203B214->s0.input); return 0; } - switch (GetKeyPress(&gUnknown_203B214->input)) { + switch (GetKeyPress(&gUnknown_203B214->s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -67,7 +68,7 @@ u32 sub_8019EDC(bool8 r0) PlayMenuSoundEffect(4); return 4; default: - if (sub_80138B8(&gUnknown_203B214->input, 1) != FALSE) { + if (sub_80138B8(&gUnknown_203B214->s0.input, 1) != FALSE) { sub_801A064(); sub_801A0D8(); return 1; @@ -78,110 +79,42 @@ u32 sub_8019EDC(bool8 r0) u8 sub_8019FB0(void) { - return (gUnknown_203B214->input.unk1E * gUnknown_203B214->input.unk1C) + (u8)gUnknown_203B214->input.menuIndex; + return (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.unk1C) + (u8)gUnknown_203B214->s0.input.menuIndex; } void sub_8019FCC(bool8 r0) { ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B214->unk3C, FALSE, FALSE); - gUnknown_203B214->input.unk22 = CountKecleonShopItems(); - sub_8013984(&gUnknown_203B214->input); + sub_800641C(gUnknown_203B214->s0.unk3C, FALSE, FALSE); + gUnknown_203B214->s0.input.unk22 = CountKecleonShopItems(); + sub_8013984(&gUnknown_203B214->s0.input); sub_801A064(); sub_801A0D8(); if (r0) - AddMenuCursorSprite(&gUnknown_203B214->input); + AddMenuCursorSprite(&gUnknown_203B214->s0.input); } void sub_801A010(void) { if (gUnknown_203B214 != NULL) { - gUnknown_203B218 = gUnknown_203B214->input.menuIndex; - gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = sUnknown_80DB8B4; + gUnknown_203B218 = gUnknown_203B214->s0.input.menuIndex; + gUnknown_203B214->s0.unk3C[gUnknown_203B214->s0.unk34] = sUnknown_80DB8B4; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B214->unk3C, TRUE, TRUE); + sub_800641C(gUnknown_203B214->s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B214); gUnknown_203B214 = NULL; } } -#if NONMATCHING // sub_80095E4 memes https://decomp.me/scratch/VjeuO static void sub_801A064(void) { - s16 val; - - gUnknown_203B214->unk9C[0] = gUnknown_203B214->input.unk20; - gUnknown_203B214->unk9C[1] = gUnknown_203B214->input.unk1E; + gUnknown_203B214->unk9C[0] = gUnknown_203B214->s0.input.unk20; + gUnknown_203B214->unk9C[1] = gUnknown_203B214->s0.input.unk1E; gUnknown_203B214->unk9C[2] = 10; gUnknown_203B214->unk9C[3] = 0; - val = sub_80095E4(gUnknown_203B214->input.unk1A, 12) + 2; - gUnknown_203B214->unk3C[gUnknown_203B214->unk34].unkE = val; - gUnknown_203B214->unk3C[gUnknown_203B214->unk34].unk10 = val + 2; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B214->unk3C, TRUE, TRUE); + SUB_80095E4_CALL(gUnknown_203B214->s0); } -#else -NAKED -static void sub_801A064(void) -{ - asm_unified( - "\tpush {r4,lr}\n" - "\tldr r4, _0801A0D4\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x20]\n" - "\tadds r0, 0x9C\n" - "\tmovs r2, 0\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x1E]\n" - "\tadds r0, 0x9D\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9E\n" - "\tmovs r1, 0xA\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9F\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0x1A\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x34]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x4A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x34]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x4C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0801A0D4: .4byte gUnknown_203B214"); -} -#endif // NONMATCHING void sub_801A0D8(void) { @@ -195,12 +128,12 @@ void sub_801A0D8(void) Item item; u8 temp_calc; - sub_8008C54(gUnknown_203B214->unk34); - sub_80073B8(gUnknown_203B214->unk34); - xxx_call_draw_string((gUnknown_203B214->input.unk1E * 8) + 10, 0, sGoods, gUnknown_203B214->unk34, 0); + sub_8008C54(gUnknown_203B214->s0.unk34); + sub_80073B8(gUnknown_203B214->s0.unk34); + xxx_call_draw_string((gUnknown_203B214->s0.input.unk1E * 8) + 10, 0, sGoods, gUnknown_203B214->s0.unk34, 0); - for (index = 0; index < gUnknown_203B214->input.unk1A; index++) { - temp_calc = (gUnknown_203B214->input.unk1E * gUnknown_203B214->input.unk1C) + index; + for (index = 0; index < gUnknown_203B214->s0.input.unk1A; index++) { + temp_calc = (gUnknown_203B214->s0.input.unk1E * gUnknown_203B214->s0.input.unk1C) + index; heldItem = GetKecleonShopItem(temp_calc); item.id = heldItem->id; item.quantity = heldItem->quantity; @@ -213,15 +146,15 @@ void sub_801A0D8(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B214->input, index); - xxx_call_draw_string(8, y, auStack204, gUnknown_203B214->unk34, 0); + y = sub_8013800(&gUnknown_203B214->s0.input, index); + xxx_call_draw_string(8, y, auStack204, gUnknown_203B214->s0.unk34, 0); } else { sprintfStatic(auStack112, sFmtRed, auStack204); - y = sub_8013800(&gUnknown_203B214->input, index); - xxx_call_draw_string(8, y, auStack112, gUnknown_203B214->unk34, 0); + y = sub_8013800(&gUnknown_203B214->s0.input, index); + xxx_call_draw_string(8, y, auStack112, gUnknown_203B214->s0.unk34, 0); } } - sub_80073E0(gUnknown_203B214->unk34); -} \ No newline at end of file + sub_80073E0(gUnknown_203B214->s0.unk34); +} diff --git a/src/kecleon_bros3.c b/src/kecleon_bros3.c index 9d7d8eb2e..056ee7052 100644 --- a/src/kecleon_bros3.c +++ b/src/kecleon_bros3.c @@ -10,8 +10,9 @@ #include "menu_input.h" #include "text1.h" #include "text2.h" +#include "structs/struct_sub80095e4.h" -static EWRAM_DATA_2 unkStruct_203B21C *gUnknown_203B21C = {0}; +static EWRAM_DATA_2 struct_Sub80095E4_2 *gUnknown_203B21C = {0}; static EWRAM_DATA_2 u16 gUnknown_203B220 = {0}; #include "data/kecleon_bros3.h" @@ -23,17 +24,17 @@ u8 sub_801A20C(u32 r0) if (CountKecleonWareItems() == 0) return 0; - gUnknown_203B21C = MemoryAlloc(sizeof(unkStruct_203B21C), 8); - gUnknown_203B21C->unk34 = r0; - gUnknown_203B21C->unk38 = &gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34]; - sub_8006518(gUnknown_203B21C->unk3C); - gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = sUnknown_80DB914; - gUnknown_203B21C->unk38->unk14 = gUnknown_203B21C->unk9C; + gUnknown_203B21C = MemoryAlloc(sizeof(*gUnknown_203B21C), 8); + gUnknown_203B21C->s0.unk34 = r0; + gUnknown_203B21C->s0.unk38 = &gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34]; + sub_8006518(gUnknown_203B21C->s0.unk3C); + gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB914; + gUnknown_203B21C->s0.unk38->unk14 = gUnknown_203B21C->unk9C; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B21C->unk3C, TRUE, TRUE); - sub_8013818(&gUnknown_203B21C->input, CountKecleonWareItems(), 10, r0); - gUnknown_203B21C->input.menuIndex = gUnknown_203B220; - sub_8013984(&gUnknown_203B21C->input); + sub_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); + sub_8013818(&gUnknown_203B21C->s0.input, CountKecleonWareItems(), 10, r0); + gUnknown_203B21C->s0.input.menuIndex = gUnknown_203B220; + sub_8013984(&gUnknown_203B21C->s0.input); sub_801A430(); sub_801A4A4(); return TRUE; @@ -45,11 +46,11 @@ u32 sub_801A2A8(bool8 r0) BulkItem *item; if (!r0) { - sub_8013660(&gUnknown_203B21C->input); + sub_8013660(&gUnknown_203B21C->s0.input); return 0; } - switch (GetKeyPress(&gUnknown_203B21C->input)) { + switch (GetKeyPress(&gUnknown_203B21C->s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -68,7 +69,7 @@ u32 sub_801A2A8(bool8 r0) PlayMenuSoundEffect(4); return 4; default: - if (sub_80138B8(&gUnknown_203B21C->input, 1) != 0) { + if (sub_80138B8(&gUnknown_203B21C->s0.input, 1) != 0) { sub_801A430(); sub_801A4A4(); return 1; @@ -79,109 +80,42 @@ u32 sub_801A2A8(bool8 r0) u8 sub_801A37C(void) { - return (gUnknown_203B21C->input.unk1E * gUnknown_203B21C->input.unk1C) + gUnknown_203B21C->input.menuIndex; + return (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.unk1C) + gUnknown_203B21C->s0.input.menuIndex; } void sub_801A398(bool8 r0) { ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B21C->unk3C, FALSE, FALSE); - gUnknown_203B21C->input.unk22 = CountKecleonWareItems(); - sub_8013984(&gUnknown_203B21C->input); + sub_800641C(gUnknown_203B21C->s0.unk3C, FALSE, FALSE); + gUnknown_203B21C->s0.input.unk22 = CountKecleonWareItems(); + sub_8013984(&gUnknown_203B21C->s0.input); sub_801A430(); sub_801A4A4(); if (r0) - AddMenuCursorSprite(&gUnknown_203B21C->input); + AddMenuCursorSprite(&gUnknown_203B21C->s0.input); } void sub_801A3DC(void) { if (gUnknown_203B21C != NULL) { - gUnknown_203B220 = gUnknown_203B21C->input.menuIndex; - gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = sUnknown_80DB8FC; + gUnknown_203B220 = gUnknown_203B21C->s0.input.menuIndex; + gUnknown_203B21C->s0.unk3C[gUnknown_203B21C->s0.unk34] = sUnknown_80DB8FC; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B21C->unk3C, TRUE, TRUE); + sub_800641C(gUnknown_203B21C->s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B21C); gUnknown_203B21C = NULL; } } -#if NONMATCHING // sub_80095E4 memes https://decomp.me/scratch/L78xC static void sub_801A430(void) { - s16 val; - - gUnknown_203B21C->unk9C[0] = gUnknown_203B21C->input.unk20; - gUnknown_203B21C->unk9C[1] = gUnknown_203B21C->input.unk1E; + gUnknown_203B21C->unk9C[0] = gUnknown_203B21C->s0.input.unk20; + gUnknown_203B21C->unk9C[1] = gUnknown_203B21C->s0.input.unk1E; gUnknown_203B21C->unk9C[2] = 10; gUnknown_203B21C->unk9C[3] = 0; - val = sub_80095E4(gUnknown_203B21C->input.unk1A, 12) + 2; - gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34].unkE = val; - gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34].unk10 = val + 2; - ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B21C->unk3C, TRUE, TRUE); + SUB_80095E4_CALL(gUnknown_203B21C->s0); } -#else -NAKED -static void sub_801A430(void) -{ - asm_unified("\tpush {r4,lr}\n" - "\tldr r4, _0801A4A0\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x20]\n" - "\tadds r0, 0x9C\n" - "\tmovs r2, 0\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tldrh r1, [r0, 0x1E]\n" - "\tadds r0, 0x9D\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9E\n" - "\tmovs r1, 0xA\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x9F\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0x1A\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x34]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x4A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x34]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x4C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x3C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0801A4A0: .4byte gUnknown_203B21C"); -} -#endif // NONMATCHING void sub_801A4A4(void) { @@ -195,12 +129,12 @@ void sub_801A4A4(void) Item item; u8 temp_calc; - sub_8008C54(gUnknown_203B21C->unk34); - sub_80073B8(gUnknown_203B21C->unk34); - xxx_call_draw_string(gUnknown_203B21C->input.unk1E * 8 + 10, 0, sGoods, gUnknown_203B21C->unk34, 0); + sub_8008C54(gUnknown_203B21C->s0.unk34); + sub_80073B8(gUnknown_203B21C->s0.unk34); + xxx_call_draw_string(gUnknown_203B21C->s0.input.unk1E * 8 + 10, 0, sGoods, gUnknown_203B21C->s0.unk34, 0); - for (index = 0; index < gUnknown_203B21C->input.unk1A; index++) { - temp_calc = (gUnknown_203B21C->input.unk1E * gUnknown_203B21C->input.unk1C) + index; + for (index = 0; index < gUnknown_203B21C->s0.input.unk1A; index++) { + temp_calc = (gUnknown_203B21C->s0.input.unk1E * gUnknown_203B21C->s0.input.unk1C) + index; heldItem = GetKecleonWareItem(temp_calc); item.id = heldItem->id; item.quantity = heldItem->quantity; @@ -213,15 +147,15 @@ void sub_801A4A4(void) buyPrice = GetStackBuyPrice(&item); if (buyPrice <= gTeamInventoryRef->teamMoney) { - y = sub_8013800(&gUnknown_203B21C->input, index); - xxx_call_draw_string(8, y, buffer1, gUnknown_203B21C->unk34, 0); + y = sub_8013800(&gUnknown_203B21C->s0.input, index); + xxx_call_draw_string(8, y, buffer1, gUnknown_203B21C->s0.unk34, 0); } else { sprintfStatic(buffer2, sFmtRed, buffer1); - y = sub_8013800(&gUnknown_203B21C->input, index); - xxx_call_draw_string(8, y, buffer2, gUnknown_203B21C->unk34, 0); + y = sub_8013800(&gUnknown_203B21C->s0.input, index); + xxx_call_draw_string(8, y, buffer2, gUnknown_203B21C->s0.unk34, 0); } } - sub_80073E0(gUnknown_203B21C->unk34); -} \ No newline at end of file + sub_80073E0(gUnknown_203B21C->s0.unk34); +} diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index 27564c5f8..6254420d5 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -31,19 +31,19 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) if (sMakuhitaDojoWork2 == NULL) sMakuhitaDojoWork2 = MemoryAlloc(sizeof(MakuhitaDojoWork2), 8); - sMakuhitaDojoWork2->unk64 = param_1; - sMakuhitaDojoWork2->unk68 = &sMakuhitaDojoWork2->unk6C[param_1]; - sub_8006518(sMakuhitaDojoWork2->unk6C); - sMakuhitaDojoWork2->unk6C[sMakuhitaDojoWork2->unk64] = sUnknown_80E0804; - sMakuhitaDojoWork2->unk68->unk14 = sMakuhitaDojoWork2->unkCC; + sMakuhitaDojoWork2->s30.s0.unk34 = param_1; + sMakuhitaDojoWork2->s30.s0.unk38 = &sMakuhitaDojoWork2->s30.s0.unk3C[param_1]; + sub_8006518(sMakuhitaDojoWork2->s30.s0.unk3C); + sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E0804; + sMakuhitaDojoWork2->s30.s0.unk38->unk14 = sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->unk6C[sMakuhitaDojoWork2->unk64].unk8 = *param_2; + sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; - sub_8012D08(sMakuhitaDojoWork2->unk68, param_3); + sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); - sub_800641C(sMakuhitaDojoWork2->unk6C, TRUE, TRUE); - sub_8013818(&sMakuhitaDojoWork2->input, sub_8030668(), param_3, param_1); + sub_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); + sub_8013818(&sMakuhitaDojoWork2->s30.s0.input, sub_8030668(), param_3, param_1); sub_80304C8(); MakuhitaDojo_DrawCourseList(); return TRUE; @@ -52,11 +52,11 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) u32 sub_80303AC(bool8 param_1) { if (param_1 == FALSE) { - sub_8013660(&sMakuhitaDojoWork2->input); + sub_8013660(&sMakuhitaDojoWork2->s30.s0.input); return 0; } - switch (GetKeyPress(&sMakuhitaDojoWork2->input)) { + switch (GetKeyPress(&sMakuhitaDojoWork2->s30.s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -64,7 +64,7 @@ u32 sub_80303AC(bool8 param_1) PlayMenuSoundEffect(0); return 3; default: - if (sub_80138B8(&sMakuhitaDojoWork2->input, 1)) { + if (sub_80138B8(&sMakuhitaDojoWork2->s30.s0.input, 1)) { sub_80304C8(); MakuhitaDojo_DrawCourseList(); return 1; @@ -76,107 +76,39 @@ u32 sub_80303AC(bool8 param_1) s16 sub_8030418(void) { - return sMakuhitaDojoWork2->unk0[(sMakuhitaDojoWork2->input.unk1E * sMakuhitaDojoWork2->input.unk1C) + sMakuhitaDojoWork2->input.menuIndex]; + return sMakuhitaDojoWork2->unk0[(sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.unk1C) + sMakuhitaDojoWork2->s30.s0.input.menuIndex]; } UNUSED static void sub_8030444(bool8 a0) { - sMakuhitaDojoWork2->input.unk22 = sub_8030668(); - sub_8013984(&sMakuhitaDojoWork2->input); + sMakuhitaDojoWork2->s30.s0.input.unk22 = sub_8030668(); + sub_8013984(&sMakuhitaDojoWork2->s30.s0.input); sub_80304C8(); MakuhitaDojo_DrawCourseList(); if (a0) - AddMenuCursorSprite(&sMakuhitaDojoWork2->input); + AddMenuCursorSprite(&sMakuhitaDojoWork2->s30.s0.input); } void sub_8030480(void) { if (sMakuhitaDojoWork2 != NULL) { - sMakuhitaDojoWork2->unk6C[sMakuhitaDojoWork2->unk64] = sUnknown_80E07EC; + sMakuhitaDojoWork2->s30.s0.unk3C[sMakuhitaDojoWork2->s30.s0.unk34] = sUnknown_80E07EC; ResetUnusedInputStruct(); - sub_800641C(sMakuhitaDojoWork2->unk6C, TRUE, TRUE); + sub_800641C(sMakuhitaDojoWork2->s30.s0.unk3C, TRUE, TRUE); MemoryFree(sMakuhitaDojoWork2); sMakuhitaDojoWork2 = NULL; } } -#ifdef NONMATCHING // sub_80095E4 memes https://decomp.me/scratch/lM7lE static void sub_80304C8(void) { - s16 test; + sMakuhitaDojoWork2->s30.unk9C[0] = 1; + sMakuhitaDojoWork2->s30.unk9C[1] = 0; + sMakuhitaDojoWork2->s30.unk9C[2] = 8; + sMakuhitaDojoWork2->s30.unk9C[3] = 0; - sMakuhitaDojoWork2->unkCC[0] = 1; - sMakuhitaDojoWork2->unkCC[1] = 0; - sMakuhitaDojoWork2->unkCC[2] = 8; - sMakuhitaDojoWork2->unkCC[3] = 0; - - test = sub_80095E4(sMakuhitaDojoWork2->input.unk1A, 12) + 2; - sMakuhitaDojoWork2->unk6C[sMakuhitaDojoWork2->unk64].unkE = test; - sMakuhitaDojoWork2->unk6C[sMakuhitaDojoWork2->unk64].unk10 = test + 2; - ResetUnusedInputStruct(); - sub_800641C(sMakuhitaDojoWork2->unk6C, TRUE, TRUE); + SUB_80095E4_CALL(sMakuhitaDojoWork2->s30.s0); } -#else -NAKED -static void sub_80304C8(void) -{ - asm_unified( - "\tpush {r4,lr}\n" - "\tldr r4, _08030538\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xCC\n" - "\tmovs r2, 0\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xCD\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xCE\n" - "\tmovs r1, 0x8\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xCF\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x4A\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x64]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x7A\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x64]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x7C\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x6C\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08030538: .4byte sMakuhitaDojoWork2"); -} -#endif // NONMATCHING static void MakuhitaDojo_DrawCourseList(void) { @@ -188,27 +120,27 @@ static void MakuhitaDojo_DrawCourseList(void) s32 i; u8 buffer[256]; - sub_8008C54(sMakuhitaDojoWork2->unk64); - sub_80073B8(sMakuhitaDojoWork2->unk64); - xxx_call_draw_string(10, 0, sCourses, sMakuhitaDojoWork2->unk64, 0); - sub_8012BC4((sMakuhitaDojoWork2->unkCC[2] * 8) + 4, 0, sMakuhitaDojoWork2->input.unk1E + 1, 2, 7, sMakuhitaDojoWork2->unk64); + sub_8008C54(sMakuhitaDojoWork2->s30.s0.unk34); + sub_80073B8(sMakuhitaDojoWork2->s30.s0.unk34); + xxx_call_draw_string(10, 0, sCourses, sMakuhitaDojoWork2->s30.s0.unk34, 0); + sub_8012BC4((sMakuhitaDojoWork2->s30.unk9C[2] * 8) + 4, 0, sMakuhitaDojoWork2->s30.s0.input.unk1E + 1, 2, 7, sMakuhitaDojoWork2->s30.s0.unk34); - for (i = 0; i < sMakuhitaDojoWork2->input.unk1A; i++) { - iVar6 = sMakuhitaDojoWork2->unk0[sMakuhitaDojoWork2->input.unk1E * sMakuhitaDojoWork2->input.unk1C + i]; + for (i = 0; i < sMakuhitaDojoWork2->s30.s0.input.unk1A; i++) { + iVar6 = sMakuhitaDojoWork2->unk0[sMakuhitaDojoWork2->s30.s0.input.unk1E * sMakuhitaDojoWork2->s30.s0.input.unk1C + i]; dungeonIndex = sub_80A2740(iVar6); mazeIndex = sub_80A2668(iVar6); - y = sub_8013800(&sMakuhitaDojoWork2->input, i); + y = sub_8013800(&sMakuhitaDojoWork2->s30.s0.input, i); color = COLOR_WHITE_2; // COLOR_WHITE again? if ((bool8)IsMazeCompleted(mazeIndex)) { - xxx_call_draw_string(8, y, sStarBullet, sMakuhitaDojoWork2->unk64, 0); + xxx_call_draw_string(8, y, sStarBullet, sMakuhitaDojoWork2->s30.s0.unk34, 0); color = COLOR_GREEN; } sprintfStatic(buffer, sFmtColor, color, GetDungeonName1(dungeonIndex)); - xxx_call_draw_string(16, y, buffer, sMakuhitaDojoWork2->unk64, 0); + xxx_call_draw_string(16, y, buffer, sMakuhitaDojoWork2->s30.s0.unk34, 0); } - sub_80073E0(sMakuhitaDojoWork2->unk64); + sub_80073E0(sMakuhitaDojoWork2->s30.s0.unk34); } static s32 sub_8030668(void) @@ -230,4 +162,4 @@ static s32 sub_8030668(void) bool8 MakuhitaDojo_ReturnFalse(void) { return FALSE; -} \ No newline at end of file +} diff --git a/src/menu_input.c b/src/menu_input.c index f00307b4e..617a34a29 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -20,14 +20,14 @@ const u8 UnkData_80D47C4[] = {0x01, 0x00, 0x10, 0x00}; const UnkTextStruct2 gUnknown_80D47C8[4] = { 0x00, 0x00, 0x00, 0x00, - 0x06, + 0x06, 0x02, 0x02, 0x1a, 0x0c, 0x0c, 0x00, UnkData_80D47C4, 0x00, 0x00, 0x00, 0x00, - 0x03, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -173,7 +173,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 a5) s32 *piVar4; s32 total_x; s32 decimal[8]; - + total_x = 0; ConvertToDecimal(decimal, n, len); @@ -238,7 +238,7 @@ void sub_8012CAC(UnkTextStruct2 *a0, const MenuItem *a1) #else s32 r0; #endif - + r7 = 0; r6 = 0; @@ -479,7 +479,7 @@ void sub_8012EBC(MenuStruct *param_1) counter++; } while (menuItemsPtr->text != NULL); } - + sub_80073E0(param_1->index); param_1->unk4D = FALSE; } @@ -592,7 +592,7 @@ static void sub_8013134(MenuInputStruct *param_1, u32 menuItemCounter, u32 index UnkTextStruct1 *temp; temp = &gUnknown_2027370[index]; - + param_1->unk0 = index; param_1->menuIndex = 0; param_1->unk1A = menuItemCounter; @@ -833,7 +833,7 @@ static void sub_8013470(MenuInputStruct *a0) r1 = ptr->attrib3; r0 = r1 & (u16)~SPRITEOAM_MASK_TILENUM; r0 |= r2; - + r0 &= (u16)~SPRITEOAM_MASK_PRIORITY; r5 = (u16)~SPRITEOAM_MASK_UNK6_4; @@ -886,7 +886,7 @@ static void sub_8013470(MenuInputStruct *a0) r1 = ptr->attrib3; r0 = r1 & (u16)~SPRITEOAM_MASK_TILENUM; r0 |= r2; - + r0 &= (u16)~SPRITEOAM_MASK_PRIORITY; r5 = (u16)~SPRITEOAM_MASK_UNK6_4; @@ -936,7 +936,7 @@ void UpdateMenuCursorSpriteCoords(MenuInputStruct *param_1) } void MoveMenuCursorDown(MenuInputStruct *param_1) -{ +{ param_1->unk24 = 0; if (param_1->unk1A < 1) @@ -950,7 +950,7 @@ void MoveMenuCursorDown(MenuInputStruct *param_1) } void sub_80136E0(MenuInputStruct *param_1, u8 param_2) -{ +{ param_1->unk24 = 0; if (param_1->unk1A < 1) @@ -968,7 +968,7 @@ void sub_80136E0(MenuInputStruct *param_1, u8 param_2) } void MoveMenuCursorUp(MenuInputStruct *param_1) -{ +{ param_1->unk24 = 0; if (param_1->unk1A < 1) @@ -982,7 +982,7 @@ void MoveMenuCursorUp(MenuInputStruct *param_1) } void sub_8013744(MenuInputStruct *param_1, u8 param_2) -{ +{ param_1->unk24 = 0; if (param_1->unk1A < 1) @@ -1301,7 +1301,7 @@ u32 sub_8013BBC(unkStructFor8013AA0 *a0) a0->unk28.attrib2 |= temp; } AddSprite(&a0->unk28, 0x100, NULL, NULL); - + a0->unk28.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; { u32 temp = a0->unk28.unk6; diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index 95414e7ff..b15dcfe6a 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -32,26 +32,26 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) if (sUnknown_203B2CC == NULL) sUnknown_203B2CC = MemoryAlloc(sizeof(struct unkStruct_203B2CC), 8); - sUnknown_203B2CC->unk6C = a0; - sUnknown_203B2CC->unk70 = &sUnknown_203B2CC->unk74[a0]; + sUnknown_203B2CC->s38.unk34 = a0; + sUnknown_203B2CC->s38.unk38 = &sUnknown_203B2CC->s38.unk3C[a0]; - sub_8006518(sUnknown_203B2CC->unk74); + sub_8006518(sUnknown_203B2CC->s38.unk3C); - sUnknown_203B2CC->unk74[sUnknown_203B2CC->unk6C] = sUnknown_80DFBEC; + sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->unk74[sUnknown_203B2CC->unk6C].unk8 = *a1; + sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34].unk8 = *a1; - sub_8012D08(sUnknown_203B2CC->unk70, a2); + sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); - sub_800641C(sUnknown_203B2CC->unk74, TRUE, TRUE); + sub_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); - sub_8013818(&sUnknown_203B2CC->input, GetNumPKMNNews(), a2, a0); + sub_8013818(&sUnknown_203B2CC->s38.input, GetNumPKMNNews(), a2, a0); - sUnknown_203B2CC->input.menuIndex = sUnknown_203B2D0; - sUnknown_203B2CC->input.unk1E = sUnknown_203B2D2; + sUnknown_203B2CC->s38.input.menuIndex = sUnknown_203B2D0; + sUnknown_203B2CC->s38.input.unk1E = sUnknown_203B2D2; - sub_8013984(&sUnknown_203B2CC->input); + sub_8013984(&sUnknown_203B2CC->s38.input); sub_802B880(); CreatePKMNNewsMenu(); @@ -61,11 +61,11 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) u32 sub_802B720(bool8 a0) { if (!a0) { - sub_8013660(&sUnknown_203B2CC->input); + sub_8013660(&sUnknown_203B2CC->s38.input); return 0; } - switch (GetKeyPress(&sUnknown_203B2CC->input)) { + switch (GetKeyPress(&sUnknown_203B2CC->s38.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); return 2; @@ -77,7 +77,7 @@ u32 sub_802B720(bool8 a0) return 4; } - if (sub_80138B8(&sUnknown_203B2CC->input, 1)) { + if (sub_80138B8(&sUnknown_203B2CC->s38.input, 1)) { sub_802B880(); CreatePKMNNewsMenu(); return 1; @@ -87,83 +87,43 @@ u32 sub_802B720(bool8 a0) u8 GetPokemonNewsIndex(void) { - return sUnknown_203B2CC->receivedNewsletters[(sUnknown_203B2CC->input.unk1E * sUnknown_203B2CC->input.unk1C) + sUnknown_203B2CC->input.menuIndex]; + return sUnknown_203B2CC->receivedNewsletters[(sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + sUnknown_203B2CC->s38.input.menuIndex]; } void sub_802B7D0(bool8 cursorSprite) { ResetUnusedInputStruct(); - sub_800641C(sUnknown_203B2CC->unk74, FALSE, FALSE); + sub_800641C(sUnknown_203B2CC->s38.unk3C, FALSE, FALSE); - sUnknown_203B2CC->input.unk22 = GetNumPKMNNews(); - sub_8013984(&sUnknown_203B2CC->input); + sUnknown_203B2CC->s38.input.unk22 = GetNumPKMNNews(); + sub_8013984(&sUnknown_203B2CC->s38.input); sub_802B880(); CreatePKMNNewsMenu(); if (cursorSprite) - AddMenuCursorSprite(&sUnknown_203B2CC->input); + AddMenuCursorSprite(&sUnknown_203B2CC->s38.input); } void sub_802B81C(void) { if (sUnknown_203B2CC != NULL) { - sUnknown_203B2D0 = sUnknown_203B2CC->input.menuIndex; + sUnknown_203B2D0 = sUnknown_203B2CC->s38.input.menuIndex; - sUnknown_203B2D2 = sUnknown_203B2CC->input.unk1E; + sUnknown_203B2D2 = sUnknown_203B2CC->s38.input.unk1E; - sUnknown_203B2CC->unk74[sUnknown_203B2CC->unk6C] = sUnknown_80DFBD0; + sUnknown_203B2CC->s38.unk3C[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBD0; ResetUnusedInputStruct(); - sub_800641C(sUnknown_203B2CC->unk74, TRUE, TRUE); + sub_800641C(sUnknown_203B2CC->s38.unk3C, TRUE, TRUE); MemoryFree(sUnknown_203B2CC); sUnknown_203B2CC = NULL; } } -NAKED // sub_80095E4 memes static void sub_802B880(void) { - asm_unified( - "\tpush {r4,lr}\n" - "\tldr r4, _0802B8D0\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x52\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r0, r1]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r2, [r4]\n" - "\tldr r3, [r2, 0x6C]\n" - "\tlsls r1, r3, 1\n" - "\tadds r1, r3\n" - "\tlsls r1, 3\n" - "\tadds r1, r2, r1\n" - "\tadds r1, 0x82\n" - "\tasrs r3, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r2, 0x6C]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r2, r0\n" - "\tadds r3, 0x2\n" - "\tadds r2, 0x84\n" - "\tstrh r3, [r2]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x74\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"\t_0802B8D0: .4byte sUnknown_203B2CC"); + SUB_80095E4_CALL(sUnknown_203B2CC->s38); } static void CreatePKMNNewsMenu(void) @@ -173,22 +133,22 @@ static void CreatePKMNNewsMenu(void) s32 new_index; u8 mailIndex; - sub_8008C54(sUnknown_203B2CC->unk6C); - sub_80073B8(sUnknown_203B2CC->unk6C); - xxx_call_draw_string(10, 0, sNewsList, sUnknown_203B2CC->unk6C, 0); + sub_8008C54(sUnknown_203B2CC->s38.unk34); + sub_80073B8(sUnknown_203B2CC->s38.unk34); + xxx_call_draw_string(10, 0, sNewsList, sUnknown_203B2CC->s38.unk34, 0); - sub_8012BC4((sUnknown_80DFBE8[2] * 8) + 4, 0, sUnknown_203B2CC->input.unk1E + 1, 2, 7, sUnknown_203B2CC->unk6C); + sub_8012BC4((sUnknown_80DFBE8[2] * 8) + 4, 0, sUnknown_203B2CC->s38.input.unk1E + 1, 2, 7, sUnknown_203B2CC->s38.unk34); - for (index = 0; index < sUnknown_203B2CC->input.unk1A; index++) { - y = sub_8013800(&sUnknown_203B2CC->input, index); - new_index = (sUnknown_203B2CC->input.unk1E * sUnknown_203B2CC->input.unk1C) + index; + for (index = 0; index < sUnknown_203B2CC->s38.input.unk1A; index++) { + y = sub_8013800(&sUnknown_203B2CC->s38.input, index); + new_index = (sUnknown_203B2CC->s38.input.unk1E * sUnknown_203B2CC->s38.input.unk1C) + index; mailIndex = sUnknown_203B2CC->receivedNewsletters[new_index]; - sub_803B6B0(10, y, 6, sUnknown_203B2CC->unk6C); + sub_803B6B0(10, y, 6, sUnknown_203B2CC->s38.unk34); sub_802BC7C(); - xxx_format_and_draw(21, y, GetPokemonMailHeadline(mailIndex), sUnknown_203B2CC->unk6C, 0); + xxx_format_and_draw(21, y, GetPokemonMailHeadline(mailIndex), sUnknown_203B2CC->s38.unk34, 0); } - sub_80073E0(sUnknown_203B2CC->unk6C); + sub_80073E0(sUnknown_203B2CC->s38.unk34); } static s32 GetNumPKMNNews(void) @@ -218,4 +178,4 @@ bool8 HasNoPKMNNews(void) } return TRUE; -} \ No newline at end of file +} diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 657b89c58..ded3494e6 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -20,6 +20,7 @@ #include "code_803B050.h" #include "wonder_mail_802CDD4.h" #include "input.h" +#include "structs/struct_sub80095e4.h" struct unkStruct_203B30C { @@ -66,16 +67,11 @@ struct unkStruct_203B314 u8 unkB9; u8 unkBA; u8 unkBB; - MenuInputStruct input; - u32 unkF0; - UnkTextStruct2 *unkF4; - UnkTextStruct2 unkF8[4]; - u8 unk158[4]; + struct struct_Sub80095E4_2 sBC; }; extern struct unkStruct_203B314 *gUnknown_203B314; - enum FriendRewardStates { PREP_MONEY_REWARD, @@ -504,7 +500,7 @@ void HandleMissionReward(void) u8 itemID; struct unkStruct_8090F58 local_20; Item item; - + switch(gUnknown_203B310->state) { case PREP_MONEY_REWARD: moneyReward = gUnknown_203B310->unk10->moneyReward; @@ -572,7 +568,7 @@ void HandleMissionReward(void) break; case PREP_ITEM_REWARD: itemID = gUnknown_203B310->unk10->itemRewards[0]; - if (itemID != ITEM_NOTHING) + if (itemID != ITEM_NOTHING) { if (gUnknown_203B310->unk10->moneyReward == 0) { item.id = itemID; @@ -695,24 +691,24 @@ u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) gUnknown_203B314 = MemoryAlloc(sizeof(struct unkStruct_203B314), 8); gUnknown_203B314->unkB8 = r3; - gUnknown_203B314->unkF0 = r0; - gUnknown_203B314->unkF4 = &gUnknown_203B314->unkF8[gUnknown_203B314->unkF0]; - sub_8006518(gUnknown_203B314->unkF8); + gUnknown_203B314->sBC.s0.unk34 = r0; + gUnknown_203B314->sBC.s0.unk38 = &gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34]; + sub_8006518(gUnknown_203B314->sBC.s0.unk3C); if (r3 != 0) - gUnknown_203B314->unkF8[gUnknown_203B314->unkF0] = gUnknown_80E072C; + gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E072C; else - gUnknown_203B314->unkF8[gUnknown_203B314->unkF0] = gUnknown_80E0714; + gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E0714; - gUnknown_203B314->unkF4->unk14 = gUnknown_203B314->unk158; + gUnknown_203B314->sBC.s0.unk38->unk14 = gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->unkF8[gUnknown_203B314->unkF0].unk8 = *r1; + gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; - sub_8012D08(gUnknown_203B314->unkF4, r2); + sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B314->unkF8, TRUE, TRUE); - sub_8013818(&gUnknown_203B314->input, sub_802FBF4(), r2, r0); + sub_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); + sub_8013818(&gUnknown_203B314->sBC.s0.input, sub_802FBF4(), r2, r0); sub_802F9C0(); sub_802FA50(); return 1; @@ -725,15 +721,15 @@ u32 sub_802F848(s16 param_1) param_1_32 = param_1; // cast needed - for( index = 0; index < gUnknown_203B314->input.unk22; index++ ) { + for( index = 0; index < gUnknown_203B314->sBC.s0.input.unk22; index++ ) { if (gUnknown_203B314->unk0[index] == param_1_32) { - sub_8013878(&gUnknown_203B314->input,index); + sub_8013878(&gUnknown_203B314->sBC.s0.input,index); sub_802F9C0(); sub_802FA50(); return 1; } } - sub_8013878(&gUnknown_203B314->input,0); + sub_8013878(&gUnknown_203B314->sBC.s0.input,0); return 0; } @@ -741,12 +737,12 @@ u32 sub_802F8A0(u8 r0) { if(r0 == 0) { - sub_8013660(&gUnknown_203B314->input); + sub_8013660(&gUnknown_203B314->sBC.s0.input); return 0; } else { - switch(GetKeyPress(&gUnknown_203B314->input)) + switch(GetKeyPress(&gUnknown_203B314->sBC.s0.input)) { case INPUT_B_BUTTON: PlayMenuSoundEffect(1); @@ -755,7 +751,7 @@ u32 sub_802F8A0(u8 r0) PlayMenuSoundEffect(0); return 3; default: - if(sub_80138B8(&gUnknown_203B314->input, 1) != 0) + if(sub_80138B8(&gUnknown_203B314->sBC.s0.input, 1) != 0) { sub_802F9C0(); sub_802FA50(); @@ -771,103 +767,40 @@ u32 sub_802F8A0(u8 r0) s16 sub_802F90C(void) { - return gUnknown_203B314->unk0[(gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C) + gUnknown_203B314->input.menuIndex]; + return gUnknown_203B314->unk0[(gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C) + gUnknown_203B314->sBC.s0.input.menuIndex]; } void sub_802F938(u8 r0) { - gUnknown_203B314->input.unk22 = sub_802FBF4(); - sub_8013984(&gUnknown_203B314->input); + gUnknown_203B314->sBC.s0.input.unk22 = sub_802FBF4(); + sub_8013984(&gUnknown_203B314->sBC.s0.input); sub_802F9C0(); sub_802FA50(); if(r0 != 0) - AddMenuCursorSprite(&gUnknown_203B314->input); + AddMenuCursorSprite(&gUnknown_203B314->sBC.s0.input); } void sub_802F974(void) { if(gUnknown_203B314 != NULL) { - gUnknown_203B314->unkF8[gUnknown_203B314->unkF0] = gUnknown_80E06FC; + gUnknown_203B314->sBC.s0.unk3C[gUnknown_203B314->sBC.s0.unk34] = gUnknown_80E06FC; ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B314->unkF8, TRUE, TRUE); + sub_800641C(gUnknown_203B314->sBC.s0.unk3C, TRUE, TRUE); MemoryFree(gUnknown_203B314); gUnknown_203B314 = NULL; } } -NAKED // sub_80095E4 memes void sub_802F9C0(void) { - asm_unified( - "\tpush {r4,r5,lr}\n" - "\tldr r4, _0802FA44\n" - "\tldr r0, [r4]\n" - "\tmovs r1, 0xAC\n" - "\tlsls r1, 1\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r0, [r4]\n" - "\tldr r3, _0802FA48\n" - "\tadds r0, r3\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r3, 0x1\n" - "\tadds r1, r0, r3\n" - "\tmovs r0, 0x8\n" - "\tstrb r0, [r1]\n" - "\tldr r0, [r4]\n" - "\tldr r1, _0802FA4C\n" - "\tadds r0, r1\n" - "\tstrb r2, [r0]\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xD6\n" - "\tmovs r2, 0\n" - "\tldrsh r0, [r0, r2]\n" - "\tmovs r1, 0xC\n" - "\tbl sub_80095E4\n" - "\tadds r0, 0x2\n" - "\tlsls r0, 16\n" - "\tldr r3, [r4]\n" - "\tadds r5, r3, 0\n" - "\tadds r5, 0xF0\n" - "\tldr r2, [r5]\n" - "\tlsls r1, r2, 1\n" - "\tadds r1, r2\n" - "\tlsls r1, 3\n" - "\tadds r1, r3, r1\n" - "\tmovs r2, 0x83\n" - "\tlsls r2, 1\n" - "\tadds r1, r2\n" - "\tasrs r2, r0, 16\n" - "\tlsrs r0, 16\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r5]\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tadds r3, r0\n" - "\tadds r2, 0x2\n" - "\tmovs r0, 0x84\n" - "\tlsls r0, 1\n" - "\tadds r3, r0\n" - "\tstrh r2, [r3]\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xF8\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_0802FA44: .4byte gUnknown_203B314\n" -"_0802FA48: .4byte 0x00000159\n" -"_0802FA4C: .4byte 0x0000015b"); + gUnknown_203B314->sBC.unk9C[0] = 1; + gUnknown_203B314->sBC.unk9C[1] = 0; + gUnknown_203B314->sBC.unk9C[2] = 8; + gUnknown_203B314->sBC.unk9C[3] = 0; + + SUB_80095E4_CALL(gUnknown_203B314->sBC.s0); } void sub_802FA50(void) @@ -878,33 +811,33 @@ void sub_802FA50(void) u32 y2; int index; int counter; - - sub_8008C54(gUnknown_203B314->unkF0); - sub_80073B8(gUnknown_203B314->unkF0); - xxx_call_draw_string(10,0,gUnknown_80E0744,gUnknown_203B314->unkF0,0); - sub_8012BC4(gUnknown_203B314->unk158[2] * 8 + 4,0,gUnknown_203B314->input.unk1E + 1,2,7,gUnknown_203B314->unkF0); + + sub_8008C54(gUnknown_203B314->sBC.s0.unk34); + sub_80073B8(gUnknown_203B314->sBC.s0.unk34); + xxx_call_draw_string(10,0,gUnknown_80E0744,gUnknown_203B314->sBC.s0.unk34,0); + sub_8012BC4(gUnknown_203B314->sBC.unk9C[2] * 8 + 4,0,gUnknown_203B314->sBC.s0.input.unk1E + 1,2,7,gUnknown_203B314->sBC.s0.unk34); if (gUnknown_203B314->unkB8 != 0) { - for(counter = 0; counter < gUnknown_203B314->input.unk1A; counter++) + for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y = sub_8013800(&gUnknown_203B314->input,counter); - index = gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C + counter; + y = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + index = gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter; sVar1 = gUnknown_203B314->unk0[index]; if (gUnknown_203B314->unk5C[index] != 0) { - xxx_call_draw_string(10,y,gUnknown_80E0750,gUnknown_203B314->unkF0,0); + xxx_call_draw_string(10,y,gUnknown_80E0750,gUnknown_203B314->sBC.s0.unk34,0); } else if (gUnknown_203B314->unk8A[index] != 0) { - xxx_call_draw_string(10,y,gUnknown_80E0754,gUnknown_203B314->unkF0,0); + xxx_call_draw_string(10,y,gUnknown_80E0754,gUnknown_203B314->sBC.s0.unk34,0); } - xxx_call_draw_string(0x18,y,sub_80974A0(sVar1),gUnknown_203B314->unkF0,0); + xxx_call_draw_string(0x18,y,sub_80974A0(sVar1),gUnknown_203B314->sBC.s0.unk34,0); } } else { - for(counter = 0; counter < gUnknown_203B314->input.unk1A; counter++) + for(counter = 0; counter < gUnknown_203B314->sBC.s0.input.unk1A; counter++) { - y2 = sub_8013800(&gUnknown_203B314->input,counter); - text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->input.unk1E * gUnknown_203B314->input.unk1C + counter]); - xxx_call_draw_string(8,y2,text,gUnknown_203B314->unkF0,0); + y2 = sub_8013800(&gUnknown_203B314->sBC.s0.input,counter); + text = sub_80974A0(gUnknown_203B314->unk0[gUnknown_203B314->sBC.s0.input.unk1E * gUnknown_203B314->sBC.s0.input.unk1C + counter]); + xxx_call_draw_string(8,y2,text,gUnknown_203B314->sBC.s0.unk34,0); } } - sub_80073E0(gUnknown_203B314->unkF0); + sub_80073E0(gUnknown_203B314->sBC.s0.unk34); }