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
This commit is contained in:
Anghelo Carvajal
2023-04-18 18:54:32 -04:00
committed by GitHub
parent b8af819165
commit 3c107cb148
81 changed files with 1126 additions and 1051 deletions
+23 -23
View File
@@ -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);
}
+102 -102
View File
@@ -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;
+5 -4
View File
@@ -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;
+1 -1
View File
@@ -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;
}
+12 -9
View File
@@ -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;
+2 -2
View File
@@ -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;
+3 -3
View File
@@ -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;
}
}
+15 -14
View File
@@ -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;
+3 -2
View File
@@ -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) {
+133 -126
View File
@@ -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;
+3 -3
View File
@@ -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;
}
}
+1
View File
@@ -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"
+8 -8
View File
@@ -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);
}
}
+246 -243
View File
@@ -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) {
@@ -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;
@@ -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);
+5 -5
View File
@@ -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;
@@ -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;
}
@@ -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:
@@ -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;
}
@@ -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;
}
@@ -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;
}
@@ -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;
@@ -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;
@@ -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;
}
}
@@ -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;
@@ -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) {
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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 {
+10 -8
View File
@@ -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;
}
}
}
+15 -15
View File
@@ -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);
@@ -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);
}
}
@@ -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) {
+3 -3
View File
@@ -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;
+5 -5
View File
@@ -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;
@@ -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?
+17 -17
View File
@@ -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;
+4 -4
View File
@@ -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;
}
}
+4 -4
View File
@@ -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);
@@ -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);
@@ -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;
+2 -2
View File
@@ -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;
@@ -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;
+9 -9
View File
@@ -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 {
@@ -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
@@ -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) {
@@ -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,
+6 -6
View File
@@ -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 {
+1 -1
View File
@@ -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) {
+2 -2
View File
@@ -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;
+2 -2
View File
@@ -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) {
@@ -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;
}
}
+7 -5
View File
@@ -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) &&
+1 -1
View File
@@ -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;
}
@@ -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.
@@ -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);
@@ -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;
}
@@ -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);
}
+1 -1
View File
@@ -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;
}
@@ -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!
@@ -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;
@@ -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;
@@ -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);
}
}
+12 -12
View File
@@ -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);
}
}
@@ -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;
}
}
+1 -1
View File
@@ -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);
@@ -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)) {
@@ -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);
}
@@ -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
@@ -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;
}
}
}
@@ -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) {
@@ -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;
@@ -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;
}
@@ -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));