summaryrefslogtreecommitdiff
path: root/src/code/z_parameter.c
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2023-08-13 21:24:26 +0200
committerGitHub <noreply@github.com>2023-08-13 15:24:26 -0400
commit6e7a6d41814a1329b43bffc3b95bb75716d9efa6 (patch)
treec526051bccb0d401107c1f335048116e8c653ac0 /src/code/z_parameter.c
parente272186b5f44f097915e135633492f7c28a40e2b (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.c725
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);