diff --git a/include/code_801C244.h b/include/code_801C244.h index d739d5699..83153e6f3 100644 --- a/include/code_801C244.h +++ b/include/code_801C244.h @@ -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 \ No newline at end of file +#endif // GUARD_CODE_801C244_H diff --git a/include/structs/struct_sub80095e4.h b/include/structs/struct_sub80095e4.h index a41a93cc7..a7506dfab 100644 --- a/include/structs/struct_sub80095e4.h +++ b/include/structs/struct_sub80095e4.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 diff --git a/include/wigglytuff_shop1.h b/include/wigglytuff_shop1.h index 1f422f5e3..85691d8de 100644 --- a/include/wigglytuff_shop1.h +++ b/include/wigglytuff_shop1.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 \ No newline at end of file +#endif // GUARD_WIGGLYTUFF_SHOP1_H diff --git a/src/code_801C244.c b/src/code_801C244.c index 32f694a72..a56a22adb 100644 --- a/src/code_801C244.c +++ b/src/code_801C244.c @@ -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; -} \ No newline at end of file +} diff --git a/src/code_801D9E4.c b/src/code_801D9E4.c index 18538057a..9d152a65f 100644 --- a/src/code_801D9E4.c +++ b/src/code_801D9E4.c @@ -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++) { diff --git a/src/wigglytuff_shop1.c b/src/wigglytuff_shop1.c index daebb1f83..30f21c8ab 100644 --- a/src/wigglytuff_shop1.c +++ b/src/wigglytuff_shop1.c @@ -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; -} \ No newline at end of file +}