diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-06-09 22:54:21 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-09 22:54:21 -0500 |
commit | 377bd14ea67d6177250fb401e12d7dfcf44e2cf6 (patch) | |
tree | 5440970e02a7890791b234aa233e91e5c1d65b40 /src/friend_area_action_menu.c | |
parent | eaa141c612dd1689936a21bd57018a55ff686b69 (diff) |
Dungeon pokemon/Floor ID JSON Part 1 (#39)
* move Thunderwave and Tiny Woods pokemon to json
* rule tweaking to actually build tool before parsing JSON
* delete .inc pokemon for tiny Woods and Thunderwave
* silence git complaining about br_ips and ips_patch
* use defines for species and pass the header file for species
* convert sinister woods
* convert MtThunderPeak
* convert silent chasm
* add trial floor_id w/ tiny woods
* change make rule name to fix compile
* MtSteel converted and bugfix
* convert few floor headers and great canyon pokemon
* code cleanup
* unify unkData into UnkTextStruct2
* more code cleanup and some text decomp
* doc more funcs and decomp/split some stuff
* document more save stuff
* more save work and move some data
* pika sniped UpdateNatureTotal
* decomp a litle and convert a few more dungeons
* better scanning for json files
* mt freeze and peak
Diffstat (limited to 'src/friend_area_action_menu.c')
-rw-r--r-- | src/friend_area_action_menu.c | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c new file mode 100644 index 0000000..04896d2 --- /dev/null +++ b/src/friend_area_action_menu.c @@ -0,0 +1,246 @@ +#include "global.h" +#include "memory.h" +#include "text.h" +#include "input.h" +#include "menu.h" +#include "friend_area_action_menu.h" + +extern struct unkStruct_203B2BC *gUnknown_203B2BC; +extern struct UnkTextStruct2 gUnknown_80DD74C; +extern struct UnkTextStruct2 gUnknown_80DD704; +extern struct UnkTextStruct2 gUnknown_80DD6EC; +extern struct UnkTextStruct2 gUnknown_80DD71C; +extern const char gUnknown_80DD764[]; +extern const char gUnknown_80DD7FC[]; +extern const char gUnknown_80DD8A0[]; +extern const char gUnknown_80DD8D0[]; + +extern void sub_80141B4(const char *r0, u32, u32 *r1, u32); +extern void sub_8014248(const char *r0, u32, u32, struct MenuItem *r4, u32, u32, u32, u32 *r5, u32); +extern void sub_8012D60(u32 *, struct MenuItem *, u32, u32 *, u32, u32); +extern void sub_8027D40(u32, u8 *); +extern void sub_8023868(u32, u32, u32, u32); +extern void sub_8023B7C(u32); +extern void sub_8023DA4(); +extern void sub_8024458(s16, u32); +extern void sub_801BEEC(s16); +extern void sub_8093560(u32, u32 *, u32 *); +extern void sub_801F808(u32 *); +extern void sub_8027794(); +extern void sub_801A5D8(u32, u32, u32, u32); +extern void sub_801A8D0(u32); +extern void sub_801A9E0(); +extern void sub_801F1B0(u32, u32); +extern void sub_8090B64(u8 *, u8 *); +extern void sub_801B3C0(u8 *); +extern void sub_809401C(u32 *, u32 *); +extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32); + +extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *); +extern void sub_8027184(u32); +extern void ResetSprites(u8 ); +extern void sub_802719C(); +extern void sub_8027274(); +extern void sub_80277FC(); +extern void sub_80278B4(); +extern void sub_8027A40(); +extern void sub_8027A5C(); +extern void sub_8027D1C(); +extern void sub_8027A78(); +extern void sub_8027AE4(); +extern void sub_8027B28(); +extern void sub_8027BD8(); +extern void sub_8027C84(); +extern void sub_8027CA0(); +extern void sub_8027D00(); +extern void CreateFriendActionMenu(); +extern void sub_80276A8(); + + +u32 sub_8027074(void) +{ + ResetSprites(0); + gUnknown_203B2BC = MemoryAlloc(sizeof(struct unkStruct_203B2BC), 8); + gUnknown_203B2BC->unk70 = 0; + gUnknown_203B2BC->unk74 = 0; + gUnknown_203B2BC->unk78 = 0; + sub_8027184(0); + return 1; +} + +u32 sub_80270A4(void) +{ + switch(gUnknown_203B2BC->state) { + case 0: + sub_8027184(1); + break; + case 1: + case 2: + sub_80277FC(); + break; + case 3: + sub_80278B4(); + break; + case 4: + sub_8027A40(); + break; + case 5: + sub_8027A5C(); + break; + case 8: + sub_8027A78(); + break; + case 9: + sub_8027AE4(); + break; + case 10: + case 0xb: + sub_8027B28(); + break; + case 0xc: + sub_8027BD8(); + break; + case 0xd: + sub_8027C84(); + break; + case 0xe: + case 0xf: + sub_8027CA0(); + break; + case 0x10: + sub_8027D00(); + break; + default: + sub_8027D1C(); + break; + case 0x11: + return 3; + } + return 0; +} + +void sub_8027168(void) +{ + if(gUnknown_203B2BC != NULL) + { + MemoryFree(gUnknown_203B2BC); + gUnknown_203B2BC = NULL; + } +} + +void sub_8027184(u32 newState) +{ + gUnknown_203B2BC->state = newState; + sub_802719C(); + sub_8027274(); +} + +void sub_802719C(void) +{ + s32 iVar3; + + sub_8006518(gUnknown_203B2BC->unk180); + switch(gUnknown_203B2BC->state) + { + case 3: + gUnknown_203B2BC->unk180[3] = gUnknown_80DD74C; + CreateFriendActionMenu(); + gUnknown_203B2BC->unk180[2] = gUnknown_80DD704; + sub_8012CAC(&gUnknown_203B2BC->unk180[2], gUnknown_203B2BC->menuItems); + break; + case 0xC: + sub_80276A8(); + gUnknown_203B2BC->unk180[2] = gUnknown_80DD71C; + sub_8012CAC(&gUnknown_203B2BC->unk180[2], gUnknown_203B2BC->menuItems); + break; + default: + for(iVar3 = 0; iVar3 < 4; iVar3++) + { + gUnknown_203B2BC->unk180[iVar3] = gUnknown_80DD6EC; + } + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2BC->unk180, 1, 1); +} + +void sub_8027274(void) +{ + u8 auStack12 [4]; + + switch(gUnknown_203B2BC->state) { + case 0: + case 0x11: + break; + case 1: + sub_8023868(1,0,0,7); + break; + case 2: + sub_8023B7C(1); + break; + case 3: + sub_8027D40(3,&gUnknown_203B2BC->unk14); + sub_8023DA4(); + sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk70,2); + break; + case 4: + sub_8024458(gUnknown_203B2BC->unk8,2); + break; + case 5: + sub_801BEEC(gUnknown_203B2BC->unk8); + break; + case 10: + sub_801A5D8(1,0,0,10); + break; + case 0xb: + sub_801A8D0(1); + break; + case 0xc: + sub_801A9E0(); + sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk74,2); + break; + case 0xd: + sub_8090B64(auStack12,&gUnknown_203B2BC->unk10); + sub_801B3C0(auStack12); + break; + case 0xe: + sub_809401C(&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk18->unk2C); + sub_801EE10(3,gUnknown_203B2BC->unk8,&gUnknown_203B2BC->unk28,0,0,0); + break; + case 0xf: + sub_801F1B0(1,0); + break; + case 8: + sub_8027794(); + // You have chosen to say farewell to this Pokemon. + // The pokemon will leave its friend area. + // It will no longer be available for adventures. + // Is that OK? + sub_8014248(gUnknown_80DD764,0,3,gUnknown_203B2BC->menuItems,0,4,0,0,0x101); + break; + case 9: + sub_8027794(); + // If you say farewell to this Pokemon, it will be gone forever. + // You will never be able to get another one + // like it to join your team. + // Will you release it anyway? + sub_8014248(gUnknown_80DD7FC,0,3,gUnknown_203B2BC->menuItems,0,4,0,0,0x101); + break; + case 0x10: + sub_8093560(gUnknown_203B2BC->unk20,&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk68); + sub_801F808(&gUnknown_203B2BC->unk68); + break; + case 6: + gUnknown_203B2BC->unk4 = 2; + // The #C4$i0#R was + // returned to the Toolbox + sub_80141B4(gUnknown_80DD8A0,0,0,0x101); + break; + case 7: + gUnknown_203B2BC->unk4 = 2; + // The #C4$i0#R was + // returned to storage + sub_80141B4(gUnknown_80DD8D0,0,0,0x101); + break; + } +} |