fix instances of sub80095e4 memes

This commit is contained in:
DizzyEggg
2024-07-13 14:10:54 +02:00
parent eae0890c5a
commit c64aa61420
18 changed files with 376 additions and 907 deletions

View File

@@ -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
#endif // GUARD_ADVENTURE_LOG_H

View File

@@ -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
#endif // GUARD_CODE_801D9E4_H

View File

@@ -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
#endif // GUARD_HINTS_MENU1_H

View File

@@ -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
#endif // GUARD_KECLEON_BROS2_H

View File

@@ -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
#endif // GUARD_KECLEON_BROS3_H

View File

@@ -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
#endif // GUARD_MAKUHITA_DOJO2_H

View File

@@ -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
#endif // GUARD_POKEMON_NEWS1_H

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}
sub_80073E0(sUnknown_203B258->s0.unk34);
}

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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);
}
sub_80073E0(gUnknown_203B214->s0.unk34);
}

View File

@@ -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);
}
sub_80073E0(gUnknown_203B21C->s0.unk34);
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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);
}