summaryrefslogtreecommitdiff
path: root/src/load_save.c
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2018-02-18 19:59:51 -0600
committercamthesaxman <cameronghall@cox.net>2018-02-18 19:59:51 -0600
commitdaa05c1b7c5e079ad8554e88a290e07b333bd2db (patch)
treef635e307268f6e6027423369d221e2adf32b438d /src/load_save.c
parent2e21a867487e2187a954a351f775bd3f3a9535b1 (diff)
remove subdirectories
Diffstat (limited to 'src/load_save.c')
-rw-r--r--src/load_save.c168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/load_save.c b/src/load_save.c
new file mode 100644
index 000000000..8424b1121
--- /dev/null
+++ b/src/load_save.c
@@ -0,0 +1,168 @@
+#include "global.h"
+#include "gba/flash_internal.h"
+#include "load_save.h"
+#include "main.h"
+#include "pokemon.h"
+#include "overworld.h"
+
+extern u8 gPlayerPartyCount;
+
+bool32 gFlashMemoryPresent;
+
+struct LoadedSaveData
+{
+ struct ItemSlot items[20];
+ struct ItemSlot keyItems[20];
+ struct ItemSlot pokeBalls[16];
+ struct ItemSlot TMsHMs[64];
+ struct ItemSlot berries[46];
+ struct MailStruct mail[16];
+};
+
+EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {0};
+EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {0};
+
+static EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
+
+void CheckForFlashMemory(void)
+{
+ if (!IdentifyFlash())
+ {
+ gFlashMemoryPresent = TRUE;
+ InitFlashTimer();
+ }
+ else
+ gFlashMemoryPresent = FALSE;
+}
+
+bool32 GetSecretBase2Field_9(void)
+{
+ return gSaveBlock2.specialSaveWarp;
+}
+
+void ClearSecretBase2Field_9(void)
+{
+ gSaveBlock2.specialSaveWarp = 0;
+}
+
+void SetSecretBase2Field_9(void)
+{
+ gSaveBlock2.specialSaveWarp = 1;
+}
+
+void SetSecretBase2Field_9_AndHideBG(void) // note: no other function sets specialSaveWarp to values other than 0 or 1, hence clear and set distinctions.
+{
+ gpu_sync_bg_hide(0); // the function doesn't use the parameter passed to it, but this is necessary to match.
+ gSaveBlock2.specialSaveWarp = 1;
+}
+
+void ClearSecretBase2Field_9_2(void) // duplicate function
+{
+ gSaveBlock2.specialSaveWarp = 0;
+}
+
+void SavePlayerParty(void)
+{
+ int i;
+
+ gSaveBlock1.playerPartyCount = gPlayerPartyCount;
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1.playerParty[i] = gPlayerParty[i];
+}
+
+void LoadPlayerParty(void)
+{
+ int i;
+
+ gPlayerPartyCount = gSaveBlock1.playerPartyCount;
+
+ for (i = 0; i < 6; i++)
+ gPlayerParty[i] = gSaveBlock1.playerParty[i];
+}
+
+static void SaveMapObjects(void)
+{
+ int i;
+
+ for (i = 0; i < 16; i++)
+ gSaveBlock1.mapObjects[i] = gMapObjects[i];
+}
+
+static void LoadMapObjects(void)
+{
+ int i;
+
+ for (i = 0; i < 16; i++)
+ gMapObjects[i] = gSaveBlock1.mapObjects[i];
+}
+
+void SaveSerializedGame(void)
+{
+ SavePlayerParty();
+ SaveMapObjects();
+}
+
+void LoadSerializedGame(void)
+{
+ LoadPlayerParty();
+ LoadMapObjects();
+}
+
+void LoadPlayerBag(void)
+{
+ int i;
+
+ // load player items.
+ for (i = 0; i < 20; i++)
+ gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i];
+
+ // load player key items.
+ for (i = 0; i < 20; i++)
+ gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i];
+
+ // load player pokeballs.
+ for (i = 0; i < 16; i++)
+ gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i];
+
+ // load player TMs and HMs.
+ for (i = 0; i < 64; i++)
+ gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i];
+
+ // load player berries.
+ for (i = 0; i < 46; i++)
+ gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i];
+
+ // load mail.
+ for (i = 0; i < 16; i++)
+ gLoadedSaveData.mail[i] = gSaveBlock1.mail[i];
+}
+
+void SavePlayerBag(void)
+{
+ int i;
+
+ // save player items.
+ for (i = 0; i < 20; i++)
+ gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i];
+
+ // save player key items.
+ for (i = 0; i < 20; i++)
+ gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i];
+
+ // save player pokeballs.
+ for (i = 0; i < 16; i++)
+ gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i];
+
+ // save player TMs and HMs.
+ for (i = 0; i < 64; i++)
+ gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i];
+
+ // save player berries.
+ for (i = 0; i < 46; i++)
+ gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i];
+
+ // save mail.
+ for (i = 0; i < 16; i++)
+ gSaveBlock1.mail[i] = gLoadedSaveData.mail[i];
+}