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/makuhita_dojo.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/makuhita_dojo.c')
-rw-r--r-- | src/makuhita_dojo.c | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/makuhita_dojo.c b/src/makuhita_dojo.c new file mode 100644 index 0000000..6061531 --- /dev/null +++ b/src/makuhita_dojo.c @@ -0,0 +1,184 @@ +#include "global.h" +#include "file_system.h" +#include "pokemon.h" +#include "input.h" +#include "constants/species.h" + +struct unkData +{ + u8 unk0[24]; +}; + +struct unkStruct_203B318 +{ + // size: 0xcc + u32 unk0; + u32 unk4; + s32 unk8; + u8 fillC[0x10 - 0xC]; + s16 unk10; + u8 fill[0x58 - 0x12]; + struct OpenedFile *faceFile; + u8 *faceData; + u16 unk60; + u16 unk62; + u8 unk64; + u8 unk65; + u8 unk66; + u8 unk67; + struct OpenedFile** unk68; + struct unkData unk6C[4]; +}; + +extern u8 gUnknown_202E5D8[]; +extern u8 gUnknown_202E1C8[]; +extern struct unkStruct_203B318 *gUnknown_203B318; +extern struct unkData gUnknown_80E0760; + +extern void sub_800641C(struct unkData *, u32, u32); +extern void sub_8006518(struct unkData *); +extern void *MemoryAlloc(u32, u32); +extern void MemoryFree(void *); + +extern void sub_8030208(); +extern void sub_8030258(); +extern void sub_80302A8(); +extern void sub_80302C4(); +extern void UpdateMakuhitaDialogue(); + +void sub_802FF04(s32); +void sub_802FF1C(); + +u32 CreateMakuhitaShop(u32 param_1) +{ + char *monName; + struct OpenedFile *faceFile; + u32 initialState; + + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + gUnknown_203B318 = MemoryAlloc(0xcc,8); + gUnknown_203B318->unk10 = -1; + gUnknown_203B318->unk0 = param_1; + switch(param_1) { + case 0: + initialState = 0; + gUnknown_203B318->unk4 = 0; + break; + case 1: + initialState = 7; + gUnknown_203B318->unk4 = 0; + break; + case 2: + initialState = 6; + gUnknown_203B318->unk4 = 0; + break; + case 3: + initialState = 8; + gUnknown_203B318->unk4 = 0; + break; + case 4: + initialState = 0; + gUnknown_203B318->unk4 = 1; + break; + case 5: + initialState = 7; + gUnknown_203B318->unk4 = 1; + break; + case 6: + initialState = 6; + gUnknown_203B318->unk4 = 1; + break; + case 7: + default: + initialState = 8; + gUnknown_203B318->unk4 = 1; + break; + } + if (gUnknown_203B318->unk4 == 1) { + gUnknown_203B318->unk68 = NULL; + } + else { + gUnknown_203B318->unk68 = &gUnknown_203B318->faceFile; + } + CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,SPECIES_MAKUHITA); + CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,SPECIES_MAKUHITA); + monName = GetMonSpecies(SPECIES_MAKUHITA); + strcpy(gUnknown_202E1C8 - 0x50, monName); + faceFile = GetDialogueSpriteDataPtr(SPECIES_MAKUHITA); + gUnknown_203B318->faceFile = faceFile; + gUnknown_203B318->faceData = faceFile->data; + gUnknown_203B318->unk64 = 0; + gUnknown_203B318->unk65 = 0; + gUnknown_203B318->unk66 = 0; + gUnknown_203B318->unk60 = 2; + gUnknown_203B318->unk62 = 8; + sub_802FF04(initialState); + return 1; +} + +u32 sub_802FE58(void) +{ + + switch(gUnknown_203B318->unk8) { + case 0: + case 1: + sub_8030208(); + break; + case 4: + sub_8030258(); + break; + case 11: + sub_80302A8(); + break; + case 13: + return 3; + default: + sub_80302C4(); + break; + } + return 0; +} + +s16 sub_802FED0(void) +{ + return gUnknown_203B318->unk10; +} + +void sub_802FEE0(void) +{ + if(gUnknown_203B318 != NULL) + { + CloseFile(gUnknown_203B318->faceFile); + MemoryFree(gUnknown_203B318); + gUnknown_203B318 = NULL; + } +} + +void sub_802FF04(s32 newState) +{ + gUnknown_203B318->unk8 = newState; + sub_802FF1C(); + UpdateMakuhitaDialogue(); +} + +void sub_802FF1C(void) +{ + s32 iVar3; + sub_8006518(gUnknown_203B318->unk6C); + switch(gUnknown_203B318->unk8) + { + case 0: + case 4: + case 13: + for(iVar3 = 0; iVar3 < 4; iVar3++) + { + gUnknown_203B318->unk6C[iVar3] = gUnknown_80E0760; + } + break; + default: + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B318->unk6C, 1, 1); +} |