summaryrefslogtreecommitdiff
path: root/src/code/z_sram_NES.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code/z_sram_NES.c')
-rw-r--r--src/code/z_sram_NES.c489
1 files changed, 246 insertions, 243 deletions
diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c
index c32a76d76..c269e30f4 100644
--- a/src/code/z_sram_NES.c
+++ b/src/code/z_sram_NES.c
@@ -134,7 +134,7 @@ u32 D_801C5FC0[SCENE_MAX][4] = {
// TODO: figure out a way to use the WEEKEVENTREG defines here
// weekEventReg flags which will be not be cleared on a cycle reset
-u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.weekEventReg)] = {
+u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
/* 0 */ 0xFFFC,
/* 1 */ 0xFFFF,
/* 2 */ 0xFFFF,
@@ -296,24 +296,24 @@ u16 D_801F6AF0;
u8 D_801F6AF2;
void Sram_ActivateOwl(u8 owlId) {
- gSaveContext.save.playerData.owlActivationFlags =
- ((void)0, gSaveContext.save.playerData.owlActivationFlags) | (u16)gBitFlags[owlId];
+ gSaveContext.save.saveInfo.playerData.owlActivationFlags =
+ ((void)0, gSaveContext.save.saveInfo.playerData.owlActivationFlags) | (u16)gBitFlags[owlId];
- if (gSaveContext.save.playerData.unk_20 == 0xFF) {
- gSaveContext.save.playerData.unk_20 = owlId;
+ if (gSaveContext.save.saveInfo.playerData.unk_20 == 0xFF) {
+ gSaveContext.save.saveInfo.playerData.unk_20 = owlId;
}
}
void Sram_ClearHighscores(void) {
- gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF) | 0x130000;
- gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF0000) | 0xA;
- gSaveContext.save.horseBackBalloonHighScore = SECONDS_TO_TIMER(60);
+ gSaveContext.save.saveInfo.unk_EC4 = (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF) | 0x130000;
+ gSaveContext.save.saveInfo.unk_EC4 = (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF0000) | 0xA;
+ gSaveContext.save.saveInfo.horseBackBalloonHighScore = SECONDS_TO_TIMER(60);
SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(39);
SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(10);
- gSaveContext.save.dekuPlaygroundHighScores[0] = SECONDS_TO_TIMER(75);
- gSaveContext.save.dekuPlaygroundHighScores[1] = SECONDS_TO_TIMER(75);
- gSaveContext.save.dekuPlaygroundHighScores[2] = SECONDS_TO_TIMER(76);
+ gSaveContext.save.saveInfo.dekuPlaygroundHighScores[0] = SECONDS_TO_TIMER(75);
+ gSaveContext.save.saveInfo.dekuPlaygroundHighScores[1] = SECONDS_TO_TIMER(75);
+ gSaveContext.save.saveInfo.dekuPlaygroundHighScores[2] = SECONDS_TO_TIMER(76);
}
/**
@@ -342,9 +342,9 @@ void Sram_SaveEndOfCycle(PlayState* play) {
gSaveContext.save.day = 0;
gSaveContext.save.time = CLOCK_TIME(6, 0) - 1;
- gSaveContext.save.playerData.deaths++;
- if (gSaveContext.save.playerData.deaths > 999) {
- gSaveContext.save.playerData.deaths = 999;
+ gSaveContext.save.saveInfo.playerData.deaths++;
+ if (gSaveContext.save.saveInfo.playerData.deaths > 999) {
+ gSaveContext.save.saveInfo.playerData.deaths = 999;
}
sceneId = Play_GetOriginalSceneId(play->sceneId);
@@ -363,8 +363,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
gSaveContext.cycleSceneFlags[i].collectible =
((void)0, gSaveContext.cycleSceneFlags[i].collectible) & D_801C5FC0[i][3];
gSaveContext.cycleSceneFlags[i].clearedRoom = 0;
- gSaveContext.save.permanentSceneFlags[i].unk_14 = 0;
- gSaveContext.save.permanentSceneFlags[i].rooms = 0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].unk_14 = 0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].rooms = 0;
}
for (; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
@@ -388,8 +388,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
for (j = 0; j < ARRAY_COUNT(D_801C6890); j++) {
if ((phi_v1_3 & 3) == 0) {
- gSaveContext.save.weekEventReg[i] =
- ((void)0, gSaveContext.save.weekEventReg[i]) & (0xFF ^ D_801C6890[j]);
+ gSaveContext.save.saveInfo.weekEventReg[i] =
+ ((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ D_801C6890[j]);
}
phi_v1_3 >>= 2;
}
@@ -405,7 +405,7 @@ void Sram_SaveEndOfCycle(PlayState* play) {
CLEAR_EVENTINF(EVENTINF_73);
CLEAR_EVENTINF(EVENTINF_74);
- if (gSaveContext.save.playerData.rupees != 0) {
+ if (gSaveContext.save.saveInfo.playerData.rupees != 0) {
SET_EVENTINF(EVENTINF_70);
}
@@ -436,8 +436,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
for (i = 0; i < ARRAY_COUNT(gAmmoItems); i++) {
if (gAmmoItems[i] != ITEM_NONE) {
- if ((gSaveContext.save.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTO_BOX)) {
- item = gSaveContext.save.inventory.items[i];
+ if ((gSaveContext.save.saveInfo.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTO_BOX)) {
+ item = gSaveContext.save.saveInfo.inventory.items[i];
AMMO(item) = 0;
}
}
@@ -445,23 +445,23 @@ void Sram_SaveEndOfCycle(PlayState* play) {
for (i = SLOT_BOTTLE_1; i <= SLOT_BOTTLE_6; i++) {
// Check for all bottled items
- if (gSaveContext.save.inventory.items[i] >= ITEM_POTION_RED) {
- if (gSaveContext.save.inventory.items[i] <= ITEM_OBABA_DRINK) {
+ if (gSaveContext.save.saveInfo.inventory.items[i] >= ITEM_POTION_RED) {
+ if (gSaveContext.save.saveInfo.inventory.items[i] <= ITEM_OBABA_DRINK) {
for (j = EQUIP_SLOT_C_LEFT; j <= EQUIP_SLOT_C_RIGHT; j++) {
- if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.inventory.items[i]) {
+ if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.saveInfo.inventory.items[i]) {
SET_CUR_FORM_BTN_ITEM(j, ITEM_BOTTLE);
Interface_LoadItemIconImpl(play, j);
}
}
- gSaveContext.save.inventory.items[i] = ITEM_BOTTLE;
+ gSaveContext.save.saveInfo.inventory.items[i] = ITEM_BOTTLE;
}
}
}
REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH);
- if (gSaveContext.save.playerData.health < 0x30) {
- gSaveContext.save.playerData.health = 0x30;
+ if (gSaveContext.save.saveInfo.playerData.health < 0x30) {
+ gSaveContext.save.saveInfo.playerData.health = 0x30;
}
if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) <= EQUIP_VALUE_SWORD_RAZOR) {
@@ -491,8 +491,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
if (STOLEN_ITEM_1 == ITEM_BOTTLE) {
slot = SLOT(ITEM_BOTTLE);
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
- if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
- gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE;
+ if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
+ gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_BOTTLE;
break;
}
}
@@ -501,8 +501,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
if (STOLEN_ITEM_2 == ITEM_BOTTLE) {
slot = SLOT(ITEM_BOTTLE);
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
- if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
- gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE;
+ if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
+ gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_BOTTLE;
break;
}
}
@@ -522,28 +522,28 @@ void Sram_SaveEndOfCycle(PlayState* play) {
}
}
- gSaveContext.save.skullTokenCount &= ~0xFFFF0000;
- gSaveContext.save.skullTokenCount &= ~0x0000FFFF;
- gSaveContext.save.unk_EC4 = 0;
+ gSaveContext.save.saveInfo.skullTokenCount &= ~0xFFFF0000;
+ gSaveContext.save.saveInfo.skullTokenCount &= ~0x0000FFFF;
+ gSaveContext.save.saveInfo.unk_EA0 = 0;
- gSaveContext.save.unk_E88[0] = 0;
- gSaveContext.save.unk_E88[1] = 0;
- gSaveContext.save.unk_E88[2] = 0;
- gSaveContext.save.unk_E88[3] = 0;
- gSaveContext.save.unk_E88[4] = 0;
- gSaveContext.save.unk_E88[5] = 0;
- gSaveContext.save.unk_E88[6] = 0;
+ gSaveContext.save.saveInfo.unk_E64[0] = 0;
+ gSaveContext.save.saveInfo.unk_E64[1] = 0;
+ gSaveContext.save.saveInfo.unk_E64[2] = 0;
+ gSaveContext.save.saveInfo.unk_E64[3] = 0;
+ gSaveContext.save.saveInfo.unk_E64[4] = 0;
+ gSaveContext.save.saveInfo.unk_E64[5] = 0;
+ gSaveContext.save.saveInfo.unk_E64[6] = 0;
Sram_ClearHighscores();
for (i = 0; i < 8; i++) {
- gSaveContext.save.inventory.dungeonItems[i] &= (u8)~1; // remove boss key
+ gSaveContext.save.saveInfo.inventory.dungeonItems[i] &= (u8)~1; // remove boss key
DUNGEON_KEY_COUNT(i) = 0;
- gSaveContext.save.inventory.strayFairies[i] = 0;
+ gSaveContext.save.saveInfo.inventory.strayFairies[i] = 0;
}
- gSaveContext.save.playerData.rupees = 0;
- gSaveContext.save.unk_F65 = 0;
+ gSaveContext.save.saveInfo.playerData.rupees = 0;
+ gSaveContext.save.saveInfo.unk_F41 = 0;
gSaveContext.powderKegTimer = 0;
gSaveContext.unk_1014 = 0;
gSaveContext.jinxTimer = 0;
@@ -558,12 +558,12 @@ void Sram_IncrementDay(void) {
gSaveContext.save.daysElapsed++;
}
- gSaveContext.save.bombersCaughtNum = 0;
- gSaveContext.save.bombersCaughtOrder[0] = 0;
- gSaveContext.save.bombersCaughtOrder[1] = 0;
- gSaveContext.save.bombersCaughtOrder[2] = 0;
- gSaveContext.save.bombersCaughtOrder[3] = 0;
- gSaveContext.save.bombersCaughtOrder[4] = 0;
+ gSaveContext.save.saveInfo.bombersCaughtNum = 0;
+ gSaveContext.save.saveInfo.bombersCaughtOrder[0] = 0;
+ gSaveContext.save.saveInfo.bombersCaughtOrder[1] = 0;
+ gSaveContext.save.saveInfo.bombersCaughtOrder[2] = 0;
+ gSaveContext.save.saveInfo.bombersCaughtOrder[3] = 0;
+ gSaveContext.save.saveInfo.bombersCaughtOrder[4] = 0;
CLEAR_WEEKEVENTREG(WEEKEVENTREG_73_10);
CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_02);
@@ -593,9 +593,7 @@ void Sram_ResetSave(void) {
gSaveContext.save.hasTatl = false;
gSaveContext.save.isOwlSave = false;
- // Instead of bloating all save context accesses with an extra sub-struct, the size of the would-be sub-struct
- // is calculated manually
- bzero(&gSaveContext.save.playerData, sizeof(Save) - offsetof(Save, playerData));
+ bzero(&gSaveContext.save.saveInfo, sizeof(SaveInfo));
}
/**
@@ -615,15 +613,15 @@ void Sram_GenerateRandomSaveFields(void) {
Sram_ClearHighscores();
- gSaveContext.save.lotteryCodes[0][0] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[0][1] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[0][2] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[1][0] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[1][1] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[1][2] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[2][0] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[2][1] = Rand_S16Offset(0, 10);
- gSaveContext.save.lotteryCodes[2][2] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[0][0] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[0][1] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[0][2] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[1][0] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[1][1] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[1][2] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[2][0] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[2][1] = Rand_S16Offset(0, 10);
+ gSaveContext.save.saveInfo.lotteryCodes[2][2] = Rand_S16Offset(0, 10);
// Needed to match...
for (i = 0; i < 3; i++) {
@@ -636,7 +634,7 @@ void Sram_GenerateRandomSaveFields(void) {
while (i != k) {
randSpiderHouse = Rand_S16Offset(0, 16) & 3;
if (sp2A != randSpiderHouse) {
- gSaveContext.save.spiderHouseMaskOrder[i] = randSpiderHouse;
+ gSaveContext.save.saveInfo.spiderHouseMaskOrder[i] = randSpiderHouse;
i++;
sp2A = randSpiderHouse;
}
@@ -646,7 +644,7 @@ void Sram_GenerateRandomSaveFields(void) {
randBombers = Rand_S16Offset(0, 6);
} while (randBombers <= 0 || randBombers >= 6);
- gSaveContext.save.bomberCode[0] = randBombers;
+ gSaveContext.save.saveInfo.bomberCode[0] = randBombers;
i = 1;
while (i != 5) {
@@ -658,14 +656,14 @@ void Sram_GenerateRandomSaveFields(void) {
sp2A = 0;
do {
- if (randBombers == gSaveContext.save.bomberCode[sp2A]) {
+ if (randBombers == gSaveContext.save.saveInfo.bomberCode[sp2A]) {
k = true;
}
sp2A++;
} while (sp2A < i);
if (k == false) {
- gSaveContext.save.bomberCode[i] = randBombers;
+ gSaveContext.save.saveInfo.bomberCode[i] = randBombers;
i++;
}
}
@@ -755,19 +753,20 @@ void Sram_InitNewSave(void) {
gSaveContext.save.time = CLOCK_TIME(6, 0) - 1;
Sram_ResetSave();
- Lib_MemCpy(&gSaveContext.save.playerData, &sSaveDefaultPlayerData, sizeof(SavePlayerData));
- Lib_MemCpy(&gSaveContext.save.equips, &sSaveDefaultItemEquips, sizeof(ItemEquips));
- Lib_MemCpy(&gSaveContext.save.inventory, &sSaveDefaultInventory, sizeof(Inventory));
- Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDefaultChecksum, sizeof(gSaveContext.save.checksum));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.playerData, &sSaveDefaultPlayerData, sizeof(SavePlayerData));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.equips, &sSaveDefaultItemEquips, sizeof(ItemEquips));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.inventory, &sSaveDefaultInventory, sizeof(Inventory));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.checksum, &sSaveDefaultChecksum,
+ sizeof(gSaveContext.save.saveInfo.checksum));
- gSaveContext.save.horseData.sceneId = SCENE_F01;
- gSaveContext.save.horseData.pos.x = -1420;
- gSaveContext.save.horseData.pos.y = 257;
- gSaveContext.save.horseData.pos.z = -1285;
- gSaveContext.save.horseData.yaw = -0x7554;
+ gSaveContext.save.saveInfo.horseData.sceneId = SCENE_F01;
+ gSaveContext.save.saveInfo.horseData.pos.x = -1420;
+ gSaveContext.save.saveInfo.horseData.pos.y = 257;
+ gSaveContext.save.saveInfo.horseData.pos.z = -1285;
+ gSaveContext.save.saveInfo.horseData.yaw = -0x7554;
gSaveContext.nextCutsceneIndex = 0;
- gSaveContext.save.playerData.magicLevel = 0;
+ gSaveContext.save.saveInfo.playerData.magicLevel = 0;
Sram_GenerateRandomSaveFields();
}
@@ -908,10 +907,10 @@ u8 D_801C6A50[] = {
void Sram_InitDebugSave(void) {
Sram_ResetSave();
- Lib_MemCpy(&gSaveContext.save.playerData, &sSaveDebugPlayerData, sizeof(SavePlayerData));
- Lib_MemCpy(&gSaveContext.save.equips, &sSaveDebugItemEquips, sizeof(ItemEquips));
- Lib_MemCpy(&gSaveContext.save.inventory, &sSaveDebugInventory, sizeof(Inventory));
- Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.checksum));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.playerData, &sSaveDebugPlayerData, sizeof(SavePlayerData));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.equips, &sSaveDebugItemEquips, sizeof(ItemEquips));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.inventory, &sSaveDebugInventory, sizeof(Inventory));
+ Lib_MemCpy(&gSaveContext.save.saveInfo.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.saveInfo.checksum));
if (GET_PLAYER_FORM != PLAYER_FORM_HUMAN) {
BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[GET_PLAYER_FORM];
@@ -920,11 +919,11 @@ void Sram_InitDebugSave(void) {
gSaveContext.save.hasTatl = true;
- gSaveContext.save.horseData.sceneId = SCENE_F01;
- gSaveContext.save.horseData.pos.x = -1420;
- gSaveContext.save.horseData.pos.y = 257;
- gSaveContext.save.horseData.pos.z = -1285;
- gSaveContext.save.horseData.yaw = -0x7554;
+ gSaveContext.save.saveInfo.horseData.sceneId = SCENE_F01;
+ gSaveContext.save.saveInfo.horseData.pos.x = -1420;
+ gSaveContext.save.saveInfo.horseData.pos.y = 257;
+ gSaveContext.save.saveInfo.horseData.pos.z = -1285;
+ gSaveContext.save.saveInfo.horseData.yaw = -0x7554;
gSaveContext.save.entrance = ENTRANCE(CUTSCENE, 0);
gSaveContext.save.isFirstCycle = true;
@@ -934,8 +933,8 @@ void Sram_InitDebugSave(void) {
SET_WEEKEVENTREG(WEEKEVENTREG_31_04);
gSaveContext.cycleSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
- gSaveContext.save.permanentSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
- gSaveContext.save.playerData.magicLevel = 0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
+ gSaveContext.save.saveInfo.playerData.magicLevel = 0;
Sram_GenerateRandomSaveFields();
}
@@ -953,7 +952,7 @@ void func_80144A94(SramContext* sramCtx) {
D_801C67F0[gSaveContext.fileNum * 2 + 1]);
}
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
- if (CHECK_NEWF(gSaveContext.save.playerData.newf)) {
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) {
func_80185968(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2 + 1],
D_801C67F0[gSaveContext.fileNum * 2 + 1]);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, sizeof(Save));
@@ -965,11 +964,11 @@ void func_80144A94(SramContext* sramCtx) {
}
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
- gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
- gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
- gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
- gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
+ gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
+ gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
+ gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
+ gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
+ gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
}
for (i = 0; i < TIMER_ID_MAX; i++) {
@@ -1026,13 +1025,13 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]);
- if (CHECK_NEWF(gSaveContext.save.playerData.newf)) {
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) {
func_80185968(sramCtx->saveBuf, D_801C67C8[phi_t1 + 1], D_801C67F0[phi_t1 + 1]);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]);
}
}
- gSaveContext.save.playerData.magicLevel = 0;
+ gSaveContext.save.saveInfo.playerData.magicLevel = 0;
if (!gSaveContext.save.isOwlSave) {
for (i = 0; i < ARRAY_COUNT(gSaveContext.eventInf); i++) {
@@ -1040,11 +1039,11 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
}
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
- gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
- gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
- gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
- gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
+ gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
+ gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
+ gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
+ gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
+ gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
}
for (i = 0; i < TIMER_ID_MAX; i++) {
@@ -1076,18 +1075,18 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
}
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
- gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
- gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
- gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
- gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
+ gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
+ gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
+ gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
+ gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
+ gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
}
- if (gSaveContext.save.unk_F65) {
- Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.scarecrowSpawnSong,
- sizeof(gSaveContext.save.scarecrowSpawnSong));
+ if (gSaveContext.save.saveInfo.unk_F41) {
+ Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.saveInfo.scarecrowSpawnSong,
+ sizeof(gSaveContext.save.saveInfo.scarecrowSpawnSong));
- for (i = 0; i != ARRAY_COUNT(gSaveContext.save.scarecrowSpawnSong); i++) {}
+ for (i = 0; i != ARRAY_COUNT(gSaveContext.save.saveInfo.scarecrowSpawnSong); i++) {}
}
fileNum = gSaveContext.fileNum;
@@ -1101,28 +1100,28 @@ void func_8014546C(SramContext* sramCtx) {
if (gSaveContext.save.isOwlSave) {
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
- gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
- gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
- gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
- gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
}
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, offsetof(SaveContext, fileNum));
} else {
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
- gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
- gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
- gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
- gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
}
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
if (gSaveContext.unk_3F3F) {
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save));
@@ -1138,15 +1137,15 @@ void func_80145698(SramContext* sramCtx) {
s32 i;
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
- gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
- gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
- gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
- gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
- gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
+ gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
}
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
if (gSaveContext.unk_3F3F) {
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save));
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
@@ -1202,14 +1201,14 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
} else {
// Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
- temp_s2 = gSaveContext.save.checksum;
- gSaveContext.save.checksum = 0;
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
+ gSaveContext.save.saveInfo.checksum = 0;
temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
- gSaveContext.save.checksum = temp_s2;
+ gSaveContext.save.saveInfo.checksum = temp_s2;
- if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (temp_s2 != temp_v0_2)) {
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) {
sp6E = 1;
- if (CHECK_NEWF2(gSaveContext.save.playerData.newf)) {}
+ if (CHECK_NEWF2(gSaveContext.save.saveInfo.playerData.newf)) {}
phi_s2 = false;
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
@@ -1217,9 +1216,9 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
}
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
- temp_s2 = gSaveContext.save.checksum;
- gSaveContext.save.checksum = 0;
- if (phi_s2 || CHECK_NEWF(gSaveContext.save.playerData.newf) ||
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
+ gSaveContext.save.saveInfo.checksum = 0;
+ if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) ||
(temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) {
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
@@ -1228,55 +1227,57 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
}
}
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum =
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum =
Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed?
- for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.newf); sp7A++) {
- fileSelect->newf[sp76][sp7A] = gSaveContext.save.playerData.newf[sp7A];
+ for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) {
+ fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A];
}
if (!CHECK_NEWF(fileSelect->newf[sp76])) {
- fileSelect->unk_2440C[sp76] = gSaveContext.save.playerData.deaths;
+ fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths;
- for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.playerName); sp7A++) {
- fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.playerData.playerName[sp7A];
+ for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) {
+ fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A];
}
- fileSelect->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity;
- fileSelect->health[sp76] = gSaveContext.save.playerData.health;
- fileSelect->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts;
- fileSelect->unk_24444[sp76] = gSaveContext.save.inventory.questItems;
+ fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity;
+ fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health;
+ fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts;
+ fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems;
fileSelect->unk_24458[sp76] = gSaveContext.save.time;
fileSelect->unk_24460[sp76] = gSaveContext.save.day;
fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave;
- fileSelect->rupees[sp76] = gSaveContext.save.playerData.rupees;
+ fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees;
fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4);
for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) {
- if (gSaveContext.save.inventory.items[sp7A + 24] != 0xFF) {
+ if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) {
phi_a0++;
}
}
fileSelect->maskCount[sp76] = phi_a0;
- fileSelect->heartPieceCount[sp76] = ((gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C);
+ fileSelect->heartPieceCount[sp76] =
+ ((gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C);
}
if (sp6E == 1) {
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C6818[sp64]);
} else if (sp6E == 0) { // TODO: == 0?
- temp_s2 = gSaveContext.save.checksum;
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
phi_s2_3 = 1;
} else {
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
- phi_s2_3 = gSaveContext.save.checksum;
- gSaveContext.save.checksum = 0;
+ phi_s2_3 = gSaveContext.save.saveInfo.checksum;
+ gSaveContext.save.saveInfo.checksum = 0;
sp7A = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
}
- if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (phi_s2_3 != sp7A) || (phi_s2_3 != temp_s2)) {
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) ||
+ (phi_s2_3 != temp_s2)) {
func_80185968(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]);
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
@@ -1293,15 +1294,15 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
D_801C6870[sp64]); // TODO: Needed?
} else {
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
- temp_s2 = gSaveContext.save.checksum;
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
- gSaveContext.save.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = 0;
temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
- gSaveContext.save.checksum = temp_s2;
- if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (temp_s2 != temp_v0_2)) {
+ gSaveContext.save.saveInfo.checksum = temp_s2;
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) {
sp6E = 1;
- if ((gSaveContext.save.playerData.newf[0] == 'Z') &&
- (gSaveContext.save.playerData.newf[1] == 'E')) {
+ if ((gSaveContext.save.saveInfo.playerData.newf[0] == 'Z') &&
+ (gSaveContext.save.saveInfo.playerData.newf[1] == 'E')) {
phi_s2 = false;
}
@@ -1310,9 +1311,9 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
}
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
- temp_s2 = gSaveContext.save.checksum;
- gSaveContext.save.checksum = 0;
- if (phi_s2 || CHECK_NEWF(gSaveContext.save.playerData.newf) ||
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
+ gSaveContext.save.saveInfo.checksum = 0;
+ if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) ||
(temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) {
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
@@ -1321,58 +1322,58 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
}
}
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum =
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum =
Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed?
- for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.newf); sp7A++) {
- fileSelect->newf[sp76][sp7A] = gSaveContext.save.playerData.newf[sp7A];
+ for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) {
+ fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A];
}
if (!CHECK_NEWF(fileSelect->newf[sp76])) {
- fileSelect->unk_2440C[sp76] = gSaveContext.save.playerData.deaths;
+ fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths;
- for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.playerName); sp7A++) {
+ for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) {
phi_s2 += 0; // TODO: Needed?
- fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.playerData.playerName[sp7A];
+ fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A];
}
- fileSelect->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity;
- fileSelect->health[sp76] = gSaveContext.save.playerData.health;
- fileSelect->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts;
- fileSelect->unk_24444[sp76] = gSaveContext.save.inventory.questItems;
+ fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity;
+ fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health;
+ fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts;
+ fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems;
fileSelect->unk_24458[sp76] = gSaveContext.save.time;
fileSelect->unk_24460[sp76] = gSaveContext.save.day;
fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave;
- fileSelect->rupees[sp76] = gSaveContext.save.playerData.rupees;
+ fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees;
fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4);
for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) {
- if (gSaveContext.save.inventory.items[sp7A + 24] != 0xFF) {
+ if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) {
phi_a0++;
}
}
fileSelect->maskCount[sp76] = phi_a0;
fileSelect->heartPieceCount[sp76] =
- ((gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C);
+ ((gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C);
}
if (sp6E == 1) {
func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C67F0[sp64]);
func_80146EBC(sramCtx, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1]);
} else if (!sp6E) { // TODO: == 0?
- temp_s2 = gSaveContext.save.checksum;
+ temp_s2 = gSaveContext.save.saveInfo.checksum;
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
phi_s2_3 = 1;
} else {
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
- phi_s2_3 = gSaveContext.save.checksum;
- gSaveContext.save.checksum = 0;
- // phi_s2_3 = gSaveContext.save.checksum;
+ phi_s2_3 = gSaveContext.save.saveInfo.checksum;
+ gSaveContext.save.saveInfo.checksum = 0;
+ // phi_s2_3 = gSaveContext.save.saveInfo.checksum;
sp7A = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
}
- if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (phi_s2_3 != sp7A) ||
+ if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) ||
(phi_s2_3 != temp_s2)) {
func_80185968(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
@@ -1444,32 +1445,33 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) {
if (gSaveContext.unk_3F3F) {
if (fileSelect->unk_2446A[fileSelect->unk_2448E]) {
func_80147414(sramCtx, fileSelect->unk_2448E, fileSelect->fileNum);
- fileSelect->unk_24410[fileSelect->fileNum] = gSaveContext.save.playerData.deaths;
+ fileSelect->unk_24410[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths;
- for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
- fileSelect->unk_24424[fileSelect->fileNum][i] = gSaveContext.save.playerData.playerName[i];
+ for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
+ fileSelect->unk_24424[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
}
- fileSelect->unk_24438[fileSelect->fileNum] = gSaveContext.save.playerData.healthCapacity;
- fileSelect->unk_24440[fileSelect->fileNum] = gSaveContext.save.playerData.health;
- fileSelect->unk_24456[fileSelect->fileNum] = gSaveContext.save.inventory.defenseHearts;
- fileSelect->unk_2444C[fileSelect->fileNum] = gSaveContext.save.inventory.questItems;
+ fileSelect->unk_24438[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity;
+ fileSelect->unk_24440[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health;
+ fileSelect->unk_24456[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts;
+ fileSelect->unk_2444C[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems;
fileSelect->unk_2445C[fileSelect->fileNum] = gSaveContext.save.time;
fileSelect->unk_24464[fileSelect->fileNum] = gSaveContext.save.day;
fileSelect->unk_2446A[fileSelect->fileNum] = gSaveContext.save.isOwlSave;
- fileSelect->unk_24470[fileSelect->fileNum] = gSaveContext.save.playerData.rupees;
+ fileSelect->unk_24470[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees;
// = CUR_UPG_VALUE(UPG_WALLET);
fileSelect->unk_24476[fileSelect->fileNum] =
- (gSaveContext.save.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
+ (gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
for (i = 0, maskCount = 0; i < 24; i++) {
- if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
+ if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
maskCount++;
}
}
fileSelect->unk_2447A[fileSelect->fileNum] = maskCount;
- fileSelect->unk_2447E[fileSelect->fileNum] = (gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
+ fileSelect->unk_2447E[fileSelect->fileNum] =
+ (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
}
// clear buffer
@@ -1485,33 +1487,33 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) {
// copy buffer to save context
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
- fileSelect->unk_2440C[fileSelect->fileNum] = gSaveContext.save.playerData.deaths;
+ fileSelect->unk_2440C[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths;
- for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
- fileSelect->unk_24414[fileSelect->fileNum][i] = gSaveContext.save.playerData.playerName[i];
+ for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
+ fileSelect->unk_24414[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
}
- fileSelect->healthCapacity[fileSelect->fileNum] = gSaveContext.save.playerData.healthCapacity;
- fileSelect->health[fileSelect->fileNum] = gSaveContext.save.playerData.health;
- fileSelect->unk_24454[fileSelect->fileNum] = gSaveContext.save.inventory.defenseHearts;
- fileSelect->unk_24444[fileSelect->fileNum] = gSaveContext.save.inventory.questItems;
+ fileSelect->healthCapacity[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity;
+ fileSelect->health[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health;
+ fileSelect->unk_24454[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts;
+ fileSelect->unk_24444[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems;
fileSelect->unk_24458[fileSelect->fileNum] = gSaveContext.save.time;
fileSelect->unk_24460[fileSelect->fileNum] = gSaveContext.save.day;
fileSelect->unk_24468[fileSelect->fileNum] = gSaveContext.save.isOwlSave;
- fileSelect->rupees[fileSelect->fileNum] = gSaveContext.save.playerData.rupees;
+ fileSelect->rupees[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees;
// = CUR_UPG_VALUE(UPG_WALLET);
fileSelect->unk_24474[fileSelect->fileNum] =
- (gSaveContext.save.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
+ (gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
for (i = 0, maskCount = 0; i < 24; i++) {
- if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
+ if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
maskCount++;
}
}
fileSelect->maskCount[fileSelect->fileNum] = maskCount;
fileSelect->heartPieceCount[fileSelect->fileNum] =
- (gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
+ (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
}
gSaveContext.save.time = D_801F6AF0;
@@ -1533,51 +1535,52 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) {
gSaveContext.save.cutscene = 0xFFF0;
}
- for (phi_v0 = 0; phi_v0 < ARRAY_COUNT(gSaveContext.save.playerData.playerName); phi_v0++) {
- gSaveContext.save.playerData.playerName[phi_v0] = fileSelect->unk_24414[fileSelect->unk_24480][phi_v0];
+ for (phi_v0 = 0; phi_v0 < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); phi_v0++) {
+ gSaveContext.save.saveInfo.playerData.playerName[phi_v0] =
+ fileSelect->unk_24414[fileSelect->unk_24480][phi_v0];
}
- gSaveContext.save.playerData.newf[0] = 'Z';
- gSaveContext.save.playerData.newf[1] = 'E';
- gSaveContext.save.playerData.newf[2] = 'L';
- gSaveContext.save.playerData.newf[3] = 'D';
- gSaveContext.save.playerData.newf[4] = 'A';
- gSaveContext.save.playerData.newf[5] = '3';
+ gSaveContext.save.saveInfo.playerData.newf[0] = 'Z';
+ gSaveContext.save.saveInfo.playerData.newf[1] = 'E';
+ gSaveContext.save.saveInfo.playerData.newf[2] = 'L';
+ gSaveContext.save.saveInfo.playerData.newf[3] = 'D';
+ gSaveContext.save.saveInfo.playerData.newf[4] = 'A';
+ gSaveContext.save.saveInfo.playerData.newf[5] = '3';
- gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
+ gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext.save, sizeof(Save));
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
- for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.newf); i++) {
- fileSelect->newf[fileSelect->unk_24480][i] = gSaveContext.save.playerData.newf[i];
+ for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); i++) {
+ fileSelect->newf[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.newf[i];
}
- fileSelect->unk_2440C[fileSelect->unk_24480] = gSaveContext.save.playerData.deaths;
+ fileSelect->unk_2440C[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.deaths;
- for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
- fileSelect->unk_24414[fileSelect->unk_24480][i] = gSaveContext.save.playerData.playerName[i];
+ for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
+ fileSelect->unk_24414[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
}
- fileSelect->healthCapacity[fileSelect->unk_24480] = gSaveContext.save.playerData.healthCapacity;
- fileSelect->health[fileSelect->unk_24480] = gSaveContext.save.playerData.health;
- fileSelect->unk_24454[fileSelect->unk_24480] = gSaveContext.save.inventory.defenseHearts;
- fileSelect->unk_24444[fileSelect->unk_24480] = gSaveContext.save.inventory.questItems;
+ fileSelect->healthCapacity[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.healthCapacity;
+ fileSelect->health[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.health;
+ fileSelect->unk_24454[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.defenseHearts;
+ fileSelect->unk_24444[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.questItems;
fileSelect->unk_24458[fileSelect->unk_24480] = gSaveContext.save.time;
fileSelect->unk_24460[fileSelect->unk_24480] = gSaveContext.save.day;
fileSelect->unk_24468[fileSelect->unk_24480] = gSaveContext.save.isOwlSave;
- fileSelect->rupees[fileSelect->unk_24480] = gSaveContext.save.playerData.rupees;
+ fileSelect->rupees[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.rupees;
fileSelect->unk_24474[fileSelect->unk_24480] = CUR_UPG_VALUE(UPG_WALLET);
for (i = 0, maskCount = 0; i < 24; i++) {
- if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
+ if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
maskCount++;
}
}
fileSelect->maskCount[fileSelect->unk_24480] = maskCount;
fileSelect->heartPieceCount[fileSelect->unk_24480] =
- (gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
+ (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
}
gSaveContext.save.time = D_801F6AF0;
@@ -1714,7 +1717,7 @@ void func_80147198(SramContext* sramCtx) {
sramCtx->status = 0;
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
gSaveContext.save.isOwlSave = false;
- gSaveContext.save.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = 0;
// flash read to buffer then copy to save context
func_80185968(sramCtx->saveBuf, sramCtx->curPage, sramCtx->numPages);
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, offsetof(SaveContext, fileNum));
@@ -1726,15 +1729,15 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) {
gSaveContext.save.isOwlSave = false;
- gSaveContext.save.playerData.newf[0] = '\0';
- gSaveContext.save.playerData.newf[1] = '\0';
- gSaveContext.save.playerData.newf[2] = '\0';
- gSaveContext.save.playerData.newf[3] = '\0';
- gSaveContext.save.playerData.newf[4] = '\0';
- gSaveContext.save.playerData.newf[5] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[0] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[1] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[2] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[3] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[4] = '\0';
+ gSaveContext.save.saveInfo.playerData.newf[5] = '\0';
- gSaveContext.save.checksum = 0;
- gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
+ gSaveContext.save.saveInfo.checksum = 0;
+ gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, offsetof(SaveContext, fileNum));
func_80146EBC(sramCtx, D_801C6840[fileNum * 2], D_801C6850[fileNum * 2]);
@@ -1742,12 +1745,12 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) {
gSaveContext.save.isOwlSave = true;
- gSaveContext.save.playerData.newf[0] = 'Z';
- gSaveContext.save.playerData.newf[1] = 'E';
- gSaveContext.save.playerData.newf[2] = 'L';
- gSaveContext.save.playerData.newf[3] = 'D';
- gSaveContext.save.playerData.newf[4] = 'A';
- gSaveContext.save.playerData.newf[5] = '3';
+ gSaveContext.save.saveInfo.playerData.newf[0] = 'Z';
+ gSaveContext.save.saveInfo.playerData.newf[1] = 'E';
+ gSaveContext.save.saveInfo.playerData.newf[2] = 'L';
+ gSaveContext.save.saveInfo.playerData.newf[3] = 'D';
+ gSaveContext.save.saveInfo.playerData.newf[4] = 'A';
+ gSaveContext.save.saveInfo.playerData.newf[5] = '3';
}
void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2) {