From a5c7e736f99b45ac5e70a2409af73cf26fbed048 Mon Sep 17 00:00:00 2001 From: Kermalis <29823718+Kermalis@users.noreply.github.com> Date: Sat, 22 Jul 2023 19:14:33 -0400 Subject: [PATCH] Clean gulpin/felicity --- asm/code_801EE10_mid.s | 8 +- data/data_8115F5C.s | 2 +- include/felicity_bank.h | 10 +- include/gulpin_shop.h | 11 +- src/code_801AFA4.c | 9 +- src/felicity_bank.c | 2 +- src/gulpin_shop.c | 235 ++++++++++++++++++++-------------------- sym_ewram2.txt | 2 +- 8 files changed, 138 insertions(+), 141 deletions(-) diff --git a/asm/code_801EE10_mid.s b/asm/code_801EE10_mid.s index fd7740bd4..6de3e3bf2 100644 --- a/asm/code_801EE10_mid.s +++ b/asm/code_801EE10_mid.s @@ -1419,14 +1419,14 @@ _0802038C: ldrsh r1, [r2, r5] adds r2, 0x24 movs r0, 0 - bl DisplayGulpinDialogueSprite + bl CreateGulpinShop b _08020562 _080203A2: movs r0, 0xC ldrsh r1, [r2, r0] adds r2, 0x24 movs r0, 0x1 - bl DisplayGulpinDialogueSprite + bl CreateGulpinShop b _08020562 _080203B0: ldr r2, [r5] @@ -2709,14 +2709,14 @@ sub_8020D90: ldr r1, _08020DB8 ldr r1, [r1] strb r0, [r1, 0x14] - bl sub_801E93C + bl DestroyGulpinShop movs r0, 0x1A bl sub_801FDA8 b _08020DC6 .align 2, 0 _08020DB8: .4byte gUnknown_203B27C _08020DBC: - bl sub_801E93C + bl DestroyGulpinShop movs r0, 0x10 bl sub_801FDA8 _08020DC6: diff --git a/data/data_8115F5C.s b/data/data_8115F5C.s index 8431c63e3..e0927d5b3 100644 --- a/data/data_8115F5C.s +++ b/data/data_8115F5C.s @@ -147,7 +147,7 @@ gUnknown_81161D8: @ 81161D8 gUnknown_81161E8: @ 81161E8 .byte 0x01, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00 - .4byte CleanFelicityBank + .4byte DestroyFelicityBank .4byte FelicityBankCallback .global gUnknown_81161F8 diff --git a/include/felicity_bank.h b/include/felicity_bank.h index ff55c3146..030e377e3 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -8,11 +8,11 @@ // size: 0x108 struct FelicityBankWork { - u32 isAsleep; - s32 currState; - u32 fallbackState; - u32 chosenAmount; - u32 menuAction; + /* 0x0 */ u32 isAsleep; + /* 0x4 */ s32 currState; + /* 0x8 */ u32 fallbackState; + /* 0xC */ u32 chosenAmount; + /* 0x10 */ u32 menuAction; struct MenuItem unk14[8]; u16 unk54[8]; u32 unk64; diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index 97215d25a..be4b6adee 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -1,10 +1,10 @@ #ifndef GUARD_GULPIN_SHOP_H #define GUARD_GULPIN_SHOP_H -struct unkStruct_203B26C -{ // size: 0x18C - u32 unk0; +struct GulpinShopWork +{ + /* 0x0 */ u32 isAsleep; /* 0x4 */ s32 state; u32 unk8; /* 0xC */ s16 speciesNum; // species of chosen Pokemon @@ -28,7 +28,10 @@ struct unkStruct_203B26C u8 unk126; u8 unk127; struct OpenedFile **unk128; - struct UnkTextStruct2 unk12C[4]; + struct UnkTextStruct2 unk12C[4]; }; +u32 CreateGulpinShop(s32 isAsleep, s16 pokeSpecies, struct Move *moves); +void DestroyGulpinShop(void); + #endif diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index 8c45eba59..3aab78979 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -5,6 +5,7 @@ #include "team_inventory.h" #include "menu.h" #include "pokemon.h" +#include "gulpin_shop.h" extern void sub_8092C84(u8 *, u16); extern void sub_8099690(u32); @@ -29,7 +30,6 @@ extern u8 gUnknown_202E218[0x50]; extern void InitZeroedPPPokemonMove(struct Move*, u16); extern void unk_CopyMoves4To8(struct Move *, struct Move *); extern bool8 IsHMItem(u8); -extern void DisplayGulpinDialogueSprite(u32, u32, void *); extern void sub_801B178(void); extern void sub_8094060(void *, struct Move *); extern void PlaySound(u32); @@ -38,7 +38,6 @@ extern void sub_8014248(u32 *, u32, u32, struct MenuItem *, u32, u32, u32, u32, extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon); extern s32 sub_80144A4(s32 *); extern u32 sub_801E8C0(void); -extern void sub_801E93C(void); extern bool8 CanMonLearnMove(u16 moveID, s16 _species); extern s32 sub_808D580(s32*); @@ -130,7 +129,7 @@ void sub_801B080(void) sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, gUnknown_203B22C->menuItems, 0, 4, 0, 0, 0x20); break; case 1: - DisplayGulpinDialogueSprite(2, gUnknown_203B22C->chosenPokemon, gUnknown_203B22C->moves); + CreateGulpinShop(2, gUnknown_203B22C->chosenPokemon, gUnknown_203B22C->moves); break; case 2: sub_8094060(gUnknown_203B22C->moves, gUnknown_203B22C->pokeStruct->moves); @@ -215,11 +214,11 @@ void sub_801B2AC(void) switch(sub_801E8C0()) { case 3: - sub_801E93C(); + DestroyGulpinShop(); sub_801B064(2); break; case 2: - sub_801E93C(); + DestroyGulpinShop(); sub_801B064(0); break; case 0: diff --git a/src/felicity_bank.c b/src/felicity_bank.c index f30879ab9..91dcb9b25 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -88,7 +88,7 @@ u32 FelicityBankCallback(void) return 0; } -void CleanFelicityBank(void) +void DestroyFelicityBank(void) { if (gFelicityBankWork != NULL) { CloseFile(gFelicityBankWork->faceFile); diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 859c988d6..9f3b8dd90 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -9,7 +9,7 @@ #include "gulpin_shop.h" #include "menu_input.h" -extern struct unkStruct_203B26C *gUnknown_203B26C; +extern struct GulpinShopWork *gGulpinShopWork; extern const struct UnkTextStruct2 gUnknown_80DC11C; extern const struct UnkTextStruct2 gUnknown_80DC134; extern const u8 *gUnknown_80D4920[]; @@ -42,45 +42,43 @@ extern void sub_801F808(u16 *); extern u32 sub_801F890(void); extern void sub_801F8D0(void); extern void PlaySound(u32); -void UpdateGulpinShopState(u32); +void SetGulpinShopState(u32); -u32 DisplayGulpinDialogueSprite(s32 param_1,s16 pokeSpecies,struct Move *param_3) +u32 CreateGulpinShop(s32 isAsleep, s16 pokeSpecies, struct Move *moves) { struct OpenedFile *faceFile; s32 species_32; species_32 = pokeSpecies; // dumb cast needed to get lsr/asr combo - gUnknown_203B26C = MemoryAlloc(sizeof(struct unkStruct_203B26C),8); - gUnknown_203B26C->unk0 = param_1; - gUnknown_203B26C->speciesNum = species_32; - gUnknown_203B26C->moves = param_3; - gUnknown_203B26C->unk1C = param_3[4].id; + gGulpinShopWork = MemoryAlloc(sizeof(struct GulpinShopWork), 8); + gGulpinShopWork->isAsleep = isAsleep; + gGulpinShopWork->speciesNum = species_32; + gGulpinShopWork->moves = moves; + gGulpinShopWork->unk1C = moves[4].id; // 5th move..? + + if (isAsleep == 0) + gGulpinShopWork->unk128 = &gGulpinShopWork->faceFile; + else + gGulpinShopWork->unk128 = NULL; - if (param_1 == 0) { - gUnknown_203B26C->unk128 = &gUnknown_203B26C->faceFile; - } - else { - gUnknown_203B26C->unk128 = NULL; - } faceFile = GetDialogueSpriteDataPtr(MONSTER_GULPIN); - gUnknown_203B26C->faceFile = faceFile; - gUnknown_203B26C->faceData = faceFile->data; + gGulpinShopWork->faceFile = faceFile; + gGulpinShopWork->faceData = faceFile->data; - gUnknown_203B26C->unk124 = 0; - gUnknown_203B26C->unk125 = 0; - gUnknown_203B26C->unk126 = 0; + gGulpinShopWork->unk124 = 0; + gGulpinShopWork->unk125 = 0; + gGulpinShopWork->unk126 = 0; - gUnknown_203B26C->unk120 = 2; - gUnknown_203B26C->unk122 = 8; - UpdateGulpinShopState(0); + gGulpinShopWork->unk120 = 2; + gGulpinShopWork->unk122 = 8; + SetGulpinShopState(0); return 1; } u32 sub_801E8C0(void) { - switch(gUnknown_203B26C->state) - { + switch (gGulpinShopWork->state) { case 0: case 1: sub_801ECBC(); @@ -93,7 +91,7 @@ u32 sub_801E8C0(void) break; case 4: sub_801EDC0(); - if(gUnknown_203B26C->state == 5) + if (gGulpinShopWork->state == 5) return 3; break; case 5: @@ -101,27 +99,26 @@ u32 sub_801E8C0(void) case 6: return 2; } - return 0; + return 0; } bool8 GulpinIsNextMoveLinked(void) { - return gUnknown_203B26C->isNextMoveLinked; + return gGulpinShopWork->isNextMoveLinked; } -void sub_801E93C(void) +void DestroyGulpinShop(void) { - if(gUnknown_203B26C != NULL) - { - CloseFile(gUnknown_203B26C->faceFile); - MemoryFree(gUnknown_203B26C); - gUnknown_203B26C = NULL; + if (gGulpinShopWork != NULL) { + CloseFile(gGulpinShopWork->faceFile); + MemoryFree(gGulpinShopWork); + gGulpinShopWork = NULL; } } -void UpdateGulpinShopState(u32 newState) +void SetGulpinShopState(u32 newState) { - gUnknown_203B26C->state = newState; + gGulpinShopWork->state = newState; sub_801E980(); sub_801EA28(); } @@ -130,124 +127,122 @@ void sub_801E980(void) { s32 index; - sub_8006518(gUnknown_203B26C->unk12C); - switch(gUnknown_203B26C->state) - { + sub_8006518(gGulpinShopWork->unk12C); + + switch (gGulpinShopWork->state) { case 2: sub_801EBC4(); - gUnknown_203B26C->unk12C[1] = gUnknown_80DC11C; - gUnknown_203B26C->unk12C[2] = gUnknown_80DC134; - sub_8012CAC(&gUnknown_203B26C->unk12C[2], gUnknown_203B26C->unk28); + gGulpinShopWork->unk12C[1] = gUnknown_80DC11C; + gGulpinShopWork->unk12C[2] = gUnknown_80DC134; + sub_8012CAC(&gGulpinShopWork->unk12C[2], gGulpinShopWork->unk28); break; default: - for(index = 0; index < 4; index++) - { - gUnknown_203B26C->unk12C[index] = gUnknown_80DC11C; + for(index = 0; index < 4; index++) { + gGulpinShopWork->unk12C[index] = gUnknown_80DC11C; } break; } + ResetUnusedInputStruct(); - sub_800641C(gUnknown_203B26C->unk12C, 1, 1); + sub_800641C(gGulpinShopWork->unk12C, 1, 1); } -void sub_801EA28(void) { - switch(gUnknown_203B26C->state) { +void sub_801EA28(void) +{ + switch (gGulpinShopWork->state) { case 0: - sub_801EE10(2, gUnknown_203B26C->speciesNum, gUnknown_203B26C->moves, 0, &gUnknown_80DC164, 0); + sub_801EE10(2, gGulpinShopWork->speciesNum, gGulpinShopWork->moves, 0, &gUnknown_80DC164, 0); break; case 1: sub_801F1B0(1, 0); break; case 2: sub_801F280(0); - sub_8012D60(&gUnknown_203B26C->unk78, gUnknown_203B26C->unk28, 0, gUnknown_203B26C->unk68, gUnknown_203B26C->unk24, 2); + sub_8012D60(&gGulpinShopWork->unk78, gGulpinShopWork->unk28, 0, gGulpinShopWork->unk68, gGulpinShopWork->unk24, 2); break; case 3: - GetLinkedSequence(gUnknown_203B26C->unk20, gUnknown_203B26C->moves, &gUnknown_203B26C->unk14[0]); - sub_801F808(&gUnknown_203B26C->unk14[0]); + GetLinkedSequence(gGulpinShopWork->unk20, gGulpinShopWork->moves, &gGulpinShopWork->unk14[0]); + sub_801F808(&gGulpinShopWork->unk14[0]); break; case 4: sub_801EC7C(); - sub_8092C84(gAvailablePokemonNames, gUnknown_203B26C->unk1C); - sub_8092C84(&gAvailablePokemonNames[0x50], gUnknown_203B26C->unk1E); + sub_8092C84(gAvailablePokemonNames, gGulpinShopWork->unk1C); + sub_8092C84(&gAvailablePokemonNames[0x50], gGulpinShopWork->unk1E); - switch (gUnknown_203B26C->unk0) { + switch (gGulpinShopWork->isAsleep) { case 0: case 1: - if (gUnknown_203B26C->isNextMoveLinked) { - sub_8014248(gGulpinDialogue[gUnknown_203B26C->unk0][12], 0, 5, &gUnknown_203B26C->unk28[0], - &gUnknown_203B26C->unk68, 4, 0, gUnknown_203B26C->unk128, 12); // Forget the move and any moves linked to it and learn? - } - else { - sub_8014248(gGulpinDialogue[gUnknown_203B26C->unk0][11], 0, 5, &gUnknown_203B26C->unk28[0], - &gUnknown_203B26C->unk68, 4, 0, gUnknown_203B26C->unk128, 12); // Forget the move and learn? - } - break; - case 2: - if (gUnknown_203B26C->isNextMoveLinked) - sub_8014248(gUnknown_80DC1A0, 0, 5, &gUnknown_203B26C->unk28[0], - &gUnknown_203B26C->unk68, 4, 0, NULL, 32); + if (gGulpinShopWork->isNextMoveLinked) + sub_8014248(gGulpinDialogue[gGulpinShopWork->isAsleep][12], 0, 5, &gGulpinShopWork->unk28[0], + &gGulpinShopWork->unk68, 4, 0, gGulpinShopWork->unk128, 12); // Forget the move and any moves linked to it and learn? else - sub_8014248(gUnknown_80DC1FC, 0, 5, &gUnknown_203B26C->unk28[0], - &gUnknown_203B26C->unk68, 4, 0, NULL, 32); - break; + sub_8014248(gGulpinDialogue[gGulpinShopWork->isAsleep][11], 0, 5, &gGulpinShopWork->unk28[0], + &gGulpinShopWork->unk68, 4, 0, gGulpinShopWork->unk128, 12); // Forget the move and learn? + break; + case 2: + if (gGulpinShopWork->isNextMoveLinked) + sub_8014248(gUnknown_80DC1A0, 0, 5, &gGulpinShopWork->unk28[0], + &gGulpinShopWork->unk68, 4, 0, NULL, 32); + else + sub_8014248(gUnknown_80DC1FC, 0, 5, &gGulpinShopWork->unk28[0], + &gGulpinShopWork->unk68, 4, 0, NULL, 32); + break; } break; } } -void sub_801EBC4(void) { +void sub_801EBC4(void) +{ s32 which; s32 i; which = 0; - MemoryFill16(&gUnknown_203B26C->unk68[0], 0, sizeof(gUnknown_203B26C->unk68)); + MemoryFill16(gGulpinShopWork->unk68, 0, sizeof(gGulpinShopWork->unk68)); - gUnknown_203B26C->unk28[which].text = gUnknown_80DC230; // "Forget" - gUnknown_203B26C->unk28[which].menuAction = 2; + gGulpinShopWork->unk28[which].text = gUnknown_80DC230; // "Forget" + gGulpinShopWork->unk28[which].menuAction = 2; - if (!IsAnyMoveLinked(gUnknown_203B26C->unk1E, gUnknown_203B26C->moves) - || (s32)gUnknown_203B26C->unk20 >= 4) { - gUnknown_203B26C->unk68[0] = 1; - } + if (!IsAnyMoveLinked(gGulpinShopWork->unk1E, gGulpinShopWork->moves) || (s32)gGulpinShopWork->unk20 >= 4) + gGulpinShopWork->unk68[0] = 1; which++; - gUnknown_203B26C->unk28[which].text = *gUnknown_80D4970; // "Info" - gUnknown_203B26C->unk28[which].menuAction = 3; + gGulpinShopWork->unk28[which].text = *gUnknown_80D4970; // "Info" + gGulpinShopWork->unk28[which].menuAction = 3; which++; - gUnknown_203B26C->unk28[which].text = NULL; - gUnknown_203B26C->unk28[which].menuAction = 1; + gGulpinShopWork->unk28[which].text = NULL; + gGulpinShopWork->unk28[which].menuAction = 1; i = 0; if (i < which) { - if (gUnknown_203B26C->unk68[0] == 0) { - gUnknown_203B26C->unk24 = gUnknown_203B26C->unk28[0].menuAction; - } + if (gGulpinShopWork->unk68[0] == 0) + gGulpinShopWork->unk24 = gGulpinShopWork->unk28[0].menuAction; else { while (i < which) { - if (gUnknown_203B26C->unk68[i] == 0) { - gUnknown_203B26C->unk24 = gUnknown_203B26C->unk28[i].menuAction; + if (gGulpinShopWork->unk68[i] == 0) { + gGulpinShopWork->unk24 = gGulpinShopWork->unk28[i].menuAction; break; } i++; } } - } + } } -void sub_801EC7C(void) { +void sub_801EC7C(void) +{ s32 which; which = 0; - MemoryFill16(&gUnknown_203B26C->unk68[0], 0, sizeof(gUnknown_203B26C->unk68)); - gUnknown_203B26C->unk28[which].text = *gUnknown_80D4920; // "Yes" - gUnknown_203B26C->unk28[which].menuAction = 4; + MemoryFill16(gGulpinShopWork->unk68, 0, sizeof(gGulpinShopWork->unk68)); + gGulpinShopWork->unk28[which].text = *gUnknown_80D4920; // "Yes" + gGulpinShopWork->unk28[which].menuAction = 4; which++; - gUnknown_203B26C->unk28[which].text = *gUnknown_80D4928; // "No" - gUnknown_203B26C->unk28[which].menuAction = 5; + gGulpinShopWork->unk28[which].text = *gUnknown_80D4928; // "No" + gGulpinShopWork->unk28[which].menuAction = 5; which++; - gUnknown_203B26C->unk28[which].text = NULL; - gUnknown_203B26C->unk28[which].menuAction = 1; + gGulpinShopWork->unk28[which].text = NULL; + gGulpinShopWork->unk28[which].menuAction = 1; } void sub_801ECBC(void) @@ -256,26 +251,26 @@ void sub_801ECBC(void) case 3: { struct Move* move; - gUnknown_203B26C->unk20 = sub_801F194(); - move = gUnknown_203B26C->moves; - move = &move[gUnknown_203B26C->unk20]; - gUnknown_203B26C->unk1E = move->id; - UpdateGulpinShopState(2); + gGulpinShopWork->unk20 = sub_801F194(); + move = gGulpinShopWork->moves; + move = &move[gGulpinShopWork->unk20]; + gGulpinShopWork->unk1E = move->id; + SetGulpinShopState(2); break; } case 4: { struct Move* move; - gUnknown_203B26C->unk20 = sub_801F194(); - move = gUnknown_203B26C->moves; - move = &move[gUnknown_203B26C->unk20]; - gUnknown_203B26C->unk1E = move->id; - UpdateGulpinShopState(3); + gGulpinShopWork->unk20 = sub_801F194(); + move = gGulpinShopWork->moves; + move = &move[gGulpinShopWork->unk20]; + gGulpinShopWork->unk1E = move->id; + SetGulpinShopState(3); break; } case 2: sub_801F214(); - UpdateGulpinShopState(6); + SetGulpinShopState(6); break; } } @@ -286,21 +281,21 @@ void sub_801ED28(void) menuAction = 0; sub_801EF38(0); - if (sub_8012FD8(&gUnknown_203B26C->unk78) == 0) - sub_8013114(&gUnknown_203B26C->unk78, &menuAction); + if (sub_8012FD8(&gGulpinShopWork->unk78) == 0) + sub_8013114(&gGulpinShopWork->unk78, &menuAction); - switch(menuAction) { + switch (menuAction) { case 1: case 5: - UpdateGulpinShopState(1); + SetGulpinShopState(1); break; case 2: PlaySound(0x133); - gUnknown_203B26C->isNextMoveLinked = IsNextMoveLinked(gUnknown_203B26C->unk20, gUnknown_203B26C->moves); - UpdateGulpinShopState(4); + gGulpinShopWork->isNextMoveLinked = IsNextMoveLinked(gGulpinShopWork->unk20, gGulpinShopWork->moves); + SetGulpinShopState(4); break; case 3: - UpdateGulpinShopState(3); + SetGulpinShopState(3); break; } } @@ -311,7 +306,7 @@ void sub_801EDA4(void) case 2: case 3: sub_801F8D0(); - UpdateGulpinShopState(1); + SetGulpinShopState(1); break; case 0: case 1: @@ -322,17 +317,17 @@ void sub_801EDA4(void) void sub_801EDC0(void) { s32 temp; + if (sub_80144A4(&temp) == 0) { - switch (temp) - { + switch (temp) { case 4: sub_801F214(); - RemoveLinkSequenceFromMoves8(gUnknown_203B26C->moves, gUnknown_203B26C->unk20); - gUnknown_203B26C->state = 5; + RemoveLinkSequenceFromMoves8(gGulpinShopWork->moves, gGulpinShopWork->unk20); + gGulpinShopWork->state = 5; break; case 1: case 5: - UpdateGulpinShopState(1); + SetGulpinShopState(1); break; } } diff --git a/sym_ewram2.txt b/sym_ewram2.txt index 9f037f872..7ac427954 100644 --- a/sym_ewram2.txt +++ b/sym_ewram2.txt @@ -220,7 +220,7 @@ gUnknown_203B264: /* 203B264 */ gUnknown_203B268: /* 203B268 */ .space 0x4 -gUnknown_203B26C: /* 203B26C */ +gGulpinShopWork: /* 203B26C */ .space 0x4 gUnknown_203B270: /* 203B270 */