diff --git a/src/fixed/common.h b/src/fixed/common.h index fc09224..1245848 100644 --- a/src/fixed/common.h +++ b/src/fixed/common.h @@ -1661,7 +1661,7 @@ struct ItemObj #define TRACK_FLAG_ONCE 32 #define TRACK_FLAG_MASK 31 -#define SAVEGAME_VER 1 +#define SAVEGAME_VER 2 #define SAVEGAME_SIZE (8 * 1024) // 8k EWRAM struct SaveGame @@ -1681,7 +1681,8 @@ struct SaveGame uint16 ammoUsed; uint16 kills; uint16 flipped; - uint8 tracks[64]; + uint8 tracks[64]; + uint16 invSlots[64]; }; #define SETTINGS_VER 3 diff --git a/src/fixed/game.h b/src/fixed/game.h index 0ed55a4..095d93b 100644 --- a/src/fixed/game.h +++ b/src/fixed/game.h @@ -30,6 +30,9 @@ bool gameSave() gSaveGame.randSeedLogic = gRandSeedLogic; gSaveGame.randSeedDraw = gRandSeedDraw; + memset(gSaveGame.invSlots, 0, sizeof(gSaveGame.invSlots)); + memcpy(gSaveGame.invSlots, inventory.counts, sizeof(inventory.counts)); + uint8* ptr = gSaveData; ItemObj* item = items; for (int32 i = 0; i < level.itemsCount; i++, item++) @@ -54,6 +57,8 @@ bool gameLoad() startLevel(gLevelInfo[gLevelID].name); gSaveGame = tmp; + inventory.setSlots(gSaveGame.invSlots); + ItemObj::sFirstActive = NULL; ItemObj::sFirstFree = items + level.itemsCount; diff --git a/src/fixed/inventory.h b/src/fixed/inventory.h index 9314aab..4c9800c 100644 --- a/src/fixed/inventory.h +++ b/src/fixed/inventory.h @@ -337,6 +337,18 @@ struct Inventory } } + void setSlots(uint16* invSlots) + { + numKeys = 0; + + memcpy(counts, invSlots, sizeof(counts)); + + for (int32 i = 0; i < SLOT_COMPASS; i++) + { + numKeys += counts[i]; + } + } + bool applyItem(ItemObj* hole) { #define CHECK_CASE(A, B) case A: { if (useSlot != B) return false; break; } diff --git a/src/platform/gba/data/GYM.PKD b/src/platform/gba/data/GYM.PKD index 5a9c863..9d60a37 100644 Binary files a/src/platform/gba/data/GYM.PKD and b/src/platform/gba/data/GYM.PKD differ diff --git a/src/platform/gba/data/LEVEL1.PKD b/src/platform/gba/data/LEVEL1.PKD index 2ae085a..8d83a91 100644 Binary files a/src/platform/gba/data/LEVEL1.PKD and b/src/platform/gba/data/LEVEL1.PKD differ diff --git a/src/platform/gba/data/LEVEL2.PKD b/src/platform/gba/data/LEVEL2.PKD index d4d4572..fc1c50a 100644 Binary files a/src/platform/gba/data/LEVEL2.PKD and b/src/platform/gba/data/LEVEL2.PKD differ