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 | |
| 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')
74 files changed, 951 insertions, 918 deletions
diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index d120da618..ca8a3eb1a 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -511,12 +511,12 @@ u8 Inventory_DeleteEquipment(PlayState* play, s16 equipment) { } void Inventory_ChangeUpgrade(s16 upgrade, u32 value) { - u32 upgrades = gSaveContext.save.inventory.upgrades; + u32 upgrades = gSaveContext.save.saveInfo.inventory.upgrades; upgrades &= gUpgradeNegMasks[upgrade]; upgrades |= value << gUpgradeShifts[upgrade]; - gSaveContext.save.inventory.upgrades = upgrades; + gSaveContext.save.saveInfo.inventory.upgrades = upgrades; } s32 Inventory_IsMapVisible(s16 sceneId) { @@ -543,7 +543,7 @@ s32 Inventory_IsMapVisible(s16 sceneId) { } } - if (gSaveContext.save.scenesVisible[index] & gBitFlags[sceneId - (index << 5)]) { + if (gSaveContext.save.saveInfo.scenesVisible[index] & gBitFlags[sceneId - (index << 5)]) { return true; } @@ -656,23 +656,23 @@ void Inventory_SetWorldMapCloudVisibility(s16 tingleIndex) { index = 6; } - gSaveContext.save.scenesVisible[index] = - gSaveContext.save.scenesVisible[index] | gBitFlags[(s16)(*tingleMapSceneIds)[i] - (index << 5)]; + gSaveContext.save.saveInfo.scenesVisible[index] = gSaveContext.save.saveInfo.scenesVisible[index] | + gBitFlags[(s16)(*tingleMapSceneIds)[i] - (index << 5)]; i++; } if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_CLOCK_TOWN]) { - gSaveContext.save.worldMapCloudVisibility |= 3; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 3; } else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_WOODFALL]) { - gSaveContext.save.worldMapCloudVisibility |= 0x1C; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x1C; } else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_SNOWHEAD]) { - gSaveContext.save.worldMapCloudVisibility |= 0xE0; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0xE0; } else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_ROMANI_RANCH]) { - gSaveContext.save.worldMapCloudVisibility |= 0x100; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x100; } else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_GREAT_BAY]) { - gSaveContext.save.worldMapCloudVisibility |= 0x1E00; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x1E00; } else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_STONE_TOWER]) { - gSaveContext.save.worldMapCloudVisibility |= 0x6000; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x6000; } } @@ -685,34 +685,34 @@ void Inventory_SetWorldMapCloudVisibility(s16 tingleIndex) { void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) { s16 i; - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTimes[timerId]; + gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTimes[timerId]; for (i = 0; i < 8; i++) { - gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = - gSaveContext.save.playerData.playerName[i]; + gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = + gSaveContext.save.saveInfo.playerData.playerName[i]; } } void Inventory_IncrementSkullTokenCount(s16 sceneIndex) { if (sceneIndex == SCENE_KINSTA1) { // Swamp Spider House (increment high bits of skullTokenCount) - gSaveContext.save.skullTokenCount = - ((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) | - (gSaveContext.save.skullTokenCount & 0xFFFF); + gSaveContext.save.saveInfo.skullTokenCount = + ((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF); } else { // Ocean Spider House (increment low bits of skullTokenCount) - gSaveContext.save.skullTokenCount = - (((u16)gSaveContext.save.skullTokenCount + 1) & 0xFFFF) | (gSaveContext.save.skullTokenCount & 0xFFFF0000); + gSaveContext.save.saveInfo.skullTokenCount = (((u16)gSaveContext.save.saveInfo.skullTokenCount + 1) & 0xFFFF) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000); } } s16 Inventory_GetSkullTokenCount(s16 sceneIndex) { if (sceneIndex == SCENE_KINSTA1) { // Swamp Spider House - return (gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10; + return (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10; } else { // Ocean Spider House - return gSaveContext.save.skullTokenCount & 0xFFFF; + return gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF; } } @@ -722,6 +722,6 @@ void Inventory_SaveLotteryCodeGuess(PlayState* play) { lotteryCodeGuess = ((play->msgCtx.unk12054[0] & 0xF) << 8); // First Digit lotteryCodeGuess |= ((play->msgCtx.unk12054[1] & 0xF) << 4); // Second Digit lotteryCodeGuess |= (play->msgCtx.unk12054[2] & 0xF); // Third Digit - gSaveContext.save.lotteryCodeGuess = - (gSaveContext.save.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF); + gSaveContext.save.saveInfo.lotteryCodeGuess = + (gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF); } diff --git a/src/code/flg_set.c b/src/code/flg_set.c index a22b62a0e..bb25818a6 100644 --- a/src/code/flg_set.c +++ b/src/code/flg_set.c @@ -13,106 +13,106 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" static FlagSetEntry sFlagEntries[] = { - { &gSaveContext.save.weekEventReg[0], "week_event_reg[0]" }, - { &gSaveContext.save.weekEventReg[1], "week_event_reg[1]" }, - { &gSaveContext.save.weekEventReg[2], "week_event_reg[2]" }, - { &gSaveContext.save.weekEventReg[3], "week_event_reg[3]" }, - { &gSaveContext.save.weekEventReg[4], "week_event_reg[4]" }, - { &gSaveContext.save.weekEventReg[5], "week_event_reg[5]" }, - { &gSaveContext.save.weekEventReg[6], "week_event_reg[6]" }, - { &gSaveContext.save.weekEventReg[7], "week_event_reg[7]" }, - { &gSaveContext.save.weekEventReg[8], "week_event_reg[8]" }, - { &gSaveContext.save.weekEventReg[9], "week_event_reg[9]" }, - { &gSaveContext.save.weekEventReg[10], "week_event_reg[10]" }, - { &gSaveContext.save.weekEventReg[11], "week_event_reg[11]" }, - { &gSaveContext.save.weekEventReg[12], "week_event_reg[12]" }, - { &gSaveContext.save.weekEventReg[13], "week_event_reg[13]" }, - { &gSaveContext.save.weekEventReg[14], "week_event_reg[14]" }, - { &gSaveContext.save.weekEventReg[15], "week_event_reg[15]" }, - { &gSaveContext.save.weekEventReg[16], "week_event_reg[16]" }, - { &gSaveContext.save.weekEventReg[17], "week_event_reg[17]" }, - { &gSaveContext.save.weekEventReg[18], "week_event_reg[18]" }, - { &gSaveContext.save.weekEventReg[19], "week_event_reg[19]" }, - { &gSaveContext.save.weekEventReg[20], "week_event_reg[20]" }, - { &gSaveContext.save.weekEventReg[21], "week_event_reg[21]" }, - { &gSaveContext.save.weekEventReg[22], "week_event_reg[22]" }, - { &gSaveContext.save.weekEventReg[23], "week_event_reg[23]" }, - { &gSaveContext.save.weekEventReg[24], "week_event_reg[24]" }, - { &gSaveContext.save.weekEventReg[25], "week_event_reg[25]" }, - { &gSaveContext.save.weekEventReg[26], "week_event_reg[26]" }, - { &gSaveContext.save.weekEventReg[27], "week_event_reg[27]" }, - { &gSaveContext.save.weekEventReg[28], "week_event_reg[28]" }, - { &gSaveContext.save.weekEventReg[29], "week_event_reg[29]" }, - { &gSaveContext.save.weekEventReg[30], "week_event_reg[30]" }, - { &gSaveContext.save.weekEventReg[31], "week_event_reg[31]" }, - { &gSaveContext.save.weekEventReg[32], "week_event_reg[32]" }, - { &gSaveContext.save.weekEventReg[33], "week_event_reg[33]" }, - { &gSaveContext.save.weekEventReg[34], "week_event_reg[34]" }, - { &gSaveContext.save.weekEventReg[35], "week_event_reg[35]" }, - { &gSaveContext.save.weekEventReg[36], "week_event_reg[36]" }, - { &gSaveContext.save.weekEventReg[37], "week_event_reg[37]" }, - { &gSaveContext.save.weekEventReg[38], "week_event_reg[38]" }, - { &gSaveContext.save.weekEventReg[39], "week_event_reg[39]" }, - { &gSaveContext.save.weekEventReg[40], "week_event_reg[40]" }, - { &gSaveContext.save.weekEventReg[41], "week_event_reg[41]" }, - { &gSaveContext.save.weekEventReg[42], "week_event_reg[42]" }, - { &gSaveContext.save.weekEventReg[43], "week_event_reg[43]" }, - { &gSaveContext.save.weekEventReg[44], "week_event_reg[44]" }, - { &gSaveContext.save.weekEventReg[45], "week_event_reg[45]" }, - { &gSaveContext.save.weekEventReg[46], "week_event_reg[46]" }, - { &gSaveContext.save.weekEventReg[47], "week_event_reg[47]" }, - { &gSaveContext.save.weekEventReg[48], "week_event_reg[48]" }, - { &gSaveContext.save.weekEventReg[49], "week_event_reg[49]" }, - { &gSaveContext.save.weekEventReg[50], "week_event_reg[50]" }, - { &gSaveContext.save.weekEventReg[51], "week_event_reg[51]" }, - { &gSaveContext.save.weekEventReg[52], "week_event_reg[52]" }, - { &gSaveContext.save.weekEventReg[53], "week_event_reg[53]" }, - { &gSaveContext.save.weekEventReg[54], "week_event_reg[54]" }, - { &gSaveContext.save.weekEventReg[55], "week_event_reg[55]" }, - { &gSaveContext.save.weekEventReg[56], "week_event_reg[56]" }, - { &gSaveContext.save.weekEventReg[57], "week_event_reg[57]" }, - { &gSaveContext.save.weekEventReg[58], "week_event_reg[58]" }, - { &gSaveContext.save.weekEventReg[59], "week_event_reg[59]" }, - { &gSaveContext.save.weekEventReg[60], "week_event_reg[60]" }, - { &gSaveContext.save.weekEventReg[61], "week_event_reg[61]" }, - { &gSaveContext.save.weekEventReg[62], "week_event_reg[62]" }, - { &gSaveContext.save.weekEventReg[63], "week_event_reg[63]" }, - { &gSaveContext.save.weekEventReg[64], "week_event_reg[64]" }, - { &gSaveContext.save.weekEventReg[65], "week_event_reg[65]" }, - { &gSaveContext.save.weekEventReg[66], "week_event_reg[66]" }, - { &gSaveContext.save.weekEventReg[67], "week_event_reg[67]" }, - { &gSaveContext.save.weekEventReg[68], "week_event_reg[68]" }, - { &gSaveContext.save.weekEventReg[69], "week_event_reg[69]" }, - { &gSaveContext.save.weekEventReg[70], "week_event_reg[70]" }, - { &gSaveContext.save.weekEventReg[71], "week_event_reg[71]" }, - { &gSaveContext.save.weekEventReg[72], "week_event_reg[72]" }, - { &gSaveContext.save.weekEventReg[73], "week_event_reg[73]" }, - { &gSaveContext.save.weekEventReg[74], "week_event_reg[74]" }, - { &gSaveContext.save.weekEventReg[75], "week_event_reg[75]" }, - { &gSaveContext.save.weekEventReg[76], "week_event_reg[76]" }, - { &gSaveContext.save.weekEventReg[77], "week_event_reg[77]" }, - { &gSaveContext.save.weekEventReg[78], "week_event_reg[78]" }, - { &gSaveContext.save.weekEventReg[79], "week_event_reg[79]" }, - { &gSaveContext.save.weekEventReg[80], "week_event_reg[80]" }, - { &gSaveContext.save.weekEventReg[81], "week_event_reg[81]" }, - { &gSaveContext.save.weekEventReg[82], "week_event_reg[82]" }, - { &gSaveContext.save.weekEventReg[83], "week_event_reg[83]" }, - { &gSaveContext.save.weekEventReg[84], "week_event_reg[84]" }, - { &gSaveContext.save.weekEventReg[85], "week_event_reg[85]" }, - { &gSaveContext.save.weekEventReg[86], "week_event_reg[86]" }, - { &gSaveContext.save.weekEventReg[87], "week_event_reg[87]" }, - { &gSaveContext.save.weekEventReg[88], "week_event_reg[88]" }, - { &gSaveContext.save.weekEventReg[89], "week_event_reg[89]" }, - { &gSaveContext.save.weekEventReg[90], "week_event_reg[90]" }, - { &gSaveContext.save.weekEventReg[91], "week_event_reg[91]" }, - { &gSaveContext.save.weekEventReg[92], "week_event_reg[92]" }, - { &gSaveContext.save.weekEventReg[93], "week_event_reg[93]" }, - { &gSaveContext.save.weekEventReg[94], "week_event_reg[94]" }, - { &gSaveContext.save.weekEventReg[95], "week_event_reg[95]" }, - { &gSaveContext.save.weekEventReg[96], "week_event_reg[96]" }, - { &gSaveContext.save.weekEventReg[97], "week_event_reg[97]" }, - { &gSaveContext.save.weekEventReg[98], "week_event_reg[98]" }, - { &gSaveContext.save.weekEventReg[99], "week_event_reg[99]" }, + { &gSaveContext.save.saveInfo.weekEventReg[0], "week_event_reg[0]" }, + { &gSaveContext.save.saveInfo.weekEventReg[1], "week_event_reg[1]" }, + { &gSaveContext.save.saveInfo.weekEventReg[2], "week_event_reg[2]" }, + { &gSaveContext.save.saveInfo.weekEventReg[3], "week_event_reg[3]" }, + { &gSaveContext.save.saveInfo.weekEventReg[4], "week_event_reg[4]" }, + { &gSaveContext.save.saveInfo.weekEventReg[5], "week_event_reg[5]" }, + { &gSaveContext.save.saveInfo.weekEventReg[6], "week_event_reg[6]" }, + { &gSaveContext.save.saveInfo.weekEventReg[7], "week_event_reg[7]" }, + { &gSaveContext.save.saveInfo.weekEventReg[8], "week_event_reg[8]" }, + { &gSaveContext.save.saveInfo.weekEventReg[9], "week_event_reg[9]" }, + { &gSaveContext.save.saveInfo.weekEventReg[10], "week_event_reg[10]" }, + { &gSaveContext.save.saveInfo.weekEventReg[11], "week_event_reg[11]" }, + { &gSaveContext.save.saveInfo.weekEventReg[12], "week_event_reg[12]" }, + { &gSaveContext.save.saveInfo.weekEventReg[13], "week_event_reg[13]" }, + { &gSaveContext.save.saveInfo.weekEventReg[14], "week_event_reg[14]" }, + { &gSaveContext.save.saveInfo.weekEventReg[15], "week_event_reg[15]" }, + { &gSaveContext.save.saveInfo.weekEventReg[16], "week_event_reg[16]" }, + { &gSaveContext.save.saveInfo.weekEventReg[17], "week_event_reg[17]" }, + { &gSaveContext.save.saveInfo.weekEventReg[18], "week_event_reg[18]" }, + { &gSaveContext.save.saveInfo.weekEventReg[19], "week_event_reg[19]" }, + { &gSaveContext.save.saveInfo.weekEventReg[20], "week_event_reg[20]" }, + { &gSaveContext.save.saveInfo.weekEventReg[21], "week_event_reg[21]" }, + { &gSaveContext.save.saveInfo.weekEventReg[22], "week_event_reg[22]" }, + { &gSaveContext.save.saveInfo.weekEventReg[23], "week_event_reg[23]" }, + { &gSaveContext.save.saveInfo.weekEventReg[24], "week_event_reg[24]" }, + { &gSaveContext.save.saveInfo.weekEventReg[25], "week_event_reg[25]" }, + { &gSaveContext.save.saveInfo.weekEventReg[26], "week_event_reg[26]" }, + { &gSaveContext.save.saveInfo.weekEventReg[27], "week_event_reg[27]" }, + { &gSaveContext.save.saveInfo.weekEventReg[28], "week_event_reg[28]" }, + { &gSaveContext.save.saveInfo.weekEventReg[29], "week_event_reg[29]" }, + { &gSaveContext.save.saveInfo.weekEventReg[30], "week_event_reg[30]" }, + { &gSaveContext.save.saveInfo.weekEventReg[31], "week_event_reg[31]" }, + { &gSaveContext.save.saveInfo.weekEventReg[32], "week_event_reg[32]" }, + { &gSaveContext.save.saveInfo.weekEventReg[33], "week_event_reg[33]" }, + { &gSaveContext.save.saveInfo.weekEventReg[34], "week_event_reg[34]" }, + { &gSaveContext.save.saveInfo.weekEventReg[35], "week_event_reg[35]" }, + { &gSaveContext.save.saveInfo.weekEventReg[36], "week_event_reg[36]" }, + { &gSaveContext.save.saveInfo.weekEventReg[37], "week_event_reg[37]" }, + { &gSaveContext.save.saveInfo.weekEventReg[38], "week_event_reg[38]" }, + { &gSaveContext.save.saveInfo.weekEventReg[39], "week_event_reg[39]" }, + { &gSaveContext.save.saveInfo.weekEventReg[40], "week_event_reg[40]" }, + { &gSaveContext.save.saveInfo.weekEventReg[41], "week_event_reg[41]" }, + { &gSaveContext.save.saveInfo.weekEventReg[42], "week_event_reg[42]" }, + { &gSaveContext.save.saveInfo.weekEventReg[43], "week_event_reg[43]" }, + { &gSaveContext.save.saveInfo.weekEventReg[44], "week_event_reg[44]" }, + { &gSaveContext.save.saveInfo.weekEventReg[45], "week_event_reg[45]" }, + { &gSaveContext.save.saveInfo.weekEventReg[46], "week_event_reg[46]" }, + { &gSaveContext.save.saveInfo.weekEventReg[47], "week_event_reg[47]" }, + { &gSaveContext.save.saveInfo.weekEventReg[48], "week_event_reg[48]" }, + { &gSaveContext.save.saveInfo.weekEventReg[49], "week_event_reg[49]" }, + { &gSaveContext.save.saveInfo.weekEventReg[50], "week_event_reg[50]" }, + { &gSaveContext.save.saveInfo.weekEventReg[51], "week_event_reg[51]" }, + { &gSaveContext.save.saveInfo.weekEventReg[52], "week_event_reg[52]" }, + { &gSaveContext.save.saveInfo.weekEventReg[53], "week_event_reg[53]" }, + { &gSaveContext.save.saveInfo.weekEventReg[54], "week_event_reg[54]" }, + { &gSaveContext.save.saveInfo.weekEventReg[55], "week_event_reg[55]" }, + { &gSaveContext.save.saveInfo.weekEventReg[56], "week_event_reg[56]" }, + { &gSaveContext.save.saveInfo.weekEventReg[57], "week_event_reg[57]" }, + { &gSaveContext.save.saveInfo.weekEventReg[58], "week_event_reg[58]" }, + { &gSaveContext.save.saveInfo.weekEventReg[59], "week_event_reg[59]" }, + { &gSaveContext.save.saveInfo.weekEventReg[60], "week_event_reg[60]" }, + { &gSaveContext.save.saveInfo.weekEventReg[61], "week_event_reg[61]" }, + { &gSaveContext.save.saveInfo.weekEventReg[62], "week_event_reg[62]" }, + { &gSaveContext.save.saveInfo.weekEventReg[63], "week_event_reg[63]" }, + { &gSaveContext.save.saveInfo.weekEventReg[64], "week_event_reg[64]" }, + { &gSaveContext.save.saveInfo.weekEventReg[65], "week_event_reg[65]" }, + { &gSaveContext.save.saveInfo.weekEventReg[66], "week_event_reg[66]" }, + { &gSaveContext.save.saveInfo.weekEventReg[67], "week_event_reg[67]" }, + { &gSaveContext.save.saveInfo.weekEventReg[68], "week_event_reg[68]" }, + { &gSaveContext.save.saveInfo.weekEventReg[69], "week_event_reg[69]" }, + { &gSaveContext.save.saveInfo.weekEventReg[70], "week_event_reg[70]" }, + { &gSaveContext.save.saveInfo.weekEventReg[71], "week_event_reg[71]" }, + { &gSaveContext.save.saveInfo.weekEventReg[72], "week_event_reg[72]" }, + { &gSaveContext.save.saveInfo.weekEventReg[73], "week_event_reg[73]" }, + { &gSaveContext.save.saveInfo.weekEventReg[74], "week_event_reg[74]" }, + { &gSaveContext.save.saveInfo.weekEventReg[75], "week_event_reg[75]" }, + { &gSaveContext.save.saveInfo.weekEventReg[76], "week_event_reg[76]" }, + { &gSaveContext.save.saveInfo.weekEventReg[77], "week_event_reg[77]" }, + { &gSaveContext.save.saveInfo.weekEventReg[78], "week_event_reg[78]" }, + { &gSaveContext.save.saveInfo.weekEventReg[79], "week_event_reg[79]" }, + { &gSaveContext.save.saveInfo.weekEventReg[80], "week_event_reg[80]" }, + { &gSaveContext.save.saveInfo.weekEventReg[81], "week_event_reg[81]" }, + { &gSaveContext.save.saveInfo.weekEventReg[82], "week_event_reg[82]" }, + { &gSaveContext.save.saveInfo.weekEventReg[83], "week_event_reg[83]" }, + { &gSaveContext.save.saveInfo.weekEventReg[84], "week_event_reg[84]" }, + { &gSaveContext.save.saveInfo.weekEventReg[85], "week_event_reg[85]" }, + { &gSaveContext.save.saveInfo.weekEventReg[86], "week_event_reg[86]" }, + { &gSaveContext.save.saveInfo.weekEventReg[87], "week_event_reg[87]" }, + { &gSaveContext.save.saveInfo.weekEventReg[88], "week_event_reg[88]" }, + { &gSaveContext.save.saveInfo.weekEventReg[89], "week_event_reg[89]" }, + { &gSaveContext.save.saveInfo.weekEventReg[90], "week_event_reg[90]" }, + { &gSaveContext.save.saveInfo.weekEventReg[91], "week_event_reg[91]" }, + { &gSaveContext.save.saveInfo.weekEventReg[92], "week_event_reg[92]" }, + { &gSaveContext.save.saveInfo.weekEventReg[93], "week_event_reg[93]" }, + { &gSaveContext.save.saveInfo.weekEventReg[94], "week_event_reg[94]" }, + { &gSaveContext.save.saveInfo.weekEventReg[95], "week_event_reg[95]" }, + { &gSaveContext.save.saveInfo.weekEventReg[96], "week_event_reg[96]" }, + { &gSaveContext.save.saveInfo.weekEventReg[97], "week_event_reg[97]" }, + { &gSaveContext.save.saveInfo.weekEventReg[98], "week_event_reg[98]" }, + { &gSaveContext.save.saveInfo.weekEventReg[99], "week_event_reg[99]" }, { &gSaveContext.eventInf[0], "event_inf[0]" }, { &gSaveContext.eventInf[1], "event_inf[1]" }, @@ -246,8 +246,8 @@ void FlagSet_Update(GameState* gameState) { if (CHECK_BTN_ALL(input->cur.button, BTN_START)) { if (CHECK_BTN_ALL(input->press.button, BTN_B)) { s16 i; - for (i = 0; i < ARRAY_COUNT(gSaveContext.save.weekEventReg); i++) { - gSaveContext.save.weekEventReg[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg); i++) { + gSaveContext.save.saveInfo.weekEventReg[i] = 0; } for (i = 0; i < ARRAY_COUNT(gSaveContext.eventInf); i++) { gSaveContext.eventInf[i] = 0; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 08d56de69..dc32223a8 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -1479,12 +1479,13 @@ void func_800EDBE0(PlayState* play) { if (play->csCtx.sceneCsList[temp_v0_3].unk7 == 0xFE) { ActorCutscene_Start(sp2A, NULL); gSaveContext.showTitleCard = false; - } else if (!(((void)0, - gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) & + } else if (!(((void)0, gSaveContext.save.saveInfo + .weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) & (1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8)))) { // TODO: macros for this kind of weekEventReg access - gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)] = - ((void)0, gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) | + gSaveContext.save.saveInfo.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)] = + ((void)0, + gSaveContext.save.saveInfo.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) | (1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8)); ActorCutscene_Start(sp2A, NULL); gSaveContext.showTitleCard = false; diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index 830824024..1b005443d 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -45,7 +45,7 @@ u16 QuestHint_GetTatlTextId(PlayState* play) { return 0x21D; } - if (gSaveContext.save.playerData.isMagicAcquired != true) { + if (gSaveContext.save.saveInfo.playerData.isMagicAcquired != true) { return 0x21F; } diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 0c19236dc..44e8703a2 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -885,12 +885,13 @@ s16 func_800A7650(s16 dropId) { (dropId == ITEM00_ARROWS_50)) && (INV_CONTENT(ITEM_BOW) == ITEM_NONE)) || (((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) && - (gSaveContext.save.playerData.magicLevel == 0))) { + (gSaveContext.save.saveInfo.playerData.magicLevel == 0))) { return ITEM00_NO_DROP; } if (dropId == ITEM00_RECOVERY_HEART) { - if (((void)0, gSaveContext.save.playerData.healthCapacity) == ((void)0, gSaveContext.save.playerData.health)) { + if (((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity) == + ((void)0, gSaveContext.save.saveInfo.playerData.health)) { return ITEM00_RUPEE_GREEN; } } @@ -1148,27 +1149,29 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP } if (dropId == ITEM00_FLEXIBLE) { - if (gSaveContext.save.playerData.health <= 0x10) { + if (gSaveContext.save.saveInfo.playerData.health <= 0x10) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, 2); SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY); return; } - if (gSaveContext.save.playerData.health <= 0x30) { + if (gSaveContext.save.saveInfo.playerData.health <= 0x30) { params = 0x10; dropId = ITEM00_RECOVERY_HEART; dropQuantity = 3; - } else if (gSaveContext.save.playerData.health <= 0x50) { + } else if (gSaveContext.save.saveInfo.playerData.health <= 0x50) { params = 0x10; dropId = ITEM00_RECOVERY_HEART; dropQuantity = 1; - } else if ((gSaveContext.save.playerData.magicLevel != 0) && (gSaveContext.save.playerData.magic == 0)) { + } else if ((gSaveContext.save.saveInfo.playerData.magicLevel != 0) && + (gSaveContext.save.saveInfo.playerData.magic == 0)) { params = 0xD0; dropId = ITEM00_MAGIC_LARGE; dropQuantity = 1; - } else if ((gSaveContext.save.playerData.magicLevel != 0) && - ((gSaveContext.save.playerData.magicLevel >> 1) >= gSaveContext.save.playerData.magic)) { + } else if ((gSaveContext.save.saveInfo.playerData.magicLevel != 0) && + ((gSaveContext.save.saveInfo.playerData.magicLevel >> 1) >= + gSaveContext.save.saveInfo.playerData.magic)) { params = 0xD0; dropId = ITEM00_MAGIC_LARGE; dropQuantity = 1; @@ -1180,7 +1183,7 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP params = 0xB0; dropId = ITEM00_BOMBS_A; dropQuantity = 1; - } else if (gSaveContext.save.playerData.rupees < 11) { + } else if (gSaveContext.save.saveInfo.playerData.rupees < 11) { params = 0xA0; dropId = ITEM00_RUPEE_RED; dropQuantity = 1; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 4e24eb72e..d0e5e45f2 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -50,7 +50,7 @@ void GameOver_Update(PlayState* play) { } gSaveContext.unk_3DC0 = 2000; - gSaveContext.save.playerData.tatlTimer = 0; + gSaveContext.save.saveInfo.playerData.tatlTimer = 0; gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; gSaveContext.eventInf[0] = 0; @@ -79,7 +79,7 @@ void GameOver_Update(PlayState* play) { gSaveContext.respawnFlag = -6; } gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; - gSaveContext.save.playerData.health = 0x30; + gSaveContext.save.saveInfo.playerData.health = 0x30; gameOverCtx->state++; if (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU) { gSaveContext.save.playerForm = PLAYER_FORM_HUMAN; diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index dac0d8300..f873ea8ff 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -44,19 +44,19 @@ void func_800F4A10(PlayState* play) { if (pauseCtx->state == PAUSE_STATE_OPENING_0) { for (i = 0; i < REGION_MAX; i++) { - if ((gSaveContext.save.regionsVisited >> i) & 1) { + if ((gSaveContext.save.saveInfo.regionsVisited >> i) & 1) { pauseCtx->worldMapPoints[i] = true; } } } else { for (i = OWL_WARP_STONE_TOWER; i >= OWL_WARP_GREAT_BAY_COAST; i--) { - if ((gSaveContext.save.playerData.owlActivationFlags >> i) & 1) { + if ((gSaveContext.save.saveInfo.playerData.owlActivationFlags >> i) & 1) { pauseCtx->worldMapPoints[i] = true; pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = i; } } - if ((gSaveContext.save.playerData.owlActivationFlags >> 4) & 1) { + if ((gSaveContext.save.saveInfo.playerData.owlActivationFlags >> 4) & 1) { pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = 4; } } diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index 06dd1a0c7..d6f2edf2a 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -37,7 +37,7 @@ void LifeMeter_Init(PlayState* play) { interfaceCtx->healthTimer = 320; - interfaceCtx->health = gSaveContext.save.playerData.health; + interfaceCtx->health = gSaveContext.save.saveInfo.playerData.health; interfaceCtx->lifeColorChange = 0; interfaceCtx->lifeColorChangeDirection = 0; @@ -170,7 +170,7 @@ void LifeMeter_UpdateColors(PlayState* play) { s32 LifeMeter_SaveInterfaceHealth(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - gSaveContext.save.playerData.health = interfaceCtx->health; + gSaveContext.save.saveInfo.playerData.health = interfaceCtx->health; return 1; } @@ -181,8 +181,8 @@ s32 LifeMeter_IncreaseInterfaceHealth(PlayState* play) { interfaceCtx->healthTimer = 320; interfaceCtx->health += 0x10; - if (play->interfaceCtx.health >= gSaveContext.save.playerData.health) { - play->interfaceCtx.health = gSaveContext.save.playerData.health; + if (play->interfaceCtx.health >= gSaveContext.save.saveInfo.playerData.health) { + play->interfaceCtx.health = gSaveContext.save.saveInfo.playerData.health; return true; } return false; @@ -199,7 +199,7 @@ s32 LifeMeter_DecreaseInterfaceHealth(PlayState* play) { interfaceCtx->health -= 0x10; if (interfaceCtx->health <= 0) { interfaceCtx->health = 0; - play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 1)); + play->damagePlayer(play, -(((void)0, gSaveContext.save.saveInfo.playerData.health) + 1)); return true; } } @@ -220,18 +220,18 @@ void LifeMeter_Draw(PlayState* play) { GraphicsContext* gfxCtx = play->state.gfxCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; Vtx* beatingHeartVtx = interfaceCtx->beatingHeartVtx; - s32 fractionHeartCount = gSaveContext.save.playerData.health % 0x10; - s16 healthCapacity = gSaveContext.save.playerData.healthCapacity / 0x10; - s16 fullHeartCount = gSaveContext.save.playerData.health / 0x10; + s32 fractionHeartCount = gSaveContext.save.saveInfo.playerData.health % 0x10; + s16 healthCapacity = gSaveContext.save.saveInfo.playerData.healthCapacity / 0x10; + s16 fullHeartCount = gSaveContext.save.saveInfo.playerData.health / 0x10; s32 pad2; f32 lifesize = interfaceCtx->lifeSizeChange * 0.1f; u32 curCombineModeSet = 0; TexturePtr temp = NULL; - s32 ddCount = gSaveContext.save.inventory.defenseHearts - 1; + s32 ddCount = gSaveContext.save.saveInfo.inventory.defenseHearts - 1; OPEN_DISPS(gfxCtx); - if ((gSaveContext.save.playerData.health % 0x10) == 0) { + if ((gSaveContext.save.saveInfo.playerData.health % 0x10) == 0) { fullHeartCount--; } @@ -422,17 +422,18 @@ void LifeMeter_UpdateSizeAndBeep(PlayState* play) { u32 LifeMeter_IsCritical(void) { s16 criticalThreshold; - if (gSaveContext.save.playerData.healthCapacity <= 0x50) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0x50) { criticalThreshold = 0x10; - } else if (gSaveContext.save.playerData.healthCapacity <= 0xA0) { + } else if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0xA0) { criticalThreshold = 0x18; - } else if (gSaveContext.save.playerData.healthCapacity <= 0xF0) { + } else if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0xF0) { criticalThreshold = 0x20; } else { criticalThreshold = 0x2C; } - if ((criticalThreshold >= gSaveContext.save.playerData.health) && (gSaveContext.save.playerData.health > 0)) { + if ((criticalThreshold >= gSaveContext.save.saveInfo.playerData.health) && + (gSaveContext.save.saveInfo.playerData.health > 0)) { return true; } return false; diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 381387c5e..912926cbb 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -156,7 +156,8 @@ void Map_InitRoomData(PlayState* play, s16 room) { if (room >= 0) { if (Map_IsInDungeonOrBossArea(play)) { - gSaveContext.save.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].rooms |= gBitFlags[room]; + gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].rooms |= + gBitFlags[room]; interfaceCtx->mapRoomNum = room; interfaceCtx->dungeonOrBossAreaMapIndex = mapIndex; } @@ -243,7 +244,7 @@ void Map_Update(PlayState* play) { if (Map_IsInDungeonArea(play)) { floor = func_80109124(player->actor.world.pos.y); if (floor != -1) { - gSaveContext.save.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].unk_14 |= + gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].unk_14 |= gBitFlags[FLOOR_INDEX_MAX - floor]; R_REVERSE_FLOOR_INDEX = FLOOR_INDEX_MAX - floor; if (interfaceCtx->mapRoomNum != sLastRoomNum) { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index be5cc01bc..1072587af 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1006,12 +1006,12 @@ void Interface_NewDay(PlayState* play, s32 day) { (u32)SEGMENT_ROM_START(week_static) + i * 0x510, 0x510); // i is used to store sceneId - for (i = 0; i < ARRAY_COUNT(gSaveContext.save.permanentSceneFlags); 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; + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.permanentSceneFlags); i++) { + 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; } } @@ -1880,7 +1880,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } else if (CHECK_EVENTINF(EVENTINF_34)) { // Deku playground minigame if (player->stateFlags3 & PLAYER_STATE3_1000000) { - if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_NUT] == ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else { @@ -1908,7 +1908,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } else if (player->stateFlags3 & PLAYER_STATE3_1000000) { // Nuts on B (from flying as Deku Link) - if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_NUT] == ITEM_NUT) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); @@ -1925,7 +1925,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } - } else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && + } else if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { // Nuts on B (as Deku Link) BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; @@ -2324,7 +2324,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (play->unk_1887C >= 2) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { + } else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } else { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); @@ -2382,7 +2382,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (play->unk_1887C >= 2) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { + } else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } else { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); @@ -2627,14 +2627,14 @@ u8 Item_Give(PlayState* play, u8 item) { INCREMENT_QUEST_HEART_PIECE_COUNT; if (EQ_MAX_QUEST_HEART_PIECE_COUNT) { RESET_HEART_PIECE_COUNT; - gSaveContext.save.playerData.healthCapacity += 0x10; - gSaveContext.save.playerData.health += 0x10; + gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10; + gSaveContext.save.saveInfo.playerData.health += 0x10; } return ITEM_NONE; } else if (item == ITEM_HEART_CONTAINER) { - gSaveContext.save.playerData.healthCapacity += 0x10; - gSaveContext.save.playerData.health += 0x10; + gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10; + gSaveContext.save.saveInfo.playerData.health += 0x10; return ITEM_NONE; } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { @@ -2646,7 +2646,7 @@ u8 Item_Give(PlayState* play, u8 item) { CUR_FORM_EQUIP(EQUIP_SLOT_B) = item; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); if (item == ITEM_SWORD_RAZOR) { - gSaveContext.save.playerData.swordHealth = 100; + gSaveContext.save.saveInfo.playerData.swordHealth = 100; } return ITEM_NONE; @@ -2824,7 +2824,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) { - if (gSaveContext.save.inventory.items[SLOT_BOMB] != ITEM_BOMB) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOMB] != ITEM_BOMB) { INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; return ITEM_NONE; @@ -2847,7 +2847,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { - if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20]; @@ -2917,8 +2917,8 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(item); for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; + if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_POTION_RED; return ITEM_NONE; } } @@ -2929,8 +2929,8 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(item); for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot + i] = item; + if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot + i] = item; return ITEM_NONE; } } @@ -2940,8 +2940,8 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(item); for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot + i] = item; + if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot + i] = item; return ITEM_NONE; } } @@ -2971,7 +2971,7 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(item); for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { + if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_BOTTLE) { if (item == ITEM_HOT_SPRING_WATER) { Interface_StartBottleTimer(60, i); } @@ -2990,14 +2990,14 @@ u8 Item_Give(PlayState* play, u8 item) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } - gSaveContext.save.inventory.items[slot + i] = item; + gSaveContext.save.saveInfo.inventory.items[slot + i] = item; return ITEM_NONE; } } } else { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot + i] = item; + if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot + i] = item; return ITEM_NONE; } } @@ -3018,7 +3018,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } - temp = gSaveContext.save.inventory.items[slot]; + temp = gSaveContext.save.saveInfo.inventory.items[slot]; INV_CONTENT(item) = item; return temp; } @@ -3159,13 +3159,13 @@ u8 Item_CheckObtainabilityImpl(u8 item) { bottleSlot = SLOT(item); for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { + if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { return ITEM_NONE; } } } else { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_NONE) { return ITEM_NONE; } } @@ -3174,7 +3174,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { return ITEM_NONE; } - return gSaveContext.save.inventory.items[slot]; + return gSaveContext.save.saveInfo.inventory.items[slot]; } u8 Item_CheckObtainability(u8 item) { @@ -3184,7 +3184,7 @@ u8 Item_CheckObtainability(u8 item) { void Inventory_DeleteItem(s16 item, s16 slot) { s16 btn; - gSaveContext.save.inventory.items[slot] = ITEM_NONE; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_NONE; for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { @@ -3209,8 +3209,8 @@ s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem) { u8 i; for (i = 0; i < 24; i++) { - if (gSaveContext.save.inventory.items[i] == oldItem) { - gSaveContext.save.inventory.items[i] = newItem; + if (gSaveContext.save.saveInfo.inventory.items[i] == oldItem) { + gSaveContext.save.saveInfo.inventory.items[i] = newItem; for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) { @@ -3259,7 +3259,7 @@ s32 Inventory_HasEmptyBottle(void) { s32 slot; for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { - if (gSaveContext.save.inventory.items[slot] == ITEM_BOTTLE) { + if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_BOTTLE) { return true; } } @@ -3270,7 +3270,7 @@ s32 Inventory_HasItemInBottle(u8 item) { s32 slot; for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { - if (gSaveContext.save.inventory.items[slot] == item) { + if (gSaveContext.save.saveInfo.inventory.items[slot] == item) { return true; } } @@ -3278,7 +3278,7 @@ s32 Inventory_HasItemInBottle(u8 item) { } void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn) { - gSaveContext.save.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item; + gSaveContext.save.saveInfo.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item; SET_CUR_FORM_BTN_ITEM(btn, item); Interface_LoadItemIconImpl(play, btn); @@ -3297,7 +3297,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) { u8 i; for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { + if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_FAIRY) { for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE); @@ -3307,7 +3307,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) { break; } } - gSaveContext.save.inventory.items[bottleSlot + i] = ITEM_BOTTLE; + gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] = ITEM_BOTTLE; return true; } } @@ -3321,7 +3321,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) { void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item) { s16 btn; - gSaveContext.save.inventory.items[slot] = item; + gSaveContext.save.saveInfo.inventory.items[slot] = item; for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_SLOT(btn) == slot) { @@ -3355,18 +3355,19 @@ void func_80115428(InterfaceContext* interfaceCtx, u16 doAction, s16 loadOffset) s32 Health_ChangeBy(PlayState* play, s16 healthChange) { if (healthChange > 0) { play_sound(NA_SE_SY_HP_RECOVER); - } else if (gSaveContext.save.playerData.doubleDefense && (healthChange < 0)) { + } else if (gSaveContext.save.saveInfo.playerData.doubleDefense && (healthChange < 0)) { healthChange >>= 1; } - gSaveContext.save.playerData.health += healthChange; + gSaveContext.save.saveInfo.playerData.health += healthChange; - if (((void)0, gSaveContext.save.playerData.health) > ((void)0, gSaveContext.save.playerData.healthCapacity)) { - gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; + if (((void)0, gSaveContext.save.saveInfo.playerData.health) > + ((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity)) { + gSaveContext.save.saveInfo.playerData.health = gSaveContext.save.saveInfo.playerData.healthCapacity; } - if (gSaveContext.save.playerData.health <= 0) { - gSaveContext.save.playerData.health = 0; + if (gSaveContext.save.saveInfo.playerData.health <= 0) { + gSaveContext.save.saveInfo.playerData.health = 0; return false; } else { return true; @@ -3374,7 +3375,7 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) { } void Health_GiveHearts(s16 hearts) { - gSaveContext.save.playerData.healthCapacity += hearts * 0x10; + gSaveContext.save.saveInfo.playerData.healthCapacity += hearts * 0x10; } void Rupees_ChangeBy(s16 rupeeChange) { @@ -3441,7 +3442,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } void Magic_Add(PlayState* play, s16 magicToAdd) { - if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.magicCapacity)) { + if (((void)0, gSaveContext.save.saveInfo.playerData.magic) < ((void)0, gSaveContext.magicCapacity)) { gSaveContext.magicToAdd += magicToAdd; gSaveContext.isMagicRequested = true; } @@ -3465,12 +3466,12 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { InterfaceContext* interfaceCtx = &play->interfaceCtx; // Magic is not acquired yet - if (!gSaveContext.save.playerData.isMagicAcquired) { + if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) { return false; } // Not enough magic available to consume - if ((gSaveContext.save.playerData.magic - magicToConsume) < 0) { + if ((gSaveContext.save.saveInfo.playerData.magic - magicToConsume) < 0) { if (gSaveContext.magicCapacity != 0) { play_sound(NA_SE_SY_ERROR); } @@ -3518,7 +3519,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { case MAGIC_CONSUME_LENS: if (gSaveContext.magicState == MAGIC_STATE_IDLE) { - if (gSaveContext.save.playerData.magic != 0) { + if (gSaveContext.save.saveInfo.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 80; gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS; return true; @@ -3549,7 +3550,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { case MAGIC_CONSUME_GORON_ZORA: // Goron spiked rolling or Zora electric barrier - if (gSaveContext.save.playerData.magic != 0) { + if (gSaveContext.save.saveInfo.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 10; gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA_SETUP; return true; @@ -3560,7 +3561,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { case MAGIC_CONSUME_GIANTS_MASK: // Wearing Giant's Mask if (gSaveContext.magicState == MAGIC_STATE_IDLE) { - if (gSaveContext.save.playerData.magic != 0) { + if (gSaveContext.save.saveInfo.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANTS_MASK; gSaveContext.magicState = MAGIC_STATE_CONSUME_GIANTS_MASK; return true; @@ -3584,7 +3585,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { magicToConsume = 0; } - gSaveContext.save.playerData.magic -= magicToConsume; + gSaveContext.save.saveInfo.playerData.magic -= magicToConsume; return true; } else { play_sound(NA_SE_SY_ERROR); @@ -3597,11 +3598,11 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { void Magic_UpdateAddRequest(void) { if (gSaveContext.isMagicRequested) { - gSaveContext.save.playerData.magic += 4; + gSaveContext.save.saveInfo.playerData.magic += 4; play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) { - gSaveContext.save.playerData.magic = gSaveContext.magicCapacity; + if (((void)0, gSaveContext.save.saveInfo.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) { + gSaveContext.save.saveInfo.playerData.magic = gSaveContext.magicCapacity; gSaveContext.magicToAdd = 0; gSaveContext.isMagicRequested = false; } else { @@ -3677,7 +3678,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_STEP_CAPACITY: // Step magicCapacity to the capacity determined by magicLevel // This changes the width of the magic meter drawn - magicCapacityTarget = gSaveContext.save.playerData.magicLevel * MAGIC_NORMAL_METER; + magicCapacityTarget = gSaveContext.save.saveInfo.playerData.magicLevel * MAGIC_NORMAL_METER; if (gSaveContext.magicCapacity != magicCapacityTarget) { if (gSaveContext.magicCapacity < magicCapacityTarget) { gSaveContext.magicCapacity += 0x10; @@ -3699,14 +3700,14 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_FILL: // Add magic until magicFillTarget is reached - gSaveContext.save.playerData.magic += 0x10; + gSaveContext.save.saveInfo.playerData.magic += 0x10; if ((gSaveContext.gameMode == GAMEMODE_NORMAL) && (gSaveContext.sceneLayer < 4)) { play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); } - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicFillTarget)) { - gSaveContext.save.playerData.magic = gSaveContext.magicFillTarget; + if (((void)0, gSaveContext.save.saveInfo.playerData.magic) >= ((void)0, gSaveContext.magicFillTarget)) { + gSaveContext.save.saveInfo.playerData.magic = gSaveContext.magicFillTarget; gSaveContext.magicState = MAGIC_STATE_IDLE; } break; @@ -3720,10 +3721,10 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME: // Consume magic until target is reached or no more magic is available if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { - gSaveContext.save.playerData.magic = - ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); - if (gSaveContext.save.playerData.magic <= 0) { - gSaveContext.save.playerData.magic = 0; + gSaveContext.save.saveInfo.playerData.magic = + ((void)0, gSaveContext.save.saveInfo.playerData.magic) - ((void)0, gSaveContext.magicToConsume); + if (gSaveContext.save.saveInfo.playerData.magic <= 0) { + gSaveContext.save.saveInfo.playerData.magic = 0; } gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; @@ -3749,7 +3750,7 @@ void Magic_Update(PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { - if ((gSaveContext.save.playerData.magic == 0) || + if ((gSaveContext.save.saveInfo.playerData.magic == 0) || ((Player_GetEnvironmentalHazard(play) >= PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) && (Player_GetEnvironmentalHazard(play) <= PLAYER_ENV_HAZARD_UNDERWATER_FREE)) || ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && @@ -3767,7 +3768,7 @@ void Magic_Update(PlayState* play) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { - gSaveContext.save.playerData.magic--; + gSaveContext.save.saveInfo.playerData.magic--; } interfaceCtx->magicConsumptionTimer = 80; } @@ -3779,10 +3780,10 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME_GORON_ZORA_SETUP: if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { - gSaveContext.save.playerData.magic -= 2; + gSaveContext.save.saveInfo.playerData.magic -= 2; } - if (gSaveContext.save.playerData.magic <= 0) { - gSaveContext.save.playerData.magic = 0; + if (gSaveContext.save.saveInfo.playerData.magic <= 0) { + gSaveContext.save.saveInfo.playerData.magic = 0; } gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA; // fallthrough @@ -3794,10 +3795,10 @@ void Magic_Update(PlayState* play) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { - gSaveContext.save.playerData.magic--; + gSaveContext.save.saveInfo.playerData.magic--; } - if (gSaveContext.save.playerData.magic <= 0) { - gSaveContext.save.playerData.magic = 0; + if (gSaveContext.save.saveInfo.playerData.magic <= 0) { + gSaveContext.save.saveInfo.playerData.magic = 0; } interfaceCtx->magicConsumptionTimer = 10; } @@ -3816,10 +3817,10 @@ void Magic_Update(PlayState* play) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) { - gSaveContext.save.playerData.magic--; + gSaveContext.save.saveInfo.playerData.magic--; } - if (gSaveContext.save.playerData.magic <= 0) { - gSaveContext.save.playerData.magic = 0; + if (gSaveContext.save.saveInfo.playerData.magic <= 0) { + gSaveContext.save.saveInfo.playerData.magic = 0; } interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANTS_MASK; } @@ -3842,8 +3843,8 @@ void Magic_DrawMeter(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - if (gSaveContext.save.playerData.magicLevel != 0) { - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + if (gSaveContext.save.saveInfo.playerData.magicLevel != 0) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) { magicBarY = 42; // two rows of hearts } else { magicBarY = 34; // one row of hearts @@ -3876,8 +3877,8 @@ void Magic_DrawMeter(PlayState* play) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, - (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + (((void)0, gSaveContext.save.saveInfo.playerData.magic) + 26) << 2, + (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); // Fill the rest of the meter with the normal magic color gDPPipeSync(OVERLAY_DISP++); @@ -3891,7 +3892,8 @@ void Magic_DrawMeter(PlayState* play) { gSPTextureRectangle( OVERLAY_DISP++, 104, (magicBarY + 3) << 2, - ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) << 2, + ((((void)0, gSaveContext.save.saveInfo.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) + << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { // Fill the whole meter with the normal magic color @@ -3906,8 +3908,8 @@ void Magic_DrawMeter(PlayState* play) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, - (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + (((void)0, gSaveContext.save.saveInfo.playerData.magic) + 26) << 2, + (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -5683,7 +5685,7 @@ void Interface_DrawTimers(PlayState* play) { if (interfaceCtx->magicAlpha != 255) { gSaveContext.timerY[sTimerId] = 22; - } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + } else if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[sTimerId] = 54; } else { gSaveContext.timerY[sTimerId] = 46; @@ -5727,7 +5729,7 @@ void Interface_DrawTimers(PlayState* play) { j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer); gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; - j = (gSaveContext.save.playerData.healthCapacity > 0xA0) + j = (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / sTimerStateTimer) : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / sTimerStateTimer); gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; @@ -5741,7 +5743,7 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerY[sTimerId] = R_MOON_CRASH_TIMER_Y; } else { gSaveContext.timerX[sTimerId] = 26; - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[sTimerId] = 54; } else { gSaveContext.timerY[sTimerId] = 46; @@ -5781,7 +5783,8 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_ENV_HAZARD_START: - gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1); + gSaveContext.timerCurTimes[sTimerId] = + SECONDS_TO_TIMER(gSaveContext.save.saveInfo.playerData.health >> 1); gSaveContext.timerDirections[sTimerId] = TIMER_COUNT_DOWN; gSaveContext.timerTimeLimits[sTimerId] = gSaveContext.timerCurTimes[sTimerId]; sTimerStateTimer = 20; @@ -5889,8 +5892,8 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0); gSaveContext.timerStates[sTimerId] = TIMER_STATE_STOP; if (sEnvTimerActive) { - gSaveContext.save.playerData.health = 0; - play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 2)); + gSaveContext.save.saveInfo.playerData.health = 0; + play->damagePlayer(play, -(((void)0, gSaveContext.save.saveInfo.playerData.health) + 2)); } sEnvTimerActive = false; } @@ -5958,7 +5961,8 @@ void Interface_DrawTimers(PlayState* play) { } } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) { if ((((void)0, gSaveContext.timerCurTimes[sTimerId]) > - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) && + (gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] - + SECONDS_TO_TIMER(9))) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); sTimerBeepSfxSeconds = sTimerDigits[4]; @@ -5996,10 +6000,10 @@ void Interface_DrawTimers(PlayState* play) { } } else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) { if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >= - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { + gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >= - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - + (gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { @@ -6107,7 +6111,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { // Time has passed, and the time limit has been exceeded. gSaveContext.bottleTimerCurTimes[i] = SECONDS_TO_TIMER(0); - if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { + if (gSaveContext.save.saveInfo.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(play, 0xFA, NULL); } @@ -6166,7 +6170,7 @@ void Interface_DrawMinigameIcons(PlayState* play) { width = 24; height = 16; rectX = 20; - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) { rectY = 75; // two rows of hearts } else { rectY = 67; // one row of hearts @@ -6210,7 +6214,7 @@ void Interface_DrawMinigameIcons(PlayState* play) { if (play->sceneId == SCENE_30GYOSON) { rectX += 20; - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) { rectY = 87; // two rows of hearts } else { rectY = 79; // one row of hearts @@ -6465,7 +6469,7 @@ void Interface_Draw(PlayState* play) { PRIMITIVE, 0); counterDigits[0] = counterDigits[1] = 0; - counterDigits[2] = gSaveContext.save.playerData.rupees; + counterDigits[2] = gSaveContext.save.saveInfo.playerData.rupees; if ((counterDigits[2] > 9999) || (counterDigits[2] < 0)) { counterDigits[2] &= 0xDDD; @@ -6498,9 +6502,9 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.save.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) { + if (gSaveContext.save.saveInfo.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); - } else if (gSaveContext.save.playerData.rupees != 0) { + } else if (gSaveContext.save.saveInfo.playerData.rupees != 0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); @@ -6851,14 +6855,15 @@ void Interface_Update(PlayState* play) { // Update health if (gSaveContext.healthAccumulator != 0) { gSaveContext.healthAccumulator -= 4; - gSaveContext.save.playerData.health += 4; + gSaveContext.save.saveInfo.playerData.health += 4; - if ((gSaveContext.save.playerData.health & 0xF) < 4) { + if ((gSaveContext.save.saveInfo.playerData.health & 0xF) < 4) { play_sound(NA_SE_SY_HP_RECOVER); } - if (((void)0, gSaveContext.save.playerData.health) >= ((void)0, gSaveContext.save.playerData.healthCapacity)) { - gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; + if (((void)0, gSaveContext.save.saveInfo.playerData.health) >= + ((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity)) { + gSaveContext.save.saveInfo.playerData.health = gSaveContext.save.saveInfo.playerData.healthCapacity; gSaveContext.healthAccumulator = 0; } } @@ -6883,26 +6888,26 @@ void Interface_Update(PlayState* play) { // Update rupees if (gSaveContext.rupeeAccumulator != 0) { if (gSaveContext.rupeeAccumulator > 0) { - if (gSaveContext.save.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { + if (gSaveContext.save.saveInfo.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { gSaveContext.rupeeAccumulator--; - gSaveContext.save.playerData.rupees++; + gSaveContext.save.saveInfo.playerData.rupees++; play_sound(NA_SE_SY_RUPY_COUNT); } else { // Max rupees - gSaveContext.save.playerData.rupees = CUR_CAPACITY(UPG_WALLET); + gSaveContext.save.saveInfo.playerData.rupees = CUR_CAPACITY(UPG_WALLET); gSaveContext.rupeeAccumulator = 0; } - } else if (gSaveContext.save.playerData.rupees != 0) { + } else if (gSaveContext.save.saveInfo.playerData.rupees != 0) { if (gSaveContext.rupeeAccumulator <= -50) { gSaveContext.rupeeAccumulator += 10; - gSaveContext.save.playerData.rupees -= 10; - if (gSaveContext.save.playerData.rupees < 0) { - gSaveContext.save.playerData.rupees = 0; + gSaveContext.save.saveInfo.playerData.rupees -= 10; + if (gSaveContext.save.saveInfo.playerData.rupees < 0) { + gSaveContext.save.saveInfo.playerData.rupees = 0; } play_sound(NA_SE_SY_RUPY_COUNT); } else { gSaveContext.rupeeAccumulator++; - gSaveContext.save.playerData.rupees--; + gSaveContext.save.saveInfo.playerData.rupees--; play_sound(NA_SE_SY_RUPY_COUNT); } } else { @@ -7035,29 +7040,31 @@ void Interface_Update(PlayState* play) { if (!(player->stateFlags1 & PLAYER_STATE1_200)) { if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_DOUBLE_METER) { // Upgrade to double magic - if (!gSaveContext.save.playerData.isMagicAcquired) { - gSaveContext.save.playerData.isMagicAcquired = true; + if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) { + gSaveContext.save.saveInfo.playerData.isMagicAcquired = true; } - gSaveContext.save.playerData.isDoubleMagicAcquired = true; - gSaveContext.save.playerData.magic = MAGIC_DOUBLE_METER; - gSaveContext.save.playerData.magicLevel = 0; + gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired = true; + gSaveContext.save.saveInfo.playerData.magic = MAGIC_DOUBLE_METER; + gSaveContext.save.saveInfo.playerData.magicLevel = 0; R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION; } else if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_NORMAL_METER) { // Upgrade to normal magic - if (!gSaveContext.save.playerData.isMagicAcquired) { - gSaveContext.save.playerData.isMagicAcquired = true; + if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) { + gSaveContext.save.saveInfo.playerData.isMagicAcquired = true; } - gSaveContext.save.playerData.isDoubleMagicAcquired = false; - gSaveContext.save.playerData.magic = MAGIC_NORMAL_METER; - gSaveContext.save.playerData.magicLevel = 0; + gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired = false; + gSaveContext.save.saveInfo.playerData.magic = MAGIC_NORMAL_METER; + gSaveContext.save.saveInfo.playerData.magicLevel = 0; R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION; } - if ((gSaveContext.save.playerData.isMagicAcquired) && (gSaveContext.save.playerData.magicLevel == 0)) { + if ((gSaveContext.save.saveInfo.playerData.isMagicAcquired) && + (gSaveContext.save.saveInfo.playerData.magicLevel == 0)) { // Prepare to step `magicCapacity` to full capacity - gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1; - gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic; - gSaveContext.save.playerData.magic = 0; + gSaveContext.save.saveInfo.playerData.magicLevel = + gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1; + gSaveContext.magicFillTarget = gSaveContext.save.saveInfo.playerData.magic; + gSaveContext.save.saveInfo.playerData.magic = 0; gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY; BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT; } @@ -7071,7 +7078,7 @@ void Interface_Update(PlayState* play) { if ((sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { - if ((gSaveContext.save.playerData.health >> 1) != 0) { + if ((gSaveContext.save.saveInfo.playerData.health >> 1) != 0) { gSaveContext.timerStates[TIMER_ID_ENV_HAZARD] = TIMER_STATE_ENV_HAZARD_START; gSaveContext.timerX[TIMER_ID_ENV_HAZARD] = 115; gSaveContext.timerY[TIMER_ID_ENV_HAZARD] = 80; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 1fa3ed54a..fc47c9bf7 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -390,7 +390,7 @@ void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd) { } // Increase time speed during first cycle - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) { + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) { play->envCtx.sceneTimeSpeed = 5; } @@ -519,8 +519,8 @@ void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd) { } if (i < REGION_MAX) { - gSaveContext.save.regionsVisited = - (gBitFlags[i] | gSaveContext.save.regionsVisited) | gSaveContext.save.regionsVisited; + gSaveContext.save.saveInfo.regionsVisited = + (gBitFlags[i] | gSaveContext.save.saveInfo.regionsVisited) | gSaveContext.save.saveInfo.regionsVisited; } } diff --git a/src/code/z_shrink_window.c b/src/code/z_shrink_window.c index 21d8bde40..c4084a18c 100644 --- a/src/code/z_shrink_window.c +++ b/src/code/z_shrink_window.c @@ -3,6 +3,7 @@ * Description: Draws black top/bottom/side borders on the viewing window (e.g. Z-targeting, talking to NPC) */ +#include "prevent_bss_reordering.h" #include "global.h" #include "z64shrink_window.h" diff --git a/src/code/z_snap.c b/src/code/z_snap.c index e9663b02f..9361cc1e0 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -18,8 +18,8 @@ s32 Snap_RecordPictographedActors(PlayState* play) { s32 seen; s32 validCount = 0; - gSaveContext.save.pictoFlags0 = 0; - gSaveContext.save.pictoFlags1 = 0; + gSaveContext.save.saveInfo.pictoFlags0 = 0; + gSaveContext.save.saveInfo.pictoFlags1 = 0; if (play->sceneId == SCENE_20SICHITAI) { Snap_SetFlag(PICTO_VALID_IN_SWAMP); @@ -91,20 +91,20 @@ s32 Snap_RecordPictographedActors(PlayState* play) { // Only used in this file void Snap_SetFlag(s32 flag) { if (flag < 0x20) { - gSaveContext.save.pictoFlags0 |= (1 << flag); + gSaveContext.save.saveInfo.pictoFlags0 |= (1 << flag); } else { flag &= 0x1F; - gSaveContext.save.pictoFlags1 |= (1 << flag); + gSaveContext.save.saveInfo.pictoFlags1 |= (1 << flag); } } // Unused void Snap_UnsetFlag(s32 flag) { if (flag < 0x20) { - gSaveContext.save.pictoFlags0 &= ~(1 << flag); + gSaveContext.save.saveInfo.pictoFlags0 &= ~(1 << flag); } else { flag &= 0x1F; - gSaveContext.save.pictoFlags1 &= ~(1 << flag); + gSaveContext.save.saveInfo.pictoFlags1 &= ~(1 << flag); } } @@ -112,10 +112,10 @@ u32 Snap_CheckFlag(s32 flag) { SaveContext* saveCtx = &gSaveContext; if (flag < 0x20) { - return saveCtx->save.pictoFlags0 & (1 << flag); + return saveCtx->save.saveInfo.pictoFlags0 & (1 << flag); } else { flag &= 0x1F; - return saveCtx->save.pictoFlags1 & (1 << flag); + return saveCtx->save.saveInfo.pictoFlags1 & (1 << flag); } } 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) { diff --git a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c index dfb22deee..1550711e1 100644 --- a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c +++ b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c @@ -187,7 +187,7 @@ void BgKin2Fence_HandleMaskCode(BgKin2Fence* this, PlayState* play) { if (this->collider.base.acFlags & AC_HIT) { hitMask = BgKin2Fence_CheckHitMask(this); if (hitMask >= 0) { - nextMask = (s8)gSaveContext.save.spiderHouseMaskOrder[this->masksHit]; + nextMask = (s8)gSaveContext.save.saveInfo.spiderHouseMaskOrder[this->masksHit]; if (hitMask == nextMask) { play_sound(NA_SE_SY_TRE_BOX_APPEAR); this->masksHit += 1; diff --git a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c index 56c02526b..f1759b7fb 100644 --- a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c +++ b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c @@ -83,7 +83,7 @@ void DmChar02_PlaySfxForCutscenes(DmChar02* this, PlayState* play) { void DmChar02_Init(Actor* thisx, PlayState* play) { DmChar02* this = THIS; - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->animIndex = DMCHAR02_ANIM_HIT_GROUND; this->actor.targetArrowOffset = 3000.0f; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f); diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 83bdfe71a..f8210a9de 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1052,7 +1052,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) { R_MOON_CRASH_TIMER_X = 115; } - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { sCylinderInit.base.colType = COLTYPE_WOOD; this->actionFunc = DmStk_ClockTower_StartIntroCutsceneVersion1; } else { @@ -1402,7 +1402,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) { case 22: this->animIndex = SK_ANIM_PLAY_OCARINA_WHILE_FLOATING; - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->handType = SK_HAND_TYPE_HOLDING_OCARINA; } break; @@ -1414,7 +1414,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) { case 24: this->animIndex = SK_ANIM_CALL_DOWN_MOON_START; - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->handType = SK_HAND_TYPE_HOLDING_OCARINA; } break; @@ -1425,14 +1425,14 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) { case 26: this->animIndex = SK_ANIM_SMACK_FAIRY_START; - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->handType = SK_HAND_TYPE_HOLDING_OCARINA; } break; case 27: this->animIndex = SK_ANIM_HIT_BY_BUBBLE; - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->handType = SK_HAND_TYPE_HOLDING_OCARINA; } break; diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 8a9d26a4d..a0eefb83a 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -345,7 +345,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) { if (this->unk_166 != 0) { Flags_SetSwitch(play, DOORSHUTTER_GET_7F(&this->actor)); if (this->doorType != 5) { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--; + gSaveContext.save.saveInfo.inventory.dungeonKeys[gSaveContext.mapIndex]--; Actor_PlaySfx(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK); } else { Actor_PlaySfx(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK_B); @@ -368,7 +368,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) { } if (this->doorType == 6) { - if (gSaveContext.save.playerData.healthCapacity < (DOORSHUTTER_GET_1F(&this->actor) * 0x10)) { + if (gSaveContext.save.saveInfo.playerData.healthCapacity < (DOORSHUTTER_GET_1F(&this->actor) * 0x10)) { player->doorType = PLAYER_DOORTYPE_TALKING; this->actor.textId = 0x14FC; } diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 01df27715..d942903a1 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -554,28 +554,28 @@ void func_808B9CE8(DoorWarp1* this, PlayState* play) { switch (play->sceneId) { case SCENE_MITURIN_BS: - gSaveContext.save.unk_ECC[0] = - (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFFFF00) | (((u8)gSaveContext.save.unk_ECC[1]) & 0xFF); + gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFFFFFF00) | + (((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF); break; case SCENE_HAKUGIN_BS: - gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFF00FF) | - ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 8); + gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFFFF00FF) | + ((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 8); break; case SCENE_INISIE_BS: - gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFF00FFFF) | - ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x10); + gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFF00FFFF) | + ((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 0x10); break; case SCENE_SEA_BS: - gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0x00FFFFFF) | - ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x18); + gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0x00FFFFFF) | + ((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 0x18); break; } - gSaveContext.save.unk_ECC[1] = - (gSaveContext.save.unk_ECC[1] & 0xFFFFFF00) | ((((u8)gSaveContext.save.unk_ECC[1]) + 1) & 0xFF); + gSaveContext.save.saveInfo.unk_EA8[1] = (gSaveContext.save.saveInfo.unk_EA8[1] & 0xFFFFFF00) | + ((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) + 1) & 0xFF); Item_Give(play, func_808B849C(this, play) + (ITEM_REMAINS_ODOLWA - 1)); DoorWarp1_SetupAction(this, func_808B9E94); } @@ -658,19 +658,19 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { switch (phi_v0_2) { case 0: - phi_a0 = gSaveContext.save.unk_ECC[0] & 0xFF; + phi_a0 = gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF; break; case 1: - phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF00) >> 8; + phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF00) >> 8; break; case 2: - phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF0000) >> 0x10; + phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF0000) >> 0x10; break; case 3: - phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF000000) >> 0x18; + phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF000000) >> 0x18; break; default: diff --git a/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c b/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c index 1507da5e2..d05c099e9 100644 --- a/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c +++ b/src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c @@ -162,7 +162,7 @@ void ElfMsg6_Init(Actor* thisx, PlayState* play) { switch (ELFMSG6_GET_F0(&this->actor)) { case 0: - if (gSaveContext.save.inventory.items[ITEM_HOOKSHOT] != ITEM_HOOKSHOT) { + if (gSaveContext.save.saveInfo.inventory.items[ITEM_HOOKSHOT] != ITEM_HOOKSHOT) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 87f39a510..99779f20b 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -300,7 +300,7 @@ s32 func_80BED208(EnAkindonuts* this) { return 0; } - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { return 1; } @@ -322,7 +322,7 @@ s32 func_80BED27C(EnAkindonuts* this) { return 0; } - if (gSaveContext.save.playerData.rupees < 200) { + if (gSaveContext.save.saveInfo.playerData.rupees < 200) { return 1; } @@ -336,7 +336,7 @@ s32 func_80BED2FC(EnAkindonuts* this) { return 2; } - if (gSaveContext.save.playerData.rupees < 40) { + if (gSaveContext.save.saveInfo.playerData.rupees < 40) { return 1; } @@ -350,7 +350,7 @@ s32 func_80BED35C(EnAkindonuts* this) { return 2; } - if (gSaveContext.save.playerData.rupees < 100) { + if (gSaveContext.save.saveInfo.playerData.rupees < 100) { return 1; } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 97bc517c9..0f66d5cf4 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -305,7 +305,7 @@ void func_809C16DC(EnAob01* this, PlayState* play) { break; case PLAYER_FORM_HUMAN: - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { this->unk_210 = 0x3524; this->unk_2D2 |= 0x10; } else { @@ -369,7 +369,7 @@ void func_809C16DC(EnAob01* this, PlayState* play) { break; case 0x3528: - if (gSaveContext.save.playerData.rupees < this->unk_434) { + if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_434) { this->unk_210 = 0x3536; this->unk_2D2 |= 0x40; this->unk_43C = 1; @@ -434,7 +434,7 @@ void func_809C1D64(EnAob01* this, PlayState* play) { if (Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); this->unk_210 = 0x3524; Message_StartTextbox(play, this->unk_210, &this->actor); @@ -904,7 +904,7 @@ void func_809C2FA0(void) { } for (i = 0; i < ARRAY_COUNT(sp44); i++) { - gSaveContext.save.weekEventReg[42 + i] = 0; + gSaveContext.save.saveInfo.weekEventReg[42 + i] = 0; sp44[i] = 0; } @@ -914,8 +914,8 @@ void func_809C2FA0(void) { if (i % 2) { sp44[index] |= orig2 << 0x4; - gSaveContext.save.weekEventReg[42 + index] = - ((void)0, gSaveContext.save.weekEventReg[42 + index]) | sp44[index]; + gSaveContext.save.saveInfo.weekEventReg[42 + index] = + ((void)0, gSaveContext.save.saveInfo.weekEventReg[42 + index]) | sp44[index]; } else { sp44[index] |= orig2; } diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c index 5eed1b1d5..47df4b75b 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c @@ -1614,7 +1614,7 @@ void EnBigslime_AttackPlayerInBigslime(EnBigslime* this, PlayState* play) { if (this->numGekkoMeleeAttacks == 0) { this->numGekkoPosGrabPlayer--; - if ((gSaveContext.save.playerData.health < 5) || (this->numGekkoPosGrabPlayer == 0)) { + if ((gSaveContext.save.saveInfo.playerData.health < 5) || (this->numGekkoPosGrabPlayer == 0)) { this->numGekkoPosGrabPlayer = 0; this->gekkoRot.y = this->actor.world.rot.y; this->gekkoPosOffset.x = Math_SinS(this->gekkoRot.y) * -50.0f; diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 7217dbc65..6b54c387c 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -173,9 +173,9 @@ void func_809C4BC4(EnBomBowlMan* this, PlayState* play) { func_809C4B50(this); func_809C493C(this, 0, 1.0f); - for (i = 0; i < ARRAY_COUNT(gSaveContext.save.bomberCode); i++) { + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.bomberCode); i++) { Math_Vec3f_Copy(&sp7C, &this->actor.home.pos); - code = gSaveContext.save.bomberCode[i]; + code = gSaveContext.save.saveInfo.bomberCode[i]; if (code == 1) { Math_Vec3f_Copy(&this->actor.world.pos, &D_809C61A0[i]); this->unk_2D8[code] = this; diff --git a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c index 0c3bdf745..9591fbbb9 100644 --- a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c +++ b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c @@ -220,7 +220,8 @@ void func_80C04D8C(EnBombers2* this, PlayState* play) { s32 correctDigits; for (i = 0; i < ARRAY_COUNT(this->correctDigitSlots); i++) { - if (!(this->correctDigitSlots[i]) && (play->msgCtx.unk12054[i] == gSaveContext.save.bomberCode[i])) { + if (!(this->correctDigitSlots[i]) && + (play->msgCtx.unk12054[i] == gSaveContext.save.saveInfo.bomberCode[i])) { this->correctDigitSlots[i] = true; } } diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 611c6144b..a1a1b0a32 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -720,12 +720,12 @@ void func_80BFF9B0(EnBomjima* this, PlayState* play) { CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_08); CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_10); - 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; func_80BFE494(this, 3, 1.0f); this->unk_2C8 = 9; diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index fc11e86c1..7cc78d9cf 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -686,11 +686,12 @@ void func_80C02740(EnBomjimb* this, PlayState* play) { return; } - Message_StartTextbox(play, D_80C03230[((void)0, gSaveContext.save.bombersCaughtNum)], &this->actor); - gSaveContext.save.bombersCaughtOrder[((void)0, gSaveContext.save.bombersCaughtNum)] = this->unk_2C8 + 1; - gSaveContext.save.bombersCaughtNum++; + Message_StartTextbox(play, D_80C03230[((void)0, gSaveContext.save.saveInfo.bombersCaughtNum)], &this->actor); + gSaveContext.save.saveInfo.bombersCaughtOrder[((void)0, gSaveContext.save.saveInfo.bombersCaughtNum)] = + this->unk_2C8 + 1; + gSaveContext.save.saveInfo.bombersCaughtNum++; - if (gSaveContext.save.bombersCaughtNum > 4) { + if (gSaveContext.save.saveInfo.bombersCaughtNum > 4) { Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900); } else { Actor_PlaySfx(&this->actor, NA_SE_SY_PIECE_OF_HEART); @@ -761,7 +762,7 @@ void func_80C02A14(EnBomjimb* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { Message_CloseTextbox(play); - if ((this->unk_2CA == 8) && (gSaveContext.save.bombersCaughtNum >= 5)) { + if ((this->unk_2CA == 8) && (gSaveContext.save.saveInfo.bombersCaughtNum >= 5)) { func_80C02CA4(this, play); } else { if (this->unk_2CA == 8) { diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index a173834c7..360cf2c49 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -426,10 +426,10 @@ void EnDg_UpdateTextId(EnDg* this) { // the range of 0x3538 to 0x3545. if (this->index % 2) { sRacetrackDogInfo[this->index].textId = - 0x3538 + ((gSaveContext.save.weekEventReg[42 + (this->index / 2)] & 0xF0) >> 4); + 0x3538 + ((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)] & 0xF0) >> 4); } else { sRacetrackDogInfo[this->index].textId = - 0x3538 + (gSaveContext.save.weekEventReg[42 + (this->index / 2)] & 0x0F); + 0x3538 + (gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)] & 0x0F); } } else { Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index 478f071b3..aa9d9c89a 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -476,7 +476,7 @@ void func_80866B20(EnDoor* this, PlayState* play) { Animation_PlayOnceSetSpeed(&this->skelAnime, sAnimations[this->animIndex], (player->stateFlags1 & PLAYER_STATE1_8000000) ? 0.75f : 1.5f); if (this->unk_1A6 != 0) { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--; + gSaveContext.save.saveInfo.inventory.dungeonKeys[gSaveContext.mapIndex]--; Flags_SetSwitch(play, this->switchFlag); Actor_PlaySfx(&this->dyna.actor, NA_SE_EV_CHAIN_KEY_UNLOCK); } @@ -499,7 +499,7 @@ void func_80866B20(EnDoor* this, PlayState* play) { player->doorDirection = playerPosRelToDoor.z >= 0.0f ? 1.0f : -1.0f; player->doorActor = &this->dyna.actor; if (this->unk_1A6 != 0) { - if (gSaveContext.save.inventory.dungeonKeys[((void)0, gSaveContext.mapIndex)] <= 0) { + if (gSaveContext.save.saveInfo.inventory.dungeonKeys[((void)0, gSaveContext.mapIndex)] <= 0) { player->doorType = PLAYER_DOORTYPE_TALKING; this->dyna.actor.textId = 0x1802; } else { diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index fd800c27f..751c24aab 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -355,8 +355,9 @@ void EnElf_Init(Actor* thisx, PlayState* play2) { this->elfMsg = NULL; this->unk_234 = NULL; this->unk_269 = 20; - if ((gSaveContext.save.playerData.tatlTimer >= 25800) || (gSaveContext.save.playerData.tatlTimer < 3000)) { - gSaveContext.save.playerData.tatlTimer = 0; + if ((gSaveContext.save.saveInfo.playerData.tatlTimer >= 25800) || + (gSaveContext.save.saveInfo.playerData.tatlTimer < 3000)) { + gSaveContext.save.saveInfo.playerData.tatlTimer = 0; } this->unk_266 = QuestHint_GetTatlTextId(play); break; @@ -1455,11 +1456,12 @@ void func_8089010C(Actor* thisx, PlayState* play) { if (temp_v0 != this->unk_266) { this->unk_266 = temp_v0; - gSaveContext.save.playerData.tatlTimer = 0; + gSaveContext.save.saveInfo.playerData.tatlTimer = 0; } if ((player->tatlTextId == 0) && (player->targetedActor == NULL)) { - if ((gSaveContext.save.playerData.tatlTimer >= 600) && (gSaveContext.save.playerData.tatlTimer <= 3000)) { + if ((gSaveContext.save.saveInfo.playerData.tatlTimer >= 600) && + (gSaveContext.save.saveInfo.playerData.tatlTimer <= 3000)) { player->tatlTextId = QuestHint_GetTatlTextId(play); } } @@ -1474,7 +1476,7 @@ void func_8089010C(Actor* thisx, PlayState* play) { if (thisx->textId == QuestHint_GetTatlTextId(play)) { this->fairyFlags |= 0x80; - gSaveContext.save.playerData.tatlTimer = 3001; + gSaveContext.save.saveInfo.playerData.tatlTimer = 3001; } this->fairyFlags |= 0x10; @@ -1505,10 +1507,10 @@ void func_8089010C(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if (!Play_InCsMode(play)) { - if (gSaveContext.save.playerData.tatlTimer < 25800) { - gSaveContext.save.playerData.tatlTimer++; + if (gSaveContext.save.saveInfo.playerData.tatlTimer < 25800) { + gSaveContext.save.saveInfo.playerData.tatlTimer++; } else if (!(this->fairyFlags & 0x80)) { - gSaveContext.save.playerData.tatlTimer = 0; + gSaveContext.save.saveInfo.playerData.tatlTimer = 0; } } } diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 2189bba99..7f6067d9c 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -101,13 +101,13 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) { break; case ENELFGRP_2: - if (gSaveContext.save.playerData.isDoubleMagicAcquired == true) { + if (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired == true) { func_80A396B0(this, 1); } break; case ENELFGRP_3: - if (gSaveContext.save.playerData.doubleDefense) { + if (gSaveContext.save.saveInfo.playerData.doubleDefense) { func_80A396B0(this, 1); } break; @@ -125,7 +125,7 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) { this->actor.textId = (this->unk_147 * 3) + 0x581; } else { this->actionFunc = func_80A3A8F8; - if ((gSaveContext.save.weekEventReg[9] & this->unk_146)) { + if ((gSaveContext.save.saveInfo.weekEventReg[9] & this->unk_146)) { this->actor.textId = (this->unk_147 * 3) + 0x580; } else { this->actor.textId = (this->unk_147 * 3) + 0x57F; @@ -158,13 +158,13 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) { func_80A396B0(this, 3); this->unk_14A |= 2; } - } else if (gSaveContext.save.playerData.isMagicAcquired == true) { + } else if (gSaveContext.save.saveInfo.playerData.isMagicAcquired == true) { func_80A396B0(this, 1); } } else { func_80A39DC8(this, play, 24, 0); this->actionFunc = func_80A3A8F8; - if ((gSaveContext.save.weekEventReg[9] & this->unk_146)) { + if ((gSaveContext.save.saveInfo.weekEventReg[9] & this->unk_146)) { this->actor.textId = 0x580; } else { this->actor.textId = 0x578; @@ -183,7 +183,7 @@ s32 func_80A39BD0(PlayState* play, s32 arg2) { return 0; } - return (((void)0, gSaveContext.save.inventory.strayFairies[arg2 - 1]) - func_80A39C1C(play, arg2)) + 10; + return (((void)0, gSaveContext.save.saveInfo.inventory.strayFairies[arg2 - 1]) - func_80A39C1C(play, arg2)) + 10; } s32 func_80A39C1C(PlayState* play, s32 arg1) { @@ -207,13 +207,13 @@ s32 func_80A39C1C(PlayState* play, s32 arg1) { } if (arg1 == 0) { - if (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1) { + if (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1) { return 25; } return 24; } - temp_v1 = (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 >> (((arg1 - 1) * 5) + 1)) & 0x1F; + temp_v1 = (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 >> (((arg1 - 1) * 5) + 1)) & 0x1F; if (temp_v1 < 10) { temp_v1 = 10; } else if (temp_v1 > 25) { @@ -229,13 +229,13 @@ void func_80A39CD4(PlayState* play, s32 arg1, s32 arg2) { if (arg1 == 0) { if (arg2 == 25) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 1; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 1; } else { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~1; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~1; } } else { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~(0x1F << ((arg1 * 5) - 4)); - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= arg2 << ((arg1 * 5) - 4); + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~(0x1F << ((arg1 * 5) - 4)); + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= arg2 << ((arg1 * 5) - 4); } } @@ -524,7 +524,7 @@ void func_80A3A7FC(EnElfgrp* this, PlayState* play) { s32 temp_s0; if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - gSaveContext.save.weekEventReg[9] |= this->unk_146; + gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146; this->actionFunc = func_80A3A6F4; temp_s0 = func_80A39BD0(play, this->unk_147); func_80A39DC8(this, play, temp_s0, 1); @@ -544,7 +544,7 @@ void func_80A3A8F8(EnElfgrp* this, PlayState* play) { Player* player = GET_PLAYER(play); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - gSaveContext.save.weekEventReg[9] |= this->unk_146; + gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146; this->actionFunc = func_80A3A6F4; return; } @@ -563,7 +563,7 @@ void func_80A3A8F8(EnElfgrp* this, PlayState* play) { player->stateFlags1 |= PLAYER_STATE1_20000000; Message_StartTextbox(play, this->actor.textId, &this->actor); this->actionFunc = func_80A3A77C; - gSaveContext.save.weekEventReg[9] |= this->unk_146; + gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146; } else { this->actor.flags |= ACTOR_FLAG_10000; func_800B8614(&this->actor, play, 100.0f); diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index 28b086fbb..542d739e6 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -490,10 +490,10 @@ void EnElforg_FreeFloating(EnElforg* this, PlayState* play) { } if (Map_IsInDungeonOrBossArea(play)) { - gSaveContext.save.inventory.strayFairies[gSaveContext.dungeonIndex]++; + gSaveContext.save.saveInfo.inventory.strayFairies[gSaveContext.dungeonIndex]++; // You found a Stray Fairy! Message_StartTextbox(play, 0x11, NULL); - if (gSaveContext.save.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] >= 15) { + if (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] >= 15) { Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900); } } diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index e91632700..4bbd4b5cc 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -835,7 +835,7 @@ void EnFishing_Init(Actor* thisx, PlayState* play2) { if (sLinkAge != 1) { // HIGH_SCORE(HS_FISHING) from OoT - if (gSaveContext.save.unk_EE4 & 0x1000) { + if (gSaveContext.save.saveInfo.unk_EC0 & 0x1000) { D_8090CD08 = 0; } else { D_8090CD08 = 1; @@ -853,18 +853,18 @@ void EnFishing_Init(Actor* thisx, PlayState* play2) { SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 1); if (sLinkAge == 1) { - if (gSaveContext.save.unk_EE4 & 0x7F) { - D_809171CC = gSaveContext.save.unk_EE4 & 0x7F; + if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F) { + D_809171CC = gSaveContext.save.saveInfo.unk_EC0 & 0x7F; } else { D_809171CC = 40.0f; } - } else if (gSaveContext.save.unk_EE4 & 0x7F000000) { - D_809171CC = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18; + } else if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) { + D_809171CC = (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) >> 0x18; } else { D_809171CC = 45.0f; } - D_809171D1 = (gSaveContext.save.unk_EE4 & 0xFF0000) >> 0x10; + D_809171D1 = (gSaveContext.save.saveInfo.unk_EC0 & 0xFF0000) >> 0x10; if ((D_809171D1 & 7) == 7) { play->roomCtx.unk7A[0] = 90; D_809171CA = 1; @@ -2795,8 +2795,8 @@ void func_80903C60(EnFishing* this, u8 arg1) { void EnFishing_HandleAquariumDialog(EnFishing* this, PlayState* play) { if (sLinkAge == 1) { - if (gSaveContext.save.unk_EE4 & 0x7F) { - if (gSaveContext.save.unk_EE4 & 0x80) { + if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F) { + if (gSaveContext.save.saveInfo.unk_EC0 & 0x80) { this->actor.textId = 0x40B1; } else { this->actor.textId = 0x4089; @@ -2804,8 +2804,8 @@ void EnFishing_HandleAquariumDialog(EnFishing* this, PlayState* play) { } else { this->actor.textId = 0x40AE; } - } else if (gSaveContext.save.unk_EE4 & 0x7F000000) { - if (gSaveContext.save.unk_EE4 & 0x80000000) { + } else if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) { + if (gSaveContext.save.saveInfo.unk_EC0 & 0x80000000) { this->actor.textId = 0x40B1; } else { this->actor.textId = 0x4089; @@ -3745,8 +3745,8 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { if ((D_80917272 == 0) && (D_80917274 == 0)) { // Assignment of OoT's D_80B7E086 here removed in MM - if (((sLinkAge == 1) && (gSaveContext.save.unk_EE4 & 0x400)) || - ((sLinkAge != 1) && (gSaveContext.save.unk_EE4 & 0x800))) { + if (((sLinkAge == 1) && (gSaveContext.save.saveInfo.unk_EC0 & 0x400)) || + ((sLinkAge != 1) && (gSaveContext.save.saveInfo.unk_EC0 & 0x800))) { // Assignment of OoT's D_80B7A67C here removed in MM, this is now an empty branch } } else { @@ -4685,7 +4685,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { case 0: if (D_809171FC == 0) { if (sLinkAge != 1) { - if ((gSaveContext.save.unk_EE4 & 0x100) && !(gSaveContext.save.unk_EE4 & 0x200)) { + if ((gSaveContext.save.saveInfo.unk_EC0 & 0x100) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x200)) { this->actor.textId = 0x4093; } else { this->actor.textId = 0x407B; @@ -4703,9 +4703,9 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { if (D_809171FC == 0) { this->unk_154 = 1; if (sLinkAge != 1) { - gSaveContext.save.unk_EE4 |= 0x200; + gSaveContext.save.saveInfo.unk_EC0 |= 0x200; } else { - gSaveContext.save.unk_EE4 |= 0x100; + gSaveContext.save.saveInfo.unk_EC0 |= 0x100; } } else { this->unk_154 = 10; @@ -4721,7 +4721,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees >= 20) { + if (gSaveContext.save.saveInfo.playerData.rupees >= 20) { Rupees_ChangeBy(-20); if (!Rumble_ControllerOneHasRumblePak()) { this->actor.textId = 0x407C; @@ -4788,8 +4788,8 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { D_8090CD04 = 20; this->unk_154 = 0; - if ((gSaveContext.save.unk_EE4 & 0xFF0000) < 0xFF0000) { - gSaveContext.save.unk_EE4 += 0x10000; + if ((gSaveContext.save.saveInfo.unk_EC0 & 0xFF0000) < 0xFF0000) { + gSaveContext.save.saveInfo.unk_EC0 += 0x10000; } } break; @@ -4898,29 +4898,29 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { if (sLinkAge == 1) { f32 temp; - gSaveContext.save.unk_EE4 &= 0xFFFFFF00; - gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F); - temp = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18; + gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF00; + gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F); + temp = (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) >> 0x18; if (temp < D_809171CC) { - gSaveContext.save.unk_EE4 &= 0xFFFFFF; - gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18; + gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF; + gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F) << 0x18; if (D_809171D2 == 2) { - gSaveContext.save.unk_EE4 |= 0x80000000; + gSaveContext.save.saveInfo.unk_EC0 |= 0x80000000; } } if (D_809171D2 == 2) { - gSaveContext.save.unk_EE4 |= 0x80; + gSaveContext.save.saveInfo.unk_EC0 |= 0x80; this->unk_154 = 0; break; } } else { - gSaveContext.save.unk_EE4 &= 0xFFFFFF; - gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18; + gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF; + gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F) << 0x18; if (D_809171D2 == 2) { - gSaveContext.save.unk_EE4 |= 0x80000000; + gSaveContext.save.saveInfo.unk_EC0 |= 0x80000000; this->unk_154 = 0; break; } @@ -4937,14 +4937,14 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { } if (sLinkAge == 1) { - if ((D_809171CC >= 50.0f) && !(gSaveContext.save.unk_EE4 & 0x400)) { - gSaveContext.save.unk_EE4 |= 0x400; + if ((D_809171CC >= 50.0f) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x400)) { + gSaveContext.save.saveInfo.unk_EC0 |= 0x400; getItemId = GI_HEART_PIECE; sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f; } } else { - if ((D_809171CC >= 60.0f) && !(gSaveContext.save.unk_EE4 & 0x800)) { - gSaveContext.save.unk_EE4 |= 0x800; + if ((D_809171CC >= 60.0f) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x800)) { + gSaveContext.save.saveInfo.unk_EC0 |= 0x800; getItemId = GI_SKULL_TOKEN; sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f; } @@ -5107,9 +5107,9 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { } if (D_8090CD08 == 0) { - gSaveContext.save.unk_EE4 |= 0x1000; + gSaveContext.save.saveInfo.unk_EC0 |= 0x1000; } else if (D_8090CD08 == 1) { - gSaveContext.save.unk_EE4 &= ~0x1000; + gSaveContext.save.saveInfo.unk_EC0 &= ~0x1000; } if (D_8090CCFC != 0) { diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 6febd3dca..2626d1cbd 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -429,7 +429,7 @@ void func_80962588(EnFu* this, PlayState* play) { if (Message_ShouldAdvance(play) && (this->unk_552 == 0x2871)) { if (1) {} if (play->msgCtx.choiceIndex == 0) { - if (gSaveContext.save.playerData.rupees >= 10) { + if (gSaveContext.save.saveInfo.playerData.rupees >= 10) { func_8019F208(); Rupees_ChangeBy(-10); func_80963DE4(this, play); @@ -652,7 +652,7 @@ void func_80962A10(EnFu* this, PlayState* play) { this->unk_546 = 1; } - if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.isMagicAcquired) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.saveInfo.playerData.isMagicAcquired) { Magic_Add(play, MAGIC_FILL_TO_CAPACITY); } @@ -1139,7 +1139,7 @@ void func_80963DE4(EnFu* this, PlayState* play) { } void func_80963EAC(EnFu* this, PlayState* play) { - if (gSaveContext.save.playerData.isMagicAcquired) { + if (gSaveContext.save.saveInfo.playerData.isMagicAcquired) { if (this->unk_540 == 1) { Message_StartTextbox(play, 0x2847, &this->actor); this->unk_552 = 0x2847; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 3d75c729c..0575494c8 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -163,7 +163,7 @@ u16 func_80B0F7FC(EnGb2* this) { return 0x14E4; } - if (gSaveContext.save.playerData.health > 48) { + if (gSaveContext.save.saveInfo.playerData.health > 48) { return 0x14D2; } @@ -171,7 +171,7 @@ u16 func_80B0F7FC(EnGb2* this) { return 0x14D3; case 0x14E4: - if (gSaveContext.save.playerData.health > 48) { + if (gSaveContext.save.saveInfo.playerData.health > 48) { return 0x14D2; } @@ -407,7 +407,7 @@ void func_80B0FFA8(EnGb2* this, PlayState* play) { if (this->unk_26E == 0x14D5) { switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees < this->unk_288) { + if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_288) { play_sound(NA_SE_SY_ERROR); this->unk_26E = 0x14D7; this->unk_26C |= 2; @@ -505,7 +505,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { } } - if (gSaveContext.save.playerData.health < 49) { + if (gSaveContext.save.saveInfo.playerData.health < 49) { gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; SET_EVENTINF(EVENTINF_46); SET_EVENTINF(EVENTINF_45); @@ -575,7 +575,7 @@ void func_80B10634(EnGb2* this, PlayState* play) { } else if ((talkState == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees < this->unk_288) { + if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_288) { play_sound(NA_SE_SY_ERROR); this->unk_26E = 0x14D7; this->unk_26C |= 2; diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 350ce734c..fba0c1118 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -89,7 +89,7 @@ void EnGinkoMan_Idle(EnGinkoMan* this, PlayState* play) { EnGinkoMan_SwitchAnimation(this, play); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { + if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING); Message_StartTextbox(play, 0x44C, &this->actor); this->curTextId = 0x44C; // would you like to make an account @@ -153,7 +153,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING); } - play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; + play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF; Message_StartTextbox(play, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -164,22 +164,22 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees" break; case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!" - if (((gSaveContext.save.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) && + if (((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_40)) { SET_WEEKEVENTREG(WEEKEVENTREG_59_40); Message_StartTextbox(play, 0x45B, &this->actor); this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?! - } else if (((gSaveContext.save.bankRupees & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && - !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_80)) { + } else if (((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 1000) && + ((this->previousBankValue) < 1000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_80)) { SET_WEEKEVENTREG(WEEKEVENTREG_59_80); Message_StartTextbox(play, 0x45C, &this->actor); this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?! - } else if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { + } else if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) { if ((this->previousBankValue < 5000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_60_01)) { SET_WEEKEVENTREG(WEEKEVENTREG_60_01); Message_StartTextbox(play, 0x45D, &this->actor); this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?! - } else if (this->previousBankValue < (s16)(gSaveContext.save.bankRupees & 0xFFFF)) { + } else if (this->previousBankValue < (s16)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF)) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING); Message_StartTextbox(play, 0x45E, &this->actor); this->curTextId = @@ -221,7 +221,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { break; case 0x465: // "There! Now I'll know you when I see you!" Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING); - play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; + play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF; Message_StartTextbox(play, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" break; @@ -237,10 +237,10 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { case 0x46C: // "Ah, yes...[Link], right? If I remember, you're the little guy who deposited [rupees]." case 0x47E: // "Your deposits total [rupees]." if (this->choiceDepositWithdrawl == GINKOMAN_CHOICE_DEPOSIT) { - if ((u32)(gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { + if ((u32)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) { Message_StartTextbox(play, 0x45F, &this->actor); this->curTextId = 0x45F; // "Excuuuse me! But I can't take anymore deposits! - } else if (gSaveContext.save.playerData.rupees == 0) { + } else if (gSaveContext.save.saveInfo.playerData.rupees == 0) { Message_StartTextbox(play, 0x458, &this->actor); this->curTextId = 0x458; // "Hmm...You play mean jokes, little guy! You haven't even got a single Rupee! @@ -288,12 +288,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) { case 0x473: // Use it wisely... case 0x474: // "Aw, you're taking out all that? If you spend it like that, it'll all be gone before you know // it!" - if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { + if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) { Message_StartTextbox(play, 0x478, &this->actor); // "Look, little guy, all the Rupees you deposited are gone, so you can't use that stamp anymore." this->curTextId = 0x478; } else { - play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; + play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF; Message_StartTextbox(play, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -319,12 +319,12 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) { switch (this->curTextId) { case 0x44E: // "...So, what'll it be? if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { + if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x45F, &this->actor); this->curTextId = 0x45F; // bank full, cannot accept more } else { - if (gSaveContext.save.playerData.rupees > 0) { + if (gSaveContext.save.saveInfo.playerData.rupees > 0) { func_8019F208(); Message_StartTextbox(play, 0x44F, &this->actor); this->curTextId = 0x44F; // "All right! so..." @@ -342,7 +342,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) { break; case 0x452: // Really? are you really depositing rupees? if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if (gSaveContext.save.playerData.rupees < play->msgCtx.bankRupeesSelected) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.bankRupeesSelected) { play_sound(NA_SE_SY_ERROR); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING); Message_StartTextbox(play, 0x459, &this->actor); @@ -361,20 +361,20 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) { this->curTextId = 0x453; // That's it? That aint nothing at all } - if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { + if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) { this->isNewAccount = true; } Rupees_ChangeBy(-play->msgCtx.bankRupeesSelected); - this->previousBankValue = gSaveContext.save.bankRupees & 0xFFFF; - gSaveContext.save.bankRupees = - ((gSaveContext.save.bankRupees & 0xFFFF) + play->msgCtx.bankRupeesSelected) | - (gSaveContext.save.bankRupees & 0xFFFF0000); + this->previousBankValue = gSaveContext.save.saveInfo.bankRupees & 0xFFFF; + gSaveContext.save.saveInfo.bankRupees = + ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) + play->msgCtx.bankRupeesSelected) | + (gSaveContext.save.saveInfo.bankRupees & 0xFFFF0000); } } else { // GINKOMAN_CHOICE_NO func_8019F230(); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING); - if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { + if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) { Message_StartTextbox(play, 0x456, &this->actor); this->curTextId = 0x456; // Is that so? think about it } else { @@ -403,14 +403,14 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) { break; case 0x471: // Are you really withdrawling [selected rupees]? if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((s32)((gSaveContext.save.bankRupees & 0xFFFF)) < + if ((s32)((gSaveContext.save.saveInfo.bankRupees & 0xFFFF)) < ((s32)(play->msgCtx.bankRupeesSelected + this->serviceFee))) { play_sound(NA_SE_SY_ERROR); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING); Message_StartTextbox(play, 0x476, &this->actor); this->curTextId = 0x476; // you dont have enough deposited to withdrawl } else if (CUR_CAPACITY(UPG_WALLET) < - (play->msgCtx.bankRupeesSelected + gSaveContext.save.playerData.rupees)) { + (play->msgCtx.bankRupeesSelected + gSaveContext.save.saveInfo.playerData.rupees)) { // check if wallet is big enough play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x475, &this->actor); @@ -428,11 +428,11 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) { this->curTextId = 0x472; // It's a waste to take out such a tiny bit } - this->previousBankValue = (s16)(gSaveContext.save.bankRupees & 0xFFFF); - gSaveContext.save.bankRupees = - (((gSaveContext.save.bankRupees & 0xFFFF) - play->msgCtx.bankRupeesSelected) - + this->previousBankValue = (s16)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF); + gSaveContext.save.saveInfo.bankRupees = + (((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) - play->msgCtx.bankRupeesSelected) - this->serviceFee) | - (gSaveContext.save.bankRupees & 0xFFFF0000); + (gSaveContext.save.saveInfo.bankRupees & 0xFFFF0000); Rupees_ChangeBy(play->msgCtx.bankRupeesSelected); } } else { @@ -591,7 +591,7 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, PlayState* play) { break; case 0x469: // "Excuse me, but let me take a look at you..." Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING); - play->msgCtx.bankRupees = (gSaveContext.save.bankRupees & 0xFFFF); + play->msgCtx.bankRupees = (gSaveContext.save.saveInfo.bankRupees & 0xFFFF); if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == true)) { Message_StartTextbox(play, 0x46C, &this->actor); this->curTextId = 0x46C; // "Ah, yes...[Link], right? diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 28267a485..90e449be3 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -188,7 +188,7 @@ s32 EnGirlA_CanBuyPotionRed(PlayState* play, EnGirlA* this) { if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -198,7 +198,7 @@ s32 EnGirlA_CanBuyPotionGreen(PlayState* play, EnGirlA* this) { if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -214,7 +214,7 @@ s32 EnGirlA_CanBuyPotionBlue(PlayState* play, EnGirlA* this) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_10)) { return CANBUY_RESULT_SUCCESS_2; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -227,7 +227,7 @@ s32 EnGirlA_CanBuyArrows(PlayState* play, EnGirlA* this) { if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) { return CANBUY_RESULT_NO_ROOM_2; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -237,7 +237,7 @@ s32 EnGirlA_CanBuyNuts(PlayState* play, EnGirlA* this) { if (CUR_CAPACITY(UPG_NUTS) != 0 && CUR_CAPACITY(UPG_NUTS) <= AMMO(ITEM_NUT)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { @@ -250,7 +250,7 @@ s32 EnGirlA_CanBuyShieldHero(PlayState* play, EnGirlA* this) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -260,7 +260,7 @@ s32 EnGirlA_CanBuyStick(PlayState* play, EnGirlA* this) { if (CUR_CAPACITY(UPG_STICKS) != 0 && AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) { @@ -270,7 +270,7 @@ s32 EnGirlA_CanBuyStick(PlayState* play, EnGirlA* this) { } s32 EnGirlA_CanBuyMaskAllNight(PlayState* play, EnGirlA* this) { - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -280,7 +280,7 @@ s32 EnGirlA_CanBuyBombBagCuriosityShop(PlayState* play, EnGirlA* this) { if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) >= 2) { return CANBUY_RESULT_CANNOT_GET_NOW; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -293,7 +293,7 @@ s32 EnGirlA_CanBuyBombBag20BombShop(PlayState* play, EnGirlA* this) { if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) >= 2) { return CANBUY_RESULT_HAVE_BETTER; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -306,7 +306,7 @@ s32 EnGirlA_CanBuyBombBag30BombShop(PlayState* play, EnGirlA* this) { if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) == 3) { return CANBUY_RESULT_HAVE_BETTER; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -319,7 +319,7 @@ s32 EnGirlA_CanBuyBombchus(PlayState* play, EnGirlA* this) { if (AMMO(ITEM_BOMBCHU) >= CUR_CAPACITY(UPG_BOMB_BAG)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) { @@ -335,21 +335,21 @@ s32 EnGirlA_CanBuyBombs(PlayState* play, EnGirlA* this) { if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; } s32 EnGirlA_CanBuyBottleStolen(PlayState* play, EnGirlA* this) { - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; } s32 EnGirlA_CanBuySword(PlayState* play, EnGirlA* this) { - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -359,7 +359,7 @@ s32 EnGirlA_CanBuyShieldMirror(PlayState* play, EnGirlA* this) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -369,7 +369,7 @@ s32 EnGirlA_CanBuyFairy(PlayState* play, EnGirlA* this) { if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index b01427406..003ac43e0 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -112,7 +112,7 @@ s8 func_80997A90(s16 arg0, s16 arg1) { if ((arg0 == 0) || ((arg0 != 1) && (arg0 != 2) && (arg0 == 3))) { phi_v1 = 0; } else { - phi_v1 = (gSaveContext.save.unk_EC4 >> (arg1 * 3)) & 7; + phi_v1 = (gSaveContext.save.saveInfo.unk_EA0 >> (arg1 * 3)) & 7; } return phi_v1; } @@ -388,8 +388,8 @@ void func_809985B8(EnGs* this, PlayState* play) { Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos); Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos); this->unk_200 = 0.0f; - gSaveContext.save.unk_EC4 = ((u32)gSaveContext.save.unk_EC4 & ~(7 << (this->unk_198 * 3))) | - ((this->unk_194 & 7) << (this->unk_198 * 3)); + gSaveContext.save.saveInfo.unk_EA0 = ((u32)gSaveContext.save.saveInfo.unk_EA0 & ~(7 << (this->unk_198 * 3))) | + ((this->unk_194 & 7) << (this->unk_198 * 3)); gossipStone = NULL; do { @@ -450,7 +450,7 @@ void func_8099874C(EnGs* this, PlayState* play) { phi_v0 = 1; for (i = 0; i < 4; i++) { - if (((gSaveContext.save.unk_EC4 >> (i * 3)) & 7) != (u32)this->unk_194) { + if (((gSaveContext.save.saveInfo.unk_EA0 >> (i * 3)) & 7) != (u32)this->unk_194) { phi_v0 = 0; } } diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 27c8de507..8bedd48cf 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -576,7 +576,7 @@ s32 func_808F4150(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx) if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) { Rupees_ChangeBy(-play->msgCtx.unk1206C); if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) { func_808F4108(this, play, 0x3474); @@ -602,7 +602,7 @@ s32 func_808F4270(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx, if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.playerData.rupees >= fee) { + if (gSaveContext.save.saveInfo.playerData.rupees >= fee) { Rupees_ChangeBy(-fee); if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) { if (arg4 != 0) { @@ -747,7 +747,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3466: if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) { if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; Actor_OfferGetItem(&this->actor, play, GI_MILK, 500.0f, 100.0f); @@ -999,7 +999,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3490: if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) { if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; Actor_OfferGetItem(&this->actor, play, GI_MILK, 500.0f, 100.0f); diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 8b3ec5956..263b4fab4 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -409,7 +409,7 @@ void func_80C14610(EnJgameTsn* this, PlayState* play) { void func_80C14684(EnJgameTsn* this, PlayState* play) { if (Message_ShouldAdvance(play)) { if (play->msgCtx.choiceIndex == 0) { - if (gSaveContext.save.playerData.rupees >= 20) { + if (gSaveContext.save.saveInfo.playerData.rupees >= 20) { Message_StartTextbox(play, 0x109E, &this->actor); this->unk_300 = 0x109E; Rupees_ChangeBy(-20); diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c index 0cfe7ae75..e4e01467f 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c @@ -1764,14 +1764,14 @@ void func_80B89A08(EnKaizoku* this, PlayState* play) { Vec3f sp58; s32 i; - if (gSaveContext.save.playerData.health <= 0x10) { + if (gSaveContext.save.saveInfo.playerData.health <= 0x10) { this->swordCollider.info.toucher.damage = 0; } else { this->swordCollider.info.toucher.damage = 4; } if (!(this->swordCollider.base.atFlags & AT_BOUNCED) && (this->swordCollider.base.atFlags & AT_HIT)) { - if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { + if ((gSaveContext.save.saveInfo.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { this->unk_2D0 = 2; this->subCamId = 0; this->picto.actor.flags |= ACTOR_FLAG_100000; @@ -1788,7 +1788,7 @@ void func_80B89A08(EnKaizoku* this, PlayState* play) { } else if ((this->action == KAIZOKU_ACTION_11) && (this->swordCollider.base.at == &GET_PLAYER(play)->actor)) { func_800B8D98(play, &this->picto.actor, 3.0f, this->picto.actor.yawTowardsPlayer, 1.0f); Health_ChangeBy(play, -0xC); - if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { + if ((gSaveContext.save.saveInfo.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) { Health_ChangeBy(play, 0x10); this->unk_2D0 = 2; this->subCamId = 0; diff --git a/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c b/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c index d2847a39d..b3b8ca295 100644 --- a/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c +++ b/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c @@ -71,12 +71,12 @@ void EnKbt_Destroy(Actor* thisx, PlayState* play) { } s32 func_80B33E64(PlayState* play) { - return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1; + return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1; } s32 func_80B33E8C(PlayState* play) { if ((CURRENT_DAY == 3) || - ((CURRENT_DAY == 2) && (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 2))) { + ((CURRENT_DAY == 2) && (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 2))) { return true; } return false; diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index ee7e0fe84..813852b44 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -224,7 +224,7 @@ void func_80B26758(EnKendoJs* this, PlayState* play) { Message_StartTextbox(play, 0x272C, &this->actor); this->unk_288 = 0x272C; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2); - } else if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + } else if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x2718, &this->actor); this->unk_288 = 0x2718; @@ -242,7 +242,7 @@ void func_80B26758(EnKendoJs* this, PlayState* play) { Message_StartTextbox(play, 0x272C, &this->actor); this->unk_288 = 0x272C; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2); - } else if (gSaveContext.save.playerData.rupees < play->msgCtx.unk12070) { + } else if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk12070) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x2718, &this->actor); this->unk_288 = 0x2718; diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 356af73f7..56fb61bed 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -151,33 +151,33 @@ ObjIcePoly* EnKgy_FindIceBlock(PlayState* play) { } void func_80B40C74(PlayState* play) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 1; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 1; if (CURRENT_DAY == 1) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 2; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 2; } else { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~2; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~2; } } void func_80B40D00(PlayState* play) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 4; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 4; } void func_80B40D30(PlayState* play) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~7; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~7; } s32 func_80B40D64(PlayState* play) { - return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1; + return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1; } s32 func_80B40D8C(PlayState* play) { - return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 4; + return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 4; } s32 func_80B40DB4(PlayState* play) { if ((CURRENT_DAY == 3) || - ((CURRENT_DAY == 2) && (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 2))) { + ((CURRENT_DAY == 2) && (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 2))) { return true; } return false; @@ -621,7 +621,7 @@ void func_80B41E18(EnKgy* this, PlayState* play) { case 0xC3B: switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) { play_sound(NA_SE_SY_ERROR); func_80B40E74(this, play, 0xC3F); } else { diff --git a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c index 1de7fc728..3e54fd0f9 100644 --- a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c +++ b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c @@ -46,13 +46,13 @@ ActorInit En_Kujiya_InitVars = { (ActorFunc)EnKujiya_Draw, }; -#define CHECK_LOTTERY_NUMBERS \ - (((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][0]) == \ - ((((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF00) >> 8)) && \ - ((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][1]) == \ - ((((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF0) >> 4)) && \ - ((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][2]) == \ - (((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF))) +#define CHECK_LOTTERY_NUMBERS \ + (((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][0]) == \ + ((((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF00) >> 8)) && \ + ((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][1]) == \ + ((((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF0) >> 4)) && \ + ((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][2]) == \ + (((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF))) void EnKujiya_Init(Actor* thisx, PlayState* play) { EnKujiya* this = THIS; @@ -111,7 +111,7 @@ void EnKujiya_Wait(EnKujiya* this, PlayState* play) { void EnKujiya_HandlePlayerChoice(EnKujiya* this, PlayState* play) { if (Message_ShouldAdvance(play)) { if (play->msgCtx.choiceIndex == 0) { // Buy - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x2B62, &this->actor); this->textId = 0x2B62; // Not enough Rupees diff --git a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c index 5b2028486..0bd619a9c 100644 --- a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c +++ b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c @@ -393,7 +393,7 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) { } } else { if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) >= - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { + gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < 0x2EE0) { Message_StartTextbox(play, 0x27F9, &this->actor); this->textId = 0x27F9; @@ -452,7 +452,7 @@ void func_80AEA7A4(EnLiftNuts* this, PlayState* play) { switch (this->textId) { case 0x27E2: if (play->msgCtx.choiceIndex == 0) { // Yes - if (gSaveContext.save.playerData.rupees >= 10) { + if (gSaveContext.save.saveInfo.playerData.rupees >= 10) { func_8019F208(); Message_StartTextbox(play, 0x27E5, &this->actor); this->textId = 0x27E5; @@ -784,7 +784,7 @@ void func_80AEB294(EnLiftNuts* this, PlayState* play) { player->stateFlags1 |= PLAYER_STATE1_20; if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) < - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { + gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { Flags_SetSwitch(play, 0x40); } Flags_SetSwitch(play, 0x41); @@ -804,7 +804,7 @@ void func_80AEB428(EnLiftNuts* this, PlayState* play) { if (this->unk_354 == 10) { if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) > - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { + gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { Message_StartTextbox(play, 0x27EA, &this->actor); this->textId = 0x27EA; } else if (*this->ptr_1EC == 300) { diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c index 3d97839a0..0586b2111 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c @@ -129,7 +129,7 @@ void EnMThunder_Init(Actor* thisx, PlayState* play) { this->isCharging = false; if (player->stateFlags2 & PLAYER_STATE2_20000) { - if (!gSaveContext.save.playerData.isMagicAcquired || (gSaveContext.magicState != MAGIC_STATE_IDLE) || + if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired || (gSaveContext.magicState != MAGIC_STATE_IDLE) || ((ENMTHUNDER_GET_MAGIC_COST(&this->actor) != 0) && !Magic_Consume(play, ENMTHUNDER_GET_MAGIC_COST(&this->actor), MAGIC_CONSUME_NOW))) { AudioSfx_PlaySfx(NA_SE_IT_ROLLING_CUT, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 0a1ec063a..0bbbce26a 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -907,9 +907,9 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { this->textId = 0x336D; } else { time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; - if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { + if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) { // [Score] New record! - gSaveContext.save.horseBackBalloonHighScore = time; + gSaveContext.save.saveInfo.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); Message_StartTextbox(play, 0x3350, &this->actor); this->textId = 0x3350; @@ -951,8 +951,8 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { this->textId = 0x3356; } else { time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; - if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { - gSaveContext.save.horseBackBalloonHighScore = time; + if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) { + gSaveContext.save.saveInfo.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); Message_StartTextbox(play, 0x3350, &this->actor); this->textId = 0x3350; @@ -978,9 +978,9 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { this->textId = 0x3356; } else { time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; - if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { + if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) { // New record - gSaveContext.save.horseBackBalloonHighScore = time; + gSaveContext.save.saveInfo.horseBackBalloonHighScore = time; Message_StartTextbox(play, 0x335D, &this->actor); this->textId = 0x335D; } else { diff --git a/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/src/overlays/actors/ovl_En_Mk/z_en_mk.c index 054f39c81..930fb13d5 100644 --- a/src/overlays/actors/ovl_En_Mk/z_en_mk.c +++ b/src/overlays/actors/ovl_En_Mk/z_en_mk.c @@ -120,7 +120,7 @@ void EnMk_Destroy(Actor* thisx, PlayState* play) { } s32 func_80959524(PlayState* play) { - return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 7; + return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 7; } void func_8095954C(EnMk* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 291fa83ce..366bddef3 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -148,7 +148,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) { case 0x278E: if (play->msgCtx.choiceIndex == 0) { if (this->unk_2B2 & 0x20) { - if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) { func_8019F208(); Message_StartTextbox(play, 0x2790, &this->actor); this->unk_2B4 = 0x2790; @@ -174,7 +174,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) { case 0x279A: if (play->msgCtx.choiceIndex == 0) { - if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) { + if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) { func_8019F208(); Message_StartTextbox(play, 0x2790, &this->actor); this->unk_2B4 = 0x2790; diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index d7a4fff3d..3cbf7e2ad 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -83,7 +83,7 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) { void EnMs_Wait(EnMs* this, PlayState* play) { s16 yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; - if (gSaveContext.save.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) { this->actor.textId = 0x92E; // "[...] You're the first customer [...]" } else { this->actor.textId = 0x932; // "[...] So you liked my Magic Beans [...]" @@ -118,7 +118,7 @@ void EnMs_Talk(EnMs* this, PlayState* play) { switch (play->msgCtx.choiceIndex) { case 0: // yes Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); Message_ContinueTextbox(play, 0x935); // "[...] You don't have enough Rupees." } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c index c53a29232..01cbb5dda 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c @@ -81,7 +81,7 @@ void func_8093E518(EnOkarinaTag* this, PlayState* play) { var_v1 = this->unk14A; if (var_v1 == 6) { var_v1 = 0xA; - if (gSaveContext.save.unk_F65 == 0) { + if (gSaveContext.save.saveInfo.unk_F41 == 0) { return; } } diff --git a/src/overlays/actors/ovl_En_Osn/z_en_osn.c b/src/overlays/actors/ovl_En_Osn/z_en_osn.c index e9e12e311..e5540a292 100644 --- a/src/overlays/actors/ovl_En_Osn/z_en_osn.c +++ b/src/overlays/actors/ovl_En_Osn/z_en_osn.c @@ -443,10 +443,11 @@ s32 EnOsn_GetInitialMaskText(EnOsn* this, PlayState* play) { s32 EnOsn_GetInitialText(EnOsn* this, PlayState* play) { Player* player = GET_PLAYER(play); - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) && CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) { + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) && + CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) { if (this->stateFlags & OSN_STATE_SPECIAL_CONVERSTATION) { this->stateFlags |= OSN_STATE_END_CONVERSATION; - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) && + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) && (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) { if ((gSaveContext.save.day == 3) && (gSaveContext.save.time >= CLOCK_TIME(5, 0)) && (gSaveContext.save.time < CLOCK_TIME(6, 0))) { @@ -692,11 +693,11 @@ void EnOsn_HandleConversation(EnOsn* this, PlayState* play) { void EnOsn_InitCutscene(EnOsn* this) { this->cutscene = this->actor.cutscene; - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) || + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) || (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) { this->cutscene = ActorCutscene_GetAdditionalCutscene(this->cutscene); - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) || + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) || (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) { this->cutscene = ActorCutscene_GetAdditionalCutscene(this->cutscene); } @@ -719,7 +720,8 @@ void EnOsn_ChooseAction(EnOsn* this, PlayState* play) { void EnOsn_Idle(EnOsn* this, PlayState* play) { s16 yaw = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) && !CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) { + if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) && + !CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = EnOsn_StartCutscene; } else if (((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) && (yaw < 0x4000) && diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index fb4c54c3d..a5bb03a72 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -157,7 +157,7 @@ void EnOwl_Init(Actor* thisx, PlayState* play) { break; case ENOWL_GET_TYPE_2: - if (gSaveContext.save.inventory.items[ITEM_LENS] == ITEM_LENS) { + if (gSaveContext.save.saveInfo.inventory.items[ITEM_LENS] == ITEM_LENS) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c index c97a0362a..3ffde38cd 100644 --- a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c +++ b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c @@ -443,9 +443,10 @@ void EnRacedog_UpdateTextId(EnRacedog* this) { // range of 0x3539 to 0x3546. if (this->index % 2) { sDogInfo[this->index].textId = - (((gSaveContext.save.weekEventReg[42 + (this->index / 2)]) & 0xF0) >> 4) + 0x3539; + (((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)]) & 0xF0) >> 4) + 0x3539; } else { - sDogInfo[this->index].textId = ((gSaveContext.save.weekEventReg[42 + (this->index / 2)]) & 0x0F) + 0x3539; + sDogInfo[this->index].textId = + ((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)]) & 0x0F) + 0x3539; } // As a sanity check, this makes sure the text ID is something in the expected range of 0x3539 to 0x3546. diff --git a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c index debcc77b9..14904e5b7 100644 --- a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c +++ b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c @@ -701,7 +701,7 @@ u16 EnSGoro_BombshopGoron_NextTextId(EnSGoro* this, PlayState* play) { return 0x673; } this->powderKegPrice = play->msgCtx.unk1206C; - if (gSaveContext.save.playerData.rupees < this->powderKegPrice) { + if (gSaveContext.save.saveInfo.playerData.rupees < this->powderKegPrice) { this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE; this->actionFlags |= EN_S_GORO_ACTIONFLAG_TIRED; play_sound(NA_SE_SY_ERROR); diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index c7ccaec9a..1c82887b4 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -334,7 +334,7 @@ void func_80BCB6D0(EnScopenuts* this, PlayState* play) { if (Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: - if (gSaveContext.save.playerData.rupees < this->unk_358) { + if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_358) { play_sound(NA_SE_SY_ERROR); this->unk_33C = 0x1636; this->unk_328 |= 1; @@ -684,7 +684,8 @@ void EnScopenuts_Init(Actor* thisx, PlayState* play) { s32 pad; EnScopenuts* this = THIS; - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40) && (gSaveContext.save.inventory.items[ITEM_OCARINA] == ITEM_NONE)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40) && + (gSaveContext.save.saveInfo.inventory.items[ITEM_OCARINA] == ITEM_NONE)) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c index ff12d798f..538f7d304 100644 --- a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c +++ b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c @@ -59,7 +59,8 @@ void EnSekihi_Init(Actor* thisx, PlayState* play) { return; } - if ((params == SEKIHI_TYPE_4) && (((gSaveContext.save.skullTokenCount & 0xFFFF)) >= SPIDER_HOUSE_TOKENS_REQUIRED)) { + if ((params == SEKIHI_TYPE_4) && + ((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED)) { // For some reason the mikau grave sets the flag instead of something in the spider house on exit. SET_WEEKEVENTREG(WEEKEVENTREG_OCEANSIDE_SPIDER_HOUSE_BUYER_MOVED_IN); } diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 3ff396920..f10d387d1 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -154,7 +154,7 @@ void EnSth_Init(Actor* thisx, PlayState* play) { break; case STH_TYPE_MOON_LOOKING: // South Clock Town - if ((gSaveContext.save.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED) { + if ((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED) { Actor_Kill(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index b0c052b5c..01c8e96a5 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -327,7 +327,7 @@ void EnSyatekiMan_Swamp_HandleChoice(EnSyatekiMan* this, PlayState* play) { // You don't have a bow! Message_StartTextbox(play, 0xA30, &this->actor); this->prevTextId = 0xA30; - } else if (gSaveContext.save.playerData.rupees < 20) { + } else if (gSaveContext.save.saveInfo.playerData.rupees < 20) { play_sound(NA_SE_SY_ERROR); // You don't have enough rupees! @@ -627,7 +627,7 @@ void EnSyatekiMan_Town_HandleChoice(EnSyatekiMan* this, PlayState* play) { Message_StartTextbox(play, 0x3FA, &this->actor); this->prevTextId = 0x3FA; } - } else if (gSaveContext.save.playerData.rupees < 20) { + } else if (gSaveContext.save.saveInfo.playerData.rupees < 20) { play_sound(NA_SE_SY_ERROR); if (CURRENT_DAY != 3) { // You don't have a enough rupees! diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 180bc59d4..59af8f7e8 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -436,7 +436,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { if (CURRENT_DAY == 3) { if ((this->nextBellTime == CLOCK_TIME(0, 0)) && - ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) || + ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) || (play->sceneId == SCENE_CLOCKTOWER))) { s32 playerParams; u32 entrance = gSaveContext.save.entrance; diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 491d94227..d472077ec 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -223,10 +223,10 @@ s32 func_80C10B0C(EnThiefbird* this, PlayState* play) { s16 itemId2 = 0; for (; slotId < 24; slotId++) { - if ((gSaveContext.save.inventory.items[slotId] >= ITEM_BOTTLE) && - (gSaveContext.save.inventory.items[slotId] <= ITEM_POTION_BLUE)) { + if ((gSaveContext.save.saveInfo.inventory.items[slotId] >= ITEM_BOTTLE) && + (gSaveContext.save.saveInfo.inventory.items[slotId] <= ITEM_POTION_BLUE)) { isItemFound = true; - itemId2 = gSaveContext.save.inventory.items[slotId]; + itemId2 = gSaveContext.save.saveInfo.inventory.items[slotId]; break; } } @@ -343,7 +343,7 @@ s32 func_80C10E98(PlayState* play) { spAC = 0; } - sp98 = (gSaveContext.save.playerData.rupees / 4) * 3; + sp98 = (gSaveContext.save.saveInfo.playerData.rupees / 4) * 3; phi_s0_2 = sp98 / 50; sp5C = (-spB0 - spAC); sp5C += 8; diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index 9928146b1..09ec80172 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -352,9 +352,9 @@ void func_80B76980(EnTruMt* this, PlayState* play) { } else if (CHECK_EVENTINF(EVENTINF_40)) { u32 score = gSaveContext.minigameScore; - if (((gSaveContext.save.unk_EE8 & 0xFFFF0000) >> 0x10) < score) { - gSaveContext.save.unk_EE8 = - ((gSaveContext.minigameScore & 0xFFFF) << 0x10) | (gSaveContext.save.unk_EE8 & 0xFFFF); + if (((gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF0000) >> 0x10) < score) { + gSaveContext.save.saveInfo.unk_EC4 = + ((gSaveContext.minigameScore & 0xFFFF) << 0x10) | (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF); SET_EVENTINF(EVENTINF_37); } } diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.c b/src/overlays/actors/ovl_En_Zod/z_en_zod.c index 1ef62420b..7808e8089 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.c +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.c @@ -115,7 +115,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) { switch (ENZOD_GET_TYPE(thisx)) { case ENZOD_TYPE_1: - if (gSaveContext.save.weekEventReg[78] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_01)) { this->actionFunc = func_80BAFDB4; EnZod_ChangeAnim(this, ENZOD_ANIM_PLAYING_VIVACE, ANIMMODE_ONCE); this->actor.flags |= ACTOR_FLAG_10; @@ -124,7 +124,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) { } this->actionFunc = func_80BAFB84; - if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { + if (!(CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80))) { Actor_Kill(&this->actor); break; } @@ -137,7 +137,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) { break; default: - if (gSaveContext.save.weekEventReg[55] & 0x80) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) { Actor_Kill(&this->actor); } this->actor.flags |= ACTOR_FLAG_10; @@ -156,19 +156,19 @@ void EnZod_HandleRoomConversation(EnZod* this, PlayState* play) { if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) { textId = 0x1227; - if (gSaveContext.save.weekEventReg[32] & 8) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_08)) { textId = 0x1229; } else { - gSaveContext.save.weekEventReg[32] |= 8; + SET_WEEKEVENTREG(WEEKEVENTREG_32_08); } } else if (this->stateFlags & TIJO_STATE_1) { textId = 0x1225; } else { textId = 0x1219; - if (gSaveContext.save.weekEventReg[32] & 0x10) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_10)) { textId = 0x1226; } else { - gSaveContext.save.weekEventReg[32] |= 0x10; + SET_WEEKEVENTREG(WEEKEVENTREG_32_10); } this->stateFlags |= TIJO_STATE_1; } @@ -394,14 +394,14 @@ void func_80BAFA44(EnZod* this, PlayState* play) { u16 textId; if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.save.weekEventReg[79] & 1) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) { textId = 0x1253; } else { textId = 0x1251; - if (gSaveContext.save.weekEventReg[78] & 0x20) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_20)) { textId = 0x1252; } else { - gSaveContext.save.weekEventReg[78] |= 0x20; + SET_WEEKEVENTREG(WEEKEVENTREG_78_20); } } } else { @@ -453,7 +453,7 @@ void EnZod_Rehearse(EnZod* this, PlayState* play) { play->nextEntrance = play->setupExitList[ENZOD_GET_ENTRANCE_INDEX(&this->actor)]; play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionTrigger = TRANS_TRIGGER_START; - gSaveContext.save.weekEventReg[78] &= (u8)~1; + CLEAR_WEEKEVENTREG(WEEKEVENTREG_78_01); } else { ActorCutscene_SetIntentToPlay(this->actor.cutscene); } @@ -471,7 +471,7 @@ void EnZod_SetupRehearse(EnZod* this, PlayState* play) { ActorCutscene_Stop(this->actor.cutscene); this->actor.cutscene = ActorCutscene_GetAdditionalCutscene(this->actor.cutscene); ActorCutscene_SetIntentToPlay(this->actor.cutscene); - gSaveContext.save.weekEventReg[79] |= 1; + SET_WEEKEVENTREG(WEEKEVENTREG_79_01); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, NA_BGM_INDIGO_GO_SESSION | SEQ_FLAG_ASYNC); } } diff --git a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c index 44a705539..17abb250d 100644 --- a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c +++ b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c @@ -206,13 +206,13 @@ void EnZoraegg_Destroy(Actor* thisx, PlayState* play) { } s32 func_80B319A8(PlayState* play) { - return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 7; + return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 7; } void func_80B319D0(PlayState* play, s32 arg1) { if ((arg1 < 8) && (arg1 >= 0)) { - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~7; - gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= arg1; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~7; + gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= arg1; } } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 1eb6b020b..a24791080 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -467,7 +467,7 @@ void func_80B973BC(EnZot* this, PlayState* play) { break; case 0x1275: - if (gSaveContext.save.playerData.rupees < 10) { + if (gSaveContext.save.saveInfo.playerData.rupees < 10) { Message_ContinueTextbox(play, 0x1277); } else { Message_ContinueTextbox(play, 0x1278); diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index 94e9c85c1..00dd90b94 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -620,7 +620,7 @@ void ObjTokeidai_StaircaseToRooftop_Idle(ObjTokeidai* this, PlayState* play) { } s32 ObjTokeidai_IsPostFirstCycleFinalHours(ObjTokeidai* this, PlayState* play) { - if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) { return false; } if (CURRENT_DAY == 3 && gSaveContext.save.time < CLOCK_TIME(6, 0)) { diff --git a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c index d527e4937..81efe0fc5 100644 --- a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c +++ b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c @@ -45,9 +45,9 @@ s32 func_80C07C80(s32 arg0) { s32 var_v1; if (!(arg0 & 1)) { - var_v1 = gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF; + var_v1 = gSaveContext.save.saveInfo.unk_E64[arg0 >> 1] & 0xFFFF; } else { - var_v1 = (gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF0000) >> 0x10; + var_v1 = (gSaveContext.save.saveInfo.unk_E64[arg0 >> 1] & 0xFFFF0000) >> 0x10; } return var_v1 + CLOCK_TIME(2, 30); } diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h index a2db609d6..241eb825d 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h @@ -27,6 +27,6 @@ typedef struct ObjWarpstone { } ObjWarpstone; // size = 0x1B0 #define OBJ_WARPSTONE_GET_ID(thisx) ((u16)((thisx)->params & 0xF)) -#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0, gSaveContext.save.playerData.owlActivationFlags) & (u16)gBitFlags[(owlId)]) +#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0, gSaveContext.save.saveInfo.playerData.owlActivationFlags) & (u16)gBitFlags[(owlId)]) #endif // Z_OBJ_WARPSTONE_H diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c index b8858b7ca..3d7e08221 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c @@ -370,14 +370,14 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); // Current Health Quarter (X / 4) - KaleidoScope_DrawDigit(play, (((void)0, gSaveContext.save.playerData.health) % 0x10) / 4, 217, 15); + KaleidoScope_DrawDigit(play, (((void)0, gSaveContext.save.saveInfo.playerData.health) % 0x10) / 4, 217, 15); gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); // Rupees counterDigits[0] = counterDigits[1] = counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.playerData.rupees; + counterDigits[3] = gSaveContext.save.saveInfo.playerData.rupees; while (counterDigits[3] >= 1000) { counterDigits[0]++; counterDigits[3] -= 1000; @@ -400,7 +400,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Health capacity counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.playerData.healthCapacity / 0x10; + counterDigits[3] = gSaveContext.save.saveInfo.playerData.healthCapacity / 0x10; while (counterDigits[3] >= 10) { counterDigits[2]++; counterDigits[3] -= 10; @@ -411,7 +411,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Health counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.playerData.health / 0x10; + counterDigits[3] = gSaveContext.save.saveInfo.playerData.health / 0x10; while (counterDigits[3] >= 10) { counterDigits[2]++; counterDigits[3] -= 10; @@ -431,10 +431,10 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { (slot == SLOT_MAGIC_BEANS)) { counterDigits[3] = AMMO(gAmmoItems[slot]); } else if ((slot == SLOT_TRADE_DEED) || (slot == SLOT_TRADE_KEY_MAMA) || (slot == SLOT_TRADE_COUPLE)) { - counterDigits[3] = gSaveContext.save.inventory.items[slot]; + counterDigits[3] = gSaveContext.save.saveInfo.inventory.items[slot]; } else if (slot >= SLOT_BOTTLE_1) { - counterDigits[3] = gSaveContext.save.inventory.items[slot]; - } else if (gSaveContext.save.inventory.items[slot] != ITEM_NONE) { + counterDigits[3] = gSaveContext.save.saveInfo.inventory.items[slot]; + } else if (gSaveContext.save.saveInfo.inventory.items[slot] != ITEM_NONE) { counterDigits[3] = 1; } @@ -461,7 +461,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { for (j = 0, rectLeft = 204; j < 6; j++, slot++, rectLeft += 14) { counterDigits[2] = 0; - if (gSaveContext.save.inventory.items[SLOT_MASK_POSTMAN + slot] != ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[SLOT_MASK_POSTMAN + slot] != ITEM_NONE) { counterDigits[2] = 1; } KaleidoScope_DrawDigit(play, counterDigits[2], rectLeft, rectTop); @@ -583,7 +583,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Dungeon Items // Loop over columns (i), (counterDigits[1] stores rectLeft) for (counterDigits[1] = 129, i = 0; i < 4; i++) { - counterDigits[2] = gSaveContext.save.inventory.dungeonItems[i] & gEquipMasks[0]; + counterDigits[2] = gSaveContext.save.saveInfo.inventory.dungeonItems[i] & gEquipMasks[0]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 168); counterDigits[1] += 12; } @@ -591,7 +591,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Stray Fairies // Loop over columns (i), (counterDigits[1] stores rectLeft) for (counterDigits[1] = 202, i = 0; i < 4; i++) { - counterDigits[3] = gSaveContext.save.inventory.strayFairies[i]; + counterDigits[3] = gSaveContext.save.saveInfo.inventory.strayFairies[i]; counterDigits[2] = counterDigits[3] / 10; counterDigits[3] -= counterDigits[2] * 10; if (counterDigits[2] != 0) { @@ -602,22 +602,22 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { } // Double Defence - KaleidoScope_DrawDigit(play, gSaveContext.save.playerData.doubleDefense, 44, 202); + KaleidoScope_DrawDigit(play, gSaveContext.save.saveInfo.playerData.doubleDefense, 44, 202); // Magic - //! @bug should be gSaveContext.save.playerData.doubleMagic - KaleidoScope_DrawDigit(play, gSaveContext.save.playerData.doubleDefense, 75, 202); + //! @bug should be gSaveContext.save.saveInfo.playerData.doubleMagic + KaleidoScope_DrawDigit(play, gSaveContext.save.saveInfo.playerData.doubleDefense, 75, 202); // Lottery // Loop over columns (i), (counterDigits[1] stores rectLeft) for (counterDigits[1] = 139, i = 0; i < 3; i++) { - counterDigits[2] = gSaveContext.save.lotteryCodes[0][i]; + counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[0][i]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 184); - counterDigits[2] = gSaveContext.save.lotteryCodes[1][i]; + counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[1][i]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 198); - counterDigits[2] = gSaveContext.save.lotteryCodes[2][i]; + counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[2][i]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 212); counterDigits[1] += 12; @@ -626,7 +626,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Oceanside Spider House Mask Order // Loop over columns (i), (counterDigits[1] stores rectLeft) for (counterDigits[1] = 217, i = 0; i < 6; i++) { - counterDigits[2] = gSaveContext.save.spiderHouseMaskOrder[i]; + counterDigits[2] = gSaveContext.save.saveInfo.spiderHouseMaskOrder[i]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 186); counterDigits[1] += 12; @@ -635,7 +635,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { // Bombers code // Loop over columns (i), (counterDigits[1] stores rectLeft) for (counterDigits[1] = 220, i = 0; i < 5; i++) { - counterDigits[2] = gSaveContext.save.bomberCode[i]; + counterDigits[2] = gSaveContext.save.saveInfo.bomberCode[i]; KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 210); counterDigits[1] += 12; @@ -709,24 +709,24 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { case INV_EDITOR_SECTION_RUPEE: // Rupees if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) { - gSaveContext.save.playerData.rupees -= 100; - if (gSaveContext.save.playerData.rupees < 0) { - gSaveContext.save.playerData.rupees = 0; + gSaveContext.save.saveInfo.playerData.rupees -= 100; + if (gSaveContext.save.saveInfo.playerData.rupees < 0) { + gSaveContext.save.saveInfo.playerData.rupees = 0; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) { - gSaveContext.save.playerData.rupees += 100; - if (gSaveContext.save.playerData.rupees >= 9999) { - gSaveContext.save.playerData.rupees = 9999; + gSaveContext.save.saveInfo.playerData.rupees += 100; + if (gSaveContext.save.saveInfo.playerData.rupees >= 9999) { + gSaveContext.save.saveInfo.playerData.rupees = 9999; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.playerData.rupees--; - if (gSaveContext.save.playerData.rupees < 0) { - gSaveContext.save.playerData.rupees = 0; + gSaveContext.save.saveInfo.playerData.rupees--; + if (gSaveContext.save.saveInfo.playerData.rupees < 0) { + gSaveContext.save.saveInfo.playerData.rupees = 0; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.playerData.rupees++; - if (gSaveContext.save.playerData.rupees >= 9999) { - gSaveContext.save.playerData.rupees = 9999; + gSaveContext.save.saveInfo.playerData.rupees++; + if (gSaveContext.save.saveInfo.playerData.rupees >= 9999) { + gSaveContext.save.saveInfo.playerData.rupees = 9999; } } break; @@ -734,15 +734,15 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { case INV_EDITOR_SECTION_HEALTH_CAPACITY: // Health Capacity if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.playerData.healthCapacity -= 0x10; - if (gSaveContext.save.playerData.healthCapacity < 0x30) { - gSaveContext.save.playerData.healthCapacity = 0x30; + gSaveContext.save.saveInfo.playerData.healthCapacity -= 0x10; + if (gSaveContext.save.saveInfo.playerData.healthCapacity < 0x30) { + gSaveContext.save.saveInfo.playerData.healthCapacity = 0x30; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.playerData.healthCapacity += 0x10; - if (gSaveContext.save.playerData.healthCapacity >= 0x140) { - gSaveContext.save.playerData.healthCapacity = 0x140; + gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10; + if (gSaveContext.save.saveInfo.playerData.healthCapacity >= 0x140) { + gSaveContext.save.saveInfo.playerData.healthCapacity = 0x140; } } break; @@ -806,48 +806,48 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { } else if (slot == SLOT_TRADE_DEED) { if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_MOON_TEAR; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_MOON_TEAR; } else if ((INV_CONTENT(ITEM_MOON_TEAR) >= ITEM_MOON_TEAR) && (INV_CONTENT(ITEM_MOON_TEAR) <= ITEM_DEED_MOUNTAIN)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) + 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) + 1; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_DEED_OCEAN; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_DEED_OCEAN; } else if ((INV_CONTENT(ITEM_MOON_TEAR) >= ITEM_DEED_LAND) && (INV_CONTENT(ITEM_MOON_TEAR) <= ITEM_DEED_OCEAN)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) - 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) - 1; } } } else if (slot == SLOT_TRADE_KEY_MAMA) { if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { if (INV_CONTENT(ITEM_ROOM_KEY) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_ROOM_KEY; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_ROOM_KEY; } else if ((INV_CONTENT(ITEM_ROOM_KEY) >= ITEM_ROOM_KEY) && (INV_CONTENT(ITEM_ROOM_KEY) <= ITEM_ROOM_KEY)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) + 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) + 1; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { if (INV_CONTENT(ITEM_ROOM_KEY) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_LETTER_MAMA; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_LETTER_MAMA; } else if ((INV_CONTENT(ITEM_ROOM_KEY) >= ITEM_LETTER_MAMA) && (INV_CONTENT(ITEM_ROOM_KEY) <= ITEM_LETTER_MAMA)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) - 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) - 1; } } } else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { if (INV_CONTENT(ITEM_LETTER_TO_KAFEI) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_LETTER_TO_KAFEI; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_LETTER_TO_KAFEI; } else if ((INV_CONTENT(ITEM_LETTER_TO_KAFEI) >= ITEM_LETTER_TO_KAFEI) && (INV_CONTENT(ITEM_LETTER_TO_KAFEI) <= ITEM_LETTER_TO_KAFEI)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) + 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) + 1; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { if (INV_CONTENT(ITEM_LETTER_TO_KAFEI) == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_PENDANT_OF_MEMORIES; + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_PENDANT_OF_MEMORIES; } else if ((INV_CONTENT(ITEM_LETTER_TO_KAFEI) >= ITEM_PENDANT_OF_MEMORIES) && (INV_CONTENT(ITEM_LETTER_TO_KAFEI) <= ITEM_PENDANT_OF_MEMORIES)) { - gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) - 1; + gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) - 1; } } } else if ((slot >= SLOT_BOTTLE_1) && (slot <= SLOT_BOTTLE_6)) { @@ -855,18 +855,20 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { value = ITEM_BOTTLE + slot - SLOT_BOTTLE_1; Inventory_DeleteItem(value, SLOT(ITEM_BOTTLE) + slot - SLOT_BOTTLE_1); } else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_BOTTLE; - } else if ((gSaveContext.save.inventory.items[slot] >= ITEM_BOTTLE) && - (gSaveContext.save.inventory.items[slot] <= ITEM_HYLIAN_LOACH)) { - gSaveContext.save.inventory.items[slot] = gSaveContext.save.inventory.items[slot] + 1; + if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_BOTTLE; + } else if ((gSaveContext.save.saveInfo.inventory.items[slot] >= ITEM_BOTTLE) && + (gSaveContext.save.saveInfo.inventory.items[slot] <= ITEM_HYLIAN_LOACH)) { + gSaveContext.save.saveInfo.inventory.items[slot] = + gSaveContext.save.saveInfo.inventory.items[slot] + 1; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) { - gSaveContext.save.inventory.items[slot] = ITEM_OBABA_DRINK; - } else if ((gSaveContext.save.inventory.items[slot] >= ITEM_POTION_RED) && - (gSaveContext.save.inventory.items[slot] <= ITEM_OBABA_DRINK)) { - gSaveContext.save.inventory.items[slot] = gSaveContext.save.inventory.items[slot] - 1; + if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) { + gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_OBABA_DRINK; + } else if ((gSaveContext.save.saveInfo.inventory.items[slot] >= ITEM_POTION_RED) && + (gSaveContext.save.saveInfo.inventory.items[slot] <= ITEM_OBABA_DRINK)) { + gSaveContext.save.saveInfo.inventory.items[slot] = + gSaveContext.save.saveInfo.inventory.items[slot] - 1; } } } else { @@ -874,7 +876,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { value = sSlotItems[slot]; - if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(value) = value; } else { Inventory_DeleteItem(value, slot); @@ -895,7 +897,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { if (value != 0) { CUR_FORM_EQUIP(EQUIP_SLOT_B) = value + (ITEM_SWORD_KOKIRI - 1); - gSaveContext.save.playerData.swordHealth = 100; + gSaveContext.save.saveInfo.playerData.swordHealth = 100; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; } @@ -910,7 +912,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, value); CUR_FORM_EQUIP(EQUIP_SLOT_B) = value + (ITEM_SWORD_KOKIRI - 1); - gSaveContext.save.playerData.swordHealth = 100; + gSaveContext.save.saveInfo.playerData.swordHealth = 100; } Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); @@ -974,41 +976,43 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { } else if (sCurSection == INV_EDITOR_SECTION_SWAMP_GOLD_SKULLS) { // Gold Skulls (Swamp Spider House) if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - if (((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) != 0) { - gSaveContext.save.skullTokenCount = - ((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) - 1) << 0x10) | - (gSaveContext.save.skullTokenCount & 0xFFFF); + if (((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) != 0) { + gSaveContext.save.saveInfo.skullTokenCount = + ((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) - 1) << 0x10) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF); } } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.skullTokenCount = - ((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) | - (gSaveContext.save.skullTokenCount & 0xFFFF); + gSaveContext.save.saveInfo.skullTokenCount = + ((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF); } } else if (sCurSection == INV_EDITOR_SECTION_OCEAN_GOLD_SKULLS) { // Gold Skulls (Oceans Spider House) if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - if (((u16)gSaveContext.save.skullTokenCount) != 0) { - gSaveContext.save.skullTokenCount = (((u16)gSaveContext.save.skullTokenCount - 1) & 0xFFFF) | - (gSaveContext.save.skullTokenCount & 0xFFFF0000); + if (((u16)gSaveContext.save.saveInfo.skullTokenCount) != 0) { + gSaveContext.save.saveInfo.skullTokenCount = + (((u16)gSaveContext.save.saveInfo.skullTokenCount - 1) & 0xFFFF) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000); } } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.skullTokenCount = (((u16)gSaveContext.save.skullTokenCount + 1) & 0xFFFF) | - (gSaveContext.save.skullTokenCount & 0xFFFF0000); + gSaveContext.save.saveInfo.skullTokenCount = + (((u16)gSaveContext.save.saveInfo.skullTokenCount + 1) & 0xFFFF) | + (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000); } } else if (sCurSection == INV_EDITOR_SECTION_NOTEBOOK) { // Bombers Notebook if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.inventory.questItems ^= gBitFlags[QUEST_BOMBERS_NOTEBOOK]; + gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[QUEST_BOMBERS_NOTEBOOK]; } } else if (sCurSection == INV_EDITOR_SECTION_LULLABY_INTRO) { // Goron Lullaby Intro if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.inventory.questItems ^= gBitFlags[QUEST_SONG_LULLABY_INTRO]; + gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[QUEST_SONG_LULLABY_INTRO]; } } else if (sCurSection < INV_EDITOR_SECTION_LULLABY_INTRO) { @@ -1017,7 +1021,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { //! have also been taken slot = sCurSection - INV_EDITOR_SECTION_BOSS; if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.inventory.questItems ^= gBitFlags[slot]; + gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[slot]; } } else if (sCurSection < INV_EDITOR_SECTION_DUNGEON_ITEMS) { @@ -1045,30 +1049,30 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { slot = sCurSection - INV_EDITOR_SECTION_DUNGEON_ITEMS; if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { // Map - gSaveContext.save.inventory.dungeonItems[slot] ^= 4; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 4; } if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) { // Compass - gSaveContext.save.inventory.dungeonItems[slot] ^= 2; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 2; } if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { // Boss Key - gSaveContext.save.inventory.dungeonItems[slot] ^= 1; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 1; } } else if (sCurSection < INV_EDITOR_SECTION_DOUBLE_DEFENSE) { // Stray Fairies slot = sCurSection - INV_EDITOR_SECTION_STRAY_FAIRIES; if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - gSaveContext.save.inventory.strayFairies[slot]--; - if (gSaveContext.save.inventory.strayFairies[slot] < 0) { - gSaveContext.save.inventory.strayFairies[slot] = 0; + gSaveContext.save.saveInfo.inventory.strayFairies[slot]--; + if (gSaveContext.save.saveInfo.inventory.strayFairies[slot] < 0) { + gSaveContext.save.saveInfo.inventory.strayFairies[slot] = 0; } } else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.inventory.strayFairies[slot]++; - if (gSaveContext.save.inventory.strayFairies[slot] >= 99) { - gSaveContext.save.inventory.strayFairies[slot] = 99; + gSaveContext.save.saveInfo.inventory.strayFairies[slot]++; + if (gSaveContext.save.saveInfo.inventory.strayFairies[slot] >= 99) { + gSaveContext.save.saveInfo.inventory.strayFairies[slot] = 99; } } @@ -1076,11 +1080,11 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { // Double Defence if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT) || CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - gSaveContext.save.playerData.doubleDefense ^= 1; - if (!gSaveContext.save.playerData.doubleDefense) { - gSaveContext.save.inventory.defenseHearts = 0; + gSaveContext.save.saveInfo.playerData.doubleDefense ^= 1; + if (!gSaveContext.save.saveInfo.playerData.doubleDefense) { + gSaveContext.save.saveInfo.inventory.defenseHearts = 0; } else { - gSaveContext.save.inventory.defenseHearts = 20; + gSaveContext.save.saveInfo.inventory.defenseHearts = 20; } } } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c index 474180826..149b72444 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c @@ -275,7 +275,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++, j += 4) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) { + if (((void)0, gSaveContext.save.saveInfo.inventory.items[i]) != ITEM_NONE) { if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_ITEM) && (pauseCtx->cursorSpecialPos == 0) && gPlayerFormSlotRestrictions[(void)0, gSaveContext.save.playerForm][i]) { @@ -309,8 +309,8 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { } gSPVertex(POLY_OPA_DISP++, &pauseCtx->itemVtx[j + 0], 4, 0); - KaleidoScope_DrawTexQuadRGBA32(play->state.gfxCtx, - gItemIcons[((void)0, gSaveContext.save.inventory.items[i])], 32, 32, 0); + KaleidoScope_DrawTexQuadRGBA32( + play->state.gfxCtx, gItemIcons[((void)0, gSaveContext.save.saveInfo.inventory.items[i])], 32, 32, 0); } } @@ -325,9 +325,9 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { // Loop over slots (i) and ammoIndex (j) for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++) { if (gAmmoItems[i] != ITEM_NONE) { - if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) { + if (((void)0, gSaveContext.save.saveInfo.inventory.items[i]) != ITEM_NONE) { KaleidoScope_DrawAmmoCount(pauseCtx, play->state.gfxCtx, - ((void)0, gSaveContext.save.inventory.items[i]), j); + ((void)0, gSaveContext.save.saveInfo.inventory.items[i]), j); } j++; } @@ -446,7 +446,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { } if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; + cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; } } } else if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) { @@ -459,7 +459,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { // Search for slot to move to while (true) { // Check if current cursor has an item in its slot - if (gSaveContext.save.inventory.items[cursorPoint] != ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[cursorPoint] != ITEM_NONE) { pauseCtx->cursorPoint[PAUSE_ITEM] = cursorPoint; pauseCtx->cursorXIndex[PAUSE_ITEM] = cursorXIndex; pauseCtx->cursorYIndex[PAUSE_ITEM] = cursorYIndex; @@ -497,7 +497,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { // Search for slot to move to while (true) { // Check if current cursor has an item in its slot - if (gSaveContext.save.inventory.items[cursorPoint] != ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[cursorPoint] != ITEM_NONE) { pauseCtx->cursorPoint[PAUSE_ITEM] = cursorPoint; pauseCtx->cursorXIndex[PAUSE_ITEM] = cursorXIndex; pauseCtx->cursorYIndex[PAUSE_ITEM] = cursorYIndex; @@ -568,9 +568,9 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW; if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; + cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; } else if (moveCursorResult != PAUSE_CURSOR_RESULT_SPECIAL_POS) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; + cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]]; } if (cursorItem == ITEM_NONE) { diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c index 87acfaa6c..ab598723f 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_map.c @@ -59,7 +59,7 @@ void KaleidoScope_DrawDungeonStrayFairyCount(PlayState* play) { 1 << 10); // Get digits for current number of stray fairies collected - counterDigits[1] = gSaveContext.save.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex]; + counterDigits[1] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex]; counterDigits[0] = counterDigits[1] / 10; counterDigits[1] -= (s16)(counterDigits[0] * 10); @@ -379,7 +379,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) { } else if ((pauseCtx->cursorSpecialPos == 0) && (pauseCtx->stickAdjY > 30)) { if (pauseCtx->cursorPoint[PAUSE_MAP] >= DUNGEON_FLOOR_INDEX_4) { for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 + 1); i >= 0; i--) { - if ((gSaveContext.save.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 & + if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 & gBitFlags[i]) || func_801090B0(FLOOR_INDEX_MAX - i)) { pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4; @@ -400,7 +400,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) { (pauseCtx->cursorPoint[PAUSE_MAP] <= DUNGEON_FLOOR_INDEX_1)) { for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 - 1); i <= DUNGEON_FLOOR_INDEX_0; i++) { - if ((gSaveContext.save.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 & + if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 & gBitFlags[i]) || func_801090B0(FLOOR_INDEX_MAX - i)) { pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4; @@ -642,7 +642,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { // Draw clouds over the world map // Iterate over cloud bits (n) for (n = 0; n < 15; n++) { - if (!(((void)0, gSaveContext.save.worldMapCloudVisibility) & gBitFlags[n])) { + if (!(((void)0, gSaveContext.save.saveInfo.worldMapCloudVisibility) & gBitFlags[n])) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[60 + n * 4], 4, 0); @@ -674,7 +674,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { sWorldMapDotEnvColors[0][2], 0); if (R_PAUSE_DBG_MAP_CLOUD_ON) { - gSaveContext.save.worldMapCloudVisibility |= (u16)~0x8000; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= (u16)~0x8000; pauseCtx->mapPageVtx[120].v.ob[0] = pauseCtx->mapPageVtx[122].v.ob[0] = R_PAUSE_DBG_MAP_CLOUD_X; @@ -706,7 +706,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); if (R_PAUSE_DBG_MAP_CLOUD_ON) { - gSaveContext.save.worldMapCloudVisibility |= (u16)~0x8000; + gSaveContext.save.saveInfo.worldMapCloudVisibility |= (u16)~0x8000; pauseCtx->mapPageVtx[164].v.ob[0] = pauseCtx->mapPageVtx[166].v.ob[0] = R_PAUSE_DBG_MAP_CLOUD_X; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c index 219ecd7a9..61157ffce 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c @@ -221,7 +221,7 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) { for (j = 0, i = 0; i < NUM_MASK_SLOTS; i++, j += 4) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - if (((void)0, gSaveContext.save.inventory.items[i + NUM_ITEM_SLOTS]) != ITEM_NONE) { + if (((void)0, gSaveContext.save.saveInfo.inventory.items[i + NUM_ITEM_SLOTS]) != ITEM_NONE) { if (!CHECK_GIVEN_MASK_ON_MOON(i)) { if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_MASK) && (pauseCtx->cursorSpecialPos == 0) && @@ -258,8 +258,8 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->maskVtx[j + 0], 4, 0); KaleidoScope_DrawTexQuadRGBA32( - play->state.gfxCtx, gItemIcons[((void)0, gSaveContext.save.inventory.items[i + NUM_ITEM_SLOTS])], - 32, 32, 0); + play->state.gfxCtx, + gItemIcons[((void)0, gSaveContext.save.saveInfo.inventory.items[i + NUM_ITEM_SLOTS])], 32, 32, 0); } } } @@ -371,7 +371,8 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { } if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; + cursorItem = + gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) { cursorItem = ITEM_NONE; } @@ -387,7 +388,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { // Search for slot to move to while (true) { // Check if current cursor has an item in its slot - if ((gSaveContext.save.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) && + if ((gSaveContext.save.saveInfo.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) && !CHECK_GIVEN_MASK_ON_MOON(cursorPoint)) { pauseCtx->cursorPoint[PAUSE_MASK] = cursorPoint; pauseCtx->cursorXIndex[PAUSE_MASK] = cursorXIndex; @@ -428,7 +429,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { // Search for slot to move to while (true) { // Check if current cursor has an item in its slot - if ((gSaveContext.save.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) && + if ((gSaveContext.save.saveInfo.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) && !CHECK_GIVEN_MASK_ON_MOON(cursorPoint)) { pauseCtx->cursorPoint[PAUSE_MASK] = cursorPoint; pauseCtx->cursorXIndex[PAUSE_MASK] = cursorXIndex; @@ -500,12 +501,14 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) { pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW; if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; + cursorItem = + gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) { cursorItem = ITEM_NONE; } } else if (moveCursorResult != PAUSE_CURSOR_RESULT_SPECIAL_POS) { - cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; + cursorItem = + gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS]; if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) { cursorItem = ITEM_NONE; } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 721ca7a18..1377f287f 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -811,7 +811,7 @@ void KaleidoScope_Update(PlayState* play) { } else { play_sound(NA_SE_SY_PIECE_OF_HEART); Play_SaveCycleSceneFlags(&play->state); - gSaveContext.save.playerData.savedSceneId = play->sceneId; + gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId; func_8014546C(sramCtx); if (gSaveContext.unk_3F3F == 0) { pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_5; @@ -1072,8 +1072,8 @@ void KaleidoScope_Update(PlayState* play) { play_sound(NA_SE_SY_PIECE_OF_HEART); pauseCtx->promptChoice = PAUSE_PROMPT_YES; Play_SaveCycleSceneFlags(&play->state); - gSaveContext.save.playerData.savedSceneId = play->sceneId; - gSaveContext.save.playerData.health = 0x30; + gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId; + gSaveContext.save.saveInfo.playerData.health = 0x30; func_8014546C(sramCtx); if (gSaveContext.unk_3F3F == 0) { pauseCtx->state = PAUSE_STATE_GAMEOVER_8; @@ -1145,15 +1145,15 @@ void KaleidoScope_Update(PlayState* play) { func_80169FDC(&play->state); gSaveContext.respawnFlag = -2; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; - gSaveContext.save.playerData.health = 0x30; + gSaveContext.save.saveInfo.playerData.health = 0x30; Audio_SetSpec(0xA); gSaveContext.healthAccumulator = 0; gSaveContext.magicState = MAGIC_STATE_IDLE; gSaveContext.magicFlag = 0; gSaveContext.magicCapacity = 0; - gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic; - gSaveContext.save.playerData.magicLevel = 0; - gSaveContext.save.playerData.magic = 0; + gSaveContext.magicFillTarget = gSaveContext.save.saveInfo.playerData.magic; + gSaveContext.save.saveInfo.playerData.magicLevel = 0; + gSaveContext.save.saveInfo.playerData.magic = 0; } else { // PAUSE_PROMPT_NO STOP_GAMESTATE(&play->state); SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, sizeof(TitleSetupState)); |
