mirror of
https://github.com/zeldaret/mm.git
synced 2026-05-25 15:25:04 -04:00
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:
+23
-23
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user