mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Copy z64Save.h docs from z_sram_nes WIP
This commit is contained in:
@@ -81,7 +81,7 @@ void EnMs_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
void func_80952734(EnMs* this, GlobalContext* globalCtx) {
|
||||
s16 temp_v1 = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
if (gSaveContext.inventory.items[10] == ITEM_NONE) {
|
||||
if (gSaveContext.save.inventory.items[10] == ITEM_NONE) {
|
||||
this->actor.textId = 0x92E;
|
||||
} else {
|
||||
this->actor.textId = 0x932;
|
||||
@@ -187,12 +187,12 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) {
|
||||
return;
|
||||
}
|
||||
func_801477B4(globalCtx);
|
||||
if ((s32) gSaveContext.rupees < 0xA) {
|
||||
if ((s32) gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
}
|
||||
if ((s32) gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if ((s32) gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
return;
|
||||
@@ -275,14 +275,14 @@ block_7:
|
||||
goto block_16;
|
||||
block_11:
|
||||
func_801477B4(globalCtx);
|
||||
if ((s32) gSaveContext.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.playerData.rupees >= 0xA) {
|
||||
goto block_13;
|
||||
}
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
block_13:
|
||||
if ((s32) gSaveContext.inventory.ammo[gItemSlots[0xA]] < 0x14) {
|
||||
if ((s32) gSaveContext.save.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.rupees >= 0xA) {
|
||||
if ((s32) gSaveContext.save.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.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
@@ -378,12 +378,12 @@ block_7:
|
||||
block_11:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
return;
|
||||
@@ -448,12 +448,12 @@ block_7:
|
||||
block_11:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
return;
|
||||
@@ -497,12 +497,12 @@ So let us rewrite the entire second half as a switch:
|
||||
case 0:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
return;
|
||||
}
|
||||
if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
return;
|
||||
@@ -532,10 +532,10 @@ There's a couple of other obvious things here:
|
||||
case 0:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
} else if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
} else {
|
||||
@@ -597,10 +597,10 @@ block_7:
|
||||
case 0:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
} else if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
} else {
|
||||
@@ -661,10 +661,10 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) {
|
||||
case 0:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
} else if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
} else {
|
||||
@@ -713,10 +713,10 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) {
|
||||
case 0:
|
||||
func_801477B4(globalCtx);
|
||||
|
||||
if (gSaveContext.rupees < 0xA) {
|
||||
if (gSaveContext.save.playerData.rupees < 0xA) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x935U);
|
||||
} else if (gSaveContext.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
} else if (gSaveContext.save.inventory.ammo[gItemSlots[0xA]] >= 0x14) {
|
||||
play_sound(0x4806U);
|
||||
func_80151938(globalCtx, 0x937U);
|
||||
} else {
|
||||
|
||||
@@ -199,7 +199,7 @@ void func_80C102D4(EnRecepgirl *this, GlobalContext *globalCtx) {
|
||||
if (this->actor.textId == 0x2AD9) {
|
||||
Actor_SetSwitchFlag(globalCtx, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &D_0600AD98, 10.0f);
|
||||
if ((gSaveContext.weekEventReg[63] & 0x80)) {
|
||||
if ((gSaveContext.save.weekEventReg[63] & 0x80)) {
|
||||
this->actor.textId = 0x2ADF;
|
||||
} else {
|
||||
this->actor.textId = 0x2ADA;
|
||||
@@ -522,7 +522,7 @@ void func_80C102D4(EnRecepgirl* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.textId == 0x2AD9) { // "Welcome..."
|
||||
Actor_SetSwitchFlag(globalCtx, this->actor.params);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &D_0600AD98, 10.0f);
|
||||
if (gSaveContext.weekEventReg[63] & 0x80) { // showed Couple's Mask to meeting
|
||||
if (gSaveContext.save.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)
|
||||
|
||||
@@ -378,7 +378,7 @@ There remains one thing we need to fix before trying to compile it, namely `*(&g
|
||||
/* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg"
|
||||
/* 0x0F5C */ u32 mapsVisited; // "area_arrival"
|
||||
```
|
||||
so it's somewhere in `weekEventReg`. `0xF37 - 0xEF8 = 0x3F = 63`, and it's a byte array, so the access is actually `gSaveContext.weekEventReg[63] & 0x80`. Now it will compile. We also don't use `!= 0` for flag comparisons: just `if (gSaveContext.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.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.
|
||||
|
||||
Running `./diff.py -mwo3 func_80C102D4` and scrolling down, we discover that this doesn't match!
|
||||
|
||||
|
||||
+16
-16
@@ -45,34 +45,34 @@
|
||||
|
||||
// linkAge still exists in MM, but is always set to 0 (always adult)
|
||||
// There are remnants of these macros from OOT, but they are essentially useless
|
||||
//#define LINK_IS_CHILD (gSaveContext.linkAge != 0)
|
||||
#define LINK_IS_ADULT (gSaveContext.linkAge == 0)
|
||||
//#define LINK_IS_CHILD (gSaveContext.save.linkAge != 0)
|
||||
#define LINK_IS_ADULT (gSaveContext.save.linkAge == 0)
|
||||
|
||||
#define CURRENT_DAY (((void)0, gSaveContext.day) % 5)
|
||||
#define CURRENT_DAY (((void)0, gSaveContext.save.day) % 5)
|
||||
|
||||
#define CLOCK_TIME(hr, min) ((s32)(((hr) * 60 + (min)) * 0x10000 / (24 * 60)))
|
||||
#define CLOCK_TIME_MINUTE (CLOCK_TIME(0, 1))
|
||||
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
#define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)]
|
||||
#define INV_CONTENT(item) gSaveContext.inventory.items[SLOT(item)]
|
||||
#define AMMO(item) gSaveContext.save.inventory.ammo[SLOT(item)]
|
||||
#define INV_CONTENT(item) gSaveContext.save.inventory.items[SLOT(item)]
|
||||
|
||||
#define ALL_EQUIP_VALUE_VOID(equip) \
|
||||
((((void)0, gSaveContext.inventory.equipment) & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
((((void)0, gSaveContext.save.inventory.equipment) & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_EQUIP_VALUE_VOID(equip) \
|
||||
((((void)0, gSaveContext.equips.equipment) & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
((((void)0, gSaveContext.save.equips.equipment) & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_UPG_VALUE_VOID(upg) \
|
||||
((((void)0, gSaveContext.inventory.upgrades) & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
((((void)0, gSaveContext.save.inventory.upgrades) & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
|
||||
#define CUR_FORM ((gSaveContext.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.playerForm)
|
||||
#define CUR_FORM ((gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.save.playerForm)
|
||||
|
||||
#define ALL_EQUIP_VALUE(equip) ((gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_EQUIP_VALUE(equip) ((gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_UPG_VALUE(upg) ((gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define TAKE_EQUIPPED_ITEM(equip) (gSaveContext.equips.equipment = ((((void)0, gSaveContext.equips.equipment) & (gEquipNegMasks[equip])) | (u16)(0 << gEquipShifts[equip])))
|
||||
#define CUR_FORM_EQUIP(button) (gSaveContext.equips.buttonItems[CUR_FORM][button])
|
||||
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.inventory.questItems) & gBitFlags[item])
|
||||
#define REMOVE_QUEST_ITEM(item) (gSaveContext.inventory.questItems = (((void)0, gSaveContext.inventory.questItems) & (-1 - gBitFlags[item])))
|
||||
#define ALL_EQUIP_VALUE(equip) ((gSaveContext.save.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_EQUIP_VALUE(equip) ((gSaveContext.save.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_UPG_VALUE(upg) ((gSaveContext.save.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define TAKE_EQUIPPED_ITEM(equip) (gSaveContext.save.equips.equipment = ((((void)0, gSaveContext.save.equips.equipment) & (gEquipNegMasks[equip])) | (u16)(0 << gEquipShifts[equip])))
|
||||
#define CUR_FORM_EQUIP(button) (gSaveContext.save.equips.buttonItems[CUR_FORM][button])
|
||||
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.save.inventory.questItems) & gBitFlags[item])
|
||||
#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (((void)0, gSaveContext.save.inventory.questItems) & (-1 - gBitFlags[item])))
|
||||
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
+58
-38
@@ -9,7 +9,7 @@ typedef struct {
|
||||
/* 0x00 */ u8 buttonItems[4][4];
|
||||
/* 0x10 */ u8 cButtonSlots[4][4];
|
||||
/* 0x20 */ u16 equipment;
|
||||
} ItemEquips; // size = 0x0A
|
||||
} ItemEquips; // size = 0x22
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 items[24];
|
||||
@@ -30,9 +30,9 @@ typedef struct {
|
||||
} HorseData; // size = 0x0A
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3f pos;
|
||||
/* 0xC */ s16 yaw;
|
||||
/* 0xE */ s16 playerParams;
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ s16 yaw;
|
||||
/* 0x0E */ s16 playerParams;
|
||||
/* 0x10 */ u16 entranceIndex;
|
||||
/* 0x12 */ u8 roomIndex;
|
||||
/* 0x13 */ s8 data;
|
||||
@@ -41,6 +41,43 @@ typedef struct {
|
||||
/* 0x1C */ u32 tempCollectFlags;
|
||||
} RespawnData; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 chest;
|
||||
/* 0x04 */ u32 swch0;
|
||||
/* 0x08 */ u32 swch1;
|
||||
/* 0x0C */ u32 clearedRoom;
|
||||
/* 0x10 */ u32 collectible;
|
||||
} CycleSceneFlags; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 optionId; // original name: option_id
|
||||
/* 0x02 */ u8 language; // original name: j_n
|
||||
/* 0x03 */ s8 audioSetting; // original name: s_sound
|
||||
/* 0x04 */ u8 languageSetting; // original name: language
|
||||
/* 0x05 */ u8 zTargetSetting; // 0: Switch; 1: Hold
|
||||
} SaveOptions; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ char newf[6]; // original name: newf" Will always be "ZELDA3 for a valid save
|
||||
/* 0x0006 */ u16 deaths; // original name: savect
|
||||
/* 0x0008 */ char playerName[8]; // original name: player_name
|
||||
/* 0x0010 */ s16 healthCapacity; // original name: max_life
|
||||
/* 0x0012 */ s16 health; // original name: now_life
|
||||
/* 0x0014 */ s8 magicLevel; // original name: magic_max
|
||||
/* 0x0015 */ s8 magic; // original name: magic_now
|
||||
/* 0x0016 */ s16 rupees; // original name: lupy_count
|
||||
/* 0x0018 */ u16 swordHealth; // original name: long_sword_hp
|
||||
/* 0x001A */ u16 tatlTimer; // original name: navi_timer
|
||||
/* 0x001C */ u8 magicAcquired; // original name: magic_mode
|
||||
/* 0x001D */ u8 doubleMagic; // original name: magic_ability
|
||||
/* 0x001E */ u8 doubleDefense; // original name: life_ability
|
||||
/* 0x001F */ u8 unk_1F; // original name: ocarina_round
|
||||
/* 0x0020 */ u8 unk_20; // original name: first_memory
|
||||
/* 0x0022 */ u16 owlActivationFlags; // original name: memory_warp_point
|
||||
/* 0x0024 */ u8 unk_24; // original name: last_warp_pt
|
||||
/* 0x0026 */ s16 savedSceneNum; // original name: scene_data_ID
|
||||
} SavePlayerData; // size = 0x28
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 entranceIndex; // "scene_no"
|
||||
/* 0x0004 */ u8 equippedMask; // "player_mask"
|
||||
@@ -51,51 +88,38 @@ typedef struct {
|
||||
/* 0x000C */ u16 time; // "zelda_time"
|
||||
/* 0x000E */ u16 owlSaveLocation;
|
||||
/* 0x0010 */ s32 isNight; // "asahiru_fg"
|
||||
/* 0x0014 */ u32 unk_14; // "change_zelda_time"
|
||||
/* 0x0014 */ u32 daySpeed; // "change_zelda_time"
|
||||
/* 0x0018 */ s32 day; // "totalday"
|
||||
/* 0x001C */ u32 daysElapsed; // "eventday"
|
||||
/* 0x0020 */ u8 playerForm; // "player_character"
|
||||
/* 0x0021 */ u8 snowheadCleared; // "spring_flag"
|
||||
/* 0x0022 */ u8 hasTatl; // "bell_flag"
|
||||
/* 0x0023 */ u8 isOwlSave;
|
||||
/* 0x0024 */ char newf[6]; // Will always be "ZELDA3" for a valid save
|
||||
/* 0x002B */ u16 deaths; // "savect"
|
||||
/* 0x002C */ char playerName[8]; // "player_name"
|
||||
/* 0x0034 */ s16 healthCapacity; // "max_life"
|
||||
/* 0x0036 */ s16 health; // "now_life"
|
||||
/* 0x0038 */ s8 magicLevel; // "magic_max"
|
||||
/* 0x0039 */ s8 magic; // "magic_now"
|
||||
/* 0x003A */ s16 rupees; // "lupy_count"
|
||||
/* 0x003C */ u16 swordHealth; // "long_sword_hp"
|
||||
/* 0x003E */ u16 naviTimer; // "navi_timer"
|
||||
/* 0x0040 */ u8 magicAcquired; // "magic_mode"
|
||||
/* 0x0041 */ u8 doubleMagic; // "magic_ability"
|
||||
/* 0x0042 */ u8 doubleDefense; // "life_ability"
|
||||
/* 0x0043 */ u8 unk_43; // "ocarina_round"
|
||||
/* 0x0044 */ u8 unk_44; // "first_memory"
|
||||
/* 0x0046 */ u16 owlActivationFlags; // "memory_warp_point"
|
||||
/* 0x0048 */ u8 unk_48; // "last_warp_pt"
|
||||
/* 0x004A */ s16 savedSceneNum; // "scene_data_ID"
|
||||
/* 0x0024 */ SavePlayerData playerData;
|
||||
/* 0x004C */ ItemEquips equips;
|
||||
/* 0x0070 */ Inventory inventory;
|
||||
/* 0x00F8 */ u32 roomInf[128][7];
|
||||
/* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg"
|
||||
/* 0x0F5C */ u32 mapsVisited; // "area_arrival"
|
||||
/* 0x0F60 */ u32 unk_F60; // "cloud_clear"
|
||||
/* 0x0F60 */ u32 mapsVisible; // "cloud_clear"
|
||||
/* 0x0F64 */ u8 unk_F64; // "oca_rec_flag"
|
||||
/* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8"
|
||||
/* 0x0F66 */ u8 unk_F66[128]; // "oca_rec_buff8"
|
||||
/* 0x0FE6 */ s8 unk_FE6; // "aikotoba_index"
|
||||
/* 0x0FE7 */ s8 unk_FE7[5]; // "aikotoba_table"
|
||||
/* 0x0F66 */ u8 scarecrowsSong[128]; // "oca_rec_buff8"
|
||||
/* 0x0FE6 */ s8 bombersCaughtNum; // "aikotoba_index"
|
||||
/* 0x0FE7 */ s8 bombersCaughtOrder[5]; // "aikotoba_table"
|
||||
/* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table"
|
||||
/* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table"
|
||||
/* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table"
|
||||
/* 0x1000 */ HorseData horseData;
|
||||
/* 0x100A */ u16 checksum; // "check_sum"
|
||||
} Save; // size = 0x100C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Save save;
|
||||
/* 0x100C */ u8 eventInf[8];
|
||||
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
|
||||
/* 0x1015 */ u8 unk_1015;
|
||||
/* 0x1016 */ u16 unk_1016;
|
||||
/* 0x1016 */ u16 jinxTimer;
|
||||
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
|
||||
/* 0x101A */ u8 unk_101A[6]; // "bottle_status", one entry for each bottle
|
||||
/* 0x1020 */ OSTime unk_1020[6]; // "bottle_ostime", one entry for each bottle
|
||||
@@ -152,11 +176,7 @@ typedef struct {
|
||||
/* 0x3F3C */ u16 unk_3F3C; // "yabusame_out_ct"
|
||||
/* 0x3F3E */ u8 unk_3F3E; // "no_save"
|
||||
/* 0x3F3F */ u8 unk_3F3F; // "flash_flag"
|
||||
/* 0x3F40 */ u16 option_id; // "option_id"
|
||||
/* 0x3F42 */ u8 language; // "j_n"
|
||||
/* 0x3F43 */ u8 audioSetting; // "s_sound"
|
||||
/* 0x3F44 */ u8 unk_3F44; // "language"
|
||||
/* 0x3F45 */ u8 zTargetSetting; // 0: Switch; 1: Hold
|
||||
/* 0x3F40 */ SaveOptions options;
|
||||
/* 0x3F46 */ u16 unk_3F46; // "NottoriBgm"
|
||||
/* 0x3F48 */ u8 unk_3F48; // "fade_go"
|
||||
/* 0x3F4A */ u16 nextCutsceneIndex; // "next_daytime"
|
||||
@@ -164,7 +184,7 @@ typedef struct {
|
||||
/* 0x3F4D */ u8 unk_3F4D; // "Kenjya_no"
|
||||
/* 0x3F4E */ u16 nextDayTime; // "next_zelda_time"
|
||||
/* 0x3F50 */ u8 fadeDuration; // "fade_speed"
|
||||
/* 0x3F51 */ u8 unk_3F51; // "wipe_speed"
|
||||
/* 0x3F51 */ u8 fadeSpeed; // "wipe_speed"
|
||||
/* 0x3F52 */ u16 environmentTime; // "kankyo_time"
|
||||
/* 0x3F54 */ u8 dogIsLost; // "dog_event_flag"
|
||||
/* 0x3F55 */ u8 nextTransition; // "next_wipe"
|
||||
@@ -172,12 +192,12 @@ typedef struct {
|
||||
/* 0x3F58 */ s16 unk_3F58; // "sunmoon_flag"
|
||||
/* 0x3F5A */ s16 healthAccumulator; // "life_mode"
|
||||
/* 0x3F5C */ s32 unk_3F5C; // "bet_rupees"
|
||||
/* 0x3F60 */ u8 unk_3F60; // "framescale_flag"
|
||||
/* 0x3F64 */ f32 unk_3F64; // "framescale_scale"
|
||||
/* 0x3F68 */ u32 unk_3F68[5][120];
|
||||
/* 0x3F60 */ u8 screenScaleFlag; // "framescale_flag"
|
||||
/* 0x3F64 */ f32 screenScale; // "framescale_scale"
|
||||
/* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120];
|
||||
/* 0x48C8 */ u16 unk_48C8; // "scene_id_mix"
|
||||
/* 0x48CA */ u8 maskMaskBit[3]; // masks given away on the Moon
|
||||
/* 0x48CD */ char unk_48CD[24];
|
||||
/* 0x48CD */ u8 unk_48CD[24];
|
||||
} SaveContext; // size = 0x48C8
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
u8 sYaz0DataBuffer[0x400];
|
||||
|
||||
+15
-15
@@ -457,7 +457,7 @@ s32 func_8012EE34(s16 arg0) {
|
||||
}
|
||||
}
|
||||
|
||||
if (gSaveContext.roomInf[125][num] & gBitFlags[arg0 - (num << 5)]) {
|
||||
if (gSaveContext.save.roomInf[125][num] & gBitFlags[arg0 - (num << 5)]) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -503,23 +503,23 @@ void func_8012EF0C(s16 arg0) {
|
||||
}
|
||||
|
||||
// Required to match
|
||||
gSaveContext.roomInf[125][phi_v1] =
|
||||
gSaveContext.roomInf[125][phi_v1] | gBitFlags[(s16)(*new_var)[phi_v0] - (phi_v1 << 5)];
|
||||
gSaveContext.save.roomInf[125][phi_v1] =
|
||||
gSaveContext.save.roomInf[125][phi_v1] | gBitFlags[(s16)(*new_var)[phi_v0] - (phi_v1 << 5)];
|
||||
phi_v0++;
|
||||
}
|
||||
|
||||
if ((*new_var) == D_801C2380[0]) {
|
||||
gSaveContext.unk_F60 |= 3;
|
||||
gSaveContext.save.mapsVisible |= 3;
|
||||
} else if ((*new_var) == D_801C2380[1]) {
|
||||
gSaveContext.unk_F60 |= 0x1C;
|
||||
gSaveContext.save.mapsVisible |= 0x1C;
|
||||
} else if ((*new_var) == D_801C2380[2]) {
|
||||
gSaveContext.unk_F60 |= 0xE0;
|
||||
gSaveContext.save.mapsVisible |= 0xE0;
|
||||
} else if ((*new_var) == D_801C2380[3]) {
|
||||
gSaveContext.unk_F60 |= 0x100;
|
||||
gSaveContext.save.mapsVisible |= 0x100;
|
||||
} else if ((*new_var) == D_801C2380[4]) {
|
||||
gSaveContext.unk_F60 |= 0x1E00;
|
||||
gSaveContext.save.mapsVisible |= 0x1E00;
|
||||
} else if ((*new_var) == D_801C2380[5]) {
|
||||
gSaveContext.unk_F60 |= 0x6000;
|
||||
gSaveContext.save.mapsVisible |= 0x6000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -533,11 +533,11 @@ void func_8012F0EC(s16 arg0);
|
||||
// regalloc
|
||||
void func_8012F1BC(s16 sceneIndex) {
|
||||
if (sceneIndex == SCENE_KINSTA1) {
|
||||
gSaveContext.roomInf[126][0] = ((((gSaveContext.roomInf[126][0] & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.roomInf[126][0] & 0xFFFF);
|
||||
gSaveContext.save.roomInf[126][0] = ((((gSaveContext.save.roomInf[126][0] & 0xFFFF0000) >> 0x10) + 1) << 0x10) |
|
||||
(gSaveContext.save.roomInf[126][0] & 0xFFFF);
|
||||
} else {
|
||||
gSaveContext.roomInf[126][0] =
|
||||
((gSaveContext.roomInf[126][0] + 1) & 0xFFFF) | (gSaveContext.roomInf[126][0] & 0xFFFF0000);
|
||||
gSaveContext.save.roomInf[126][0] =
|
||||
((gSaveContext.save.roomInf[126][0] + 1) & 0xFFFF) | (gSaveContext.save.roomInf[126][0] & 0xFFFF0000);
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -547,9 +547,9 @@ void func_8012F1BC(s16 arg0);
|
||||
|
||||
s16 func_8012F22C(s16 sceneIndex) {
|
||||
if (sceneIndex == SCENE_KINSTA1) {
|
||||
return (gSaveContext.roomInf[126][0] & 0xFFFF0000) >> 0x10;
|
||||
return (gSaveContext.save.roomInf[126][0] & 0xFFFF0000) >> 0x10;
|
||||
} else {
|
||||
return gSaveContext.roomInf[126][0] & 0xFFFF;
|
||||
return gSaveContext.save.roomInf[126][0] & 0xFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+102
-102
@@ -12,106 +12,106 @@
|
||||
#include "global.h"
|
||||
|
||||
static FlagSetEntry sFlagEntries[] = {
|
||||
{ &gSaveContext.weekEventReg[0], "week_event_reg[0]" },
|
||||
{ &gSaveContext.weekEventReg[1], "week_event_reg[1]" },
|
||||
{ &gSaveContext.weekEventReg[2], "week_event_reg[2]" },
|
||||
{ &gSaveContext.weekEventReg[3], "week_event_reg[3]" },
|
||||
{ &gSaveContext.weekEventReg[4], "week_event_reg[4]" },
|
||||
{ &gSaveContext.weekEventReg[5], "week_event_reg[5]" },
|
||||
{ &gSaveContext.weekEventReg[6], "week_event_reg[6]" },
|
||||
{ &gSaveContext.weekEventReg[7], "week_event_reg[7]" },
|
||||
{ &gSaveContext.weekEventReg[8], "week_event_reg[8]" },
|
||||
{ &gSaveContext.weekEventReg[9], "week_event_reg[9]" },
|
||||
{ &gSaveContext.weekEventReg[10], "week_event_reg[10]" },
|
||||
{ &gSaveContext.weekEventReg[11], "week_event_reg[11]" },
|
||||
{ &gSaveContext.weekEventReg[12], "week_event_reg[12]" },
|
||||
{ &gSaveContext.weekEventReg[13], "week_event_reg[13]" },
|
||||
{ &gSaveContext.weekEventReg[14], "week_event_reg[14]" },
|
||||
{ &gSaveContext.weekEventReg[15], "week_event_reg[15]" },
|
||||
{ &gSaveContext.weekEventReg[16], "week_event_reg[16]" },
|
||||
{ &gSaveContext.weekEventReg[17], "week_event_reg[17]" },
|
||||
{ &gSaveContext.weekEventReg[18], "week_event_reg[18]" },
|
||||
{ &gSaveContext.weekEventReg[19], "week_event_reg[19]" },
|
||||
{ &gSaveContext.weekEventReg[20], "week_event_reg[20]" },
|
||||
{ &gSaveContext.weekEventReg[21], "week_event_reg[21]" },
|
||||
{ &gSaveContext.weekEventReg[22], "week_event_reg[22]" },
|
||||
{ &gSaveContext.weekEventReg[23], "week_event_reg[23]" },
|
||||
{ &gSaveContext.weekEventReg[24], "week_event_reg[24]" },
|
||||
{ &gSaveContext.weekEventReg[25], "week_event_reg[25]" },
|
||||
{ &gSaveContext.weekEventReg[26], "week_event_reg[26]" },
|
||||
{ &gSaveContext.weekEventReg[27], "week_event_reg[27]" },
|
||||
{ &gSaveContext.weekEventReg[28], "week_event_reg[28]" },
|
||||
{ &gSaveContext.weekEventReg[29], "week_event_reg[29]" },
|
||||
{ &gSaveContext.weekEventReg[30], "week_event_reg[30]" },
|
||||
{ &gSaveContext.weekEventReg[31], "week_event_reg[31]" },
|
||||
{ &gSaveContext.weekEventReg[32], "week_event_reg[32]" },
|
||||
{ &gSaveContext.weekEventReg[33], "week_event_reg[33]" },
|
||||
{ &gSaveContext.weekEventReg[34], "week_event_reg[34]" },
|
||||
{ &gSaveContext.weekEventReg[35], "week_event_reg[35]" },
|
||||
{ &gSaveContext.weekEventReg[36], "week_event_reg[36]" },
|
||||
{ &gSaveContext.weekEventReg[37], "week_event_reg[37]" },
|
||||
{ &gSaveContext.weekEventReg[38], "week_event_reg[38]" },
|
||||
{ &gSaveContext.weekEventReg[39], "week_event_reg[39]" },
|
||||
{ &gSaveContext.weekEventReg[40], "week_event_reg[40]" },
|
||||
{ &gSaveContext.weekEventReg[41], "week_event_reg[41]" },
|
||||
{ &gSaveContext.weekEventReg[42], "week_event_reg[42]" },
|
||||
{ &gSaveContext.weekEventReg[43], "week_event_reg[43]" },
|
||||
{ &gSaveContext.weekEventReg[44], "week_event_reg[44]" },
|
||||
{ &gSaveContext.weekEventReg[45], "week_event_reg[45]" },
|
||||
{ &gSaveContext.weekEventReg[46], "week_event_reg[46]" },
|
||||
{ &gSaveContext.weekEventReg[47], "week_event_reg[47]" },
|
||||
{ &gSaveContext.weekEventReg[48], "week_event_reg[48]" },
|
||||
{ &gSaveContext.weekEventReg[49], "week_event_reg[49]" },
|
||||
{ &gSaveContext.weekEventReg[50], "week_event_reg[50]" },
|
||||
{ &gSaveContext.weekEventReg[51], "week_event_reg[51]" },
|
||||
{ &gSaveContext.weekEventReg[52], "week_event_reg[52]" },
|
||||
{ &gSaveContext.weekEventReg[53], "week_event_reg[53]" },
|
||||
{ &gSaveContext.weekEventReg[54], "week_event_reg[54]" },
|
||||
{ &gSaveContext.weekEventReg[55], "week_event_reg[55]" },
|
||||
{ &gSaveContext.weekEventReg[56], "week_event_reg[56]" },
|
||||
{ &gSaveContext.weekEventReg[57], "week_event_reg[57]" },
|
||||
{ &gSaveContext.weekEventReg[58], "week_event_reg[58]" },
|
||||
{ &gSaveContext.weekEventReg[59], "week_event_reg[59]" },
|
||||
{ &gSaveContext.weekEventReg[60], "week_event_reg[60]" },
|
||||
{ &gSaveContext.weekEventReg[61], "week_event_reg[61]" },
|
||||
{ &gSaveContext.weekEventReg[62], "week_event_reg[62]" },
|
||||
{ &gSaveContext.weekEventReg[63], "week_event_reg[63]" },
|
||||
{ &gSaveContext.weekEventReg[64], "week_event_reg[64]" },
|
||||
{ &gSaveContext.weekEventReg[65], "week_event_reg[65]" },
|
||||
{ &gSaveContext.weekEventReg[66], "week_event_reg[66]" },
|
||||
{ &gSaveContext.weekEventReg[67], "week_event_reg[67]" },
|
||||
{ &gSaveContext.weekEventReg[68], "week_event_reg[68]" },
|
||||
{ &gSaveContext.weekEventReg[69], "week_event_reg[69]" },
|
||||
{ &gSaveContext.weekEventReg[70], "week_event_reg[70]" },
|
||||
{ &gSaveContext.weekEventReg[71], "week_event_reg[71]" },
|
||||
{ &gSaveContext.weekEventReg[72], "week_event_reg[72]" },
|
||||
{ &gSaveContext.weekEventReg[73], "week_event_reg[73]" },
|
||||
{ &gSaveContext.weekEventReg[74], "week_event_reg[74]" },
|
||||
{ &gSaveContext.weekEventReg[75], "week_event_reg[75]" },
|
||||
{ &gSaveContext.weekEventReg[76], "week_event_reg[76]" },
|
||||
{ &gSaveContext.weekEventReg[77], "week_event_reg[77]" },
|
||||
{ &gSaveContext.weekEventReg[78], "week_event_reg[78]" },
|
||||
{ &gSaveContext.weekEventReg[79], "week_event_reg[79]" },
|
||||
{ &gSaveContext.weekEventReg[80], "week_event_reg[80]" },
|
||||
{ &gSaveContext.weekEventReg[81], "week_event_reg[81]" },
|
||||
{ &gSaveContext.weekEventReg[82], "week_event_reg[82]" },
|
||||
{ &gSaveContext.weekEventReg[83], "week_event_reg[83]" },
|
||||
{ &gSaveContext.weekEventReg[84], "week_event_reg[84]" },
|
||||
{ &gSaveContext.weekEventReg[85], "week_event_reg[85]" },
|
||||
{ &gSaveContext.weekEventReg[86], "week_event_reg[86]" },
|
||||
{ &gSaveContext.weekEventReg[87], "week_event_reg[87]" },
|
||||
{ &gSaveContext.weekEventReg[88], "week_event_reg[88]" },
|
||||
{ &gSaveContext.weekEventReg[89], "week_event_reg[89]" },
|
||||
{ &gSaveContext.weekEventReg[90], "week_event_reg[90]" },
|
||||
{ &gSaveContext.weekEventReg[91], "week_event_reg[91]" },
|
||||
{ &gSaveContext.weekEventReg[92], "week_event_reg[92]" },
|
||||
{ &gSaveContext.weekEventReg[93], "week_event_reg[93]" },
|
||||
{ &gSaveContext.weekEventReg[94], "week_event_reg[94]" },
|
||||
{ &gSaveContext.weekEventReg[95], "week_event_reg[95]" },
|
||||
{ &gSaveContext.weekEventReg[96], "week_event_reg[96]" },
|
||||
{ &gSaveContext.weekEventReg[97], "week_event_reg[97]" },
|
||||
{ &gSaveContext.weekEventReg[98], "week_event_reg[98]" },
|
||||
{ &gSaveContext.weekEventReg[99], "week_event_reg[99]" },
|
||||
{ &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.eventInf[0], "event_inf[0]" },
|
||||
{ &gSaveContext.eventInf[1], "event_inf[1]" },
|
||||
@@ -245,8 +245,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.weekEventReg); i++) {
|
||||
gSaveContext.weekEventReg[i] = 0;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.save.weekEventReg); i++) {
|
||||
gSaveContext.save.weekEventReg[i] = 0;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.eventInf); i++) {
|
||||
gSaveContext.eventInf[i] = 0;
|
||||
|
||||
@@ -4,7 +4,7 @@ SaveContext gSaveContext;
|
||||
|
||||
void SaveContext_Init(void) {
|
||||
bzero(&gSaveContext, sizeof(gSaveContext));
|
||||
gSaveContext.playerForm = 0;
|
||||
gSaveContext.save.playerForm = 0;
|
||||
gSaveContext.seqIndex = (u8)NA_BGM_DISABLED;
|
||||
gSaveContext.nightSeqIndex = 0xFF;
|
||||
gSaveContext.unk_3F46 = NA_BGM_GENERAL_SFX;
|
||||
@@ -16,7 +16,7 @@ void SaveContext_Init(void) {
|
||||
gSaveContext.dogIsLost = true;
|
||||
gSaveContext.nextTransition = 0xFF;
|
||||
gSaveContext.unk_3F26 = 50;
|
||||
gSaveContext.language = 1;
|
||||
gSaveContext.audioSetting = 0;
|
||||
gSaveContext.zTargetSetting = 0;
|
||||
gSaveContext.options.language = 1;
|
||||
gSaveContext.options.audioSetting = 0;
|
||||
gSaveContext.options.zTargetSetting = 0;
|
||||
}
|
||||
|
||||
+13
-13
@@ -7,17 +7,17 @@ u16 ElfMessage_GetFirstCycleHint(GlobalContext* globalCtx) {
|
||||
if (CURRENT_DAY <= 0) {
|
||||
return 0;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[88] & 0x20) {
|
||||
if (gSaveContext.save.weekEventReg[88] & 0x20) {
|
||||
return 0;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[79] & 0x10) {
|
||||
if (gSaveContext.weekEventReg[8] & 0x40) {
|
||||
if (gSaveContext.save.weekEventReg[79] & 0x10) {
|
||||
if (gSaveContext.save.weekEventReg[8] & 0x40) {
|
||||
return 0;
|
||||
}
|
||||
return 0x224;
|
||||
}
|
||||
if (!(gSaveContext.weekEventReg[8] & 0x80)) {
|
||||
if (gSaveContext.weekEventReg[9] & 1) {
|
||||
if (!(gSaveContext.save.weekEventReg[8] & 0x80)) {
|
||||
if (gSaveContext.save.weekEventReg[9] & 1) {
|
||||
return 0x21E;
|
||||
}
|
||||
if (globalCtx->sceneNum == SCENE_YOUSEI_IZUMI) {
|
||||
@@ -25,7 +25,7 @@ u16 ElfMessage_GetFirstCycleHint(GlobalContext* globalCtx) {
|
||||
}
|
||||
return 0x21D;
|
||||
}
|
||||
if (gSaveContext.magicAcquired != true) {
|
||||
if (gSaveContext.save.playerData.magicAcquired != true) {
|
||||
return 0x21F;
|
||||
}
|
||||
if (INV_CONTENT(ITEM_DEED_LAND) == ITEM_DEED_LAND) {
|
||||
@@ -35,27 +35,27 @@ u16 ElfMessage_GetFirstCycleHint(GlobalContext* globalCtx) {
|
||||
return 0;
|
||||
}
|
||||
if (INV_CONTENT(ITEM_MOON_TEAR) == ITEM_MOON_TEAR) {
|
||||
if (gSaveContext.weekEventReg[86] & 4) {
|
||||
if (gSaveContext.save.weekEventReg[86] & 4) {
|
||||
return 0x242;
|
||||
}
|
||||
return 0x243;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[74] & 0x20) {
|
||||
if (gSaveContext.save.weekEventReg[74] & 0x20) {
|
||||
return 0x223;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[73] & 0x80) {
|
||||
if (gSaveContext.save.weekEventReg[73] & 0x80) {
|
||||
return 0x222;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[73] & 0x20) {
|
||||
if (gSaveContext.save.weekEventReg[73] & 0x20) {
|
||||
return 0x221;
|
||||
}
|
||||
if (gSaveContext.weekEventReg[77] & 2) {
|
||||
if (gSaveContext.weekEventReg[73] & 0x10) {
|
||||
if (gSaveContext.save.weekEventReg[77] & 2) {
|
||||
if (gSaveContext.save.weekEventReg[73] & 0x10) {
|
||||
return 0x240;
|
||||
}
|
||||
return 0x241;
|
||||
}
|
||||
if ((gSaveContext.weekEventReg[86] & 2) || (gSaveContext.weekEventReg[73] & 0x40)) {
|
||||
if ((gSaveContext.save.weekEventReg[86] & 2) || (gSaveContext.save.weekEventReg[73] & 0x40)) {
|
||||
return 0x23F;
|
||||
}
|
||||
return 0x220;
|
||||
|
||||
+12
-12
@@ -814,13 +814,13 @@ s16 func_800A7650(s16 dropId) {
|
||||
(((dropId == ITEM00_ARROWS_10) || (dropId == ITEM00_ARROWS_30) || (dropId == ITEM00_ARROWS_40) ||
|
||||
(dropId == ITEM00_ARROWS_50)) &&
|
||||
(INV_CONTENT(ITEM_BOW) == ITEM_NONE)) ||
|
||||
(((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) && (gSaveContext.magicLevel == 0))) {
|
||||
(((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) && (gSaveContext.save.playerData.magicLevel == 0))) {
|
||||
return ITEM00_NO_DROP;
|
||||
}
|
||||
|
||||
if (dropId == ITEM00_HEART) {
|
||||
healthCapacity = gSaveContext.healthCapacity;
|
||||
if (healthCapacity == gSaveContext.health) {
|
||||
healthCapacity = gSaveContext.save.playerData.healthCapacity;
|
||||
if (healthCapacity == gSaveContext.save.playerData.health) {
|
||||
return ITEM00_RUPEE_GREEN;
|
||||
}
|
||||
}
|
||||
@@ -1066,9 +1066,9 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
|
||||
if (dropId == ITEM00_MASK) {
|
||||
dropQuantity = 1;
|
||||
if (gSaveContext.playerForm != PLAYER_FORM_GORON) {
|
||||
if (gSaveContext.playerForm != PLAYER_FORM_ZORA) {
|
||||
if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) {
|
||||
if (gSaveContext.save.playerForm != PLAYER_FORM_GORON) {
|
||||
if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) {
|
||||
if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) {
|
||||
dropId = ITEM00_RUPEE_GREEN;
|
||||
} else {
|
||||
dropId = ITEM00_ARROWS_10;
|
||||
@@ -1097,26 +1097,26 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
}
|
||||
|
||||
if (dropId == ITEM00_FLEXIBLE) {
|
||||
if (gSaveContext.health < 0x11) {
|
||||
if (gSaveContext.save.playerData.health < 0x11) {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, 2);
|
||||
Audio_PlaySoundAtPosition(globalCtx, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gSaveContext.health < 0x31) {
|
||||
if (gSaveContext.save.playerData.health < 0x31) {
|
||||
params = 0x10;
|
||||
dropId = ITEM00_HEART;
|
||||
dropQuantity = 3;
|
||||
} else if (gSaveContext.health < 0x51) {
|
||||
} else if (gSaveContext.save.playerData.health < 0x51) {
|
||||
params = 0x10;
|
||||
dropId = ITEM00_HEART;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.magicLevel != 0) && (gSaveContext.magic == 0)) {
|
||||
} else if ((gSaveContext.save.playerData.magicLevel != 0) && (gSaveContext.save.playerData.magic == 0)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.magicLevel != 0) && ((gSaveContext.magicLevel >> 1) >= gSaveContext.magic)) {
|
||||
} else if ((gSaveContext.save.playerData.magicLevel != 0) && ((gSaveContext.save.playerData.magicLevel >> 1) >= gSaveContext.save.playerData.magic)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
@@ -1128,7 +1128,7 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
params = 0xB0;
|
||||
dropId = ITEM00_BOMBS_A;
|
||||
dropQuantity = 1;
|
||||
} else if (gSaveContext.rupees < 11) {
|
||||
} else if (gSaveContext.save.playerData.rupees < 11) {
|
||||
params = 0xA0;
|
||||
dropId = ITEM00_RUPEE_RED;
|
||||
dropQuantity = 1;
|
||||
|
||||
@@ -44,7 +44,7 @@ void GameOver_Update(GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
gSaveContext.unk_3DC0 = 2000;
|
||||
gSaveContext.naviTimer = 0;
|
||||
gSaveContext.save.playerData.tatlTimer = 0;
|
||||
gSaveContext.seqIndex = (u8)NA_BGM_DISABLED;
|
||||
gSaveContext.nightSeqIndex = 0xFF;
|
||||
gSaveContext.eventInf[0] = 0;
|
||||
@@ -72,11 +72,11 @@ void GameOver_Update(GlobalContext* globalCtx) {
|
||||
gSaveContext.respawnFlag = -6;
|
||||
}
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.health = 48;
|
||||
gSaveContext.save.playerData.health = 48;
|
||||
gameOverCtx->state++;
|
||||
if (gSaveContext.inventory.items[SLOT(ITEM_MASK_DEKU)] == ITEM_MASK_DEKU) {
|
||||
gSaveContext.playerForm = PLAYER_FORM_HUMAN;
|
||||
gSaveContext.equippedMask = PLAYER_MASK_NONE;
|
||||
if (gSaveContext.save.inventory.items[SLOT(ITEM_MASK_DEKU)] == ITEM_MASK_DEKU) {
|
||||
gSaveContext.save.playerForm = PLAYER_FORM_HUMAN;
|
||||
gSaveContext.save.equippedMask = PLAYER_MASK_NONE;
|
||||
}
|
||||
func_8013EE24();
|
||||
}
|
||||
|
||||
+14
-14
@@ -38,7 +38,7 @@ void LifeMeter_Init(GlobalContext* globalCtx) {
|
||||
|
||||
interfaceCtx->unkTimer = 320;
|
||||
|
||||
interfaceCtx->health = gSaveContext.health;
|
||||
interfaceCtx->health = gSaveContext.save.playerData.health;
|
||||
|
||||
interfaceCtx->lifeColorChange = 0;
|
||||
interfaceCtx->lifeColorChangeDirection = 0;
|
||||
@@ -168,7 +168,7 @@ void LifeMeter_UpdateColors(GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
s32 LifeMeter_SaveInterfaceHealth(GlobalContext* globalCtx) {
|
||||
gSaveContext.health = globalCtx->interfaceCtx.health;
|
||||
gSaveContext.save.playerData.health = globalCtx->interfaceCtx.health;
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -178,8 +178,8 @@ s32 LifeMeter_IncreaseInterfaceHealth(GlobalContext* globalCtx) {
|
||||
|
||||
interfaceCtx->unkTimer = 320;
|
||||
interfaceCtx->health += 0x10;
|
||||
if (globalCtx->interfaceCtx.health >= gSaveContext.health) {
|
||||
globalCtx->interfaceCtx.health = gSaveContext.health;
|
||||
if (globalCtx->interfaceCtx.health >= gSaveContext.save.playerData.health) {
|
||||
globalCtx->interfaceCtx.health = gSaveContext.save.playerData.health;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -195,7 +195,7 @@ s32 LifeMeter_DecreaseInterfaceHealth(GlobalContext* globalCtx) {
|
||||
interfaceCtx->health -= 0x10;
|
||||
if (interfaceCtx->health <= 0) {
|
||||
interfaceCtx->health = 0;
|
||||
globalCtx->damagePlayer(globalCtx, -(((void)0, gSaveContext.health) + 1));
|
||||
globalCtx->damagePlayer(globalCtx, -(((void)0, gSaveContext.save.playerData.health) + 1));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -216,18 +216,18 @@ void LifeMeter_Draw(GlobalContext* globalCtx) {
|
||||
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
||||
InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
|
||||
Vtx* beatingHeartVtx = interfaceCtx->beatingHeartVtx;
|
||||
s32 fractionHeartCount = gSaveContext.health % 0x10;
|
||||
s16 healthCapacity = gSaveContext.healthCapacity / 0x10;
|
||||
s16 fullHeartCount = gSaveContext.health / 0x10;
|
||||
s32 fractionHeartCount = gSaveContext.save.playerData.health % 0x10;
|
||||
s16 healthCapacity = gSaveContext.save.playerData.healthCapacity / 0x10;
|
||||
s16 fullHeartCount = gSaveContext.save.playerData.health / 0x10;
|
||||
s32 pad2;
|
||||
f32 lifesize = interfaceCtx->lifeSizeChange * 0.1f;
|
||||
u32 curCombineModeSet = 0;
|
||||
TexturePtr temp = NULL;
|
||||
s32 ddCount = gSaveContext.inventory.dungeonKeys[9] - 1;
|
||||
s32 ddCount = gSaveContext.save.inventory.dungeonKeys[9] - 1;
|
||||
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
if ((gSaveContext.health % 0x10) == 0) {
|
||||
if ((gSaveContext.save.playerData.health % 0x10) == 0) {
|
||||
fullHeartCount--;
|
||||
}
|
||||
offsetY = 0.0f;
|
||||
@@ -417,19 +417,19 @@ void LifeMeter_UpdateSizeAndBeep(GlobalContext* globalCtx) {
|
||||
u32 LifeMeter_IsCritical(void) {
|
||||
s16 criticalThreshold;
|
||||
|
||||
if (gSaveContext.healthCapacity <= 80) { // healthCapacity <= 5 hearts?
|
||||
if (gSaveContext.save.playerData.healthCapacity <= 80) { // healthCapacity <= 5 hearts?
|
||||
criticalThreshold = 16;
|
||||
|
||||
} else if (gSaveContext.healthCapacity <= 160) { // healthCapacity <= 10 hearts?
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 160) { // healthCapacity <= 10 hearts?
|
||||
criticalThreshold = 24;
|
||||
|
||||
} else if (gSaveContext.healthCapacity <= 240) { // healthCapacity <= 15 hearts?
|
||||
} else if (gSaveContext.save.playerData.healthCapacity <= 240) { // healthCapacity <= 15 hearts?
|
||||
criticalThreshold = 32;
|
||||
} else {
|
||||
criticalThreshold = 44;
|
||||
}
|
||||
|
||||
if ((criticalThreshold >= gSaveContext.health) && (gSaveContext.health > 0)) {
|
||||
if ((criticalThreshold >= gSaveContext.save.playerData.health) && (gSaveContext.save.playerData.health > 0)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
+10
-10
@@ -162,7 +162,7 @@ void Scene_HeaderCmdSpawnList(GlobalContext* globalCtx, SceneCmd* cmd) {
|
||||
nextObject = globalCtx2->objectCtx.status[globalCtx2->objectCtx.num].segment;
|
||||
globalCtx->objectCtx.num = loadedCount;
|
||||
globalCtx->objectCtx.spawnedObjectCount = loadedCount;
|
||||
playerForm = gSaveContext.playerForm;
|
||||
playerForm = gSaveContext.save.playerForm;
|
||||
playerObjectId = gLinkFormObjectIndexes[playerForm];
|
||||
gActorOverlayTable[0].initInfo->objectId = playerObjectId;
|
||||
Object_Spawn(&globalCtx->objectCtx, playerObjectId);
|
||||
@@ -383,7 +383,7 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) {
|
||||
u32 dayTime;
|
||||
|
||||
if (cmd->timeSettings.hour != 0xFF && cmd->timeSettings.min != 0xFF) {
|
||||
gSaveContext.environmentTime = gSaveContext.time =
|
||||
gSaveContext.environmentTime = gSaveContext.save.time =
|
||||
(u16)(((cmd->timeSettings.hour + (cmd->timeSettings.min / 60.0f)) * 60.0f) / 0.021972656f);
|
||||
}
|
||||
|
||||
@@ -393,7 +393,7 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) {
|
||||
globalCtx->envCtx.unk_2 = 0;
|
||||
}
|
||||
|
||||
if ((gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.unk_2 != 0)) {
|
||||
if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.unk_2 != 0)) {
|
||||
globalCtx->envCtx.unk_2 = 5;
|
||||
}
|
||||
|
||||
@@ -401,15 +401,15 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) {
|
||||
REG(15) = globalCtx->envCtx.unk_2;
|
||||
}
|
||||
|
||||
dayTime = gSaveContext.time;
|
||||
dayTime = gSaveContext.save.time;
|
||||
globalCtx->envCtx.unk_4 = -(Math_SinS(dayTime - 0x8000) * 120.0f) * 25.0f;
|
||||
dayTime = gSaveContext.time;
|
||||
dayTime = gSaveContext.save.time;
|
||||
globalCtx->envCtx.unk_8 = (Math_CosS(dayTime - 0x8000) * 120.0f) * 25.0f;
|
||||
dayTime = gSaveContext.time;
|
||||
dayTime = gSaveContext.save.time;
|
||||
globalCtx->envCtx.unk_C = (Math_CosS(dayTime - 0x8000) * 20.0f) * 25.0f;
|
||||
|
||||
if (globalCtx->envCtx.unk_2 == 0 && gSaveContext.cutscene < 0xFFF0) {
|
||||
gSaveContext.environmentTime = gSaveContext.time;
|
||||
if (globalCtx->envCtx.unk_2 == 0 && gSaveContext.save.cutscene < 0xFFF0) {
|
||||
gSaveContext.environmentTime = gSaveContext.save.time;
|
||||
|
||||
if (gSaveContext.environmentTime >= 0x2AAA && gSaveContext.environmentTime < 0x4555) {
|
||||
gSaveContext.environmentTime = 0x3555;
|
||||
@@ -525,7 +525,7 @@ void Scene_HeaderCmdSetAreaVisitedFlag(GlobalContext* globalCtx, SceneCmd* cmd)
|
||||
}
|
||||
|
||||
if (i < ARRAY_COUNT(gScenesPerRegion)) {
|
||||
gSaveContext.mapsVisited = (gBitFlags[i] | gSaveContext.mapsVisited) | gSaveContext.mapsVisited;
|
||||
gSaveContext.save.mapsVisited = (gBitFlags[i] | gSaveContext.save.mapsVisited) | gSaveContext.save.mapsVisited;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -608,5 +608,5 @@ u16 Entrance_CreateIndex(s32 sceneIndex, s32 spawnIndex, s32 sceneSetup) {
|
||||
* Creates an entrance index from the current entrance index with the given spawn index.
|
||||
*/
|
||||
u16 Entrance_CreateIndexFromSpawn(s32 spawnIndex) {
|
||||
return Entrance_CreateIndex(gSaveContext.entranceIndex >> 9, spawnIndex, 0);
|
||||
return Entrance_CreateIndex(gSaveContext.save.entranceIndex >> 9, spawnIndex, 0);
|
||||
}
|
||||
|
||||
+8
-8
@@ -12,8 +12,8 @@ s32 func_8013A240(GlobalContext* globalCtx) {
|
||||
s32 seen;
|
||||
s32 count = 0;
|
||||
|
||||
gSaveContext.roomInf[123][3] = 0;
|
||||
gSaveContext.roomInf[123][4] = 0;
|
||||
gSaveContext.save.roomInf[123][3] = 0;
|
||||
gSaveContext.save.roomInf[123][4] = 0;
|
||||
|
||||
if (globalCtx->sceneNum == SCENE_20SICHITAI) {
|
||||
func_8013A41C(1);
|
||||
@@ -76,19 +76,19 @@ s32 func_8013A240(GlobalContext* globalCtx) {
|
||||
|
||||
void func_8013A41C(s32 flag) {
|
||||
if (flag < 0x20) {
|
||||
gSaveContext.roomInf[123][3] |= (1 << flag);
|
||||
gSaveContext.save.roomInf[123][3] |= (1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
gSaveContext.roomInf[123][4] |= (1 << flag);
|
||||
gSaveContext.save.roomInf[123][4] |= (1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8013A46C(s32 flag) {
|
||||
if (flag < 0x20) {
|
||||
gSaveContext.roomInf[123][3] &= ~(1 << flag);
|
||||
gSaveContext.save.roomInf[123][3] &= ~(1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
gSaveContext.roomInf[123][4] &= ~(1 << flag);
|
||||
gSaveContext.save.roomInf[123][4] &= ~(1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,10 +96,10 @@ u32 func_8013A4C4(s32 flag) {
|
||||
SaveContext* saveCtx = &gSaveContext;
|
||||
|
||||
if (flag < 0x20) {
|
||||
return saveCtx->roomInf[123][3] & (1 << flag);
|
||||
return saveCtx->save.roomInf[123][3] & (1 << flag);
|
||||
} else {
|
||||
flag &= 0x1F;
|
||||
return saveCtx->roomInf[123][4] & (1 << flag);
|
||||
return saveCtx->save.roomInf[123][4] & (1 << flag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ void BgIknvObj_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->dyna.actor, &sCylinderInit);
|
||||
Collider_UpdateCylinder(&this->dyna.actor, &this->collider);
|
||||
this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
gSaveContext.weekEventReg[51] &= (u8)~0x10;
|
||||
gSaveContext.save.weekEventReg[51] &= (u8)~0x10;
|
||||
Actor_SetHeight(&this->dyna.actor, IREG(88));
|
||||
break;
|
||||
default:
|
||||
@@ -103,7 +103,7 @@ void BgIknvObj_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
if (IKNV_OBJ_TYPE(this) != IKNV_OBJ_RAISED_DOOR) {
|
||||
if (IKNV_OBJ_TYPE(this) == IKNV_OBJ_SAKON_DOOR) {
|
||||
Collider_DestroyCylinder(globalCtx, &this->collider);
|
||||
gSaveContext.weekEventReg[51] &= (u8)~0x10;
|
||||
gSaveContext.save.weekEventReg[51] &= (u8)~0x10;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ s32 func_80BD7CEC(BgIknvObj* this) {
|
||||
}
|
||||
|
||||
void BgIknvObj_UpdateWaterwheel(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
if (gSaveContext.weekEventReg[14] & 4) {
|
||||
if (gSaveContext.save.weekEventReg[14] & 4) {
|
||||
this->dyna.actor.shape.rot.z -= 0x64;
|
||||
func_800B9098(&this->dyna.actor);
|
||||
func_800B9010(&this->dyna.actor, NA_SE_EV_WOOD_WATER_WHEEL - SFX_FLAG);
|
||||
@@ -161,16 +161,16 @@ s32 func_80BD7E0C(BgIknvObj* this, s16 targetRotation, GlobalContext* globalCtx)
|
||||
void func_80BD7ED8(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
if (func_80BD7E0C(this, this->dyna.actor.home.rot.y, globalCtx)) {
|
||||
this->actionFunc = BgIknvObj_UpdateSakonDoor;
|
||||
gSaveContext.weekEventReg[51] &= (u8)~0x10;
|
||||
gSaveContext.save.weekEventReg[51] &= (u8)~0x10;
|
||||
}
|
||||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
void func_80BD7F4C(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
if (gSaveContext.time > 0xD000) {
|
||||
if (gSaveContext.save.time > 0xD000) {
|
||||
this->actionFunc = func_80BD7ED8;
|
||||
}
|
||||
if ((this->dyna.actor.home.rot.x == 1) && !(gSaveContext.weekEventReg[58] & 0x80)) {
|
||||
if ((this->dyna.actor.home.rot.x == 1) && !(gSaveContext.save.weekEventReg[58] & 0x80)) {
|
||||
ActorCutscene_Stop(this->dyna.actor.cutscene);
|
||||
this->dyna.actor.home.rot.x = 0;
|
||||
}
|
||||
@@ -180,7 +180,7 @@ void func_80BD7F4C(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
void func_80BD7FDC(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
if (func_80BD7E0C(this, this->dyna.actor.home.rot.y + 0x4000, globalCtx)) {
|
||||
this->actionFunc = func_80BD7F4C;
|
||||
gSaveContext.weekEventReg[51] |= 0x10;
|
||||
gSaveContext.save.weekEventReg[51] |= 0x10;
|
||||
this->dyna.actor.home.rot.x = 1;
|
||||
}
|
||||
}
|
||||
@@ -193,9 +193,9 @@ void func_80BD8040(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void BgIknvObj_UpdateSakonDoor(BgIknvObj* this, GlobalContext* globalCtx) {
|
||||
if (gSaveContext.weekEventReg[58] & 0x80) {
|
||||
if (gSaveContext.save.weekEventReg[58] & 0x80) {
|
||||
this->actionFunc = func_80BD8040;
|
||||
gSaveContext.weekEventReg[89] |= 0x80;
|
||||
gSaveContext.save.weekEventReg[89] |= 0x80;
|
||||
}
|
||||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ void BgKin2Fence_HandleMaskCode(BgKin2Fence* this, GlobalContext* globalCtx) {
|
||||
if (this->collider.base.acFlags & AC_HIT) {
|
||||
hitMask = BgKin2Fence_CheckHitMask(this);
|
||||
if (hitMask >= 0) {
|
||||
nextMask = (s8)gSaveContext.spiderHouseMaskOrder[this->masksHit];
|
||||
nextMask = (s8)gSaveContext.save.spiderHouseMaskOrder[this->masksHit];
|
||||
if (hitMask == nextMask) {
|
||||
play_sound(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
this->masksHit += 1;
|
||||
|
||||
@@ -99,7 +99,7 @@ void BgLotus_Wait(BgLotus* this, GlobalContext* globalCtx) {
|
||||
EffectSsGRipple_Spawn(globalCtx, &this->dyna.actor.world.pos, 1000, 1400, 8);
|
||||
this->timer = 40;
|
||||
}
|
||||
if (gSaveContext.playerForm != PLAYER_FORM_DEKU) {
|
||||
if (gSaveContext.save.playerForm != PLAYER_FORM_DEKU) {
|
||||
this->timer = 40;
|
||||
this->dyna.actor.flags |= 0x10;
|
||||
this->actionFunc = BgLotus_Sink;
|
||||
|
||||
@@ -40,12 +40,12 @@ void BgTobira01_Open(BgTobira01* this, GlobalContext* globalCtx) {
|
||||
ActorCutscene_Stop(0x7C);
|
||||
} else if (ActorCutscene_GetCanPlayNext(cutsceneId)) {
|
||||
ActorCutscene_StartAndSetUnkLinkFields(cutsceneId, &this->dyna.actor);
|
||||
gSaveContext.weekEventReg[88] |= 0x40;
|
||||
gSaveContext.save.weekEventReg[88] |= 0x40;
|
||||
this->playCutscene = false;
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(cutsceneId);
|
||||
}
|
||||
} else if (!(gSaveContext.weekEventReg[88] & 0x40) && (this->timer == 0) && (globalCtx->actorCtx.unk1F5 != 0) &&
|
||||
} else if (!(gSaveContext.save.weekEventReg[88] & 0x40) && (this->timer == 0) && (globalCtx->actorCtx.unk1F5 != 0) &&
|
||||
(globalCtx->actorCtx.unk1F4 == 0) &&
|
||||
(SurfaceType_GetSceneExitIndex(&globalCtx->colCtx, player->actor.floorPoly, player->actor.floorBgId) ==
|
||||
6)) {
|
||||
@@ -55,7 +55,7 @@ void BgTobira01_Open(BgTobira01* this, GlobalContext* globalCtx) {
|
||||
|
||||
prevTimer = this->timer;
|
||||
|
||||
if (gSaveContext.weekEventReg[88] & 0x40) {
|
||||
if (gSaveContext.save.weekEventReg[88] & 0x40) {
|
||||
this->timer++;
|
||||
} else {
|
||||
this->timer--;
|
||||
@@ -70,8 +70,8 @@ void BgTobira01_Open(BgTobira01* this, GlobalContext* globalCtx) {
|
||||
this->timer2 = 180;
|
||||
}
|
||||
|
||||
if (!(player->stateFlags1 & 0x40) && (gSaveContext.weekEventReg[88] & 0x40) && (DECR(this->timer2) == 0)) {
|
||||
gSaveContext.weekEventReg[88] &= (u8)~0x40;
|
||||
if (!(player->stateFlags1 & 0x40) && (gSaveContext.save.weekEventReg[88] & 0x40) && (DECR(this->timer2) == 0)) {
|
||||
gSaveContext.save.weekEventReg[88] &= (u8)~0x40;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,9 +81,9 @@ void BgTobira01_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
||||
DynaPolyActor_Init(&this->dyna, 1);
|
||||
DynaPolyActor_LoadMesh(globalCtx, &this->dyna, &D_060011C0);
|
||||
gSaveContext.weekEventReg[88] &= (u8)~0x40;
|
||||
gSaveContext.save.weekEventReg[88] &= (u8)~0x40;
|
||||
Actor_SetScale(&this->dyna.actor, 1.0f);
|
||||
this->timer2 = gSaveContext.isNight;
|
||||
this->timer2 = gSaveContext.save.isNight;
|
||||
this->timer = 0;
|
||||
this->actionFunc = BgTobira01_Open;
|
||||
}
|
||||
|
||||
@@ -577,7 +577,7 @@ void Boss02_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
s32 i;
|
||||
s32 pad[2];
|
||||
|
||||
if ((gSaveContext.weekEventReg[52] & 0x20) && (this->actor.params == 0)) {
|
||||
if ((gSaveContext.save.weekEventReg[52] & 0x20) && (this->actor.params == 0)) {
|
||||
D_809E0434 = (DoorWarp1*)Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DOOR_WARP1,
|
||||
0.0f, 60.0f, 0.0f, 0, 0, 0, 1);
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_ITEM_B_HEART, 0.0f, 30.0f, -150.0f, 0, 1, 0, 0);
|
||||
@@ -2095,7 +2095,7 @@ void func_809DEAC4(Boss02* this, GlobalContext* globalCtx) {
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if ((gSaveContext.weekEventReg[52] & 0x20) || ((u32)(KREG(13) + 15) >= this->unk_1D1C)) {
|
||||
if ((gSaveContext.save.weekEventReg[52] & 0x20) || ((u32)(KREG(13) + 15) >= this->unk_1D1C)) {
|
||||
break;
|
||||
}
|
||||
func_800EA0D4(globalCtx, &globalCtx->csCtx);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user