summaryrefslogtreecommitdiff
path: root/src/kecleon_items.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-05-15 16:59:55 -0700
committerGitHub <noreply@github.com>2021-05-15 18:59:55 -0500
commitf402e46cd3c8b7236673d6edbae77903a7cc0618 (patch)
tree37a19f3ab35a73c29d4d6da565741beaf7bb547f /src/kecleon_items.c
parentf65dee5a143bd543c74c010d7252eb76893ee243 (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/kecleon_items.c')
-rw-r--r--src/kecleon_items.c193
1 files changed, 193 insertions, 0 deletions
diff --git a/src/kecleon_items.c b/src/kecleon_items.c
new file mode 100644
index 0000000..a3d0fd0
--- /dev/null
+++ b/src/kecleon_items.c
@@ -0,0 +1,193 @@
+#include "global.h"
+#include "file_system.h"
+#include "pokemon.h"
+#include "constants/species.h"
+#include "input.h"
+#include "kecleon_items.h"
+
+extern struct unkStruct_203B210 *gUnknown_203B210;
+extern u8 gUnknown_202E5D8[];
+extern u8 gUnknown_202E1C8[];
+extern struct unkData gUnknown_80DB840;
+extern struct unkData gUnknown_80DB870;
+extern struct unkData gUnknown_80DB888;
+extern struct unkData gUnknown_80DB858;
+
+extern void *MemoryAlloc(u32, u32);
+extern void MemoryFree(void *);
+void UpdateKecleonStoreState(u32);
+
+extern void sub_8019730();
+extern void sub_80199CC();
+extern void sub_8019B08();
+extern void sub_8019BBC();
+extern void sub_8019C78();
+extern void sub_8019850();
+extern void sub_80198E8();
+extern void sub_8019944();
+extern void sub_8019D30();
+extern void sub_8019D4C();
+extern void sub_8019D68();
+extern void sub_8018D30();
+extern void sub_8018E88();
+extern void sub_8006518(struct unkData *);
+extern void sub_800641C(struct unkData *, u32, u32);
+
+u32 DisplayKeckleonDialogueSprite(u32 param_1)
+{
+ char *monName;
+ struct OpenedFile *faceFile;
+
+ gUnknown_203B210 = MemoryAlloc(0x148,8);
+ gUnknown_203B210->unk28 = 0;
+ gUnknown_203B210->unk2C = 0;
+ gUnknown_203B210->unk30 = 0;
+ gUnknown_203B210->unk0 = param_1;
+ switch(param_1)
+ {
+ case 0:
+ gUnknown_203B210->unk4 = 1;
+ gUnknown_203B210->unkE4 = &gUnknown_203B210->unkD4;
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
+ monName = GetMonSpecies( SPECIES_KECLEON);
+ strcpy(gUnknown_202E1C8 - 0x50, monName);
+ break;
+ case 1:
+ gUnknown_203B210->unk4 = 1;
+ gUnknown_203B210->unkE4 = 0;
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
+ monName = GetMonSpecies( SPECIES_KECLEON);
+ strcpy(gUnknown_202E1C8 - 0x50, monName);
+ break;
+ case 2:
+ gUnknown_203B210->unk4 = 0;
+ gUnknown_203B210->unkE4 = &gUnknown_203B210->unkD4;
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
+ monName = GetMonSpecies( SPECIES_KECLEON);
+ strcpy(gUnknown_202E1C8 - 0x50, monName);
+ break;
+ case 3:
+ gUnknown_203B210->unk4 = 0;
+ gUnknown_203B210->unkE4 = 0;
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON);
+ CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON);
+ monName = GetMonSpecies( SPECIES_KECLEON);
+ strcpy(gUnknown_202E1C8 - 0x50, monName);
+ break;
+ default:
+ break;
+ }
+ faceFile = GetDialogueSpriteDataPtr(SPECIES_KECLEON);
+ gUnknown_203B210->unkD4 = faceFile;
+ gUnknown_203B210->unkD8 = faceFile->data;
+ gUnknown_203B210->unkE0 = 0;
+ gUnknown_203B210->unkE1 = 0;
+ gUnknown_203B210->unkE2 = 0;
+ gUnknown_203B210->unkDC = 2;
+ gUnknown_203B210->unkDE = 8;
+ UpdateKecleonStoreState(0);
+ return 1;
+}
+
+u32 sub_8018C04(void)
+{
+ switch(gUnknown_203B210->currState) {
+ case 0:
+ case 1:
+ sub_8019730();
+ break;
+ case 0x12:
+ case 0x13:
+ sub_80199CC();
+ break;
+ case 0x1a:
+ case 0x1b:
+ sub_8019B08();
+ break;
+ case 0x14:
+ sub_8019BBC();
+ break;
+ case 0x1c:
+ sub_8019C78();
+ break;
+ case 0x16:
+ sub_8019850();
+ break;
+ case 0x1e:
+ sub_80198E8();
+ break;
+ case 0x1f:
+ sub_8019944();
+ break;
+ case 0x15:
+ sub_8019D30();
+ break;
+ case 0x1d:
+ sub_8019D4C();
+ break;
+ case 4:
+ return 3;
+ default:
+ sub_8019D68();
+ break;
+ }
+ return 0;
+}
+
+void sub_8018CF0(void)
+{
+ if(gUnknown_203B210 != NULL)
+ {
+ CloseFile(gUnknown_203B210->unkD4);
+ MemoryFree(gUnknown_203B210);
+ gUnknown_203B210 = NULL;
+ }
+}
+
+void UpdateKecleonStoreState(u32 newState)
+{
+ gUnknown_203B210->currState = newState;
+ sub_8018D30();
+ sub_8018E88();
+}
+
+void sub_8018D30(void)
+{
+ s32 iVar3;
+ sub_8006518(gUnknown_203B210->unkE8);
+ switch(gUnknown_203B210->currState)
+ {
+ case 0x12:
+ case 0x13:
+ gUnknown_203B210->unkE8[0] = gUnknown_80DB840;
+ gUnknown_203B210->unkE8[2] = gUnknown_80DB840;
+ gUnknown_203B210->unkE8[0] = gUnknown_80DB870;
+ gUnknown_203B210->unkE8[1] = gUnknown_80DB888;
+ break;
+ case 0x1A:
+ case 0x1B:
+ gUnknown_203B210->unkE8[0] = gUnknown_80DB840;
+ gUnknown_203B210->unkE8[1] = gUnknown_80DB840;
+ gUnknown_203B210->unkE8[2] = gUnknown_80DB840;
+ gUnknown_203B210->unkE8[1] = gUnknown_80DB888;
+ break;
+ case 0x14:
+ case 0x1C:
+ gUnknown_203B210->unkE8[2] = gUnknown_80DB858;
+ break;
+ default:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ for(iVar3 = 0; iVar3 < 4; iVar3++)
+ gUnknown_203B210->unkE8[iVar3] = gUnknown_80DB840;
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B210->unkE8, 1, 1);
+}