summaryrefslogtreecommitdiff
path: root/include/load_save.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/load_save.h')
-rw-r--r--include/load_save.h34
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);