mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07: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
File diff suppressed because it is too large
Load Diff
+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
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user