From 3c107cb148d784e2af4a347dc78f25b1697410be Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Tue, 18 Apr 2023 18:54:32 -0400 Subject: [PATCH] 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 --- docs/tutorial/advanced_control_flow.md | 42 +- docs/tutorial/documenting.md | 4 +- docs/tutorial/other_functions.md | 2 +- include/macros.h | 2 +- include/z64save.h | 168 +++--- src/code/code_8012EC80.c | 46 +- src/code/flg_set.c | 204 ++++---- src/code/z_demo.c | 9 +- src/code/z_elf_message.c | 2 +- src/code/z_en_item00.c | 21 +- src/code/z_game_over.c | 4 +- src/code/z_kaleido_setup.c | 6 +- src/code/z_lifemeter.c | 29 +- src/code/z_map_exp.c | 5 +- src/code/z_parameter.c | 259 +++++----- src/code/z_scene.c | 6 +- src/code/z_shrink_window.c | 1 + src/code/z_snap.c | 16 +- src/code/z_sram_NES.c | 489 +++++++++--------- .../ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c | 2 +- .../actors/ovl_Dm_Char02/z_dm_char02.c | 2 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 10 +- .../actors/ovl_Door_Shutter/z_door_shutter.c | 4 +- .../actors/ovl_Door_Warp1/z_door_warp1.c | 28 +- src/overlays/actors/ovl_Elf_Msg6/z_elf_msg6.c | 2 +- .../ovl_En_Akindonuts/z_en_akindonuts.c | 8 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 12 +- .../actors/ovl_En_Bigslime/z_en_bigslime.c | 2 +- .../ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c | 4 +- .../actors/ovl_En_Bombers2/z_en_bombers2.c | 3 +- .../actors/ovl_En_Bomjima/z_en_bomjima.c | 12 +- .../actors/ovl_En_Bomjimb/z_en_bomjimb.c | 11 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 4 +- src/overlays/actors/ovl_En_Door/z_en_door.c | 4 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 18 +- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 30 +- .../actors/ovl_En_Elforg/z_en_elforg.c | 4 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 68 +-- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 6 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 10 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 56 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 34 +- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 8 +- src/overlays/actors/ovl_En_In/z_en_in.c | 8 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 2 +- .../actors/ovl_En_Kaizoku/z_en_kaizoku.c | 6 +- src/overlays/actors/ovl_En_Kbt/z_en_kbt.c | 4 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 4 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 18 +- .../actors/ovl_En_Kujiya/z_en_kujiya.c | 16 +- .../actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c | 8 +- .../actors/ovl_En_M_Thunder/z_en_m_thunder.c | 2 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 12 +- src/overlays/actors/ovl_En_Mk/z_en_mk.c | 2 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 4 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 4 +- .../ovl_En_Okarina_Tag/z_en_okarina_tag.c | 2 +- src/overlays/actors/ovl_En_Osn/z_en_osn.c | 12 +- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 2 +- .../actors/ovl_En_Racedog/z_en_racedog.c | 5 +- .../actors/ovl_En_S_Goro/z_en_s_goro.c | 2 +- .../actors/ovl_En_Scopenuts/z_en_scopenuts.c | 5 +- .../actors/ovl_En_Sekihi/z_en_sekihi.c | 3 +- src/overlays/actors/ovl_En_Sth/z_en_sth.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 4 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 2 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 8 +- .../actors/ovl_En_Tru_Mt/z_en_tru_mt.c | 6 +- src/overlays/actors/ovl_En_Zod/z_en_zod.c | 24 +- .../actors/ovl_En_Zoraegg/z_en_zoraegg.c | 6 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 2 +- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c | 2 +- .../actors/ovl_Obj_Usiyane/z_obj_usiyane.c | 4 +- .../ovl_Obj_Warpstone/z_obj_warpstone.h | 2 +- .../ovl_kaleido_scope/z_kaleido_debug.c | 182 +++---- .../ovl_kaleido_scope/z_kaleido_item.c | 20 +- .../ovl_kaleido_scope/z_kaleido_map.c | 12 +- .../ovl_kaleido_scope/z_kaleido_mask.c | 19 +- .../ovl_kaleido_scope/z_kaleido_scope_NES.c | 14 +- tools/namefixer.py | 78 ++- tools/weekeventregconvert.py | 12 +- 81 files changed, 1126 insertions(+), 1051 deletions(-) diff --git a/docs/tutorial/advanced_control_flow.md b/docs/tutorial/advanced_control_flow.md index 528b052f99..43e9e6d460 100644 --- a/docs/tutorial/advanced_control_flow.md +++ b/docs/tutorial/advanced_control_flow.md @@ -81,7 +81,7 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) { void func_80952734(EnMs* this, PlayState* play) { s16 temp_v1 = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; - if (gSaveContext.save.inventory.items[10] == ITEM_NONE) { + if (gSaveContext.save.saveInfo.inventory.items[10] == ITEM_NONE) { this->actor.textId = 0x92E; } else { this->actor.textId = 0x932; @@ -187,12 +187,12 @@ void func_809527F8(EnMs* this, PlayState* play) { return; } Message_CloseTextbox(play); - if ((s32) gSaveContext.save.playerData.rupees < 0xA) { + if ((s32) gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; } - if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); return; @@ -274,14 +274,14 @@ block_7: goto block_16; block_11: Message_CloseTextbox(play); - if ((s32) gSaveContext.save.playerData.rupees >= 0xA) { + if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) { goto block_13; } play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; block_13: - if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] < 0x14) { + if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] < 0x14) { goto block_15; } play_sound(0x4806U); @@ -312,7 +312,7 @@ which in many ways looks worse: you can see why the use of gotos in code is stro The simplest sort of block label to eliminate is one that is only used once, and where the corresponding goto jumps over a simple block of code with no extra internal control flow structure. There are two obvious examples of this here, the first being ```C - if ((s32) gSaveContext.save.playerData.rupees >= 0xA) { + if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) { goto block_13; } play_sound(0x4806U); @@ -324,7 +324,7 @@ block_13: Currently, this says to jump over the code block `play_sound...` if the condition in the if is satisfied. In non-goto terms, this means that the block should be run if the condition is *not* satisfied. This also illustrates a general property of goto-only mode: you have to reverse the senses of all of the ifs. Therefore the appropriate approach is to swap the if round, put the code block inside, and remove the goto and the label: ```C - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; @@ -378,12 +378,12 @@ block_7: block_11: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; } - if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); return; @@ -447,12 +447,12 @@ block_7: block_11: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; } - if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); return; @@ -497,12 +497,12 @@ So let us rewrite the entire second half as a switch: case 0: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); return; } - if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); return; @@ -533,10 +533,10 @@ There's a couple of other obvious things here: case 0: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); - } else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + } else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); } else { @@ -598,10 +598,10 @@ block_7: case 0: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); - } else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + } else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); } else { @@ -663,10 +663,10 @@ void func_809527F8(EnMs* this, PlayState* play) { case 0: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); - } else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + } else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); } else { @@ -715,10 +715,10 @@ void func_809527F8(EnMs* this, PlayState* play) { case 0: Message_CloseTextbox(play); - if (gSaveContext.save.playerData.rupees < 0xA) { + if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x935U); - } else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) { + } else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) { play_sound(0x4806U); Message_ContinueTextbox(play, 0x937U); } else { diff --git a/docs/tutorial/documenting.md b/docs/tutorial/documenting.md index 7ecd37ccbf..71f3347e3b 100644 --- a/docs/tutorial/documenting.md +++ b/docs/tutorial/documenting.md @@ -185,7 +185,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) { if (this->actor.textId == 0x2AD9) { Flags_SetSwitch(play, this->actor.params); Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f); - if ((gSaveContext.save.weekEventReg[63] & 0x80)) { + if ((gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)) { this->actor.textId = 0x2ADF; } else { this->actor.textId = 0x2ADA; @@ -516,7 +516,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) { if (this->actor.textId == 0x2AD9) { // "Welcome..." Flags_SetSwitch(play, this->actor.params); Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f); - if (gSaveContext.save.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting + if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended) } else { this->actor.textId = 0x2ADA; // Mayor's office is on the left (meeting ongoing) diff --git a/docs/tutorial/other_functions.md b/docs/tutorial/other_functions.md index c6ac63a649..f73902ca58 100644 --- a/docs/tutorial/other_functions.md +++ b/docs/tutorial/other_functions.md @@ -404,7 +404,7 @@ There remains one thing we need to fix before trying to compile it, namely `*(&g /* 0x0F5C */ u32 regionsVisited; // "area_arrival" ``` -so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.weekEventReg[63] & 0x80)` will do. +so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.saveInfo.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)` will do. Running `./diff.py -mwo3 func_80C102D4` and scrolling down, we discover that this doesn't match! diff --git a/include/macros.h b/include/macros.h index d572e9ccf6..70e07259f6 100644 --- a/include/macros.h +++ b/include/macros.h @@ -60,7 +60,7 @@ #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) // To be used with `Magic_Add`, but ensures enough magic is added to fill the magic bar to capacity -#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER) +#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER) #define CONTROLLER1(gameState) (&(gameState)->input[0]) #define CONTROLLER2(gameState) (&(gameState)->input[1]) diff --git a/include/z64save.h b/include/z64save.h index afabcce34c..362a16e924 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -252,61 +252,65 @@ typedef struct SavePlayerData { /* 0x26 */ s16 savedSceneId; // "scene_data_ID" } SavePlayerData; // size = 0x28 +typedef struct SaveInfo { + /* 0x000 */ SavePlayerData playerData; + /* 0x028 */ ItemEquips equips; + /* 0x04C */ Inventory inventory; + /* 0x0D4 */ PermanentSceneFlags permanentSceneFlags[120]; + /* 0xDF4 */ UNK_TYPE1 unk_DF4[0x54]; + /* 0xE48 */ u32 dekuPlaygroundHighScores[3]; + /* 0xE54 */ u32 pictoFlags0; // Flags set by `PictoActor`s if pictograph is valid + /* 0xE58 */ u32 pictoFlags1; // Flags set by Snap_ValidatePictograph() to record errors; volatile since that function is run many times in succession + /* 0xE5C */ u32 unk_E5C; + /* 0xE60 */ u32 unk_E60; + /* 0xE64 */ u32 unk_E64[7]; // Invadepoh flags + /* 0xE80 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes + /* 0xE9C */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls + /* 0xEA0 */ u32 unk_EA0; // Gossic stone heart piece flags + /* 0xEA4 */ u32 unk_EA4; + /* 0xEA8 */ u32 unk_EA8[2]; // Related to blue warps + /* 0xEB0 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man + /* 0xEB4 */ u32 unk_EB4; + /* 0xEB8 */ u32 bankRupees; + /* 0xEBC */ u32 unk_EBC; + /* 0xEC0 */ u32 unk_EC0; // Fishing flags + /* 0xEC4 */ u32 unk_EC4; + /* 0xEC8 */ u32 horseBackBalloonHighScore; + /* 0xECC */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits) + /* 0xED0 */ u32 shootingGalleryHighScores; // High scores for both shooting galleries. Town uses lower 16 bits, Swamp uses higher 16 bits. + /* 0xED4 */ u8 weekEventReg[100]; // "week_event_reg" + /* 0xF38 */ u32 regionsVisited; // "area_arrival" + /* 0xF3C */ u32 worldMapCloudVisibility; // "cloud_clear" + /* 0xF40 */ u8 unk_F40; // "oca_rec_flag" has scarecrows song + /* 0xF41 */ u8 unk_F41; // "oca_rec_flag8" scarecrows song set? + /* 0xF42 */ u8 scarecrowSpawnSong[128]; + /* 0xFC2 */ s8 bombersCaughtNum; // "aikotoba_index" + /* 0xFC3 */ s8 bombersCaughtOrder[5]; // "aikotoba_table" + /* 0xFC8 */ s8 lotteryCodes[3][3]; // "numbers_table", Preset lottery codes + /* 0xFD1 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table" + /* 0xFD7 */ s8 bomberCode[5]; // "bombers_aikotoba_table" + /* 0xFDC */ HorseData horseData; + /* 0xFE6 */ u16 checksum; // "check_sum" +} SaveInfo; // size = 0xFE8 + typedef struct Save { - /* 0x0000 */ s32 entrance; // "scene_no" - /* 0x0004 */ u8 equippedMask; // "player_mask" - /* 0x0005 */ u8 isFirstCycle; // "opening_flag" - /* 0x0006 */ u8 unk_06; - /* 0x0007 */ u8 linkAge; // "link_age" - /* 0x0008 */ s32 cutscene; // "day_time" - /* 0x000C */ u16 time; // "zelda_time" - /* 0x000E */ u16 owlSaveLocation; - /* 0x0010 */ s32 isNight; // "asahiru_fg" - /* 0x0014 */ s32 timeSpeedOffset; // "change_zelda_time" - /* 0x0018 */ s32 day; // "totalday" - /* 0x001C */ s32 daysElapsed; // "eventday" - /* 0x0020 */ u8 playerForm; // "player_character" - /* 0x0021 */ u8 snowheadCleared; // "spring_flag" - /* 0x0022 */ u8 hasTatl; // "bell_flag" - /* 0x0023 */ u8 isOwlSave; - /* 0x0024 */ SavePlayerData playerData; - /* 0x004C */ ItemEquips equips; - /* 0x0070 */ Inventory inventory; - /* 0x00F8 */ PermanentSceneFlags permanentSceneFlags[120]; - /* 0x0E18 */ u8 unk_E18[0x54]; - /* 0x0E6C */ u32 dekuPlaygroundHighScores[3]; - /* 0x0E78 */ u32 pictoFlags0; // Flags set by `PictoActor`s if pictograph is valid - /* 0x0E7C */ u32 pictoFlags1; // Flags set by Snap_ValidatePictograph() to record errors; volatile since that function is run many times in succession - /* 0x0E80 */ u32 unk_E80; - /* 0x0E84 */ u32 unk_E84; - /* 0x0E88 */ u32 unk_E88[7]; // Invadepoh flags - /* 0x0EA4 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes - /* 0x0EC0 */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls - /* 0x0EC4 */ u32 unk_EC4; // Gossic stone heart piece flags - /* 0x0EC8 */ u32 unk_EC8; - /* 0x0ECC */ u32 unk_ECC[2]; // Related to blue warps - /* 0x0ED4 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man - /* 0x0ED8 */ u32 unk_DD8; - /* 0x0EDC */ u32 bankRupees; - /* 0x0EE0 */ u32 unk_EE0; - /* 0x0EE4 */ u32 unk_EE4; // Fishing flags - /* 0x0EE8 */ u32 unk_EE8; - /* 0x0EEC */ u32 horseBackBalloonHighScore; - /* 0x0EF0 */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits) - /* 0x0EF4 */ u32 shootingGalleryHighScores; // High scores for both shooting galleries. Town uses lower 16 bits, Swamp uses higher 16 bits. - /* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg" - /* 0x0F5C */ u32 regionsVisited; // "area_arrival" - /* 0x0F60 */ u32 worldMapCloudVisibility; // "cloud_clear" - /* 0x0F64 */ u8 unk_F64; // "oca_rec_flag" has scarecrows song - /* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8" scarecrows song set? - /* 0x0F66 */ u8 scarecrowSpawnSong[128]; - /* 0x0FE6 */ s8 bombersCaughtNum; // "aikotoba_index" - /* 0x0FE7 */ s8 bombersCaughtOrder[5]; // "aikotoba_table" - /* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table", Preset lottery codes - /* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table" - /* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table" - /* 0x1000 */ HorseData horseData; - /* 0x100A */ u16 checksum; // "check_sum" + /* 0x00 */ s32 entrance; // "scene_no" + /* 0x04 */ u8 equippedMask; // "player_mask" + /* 0x05 */ u8 isFirstCycle; // "opening_flag" + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 linkAge; // "link_age" + /* 0x08 */ s32 cutscene; // "day_time" + /* 0x0C */ u16 time; // "zelda_time" + /* 0x0E */ u16 owlSaveLocation; + /* 0x10 */ s32 isNight; // "asahiru_fg" + /* 0x14 */ s32 timeSpeedOffset; // "change_zelda_time" + /* 0x18 */ s32 day; // "totalday" + /* 0x1C */ s32 daysElapsed; // "eventday" + /* 0x20 */ u8 playerForm; // "player_character" + /* 0x21 */ u8 snowheadCleared; // "spring_flag" + /* 0x22 */ u8 hasTatl; // "bell_flag" + /* 0x23 */ u8 isOwlSave; + /* 0x24 */ SaveInfo saveInfo; } Save; // size = 0x100C typedef struct SaveContext { @@ -429,41 +433,41 @@ typedef enum { #define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm) #define SLOT(item) gItemSlots[item] -#define AMMO(item) gSaveContext.save.inventory.ammo[SLOT(item)] -#define INV_CONTENT(item) gSaveContext.save.inventory.items[SLOT(item)] -#define GET_INV_CONTENT(item) ((void)0, gSaveContext.save.inventory.items)[SLOT(item)] +#define AMMO(item) gSaveContext.save.saveInfo.inventory.ammo[SLOT(item)] +#define INV_CONTENT(item) gSaveContext.save.saveInfo.inventory.items[SLOT(item)] +#define GET_INV_CONTENT(item) ((void)0, gSaveContext.save.saveInfo.inventory.items)[SLOT(item)] #define CUR_FORM ((gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.save.playerForm) -#define GET_SAVE_EQUIPS_EQUIPMENT ((void)0, gSaveContext.save.equips.equipment) -#define GET_SAVE_INVENTORY_UPGRADES ((void)0, gSaveContext.save.inventory.upgrades) -#define GET_SAVE_INVENTORY_QUEST_ITEMS ((void)0, gSaveContext.save.inventory.questItems) +#define GET_SAVE_EQUIPS_EQUIPMENT ((void)0, gSaveContext.save.saveInfo.equips.equipment) +#define GET_SAVE_INVENTORY_UPGRADES ((void)0, gSaveContext.save.saveInfo.inventory.upgrades) +#define GET_SAVE_INVENTORY_QUEST_ITEMS ((void)0, gSaveContext.save.saveInfo.inventory.questItems) #define GET_CUR_EQUIP_VALUE(equip) ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipMasks[equip]) >> gEquipShifts[equip]) -#define CUR_UPG_VALUE(upg) ((gSaveContext.save.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) +#define CUR_UPG_VALUE(upg) ((gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) #define GET_CUR_UPG_VALUE(upg) ((GET_SAVE_INVENTORY_UPGRADES & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) -#define SET_EQUIP_VALUE(equip, value) (gSaveContext.save.equips.equipment = ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipNegMasks[equip]) | (u16)((u16)(value) << gEquipShifts[equip]))) +#define SET_EQUIP_VALUE(equip, value) (gSaveContext.save.saveInfo.equips.equipment = ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipNegMasks[equip]) | (u16)((u16)(value) << gEquipShifts[equip]))) -#define BUTTON_ITEM_EQUIP(form, button) (gSaveContext.save.equips.buttonItems[form][button]) +#define BUTTON_ITEM_EQUIP(form, button) (gSaveContext.save.saveInfo.equips.buttonItems[form][button]) #define CUR_FORM_EQUIP(button) BUTTON_ITEM_EQUIP(CUR_FORM, button) -#define C_SLOT_EQUIP(form, button) (gSaveContext.save.equips.cButtonSlots[form][button]) +#define C_SLOT_EQUIP(form, button) (gSaveContext.save.saveInfo.equips.cButtonSlots[form][button]) #define CHECK_QUEST_ITEM(item) (GET_SAVE_INVENTORY_QUEST_ITEMS & gBitFlags[item]) -#define SET_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS | gBitFlags[item])) -#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS & (-1 - gBitFlags[item]))) +#define SET_QUEST_ITEM(item) (gSaveContext.save.saveInfo.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS | gBitFlags[item])) +#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.saveInfo.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS & (-1 - gBitFlags[item]))) #define GET_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) >> QUEST_HEART_PIECE_COUNT) #define EQ_MAX_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) == (4 << QUEST_HEART_PIECE_COUNT)) #define LEQ_MAX_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) <= (4 << QUEST_HEART_PIECE_COUNT)) -#define INCREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT)) -#define DECREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems -= (1 << QUEST_HEART_PIECE_COUNT)) -#define RESET_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT)) +#define INCREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT)) +#define DECREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems -= (1 << QUEST_HEART_PIECE_COUNT)) +#define RESET_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT)) -#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item]) -#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item]) -#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.inventory.dungeonKeys[(void)0, dungeonIndex]) +#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item]) +#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item]) +#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonKeys[(void)0, dungeonIndex]) #define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn))) #define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == EQUIP_SLOT_B ? C_SLOT_EQUIP(CUR_FORM, btn) : C_SLOT_EQUIP(0, btn))) @@ -491,21 +495,21 @@ typedef enum { #define STOLEN_ITEM_NONE (0) -#define STOLEN_ITEM_1 ((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18) -#define STOLEN_ITEM_2 ((gSaveContext.save.stolenItems & 0x00FF0000) >> 0x10) +#define STOLEN_ITEM_1 ((gSaveContext.save.saveInfo.stolenItems & 0xFF000000) >> 0x18) +#define STOLEN_ITEM_2 ((gSaveContext.save.saveInfo.stolenItems & 0x00FF0000) >> 0x10) #define SET_STOLEN_ITEM_1(itemId) \ - (gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & ~0xFF000000) | ((itemId & 0xFF) << 0x18)) + (gSaveContext.save.saveInfo.stolenItems = (gSaveContext.save.saveInfo.stolenItems & ~0xFF000000) | ((itemId & 0xFF) << 0x18)) #define SET_STOLEN_ITEM_2(itemId) \ - (gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & ~0x00FF0000) | ((itemId & 0xFF) << 0x10)) + (gSaveContext.save.saveInfo.stolenItems = (gSaveContext.save.saveInfo.stolenItems & ~0x00FF0000) | ((itemId & 0xFF) << 0x10)) -#define GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() ((s32)(gSaveContext.save.shootingGalleryHighScores & 0xFFFF)) -#define GET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE() ((s32)((gSaveContext.save.shootingGalleryHighScores & 0xFFFF0000) >> 0x10)) -#define SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = (gSaveContext.save.shootingGalleryHighScores & 0xFFFF0000) | ((u16)(score))) -#define SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = ((gSaveContext.save.shootingGalleryHighScores) & 0xFFFF) | ((u16)(score) << 0x10)) +#define GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() ((s32)(gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF)) +#define GET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE() ((s32)((gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF0000) >> 0x10)) +#define SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.saveInfo.shootingGalleryHighScores = (gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF0000) | ((u16)(score))) +#define SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.saveInfo.shootingGalleryHighScores = ((gSaveContext.save.saveInfo.shootingGalleryHighScores) & 0xFFFF) | ((u16)(score) << 0x10)) /** - * gSaveContext.save.weekEventReg + * gSaveContext.save.saveInfo.weekEventReg */ #define PACK_WEEKEVENTREG_FLAG(index, mask) (((index) << 8) | (mask)) @@ -1448,7 +1452,7 @@ typedef enum { #define WEEKEVENTREG_99_40 PACK_WEEKEVENTREG_FLAG(99, 0x40) #define WEEKEVENTREG_99_80 PACK_WEEKEVENTREG_FLAG(99, 0x80) -#define WEEKEVENTREG(index) (gSaveContext.save.weekEventReg[(index)]) +#define WEEKEVENTREG(index) (gSaveContext.save.saveInfo.weekEventReg[(index)]) #define GET_WEEKEVENTREG(index) ((void)0, WEEKEVENTREG(index)) #define CHECK_WEEKEVENTREG(flag) (WEEKEVENTREG((flag) >> 8) & ((flag) & 0xFF)) diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index d120da618b..ca8a3eb1a9 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 a22b62a0ef..bb25818a60 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 08d56de69d..dc32223a88 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 8308240244..1b005443db 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 0c19236dc3..44e8703a2f 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 4e24eb72e8..d0e5e45f22 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 dac0d83001..f873ea8ffa 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 06dd1a0c7c..d6f2edf2a3 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 381387c5e0..912926cbbd 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 be5cc01bcd..1072587afe 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 1fa3ed54ae..fc47c9bf7a 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 21d8bde405..c4084a18c0 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 e9663b02fc..9361cc1e05 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 c32a76d761..c269e30f4c 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 dfb22deee0..1550711e18 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 56c02526bc..f1759b7fb9 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 83bdfe71a4..f8210a9de4 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 8a9d26a4d5..a0eefb83a1 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 01df277150..d942903a18 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 1507da5e26..d05c099e90 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 87f39a5108..99779f20b3 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 97bc517c9c..0f66d5cf4d 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 5eed1b1d5e..47df4b75b6 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 7217dbc65c..6b54c387cf 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 0c3bdf7450..9591fbbb94 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 611c6144b9..a1a1b0a321 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 fc11e86c11..7cc78d9cff 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 a173834c7a..360cf2c494 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 478f071b36..aa9d9c89a0 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 fd800c27f5..751c24aab7 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 2189bba99d..7f6067d9c2 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 28b086fbb1..542d739e61 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 e91632700a..4bbd4b5cc3 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 6febd3dca6..2626d1cbdb 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 3d75c729c4..0575494c8e 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 350ce734c9..fba0c11188 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 28267a485e..90e449be3c 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 b014274061..003ac43e09 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 27c8de507a..8bedd48cfa 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 8b3ec59564..263b4fab49 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 0cfe7ae756..e4e01467fe 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 d2847a39d0..b3b8ca2958 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 ee7e0fe847..813852b44b 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 356af73f7d..56fb61bed5 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 1de7fc7281..3e54fd0f92 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 5b20284867..0bd619a9c9 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 3d97839a07..0586b21117 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 0a1ec063a8..0bbbce26a2 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 054f39c81e..930fb13d56 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 291fa83ceb..366bddef36 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 d7a4fff3de..3cbf7e2ad4 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 c53a292325..01cbb5dda7 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 e9e12e311e..e5540a2927 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 fb4c54c3d4..a5bb03a72a 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 c97a0362aa..3ffde38cd7 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 debcc77b92..14904e5b7d 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 c7ccaec9a5..1c82887b49 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 ff12d798f4..538f7d304c 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 3ff396920f..f10d387d19 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 b0c052b5c8..01c8e96a52 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 180bc59d4e..59af8f7e8e 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 491d94227d..d472077ec9 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 9928146b1b..09ec801726 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 1ef62420bc..7808e8089a 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 44a7055395..17abb250df 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 1eb6b020b1..a24791080e 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 94e9c85c16..00dd90b94f 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 d527e4937b..81efe0fc52 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 a2db609d6f..241eb825dc 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 b8858b7ca4..3d7e08221c 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 4741808264..149b724442 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 87acfaa6cd..ab598723fc 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 219ecd7a9e..61157ffcef 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 721ca7a186..1377f287f4 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)); diff --git a/tools/namefixer.py b/tools/namefixer.py index 7a88f79d9f..ad78411f86 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -761,41 +761,41 @@ wordReplace = { "gSaveContext.unk_3F22": "gSaveContext.hudVisibility", "gSaveContext.unk_3F24": "gSaveContext.hudVisibilityTimer", "gSaveContext.unk_3F26": "gSaveContext.prevHudVisibility", - "gSaveContext.weekEventReg": "gSaveContext.save.weekEventReg", + "gSaveContext.weekEventReg": "gSaveContext.save.saveInfo.weekEventReg", "gSaveContext.playerForm": "gSaveContext.save.playerForm", "gSaveContext.day": "gSaveContext.save.day", "gSaveContext.isNight": "gSaveContext.save.isNight", "gSaveContext.environmentTime": "gSaveContext.skyboxTime", - "gSaveContext.naviTimer": "gSaveContext.save.playerData.tatlTimer", - "gSaveContext.tatlTimer": "gSaveContext.save.playerData.tatlTimer", - "gSaveContext.rupees": "gSaveContext.save.playerData.rupees", - "gSaveContext.magicAcquired": "gSaveContext.save.playerData.isMagicAcquired", - "gSaveContext.doubleMagic": "gSaveContext.save.playerData.isDoubleMagicAcquired", - "gSaveContext.doubleDefense": "gSaveContext.save.playerData.doubleDefense", - "gSaveContext.playerName": "gSaveContext.save.playerData.playerName", - "gSaveContext.inventory": "gSaveContext.save.inventory", + "gSaveContext.naviTimer": "gSaveContext.save.saveInfo.playerData.tatlTimer", + "gSaveContext.tatlTimer": "gSaveContext.save.saveInfo.playerData.tatlTimer", + "gSaveContext.rupees": "gSaveContext.save.saveInfo.playerData.rupees", + "gSaveContext.magicAcquired": "gSaveContext.save.saveInfo.playerData.isMagicAcquired", + "gSaveContext.doubleMagic": "gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired", + "gSaveContext.doubleDefense": "gSaveContext.save.saveInfo.playerData.doubleDefense", + "gSaveContext.playerName": "gSaveContext.save.saveInfo.playerData.playerName", + "gSaveContext.inventory": "gSaveContext.save.saveInfo.inventory", "gSaveContext.equippedMask": "gSaveContext.save.equippedMask", "gSaveContext.entranceIndex": "gSaveContext.save.entrance", "gSaveContext.time": "gSaveContext.save.time", "gSaveContext.save.daySpeed": "gSaveContext.save.timeSpeedOffset", "gSaveContext.unk_14": "gSaveContext.save.timeSpeedOffset", - "gSaveContext.unk_FE6": "gSaveContext.save.bombersCaughtNum", - "gSaveContext.unk_FE7": "gSaveContext.save.bombersCaughtOrder", + "gSaveContext.unk_FE6": "gSaveContext.save.saveInfo.bombersCaughtNum", + "gSaveContext.unk_FE7": "gSaveContext.save.saveInfo.bombersCaughtOrder", "gSaveContext.linkAge": "gSaveContext.save.linkAge", - "gSaveContext.dekuPlaygroundHighScores": "gSaveContext.save.dekuPlaygroundHighScores", - "gSaveContext.lotteryCodeGuess": "gSaveContext.save.lotteryCodeGuess", - "gSaveContext.permanentSceneFlags": "gSaveContext.save.permanentSceneFlags", - "gSaveContext.bomberCode": "gSaveContext.save.bomberCode", - "gSaveContext.skullTokenCount": "gSaveContext.save.skullTokenCount", + "gSaveContext.dekuPlaygroundHighScores": "gSaveContext.save.saveInfo.dekuPlaygroundHighScores", + "gSaveContext.lotteryCodeGuess": "gSaveContext.save.saveInfo.lotteryCodeGuess", + "gSaveContext.permanentSceneFlags": "gSaveContext.save.saveInfo.permanentSceneFlags", + "gSaveContext.bomberCode": "gSaveContext.save.saveInfo.bomberCode", + "gSaveContext.skullTokenCount": "gSaveContext.save.saveInfo.skullTokenCount", "gSaveContext.cutscene": "gSaveContext.save.cutscene", - "gSaveContext.health": "gSaveContext.save.playerData.health", - "gSaveContext.equips": "gSaveContext.save.equips", + "gSaveContext.health": "gSaveContext.save.saveInfo.playerData.health", + "gSaveContext.equips": "gSaveContext.save.saveInfo.equips", "gSaveContext.unk_1016": "gSaveContext.jinxTimer", "gSaveContext.unk_3F58": "gSaveContext.sunsSongState", "gSaveContext.equips.buttonItems": "gSaveContext.save.equips.buttonItems", "gSaveContext.unk_48C8": "gSaveContext.dungeonIndex", - "gSaveContext.save.playerData.magicAcquired": "gSaveContext.save.playerData.isMagicAcquired", - "gSaveContext.save.playerDatadoubleMagic": "gSaveContext.save.playerData.isDoubleMagicAcquired", + "gSaveContext.save.saveInfo.playerData.magicAcquired": "gSaveContext.save.saveInfo.playerData.isMagicAcquired", + "gSaveContext.save.playerDatadoubleMagic": "gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired", "gSaveContext.unk_3F28": "gSaveContext.magicState", "gSaveContext.unk_3F30": "gSaveContext.magicFillTarget", "gSaveContext.unk_3F2C": "gSaveContext.magicFlag", @@ -805,6 +805,44 @@ wordReplace = { "gSaveContext.nightSeqIndex": "gSaveContext.ambienceId", "gSaveContext.minigameState": "gSaveContext.minigameStatus", "gSaveContext.unk_3F3C": "gSaveContext.minigameHiddenScore", + "gSaveContext.save.playerData": "gSaveContext.save.saveInfo.playerData", + "gSaveContext.save.equips": "gSaveContext.save.saveInfo.equips", + "gSaveContext.save.inventory": "gSaveContext.save.saveInfo.inventory", + "gSaveContext.save.permanentSceneFlags": "gSaveContext.save.saveInfo.permanentSceneFlags", + + "gSaveContext.save.unk_E18": "gSaveContext.save.saveInfo.unk_E5C", + "gSaveContext.save.dekuPlaygroundHighScores": "gSaveContext.save.saveInfo.dekuPlaygroundHighScores", + "gSaveContext.save.pictoFlags0": "gSaveContext.save.saveInfo.pictoFlags0", + "gSaveContext.save.pictoFlags1": "gSaveContext.save.saveInfo.pictoFlags1", + "gSaveContext.save.unk_E84": "gSaveContext.save.saveInfo.unk_E60", + "gSaveContext.save.unk_E88": "gSaveContext.save.saveInfo.unk_E64", + "gSaveContext.save.scenesVisible": "gSaveContext.save.saveInfo.scenesVisible", + "gSaveContext.save.skullTokenCount": "gSaveContext.save.saveInfo.skullTokenCount", + "gSaveContext.save.unk_EC4": "gSaveContext.save.saveInfo.unk_EA0", + "gSaveContext.save.unk_EC8": "gSaveContext.save.saveInfo.unk_EA4", + "gSaveContext.save.unk_ECC": "gSaveContext.save.saveInfo.unk_EA8", + "gSaveContext.save.stolenItems": "gSaveContext.save.saveInfo.stolenItems", + "gSaveContext.save.unk_DD8": "gSaveContext.save.saveInfo.unk_EB4", + "gSaveContext.save.bankRupees": "gSaveContext.save.saveInfo.bankRupees", + "gSaveContext.save.unk_EE0": "gSaveContext.save.saveInfo.unk_EBC", + "gSaveContext.save.unk_EE4": "gSaveContext.save.saveInfo.unk_EC0", + "gSaveContext.save.unk_EE8": "gSaveContext.save.saveInfo.unk_EC4", + "gSaveContext.save.horseBackBalloonHighScore": "gSaveContext.save.saveInfo.horseBackBalloonHighScore", + "gSaveContext.save.lotteryCodeGuess": "gSaveContext.save.saveInfo.lotteryCodeGuess", + "gSaveContext.save.shootingGalleryHighScores": "gSaveContext.save.saveInfo.shootingGalleryHighScores", + "gSaveContext.save.weekEventReg": "gSaveContext.save.saveInfo.weekEventReg", + "gSaveContext.save.regionsVisited": "gSaveContext.save.saveInfo.regionsVisited", + "gSaveContext.save.worldMapCloudVisibility": "gSaveContext.save.saveInfo.worldMapCloudVisibility", + "gSaveContext.save.unk_F64": "gSaveContext.save.saveInfo.unk_F40", + "gSaveContext.save.unk_F65": "gSaveContext.save.saveInfo.unk_F41", + "gSaveContext.save.scarecrowSpawnSong": "gSaveContext.save.saveInfo.scarecrowSpawnSong", + "gSaveContext.save.bombersCaughtNum": "gSaveContext.save.saveInfo.bombersCaughtNum", + "gSaveContext.save.bombersCaughtOrder": "gSaveContext.save.saveInfo.bombersCaughtOrder", + "gSaveContext.save.lotteryCodes": "gSaveContext.save.saveInfo.lotteryCodes", + "gSaveContext.save.spiderHouseMaskOrder": "gSaveContext.save.saveInfo.spiderHouseMaskOrder", + "gSaveContext.save.bomberCode": "gSaveContext.save.saveInfo.bomberCode", + "gSaveContext.save.horseData": "gSaveContext.save.saveInfo.horseData", + "gSaveContext.save.checksum": "gSaveContext.save.saveInfo.checksum", "player->unk_A87": "player->exchangeItemId", "player->leftHandActor": "player->heldActor", diff --git a/tools/weekeventregconvert.py b/tools/weekeventregconvert.py index 02a3e4a42a..0719070588 100755 --- a/tools/weekeventregconvert.py +++ b/tools/weekeventregconvert.py @@ -843,20 +843,20 @@ def applyChange(fileContents: str, compiledRegex: re.Pattern, callback) -> str: def updateCheck(fileContents: str) -> str: - # gSaveContext.save.weekEventReg[86] & 2 - checkRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&\s*(?P{NUMBER_PATTERN})") + # gSaveContext.save.saveInfo.weekEventReg[86] & 2 + checkRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&\s*(?P{NUMBER_PATTERN})") return applyChange(fileContents, checkRegex, getCheckMacro) def updateSet(fileContents: str) -> str: - # gSaveContext.save.weekEventReg[51] |= 0x10 - setRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\|=\s*(?P{NUMBER_PATTERN})") + # gSaveContext.save.saveInfo.weekEventReg[51] |= 0x10 + setRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\|=\s*(?P{NUMBER_PATTERN})") return applyChange(fileContents, setRegex, getSetMacro) def updateClear(fileContents: str) -> str: - # gSaveContext.save.weekEventReg[85] &= (u8)~0x80 - clearRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P{NUMBER_PATTERN})") + # gSaveContext.save.saveInfo.weekEventReg[85] &= (u8)~0x80 + clearRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P{NUMBER_PATTERN})") return applyChange(fileContents, clearRegex, getClearMacro)