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