diff options
| author | Dragorn421 <Dragorn421@users.noreply.github.com> | 2023-08-13 21:24:26 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-13 15:24:26 -0400 |
| commit | 6e7a6d41814a1329b43bffc3b95bb75716d9efa6 (patch) | |
| tree | c526051bccb0d401107c1f335048116e8c653ac0 /src/code/z_parameter.c | |
| parent | e272186b5f44f097915e135633492f7c28a40e2b (diff) | |
Split `SaveContext` into sub-structs (#1393)
* Split SaveContext struct
* run formatter
* Remove temporary-until-split stuff in z_sram
* .
* run formatter
Diffstat (limited to 'src/code/z_parameter.c')
| -rw-r--r-- | src/code/z_parameter.c | 725 |
1 files changed, 374 insertions, 351 deletions
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index bb90b2f7d..dec9597d5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -644,13 +644,13 @@ void func_80083108(PlayState* play) { s16 i; s16 sp28 = false; - if ((gSaveContext.cutsceneIndex < 0xFFF0) || - ((play->sceneId == SCENE_LON_LON_RANCH) && (gSaveContext.cutsceneIndex == 0xFFF0))) { + if ((gSaveContext.save.cutsceneIndex < 0xFFF0) || + ((play->sceneId == SCENE_LON_LON_RANCH) && (gSaveContext.save.cutsceneIndex == 0xFFF0))) { gSaveContext.forceRisingButtonAlphas = false; if ((player->stateFlags1 & PLAYER_STATE1_23) || (play->shootingGalleryStatus > 1) || ((play->sceneId == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38))) { - if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) { gSaveContext.forceRisingButtonAlphas = true; if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { @@ -658,26 +658,26 @@ void func_80083108(PlayState* play) { gSaveContext.buttonStatus[3] = BTN_ENABLED; } - if ((gSaveContext.equips.buttonItems[0] != ITEM_SLINGSHOT) && - (gSaveContext.equips.buttonItems[0] != ITEM_BOW) && - (gSaveContext.equips.buttonItems[0] != ITEM_BOMBCHU) && - (gSaveContext.equips.buttonItems[0] != ITEM_NONE)) { - gSaveContext.buttonStatus[0] = gSaveContext.equips.buttonItems[0]; + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_SLINGSHOT) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_BOW) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_BOMBCHU) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE)) { + gSaveContext.buttonStatus[0] = gSaveContext.save.info.equips.buttonItems[0]; if ((play->sceneId == SCENE_BOMBCHU_BOWLING_ALLEY) && Flags_GetSwitch(play, 0x38)) { - gSaveContext.equips.buttonItems[0] = ITEM_BOMBCHU; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_BOMBCHU; Interface_LoadItemIcon1(play, 0); } else { - gSaveContext.equips.buttonItems[0] = ITEM_BOW; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_BOW; if (play->shootingGalleryStatus > 1) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { - gSaveContext.equips.buttonItems[0] = ITEM_SLINGSHOT; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_SLINGSHOT; } Interface_LoadItemIcon1(play, 0); } else { - if (gSaveContext.inventory.items[SLOT_BOW] == ITEM_NONE) { - gSaveContext.equips.buttonItems[0] = ITEM_NONE; + if (gSaveContext.save.info.inventory.items[SLOT_BOW] == ITEM_NONE) { + gSaveContext.save.info.equips.buttonItems[0] = ITEM_NONE; } else { Interface_LoadItemIcon1(play, 0); } @@ -711,9 +711,9 @@ void func_80083108(PlayState* play) { // should likely be set to true gSaveContext.forceRisingButtonAlphas = 2; if (play->interfaceCtx.unk_260 != 0) { - if (gSaveContext.equips.buttonItems[0] != ITEM_FISHING_POLE) { - gSaveContext.buttonStatus[0] = gSaveContext.equips.buttonItems[0]; - gSaveContext.equips.buttonItems[0] = ITEM_FISHING_POLE; + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_FISHING_POLE) { + gSaveContext.buttonStatus[0] = gSaveContext.save.info.equips.buttonItems[0]; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_FISHING_POLE; gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_LoadItemIcon1(play, 0); Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_A_B_MINIMAP); @@ -722,11 +722,11 @@ void func_80083108(PlayState* play) { if (gSaveContext.hudVisibilityMode != HUD_VISIBILITY_A_B_MINIMAP) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_A_B_MINIMAP); } - } else if (gSaveContext.equips.buttonItems[0] == ITEM_FISHING_POLE) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + } else if (gSaveContext.save.info.equips.buttonItems[0] == ITEM_FISHING_POLE) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; - if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) { Interface_LoadItemIcon1(play, 0); } @@ -753,8 +753,8 @@ void func_80083108(PlayState* play) { for (i = 1; i < 4; i++) { if (Player_GetEnvironmentalHazard(play) == PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) { - if ((gSaveContext.equips.buttonItems[i] != ITEM_HOOKSHOT) && - (gSaveContext.equips.buttonItems[i] != ITEM_LONGSHOT)) { + if ((gSaveContext.save.info.equips.buttonItems[i] != ITEM_HOOKSHOT) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_LONGSHOT)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -792,26 +792,26 @@ void func_80083108(PlayState* play) { } } else if (GET_EVENTINF_HORSES_STATE() == EVENTINF_HORSES_STATE_1) { if (player->stateFlags1 & PLAYER_STATE1_23) { - if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) && - (gSaveContext.equips.buttonItems[0] != ITEM_BOW)) { - if (gSaveContext.inventory.items[SLOT_BOW] == ITEM_NONE) { - gSaveContext.equips.buttonItems[0] = ITEM_NONE; + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_BOW)) { + if (gSaveContext.save.info.inventory.items[SLOT_BOW] == ITEM_NONE) { + gSaveContext.save.info.equips.buttonItems[0] = ITEM_NONE; } else { - gSaveContext.equips.buttonItems[0] = ITEM_BOW; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_BOW; sp28 = true; } } } else { - if ((gSaveContext.equips.buttonItems[0] == ITEM_NONE) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOW)) { - - if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && - (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) && - (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) && - (gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOW)) { + + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_MASTER) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; } else { - gSaveContext.buttonStatus[0] = gSaveContext.equips.buttonItems[0]; + gSaveContext.buttonStatus[0] = gSaveContext.save.info.equips.buttonItems[0]; } } sp28 = true; @@ -823,8 +823,8 @@ void func_80083108(PlayState* play) { } for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && - (gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME)) { + if ((gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -846,16 +846,16 @@ void func_80083108(PlayState* play) { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_ALL); } else { if (interfaceCtx->restrictions.bButton == 0) { - if ((gSaveContext.equips.buttonItems[0] == ITEM_SLINGSHOT) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOW) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) || - (gSaveContext.equips.buttonItems[0] == ITEM_NONE)) { - if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || - (gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_SLINGSHOT) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOW) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE)) { + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || + (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; sp28 = true; - if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) { Interface_LoadItemIcon1(play, 0); } } @@ -866,20 +866,20 @@ void func_80083108(PlayState* play) { ((gSaveContext.buttonStatus[0] & 0xFF) == BTN_ENABLED)) { gSaveContext.buttonStatus[0] = BTN_ENABLED; } else { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0] & 0xFF; + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0] & 0xFF; } } } else if (interfaceCtx->restrictions.bButton == 1) { - if ((gSaveContext.equips.buttonItems[0] == ITEM_SLINGSHOT) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOW) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) || - (gSaveContext.equips.buttonItems[0] == ITEM_NONE)) { - if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || - (gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_SLINGSHOT) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOW) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE)) { + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || + (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; sp28 = true; - if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) { Interface_LoadItemIcon1(play, 0); } } @@ -894,8 +894,8 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.bottles != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) { + if ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -905,8 +905,8 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.bottles == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) { + if ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -918,8 +918,8 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.tradeItems != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK)) { + if ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -929,8 +929,8 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.tradeItems == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK)) { + if ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -942,8 +942,8 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.hookshot != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_HOOKSHOT) || - (gSaveContext.equips.buttonItems[i] == ITEM_LONGSHOT)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_HOOKSHOT) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_LONGSHOT)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -953,8 +953,8 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.hookshot == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_HOOKSHOT) || - (gSaveContext.equips.buttonItems[i] == ITEM_LONGSHOT)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_HOOKSHOT) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_LONGSHOT)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -966,8 +966,8 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.ocarina != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) || - (gSaveContext.equips.buttonItems[i] == ITEM_OCARINA_OF_TIME)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_OCARINA_OF_TIME)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -977,8 +977,8 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.ocarina == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) || - (gSaveContext.equips.buttonItems[i] == ITEM_OCARINA_OF_TIME)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_OCARINA_OF_TIME)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -990,7 +990,7 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.farores != 0) { for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == ITEM_FARORES_WIND) { + if (gSaveContext.save.info.equips.buttonItems[i] == ITEM_FARORES_WIND) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -1001,7 +1001,7 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.farores == 0) { for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == ITEM_FARORES_WIND) { + if (gSaveContext.save.info.equips.buttonItems[i] == ITEM_FARORES_WIND) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -1013,8 +1013,8 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.dinsNayrus != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_DINS_FIRE) || - (gSaveContext.equips.buttonItems[i] == ITEM_NAYRUS_LOVE)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_DINS_FIRE) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_NAYRUS_LOVE)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -1024,8 +1024,8 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.dinsNayrus == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] == ITEM_DINS_FIRE) || - (gSaveContext.equips.buttonItems[i] == ITEM_NAYRUS_LOVE)) { + if ((gSaveContext.save.info.equips.buttonItems[i] == ITEM_DINS_FIRE) || + (gSaveContext.save.info.equips.buttonItems[i] == ITEM_NAYRUS_LOVE)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -1037,14 +1037,14 @@ void func_80083108(PlayState* play) { if (interfaceCtx->restrictions.all != 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && - (gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME) && - !((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) && - !((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { + if ((gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME) && + !((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) && + !((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { if ((play->sceneId != SCENE_TREASURE_BOX_SHOP) || - (gSaveContext.equips.buttonItems[i] != ITEM_LENS_OF_TRUTH)) { + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_LENS_OF_TRUTH)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { sp28 = true; } @@ -1061,17 +1061,17 @@ void func_80083108(PlayState* play) { } } else if (interfaceCtx->restrictions.all == 0) { for (i = 1; i < 4; i++) { - if ((gSaveContext.equips.buttonItems[i] != ITEM_DINS_FIRE) && - (gSaveContext.equips.buttonItems[i] != ITEM_HOOKSHOT) && - (gSaveContext.equips.buttonItems[i] != ITEM_LONGSHOT) && - (gSaveContext.equips.buttonItems[i] != ITEM_FARORES_WIND) && - (gSaveContext.equips.buttonItems[i] != ITEM_NAYRUS_LOVE) && - (gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && - (gSaveContext.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME) && - !((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) && - !((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { + if ((gSaveContext.save.info.equips.buttonItems[i] != ITEM_DINS_FIRE) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_HOOKSHOT) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_LONGSHOT) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_FARORES_WIND) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_NAYRUS_LOVE) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_FAIRY) && + (gSaveContext.save.info.equips.buttonItems[i] != ITEM_OCARINA_OF_TIME) && + !((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) && + !((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { sp28 = true; } @@ -1178,96 +1178,104 @@ void Inventory_SwapAgeEquipment(void) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { for (i = 0; i < 4; i++) { if (i != 0) { - gSaveContext.childEquips.buttonItems[i] = gSaveContext.equips.buttonItems[i]; + gSaveContext.save.info.playerData.childEquips.buttonItems[i] = + gSaveContext.save.info.equips.buttonItems[i]; } else { - gSaveContext.childEquips.buttonItems[i] = ITEM_SWORD_KOKIRI; + gSaveContext.save.info.playerData.childEquips.buttonItems[i] = ITEM_SWORD_KOKIRI; } if (i != 0) { - gSaveContext.childEquips.cButtonSlots[i - 1] = gSaveContext.equips.cButtonSlots[i - 1]; + gSaveContext.save.info.playerData.childEquips.cButtonSlots[i - 1] = + gSaveContext.save.info.equips.cButtonSlots[i - 1]; } } - gSaveContext.childEquips.equipment = gSaveContext.equips.equipment; + gSaveContext.save.info.playerData.childEquips.equipment = gSaveContext.save.info.equips.equipment; - if (gSaveContext.adultEquips.buttonItems[0] == ITEM_NONE) { - gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER; + if (gSaveContext.save.info.playerData.adultEquips.buttonItems[0] == ITEM_NONE) { + gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_MASTER; - if (gSaveContext.inventory.items[SLOT_DEKU_NUT] != ITEM_NONE) { - gSaveContext.equips.buttonItems[1] = ITEM_DEKU_NUT; - gSaveContext.equips.cButtonSlots[0] = SLOT_DEKU_NUT; + if (gSaveContext.save.info.inventory.items[SLOT_DEKU_NUT] != ITEM_NONE) { + gSaveContext.save.info.equips.buttonItems[1] = ITEM_DEKU_NUT; + gSaveContext.save.info.equips.cButtonSlots[0] = SLOT_DEKU_NUT; } else { - gSaveContext.equips.buttonItems[1] = gSaveContext.equips.cButtonSlots[0] = ITEM_NONE; - } - - gSaveContext.equips.buttonItems[2] = ITEM_BOMB; - gSaveContext.equips.buttonItems[3] = gSaveContext.inventory.items[SLOT_OCARINA]; - gSaveContext.equips.cButtonSlots[1] = SLOT_BOMB; - gSaveContext.equips.cButtonSlots[2] = SLOT_OCARINA; - gSaveContext.equips.equipment = (EQUIP_VALUE_SWORD_MASTER << (EQUIP_TYPE_SWORD * 4)) | - (EQUIP_VALUE_SHIELD_HYLIAN << (EQUIP_TYPE_SHIELD * 4)) | - (EQUIP_VALUE_TUNIC_KOKIRI << (EQUIP_TYPE_TUNIC * 4)) | - (EQUIP_VALUE_BOOTS_KOKIRI << (EQUIP_TYPE_BOOTS * 4)); + gSaveContext.save.info.equips.buttonItems[1] = gSaveContext.save.info.equips.cButtonSlots[0] = + ITEM_NONE; + } + + gSaveContext.save.info.equips.buttonItems[2] = ITEM_BOMB; + gSaveContext.save.info.equips.buttonItems[3] = gSaveContext.save.info.inventory.items[SLOT_OCARINA]; + gSaveContext.save.info.equips.cButtonSlots[1] = SLOT_BOMB; + gSaveContext.save.info.equips.cButtonSlots[2] = SLOT_OCARINA; + gSaveContext.save.info.equips.equipment = (EQUIP_VALUE_SWORD_MASTER << (EQUIP_TYPE_SWORD * 4)) | + (EQUIP_VALUE_SHIELD_HYLIAN << (EQUIP_TYPE_SHIELD * 4)) | + (EQUIP_VALUE_TUNIC_KOKIRI << (EQUIP_TYPE_TUNIC * 4)) | + (EQUIP_VALUE_BOOTS_KOKIRI << (EQUIP_TYPE_BOOTS * 4)); } else { for (i = 0; i < 4; i++) { - gSaveContext.equips.buttonItems[i] = gSaveContext.adultEquips.buttonItems[i]; + gSaveContext.save.info.equips.buttonItems[i] = + gSaveContext.save.info.playerData.adultEquips.buttonItems[i]; if (i != 0) { - gSaveContext.equips.cButtonSlots[i - 1] = gSaveContext.adultEquips.cButtonSlots[i - 1]; + gSaveContext.save.info.equips.cButtonSlots[i - 1] = + gSaveContext.save.info.playerData.adultEquips.cButtonSlots[i - 1]; } - if (((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) || - ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { - osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.equips.cButtonSlots[i - 1]); - gSaveContext.equips.buttonItems[i] = - gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[i - 1]]; + if (((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) || + ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { + osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.save.info.equips.cButtonSlots[i - 1]); + gSaveContext.save.info.equips.buttonItems[i] = + gSaveContext.save.info.inventory.items[gSaveContext.save.info.equips.cButtonSlots[i - 1]]; } } - gSaveContext.equips.equipment = gSaveContext.adultEquips.equipment; + gSaveContext.save.info.equips.equipment = gSaveContext.save.info.playerData.adultEquips.equipment; } } else { for (i = 0; i < 4; i++) { - gSaveContext.adultEquips.buttonItems[i] = gSaveContext.equips.buttonItems[i]; + gSaveContext.save.info.playerData.adultEquips.buttonItems[i] = gSaveContext.save.info.equips.buttonItems[i]; if (i != 0) { - gSaveContext.adultEquips.cButtonSlots[i - 1] = gSaveContext.equips.cButtonSlots[i - 1]; + gSaveContext.save.info.playerData.adultEquips.cButtonSlots[i - 1] = + gSaveContext.save.info.equips.cButtonSlots[i - 1]; } } - gSaveContext.adultEquips.equipment = gSaveContext.equips.equipment; + gSaveContext.save.info.playerData.adultEquips.equipment = gSaveContext.save.info.equips.equipment; - if (gSaveContext.childEquips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.playerData.childEquips.buttonItems[0] != ITEM_NONE) { for (i = 0; i < 4; i++) { - gSaveContext.equips.buttonItems[i] = gSaveContext.childEquips.buttonItems[i]; + gSaveContext.save.info.equips.buttonItems[i] = + gSaveContext.save.info.playerData.childEquips.buttonItems[i]; if (i != 0) { - gSaveContext.equips.cButtonSlots[i - 1] = gSaveContext.childEquips.cButtonSlots[i - 1]; + gSaveContext.save.info.equips.cButtonSlots[i - 1] = + gSaveContext.save.info.playerData.childEquips.cButtonSlots[i - 1]; } - if (((gSaveContext.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && - (gSaveContext.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) || - ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && - (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { - osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.equips.cButtonSlots[i - 1]); - gSaveContext.equips.buttonItems[i] = - gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[i - 1]]; + if (((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_BOTTLE_EMPTY) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_BOTTLE_POE)) || + ((gSaveContext.save.info.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && + (gSaveContext.save.info.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { + osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.save.info.equips.cButtonSlots[i - 1]); + gSaveContext.save.info.equips.buttonItems[i] = + gSaveContext.save.info.inventory.items[gSaveContext.save.info.equips.cButtonSlots[i - 1]]; } } - gSaveContext.equips.equipment = gSaveContext.childEquips.equipment; - gSaveContext.equips.equipment &= (u16) ~(0xF << (EQUIP_TYPE_SWORD * 4)); - gSaveContext.equips.equipment |= EQUIP_VALUE_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4); + gSaveContext.save.info.equips.equipment = gSaveContext.save.info.playerData.childEquips.equipment; + gSaveContext.save.info.equips.equipment &= (u16) ~(0xF << (EQUIP_TYPE_SWORD * 4)); + gSaveContext.save.info.equips.equipment |= EQUIP_VALUE_SWORD_KOKIRI << (EQUIP_TYPE_SWORD * 4); } } - shieldEquipValue = gEquipMasks[EQUIP_TYPE_SHIELD] & gSaveContext.equips.equipment; + shieldEquipValue = gEquipMasks[EQUIP_TYPE_SHIELD] & gSaveContext.save.info.equips.equipment; if (shieldEquipValue != 0) { shieldEquipValue >>= gEquipShifts[EQUIP_TYPE_SHIELD]; if (!CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SHIELD, shieldEquipValue - 1)) { - gSaveContext.equips.equipment &= gEquipNegMasks[EQUIP_TYPE_SHIELD]; + gSaveContext.save.info.equips.equipment &= gEquipNegMasks[EQUIP_TYPE_SHIELD]; } } } @@ -1282,13 +1290,14 @@ void Interface_InitHorsebackArchery(PlayState* play) { } void func_800849EC(PlayState* play) { - gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON); - gSaveContext.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE); + gSaveContext.save.info.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BIGGORON); + gSaveContext.save.info.inventory.equipment ^= + OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE); if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) { - gSaveContext.equips.buttonItems[0] = ITEM_GIANTS_KNIFE; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_GIANTS_KNIFE; } else { - gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BIGGORON; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_BIGGORON; } Interface_LoadItemIcon1(play, 0); @@ -1299,7 +1308,7 @@ void Interface_LoadItemIcon1(PlayState* play, u16 button) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_160, interfaceCtx->iconItemSegment + (button * ITEM_ICON_SIZE), - GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[button]), ITEM_ICON_SIZE, 0, + GET_ITEM_ICON_VROM(gSaveContext.save.info.equips.buttonItems[button]), ITEM_ICON_SIZE, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1171); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); } @@ -1309,27 +1318,29 @@ void Interface_LoadItemIcon2(PlayState* play, u16 button) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); DmaMgr_RequestAsync(&interfaceCtx->dmaRequest_180, interfaceCtx->iconItemSegment + (button * ITEM_ICON_SIZE), - GET_ITEM_ICON_VROM(gSaveContext.equips.buttonItems[button]), ITEM_ICON_SIZE, 0, + GET_ITEM_ICON_VROM(gSaveContext.save.info.equips.buttonItems[button]), ITEM_ICON_SIZE, 0, &interfaceCtx->loadQueue, NULL, "../z_parameter.c", 1193); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); } void func_80084BF4(PlayState* play, u16 flag) { if (flag) { - if ((gSaveContext.equips.buttonItems[0] == ITEM_SLINGSHOT) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOW) || (gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) || - (gSaveContext.equips.buttonItems[0] == ITEM_FISHING_POLE) || + if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_SLINGSHOT) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOW) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_FISHING_POLE) || (gSaveContext.buttonStatus[0] == BTN_DISABLED)) { - if ((gSaveContext.equips.buttonItems[0] == ITEM_SLINGSHOT) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOW) || - (gSaveContext.equips.buttonItems[0] == ITEM_BOMBCHU) || - (gSaveContext.equips.buttonItems[0] == ITEM_FISHING_POLE)) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_SLINGSHOT) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOW) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_BOMBCHU) || + (gSaveContext.save.info.equips.buttonItems[0] == ITEM_FISHING_POLE)) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; Interface_LoadItemIcon1(play, 0); } - } else if (gSaveContext.equips.buttonItems[0] == ITEM_NONE) { - if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) || (gSaveContext.infTable[INFTABLE_1DX_INDEX] == 0)) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + } else if (gSaveContext.save.info.equips.buttonItems[0] == ITEM_NONE) { + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) || + (gSaveContext.save.info.infTable[INFTABLE_1DX_INDEX] == 0)) { + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; Interface_LoadItemIcon1(play, 0); } } @@ -1359,14 +1370,14 @@ u8 Item_Give(PlayState* play, u8 item) { } osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.inventory.items[slot]); + osSyncPrintf("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); osSyncPrintf(VT_RST); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { - gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; + gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("封印 = %x\n", gSaveContext.inventory.questItems); // "Seals = %x" + osSyncPrintf("封印 = %x\n", gSaveContext.save.info.inventory.questItems); // "Seals = %x" osSyncPrintf(VT_RST); if (item == ITEM_MEDALLION_WATER) { @@ -1375,85 +1386,86 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SONG_MINUET) && (item <= ITEM_SONG_STORMS)) { - gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; + gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("楽譜 = %x\n", gSaveContext.inventory.questItems); // "Musical scores = %x" + osSyncPrintf("楽譜 = %x\n", gSaveContext.save.info.inventory.questItems); // "Musical scores = %x" // "Musical scores = %x (%x) (%x)" - osSyncPrintf("楽譜 = %x (%x) (%x)\n", gSaveContext.inventory.questItems, + osSyncPrintf("楽譜 = %x (%x) (%x)\n", gSaveContext.save.info.inventory.questItems, gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET], gBitFlags[item - ITEM_SONG_MINUET]); osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item >= ITEM_KOKIRI_EMERALD) && (item <= ITEM_ZORA_SAPPHIRE)) { - gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; + gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("精霊石 = %x\n", gSaveContext.inventory.questItems); // "Spiritual Stones = %x" + osSyncPrintf("精霊石 = %x\n", gSaveContext.save.info.inventory.questItems); // "Spiritual Stones = %x" osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item == ITEM_STONE_OF_AGONY) || (item == ITEM_GERUDOS_CARD)) { - gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; + gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("アイテム = %x\n", gSaveContext.inventory.questItems); // "Items = %x" + osSyncPrintf("アイテム = %x\n", gSaveContext.save.info.inventory.questItems); // "Items = %x" osSyncPrintf(VT_RST); return ITEM_NONE; } else if (item == ITEM_SKULL_TOKEN) { - gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; - gSaveContext.inventory.gsTokens++; + gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; + gSaveContext.save.info.inventory.gsTokens++; osSyncPrintf(VT_FGCOL(YELLOW)); // "N Coins = %x(%d)" - osSyncPrintf("Nコイン = %x(%d)\n", gSaveContext.inventory.questItems, gSaveContext.inventory.gsTokens); + osSyncPrintf("Nコイン = %x(%d)\n", gSaveContext.save.info.inventory.questItems, + gSaveContext.save.info.inventory.gsTokens); osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_BIGGORON)) { - gSaveContext.inventory.equipment |= + gSaveContext.save.info.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, item - ITEM_SWORD_KOKIRI + EQUIP_INV_SWORD_KOKIRI); if (item == ITEM_SWORD_BIGGORON) { - gSaveContext.swordHealth = 8; + gSaveContext.save.info.playerData.swordHealth = 8; if (ALL_EQUIP_VALUE(EQUIP_TYPE_SWORD) == ((1 << EQUIP_INV_SWORD_KOKIRI) | (1 << EQUIP_INV_SWORD_MASTER) | (1 << EQUIP_INV_SWORD_BIGGORON) | (1 << EQUIP_INV_SWORD_BROKENGIANTKNIFE))) { - gSaveContext.inventory.equipment ^= + gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE); - if (gSaveContext.equips.buttonItems[0] == ITEM_GIANTS_KNIFE) { - gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BIGGORON; + if (gSaveContext.save.info.equips.buttonItems[0] == ITEM_GIANTS_KNIFE) { + gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_BIGGORON; Interface_LoadItemIcon1(play, 0); } } } else if (item == ITEM_SWORD_MASTER) { - gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER; - gSaveContext.equips.equipment &= (u16) ~(0xF << (EQUIP_TYPE_SWORD * 4)); - gSaveContext.equips.equipment |= EQUIP_VALUE_SWORD_MASTER << (EQUIP_TYPE_SWORD * 4); + gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_MASTER; + gSaveContext.save.info.equips.equipment &= (u16) ~(0xF << (EQUIP_TYPE_SWORD * 4)); + gSaveContext.save.info.equips.equipment |= EQUIP_VALUE_SWORD_MASTER << (EQUIP_TYPE_SWORD * 4); Interface_LoadItemIcon1(play, 0); } return ITEM_NONE; } else if ((item >= ITEM_SHIELD_DEKU) && (item <= ITEM_SHIELD_MIRROR)) { - gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SHIELD, item - ITEM_SHIELD_DEKU); + gSaveContext.save.info.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_SHIELD, item - ITEM_SHIELD_DEKU); return ITEM_NONE; } else if ((item >= ITEM_TUNIC_KOKIRI) && (item <= ITEM_TUNIC_ZORA)) { - gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_TUNIC, item - ITEM_TUNIC_KOKIRI); + gSaveContext.save.info.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_TUNIC, item - ITEM_TUNIC_KOKIRI); return ITEM_NONE; } else if ((item >= ITEM_BOOTS_KOKIRI) && (item <= ITEM_BOOTS_HOVER)) { - gSaveContext.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_BOOTS, item - ITEM_BOOTS_KOKIRI); + gSaveContext.save.info.inventory.equipment |= OWNED_EQUIP_FLAG(EQUIP_TYPE_BOOTS, item - ITEM_BOOTS_KOKIRI); return ITEM_NONE; } else if ((item == ITEM_DUNGEON_BOSS_KEY) || (item == ITEM_DUNGEON_COMPASS) || (item == ITEM_DUNGEON_MAP)) { - gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_DUNGEON_BOSS_KEY]; + gSaveContext.save.info.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_DUNGEON_BOSS_KEY]; return ITEM_NONE; } else if (item == ITEM_SMALL_KEY) { - if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { - gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; + if (gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { + gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; return ITEM_NONE; } else { - gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++; + gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex]++; return ITEM_NONE; } } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { @@ -1526,28 +1538,28 @@ u8 Item_Give(PlayState* play, u8 item) { Inventory_ChangeUpgrade(UPG_WALLET, 2); return ITEM_NONE; } else if (item == ITEM_DEKU_STICK_UPGRADE_20) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK; } Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 2); AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 2); return ITEM_NONE; } else if (item == ITEM_DEKU_STICK_UPGRADE_30) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK; } Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 3); AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 3); return ITEM_NONE; } else if (item == ITEM_DEKU_NUT_UPGRADE_30) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 2); AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, 2); return ITEM_NONE; } else if (item == ITEM_DEKU_NUT_UPGRADE_40) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 3); @@ -1556,14 +1568,14 @@ u8 Item_Give(PlayState* play, u8 item) { } else if (item == ITEM_LONGSHOT) { INV_CONTENT(item) = item; for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == ITEM_HOOKSHOT) { - gSaveContext.equips.buttonItems[i] = ITEM_LONGSHOT; + if (gSaveContext.save.info.equips.buttonItems[i] == ITEM_HOOKSHOT) { + gSaveContext.save.info.equips.buttonItems[i] = ITEM_LONGSHOT; Interface_LoadItemIcon1(play, i); } } return ITEM_NONE; } else if (item == ITEM_DEKU_STICK) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1); AMMO(ITEM_DEKU_STICK) = 1; } else { @@ -1573,7 +1585,7 @@ u8 Item_Give(PlayState* play, u8 item) { } } } else if ((item == ITEM_DEKU_STICKS_5) || (item == ITEM_DEKU_STICKS_10)) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1); AMMO(ITEM_DEKU_STICK) = sAmmoRefillCounts[item - ITEM_DEKU_STICKS_5]; } else { @@ -1584,7 +1596,7 @@ u8 Item_Give(PlayState* play, u8 item) { } item = ITEM_DEKU_STICK; } else if (item == ITEM_DEKU_NUT) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1); AMMO(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } else { @@ -1594,7 +1606,7 @@ u8 Item_Give(PlayState* play, u8 item) { } } } else if ((item == ITEM_DEKU_NUTS_5) || (item == ITEM_DEKU_NUTS_10)) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1); AMMO(ITEM_DEKU_NUT) += sAmmoRefillCounts[item - ITEM_DEKU_NUTS_5]; // "Deku Nuts %d(%d)=%d BS_count=%d" @@ -1620,7 +1632,7 @@ u8 Item_Give(PlayState* play, u8 item) { } return ITEM_NONE; } else if (item == ITEM_BOMBCHU) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) = 10; return ITEM_NONE; @@ -1632,7 +1644,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } } else if ((item == ITEM_BOMBCHUS_5) || (item == ITEM_BOMBCHUS_20)) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_5]; return ITEM_NONE; @@ -1690,14 +1702,14 @@ u8 Item_Give(PlayState* play, u8 item) { } else if (item == ITEM_OCARINA_OF_TIME) { INV_CONTENT(ITEM_OCARINA_OF_TIME) = ITEM_OCARINA_OF_TIME; for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) { - gSaveContext.equips.buttonItems[i] = ITEM_OCARINA_OF_TIME; + if (gSaveContext.save.info.equips.buttonItems[i] == ITEM_OCARINA_FAIRY) { + gSaveContext.save.info.equips.buttonItems[i] = ITEM_OCARINA_OF_TIME; Interface_LoadItemIcon1(play, i); } } return ITEM_NONE; } else if (item == ITEM_MAGIC_BEAN) { - if (gSaveContext.inventory.items[slot] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(item) = item; AMMO(ITEM_MAGIC_BEAN) = 1; BEANS_BOUGHT = 1; @@ -1707,11 +1719,11 @@ u8 Item_Give(PlayState* play, u8 item) { } return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { - gSaveContext.inventory.questItems += 1 << QUEST_HEART_PIECE_COUNT; + gSaveContext.save.info.inventory.questItems += 1 << QUEST_HEART_PIECE_COUNT; return ITEM_NONE; } else if (item == ITEM_HEART_CONTAINER) { - gSaveContext.healthCapacity += 0x10; - gSaveContext.health += 0x10; + gSaveContext.save.info.playerData.healthCapacity += 0x10; + gSaveContext.save.info.playerData.health += 0x10; return ITEM_NONE; } else if (item == ITEM_RECOVERY_HEART) { osSyncPrintf("回復ハート回復ハート回復ハート\n"); // "Recovery Heart" @@ -1756,8 +1768,8 @@ u8 Item_Give(PlayState* play, u8 item) { temp = SLOT(item); for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) { - gSaveContext.inventory.items[temp + i] = item; + if (gSaveContext.save.info.inventory.items[temp + i] == ITEM_NONE) { + gSaveContext.save.info.inventory.items[temp + i] = item; return ITEM_NONE; } } @@ -1771,34 +1783,35 @@ u8 Item_Give(PlayState* play, u8 item) { } for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[temp + i] == ITEM_BOTTLE_EMPTY) { + if (gSaveContext.save.info.inventory.items[temp + i] == ITEM_BOTTLE_EMPTY) { // "Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d Empty Bottle=%d Content=%d" osSyncPrintf("Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d 空瓶=%d 中味=%d\n", - gSaveContext.equips.cButtonSlots[0], gSaveContext.equips.cButtonSlots[1], - gSaveContext.equips.cButtonSlots[2], temp + i, item); + gSaveContext.save.info.equips.cButtonSlots[0], + gSaveContext.save.info.equips.cButtonSlots[1], + gSaveContext.save.info.equips.cButtonSlots[2], temp + i, item); - if ((temp + i) == gSaveContext.equips.cButtonSlots[0]) { - gSaveContext.equips.buttonItems[1] = item; + if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[0]) { + gSaveContext.save.info.equips.buttonItems[1] = item; Interface_LoadItemIcon2(play, 1); gSaveContext.buttonStatus[1] = BTN_ENABLED; - } else if ((temp + i) == gSaveContext.equips.cButtonSlots[1]) { - gSaveContext.equips.buttonItems[2] = item; + } else if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[1]) { + gSaveContext.save.info.equips.buttonItems[2] = item; Interface_LoadItemIcon2(play, 2); gSaveContext.buttonStatus[2] = BTN_ENABLED; - } else if ((temp + i) == gSaveContext.equips.cButtonSlots[2]) { - gSaveContext.equips.buttonItems[3] = item; + } else if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[2]) { + gSaveContext.save.info.equips.buttonItems[3] = item; Interface_LoadItemIcon1(play, 3); gSaveContext.buttonStatus[3] = BTN_ENABLED; } - gSaveContext.inventory.items[temp + i] = item; + gSaveContext.save.info.inventory.items[temp + i] = item; return ITEM_NONE; } } } else { for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) { - gSaveContext.inventory.items[temp + i] = item; + if (gSaveContext.save.info.inventory.items[temp + i] == ITEM_NONE) { + gSaveContext.save.info.inventory.items[temp + i] = item; return ITEM_NONE; } } @@ -1813,12 +1826,12 @@ u8 Item_Give(PlayState* play, u8 item) { if (temp != ITEM_NONE) { for (i = 1; i < 4; i++) { - if (temp == gSaveContext.equips.buttonItems[i]) { + if (temp == gSaveContext.save.info.equips.buttonItems[i]) { if (item != ITEM_SOLD_OUT) { - gSaveContext.equips.buttonItems[i] = item; + gSaveContext.save.info.equips.buttonItems[i] = item; Interface_LoadItemIcon1(play, i); } else { - gSaveContext.equips.buttonItems[i] = ITEM_NONE; + gSaveContext.save.info.equips.buttonItems[i] = ITEM_NONE; } return ITEM_NONE; } @@ -1828,7 +1841,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } - temp = gSaveContext.inventory.items[slot]; + temp = gSaveContext.save.info.inventory.items[slot]; osSyncPrintf("Item_Register(%d)=%d %d\n", slot, item, temp); INV_CONTENT(item) = item; @@ -1845,7 +1858,7 @@ u8 Item_CheckObtainability(u8 item) { } osSyncPrintf(VT_FGCOL(GREEN)); - osSyncPrintf("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.inventory.items[slot]); + osSyncPrintf("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); osSyncPrintf(VT_RST); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { @@ -1944,13 +1957,13 @@ u8 Item_CheckObtainability(u8 item) { } for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[temp + i] == ITEM_BOTTLE_EMPTY) { + if (gSaveContext.save.info.inventory.items[temp + i] == ITEM_BOTTLE_EMPTY) { return ITEM_NONE; } } } else { for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) { + if (gSaveContext.save.info.inventory.items[temp + i] == ITEM_NONE) { return ITEM_NONE; } } @@ -1959,7 +1972,7 @@ u8 Item_CheckObtainability(u8 item) { return ITEM_NONE; } - return gSaveContext.inventory.items[slot]; + return gSaveContext.save.info.inventory.items[slot]; } void Inventory_DeleteItem(u16 item, u16 invSlot) { @@ -1969,14 +1982,14 @@ void Inventory_DeleteItem(u16 item, u16 invSlot) { BEANS_BOUGHT = 0; } - gSaveContext.inventory.items[invSlot] = ITEM_NONE; + gSaveContext.save.info.inventory.items[invSlot] = ITEM_NONE; - osSyncPrintf("\nItem_Register(%d)\n", invSlot, gSaveContext.inventory.items[invSlot]); + osSyncPrintf("\nItem_Register(%d)\n", invSlot, gSaveContext.save.info.inventory.items[invSlot]); for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == item) { - gSaveContext.equips.buttonItems[i] = ITEM_NONE; - gSaveContext.equips.cButtonSlots[i - 1] = SLOT_NONE; + if (gSaveContext.save.info.equips.buttonItems[i] == item) { + gSaveContext.save.info.equips.buttonItems[i] = ITEM_NONE; + gSaveContext.save.info.equips.cButtonSlots[i - 1] = SLOT_NONE; } } } @@ -1984,13 +1997,13 @@ void Inventory_DeleteItem(u16 item, u16 invSlot) { s32 Inventory_ReplaceItem(PlayState* play, u16 oldItem, u16 newItem) { s16 i; - for (i = 0; i < ARRAY_COUNT(gSaveContext.inventory.items); i++) { - if (gSaveContext.inventory.items[i] == oldItem) { - gSaveContext.inventory.items[i] = newItem; + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.info.inventory.items); i++) { + if (gSaveContext.save.info.inventory.items[i] == oldItem) { + gSaveContext.save.info.inventory.items[i] = newItem; osSyncPrintf("アイテム消去(%d)\n", i); // "Item Purge (%d)" for (i = 1; i < 4; i++) { - if (gSaveContext.equips.buttonItems[i] == oldItem) { - gSaveContext.equips.buttonItems[i] = newItem; + if (gSaveContext.save.info.equips.buttonItems[i] == oldItem) { + gSaveContext.save.info.equips.buttonItems[i] = newItem; Interface_LoadItemIcon1(play, i); break; } @@ -2003,7 +2016,7 @@ s32 Inventory_ReplaceItem(PlayState* play, u16 oldItem, u16 newItem) { } s32 Inventory_HasEmptyBottle(void) { - u8* items = gSaveContext.inventory.items; + u8* items = gSaveContext.save.info.inventory.items; if (items[SLOT_BOTTLE_1] == ITEM_BOTTLE_EMPTY) { return true; @@ -2019,7 +2032,7 @@ s32 Inventory_HasEmptyBottle(void) { } s32 Inventory_HasSpecificBottle(u8 bottleItem) { - u8* items = gSaveContext.inventory.items; + u8* items = gSaveContext.save.info.inventory.items; if (items[SLOT_BOTTLE_1] == bottleItem) { return true; @@ -2036,17 +2049,18 @@ s32 Inventory_HasSpecificBottle(u8 bottleItem) { void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 button) { osSyncPrintf("item_no=%x, c_no=%x, Pt=%x Item_Register=%x\n", item, button, - gSaveContext.equips.cButtonSlots[button - 1], - gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]]); + gSaveContext.save.info.equips.cButtonSlots[button - 1], + gSaveContext.save.info.inventory.items[gSaveContext.save.info.equips.cButtonSlots[button - 1]]); // Special case to only empty half of a Lon Lon Milk Bottle - if ((gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_BOTTLE_MILK_FULL) && + if ((gSaveContext.save.info.inventory.items[gSaveContext.save.info.equips.cButtonSlots[button - 1]] == + ITEM_BOTTLE_MILK_FULL) && (item == ITEM_BOTTLE_EMPTY)) { item = ITEM_BOTTLE_MILK_HALF; } - gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] = item; - gSaveContext.equips.buttonItems[button] = item; + gSaveContext.save.info.inventory.items[gSaveContext.save.info.equips.cButtonSlots[button - 1]] = item; + gSaveContext.save.info.equips.buttonItems[button] = item; Interface_LoadItemIcon1(play, button); @@ -2060,18 +2074,18 @@ s32 Inventory_ConsumeFairy(PlayState* play) { s16 j; for (i = 0; i < 4; i++) { - if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_BOTTLE_FAIRY) { + if (gSaveContext.save.info.inventory.items[bottleSlot + i] == ITEM_BOTTLE_FAIRY) { for (j = 1; j < 4; j++) { - if (gSaveContext.equips.buttonItems[j] == ITEM_BOTTLE_FAIRY) { - gSaveContext.equips.buttonItems[j] = ITEM_BOTTLE_EMPTY; + if (gSaveContext.save.info.equips.buttonItems[j] == ITEM_BOTTLE_FAIRY) { + gSaveContext.save.info.equips.buttonItems[j] = ITEM_BOTTLE_EMPTY; Interface_LoadItemIcon1(play, j); i = 0; - bottleSlot = gSaveContext.equips.cButtonSlots[j - 1]; + bottleSlot = gSaveContext.save.info.equips.cButtonSlots[j - 1]; break; } } osSyncPrintf("妖精使用=%d\n", bottleSlot); // "Fairy Usage=%d" - gSaveContext.inventory.items[bottleSlot + i] = ITEM_BOTTLE_EMPTY; + gSaveContext.save.info.inventory.items[bottleSlot + i] = ITEM_BOTTLE_EMPTY; return true; } } @@ -2185,25 +2199,25 @@ s32 Health_ChangeBy(PlayState* play, s16 amount) { u16 healthLevel; // "***** Fluctuation=%d (now=%d, max=%d) ***" - osSyncPrintf("***** 増減=%d (now=%d, max=%d) ***", amount, gSaveContext.health, - gSaveContext.healthCapacity); + osSyncPrintf("***** 増減=%d (now=%d, max=%d) ***", amount, gSaveContext.save.info.playerData.health, + gSaveContext.save.info.playerData.healthCapacity); // clang-format off if (amount > 0) { Audio_PlaySfxGeneral(NA_SE_SY_HP_RECOVER, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } else if (gSaveContext.isDoubleDefenseAcquired && (amount < 0)) { + } else if (gSaveContext.save.info.playerData.isDoubleDefenseAcquired && (amount < 0)) { amount >>= 1; osSyncPrintf("ハート減少半分!!=%d\n", amount); // "Heart decrease halved!!=%d" } // clang-format on - gSaveContext.health += amount; + gSaveContext.save.info.playerData.health += amount; - if (gSaveContext.health > gSaveContext.healthCapacity) { - gSaveContext.health = gSaveContext.healthCapacity; + if (gSaveContext.save.info.playerData.health > gSaveContext.save.info.playerData.healthCapacity) { + gSaveContext.save.info.playerData.health = gSaveContext.save.info.playerData.healthCapacity; } - heartCount = gSaveContext.health % 0x10; + heartCount = gSaveContext.save.info.playerData.health % 0x10; healthLevel = heartCount; if (heartCount != 0) { @@ -2217,10 +2231,10 @@ s32 Health_ChangeBy(PlayState* play, s16 amount) { } // "Life=%d *** %d ******" - osSyncPrintf(" ライフ=%d *** %d ******\n", gSaveContext.health, healthLevel); + osSyncPrintf(" ライフ=%d *** %d ******\n", gSaveContext.save.info.playerData.health, healthLevel); - if (gSaveContext.health <= 0) { - gSaveContext.health = 0; + if (gSaveContext.save.info.playerData.health <= 0) { + gSaveContext.save.info.playerData.health = 0; return false; } else { return true; @@ -2228,7 +2242,7 @@ s32 Health_ChangeBy(PlayState* play, s16 amount) { } void Health_GiveHearts(s16 hearts) { - gSaveContext.healthCapacity += hearts * 0x10; + gSaveContext.save.info.playerData.healthCapacity += hearts * 0x10; } void Rupees_ChangeBy(s16 rupeeChange) { @@ -2295,9 +2309,10 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } void Magic_Fill(PlayState* play) { - if (gSaveContext.isMagicAcquired) { + if (gSaveContext.save.info.playerData.isMagicAcquired) { gSaveContext.prevMagicState = gSaveContext.magicState; - gSaveContext.magicFillTarget = (gSaveContext.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER; + gSaveContext.magicFillTarget = + (gSaveContext.save.info.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER; gSaveContext.magicState = MAGIC_STATE_FILL; } } @@ -2318,11 +2333,11 @@ void Magic_Reset(PlayState* play) { * @return false if the request failed */ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { - if (!gSaveContext.isMagicAcquired) { + if (!gSaveContext.save.info.playerData.isMagicAcquired) { return false; } - if ((type != MAGIC_ADD) && (gSaveContext.magic - amount) < 0) { + if ((type != MAGIC_ADD) && (gSaveContext.save.info.playerData.magic - amount) < 0) { if (gSaveContext.magicCapacity != 0) { Audio_PlaySfxGeneral(NA_SE_SY_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -2339,7 +2354,7 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - gSaveContext.magicTarget = gSaveContext.magic - amount; + gSaveContext.magicTarget = gSaveContext.save.info.playerData.magic - amount; gSaveContext.magicState = MAGIC_STATE_CONSUME_SETUP; return true; } else { @@ -2357,7 +2372,7 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - gSaveContext.magicTarget = gSaveContext.magic - amount; + gSaveContext.magicTarget = gSaveContext.save.info.playerData.magic - amount; gSaveContext.magicState = MAGIC_STATE_METER_FLASH_3; return true; } else { @@ -2368,7 +2383,7 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { case MAGIC_CONSUME_LENS: if (gSaveContext.magicState == MAGIC_STATE_IDLE) { - if (gSaveContext.magic != 0) { + if (gSaveContext.save.info.playerData.magic != 0) { play->interfaceCtx.lensMagicConsumptionTimer = 80; gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS; return true; @@ -2389,7 +2404,7 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - gSaveContext.magicTarget = gSaveContext.magic - amount; + gSaveContext.magicTarget = gSaveContext.save.info.playerData.magic - amount; gSaveContext.magicState = MAGIC_STATE_METER_FLASH_2; return true; } else { @@ -2400,8 +2415,8 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { case MAGIC_ADD: // Sets target for magic to increase to - if (gSaveContext.magic <= gSaveContext.magicCapacity) { - gSaveContext.magicTarget = gSaveContext.magic + amount; + if (gSaveContext.save.info.playerData.magic <= gSaveContext.magicCapacity) { + gSaveContext.magicTarget = gSaveContext.save.info.playerData.magic + amount; if (gSaveContext.magicTarget >= gSaveContext.magicCapacity) { gSaveContext.magicTarget = gSaveContext.magicCapacity; @@ -2437,7 +2452,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 - temp = gSaveContext.magicLevel * MAGIC_NORMAL_METER; + temp = gSaveContext.save.info.playerData.magicLevel * MAGIC_NORMAL_METER; if (gSaveContext.magicCapacity != temp) { if (gSaveContext.magicCapacity < temp) { gSaveContext.magicCapacity += 8; @@ -2459,7 +2474,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_FILL: // Add magic until magicFillTarget is reached - gSaveContext.magic += 4; + gSaveContext.save.info.playerData.magic += 4; if (gSaveContext.gameMode == GAMEMODE_NORMAL && !IS_CUTSCENE_LAYER) { Audio_PlaySfxGeneral(NA_SE_SY_GAUGE_UP - SFX_FLAG, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, @@ -2467,10 +2482,11 @@ void Magic_Update(PlayState* play) { } // "Storage MAGIC_NOW=%d (%d)" - osSyncPrintf("蓄電 MAGIC_NOW=%d (%d)\n", gSaveContext.magic, gSaveContext.magicFillTarget); + osSyncPrintf("蓄電 MAGIC_NOW=%d (%d)\n", gSaveContext.save.info.playerData.magic, + gSaveContext.magicFillTarget); - if (gSaveContext.magic >= gSaveContext.magicFillTarget) { - gSaveContext.magic = gSaveContext.magicFillTarget; + if (gSaveContext.save.info.playerData.magic >= gSaveContext.magicFillTarget) { + gSaveContext.save.info.playerData.magic = gSaveContext.magicFillTarget; gSaveContext.magicState = gSaveContext.prevMagicState; gSaveContext.prevMagicState = MAGIC_STATE_IDLE; } @@ -2484,12 +2500,12 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME: // Consume magic until target is reached or no more magic is available - gSaveContext.magic -= 2; - if (gSaveContext.magic <= 0) { - gSaveContext.magic = 0; + gSaveContext.save.info.playerData.magic -= 2; + if (gSaveContext.save.info.playerData.magic <= 0) { + gSaveContext.save.info.playerData.magic = 0; gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; sMagicBorderR = sMagicBorderG = sMagicBorderB = 255; - } else if (gSaveContext.magic == gSaveContext.magicTarget) { + } else if (gSaveContext.save.info.playerData.magic == gSaveContext.magicTarget) { gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; sMagicBorderR = sMagicBorderG = sMagicBorderB = 255; } @@ -2543,12 +2559,13 @@ void Magic_Update(PlayState* play) { if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) && (msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { - if ((gSaveContext.magic == 0) || + if ((gSaveContext.save.info.playerData.magic == 0) || + ((Player_GetEnvironmentalHazard(play) >= PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) && (Player_GetEnvironmentalHazard(play) <= PLAYER_ENV_HAZARD_UNDERWATER_FREE)) || - ((gSaveContext.equips.buttonItems[1] != ITEM_LENS_OF_TRUTH) && - (gSaveContext.equips.buttonItems[2] != ITEM_LENS_OF_TRUTH) && - (gSaveContext.equips.buttonItems[3] != ITEM_LENS_OF_TRUTH)) || + ((gSaveContext.save.info.equips.buttonItems[1] != ITEM_LENS_OF_TRUTH) && + (gSaveContext.save.info.equips.buttonItems[2] != ITEM_LENS_OF_TRUTH) && + (gSaveContext.save.info.equips.buttonItems[3] != ITEM_LENS_OF_TRUTH)) || !play->actorCtx.lensActive) { // Force lens off and set magic meter state to idle play->actorCtx.lensActive = false; @@ -2561,7 +2578,7 @@ void Magic_Update(PlayState* play) { interfaceCtx->lensMagicConsumptionTimer--; if (interfaceCtx->lensMagicConsumptionTimer == 0) { - gSaveContext.magic--; + gSaveContext.save.info.playerData.magic--; interfaceCtx->lensMagicConsumptionTimer = 80; } } @@ -2604,11 +2621,11 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_ADD: // Add magic until target is reached - gSaveContext.magic += 4; + gSaveContext.save.info.playerData.magic += 4; Audio_PlaySfxGeneral(NA_SE_SY_GAUGE_UP - SFX_FLAG, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - if (gSaveContext.magic >= gSaveContext.magicTarget) { - gSaveContext.magic = gSaveContext.magicTarget; + if (gSaveContext.save.info.playerData.magic >= gSaveContext.magicTarget) { + gSaveContext.save.info.playerData.magic = gSaveContext.magicTarget; gSaveContext.magicState = gSaveContext.prevMagicState; gSaveContext.prevMagicState = MAGIC_STATE_IDLE; } @@ -2626,8 +2643,8 @@ void Magic_DrawMeter(PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_parameter.c", 2650); - if (gSaveContext.magicLevel != 0) { - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.magicLevel != 0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { magicMeterY = R_MAGIC_METER_Y_LOWER; // two rows of hearts } else { magicMeterY = R_MAGIC_METER_Y_HIGHER; // one row of hearts @@ -2665,8 +2682,8 @@ void Magic_DrawMeter(PlayState* play) { G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, R_MAGIC_FILL_X << 2, (magicMeterY + 3) << 2, - (R_MAGIC_FILL_X + gSaveContext.magic) << 2, (magicMeterY + 10) << 2, G_TX_RENDERTILE, 0, - 0, 1 << 10, 1 << 10); + (R_MAGIC_FILL_X + gSaveContext.save.info.playerData.magic) << 2, + (magicMeterY + 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++); @@ -2686,8 +2703,8 @@ void Magic_DrawMeter(PlayState* play) { G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, R_MAGIC_FILL_X << 2, (magicMeterY + 3) << 2, - (R_MAGIC_FILL_X + gSaveContext.magic) << 2, (magicMeterY + 10) << 2, G_TX_RENDERTILE, 0, - 0, 1 << 10, 1 << 10); + (R_MAGIC_FILL_X + gSaveContext.save.info.playerData.magic) << 2, + (magicMeterY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -2871,7 +2888,7 @@ void Interface_DrawItemButtons(PlayState* play) { // Empty C Button Arrows for (temp = 1; temp < 4; temp++) { - if (gSaveContext.equips.buttonItems[temp] > 0xF0) { + if (gSaveContext.save.info.equips.buttonItems[temp] > 0xF0) { if (temp == 1) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, R_C_BTN_COLOR(0), R_C_BTN_COLOR(1), R_C_BTN_COLOR(2), interfaceCtx->cLeftAlpha); @@ -2912,7 +2929,7 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { OPEN_DISPS(play->state.gfxCtx, "../z_parameter.c", 3105); - i = gSaveContext.equips.buttonItems[button]; + i = gSaveContext.save.info.equips.buttonItems[button]; if ((i == ITEM_DEKU_STICK) || (i == ITEM_DEKU_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) || ((i >= ITEM_BOW_FIRE) && (i <= ITEM_BOW_LIGHT)) || (i == ITEM_SLINGSHOT) || (i == ITEM_BOMBCHU) || @@ -3155,7 +3172,7 @@ void Interface_Draw(PlayState* play) { case SCENE_GANONS_TOWER_COLLAPSE_INTERIOR: case SCENE_INSIDE_GANONS_CASTLE_COLLAPSE: case SCENE_TREASURE_BOX_SHOP: - if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { + if (gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { // Small Key Icon gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); @@ -3170,7 +3187,8 @@ void Interface_Draw(PlayState* play) { TEXEL0, 0, PRIMITIVE, 0); interfaceCtx->counterDigits[2] = 0; - interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]; + interfaceCtx->counterDigits[3] = + gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex]; while (interfaceCtx->counterDigits[3] >= 10) { interfaceCtx->counterDigits[2]++; @@ -3198,9 +3216,9 @@ void Interface_Draw(PlayState* play) { // Rupee Counter gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.rupees == CUR_CAPACITY(UPG_WALLET)) { + if (gSaveContext.save.info.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); - } else if (gSaveContext.rupees != 0) { + } else if (gSaveContext.save.info.playerData.rupees != 0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); @@ -3210,7 +3228,7 @@ void Interface_Draw(PlayState* play) { PRIMITIVE, 0); interfaceCtx->counterDigits[0] = interfaceCtx->counterDigits[1] = 0; - interfaceCtx->counterDigits[2] = gSaveContext.rupees; + interfaceCtx->counterDigits[2] = gSaveContext.save.info.playerData.rupees; if ((interfaceCtx->counterDigits[2] > 9999) || (interfaceCtx->counterDigits[2] < 0)) { interfaceCtx->counterDigits[2] &= 0xDDD; @@ -3253,7 +3271,7 @@ void Interface_Draw(PlayState* play) { if (!(interfaceCtx->unk_1FA)) { // B Button Icon & Ammo Count - if (gSaveContext.equips.buttonItems[0] != ITEM_NONE) { + if (gSaveContext.save.info.equips.buttonItems[0] != ITEM_NONE) { Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, 0); if ((player->stateFlags1 & PLAYER_STATE1_23) || (play->shootingGalleryStatus > 1) || @@ -3286,7 +3304,7 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); // C-Left Button Icon & Ammo Count - if (gSaveContext.equips.buttonItems[1] < 0xF0) { + if (gSaveContext.save.info.equips.buttonItems[1] < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cLeftAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x1000, 1); @@ -3299,7 +3317,7 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); // C-Down Button Icon & Ammo Count - if (gSaveContext.equips.buttonItems[2] < 0xF0) { + if (gSaveContext.save.info.equips.buttonItems[2] < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cDownAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x2000, 2); @@ -3312,7 +3330,7 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); // C-Right Button Icon & Ammo Count - if (gSaveContext.equips.buttonItems[3] < 0xF0) { + if (gSaveContext.save.info.equips.buttonItems[3] < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cRightAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x3000, 3); @@ -3466,19 +3484,19 @@ void Interface_Draw(PlayState* play) { (Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT)) { // Trade quest timer reached 0 sSubTimerStateTimer = 40; - gSaveContext.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.subTimerState = SUBTIMER_STATE_OFF; - if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && - (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) && - (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) && - (gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) { + if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_MASTER) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) && + (gSaveContext.save.info.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) { if (gSaveContext.buttonStatus[0] != BTN_ENABLED) { - gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; + gSaveContext.save.info.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; } else { - gSaveContext.equips.buttonItems[0] = ITEM_NONE; + gSaveContext.save.info.equips.buttonItems[0] = ITEM_NONE; } } @@ -3493,8 +3511,8 @@ void Interface_Draw(PlayState* play) { INV_CONTENT(gSpoilingItemReverts[svar1]) = gSpoilingItemReverts[svar1]; for (svar2 = 1; svar2 < 4; svar2++) { - if (gSaveContext.equips.buttonItems[svar2] == gSpoilingItems[svar1]) { - gSaveContext.equips.buttonItems[svar2] = gSpoilingItemReverts[svar1]; + if (gSaveContext.save.info.equips.buttonItems[svar2] == gSpoilingItems[svar1]) { + gSaveContext.save.info.equips.buttonItems[svar2] = gSpoilingItemReverts[svar1]; Interface_LoadItemIcon1(play, svar2); } } @@ -3515,7 +3533,7 @@ void Interface_Draw(PlayState* play) { case TIMER_STATE_ENV_HAZARD_INIT: sTimerStateTimer = 20; sTimerNextSecondTimer = 20; - gSaveContext.timerSeconds = gSaveContext.health >> 1; + gSaveContext.timerSeconds = gSaveContext.save.info.playerData.health >> 1; gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_PREVIEW; break; @@ -3556,7 +3574,7 @@ void Interface_Draw(PlayState* play) { svar1 = (gSaveContext.timerX[TIMER_ID_MAIN] - 26) / sTimerStateTimer; gSaveContext.timerX[TIMER_ID_MAIN] -= svar1; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 54) / sTimerStateTimer; // two rows of hearts } else { svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 46) / sTimerStateTimer; // one row of hearts @@ -3568,7 +3586,7 @@ void Interface_Draw(PlayState* play) { sTimerStateTimer = 20; gSaveContext.timerX[TIMER_ID_MAIN] = 26; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_MAIN] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_MAIN] = 46; // one row of hearts @@ -3585,7 +3603,7 @@ void Interface_Draw(PlayState* play) { case TIMER_STATE_DOWN_TICK: if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) || (gSaveContext.timerState == TIMER_STATE_DOWN_TICK)) { - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_MAIN] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_MAIN] = 46; // one row of hearts @@ -3605,8 +3623,8 @@ void Interface_Draw(PlayState* play) { // Out of time gSaveContext.timerState = TIMER_STATE_STOP; if (sEnvHazardActive) { - gSaveContext.health = 0; - play->damagePlayer(play, -(gSaveContext.health + 2)); + gSaveContext.save.info.playerData.health = 0; + play->damagePlayer(play, -(gSaveContext.save.info.playerData.health + 2)); } sEnvHazardActive = false; } else if (gSaveContext.timerSeconds > 60) { @@ -3637,7 +3655,7 @@ void Interface_Draw(PlayState* play) { svar1 = (gSaveContext.timerX[TIMER_ID_MAIN] - 26) / sTimerStateTimer; gSaveContext.timerX[TIMER_ID_MAIN] -= svar1; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 54) / sTimerStateTimer; // two rows of hearts } else { svar1 = (gSaveContext.timerY[TIMER_ID_MAIN] - 46) / sTimerStateTimer; // one row of hearts @@ -3648,7 +3666,7 @@ void Interface_Draw(PlayState* play) { if (sTimerStateTimer == 0) { sTimerStateTimer = 20; gSaveContext.timerX[TIMER_ID_MAIN] = 26; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_MAIN] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_MAIN] = 46; // one row of hearts @@ -3659,7 +3677,7 @@ void Interface_Draw(PlayState* play) { FALLTHROUGH; case TIMER_STATE_UP_TICK: if (gSaveContext.timerState == TIMER_STATE_UP_TICK) { - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_MAIN] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_MAIN] = 46; // one row of hearts @@ -3743,7 +3761,7 @@ void Interface_Draw(PlayState* play) { ((void)0, gSaveContext.timerY[TIMER_ID_SUB]), gSaveContext.subTimerSeconds); svar1 = (gSaveContext.timerX[TIMER_ID_SUB] - 26) / sSubTimerStateTimer; gSaveContext.timerX[TIMER_ID_SUB] -= svar1; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { // two rows of hearts svar1 = (gSaveContext.timerY[TIMER_ID_SUB] - 54) / sSubTimerStateTimer; } else { @@ -3757,7 +3775,7 @@ void Interface_Draw(PlayState* play) { sSubTimerStateTimer = 20; gSaveContext.timerX[TIMER_ID_SUB] = 26; - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_SUB] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_SUB] = 46; // one row of hearts @@ -3774,7 +3792,7 @@ void Interface_Draw(PlayState* play) { case SUBTIMER_STATE_UP_TICK: if ((gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_TICK) || (gSaveContext.subTimerState == SUBTIMER_STATE_UP_TICK)) { - if (gSaveContext.healthCapacity > 0xA0) { + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { gSaveContext.timerY[TIMER_ID_SUB] = 54; // two rows of hearts } else { gSaveContext.timerY[TIMER_ID_SUB] = 46; // one row of hearts @@ -3798,7 +3816,7 @@ void Interface_Draw(PlayState* play) { (play->sceneId != SCENE_INSIDE_GANONS_CASTLE_COLLAPSE))) { sSubTimerStateTimer = 40; gSaveContext.subTimerState = SUBTIMER_STATE_RESPAWN; - gSaveContext.cutsceneIndex = 0; + gSaveContext.save.cutsceneIndex = 0; Message_StartTextbox(play, 0x71B0, NULL); func_8002DF54(play, NULL, PLAYER_CSMODE_8); } else { @@ -4078,19 +4096,20 @@ void Interface_Update(PlayState* play) { if (gSaveContext.healthAccumulator != 0) { gSaveContext.healthAccumulator -= 4; - gSaveContext.health += 4; + gSaveContext.save.info.playerData.health += 4; - if ((gSaveContext.health & 0xF) < 4) { + if ((gSaveContext.save.info.playerData.health & 0xF) < 4) { Audio_PlaySfxGeneral(NA_SE_SY_HP_RECOVER, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } - osSyncPrintf("now_life=%d max_life=%d\n", gSaveContext.health, gSaveContext.healthCapacity); + osSyncPrintf("now_life=%d max_life=%d\n", gSaveContext.save.info.playerData.health, + gSaveContext.save.info.playerData.healthCapacity); - if (gSaveContext.health >= gSaveContext.healthCapacity) { - gSaveContext.health = gSaveContext.healthCapacity; - osSyncPrintf("S_Private.now_life=%d S_Private.max_life=%d\n", gSaveContext.health, - gSaveContext.healthCapacity); + if (gSaveContext.save.info.playerData.health >= gSaveContext.save.info.playerData.healthCapacity) { + gSaveContext.save.info.playerData.health = gSaveContext.save.info.playerData.healthCapacity; + osSyncPrintf("S_Private.now_life=%d S_Private.max_life=%d\n", gSaveContext.save.info.playerData.health, + gSaveContext.save.info.playerData.healthCapacity); gSaveContext.healthAccumulator = 0; } } @@ -4118,31 +4137,31 @@ void Interface_Update(PlayState* play) { if (gSaveContext.rupeeAccumulator != 0) { if (gSaveContext.rupeeAccumulator > 0) { - if (gSaveContext.rupees < CUR_CAPACITY(UPG_WALLET)) { + if (gSaveContext.save.info.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { gSaveContext.rupeeAccumulator--; - gSaveContext.rupees++; + gSaveContext.save.info.playerData.rupees++; Audio_PlaySfxGeneral(NA_SE_SY_RUPY_COUNT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } else { // "Rupee Amount MAX = %d" osSyncPrintf("ルピー数MAX = %d\n", CUR_CAPACITY(UPG_WALLET)); - gSaveContext.rupees = CUR_CAPACITY(UPG_WALLET); + gSaveContext.save.info.playerData.rupees = CUR_CAPACITY(UPG_WALLET); gSaveContext.rupeeAccumulator = 0; } - } else if (gSaveContext.rupees != 0) { + } else if (gSaveContext.save.info.playerData.rupees != 0) { if (gSaveContext.rupeeAccumulator <= -50) { gSaveContext.rupeeAccumulator += 10; - gSaveContext.rupees -= 10; + gSaveContext.save.info.playerData.rupees -= 10; - if (gSaveContext.rupees < 0) { - gSaveContext.rupees = 0; + if (gSaveContext.save.info.playerData.rupees < 0) { + gSaveContext.save.info.playerData.rupees = 0; } Audio_PlaySfxGeneral(NA_SE_SY_RUPY_COUNT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } else { gSaveContext.rupeeAccumulator++; - gSaveContext.rupees--; + gSaveContext.save.info.playerData.rupees--; Audio_PlaySfxGeneral(NA_SE_SY_RUPY_COUNT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } @@ -4201,13 +4220,13 @@ void Interface_Update(PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionMode == TRANS_MODE_OFF) && ((play->csCtx.state == CS_STATE_IDLE) || !Player_InCsMode(play))) { - if (gSaveContext.isMagicAcquired && (gSaveContext.magicLevel == 0)) { - gSaveContext.magicLevel = gSaveContext.isDoubleMagicAcquired + 1; + if (gSaveContext.save.info.playerData.isMagicAcquired && (gSaveContext.save.info.playerData.magicLevel == 0)) { + gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.isDoubleMagicAcquired + 1; gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY; osSyncPrintf(VT_FGCOL(YELLOW)); osSyncPrintf("魔法スター─────ト!!!!!!!!!\n"); // "Magic Start!!!!!!!!!" - osSyncPrintf("MAGIC_MAX=%d\n", gSaveContext.magicLevel); - osSyncPrintf("MAGIC_NOW=%d\n", gSaveContext.magic); + osSyncPrintf("MAGIC_MAX=%d\n", gSaveContext.save.info.playerData.magicLevel); + osSyncPrintf("MAGIC_NOW=%d\n", gSaveContext.save.info.playerData.magic); osSyncPrintf("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget); osSyncPrintf("Z_MAGIC_NOW_MAX=%d\n", gSaveContext.magicCapacity); osSyncPrintf(VT_RST); @@ -4219,7 +4238,8 @@ void Interface_Update(PlayState* play) { if (gSaveContext.timerState == TIMER_STATE_OFF) { if (((sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FREE)) && - ((gSaveContext.health >> 1) != 0)) { + + ((gSaveContext.save.info.playerData.health >> 1) != 0)) { gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_INIT; gSaveContext.timerX[TIMER_ID_MAIN] = 140; gSaveContext.timerY[TIMER_ID_MAIN] = 80; @@ -4277,7 +4297,8 @@ void Interface_Update(PlayState* play) { if (play->envCtx.sceneTimeSpeed != 0) { if (gSaveContext.sunsSongState != SUNSSONG_SPEED_TIME) { D_80125B60 = false; - if ((gSaveContext.dayTime >= CLOCK_TIME(6, 30)) && (gSaveContext.dayTime <= CLOCK_TIME(18, 0) + 1)) { + if ((gSaveContext.save.dayTime >= CLOCK_TIME(6, 30)) && + (gSaveContext.save.dayTime <= CLOCK_TIME(18, 0) + 1)) { D_80125B60 = true; } @@ -4285,19 +4306,21 @@ void Interface_Update(PlayState* play) { sPrevTimeSpeed = gTimeSpeed; gTimeSpeed = 400; } else if (!D_80125B60) { - if ((gSaveContext.dayTime >= CLOCK_TIME(6, 30)) && (gSaveContext.dayTime <= CLOCK_TIME(18, 0) + 1)) { + if ((gSaveContext.save.dayTime >= CLOCK_TIME(6, 30)) && + (gSaveContext.save.dayTime <= CLOCK_TIME(18, 0) + 1)) { gSaveContext.sunsSongState = SUNSSONG_INACTIVE; gTimeSpeed = sPrevTimeSpeed; play->msgCtx.ocarinaMode = OCARINA_MODE_04; } - } else if (gSaveContext.dayTime > CLOCK_TIME(18, 0) + 1) { + } else if (gSaveContext.save.dayTime > CLOCK_TIME(18, 0) + 1) { gSaveContext.sunsSongState = SUNSSONG_INACTIVE; gTimeSpeed = sPrevTimeSpeed; play->msgCtx.ocarinaMode = OCARINA_MODE_04; } } else if ((play->roomCtx.curRoom.behaviorType1 != ROOM_BEHAVIOR_TYPE1_1) && (interfaceCtx->restrictions.sunsSong != 3)) { - if ((gSaveContext.dayTime >= CLOCK_TIME(6, 30)) && (gSaveContext.dayTime < CLOCK_TIME(18, 0) + 1)) { + if ((gSaveContext.save.dayTime >= CLOCK_TIME(6, 30)) && + (gSaveContext.save.dayTime < CLOCK_TIME(18, 0) + 1)) { gSaveContext.nextDayTime = NEXT_TIME_NIGHT; play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; @@ -4315,7 +4338,7 @@ void Interface_Update(PlayState* play) { } gSaveContext.respawnFlag = -2; - play->nextEntranceIndex = gSaveContext.entranceIndex; + play->nextEntranceIndex = gSaveContext.save.entranceIndex; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.sunsSongState = SUNSSONG_INACTIVE; func_800F6964(30); |
