mirror of
https://github.com/pret/pmd-red.git
synced 2025-02-11 15:55:38 +00:00
wigglytuff and code801c244 file
This commit is contained in:
parent
c64aa61420
commit
9eec35694f
@ -5,6 +5,7 @@
|
||||
#include "structs/menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "structs/str_text.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
// size: 0xC4
|
||||
struct unkStruct_203B23C
|
||||
@ -13,14 +14,7 @@ struct unkStruct_203B23C
|
||||
/* 0x4 */ PokemonStruct1 *pokeStruct;
|
||||
/* 0x8 */ u8 iqSkills[NUM_IQ_SKILLS];
|
||||
/* 0x20 */ s32 numIQSkills;
|
||||
/* 0x24 */ MenuInputStruct input;
|
||||
u32 unk58;
|
||||
UnkTextStruct2 *unk5C;
|
||||
UnkTextStruct2 unk60[4];
|
||||
u8 unkC0;
|
||||
u8 unkC1;
|
||||
u8 unkC2;
|
||||
u8 unkC3;
|
||||
/* 0x24 */ struct_Sub80095E4_2 s24;
|
||||
};
|
||||
|
||||
bool8 HasNoAvailIQSkills(s16 species);
|
||||
@ -32,4 +26,4 @@ void sub_801C3B0(bool8);
|
||||
void sub_801C3F8(void);
|
||||
void sub_801C4C8(void);
|
||||
|
||||
#endif // GUARD_CODE_801C244_H
|
||||
#endif // GUARD_CODE_801C244_H
|
||||
|
@ -41,4 +41,18 @@ typedef struct struct_Sub80095E4_2
|
||||
sub_800641C((ptr).unk3C, TRUE, TRUE); \
|
||||
}
|
||||
|
||||
// For sub_801C440 where unkE and unk10 are the same.
|
||||
#define SUB_80095E4_CALL_2(ptr) \
|
||||
{ \
|
||||
s32 a0 = sub_80095E4((ptr).input.unk1A, 12) + 2; \
|
||||
UNUSED s16 oldE = (ptr).unk3C[(ptr).unk34].unkE; \
|
||||
s16 newE = a0; \
|
||||
\
|
||||
(ptr).unk3C[(ptr).unk34].unkE = newE; \
|
||||
(ptr).unk3C[(ptr).unk34].unk10 = newE; \
|
||||
\
|
||||
ResetUnusedInputStruct(); \
|
||||
sub_800641C((ptr).unk3C, TRUE, TRUE); \
|
||||
}
|
||||
|
||||
#endif // GUARD_struct_sub80095e4_H
|
||||
|
@ -4,16 +4,14 @@
|
||||
#include "constants/friend_area.h"
|
||||
#include "structs/menu.h"
|
||||
#include "structs/str_text.h"
|
||||
#include "structs/struct_sub80095e4.h"
|
||||
|
||||
typedef struct WigglytuffShop1Work
|
||||
{
|
||||
/* 0x0 */ u8 friendAreas[NUM_FRIEND_AREAS];
|
||||
/* 0x3C */ u32 mode;
|
||||
MenuInputStruct unk40;
|
||||
s32 unk74;
|
||||
UnkTextStruct2 *unk78;
|
||||
UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
struct_Sub80095E4_2 s40;
|
||||
|
||||
} WigglytuffShop1Work;
|
||||
|
||||
bool8 sub_80211AC(u32 mode, u32);
|
||||
@ -24,4 +22,4 @@ void sub_80213A0(void);
|
||||
void sub_8021494(void);
|
||||
bool8 sub_8021700(u32 kind);
|
||||
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP1_H
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP1_H
|
||||
|
@ -37,15 +37,15 @@ bool8 sub_801C244(s16 species, u32 index, u32 a2)
|
||||
sUnknown_203B23C->species = species_s32;
|
||||
sUnknown_203B23C->pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
||||
sUnknown_203B23C->numIQSkills = GetNumAvailableIQSkills(sUnknown_203B23C->iqSkills, sUnknown_203B23C->pokeStruct->IQ);
|
||||
sUnknown_203B23C->unk58 = index;
|
||||
sUnknown_203B23C->unk5C = &sUnknown_203B23C->unk60[index];
|
||||
sub_8006518(sUnknown_203B23C->unk60);
|
||||
sUnknown_203B23C->unk60[sUnknown_203B23C->unk58] = sUnknown_80DBDF0;
|
||||
sUnknown_203B23C->unk5C->unk14 = &sUnknown_203B23C->unkC0;
|
||||
sub_8012D08(sUnknown_203B23C->unk5C, a2);
|
||||
sUnknown_203B23C->s24.s0.unk34 = index;
|
||||
sUnknown_203B23C->s24.s0.unk38 = &sUnknown_203B23C->s24.s0.unk3C[index];
|
||||
sub_8006518(sUnknown_203B23C->s24.s0.unk3C);
|
||||
sUnknown_203B23C->s24.s0.unk3C[sUnknown_203B23C->s24.s0.unk34] = sUnknown_80DBDF0;
|
||||
sUnknown_203B23C->s24.s0.unk38->unk14 = sUnknown_203B23C->s24.unk9C;
|
||||
sub_8012D08(sUnknown_203B23C->s24.s0.unk38, a2);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->unk60, TRUE, TRUE);
|
||||
sub_8013818(&sUnknown_203B23C->input, sUnknown_203B23C->numIQSkills, a2, index);
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&sUnknown_203B23C->s24.s0.input, sUnknown_203B23C->numIQSkills, a2, index);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
return TRUE;
|
||||
@ -54,11 +54,11 @@ bool8 sub_801C244(s16 species, u32 index, u32 a2)
|
||||
u32 sub_801C308(bool8 a0)
|
||||
{
|
||||
if (!a0) {
|
||||
sub_8013660(&sUnknown_203B23C->input);
|
||||
sub_8013660(&sUnknown_203B23C->s24.s0.input);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (GetKeyPress(&sUnknown_203B23C->input)) {
|
||||
switch (GetKeyPress(&sUnknown_203B23C->s24.s0.input)) {
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
@ -69,7 +69,7 @@ u32 sub_801C308(bool8 a0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&sUnknown_203B23C->input, 1) != 0) {
|
||||
if (sub_80138B8(&sUnknown_203B23C->s24.s0.input, 1) != 0) {
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
return 1;
|
||||
@ -80,121 +80,44 @@ u32 sub_801C308(bool8 a0)
|
||||
|
||||
s32 sub_801C390(void)
|
||||
{
|
||||
return (sUnknown_203B23C->input.unk1E * sUnknown_203B23C->input.unk1C) + sUnknown_203B23C->input.menuIndex;
|
||||
return (sUnknown_203B23C->s24.s0.input.unk1E * sUnknown_203B23C->s24.s0.input.unk1C) + sUnknown_203B23C->s24.s0.input.menuIndex;
|
||||
}
|
||||
|
||||
void sub_801C3B0(bool8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->unk60, FALSE, FALSE);
|
||||
sUnknown_203B23C->input.unk22 = sUnknown_203B23C->numIQSkills;
|
||||
sub_8013984(&sUnknown_203B23C->input);
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, FALSE, FALSE);
|
||||
sUnknown_203B23C->s24.s0.input.unk22 = sUnknown_203B23C->numIQSkills;
|
||||
sub_8013984(&sUnknown_203B23C->s24.s0.input);
|
||||
sub_801C440();
|
||||
sub_801C4C8();
|
||||
|
||||
if (r0)
|
||||
AddMenuCursorSprite(&sUnknown_203B23C->input);
|
||||
AddMenuCursorSprite(&sUnknown_203B23C->s24.s0.input);
|
||||
}
|
||||
|
||||
void sub_801C3F8(void)
|
||||
{
|
||||
if (sUnknown_203B23C != NULL) {
|
||||
sUnknown_203B23C->unk60[sUnknown_203B23C->unk58] = sUnknown_80DBDD8;
|
||||
sUnknown_203B23C->s24.s0.unk3C[sUnknown_203B23C->s24.s0.unk34] = sUnknown_80DBDD8;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->unk60, TRUE, TRUE);
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(sUnknown_203B23C);
|
||||
sUnknown_203B23C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // sub_80095E4 memes
|
||||
// https://decomp.me/scratch/NdDP3 (98.06% matching) - Seth
|
||||
static void sub_801C440(void)
|
||||
{
|
||||
u16 sVar2;
|
||||
sUnknown_203B23C->s24.unk9C[0] = sUnknown_203B23C->s24.s0.input.unk20;
|
||||
sUnknown_203B23C->s24.unk9C[1] = sUnknown_203B23C->s24.s0.input.unk1E;
|
||||
sUnknown_203B23C->s24.unk9C[2] = 10;
|
||||
sUnknown_203B23C->s24.unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->s24.s0.unk3C, TRUE, TRUE);
|
||||
|
||||
sUnknown_203B23C->unkC0 = sUnknown_203B23C->unk24.unk20;
|
||||
sUnknown_203B23C->unkC1 = sUnknown_203B23C->unk24.unk1E;
|
||||
sUnknown_203B23C->unkC2 = 10;
|
||||
sUnknown_203B23C->unkC3 = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->unk60, TRUE, TRUE);
|
||||
sVar2 = sub_80095E4(sUnknown_203B23C->unk24.unk1A, 12) + 2;
|
||||
sUnknown_203B23C->unk60[sUnknown_203B23C->unk58].unkE = sVar2;
|
||||
sUnknown_203B23C->unk60[sUnknown_203B23C->unk58].unk10 = sVar2;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B23C->unk60, TRUE, TRUE);
|
||||
SUB_80095E4_CALL_2(sUnknown_203B23C->s24.s0);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
static void sub_801C440(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0801C4C4\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, 0xA\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"
|
||||
"\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"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r3, [r2, 0x58]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r2, r1\n"
|
||||
"\tadds r2, 0x70\n"
|
||||
"\tstrh r0, [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"
|
||||
"_0801C4C4: .4byte sUnknown_203B23C"
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_801C4C8(void)
|
||||
{
|
||||
@ -204,21 +127,21 @@ void sub_801C4C8(void)
|
||||
u32 skillIndex;
|
||||
s32 counter;
|
||||
|
||||
sub_8008C54(sUnknown_203B23C->unk58);
|
||||
sub_80073B8(sUnknown_203B23C->unk58);
|
||||
x = sUnknown_203B23C->input.unk1E * 8;
|
||||
sub_8008C54(sUnknown_203B23C->s24.s0.unk34);
|
||||
sub_80073B8(sUnknown_203B23C->s24.s0.unk34);
|
||||
x = sUnknown_203B23C->s24.s0.input.unk1E * 8;
|
||||
x2 = x;
|
||||
x2 += 10;
|
||||
xxx_call_draw_string(x2, 0, sIQSkills, sUnknown_203B23C->unk58, 0);
|
||||
xxx_call_draw_string(x2, 0, sIQSkills, sUnknown_203B23C->s24.s0.unk34, 0);
|
||||
|
||||
x += 4;
|
||||
x2 = x + sUnknown_203B23C->unkC2 * 8;
|
||||
sub_8012BC4(x2, 0, sUnknown_203B23C->input.unk1E + 1, 1, 7, sUnknown_203B23C->unk58);
|
||||
x2 = x + sUnknown_203B23C->s24.unk9C[2] * 8;
|
||||
sub_8012BC4(x2, 0, sUnknown_203B23C->s24.s0.input.unk1E + 1, 1, 7, sUnknown_203B23C->s24.s0.unk34);
|
||||
|
||||
for (counter = 0; counter < sUnknown_203B23C->input.unk1A; counter++) {
|
||||
skillIndex = sUnknown_203B23C->iqSkills[(sUnknown_203B23C->input.unk1E * sUnknown_203B23C->input.unk1C) + counter];
|
||||
for (counter = 0; counter < sUnknown_203B23C->s24.s0.input.unk1A; counter++) {
|
||||
skillIndex = sUnknown_203B23C->iqSkills[(sUnknown_203B23C->s24.s0.input.unk1E * sUnknown_203B23C->s24.s0.input.unk1C) + counter];
|
||||
|
||||
y = sub_8013800(&sUnknown_203B23C->input, counter);
|
||||
y = sub_8013800(&sUnknown_203B23C->s24.s0.input, counter);
|
||||
strncpy(gUnknown_202DEA8, GetIQSkillName(skillIndex), 80);
|
||||
|
||||
if (IsIQSkillSet((u8 *)&sUnknown_203B23C->pokeStruct->IQSkills, 1 << skillIndex))
|
||||
@ -226,10 +149,10 @@ void sub_801C4C8(void)
|
||||
else
|
||||
strcpy(gUnknown_202DEA8 - 80, sUnknown_80DBE18);
|
||||
|
||||
xxx_format_and_draw(12, y, sFmt01, sUnknown_203B23C->unk58, 0);
|
||||
xxx_format_and_draw(12, y, sFmt01, sUnknown_203B23C->s24.s0.unk34, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(sUnknown_203B23C->unk58);
|
||||
sub_80073E0(sUnknown_203B23C->s24.s0.unk34);
|
||||
}
|
||||
|
||||
bool8 HasNoAvailIQSkills(s16 species)
|
||||
@ -245,4 +168,4 @@ bool8 HasNoAvailIQSkills(s16 species)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ static void sub_801DBD4(void)
|
||||
n = sUnknown_203B258->s0.input.unk1E + 1;
|
||||
sub_8012BC4(x, 0, n, 2, 7, sUnknown_203B258->s0.unk34);
|
||||
|
||||
// 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.
|
||||
// This line has no real effect. It's a magic 'fakematch' to fool agb into generating the same asm. It can be removed if you don't care about matching.
|
||||
if (x) { counter = 0; }
|
||||
|
||||
for (counter = 0; counter < sUnknown_203B258->s0.input.unk1A; counter++) {
|
||||
|
@ -30,19 +30,19 @@ bool8 sub_80211AC(u32 mode, u32 a1)
|
||||
|
||||
sWigglytuffShop1Work = MemoryAlloc(sizeof(WigglytuffShop1Work), 8);
|
||||
sWigglytuffShop1Work->mode = mode;
|
||||
sWigglytuffShop1Work->unk74 = a1;
|
||||
sWigglytuffShop1Work->unk78 = &sWigglytuffShop1Work->unk7C[sWigglytuffShop1Work->unk74];
|
||||
sub_8006518(sWigglytuffShop1Work->unk7C);
|
||||
sWigglytuffShop1Work->unk7C[sWigglytuffShop1Work->unk74] = sUnknown_80DC47C;
|
||||
sWigglytuffShop1Work->unk78->unk14 = sWigglytuffShop1Work->unkDC;
|
||||
sWigglytuffShop1Work->s40.s0.unk34 = a1;
|
||||
sWigglytuffShop1Work->s40.s0.unk38 = &sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34];
|
||||
sub_8006518(sWigglytuffShop1Work->s40.s0.unk3C);
|
||||
sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC47C;
|
||||
sWigglytuffShop1Work->s40.s0.unk38->unk14 = sWigglytuffShop1Work->s40.unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sWigglytuffShop1Work->unk7C, TRUE, TRUE);
|
||||
sub_8013818(&sWigglytuffShop1Work->unk40, sub_8021664(), 10, a1);
|
||||
sub_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE);
|
||||
sub_8013818(&sWigglytuffShop1Work->s40.s0.input, sub_8021664(), 10, a1);
|
||||
|
||||
if (sUnknown_203B284 == sWigglytuffShop1Work->mode) {
|
||||
sWigglytuffShop1Work->unk40.menuIndex = sUnknown_203B288;
|
||||
sWigglytuffShop1Work->unk40.unk1E = sUnknown_203B28A;
|
||||
sub_8013984(&sWigglytuffShop1Work->unk40);
|
||||
sWigglytuffShop1Work->s40.s0.input.menuIndex = sUnknown_203B288;
|
||||
sWigglytuffShop1Work->s40.s0.input.unk1E = sUnknown_203B28A;
|
||||
sub_8013984(&sWigglytuffShop1Work->s40.s0.input);
|
||||
}
|
||||
|
||||
sub_8021410();
|
||||
@ -53,11 +53,11 @@ bool8 sub_80211AC(u32 mode, u32 a1)
|
||||
u32 sub_8021274(bool8 a0)
|
||||
{
|
||||
if (!a0) {
|
||||
sub_8013660(&sWigglytuffShop1Work->unk40);
|
||||
sub_8013660(&sWigglytuffShop1Work->s40.s0.input);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (GetKeyPress(&sWigglytuffShop1Work->unk40)) {
|
||||
switch (GetKeyPress(&sWigglytuffShop1Work->s40.s0.input)) {
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
@ -71,7 +71,7 @@ u32 sub_8021274(bool8 a0)
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&sWigglytuffShop1Work->unk40, 1) != 0) {
|
||||
if (sub_80138B8(&sWigglytuffShop1Work->s40.s0.input, 1) != 0) {
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
return 1;
|
||||
@ -82,100 +82,46 @@ u32 sub_8021274(bool8 a0)
|
||||
|
||||
u8 sub_802132C(void)
|
||||
{
|
||||
return sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->unk40.unk1E * sWigglytuffShop1Work->unk40.unk1C) + sWigglytuffShop1Work->unk40.menuIndex];
|
||||
return sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.unk1C) + sWigglytuffShop1Work->s40.s0.input.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8021354(bool8 cursorSprite)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sWigglytuffShop1Work->unk7C, FALSE, FALSE);
|
||||
sWigglytuffShop1Work->unk40.unk22 = sub_8021664();
|
||||
sub_8013984(&sWigglytuffShop1Work->unk40);
|
||||
sub_800641C(sWigglytuffShop1Work->s40.s0.unk3C, FALSE, FALSE);
|
||||
sWigglytuffShop1Work->s40.s0.input.unk22 = sub_8021664();
|
||||
sub_8013984(&sWigglytuffShop1Work->s40.s0.input);
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
|
||||
if (cursorSprite)
|
||||
AddMenuCursorSprite(&sWigglytuffShop1Work->unk40);
|
||||
AddMenuCursorSprite(&sWigglytuffShop1Work->s40.s0.input);
|
||||
}
|
||||
|
||||
void sub_80213A0(void)
|
||||
{
|
||||
if (sWigglytuffShop1Work) {
|
||||
sUnknown_203B284 = sWigglytuffShop1Work->mode;
|
||||
sUnknown_203B288 = sWigglytuffShop1Work->unk40.menuIndex;
|
||||
sUnknown_203B28A = sWigglytuffShop1Work->unk40.unk1E;
|
||||
sWigglytuffShop1Work->unk7C[sWigglytuffShop1Work->unk74] = sUnknown_80DC464;
|
||||
sUnknown_203B288 = sWigglytuffShop1Work->s40.s0.input.menuIndex;
|
||||
sUnknown_203B28A = sWigglytuffShop1Work->s40.s0.input.unk1E;
|
||||
sWigglytuffShop1Work->s40.s0.unk3C[sWigglytuffShop1Work->s40.s0.unk34] = sUnknown_80DC464;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sWigglytuffShop1Work->unk7C, TRUE, TRUE);
|
||||
sub_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE);
|
||||
MemoryFree(sWigglytuffShop1Work);
|
||||
sWigglytuffShop1Work = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED // sub_80095E4 memes
|
||||
static void sub_8021410(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _08021490\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDC\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDD\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDE\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDF\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x7C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x5A\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, 0x74]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x8A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x74]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x8C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x7C\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"
|
||||
"_08021490: .4byte sWigglytuffShop1Work");
|
||||
sWigglytuffShop1Work->s40.unk9C[0] = 1;
|
||||
sWigglytuffShop1Work->s40.unk9C[1] = 0;
|
||||
sWigglytuffShop1Work->s40.unk9C[2] = 12;
|
||||
sWigglytuffShop1Work->s40.unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sWigglytuffShop1Work->s40.s0.unk3C, TRUE, TRUE);
|
||||
|
||||
SUB_80095E4_CALL(sWigglytuffShop1Work->s40.s0);
|
||||
}
|
||||
|
||||
void sub_8021494(void)
|
||||
@ -185,38 +131,38 @@ void sub_8021494(void)
|
||||
u8 buffer1[80];
|
||||
u8 buffer2[80];
|
||||
|
||||
sub_8008C54(sWigglytuffShop1Work->unk74);
|
||||
sub_80073B8(sWigglytuffShop1Work->unk74);
|
||||
xxx_call_draw_string(10, 0, sFriendAreas, sWigglytuffShop1Work->unk74, 0);
|
||||
sub_8008C54(sWigglytuffShop1Work->s40.s0.unk34);
|
||||
sub_80073B8(sWigglytuffShop1Work->s40.s0.unk34);
|
||||
xxx_call_draw_string(10, 0, sFriendAreas, sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
|
||||
sub_8012BC4((sWigglytuffShop1Work->unkDC[2] * 8) + 4, 0, sWigglytuffShop1Work->unk40.unk1E + 1, 1, 7, sWigglytuffShop1Work->unk74);
|
||||
sub_8012BC4((sWigglytuffShop1Work->s40.unk9C[2] * 8) + 4, 0, sWigglytuffShop1Work->s40.s0.input.unk1E + 1, 1, 7, sWigglytuffShop1Work->s40.s0.unk34);
|
||||
|
||||
for (i = 0; i < sWigglytuffShop1Work->unk40.unk1A; i++) {
|
||||
friendAreaIndex = sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->unk40.unk1E * sWigglytuffShop1Work->unk40.unk1C) + i];
|
||||
for (i = 0; i < sWigglytuffShop1Work->s40.s0.input.unk1A; i++) {
|
||||
friendAreaIndex = sWigglytuffShop1Work->friendAreas[(sWigglytuffShop1Work->s40.s0.input.unk1E * sWigglytuffShop1Work->s40.s0.input.unk1C) + i];
|
||||
|
||||
if (sWigglytuffShop1Work->mode == 2) {
|
||||
sub_8092578(buffer1, friendAreaIndex, TRUE);
|
||||
|
||||
if (GetFriendAreaPrice(friendAreaIndex) <= gTeamInventoryRef->teamMoney)
|
||||
xxx_call_draw_string(8,sub_8013800(&sWigglytuffShop1Work->unk40, i), buffer1, sWigglytuffShop1Work->unk74, 0);
|
||||
xxx_call_draw_string(8,sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer1, sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
else {
|
||||
sprintfStatic(buffer2, sFmtRedString, buffer1);
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->unk40, i), buffer2, sWigglytuffShop1Work->unk74, 0);
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
}
|
||||
}
|
||||
else if (sWigglytuffShop1Work->mode == 0) {
|
||||
if (gFriendAreas[friendAreaIndex] == TRUE)
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->unk40, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->unk74, 0);
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
else {
|
||||
sprintfStatic(buffer2, sFmtGreenString, GetFriendAreaName(friendAreaIndex));
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->unk40, i), buffer2, sWigglytuffShop1Work->unk74, 0);
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), buffer2, sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->unk40, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->unk74, 0);
|
||||
xxx_call_draw_string(8, sub_8013800(&sWigglytuffShop1Work->s40.s0.input, i), GetFriendAreaName(friendAreaIndex), sWigglytuffShop1Work->s40.s0.unk34, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(sWigglytuffShop1Work->unk74);
|
||||
sub_80073E0(sWigglytuffShop1Work->s40.s0.unk34);
|
||||
}
|
||||
|
||||
static s32 sub_8021664(void)
|
||||
@ -282,7 +228,7 @@ bool8 sub_8021700(u32 kind)
|
||||
for (i = BOUNTIFUL_SEA; i < NUM_FRIEND_AREAS; i++) {
|
||||
if (gFriendAreas[i])
|
||||
continue;
|
||||
|
||||
|
||||
switch (GetFriendAreaUnlockCondition(i)) {
|
||||
case UNLOCK_SHOP_STORY:
|
||||
return FALSE;
|
||||
@ -296,4 +242,4 @@ bool8 sub_8021700(u32 kind)
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user