diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-11-13 23:26:46 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-13 23:26:46 -0500 |
commit | f42eafc85b007cd27e90bc9a1350d589e31bda43 (patch) | |
tree | 7a09999f6ac2fc2d1b36ece5ec484ec6527a201f /include/load_save.h | |
parent | 4c4fa1f25e55e41f469604a984a820f5a7f30e90 (diff) | |
parent | 8d18d03c791c40bad532c62f217b0f82aadec6d2 (diff) |
Merge branch 'master' into doc-banim
Diffstat (limited to 'include/load_save.h')
-rw-r--r-- | include/load_save.h | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/include/load_save.h b/include/load_save.h index 2f4a9ace6..309e62e2b 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -1,9 +1,33 @@ #ifndef GUARD_LOAD_SAVE_H #define GUARD_LOAD_SAVE_H -extern struct SaveBlock1 gSaveblock1; -extern struct SaveBlock2 gSaveblock2; -extern struct PokemonStorage gPokemonStorage; +#include "pokemon_storage_system.h" + +#define SAVEBLOCK_MOVE_RANGE 128 + +/** + * These structs are to prevent them from being reordered on newer or modern + * toolchains. If this is not done, the ClearSav functions will end up erasing + * the wrong memory leading to various glitches. + */ +struct SaveBlock2DMA { + struct SaveBlock2 block; + u8 dma[SAVEBLOCK_MOVE_RANGE]; +}; + +struct SaveBlock1DMA { + struct SaveBlock1 block; + u8 dma[SAVEBLOCK_MOVE_RANGE]; +}; + +struct PokemonStorageDMA { + struct PokemonStorage block; + u8 dma[SAVEBLOCK_MOVE_RANGE]; +}; + +extern struct SaveBlock1DMA gSaveblock1; +extern struct SaveBlock2DMA gSaveblock2; +extern struct PokemonStorageDMA gPokemonStorage; extern bool32 gFlashMemoryPresent; extern struct SaveBlock1 *gSaveBlock1Ptr; @@ -24,8 +48,8 @@ void SavePlayerParty(void); void LoadPlayerParty(void); void SaveObjectEvents(void); void LoadObjectEvents(void); -void SaveSerializedGame(void); -void LoadSerializedGame(void); +void CopyPartyAndObjectsToSave(void); +void CopyPartyAndObjectsFromSave(void); void LoadPlayerBag(void); void SavePlayerBag(void); void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey); |