mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-23 05:00:12 +00:00
RedrawPartnerSelectionMenu won for now...
This commit is contained in:
parent
9eec35694f
commit
439bbbc57c
@ -3,6 +3,7 @@
|
||||
|
||||
#include "structs/menu.h"
|
||||
#include "structs/str_text.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
// size: 0x3FC
|
||||
typedef struct unkStruct_3001B5C
|
||||
@ -15,11 +16,7 @@ typedef struct unkStruct_3001B5C
|
||||
u8 fill14[0x354 - 0x14];
|
||||
u8 unk354;
|
||||
u8 fill355[0x35C - 0x355];
|
||||
/* 0x35C */ MenuInputStruct input;
|
||||
u32 unk390;
|
||||
UnkTextStruct2 *unk394;
|
||||
UnkTextStruct2 unk398[4];
|
||||
u8 unk3F8[4];
|
||||
/* 0x35C */ struct_Sub80095E4_2 s35C;
|
||||
} unkStruct_3001B5C;
|
||||
|
||||
bool8 sub_8023144(s32, s32 index, UnkTextStruct2_sub *sub, u32);
|
||||
@ -28,4 +25,4 @@ s16 sub_802331C(void);
|
||||
void sub_8023354(bool8 cursorSprite);
|
||||
void sub_80233A0(void);
|
||||
|
||||
#endif // GUARD_CODE_8023144_H
|
||||
#endif // GUARD_CODE_8023144_H
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "constants/personality_test.h"
|
||||
#include "structs/menu.h"
|
||||
#include "structs/str_text.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
// Size: 0xB8
|
||||
struct PersonalityStruct_203B404
|
||||
@ -11,11 +12,7 @@ struct PersonalityStruct_203B404
|
||||
/* 0x0 */ s16 StarterID;
|
||||
/* 0x2 */ s16 PartnerArray[NUM_PARTNERS];
|
||||
u8 unk16;
|
||||
/* 0x18 */ MenuInputStruct input;
|
||||
u32 unk4C;
|
||||
UnkTextStruct2 *unk50;
|
||||
UnkTextStruct2 unk54[4];
|
||||
u8 unkb4[4];
|
||||
/* 0x18 */ struct_Sub80095E4_2 s18;
|
||||
};
|
||||
|
||||
void CreatePartnerSelectionMenu(s16 starterID);
|
||||
@ -23,4 +20,4 @@ u16 HandlePartnerSelectionInput(void);
|
||||
|
||||
void sub_803CE6C(void);
|
||||
|
||||
#endif // GUARD_PERSONALITY_TEST2_H
|
||||
#endif // GUARD_PERSONALITY_TEST2_H
|
||||
|
@ -41,7 +41,7 @@ typedef struct struct_Sub80095E4_2
|
||||
sub_800641C((ptr).unk3C, TRUE, TRUE); \
|
||||
}
|
||||
|
||||
// For sub_801C440 where unkE and unk10 are the same.
|
||||
// For sub_801C440 and sub_8023420 where unkE and unk10 are the same.
|
||||
#define SUB_80095E4_CALL_2(ptr) \
|
||||
{ \
|
||||
s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \
|
||||
|
@ -43,23 +43,23 @@ bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3)
|
||||
gUnknown_3001B5C->unk0 = param_1_u8;
|
||||
gUnknown_3001B5C->unk4 = gUnknown_203B298;
|
||||
|
||||
gUnknown_3001B5C->unk390 = index;
|
||||
gUnknown_3001B5C->unk394 = &gUnknown_3001B5C->unk398[index];
|
||||
sub_8006518(gUnknown_3001B5C->unk398);
|
||||
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390] = sUnknown_80DC91C;
|
||||
gUnknown_3001B5C->s35C.s0.unk34 = index;
|
||||
gUnknown_3001B5C->s35C.s0.unk38 = &gUnknown_3001B5C->s35C.s0.unk3C[index];
|
||||
sub_8006518(gUnknown_3001B5C->s35C.s0.unk3C);
|
||||
gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC91C;
|
||||
|
||||
gUnknown_3001B5C->unk394->unk14 = gUnknown_3001B5C->unk3F8;
|
||||
gUnknown_3001B5C->s35C.s0.unk38->unk14 = gUnknown_3001B5C->s35C.unk9C;
|
||||
|
||||
if (sub != NULL)
|
||||
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390].unk8 = *sub;
|
||||
gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub;
|
||||
|
||||
sub_8012D08(gUnknown_3001B5C->unk394, a3);
|
||||
sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_3001B5C->input, sub_80236A4(), a3, index);
|
||||
gUnknown_3001B5C->input.menuIndex = gUnknown_203B29C;
|
||||
gUnknown_3001B5C->input.unk1E = gUnknown_203B29E;
|
||||
sub_8013984(&gUnknown_3001B5C->input);
|
||||
sub_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_3001B5C->s35C.s0.input, sub_80236A4(), a3, index);
|
||||
gUnknown_3001B5C->s35C.s0.input.menuIndex = gUnknown_203B29C;
|
||||
gUnknown_3001B5C->s35C.s0.input.unk1E = gUnknown_203B29E;
|
||||
sub_8013984(&gUnknown_3001B5C->s35C.s0.input);
|
||||
sub_8023420();
|
||||
sub_80234BC();
|
||||
return TRUE;
|
||||
@ -71,11 +71,11 @@ u32 sub_8023278(bool8 a0)
|
||||
u32 temp;
|
||||
|
||||
if (!a0) {
|
||||
sub_8013660(&gUnknown_3001B5C->input);
|
||||
sub_8013660(&gUnknown_3001B5C->s35C.s0.input);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (GetKeyPress(&gUnknown_3001B5C->input)) {
|
||||
switch (GetKeyPress(&gUnknown_3001B5C->s35C.s0.input)) {
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
@ -91,7 +91,7 @@ u32 sub_8023278(bool8 a0)
|
||||
sub_80236A4();
|
||||
break;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_3001B5C->input, 1) == 0)
|
||||
if (sub_80138B8(&gUnknown_3001B5C->s35C.s0.input, 1) == 0)
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
@ -103,109 +103,43 @@ u32 sub_8023278(bool8 a0)
|
||||
|
||||
s16 sub_802331C(void)
|
||||
{
|
||||
return gUnknown_3001B5C->unkC[(gUnknown_3001B5C->input.unk1E * gUnknown_3001B5C->input.unk1C) + gUnknown_3001B5C->input.menuIndex];
|
||||
return gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + gUnknown_3001B5C->s35C.s0.input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8023354(bool8 cursorSprite)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398, FALSE, FALSE);
|
||||
sub_8013984(&gUnknown_3001B5C->input);
|
||||
sub_800641C(gUnknown_3001B5C->s35C.s0.unk3C, FALSE, FALSE);
|
||||
sub_8013984(&gUnknown_3001B5C->s35C.s0.input);
|
||||
sub_8023420();
|
||||
sub_80234BC();
|
||||
|
||||
if (cursorSprite)
|
||||
AddMenuCursorSprite(&gUnknown_3001B5C->input);
|
||||
AddMenuCursorSprite(&gUnknown_3001B5C->s35C.s0.input);
|
||||
}
|
||||
|
||||
void sub_80233A0(void)
|
||||
{
|
||||
if (gUnknown_3001B5C != NULL) {
|
||||
gUnknown_203B298 = gUnknown_3001B5C->unk4;
|
||||
gUnknown_203B29C = gUnknown_3001B5C->input.menuIndex;
|
||||
gUnknown_203B29E = gUnknown_3001B5C->input.unk1E;
|
||||
gUnknown_3001B5C->unk398[gUnknown_3001B5C->unk390] = sUnknown_80DC904;
|
||||
gUnknown_203B29C = gUnknown_3001B5C->s35C.s0.input.menuIndex;
|
||||
gUnknown_203B29E = gUnknown_3001B5C->s35C.s0.input.unk1E;
|
||||
gUnknown_3001B5C->s35C.s0.unk3C[gUnknown_3001B5C->s35C.s0.unk34] = sUnknown_80DC904;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_3001B5C->unk398, TRUE, TRUE);
|
||||
sub_800641C(gUnknown_3001B5C->s35C.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_3001B5C);
|
||||
gUnknown_3001B5C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED // sub_80095E4 memes
|
||||
static void sub_8023420(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,r5,lr}\n"
|
||||
"\tldr r4, _080234A8\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0xFE\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, _080234AC\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, _080234B0\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r2, _080234B4\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tldr r3, [r4]\n"
|
||||
"\tmovs r2, 0xE4\n"
|
||||
"\tlsls r2, 2\n"
|
||||
"\tadds r5, r3, r2\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r3, r1\n"
|
||||
"\tldr r2, _080234B8\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r2, [r5]\n"
|
||||
"\tlsls r1, r2, 1\n"
|
||||
"\tadds r1, r2\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r3, r1\n"
|
||||
"\tmovs r1, 0xEA\n"
|
||||
"\tlsls r1, 2\n"
|
||||
"\tadds r3, r1\n"
|
||||
"\tstrh r0, [r3]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r2, 0xE6\n"
|
||||
"\tlsls r2, 2\n"
|
||||
"\tadds r0, r2\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"
|
||||
"_080234A8: .4byte gUnknown_3001B5C\n"
|
||||
"_080234AC: .4byte 0x000003f9\n"
|
||||
"_080234B0: .4byte 0x000003fb\n"
|
||||
"_080234B4: .4byte 0x00000376\n"
|
||||
"_080234B8: .4byte 0x000003a6");
|
||||
gUnknown_3001B5C->s35C.unk9C[0] = 1;
|
||||
gUnknown_3001B5C->s35C.unk9C[1] = 0;
|
||||
gUnknown_3001B5C->s35C.unk9C[2] = 12;
|
||||
gUnknown_3001B5C->s35C.unk9C[3] = 0;
|
||||
|
||||
SUB_80095E4_CALL_2(gUnknown_3001B5C->s35C.s0);
|
||||
}
|
||||
|
||||
static void sub_80234BC(void)
|
||||
@ -221,15 +155,15 @@ static void sub_80234BC(void)
|
||||
u8 buffer1[100];
|
||||
unkStruct_8092638 auStack_2c;
|
||||
|
||||
sub_8008C54(gUnknown_3001B5C->unk390);
|
||||
sub_80073B8(gUnknown_3001B5C->unk390);
|
||||
xxx_call_draw_string(10, 0, sPokemon, gUnknown_3001B5C->unk390, 0);
|
||||
sub_8008C54(gUnknown_3001B5C->s35C.s0.unk34);
|
||||
sub_80073B8(gUnknown_3001B5C->s35C.s0.unk34);
|
||||
xxx_call_draw_string(10, 0, sPokemon, gUnknown_3001B5C->s35C.s0.unk34, 0);
|
||||
|
||||
sub_8012BC4((gUnknown_3001B5C->unk3F8[2] * 8) + 4, 0, gUnknown_3001B5C->input.unk1E + 1, 2, 7, gUnknown_3001B5C->unk390);
|
||||
sub_8012BC4((gUnknown_3001B5C->s35C.unk9C[2] * 8) + 4, 0, gUnknown_3001B5C->s35C.s0.input.unk1E + 1, 2, 7, gUnknown_3001B5C->s35C.s0.unk34);
|
||||
|
||||
for (i = 0; i < gUnknown_3001B5C->input.unk1A; i++) {
|
||||
y = sub_8013800(&gUnknown_3001B5C->input, i);
|
||||
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->input.unk1E * gUnknown_3001B5C->input.unk1C) + i];
|
||||
for (i = 0; i < gUnknown_3001B5C->s35C.s0.input.unk1A; i++) {
|
||||
y = sub_8013800(&gUnknown_3001B5C->s35C.s0.input, i);
|
||||
species = gUnknown_3001B5C->unkC[(gUnknown_3001B5C->s35C.s0.input.unk1E * gUnknown_3001B5C->s35C.s0.input.unk1C) + i];
|
||||
sub_8092638(GetFriendArea(species), &auStack_2c, FALSE, FALSE);
|
||||
color = COLOR_WHITE_2;
|
||||
if (auStack_2c.hasFriendArea)
|
||||
@ -237,26 +171,26 @@ static void sub_80234BC(void)
|
||||
|
||||
iVar4 = GetDexInternalNo(species, 0);
|
||||
cVar2 = (iVar4 % 10) + 48;
|
||||
sub_8012C60(20, y, cVar2, color, gUnknown_3001B5C->unk390);
|
||||
sub_8012C60(20, y, cVar2, color, gUnknown_3001B5C->s35C.s0.unk34);
|
||||
|
||||
if (9 < iVar4) {
|
||||
iVar4 /= 10;
|
||||
cVar2 = (iVar4 % 10) + 48;
|
||||
sub_8012C60(13, y, cVar2, color, gUnknown_3001B5C->unk390);
|
||||
sub_8012C60(13, y, cVar2, color, gUnknown_3001B5C->s35C.s0.unk34);
|
||||
|
||||
if (9 < iVar4) {
|
||||
uVar3 = iVar4 / 10;
|
||||
cVar2 = (uVar3 % 10) + 48;
|
||||
sub_8012C60(6, y, cVar2, color, gUnknown_3001B5C->unk390);
|
||||
sub_8012C60(6, y, cVar2, color, gUnknown_3001B5C->s35C.s0.unk34);
|
||||
}
|
||||
}
|
||||
|
||||
sub_808D930(buffer1,species);
|
||||
sprintfStatic(buffer2, sFmtColoredString, color, buffer1);
|
||||
xxx_call_draw_string(36, y, buffer2, gUnknown_3001B5C->unk390, 0);
|
||||
xxx_call_draw_string(36, y, buffer2, gUnknown_3001B5C->s35C.s0.unk34, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(gUnknown_3001B5C->unk390);
|
||||
sub_80073E0(gUnknown_3001B5C->s35C.s0.unk34);
|
||||
}
|
||||
|
||||
static u32 sub_80236A4(void)
|
||||
@ -448,4 +382,4 @@ NAKED static void sub_80237E0(void)
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08023864: .4byte gUnknown_3001B5C");
|
||||
}
|
||||
}
|
||||
|
@ -32,23 +32,23 @@ void CreatePartnerSelectionMenu(s16 starterID)
|
||||
|
||||
sub_803CEAC();
|
||||
gUnknown_203B404->StarterID = starterID_s32;
|
||||
gUnknown_203B404->unk4C = 0;
|
||||
gUnknown_203B404->unk50 = gUnknown_203B404->unk54;
|
||||
gUnknown_203B404->s18.s0.unk34 = 0;
|
||||
gUnknown_203B404->s18.s0.unk38 = gUnknown_203B404->s18.s0.unk3C;
|
||||
|
||||
gUnknown_203B404->unk54[0] = gUnknown_80F4290;
|
||||
gUnknown_203B404->unk54[1] = gUnknown_80F42A8;
|
||||
gUnknown_203B404->unk54[2] = gUnknown_80F4278;
|
||||
gUnknown_203B404->unk54[3] = gUnknown_80F4278;
|
||||
gUnknown_203B404->s18.s0.unk3C[0] = gUnknown_80F4290;
|
||||
gUnknown_203B404->s18.s0.unk3C[1] = gUnknown_80F42A8;
|
||||
gUnknown_203B404->s18.s0.unk3C[2] = gUnknown_80F4278;
|
||||
gUnknown_203B404->s18.s0.unk3C[3] = gUnknown_80F4278;
|
||||
|
||||
gUnknown_203B404->unk50->unk14 = gUnknown_203B404->unkb4;
|
||||
gUnknown_203B404->s18.s0.unk38->unk14 = gUnknown_203B404->s18.unk9C;
|
||||
|
||||
gUnknown_203B404->unkb4[0] = 1;
|
||||
gUnknown_203B404->unkb4[1] = 0;
|
||||
gUnknown_203B404->unkb4[2] = 6;
|
||||
gUnknown_203B404->unkb4[3] = 0;
|
||||
gUnknown_203B404->s18.unk9C[0] = 1;
|
||||
gUnknown_203B404->s18.unk9C[1] = 0;
|
||||
gUnknown_203B404->s18.unk9C[2] = 6;
|
||||
gUnknown_203B404->s18.unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B404->input, GetValidPartners(), 10, gUnknown_203B404->unk4C);
|
||||
sub_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B404->s18.s0.input, GetValidPartners(), 10, gUnknown_203B404->s18.s0.unk34);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
}
|
||||
@ -57,18 +57,18 @@ u16 HandlePartnerSelectionInput(void)
|
||||
{
|
||||
s32 partnerID;
|
||||
|
||||
partnerID = gUnknown_203B404->input.menuIndex;
|
||||
partnerID = gUnknown_203B404->s18.s0.input.menuIndex;
|
||||
gUnknown_203B404->unk16 = 0;
|
||||
|
||||
if (GetKeyPress(&gUnknown_203B404->input) == INPUT_A_BUTTON) {
|
||||
if (GetKeyPress(&gUnknown_203B404->s18.s0.input) == INPUT_A_BUTTON) {
|
||||
PlayMenuSoundEffect(0);
|
||||
return gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
return gUnknown_203B404->PartnerArray[gUnknown_203B404->s18.s0.input.menuIndex];
|
||||
}
|
||||
|
||||
if (sub_80138B8(&gUnknown_203B404->input, TRUE))
|
||||
if (sub_80138B8(&gUnknown_203B404->s18.s0.input, TRUE))
|
||||
RedrawPartnerSelectionMenu();
|
||||
|
||||
if (partnerID != gUnknown_203B404->input.menuIndex)
|
||||
if (partnerID != gUnknown_203B404->s18.s0.input.menuIndex)
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
|
||||
if (gUnknown_203B404->unk16 != 0) {
|
||||
@ -79,20 +79,20 @@ u16 HandlePartnerSelectionInput(void)
|
||||
|
||||
UNUSED static void sub_803CE34(bool8 cursorSprite)
|
||||
{
|
||||
gUnknown_203B404->input.unk22 = GetValidPartners();
|
||||
sub_8013984(&gUnknown_203B404->input);
|
||||
gUnknown_203B404->s18.s0.input.unk22 = GetValidPartners();
|
||||
sub_8013984(&gUnknown_203B404->s18.s0.input);
|
||||
RedrawPartnerSelectionMenu();
|
||||
PersonalityTest_DisplayPartnerSprite();
|
||||
|
||||
if (cursorSprite)
|
||||
AddMenuCursorSprite(&gUnknown_203B404->input);
|
||||
AddMenuCursorSprite(&gUnknown_203B404->s18.s0.input);
|
||||
}
|
||||
|
||||
void sub_803CE6C(void)
|
||||
{
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C] = gUnknown_80F4278;
|
||||
gUnknown_203B404->s18.s0.unk3C[gUnknown_203B404->s18.s0.unk34] = gUnknown_80F4278;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_800641C(gUnknown_203B404->s18.s0.unk3C, TRUE, TRUE);
|
||||
sub_803CECC();
|
||||
}
|
||||
|
||||
@ -116,38 +116,27 @@ static void sub_803CECC(void)
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // sub_80095E4 memes
|
||||
// Unfortunately `SUB_80095E4_CALL` doesn't work in this case, because of a `mov r4, #0` instruction put 2 instructions too late...
|
||||
static void RedrawPartnerSelectionMenu(void)
|
||||
{
|
||||
s32 sVar1;
|
||||
u32 yCoord;
|
||||
const u8 *monName;
|
||||
s32 monCounter;
|
||||
|
||||
sVar1 = sub_80095E4(gUnknown_203B404->unk32, 12);
|
||||
SUB_80095E4_CALL(gUnknown_203B404->s18.s0);
|
||||
|
||||
// Have a feeling this is some graphical thing but
|
||||
// still not sure structure so it's not matching yet bc of that
|
||||
// and some casting stuff
|
||||
sVar1 += 2;
|
||||
sVar1 <<= 16;
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C].unk0[7] = sVar1;
|
||||
gUnknown_203B404->unk54[gUnknown_203B404->unk4C].unk0[8] = sVar1 + 2;
|
||||
|
||||
// Everything after this matches
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B404->unk54, TRUE, TRUE);
|
||||
sub_8008C54(gUnknown_203B404->unk4C);
|
||||
sub_80073B8(gUnknown_203B404->unk4C);
|
||||
xxx_call_draw_string(12, 0, gPartnerSelectionHeaderText, gUnknown_203B404->unk4C, 0);
|
||||
sub_8008C54(gUnknown_203B404->s18.s0.unk34);
|
||||
sub_80073B8(gUnknown_203B404->s18.s0.unk34);
|
||||
xxx_call_draw_string(12, 0, gPartnerSelectionHeaderText, gUnknown_203B404->s18.s0.unk34, 0);
|
||||
|
||||
monCounter = 0;
|
||||
while (monCounter < gUnknown_203B404->unk32) {
|
||||
yCoord = sub_8013800(&gUnknown_203B404->unk18, monCounter);
|
||||
while (monCounter < gUnknown_203B404->s18.s0.input.unk1A) {
|
||||
yCoord = sub_8013800(&gUnknown_203B404->s18.s0.input, monCounter);
|
||||
monName = GetMonSpecies(gUnknown_203B404->PartnerArray[monCounter]);
|
||||
xxx_call_draw_string(8, yCoord, monName, gUnknown_203B404->unk4C, 0);
|
||||
xxx_call_draw_string(8, yCoord, monName, gUnknown_203B404->s18.s0.unk34, 0);
|
||||
monCounter++;
|
||||
}
|
||||
sub_80073E0(gUnknown_203B404->unk4C);
|
||||
sub_80073E0(gUnknown_203B404->s18.s0.unk34);
|
||||
gUnknown_203B404->unk16 = 1;
|
||||
}
|
||||
#else
|
||||
@ -259,7 +248,7 @@ static void PersonalityTest_DisplayPartnerSprite(void)
|
||||
u8 *r6;
|
||||
u32 faceIndex;
|
||||
|
||||
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->input.menuIndex];
|
||||
partnerID = gUnknown_203B404->PartnerArray[gUnknown_203B404->s18.s0.input.menuIndex];
|
||||
sub_8008C54(1);
|
||||
sub_80073B8(1);
|
||||
faceFile = GetDialogueSpriteDataPtr(partnerID);
|
||||
@ -300,4 +289,4 @@ static s32 GetValidPartners(void)
|
||||
}
|
||||
|
||||
return ValidPartnerCounter;
|
||||
}
|
||||
}
|
||||
|
@ -13,17 +13,14 @@
|
||||
#include "structs/str_802C39C.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
struct unkStruct_203B320
|
||||
{
|
||||
// size: 0xC4
|
||||
u8 unk0[0x20];
|
||||
u32 wonderMailType;
|
||||
MenuInputStruct input;
|
||||
u32 unk58;
|
||||
UnkTextStruct2 *unk5C;
|
||||
UnkTextStruct2 unk60[4];
|
||||
u8 unkC0[4];
|
||||
struct_Sub80095E4_2 s28;
|
||||
};
|
||||
static EWRAM_DATA_2 struct unkStruct_203B320 *gUnknown_203B320 = {0};
|
||||
|
||||
@ -56,7 +53,7 @@ extern const u8 ThanksList[];
|
||||
extern const u8 CompletedJobs[];
|
||||
extern const u8 OkdRescue[];
|
||||
|
||||
const u8 * const gUnknown_80E086C[] =
|
||||
const u8 * const gUnknown_80E086C[] =
|
||||
{
|
||||
SOSList,
|
||||
RequestList,
|
||||
@ -89,21 +86,21 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3)
|
||||
|
||||
gUnknown_203B320 = MemoryAlloc(sizeof(struct unkStruct_203B320), 8);
|
||||
gUnknown_203B320->wonderMailType = wonderMailType;
|
||||
gUnknown_203B320->unk58 = r1;
|
||||
gUnknown_203B320->s28.s0.unk34 = r1;
|
||||
|
||||
gUnknown_203B320->unk5C = &gUnknown_203B320->unk60[gUnknown_203B320->unk58];
|
||||
sub_8006518(gUnknown_203B320->unk60);
|
||||
gUnknown_203B320->s28.s0.unk38 = &gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34];
|
||||
sub_8006518(gUnknown_203B320->s28.s0.unk3C);
|
||||
|
||||
gUnknown_203B320->unk60[gUnknown_203B320->unk58] = gUnknown_80E0854;
|
||||
gUnknown_203B320->unk5C->unk14 = gUnknown_203B320->unkC0;
|
||||
gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E0854;
|
||||
gUnknown_203B320->s28.s0.unk38->unk14 = gUnknown_203B320->s28.unk9C;
|
||||
|
||||
if (r2 != 0)
|
||||
gUnknown_203B320->unk60[gUnknown_203B320->unk58].unk8 = *r2;
|
||||
gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34].unk8 = *r2;
|
||||
|
||||
sub_8012D08(gUnknown_203B320->unk5C, r3);
|
||||
sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B320->unk60, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B320->input, sub_8030A74(), r3, r1);
|
||||
sub_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B320->s28.s0.input, sub_8030A74(), r3, r1);
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
return 1;
|
||||
@ -113,10 +110,10 @@ u32 sub_8030768(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B320->input);
|
||||
sub_8013660(&gUnknown_203B320->s28.s0.input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B320->input))
|
||||
switch(GetKeyPress(&gUnknown_203B320->s28.s0.input))
|
||||
{
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
@ -128,7 +125,7 @@ u32 sub_8030768(u8 r0)
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B320->input, 1) != 0)
|
||||
if(sub_80138B8(&gUnknown_203B320->s28.s0.input, 1) != 0)
|
||||
{
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
@ -141,27 +138,27 @@ u32 sub_8030768(u8 r0)
|
||||
|
||||
u8 sub_80307EC(void)
|
||||
{
|
||||
return gUnknown_203B320->unk0[(gUnknown_203B320->input.unk1E * gUnknown_203B320->input.unk1C) + gUnknown_203B320->input.menuIndex];
|
||||
return gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + gUnknown_203B320->s28.s0.input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8030810(u8 r0)
|
||||
{
|
||||
gUnknown_203B320->input.unk22 = sub_8030A74();
|
||||
sub_8013984(&gUnknown_203B320->input);
|
||||
gUnknown_203B320->s28.s0.input.unk22 = sub_8030A74();
|
||||
sub_8013984(&gUnknown_203B320->s28.s0.input);
|
||||
|
||||
sub_80308A0();
|
||||
sub_803092C();
|
||||
if(r0 != 0)
|
||||
AddMenuCursorSprite(&gUnknown_203B320->input);
|
||||
AddMenuCursorSprite(&gUnknown_203B320->s28.s0.input);
|
||||
}
|
||||
|
||||
void sub_803084C()
|
||||
{
|
||||
if(gUnknown_203B320 != NULL)
|
||||
{
|
||||
gUnknown_203B320->unk60[gUnknown_203B320->unk58] = gUnknown_80E083C;
|
||||
gUnknown_203B320->s28.s0.unk3C[gUnknown_203B320->s28.s0.unk34] = gUnknown_80E083C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B320->unk60, TRUE, TRUE);
|
||||
sub_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_203B320);
|
||||
gUnknown_203B320 = NULL;
|
||||
}
|
||||
@ -172,74 +169,16 @@ u8 *sub_8030894()
|
||||
return gUnknown_203B320->unk0;
|
||||
}
|
||||
|
||||
NAKED // sub_80095E4 memes
|
||||
void sub_80308A0(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _08030928\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x44\n"
|
||||
"\tldrh r1, [r1]\n"
|
||||
"\tadds r0, 0xC0\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tadds r1, 0x42\n"
|
||||
"\tldrh r1, [r1]\n"
|
||||
"\tadds r0, 0xC1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xC2\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xC3\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x60\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x3E\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, 0x58]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x6E\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x58]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x70\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x60\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"
|
||||
"_08030928: .4byte gUnknown_203B320");
|
||||
gUnknown_203B320->s28.unk9C[0] = gUnknown_203B320->s28.s0.input.unk20;
|
||||
gUnknown_203B320->s28.unk9C[1] = gUnknown_203B320->s28.s0.input.unk1E;
|
||||
gUnknown_203B320->s28.unk9C[2] = 12;
|
||||
gUnknown_203B320->s28.unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B320->s28.s0.unk3C, TRUE, TRUE);
|
||||
|
||||
SUB_80095E4_CALL(gUnknown_203B320->s28.s0);
|
||||
}
|
||||
|
||||
void sub_803092C(void)
|
||||
@ -249,21 +188,21 @@ void sub_803092C(void)
|
||||
s32 r5;
|
||||
s32 index;
|
||||
unkStruct_802C39C local;
|
||||
|
||||
sub_8008C54(gUnknown_203B320->unk58);
|
||||
sub_80073B8(gUnknown_203B320->unk58);
|
||||
r4 = gUnknown_203B320->input.unk1E * 8;
|
||||
|
||||
sub_8008C54(gUnknown_203B320->s28.s0.unk34);
|
||||
sub_80073B8(gUnknown_203B320->s28.s0.unk34);
|
||||
r4 = gUnknown_203B320->s28.s0.input.unk1E * 8;
|
||||
r5 = r4;
|
||||
r5 += 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailType],gUnknown_203B320->unk58,0);
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B320->unkC0[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->input.unk1E + 1,1,7,gUnknown_203B320->unk58);
|
||||
xxx_call_draw_string(r5,0,gUnknown_80E086C[gUnknown_203B320->wonderMailType],gUnknown_203B320->s28.s0.unk34,0);
|
||||
r4 += 4;
|
||||
r5 = r4 + gUnknown_203B320->s28.unk9C[2] * 8;
|
||||
sub_8012BC4(r5,0,gUnknown_203B320->s28.s0.input.unk1E + 1,1,7,gUnknown_203B320->s28.s0.unk34);
|
||||
|
||||
for (index = 0; index < gUnknown_203B320->input.unk1A; index++) {
|
||||
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->input.unk1E * gUnknown_203B320->input.unk1C) + index]);
|
||||
local.unk0[0] = gUnknown_203B320->unk58;
|
||||
local.y = sub_8013800(&gUnknown_203B320->input,index);
|
||||
for (index = 0; index < gUnknown_203B320->s28.s0.input.unk1A; index++) {
|
||||
mail = GetMailatIndex(gUnknown_203B320->unk0[(gUnknown_203B320->s28.s0.input.unk1E * gUnknown_203B320->s28.s0.input.unk1C) + index]);
|
||||
local.unk0[0] = gUnknown_203B320->s28.s0.unk34;
|
||||
local.y = sub_8013800(&gUnknown_203B320->s28.s0.input,index);
|
||||
local.mailTitleType = 7;
|
||||
local.mailMissionType = MISSION_TYPE_FRIEND_RESCUE;
|
||||
local.mailStatus = MAIL_STATUS_SUSPENDED;
|
||||
@ -294,7 +233,7 @@ void sub_803092C(void)
|
||||
}
|
||||
CreateRescueTitle(&local);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B320->unk58);
|
||||
sub_80073E0(gUnknown_203B320->s28.s0.unk34);
|
||||
}
|
||||
|
||||
s32 sub_8030A74(void)
|
||||
@ -390,7 +329,7 @@ s32 sub_8030A74(void)
|
||||
bool8 HasNoWonderMailType(u32 wonderMailType)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
|
||||
switch(wonderMailType) {
|
||||
case WONDER_MAIL_TYPE_NONE:
|
||||
for (index = 0; index < 0x20; index++)
|
||||
|
Loading…
Reference in New Issue
Block a user