diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2023-04-18 18:54:32 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-18 18:54:32 -0400 |
| commit | 3c107cb148d784e2af4a347dc78f25b1697410be (patch) | |
| tree | b67a051ee5851deec190356461b7575507c33785 /src/code/z_sram_NES.c | |
| parent | b8af819165ea4f31f34940d59a13ef19a5aabd2f (diff) | |
Add `SaveInfo` substruct to `SaveContext` (#1191)
* SaveInfo
* fix accesses in sram_NES.c
* some more fixing
* more fixes
* format
* fix unk
* namefixer
* format
* bss
* review
* weekeventregconvert
* namefixer
* bss
Diffstat (limited to 'src/code/z_sram_NES.c')
| -rw-r--r-- | src/code/z_sram_NES.c | 489 |
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) { |
