diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2022-03-06 14:41:40 -0600 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2022-03-11 10:14:32 -0800 |
commit | aa939e0955ec683efb5dd963430eace695a26af9 (patch) | |
tree | 34639fb9579dc71c33e5a209ecfa8c60c01230ac /src/code_8097DD0.c | |
parent | a5c90b097045a50df6ecb7cc37ce50f3fc9f142f (diff) |
All saving functions decomped
- poke_sub_4 was determined to be Dungeon Index/Floor
- Clean up code that references these functions
Diffstat (limited to 'src/code_8097DD0.c')
-rw-r--r-- | src/code_8097DD0.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/code_8097DD0.c b/src/code_8097DD0.c new file mode 100644 index 0000000..e5d4966 --- /dev/null +++ b/src/code_8097DD0.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "code_8092334.h" +#include "pokemon.h" + +struct unkStruct_203B494 +{ + // size: 0xC8? + u32 unk0; // 32 bit bitfield, I think + s32 numAdventures; + s32 unk8; + s32 unkC; + struct unkPokeSubStruct_4 dungeonLocation; + s16 unk14; + s16 unk16; + s16 unk18; + u32 unk1C[0xE]; + u32 unk54[0xE]; + u32 unk8C[0xD]; + s32 unkC0; +}; + +extern struct unkStruct_203B494 *gUnknown_203B494; + +extern void xxx_save_poke_sub_4_80902F4(struct unkStruct_8094924*, struct unkPokeSubStruct_4*); +extern void xxx_restore_poke_sub_4_8090314(struct unkStruct_8094924*, struct unkPokeSubStruct_4*); +void ReadExclusivePokemon(struct unkStruct_8094924 *r0); +void ReadGameOptions(struct unkStruct_8094924 *param_1); +void ReadPlayTime(struct unkStruct_8094924 *r0); +void WriteExclusivePokemon(struct unkStruct_8094924 *r0); +void WriteGameOptions(struct unkStruct_8094924 *param_1); +void WritePlayTime(struct unkStruct_8094924 *r0); + +extern void sub_8097944(void); + +void sub_8097C18(struct unkStruct_8094924 *r0) +{ + sub_8097944(); + SaveIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11); + SaveIntegerBits(r0, &gUnknown_203B494->unk8, 0x11); + SaveIntegerBits(r0, &gUnknown_203B494->unkC, 0x11); + SaveIntegerBits(r0, &gUnknown_203B494->unk0, 0x20); + SaveIntegerBits(r0, &gUnknown_203B494->unk14, 0xE); + SaveIntegerBits(r0, &gUnknown_203B494->unk16, 0xE); + SaveIntegerBits(r0, &gUnknown_203B494->unk18, 0x9); + SaveIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11); + SaveIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1); + SaveIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1); + SaveIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1); + xxx_save_poke_sub_4_80902F4(r0, &gUnknown_203B494->dungeonLocation); +} + +void sub_8097CC0(struct unkStruct_8094924 *r0) +{ + RestoreIntegerBits(r0, &gUnknown_203B494->numAdventures, 0x11); + RestoreIntegerBits(r0, &gUnknown_203B494->unk8, 0x11); + RestoreIntegerBits(r0, &gUnknown_203B494->unkC, 0x11); + RestoreIntegerBits(r0, &gUnknown_203B494->unk0, 0x20); + RestoreIntegerBits(r0, &gUnknown_203B494->unk14, 0xE); + RestoreIntegerBits(r0, &gUnknown_203B494->unk16, 0xE); + RestoreIntegerBits(r0, &gUnknown_203B494->unk18, 0x9); + RestoreIntegerBits(r0, &gUnknown_203B494->unkC0, 0x11); + RestoreIntegerBits(r0, gUnknown_203B494->unk1C, 0xE0 << 1); + RestoreIntegerBits(r0, gUnknown_203B494->unk54, 0xE0 << 1); + RestoreIntegerBits(r0, gUnknown_203B494->unk8C, 0xD0 << 1); + xxx_restore_poke_sub_4_8090314(r0, &gUnknown_203B494->dungeonLocation); +} + +u32 sub_8097D60(u8 *r0, u32 size) +{ + struct unkStruct_8094924 backup; + xxx_init_struct_8094924_save_809486C(&backup, r0, size); + WriteGameOptions(&backup); + WritePlayTime(&backup); + sub_8097C18(&backup); + WriteExclusivePokemon(&backup); + nullsub_102(&backup); + return backup.unk8; +} + +u32 sub_8097D98(u8 *r0, u32 size) +{ + struct unkStruct_8094924 backup; + xxx_init_struct_8094924_restore_809485C(&backup, r0, size); + ReadGameOptions(&backup); + ReadPlayTime(&backup); + sub_8097CC0(&backup); + ReadExclusivePokemon(&backup); + nullsub_102(&backup); + return backup.unk8; +} |