mirror of
https://github.com/zeldaret/mm.git
synced 2026-05-23 06:54:14 -04:00
Add SaveInfo substruct to SaveContext (#1191)
* SaveInfo * fix accesses in sram_NES.c * some more fixing * more fixes * format * fix unk * namefixer * format * bss * review * weekeventregconvert * namefixer * bss
This commit is contained in:
@@ -81,7 +81,7 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) {
|
||||
void func_80952734(EnMs* this, PlayState* play) {
|
||||
s16 temp_v1 = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
if (gSaveContext.save.inventory.items[10] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[10] == ITEM_NONE) {
|
||||
this->actor.textId = 0x92E;
|
||||
} else {
|
||||
this->actor.textId = 0x932;
|
||||
@@ -187,12 +187,12 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
Message_CloseTextbox(play);
|
||||
if ((s32) gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -274,14 +274,14 @@ block_7:
|
||||
goto block_16;
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
if ((s32) gSaveContext.save.playerData.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) {
|
||||
goto block_13;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
block_13:
|
||||
if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] < 0x14) {
|
||||
if ((s32) gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] < 0x14) {
|
||||
goto block_15;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
@@ -312,7 +312,7 @@ which in many ways looks worse: you can see why the use of gotos in code is stro
|
||||
The simplest sort of block label to eliminate is one that is only used once, and where the corresponding goto jumps over a simple block of code with no extra internal control flow structure. There are two obvious examples of this here, the first being
|
||||
|
||||
```C
|
||||
if ((s32) gSaveContext.save.playerData.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.saveInfo.playerData.rupees >= 0xA) {
|
||||
goto block_13;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
@@ -324,7 +324,7 @@ block_13:
|
||||
Currently, this says to jump over the code block `play_sound...` if the condition in the if is satisfied. In non-goto terms, this means that the block should be run if the condition is *not* satisfied. This also illustrates a general property of goto-only mode: you have to reverse the senses of all of the ifs. Therefore the appropriate approach is to swap the if round, put the code block inside, and remove the goto and the label:
|
||||
|
||||
```C
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
@@ -378,12 +378,12 @@ block_7:
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -447,12 +447,12 @@ block_7:
|
||||
block_11:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -497,12 +497,12 @@ So let us rewrite the entire second half as a switch:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
return;
|
||||
@@ -533,10 +533,10 @@ There's a couple of other obvious things here:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -598,10 +598,10 @@ block_7:
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -663,10 +663,10 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
@@ -715,10 +715,10 @@ void func_809527F8(EnMs* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x935U);
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
Message_ContinueTextbox(play, 0x937U);
|
||||
} else {
|
||||
|
||||
@@ -185,7 +185,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) {
|
||||
if (this->actor.textId == 0x2AD9) {
|
||||
Flags_SetSwitch(play, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
|
||||
if ((gSaveContext.save.weekEventReg[63] & 0x80)) {
|
||||
if ((gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)) {
|
||||
this->actor.textId = 0x2ADF;
|
||||
} else {
|
||||
this->actor.textId = 0x2ADA;
|
||||
@@ -516,7 +516,7 @@ void func_80C102D4(EnRecepgirl* this, PlayState* play) {
|
||||
if (this->actor.textId == 0x2AD9) { // "Welcome..."
|
||||
Flags_SetSwitch(play, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_bg_Anim_00AD98, 10.0f);
|
||||
if (gSaveContext.save.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
|
||||
if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
|
||||
this->actor.textId = 0x2ADF; // Mayor's office is on the left (meeting ended)
|
||||
} else {
|
||||
this->actor.textId = 0x2ADA; // Mayor's office is on the left (meeting ongoing)
|
||||
|
||||
@@ -404,7 +404,7 @@ There remains one thing we need to fix before trying to compile it, namely `*(&g
|
||||
/* 0x0F5C */ u32 regionsVisited; // "area_arrival"
|
||||
```
|
||||
|
||||
so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.weekEventReg[63] & 0x80)` will do.
|
||||
so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.save.saveInfo.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.save.saveInfo.weekEventReg[63] & 0x80)` will do.
|
||||
|
||||
Running `./diff.py -mwo3 func_80C102D4` and scrolling down, we discover that this doesn't match!
|
||||
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
// To be used with `Magic_Add`, but ensures enough magic is added to fill the magic bar to capacity
|
||||
#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER)
|
||||
#define MAGIC_FILL_TO_CAPACITY (((void)0, gSaveContext.magicFillTarget) + (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER)
|
||||
|
||||
#define CONTROLLER1(gameState) (&(gameState)->input[0])
|
||||
#define CONTROLLER2(gameState) (&(gameState)->input[1])
|
||||
|
||||
+86
-82
@@ -252,61 +252,65 @@ typedef struct SavePlayerData {
|
||||
/* 0x26 */ s16 savedSceneId; // "scene_data_ID"
|
||||
} SavePlayerData; // size = 0x28
|
||||
|
||||
typedef struct SaveInfo {
|
||||
/* 0x000 */ SavePlayerData playerData;
|
||||
/* 0x028 */ ItemEquips equips;
|
||||
/* 0x04C */ Inventory inventory;
|
||||
/* 0x0D4 */ PermanentSceneFlags permanentSceneFlags[120];
|
||||
/* 0xDF4 */ UNK_TYPE1 unk_DF4[0x54];
|
||||
/* 0xE48 */ u32 dekuPlaygroundHighScores[3];
|
||||
/* 0xE54 */ u32 pictoFlags0; // Flags set by `PictoActor`s if pictograph is valid
|
||||
/* 0xE58 */ u32 pictoFlags1; // Flags set by Snap_ValidatePictograph() to record errors; volatile since that function is run many times in succession
|
||||
/* 0xE5C */ u32 unk_E5C;
|
||||
/* 0xE60 */ u32 unk_E60;
|
||||
/* 0xE64 */ u32 unk_E64[7]; // Invadepoh flags
|
||||
/* 0xE80 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes
|
||||
/* 0xE9C */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls
|
||||
/* 0xEA0 */ u32 unk_EA0; // Gossic stone heart piece flags
|
||||
/* 0xEA4 */ u32 unk_EA4;
|
||||
/* 0xEA8 */ u32 unk_EA8[2]; // Related to blue warps
|
||||
/* 0xEB0 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man
|
||||
/* 0xEB4 */ u32 unk_EB4;
|
||||
/* 0xEB8 */ u32 bankRupees;
|
||||
/* 0xEBC */ u32 unk_EBC;
|
||||
/* 0xEC0 */ u32 unk_EC0; // Fishing flags
|
||||
/* 0xEC4 */ u32 unk_EC4;
|
||||
/* 0xEC8 */ u32 horseBackBalloonHighScore;
|
||||
/* 0xECC */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits)
|
||||
/* 0xED0 */ u32 shootingGalleryHighScores; // High scores for both shooting galleries. Town uses lower 16 bits, Swamp uses higher 16 bits.
|
||||
/* 0xED4 */ u8 weekEventReg[100]; // "week_event_reg"
|
||||
/* 0xF38 */ u32 regionsVisited; // "area_arrival"
|
||||
/* 0xF3C */ u32 worldMapCloudVisibility; // "cloud_clear"
|
||||
/* 0xF40 */ u8 unk_F40; // "oca_rec_flag" has scarecrows song
|
||||
/* 0xF41 */ u8 unk_F41; // "oca_rec_flag8" scarecrows song set?
|
||||
/* 0xF42 */ u8 scarecrowSpawnSong[128];
|
||||
/* 0xFC2 */ s8 bombersCaughtNum; // "aikotoba_index"
|
||||
/* 0xFC3 */ s8 bombersCaughtOrder[5]; // "aikotoba_table"
|
||||
/* 0xFC8 */ s8 lotteryCodes[3][3]; // "numbers_table", Preset lottery codes
|
||||
/* 0xFD1 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table"
|
||||
/* 0xFD7 */ s8 bomberCode[5]; // "bombers_aikotoba_table"
|
||||
/* 0xFDC */ HorseData horseData;
|
||||
/* 0xFE6 */ u16 checksum; // "check_sum"
|
||||
} SaveInfo; // size = 0xFE8
|
||||
|
||||
typedef struct Save {
|
||||
/* 0x0000 */ s32 entrance; // "scene_no"
|
||||
/* 0x0004 */ u8 equippedMask; // "player_mask"
|
||||
/* 0x0005 */ u8 isFirstCycle; // "opening_flag"
|
||||
/* 0x0006 */ u8 unk_06;
|
||||
/* 0x0007 */ u8 linkAge; // "link_age"
|
||||
/* 0x0008 */ s32 cutscene; // "day_time"
|
||||
/* 0x000C */ u16 time; // "zelda_time"
|
||||
/* 0x000E */ u16 owlSaveLocation;
|
||||
/* 0x0010 */ s32 isNight; // "asahiru_fg"
|
||||
/* 0x0014 */ s32 timeSpeedOffset; // "change_zelda_time"
|
||||
/* 0x0018 */ s32 day; // "totalday"
|
||||
/* 0x001C */ s32 daysElapsed; // "eventday"
|
||||
/* 0x0020 */ u8 playerForm; // "player_character"
|
||||
/* 0x0021 */ u8 snowheadCleared; // "spring_flag"
|
||||
/* 0x0022 */ u8 hasTatl; // "bell_flag"
|
||||
/* 0x0023 */ u8 isOwlSave;
|
||||
/* 0x0024 */ SavePlayerData playerData;
|
||||
/* 0x004C */ ItemEquips equips;
|
||||
/* 0x0070 */ Inventory inventory;
|
||||
/* 0x00F8 */ PermanentSceneFlags permanentSceneFlags[120];
|
||||
/* 0x0E18 */ u8 unk_E18[0x54];
|
||||
/* 0x0E6C */ u32 dekuPlaygroundHighScores[3];
|
||||
/* 0x0E78 */ u32 pictoFlags0; // Flags set by `PictoActor`s if pictograph is valid
|
||||
/* 0x0E7C */ u32 pictoFlags1; // Flags set by Snap_ValidatePictograph() to record errors; volatile since that function is run many times in succession
|
||||
/* 0x0E80 */ u32 unk_E80;
|
||||
/* 0x0E84 */ u32 unk_E84;
|
||||
/* 0x0E88 */ u32 unk_E88[7]; // Invadepoh flags
|
||||
/* 0x0EA4 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes
|
||||
/* 0x0EC0 */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls
|
||||
/* 0x0EC4 */ u32 unk_EC4; // Gossic stone heart piece flags
|
||||
/* 0x0EC8 */ u32 unk_EC8;
|
||||
/* 0x0ECC */ u32 unk_ECC[2]; // Related to blue warps
|
||||
/* 0x0ED4 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man
|
||||
/* 0x0ED8 */ u32 unk_DD8;
|
||||
/* 0x0EDC */ u32 bankRupees;
|
||||
/* 0x0EE0 */ u32 unk_EE0;
|
||||
/* 0x0EE4 */ u32 unk_EE4; // Fishing flags
|
||||
/* 0x0EE8 */ u32 unk_EE8;
|
||||
/* 0x0EEC */ u32 horseBackBalloonHighScore;
|
||||
/* 0x0EF0 */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits)
|
||||
/* 0x0EF4 */ u32 shootingGalleryHighScores; // High scores for both shooting galleries. Town uses lower 16 bits, Swamp uses higher 16 bits.
|
||||
/* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg"
|
||||
/* 0x0F5C */ u32 regionsVisited; // "area_arrival"
|
||||
/* 0x0F60 */ u32 worldMapCloudVisibility; // "cloud_clear"
|
||||
/* 0x0F64 */ u8 unk_F64; // "oca_rec_flag" has scarecrows song
|
||||
/* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8" scarecrows song set?
|
||||
/* 0x0F66 */ u8 scarecrowSpawnSong[128];
|
||||
/* 0x0FE6 */ s8 bombersCaughtNum; // "aikotoba_index"
|
||||
/* 0x0FE7 */ s8 bombersCaughtOrder[5]; // "aikotoba_table"
|
||||
/* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table", Preset lottery codes
|
||||
/* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table"
|
||||
/* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table"
|
||||
/* 0x1000 */ HorseData horseData;
|
||||
/* 0x100A */ u16 checksum; // "check_sum"
|
||||
/* 0x00 */ s32 entrance; // "scene_no"
|
||||
/* 0x04 */ u8 equippedMask; // "player_mask"
|
||||
/* 0x05 */ u8 isFirstCycle; // "opening_flag"
|
||||
/* 0x06 */ u8 unk_06;
|
||||
/* 0x07 */ u8 linkAge; // "link_age"
|
||||
/* 0x08 */ s32 cutscene; // "day_time"
|
||||
/* 0x0C */ u16 time; // "zelda_time"
|
||||
/* 0x0E */ u16 owlSaveLocation;
|
||||
/* 0x10 */ s32 isNight; // "asahiru_fg"
|
||||
/* 0x14 */ s32 timeSpeedOffset; // "change_zelda_time"
|
||||
/* 0x18 */ s32 day; // "totalday"
|
||||
/* 0x1C */ s32 daysElapsed; // "eventday"
|
||||
/* 0x20 */ u8 playerForm; // "player_character"
|
||||
/* 0x21 */ u8 snowheadCleared; // "spring_flag"
|
||||
/* 0x22 */ u8 hasTatl; // "bell_flag"
|
||||
/* 0x23 */ u8 isOwlSave;
|
||||
/* 0x24 */ SaveInfo saveInfo;
|
||||
} Save; // size = 0x100C
|
||||
|
||||
typedef struct SaveContext {
|
||||
@@ -429,41 +433,41 @@ typedef enum {
|
||||
#define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm)
|
||||
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
#define AMMO(item) gSaveContext.save.inventory.ammo[SLOT(item)]
|
||||
#define INV_CONTENT(item) gSaveContext.save.inventory.items[SLOT(item)]
|
||||
#define GET_INV_CONTENT(item) ((void)0, gSaveContext.save.inventory.items)[SLOT(item)]
|
||||
#define AMMO(item) gSaveContext.save.saveInfo.inventory.ammo[SLOT(item)]
|
||||
#define INV_CONTENT(item) gSaveContext.save.saveInfo.inventory.items[SLOT(item)]
|
||||
#define GET_INV_CONTENT(item) ((void)0, gSaveContext.save.saveInfo.inventory.items)[SLOT(item)]
|
||||
|
||||
#define CUR_FORM ((gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.save.playerForm)
|
||||
|
||||
#define GET_SAVE_EQUIPS_EQUIPMENT ((void)0, gSaveContext.save.equips.equipment)
|
||||
#define GET_SAVE_INVENTORY_UPGRADES ((void)0, gSaveContext.save.inventory.upgrades)
|
||||
#define GET_SAVE_INVENTORY_QUEST_ITEMS ((void)0, gSaveContext.save.inventory.questItems)
|
||||
#define GET_SAVE_EQUIPS_EQUIPMENT ((void)0, gSaveContext.save.saveInfo.equips.equipment)
|
||||
#define GET_SAVE_INVENTORY_UPGRADES ((void)0, gSaveContext.save.saveInfo.inventory.upgrades)
|
||||
#define GET_SAVE_INVENTORY_QUEST_ITEMS ((void)0, gSaveContext.save.saveInfo.inventory.questItems)
|
||||
|
||||
#define GET_CUR_EQUIP_VALUE(equip) ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
|
||||
#define CUR_UPG_VALUE(upg) ((gSaveContext.save.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define CUR_UPG_VALUE(upg) ((gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define GET_CUR_UPG_VALUE(upg) ((GET_SAVE_INVENTORY_UPGRADES & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
|
||||
#define SET_EQUIP_VALUE(equip, value) (gSaveContext.save.equips.equipment = ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipNegMasks[equip]) | (u16)((u16)(value) << gEquipShifts[equip])))
|
||||
#define SET_EQUIP_VALUE(equip, value) (gSaveContext.save.saveInfo.equips.equipment = ((GET_SAVE_EQUIPS_EQUIPMENT & gEquipNegMasks[equip]) | (u16)((u16)(value) << gEquipShifts[equip])))
|
||||
|
||||
#define BUTTON_ITEM_EQUIP(form, button) (gSaveContext.save.equips.buttonItems[form][button])
|
||||
#define BUTTON_ITEM_EQUIP(form, button) (gSaveContext.save.saveInfo.equips.buttonItems[form][button])
|
||||
#define CUR_FORM_EQUIP(button) BUTTON_ITEM_EQUIP(CUR_FORM, button)
|
||||
|
||||
#define C_SLOT_EQUIP(form, button) (gSaveContext.save.equips.cButtonSlots[form][button])
|
||||
#define C_SLOT_EQUIP(form, button) (gSaveContext.save.saveInfo.equips.cButtonSlots[form][button])
|
||||
#define CHECK_QUEST_ITEM(item) (GET_SAVE_INVENTORY_QUEST_ITEMS & gBitFlags[item])
|
||||
#define SET_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS | gBitFlags[item]))
|
||||
#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS & (-1 - gBitFlags[item])))
|
||||
#define SET_QUEST_ITEM(item) (gSaveContext.save.saveInfo.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS | gBitFlags[item]))
|
||||
#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.saveInfo.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS & (-1 - gBitFlags[item])))
|
||||
|
||||
#define GET_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) >> QUEST_HEART_PIECE_COUNT)
|
||||
#define EQ_MAX_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) == (4 << QUEST_HEART_PIECE_COUNT))
|
||||
#define LEQ_MAX_QUEST_HEART_PIECE_COUNT ((GET_SAVE_INVENTORY_QUEST_ITEMS & 0xF0000000) <= (4 << QUEST_HEART_PIECE_COUNT))
|
||||
#define INCREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT))
|
||||
#define DECREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems -= (1 << QUEST_HEART_PIECE_COUNT))
|
||||
#define RESET_HEART_PIECE_COUNT (gSaveContext.save.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT))
|
||||
#define INCREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT))
|
||||
#define DECREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems -= (1 << QUEST_HEART_PIECE_COUNT))
|
||||
#define RESET_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT))
|
||||
|
||||
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item])
|
||||
#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item])
|
||||
#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.inventory.dungeonKeys[(void)0, dungeonIndex])
|
||||
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item])
|
||||
#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item])
|
||||
#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonKeys[(void)0, dungeonIndex])
|
||||
|
||||
#define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn)))
|
||||
#define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == EQUIP_SLOT_B ? C_SLOT_EQUIP(CUR_FORM, btn) : C_SLOT_EQUIP(0, btn)))
|
||||
@@ -491,21 +495,21 @@ typedef enum {
|
||||
|
||||
#define STOLEN_ITEM_NONE (0)
|
||||
|
||||
#define STOLEN_ITEM_1 ((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18)
|
||||
#define STOLEN_ITEM_2 ((gSaveContext.save.stolenItems & 0x00FF0000) >> 0x10)
|
||||
#define STOLEN_ITEM_1 ((gSaveContext.save.saveInfo.stolenItems & 0xFF000000) >> 0x18)
|
||||
#define STOLEN_ITEM_2 ((gSaveContext.save.saveInfo.stolenItems & 0x00FF0000) >> 0x10)
|
||||
|
||||
#define SET_STOLEN_ITEM_1(itemId) \
|
||||
(gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & ~0xFF000000) | ((itemId & 0xFF) << 0x18))
|
||||
(gSaveContext.save.saveInfo.stolenItems = (gSaveContext.save.saveInfo.stolenItems & ~0xFF000000) | ((itemId & 0xFF) << 0x18))
|
||||
#define SET_STOLEN_ITEM_2(itemId) \
|
||||
(gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & ~0x00FF0000) | ((itemId & 0xFF) << 0x10))
|
||||
(gSaveContext.save.saveInfo.stolenItems = (gSaveContext.save.saveInfo.stolenItems & ~0x00FF0000) | ((itemId & 0xFF) << 0x10))
|
||||
|
||||
#define GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() ((s32)(gSaveContext.save.shootingGalleryHighScores & 0xFFFF))
|
||||
#define GET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE() ((s32)((gSaveContext.save.shootingGalleryHighScores & 0xFFFF0000) >> 0x10))
|
||||
#define SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = (gSaveContext.save.shootingGalleryHighScores & 0xFFFF0000) | ((u16)(score)))
|
||||
#define SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.shootingGalleryHighScores = ((gSaveContext.save.shootingGalleryHighScores) & 0xFFFF) | ((u16)(score) << 0x10))
|
||||
#define GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() ((s32)(gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF))
|
||||
#define GET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE() ((s32)((gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF0000) >> 0x10))
|
||||
#define SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.saveInfo.shootingGalleryHighScores = (gSaveContext.save.saveInfo.shootingGalleryHighScores & 0xFFFF0000) | ((u16)(score)))
|
||||
#define SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(score) (gSaveContext.save.saveInfo.shootingGalleryHighScores = ((gSaveContext.save.saveInfo.shootingGalleryHighScores) & 0xFFFF) | ((u16)(score) << 0x10))
|
||||
|
||||
/**
|
||||
* gSaveContext.save.weekEventReg
|
||||
* gSaveContext.save.saveInfo.weekEventReg
|
||||
*/
|
||||
|
||||
#define PACK_WEEKEVENTREG_FLAG(index, mask) (((index) << 8) | (mask))
|
||||
@@ -1448,7 +1452,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_99_40 PACK_WEEKEVENTREG_FLAG(99, 0x40)
|
||||
#define WEEKEVENTREG_99_80 PACK_WEEKEVENTREG_FLAG(99, 0x80)
|
||||
|
||||
#define WEEKEVENTREG(index) (gSaveContext.save.weekEventReg[(index)])
|
||||
#define WEEKEVENTREG(index) (gSaveContext.save.saveInfo.weekEventReg[(index)])
|
||||
#define GET_WEEKEVENTREG(index) ((void)0, WEEKEVENTREG(index))
|
||||
|
||||
#define CHECK_WEEKEVENTREG(flag) (WEEKEVENTREG((flag) >> 8) & ((flag) & 0xFF))
|
||||
|
||||
+23
-23
@@ -511,12 +511,12 @@ u8 Inventory_DeleteEquipment(PlayState* play, s16 equipment) {
|
||||
}
|
||||
|
||||
void Inventory_ChangeUpgrade(s16 upgrade, u32 value) {
|
||||
u32 upgrades = gSaveContext.save.inventory.upgrades;
|
||||
u32 upgrades = gSaveContext.save.saveInfo.inventory.upgrades;
|
||||
|
||||
upgrades &= gUpgradeNegMasks[upgrade];
|
||||
upgrades |= value << gUpgradeShifts[upgrade];
|
||||
|
||||
gSaveContext.save.inventory.upgrades = upgrades;
|
||||
gSaveContext.save.saveInfo.inventory.upgrades = upgrades;
|
||||
}
|
||||
|
||||
s32 Inventory_IsMapVisible(s16 sceneId) {
|
||||
@@ -543,7 +543,7 @@ s32 Inventory_IsMapVisible(s16 sceneId) {
|
||||
}
|
||||
}
|
||||
|
||||
if (gSaveContext.save.scenesVisible[index] & gBitFlags[sceneId - (index << 5)]) {
|
||||
if (gSaveContext.save.saveInfo.scenesVisible[index] & gBitFlags[sceneId - (index << 5)]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -656,23 +656,23 @@ void Inventory_SetWorldMapCloudVisibility(s16 tingleIndex) {
|
||||
index = 6;
|
||||
}
|
||||
|
||||
gSaveContext.save.scenesVisible[index] =
|
||||
gSaveContext.save.scenesVisible[index] | gBitFlags[(s16)(*tingleMapSceneIds)[i] - (index << 5)];
|
||||
gSaveContext.save.saveInfo.scenesVisible[index] = gSaveContext.save.saveInfo.scenesVisible[index] |
|
||||
gBitFlags[(s16)(*tingleMapSceneIds)[i] - (index << 5)];
|
||||
i++;
|
||||
}
|
||||
|
||||
if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_CLOCK_TOWN]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 3;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 3;
|
||||
} else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_WOODFALL]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 0x1C;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x1C;
|
||||
} else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_SNOWHEAD]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 0xE0;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0xE0;
|
||||
} else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_ROMANI_RANCH]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 0x100;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x100;
|
||||
} else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_GREAT_BAY]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 0x1E00;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x1E00;
|
||||
} else if (*tingleMapSceneIds == sSceneIdsPerTingleMap[TINGLE_MAP_STONE_TOWER]) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= 0x6000;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= 0x6000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,34 +685,34 @@ void Inventory_SetWorldMapCloudVisibility(s16 tingleIndex) {
|
||||
void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) {
|
||||
s16 i;
|
||||
|
||||
gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTimes[timerId];
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTimes[timerId];
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] =
|
||||
gSaveContext.save.playerData.playerName[i];
|
||||
gSaveContext.save.saveInfo.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] =
|
||||
gSaveContext.save.saveInfo.playerData.playerName[i];
|
||||
}
|
||||
}
|
||||
|
||||
void Inventory_IncrementSkullTokenCount(s16 sceneIndex) {
|
||||
if (sceneIndex == SCENE_KINSTA1) {
|
||||
// Swamp Spider House (increment high bits of skullTokenCount)
|
||||
gSaveContext.save.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.save.skullTokenCount & 0xFFFF);
|
||||
gSaveContext.save.saveInfo.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF);
|
||||
} else {
|
||||
// Ocean Spider House (increment low bits of skullTokenCount)
|
||||
gSaveContext.save.skullTokenCount =
|
||||
(((u16)gSaveContext.save.skullTokenCount + 1) & 0xFFFF) | (gSaveContext.save.skullTokenCount & 0xFFFF0000);
|
||||
gSaveContext.save.saveInfo.skullTokenCount = (((u16)gSaveContext.save.saveInfo.skullTokenCount + 1) & 0xFFFF) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000);
|
||||
}
|
||||
}
|
||||
|
||||
s16 Inventory_GetSkullTokenCount(s16 sceneIndex) {
|
||||
if (sceneIndex == SCENE_KINSTA1) {
|
||||
// Swamp Spider House
|
||||
return (gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10;
|
||||
return (gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10;
|
||||
} else {
|
||||
// Ocean Spider House
|
||||
return gSaveContext.save.skullTokenCount & 0xFFFF;
|
||||
return gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -722,6 +722,6 @@ void Inventory_SaveLotteryCodeGuess(PlayState* play) {
|
||||
lotteryCodeGuess = ((play->msgCtx.unk12054[0] & 0xF) << 8); // First Digit
|
||||
lotteryCodeGuess |= ((play->msgCtx.unk12054[1] & 0xF) << 4); // Second Digit
|
||||
lotteryCodeGuess |= (play->msgCtx.unk12054[2] & 0xF); // Third Digit
|
||||
gSaveContext.save.lotteryCodeGuess =
|
||||
(gSaveContext.save.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF);
|
||||
gSaveContext.save.saveInfo.lotteryCodeGuess =
|
||||
(gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF);
|
||||
}
|
||||
|
||||
+102
-102
@@ -13,106 +13,106 @@
|
||||
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
|
||||
|
||||
static FlagSetEntry sFlagEntries[] = {
|
||||
{ &gSaveContext.save.weekEventReg[0], "week_event_reg[0]" },
|
||||
{ &gSaveContext.save.weekEventReg[1], "week_event_reg[1]" },
|
||||
{ &gSaveContext.save.weekEventReg[2], "week_event_reg[2]" },
|
||||
{ &gSaveContext.save.weekEventReg[3], "week_event_reg[3]" },
|
||||
{ &gSaveContext.save.weekEventReg[4], "week_event_reg[4]" },
|
||||
{ &gSaveContext.save.weekEventReg[5], "week_event_reg[5]" },
|
||||
{ &gSaveContext.save.weekEventReg[6], "week_event_reg[6]" },
|
||||
{ &gSaveContext.save.weekEventReg[7], "week_event_reg[7]" },
|
||||
{ &gSaveContext.save.weekEventReg[8], "week_event_reg[8]" },
|
||||
{ &gSaveContext.save.weekEventReg[9], "week_event_reg[9]" },
|
||||
{ &gSaveContext.save.weekEventReg[10], "week_event_reg[10]" },
|
||||
{ &gSaveContext.save.weekEventReg[11], "week_event_reg[11]" },
|
||||
{ &gSaveContext.save.weekEventReg[12], "week_event_reg[12]" },
|
||||
{ &gSaveContext.save.weekEventReg[13], "week_event_reg[13]" },
|
||||
{ &gSaveContext.save.weekEventReg[14], "week_event_reg[14]" },
|
||||
{ &gSaveContext.save.weekEventReg[15], "week_event_reg[15]" },
|
||||
{ &gSaveContext.save.weekEventReg[16], "week_event_reg[16]" },
|
||||
{ &gSaveContext.save.weekEventReg[17], "week_event_reg[17]" },
|
||||
{ &gSaveContext.save.weekEventReg[18], "week_event_reg[18]" },
|
||||
{ &gSaveContext.save.weekEventReg[19], "week_event_reg[19]" },
|
||||
{ &gSaveContext.save.weekEventReg[20], "week_event_reg[20]" },
|
||||
{ &gSaveContext.save.weekEventReg[21], "week_event_reg[21]" },
|
||||
{ &gSaveContext.save.weekEventReg[22], "week_event_reg[22]" },
|
||||
{ &gSaveContext.save.weekEventReg[23], "week_event_reg[23]" },
|
||||
{ &gSaveContext.save.weekEventReg[24], "week_event_reg[24]" },
|
||||
{ &gSaveContext.save.weekEventReg[25], "week_event_reg[25]" },
|
||||
{ &gSaveContext.save.weekEventReg[26], "week_event_reg[26]" },
|
||||
{ &gSaveContext.save.weekEventReg[27], "week_event_reg[27]" },
|
||||
{ &gSaveContext.save.weekEventReg[28], "week_event_reg[28]" },
|
||||
{ &gSaveContext.save.weekEventReg[29], "week_event_reg[29]" },
|
||||
{ &gSaveContext.save.weekEventReg[30], "week_event_reg[30]" },
|
||||
{ &gSaveContext.save.weekEventReg[31], "week_event_reg[31]" },
|
||||
{ &gSaveContext.save.weekEventReg[32], "week_event_reg[32]" },
|
||||
{ &gSaveContext.save.weekEventReg[33], "week_event_reg[33]" },
|
||||
{ &gSaveContext.save.weekEventReg[34], "week_event_reg[34]" },
|
||||
{ &gSaveContext.save.weekEventReg[35], "week_event_reg[35]" },
|
||||
{ &gSaveContext.save.weekEventReg[36], "week_event_reg[36]" },
|
||||
{ &gSaveContext.save.weekEventReg[37], "week_event_reg[37]" },
|
||||
{ &gSaveContext.save.weekEventReg[38], "week_event_reg[38]" },
|
||||
{ &gSaveContext.save.weekEventReg[39], "week_event_reg[39]" },
|
||||
{ &gSaveContext.save.weekEventReg[40], "week_event_reg[40]" },
|
||||
{ &gSaveContext.save.weekEventReg[41], "week_event_reg[41]" },
|
||||
{ &gSaveContext.save.weekEventReg[42], "week_event_reg[42]" },
|
||||
{ &gSaveContext.save.weekEventReg[43], "week_event_reg[43]" },
|
||||
{ &gSaveContext.save.weekEventReg[44], "week_event_reg[44]" },
|
||||
{ &gSaveContext.save.weekEventReg[45], "week_event_reg[45]" },
|
||||
{ &gSaveContext.save.weekEventReg[46], "week_event_reg[46]" },
|
||||
{ &gSaveContext.save.weekEventReg[47], "week_event_reg[47]" },
|
||||
{ &gSaveContext.save.weekEventReg[48], "week_event_reg[48]" },
|
||||
{ &gSaveContext.save.weekEventReg[49], "week_event_reg[49]" },
|
||||
{ &gSaveContext.save.weekEventReg[50], "week_event_reg[50]" },
|
||||
{ &gSaveContext.save.weekEventReg[51], "week_event_reg[51]" },
|
||||
{ &gSaveContext.save.weekEventReg[52], "week_event_reg[52]" },
|
||||
{ &gSaveContext.save.weekEventReg[53], "week_event_reg[53]" },
|
||||
{ &gSaveContext.save.weekEventReg[54], "week_event_reg[54]" },
|
||||
{ &gSaveContext.save.weekEventReg[55], "week_event_reg[55]" },
|
||||
{ &gSaveContext.save.weekEventReg[56], "week_event_reg[56]" },
|
||||
{ &gSaveContext.save.weekEventReg[57], "week_event_reg[57]" },
|
||||
{ &gSaveContext.save.weekEventReg[58], "week_event_reg[58]" },
|
||||
{ &gSaveContext.save.weekEventReg[59], "week_event_reg[59]" },
|
||||
{ &gSaveContext.save.weekEventReg[60], "week_event_reg[60]" },
|
||||
{ &gSaveContext.save.weekEventReg[61], "week_event_reg[61]" },
|
||||
{ &gSaveContext.save.weekEventReg[62], "week_event_reg[62]" },
|
||||
{ &gSaveContext.save.weekEventReg[63], "week_event_reg[63]" },
|
||||
{ &gSaveContext.save.weekEventReg[64], "week_event_reg[64]" },
|
||||
{ &gSaveContext.save.weekEventReg[65], "week_event_reg[65]" },
|
||||
{ &gSaveContext.save.weekEventReg[66], "week_event_reg[66]" },
|
||||
{ &gSaveContext.save.weekEventReg[67], "week_event_reg[67]" },
|
||||
{ &gSaveContext.save.weekEventReg[68], "week_event_reg[68]" },
|
||||
{ &gSaveContext.save.weekEventReg[69], "week_event_reg[69]" },
|
||||
{ &gSaveContext.save.weekEventReg[70], "week_event_reg[70]" },
|
||||
{ &gSaveContext.save.weekEventReg[71], "week_event_reg[71]" },
|
||||
{ &gSaveContext.save.weekEventReg[72], "week_event_reg[72]" },
|
||||
{ &gSaveContext.save.weekEventReg[73], "week_event_reg[73]" },
|
||||
{ &gSaveContext.save.weekEventReg[74], "week_event_reg[74]" },
|
||||
{ &gSaveContext.save.weekEventReg[75], "week_event_reg[75]" },
|
||||
{ &gSaveContext.save.weekEventReg[76], "week_event_reg[76]" },
|
||||
{ &gSaveContext.save.weekEventReg[77], "week_event_reg[77]" },
|
||||
{ &gSaveContext.save.weekEventReg[78], "week_event_reg[78]" },
|
||||
{ &gSaveContext.save.weekEventReg[79], "week_event_reg[79]" },
|
||||
{ &gSaveContext.save.weekEventReg[80], "week_event_reg[80]" },
|
||||
{ &gSaveContext.save.weekEventReg[81], "week_event_reg[81]" },
|
||||
{ &gSaveContext.save.weekEventReg[82], "week_event_reg[82]" },
|
||||
{ &gSaveContext.save.weekEventReg[83], "week_event_reg[83]" },
|
||||
{ &gSaveContext.save.weekEventReg[84], "week_event_reg[84]" },
|
||||
{ &gSaveContext.save.weekEventReg[85], "week_event_reg[85]" },
|
||||
{ &gSaveContext.save.weekEventReg[86], "week_event_reg[86]" },
|
||||
{ &gSaveContext.save.weekEventReg[87], "week_event_reg[87]" },
|
||||
{ &gSaveContext.save.weekEventReg[88], "week_event_reg[88]" },
|
||||
{ &gSaveContext.save.weekEventReg[89], "week_event_reg[89]" },
|
||||
{ &gSaveContext.save.weekEventReg[90], "week_event_reg[90]" },
|
||||
{ &gSaveContext.save.weekEventReg[91], "week_event_reg[91]" },
|
||||
{ &gSaveContext.save.weekEventReg[92], "week_event_reg[92]" },
|
||||
{ &gSaveContext.save.weekEventReg[93], "week_event_reg[93]" },
|
||||
{ &gSaveContext.save.weekEventReg[94], "week_event_reg[94]" },
|
||||
{ &gSaveContext.save.weekEventReg[95], "week_event_reg[95]" },
|
||||
{ &gSaveContext.save.weekEventReg[96], "week_event_reg[96]" },
|
||||
{ &gSaveContext.save.weekEventReg[97], "week_event_reg[97]" },
|
||||
{ &gSaveContext.save.weekEventReg[98], "week_event_reg[98]" },
|
||||
{ &gSaveContext.save.weekEventReg[99], "week_event_reg[99]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[0], "week_event_reg[0]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[1], "week_event_reg[1]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[2], "week_event_reg[2]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[3], "week_event_reg[3]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[4], "week_event_reg[4]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[5], "week_event_reg[5]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[6], "week_event_reg[6]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[7], "week_event_reg[7]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[8], "week_event_reg[8]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[9], "week_event_reg[9]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[10], "week_event_reg[10]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[11], "week_event_reg[11]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[12], "week_event_reg[12]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[13], "week_event_reg[13]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[14], "week_event_reg[14]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[15], "week_event_reg[15]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[16], "week_event_reg[16]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[17], "week_event_reg[17]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[18], "week_event_reg[18]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[19], "week_event_reg[19]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[20], "week_event_reg[20]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[21], "week_event_reg[21]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[22], "week_event_reg[22]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[23], "week_event_reg[23]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[24], "week_event_reg[24]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[25], "week_event_reg[25]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[26], "week_event_reg[26]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[27], "week_event_reg[27]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[28], "week_event_reg[28]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[29], "week_event_reg[29]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[30], "week_event_reg[30]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[31], "week_event_reg[31]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[32], "week_event_reg[32]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[33], "week_event_reg[33]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[34], "week_event_reg[34]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[35], "week_event_reg[35]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[36], "week_event_reg[36]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[37], "week_event_reg[37]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[38], "week_event_reg[38]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[39], "week_event_reg[39]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[40], "week_event_reg[40]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[41], "week_event_reg[41]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[42], "week_event_reg[42]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[43], "week_event_reg[43]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[44], "week_event_reg[44]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[45], "week_event_reg[45]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[46], "week_event_reg[46]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[47], "week_event_reg[47]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[48], "week_event_reg[48]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[49], "week_event_reg[49]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[50], "week_event_reg[50]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[51], "week_event_reg[51]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[52], "week_event_reg[52]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[53], "week_event_reg[53]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[54], "week_event_reg[54]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[55], "week_event_reg[55]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[56], "week_event_reg[56]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[57], "week_event_reg[57]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[58], "week_event_reg[58]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[59], "week_event_reg[59]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[60], "week_event_reg[60]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[61], "week_event_reg[61]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[62], "week_event_reg[62]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[63], "week_event_reg[63]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[64], "week_event_reg[64]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[65], "week_event_reg[65]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[66], "week_event_reg[66]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[67], "week_event_reg[67]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[68], "week_event_reg[68]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[69], "week_event_reg[69]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[70], "week_event_reg[70]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[71], "week_event_reg[71]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[72], "week_event_reg[72]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[73], "week_event_reg[73]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[74], "week_event_reg[74]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[75], "week_event_reg[75]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[76], "week_event_reg[76]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[77], "week_event_reg[77]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[78], "week_event_reg[78]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[79], "week_event_reg[79]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[80], "week_event_reg[80]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[81], "week_event_reg[81]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[82], "week_event_reg[82]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[83], "week_event_reg[83]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[84], "week_event_reg[84]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[85], "week_event_reg[85]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[86], "week_event_reg[86]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[87], "week_event_reg[87]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[88], "week_event_reg[88]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[89], "week_event_reg[89]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[90], "week_event_reg[90]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[91], "week_event_reg[91]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[92], "week_event_reg[92]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[93], "week_event_reg[93]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[94], "week_event_reg[94]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[95], "week_event_reg[95]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[96], "week_event_reg[96]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[97], "week_event_reg[97]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[98], "week_event_reg[98]" },
|
||||
{ &gSaveContext.save.saveInfo.weekEventReg[99], "week_event_reg[99]" },
|
||||
|
||||
{ &gSaveContext.eventInf[0], "event_inf[0]" },
|
||||
{ &gSaveContext.eventInf[1], "event_inf[1]" },
|
||||
@@ -246,8 +246,8 @@ void FlagSet_Update(GameState* gameState) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_START)) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_B)) {
|
||||
s16 i;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.weekEventReg); i++) {
|
||||
gSaveContext.save.weekEventReg[i] = 0;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg); i++) {
|
||||
gSaveContext.save.saveInfo.weekEventReg[i] = 0;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.eventInf); i++) {
|
||||
gSaveContext.eventInf[i] = 0;
|
||||
|
||||
+5
-4
@@ -1479,12 +1479,13 @@ void func_800EDBE0(PlayState* play) {
|
||||
if (play->csCtx.sceneCsList[temp_v0_3].unk7 == 0xFE) {
|
||||
ActorCutscene_Start(sp2A, NULL);
|
||||
gSaveContext.showTitleCard = false;
|
||||
} else if (!(((void)0,
|
||||
gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) &
|
||||
} else if (!(((void)0, gSaveContext.save.saveInfo
|
||||
.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) &
|
||||
(1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8)))) {
|
||||
// TODO: macros for this kind of weekEventReg access
|
||||
gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)] =
|
||||
((void)0, gSaveContext.save.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) |
|
||||
gSaveContext.save.saveInfo.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)] =
|
||||
((void)0,
|
||||
gSaveContext.save.saveInfo.weekEventReg[(play->csCtx.sceneCsList[temp_v0_3].unk7 / 8)]) |
|
||||
(1 << (play->csCtx.sceneCsList[temp_v0_3].unk7 % 8));
|
||||
ActorCutscene_Start(sp2A, NULL);
|
||||
gSaveContext.showTitleCard = false;
|
||||
|
||||
@@ -45,7 +45,7 @@ u16 QuestHint_GetTatlTextId(PlayState* play) {
|
||||
return 0x21D;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.isMagicAcquired != true) {
|
||||
if (gSaveContext.save.saveInfo.playerData.isMagicAcquired != true) {
|
||||
return 0x21F;
|
||||
}
|
||||
|
||||
|
||||
+12
-9
@@ -885,12 +885,13 @@ s16 func_800A7650(s16 dropId) {
|
||||
(dropId == ITEM00_ARROWS_50)) &&
|
||||
(INV_CONTENT(ITEM_BOW) == ITEM_NONE)) ||
|
||||
(((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) &&
|
||||
(gSaveContext.save.playerData.magicLevel == 0))) {
|
||||
(gSaveContext.save.saveInfo.playerData.magicLevel == 0))) {
|
||||
return ITEM00_NO_DROP;
|
||||
}
|
||||
|
||||
if (dropId == ITEM00_RECOVERY_HEART) {
|
||||
if (((void)0, gSaveContext.save.playerData.healthCapacity) == ((void)0, gSaveContext.save.playerData.health)) {
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity) ==
|
||||
((void)0, gSaveContext.save.saveInfo.playerData.health)) {
|
||||
return ITEM00_RUPEE_GREEN;
|
||||
}
|
||||
}
|
||||
@@ -1148,27 +1149,29 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
|
||||
}
|
||||
|
||||
if (dropId == ITEM00_FLEXIBLE) {
|
||||
if (gSaveContext.save.playerData.health <= 0x10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health <= 0x10) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0,
|
||||
2);
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.health <= 0x30) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health <= 0x30) {
|
||||
params = 0x10;
|
||||
dropId = ITEM00_RECOVERY_HEART;
|
||||
dropQuantity = 3;
|
||||
} else if (gSaveContext.save.playerData.health <= 0x50) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.health <= 0x50) {
|
||||
params = 0x10;
|
||||
dropId = ITEM00_RECOVERY_HEART;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.save.playerData.magicLevel != 0) && (gSaveContext.save.playerData.magic == 0)) {
|
||||
} else if ((gSaveContext.save.saveInfo.playerData.magicLevel != 0) &&
|
||||
(gSaveContext.save.saveInfo.playerData.magic == 0)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.save.playerData.magicLevel != 0) &&
|
||||
((gSaveContext.save.playerData.magicLevel >> 1) >= gSaveContext.save.playerData.magic)) {
|
||||
} else if ((gSaveContext.save.saveInfo.playerData.magicLevel != 0) &&
|
||||
((gSaveContext.save.saveInfo.playerData.magicLevel >> 1) >=
|
||||
gSaveContext.save.saveInfo.playerData.magic)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
@@ -1180,7 +1183,7 @@ void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnP
|
||||
params = 0xB0;
|
||||
dropId = ITEM00_BOMBS_A;
|
||||
dropQuantity = 1;
|
||||
} else if (gSaveContext.save.playerData.rupees < 11) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees < 11) {
|
||||
params = 0xA0;
|
||||
dropId = ITEM00_RUPEE_RED;
|
||||
dropQuantity = 1;
|
||||
|
||||
@@ -50,7 +50,7 @@ void GameOver_Update(PlayState* play) {
|
||||
}
|
||||
|
||||
gSaveContext.unk_3DC0 = 2000;
|
||||
gSaveContext.save.playerData.tatlTimer = 0;
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer = 0;
|
||||
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||
gSaveContext.ambienceId = AMBIENCE_ID_DISABLED;
|
||||
gSaveContext.eventInf[0] = 0;
|
||||
@@ -79,7 +79,7 @@ void GameOver_Update(PlayState* play) {
|
||||
gSaveContext.respawnFlag = -6;
|
||||
}
|
||||
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
|
||||
gSaveContext.save.playerData.health = 0x30;
|
||||
gSaveContext.save.saveInfo.playerData.health = 0x30;
|
||||
gameOverCtx->state++;
|
||||
if (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU) {
|
||||
gSaveContext.save.playerForm = PLAYER_FORM_HUMAN;
|
||||
|
||||
@@ -44,19 +44,19 @@ void func_800F4A10(PlayState* play) {
|
||||
|
||||
if (pauseCtx->state == PAUSE_STATE_OPENING_0) {
|
||||
for (i = 0; i < REGION_MAX; i++) {
|
||||
if ((gSaveContext.save.regionsVisited >> i) & 1) {
|
||||
if ((gSaveContext.save.saveInfo.regionsVisited >> i) & 1) {
|
||||
pauseCtx->worldMapPoints[i] = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i = OWL_WARP_STONE_TOWER; i >= OWL_WARP_GREAT_BAY_COAST; i--) {
|
||||
if ((gSaveContext.save.playerData.owlActivationFlags >> i) & 1) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.owlActivationFlags >> i) & 1) {
|
||||
pauseCtx->worldMapPoints[i] = true;
|
||||
pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = i;
|
||||
}
|
||||
}
|
||||
|
||||
if ((gSaveContext.save.playerData.owlActivationFlags >> 4) & 1) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.owlActivationFlags >> 4) & 1) {
|
||||
pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = 4;
|
||||
}
|
||||
}
|
||||
|
||||
+15
-14
@@ -37,7 +37,7 @@ void LifeMeter_Init(PlayState* play) {
|
||||
|
||||
interfaceCtx->healthTimer = 320;
|
||||
|
||||
interfaceCtx->health = gSaveContext.save.playerData.health;
|
||||
interfaceCtx->health = gSaveContext.save.saveInfo.playerData.health;
|
||||
|
||||
interfaceCtx->lifeColorChange = 0;
|
||||
interfaceCtx->lifeColorChangeDirection = 0;
|
||||
@@ -170,7 +170,7 @@ void LifeMeter_UpdateColors(PlayState* play) {
|
||||
s32 LifeMeter_SaveInterfaceHealth(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
gSaveContext.save.playerData.health = interfaceCtx->health;
|
||||
gSaveContext.save.saveInfo.playerData.health = interfaceCtx->health;
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -181,8 +181,8 @@ s32 LifeMeter_IncreaseInterfaceHealth(PlayState* play) {
|
||||
|
||||
interfaceCtx->healthTimer = 320;
|
||||
interfaceCtx->health += 0x10;
|
||||
if (play->interfaceCtx.health >= gSaveContext.save.playerData.health) {
|
||||
play->interfaceCtx.health = gSaveContext.save.playerData.health;
|
||||
if (play->interfaceCtx.health >= gSaveContext.save.saveInfo.playerData.health) {
|
||||
play->interfaceCtx.health = gSaveContext.save.saveInfo.playerData.health;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -199,7 +199,7 @@ s32 LifeMeter_DecreaseInterfaceHealth(PlayState* play) {
|
||||
interfaceCtx->health -= 0x10;
|
||||
if (interfaceCtx->health <= 0) {
|
||||
interfaceCtx->health = 0;
|
||||
play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 1));
|
||||
play->damagePlayer(play, -(((void)0, gSaveContext.save.saveInfo.playerData.health) + 1));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -220,18 +220,18 @@ void LifeMeter_Draw(PlayState* play) {
|
||||
GraphicsContext* gfxCtx = play->state.gfxCtx;
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
Vtx* beatingHeartVtx = interfaceCtx->beatingHeartVtx;
|
||||
s32 fractionHeartCount = gSaveContext.save.playerData.health % 0x10;
|
||||
s16 healthCapacity = gSaveContext.save.playerData.healthCapacity / 0x10;
|
||||
s16 fullHeartCount = gSaveContext.save.playerData.health / 0x10;
|
||||
s32 fractionHeartCount = gSaveContext.save.saveInfo.playerData.health % 0x10;
|
||||
s16 healthCapacity = gSaveContext.save.saveInfo.playerData.healthCapacity / 0x10;
|
||||
s16 fullHeartCount = gSaveContext.save.saveInfo.playerData.health / 0x10;
|
||||
s32 pad2;
|
||||
f32 lifesize = interfaceCtx->lifeSizeChange * 0.1f;
|
||||
u32 curCombineModeSet = 0;
|
||||
TexturePtr temp = NULL;
|
||||
s32 ddCount = gSaveContext.save.inventory.defenseHearts - 1;
|
||||
s32 ddCount = gSaveContext.save.saveInfo.inventory.defenseHearts - 1;
|
||||
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
if ((gSaveContext.save.playerData.health % 0x10) == 0) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health % 0x10) == 0) {
|
||||
fullHeartCount--;
|
||||
}
|
||||
|
||||
@@ -422,17 +422,18 @@ void LifeMeter_UpdateSizeAndBeep(PlayState* play) {
|
||||
u32 LifeMeter_IsCritical(void) {
|
||||
s16 criticalThreshold;
|
||||
|
||||
if (gSaveContext.save.playerData.healthCapacity <= 0x50) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0x50) {
|
||||
criticalThreshold = 0x10;
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 0xA0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0xA0) {
|
||||
criticalThreshold = 0x18;
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 0xF0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.healthCapacity <= 0xF0) {
|
||||
criticalThreshold = 0x20;
|
||||
} else {
|
||||
criticalThreshold = 0x2C;
|
||||
}
|
||||
|
||||
if ((criticalThreshold >= gSaveContext.save.playerData.health) && (gSaveContext.save.playerData.health > 0)) {
|
||||
if ((criticalThreshold >= gSaveContext.save.saveInfo.playerData.health) &&
|
||||
(gSaveContext.save.saveInfo.playerData.health > 0)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -156,7 +156,8 @@ void Map_InitRoomData(PlayState* play, s16 room) {
|
||||
|
||||
if (room >= 0) {
|
||||
if (Map_IsInDungeonOrBossArea(play)) {
|
||||
gSaveContext.save.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].rooms |= gBitFlags[room];
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].rooms |=
|
||||
gBitFlags[room];
|
||||
interfaceCtx->mapRoomNum = room;
|
||||
interfaceCtx->dungeonOrBossAreaMapIndex = mapIndex;
|
||||
}
|
||||
@@ -243,7 +244,7 @@ void Map_Update(PlayState* play) {
|
||||
if (Map_IsInDungeonArea(play)) {
|
||||
floor = func_80109124(player->actor.world.pos.y);
|
||||
if (floor != -1) {
|
||||
gSaveContext.save.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].unk_14 |=
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].unk_14 |=
|
||||
gBitFlags[FLOOR_INDEX_MAX - floor];
|
||||
R_REVERSE_FLOOR_INDEX = FLOOR_INDEX_MAX - floor;
|
||||
if (interfaceCtx->mapRoomNum != sLastRoomNum) {
|
||||
|
||||
+133
-126
@@ -1006,12 +1006,12 @@ void Interface_NewDay(PlayState* play, s32 day) {
|
||||
(u32)SEGMENT_ROM_START(week_static) + i * 0x510, 0x510);
|
||||
|
||||
// i is used to store sceneId
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.permanentSceneFlags); i++) {
|
||||
gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.permanentSceneFlags); i++) {
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1880,7 +1880,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) {
|
||||
} else if (CHECK_EVENTINF(EVENTINF_34)) {
|
||||
// Deku playground minigame
|
||||
if (player->stateFlags3 & PLAYER_STATE3_1000000) {
|
||||
if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_NUT] == ITEM_NUT) {
|
||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT;
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
} else {
|
||||
@@ -1908,7 +1908,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) {
|
||||
}
|
||||
} else if (player->stateFlags3 & PLAYER_STATE3_1000000) {
|
||||
// Nuts on B (from flying as Deku Link)
|
||||
if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_NUT] == ITEM_NUT) {
|
||||
if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) {
|
||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT;
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
@@ -1925,7 +1925,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) {
|
||||
gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED;
|
||||
gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED;
|
||||
}
|
||||
} else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) &&
|
||||
} else if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) &&
|
||||
(BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) {
|
||||
// Nuts on B (as Deku Link)
|
||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD;
|
||||
@@ -2324,7 +2324,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||
|
||||
if (play->unk_1887C >= 2) {
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
} else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE;
|
||||
} else {
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
@@ -2382,7 +2382,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||
|
||||
if (play->unk_1887C >= 2) {
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
} else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE;
|
||||
} else {
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
@@ -2627,14 +2627,14 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
INCREMENT_QUEST_HEART_PIECE_COUNT;
|
||||
if (EQ_MAX_QUEST_HEART_PIECE_COUNT) {
|
||||
RESET_HEART_PIECE_COUNT;
|
||||
gSaveContext.save.playerData.healthCapacity += 0x10;
|
||||
gSaveContext.save.playerData.health += 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.health += 0x10;
|
||||
}
|
||||
return ITEM_NONE;
|
||||
|
||||
} else if (item == ITEM_HEART_CONTAINER) {
|
||||
gSaveContext.save.playerData.healthCapacity += 0x10;
|
||||
gSaveContext.save.playerData.health += 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.health += 0x10;
|
||||
return ITEM_NONE;
|
||||
|
||||
} else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) {
|
||||
@@ -2646,7 +2646,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
CUR_FORM_EQUIP(EQUIP_SLOT_B) = item;
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
if (item == ITEM_SWORD_RAZOR) {
|
||||
gSaveContext.save.playerData.swordHealth = 100;
|
||||
gSaveContext.save.saveInfo.playerData.swordHealth = 100;
|
||||
}
|
||||
return ITEM_NONE;
|
||||
|
||||
@@ -2824,7 +2824,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
return ITEM_NONE;
|
||||
|
||||
} else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) {
|
||||
if (gSaveContext.save.inventory.items[SLOT_BOMB] != ITEM_BOMB) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOMB] != ITEM_BOMB) {
|
||||
INV_CONTENT(ITEM_BOMB) = ITEM_BOMB;
|
||||
AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5];
|
||||
return ITEM_NONE;
|
||||
@@ -2847,7 +2847,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
return ITEM_NONE;
|
||||
|
||||
} else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) {
|
||||
if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) {
|
||||
INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU;
|
||||
AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20];
|
||||
|
||||
@@ -2917,8 +2917,8 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
slot = SLOT(item);
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_POTION_RED;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
@@ -2929,8 +2929,8 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
slot = SLOT(item);
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = item;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = item;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
@@ -2940,8 +2940,8 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
slot = SLOT(item);
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = item;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = item;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
@@ -2971,7 +2971,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
slot = SLOT(item);
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_BOTTLE) {
|
||||
if (item == ITEM_HOT_SPRING_WATER) {
|
||||
Interface_StartBottleTimer(60, i);
|
||||
}
|
||||
@@ -2990,14 +2990,14 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED;
|
||||
}
|
||||
|
||||
gSaveContext.save.inventory.items[slot + i] = item;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = item;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = item;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = item;
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
@@ -3018,7 +3018,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
temp = gSaveContext.save.inventory.items[slot];
|
||||
temp = gSaveContext.save.saveInfo.inventory.items[slot];
|
||||
INV_CONTENT(item) = item;
|
||||
return temp;
|
||||
}
|
||||
@@ -3159,13 +3159,13 @@ u8 Item_CheckObtainabilityImpl(u8 item) {
|
||||
bottleSlot = SLOT(item);
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_BOTTLE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_BOTTLE) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_NONE) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
}
|
||||
@@ -3174,7 +3174,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
return gSaveContext.save.inventory.items[slot];
|
||||
return gSaveContext.save.saveInfo.inventory.items[slot];
|
||||
}
|
||||
|
||||
u8 Item_CheckObtainability(u8 item) {
|
||||
@@ -3184,7 +3184,7 @@ u8 Item_CheckObtainability(u8 item) {
|
||||
void Inventory_DeleteItem(s16 item, s16 slot) {
|
||||
s16 btn;
|
||||
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_NONE;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_NONE;
|
||||
|
||||
for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) {
|
||||
if (GET_CUR_FORM_BTN_ITEM(btn) == item) {
|
||||
@@ -3209,8 +3209,8 @@ s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem) {
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 24; i++) {
|
||||
if (gSaveContext.save.inventory.items[i] == oldItem) {
|
||||
gSaveContext.save.inventory.items[i] = newItem;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i] == oldItem) {
|
||||
gSaveContext.save.saveInfo.inventory.items[i] = newItem;
|
||||
|
||||
for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) {
|
||||
if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) {
|
||||
@@ -3259,7 +3259,7 @@ s32 Inventory_HasEmptyBottle(void) {
|
||||
s32 slot;
|
||||
|
||||
for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) {
|
||||
if (gSaveContext.save.inventory.items[slot] == ITEM_BOTTLE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_BOTTLE) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3270,7 +3270,7 @@ s32 Inventory_HasItemInBottle(u8 item) {
|
||||
s32 slot;
|
||||
|
||||
for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) {
|
||||
if (gSaveContext.save.inventory.items[slot] == item) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot] == item) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3278,7 +3278,7 @@ s32 Inventory_HasItemInBottle(u8 item) {
|
||||
}
|
||||
|
||||
void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn) {
|
||||
gSaveContext.save.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item;
|
||||
gSaveContext.save.saveInfo.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item;
|
||||
SET_CUR_FORM_BTN_ITEM(btn, item);
|
||||
|
||||
Interface_LoadItemIconImpl(play, btn);
|
||||
@@ -3297,7 +3297,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) {
|
||||
u8 i;
|
||||
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] == ITEM_FAIRY) {
|
||||
for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) {
|
||||
if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) {
|
||||
SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE);
|
||||
@@ -3307,7 +3307,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
gSaveContext.save.inventory.items[bottleSlot + i] = ITEM_BOTTLE;
|
||||
gSaveContext.save.saveInfo.inventory.items[bottleSlot + i] = ITEM_BOTTLE;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3321,7 +3321,7 @@ s32 Inventory_ConsumeFairy(PlayState* play) {
|
||||
void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item) {
|
||||
s16 btn;
|
||||
|
||||
gSaveContext.save.inventory.items[slot] = item;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = item;
|
||||
|
||||
for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) {
|
||||
if (GET_CUR_FORM_BTN_SLOT(btn) == slot) {
|
||||
@@ -3355,18 +3355,19 @@ void func_80115428(InterfaceContext* interfaceCtx, u16 doAction, s16 loadOffset)
|
||||
s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
|
||||
if (healthChange > 0) {
|
||||
play_sound(NA_SE_SY_HP_RECOVER);
|
||||
} else if (gSaveContext.save.playerData.doubleDefense && (healthChange < 0)) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.doubleDefense && (healthChange < 0)) {
|
||||
healthChange >>= 1;
|
||||
}
|
||||
|
||||
gSaveContext.save.playerData.health += healthChange;
|
||||
gSaveContext.save.saveInfo.playerData.health += healthChange;
|
||||
|
||||
if (((void)0, gSaveContext.save.playerData.health) > ((void)0, gSaveContext.save.playerData.healthCapacity)) {
|
||||
gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity;
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.health) >
|
||||
((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity)) {
|
||||
gSaveContext.save.saveInfo.playerData.health = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.health <= 0) {
|
||||
gSaveContext.save.playerData.health = 0;
|
||||
if (gSaveContext.save.saveInfo.playerData.health <= 0) {
|
||||
gSaveContext.save.saveInfo.playerData.health = 0;
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
@@ -3374,7 +3375,7 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
|
||||
}
|
||||
|
||||
void Health_GiveHearts(s16 hearts) {
|
||||
gSaveContext.save.playerData.healthCapacity += hearts * 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity += hearts * 0x10;
|
||||
}
|
||||
|
||||
void Rupees_ChangeBy(s16 rupeeChange) {
|
||||
@@ -3441,7 +3442,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) {
|
||||
}
|
||||
|
||||
void Magic_Add(PlayState* play, s16 magicToAdd) {
|
||||
if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.magicCapacity)) {
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.magic) < ((void)0, gSaveContext.magicCapacity)) {
|
||||
gSaveContext.magicToAdd += magicToAdd;
|
||||
gSaveContext.isMagicRequested = true;
|
||||
}
|
||||
@@ -3465,12 +3466,12 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
|
||||
// Magic is not acquired yet
|
||||
if (!gSaveContext.save.playerData.isMagicAcquired) {
|
||||
if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not enough magic available to consume
|
||||
if ((gSaveContext.save.playerData.magic - magicToConsume) < 0) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.magic - magicToConsume) < 0) {
|
||||
if (gSaveContext.magicCapacity != 0) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
}
|
||||
@@ -3518,7 +3519,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
|
||||
case MAGIC_CONSUME_LENS:
|
||||
if (gSaveContext.magicState == MAGIC_STATE_IDLE) {
|
||||
if (gSaveContext.save.playerData.magic != 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.magic != 0) {
|
||||
interfaceCtx->magicConsumptionTimer = 80;
|
||||
gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS;
|
||||
return true;
|
||||
@@ -3549,7 +3550,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
|
||||
case MAGIC_CONSUME_GORON_ZORA:
|
||||
// Goron spiked rolling or Zora electric barrier
|
||||
if (gSaveContext.save.playerData.magic != 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.magic != 0) {
|
||||
interfaceCtx->magicConsumptionTimer = 10;
|
||||
gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA_SETUP;
|
||||
return true;
|
||||
@@ -3560,7 +3561,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
case MAGIC_CONSUME_GIANTS_MASK:
|
||||
// Wearing Giant's Mask
|
||||
if (gSaveContext.magicState == MAGIC_STATE_IDLE) {
|
||||
if (gSaveContext.save.playerData.magic != 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.magic != 0) {
|
||||
interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANTS_MASK;
|
||||
gSaveContext.magicState = MAGIC_STATE_CONSUME_GIANTS_MASK;
|
||||
return true;
|
||||
@@ -3584,7 +3585,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
magicToConsume = 0;
|
||||
}
|
||||
gSaveContext.save.playerData.magic -= magicToConsume;
|
||||
gSaveContext.save.saveInfo.playerData.magic -= magicToConsume;
|
||||
return true;
|
||||
} else {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
@@ -3597,11 +3598,11 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) {
|
||||
|
||||
void Magic_UpdateAddRequest(void) {
|
||||
if (gSaveContext.isMagicRequested) {
|
||||
gSaveContext.save.playerData.magic += 4;
|
||||
gSaveContext.save.saveInfo.playerData.magic += 4;
|
||||
play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG);
|
||||
|
||||
if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) {
|
||||
gSaveContext.save.playerData.magic = gSaveContext.magicCapacity;
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = gSaveContext.magicCapacity;
|
||||
gSaveContext.magicToAdd = 0;
|
||||
gSaveContext.isMagicRequested = false;
|
||||
} else {
|
||||
@@ -3677,7 +3678,7 @@ void Magic_Update(PlayState* play) {
|
||||
case MAGIC_STATE_STEP_CAPACITY:
|
||||
// Step magicCapacity to the capacity determined by magicLevel
|
||||
// This changes the width of the magic meter drawn
|
||||
magicCapacityTarget = gSaveContext.save.playerData.magicLevel * MAGIC_NORMAL_METER;
|
||||
magicCapacityTarget = gSaveContext.save.saveInfo.playerData.magicLevel * MAGIC_NORMAL_METER;
|
||||
if (gSaveContext.magicCapacity != magicCapacityTarget) {
|
||||
if (gSaveContext.magicCapacity < magicCapacityTarget) {
|
||||
gSaveContext.magicCapacity += 0x10;
|
||||
@@ -3699,14 +3700,14 @@ void Magic_Update(PlayState* play) {
|
||||
|
||||
case MAGIC_STATE_FILL:
|
||||
// Add magic until magicFillTarget is reached
|
||||
gSaveContext.save.playerData.magic += 0x10;
|
||||
gSaveContext.save.saveInfo.playerData.magic += 0x10;
|
||||
|
||||
if ((gSaveContext.gameMode == GAMEMODE_NORMAL) && (gSaveContext.sceneLayer < 4)) {
|
||||
play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG);
|
||||
}
|
||||
|
||||
if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicFillTarget)) {
|
||||
gSaveContext.save.playerData.magic = gSaveContext.magicFillTarget;
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.magic) >= ((void)0, gSaveContext.magicFillTarget)) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = gSaveContext.magicFillTarget;
|
||||
gSaveContext.magicState = MAGIC_STATE_IDLE;
|
||||
}
|
||||
break;
|
||||
@@ -3720,10 +3721,10 @@ void Magic_Update(PlayState* play) {
|
||||
case MAGIC_STATE_CONSUME:
|
||||
// Consume magic until target is reached or no more magic is available
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
gSaveContext.save.playerData.magic =
|
||||
((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume);
|
||||
if (gSaveContext.save.playerData.magic <= 0) {
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
gSaveContext.save.saveInfo.playerData.magic =
|
||||
((void)0, gSaveContext.save.saveInfo.playerData.magic) - ((void)0, gSaveContext.magicToConsume);
|
||||
if (gSaveContext.save.saveInfo.playerData.magic <= 0) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
}
|
||||
gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
|
||||
sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255;
|
||||
@@ -3749,7 +3750,7 @@ void Magic_Update(PlayState* play) {
|
||||
(play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) &&
|
||||
!Play_InCsMode(play)) {
|
||||
|
||||
if ((gSaveContext.save.playerData.magic == 0) ||
|
||||
if ((gSaveContext.save.saveInfo.playerData.magic == 0) ||
|
||||
((Player_GetEnvironmentalHazard(play) >= PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) &&
|
||||
(Player_GetEnvironmentalHazard(play) <= PLAYER_ENV_HAZARD_UNDERWATER_FREE)) ||
|
||||
((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) &&
|
||||
@@ -3767,7 +3768,7 @@ void Magic_Update(PlayState* play) {
|
||||
interfaceCtx->magicConsumptionTimer--;
|
||||
if (interfaceCtx->magicConsumptionTimer == 0) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
gSaveContext.save.playerData.magic--;
|
||||
gSaveContext.save.saveInfo.playerData.magic--;
|
||||
}
|
||||
interfaceCtx->magicConsumptionTimer = 80;
|
||||
}
|
||||
@@ -3779,10 +3780,10 @@ void Magic_Update(PlayState* play) {
|
||||
|
||||
case MAGIC_STATE_CONSUME_GORON_ZORA_SETUP:
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
gSaveContext.save.playerData.magic -= 2;
|
||||
gSaveContext.save.saveInfo.playerData.magic -= 2;
|
||||
}
|
||||
if (gSaveContext.save.playerData.magic <= 0) {
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
if (gSaveContext.save.saveInfo.playerData.magic <= 0) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
}
|
||||
gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA;
|
||||
// fallthrough
|
||||
@@ -3794,10 +3795,10 @@ void Magic_Update(PlayState* play) {
|
||||
interfaceCtx->magicConsumptionTimer--;
|
||||
if (interfaceCtx->magicConsumptionTimer == 0) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
gSaveContext.save.playerData.magic--;
|
||||
gSaveContext.save.saveInfo.playerData.magic--;
|
||||
}
|
||||
if (gSaveContext.save.playerData.magic <= 0) {
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
if (gSaveContext.save.saveInfo.playerData.magic <= 0) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
}
|
||||
interfaceCtx->magicConsumptionTimer = 10;
|
||||
}
|
||||
@@ -3816,10 +3817,10 @@ void Magic_Update(PlayState* play) {
|
||||
interfaceCtx->magicConsumptionTimer--;
|
||||
if (interfaceCtx->magicConsumptionTimer == 0) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEAU_ROMANI)) {
|
||||
gSaveContext.save.playerData.magic--;
|
||||
gSaveContext.save.saveInfo.playerData.magic--;
|
||||
}
|
||||
if (gSaveContext.save.playerData.magic <= 0) {
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
if (gSaveContext.save.saveInfo.playerData.magic <= 0) {
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
}
|
||||
interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANTS_MASK;
|
||||
}
|
||||
@@ -3842,8 +3843,8 @@ void Magic_DrawMeter(PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (gSaveContext.save.playerData.magicLevel != 0) {
|
||||
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.magicLevel != 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
magicBarY = 42; // two rows of hearts
|
||||
} else {
|
||||
magicBarY = 34; // one row of hearts
|
||||
@@ -3876,8 +3877,8 @@ void Magic_DrawMeter(PlayState* play) {
|
||||
gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2,
|
||||
(((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
(((void)0, gSaveContext.save.saveInfo.playerData.magic) + 26) << 2,
|
||||
(magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
|
||||
// Fill the rest of the meter with the normal magic color
|
||||
gDPPipeSync(OVERLAY_DISP++);
|
||||
@@ -3891,7 +3892,8 @@ void Magic_DrawMeter(PlayState* play) {
|
||||
|
||||
gSPTextureRectangle(
|
||||
OVERLAY_DISP++, 104, (magicBarY + 3) << 2,
|
||||
((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) << 2,
|
||||
((((void)0, gSaveContext.save.saveInfo.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26)
|
||||
<< 2,
|
||||
(magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
} else {
|
||||
// Fill the whole meter with the normal magic color
|
||||
@@ -3906,8 +3908,8 @@ void Magic_DrawMeter(PlayState* play) {
|
||||
gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2,
|
||||
(((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2,
|
||||
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
(((void)0, gSaveContext.save.saveInfo.playerData.magic) + 26) << 2,
|
||||
(magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5683,7 +5685,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
|
||||
if (interfaceCtx->magicAlpha != 255) {
|
||||
gSaveContext.timerY[sTimerId] = 22;
|
||||
} else if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
gSaveContext.timerY[sTimerId] = 54;
|
||||
} else {
|
||||
gSaveContext.timerY[sTimerId] = 46;
|
||||
@@ -5727,7 +5729,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer);
|
||||
gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j;
|
||||
|
||||
j = (gSaveContext.save.playerData.healthCapacity > 0xA0)
|
||||
j = (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0)
|
||||
? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / sTimerStateTimer)
|
||||
: ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / sTimerStateTimer);
|
||||
gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j;
|
||||
@@ -5741,7 +5743,7 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gSaveContext.timerY[sTimerId] = R_MOON_CRASH_TIMER_Y;
|
||||
} else {
|
||||
gSaveContext.timerX[sTimerId] = 26;
|
||||
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
gSaveContext.timerY[sTimerId] = 54;
|
||||
} else {
|
||||
gSaveContext.timerY[sTimerId] = 46;
|
||||
@@ -5781,7 +5783,8 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
break;
|
||||
|
||||
case TIMER_STATE_ENV_HAZARD_START:
|
||||
gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1);
|
||||
gSaveContext.timerCurTimes[sTimerId] =
|
||||
SECONDS_TO_TIMER(gSaveContext.save.saveInfo.playerData.health >> 1);
|
||||
gSaveContext.timerDirections[sTimerId] = TIMER_COUNT_DOWN;
|
||||
gSaveContext.timerTimeLimits[sTimerId] = gSaveContext.timerCurTimes[sTimerId];
|
||||
sTimerStateTimer = 20;
|
||||
@@ -5889,8 +5892,8 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0);
|
||||
gSaveContext.timerStates[sTimerId] = TIMER_STATE_STOP;
|
||||
if (sEnvTimerActive) {
|
||||
gSaveContext.save.playerData.health = 0;
|
||||
play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 2));
|
||||
gSaveContext.save.saveInfo.playerData.health = 0;
|
||||
play->damagePlayer(play, -(((void)0, gSaveContext.save.saveInfo.playerData.health) + 2));
|
||||
}
|
||||
sEnvTimerActive = false;
|
||||
}
|
||||
@@ -5958,7 +5961,8 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
}
|
||||
} else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) {
|
||||
if ((((void)0, gSaveContext.timerCurTimes[sTimerId]) >
|
||||
(gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) &&
|
||||
(gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] -
|
||||
SECONDS_TO_TIMER(9))) &&
|
||||
(sTimerBeepSfxSeconds != sTimerDigits[4])) {
|
||||
play_sound(NA_SE_SY_WARNING_COUNT_E);
|
||||
sTimerBeepSfxSeconds = sTimerDigits[4];
|
||||
@@ -5996,10 +6000,10 @@ void Interface_DrawTimers(PlayState* play) {
|
||||
}
|
||||
} else if (CHECK_EVENTINF(EVENTINF_34) && (play->sceneId == SCENE_DEKUTES)) {
|
||||
if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >=
|
||||
gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
|
||||
} else if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >=
|
||||
(gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] -
|
||||
(gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1] -
|
||||
SECONDS_TO_TIMER(9))) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255);
|
||||
} else {
|
||||
@@ -6107,7 +6111,7 @@ void Interface_UpdateBottleTimers(PlayState* play) {
|
||||
// Time has passed, and the time limit has been exceeded.
|
||||
gSaveContext.bottleTimerCurTimes[i] = SECONDS_TO_TIMER(0);
|
||||
|
||||
if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) {
|
||||
Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER);
|
||||
Message_StartTextbox(play, 0xFA, NULL);
|
||||
}
|
||||
@@ -6166,7 +6170,7 @@ void Interface_DrawMinigameIcons(PlayState* play) {
|
||||
width = 24;
|
||||
height = 16;
|
||||
rectX = 20;
|
||||
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
rectY = 75; // two rows of hearts
|
||||
} else {
|
||||
rectY = 67; // one row of hearts
|
||||
@@ -6210,7 +6214,7 @@ void Interface_DrawMinigameIcons(PlayState* play) {
|
||||
|
||||
if (play->sceneId == SCENE_30GYOSON) {
|
||||
rectX += 20;
|
||||
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity > 0xA0) {
|
||||
rectY = 87; // two rows of hearts
|
||||
} else {
|
||||
rectY = 79; // one row of hearts
|
||||
@@ -6465,7 +6469,7 @@ void Interface_Draw(PlayState* play) {
|
||||
PRIMITIVE, 0);
|
||||
|
||||
counterDigits[0] = counterDigits[1] = 0;
|
||||
counterDigits[2] = gSaveContext.save.playerData.rupees;
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
|
||||
if ((counterDigits[2] > 9999) || (counterDigits[2] < 0)) {
|
||||
counterDigits[2] &= 0xDDD;
|
||||
@@ -6498,9 +6502,9 @@ void Interface_Draw(PlayState* play) {
|
||||
|
||||
gDPPipeSync(OVERLAY_DISP++);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha);
|
||||
} else if (gSaveContext.save.playerData.rupees != 0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees != 0) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha);
|
||||
} else {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha);
|
||||
@@ -6851,14 +6855,15 @@ void Interface_Update(PlayState* play) {
|
||||
// Update health
|
||||
if (gSaveContext.healthAccumulator != 0) {
|
||||
gSaveContext.healthAccumulator -= 4;
|
||||
gSaveContext.save.playerData.health += 4;
|
||||
gSaveContext.save.saveInfo.playerData.health += 4;
|
||||
|
||||
if ((gSaveContext.save.playerData.health & 0xF) < 4) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health & 0xF) < 4) {
|
||||
play_sound(NA_SE_SY_HP_RECOVER);
|
||||
}
|
||||
|
||||
if (((void)0, gSaveContext.save.playerData.health) >= ((void)0, gSaveContext.save.playerData.healthCapacity)) {
|
||||
gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity;
|
||||
if (((void)0, gSaveContext.save.saveInfo.playerData.health) >=
|
||||
((void)0, gSaveContext.save.saveInfo.playerData.healthCapacity)) {
|
||||
gSaveContext.save.saveInfo.playerData.health = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
gSaveContext.healthAccumulator = 0;
|
||||
}
|
||||
}
|
||||
@@ -6883,26 +6888,26 @@ void Interface_Update(PlayState* play) {
|
||||
// Update rupees
|
||||
if (gSaveContext.rupeeAccumulator != 0) {
|
||||
if (gSaveContext.rupeeAccumulator > 0) {
|
||||
if (gSaveContext.save.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) {
|
||||
gSaveContext.rupeeAccumulator--;
|
||||
gSaveContext.save.playerData.rupees++;
|
||||
gSaveContext.save.saveInfo.playerData.rupees++;
|
||||
play_sound(NA_SE_SY_RUPY_COUNT);
|
||||
} else {
|
||||
// Max rupees
|
||||
gSaveContext.save.playerData.rupees = CUR_CAPACITY(UPG_WALLET);
|
||||
gSaveContext.save.saveInfo.playerData.rupees = CUR_CAPACITY(UPG_WALLET);
|
||||
gSaveContext.rupeeAccumulator = 0;
|
||||
}
|
||||
} else if (gSaveContext.save.playerData.rupees != 0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees != 0) {
|
||||
if (gSaveContext.rupeeAccumulator <= -50) {
|
||||
gSaveContext.rupeeAccumulator += 10;
|
||||
gSaveContext.save.playerData.rupees -= 10;
|
||||
if (gSaveContext.save.playerData.rupees < 0) {
|
||||
gSaveContext.save.playerData.rupees = 0;
|
||||
gSaveContext.save.saveInfo.playerData.rupees -= 10;
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0) {
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 0;
|
||||
}
|
||||
play_sound(NA_SE_SY_RUPY_COUNT);
|
||||
} else {
|
||||
gSaveContext.rupeeAccumulator++;
|
||||
gSaveContext.save.playerData.rupees--;
|
||||
gSaveContext.save.saveInfo.playerData.rupees--;
|
||||
play_sound(NA_SE_SY_RUPY_COUNT);
|
||||
}
|
||||
} else {
|
||||
@@ -7035,29 +7040,31 @@ void Interface_Update(PlayState* play) {
|
||||
if (!(player->stateFlags1 & PLAYER_STATE1_200)) {
|
||||
if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_DOUBLE_METER) {
|
||||
// Upgrade to double magic
|
||||
if (!gSaveContext.save.playerData.isMagicAcquired) {
|
||||
gSaveContext.save.playerData.isMagicAcquired = true;
|
||||
if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) {
|
||||
gSaveContext.save.saveInfo.playerData.isMagicAcquired = true;
|
||||
}
|
||||
gSaveContext.save.playerData.isDoubleMagicAcquired = true;
|
||||
gSaveContext.save.playerData.magic = MAGIC_DOUBLE_METER;
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired = true;
|
||||
gSaveContext.save.saveInfo.playerData.magic = MAGIC_DOUBLE_METER;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION;
|
||||
} else if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_NORMAL_METER) {
|
||||
// Upgrade to normal magic
|
||||
if (!gSaveContext.save.playerData.isMagicAcquired) {
|
||||
gSaveContext.save.playerData.isMagicAcquired = true;
|
||||
if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired) {
|
||||
gSaveContext.save.saveInfo.playerData.isMagicAcquired = true;
|
||||
}
|
||||
gSaveContext.save.playerData.isDoubleMagicAcquired = false;
|
||||
gSaveContext.save.playerData.magic = MAGIC_NORMAL_METER;
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired = false;
|
||||
gSaveContext.save.saveInfo.playerData.magic = MAGIC_NORMAL_METER;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION;
|
||||
}
|
||||
|
||||
if ((gSaveContext.save.playerData.isMagicAcquired) && (gSaveContext.save.playerData.magicLevel == 0)) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.isMagicAcquired) &&
|
||||
(gSaveContext.save.saveInfo.playerData.magicLevel == 0)) {
|
||||
// Prepare to step `magicCapacity` to full capacity
|
||||
gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic;
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel =
|
||||
gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired + 1;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.saveInfo.playerData.magic;
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY;
|
||||
BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT;
|
||||
}
|
||||
@@ -7071,7 +7078,7 @@ void Interface_Update(PlayState* play) {
|
||||
if ((sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FREE)) {
|
||||
if (CUR_FORM != PLAYER_FORM_ZORA) {
|
||||
if (play->gameOverCtx.state == GAMEOVER_INACTIVE) {
|
||||
if ((gSaveContext.save.playerData.health >> 1) != 0) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health >> 1) != 0) {
|
||||
gSaveContext.timerStates[TIMER_ID_ENV_HAZARD] = TIMER_STATE_ENV_HAZARD_START;
|
||||
gSaveContext.timerX[TIMER_ID_ENV_HAZARD] = 115;
|
||||
gSaveContext.timerY[TIMER_ID_ENV_HAZARD] = 80;
|
||||
|
||||
+3
-3
@@ -390,7 +390,7 @@ void Scene_CommandTimeSettings(PlayState* play, SceneCmd* cmd) {
|
||||
}
|
||||
|
||||
// Increase time speed during first cycle
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) {
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) {
|
||||
play->envCtx.sceneTimeSpeed = 5;
|
||||
}
|
||||
|
||||
@@ -519,8 +519,8 @@ void Scene_CommandSetRegionVisitedFlag(PlayState* play, SceneCmd* cmd) {
|
||||
}
|
||||
|
||||
if (i < REGION_MAX) {
|
||||
gSaveContext.save.regionsVisited =
|
||||
(gBitFlags[i] | gSaveContext.save.regionsVisited) | gSaveContext.save.regionsVisited;
|
||||
gSaveContext.save.saveInfo.regionsVisited =
|
||||
(gBitFlags[i] | gSaveContext.save.saveInfo.regionsVisited) | gSaveContext.save.saveInfo.regionsVisited;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* Description: Draws black top/bottom/side borders on the viewing window (e.g. Z-targeting, talking to NPC)
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64shrink_window.h"
|
||||
|
||||
|
||||
+8
-8
@@ -18,8 +18,8 @@ s32 Snap_RecordPictographedActors(PlayState* play) {
|
||||
s32 seen;
|
||||
s32 validCount = 0;
|
||||
|
||||
gSaveContext.save.pictoFlags0 = 0;
|
||||
gSaveContext.save.pictoFlags1 = 0;
|
||||
gSaveContext.save.saveInfo.pictoFlags0 = 0;
|
||||
gSaveContext.save.saveInfo.pictoFlags1 = 0;
|
||||
|
||||
if (play->sceneId == SCENE_20SICHITAI) {
|
||||
Snap_SetFlag(PICTO_VALID_IN_SWAMP);
|
||||
@@ -91,20 +91,20 @@ s32 Snap_RecordPictographedActors(PlayState* play) {
|
||||
// Only used in this file
|
||||
void Snap_SetFlag(s32 flag) {
|
||||
if (flag < 0x20) {
|
||||
gSaveContext.save.pictoFlags0 |= (1 << flag);
|
||||
gSaveContext.save.saveInfo.pictoFlags0 |= (1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
gSaveContext.save.pictoFlags1 |= (1 << flag);
|
||||
gSaveContext.save.saveInfo.pictoFlags1 |= (1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
// Unused
|
||||
void Snap_UnsetFlag(s32 flag) {
|
||||
if (flag < 0x20) {
|
||||
gSaveContext.save.pictoFlags0 &= ~(1 << flag);
|
||||
gSaveContext.save.saveInfo.pictoFlags0 &= ~(1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
gSaveContext.save.pictoFlags1 &= ~(1 << flag);
|
||||
gSaveContext.save.saveInfo.pictoFlags1 &= ~(1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,10 +112,10 @@ u32 Snap_CheckFlag(s32 flag) {
|
||||
SaveContext* saveCtx = &gSaveContext;
|
||||
|
||||
if (flag < 0x20) {
|
||||
return saveCtx->save.pictoFlags0 & (1 << flag);
|
||||
return saveCtx->save.saveInfo.pictoFlags0 & (1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
return saveCtx->save.pictoFlags1 & (1 << flag);
|
||||
return saveCtx->save.saveInfo.pictoFlags1 & (1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+246
-243
@@ -134,7 +134,7 @@ u32 D_801C5FC0[SCENE_MAX][4] = {
|
||||
|
||||
// TODO: figure out a way to use the WEEKEVENTREG defines here
|
||||
// weekEventReg flags which will be not be cleared on a cycle reset
|
||||
u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.weekEventReg)] = {
|
||||
u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = {
|
||||
/* 0 */ 0xFFFC,
|
||||
/* 1 */ 0xFFFF,
|
||||
/* 2 */ 0xFFFF,
|
||||
@@ -296,24 +296,24 @@ u16 D_801F6AF0;
|
||||
u8 D_801F6AF2;
|
||||
|
||||
void Sram_ActivateOwl(u8 owlId) {
|
||||
gSaveContext.save.playerData.owlActivationFlags =
|
||||
((void)0, gSaveContext.save.playerData.owlActivationFlags) | (u16)gBitFlags[owlId];
|
||||
gSaveContext.save.saveInfo.playerData.owlActivationFlags =
|
||||
((void)0, gSaveContext.save.saveInfo.playerData.owlActivationFlags) | (u16)gBitFlags[owlId];
|
||||
|
||||
if (gSaveContext.save.playerData.unk_20 == 0xFF) {
|
||||
gSaveContext.save.playerData.unk_20 = owlId;
|
||||
if (gSaveContext.save.saveInfo.playerData.unk_20 == 0xFF) {
|
||||
gSaveContext.save.saveInfo.playerData.unk_20 = owlId;
|
||||
}
|
||||
}
|
||||
|
||||
void Sram_ClearHighscores(void) {
|
||||
gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF) | 0x130000;
|
||||
gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF0000) | 0xA;
|
||||
gSaveContext.save.horseBackBalloonHighScore = SECONDS_TO_TIMER(60);
|
||||
gSaveContext.save.saveInfo.unk_EC4 = (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF) | 0x130000;
|
||||
gSaveContext.save.saveInfo.unk_EC4 = (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF0000) | 0xA;
|
||||
gSaveContext.save.saveInfo.horseBackBalloonHighScore = SECONDS_TO_TIMER(60);
|
||||
SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(39);
|
||||
SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(10);
|
||||
|
||||
gSaveContext.save.dekuPlaygroundHighScores[0] = SECONDS_TO_TIMER(75);
|
||||
gSaveContext.save.dekuPlaygroundHighScores[1] = SECONDS_TO_TIMER(75);
|
||||
gSaveContext.save.dekuPlaygroundHighScores[2] = SECONDS_TO_TIMER(76);
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[0] = SECONDS_TO_TIMER(75);
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[1] = SECONDS_TO_TIMER(75);
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[2] = SECONDS_TO_TIMER(76);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -342,9 +342,9 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
gSaveContext.save.day = 0;
|
||||
gSaveContext.save.time = CLOCK_TIME(6, 0) - 1;
|
||||
|
||||
gSaveContext.save.playerData.deaths++;
|
||||
if (gSaveContext.save.playerData.deaths > 999) {
|
||||
gSaveContext.save.playerData.deaths = 999;
|
||||
gSaveContext.save.saveInfo.playerData.deaths++;
|
||||
if (gSaveContext.save.saveInfo.playerData.deaths > 999) {
|
||||
gSaveContext.save.saveInfo.playerData.deaths = 999;
|
||||
}
|
||||
|
||||
sceneId = Play_GetOriginalSceneId(play->sceneId);
|
||||
@@ -363,8 +363,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
gSaveContext.cycleSceneFlags[i].collectible =
|
||||
((void)0, gSaveContext.cycleSceneFlags[i].collectible) & D_801C5FC0[i][3];
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = 0;
|
||||
gSaveContext.save.permanentSceneFlags[i].unk_14 = 0;
|
||||
gSaveContext.save.permanentSceneFlags[i].rooms = 0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].unk_14 = 0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].rooms = 0;
|
||||
}
|
||||
|
||||
for (; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
@@ -388,8 +388,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
|
||||
for (j = 0; j < ARRAY_COUNT(D_801C6890); j++) {
|
||||
if ((phi_v1_3 & 3) == 0) {
|
||||
gSaveContext.save.weekEventReg[i] =
|
||||
((void)0, gSaveContext.save.weekEventReg[i]) & (0xFF ^ D_801C6890[j]);
|
||||
gSaveContext.save.saveInfo.weekEventReg[i] =
|
||||
((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ D_801C6890[j]);
|
||||
}
|
||||
phi_v1_3 >>= 2;
|
||||
}
|
||||
@@ -405,7 +405,7 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
CLEAR_EVENTINF(EVENTINF_73);
|
||||
CLEAR_EVENTINF(EVENTINF_74);
|
||||
|
||||
if (gSaveContext.save.playerData.rupees != 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees != 0) {
|
||||
SET_EVENTINF(EVENTINF_70);
|
||||
}
|
||||
|
||||
@@ -436,8 +436,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gAmmoItems); i++) {
|
||||
if (gAmmoItems[i] != ITEM_NONE) {
|
||||
if ((gSaveContext.save.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTO_BOX)) {
|
||||
item = gSaveContext.save.inventory.items[i];
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTO_BOX)) {
|
||||
item = gSaveContext.save.saveInfo.inventory.items[i];
|
||||
AMMO(item) = 0;
|
||||
}
|
||||
}
|
||||
@@ -445,23 +445,23 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
|
||||
for (i = SLOT_BOTTLE_1; i <= SLOT_BOTTLE_6; i++) {
|
||||
// Check for all bottled items
|
||||
if (gSaveContext.save.inventory.items[i] >= ITEM_POTION_RED) {
|
||||
if (gSaveContext.save.inventory.items[i] <= ITEM_OBABA_DRINK) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i] >= ITEM_POTION_RED) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i] <= ITEM_OBABA_DRINK) {
|
||||
for (j = EQUIP_SLOT_C_LEFT; j <= EQUIP_SLOT_C_RIGHT; j++) {
|
||||
if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.inventory.items[i]) {
|
||||
if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.saveInfo.inventory.items[i]) {
|
||||
SET_CUR_FORM_BTN_ITEM(j, ITEM_BOTTLE);
|
||||
Interface_LoadItemIconImpl(play, j);
|
||||
}
|
||||
}
|
||||
gSaveContext.save.inventory.items[i] = ITEM_BOTTLE;
|
||||
gSaveContext.save.saveInfo.inventory.items[i] = ITEM_BOTTLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH);
|
||||
|
||||
if (gSaveContext.save.playerData.health < 0x30) {
|
||||
gSaveContext.save.playerData.health = 0x30;
|
||||
if (gSaveContext.save.saveInfo.playerData.health < 0x30) {
|
||||
gSaveContext.save.saveInfo.playerData.health = 0x30;
|
||||
}
|
||||
|
||||
if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) <= EQUIP_VALUE_SWORD_RAZOR) {
|
||||
@@ -491,8 +491,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
if (STOLEN_ITEM_1 == ITEM_BOTTLE) {
|
||||
slot = SLOT(ITEM_BOTTLE);
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_BOTTLE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -501,8 +501,8 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
if (STOLEN_ITEM_2 == ITEM_BOTTLE) {
|
||||
slot = SLOT(ITEM_BOTTLE);
|
||||
for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) {
|
||||
if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot + i] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot + i] = ITEM_BOTTLE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -522,28 +522,28 @@ void Sram_SaveEndOfCycle(PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
gSaveContext.save.skullTokenCount &= ~0xFFFF0000;
|
||||
gSaveContext.save.skullTokenCount &= ~0x0000FFFF;
|
||||
gSaveContext.save.unk_EC4 = 0;
|
||||
gSaveContext.save.saveInfo.skullTokenCount &= ~0xFFFF0000;
|
||||
gSaveContext.save.saveInfo.skullTokenCount &= ~0x0000FFFF;
|
||||
gSaveContext.save.saveInfo.unk_EA0 = 0;
|
||||
|
||||
gSaveContext.save.unk_E88[0] = 0;
|
||||
gSaveContext.save.unk_E88[1] = 0;
|
||||
gSaveContext.save.unk_E88[2] = 0;
|
||||
gSaveContext.save.unk_E88[3] = 0;
|
||||
gSaveContext.save.unk_E88[4] = 0;
|
||||
gSaveContext.save.unk_E88[5] = 0;
|
||||
gSaveContext.save.unk_E88[6] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[0] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[1] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[2] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[3] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[4] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[5] = 0;
|
||||
gSaveContext.save.saveInfo.unk_E64[6] = 0;
|
||||
|
||||
Sram_ClearHighscores();
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
gSaveContext.save.inventory.dungeonItems[i] &= (u8)~1; // remove boss key
|
||||
gSaveContext.save.saveInfo.inventory.dungeonItems[i] &= (u8)~1; // remove boss key
|
||||
DUNGEON_KEY_COUNT(i) = 0;
|
||||
gSaveContext.save.inventory.strayFairies[i] = 0;
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[i] = 0;
|
||||
}
|
||||
|
||||
gSaveContext.save.playerData.rupees = 0;
|
||||
gSaveContext.save.unk_F65 = 0;
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 0;
|
||||
gSaveContext.save.saveInfo.unk_F41 = 0;
|
||||
gSaveContext.powderKegTimer = 0;
|
||||
gSaveContext.unk_1014 = 0;
|
||||
gSaveContext.jinxTimer = 0;
|
||||
@@ -558,12 +558,12 @@ void Sram_IncrementDay(void) {
|
||||
gSaveContext.save.daysElapsed++;
|
||||
}
|
||||
|
||||
gSaveContext.save.bombersCaughtNum = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[0] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[1] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[2] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[3] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[4] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtNum = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[0] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[1] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[2] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[3] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[4] = 0;
|
||||
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_73_10);
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_85_02);
|
||||
@@ -593,9 +593,7 @@ void Sram_ResetSave(void) {
|
||||
gSaveContext.save.hasTatl = false;
|
||||
gSaveContext.save.isOwlSave = false;
|
||||
|
||||
// Instead of bloating all save context accesses with an extra sub-struct, the size of the would-be sub-struct
|
||||
// is calculated manually
|
||||
bzero(&gSaveContext.save.playerData, sizeof(Save) - offsetof(Save, playerData));
|
||||
bzero(&gSaveContext.save.saveInfo, sizeof(SaveInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -615,15 +613,15 @@ void Sram_GenerateRandomSaveFields(void) {
|
||||
|
||||
Sram_ClearHighscores();
|
||||
|
||||
gSaveContext.save.lotteryCodes[0][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[0][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[0][2] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[1][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[1][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[1][2] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[2][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[2][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.lotteryCodes[2][2] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[0][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[0][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[0][2] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[1][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[1][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[1][2] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[2][0] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[2][1] = Rand_S16Offset(0, 10);
|
||||
gSaveContext.save.saveInfo.lotteryCodes[2][2] = Rand_S16Offset(0, 10);
|
||||
|
||||
// Needed to match...
|
||||
for (i = 0; i < 3; i++) {
|
||||
@@ -636,7 +634,7 @@ void Sram_GenerateRandomSaveFields(void) {
|
||||
while (i != k) {
|
||||
randSpiderHouse = Rand_S16Offset(0, 16) & 3;
|
||||
if (sp2A != randSpiderHouse) {
|
||||
gSaveContext.save.spiderHouseMaskOrder[i] = randSpiderHouse;
|
||||
gSaveContext.save.saveInfo.spiderHouseMaskOrder[i] = randSpiderHouse;
|
||||
i++;
|
||||
sp2A = randSpiderHouse;
|
||||
}
|
||||
@@ -646,7 +644,7 @@ void Sram_GenerateRandomSaveFields(void) {
|
||||
randBombers = Rand_S16Offset(0, 6);
|
||||
} while (randBombers <= 0 || randBombers >= 6);
|
||||
|
||||
gSaveContext.save.bomberCode[0] = randBombers;
|
||||
gSaveContext.save.saveInfo.bomberCode[0] = randBombers;
|
||||
|
||||
i = 1;
|
||||
while (i != 5) {
|
||||
@@ -658,14 +656,14 @@ void Sram_GenerateRandomSaveFields(void) {
|
||||
|
||||
sp2A = 0;
|
||||
do {
|
||||
if (randBombers == gSaveContext.save.bomberCode[sp2A]) {
|
||||
if (randBombers == gSaveContext.save.saveInfo.bomberCode[sp2A]) {
|
||||
k = true;
|
||||
}
|
||||
sp2A++;
|
||||
} while (sp2A < i);
|
||||
|
||||
if (k == false) {
|
||||
gSaveContext.save.bomberCode[i] = randBombers;
|
||||
gSaveContext.save.saveInfo.bomberCode[i] = randBombers;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -755,19 +753,20 @@ void Sram_InitNewSave(void) {
|
||||
gSaveContext.save.time = CLOCK_TIME(6, 0) - 1;
|
||||
Sram_ResetSave();
|
||||
|
||||
Lib_MemCpy(&gSaveContext.save.playerData, &sSaveDefaultPlayerData, sizeof(SavePlayerData));
|
||||
Lib_MemCpy(&gSaveContext.save.equips, &sSaveDefaultItemEquips, sizeof(ItemEquips));
|
||||
Lib_MemCpy(&gSaveContext.save.inventory, &sSaveDefaultInventory, sizeof(Inventory));
|
||||
Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDefaultChecksum, sizeof(gSaveContext.save.checksum));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.playerData, &sSaveDefaultPlayerData, sizeof(SavePlayerData));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.equips, &sSaveDefaultItemEquips, sizeof(ItemEquips));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.inventory, &sSaveDefaultInventory, sizeof(Inventory));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.checksum, &sSaveDefaultChecksum,
|
||||
sizeof(gSaveContext.save.saveInfo.checksum));
|
||||
|
||||
gSaveContext.save.horseData.sceneId = SCENE_F01;
|
||||
gSaveContext.save.horseData.pos.x = -1420;
|
||||
gSaveContext.save.horseData.pos.y = 257;
|
||||
gSaveContext.save.horseData.pos.z = -1285;
|
||||
gSaveContext.save.horseData.yaw = -0x7554;
|
||||
gSaveContext.save.saveInfo.horseData.sceneId = SCENE_F01;
|
||||
gSaveContext.save.saveInfo.horseData.pos.x = -1420;
|
||||
gSaveContext.save.saveInfo.horseData.pos.y = 257;
|
||||
gSaveContext.save.saveInfo.horseData.pos.z = -1285;
|
||||
gSaveContext.save.saveInfo.horseData.yaw = -0x7554;
|
||||
|
||||
gSaveContext.nextCutsceneIndex = 0;
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
Sram_GenerateRandomSaveFields();
|
||||
}
|
||||
|
||||
@@ -908,10 +907,10 @@ u8 D_801C6A50[] = {
|
||||
void Sram_InitDebugSave(void) {
|
||||
Sram_ResetSave();
|
||||
|
||||
Lib_MemCpy(&gSaveContext.save.playerData, &sSaveDebugPlayerData, sizeof(SavePlayerData));
|
||||
Lib_MemCpy(&gSaveContext.save.equips, &sSaveDebugItemEquips, sizeof(ItemEquips));
|
||||
Lib_MemCpy(&gSaveContext.save.inventory, &sSaveDebugInventory, sizeof(Inventory));
|
||||
Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.checksum));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.playerData, &sSaveDebugPlayerData, sizeof(SavePlayerData));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.equips, &sSaveDebugItemEquips, sizeof(ItemEquips));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.inventory, &sSaveDebugInventory, sizeof(Inventory));
|
||||
Lib_MemCpy(&gSaveContext.save.saveInfo.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.saveInfo.checksum));
|
||||
|
||||
if (GET_PLAYER_FORM != PLAYER_FORM_HUMAN) {
|
||||
BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[GET_PLAYER_FORM];
|
||||
@@ -920,11 +919,11 @@ void Sram_InitDebugSave(void) {
|
||||
|
||||
gSaveContext.save.hasTatl = true;
|
||||
|
||||
gSaveContext.save.horseData.sceneId = SCENE_F01;
|
||||
gSaveContext.save.horseData.pos.x = -1420;
|
||||
gSaveContext.save.horseData.pos.y = 257;
|
||||
gSaveContext.save.horseData.pos.z = -1285;
|
||||
gSaveContext.save.horseData.yaw = -0x7554;
|
||||
gSaveContext.save.saveInfo.horseData.sceneId = SCENE_F01;
|
||||
gSaveContext.save.saveInfo.horseData.pos.x = -1420;
|
||||
gSaveContext.save.saveInfo.horseData.pos.y = 257;
|
||||
gSaveContext.save.saveInfo.horseData.pos.z = -1285;
|
||||
gSaveContext.save.saveInfo.horseData.yaw = -0x7554;
|
||||
|
||||
gSaveContext.save.entrance = ENTRANCE(CUTSCENE, 0);
|
||||
gSaveContext.save.isFirstCycle = true;
|
||||
@@ -934,8 +933,8 @@ void Sram_InitDebugSave(void) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_31_04);
|
||||
|
||||
gSaveContext.cycleSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
|
||||
gSaveContext.save.permanentSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[SCENE_INSIDETOWER].switch0 = 1;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
|
||||
Sram_GenerateRandomSaveFields();
|
||||
}
|
||||
@@ -953,7 +952,7 @@ void func_80144A94(SramContext* sramCtx) {
|
||||
D_801C67F0[gSaveContext.fileNum * 2 + 1]);
|
||||
}
|
||||
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf)) {
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) {
|
||||
func_80185968(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2 + 1],
|
||||
D_801C67F0[gSaveContext.fileNum * 2 + 1]);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, sizeof(Save));
|
||||
@@ -965,11 +964,11 @@ void func_80144A94(SramContext* sramCtx) {
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
for (i = 0; i < TIMER_ID_MAX; i++) {
|
||||
@@ -1026,13 +1025,13 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
|
||||
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]);
|
||||
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf)) {
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) {
|
||||
func_80185968(sramCtx->saveBuf, D_801C67C8[phi_t1 + 1], D_801C67F0[phi_t1 + 1]);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]);
|
||||
}
|
||||
}
|
||||
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
|
||||
if (!gSaveContext.save.isOwlSave) {
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.eventInf); i++) {
|
||||
@@ -1040,11 +1039,11 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
for (i = 0; i < TIMER_ID_MAX; i++) {
|
||||
@@ -1076,18 +1075,18 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) {
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible;
|
||||
gSaveContext.cycleSceneFlags[i].chest = gSaveContext.save.saveInfo.permanentSceneFlags[i].chest;
|
||||
gSaveContext.cycleSceneFlags[i].switch0 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0;
|
||||
gSaveContext.cycleSceneFlags[i].switch1 = gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1;
|
||||
gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom;
|
||||
gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.unk_F65) {
|
||||
Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.scarecrowSpawnSong,
|
||||
sizeof(gSaveContext.save.scarecrowSpawnSong));
|
||||
if (gSaveContext.save.saveInfo.unk_F41) {
|
||||
Lib_MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.saveInfo.scarecrowSpawnSong,
|
||||
sizeof(gSaveContext.save.saveInfo.scarecrowSpawnSong));
|
||||
|
||||
for (i = 0; i != ARRAY_COUNT(gSaveContext.save.scarecrowSpawnSong); i++) {}
|
||||
for (i = 0; i != ARRAY_COUNT(gSaveContext.save.saveInfo.scarecrowSpawnSong); i++) {}
|
||||
}
|
||||
|
||||
fileNum = gSaveContext.fileNum;
|
||||
@@ -1101,28 +1100,28 @@ void func_8014546C(SramContext* sramCtx) {
|
||||
|
||||
if (gSaveContext.save.isOwlSave) {
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
|
||||
|
||||
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, offsetof(SaveContext, fileNum));
|
||||
} else {
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
|
||||
if (gSaveContext.unk_3F3F) {
|
||||
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save));
|
||||
@@ -1138,15 +1137,15 @@ void func_80145698(SramContext* sramCtx) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.cycleSceneFlags); i++) {
|
||||
gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible;
|
||||
}
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
if (gSaveContext.unk_3F3F) {
|
||||
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save));
|
||||
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
|
||||
@@ -1202,14 +1201,14 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
} else {
|
||||
// Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
gSaveContext.save.checksum = 0;
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
|
||||
gSaveContext.save.checksum = temp_s2;
|
||||
gSaveContext.save.saveInfo.checksum = temp_s2;
|
||||
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (temp_s2 != temp_v0_2)) {
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) {
|
||||
sp6E = 1;
|
||||
if (CHECK_NEWF2(gSaveContext.save.playerData.newf)) {}
|
||||
if (CHECK_NEWF2(gSaveContext.save.saveInfo.playerData.newf)) {}
|
||||
|
||||
phi_s2 = false;
|
||||
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
|
||||
@@ -1217,9 +1216,9 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
}
|
||||
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
gSaveContext.save.checksum = 0;
|
||||
if (phi_s2 || CHECK_NEWF(gSaveContext.save.playerData.newf) ||
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) ||
|
||||
(temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) {
|
||||
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
|
||||
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
|
||||
@@ -1228,55 +1227,57 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
}
|
||||
}
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum =
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum =
|
||||
Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed?
|
||||
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.newf); sp7A++) {
|
||||
fileSelect->newf[sp76][sp7A] = gSaveContext.save.playerData.newf[sp7A];
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) {
|
||||
fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A];
|
||||
}
|
||||
|
||||
if (!CHECK_NEWF(fileSelect->newf[sp76])) {
|
||||
fileSelect->unk_2440C[sp76] = gSaveContext.save.playerData.deaths;
|
||||
fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths;
|
||||
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.playerName); sp7A++) {
|
||||
fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.playerData.playerName[sp7A];
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) {
|
||||
fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A];
|
||||
}
|
||||
|
||||
fileSelect->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity;
|
||||
fileSelect->health[sp76] = gSaveContext.save.playerData.health;
|
||||
fileSelect->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[sp76] = gSaveContext.save.inventory.questItems;
|
||||
fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health;
|
||||
fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems;
|
||||
fileSelect->unk_24458[sp76] = gSaveContext.save.time;
|
||||
fileSelect->unk_24460[sp76] = gSaveContext.save.day;
|
||||
fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave;
|
||||
fileSelect->rupees[sp76] = gSaveContext.save.playerData.rupees;
|
||||
fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4);
|
||||
|
||||
for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) {
|
||||
if (gSaveContext.save.inventory.items[sp7A + 24] != 0xFF) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) {
|
||||
phi_a0++;
|
||||
}
|
||||
}
|
||||
fileSelect->maskCount[sp76] = phi_a0;
|
||||
fileSelect->heartPieceCount[sp76] = ((gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C);
|
||||
fileSelect->heartPieceCount[sp76] =
|
||||
((gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C);
|
||||
}
|
||||
|
||||
if (sp6E == 1) {
|
||||
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
|
||||
func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C6818[sp64]);
|
||||
} else if (sp6E == 0) { // TODO: == 0?
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
|
||||
phi_s2_3 = 1;
|
||||
} else {
|
||||
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
|
||||
phi_s2_3 = gSaveContext.save.checksum;
|
||||
gSaveContext.save.checksum = 0;
|
||||
phi_s2_3 = gSaveContext.save.saveInfo.checksum;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
sp7A = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
}
|
||||
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (phi_s2_3 != sp7A) || (phi_s2_3 != temp_s2)) {
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) ||
|
||||
(phi_s2_3 != temp_s2)) {
|
||||
func_80185968(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]);
|
||||
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
|
||||
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
|
||||
@@ -1293,15 +1294,15 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
D_801C6870[sp64]); // TODO: Needed?
|
||||
} else {
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
|
||||
gSaveContext.save.checksum = temp_s2;
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (temp_s2 != temp_v0_2)) {
|
||||
gSaveContext.save.saveInfo.checksum = temp_s2;
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) {
|
||||
sp6E = 1;
|
||||
if ((gSaveContext.save.playerData.newf[0] == 'Z') &&
|
||||
(gSaveContext.save.playerData.newf[1] == 'E')) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.newf[0] == 'Z') &&
|
||||
(gSaveContext.save.saveInfo.playerData.newf[1] == 'E')) {
|
||||
phi_s2 = false;
|
||||
}
|
||||
|
||||
@@ -1310,9 +1311,9 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
}
|
||||
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
gSaveContext.save.checksum = 0;
|
||||
if (phi_s2 || CHECK_NEWF(gSaveContext.save.playerData.newf) ||
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) ||
|
||||
(temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) {
|
||||
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
@@ -1321,58 +1322,58 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
}
|
||||
}
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum =
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum =
|
||||
Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed?
|
||||
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.newf); sp7A++) {
|
||||
fileSelect->newf[sp76][sp7A] = gSaveContext.save.playerData.newf[sp7A];
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) {
|
||||
fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A];
|
||||
}
|
||||
|
||||
if (!CHECK_NEWF(fileSelect->newf[sp76])) {
|
||||
fileSelect->unk_2440C[sp76] = gSaveContext.save.playerData.deaths;
|
||||
fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths;
|
||||
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.playerData.playerName); sp7A++) {
|
||||
for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) {
|
||||
phi_s2 += 0; // TODO: Needed?
|
||||
fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.playerData.playerName[sp7A];
|
||||
fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A];
|
||||
}
|
||||
|
||||
fileSelect->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity;
|
||||
fileSelect->health[sp76] = gSaveContext.save.playerData.health;
|
||||
fileSelect->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[sp76] = gSaveContext.save.inventory.questItems;
|
||||
fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health;
|
||||
fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems;
|
||||
fileSelect->unk_24458[sp76] = gSaveContext.save.time;
|
||||
fileSelect->unk_24460[sp76] = gSaveContext.save.day;
|
||||
fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave;
|
||||
fileSelect->rupees[sp76] = gSaveContext.save.playerData.rupees;
|
||||
fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4);
|
||||
|
||||
for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) {
|
||||
if (gSaveContext.save.inventory.items[sp7A + 24] != 0xFF) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) {
|
||||
phi_a0++;
|
||||
}
|
||||
}
|
||||
fileSelect->maskCount[sp76] = phi_a0;
|
||||
fileSelect->heartPieceCount[sp76] =
|
||||
((gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C);
|
||||
((gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C);
|
||||
}
|
||||
|
||||
if (sp6E == 1) {
|
||||
func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C67F0[sp64]);
|
||||
func_80146EBC(sramCtx, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1]);
|
||||
} else if (!sp6E) { // TODO: == 0?
|
||||
temp_s2 = gSaveContext.save.checksum;
|
||||
temp_s2 = gSaveContext.save.saveInfo.checksum;
|
||||
if (func_80185968(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) {
|
||||
phi_s2_3 = 1;
|
||||
} else {
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
phi_s2_3 = gSaveContext.save.checksum;
|
||||
gSaveContext.save.checksum = 0;
|
||||
// phi_s2_3 = gSaveContext.save.checksum;
|
||||
phi_s2_3 = gSaveContext.save.saveInfo.checksum;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
// phi_s2_3 = gSaveContext.save.saveInfo.checksum;
|
||||
sp7A = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]);
|
||||
}
|
||||
|
||||
if (CHECK_NEWF(gSaveContext.save.playerData.newf) || (phi_s2_3 != sp7A) ||
|
||||
if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) ||
|
||||
(phi_s2_3 != temp_s2)) {
|
||||
func_80185968(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]);
|
||||
@@ -1444,32 +1445,33 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
if (gSaveContext.unk_3F3F) {
|
||||
if (fileSelect->unk_2446A[fileSelect->unk_2448E]) {
|
||||
func_80147414(sramCtx, fileSelect->unk_2448E, fileSelect->fileNum);
|
||||
fileSelect->unk_24410[fileSelect->fileNum] = gSaveContext.save.playerData.deaths;
|
||||
fileSelect->unk_24410[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
|
||||
fileSelect->unk_24424[fileSelect->fileNum][i] = gSaveContext.save.playerData.playerName[i];
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
|
||||
fileSelect->unk_24424[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
|
||||
}
|
||||
|
||||
fileSelect->unk_24438[fileSelect->fileNum] = gSaveContext.save.playerData.healthCapacity;
|
||||
fileSelect->unk_24440[fileSelect->fileNum] = gSaveContext.save.playerData.health;
|
||||
fileSelect->unk_24456[fileSelect->fileNum] = gSaveContext.save.inventory.defenseHearts;
|
||||
fileSelect->unk_2444C[fileSelect->fileNum] = gSaveContext.save.inventory.questItems;
|
||||
fileSelect->unk_24438[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
fileSelect->unk_24440[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health;
|
||||
fileSelect->unk_24456[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts;
|
||||
fileSelect->unk_2444C[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems;
|
||||
fileSelect->unk_2445C[fileSelect->fileNum] = gSaveContext.save.time;
|
||||
fileSelect->unk_24464[fileSelect->fileNum] = gSaveContext.save.day;
|
||||
fileSelect->unk_2446A[fileSelect->fileNum] = gSaveContext.save.isOwlSave;
|
||||
fileSelect->unk_24470[fileSelect->fileNum] = gSaveContext.save.playerData.rupees;
|
||||
fileSelect->unk_24470[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
// = CUR_UPG_VALUE(UPG_WALLET);
|
||||
fileSelect->unk_24476[fileSelect->fileNum] =
|
||||
(gSaveContext.save.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
|
||||
(gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
|
||||
|
||||
for (i = 0, maskCount = 0; i < 24; i++) {
|
||||
if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
|
||||
maskCount++;
|
||||
}
|
||||
}
|
||||
|
||||
fileSelect->unk_2447A[fileSelect->fileNum] = maskCount;
|
||||
fileSelect->unk_2447E[fileSelect->fileNum] = (gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
fileSelect->unk_2447E[fileSelect->fileNum] =
|
||||
(gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
}
|
||||
|
||||
// clear buffer
|
||||
@@ -1485,33 +1487,33 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
// copy buffer to save context
|
||||
Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save));
|
||||
|
||||
fileSelect->unk_2440C[fileSelect->fileNum] = gSaveContext.save.playerData.deaths;
|
||||
fileSelect->unk_2440C[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
|
||||
fileSelect->unk_24414[fileSelect->fileNum][i] = gSaveContext.save.playerData.playerName[i];
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
|
||||
fileSelect->unk_24414[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
|
||||
}
|
||||
|
||||
fileSelect->healthCapacity[fileSelect->fileNum] = gSaveContext.save.playerData.healthCapacity;
|
||||
fileSelect->health[fileSelect->fileNum] = gSaveContext.save.playerData.health;
|
||||
fileSelect->unk_24454[fileSelect->fileNum] = gSaveContext.save.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[fileSelect->fileNum] = gSaveContext.save.inventory.questItems;
|
||||
fileSelect->healthCapacity[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
fileSelect->health[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health;
|
||||
fileSelect->unk_24454[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems;
|
||||
fileSelect->unk_24458[fileSelect->fileNum] = gSaveContext.save.time;
|
||||
fileSelect->unk_24460[fileSelect->fileNum] = gSaveContext.save.day;
|
||||
fileSelect->unk_24468[fileSelect->fileNum] = gSaveContext.save.isOwlSave;
|
||||
fileSelect->rupees[fileSelect->fileNum] = gSaveContext.save.playerData.rupees;
|
||||
fileSelect->rupees[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
// = CUR_UPG_VALUE(UPG_WALLET);
|
||||
fileSelect->unk_24474[fileSelect->fileNum] =
|
||||
(gSaveContext.save.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
|
||||
(gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4];
|
||||
|
||||
for (i = 0, maskCount = 0; i < 24; i++) {
|
||||
if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
|
||||
maskCount++;
|
||||
}
|
||||
}
|
||||
|
||||
fileSelect->maskCount[fileSelect->fileNum] = maskCount;
|
||||
fileSelect->heartPieceCount[fileSelect->fileNum] =
|
||||
(gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
(gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
}
|
||||
|
||||
gSaveContext.save.time = D_801F6AF0;
|
||||
@@ -1533,51 +1535,52 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) {
|
||||
gSaveContext.save.cutscene = 0xFFF0;
|
||||
}
|
||||
|
||||
for (phi_v0 = 0; phi_v0 < ARRAY_COUNT(gSaveContext.save.playerData.playerName); phi_v0++) {
|
||||
gSaveContext.save.playerData.playerName[phi_v0] = fileSelect->unk_24414[fileSelect->unk_24480][phi_v0];
|
||||
for (phi_v0 = 0; phi_v0 < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); phi_v0++) {
|
||||
gSaveContext.save.saveInfo.playerData.playerName[phi_v0] =
|
||||
fileSelect->unk_24414[fileSelect->unk_24480][phi_v0];
|
||||
}
|
||||
|
||||
gSaveContext.save.playerData.newf[0] = 'Z';
|
||||
gSaveContext.save.playerData.newf[1] = 'E';
|
||||
gSaveContext.save.playerData.newf[2] = 'L';
|
||||
gSaveContext.save.playerData.newf[3] = 'D';
|
||||
gSaveContext.save.playerData.newf[4] = 'A';
|
||||
gSaveContext.save.playerData.newf[5] = '3';
|
||||
gSaveContext.save.saveInfo.playerData.newf[0] = 'Z';
|
||||
gSaveContext.save.saveInfo.playerData.newf[1] = 'E';
|
||||
gSaveContext.save.saveInfo.playerData.newf[2] = 'L';
|
||||
gSaveContext.save.saveInfo.playerData.newf[3] = 'D';
|
||||
gSaveContext.save.saveInfo.playerData.newf[4] = 'A';
|
||||
gSaveContext.save.saveInfo.playerData.newf[5] = '3';
|
||||
|
||||
gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save));
|
||||
|
||||
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext.save, sizeof(Save));
|
||||
Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save));
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.newf); i++) {
|
||||
fileSelect->newf[fileSelect->unk_24480][i] = gSaveContext.save.playerData.newf[i];
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); i++) {
|
||||
fileSelect->newf[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.newf[i];
|
||||
}
|
||||
|
||||
fileSelect->unk_2440C[fileSelect->unk_24480] = gSaveContext.save.playerData.deaths;
|
||||
fileSelect->unk_2440C[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.deaths;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.playerData.playerName); i++) {
|
||||
fileSelect->unk_24414[fileSelect->unk_24480][i] = gSaveContext.save.playerData.playerName[i];
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) {
|
||||
fileSelect->unk_24414[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.playerName[i];
|
||||
}
|
||||
|
||||
fileSelect->healthCapacity[fileSelect->unk_24480] = gSaveContext.save.playerData.healthCapacity;
|
||||
fileSelect->health[fileSelect->unk_24480] = gSaveContext.save.playerData.health;
|
||||
fileSelect->unk_24454[fileSelect->unk_24480] = gSaveContext.save.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[fileSelect->unk_24480] = gSaveContext.save.inventory.questItems;
|
||||
fileSelect->healthCapacity[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.healthCapacity;
|
||||
fileSelect->health[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.health;
|
||||
fileSelect->unk_24454[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.defenseHearts;
|
||||
fileSelect->unk_24444[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.questItems;
|
||||
fileSelect->unk_24458[fileSelect->unk_24480] = gSaveContext.save.time;
|
||||
fileSelect->unk_24460[fileSelect->unk_24480] = gSaveContext.save.day;
|
||||
fileSelect->unk_24468[fileSelect->unk_24480] = gSaveContext.save.isOwlSave;
|
||||
fileSelect->rupees[fileSelect->unk_24480] = gSaveContext.save.playerData.rupees;
|
||||
fileSelect->rupees[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
fileSelect->unk_24474[fileSelect->unk_24480] = CUR_UPG_VALUE(UPG_WALLET);
|
||||
|
||||
for (i = 0, maskCount = 0; i < 24; i++) {
|
||||
if (gSaveContext.save.inventory.items[i + 24] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) {
|
||||
maskCount++;
|
||||
}
|
||||
}
|
||||
|
||||
fileSelect->maskCount[fileSelect->unk_24480] = maskCount;
|
||||
fileSelect->heartPieceCount[fileSelect->unk_24480] =
|
||||
(gSaveContext.save.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
(gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C;
|
||||
}
|
||||
|
||||
gSaveContext.save.time = D_801F6AF0;
|
||||
@@ -1714,7 +1717,7 @@ void func_80147198(SramContext* sramCtx) {
|
||||
sramCtx->status = 0;
|
||||
bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE);
|
||||
gSaveContext.save.isOwlSave = false;
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
// flash read to buffer then copy to save context
|
||||
func_80185968(sramCtx->saveBuf, sramCtx->curPage, sramCtx->numPages);
|
||||
Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, offsetof(SaveContext, fileNum));
|
||||
@@ -1726,15 +1729,15 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) {
|
||||
|
||||
gSaveContext.save.isOwlSave = false;
|
||||
|
||||
gSaveContext.save.playerData.newf[0] = '\0';
|
||||
gSaveContext.save.playerData.newf[1] = '\0';
|
||||
gSaveContext.save.playerData.newf[2] = '\0';
|
||||
gSaveContext.save.playerData.newf[3] = '\0';
|
||||
gSaveContext.save.playerData.newf[4] = '\0';
|
||||
gSaveContext.save.playerData.newf[5] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[0] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[1] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[2] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[3] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[4] = '\0';
|
||||
gSaveContext.save.saveInfo.playerData.newf[5] = '\0';
|
||||
|
||||
gSaveContext.save.checksum = 0;
|
||||
gSaveContext.save.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
|
||||
gSaveContext.save.saveInfo.checksum = 0;
|
||||
gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum));
|
||||
|
||||
Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, offsetof(SaveContext, fileNum));
|
||||
func_80146EBC(sramCtx, D_801C6840[fileNum * 2], D_801C6850[fileNum * 2]);
|
||||
@@ -1742,12 +1745,12 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) {
|
||||
|
||||
gSaveContext.save.isOwlSave = true;
|
||||
|
||||
gSaveContext.save.playerData.newf[0] = 'Z';
|
||||
gSaveContext.save.playerData.newf[1] = 'E';
|
||||
gSaveContext.save.playerData.newf[2] = 'L';
|
||||
gSaveContext.save.playerData.newf[3] = 'D';
|
||||
gSaveContext.save.playerData.newf[4] = 'A';
|
||||
gSaveContext.save.playerData.newf[5] = '3';
|
||||
gSaveContext.save.saveInfo.playerData.newf[0] = 'Z';
|
||||
gSaveContext.save.saveInfo.playerData.newf[1] = 'E';
|
||||
gSaveContext.save.saveInfo.playerData.newf[2] = 'L';
|
||||
gSaveContext.save.saveInfo.playerData.newf[3] = 'D';
|
||||
gSaveContext.save.saveInfo.playerData.newf[4] = 'A';
|
||||
gSaveContext.save.saveInfo.playerData.newf[5] = '3';
|
||||
}
|
||||
|
||||
void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2) {
|
||||
|
||||
@@ -187,7 +187,7 @@ void BgKin2Fence_HandleMaskCode(BgKin2Fence* this, PlayState* play) {
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
hitMask = BgKin2Fence_CheckHitMask(this);
|
||||
if (hitMask >= 0) {
|
||||
nextMask = (s8)gSaveContext.save.spiderHouseMaskOrder[this->masksHit];
|
||||
nextMask = (s8)gSaveContext.save.saveInfo.spiderHouseMaskOrder[this->masksHit];
|
||||
if (hitMask == nextMask) {
|
||||
play_sound(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
this->masksHit += 1;
|
||||
|
||||
@@ -83,7 +83,7 @@ void DmChar02_PlaySfxForCutscenes(DmChar02* this, PlayState* play) {
|
||||
void DmChar02_Init(Actor* thisx, PlayState* play) {
|
||||
DmChar02* this = THIS;
|
||||
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
this->animIndex = DMCHAR02_ANIM_HIT_GROUND;
|
||||
this->actor.targetArrowOffset = 3000.0f;
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
|
||||
|
||||
@@ -1052,7 +1052,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
|
||||
R_MOON_CRASH_TIMER_X = 115;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
sCylinderInit.base.colType = COLTYPE_WOOD;
|
||||
this->actionFunc = DmStk_ClockTower_StartIntroCutsceneVersion1;
|
||||
} else {
|
||||
@@ -1402,7 +1402,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
|
||||
|
||||
case 22:
|
||||
this->animIndex = SK_ANIM_PLAY_OCARINA_WHILE_FLOATING;
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
|
||||
}
|
||||
break;
|
||||
@@ -1414,7 +1414,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
|
||||
|
||||
case 24:
|
||||
this->animIndex = SK_ANIM_CALL_DOWN_MOON_START;
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
|
||||
}
|
||||
break;
|
||||
@@ -1425,14 +1425,14 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
|
||||
|
||||
case 26:
|
||||
this->animIndex = SK_ANIM_SMACK_FAIRY_START;
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
|
||||
}
|
||||
break;
|
||||
|
||||
case 27:
|
||||
this->animIndex = SK_ANIM_HIT_BY_BUBBLE;
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -345,7 +345,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) {
|
||||
if (this->unk_166 != 0) {
|
||||
Flags_SetSwitch(play, DOORSHUTTER_GET_7F(&this->actor));
|
||||
if (this->doorType != 5) {
|
||||
gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
gSaveContext.save.saveInfo.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK);
|
||||
} else {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK_B);
|
||||
@@ -368,7 +368,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (this->doorType == 6) {
|
||||
if (gSaveContext.save.playerData.healthCapacity < (DOORSHUTTER_GET_1F(&this->actor) * 0x10)) {
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity < (DOORSHUTTER_GET_1F(&this->actor) * 0x10)) {
|
||||
player->doorType = PLAYER_DOORTYPE_TALKING;
|
||||
this->actor.textId = 0x14FC;
|
||||
}
|
||||
|
||||
@@ -554,28 +554,28 @@ void func_808B9CE8(DoorWarp1* this, PlayState* play) {
|
||||
|
||||
switch (play->sceneId) {
|
||||
case SCENE_MITURIN_BS:
|
||||
gSaveContext.save.unk_ECC[0] =
|
||||
(((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFFFF00) | (((u8)gSaveContext.save.unk_ECC[1]) & 0xFF);
|
||||
gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFFFFFF00) |
|
||||
(((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF);
|
||||
break;
|
||||
|
||||
case SCENE_HAKUGIN_BS:
|
||||
gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFF00FF) |
|
||||
((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 8);
|
||||
gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFFFF00FF) |
|
||||
((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 8);
|
||||
break;
|
||||
|
||||
case SCENE_INISIE_BS:
|
||||
gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFF00FFFF) |
|
||||
((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x10);
|
||||
gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0xFF00FFFF) |
|
||||
((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 0x10);
|
||||
break;
|
||||
|
||||
case SCENE_SEA_BS:
|
||||
gSaveContext.save.unk_ECC[0] = (((void)0, gSaveContext.save.unk_ECC[0]) & 0x00FFFFFF) |
|
||||
((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x18);
|
||||
gSaveContext.save.saveInfo.unk_EA8[0] = (((void)0, gSaveContext.save.saveInfo.unk_EA8[0]) & 0x00FFFFFF) |
|
||||
((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) & 0xFF) << 0x18);
|
||||
break;
|
||||
}
|
||||
|
||||
gSaveContext.save.unk_ECC[1] =
|
||||
(gSaveContext.save.unk_ECC[1] & 0xFFFFFF00) | ((((u8)gSaveContext.save.unk_ECC[1]) + 1) & 0xFF);
|
||||
gSaveContext.save.saveInfo.unk_EA8[1] = (gSaveContext.save.saveInfo.unk_EA8[1] & 0xFFFFFF00) |
|
||||
((((u8)gSaveContext.save.saveInfo.unk_EA8[1]) + 1) & 0xFF);
|
||||
Item_Give(play, func_808B849C(this, play) + (ITEM_REMAINS_ODOLWA - 1));
|
||||
DoorWarp1_SetupAction(this, func_808B9E94);
|
||||
}
|
||||
@@ -658,19 +658,19 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) {
|
||||
|
||||
switch (phi_v0_2) {
|
||||
case 0:
|
||||
phi_a0 = gSaveContext.save.unk_ECC[0] & 0xFF;
|
||||
phi_a0 = gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF00) >> 8;
|
||||
phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF00) >> 8;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF0000) >> 0x10;
|
||||
phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF0000) >> 0x10;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF000000) >> 0x18;
|
||||
phi_a0 = (gSaveContext.save.saveInfo.unk_EA8[0] & 0xFF000000) >> 0x18;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -162,7 +162,7 @@ void ElfMsg6_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
switch (ELFMSG6_GET_F0(&this->actor)) {
|
||||
case 0:
|
||||
if (gSaveContext.save.inventory.items[ITEM_HOOKSHOT] != ITEM_HOOKSHOT) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[ITEM_HOOKSHOT] != ITEM_HOOKSHOT) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ s32 func_80BED208(EnAkindonuts* this) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -322,7 +322,7 @@ s32 func_80BED27C(EnAkindonuts* this) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 200) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 200) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -336,7 +336,7 @@ s32 func_80BED2FC(EnAkindonuts* this) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 40) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 40) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -350,7 +350,7 @@ s32 func_80BED35C(EnAkindonuts* this) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.rupees < 100) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 100) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -305,7 +305,7 @@ void func_809C16DC(EnAob01* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case PLAYER_FORM_HUMAN:
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
this->unk_210 = 0x3524;
|
||||
this->unk_2D2 |= 0x10;
|
||||
} else {
|
||||
@@ -369,7 +369,7 @@ void func_809C16DC(EnAob01* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x3528:
|
||||
if (gSaveContext.save.playerData.rupees < this->unk_434) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_434) {
|
||||
this->unk_210 = 0x3536;
|
||||
this->unk_2D2 |= 0x40;
|
||||
this->unk_43C = 1;
|
||||
@@ -434,7 +434,7 @@ void func_809C1D64(EnAob01* this, PlayState* play) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
this->unk_210 = 0x3524;
|
||||
Message_StartTextbox(play, this->unk_210, &this->actor);
|
||||
@@ -904,7 +904,7 @@ void func_809C2FA0(void) {
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sp44); i++) {
|
||||
gSaveContext.save.weekEventReg[42 + i] = 0;
|
||||
gSaveContext.save.saveInfo.weekEventReg[42 + i] = 0;
|
||||
sp44[i] = 0;
|
||||
}
|
||||
|
||||
@@ -914,8 +914,8 @@ void func_809C2FA0(void) {
|
||||
|
||||
if (i % 2) {
|
||||
sp44[index] |= orig2 << 0x4;
|
||||
gSaveContext.save.weekEventReg[42 + index] =
|
||||
((void)0, gSaveContext.save.weekEventReg[42 + index]) | sp44[index];
|
||||
gSaveContext.save.saveInfo.weekEventReg[42 + index] =
|
||||
((void)0, gSaveContext.save.saveInfo.weekEventReg[42 + index]) | sp44[index];
|
||||
} else {
|
||||
sp44[index] |= orig2;
|
||||
}
|
||||
|
||||
@@ -1614,7 +1614,7 @@ void EnBigslime_AttackPlayerInBigslime(EnBigslime* this, PlayState* play) {
|
||||
if (this->numGekkoMeleeAttacks == 0) {
|
||||
this->numGekkoPosGrabPlayer--;
|
||||
|
||||
if ((gSaveContext.save.playerData.health < 5) || (this->numGekkoPosGrabPlayer == 0)) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health < 5) || (this->numGekkoPosGrabPlayer == 0)) {
|
||||
this->numGekkoPosGrabPlayer = 0;
|
||||
this->gekkoRot.y = this->actor.world.rot.y;
|
||||
this->gekkoPosOffset.x = Math_SinS(this->gekkoRot.y) * -50.0f;
|
||||
|
||||
@@ -173,9 +173,9 @@ void func_809C4BC4(EnBomBowlMan* this, PlayState* play) {
|
||||
func_809C4B50(this);
|
||||
func_809C493C(this, 0, 1.0f);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.bomberCode); i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.bomberCode); i++) {
|
||||
Math_Vec3f_Copy(&sp7C, &this->actor.home.pos);
|
||||
code = gSaveContext.save.bomberCode[i];
|
||||
code = gSaveContext.save.saveInfo.bomberCode[i];
|
||||
if (code == 1) {
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &D_809C61A0[i]);
|
||||
this->unk_2D8[code] = this;
|
||||
|
||||
@@ -220,7 +220,8 @@ void func_80C04D8C(EnBombers2* this, PlayState* play) {
|
||||
s32 correctDigits;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->correctDigitSlots); i++) {
|
||||
if (!(this->correctDigitSlots[i]) && (play->msgCtx.unk12054[i] == gSaveContext.save.bomberCode[i])) {
|
||||
if (!(this->correctDigitSlots[i]) &&
|
||||
(play->msgCtx.unk12054[i] == gSaveContext.save.saveInfo.bomberCode[i])) {
|
||||
this->correctDigitSlots[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -720,12 +720,12 @@ void func_80BFF9B0(EnBomjima* this, PlayState* play) {
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_08);
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_76_10);
|
||||
|
||||
gSaveContext.save.bombersCaughtNum = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[0] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[1] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[2] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[3] = 0;
|
||||
gSaveContext.save.bombersCaughtOrder[4] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtNum = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[0] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[1] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[2] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[3] = 0;
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[4] = 0;
|
||||
|
||||
func_80BFE494(this, 3, 1.0f);
|
||||
this->unk_2C8 = 9;
|
||||
|
||||
@@ -686,11 +686,12 @@ void func_80C02740(EnBomjimb* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
Message_StartTextbox(play, D_80C03230[((void)0, gSaveContext.save.bombersCaughtNum)], &this->actor);
|
||||
gSaveContext.save.bombersCaughtOrder[((void)0, gSaveContext.save.bombersCaughtNum)] = this->unk_2C8 + 1;
|
||||
gSaveContext.save.bombersCaughtNum++;
|
||||
Message_StartTextbox(play, D_80C03230[((void)0, gSaveContext.save.saveInfo.bombersCaughtNum)], &this->actor);
|
||||
gSaveContext.save.saveInfo.bombersCaughtOrder[((void)0, gSaveContext.save.saveInfo.bombersCaughtNum)] =
|
||||
this->unk_2C8 + 1;
|
||||
gSaveContext.save.saveInfo.bombersCaughtNum++;
|
||||
|
||||
if (gSaveContext.save.bombersCaughtNum > 4) {
|
||||
if (gSaveContext.save.saveInfo.bombersCaughtNum > 4) {
|
||||
Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900);
|
||||
} else {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_SY_PIECE_OF_HEART);
|
||||
@@ -761,7 +762,7 @@ void func_80C02A14(EnBomjimb* this, PlayState* play) {
|
||||
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
|
||||
Message_CloseTextbox(play);
|
||||
if ((this->unk_2CA == 8) && (gSaveContext.save.bombersCaughtNum >= 5)) {
|
||||
if ((this->unk_2CA == 8) && (gSaveContext.save.saveInfo.bombersCaughtNum >= 5)) {
|
||||
func_80C02CA4(this, play);
|
||||
} else {
|
||||
if (this->unk_2CA == 8) {
|
||||
|
||||
@@ -426,10 +426,10 @@ void EnDg_UpdateTextId(EnDg* this) {
|
||||
// the range of 0x3538 to 0x3545.
|
||||
if (this->index % 2) {
|
||||
sRacetrackDogInfo[this->index].textId =
|
||||
0x3538 + ((gSaveContext.save.weekEventReg[42 + (this->index / 2)] & 0xF0) >> 4);
|
||||
0x3538 + ((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)] & 0xF0) >> 4);
|
||||
} else {
|
||||
sRacetrackDogInfo[this->index].textId =
|
||||
0x3538 + (gSaveContext.save.weekEventReg[42 + (this->index / 2)] & 0x0F);
|
||||
0x3538 + (gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)] & 0x0F);
|
||||
}
|
||||
} else {
|
||||
Actor_Kill(&this->actor);
|
||||
|
||||
@@ -476,7 +476,7 @@ void func_80866B20(EnDoor* this, PlayState* play) {
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, sAnimations[this->animIndex],
|
||||
(player->stateFlags1 & PLAYER_STATE1_8000000) ? 0.75f : 1.5f);
|
||||
if (this->unk_1A6 != 0) {
|
||||
gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
gSaveContext.save.saveInfo.inventory.dungeonKeys[gSaveContext.mapIndex]--;
|
||||
Flags_SetSwitch(play, this->switchFlag);
|
||||
Actor_PlaySfx(&this->dyna.actor, NA_SE_EV_CHAIN_KEY_UNLOCK);
|
||||
}
|
||||
@@ -499,7 +499,7 @@ void func_80866B20(EnDoor* this, PlayState* play) {
|
||||
player->doorDirection = playerPosRelToDoor.z >= 0.0f ? 1.0f : -1.0f;
|
||||
player->doorActor = &this->dyna.actor;
|
||||
if (this->unk_1A6 != 0) {
|
||||
if (gSaveContext.save.inventory.dungeonKeys[((void)0, gSaveContext.mapIndex)] <= 0) {
|
||||
if (gSaveContext.save.saveInfo.inventory.dungeonKeys[((void)0, gSaveContext.mapIndex)] <= 0) {
|
||||
player->doorType = PLAYER_DOORTYPE_TALKING;
|
||||
this->dyna.actor.textId = 0x1802;
|
||||
} else {
|
||||
|
||||
@@ -355,8 +355,9 @@ void EnElf_Init(Actor* thisx, PlayState* play2) {
|
||||
this->elfMsg = NULL;
|
||||
this->unk_234 = NULL;
|
||||
this->unk_269 = 20;
|
||||
if ((gSaveContext.save.playerData.tatlTimer >= 25800) || (gSaveContext.save.playerData.tatlTimer < 3000)) {
|
||||
gSaveContext.save.playerData.tatlTimer = 0;
|
||||
if ((gSaveContext.save.saveInfo.playerData.tatlTimer >= 25800) ||
|
||||
(gSaveContext.save.saveInfo.playerData.tatlTimer < 3000)) {
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer = 0;
|
||||
}
|
||||
this->unk_266 = QuestHint_GetTatlTextId(play);
|
||||
break;
|
||||
@@ -1455,11 +1456,12 @@ void func_8089010C(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (temp_v0 != this->unk_266) {
|
||||
this->unk_266 = temp_v0;
|
||||
gSaveContext.save.playerData.tatlTimer = 0;
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer = 0;
|
||||
}
|
||||
|
||||
if ((player->tatlTextId == 0) && (player->targetedActor == NULL)) {
|
||||
if ((gSaveContext.save.playerData.tatlTimer >= 600) && (gSaveContext.save.playerData.tatlTimer <= 3000)) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.tatlTimer >= 600) &&
|
||||
(gSaveContext.save.saveInfo.playerData.tatlTimer <= 3000)) {
|
||||
player->tatlTextId = QuestHint_GetTatlTextId(play);
|
||||
}
|
||||
}
|
||||
@@ -1474,7 +1476,7 @@ void func_8089010C(Actor* thisx, PlayState* play) {
|
||||
|
||||
if (thisx->textId == QuestHint_GetTatlTextId(play)) {
|
||||
this->fairyFlags |= 0x80;
|
||||
gSaveContext.save.playerData.tatlTimer = 3001;
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer = 3001;
|
||||
}
|
||||
|
||||
this->fairyFlags |= 0x10;
|
||||
@@ -1505,10 +1507,10 @@ void func_8089010C(Actor* thisx, PlayState* play) {
|
||||
this->actionFunc(this, play);
|
||||
|
||||
if (!Play_InCsMode(play)) {
|
||||
if (gSaveContext.save.playerData.tatlTimer < 25800) {
|
||||
gSaveContext.save.playerData.tatlTimer++;
|
||||
if (gSaveContext.save.saveInfo.playerData.tatlTimer < 25800) {
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer++;
|
||||
} else if (!(this->fairyFlags & 0x80)) {
|
||||
gSaveContext.save.playerData.tatlTimer = 0;
|
||||
gSaveContext.save.saveInfo.playerData.tatlTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,13 +101,13 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) {
|
||||
break;
|
||||
|
||||
case ENELFGRP_2:
|
||||
if (gSaveContext.save.playerData.isDoubleMagicAcquired == true) {
|
||||
if (gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired == true) {
|
||||
func_80A396B0(this, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case ENELFGRP_3:
|
||||
if (gSaveContext.save.playerData.doubleDefense) {
|
||||
if (gSaveContext.save.saveInfo.playerData.doubleDefense) {
|
||||
func_80A396B0(this, 1);
|
||||
}
|
||||
break;
|
||||
@@ -125,7 +125,7 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.textId = (this->unk_147 * 3) + 0x581;
|
||||
} else {
|
||||
this->actionFunc = func_80A3A8F8;
|
||||
if ((gSaveContext.save.weekEventReg[9] & this->unk_146)) {
|
||||
if ((gSaveContext.save.saveInfo.weekEventReg[9] & this->unk_146)) {
|
||||
this->actor.textId = (this->unk_147 * 3) + 0x580;
|
||||
} else {
|
||||
this->actor.textId = (this->unk_147 * 3) + 0x57F;
|
||||
@@ -158,13 +158,13 @@ void EnElfgrp_Init(Actor* thisx, PlayState* play) {
|
||||
func_80A396B0(this, 3);
|
||||
this->unk_14A |= 2;
|
||||
}
|
||||
} else if (gSaveContext.save.playerData.isMagicAcquired == true) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.isMagicAcquired == true) {
|
||||
func_80A396B0(this, 1);
|
||||
}
|
||||
} else {
|
||||
func_80A39DC8(this, play, 24, 0);
|
||||
this->actionFunc = func_80A3A8F8;
|
||||
if ((gSaveContext.save.weekEventReg[9] & this->unk_146)) {
|
||||
if ((gSaveContext.save.saveInfo.weekEventReg[9] & this->unk_146)) {
|
||||
this->actor.textId = 0x580;
|
||||
} else {
|
||||
this->actor.textId = 0x578;
|
||||
@@ -183,7 +183,7 @@ s32 func_80A39BD0(PlayState* play, s32 arg2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (((void)0, gSaveContext.save.inventory.strayFairies[arg2 - 1]) - func_80A39C1C(play, arg2)) + 10;
|
||||
return (((void)0, gSaveContext.save.saveInfo.inventory.strayFairies[arg2 - 1]) - func_80A39C1C(play, arg2)) + 10;
|
||||
}
|
||||
|
||||
s32 func_80A39C1C(PlayState* play, s32 arg1) {
|
||||
@@ -207,13 +207,13 @@ s32 func_80A39C1C(PlayState* play, s32 arg1) {
|
||||
}
|
||||
|
||||
if (arg1 == 0) {
|
||||
if (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1) {
|
||||
if (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1) {
|
||||
return 25;
|
||||
}
|
||||
return 24;
|
||||
}
|
||||
|
||||
temp_v1 = (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 >> (((arg1 - 1) * 5) + 1)) & 0x1F;
|
||||
temp_v1 = (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 >> (((arg1 - 1) * 5) + 1)) & 0x1F;
|
||||
if (temp_v1 < 10) {
|
||||
temp_v1 = 10;
|
||||
} else if (temp_v1 > 25) {
|
||||
@@ -229,13 +229,13 @@ void func_80A39CD4(PlayState* play, s32 arg1, s32 arg2) {
|
||||
|
||||
if (arg1 == 0) {
|
||||
if (arg2 == 25) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 1;
|
||||
} else {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~1;
|
||||
}
|
||||
} else {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~(0x1F << ((arg1 * 5) - 4));
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= arg2 << ((arg1 * 5) - 4);
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~(0x1F << ((arg1 * 5) - 4));
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= arg2 << ((arg1 * 5) - 4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,7 +524,7 @@ void func_80A3A7FC(EnElfgrp* this, PlayState* play) {
|
||||
s32 temp_s0;
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
gSaveContext.save.weekEventReg[9] |= this->unk_146;
|
||||
gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146;
|
||||
this->actionFunc = func_80A3A6F4;
|
||||
temp_s0 = func_80A39BD0(play, this->unk_147);
|
||||
func_80A39DC8(this, play, temp_s0, 1);
|
||||
@@ -544,7 +544,7 @@ void func_80A3A8F8(EnElfgrp* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
gSaveContext.save.weekEventReg[9] |= this->unk_146;
|
||||
gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146;
|
||||
this->actionFunc = func_80A3A6F4;
|
||||
return;
|
||||
}
|
||||
@@ -563,7 +563,7 @@ void func_80A3A8F8(EnElfgrp* this, PlayState* play) {
|
||||
player->stateFlags1 |= PLAYER_STATE1_20000000;
|
||||
Message_StartTextbox(play, this->actor.textId, &this->actor);
|
||||
this->actionFunc = func_80A3A77C;
|
||||
gSaveContext.save.weekEventReg[9] |= this->unk_146;
|
||||
gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146;
|
||||
} else {
|
||||
this->actor.flags |= ACTOR_FLAG_10000;
|
||||
func_800B8614(&this->actor, play, 100.0f);
|
||||
|
||||
@@ -490,10 +490,10 @@ void EnElforg_FreeFloating(EnElforg* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (Map_IsInDungeonOrBossArea(play)) {
|
||||
gSaveContext.save.inventory.strayFairies[gSaveContext.dungeonIndex]++;
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[gSaveContext.dungeonIndex]++;
|
||||
// You found a Stray Fairy!
|
||||
Message_StartTextbox(play, 0x11, NULL);
|
||||
if (gSaveContext.save.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] >= 15) {
|
||||
if (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] >= 15) {
|
||||
Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -835,7 +835,7 @@ void EnFishing_Init(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if (sLinkAge != 1) {
|
||||
// HIGH_SCORE(HS_FISHING) from OoT
|
||||
if (gSaveContext.save.unk_EE4 & 0x1000) {
|
||||
if (gSaveContext.save.saveInfo.unk_EC0 & 0x1000) {
|
||||
D_8090CD08 = 0;
|
||||
} else {
|
||||
D_8090CD08 = 1;
|
||||
@@ -853,18 +853,18 @@ void EnFishing_Init(Actor* thisx, PlayState* play2) {
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 1);
|
||||
|
||||
if (sLinkAge == 1) {
|
||||
if (gSaveContext.save.unk_EE4 & 0x7F) {
|
||||
D_809171CC = gSaveContext.save.unk_EE4 & 0x7F;
|
||||
if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F) {
|
||||
D_809171CC = gSaveContext.save.saveInfo.unk_EC0 & 0x7F;
|
||||
} else {
|
||||
D_809171CC = 40.0f;
|
||||
}
|
||||
} else if (gSaveContext.save.unk_EE4 & 0x7F000000) {
|
||||
D_809171CC = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18;
|
||||
} else if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) {
|
||||
D_809171CC = (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) >> 0x18;
|
||||
} else {
|
||||
D_809171CC = 45.0f;
|
||||
}
|
||||
|
||||
D_809171D1 = (gSaveContext.save.unk_EE4 & 0xFF0000) >> 0x10;
|
||||
D_809171D1 = (gSaveContext.save.saveInfo.unk_EC0 & 0xFF0000) >> 0x10;
|
||||
if ((D_809171D1 & 7) == 7) {
|
||||
play->roomCtx.unk7A[0] = 90;
|
||||
D_809171CA = 1;
|
||||
@@ -2795,8 +2795,8 @@ void func_80903C60(EnFishing* this, u8 arg1) {
|
||||
|
||||
void EnFishing_HandleAquariumDialog(EnFishing* this, PlayState* play) {
|
||||
if (sLinkAge == 1) {
|
||||
if (gSaveContext.save.unk_EE4 & 0x7F) {
|
||||
if (gSaveContext.save.unk_EE4 & 0x80) {
|
||||
if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F) {
|
||||
if (gSaveContext.save.saveInfo.unk_EC0 & 0x80) {
|
||||
this->actor.textId = 0x40B1;
|
||||
} else {
|
||||
this->actor.textId = 0x4089;
|
||||
@@ -2804,8 +2804,8 @@ void EnFishing_HandleAquariumDialog(EnFishing* this, PlayState* play) {
|
||||
} else {
|
||||
this->actor.textId = 0x40AE;
|
||||
}
|
||||
} else if (gSaveContext.save.unk_EE4 & 0x7F000000) {
|
||||
if (gSaveContext.save.unk_EE4 & 0x80000000) {
|
||||
} else if (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) {
|
||||
if (gSaveContext.save.saveInfo.unk_EC0 & 0x80000000) {
|
||||
this->actor.textId = 0x40B1;
|
||||
} else {
|
||||
this->actor.textId = 0x4089;
|
||||
@@ -3745,8 +3745,8 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if ((D_80917272 == 0) && (D_80917274 == 0)) {
|
||||
// Assignment of OoT's D_80B7E086 here removed in MM
|
||||
if (((sLinkAge == 1) && (gSaveContext.save.unk_EE4 & 0x400)) ||
|
||||
((sLinkAge != 1) && (gSaveContext.save.unk_EE4 & 0x800))) {
|
||||
if (((sLinkAge == 1) && (gSaveContext.save.saveInfo.unk_EC0 & 0x400)) ||
|
||||
((sLinkAge != 1) && (gSaveContext.save.saveInfo.unk_EC0 & 0x800))) {
|
||||
// Assignment of OoT's D_80B7A67C here removed in MM, this is now an empty branch
|
||||
}
|
||||
} else {
|
||||
@@ -4685,7 +4685,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
case 0:
|
||||
if (D_809171FC == 0) {
|
||||
if (sLinkAge != 1) {
|
||||
if ((gSaveContext.save.unk_EE4 & 0x100) && !(gSaveContext.save.unk_EE4 & 0x200)) {
|
||||
if ((gSaveContext.save.saveInfo.unk_EC0 & 0x100) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x200)) {
|
||||
this->actor.textId = 0x4093;
|
||||
} else {
|
||||
this->actor.textId = 0x407B;
|
||||
@@ -4703,9 +4703,9 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
if (D_809171FC == 0) {
|
||||
this->unk_154 = 1;
|
||||
if (sLinkAge != 1) {
|
||||
gSaveContext.save.unk_EE4 |= 0x200;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x200;
|
||||
} else {
|
||||
gSaveContext.save.unk_EE4 |= 0x100;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x100;
|
||||
}
|
||||
} else {
|
||||
this->unk_154 = 10;
|
||||
@@ -4721,7 +4721,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees >= 20) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 20) {
|
||||
Rupees_ChangeBy(-20);
|
||||
if (!Rumble_ControllerOneHasRumblePak()) {
|
||||
this->actor.textId = 0x407C;
|
||||
@@ -4788,8 +4788,8 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
D_8090CD04 = 20;
|
||||
this->unk_154 = 0;
|
||||
|
||||
if ((gSaveContext.save.unk_EE4 & 0xFF0000) < 0xFF0000) {
|
||||
gSaveContext.save.unk_EE4 += 0x10000;
|
||||
if ((gSaveContext.save.saveInfo.unk_EC0 & 0xFF0000) < 0xFF0000) {
|
||||
gSaveContext.save.saveInfo.unk_EC0 += 0x10000;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -4898,29 +4898,29 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
if (sLinkAge == 1) {
|
||||
f32 temp;
|
||||
|
||||
gSaveContext.save.unk_EE4 &= 0xFFFFFF00;
|
||||
gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F);
|
||||
temp = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18;
|
||||
gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF00;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F);
|
||||
temp = (gSaveContext.save.saveInfo.unk_EC0 & 0x7F000000) >> 0x18;
|
||||
if (temp < D_809171CC) {
|
||||
gSaveContext.save.unk_EE4 &= 0xFFFFFF;
|
||||
gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18;
|
||||
gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F) << 0x18;
|
||||
|
||||
if (D_809171D2 == 2) {
|
||||
gSaveContext.save.unk_EE4 |= 0x80000000;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x80000000;
|
||||
}
|
||||
}
|
||||
|
||||
if (D_809171D2 == 2) {
|
||||
gSaveContext.save.unk_EE4 |= 0x80;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x80;
|
||||
this->unk_154 = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
gSaveContext.save.unk_EE4 &= 0xFFFFFF;
|
||||
gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18;
|
||||
gSaveContext.save.saveInfo.unk_EC0 &= 0xFFFFFF;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= ((s16)D_809171CC & 0x7F) << 0x18;
|
||||
|
||||
if (D_809171D2 == 2) {
|
||||
gSaveContext.save.unk_EE4 |= 0x80000000;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x80000000;
|
||||
this->unk_154 = 0;
|
||||
break;
|
||||
}
|
||||
@@ -4937,14 +4937,14 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (sLinkAge == 1) {
|
||||
if ((D_809171CC >= 50.0f) && !(gSaveContext.save.unk_EE4 & 0x400)) {
|
||||
gSaveContext.save.unk_EE4 |= 0x400;
|
||||
if ((D_809171CC >= 50.0f) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x400)) {
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x400;
|
||||
getItemId = GI_HEART_PIECE;
|
||||
sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f;
|
||||
}
|
||||
} else {
|
||||
if ((D_809171CC >= 60.0f) && !(gSaveContext.save.unk_EE4 & 0x800)) {
|
||||
gSaveContext.save.unk_EE4 |= 0x800;
|
||||
if ((D_809171CC >= 60.0f) && !(gSaveContext.save.saveInfo.unk_EC0 & 0x800)) {
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x800;
|
||||
getItemId = GI_SKULL_TOKEN;
|
||||
sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f;
|
||||
}
|
||||
@@ -5107,9 +5107,9 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) {
|
||||
}
|
||||
|
||||
if (D_8090CD08 == 0) {
|
||||
gSaveContext.save.unk_EE4 |= 0x1000;
|
||||
gSaveContext.save.saveInfo.unk_EC0 |= 0x1000;
|
||||
} else if (D_8090CD08 == 1) {
|
||||
gSaveContext.save.unk_EE4 &= ~0x1000;
|
||||
gSaveContext.save.saveInfo.unk_EC0 &= ~0x1000;
|
||||
}
|
||||
|
||||
if (D_8090CCFC != 0) {
|
||||
|
||||
@@ -429,7 +429,7 @@ void func_80962588(EnFu* this, PlayState* play) {
|
||||
if (Message_ShouldAdvance(play) && (this->unk_552 == 0x2871)) {
|
||||
if (1) {}
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (gSaveContext.save.playerData.rupees >= 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 10) {
|
||||
func_8019F208();
|
||||
Rupees_ChangeBy(-10);
|
||||
func_80963DE4(this, play);
|
||||
@@ -652,7 +652,7 @@ void func_80962A10(EnFu* this, PlayState* play) {
|
||||
this->unk_546 = 1;
|
||||
}
|
||||
|
||||
if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.isMagicAcquired) {
|
||||
if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.saveInfo.playerData.isMagicAcquired) {
|
||||
Magic_Add(play, MAGIC_FILL_TO_CAPACITY);
|
||||
}
|
||||
|
||||
@@ -1139,7 +1139,7 @@ void func_80963DE4(EnFu* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80963EAC(EnFu* this, PlayState* play) {
|
||||
if (gSaveContext.save.playerData.isMagicAcquired) {
|
||||
if (gSaveContext.save.saveInfo.playerData.isMagicAcquired) {
|
||||
if (this->unk_540 == 1) {
|
||||
Message_StartTextbox(play, 0x2847, &this->actor);
|
||||
this->unk_552 = 0x2847;
|
||||
|
||||
@@ -163,7 +163,7 @@ u16 func_80B0F7FC(EnGb2* this) {
|
||||
return 0x14E4;
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.health > 48) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health > 48) {
|
||||
return 0x14D2;
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ u16 func_80B0F7FC(EnGb2* this) {
|
||||
return 0x14D3;
|
||||
|
||||
case 0x14E4:
|
||||
if (gSaveContext.save.playerData.health > 48) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health > 48) {
|
||||
return 0x14D2;
|
||||
}
|
||||
|
||||
@@ -407,7 +407,7 @@ void func_80B0FFA8(EnGb2* this, PlayState* play) {
|
||||
if (this->unk_26E == 0x14D5) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees < this->unk_288) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_288) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
this->unk_26E = 0x14D7;
|
||||
this->unk_26C |= 2;
|
||||
@@ -505,7 +505,7 @@ void func_80B10344(EnGb2* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (gSaveContext.save.playerData.health < 49) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health < 49) {
|
||||
gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP;
|
||||
SET_EVENTINF(EVENTINF_46);
|
||||
SET_EVENTINF(EVENTINF_45);
|
||||
@@ -575,7 +575,7 @@ void func_80B10634(EnGb2* this, PlayState* play) {
|
||||
} else if ((talkState == TEXT_STATE_CHOICE) && Message_ShouldAdvance(play)) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees < this->unk_288) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_288) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
this->unk_26E = 0x14D7;
|
||||
this->unk_26C |= 2;
|
||||
|
||||
@@ -89,7 +89,7 @@ void EnGinkoMan_Idle(EnGinkoMan* this, PlayState* play) {
|
||||
|
||||
EnGinkoMan_SwitchAnimation(this, play);
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) {
|
||||
if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING);
|
||||
Message_StartTextbox(play, 0x44C, &this->actor);
|
||||
this->curTextId = 0x44C; // would you like to make an account
|
||||
@@ -153,7 +153,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING);
|
||||
}
|
||||
|
||||
play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF;
|
||||
play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF;
|
||||
Message_StartTextbox(play, 0x45A, &this->actor);
|
||||
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
|
||||
}
|
||||
@@ -164,22 +164,22 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) {
|
||||
this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees"
|
||||
break;
|
||||
case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!"
|
||||
if (((gSaveContext.save.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) &&
|
||||
if (((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) &&
|
||||
!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_40)) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_59_40);
|
||||
Message_StartTextbox(play, 0x45B, &this->actor);
|
||||
this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?!
|
||||
} else if (((gSaveContext.save.bankRupees & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) &&
|
||||
!CHECK_WEEKEVENTREG(WEEKEVENTREG_59_80)) {
|
||||
} else if (((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 1000) &&
|
||||
((this->previousBankValue) < 1000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_59_80)) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_59_80);
|
||||
Message_StartTextbox(play, 0x45C, &this->actor);
|
||||
this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?!
|
||||
} else if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) {
|
||||
} else if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) {
|
||||
if ((this->previousBankValue < 5000) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_60_01)) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_60_01);
|
||||
Message_StartTextbox(play, 0x45D, &this->actor);
|
||||
this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?!
|
||||
} else if (this->previousBankValue < (s16)(gSaveContext.save.bankRupees & 0xFFFF)) {
|
||||
} else if (this->previousBankValue < (s16)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF)) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING);
|
||||
Message_StartTextbox(play, 0x45E, &this->actor);
|
||||
this->curTextId =
|
||||
@@ -221,7 +221,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) {
|
||||
break;
|
||||
case 0x465: // "There! Now I'll know you when I see you!"
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING);
|
||||
play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF;
|
||||
play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF;
|
||||
Message_StartTextbox(play, 0x45A, &this->actor);
|
||||
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
|
||||
break;
|
||||
@@ -237,10 +237,10 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) {
|
||||
case 0x46C: // "Ah, yes...[Link], right? If I remember, you're the little guy who deposited [rupees]."
|
||||
case 0x47E: // "Your deposits total [rupees]."
|
||||
if (this->choiceDepositWithdrawl == GINKOMAN_CHOICE_DEPOSIT) {
|
||||
if ((u32)(gSaveContext.save.bankRupees & 0xFFFF) >= 5000) {
|
||||
if ((u32)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) {
|
||||
Message_StartTextbox(play, 0x45F, &this->actor);
|
||||
this->curTextId = 0x45F; // "Excuuuse me! But I can't take anymore deposits!
|
||||
} else if (gSaveContext.save.playerData.rupees == 0) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees == 0) {
|
||||
Message_StartTextbox(play, 0x458, &this->actor);
|
||||
this->curTextId =
|
||||
0x458; // "Hmm...You play mean jokes, little guy! You haven't even got a single Rupee!
|
||||
@@ -288,12 +288,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, PlayState* play) {
|
||||
case 0x473: // Use it wisely...
|
||||
case 0x474: // "Aw, you're taking out all that? If you spend it like that, it'll all be gone before you know
|
||||
// it!"
|
||||
if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) {
|
||||
if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) {
|
||||
Message_StartTextbox(play, 0x478, &this->actor);
|
||||
// "Look, little guy, all the Rupees you deposited are gone, so you can't use that stamp anymore."
|
||||
this->curTextId = 0x478;
|
||||
} else {
|
||||
play->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF;
|
||||
play->msgCtx.bankRupees = gSaveContext.save.saveInfo.bankRupees & 0xFFFF;
|
||||
Message_StartTextbox(play, 0x45A, &this->actor);
|
||||
this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!"
|
||||
}
|
||||
@@ -319,12 +319,12 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) {
|
||||
switch (this->curTextId) {
|
||||
case 0x44E: // "...So, what'll it be?
|
||||
if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) {
|
||||
if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) {
|
||||
if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) >= 5000) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_StartTextbox(play, 0x45F, &this->actor);
|
||||
this->curTextId = 0x45F; // bank full, cannot accept more
|
||||
} else {
|
||||
if (gSaveContext.save.playerData.rupees > 0) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees > 0) {
|
||||
func_8019F208();
|
||||
Message_StartTextbox(play, 0x44F, &this->actor);
|
||||
this->curTextId = 0x44F; // "All right! so..."
|
||||
@@ -342,7 +342,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) {
|
||||
break;
|
||||
case 0x452: // Really? are you really depositing rupees?
|
||||
if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) {
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.bankRupeesSelected) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.bankRupeesSelected) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING);
|
||||
Message_StartTextbox(play, 0x459, &this->actor);
|
||||
@@ -361,20 +361,20 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) {
|
||||
this->curTextId = 0x453; // That's it? That aint nothing at all
|
||||
}
|
||||
|
||||
if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) {
|
||||
if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) {
|
||||
this->isNewAccount = true;
|
||||
}
|
||||
|
||||
Rupees_ChangeBy(-play->msgCtx.bankRupeesSelected);
|
||||
this->previousBankValue = gSaveContext.save.bankRupees & 0xFFFF;
|
||||
gSaveContext.save.bankRupees =
|
||||
((gSaveContext.save.bankRupees & 0xFFFF) + play->msgCtx.bankRupeesSelected) |
|
||||
(gSaveContext.save.bankRupees & 0xFFFF0000);
|
||||
this->previousBankValue = gSaveContext.save.saveInfo.bankRupees & 0xFFFF;
|
||||
gSaveContext.save.saveInfo.bankRupees =
|
||||
((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) + play->msgCtx.bankRupeesSelected) |
|
||||
(gSaveContext.save.saveInfo.bankRupees & 0xFFFF0000);
|
||||
}
|
||||
} else { // GINKOMAN_CHOICE_NO
|
||||
func_8019F230();
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING);
|
||||
if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) {
|
||||
if ((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) == 0) {
|
||||
Message_StartTextbox(play, 0x456, &this->actor);
|
||||
this->curTextId = 0x456; // Is that so? think about it
|
||||
} else {
|
||||
@@ -403,14 +403,14 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) {
|
||||
break;
|
||||
case 0x471: // Are you really withdrawling [selected rupees]?
|
||||
if (play->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) {
|
||||
if ((s32)((gSaveContext.save.bankRupees & 0xFFFF)) <
|
||||
if ((s32)((gSaveContext.save.saveInfo.bankRupees & 0xFFFF)) <
|
||||
((s32)(play->msgCtx.bankRupeesSelected + this->serviceFee))) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_LEGSMACKING);
|
||||
Message_StartTextbox(play, 0x476, &this->actor);
|
||||
this->curTextId = 0x476; // you dont have enough deposited to withdrawl
|
||||
} else if (CUR_CAPACITY(UPG_WALLET) <
|
||||
(play->msgCtx.bankRupeesSelected + gSaveContext.save.playerData.rupees)) {
|
||||
(play->msgCtx.bankRupeesSelected + gSaveContext.save.saveInfo.playerData.rupees)) {
|
||||
// check if wallet is big enough
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_StartTextbox(play, 0x475, &this->actor);
|
||||
@@ -428,11 +428,11 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, PlayState* play) {
|
||||
this->curTextId = 0x472; // It's a waste to take out such a tiny bit
|
||||
}
|
||||
|
||||
this->previousBankValue = (s16)(gSaveContext.save.bankRupees & 0xFFFF);
|
||||
gSaveContext.save.bankRupees =
|
||||
(((gSaveContext.save.bankRupees & 0xFFFF) - play->msgCtx.bankRupeesSelected) -
|
||||
this->previousBankValue = (s16)(gSaveContext.save.saveInfo.bankRupees & 0xFFFF);
|
||||
gSaveContext.save.saveInfo.bankRupees =
|
||||
(((gSaveContext.save.saveInfo.bankRupees & 0xFFFF) - play->msgCtx.bankRupeesSelected) -
|
||||
this->serviceFee) |
|
||||
(gSaveContext.save.bankRupees & 0xFFFF0000);
|
||||
(gSaveContext.save.saveInfo.bankRupees & 0xFFFF0000);
|
||||
Rupees_ChangeBy(play->msgCtx.bankRupeesSelected);
|
||||
}
|
||||
} else {
|
||||
@@ -591,7 +591,7 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, PlayState* play) {
|
||||
break;
|
||||
case 0x469: // "Excuse me, but let me take a look at you..."
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, GINKO_ANIM_SITTING);
|
||||
play->msgCtx.bankRupees = (gSaveContext.save.bankRupees & 0xFFFF);
|
||||
play->msgCtx.bankRupees = (gSaveContext.save.saveInfo.bankRupees & 0xFFFF);
|
||||
if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == true)) {
|
||||
Message_StartTextbox(play, 0x46C, &this->actor);
|
||||
this->curTextId = 0x46C; // "Ah, yes...[Link], right?
|
||||
|
||||
@@ -188,7 +188,7 @@ s32 EnGirlA_CanBuyPotionRed(PlayState* play, EnGirlA* this) {
|
||||
if (!Inventory_HasEmptyBottle()) {
|
||||
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -198,7 +198,7 @@ s32 EnGirlA_CanBuyPotionGreen(PlayState* play, EnGirlA* this) {
|
||||
if (!Inventory_HasEmptyBottle()) {
|
||||
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -214,7 +214,7 @@ s32 EnGirlA_CanBuyPotionBlue(PlayState* play, EnGirlA* this) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_53_10)) {
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -227,7 +227,7 @@ s32 EnGirlA_CanBuyArrows(PlayState* play, EnGirlA* this) {
|
||||
if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) {
|
||||
return CANBUY_RESULT_NO_ROOM_2;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -237,7 +237,7 @@ s32 EnGirlA_CanBuyNuts(PlayState* play, EnGirlA* this) {
|
||||
if (CUR_CAPACITY(UPG_NUTS) != 0 && CUR_CAPACITY(UPG_NUTS) <= AMMO(ITEM_NUT)) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) {
|
||||
@@ -250,7 +250,7 @@ s32 EnGirlA_CanBuyShieldHero(PlayState* play, EnGirlA* this) {
|
||||
if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
@@ -260,7 +260,7 @@ s32 EnGirlA_CanBuyStick(PlayState* play, EnGirlA* this) {
|
||||
if (CUR_CAPACITY(UPG_STICKS) != 0 && AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS)) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) {
|
||||
@@ -270,7 +270,7 @@ s32 EnGirlA_CanBuyStick(PlayState* play, EnGirlA* this) {
|
||||
}
|
||||
|
||||
s32 EnGirlA_CanBuyMaskAllNight(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -280,7 +280,7 @@ s32 EnGirlA_CanBuyBombBagCuriosityShop(PlayState* play, EnGirlA* this) {
|
||||
if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) >= 2) {
|
||||
return CANBUY_RESULT_CANNOT_GET_NOW;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
@@ -293,7 +293,7 @@ s32 EnGirlA_CanBuyBombBag20BombShop(PlayState* play, EnGirlA* this) {
|
||||
if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) >= 2) {
|
||||
return CANBUY_RESULT_HAVE_BETTER;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
@@ -306,7 +306,7 @@ s32 EnGirlA_CanBuyBombBag30BombShop(PlayState* play, EnGirlA* this) {
|
||||
if (GET_CUR_UPG_VALUE(UPG_BOMB_BAG) == 3) {
|
||||
return CANBUY_RESULT_HAVE_BETTER;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
@@ -319,7 +319,7 @@ s32 EnGirlA_CanBuyBombchus(PlayState* play, EnGirlA* this) {
|
||||
if (AMMO(ITEM_BOMBCHU) >= CUR_CAPACITY(UPG_BOMB_BAG)) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) {
|
||||
@@ -335,21 +335,21 @@ s32 EnGirlA_CanBuyBombs(PlayState* play, EnGirlA* this) {
|
||||
if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
}
|
||||
|
||||
s32 EnGirlA_CanBuyBottleStolen(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
}
|
||||
|
||||
s32 EnGirlA_CanBuySword(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
@@ -359,7 +359,7 @@ s32 EnGirlA_CanBuyShieldMirror(PlayState* play, EnGirlA* this) {
|
||||
if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) {
|
||||
return CANBUY_RESULT_NO_ROOM;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_1;
|
||||
@@ -369,7 +369,7 @@ s32 EnGirlA_CanBuyFairy(PlayState* play, EnGirlA* this) {
|
||||
if (!Inventory_HasEmptyBottle()) {
|
||||
return CANBUY_RESULT_NEED_EMPTY_BOTTLE;
|
||||
}
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
return CANBUY_RESULT_NEED_RUPEES;
|
||||
}
|
||||
return CANBUY_RESULT_SUCCESS_2;
|
||||
|
||||
@@ -112,7 +112,7 @@ s8 func_80997A90(s16 arg0, s16 arg1) {
|
||||
if ((arg0 == 0) || ((arg0 != 1) && (arg0 != 2) && (arg0 == 3))) {
|
||||
phi_v1 = 0;
|
||||
} else {
|
||||
phi_v1 = (gSaveContext.save.unk_EC4 >> (arg1 * 3)) & 7;
|
||||
phi_v1 = (gSaveContext.save.saveInfo.unk_EA0 >> (arg1 * 3)) & 7;
|
||||
}
|
||||
return phi_v1;
|
||||
}
|
||||
@@ -388,8 +388,8 @@ void func_809985B8(EnGs* this, PlayState* play) {
|
||||
Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos);
|
||||
Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos);
|
||||
this->unk_200 = 0.0f;
|
||||
gSaveContext.save.unk_EC4 = ((u32)gSaveContext.save.unk_EC4 & ~(7 << (this->unk_198 * 3))) |
|
||||
((this->unk_194 & 7) << (this->unk_198 * 3));
|
||||
gSaveContext.save.saveInfo.unk_EA0 = ((u32)gSaveContext.save.saveInfo.unk_EA0 & ~(7 << (this->unk_198 * 3))) |
|
||||
((this->unk_194 & 7) << (this->unk_198 * 3));
|
||||
gossipStone = NULL;
|
||||
|
||||
do {
|
||||
@@ -450,7 +450,7 @@ void func_8099874C(EnGs* this, PlayState* play) {
|
||||
phi_v0 = 1;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (((gSaveContext.save.unk_EC4 >> (i * 3)) & 7) != (u32)this->unk_194) {
|
||||
if (((gSaveContext.save.saveInfo.unk_EA0 >> (i * 3)) & 7) != (u32)this->unk_194) {
|
||||
phi_v0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -576,7 +576,7 @@ s32 func_808F4150(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx)
|
||||
|
||||
if (msgCtx->choiceIndex == 0) {
|
||||
func_8019F208();
|
||||
if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
Rupees_ChangeBy(-play->msgCtx.unk1206C);
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) {
|
||||
func_808F4108(this, play, 0x3474);
|
||||
@@ -602,7 +602,7 @@ s32 func_808F4270(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx,
|
||||
|
||||
if (msgCtx->choiceIndex == 0) {
|
||||
func_8019F208();
|
||||
if (gSaveContext.save.playerData.rupees >= fee) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= fee) {
|
||||
Rupees_ChangeBy(-fee);
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_57_01)) {
|
||||
if (arg4 != 0) {
|
||||
@@ -747,7 +747,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) {
|
||||
case 0x3466:
|
||||
if (msgCtx->choiceIndex == 0) {
|
||||
func_8019F208();
|
||||
if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (Inventory_HasEmptyBottle()) {
|
||||
this->actionFunc = func_808F3C40;
|
||||
Actor_OfferGetItem(&this->actor, play, GI_MILK, 500.0f, 100.0f);
|
||||
@@ -999,7 +999,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) {
|
||||
case 0x3490:
|
||||
if (msgCtx->choiceIndex == 0) {
|
||||
func_8019F208();
|
||||
if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (Inventory_HasEmptyBottle()) {
|
||||
this->actionFunc = func_808F3C40;
|
||||
Actor_OfferGetItem(&this->actor, play, GI_MILK, 500.0f, 100.0f);
|
||||
|
||||
@@ -409,7 +409,7 @@ void func_80C14610(EnJgameTsn* this, PlayState* play) {
|
||||
void func_80C14684(EnJgameTsn* this, PlayState* play) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (gSaveContext.save.playerData.rupees >= 20) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 20) {
|
||||
Message_StartTextbox(play, 0x109E, &this->actor);
|
||||
this->unk_300 = 0x109E;
|
||||
Rupees_ChangeBy(-20);
|
||||
|
||||
@@ -1764,14 +1764,14 @@ void func_80B89A08(EnKaizoku* this, PlayState* play) {
|
||||
Vec3f sp58;
|
||||
s32 i;
|
||||
|
||||
if (gSaveContext.save.playerData.health <= 0x10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.health <= 0x10) {
|
||||
this->swordCollider.info.toucher.damage = 0;
|
||||
} else {
|
||||
this->swordCollider.info.toucher.damage = 4;
|
||||
}
|
||||
|
||||
if (!(this->swordCollider.base.atFlags & AT_BOUNCED) && (this->swordCollider.base.atFlags & AT_HIT)) {
|
||||
if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) {
|
||||
this->unk_2D0 = 2;
|
||||
this->subCamId = 0;
|
||||
this->picto.actor.flags |= ACTOR_FLAG_100000;
|
||||
@@ -1788,7 +1788,7 @@ void func_80B89A08(EnKaizoku* this, PlayState* play) {
|
||||
} else if ((this->action == KAIZOKU_ACTION_11) && (this->swordCollider.base.at == &GET_PLAYER(play)->actor)) {
|
||||
func_800B8D98(play, &this->picto.actor, 3.0f, this->picto.actor.yawTowardsPlayer, 1.0f);
|
||||
Health_ChangeBy(play, -0xC);
|
||||
if ((gSaveContext.save.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) {
|
||||
if ((gSaveContext.save.saveInfo.playerData.health <= 0x10) && (this->action != KAIZOKU_ACTION_16)) {
|
||||
Health_ChangeBy(play, 0x10);
|
||||
this->unk_2D0 = 2;
|
||||
this->subCamId = 0;
|
||||
|
||||
@@ -71,12 +71,12 @@ void EnKbt_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 func_80B33E64(PlayState* play) {
|
||||
return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1;
|
||||
return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1;
|
||||
}
|
||||
|
||||
s32 func_80B33E8C(PlayState* play) {
|
||||
if ((CURRENT_DAY == 3) ||
|
||||
((CURRENT_DAY == 2) && (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 2))) {
|
||||
((CURRENT_DAY == 2) && (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 2))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -224,7 +224,7 @@ void func_80B26758(EnKendoJs* this, PlayState* play) {
|
||||
Message_StartTextbox(play, 0x272C, &this->actor);
|
||||
this->unk_288 = 0x272C;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2);
|
||||
} else if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_StartTextbox(play, 0x2718, &this->actor);
|
||||
this->unk_288 = 0x2718;
|
||||
@@ -242,7 +242,7 @@ void func_80B26758(EnKendoJs* this, PlayState* play) {
|
||||
Message_StartTextbox(play, 0x272C, &this->actor);
|
||||
this->unk_288 = 0x272C;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2);
|
||||
} else if (gSaveContext.save.playerData.rupees < play->msgCtx.unk12070) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk12070) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_StartTextbox(play, 0x2718, &this->actor);
|
||||
this->unk_288 = 0x2718;
|
||||
|
||||
@@ -151,33 +151,33 @@ ObjIcePoly* EnKgy_FindIceBlock(PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80B40C74(PlayState* play) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 1;
|
||||
if (CURRENT_DAY == 1) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 2;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 2;
|
||||
} else {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~2;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~2;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80B40D00(PlayState* play) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= 4;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= 4;
|
||||
}
|
||||
|
||||
void func_80B40D30(PlayState* play) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~7;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~7;
|
||||
}
|
||||
|
||||
s32 func_80B40D64(PlayState* play) {
|
||||
return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 1;
|
||||
return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 1;
|
||||
}
|
||||
|
||||
s32 func_80B40D8C(PlayState* play) {
|
||||
return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 4;
|
||||
return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 4;
|
||||
}
|
||||
|
||||
s32 func_80B40DB4(PlayState* play) {
|
||||
if ((CURRENT_DAY == 3) ||
|
||||
((CURRENT_DAY == 2) && (gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 2))) {
|
||||
((CURRENT_DAY == 2) && (gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 2))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -621,7 +621,7 @@ void func_80B41E18(EnKgy* this, PlayState* play) {
|
||||
case 0xC3B:
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
func_80B40E74(this, play, 0xC3F);
|
||||
} else {
|
||||
|
||||
@@ -46,13 +46,13 @@ ActorInit En_Kujiya_InitVars = {
|
||||
(ActorFunc)EnKujiya_Draw,
|
||||
};
|
||||
|
||||
#define CHECK_LOTTERY_NUMBERS \
|
||||
(((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][0]) == \
|
||||
((((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF00) >> 8)) && \
|
||||
((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][1]) == \
|
||||
((((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF0) >> 4)) && \
|
||||
((u32)((void)0, gSaveContext.save.lotteryCodes[CURRENT_DAY - 1][2]) == \
|
||||
(((void)0, gSaveContext.save.lotteryCodeGuess & 0xFFFF) & 0xF)))
|
||||
#define CHECK_LOTTERY_NUMBERS \
|
||||
(((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][0]) == \
|
||||
((((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF00) >> 8)) && \
|
||||
((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][1]) == \
|
||||
((((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF0) >> 4)) && \
|
||||
((u32)((void)0, gSaveContext.save.saveInfo.lotteryCodes[CURRENT_DAY - 1][2]) == \
|
||||
(((void)0, gSaveContext.save.saveInfo.lotteryCodeGuess & 0xFFFF) & 0xF)))
|
||||
|
||||
void EnKujiya_Init(Actor* thisx, PlayState* play) {
|
||||
EnKujiya* this = THIS;
|
||||
@@ -111,7 +111,7 @@ void EnKujiya_Wait(EnKujiya* this, PlayState* play) {
|
||||
void EnKujiya_HandlePlayerChoice(EnKujiya* this, PlayState* play) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
if (play->msgCtx.choiceIndex == 0) { // Buy
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_StartTextbox(play, 0x2B62, &this->actor);
|
||||
this->textId = 0x2B62; // Not enough Rupees
|
||||
|
||||
@@ -393,7 +393,7 @@ void func_80AEA1A0(EnLiftNuts* this, PlayState* play) {
|
||||
}
|
||||
} else {
|
||||
if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) >=
|
||||
gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < 0x2EE0) {
|
||||
Message_StartTextbox(play, 0x27F9, &this->actor);
|
||||
this->textId = 0x27F9;
|
||||
@@ -452,7 +452,7 @@ void func_80AEA7A4(EnLiftNuts* this, PlayState* play) {
|
||||
switch (this->textId) {
|
||||
case 0x27E2:
|
||||
if (play->msgCtx.choiceIndex == 0) { // Yes
|
||||
if (gSaveContext.save.playerData.rupees >= 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 10) {
|
||||
func_8019F208();
|
||||
Message_StartTextbox(play, 0x27E5, &this->actor);
|
||||
this->textId = 0x27E5;
|
||||
@@ -784,7 +784,7 @@ void func_80AEB294(EnLiftNuts* this, PlayState* play) {
|
||||
player->stateFlags1 |= PLAYER_STATE1_20;
|
||||
|
||||
if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) <
|
||||
gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
Flags_SetSwitch(play, 0x40);
|
||||
}
|
||||
Flags_SetSwitch(play, 0x41);
|
||||
@@ -804,7 +804,7 @@ void func_80AEB428(EnLiftNuts* this, PlayState* play) {
|
||||
|
||||
if (this->unk_354 == 10) {
|
||||
if (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]) >
|
||||
gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
gSaveContext.save.saveInfo.dekuPlaygroundHighScores[CURRENT_DAY - 1]) {
|
||||
Message_StartTextbox(play, 0x27EA, &this->actor);
|
||||
this->textId = 0x27EA;
|
||||
} else if (*this->ptr_1EC == 300) {
|
||||
|
||||
@@ -129,7 +129,7 @@ void EnMThunder_Init(Actor* thisx, PlayState* play) {
|
||||
this->isCharging = false;
|
||||
|
||||
if (player->stateFlags2 & PLAYER_STATE2_20000) {
|
||||
if (!gSaveContext.save.playerData.isMagicAcquired || (gSaveContext.magicState != MAGIC_STATE_IDLE) ||
|
||||
if (!gSaveContext.save.saveInfo.playerData.isMagicAcquired || (gSaveContext.magicState != MAGIC_STATE_IDLE) ||
|
||||
((ENMTHUNDER_GET_MAGIC_COST(&this->actor) != 0) &&
|
||||
!Magic_Consume(play, ENMTHUNDER_GET_MAGIC_COST(&this->actor), MAGIC_CONSUME_NOW))) {
|
||||
AudioSfx_PlaySfx(NA_SE_IT_ROLLING_CUT, &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
|
||||
@@ -907,9 +907,9 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) {
|
||||
this->textId = 0x336D;
|
||||
} else {
|
||||
time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2];
|
||||
if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) {
|
||||
if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) {
|
||||
// [Score] New record!
|
||||
gSaveContext.save.horseBackBalloonHighScore = time;
|
||||
gSaveContext.save.saveInfo.horseBackBalloonHighScore = time;
|
||||
EnMa4_SetFaceExpression(this, 0, 3);
|
||||
Message_StartTextbox(play, 0x3350, &this->actor);
|
||||
this->textId = 0x3350;
|
||||
@@ -951,8 +951,8 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) {
|
||||
this->textId = 0x3356;
|
||||
} else {
|
||||
time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2];
|
||||
if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) {
|
||||
gSaveContext.save.horseBackBalloonHighScore = time;
|
||||
if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) {
|
||||
gSaveContext.save.saveInfo.horseBackBalloonHighScore = time;
|
||||
EnMa4_SetFaceExpression(this, 0, 3);
|
||||
Message_StartTextbox(play, 0x3350, &this->actor);
|
||||
this->textId = 0x3350;
|
||||
@@ -978,9 +978,9 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) {
|
||||
this->textId = 0x3356;
|
||||
} else {
|
||||
time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2];
|
||||
if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) {
|
||||
if ((s32)time < (s32)gSaveContext.save.saveInfo.horseBackBalloonHighScore) {
|
||||
// New record
|
||||
gSaveContext.save.horseBackBalloonHighScore = time;
|
||||
gSaveContext.save.saveInfo.horseBackBalloonHighScore = time;
|
||||
Message_StartTextbox(play, 0x335D, &this->actor);
|
||||
this->textId = 0x335D;
|
||||
} else {
|
||||
|
||||
@@ -120,7 +120,7 @@ void EnMk_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 func_80959524(PlayState* play) {
|
||||
return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 7;
|
||||
return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 7;
|
||||
}
|
||||
|
||||
void func_8095954C(EnMk* this, PlayState* play) {
|
||||
|
||||
@@ -148,7 +148,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) {
|
||||
case 0x278E:
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (this->unk_2B2 & 0x20) {
|
||||
if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
func_8019F208();
|
||||
Message_StartTextbox(play, 0x2790, &this->actor);
|
||||
this->unk_2B4 = 0x2790;
|
||||
@@ -174,7 +174,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) {
|
||||
|
||||
case 0x279A:
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (gSaveContext.save.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= play->msgCtx.unk1206C) {
|
||||
func_8019F208();
|
||||
Message_StartTextbox(play, 0x2790, &this->actor);
|
||||
this->unk_2B4 = 0x2790;
|
||||
|
||||
@@ -83,7 +83,7 @@ void EnMs_Destroy(Actor* thisx, PlayState* play) {
|
||||
void EnMs_Wait(EnMs* this, PlayState* play) {
|
||||
s16 yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
if (gSaveContext.save.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) {
|
||||
this->actor.textId = 0x92E; // "[...] You're the first customer [...]"
|
||||
} else {
|
||||
this->actor.textId = 0x932; // "[...] So you liked my Magic Beans [...]"
|
||||
@@ -118,7 +118,7 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
Message_CloseTextbox(play);
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
Message_ContinueTextbox(play, 0x935); // "[...] You don't have enough Rupees."
|
||||
} else if (AMMO(ITEM_MAGIC_BEANS) >= 20) {
|
||||
|
||||
@@ -81,7 +81,7 @@ void func_8093E518(EnOkarinaTag* this, PlayState* play) {
|
||||
var_v1 = this->unk14A;
|
||||
if (var_v1 == 6) {
|
||||
var_v1 = 0xA;
|
||||
if (gSaveContext.save.unk_F65 == 0) {
|
||||
if (gSaveContext.save.saveInfo.unk_F41 == 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,10 +443,11 @@ s32 EnOsn_GetInitialMaskText(EnOsn* this, PlayState* play) {
|
||||
s32 EnOsn_GetInitialText(EnOsn* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) && CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) {
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) &&
|
||||
CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) {
|
||||
if (this->stateFlags & OSN_STATE_SPECIAL_CONVERSTATION) {
|
||||
this->stateFlags |= OSN_STATE_END_CONVERSATION;
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) &&
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) &&
|
||||
(INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) {
|
||||
if ((gSaveContext.save.day == 3) && (gSaveContext.save.time >= CLOCK_TIME(5, 0)) &&
|
||||
(gSaveContext.save.time < CLOCK_TIME(6, 0))) {
|
||||
@@ -692,11 +693,11 @@ void EnOsn_HandleConversation(EnOsn* this, PlayState* play) {
|
||||
|
||||
void EnOsn_InitCutscene(EnOsn* this) {
|
||||
this->cutscene = this->actor.cutscene;
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) ||
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) ||
|
||||
(INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) {
|
||||
this->cutscene = ActorCutscene_GetAdditionalCutscene(this->cutscene);
|
||||
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) ||
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) ||
|
||||
(INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU)) {
|
||||
this->cutscene = ActorCutscene_GetAdditionalCutscene(this->cutscene);
|
||||
}
|
||||
@@ -719,7 +720,8 @@ void EnOsn_ChooseAction(EnOsn* this, PlayState* play) {
|
||||
void EnOsn_Idle(EnOsn* this, PlayState* play) {
|
||||
s16 yaw = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] != ITEM_NONE) && !CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) {
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] != ITEM_NONE) &&
|
||||
!CHECK_QUEST_ITEM(QUEST_SONG_HEALING)) {
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
this->actionFunc = EnOsn_StartCutscene;
|
||||
} else if (((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) && (yaw < 0x4000) &&
|
||||
|
||||
@@ -157,7 +157,7 @@ void EnOwl_Init(Actor* thisx, PlayState* play) {
|
||||
break;
|
||||
|
||||
case ENOWL_GET_TYPE_2:
|
||||
if (gSaveContext.save.inventory.items[ITEM_LENS] == ITEM_LENS) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[ITEM_LENS] == ITEM_LENS) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -443,9 +443,10 @@ void EnRacedog_UpdateTextId(EnRacedog* this) {
|
||||
// range of 0x3539 to 0x3546.
|
||||
if (this->index % 2) {
|
||||
sDogInfo[this->index].textId =
|
||||
(((gSaveContext.save.weekEventReg[42 + (this->index / 2)]) & 0xF0) >> 4) + 0x3539;
|
||||
(((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)]) & 0xF0) >> 4) + 0x3539;
|
||||
} else {
|
||||
sDogInfo[this->index].textId = ((gSaveContext.save.weekEventReg[42 + (this->index / 2)]) & 0x0F) + 0x3539;
|
||||
sDogInfo[this->index].textId =
|
||||
((gSaveContext.save.saveInfo.weekEventReg[42 + (this->index / 2)]) & 0x0F) + 0x3539;
|
||||
}
|
||||
|
||||
// As a sanity check, this makes sure the text ID is something in the expected range of 0x3539 to 0x3546.
|
||||
|
||||
@@ -701,7 +701,7 @@ u16 EnSGoro_BombshopGoron_NextTextId(EnSGoro* this, PlayState* play) {
|
||||
return 0x673;
|
||||
}
|
||||
this->powderKegPrice = play->msgCtx.unk1206C;
|
||||
if (gSaveContext.save.playerData.rupees < this->powderKegPrice) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < this->powderKegPrice) {
|
||||
this->actionFlags |= EN_S_GORO_ACTIONFLAG_LASTMESSAGE;
|
||||
this->actionFlags |= EN_S_GORO_ACTIONFLAG_TIRED;
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
|
||||
@@ -334,7 +334,7 @@ void func_80BCB6D0(EnScopenuts* this, PlayState* play) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
case 0:
|
||||
if (gSaveContext.save.playerData.rupees < this->unk_358) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < this->unk_358) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
this->unk_33C = 0x1636;
|
||||
this->unk_328 |= 1;
|
||||
@@ -684,7 +684,8 @@ void EnScopenuts_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
EnScopenuts* this = THIS;
|
||||
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40) && (gSaveContext.save.inventory.items[ITEM_OCARINA] == ITEM_NONE)) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_74_40) &&
|
||||
(gSaveContext.save.saveInfo.inventory.items[ITEM_OCARINA] == ITEM_NONE)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ void EnSekihi_Init(Actor* thisx, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((params == SEKIHI_TYPE_4) && (((gSaveContext.save.skullTokenCount & 0xFFFF)) >= SPIDER_HOUSE_TOKENS_REQUIRED)) {
|
||||
if ((params == SEKIHI_TYPE_4) &&
|
||||
((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED)) {
|
||||
// For some reason the mikau grave sets the flag instead of something in the spider house on exit.
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_OCEANSIDE_SPIDER_HOUSE_BUYER_MOVED_IN);
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ void EnSth_Init(Actor* thisx, PlayState* play) {
|
||||
break;
|
||||
|
||||
case STH_TYPE_MOON_LOOKING: // South Clock Town
|
||||
if ((gSaveContext.save.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED) {
|
||||
if ((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF) >= SPIDER_HOUSE_TOKENS_REQUIRED) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ void EnSyatekiMan_Swamp_HandleChoice(EnSyatekiMan* this, PlayState* play) {
|
||||
// You don't have a bow!
|
||||
Message_StartTextbox(play, 0xA30, &this->actor);
|
||||
this->prevTextId = 0xA30;
|
||||
} else if (gSaveContext.save.playerData.rupees < 20) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees < 20) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
|
||||
// You don't have enough rupees!
|
||||
@@ -627,7 +627,7 @@ void EnSyatekiMan_Town_HandleChoice(EnSyatekiMan* this, PlayState* play) {
|
||||
Message_StartTextbox(play, 0x3FA, &this->actor);
|
||||
this->prevTextId = 0x3FA;
|
||||
}
|
||||
} else if (gSaveContext.save.playerData.rupees < 20) {
|
||||
} else if (gSaveContext.save.saveInfo.playerData.rupees < 20) {
|
||||
play_sound(NA_SE_SY_ERROR);
|
||||
if (CURRENT_DAY != 3) {
|
||||
// You don't have a enough rupees!
|
||||
|
||||
@@ -436,7 +436,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) {
|
||||
|
||||
if (CURRENT_DAY == 3) {
|
||||
if ((this->nextBellTime == CLOCK_TIME(0, 0)) &&
|
||||
((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) ||
|
||||
((gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) ||
|
||||
(play->sceneId == SCENE_CLOCKTOWER))) {
|
||||
s32 playerParams;
|
||||
u32 entrance = gSaveContext.save.entrance;
|
||||
|
||||
@@ -223,10 +223,10 @@ s32 func_80C10B0C(EnThiefbird* this, PlayState* play) {
|
||||
s16 itemId2 = 0;
|
||||
|
||||
for (; slotId < 24; slotId++) {
|
||||
if ((gSaveContext.save.inventory.items[slotId] >= ITEM_BOTTLE) &&
|
||||
(gSaveContext.save.inventory.items[slotId] <= ITEM_POTION_BLUE)) {
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[slotId] >= ITEM_BOTTLE) &&
|
||||
(gSaveContext.save.saveInfo.inventory.items[slotId] <= ITEM_POTION_BLUE)) {
|
||||
isItemFound = true;
|
||||
itemId2 = gSaveContext.save.inventory.items[slotId];
|
||||
itemId2 = gSaveContext.save.saveInfo.inventory.items[slotId];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -343,7 +343,7 @@ s32 func_80C10E98(PlayState* play) {
|
||||
spAC = 0;
|
||||
}
|
||||
|
||||
sp98 = (gSaveContext.save.playerData.rupees / 4) * 3;
|
||||
sp98 = (gSaveContext.save.saveInfo.playerData.rupees / 4) * 3;
|
||||
phi_s0_2 = sp98 / 50;
|
||||
sp5C = (-spB0 - spAC);
|
||||
sp5C += 8;
|
||||
|
||||
@@ -352,9 +352,9 @@ void func_80B76980(EnTruMt* this, PlayState* play) {
|
||||
} else if (CHECK_EVENTINF(EVENTINF_40)) {
|
||||
u32 score = gSaveContext.minigameScore;
|
||||
|
||||
if (((gSaveContext.save.unk_EE8 & 0xFFFF0000) >> 0x10) < score) {
|
||||
gSaveContext.save.unk_EE8 =
|
||||
((gSaveContext.minigameScore & 0xFFFF) << 0x10) | (gSaveContext.save.unk_EE8 & 0xFFFF);
|
||||
if (((gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF0000) >> 0x10) < score) {
|
||||
gSaveContext.save.saveInfo.unk_EC4 =
|
||||
((gSaveContext.minigameScore & 0xFFFF) << 0x10) | (gSaveContext.save.saveInfo.unk_EC4 & 0xFFFF);
|
||||
SET_EVENTINF(EVENTINF_37);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
switch (ENZOD_GET_TYPE(thisx)) {
|
||||
case ENZOD_TYPE_1:
|
||||
if (gSaveContext.save.weekEventReg[78] & 1) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_01)) {
|
||||
this->actionFunc = func_80BAFDB4;
|
||||
EnZod_ChangeAnim(this, ENZOD_ANIM_PLAYING_VIVACE, ANIMMODE_ONCE);
|
||||
this->actor.flags |= ACTOR_FLAG_10;
|
||||
@@ -124,7 +124,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
this->actionFunc = func_80BAFB84;
|
||||
if (!(gSaveContext.save.weekEventReg[55] & 0x80)) {
|
||||
if (!(CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80))) {
|
||||
Actor_Kill(&this->actor);
|
||||
break;
|
||||
}
|
||||
@@ -137,7 +137,7 @@ void EnZod_Init(Actor* thisx, PlayState* play) {
|
||||
break;
|
||||
|
||||
default:
|
||||
if (gSaveContext.save.weekEventReg[55] & 0x80) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
this->actor.flags |= ACTOR_FLAG_10;
|
||||
@@ -156,19 +156,19 @@ void EnZod_HandleRoomConversation(EnZod* this, PlayState* play) {
|
||||
|
||||
if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) {
|
||||
textId = 0x1227;
|
||||
if (gSaveContext.save.weekEventReg[32] & 8) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_08)) {
|
||||
textId = 0x1229;
|
||||
} else {
|
||||
gSaveContext.save.weekEventReg[32] |= 8;
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_32_08);
|
||||
}
|
||||
} else if (this->stateFlags & TIJO_STATE_1) {
|
||||
textId = 0x1225;
|
||||
} else {
|
||||
textId = 0x1219;
|
||||
if (gSaveContext.save.weekEventReg[32] & 0x10) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_32_10)) {
|
||||
textId = 0x1226;
|
||||
} else {
|
||||
gSaveContext.save.weekEventReg[32] |= 0x10;
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_32_10);
|
||||
}
|
||||
this->stateFlags |= TIJO_STATE_1;
|
||||
}
|
||||
@@ -394,14 +394,14 @@ void func_80BAFA44(EnZod* this, PlayState* play) {
|
||||
u16 textId;
|
||||
|
||||
if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) {
|
||||
if (gSaveContext.save.weekEventReg[79] & 1) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_79_01)) {
|
||||
textId = 0x1253;
|
||||
} else {
|
||||
textId = 0x1251;
|
||||
if (gSaveContext.save.weekEventReg[78] & 0x20) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_78_20)) {
|
||||
textId = 0x1252;
|
||||
} else {
|
||||
gSaveContext.save.weekEventReg[78] |= 0x20;
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_78_20);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -453,7 +453,7 @@ void EnZod_Rehearse(EnZod* this, PlayState* play) {
|
||||
play->nextEntrance = play->setupExitList[ENZOD_GET_ENTRANCE_INDEX(&this->actor)];
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.save.weekEventReg[78] &= (u8)~1;
|
||||
CLEAR_WEEKEVENTREG(WEEKEVENTREG_78_01);
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
|
||||
}
|
||||
@@ -471,7 +471,7 @@ void EnZod_SetupRehearse(EnZod* this, PlayState* play) {
|
||||
ActorCutscene_Stop(this->actor.cutscene);
|
||||
this->actor.cutscene = ActorCutscene_GetAdditionalCutscene(this->actor.cutscene);
|
||||
ActorCutscene_SetIntentToPlay(this->actor.cutscene);
|
||||
gSaveContext.save.weekEventReg[79] |= 1;
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_79_01);
|
||||
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, NA_BGM_INDIGO_GO_SESSION | SEQ_FLAG_ASYNC);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,13 +206,13 @@ void EnZoraegg_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 func_80B319A8(PlayState* play) {
|
||||
return gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 & 7;
|
||||
return gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 & 7;
|
||||
}
|
||||
|
||||
void func_80B319D0(PlayState* play, s32 arg1) {
|
||||
if ((arg1 < 8) && (arg1 >= 0)) {
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 &= ~7;
|
||||
gSaveContext.save.permanentSceneFlags[play->sceneId].unk_14 |= arg1;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 &= ~7;
|
||||
gSaveContext.save.saveInfo.permanentSceneFlags[play->sceneId].unk_14 |= arg1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -467,7 +467,7 @@ void func_80B973BC(EnZot* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x1275:
|
||||
if (gSaveContext.save.playerData.rupees < 10) {
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 10) {
|
||||
Message_ContinueTextbox(play, 0x1277);
|
||||
} else {
|
||||
Message_ContinueTextbox(play, 0x1278);
|
||||
|
||||
@@ -620,7 +620,7 @@ void ObjTokeidai_StaircaseToRooftop_Idle(ObjTokeidai* this, PlayState* play) {
|
||||
}
|
||||
|
||||
s32 ObjTokeidai_IsPostFirstCycleFinalHours(ObjTokeidai* this, PlayState* play) {
|
||||
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
|
||||
return false;
|
||||
}
|
||||
if (CURRENT_DAY == 3 && gSaveContext.save.time < CLOCK_TIME(6, 0)) {
|
||||
|
||||
@@ -45,9 +45,9 @@ s32 func_80C07C80(s32 arg0) {
|
||||
s32 var_v1;
|
||||
|
||||
if (!(arg0 & 1)) {
|
||||
var_v1 = gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF;
|
||||
var_v1 = gSaveContext.save.saveInfo.unk_E64[arg0 >> 1] & 0xFFFF;
|
||||
} else {
|
||||
var_v1 = (gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF0000) >> 0x10;
|
||||
var_v1 = (gSaveContext.save.saveInfo.unk_E64[arg0 >> 1] & 0xFFFF0000) >> 0x10;
|
||||
}
|
||||
return var_v1 + CLOCK_TIME(2, 30);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,6 @@ typedef struct ObjWarpstone {
|
||||
} ObjWarpstone; // size = 0x1B0
|
||||
|
||||
#define OBJ_WARPSTONE_GET_ID(thisx) ((u16)((thisx)->params & 0xF))
|
||||
#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0, gSaveContext.save.playerData.owlActivationFlags) & (u16)gBitFlags[(owlId)])
|
||||
#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0, gSaveContext.save.saveInfo.playerData.owlActivationFlags) & (u16)gBitFlags[(owlId)])
|
||||
|
||||
#endif // Z_OBJ_WARPSTONE_H
|
||||
|
||||
@@ -370,14 +370,14 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0);
|
||||
|
||||
// Current Health Quarter (X / 4)
|
||||
KaleidoScope_DrawDigit(play, (((void)0, gSaveContext.save.playerData.health) % 0x10) / 4, 217, 15);
|
||||
KaleidoScope_DrawDigit(play, (((void)0, gSaveContext.save.saveInfo.playerData.health) % 0x10) / 4, 217, 15);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
// Rupees
|
||||
counterDigits[0] = counterDigits[1] = counterDigits[2] = 0;
|
||||
counterDigits[3] = gSaveContext.save.playerData.rupees;
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.playerData.rupees;
|
||||
while (counterDigits[3] >= 1000) {
|
||||
counterDigits[0]++;
|
||||
counterDigits[3] -= 1000;
|
||||
@@ -400,7 +400,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
|
||||
// Health capacity
|
||||
counterDigits[2] = 0;
|
||||
counterDigits[3] = gSaveContext.save.playerData.healthCapacity / 0x10;
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.playerData.healthCapacity / 0x10;
|
||||
while (counterDigits[3] >= 10) {
|
||||
counterDigits[2]++;
|
||||
counterDigits[3] -= 10;
|
||||
@@ -411,7 +411,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
|
||||
// Health
|
||||
counterDigits[2] = 0;
|
||||
counterDigits[3] = gSaveContext.save.playerData.health / 0x10;
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.playerData.health / 0x10;
|
||||
while (counterDigits[3] >= 10) {
|
||||
counterDigits[2]++;
|
||||
counterDigits[3] -= 10;
|
||||
@@ -431,10 +431,10 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
(slot == SLOT_MAGIC_BEANS)) {
|
||||
counterDigits[3] = AMMO(gAmmoItems[slot]);
|
||||
} else if ((slot == SLOT_TRADE_DEED) || (slot == SLOT_TRADE_KEY_MAMA) || (slot == SLOT_TRADE_COUPLE)) {
|
||||
counterDigits[3] = gSaveContext.save.inventory.items[slot];
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.inventory.items[slot];
|
||||
} else if (slot >= SLOT_BOTTLE_1) {
|
||||
counterDigits[3] = gSaveContext.save.inventory.items[slot];
|
||||
} else if (gSaveContext.save.inventory.items[slot] != ITEM_NONE) {
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.inventory.items[slot];
|
||||
} else if (gSaveContext.save.saveInfo.inventory.items[slot] != ITEM_NONE) {
|
||||
counterDigits[3] = 1;
|
||||
}
|
||||
|
||||
@@ -461,7 +461,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
for (j = 0, rectLeft = 204; j < 6; j++, slot++, rectLeft += 14) {
|
||||
counterDigits[2] = 0;
|
||||
|
||||
if (gSaveContext.save.inventory.items[SLOT_MASK_POSTMAN + slot] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_MASK_POSTMAN + slot] != ITEM_NONE) {
|
||||
counterDigits[2] = 1;
|
||||
}
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], rectLeft, rectTop);
|
||||
@@ -583,7 +583,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
// Dungeon Items
|
||||
// Loop over columns (i), (counterDigits[1] stores rectLeft)
|
||||
for (counterDigits[1] = 129, i = 0; i < 4; i++) {
|
||||
counterDigits[2] = gSaveContext.save.inventory.dungeonItems[i] & gEquipMasks[0];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.inventory.dungeonItems[i] & gEquipMasks[0];
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 168);
|
||||
counterDigits[1] += 12;
|
||||
}
|
||||
@@ -591,7 +591,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
// Stray Fairies
|
||||
// Loop over columns (i), (counterDigits[1] stores rectLeft)
|
||||
for (counterDigits[1] = 202, i = 0; i < 4; i++) {
|
||||
counterDigits[3] = gSaveContext.save.inventory.strayFairies[i];
|
||||
counterDigits[3] = gSaveContext.save.saveInfo.inventory.strayFairies[i];
|
||||
counterDigits[2] = counterDigits[3] / 10;
|
||||
counterDigits[3] -= counterDigits[2] * 10;
|
||||
if (counterDigits[2] != 0) {
|
||||
@@ -602,22 +602,22 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
}
|
||||
|
||||
// Double Defence
|
||||
KaleidoScope_DrawDigit(play, gSaveContext.save.playerData.doubleDefense, 44, 202);
|
||||
KaleidoScope_DrawDigit(play, gSaveContext.save.saveInfo.playerData.doubleDefense, 44, 202);
|
||||
|
||||
// Magic
|
||||
//! @bug should be gSaveContext.save.playerData.doubleMagic
|
||||
KaleidoScope_DrawDigit(play, gSaveContext.save.playerData.doubleDefense, 75, 202);
|
||||
//! @bug should be gSaveContext.save.saveInfo.playerData.doubleMagic
|
||||
KaleidoScope_DrawDigit(play, gSaveContext.save.saveInfo.playerData.doubleDefense, 75, 202);
|
||||
|
||||
// Lottery
|
||||
// Loop over columns (i), (counterDigits[1] stores rectLeft)
|
||||
for (counterDigits[1] = 139, i = 0; i < 3; i++) {
|
||||
counterDigits[2] = gSaveContext.save.lotteryCodes[0][i];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[0][i];
|
||||
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 184);
|
||||
counterDigits[2] = gSaveContext.save.lotteryCodes[1][i];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[1][i];
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 198);
|
||||
|
||||
counterDigits[2] = gSaveContext.save.lotteryCodes[2][i];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.lotteryCodes[2][i];
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 212);
|
||||
|
||||
counterDigits[1] += 12;
|
||||
@@ -626,7 +626,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
// Oceanside Spider House Mask Order
|
||||
// Loop over columns (i), (counterDigits[1] stores rectLeft)
|
||||
for (counterDigits[1] = 217, i = 0; i < 6; i++) {
|
||||
counterDigits[2] = gSaveContext.save.spiderHouseMaskOrder[i];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.spiderHouseMaskOrder[i];
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 186);
|
||||
|
||||
counterDigits[1] += 12;
|
||||
@@ -635,7 +635,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) {
|
||||
// Bombers code
|
||||
// Loop over columns (i), (counterDigits[1] stores rectLeft)
|
||||
for (counterDigits[1] = 220, i = 0; i < 5; i++) {
|
||||
counterDigits[2] = gSaveContext.save.bomberCode[i];
|
||||
counterDigits[2] = gSaveContext.save.saveInfo.bomberCode[i];
|
||||
KaleidoScope_DrawDigit(play, counterDigits[2], counterDigits[1], 210);
|
||||
|
||||
counterDigits[1] += 12;
|
||||
@@ -709,24 +709,24 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
case INV_EDITOR_SECTION_RUPEE:
|
||||
// Rupees
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
|
||||
gSaveContext.save.playerData.rupees -= 100;
|
||||
if (gSaveContext.save.playerData.rupees < 0) {
|
||||
gSaveContext.save.playerData.rupees = 0;
|
||||
gSaveContext.save.saveInfo.playerData.rupees -= 100;
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0) {
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 0;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) {
|
||||
gSaveContext.save.playerData.rupees += 100;
|
||||
if (gSaveContext.save.playerData.rupees >= 9999) {
|
||||
gSaveContext.save.playerData.rupees = 9999;
|
||||
gSaveContext.save.saveInfo.playerData.rupees += 100;
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 9999) {
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 9999;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.playerData.rupees--;
|
||||
if (gSaveContext.save.playerData.rupees < 0) {
|
||||
gSaveContext.save.playerData.rupees = 0;
|
||||
gSaveContext.save.saveInfo.playerData.rupees--;
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees < 0) {
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 0;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.playerData.rupees++;
|
||||
if (gSaveContext.save.playerData.rupees >= 9999) {
|
||||
gSaveContext.save.playerData.rupees = 9999;
|
||||
gSaveContext.save.saveInfo.playerData.rupees++;
|
||||
if (gSaveContext.save.saveInfo.playerData.rupees >= 9999) {
|
||||
gSaveContext.save.saveInfo.playerData.rupees = 9999;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -734,15 +734,15 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
case INV_EDITOR_SECTION_HEALTH_CAPACITY:
|
||||
// Health Capacity
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.playerData.healthCapacity -= 0x10;
|
||||
if (gSaveContext.save.playerData.healthCapacity < 0x30) {
|
||||
gSaveContext.save.playerData.healthCapacity = 0x30;
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity -= 0x10;
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity < 0x30) {
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity = 0x30;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.playerData.healthCapacity += 0x10;
|
||||
if (gSaveContext.save.playerData.healthCapacity >= 0x140) {
|
||||
gSaveContext.save.playerData.healthCapacity = 0x140;
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity += 0x10;
|
||||
if (gSaveContext.save.saveInfo.playerData.healthCapacity >= 0x140) {
|
||||
gSaveContext.save.saveInfo.playerData.healthCapacity = 0x140;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -806,48 +806,48 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
} else if (slot == SLOT_TRADE_DEED) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_MOON_TEAR;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_MOON_TEAR;
|
||||
} else if ((INV_CONTENT(ITEM_MOON_TEAR) >= ITEM_MOON_TEAR) &&
|
||||
(INV_CONTENT(ITEM_MOON_TEAR) <= ITEM_DEED_MOUNTAIN)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) + 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) + 1;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_DEED_OCEAN;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_DEED_OCEAN;
|
||||
} else if ((INV_CONTENT(ITEM_MOON_TEAR) >= ITEM_DEED_LAND) &&
|
||||
(INV_CONTENT(ITEM_MOON_TEAR) <= ITEM_DEED_OCEAN)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) - 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_MOON_TEAR) - 1;
|
||||
}
|
||||
}
|
||||
} else if (slot == SLOT_TRADE_KEY_MAMA) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (INV_CONTENT(ITEM_ROOM_KEY) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_ROOM_KEY;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_ROOM_KEY;
|
||||
} else if ((INV_CONTENT(ITEM_ROOM_KEY) >= ITEM_ROOM_KEY) &&
|
||||
(INV_CONTENT(ITEM_ROOM_KEY) <= ITEM_ROOM_KEY)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) + 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) + 1;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (INV_CONTENT(ITEM_ROOM_KEY) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_LETTER_MAMA;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_LETTER_MAMA;
|
||||
} else if ((INV_CONTENT(ITEM_ROOM_KEY) >= ITEM_LETTER_MAMA) &&
|
||||
(INV_CONTENT(ITEM_ROOM_KEY) <= ITEM_LETTER_MAMA)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) - 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_ROOM_KEY) - 1;
|
||||
}
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (INV_CONTENT(ITEM_LETTER_TO_KAFEI) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_LETTER_TO_KAFEI;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_LETTER_TO_KAFEI;
|
||||
} else if ((INV_CONTENT(ITEM_LETTER_TO_KAFEI) >= ITEM_LETTER_TO_KAFEI) &&
|
||||
(INV_CONTENT(ITEM_LETTER_TO_KAFEI) <= ITEM_LETTER_TO_KAFEI)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) + 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) + 1;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (INV_CONTENT(ITEM_LETTER_TO_KAFEI) == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_PENDANT_OF_MEMORIES;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_PENDANT_OF_MEMORIES;
|
||||
} else if ((INV_CONTENT(ITEM_LETTER_TO_KAFEI) >= ITEM_PENDANT_OF_MEMORIES) &&
|
||||
(INV_CONTENT(ITEM_LETTER_TO_KAFEI) <= ITEM_PENDANT_OF_MEMORIES)) {
|
||||
gSaveContext.save.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) - 1;
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = INV_CONTENT(ITEM_LETTER_TO_KAFEI) - 1;
|
||||
}
|
||||
}
|
||||
} else if ((slot >= SLOT_BOTTLE_1) && (slot <= SLOT_BOTTLE_6)) {
|
||||
@@ -855,18 +855,20 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
value = ITEM_BOTTLE + slot - SLOT_BOTTLE_1;
|
||||
Inventory_DeleteItem(value, SLOT(ITEM_BOTTLE) + slot - SLOT_BOTTLE_1);
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_BOTTLE;
|
||||
} else if ((gSaveContext.save.inventory.items[slot] >= ITEM_BOTTLE) &&
|
||||
(gSaveContext.save.inventory.items[slot] <= ITEM_HYLIAN_LOACH)) {
|
||||
gSaveContext.save.inventory.items[slot] = gSaveContext.save.inventory.items[slot] + 1;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_BOTTLE;
|
||||
} else if ((gSaveContext.save.saveInfo.inventory.items[slot] >= ITEM_BOTTLE) &&
|
||||
(gSaveContext.save.saveInfo.inventory.items[slot] <= ITEM_HYLIAN_LOACH)) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] =
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] + 1;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) {
|
||||
gSaveContext.save.inventory.items[slot] = ITEM_OBABA_DRINK;
|
||||
} else if ((gSaveContext.save.inventory.items[slot] >= ITEM_POTION_RED) &&
|
||||
(gSaveContext.save.inventory.items[slot] <= ITEM_OBABA_DRINK)) {
|
||||
gSaveContext.save.inventory.items[slot] = gSaveContext.save.inventory.items[slot] - 1;
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] = ITEM_OBABA_DRINK;
|
||||
} else if ((gSaveContext.save.saveInfo.inventory.items[slot] >= ITEM_POTION_RED) &&
|
||||
(gSaveContext.save.saveInfo.inventory.items[slot] <= ITEM_OBABA_DRINK)) {
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] =
|
||||
gSaveContext.save.saveInfo.inventory.items[slot] - 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -874,7 +876,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
value = sSlotItems[slot];
|
||||
if (gSaveContext.save.inventory.items[slot] == ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[slot] == ITEM_NONE) {
|
||||
INV_CONTENT(value) = value;
|
||||
} else {
|
||||
Inventory_DeleteItem(value, slot);
|
||||
@@ -895,7 +897,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
|
||||
if (value != 0) {
|
||||
CUR_FORM_EQUIP(EQUIP_SLOT_B) = value + (ITEM_SWORD_KOKIRI - 1);
|
||||
gSaveContext.save.playerData.swordHealth = 100;
|
||||
gSaveContext.save.saveInfo.playerData.swordHealth = 100;
|
||||
} else {
|
||||
CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE;
|
||||
}
|
||||
@@ -910,7 +912,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, value);
|
||||
|
||||
CUR_FORM_EQUIP(EQUIP_SLOT_B) = value + (ITEM_SWORD_KOKIRI - 1);
|
||||
gSaveContext.save.playerData.swordHealth = 100;
|
||||
gSaveContext.save.saveInfo.playerData.swordHealth = 100;
|
||||
}
|
||||
|
||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||
@@ -974,41 +976,43 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
} else if (sCurSection == INV_EDITOR_SECTION_SWAMP_GOLD_SKULLS) {
|
||||
// Gold Skulls (Swamp Spider House)
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) != 0) {
|
||||
gSaveContext.save.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) - 1) << 0x10) |
|
||||
(gSaveContext.save.skullTokenCount & 0xFFFF);
|
||||
if (((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) != 0) {
|
||||
gSaveContext.save.saveInfo.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) - 1) << 0x10) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF);
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.save.skullTokenCount & 0xFFFF);
|
||||
gSaveContext.save.saveInfo.skullTokenCount =
|
||||
((u16)(((gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF);
|
||||
}
|
||||
|
||||
} else if (sCurSection == INV_EDITOR_SECTION_OCEAN_GOLD_SKULLS) {
|
||||
// Gold Skulls (Oceans Spider House)
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
if (((u16)gSaveContext.save.skullTokenCount) != 0) {
|
||||
gSaveContext.save.skullTokenCount = (((u16)gSaveContext.save.skullTokenCount - 1) & 0xFFFF) |
|
||||
(gSaveContext.save.skullTokenCount & 0xFFFF0000);
|
||||
if (((u16)gSaveContext.save.saveInfo.skullTokenCount) != 0) {
|
||||
gSaveContext.save.saveInfo.skullTokenCount =
|
||||
(((u16)gSaveContext.save.saveInfo.skullTokenCount - 1) & 0xFFFF) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000);
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.skullTokenCount = (((u16)gSaveContext.save.skullTokenCount + 1) & 0xFFFF) |
|
||||
(gSaveContext.save.skullTokenCount & 0xFFFF0000);
|
||||
gSaveContext.save.saveInfo.skullTokenCount =
|
||||
(((u16)gSaveContext.save.saveInfo.skullTokenCount + 1) & 0xFFFF) |
|
||||
(gSaveContext.save.saveInfo.skullTokenCount & 0xFFFF0000);
|
||||
}
|
||||
|
||||
} else if (sCurSection == INV_EDITOR_SECTION_NOTEBOOK) {
|
||||
// Bombers Notebook
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.inventory.questItems ^= gBitFlags[QUEST_BOMBERS_NOTEBOOK];
|
||||
gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[QUEST_BOMBERS_NOTEBOOK];
|
||||
}
|
||||
|
||||
} else if (sCurSection == INV_EDITOR_SECTION_LULLABY_INTRO) {
|
||||
// Goron Lullaby Intro
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.inventory.questItems ^= gBitFlags[QUEST_SONG_LULLABY_INTRO];
|
||||
gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[QUEST_SONG_LULLABY_INTRO];
|
||||
}
|
||||
|
||||
} else if (sCurSection < INV_EDITOR_SECTION_LULLABY_INTRO) {
|
||||
@@ -1017,7 +1021,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
//! have also been taken
|
||||
slot = sCurSection - INV_EDITOR_SECTION_BOSS;
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.inventory.questItems ^= gBitFlags[slot];
|
||||
gSaveContext.save.saveInfo.inventory.questItems ^= gBitFlags[slot];
|
||||
}
|
||||
|
||||
} else if (sCurSection < INV_EDITOR_SECTION_DUNGEON_ITEMS) {
|
||||
@@ -1045,30 +1049,30 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
slot = sCurSection - INV_EDITOR_SECTION_DUNGEON_ITEMS;
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
// Map
|
||||
gSaveContext.save.inventory.dungeonItems[slot] ^= 4;
|
||||
gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 4;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) {
|
||||
// Compass
|
||||
gSaveContext.save.inventory.dungeonItems[slot] ^= 2;
|
||||
gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 2;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
// Boss Key
|
||||
gSaveContext.save.inventory.dungeonItems[slot] ^= 1;
|
||||
gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 1;
|
||||
}
|
||||
|
||||
} else if (sCurSection < INV_EDITOR_SECTION_DOUBLE_DEFENSE) {
|
||||
// Stray Fairies
|
||||
slot = sCurSection - INV_EDITOR_SECTION_STRAY_FAIRIES;
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
|
||||
gSaveContext.save.inventory.strayFairies[slot]--;
|
||||
if (gSaveContext.save.inventory.strayFairies[slot] < 0) {
|
||||
gSaveContext.save.inventory.strayFairies[slot] = 0;
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[slot]--;
|
||||
if (gSaveContext.save.saveInfo.inventory.strayFairies[slot] < 0) {
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[slot] = 0;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.inventory.strayFairies[slot]++;
|
||||
if (gSaveContext.save.inventory.strayFairies[slot] >= 99) {
|
||||
gSaveContext.save.inventory.strayFairies[slot] = 99;
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[slot]++;
|
||||
if (gSaveContext.save.saveInfo.inventory.strayFairies[slot] >= 99) {
|
||||
gSaveContext.save.saveInfo.inventory.strayFairies[slot] = 99;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1076,11 +1080,11 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) {
|
||||
// Double Defence
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT) ||
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
gSaveContext.save.playerData.doubleDefense ^= 1;
|
||||
if (!gSaveContext.save.playerData.doubleDefense) {
|
||||
gSaveContext.save.inventory.defenseHearts = 0;
|
||||
gSaveContext.save.saveInfo.playerData.doubleDefense ^= 1;
|
||||
if (!gSaveContext.save.saveInfo.playerData.doubleDefense) {
|
||||
gSaveContext.save.saveInfo.inventory.defenseHearts = 0;
|
||||
} else {
|
||||
gSaveContext.save.inventory.defenseHearts = 20;
|
||||
gSaveContext.save.saveInfo.inventory.defenseHearts = 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +275,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
||||
for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++, j += 4) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||
|
||||
if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) {
|
||||
if (((void)0, gSaveContext.save.saveInfo.inventory.items[i]) != ITEM_NONE) {
|
||||
if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_ITEM) &&
|
||||
(pauseCtx->cursorSpecialPos == 0) &&
|
||||
gPlayerFormSlotRestrictions[(void)0, gSaveContext.save.playerForm][i]) {
|
||||
@@ -309,8 +309,8 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
||||
}
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->itemVtx[j + 0], 4, 0);
|
||||
KaleidoScope_DrawTexQuadRGBA32(play->state.gfxCtx,
|
||||
gItemIcons[((void)0, gSaveContext.save.inventory.items[i])], 32, 32, 0);
|
||||
KaleidoScope_DrawTexQuadRGBA32(
|
||||
play->state.gfxCtx, gItemIcons[((void)0, gSaveContext.save.saveInfo.inventory.items[i])], 32, 32, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,9 +325,9 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
|
||||
// Loop over slots (i) and ammoIndex (j)
|
||||
for (j = 0, i = 0; i < NUM_ITEM_SLOTS; i++) {
|
||||
if (gAmmoItems[i] != ITEM_NONE) {
|
||||
if (((void)0, gSaveContext.save.inventory.items[i]) != ITEM_NONE) {
|
||||
if (((void)0, gSaveContext.save.saveInfo.inventory.items[i]) != ITEM_NONE) {
|
||||
KaleidoScope_DrawAmmoCount(pauseCtx, play->state.gfxCtx,
|
||||
((void)0, gSaveContext.save.inventory.items[i]), j);
|
||||
((void)0, gSaveContext.save.saveInfo.inventory.items[i]), j);
|
||||
}
|
||||
j++;
|
||||
}
|
||||
@@ -446,7 +446,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) {
|
||||
}
|
||||
|
||||
if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
}
|
||||
}
|
||||
} else if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) {
|
||||
@@ -459,7 +459,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) {
|
||||
// Search for slot to move to
|
||||
while (true) {
|
||||
// Check if current cursor has an item in its slot
|
||||
if (gSaveContext.save.inventory.items[cursorPoint] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[cursorPoint] != ITEM_NONE) {
|
||||
pauseCtx->cursorPoint[PAUSE_ITEM] = cursorPoint;
|
||||
pauseCtx->cursorXIndex[PAUSE_ITEM] = cursorXIndex;
|
||||
pauseCtx->cursorYIndex[PAUSE_ITEM] = cursorYIndex;
|
||||
@@ -497,7 +497,7 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) {
|
||||
// Search for slot to move to
|
||||
while (true) {
|
||||
// Check if current cursor has an item in its slot
|
||||
if (gSaveContext.save.inventory.items[cursorPoint] != ITEM_NONE) {
|
||||
if (gSaveContext.save.saveInfo.inventory.items[cursorPoint] != ITEM_NONE) {
|
||||
pauseCtx->cursorPoint[PAUSE_ITEM] = cursorPoint;
|
||||
pauseCtx->cursorXIndex[PAUSE_ITEM] = cursorXIndex;
|
||||
pauseCtx->cursorYIndex[PAUSE_ITEM] = cursorYIndex;
|
||||
@@ -568,9 +568,9 @@ void KaleidoScope_UpdateItemCursor(PlayState* play) {
|
||||
pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW;
|
||||
|
||||
if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
} else if (moveCursorResult != PAUSE_CURSOR_RESULT_SPECIAL_POS) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
cursorItem = gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_ITEM]];
|
||||
}
|
||||
|
||||
if (cursorItem == ITEM_NONE) {
|
||||
|
||||
@@ -59,7 +59,7 @@ void KaleidoScope_DrawDungeonStrayFairyCount(PlayState* play) {
|
||||
1 << 10);
|
||||
|
||||
// Get digits for current number of stray fairies collected
|
||||
counterDigits[1] = gSaveContext.save.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
|
||||
counterDigits[1] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
|
||||
counterDigits[0] = counterDigits[1] / 10;
|
||||
counterDigits[1] -= (s16)(counterDigits[0] * 10);
|
||||
|
||||
@@ -379,7 +379,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
|
||||
} else if ((pauseCtx->cursorSpecialPos == 0) && (pauseCtx->stickAdjY > 30)) {
|
||||
if (pauseCtx->cursorPoint[PAUSE_MAP] >= DUNGEON_FLOOR_INDEX_4) {
|
||||
for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 + 1); i >= 0; i--) {
|
||||
if ((gSaveContext.save.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
|
||||
if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
|
||||
gBitFlags[i]) ||
|
||||
func_801090B0(FLOOR_INDEX_MAX - i)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4;
|
||||
@@ -400,7 +400,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
|
||||
(pauseCtx->cursorPoint[PAUSE_MAP] <= DUNGEON_FLOOR_INDEX_1)) {
|
||||
for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 - 1); i <= DUNGEON_FLOOR_INDEX_0;
|
||||
i++) {
|
||||
if ((gSaveContext.save.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
|
||||
if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
|
||||
gBitFlags[i]) ||
|
||||
func_801090B0(FLOOR_INDEX_MAX - i)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4;
|
||||
@@ -642,7 +642,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) {
|
||||
// Draw clouds over the world map
|
||||
// Iterate over cloud bits (n)
|
||||
for (n = 0; n < 15; n++) {
|
||||
if (!(((void)0, gSaveContext.save.worldMapCloudVisibility) & gBitFlags[n])) {
|
||||
if (!(((void)0, gSaveContext.save.saveInfo.worldMapCloudVisibility) & gBitFlags[n])) {
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->mapPageVtx[60 + n * 4], 4, 0);
|
||||
|
||||
@@ -674,7 +674,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) {
|
||||
sWorldMapDotEnvColors[0][2], 0);
|
||||
|
||||
if (R_PAUSE_DBG_MAP_CLOUD_ON) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= (u16)~0x8000;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= (u16)~0x8000;
|
||||
|
||||
pauseCtx->mapPageVtx[120].v.ob[0] = pauseCtx->mapPageVtx[122].v.ob[0] = R_PAUSE_DBG_MAP_CLOUD_X;
|
||||
|
||||
@@ -706,7 +706,7 @@ void KaleidoScope_DrawWorldMap(PlayState* play) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||
|
||||
if (R_PAUSE_DBG_MAP_CLOUD_ON) {
|
||||
gSaveContext.save.worldMapCloudVisibility |= (u16)~0x8000;
|
||||
gSaveContext.save.saveInfo.worldMapCloudVisibility |= (u16)~0x8000;
|
||||
|
||||
pauseCtx->mapPageVtx[164].v.ob[0] = pauseCtx->mapPageVtx[166].v.ob[0] = R_PAUSE_DBG_MAP_CLOUD_X;
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) {
|
||||
for (j = 0, i = 0; i < NUM_MASK_SLOTS; i++, j += 4) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
|
||||
|
||||
if (((void)0, gSaveContext.save.inventory.items[i + NUM_ITEM_SLOTS]) != ITEM_NONE) {
|
||||
if (((void)0, gSaveContext.save.saveInfo.inventory.items[i + NUM_ITEM_SLOTS]) != ITEM_NONE) {
|
||||
if (!CHECK_GIVEN_MASK_ON_MOON(i)) {
|
||||
if ((pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) && (pauseCtx->pageIndex == PAUSE_MASK) &&
|
||||
(pauseCtx->cursorSpecialPos == 0) &&
|
||||
@@ -258,8 +258,8 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) {
|
||||
|
||||
gSPVertex(POLY_OPA_DISP++, &pauseCtx->maskVtx[j + 0], 4, 0);
|
||||
KaleidoScope_DrawTexQuadRGBA32(
|
||||
play->state.gfxCtx, gItemIcons[((void)0, gSaveContext.save.inventory.items[i + NUM_ITEM_SLOTS])],
|
||||
32, 32, 0);
|
||||
play->state.gfxCtx,
|
||||
gItemIcons[((void)0, gSaveContext.save.saveInfo.inventory.items[i + NUM_ITEM_SLOTS])], 32, 32, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -371,7 +371,8 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) {
|
||||
}
|
||||
|
||||
if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
cursorItem =
|
||||
gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) {
|
||||
cursorItem = ITEM_NONE;
|
||||
}
|
||||
@@ -387,7 +388,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) {
|
||||
// Search for slot to move to
|
||||
while (true) {
|
||||
// Check if current cursor has an item in its slot
|
||||
if ((gSaveContext.save.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) &&
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) &&
|
||||
!CHECK_GIVEN_MASK_ON_MOON(cursorPoint)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MASK] = cursorPoint;
|
||||
pauseCtx->cursorXIndex[PAUSE_MASK] = cursorXIndex;
|
||||
@@ -428,7 +429,7 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) {
|
||||
// Search for slot to move to
|
||||
while (true) {
|
||||
// Check if current cursor has an item in its slot
|
||||
if ((gSaveContext.save.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) &&
|
||||
if ((gSaveContext.save.saveInfo.inventory.items[cursorPoint + NUM_ITEM_SLOTS] != ITEM_NONE) &&
|
||||
!CHECK_GIVEN_MASK_ON_MOON(cursorPoint)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MASK] = cursorPoint;
|
||||
pauseCtx->cursorXIndex[PAUSE_MASK] = cursorXIndex;
|
||||
@@ -500,12 +501,14 @@ void KaleidoScope_UpdateMaskCursor(PlayState* play) {
|
||||
pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW;
|
||||
|
||||
if (moveCursorResult == PAUSE_CURSOR_RESULT_SLOT) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
cursorItem =
|
||||
gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) {
|
||||
cursorItem = ITEM_NONE;
|
||||
}
|
||||
} else if (moveCursorResult != PAUSE_CURSOR_RESULT_SPECIAL_POS) {
|
||||
cursorItem = gSaveContext.save.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
cursorItem =
|
||||
gSaveContext.save.saveInfo.inventory.items[pauseCtx->cursorPoint[PAUSE_MASK] + NUM_ITEM_SLOTS];
|
||||
if (CHECK_GIVEN_MASK_ON_MOON(pauseCtx->cursorPoint[PAUSE_MASK])) {
|
||||
cursorItem = ITEM_NONE;
|
||||
}
|
||||
|
||||
@@ -811,7 +811,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
} else {
|
||||
play_sound(NA_SE_SY_PIECE_OF_HEART);
|
||||
Play_SaveCycleSceneFlags(&play->state);
|
||||
gSaveContext.save.playerData.savedSceneId = play->sceneId;
|
||||
gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId;
|
||||
func_8014546C(sramCtx);
|
||||
if (gSaveContext.unk_3F3F == 0) {
|
||||
pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_5;
|
||||
@@ -1072,8 +1072,8 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
play_sound(NA_SE_SY_PIECE_OF_HEART);
|
||||
pauseCtx->promptChoice = PAUSE_PROMPT_YES;
|
||||
Play_SaveCycleSceneFlags(&play->state);
|
||||
gSaveContext.save.playerData.savedSceneId = play->sceneId;
|
||||
gSaveContext.save.playerData.health = 0x30;
|
||||
gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId;
|
||||
gSaveContext.save.saveInfo.playerData.health = 0x30;
|
||||
func_8014546C(sramCtx);
|
||||
if (gSaveContext.unk_3F3F == 0) {
|
||||
pauseCtx->state = PAUSE_STATE_GAMEOVER_8;
|
||||
@@ -1145,15 +1145,15 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
func_80169FDC(&play->state);
|
||||
gSaveContext.respawnFlag = -2;
|
||||
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK;
|
||||
gSaveContext.save.playerData.health = 0x30;
|
||||
gSaveContext.save.saveInfo.playerData.health = 0x30;
|
||||
Audio_SetSpec(0xA);
|
||||
gSaveContext.healthAccumulator = 0;
|
||||
gSaveContext.magicState = MAGIC_STATE_IDLE;
|
||||
gSaveContext.magicFlag = 0;
|
||||
gSaveContext.magicCapacity = 0;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic;
|
||||
gSaveContext.save.playerData.magicLevel = 0;
|
||||
gSaveContext.save.playerData.magic = 0;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.saveInfo.playerData.magic;
|
||||
gSaveContext.save.saveInfo.playerData.magicLevel = 0;
|
||||
gSaveContext.save.saveInfo.playerData.magic = 0;
|
||||
} else { // PAUSE_PROMPT_NO
|
||||
STOP_GAMESTATE(&play->state);
|
||||
SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, sizeof(TitleSetupState));
|
||||
|
||||
+58
-20
@@ -761,41 +761,41 @@ wordReplace = {
|
||||
"gSaveContext.unk_3F22": "gSaveContext.hudVisibility",
|
||||
"gSaveContext.unk_3F24": "gSaveContext.hudVisibilityTimer",
|
||||
"gSaveContext.unk_3F26": "gSaveContext.prevHudVisibility",
|
||||
"gSaveContext.weekEventReg": "gSaveContext.save.weekEventReg",
|
||||
"gSaveContext.weekEventReg": "gSaveContext.save.saveInfo.weekEventReg",
|
||||
"gSaveContext.playerForm": "gSaveContext.save.playerForm",
|
||||
"gSaveContext.day": "gSaveContext.save.day",
|
||||
"gSaveContext.isNight": "gSaveContext.save.isNight",
|
||||
"gSaveContext.environmentTime": "gSaveContext.skyboxTime",
|
||||
"gSaveContext.naviTimer": "gSaveContext.save.playerData.tatlTimer",
|
||||
"gSaveContext.tatlTimer": "gSaveContext.save.playerData.tatlTimer",
|
||||
"gSaveContext.rupees": "gSaveContext.save.playerData.rupees",
|
||||
"gSaveContext.magicAcquired": "gSaveContext.save.playerData.isMagicAcquired",
|
||||
"gSaveContext.doubleMagic": "gSaveContext.save.playerData.isDoubleMagicAcquired",
|
||||
"gSaveContext.doubleDefense": "gSaveContext.save.playerData.doubleDefense",
|
||||
"gSaveContext.playerName": "gSaveContext.save.playerData.playerName",
|
||||
"gSaveContext.inventory": "gSaveContext.save.inventory",
|
||||
"gSaveContext.naviTimer": "gSaveContext.save.saveInfo.playerData.tatlTimer",
|
||||
"gSaveContext.tatlTimer": "gSaveContext.save.saveInfo.playerData.tatlTimer",
|
||||
"gSaveContext.rupees": "gSaveContext.save.saveInfo.playerData.rupees",
|
||||
"gSaveContext.magicAcquired": "gSaveContext.save.saveInfo.playerData.isMagicAcquired",
|
||||
"gSaveContext.doubleMagic": "gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired",
|
||||
"gSaveContext.doubleDefense": "gSaveContext.save.saveInfo.playerData.doubleDefense",
|
||||
"gSaveContext.playerName": "gSaveContext.save.saveInfo.playerData.playerName",
|
||||
"gSaveContext.inventory": "gSaveContext.save.saveInfo.inventory",
|
||||
"gSaveContext.equippedMask": "gSaveContext.save.equippedMask",
|
||||
"gSaveContext.entranceIndex": "gSaveContext.save.entrance",
|
||||
"gSaveContext.time": "gSaveContext.save.time",
|
||||
"gSaveContext.save.daySpeed": "gSaveContext.save.timeSpeedOffset",
|
||||
"gSaveContext.unk_14": "gSaveContext.save.timeSpeedOffset",
|
||||
"gSaveContext.unk_FE6": "gSaveContext.save.bombersCaughtNum",
|
||||
"gSaveContext.unk_FE7": "gSaveContext.save.bombersCaughtOrder",
|
||||
"gSaveContext.unk_FE6": "gSaveContext.save.saveInfo.bombersCaughtNum",
|
||||
"gSaveContext.unk_FE7": "gSaveContext.save.saveInfo.bombersCaughtOrder",
|
||||
"gSaveContext.linkAge": "gSaveContext.save.linkAge",
|
||||
"gSaveContext.dekuPlaygroundHighScores": "gSaveContext.save.dekuPlaygroundHighScores",
|
||||
"gSaveContext.lotteryCodeGuess": "gSaveContext.save.lotteryCodeGuess",
|
||||
"gSaveContext.permanentSceneFlags": "gSaveContext.save.permanentSceneFlags",
|
||||
"gSaveContext.bomberCode": "gSaveContext.save.bomberCode",
|
||||
"gSaveContext.skullTokenCount": "gSaveContext.save.skullTokenCount",
|
||||
"gSaveContext.dekuPlaygroundHighScores": "gSaveContext.save.saveInfo.dekuPlaygroundHighScores",
|
||||
"gSaveContext.lotteryCodeGuess": "gSaveContext.save.saveInfo.lotteryCodeGuess",
|
||||
"gSaveContext.permanentSceneFlags": "gSaveContext.save.saveInfo.permanentSceneFlags",
|
||||
"gSaveContext.bomberCode": "gSaveContext.save.saveInfo.bomberCode",
|
||||
"gSaveContext.skullTokenCount": "gSaveContext.save.saveInfo.skullTokenCount",
|
||||
"gSaveContext.cutscene": "gSaveContext.save.cutscene",
|
||||
"gSaveContext.health": "gSaveContext.save.playerData.health",
|
||||
"gSaveContext.equips": "gSaveContext.save.equips",
|
||||
"gSaveContext.health": "gSaveContext.save.saveInfo.playerData.health",
|
||||
"gSaveContext.equips": "gSaveContext.save.saveInfo.equips",
|
||||
"gSaveContext.unk_1016": "gSaveContext.jinxTimer",
|
||||
"gSaveContext.unk_3F58": "gSaveContext.sunsSongState",
|
||||
"gSaveContext.equips.buttonItems": "gSaveContext.save.equips.buttonItems",
|
||||
"gSaveContext.unk_48C8": "gSaveContext.dungeonIndex",
|
||||
"gSaveContext.save.playerData.magicAcquired": "gSaveContext.save.playerData.isMagicAcquired",
|
||||
"gSaveContext.save.playerDatadoubleMagic": "gSaveContext.save.playerData.isDoubleMagicAcquired",
|
||||
"gSaveContext.save.saveInfo.playerData.magicAcquired": "gSaveContext.save.saveInfo.playerData.isMagicAcquired",
|
||||
"gSaveContext.save.playerDatadoubleMagic": "gSaveContext.save.saveInfo.playerData.isDoubleMagicAcquired",
|
||||
"gSaveContext.unk_3F28": "gSaveContext.magicState",
|
||||
"gSaveContext.unk_3F30": "gSaveContext.magicFillTarget",
|
||||
"gSaveContext.unk_3F2C": "gSaveContext.magicFlag",
|
||||
@@ -805,6 +805,44 @@ wordReplace = {
|
||||
"gSaveContext.nightSeqIndex": "gSaveContext.ambienceId",
|
||||
"gSaveContext.minigameState": "gSaveContext.minigameStatus",
|
||||
"gSaveContext.unk_3F3C": "gSaveContext.minigameHiddenScore",
|
||||
"gSaveContext.save.playerData": "gSaveContext.save.saveInfo.playerData",
|
||||
"gSaveContext.save.equips": "gSaveContext.save.saveInfo.equips",
|
||||
"gSaveContext.save.inventory": "gSaveContext.save.saveInfo.inventory",
|
||||
"gSaveContext.save.permanentSceneFlags": "gSaveContext.save.saveInfo.permanentSceneFlags",
|
||||
|
||||
"gSaveContext.save.unk_E18": "gSaveContext.save.saveInfo.unk_E5C",
|
||||
"gSaveContext.save.dekuPlaygroundHighScores": "gSaveContext.save.saveInfo.dekuPlaygroundHighScores",
|
||||
"gSaveContext.save.pictoFlags0": "gSaveContext.save.saveInfo.pictoFlags0",
|
||||
"gSaveContext.save.pictoFlags1": "gSaveContext.save.saveInfo.pictoFlags1",
|
||||
"gSaveContext.save.unk_E84": "gSaveContext.save.saveInfo.unk_E60",
|
||||
"gSaveContext.save.unk_E88": "gSaveContext.save.saveInfo.unk_E64",
|
||||
"gSaveContext.save.scenesVisible": "gSaveContext.save.saveInfo.scenesVisible",
|
||||
"gSaveContext.save.skullTokenCount": "gSaveContext.save.saveInfo.skullTokenCount",
|
||||
"gSaveContext.save.unk_EC4": "gSaveContext.save.saveInfo.unk_EA0",
|
||||
"gSaveContext.save.unk_EC8": "gSaveContext.save.saveInfo.unk_EA4",
|
||||
"gSaveContext.save.unk_ECC": "gSaveContext.save.saveInfo.unk_EA8",
|
||||
"gSaveContext.save.stolenItems": "gSaveContext.save.saveInfo.stolenItems",
|
||||
"gSaveContext.save.unk_DD8": "gSaveContext.save.saveInfo.unk_EB4",
|
||||
"gSaveContext.save.bankRupees": "gSaveContext.save.saveInfo.bankRupees",
|
||||
"gSaveContext.save.unk_EE0": "gSaveContext.save.saveInfo.unk_EBC",
|
||||
"gSaveContext.save.unk_EE4": "gSaveContext.save.saveInfo.unk_EC0",
|
||||
"gSaveContext.save.unk_EE8": "gSaveContext.save.saveInfo.unk_EC4",
|
||||
"gSaveContext.save.horseBackBalloonHighScore": "gSaveContext.save.saveInfo.horseBackBalloonHighScore",
|
||||
"gSaveContext.save.lotteryCodeGuess": "gSaveContext.save.saveInfo.lotteryCodeGuess",
|
||||
"gSaveContext.save.shootingGalleryHighScores": "gSaveContext.save.saveInfo.shootingGalleryHighScores",
|
||||
"gSaveContext.save.weekEventReg": "gSaveContext.save.saveInfo.weekEventReg",
|
||||
"gSaveContext.save.regionsVisited": "gSaveContext.save.saveInfo.regionsVisited",
|
||||
"gSaveContext.save.worldMapCloudVisibility": "gSaveContext.save.saveInfo.worldMapCloudVisibility",
|
||||
"gSaveContext.save.unk_F64": "gSaveContext.save.saveInfo.unk_F40",
|
||||
"gSaveContext.save.unk_F65": "gSaveContext.save.saveInfo.unk_F41",
|
||||
"gSaveContext.save.scarecrowSpawnSong": "gSaveContext.save.saveInfo.scarecrowSpawnSong",
|
||||
"gSaveContext.save.bombersCaughtNum": "gSaveContext.save.saveInfo.bombersCaughtNum",
|
||||
"gSaveContext.save.bombersCaughtOrder": "gSaveContext.save.saveInfo.bombersCaughtOrder",
|
||||
"gSaveContext.save.lotteryCodes": "gSaveContext.save.saveInfo.lotteryCodes",
|
||||
"gSaveContext.save.spiderHouseMaskOrder": "gSaveContext.save.saveInfo.spiderHouseMaskOrder",
|
||||
"gSaveContext.save.bomberCode": "gSaveContext.save.saveInfo.bomberCode",
|
||||
"gSaveContext.save.horseData": "gSaveContext.save.saveInfo.horseData",
|
||||
"gSaveContext.save.checksum": "gSaveContext.save.saveInfo.checksum",
|
||||
|
||||
"player->unk_A87": "player->exchangeItemId",
|
||||
"player->leftHandActor": "player->heldActor",
|
||||
|
||||
@@ -843,20 +843,20 @@ def applyChange(fileContents: str, compiledRegex: re.Pattern, callback) -> str:
|
||||
|
||||
|
||||
def updateCheck(fileContents: str) -> str:
|
||||
# gSaveContext.save.weekEventReg[86] & 2
|
||||
checkRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\&\s*(?P<mask>{NUMBER_PATTERN})")
|
||||
# gSaveContext.save.saveInfo.weekEventReg[86] & 2
|
||||
checkRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\&\s*(?P<mask>{NUMBER_PATTERN})")
|
||||
|
||||
return applyChange(fileContents, checkRegex, getCheckMacro)
|
||||
|
||||
def updateSet(fileContents: str) -> str:
|
||||
# gSaveContext.save.weekEventReg[51] |= 0x10
|
||||
setRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\|=\s*(?P<mask>{NUMBER_PATTERN})")
|
||||
# gSaveContext.save.saveInfo.weekEventReg[51] |= 0x10
|
||||
setRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\|=\s*(?P<mask>{NUMBER_PATTERN})")
|
||||
|
||||
return applyChange(fileContents, setRegex, getSetMacro)
|
||||
|
||||
def updateClear(fileContents: str) -> str:
|
||||
# gSaveContext.save.weekEventReg[85] &= (u8)~0x80
|
||||
clearRegex = re.compile(rf"gSaveContext.save.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P<mask>{NUMBER_PATTERN})")
|
||||
# gSaveContext.save.saveInfo.weekEventReg[85] &= (u8)~0x80
|
||||
clearRegex = re.compile(rf"gSaveContext.save.saveInfo.weekEventReg\[(?P<index>{NUMBER_PATTERN})\]\s*\&=\s*(\(u8\))?~(?P<mask>{NUMBER_PATTERN})")
|
||||
|
||||
return applyChange(fileContents, clearRegex, getClearMacro)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user