diff options
Diffstat (limited to 'src/kangaskhan_storage_2.c')
-rw-r--r-- | src/kangaskhan_storage_2.c | 303 |
1 files changed, 298 insertions, 5 deletions
diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c index d9d253c..e3dcd70 100644 --- a/src/kangaskhan_storage_2.c +++ b/src/kangaskhan_storage_2.c @@ -3,17 +3,42 @@ #include "memory.h" #include "text.h" #include "item.h" +#include "input.h" #include "kangaskhan_storage.h" +#include "gUnknown_203B460.h" extern struct unkStruct_203B208 *gUnknown_203B208; +extern struct unkStruct_203B460 *gUnknown_203B460; struct unkStruct_203B20C { u32 state; - u8 unk4[0x10]; + u8 unk4[4]; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 fillC[0x14 - 0xC]; u32 unk14; u32 unk18; u32 unk1C; + u32 unk20; + u8 fill24[0x60 - 0x24]; + u32 unk60; + u8 fill64[0x70 - 0x64]; + u32 unk70; + u8 fill74[0xC0 - 0x74]; + u32 unkC0; + u32 unkC4; + u32 unkC8; + u32 unkCC; + u32 unkD0; + u32 unkD4; + struct UnkTextStruct2 *unkD8; + u32 unkDC; + u32 unkE0; + u8 fillE4[0xF0 - 0xE4]; + struct UnkTextStruct2 unkF0[4]; }; extern struct unkStruct_203B20C *gUnknown_203B20C; @@ -38,13 +63,172 @@ extern u32 sub_801B410(void); extern u8 sub_8012FD8(u32 *r0); extern void sub_8013114(u32 *, s32 *); extern void sub_801CBB8(); -extern void sub_801CA08(); + +extern u8 sub_8091524(u8); +extern u8 sub_801ADA0(u32); +extern void sub_8099690(u32); +extern u32 sub_8013BBC(u32 *); +extern void sub_8017598(void); + +extern u32 sub_801CA08(u32); +extern u32 sub_801CFB8(void); +extern u8 sub_801CB24(); +extern void sub_8090A8C(struct ItemStruct_203B460 *, u8, u32); +extern void sub_801AD34(u32); +extern u32 sub_801A6E8(u32); +extern u32 sub_801AEA8(void); +extern u32 sub_801A8AC(void); +extern void sub_801A928(void); +extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *); +extern void sub_80182E4(void); + +extern void sub_801A9E0(); +extern void sub_801841C(); +extern void sub_801CCD8(); +extern void sub_80184D4(); +extern void sub_8018280(); +extern void sub_8013AA0(u32 *); +extern void sub_801B3C0(u8 *); +extern void sub_801A5D8(u32, u32, u32, u32); +extern void sub_801C8C4(u32, u32, u32, u32); +extern void sub_8012D60(u32 *, u32 *, u32, u32 *, u32, u32); +extern void sub_801CB5C(u32); +extern void sub_801A8D0(u32); + +extern struct UnkTextStruct2 gUnknown_80DB7B8; +extern struct UnkTextStruct2 gUnknown_80DB7E8; +extern struct UnkTextStruct2 gUnknown_80DB7D0; +extern struct UnkTextStruct2 gUnknown_80DB800; +extern struct UnkTextStruct2 gUnknown_80DB818; + +void sub_8017AF8(void) +{ + switch(sub_801A6E8(1)) + { + case 3: + if(sub_801AEA8() != 0) + { + sub_8099690(0); + UpdateKangaskhanStorageState(0x12); + } + else + { + gUnknown_203B208->unk10 = sub_801A8AC(); + gUnknown_203B208->unkC = gUnknown_203B460->fill0[gUnknown_203B208->unk10]; + UpdateKangaskhanStorageState(0xF); + } + break; + case 4: + gUnknown_203B208->unk10 = sub_801A8AC(); + gUnknown_203B208->unkC = gUnknown_203B460->fill0[gUnknown_203B208->unk10]; + UpdateKangaskhanStorageState(0x10); + break; + case 2: + sub_801A928(); + UpdateKangaskhanStorageState(1); + break; + } +} + +void sub_8017B88(void) +{ + switch(sub_801CA08(1)) + { + case 3: + if(sub_801CFB8() != 0){ + UpdateKangaskhanStorageState(0x1C); + } + else + { + gUnknown_203B208->unk14 = sub_801CB24(); + sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->unk14, 0); + gUnknown_203B208->unkC.numItems = 1; + UpdateKangaskhanStorageState(0x19); + } + break; + case 4: + gUnknown_203B208->unk14 = sub_801CB24(); + sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->unk14, 0); + gUnknown_203B208->unkC.numItems = 1; + UpdateKangaskhanStorageState(0x1A); + break; + case 2: + sub_801CBB8(); + UpdateKangaskhanStorageState(1); + break; + case 1: + sub_801AD34(0); + break; + } +} + +void sub_8017C28(void) +{ + sub_801CA08(0); + sub_8012FD8(&gUnknown_203B208->unk58); + switch(sub_8013BBC(&gUnknown_203B208->unkA8)) + { + case 1: + sub_8017598(); + break; + case 3: + gUnknown_203B208->unkC.numItems = gUnknown_203B208->unkA8; + UpdateKangaskhanStorageState(0x1B); + break; + case 2: + UpdateKangaskhanStorageState(0x17); + break; + case 0: + default: + break; + } +} + +void sub_8017C7C(void) +{ + s32 menuAction; + menuAction = 0; + sub_801A6E8(0); + if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { + sub_8013114(&gUnknown_203B208->unk58, &menuAction); + if(menuAction != 1) gUnknown_203B208->unk1C = menuAction; + } + + switch(menuAction) + { + case 2: + sub_8099690(0); + if(sub_8091524(gUnknown_203B208->unkC.itemIndex) == 0) + { + UpdateKangaskhanStorageState(9); + } + else + { + if(sub_801ADA0(gUnknown_203B208->unk10) == 0) + { + UpdateKangaskhanStorageState(0xA); + } + else + { + UpdateKangaskhanStorageState(0x11); + } + } + break; + case 6: + sub_8099690(0); + UpdateKangaskhanStorageState(0x10); + break; + case 1: + UpdateKangaskhanStorageState(0xE); + break; + } +} void sub_8017D24(void) { s32 menuAction; menuAction = 0; - sub_801CA08(); + sub_801CA08(0); if (sub_8012FD8(&gUnknown_203B208->unk58) == 0) { sub_8013114(&gUnknown_203B208->unk58, &menuAction); if(menuAction != 1) gUnknown_203B208->unk20 = menuAction; @@ -56,11 +240,11 @@ void sub_8017D24(void) if (sub_8090A34() > 0x13) { sub_801CBB8(); - UpdateKangaskhanStorageState(0x6); + UpdateKangaskhanStorageState(6); } else { - if(sub_8090A60(gUnknown_203B208->itemIndex)) + if(sub_8090A60(gUnknown_203B208->unkC.itemIndex)) UpdateKangaskhanStorageState(0x18); else UpdateKangaskhanStorageState(0x1B); @@ -182,3 +366,112 @@ void sub_8017F10(u32 newState) sub_8017F28(); sub_8018100(); } + +void sub_8017F28(void) +{ + s32 iVar2; + + sub_8006518(gUnknown_203B20C->unkF0); + + switch(gUnknown_203B20C->state) + { + case 1: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + sub_80182E4(); + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7D0; + sub_8012CAC(&gUnknown_203B20C->unkF0[2], &gUnknown_203B20C->unk20); + break; + case 4: + case 5: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + break; + case 10: + case 11: + gUnknown_203B20C->unkF0[0] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[1] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7B8; + gUnknown_203B20C->unkF0[0] = gUnknown_80DB800; + break; + case 12: + gUnknown_203B20C->unkF0[1] = gUnknown_80DB818; + break; + case 6: + case 13: + gUnknown_203B20C->unkF0[2] = gUnknown_80DB7E8; + break; + default: + case 0: + for(iVar2 = 0; iVar2 < 4; iVar2++) + { + gUnknown_203B20C->unkF0[iVar2] = gUnknown_80DB7B8; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B20C->unkF0, 1, 1); +} + +void sub_8018100(void) +{ + + switch(gUnknown_203B20C->state) + { + case 1: + sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, &gUnknown_203B20C->unk60, gUnknown_203B20C->unk14, 2); + break; + case 4: + sub_801A5D8(3, 3, 0, 0xA); + break; + case 5: + sub_801A8D0(1); + break; + case 6: + sub_801A9E0(); + sub_801841C(); + sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, &gUnknown_203B20C->unk60, gUnknown_203B20C->unk18, 2); + break; + case 7: + sub_801B3C0(&gUnknown_203B20C->unk8); + break; + case 10: + sub_801C8C4(1, 3, 0, 0xA); + sub_801AD34(0); + break; + case 11: + sub_801CB5C(1); + sub_801AD34(0); + break; + case 12: + gUnknown_203B20C->unkD0 = 2; + gUnknown_203B20C->unkC8 = 1; + if(gUnknown_203B460->unk50[gUnknown_203B20C->unkA] > 0x63) + gUnknown_203B20C->unkCC = 0x63; + else + gUnknown_203B20C->unkCC = gUnknown_203B460->unk50[gUnknown_203B20C->unkA]; + gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC; + gUnknown_203B20C->unkD4 = 1; + gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1]; + gUnknown_203B20C->unkDC = 0x28; + gUnknown_203B20C->unkE0 = 0x12; + sub_8013AA0(&gUnknown_203B20C->unkC0); + sub_8018280(); + break; + case 13: + sub_801CCD8(); + sub_801AD34(0); + sub_80184D4(); + sub_8012D60(&gUnknown_203B20C->unk70, &gUnknown_203B20C->unk20, 0, &gUnknown_203B20C->unk60, gUnknown_203B20C->unk1C, 2); + break; + case 14: + sub_801B3C0(&gUnknown_203B20C->unk8); + break; + case 0: + default: + break; + } +} |