diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-05-15 16:59:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-15 18:59:55 -0500 |
commit | f402e46cd3c8b7236673d6edbae77903a7cc0618 (patch) | |
tree | 37a19f3ab35a73c29d4d6da565741beaf7bb547f /src/kangaskhan_storage.c | |
parent | f65dee5a143bd543c74c010d7252eb76893ee243 (diff) |
Sese's April/May Dump (#37)
* splitting lots of pokemon square and labeling lots of other things
* actually commit this stuff
* more moving data and things
* more screen work
* split out some pokemon dungeon data
* lots of data work
* push more data work
* split kecleon, decomp another kanghaskhan func, and try to doc UpdateBGControl more
* lots of item work
* label more item things
* subtype -> category and doc types/category
Diffstat (limited to 'src/kangaskhan_storage.c')
-rw-r--r-- | src/kangaskhan_storage.c | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/src/kangaskhan_storage.c b/src/kangaskhan_storage.c new file mode 100644 index 0000000..c695aec --- /dev/null +++ b/src/kangaskhan_storage.c @@ -0,0 +1,176 @@ +#include "global.h" +#include "file_system.h" +#include "pokemon.h" +#include "input.h" +#include "constants/species.h" +#include "kangaskhan_storage.h" + +extern struct unkStruct_203B208 *gUnknown_203B208; +extern struct unkData gUnknown_80DB748; +extern struct unkData gUnknown_80DB778; +extern struct unkData gUnknown_80DB790; +extern struct unkData gUnknown_80DB760; + +extern u8 gUnknown_202E5D8[]; +extern u8 gUnknown_202E1C8[]; +extern void *MemoryAlloc(u32, u32); +extern void MemoryFree(void *); +extern void sub_800641C(struct unkData *, u32, u32); +extern void sub_8006518(struct unkData *); +void UpdateKangaskhanStorageState(u32); + +extern void sub_8017828(); +extern void sub_8017AF8(); +extern void sub_8017C7C(); +extern void sub_8017DC0(); +extern void sub_80178D0(); +extern void sub_80179A8(); +extern void sub_8017B88(); +extern void sub_8017C28(); +extern void sub_8017D24(); +extern void sub_8017DDC(); +extern void sub_8017928(); +extern void sub_8017A1C(); +extern void sub_8017DF8(); +void sub_8016E80(); +extern void sub_8016FF8(); + + +u32 DisplayKangaskhanDialogueSprite(s32 param_1) +{ + char *monName; + struct OpenedFile * faceFile; + + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + gUnknown_203B208 = MemoryAlloc(0x14c,8); + gUnknown_203B208->unk18 = 0; + gUnknown_203B208->unk1C = 0; + gUnknown_203B208->unk20 = 0; + gUnknown_203B208->unk0 = param_1; + CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KANGASKHAN); + CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KANGASKHAN); + monName = GetMonSpecies(SPECIES_KANGASKHAN); + strcpy(gUnknown_202E1C8 - 0x50, monName); + if (gUnknown_203B208->unk0 == 1) { + gUnknown_203B208->unkE8 = 0; + } + else { + gUnknown_203B208->unkE8 = &gUnknown_203B208->faceFile; + } + faceFile = GetDialogueSpriteDataPtr(SPECIES_KANGASKHAN); + gUnknown_203B208->faceFile = faceFile; + gUnknown_203B208->faceData = faceFile->data; + gUnknown_203B208->unkE4 = 0; + gUnknown_203B208->unkE5 = 0; + gUnknown_203B208->unkE6 = 0; + gUnknown_203B208->unkE0 = 2; + gUnknown_203B208->unkE2 = 8; + UpdateKangaskhanStorageState(0); + return 1; +} + +u32 sub_8016D54(void) +{ + switch(gUnknown_203B208->currState) { + case 0: + case 1: + sub_8017828(); + break; + case 0xd: + case 0xe: + sub_8017AF8(); + break; + case 0xf: + sub_8017C7C(); + break; + case 0x10: + sub_8017DC0(); + break; + case 0x11: + sub_80178D0(); + break; + case 0x12: + sub_80179A8(); + break; + case 0x16: + case 0x17: + sub_8017B88(); + break; + case 0x18: + sub_8017C28(); + break; + case 0x19: + sub_8017D24(); + break; + case 0x1a: + sub_8017DDC(); + break; + case 0x1b: + sub_8017928(); + break; + case 0x1c: + sub_8017A1C(); + break; + case 4: + return 3; + default: + sub_8017DF8(); + break; + } + return 0; +} + +void sub_8016E40(void) +{ + if(gUnknown_203B208 != NULL) + { + CloseFile(gUnknown_203B208->faceFile); + MemoryFree(gUnknown_203B208); + gUnknown_203B208 = NULL; + } +} + +void UpdateKangaskhanStorageState(u32 newState) +{ + gUnknown_203B208->currState = newState; + sub_8016E80(); + sub_8016FF8(); +} + +void sub_8016E80(void) +{ + s32 iVar3; + + sub_8006518(gUnknown_203B208->unkEC); + switch(gUnknown_203B208->currState) + { + case 0xD: + case 0xE: + gUnknown_203B208->unkEC[0] = gUnknown_80DB748; + gUnknown_203B208->unkEC[1] = gUnknown_80DB748; + gUnknown_203B208->unkEC[2] = gUnknown_80DB748; + gUnknown_203B208->unkEC[0] = gUnknown_80DB748; + break; + case 0x16: + case 0x17: + gUnknown_203B208->unkEC[0] = gUnknown_80DB748; + gUnknown_203B208->unkEC[1] = gUnknown_80DB748; + gUnknown_203B208->unkEC[2] = gUnknown_80DB748; + gUnknown_203B208->unkEC[0] = gUnknown_80DB778; + break; + case 0x18: + gUnknown_203B208->unkEC[1] = gUnknown_80DB790; + break; + case 0xF: + case 0x19: + gUnknown_203B208->unkEC[2] = gUnknown_80DB760; + break; + default: + for(iVar3 = 0; iVar3 < 4; iVar3++) + gUnknown_203B208->unkEC[iVar3] = gUnknown_80DB748; + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B208->unkEC, 1, 1); +} |