From 66485a79fe5238b7adf27499568edc37fae2af2f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 23 Dec 2021 02:38:22 +1100 Subject: [PATCH 001/160] Copy z64Save.h docs from z_sram_nes WIP --- docs/tutorial/advanced_control_flow.md | 42 ++-- docs/tutorial/documenting.md | 4 +- docs/tutorial/other_functions.md | 2 +- include/macros.h | 32 +-- include/z64save.h | 96 ++++---- src/boot_O2_g3/yaz0.c | 1 + src/code/code_8012EC80.c | 30 +-- src/code/flg_set.c | 204 ++++++++--------- src/code/z_common_data.c | 8 +- src/code/z_elf_message.c | 26 +-- src/code/z_en_item00.c | 24 +- src/code/z_game_over.c | 10 +- src/code/z_lifemeter.c | 28 +-- src/code/z_scene.c | 20 +- src/code/z_snap.c | 16 +- .../actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c | 18 +- .../ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c | 2 +- src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c | 2 +- .../actors/ovl_Bg_Tobira01/z_bg_tobira01.c | 14 +- src/overlays/actors/ovl_Boss_02/z_boss_02.c | 4 +- .../actors/ovl_Dm_Ravine/z_dm_ravine.c | 2 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 30 +-- .../actors/ovl_En_Baisen/z_en_baisen.c | 8 +- .../actors/ovl_En_Bji_01/z_en_bji_01.c | 28 +-- src/overlays/actors/ovl_En_Cha/z_en_cha.c | 10 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 10 +- src/overlays/actors/ovl_En_Dai/z_en_dai.c | 8 +- src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 10 +- .../actors/ovl_En_Daiku2/z_en_daiku2.c | 18 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 4 +- .../actors/ovl_En_Dinofos/z_en_dinofos.c | 2 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 18 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 16 +- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 10 +- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 12 +- .../actors/ovl_En_Elforg/z_en_elforg.c | 10 +- src/overlays/actors/ovl_En_Fish2/z_en_fish2.c | 36 +-- .../actors/ovl_En_Floormas/z_en_floormas.c | 2 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 40 ++-- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 82 +++---- src/overlays/actors/ovl_En_Giant/z_en_giant.c | 2 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 88 ++++---- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 38 ++-- src/overlays/actors/ovl_En_Gm/z_en_gm.c | 22 +- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 30 +-- .../actors/ovl_En_Guruguru/z_en_guruguru.c | 24 +- src/overlays/actors/ovl_En_Hg/z_en_hg.c | 10 +- src/overlays/actors/ovl_En_In/z_en_in.c | 164 +++++++------- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 90 ++++---- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 40 ++-- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 30 +-- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 48 ++-- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.c | 74 +++--- .../actors/ovl_En_Ma_Yts/z_en_ma_yts.c | 32 +-- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 22 +- src/overlays/actors/ovl_En_Mm/z_en_mm.c | 4 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 4 +- src/overlays/actors/ovl_En_Muto/z_en_muto.c | 16 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 30 +-- src/overlays/actors/ovl_En_Ot/z_en_ot.c | 36 +-- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 10 +- .../actors/ovl_En_Pamera/z_en_pamera.c | 44 ++-- .../actors/ovl_En_Pametfrog/z_en_pametfrog.c | 4 +- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 78 +++---- .../actors/ovl_En_Railgibud/z_en_railgibud.c | 12 +- .../actors/ovl_En_Recepgirl/z_en_recepgirl.c | 2 +- src/overlays/actors/ovl_En_Rr/z_en_rr.c | 2 +- .../actors/ovl_En_Sellnuts/z_en_sellnuts.c | 34 +-- src/overlays/actors/ovl_En_Skb/z_en_skb.c | 2 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 46 ++-- .../actors/ovl_En_Suttari/z_en_suttari.c | 66 +++--- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 96 ++++---- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 212 +++++++++--------- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 24 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 20 +- src/overlays/actors/ovl_En_Toto/z_en_toto.c | 42 ++-- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 50 ++--- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 16 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 152 ++++++------- .../actors/ovl_Obj_Dinner/z_obj_dinner.c | 2 +- .../actors/ovl_Obj_Ghaka/z_obj_ghaka.c | 10 +- .../actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c | 2 +- .../actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c | 8 +- .../ovl_Obj_Moon_Stone/z_obj_moon_stone.c | 10 +- .../actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c | 2 +- .../ovl_Obj_Tokei_Step/z_obj_tokei_step.c | 2 +- .../ovl_Obj_Warpstone/z_obj_warpstone.c | 2 +- .../ovl_Obj_Warpstone/z_obj_warpstone.h | 2 +- src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c | 4 +- .../gamestates/ovl_daytelop/z_daytelop.c | 20 +- .../gamestates/ovl_opening/z_opening.c | 10 +- src/overlays/gamestates/ovl_select/z_select.c | 166 +++++++------- 92 files changed, 1458 insertions(+), 1437 deletions(-) diff --git a/docs/tutorial/advanced_control_flow.md b/docs/tutorial/advanced_control_flow.md index 953e3e44d..99f7fca27 100644 --- a/docs/tutorial/advanced_control_flow.md +++ b/docs/tutorial/advanced_control_flow.md @@ -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 { diff --git a/docs/tutorial/documenting.md b/docs/tutorial/documenting.md index 9b2c8e177..e953430f0 100644 --- a/docs/tutorial/documenting.md +++ b/docs/tutorial/documenting.md @@ -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) diff --git a/docs/tutorial/other_functions.md b/docs/tutorial/other_functions.md index bdc49036d..fb39232df 100644 --- a/docs/tutorial/other_functions.md +++ b/docs/tutorial/other_functions.md @@ -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! diff --git a/include/macros.h b/include/macros.h index 6dc1e5e4e..205e7135b 100644 --- a/include/macros.h +++ b/include/macros.h @@ -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)) diff --git a/include/z64save.h b/include/z64save.h index a1ec72ab9..9d15efe01 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -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 { diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index 094c0bb38..5fb32b8ea 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u8 sYaz0DataBuffer[0x400]; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 34ad973f6..c86b59374 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -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; } } diff --git a/src/code/flg_set.c b/src/code/flg_set.c index 780884c85..53be7b68d 100644 --- a/src/code/flg_set.c +++ b/src/code/flg_set.c @@ -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; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 26fd324a7..a2081af73 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -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; } diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index 7308b33f4..cd2fa96b6 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -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; diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index acd827f8e..11073ed60 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -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; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 979b28cba..5b885b653 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -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(); } diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index bbfad829f..898903cd0 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -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; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 6bebcf938..7d14ec98b 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -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); } diff --git a/src/code/z_snap.c b/src/code/z_snap.c index 1c0ab3a27..afb0e5f97 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -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); } } diff --git a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c index 3bf7bf988..50a6f73a1 100644 --- a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c +++ b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.c @@ -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); } diff --git a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c index cc92791fc..98011eadd 100644 --- a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c +++ b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c @@ -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; diff --git a/src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c b/src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c index 7499e35cd..34d086aca 100644 --- a/src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c +++ b/src/overlays/actors/ovl_Bg_Lotus/z_bg_lotus.c @@ -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; diff --git a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c index 69ba3e652..691dc7573 100644 --- a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c +++ b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c @@ -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; } diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index 03c173315..20cd93c83 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -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); diff --git a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c index fca8d1452..cddc2f1a2 100644 --- a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c +++ b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c @@ -30,7 +30,7 @@ const ActorInit Dm_Ravine_InitVars = { void DmRavine_Init(Actor* thisx, GlobalContext* globalCtx) { DmRavine* this = THIS; - u8 flag = gSaveContext.weekEventReg[0]; + u8 flag = gSaveContext.save.weekEventReg[0]; if (((flag & 0x10) | cREG(0)) != 0) { Actor_MarkForDeath(&this->actor); return; diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index bf934be08..12c97b5f9 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -893,7 +893,7 @@ void DmStk_Init(Actor* thisx, GlobalContext* globalCtx) { Collider_InitCylinder(globalCtx, &this->collider); - if (gSaveContext.entranceIndex == 0x2C00) { + if (gSaveContext.save.entranceIndex == 0x2C00) { if (gSaveContext.sceneSetupIndex == 0) { if (gSaveContext.unk_3DD0[3] == 0) { func_8010E9F0(3, 300); @@ -901,7 +901,7 @@ void DmStk_Init(Actor* thisx, GlobalContext* globalCtx) { XREG(81) = 115; } - if (gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { sCylinderInit.base.colType = COLTYPE_WOOD; this->actionFunc = func_80AA18D8; } else { @@ -990,7 +990,7 @@ void func_80AA1704(DmStk* this, GlobalContext* globalCtx) { void func_80AA1714(DmStk* this, GlobalContext* globalCtx) { Vec3f sp1C; - if (!(gSaveContext.weekEventReg[74] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[74] & 0x20)) { func_80169474(globalCtx, &this->actor.world.pos, &sp1C); if (globalCtx->view.fovy < 25.0f) { if ((sp1C.x >= 70.0f) && (sp1C.x < 250.0f) && (sp1C.y >= 30.0f) && (sp1C.y < 210.0f)) { @@ -1007,10 +1007,10 @@ void func_80AA17F8(DmStk* this, GlobalContext* globalCtx) { s16 sp18 = ActorCutscene_GetAdditionalCutscene(sp1C); s16 cutscene; - if (gSaveContext.day < 3) { + if (gSaveContext.save.day < 3) { cutscene = sp1E; - } else if ((gSaveContext.weekEventReg[8] & 0x40) || - ((CURRENT_DAY == 3) && (gSaveContext.time < CLOCK_TIME(6, 0)))) { + } else if ((gSaveContext.save.weekEventReg[8] & 0x40) || + ((CURRENT_DAY == 3) && (gSaveContext.save.time < CLOCK_TIME(6, 0)))) { cutscene = sp18; } else { cutscene = sp1C; @@ -1223,7 +1223,7 @@ void func_80AA1D1C(DmStk* this, GlobalContext* globalCtx) { case 22: this->unk_2E0 = 29; - if (gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->unk_32D = 3; } break; @@ -1235,7 +1235,7 @@ void func_80AA1D1C(DmStk* this, GlobalContext* globalCtx) { case 24: this->unk_2E0 = 32; - if (gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->unk_32D = 3; } break; @@ -1246,14 +1246,14 @@ void func_80AA1D1C(DmStk* this, GlobalContext* globalCtx) { case 26: this->unk_2E0 = 34; - if (gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->unk_32D = 3; } break; case 27: this->unk_2E0 = 36; - if (gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { this->unk_32D = 3; } break; @@ -1451,7 +1451,7 @@ void func_80AA1D1C(DmStk* this, GlobalContext* globalCtx) { if (this->unk_2E4 < 0) { this->unk_2E4 = 0; this->unk_32F = 0; - gSaveContext.weekEventReg[12] |= 4; + gSaveContext.save.weekEventReg[12] |= 4; if (!(globalCtx->actorCtx.unk5 & 2)) { Actor_MarkForDeath(&this->actor); } else { @@ -1621,11 +1621,11 @@ void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) { (globalCtx->msgCtx.unk11F04 == 0x5E6) && !FrameAdvance_IsEnabled(globalCtx) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { - time = gSaveContext.time; - gSaveContext.time = (u16)REG(15) + time; + time = gSaveContext.save.time; + gSaveContext.save.time = (u16)REG(15) + time; if (REG(15) != 0) { - time = gSaveContext.time; - gSaveContext.time = (u16)gSaveContext.unk_14 + time; + time = gSaveContext.save.time; + gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + time; } } } diff --git a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c index 7323c95b3..3f9ce23c7 100644 --- a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c +++ b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c @@ -74,14 +74,14 @@ void EnBaisen_Init(Actor* thisx, GlobalContext* globalCtx) { this->paramCopy = this->actor.params; if (this->actor.params == 0) { this->unk290 = true; - if (!(gSaveContext.weekEventReg[63] & 0x80) && ((gSaveContext.day != 3) || !gSaveContext.isNight)) { + if (!(gSaveContext.save.weekEventReg[63] & 0x80) && ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); } } else { this->collider.dim.radius = 30; this->collider.dim.height = 60; this->collider.dim.yShift = 0; - if ((gSaveContext.weekEventReg[63] & 0x80) || ((gSaveContext.day == 3) && (gSaveContext.isNight))) { + if ((gSaveContext.save.weekEventReg[63] & 0x80) || ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight))) { Actor_MarkForDeath(&this->actor); } } @@ -156,7 +156,7 @@ void func_80BE887C(EnBaisen* this, GlobalContext* globalCtx) { } else { if (this->paramCopy != 0) { this->textIdIndex = 0; - if (gSaveContext.weekEventReg[60] & 8) { + if (gSaveContext.save.weekEventReg[60] & 8) { this->textIdIndex = 1; } if (Player_GetMask(globalCtx) == PLAYER_MASK_COUPLE) { @@ -249,7 +249,7 @@ void EnBaisen_Update(Actor* thisx, GlobalContext* globalCtx) { this->unusedCounter--; } this->actor.shape.rot.y = this->actor.world.rot.y; - if ((this->paramCopy != 0) && (gSaveContext.day == 3) && gSaveContext.isNight) { + if ((this->paramCopy != 0) && (gSaveContext.save.day == 3) && gSaveContext.save.isNight) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c index ee51c7444..7648d83c6 100644 --- a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c +++ b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c @@ -130,44 +130,44 @@ void func_809CD028(EnBji01* this, GlobalContext* globalCtx) { switch (this->actor.params) { case ENBJI01_PARAMS_DEFAULT: case ENBJI01_PARAMS_FINISHED_CONVERSATION: - switch (gSaveContext.playerForm) { + switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: - if (gSaveContext.weekEventReg[17] & 0x10) { - if (gSaveContext.weekEventReg[74] & 0x80) { + if (gSaveContext.save.weekEventReg[17] & 0x10) { + if (gSaveContext.save.weekEventReg[74] & 0x80) { this->textId = 0x5F4; } else { this->textId = 0x5E2; } } else { this->textId = 0x5EC; - gSaveContext.weekEventReg[17] |= 0x10; + gSaveContext.save.weekEventReg[17] |= 0x10; } break; case PLAYER_FORM_HUMAN: if (Player_GetMask(globalCtx) == PLAYER_MASK_KAFEIS_MASK) { this->textId = 0x236A; - } else if (gSaveContext.weekEventReg[74] & 0x10) { + } else if (gSaveContext.save.weekEventReg[74] & 0x10) { this->textId = 0x5F6; } else { this->textId = 0x5F5; - gSaveContext.weekEventReg[74] |= 0x10; + gSaveContext.save.weekEventReg[74] |= 0x10; } break; case PLAYER_FORM_GORON: case PLAYER_FORM_ZORA: - if (gSaveContext.weekEventReg[75] & 8) { + if (gSaveContext.save.weekEventReg[75] & 8) { this->textId = 0x5E4; } else { this->textId = 0x5DC; - gSaveContext.weekEventReg[75] |= 8; + gSaveContext.save.weekEventReg[75] |= 8; } break; } break; case ENBJI01_PARAMS_LOOKED_THROUGH_TELESCOPE: - switch (gSaveContext.playerForm) { + switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: - if (gSaveContext.weekEventReg[74] & 0x80) { + if (gSaveContext.save.weekEventReg[74] & 0x80) { this->textId = 0x5F2; } else { this->textId = 0x5F1; @@ -187,9 +187,9 @@ void func_809CD028(EnBji01* this, GlobalContext* globalCtx) { this->textId = 0x5EA; break; case 3: - tempDay = gSaveContext.day; + tempDay = gSaveContext.save.day; tempTimeBeforeMoonCrash = - ((-(tempDay % 5 << 0x10) - ((u16)(gSaveContext.time - 0x4000))) + 0x40000); + ((-(tempDay % 5 << 0x10) - ((u16)(gSaveContext.save.time - 0x4000))) + 0x40000); if (tempTimeBeforeMoonCrash < 2730.6667f) { /* 1 hr */ this->textId = 0x5E8; } else { @@ -225,7 +225,7 @@ void EnBji01_DialogueHandler(EnBji01* this, GlobalContext* globalCtx) { break; case 1: func_8019F230(); - switch (gSaveContext.playerForm) { + switch (gSaveContext.save.playerForm) { case PLAYER_FORM_DEKU: func_80151938(globalCtx, 0x5F0); break; @@ -353,7 +353,7 @@ void EnBji01_Init(Actor* thisx, GlobalContext* globalCtx) { this->moonsTear = (ObjMoonStone*)func_ActorCategoryIterateById(globalCtx, NULL, ACTORCAT_PROP, ACTOR_OBJ_MOON_STONE); - switch (gSaveContext.entranceIndex) { + switch (gSaveContext.save.entranceIndex) { case 0x4C00: /* Observatory from ECT */ case 0x4C10: /* Observatory from Termina Field door */ this->actor.params = ENBJI01_PARAMS_DEFAULT; diff --git a/src/overlays/actors/ovl_En_Cha/z_en_cha.c b/src/overlays/actors/ovl_En_Cha/z_en_cha.c index d8f32613f..ff78a207a 100644 --- a/src/overlays/actors/ovl_En_Cha/z_en_cha.c +++ b/src/overlays/actors/ovl_En_Cha/z_en_cha.c @@ -63,7 +63,7 @@ void EnCha_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.home.rot.z = 0; this->actionFunc = EnCha_Idle; this->actor.home.rot.x = this->actor.home.rot.z; - gSaveContext.weekEventReg[60] &= 0xFB; + gSaveContext.save.weekEventReg[60] &= 0xFB; } void EnCha_Destroy(Actor* thisx, GlobalContext* globalCtx) { @@ -85,16 +85,16 @@ void EnCha_Ring(EnCha* this, GlobalContext* globalCtx) { } void EnCha_Idle(EnCha* this, GlobalContext* globalCtx) { - if (gSaveContext.weekEventReg[60] & 4) { + if (gSaveContext.save.weekEventReg[60] & 4) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_DOOR_BELL); - gSaveContext.weekEventReg[60] &= 0xFB; + gSaveContext.save.weekEventReg[60] &= 0xFB; this->actor.home.rot.z = 0x7D0; } if (this->collider.base.acFlags & AC_HIT) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_DOOR_BELL); this->actor.home.rot.z = 0x7D0; - if (!(gSaveContext.weekEventReg[51] & 4)) { - gSaveContext.weekEventReg[51] |= 4; + if (!(gSaveContext.save.weekEventReg[51] & 4)) { + gSaveContext.save.weekEventReg[51] |= 4; this->actionFunc = EnCha_Ring; } } diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 54eb091b7..6db3733b8 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -123,7 +123,7 @@ void EnCow_Init(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc = EnCow_Idle; - if (!(gSaveContext.weekEventReg[22] & 1) && (CURRENT_DAY != 1) && + if (!(gSaveContext.save.weekEventReg[22] & 1) && (CURRENT_DAY != 1) && (EN_COW_TYPE(thisx) == EN_COW_TYPE_ABDUCTED)) { Actor_MarkForDeath(&this->actor); return; @@ -160,7 +160,7 @@ void EnCow_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->flags = 0; - gSaveContext.weekEventReg[87] &= (u8)~1; + gSaveContext.save.weekEventReg[87] &= (u8)~1; } void EnCow_Destroy(Actor* thisx, GlobalContext* globalCtx) { @@ -296,8 +296,8 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { if (this->actor.xzDistToPlayer < 150.0f && ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)) < 25000) { if (func_801A5100() == 4) { - if (!(gSaveContext.weekEventReg[87] & 1)) { - gSaveContext.weekEventReg[87] |= 1; + if (!(gSaveContext.save.weekEventReg[87] & 1)) { + gSaveContext.save.weekEventReg[87] |= 1; if (func_80114E90()) { this->actor.textId = 0x32C9; // Text to give milk. } else { @@ -308,7 +308,7 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { this->actionFunc = EnCow_Talk; } } else { - gSaveContext.weekEventReg[87] &= (u8)~1; + gSaveContext.save.weekEventReg[87] &= (u8)~1; } } diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 8f14b6c67..65df5600b 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -190,7 +190,7 @@ s32 func_80B3E69C(EnDai* this, GlobalContext* globalCtx) { s32 ret = false; if ((globalCtx->csCtx.state != 0) && (globalCtx->sceneNum == SCENE_12HAKUGINMAE) && - (globalCtx->csCtx.unk_12 == 0) && !(gSaveContext.weekEventReg[30] & 1)) { + (globalCtx->csCtx.unk_12 == 0) && !(gSaveContext.save.weekEventReg[30] & 1)) { if (!(this->unk_1CE & 0x10)) { Actor_SetSwitchFlag(globalCtx, 20); this->unk_1CE |= (0x80 | 0x10); @@ -205,7 +205,7 @@ s32 func_80B3E69C(EnDai* this, GlobalContext* globalCtx) { } else if (this->unk_1CE & 0x10) { this->unk_1CE &= ~0x10; this->unk_1CE |= 0x200; - gSaveContext.weekEventReg[30] |= 1; + gSaveContext.save.weekEventReg[30] |= 1; this->actionFunc = func_80B3F00C; } @@ -536,7 +536,7 @@ void EnDai_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_1CE = 0; this->unk_1D6 = 0; - if (gSaveContext.weekEventReg[33] & 0x80) { + if (gSaveContext.save.weekEventReg[33] & 0x80) { func_8013AED4(&this->unk_1CE, 3, 7); this->unk_1CE |= 0x80; this->unk_1CD = 0xFF; @@ -544,7 +544,7 @@ void EnDai_Init(Actor* thisx, GlobalContext* globalCtx) { return; } - if (gSaveContext.weekEventReg[30] & 1) { + if (gSaveContext.save.weekEventReg[30] & 1) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 40eac8099..98770ec61 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -92,10 +92,10 @@ void EnDaiku_Init(Actor* thisx, GlobalContext* globalCtx) { this->collider.dim.height = 60; this->collider.dim.yShift = 0; this->actor.flags |= 0x8000000; - if ((gSaveContext.weekEventReg[63] & 0x80) || ((gSaveContext.day == 3) && gSaveContext.isNight)) { + if ((gSaveContext.save.weekEventReg[63] & 0x80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); } - } else if ((gSaveContext.day == 3) && gSaveContext.isNight) { + } else if ((gSaveContext.save.day == 3) && gSaveContext.save.isNight) { Actor_MarkForDeath(&this->actor); } @@ -154,7 +154,7 @@ void func_809437C8(EnDaiku* this) { } void func_80943820(EnDaiku* this) { - s32 day = gSaveContext.day - 1; + s32 day = gSaveContext.save.day - 1; switch (this->unk_278) { case 0: @@ -181,7 +181,7 @@ void func_80943820(EnDaiku* this) { void func_809438F8(EnDaiku* this, GlobalContext* globalCtx) { f32 currentFrame = this->skelAnime.curFrame; s32 pad; - s32 day = gSaveContext.day - 1; + s32 day = gSaveContext.save.day - 1; s32 pad2; if (Player_GetMask(globalCtx) == PLAYER_MASK_KAFEIS_MASK) { @@ -269,7 +269,7 @@ void EnDaiku_Update(Actor* thisx, GlobalContext* globalCtx) { SkelAnime_Update(&this->skelAnime); } - if ((this->unk_278 == ENDAIKU_PARAMS_FF_0) && (gSaveContext.day == 3) && (gSaveContext.isNight)) { + if ((this->unk_278 == ENDAIKU_PARAMS_FF_0) && (gSaveContext.save.day == 3) && (gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c index daa159788..69aae6e0f 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c @@ -92,7 +92,7 @@ void func_80BE61D0(EnDaiku2* this) { void EnDaiku2_Init(Actor* thisx, GlobalContext* globalCtx) { EnDaiku2* this = THIS; - s32 day = gSaveContext.day; + s32 day = gSaveContext.save.day; this->actor.colChkInfo.mass = MASS_IMMOVABLE; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 40.0f); @@ -175,10 +175,10 @@ s32 func_80BE64C0(EnDaiku2* this, GlobalContext* globalCtx) { } void func_80BE65B4(EnDaiku2* this, GlobalContext* globalCtx) { - switch (gSaveContext.day - 1) { + switch (gSaveContext.save.day - 1) { case 0: this->unk_28A = 0; - if (gSaveContext.weekEventReg[64] & 2) { + if (gSaveContext.save.weekEventReg[64] & 2) { this->unk_28A = 6; } func_80BE6408(this, 8); @@ -186,7 +186,7 @@ void func_80BE65B4(EnDaiku2* this, GlobalContext* globalCtx) { case 1: this->unk_28A = 2; - if (gSaveContext.weekEventReg[64] & 4) { + if (gSaveContext.save.weekEventReg[64] & 4) { this->unk_28A = 7; } func_80BE6408(this, 8); @@ -213,7 +213,7 @@ void func_80BE65B4(EnDaiku2* this, GlobalContext* globalCtx) { void func_80BE66E4(EnDaiku2* this, GlobalContext* globalCtx) { f32 sp9C = this->skelAnime.curFrame; - s32 sp98 = gSaveContext.day - 1; + s32 sp98 = gSaveContext.save.day - 1; s32 i; Vec3f sp88; Vec3f sp7C; @@ -291,7 +291,7 @@ void func_80BE66E4(EnDaiku2* this, GlobalContext* globalCtx) { } void func_80BE6B40(EnDaiku2* this, GlobalContext* globalCtx) { - s32 day = gSaveContext.day; + s32 day = gSaveContext.save.day; this->unk_288 = 1; if ((day != 3) && Flags_GetSwitch(globalCtx, this->unk_278)) { @@ -305,7 +305,7 @@ void func_80BE6B40(EnDaiku2* this, GlobalContext* globalCtx) { void func_80BE6BC0(EnDaiku2* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 1, 0xBB8, 0x0); if ((func_80152498(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - s32 day = gSaveContext.day - 1; + s32 day = gSaveContext.save.day - 1; func_801477B4(globalCtx); @@ -319,11 +319,11 @@ void func_80BE6BC0(EnDaiku2* this, GlobalContext* globalCtx) { } else { switch (day) { case 0: - gSaveContext.weekEventReg[64] |= 2; + gSaveContext.save.weekEventReg[64] |= 2; break; case 1: - gSaveContext.weekEventReg[64] |= 4; + gSaveContext.save.weekEventReg[64] |= 4; break; } func_80BE65B4(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index 2c5a330ab..26238993a 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -357,9 +357,9 @@ void func_80989BF8(EnDg* this) { if (this->unk_286 < 14) { if (this->unk_286 % 2) { D_8098C2A8[this->unk_286].unk_04 = - 0x3538 + ((gSaveContext.weekEventReg[42 + (this->unk_286 / 2)] & 0xF0) >> 4); + 0x3538 + ((gSaveContext.save.weekEventReg[42 + (this->unk_286 / 2)] & 0xF0) >> 4); } else { - D_8098C2A8[this->unk_286].unk_04 = 0x3538 + (gSaveContext.weekEventReg[42 + (this->unk_286 / 2)] & 0xF); + D_8098C2A8[this->unk_286].unk_04 = 0x3538 + (gSaveContext.save.weekEventReg[42 + (this->unk_286 / 2)] & 0xF); } } else { Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c index bf0f977b7..c0555176b 100644 --- a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c +++ b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c @@ -467,7 +467,7 @@ s32 func_8089AE00(EnDinofos* this, GlobalContext* globalCtx) { return true; } - if ((gSaveContext.playerForm == PLAYER_FORM_GORON) && (player->actor.velocity.y < -5.0f) && + if ((gSaveContext.save.playerForm == PLAYER_FORM_GORON) && (player->actor.velocity.y < -5.0f) && (player->unk_AE7 == 1) && (this->unk_28B == 0)) { this->unk_28B = 1; for (i = 0; i < ARRAY_COUNT(this->colliderJntSphElement) - 3; i++) { diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index 5a6b88368..beaa78bd2 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -230,7 +230,7 @@ void EnDno_Init(Actor* thisx, GlobalContext* globalCtx) { switch (ENDNO_GET_C000(thisx)) { case ENDNO_GET_C000_0: func_80A71788(this, globalCtx); - if (!(gSaveContext.weekEventReg[23] & 0x20) || (gSaveContext.weekEventReg[93] & 2)) { + if (!(gSaveContext.save.weekEventReg[23] & 0x20) || (gSaveContext.save.weekEventReg[93] & 2)) { Actor_MarkForDeath(thisx); } else { func_8013E1C8(&this->skelAnime, sAnimations, 14, &this->unk_32C); @@ -244,7 +244,7 @@ void EnDno_Init(Actor* thisx, GlobalContext* globalCtx) { break; case ENDNO_GET_C000_1: - if (gSaveContext.weekEventReg[23] & 0x20) { + if (gSaveContext.save.weekEventReg[23] & 0x20) { Actor_MarkForDeath(thisx); } else { func_8013E1C8(&this->skelAnime, sAnimations, 13, &this->unk_32C); @@ -286,7 +286,7 @@ void func_80A71B68(EnDno* this, GlobalContext* globalCtx) { this->unk_452 = 0; this->actor.textId = 0; if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA)) { - if (gSaveContext.weekEventReg[27] & 1) { + if (gSaveContext.save.weekEventReg[27] & 1) { if (!(this->unk_3B0 & 0x20)) { func_8013E1C8(&this->skelAnime, sAnimations, 6, &this->unk_32C); this->actor.shape.rot.y = Actor_YawBetweenActors(&this->actor, this->unk_460); @@ -350,17 +350,17 @@ void func_80A71C3C(EnDno* this, GlobalContext* globalCtx) { void func_80A71E54(EnDno* this, GlobalContext* globalCtx) { if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA)) { - if (gSaveContext.weekEventReg[27] & 1) { + if (gSaveContext.save.weekEventReg[27] & 1) { this->unk_464 = 0x811; } else { this->unk_464 = 0x80F; - gSaveContext.weekEventReg[27] |= 1; + gSaveContext.save.weekEventReg[27] |= 1; } - } else if (gSaveContext.weekEventReg[26] & 0x80) { + } else if (gSaveContext.save.weekEventReg[26] & 0x80) { this->unk_464 = 0x80B; } else { this->unk_464 = 0x80C; - gSaveContext.weekEventReg[26] |= 0x80; + gSaveContext.save.weekEventReg[26] |= 0x80; } if (this->unk_464 != 0x811) { @@ -577,7 +577,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { case 2: if (Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x2D8)) { - gSaveContext.weekEventReg[93] |= 2; + gSaveContext.save.weekEventReg[93] |= 2; func_801518B0(globalCtx, 0x802, &this->actor); } break; @@ -628,7 +628,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { case 0x802: if (func_80147624(globalCtx)) { - if (gSaveContext.inventory.items[D_801C20C0] == ITEM_MASK_SCENTS) { + if (gSaveContext.save.inventory.items[D_801C20C0] == ITEM_MASK_SCENTS) { this->unk_458 = GI_RUPEE_RED; } else { this->unk_458 = GI_MASK_SCENTS; diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 8e0bbbaab..89d3eaec1 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -217,7 +217,7 @@ s32 func_80B3CF60(EnDnp* this, GlobalContext* globalCtx) { this->unk_322 |= 8; this->actionFunc = func_80B3D3F8; ret = true; - } else if (!(gSaveContext.weekEventReg[23] & 0x20) && Actor_HasParent(&this->actor, globalCtx)) { + } else if (!(gSaveContext.save.weekEventReg[23] & 0x20) && Actor_HasParent(&this->actor, globalCtx)) { func_8013AED4(&this->unk_322, 0, 7); this->unk_322 &= ~0x500; this->actor.parent = NULL; @@ -258,10 +258,10 @@ void func_80B3D11C(EnDnp* this, GlobalContext* globalCtx) { u32 temp_v0; s32 val; - if (!(gSaveContext.weekEventReg[29] & 0x40) && (globalCtx->sceneNum == SCENE_MITURIN) && + if (!(gSaveContext.save.weekEventReg[29] & 0x40) && (globalCtx->sceneNum == SCENE_MITURIN) && (globalCtx->csCtx.unk_12 == 0)) { this->unk_322 |= 0x20; - gSaveContext.weekEventReg[29] |= 0x40; + gSaveContext.save.weekEventReg[29] |= 0x40; } if (func_800EE29C(globalCtx, 0x65)) { @@ -348,7 +348,7 @@ void func_80B3D47C(EnDnp* this, GlobalContext* globalCtx) { void func_80B3D558(EnDnp* this, GlobalContext* globalCtx) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); - gSaveContext.weekEventReg[23] |= 0x20; + gSaveContext.save.weekEventReg[23] |= 0x20; } else { ActorCutscene_SetIntentToPlay(this->actor.cutscene); } @@ -376,12 +376,12 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !func_80114F2C(0x17) && - !(gSaveContext.weekEventReg[23] & 0x20)) || - ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.weekEventReg[23] & 0x20))) { + !(gSaveContext.save.weekEventReg[23] & 0x20)) || + ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.save.weekEventReg[23] & 0x20))) { Actor_SetScale(&this->actor, 0.0085f); func_8013AED4(&this->unk_322, 3, 7); this->unk_322 |= 0x400; - if ((globalCtx->sceneNum == SCENE_MITURIN) && (gSaveContext.weekEventReg[29] & 0x40)) { + if ((globalCtx->sceneNum == SCENE_MITURIN) && (gSaveContext.save.weekEventReg[29] & 0x40)) { this->unk_322 |= 0x20; func_80B3CC38(this, 1); } @@ -417,7 +417,7 @@ void EnDnp_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); sp2C = this->collider.dim.radius + 50; sp28 = this->collider.dim.height + 30; - if ((this->unk_322 & 0x400) && !(gSaveContext.weekEventReg[23] & 0x20)) { + if ((this->unk_322 & 0x400) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { func_800B8A1C(&this->actor, globalCtx, GI_MAX, sp2C, sp28); } func_8013C964(&this->actor, globalCtx, sp2C, sp28, 0, this->unk_322 & 7); diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index a52d7fa11..e4cc78ebc 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -310,7 +310,7 @@ void func_80A52C6C(EnDnq* this, GlobalContext* globalCtx) { } s32* func_80A52CF8(EnDnq* this, GlobalContext* globalCtx) { - if (gSaveContext.weekEventReg[23] & 0x20) { + if (gSaveContext.save.weekEventReg[23] & 0x20) { return &D_80A53400[14]; } @@ -344,11 +344,11 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { func_8013AED4(&this->unk_37C, 0, 7); } - if (!(gSaveContext.weekEventReg[23] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { this->unk_390 = 70.0f; if (func_80114F2C(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && (func_80152498(&globalCtx->msgCtx) == 0) && (ActorCutscene_GetCurrentIndex() == -1)) { - if ((DECR(this->unk_384) == 0) && (gSaveContext.weekEventReg[29] & 0x40)) { + if ((DECR(this->unk_384) == 0) && (gSaveContext.save.weekEventReg[29] & 0x40)) { func_801518B0(globalCtx, 0x969, NULL); this->unk_384 = 200; } @@ -362,7 +362,7 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { this->actor.xzDistToPlayer = this->unk_394; - if (gSaveContext.weekEventReg[83] & 8) { + if (gSaveContext.save.weekEventReg[83] & 8) { func_80A52A78(this, globalCtx); } else if (this->unk_3A4 == 0) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8); @@ -430,7 +430,7 @@ void EnDnq_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_386 = 0; this->unk_37C = 0; func_8013AED4(&this->unk_37C, 3, 7); - if (gSaveContext.weekEventReg[9] & 0x80) { + if (gSaveContext.save.weekEventReg[9] & 0x80) { this->unk_3A4 = 1; } else { this->unk_3A4 = 0; diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index e75f1aa46..ae0bdbb77 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -173,7 +173,7 @@ void func_8092C934(EnDns* this) { s32* func_8092C9BC(EnDns* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - if (!(gSaveContext.weekEventReg[23] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { if (player->transformation != PLAYER_FORM_DEKU) { return &D_8092DCB0[16]; } else if (this->unk_2FC != 0) { @@ -352,14 +352,14 @@ s32 func_8092D068(EnDns* this) { s32 ret = false; if (ENDNS_GET_8000(&this->actor)) { - if (gSaveContext.weekEventReg[23] & 0x20) { + if (gSaveContext.save.weekEventReg[23] & 0x20) { ret = true; } } else if (ENDNS_GET_4000(&this->actor)) { - if ((gSaveContext.weekEventReg[9] & 0x80) && !(gSaveContext.weekEventReg[23] & 0x20)) { + if ((gSaveContext.save.weekEventReg[9] & 0x80) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { ret = true; } - } else if (!(gSaveContext.weekEventReg[9] & 0x80) && !(gSaveContext.weekEventReg[23] & 0x20)) { + } else if (!(gSaveContext.save.weekEventReg[9] & 0x80) && !(gSaveContext.save.weekEventReg[23] & 0x20)) { ret = true; } @@ -390,7 +390,7 @@ void func_8092D1B8(EnDns* this, GlobalContext* globalCtx) { } if (!ENDNS_GET_4000(&this->actor) || (this->unk_2D2 != 0)) { - if (!(gSaveContext.weekEventReg[23] & 0x20) && !(gSaveContext.eventInf[1] & 0x20) && func_8092CC68(globalCtx)) { + if (!(gSaveContext.save.weekEventReg[23] & 0x20) && !(gSaveContext.eventInf[1] & 0x20) && func_8092CC68(globalCtx)) { player->stateFlags1 |= 0x20; this->unk_2C6 |= 0x100; func_8013AED4(&this->unk_2C6, 4, 7); @@ -508,7 +508,7 @@ void EnDns_Init(Actor* thisx, GlobalContext* globalCtx) { func_8013AED4(&this->unk_2C6, 3, 7); this->unk_2C6 |= (0x40 | 0x10); this->unk_2C6 |= 0x200; - if (gSaveContext.weekEventReg[9] & 0x80) { + if (gSaveContext.save.weekEventReg[9] & 0x80) { this->unk_2FC = 1; } else { this->unk_2FC = 0; diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index 6ca10601c..4e7a97a8f 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -79,7 +79,7 @@ void EnElforg_Init(Actor* thisx, GlobalContext* globalCtx) { switch (STRAY_FAIRY_TYPE(&this->actor)) { case STRAY_FAIRY_TYPE_CLOCK_TOWN: - if (gSaveContext.weekEventReg[8] & 0x80) { + if (gSaveContext.save.weekEventReg[8] & 0x80) { Actor_MarkForDeath(&this->actor); return; } @@ -362,7 +362,7 @@ void EnElforg_CirclePlayer(EnElforg* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); f32 distanceFromPlayer; - if (gSaveContext.playerForm == PLAYER_FORM_GORON) { + if (gSaveContext.save.playerForm == PLAYER_FORM_GORON) { distanceFromPlayer = 40.0f; } else { distanceFromPlayer = 20.0f; @@ -405,7 +405,7 @@ void EnElforg_ClockTownFairyCollected(EnElforg* this, GlobalContext* globalCtx) player->actor.freezeTimer = 0; player->stateFlags1 &= ~0x20000000; Actor_MarkForDeath(&this->actor); - gSaveContext.weekEventReg[8] |= 0x80; + gSaveContext.save.weekEventReg[8] |= 0x80; ActorCutscene_Stop(0x7C); } else { func_800B9010(&this->actor, NA_SE_PL_CHIBI_FAIRY_HEAL - SFX_FLAG); @@ -461,9 +461,9 @@ void EnElforg_FreeFloating(EnElforg* this, GlobalContext* globalCtx) { } if (func_8010A074(globalCtx)) { - gSaveContext.inventory.strayFairies[gSaveContext.unk_48C8]++; + gSaveContext.save.inventory.strayFairies[gSaveContext.unk_48C8]++; func_801518B0(globalCtx, 0x11, NULL); - if (gSaveContext.inventory.strayFairies[(void)0, gSaveContext.unk_48C8] >= 15) { + if (gSaveContext.save.inventory.strayFairies[(void)0, gSaveContext.unk_48C8] >= 15) { func_801A3098(NA_BGM_GET_ITEM | 0x900); } } diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c index f9dfa048d..9a592a221 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c @@ -165,27 +165,27 @@ void EnFish2_Init(Actor* thisx, GlobalContext* globalCtx) { 24); this->actor.colChkInfo.mass = MASS_IMMOVABLE; if (this->unk_344 == 0) { - if (gSaveContext.weekEventReg[81] & 0x10) { + if (gSaveContext.save.weekEventReg[81] & 0x10) { this->unk_2C0 = 1; } - if (gSaveContext.weekEventReg[81] & 0x20) { + if (gSaveContext.save.weekEventReg[81] & 0x20) { this->unk_2C0 = 2; } - if (gSaveContext.weekEventReg[81] & 0x40) { + if (gSaveContext.save.weekEventReg[81] & 0x40) { this->unk_2C0 = 3; } } else { - if (gSaveContext.weekEventReg[81] & 0x80) { + if (gSaveContext.save.weekEventReg[81] & 0x80) { this->unk_2C0 = 1; } - if (gSaveContext.weekEventReg[82] & 1) { + if (gSaveContext.save.weekEventReg[82] & 1) { this->unk_2C0 = 2; } - if (gSaveContext.weekEventReg[82] & 2) { + if (gSaveContext.save.weekEventReg[82] & 2) { this->unk_2C0 = 3; } } @@ -623,18 +623,18 @@ void func_80B297FC(EnFish2* this, GlobalContext* globalCtx) { this->unk_2C0++; if (this->unk_344 == 0) { if (this->unk_2C0 == 1) { - gSaveContext.weekEventReg[81] |= 0x10; + gSaveContext.save.weekEventReg[81] |= 0x10; } else if (this->unk_2C0 == 2) { - gSaveContext.weekEventReg[81] |= 0x20; + gSaveContext.save.weekEventReg[81] |= 0x20; } else if (this->unk_2C0 == 3) { - gSaveContext.weekEventReg[81] |= 0x40; + gSaveContext.save.weekEventReg[81] |= 0x40; } } else if (this->unk_2C0 == 1) { - gSaveContext.weekEventReg[81] |= 0x80; + gSaveContext.save.weekEventReg[81] |= 0x80; } else if (this->unk_2C0 == 2) { - gSaveContext.weekEventReg[82] |= 1; + gSaveContext.save.weekEventReg[82] |= 1; } else if (this->unk_2C0 == 3) { - gSaveContext.weekEventReg[82] |= 2; + gSaveContext.save.weekEventReg[82] |= 2; } if (this->unk_2B0 != 0) { @@ -894,12 +894,12 @@ void func_80B2A498(EnFish2* this, GlobalContext* globalCtx) { temp_v0->speedXZ = 4.0f; temp_v0->velocity.y = 15.0f; Audio_PlayActorSound2(&this->actor, NA_SE_SY_PIECE_OF_HEART); - gSaveContext.weekEventReg[81] &= (u8)~0x10; - gSaveContext.weekEventReg[81] &= (u8)~0x20; - gSaveContext.weekEventReg[81] &= (u8)~0x40; - gSaveContext.weekEventReg[81] &= (u8)~0x80; - gSaveContext.weekEventReg[82] &= (u8)~0x1; - gSaveContext.weekEventReg[82] &= (u8)~0x2; + gSaveContext.save.weekEventReg[81] &= (u8)~0x10; + gSaveContext.save.weekEventReg[81] &= (u8)~0x20; + gSaveContext.save.weekEventReg[81] &= (u8)~0x40; + gSaveContext.save.weekEventReg[81] &= (u8)~0x80; + gSaveContext.save.weekEventReg[82] &= (u8)~0x1; + gSaveContext.save.weekEventReg[82] &= (u8)~0x2; } } diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c index a1818b095..d6ee0d9e8 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c @@ -730,7 +730,7 @@ void func_808D217C(EnFloormas* this, Player* player) { this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; func_808D08D0(this); - playerForm = gSaveContext.playerForm; + playerForm = gSaveContext.save.playerForm; ptr = &D_808D3900[playerForm]; this->actor.home.pos.x = ptr->z * Math_SinS(this->actor.shape.rot.y); this->actor.home.pos.y = CLAMP(-this->actor.playerHeightRel, ptr->x, ptr->y); diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index bf159f7de..533f88d6c 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -140,7 +140,7 @@ u16 EnFsn_GetWelcome(GlobalContext* globalCtx) { void EnFsn_HandleConversationBackroom(EnFsn* this, GlobalContext* globalCtx) { switch (this->textId) { case 0: - if (!(gSaveContext.weekEventReg[0x50] & 0x10)) { + if (!(gSaveContext.save.weekEventReg[0x50] & 0x10)) { this->textId = 0x29E0; break; } else { @@ -153,7 +153,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, GlobalContext* globalCtx) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - gSaveContext.weekEventReg[0x50] |= 0x10; + gSaveContext.save.weekEventReg[0x50] |= 0x10; this->textId = 0x29F1; break; } else { @@ -173,7 +173,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, GlobalContext* globalCtx) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - gSaveContext.weekEventReg[0x50] |= 0x10; + gSaveContext.save.weekEventReg[0x50] |= 0x10; this->textId = 0x29F1; break; case 0x29F1: @@ -287,8 +287,8 @@ void EnFsn_CursorLeftRight(EnFsn* this) { } s16 EnFsn_GetThirdDayItemId(void) { - if (!(gSaveContext.weekEventReg[0x21] & 4) && CURRENT_DAY == 3) { - if (!(gSaveContext.weekEventReg[0x21] & 8) && !(gSaveContext.weekEventReg[0x4F] & 0x40)) { + if (!(gSaveContext.save.weekEventReg[0x21] & 4) && CURRENT_DAY == 3) { + if (!(gSaveContext.save.weekEventReg[0x21] & 8) && !(gSaveContext.save.weekEventReg[0x4F] & 0x40)) { return SI_BOMB_BAG_30_1; } return SI_MASK_ALL_NIGHT; @@ -314,14 +314,14 @@ s16 EnFsn_GetStolenItemId(u32 stolenItem) { s32 EnFsn_HasItemsToSell(void) { if (CURRENT_DAY != 3) { - if (((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) || - ((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10)) { + if (((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || + ((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10)) { return true; } return false; } else { - if (((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) || - ((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10) || !(gSaveContext.weekEventReg[0x21] & 4)) { + if (((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || + ((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10) || !(gSaveContext.save.weekEventReg[0x21] & 4)) { return true; } return false; @@ -329,8 +329,8 @@ s32 EnFsn_HasItemsToSell(void) { } void EnFsn_GetShopItemIds(EnFsn* this) { - u32 stolenItem1 = (gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18; - u32 stolenItem2 = (gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10; + u32 stolenItem1 = (gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18; + u32 stolenItem2 = (gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10; s16 itemId; this->stolenItem1 = this->stolenItem2 = 0; @@ -427,9 +427,9 @@ s32 EnFsn_FacingShopkeeperDialogResult(EnFsn* this, GlobalContext* globalCtx) { func_8019F208(); if (CURRENT_DAY != 3) { this->actor.textId = 0x29FB; - } else if (gSaveContext.weekEventReg[0x21] & 4) { + } else if (gSaveContext.save.weekEventReg[0x21] & 4) { this->actor.textId = 0x29FF; - } else if (!(gSaveContext.weekEventReg[0x21] & 8) && !(gSaveContext.weekEventReg[0x4F] & 0x40)) { + } else if (!(gSaveContext.save.weekEventReg[0x21] & 8) && !(gSaveContext.save.weekEventReg[0x4F] & 0x40)) { this->actor.textId = 0x29D7; } else { this->actor.textId = 0x29D8; @@ -849,9 +849,9 @@ void EnFsn_AskBuyOrSell(EnFsn* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, this->actor.textId, &this->actor); break; case 0x29D2: - if (gSaveContext.weekEventReg[0x21] & 4) { + if (gSaveContext.save.weekEventReg[0x21] & 4) { this->actor.textId = 0x2A01; - } else if (!(gSaveContext.weekEventReg[0x21] & 8) && !(gSaveContext.weekEventReg[0x4F] & 0x40)) { + } else if (!(gSaveContext.save.weekEventReg[0x21] & 8) && !(gSaveContext.save.weekEventReg[0x4F] & 0x40)) { this->actor.textId = 0x29D3; } else { this->actor.textId = 0x29D4; @@ -913,7 +913,7 @@ void EnFsn_DeterminePrice(EnFsn* this, GlobalContext* globalCtx) { if (player->heldItemButton == 0) { buttonItem = CUR_FORM_EQUIP(player->heldItemButton); } else { - buttonItem = gSaveContext.equips.buttonItems[0][player->heldItemButton]; + buttonItem = gSaveContext.save.equips.buttonItems[0][player->heldItemButton]; } this->price = (buttonItem < ITEM_MOON_TEAR) ? gItemPrices[buttonItem] : 0; if (this->price > 0) { @@ -1138,7 +1138,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) { switch (item->canBuyFunc(globalCtx, item)) { case CANBUY_RESULT_SUCCESS_2: func_8019F208(); - gSaveContext.weekEventReg[0x21] |= 4; + gSaveContext.save.weekEventReg[0x21] |= 4; case CANBUY_RESULT_SUCCESS_1: if (this->cutsceneState == 2) { ActorCutscene_Stop(this->cutscene); @@ -1156,9 +1156,9 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) { item = this->items[this->cursorIdx]; item->boughtFunc(globalCtx, item); if (this->stolenItem1 == this->cursorIdx) { - gSaveContext.roomInf[126][5] &= ~0xFF000000; + gSaveContext.save.roomInf[126][5] &= ~0xFF000000; } else if (this->stolenItem2 == this->cursorIdx) { - gSaveContext.roomInf[126][5] &= ~0xFF0000; + gSaveContext.save.roomInf[126][5] &= ~0xFF0000; } this->numSellingItems--; this->itemIds[this->cursorIdx] = -1; @@ -1406,7 +1406,7 @@ void EnFsn_Init(Actor* thisx, GlobalContext* globalCtx) { EnFsn_GetCutscenes(this); EnFsn_InitShop(this, globalCtx); } else { - if ((gSaveContext.weekEventReg[0x21] & 8) || (gSaveContext.weekEventReg[0x4F] & 0x40)) { + if ((gSaveContext.save.weekEventReg[0x21] & 8) || (gSaveContext.save.weekEventReg[0x4F] & 0x40)) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 7dcf097d7..88ffa7f6c 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -117,7 +117,7 @@ void func_809616E0(EnFu* this, GlobalContext* globalCtx) { s16 spA0 = false; Vec3f sp94; - if ((gSaveContext.playerForm == PLAYER_FORM_DEKU) && (CURRENT_DAY == 3)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && (CURRENT_DAY == 3)) { spA0 = true; } this->unk_54C = 0; @@ -235,8 +235,8 @@ void EnFu_Init(Actor* thisx, GlobalContext* globalCtx) { void EnFu_Destroy(Actor* thisx, GlobalContext* globalCtx) { EnFu* this = THIS; - gSaveContext.weekEventReg[63] &= (u8)~0x1; - gSaveContext.weekEventReg[8] &= (u8)~0x1; + gSaveContext.save.weekEventReg[63] &= (u8)~0x1; + gSaveContext.save.weekEventReg[8] &= (u8)~0x1; Collider_DestroyCylinder(globalCtx, &this->collider); } @@ -391,12 +391,12 @@ void func_80962340(EnFu* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { if (this->unk_54A == 2) { if (this->unk_552 == 0x287D) { - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { func_801518B0(globalCtx, 0x287E, &this->actor); this->unk_552 = 0x287E; - } else if ((CURRENT_DAY == 3) && (gSaveContext.weekEventReg[22] & 0x10) && - (gSaveContext.weekEventReg[22] & 0x20)) { - if ((gSaveContext.weekEventReg[22] & 0x40)) { + } else if ((CURRENT_DAY == 3) && (gSaveContext.save.weekEventReg[22] & 0x10) && + (gSaveContext.save.weekEventReg[22] & 0x20)) { + if ((gSaveContext.save.weekEventReg[22] & 0x40)) { func_801518B0(globalCtx, 0x2883, &this->actor); this->unk_552 = 0x2883; } else { @@ -434,7 +434,7 @@ void func_80962588(EnFu* this, GlobalContext* globalCtx) { if (func_80147624(globalCtx) && (this->unk_552 == 0x2871)) { if (1) {} if (globalCtx->msgCtx.choiceIndex == 0) { - if (gSaveContext.rupees >= 10) { + if (gSaveContext.save.playerData.rupees >= 10) { func_8019F208(); func_801159EC(-10); func_80963DE4(this, globalCtx); @@ -537,8 +537,8 @@ void func_80962660(EnFu* this, GlobalContext* globalCtx) { break; case 0x287D: - gSaveContext.weekEventReg[63] |= 0x1; - gSaveContext.weekEventReg[63] &= (u8)~0x2; + gSaveContext.save.weekEventReg[63] |= 0x1; + gSaveContext.save.weekEventReg[63] &= (u8)~0x2; func_801477B4(globalCtx); player->stateFlags1 |= 0x20; this->unk_53C = 0; @@ -610,8 +610,8 @@ void func_809628D0(EnFu* this, GlobalContext* globalCtx) { case 0x2884: case 0x2887: case 0x288A: - gSaveContext.weekEventReg[63] &= (u8)~0x1; - gSaveContext.weekEventReg[63] &= (u8)~0x2; + gSaveContext.save.weekEventReg[63] &= (u8)~0x1; + gSaveContext.save.weekEventReg[63] &= (u8)~0x2; func_809622FC(this); break; @@ -657,10 +657,10 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { this->unk_546 = 1; } - if ((gSaveContext.playerForm == PLAYER_FORM_DEKU) && gSaveContext.magicAcquired) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) { s16 temp = gSaveContext.unk_3F30; - Parameter_AddMagic(globalCtx, temp + (gSaveContext.doubleMagic * 48) + 48); + Parameter_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); } func_80962F10(this); @@ -743,7 +743,7 @@ void func_80962EBC(EnFu* this, GlobalContext* globalCtx) { void func_80962F10(EnFu* this) { this->unk_548 = 0; this->actor.flags &= ~1; - gSaveContext.weekEventReg[8] |= 1; + gSaveContext.save.weekEventReg[8] |= 1; this->actionFunc = func_80962F4C; } @@ -753,7 +753,7 @@ void func_80962F4C(EnFu* this, GlobalContext* globalCtx) { switch (this->unk_542) { case 0: - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { player->stateFlags3 |= 0x400; } break; @@ -826,11 +826,11 @@ void func_8096326C(EnFu* this, GlobalContext* globalCtx) { } void func_809632D0(EnFu* this) { - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { Interface_ChangeAlpha(50); } - gSaveContext.weekEventReg[8] &= (u8)~0x1; + gSaveContext.save.weekEventReg[8] &= (u8)~0x1; if (this->unk_2D4 != NULL) { BgFuMizu* mizu = this->unk_2D4; @@ -883,7 +883,7 @@ void func_80963560(EnFu* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; func_80963610(this); - } else if ((this->unk_552 == 0x2880) && !(gSaveContext.weekEventReg[22] & 0x80)) { + } else if ((this->unk_552 == 0x2880) && !(gSaveContext.save.weekEventReg[22] & 0x80)) { func_800B8A1C(&this->actor, globalCtx, GI_HEART_PIECE, 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_PURPLE, 500.0f, 100.0f); @@ -900,13 +900,13 @@ void func_80963630(EnFu* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (func_800B84D0(&this->actor, globalCtx)) { - if ((gSaveContext.weekEventReg[22] & 0x10) && (gSaveContext.weekEventReg[22] & 0x20) && (CURRENT_DAY == 3) && - (gSaveContext.playerForm == PLAYER_FORM_HUMAN)) { - if (gSaveContext.weekEventReg[22] & 0x40) { + if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20) && (CURRENT_DAY == 3) && + (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { + if (gSaveContext.save.weekEventReg[22] & 0x40) { func_801518B0(globalCtx, 0x2884, &this->actor); this->unk_552 = 0x2884; - } else if (!(gSaveContext.weekEventReg[22] & 0x80)) { - gSaveContext.weekEventReg[22] |= 0x80; + } else if (!(gSaveContext.save.weekEventReg[22] & 0x80)) { + gSaveContext.save.weekEventReg[22] |= 0x80; func_801518B0(globalCtx, 0x2882, &this->actor); this->unk_552 = 0x2882; } else { @@ -922,18 +922,18 @@ void func_80963630(EnFu* this, GlobalContext* globalCtx) { this->actor.child->freezeTimer = 0; func_809628BC(this); - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { switch (CURRENT_DAY) { case 1: - gSaveContext.weekEventReg[22] |= 0x10; + gSaveContext.save.weekEventReg[22] |= 0x10; break; case 2: - gSaveContext.weekEventReg[22] |= 0x20; + gSaveContext.save.weekEventReg[22] |= 0x20; break; case 3: - gSaveContext.weekEventReg[22] |= 0x40; + gSaveContext.save.weekEventReg[22] |= 0x40; break; } } @@ -1020,11 +1020,11 @@ s32 func_809638F8(GlobalContext* globalCtx) { void func_809639D0(EnFu* this, GlobalContext* globalCtx) { switch (CURRENT_DAY) { case 1: - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { func_801518B0(globalCtx, 0x2853, &this->actor); this->unk_552 = 0x2853; - } else if (gSaveContext.weekEventReg[22] & 0x10) { + } else if (gSaveContext.save.weekEventReg[22] & 0x10) { func_801518B0(globalCtx, 0x284D, &this->actor); this->unk_552 = 0x284D; } else if (this->unk_53E == 1) { @@ -1042,13 +1042,13 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { break; case 2: - if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { func_801518B0(globalCtx, 0x286F, &this->actor); this->unk_552 = 0x286F; } else if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { func_801518B0(globalCtx, 0x2853, &this->actor); this->unk_552 = 0x2853; - } else if (!(gSaveContext.weekEventReg[22] & 0x10)) { + } else if (!(gSaveContext.save.weekEventReg[22] & 0x10)) { if (this->unk_53E == 1) { func_801518B0(globalCtx, 0x285B, &this->actor); this->unk_552 = 0x285B; @@ -1057,7 +1057,7 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x285D, &this->actor); this->unk_552 = 0x285D; } - } else if (gSaveContext.weekEventReg[22] & 0x20) { + } else if (gSaveContext.save.weekEventReg[22] & 0x20) { func_801518B0(globalCtx, 0x2855, &this->actor); this->unk_552 = 0x2855; } else if (this->unk_53E == 1) { @@ -1071,8 +1071,8 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { break; case 3: - if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { func_80963EAC(this, globalCtx); } else { func_801518B0(globalCtx, 0x2841, &this->actor); @@ -1081,15 +1081,15 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { } else if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { func_801518B0(globalCtx, 0x284B, &this->actor); this->unk_552 = 0x284B; - } else if (gSaveContext.weekEventReg[22] & 0x40) { - if ((gSaveContext.weekEventReg[22] & 0x10) && (gSaveContext.weekEventReg[22] & 0x20)) { + } else if (gSaveContext.save.weekEventReg[22] & 0x40) { + if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20)) { func_801518B0(globalCtx, 0x285F, &this->actor); this->unk_552 = 0x285F; } else { func_801518B0(globalCtx, 0x2861, &this->actor); this->unk_552 = 0x2861; } - } else if ((gSaveContext.weekEventReg[22] & 0x10) && (gSaveContext.weekEventReg[22] & 0x20)) { + } else if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20)) { if (this->unk_53E == 1) { func_801518B0(globalCtx, 0x2863, &this->actor); this->unk_552 = 0x2863; @@ -1098,7 +1098,7 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x2865, &this->actor); this->unk_552 = 0x2865; } - } else if ((gSaveContext.weekEventReg[22] & 0x10) || (gSaveContext.weekEventReg[22] & 0x20)) { + } else if ((gSaveContext.save.weekEventReg[22] & 0x10) || (gSaveContext.save.weekEventReg[22] & 0x20)) { if (this->unk_53E == 1) { func_801518B0(globalCtx, 0x2867, &this->actor); this->unk_552 = 0x2867; @@ -1122,7 +1122,7 @@ void func_809639D0(EnFu* this, GlobalContext* globalCtx) { void func_80963DE4(EnFu* this, GlobalContext* globalCtx) { switch (this->unk_542) { case 0: - if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { func_801518B0(globalCtx, 0x2875, &this->actor); this->unk_552 = 0x2875; } else { @@ -1144,7 +1144,7 @@ void func_80963DE4(EnFu* this, GlobalContext* globalCtx) { } void func_80963EAC(EnFu* this, GlobalContext* globalCtx) { - if (gSaveContext.magicAcquired) { + if (gSaveContext.save.playerData.magicAcquired) { if (this->unk_540 == 1) { func_801518B0(globalCtx, 0x2847, &this->actor); this->unk_552 = 0x2847; diff --git a/src/overlays/actors/ovl_En_Giant/z_en_giant.c b/src/overlays/actors/ovl_En_Giant/z_en_giant.c index ec6d56ef6..95494e900 100644 --- a/src/overlays/actors/ovl_En_Giant/z_en_giant.c +++ b/src/overlays/actors/ovl_En_Giant/z_en_giant.c @@ -149,7 +149,7 @@ void EnGiant_Init(Actor* thisx, GlobalContext* globalCtx) { } if (GIANT_TYPE_IS_CLOCK_TOWER_SUCCESS(type)) { - if (!(gSaveContext.weekEventReg[0x19] & 2)) { + if (!(gSaveContext.save.weekEventReg[0x19] & 2)) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 6946f58ec..9fcababa5 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -87,13 +87,13 @@ void EnGinkoMan_Idle(EnGinkoMan* this, GlobalContext* globalCtx) { EnGinkoMan_SwitchAnimation(this, globalCtx); if (func_800B84D0(&this->actor, globalCtx)) { // Listen for dialogue start? - if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING); func_801518B0(globalCtx, 0x44C, &this->actor); this->curTextId = 0x44C; // would you like to make an account } else { func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); - if ((CURRENT_DAY == 3) && (gSaveContext.isNight == 1)) { + if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == 1)) { func_801518B0(globalCtx, 0x467, &this->actor); this->curTextId = 0x467; // "What's this? You need somethin' on a day like this? } else { @@ -116,7 +116,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { switch (this->curTextId) { case 0x44C: // "Hey there, little guy! Won't you deposit some Rupees? (first dialogue) func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); - if (gSaveContext.weekEventReg[10] & 8) { + if (gSaveContext.save.weekEventReg[10] & 8) { func_801518B0(globalCtx, 0x44E, &this->actor); this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees" } else { @@ -151,7 +151,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING); } - globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -162,22 +162,22 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees" break; case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!" - if (((gSaveContext.roomInf[127][0] & 0xFFFF) >= 200) && (this->previousBankValue < 200) && - !(gSaveContext.weekEventReg[59] & 0x40)) { - gSaveContext.weekEventReg[59] |= 0x40; + if (((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 200) && (this->previousBankValue < 200) && + !(gSaveContext.save.weekEventReg[59] & 0x40)) { + gSaveContext.save.weekEventReg[59] |= 0x40; func_801518B0(globalCtx, 0x45B, &this->actor); this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?! - } else if (((gSaveContext.roomInf[127][0] & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && - !(gSaveContext.weekEventReg[59] & 0x80)) { - gSaveContext.weekEventReg[59] |= 0x80; + } else if (((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && + !(gSaveContext.save.weekEventReg[59] & 0x80)) { + gSaveContext.save.weekEventReg[59] |= 0x80; func_801518B0(globalCtx, 0x45C, &this->actor); this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?! - } else if ((gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) { - if ((this->previousBankValue < 5000) && !(gSaveContext.weekEventReg[60] & 1)) { - gSaveContext.weekEventReg[60] |= 1; + } else if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { + if ((this->previousBankValue < 5000) && !(gSaveContext.save.weekEventReg[60] & 1)) { + gSaveContext.save.weekEventReg[60] |= 1; func_801518B0(globalCtx, 0x45D, &this->actor); this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?! - } else if (this->previousBankValue < (s16)(gSaveContext.roomInf[127][0] & 0xFFFF)) { + } else if (this->previousBankValue < (s16)(gSaveContext.save.roomInf[127][0] & 0xFFFF)) { func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); func_801518B0(globalCtx, 0x45E, &this->actor); this->curTextId = @@ -219,7 +219,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { break; case 0x465: // "There! Now I'll know you when I see you!" func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING); - globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" break; @@ -235,10 +235,10 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { case 0x46C: // "Ah, yes...[Link], right? If I remember, you're the little guy who deposited [rupees]." case 0x47E: // "Your deposits total [rupees]." if (this->choiceDepositWithdrawl == GINKOMAN_CHOICE_DEPOSIT) { - if ((u32)(gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) { + if ((u32)(gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { func_801518B0(globalCtx, 0x45F, &this->actor); this->curTextId = 0x45F; // "Excuuuse me! But I can't take anymore deposits! - } else if (gSaveContext.rupees == 0) { + } else if (gSaveContext.save.playerData.rupees == 0) { func_801518B0(globalCtx, 0x458, &this->actor); this->curTextId = 0x458; // "Hmm...You play mean jokes, little guy! You haven't even got a single Rupee! @@ -246,7 +246,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x479, &this->actor); this->curTextId = 0x479; // "Well, are you gonna make a deposit?" } - } else if ((CURRENT_DAY == 3) && (gSaveContext.isNight == 1)) { + } else if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == 1)) { func_801518B0(globalCtx, 0x46D, &this->actor); // "Look, little guy, if it's 'cause of the bad rumors going around, forget it! They're just rumors!" this->curTextId = 0x46D; @@ -286,12 +286,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { case 0x473: // Use it wisely... case 0x474: // "Aw, you're taking out all that? If you spend it like that, it'll all be gone before you know // it!" - if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { func_801518B0(globalCtx, 0x478, &this->actor); // "Look, little guy, all the Rupees you deposited are gone, so you can't use that stamp anymore." this->curTextId = 0x478; } else { - globalCtx->msgCtx.bankRupees = gSaveContext.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -317,12 +317,12 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) switch (this->curTextId) { case 0x44E: // "...So, what'll it be? if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((gSaveContext.roomInf[127][0] & 0xFFFF) >= 5000) { + if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0x45F, &this->actor); this->curTextId = 0x45F; // bank full, cannot accept more } else { - if (gSaveContext.rupees > 0) { + if (gSaveContext.save.playerData.rupees > 0) { func_8019F208(); func_801518B0(globalCtx, 0x44F, &this->actor); this->curTextId = 0x44F; // "All right! so..." @@ -340,7 +340,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) break; case 0x452: // Really? are you really depositing rupees? if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if (gSaveContext.rupees < globalCtx->msgCtx.bankRupeesSelected) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.bankRupeesSelected) { play_sound(NA_SE_SY_ERROR); func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); func_801518B0(globalCtx, 0x459, &this->actor); @@ -359,21 +359,21 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->curTextId = 0x453; // That's it? That aint nothing at all } - if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { this->isNewAccount = true; } func_801159EC((s16)-globalCtx->msgCtx.bankRupeesSelected); - this->previousBankValue = gSaveContext.roomInf[127][0] & 0xFFFF; + this->previousBankValue = gSaveContext.save.roomInf[127][0] & 0xFFFF; if (1) {} // Needed to match - gSaveContext.roomInf[127][0] = - (gSaveContext.roomInf[127][0] & 0xFFFF0000) | - ((gSaveContext.roomInf[127][0] & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected); + gSaveContext.save.roomInf[127][0] = + (gSaveContext.save.roomInf[127][0] & 0xFFFF0000) | + ((gSaveContext.save.roomInf[127][0] & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected); } } else { // GINKOMAN_CHOICE_NO func_8019F230(); func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); - if ((gSaveContext.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { func_801518B0(globalCtx, 0x456, &this->actor); this->curTextId = 0x456; // Is that so? think about it } else { @@ -402,13 +402,13 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) break; case 0x471: // Are you really withdrawling [selected rupees]? if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((s32)((gSaveContext.roomInf[127][0] & 0xFFFF)) < + if ((s32)((gSaveContext.save.roomInf[127][0] & 0xFFFF)) < ((s32)(globalCtx->msgCtx.bankRupeesSelected + this->serviceFee))) { play_sound(NA_SE_SY_ERROR); func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING); func_801518B0(globalCtx, 0x476, &this->actor); this->curTextId = 0x476; // you dont have enough deposited to withdrawl - } else if (CUR_CAPACITY(UPG_WALLET) < (globalCtx->msgCtx.bankRupeesSelected + gSaveContext.rupees)) { + } else if (CUR_CAPACITY(UPG_WALLET) < (globalCtx->msgCtx.bankRupeesSelected + gSaveContext.save.playerData.rupees)) { // check if wallet is big enough play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0x475, &this->actor); @@ -426,10 +426,10 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->curTextId = 0x472; // It's a waste to take out such a tiny bit } - this->previousBankValue = (s16)(gSaveContext.roomInf[127][0] & 0xFFFF); - gSaveContext.roomInf[127][0] = - (gSaveContext.roomInf[127][0] & 0xFFFF0000) | - (((gSaveContext.roomInf[127][0] & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - + this->previousBankValue = (s16)(gSaveContext.save.roomInf[127][0] & 0xFFFF); + gSaveContext.save.roomInf[127][0] = + (gSaveContext.save.roomInf[127][0] & 0xFFFF0000) | + (((gSaveContext.save.roomInf[127][0] & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - this->serviceFee); func_801159EC(globalCtx->msgCtx.bankRupeesSelected); } @@ -459,7 +459,7 @@ void EnGinkoMan_WaitForRupeeCount(EnGinkoMan* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.bankRupeesSelected == 0) { func_801518B0(globalCtx, 0x46F, &this->actor); this->curTextId = 0x46F; // "Zero Rupees?!? That's a cruel joke!" - } else if (gSaveContext.isNight == 1) { + } else if (gSaveContext.save.isNight == 1) { func_801518B0(globalCtx, 0x477, &this->actor); this->curTextId = 0x477; // "...You know, at this time of day there's a 4 Rupee service charge... } else { @@ -516,14 +516,14 @@ void EnGinkoMan_BankAward(EnGinkoMan* this, GlobalContext* globalCtx) { this->actor.parent = NULL; EnGinkoMan_SetupBankAward2(this); } else if (this->curTextId == 0x45B) { // "Whats this, you already saved up 200?" - if (!(gSaveContext.weekEventReg[10] & 8)) { + if (!(gSaveContext.save.weekEventReg[10] & 8)) { func_800B8A1C(&this->actor, globalCtx, GI_WALLET_ADULT + CUR_UPG_VALUE(UPG_WALLET), 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_BLUE, 500.0f, 100.0f); } } else if (this->curTextId == 0x45C) { // "Whats this, you already saved up 5000?" func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_BLUE, 500.0f, 100.0f); - } else if (!(gSaveContext.weekEventReg[59] & 8)) { + } else if (!(gSaveContext.save.weekEventReg[59] & 8)) { func_800B8A1C(&this->actor, globalCtx, GI_HEART_PIECE, 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_BLUE, 500.0f, 100.0f); @@ -538,10 +538,10 @@ void EnGinkoMan_SetupBankAward2(EnGinkoMan* this) { // separate function to handle bank rewards... if the bank has a parent actor? might be unused void EnGinkoMan_BankAward2(EnGinkoMan* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { - if (!(gSaveContext.weekEventReg[10] & 8) && (this->curTextId == 0x45B)) { + if (!(gSaveContext.save.weekEventReg[10] & 8) && (this->curTextId == 0x45B)) { // "What's this? You've already saved up 200 Rupees!?! Well, little guy, here's your special gift. Take // it!" - gSaveContext.weekEventReg[10] |= 8; + gSaveContext.save.weekEventReg[10] |= 8; func_801518B0(globalCtx, 0x47A, &this->actor); this->curTextId = 0x47A; // "See! Doesn't it hold more than your old one? } else { @@ -553,8 +553,8 @@ void EnGinkoMan_BankAward2(EnGinkoMan* this, GlobalContext* globalCtx) { EnGinkoMan_SetupDialogue(this); } else if (this->curTextId == 0x45D) { // saved up 5000 rupees for HP if ((func_80152498(&globalCtx->msgCtx) == 6) && func_80147624(globalCtx)) { - if (!(gSaveContext.weekEventReg[59] & 8)) { - gSaveContext.weekEventReg[59] |= 8; + if (!(gSaveContext.save.weekEventReg[59] & 8)) { + gSaveContext.save.weekEventReg[59] |= 8; } EnGinkoMan_SetupIdle(this); } @@ -583,8 +583,8 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, GlobalContext* globalCtx) { break; case 0x469: // "Excuse me, but let me take a look at you..." func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); - globalCtx->msgCtx.bankRupees = (gSaveContext.roomInf[127][0] & 0xFFFF); - if ((CURRENT_DAY == 3) && (gSaveContext.isNight == 1)) { + globalCtx->msgCtx.bankRupees = (gSaveContext.save.roomInf[127][0] & 0xFFFF); + if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == 1)) { func_801518B0(globalCtx, 0x46C, &this->actor); this->curTextId = 0x46C; // "Ah, yes...[Link], right? } else { diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index ad39a682a..f856b46b0 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -188,7 +188,7 @@ s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { if (!func_80114E90()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -198,23 +198,23 @@ s32 EnGirlA_CanBuyPotionGreen(GlobalContext* globalCtx, EnGirlA* this) { if (!func_80114E90()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; } s32 EnGirlA_CanBuyPotionBlue(GlobalContext* globalCtx, EnGirlA* this) { - if (!(gSaveContext.weekEventReg[53] & 8)) { + if (!(gSaveContext.save.weekEventReg[53] & 8)) { return CANBUY_RESULT_CANNOT_GET_NOW; } if (!func_80114E90()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (!(gSaveContext.weekEventReg[53] & 0x10)) { + if (!(gSaveContext.save.weekEventReg[53] & 0x10)) { return CANBUY_RESULT_SUCCESS_2; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -227,7 +227,7 @@ s32 EnGirlA_CanBuyArrows(GlobalContext* globalCtx, EnGirlA* this) { if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) { return CANBUY_RESULT_NO_ROOM_2; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -237,7 +237,7 @@ s32 EnGirlA_CanBuyNuts(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_CAPACITY(UPG_NUTS) != 0 && AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (func_80114978(ITEM_NUT) == ITEM_NONE) { @@ -250,7 +250,7 @@ s32 EnGirlA_CanBuyShieldHero(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) != 0) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -260,7 +260,7 @@ s32 EnGirlA_CanBuyStick(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_CAPACITY(UPG_STICKS) != 0 && AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (func_80114978(ITEM_STICK) == ITEM_NONE) { @@ -270,7 +270,7 @@ s32 EnGirlA_CanBuyStick(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyMaskAllNight(GlobalContext* globalCtx, EnGirlA* this) { - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -280,7 +280,7 @@ s32 EnGirlA_CanBuyBombBagCuriosityShop(GlobalContext* globalCtx, EnGirlA* this) if (CUR_UPG_VALUE_VOID(UPG_BOMB_BAG) >= 2) { return CANBUY_RESULT_CANNOT_GET_NOW; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; @@ -293,7 +293,7 @@ s32 EnGirlA_CanBuyBombBag20BombShop(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_UPG_VALUE_VOID(UPG_BOMB_BAG) >= 2) { return CANBUY_RESULT_HAVE_BETTER; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -306,7 +306,7 @@ s32 EnGirlA_CanBuyBombBag30BombShop(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_UPG_VALUE_VOID(UPG_BOMB_BAG) == 3) { return CANBUY_RESULT_HAVE_BETTER; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -319,7 +319,7 @@ s32 EnGirlA_CanBuyBombchus(GlobalContext* globalCtx, EnGirlA* this) { if (AMMO(ITEM_BOMBCHU) >= CUR_CAPACITY(UPG_BOMB_BAG)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } if (func_80114978(ITEM_BOMBCHU) == ITEM_NONE) { @@ -335,21 +335,21 @@ s32 EnGirlA_CanBuyBombs(GlobalContext* globalCtx, EnGirlA* this) { if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; } s32 EnGirlA_CanBuyBottle(GlobalContext* globalCtx, EnGirlA* this) { - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; } s32 EnGirlA_CanBuySword(GlobalContext* globalCtx, EnGirlA* this) { - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -359,7 +359,7 @@ s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { if (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) != 0) { return CANBUY_RESULT_NO_ROOM; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_1; @@ -369,7 +369,7 @@ s32 EnGirlA_CanBuyFairy(GlobalContext* globalCtx, EnGirlA* this) { if (!func_80114E90()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } return CANBUY_RESULT_SUCCESS_2; diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index 412bf7381..b14d90a32 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -392,7 +392,7 @@ s32 func_8094E52C(EnGm* this, GlobalContext* globalCtx) { } case 2: - if (!(gSaveContext.weekEventReg[86] & 0x40) && (this->unk_3E0 == 2)) { + if (!(gSaveContext.save.weekEventReg[86] & 0x40) && (this->unk_3E0 == 2)) { ActorCutscene_Stop(sp2A); } else { func_800E0308(Play_GetCamera(globalCtx, ActorCutscene_GetCurrentCamera(sp2A)), &this->actor); @@ -561,8 +561,8 @@ s32 func_8094EB1C(EnGm* this, GlobalContext* globalCtx) { switch (this->unk_3E0) { case 0: - if ((gSaveContext.weekEventReg[50] & 1) || (gSaveContext.weekEventReg[51] & 0x80) || - (gSaveContext.weekEventReg[75] & 2)) { + if ((gSaveContext.save.weekEventReg[50] & 1) || (gSaveContext.save.weekEventReg[51] & 0x80) || + (gSaveContext.save.weekEventReg[75] & 2)) { ret = true; break; } @@ -668,14 +668,14 @@ s32 func_8094EE84(EnGm* this, GlobalContext* globalCtx) { this->actor.child = this->unk_268; this->unk_264 = func_8094EDBC(this, globalCtx); - if ((this->unk_258 == 5) && !(gSaveContext.weekEventReg[50] & 1) && - !(gSaveContext.weekEventReg[51] & 0x80) && !(gSaveContext.weekEventReg[75] & 2)) { + if ((this->unk_258 == 5) && !(gSaveContext.save.weekEventReg[50] & 1) && + !(gSaveContext.save.weekEventReg[51] & 0x80) && !(gSaveContext.save.weekEventReg[75] & 2)) { this->unk_3A4 |= 0x20; } else if ((this->unk_258 != 1) && (this->unk_258 != 5) && (this->unk_258 != 7)) { this->unk_3A4 |= 0x20; } - if ((this->unk_258 == 3) && (gSaveContext.weekEventReg[75] & 1)) { + if ((this->unk_258 == 3) && (gSaveContext.save.weekEventReg[75] & 1)) { this->unk_3A4 &= ~0x20; } @@ -929,7 +929,7 @@ s32 func_8094F7D0(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar } s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) { - u16 sp56 = gSaveContext.time - 0x3FFC; + u16 sp56 = gSaveContext.save.time - 0x3FFC; u8 sp55 = ENGM_GET_FF(&this->actor); EnDoor* sp50; Vec3s* sp4C; @@ -975,7 +975,7 @@ s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar } s32 func_8094FAC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) { - u16 sp2E = gSaveContext.time - 0x3FFC; + u16 sp2E = gSaveContext.save.time - 0x3FFC; u16 phi_v1; u8 sp2B = ENGM_GET_FF(&this->actor); s32 pad; @@ -1061,7 +1061,7 @@ s32 func_8094FE10(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar func_8094E054(this, globalCtx, 11); func_8013AED4(&this->unk_3A4, 3, 7); this->unk_268 = al; - if (!(gSaveContext.weekEventReg[86] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[86] & 0x20)) { this->unk_3C8 = 2; this->unk_3CA = 2; this->unk_3CC = 8; @@ -1276,7 +1276,7 @@ s32 func_80950490(EnGm* this, GlobalContext* globalCtx) { }; s32 pad; - if ((gSaveContext.weekEventReg[50] & 1) || (gSaveContext.weekEventReg[51] & 0x80)) { + if ((gSaveContext.save.weekEventReg[50] & 1) || (gSaveContext.save.weekEventReg[51] & 0x80)) { if (this->unk_400 == 0) { this->unk_3C8 = 1; this->unk_3CA = 1; @@ -1502,7 +1502,7 @@ void func_80950C24(EnGm* this, GlobalContext* globalCtx) { } void func_80950CDC(EnGm* this, GlobalContext* globalCtx) { - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 sp20; this->unk_3C4 = REG(15) + *unk_14; diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 8e50b0794..3113f40e2 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -115,7 +115,7 @@ s8 func_80997A90(s16 arg0, s16 arg1) { if ((arg0 == 0) || ((arg0 != 1) && (arg0 != 2) && (arg0 == 3))) { phi_v1 = 0; } else { - phi_v1 = (gSaveContext.roomInf[126][1] >> (arg1 * 3)) & 7; + phi_v1 = (gSaveContext.save.roomInf[126][1] >> (arg1 * 3)) & 7; } return phi_v1; } @@ -299,7 +299,7 @@ void func_8099807C(EnGs* this, GlobalContext* globalCtx) { break; case 0: - if ((this->actor.params == ENGS_1) && (gSaveContext.playerForm == PLAYER_FORM_DEKU)) { + if ((this->actor.params == ENGS_1) && (gSaveContext.save.playerForm == PLAYER_FORM_DEKU)) { this->unk_194 = 1; this->unk_19C = 5; this->unk_19A |= 1; @@ -309,7 +309,7 @@ void func_8099807C(EnGs* this, GlobalContext* globalCtx) { break; case 2: - if ((this->actor.params == ENGS_1) && (gSaveContext.playerForm == PLAYER_FORM_ZORA)) { + if ((this->actor.params == ENGS_1) && (gSaveContext.save.playerForm == PLAYER_FORM_ZORA)) { this->unk_194 = 3; this->unk_19C = 5; this->unk_19A |= 1; @@ -319,7 +319,7 @@ void func_8099807C(EnGs* this, GlobalContext* globalCtx) { break; case 1: - if ((this->actor.params == ENGS_1) && (gSaveContext.playerForm == PLAYER_FORM_GORON)) { + if ((this->actor.params == ENGS_1) && (gSaveContext.save.playerForm == PLAYER_FORM_GORON)) { this->unk_194 = 2; this->unk_19C = 5; this->unk_19A |= 1; @@ -391,8 +391,8 @@ void func_809985B8(EnGs* this, GlobalContext* globalCtx) { Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos); Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos); this->unk_200 = 0.0f; - gSaveContext.roomInf[126][1] = - (gSaveContext.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3)); + gSaveContext.save.roomInf[126][1] = + (gSaveContext.save.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3)); gossipStone = NULL; do { @@ -454,7 +454,7 @@ void func_8099874C(EnGs* this, GlobalContext* globalCtx) { phi_v0 = 1; for (i = 0; i < 4; i++) { - if (((gSaveContext.roomInf[126][1] >> (i * 3)) & 7) != (u32)this->unk_194) { + if (((gSaveContext.save.roomInf[126][1] >> (i * 3)) & 7) != (u32)this->unk_194) { phi_v0 = 0; } } @@ -463,29 +463,29 @@ void func_8099874C(EnGs* this, GlobalContext* globalCtx) { this->unk_20C = -1; switch (this->unk_194) { case 1: - if (!(gSaveContext.weekEventReg[77] & 8)) { + if (!(gSaveContext.save.weekEventReg[77] & 8)) { this->unk_20C = 6; - gSaveContext.weekEventReg[77] |= 8; + gSaveContext.save.weekEventReg[77] |= 8; } break; case 3: - if (!(gSaveContext.weekEventReg[77] & 0x10)) { + if (!(gSaveContext.save.weekEventReg[77] & 0x10)) { this->unk_20C = 6; - gSaveContext.weekEventReg[77] |= 0x10; + gSaveContext.save.weekEventReg[77] |= 0x10; } break; case 2: - if (!(gSaveContext.weekEventReg[77] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[77] & 0x20)) { this->unk_20C = 6; - gSaveContext.weekEventReg[77] |= 0x20; + gSaveContext.save.weekEventReg[77] |= 0x20; } break; } - if (!(gSaveContext.weekEventReg[90] & 0x10)) { - gSaveContext.weekEventReg[90] |= 0x10; + if (!(gSaveContext.save.weekEventReg[90] & 0x10)) { + gSaveContext.save.weekEventReg[90] |= 0x10; this->unk_20C = 12; } diff --git a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c index 14a2ac839..4579fc6c1 100644 --- a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c +++ b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c @@ -85,7 +85,7 @@ void EnGuruguru_Init(Actor* thisx, GlobalContext* globalCtx) { if (this->actor.params != 2) { Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); } - if (!gSaveContext.isNight) { + if (!gSaveContext.save.isNight) { if (this->actor.params == 0) { func_80BC6E10(this); } else if (this->actor.params == 2) { @@ -125,10 +125,10 @@ void func_80BC6E10(EnGuruguru* this) { this->textIdIndex = 0; this->unk270 = 0; if (this->actor.params == 0) { - if (gSaveContext.weekEventReg[38] & 0x10) { + if (gSaveContext.save.weekEventReg[38] & 0x10) { this->textIdIndex = 1; } - } else if (gSaveContext.weekEventReg[38] & 0x40) { + } else if (gSaveContext.save.weekEventReg[38] & 0x40) { this->textIdIndex = 2; } else { this->textIdIndex = 3; @@ -137,8 +137,8 @@ void func_80BC6E10(EnGuruguru* this) { this->headZRotTarget = 0; this->unk268 = 1; this->actor.textId = textIDs[this->textIdIndex]; - if ((this->textIdIndex == 0 || this->textIdIndex == 1) && (gSaveContext.weekEventReg[77] & 4)) { - if (!(gSaveContext.weekEventReg[88] & 4)) { + if ((this->textIdIndex == 0 || this->textIdIndex == 1) && (gSaveContext.save.weekEventReg[77] & 4)) { + if (!(gSaveContext.save.weekEventReg[88] & 4)) { this->actor.textId = 0x295F; } else { this->actor.textId = 0x2960; @@ -159,7 +159,7 @@ void func_80BC6F14(EnGuruguru* this, GlobalContext* globalCtx) { this->textIdIndex = 3; if (player->transformation == PLAYER_FORM_DEKU) { this->textIdIndex = 13; - if (gSaveContext.weekEventReg[79] & 4) { + if (gSaveContext.save.weekEventReg[79] & 4) { this->textIdIndex = 14; } } @@ -218,16 +218,16 @@ void func_80BC7068(EnGuruguru* this, GlobalContext* globalCtx) { this->headZRotTarget = 0; if ((this->textIdIndex == 13) || (this->textIdIndex == 14)) { func_80151BB4(globalCtx, 0x13); - gSaveContext.weekEventReg[79] |= 4; + gSaveContext.save.weekEventReg[79] |= 4; func_80BC6E10(this); return; } if (this->actor.params == 0) { if (this->actor.textId == 0x295F) { - gSaveContext.weekEventReg[88] |= 4; + gSaveContext.save.weekEventReg[88] |= 4; } if (this->actor.textId == 0x292A) { - gSaveContext.weekEventReg[38] |= 0x10; + gSaveContext.save.weekEventReg[38] |= 0x10; } func_80151BB4(globalCtx, 0x13); func_80BC6E10(this); @@ -238,7 +238,7 @@ void func_80BC7068(EnGuruguru* this, GlobalContext* globalCtx) { return; } if (this->textIdIndex == 12) { - gSaveContext.weekEventReg[38] |= 0x40; + gSaveContext.save.weekEventReg[38] |= 0x40; func_801A3B48(0); func_80151BB4(globalCtx, 0x36); func_80151BB4(globalCtx, 0x13); @@ -303,7 +303,7 @@ void func_80BC7440(EnGuruguru* this, GlobalContext* globalCtx) { func_801A3B48(1); func_800B8500(&this->actor, globalCtx, 400.0f, 400.0f, -1); this->unk268 = 0; - gSaveContext.weekEventReg[38] |= 0x40; + gSaveContext.save.weekEventReg[38] |= 0x40; this->actionFunc = func_80BC7520; } else { func_800B8A1C(&this->actor, globalCtx, GI_MASK_BREMEN, 300.0f, 300.0f); @@ -325,7 +325,7 @@ void EnGuruguru_Update(Actor* thisx, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 yawTemp; - if (!gSaveContext.isNight) { + if (!gSaveContext.save.isNight) { if (this->actor.params == 1) { Actor_MarkForDeath(&this->actor); return; diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index d7eec060d..d4994b38e 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -132,7 +132,7 @@ void EnHg_Init(Actor* thisx, GlobalContext* globalCtx) { Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit2); - if ((gSaveContext.weekEventReg[0x4B] & 0x20) || (gSaveContext.weekEventReg[0x34] & 0x20)) { + if ((gSaveContext.save.weekEventReg[0x4B] & 0x20) || (gSaveContext.save.weekEventReg[0x34] & 0x20)) { Actor_MarkForDeath(&this->actor); } this->actor.targetMode = 1; @@ -309,7 +309,7 @@ void func_80BCF95C(EnHg* this, GlobalContext* globalCtx) { func_800BDC5C(&this->skelAnime, sAnimations, 1); break; case 6: - gSaveContext.weekEventReg[0x4B] |= 0x20; + gSaveContext.save.weekEventReg[0x4B] |= 0x20; Actor_MarkForDeath(&this->actor); break; } @@ -363,7 +363,7 @@ void func_80BCFC0C(EnHg* this, GlobalContext* globalCtx) { D_80BD00C8 = false; } if (globalCtx->msgCtx.unk1202A == 3) { - if (globalCtx->msgCtx.unk1202E == 7 && gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (globalCtx->msgCtx.unk1202E == 7 && gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { if (INV_CONTENT(ITEM_MASK_GIBDO) == ITEM_MASK_GIBDO) { this->unk218 = 3; } else { @@ -374,8 +374,8 @@ void func_80BCFC0C(EnHg* this, GlobalContext* globalCtx) { } else { if (this->actor.xzDistToPlayer < 60.0f && fabsf(this->actor.playerHeightRel) < 40.0f) { if ((this->actionFunc != func_80BCF8A0) && (this->actionFunc != func_80BCF95C)) { - if (!(gSaveContext.weekEventReg[0x3D] & 2)) { - gSaveContext.weekEventReg[0x3D] |= 2; + if (!(gSaveContext.save.weekEventReg[0x3D] & 2)) { + gSaveContext.save.weekEventReg[0x3D] |= 2; this->unk218 = 0; } else { this->unk218 = 2; diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 800e44c6f..07e2443da 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -12,16 +12,16 @@ #define SET_FLAGS_FINISH_RACE \ { \ - gSaveContext.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ - gSaveContext.weekEventReg[92] = \ - gSaveContext.weekEventReg[92] | (u8)(gSaveContext.weekEventReg[92] & ~(1 | 2 | 4)); \ + gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ + gSaveContext.save.weekEventReg[92] = \ + gSaveContext.save.weekEventReg[92] | (u8)(gSaveContext.save.weekEventReg[92] & ~(1 | 2 | 4)); \ } #define SET_FLAGS_START_RACE \ { \ - gSaveContext.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ - gSaveContext.weekEventReg[92] = \ - gSaveContext.weekEventReg[92] | (u8)((gSaveContext.weekEventReg[92] & ~(1 | 2 | 4)) | 1); \ + gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ + gSaveContext.save.weekEventReg[92] = \ + gSaveContext.save.weekEventReg[92] | (u8)((gSaveContext.save.weekEventReg[92] & ~(1 | 2 | 4)) | 1); \ } void EnIn_Init(Actor* thisx, GlobalContext* globalCtx); @@ -267,9 +267,9 @@ s32 func_808F3334(EnIn* this, GlobalContext* globalCtx) { s32 func_808F33B8(void) { s32 ret; - if (((ret = gSaveContext.day == 1) && (ret = gSaveContext.time >= 0x3AAA) && (ret = gSaveContext.time <= 0x4000)) || - (ret = gSaveContext.day >= 2)) { - ret = (gSaveContext.weekEventReg[22] & 1) == 0; + if (((ret = gSaveContext.save.day == 1) && (ret = gSaveContext.save.time >= 0x3AAA) && (ret = gSaveContext.save.time <= 0x4000)) || + (ret = gSaveContext.save.day >= 2)) { + ret = (gSaveContext.save.weekEventReg[22] & 1) == 0; } return ret; } @@ -393,8 +393,8 @@ void func_808F395C(EnIn* this, GlobalContext* globalCtx) { void func_808F39DC(EnIn* this, GlobalContext* globalCtx) { u16 textId = 0; - if (gSaveContext.day != 3) { - switch (gSaveContext.weekEventReg[92] & (1 | 2 | 4)) { + if (gSaveContext.save.day != 3) { + switch (gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) { case 2: textId = 0x347A; break; @@ -404,7 +404,7 @@ void func_808F39DC(EnIn* this, GlobalContext* globalCtx) { } SET_FLAGS_FINISH_RACE; } else { - switch (gSaveContext.weekEventReg[92] & (1 | 2 | 4)) { + switch (gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) { case 2: textId = 0x349D; break; @@ -441,7 +441,7 @@ void func_808F3B40(EnIn* this, GlobalContext* globalCtx) { this->actor.parent = NULL; this->actor.flags |= 0x10000; this->actionFunc = func_808F3AD4; - textId = gSaveContext.day != 3 ? 0x3481 : 0x34A4; + textId = gSaveContext.save.day != 3 ? 0x3481 : 0x34A4; this->actor.textId = textId; } else { func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); @@ -465,7 +465,7 @@ void func_808F3C40(EnIn* this, GlobalContext* globalCtx) { this->actor.parent = NULL; this->actor.flags |= 0x10000; this->actionFunc = func_808F3BD4; - textId = gSaveContext.day != 3 ? 0x346A : 0x3492; + textId = gSaveContext.save.day != 3 ? 0x346A : 0x3492; this->actor.textId = textId; } else { func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); @@ -488,7 +488,7 @@ void func_808F3D40(EnIn* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; this->actionFunc = func_808F3CD4; - textId = gSaveContext.day != 3 ? 0x347D : 0x34A0; + textId = gSaveContext.save.day != 3 ? 0x347D : 0x34A0; this->actor.textId = textId; this->actor.flags |= 0x10000; } else { @@ -502,7 +502,7 @@ u16 func_808F3DD4(GlobalContext* globalCtx, EnIn* this, u32 arg2) { if (Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER) { s32 requiredScopeTemp; - if (!(gSaveContext.weekEventReg[63] & 0x40)) { + if (!(gSaveContext.save.weekEventReg[63] & 0x40)) { return 0x34A9; } else if (this->unk4AC & 8) { return 0x34B1; @@ -512,41 +512,41 @@ u16 func_808F3DD4(GlobalContext* globalCtx, EnIn* this, u32 arg2) { } else { switch (arg2) { case 0: - if ((gSaveContext.playerForm == PLAYER_FORM_ZORA) || (gSaveContext.playerForm == PLAYER_FORM_GORON)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_ZORA) || (gSaveContext.save.playerForm == PLAYER_FORM_GORON)) { textId = 0x345C; - } else if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x3460; - } else if (!(gSaveContext.weekEventReg[15] & 8)) { + } else if (!(gSaveContext.save.weekEventReg[15] & 8)) { textId = 0x3458; } else { textId = 0x345B; } break; case 1: - if (!(gSaveContext.weekEventReg[15] & 0x10)) { + if (!(gSaveContext.save.weekEventReg[15] & 0x10)) { textId = 0x3463; } else { textId = 0x346B; } break; case 3: - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x3485; - } else if (gSaveContext.playerForm == PLAYER_FORM_ZORA || - gSaveContext.playerForm == PLAYER_FORM_GORON) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || + gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x3484; - } else if (!(gSaveContext.weekEventReg[56] & 4)) { + } else if (!(gSaveContext.save.weekEventReg[56] & 4)) { textId = 0x346D; } else { textId = 0x3482; } break; case 4: - if (gSaveContext.playerForm == PLAYER_FORM_ZORA || gSaveContext.playerForm == PLAYER_FORM_GORON) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x348A; - } else if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x348B; - } else if (!(gSaveContext.weekEventReg[16] & 1)) { + } else if (!(gSaveContext.save.weekEventReg[16] & 1)) { textId = 0x3486; } else { textId = 0x3489; @@ -555,19 +555,19 @@ u16 func_808F3DD4(GlobalContext* globalCtx, EnIn* this, u32 arg2) { case 5: if (func_808F33B8()) { textId = 0x34B3; - } else if (!(gSaveContext.weekEventReg[16] & 2)) { + } else if (!(gSaveContext.save.weekEventReg[16] & 2)) { textId = 0x348E; } else { textId = 0x3493; } break; case 7: - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x34A8; - } else if (gSaveContext.playerForm == PLAYER_FORM_ZORA || - gSaveContext.playerForm == PLAYER_FORM_GORON) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || + gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x34A7; - } else if (!(gSaveContext.weekEventReg[16] & 4)) { + } else if (!(gSaveContext.save.weekEventReg[16] & 4)) { textId = 0x3495; } else { textId = 0x34A5; @@ -618,9 +618,9 @@ s32 func_808F4150(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { func_801159EC(-globalCtx->msgCtx.unk1206C); - if (!(gSaveContext.weekEventReg[57] & 1)) { + if (!(gSaveContext.save.weekEventReg[57] & 1)) { func_808F4108(this, globalCtx, 0x3474); } else if (this->unk4AC & 8) { func_808F4108(this, globalCtx, 0x3475); @@ -644,9 +644,9 @@ s32 func_808F4270(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.rupees >= fee) { + if (gSaveContext.save.playerData.rupees >= fee) { func_801159EC(-fee); - if (!(gSaveContext.weekEventReg[57] & 1)) { + if (!(gSaveContext.save.weekEventReg[57] & 1)) { if (arg4 != 0) { func_800E8EA0(globalCtx, &this->actor, 0x3474); } else { @@ -694,7 +694,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x34A9: func_808F4108(this, globalCtx, 0x34AA); - gSaveContext.weekEventReg[63] |= 0x40; + gSaveContext.save.weekEventReg[63] |= 0x40; ret = false; break; case 0x34AA: @@ -725,7 +725,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { case 0: switch (textId) { case 0x3458: - gSaveContext.weekEventReg[15] |= 8; + gSaveContext.save.weekEventReg[15] |= 8; func_800E8EA0(globalCtx, &this->actor, 0x3459); ret = false; break; @@ -774,7 +774,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { case 1: switch (textId) { case 0x3463: - gSaveContext.weekEventReg[15] |= 16; + gSaveContext.save.weekEventReg[15] |= 16; func_800E8EA0(globalCtx, &this->actor, 0x3464); ret = false; break; @@ -789,7 +789,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { case 0x3466: if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { if (func_80114E90()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); @@ -850,12 +850,12 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x3472: func_808F43E0(this); - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; func_80151BB4(globalCtx, 0x11); ret = true; break; case 0x3473: - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; func_80151BB4(globalCtx, 0x11); break; case 0x3475: @@ -864,7 +864,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { globalCtx->nextEntranceIndex = 0xCE50; globalCtx->unk_1887F = 5; globalCtx->sceneLoadFlag = 0x14; - gSaveContext.weekEventReg[57] |= 1; + gSaveContext.save.weekEventReg[57] |= 1; break; case 0x3478: if (msgCtx->choiceIndex == 0) { @@ -872,14 +872,14 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { ret = false; } else { func_8019F230(); - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; func_808F4108(this, globalCtx, 0x3479); ret = false; } break; case 0x347B: func_808F4108(this, globalCtx, 0x347C); - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; ret = false; break; } @@ -888,8 +888,8 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { switch (textId) { case 0x346D: func_808F4108(this, globalCtx, 0x346E); - gSaveContext.weekEventReg[56] |= 4; - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 4; + gSaveContext.save.weekEventReg[56] |= 8; ret = false; break; case 0x346F: @@ -898,7 +898,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x3482: func_808F4108(this, globalCtx, 0x3483); - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 8; ret = false; break; case 0x3484: @@ -918,7 +918,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { ret = false; break; case 0x3477: - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 8; func_808F4108(this, globalCtx, 0x3478); ret = false; break; @@ -929,7 +929,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_800E8EA0(globalCtx, &this->actor, 0x347E); ret = false; } else { - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 8; func_808F4108(this, globalCtx, 0x347B); ret = false; } @@ -985,7 +985,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { switch (textId) { case 0x3486: func_800E8EA0(globalCtx, &this->actor, 0x3487); - gSaveContext.weekEventReg[16] |= 1; + gSaveContext.save.weekEventReg[16] |= 1; ret = false; break; case 0x3487: @@ -1026,7 +1026,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { case 0x348E: case 0x34B3: func_800E8EA0(globalCtx, &this->actor, 0x348F); - gSaveContext.weekEventReg[16] |= 2; + gSaveContext.save.weekEventReg[16] |= 2; ret = false; break; case 0x3493: @@ -1041,7 +1041,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { case 0x3490: if (msgCtx->choiceIndex == 0) { func_8019F208(); - if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { if (func_80114E90()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); @@ -1078,8 +1078,8 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x3495: func_808F4108(this, globalCtx, 0x3496); - gSaveContext.weekEventReg[16] |= 4; - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[16] |= 4; + gSaveContext.save.weekEventReg[56] |= 8; ret = false; break; case 0x3497: @@ -1094,11 +1094,11 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x34A5: func_808F4108(this, globalCtx, 0x34A6); - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 8; ret = false; break; case 0x3473: - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; func_80151BB4(globalCtx, 0x11); break; case 0x3474: @@ -1111,7 +1111,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { globalCtx->nextEntranceIndex = 0xCE50; globalCtx->unk_1887F = 5; globalCtx->sceneLoadFlag = 0x14; - gSaveContext.weekEventReg[57] |= 1; + gSaveContext.save.weekEventReg[57] |= 1; break; case 0x349D: func_808F30B0(&this->skelAnime, 1); @@ -1120,7 +1120,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_800E8EA0(globalCtx, &this->actor, 0x34A1); ret = false; } else { - gSaveContext.weekEventReg[56] |= 8; + gSaveContext.save.weekEventReg[56] |= 8; func_808F4108(this, globalCtx, 0x349E); ret = false; } @@ -1203,13 +1203,13 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x3472: func_808F43E0(this); - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; func_80151BB4(globalCtx, 0x11); ret = true; break; case 0x349E: func_808F4108(this, globalCtx, 0x349F); - gSaveContext.weekEventReg[56] &= (u8)~8; + gSaveContext.save.weekEventReg[56] &= (u8)~8; ret = false; break; } @@ -1322,7 +1322,7 @@ s32 func_808F5994(EnIn* this, GlobalContext* globalCtx, Vec3f* arg2, s16 arg3) { } void func_808F5A34(EnIn* this, GlobalContext* globalCtx) { - if (gSaveContext.day != 3) { + if (gSaveContext.save.day != 3) { func_808F5728(globalCtx, this, 3, &this->unk48C); } else { func_808F5728(globalCtx, this, 7, &this->unk48C); @@ -1331,13 +1331,13 @@ void func_808F5A34(EnIn* this, GlobalContext* globalCtx) { void func_808F5A94(EnIn* this, GlobalContext* globalCtx) { if (func_800F41E4(globalCtx, &globalCtx->actorCtx)) { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { func_808F5728(globalCtx, this, 7, &this->unk48C); } else { func_808F5728(globalCtx, this, 3, &this->unk48C); } } else { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { func_808F5728(globalCtx, this, 5, &this->unk48C); } else { func_808F5728(globalCtx, this, 1, &this->unk48C); @@ -1347,17 +1347,17 @@ void func_808F5A94(EnIn* this, GlobalContext* globalCtx) { void func_808F5B58(EnIn* this, GlobalContext* globalCtx) { if (func_800F41E4(globalCtx, &globalCtx->actorCtx)) { - if ((Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.weekEventReg[63] & 0x40) || - gSaveContext.weekEventReg[56] & 8) { - if (gSaveContext.day == 3) { + if ((Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40) || + gSaveContext.save.weekEventReg[56] & 8) { + if (gSaveContext.save.day == 3) { func_808F5728(globalCtx, this, 6, &this->unk48C); } else { func_808F5728(globalCtx, this, 2, &this->unk48C); } } } else if (Player_GetMask(globalCtx) != PLAYER_MASK_CIRCUS_LEADER || - (Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.weekEventReg[63] & 0x40)) { - if (gSaveContext.day == 3) { + (Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40)) { + if (gSaveContext.save.day == 3) { func_808F5728(globalCtx, this, 4, &this->unk48C); } else { func_808F5728(globalCtx, this, 0, &this->unk48C); @@ -1369,9 +1369,9 @@ void func_808F5C98(EnIn* this, GlobalContext* globalCtx) { if (this->unk4B0 == 0) { this->actionFunc = func_808F5B58; } - if ((Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.weekEventReg[63] & 0x40) || - gSaveContext.weekEventReg[56] & 8) { - if (gSaveContext.day != 3) { + if ((Player_GetMask(globalCtx) == PLAYER_MASK_CIRCUS_LEADER && gSaveContext.save.weekEventReg[63] & 0x40) || + gSaveContext.save.weekEventReg[56] & 8) { + if (gSaveContext.save.day != 3) { func_808F5728(globalCtx, this, 2, &this->unk48C); } else { func_808F5728(globalCtx, this, 6, &this->unk48C); @@ -1410,7 +1410,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk48C = 0; this->unk4AC = 0; type = ENIN_GET_TYPE(thisx); - this->unk4B0 = gSaveContext.weekEventReg[92] & (1 | 2 | 4); + this->unk4B0 = gSaveContext.save.weekEventReg[92] & (1 | 2 | 4); if (type == ENIN_HORSE_RIDER_BLUE_SHIRT || type == 4) { this->unk4AC |= 8; } @@ -1430,20 +1430,20 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { this->path = func_8013D648(globalCtx, ENIN_GET_PATH(&this->actor), 0x3F); this->unk23D = 0; if (type == ENIN_YELLOW_SHIRT || type == ENIN_BLUE_SHIRT) { - if ((gSaveContext.weekEventReg[92] & (1 | 2 | 4)) == 2 || - (gSaveContext.weekEventReg[92] & (1 | 2 | 4)) == 3) { - gSaveContext.weekEventReg[56] &= (u8)~8; + if ((gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) == 2 || + (gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) == 3) { + gSaveContext.save.weekEventReg[56] &= (u8)~8; this->unk4A8 = 0; this->unk4AC |= 2; func_808F35AC(this, globalCtx); this->unk23C = 0; D_801BDAA0 = 0; - if ((gSaveContext.weekEventReg[92] & (1 | 2 | 4)) == 2) { + if ((gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) == 2) { func_808F30B0(&this->skelAnime, 6); } else { func_808F30B0(&this->skelAnime, 4); } - if ((gSaveContext.weekEventReg[92] & (1 | 2 | 4)) == 2) { + if ((gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) == 2) { this->skelAnime.curFrame = ((Rand_ZeroOne() * 0.6f) + 0.2f) * this->skelAnime.endFrame; } if (this->unk4AC & 8) { @@ -1452,8 +1452,8 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc = func_808F5C98; } } else { - if ((gSaveContext.weekEventReg[92] & (1 | 2 | 4)) != 1) { - gSaveContext.weekEventReg[56] &= (u8)~8; + if ((gSaveContext.save.weekEventReg[92] & (1 | 2 | 4)) != 1) { + gSaveContext.save.weekEventReg[56] &= (u8)~8; this->unk23C = 0; this->unk4AC |= 2; if (type == ENIN_BLUE_SHIRT) { @@ -1461,7 +1461,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { func_808F30B0(&this->skelAnime, 0); this->actionFunc = func_808F5A94; } else { - if (gSaveContext.weekEventReg[52] & 1) { + if (gSaveContext.save.weekEventReg[52] & 1) { Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_KANBAN, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, this->actor.shape.rot.x, this->actor.shape.rot.y, this->actor.shape.rot.z, 0xF); @@ -1472,7 +1472,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { } } } else { - if (gSaveContext.weekEventReg[52] & 1) { + if (gSaveContext.save.weekEventReg[52] & 1) { Actor_MarkForDeath(&this->actor); } else { func_808F30B0(&this->skelAnime, 7); diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index b71a44a34..f55dd43cc 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -673,10 +673,10 @@ void func_80B439B0(s32 arg0, s32 arg1) { } if (!(arg0 & 1)) { - gSaveContext.roomInf[124][arg0 >> 1] = (gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); + gSaveContext.save.roomInf[124][arg0 >> 1] = (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); } else { - gSaveContext.roomInf[124][arg0 >> 1] = - (gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10); + gSaveContext.save.roomInf[124][arg0 >> 1] = + (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10); } } @@ -684,19 +684,19 @@ s32 func_80B43A24(s32 arg0) { u32 phi_v1; if ((arg0 & 1) == 0) { - phi_v1 = gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF; + phi_v1 = gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF; } else { - phi_v1 = (gSaveContext.roomInf[124][arg0 >> 1] & 0xFFFF0000) >> 0x10; + phi_v1 = (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) >> 0x10; } return phi_v1 + 0x1AAA; } void func_80B43A74(s32 arg0) { - gSaveContext.roomInf[124][4] = (gSaveContext.roomInf[124][4] & ~0xFF) | (arg0 & 0xFF); + gSaveContext.save.roomInf[124][4] = (gSaveContext.save.roomInf[124][4] & ~0xFF) | (arg0 & 0xFF); } s32 func_80B43A9C(void) { - return (gSaveContext.roomInf[124][4] >> 0) & 0xFF; + return (gSaveContext.save.roomInf[124][4] >> 0) & 0xFF; } s32 func_80B43AB0(void) { @@ -710,7 +710,7 @@ s32 func_80B43AB0(void) { } void func_80B43AF0(s32 arg0) { - s32 currentTime = gSaveContext.time; + s32 currentTime = gSaveContext.save.time; if (((CURRENT_DAY == 1) && (currentTime >= CLOCK_TIME(2, 30))) && (currentTime < CLOCK_TIME(5, 15))) { s32 adjustment = (0xC - func_80B43A9C()) * 25.0f; @@ -918,7 +918,7 @@ s32 func_80B44234(EnInvadepoh* this, Vec3f* vec) { void func_80B442E4(EnInvadepoh* this) { s32 pad; - s32 sp18 = gSaveContext.time; + s32 sp18 = gSaveContext.save.time; s32 temp_v1_2 = sp18 - func_80B43A24(this->actor.params & 7); if (D_80B4E940 == 1) { @@ -991,7 +991,7 @@ void func_80B44540(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B44570(EnInvadepoh* this) { - s32 currentTime = gSaveContext.time; + s32 currentTime = gSaveContext.save.time; if ((currentTime < CLOCK_TIME(2, 0)) || (currentTime >= CLOCK_TIME(6, 0))) { this->clockTime = 0.0f; @@ -1035,7 +1035,7 @@ void func_80B446D0(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B44700(EnInvadepoh* this) { - s32 currentTime = gSaveContext.time; + s32 currentTime = gSaveContext.save.time; s32 new_var4 = 0xFFFF2AAB; if ((currentTime < CLOCK_TIME(20, 0)) && (currentTime >= CLOCK_TIME(6, 0))) { @@ -1308,7 +1308,7 @@ void func_80B451A0(EnInvadepoh* this, GlobalContext* globalCtx) { if (CURRENT_DAY <= 0) { D_80B4E940 = 1; } else if (CURRENT_DAY == 1) { - currentTime = gSaveContext.time; + currentTime = gSaveContext.save.time; if ((currentTime < CLOCK_TIME(2, 30)) || (currentTime >= CLOCK_TIME(6, 0))) { D_80B4E940 = 1; } else if (currentTime < CLOCK_TIME(5, 15)) { @@ -1329,7 +1329,7 @@ void func_80B451A0(EnInvadepoh* this, GlobalContext* globalCtx) { } if (D_80B4E940 == 0) { - if (gSaveContext.weekEventReg[22] & 1) { + if (gSaveContext.save.weekEventReg[22] & 1) { D_80B4E940 = 3; } else { D_80B4E940 = 4; @@ -1694,7 +1694,7 @@ void func_80B4627C(EnInvadepoh* this, GlobalContext* globalCtx) { if (D_80B4E940 == 1) { func_80B46DA8(this); } else if (D_80B4E940 == 2) { - if (gSaveContext.time < CLOCK_TIME(2, 31)) { + if (gSaveContext.save.time < CLOCK_TIME(2, 31)) { func_80B46DA8(this); } else { func_80B454BC(this, globalCtx); @@ -1703,10 +1703,10 @@ void func_80B4627C(EnInvadepoh* this, GlobalContext* globalCtx) { func_80B46F88(this); } } else if (D_80B4E940 == 3) { - if (gSaveContext.entranceIndex == 0x6460) { + if (gSaveContext.save.entranceIndex == 0x6460) { func_80B471C0(this); - } else if (gSaveContext.entranceIndex == 0x6470) { + } else if (gSaveContext.save.entranceIndex == 0x6470) { func_80B47248(this); } else { func_80B47248(this); @@ -1793,23 +1793,23 @@ void EnInvadepoh_InitRomani(EnInvadepoh* this, GlobalContext* globalCtx) { Actor_MarkForDeath(&this->actor); } if (temp == 5) { - if (gSaveContext.weekEventReg[22] & 0x1) { + if (gSaveContext.save.weekEventReg[22] & 0x1) { Actor_MarkForDeath(&this->actor); return; } } else if (temp == 7) { - if (gSaveContext.time < CLOCK_TIME(6, 0) && gSaveContext.time >= CLOCK_TIME(2, 15)) { + if (gSaveContext.save.time < CLOCK_TIME(6, 0) && gSaveContext.save.time >= CLOCK_TIME(2, 15)) { Actor_MarkForDeath(&this->actor); return; } } else if (temp != 8) { if (temp == 9) { - if (gSaveContext.entranceIndex != 0x6460) { + if (gSaveContext.save.entranceIndex != 0x6460) { Actor_MarkForDeath(&this->actor); return; } } else if (temp == 0xC) { - if (!(gSaveContext.weekEventReg[22] & 0x1)) { + if (!(gSaveContext.save.weekEventReg[22] & 0x1)) { Actor_MarkForDeath(&this->actor); } D_80B503F4 = this; @@ -1822,7 +1822,7 @@ void func_80B468B4(EnInvadepoh* this, GlobalContext* globalCtx) { this->actor.update = func_80B49B1C; this->actor.draw = func_80B4E3F0; func_800BC154(globalCtx, &globalCtx->actorCtx, &this->actor, ACTORCAT_NPC); - if (D_80B4E940 == 1 || gSaveContext.time < CLOCK_TIME(2, 31)) { + if (D_80B4E940 == 1 || gSaveContext.save.time < CLOCK_TIME(2, 31)) { this->actor.world.pos.x += D_80B4E934.x; this->actor.world.pos.y += D_80B4E934.y + 3000.0f; this->actor.world.pos.z += D_80B4E934.z; @@ -1864,7 +1864,7 @@ void EnInvadepoh_InitCremia(EnInvadepoh* this, GlobalContext* globalCtx) { if (this->bankIndex < 0) { Actor_MarkForDeath(&this->actor); } - if (!(gSaveContext.weekEventReg[0x16] & 1)) { + if (!(gSaveContext.save.weekEventReg[0x16] & 1)) { Actor_MarkForDeath(&this->actor); } D_80B503F8 = this; @@ -1945,7 +1945,7 @@ void func_80B46DA8(EnInvadepoh* this) { } void func_80B46DC8(EnInvadepoh* this, GlobalContext* globalCtx) { - if ((gSaveContext.time < CLOCK_TIME(6, 0)) && (gSaveContext.time >= CLOCK_TIME(2, 30))) { + if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && (gSaveContext.save.time >= CLOCK_TIME(2, 30))) { func_80B454BC(this, globalCtx); func_80B452EC(this, globalCtx); func_80B46E20(this); @@ -2000,8 +2000,8 @@ void func_80B46F88(EnInvadepoh* this) { void func_80B46FA8(EnInvadepoh* this, GlobalContext* globalCtx) { s32 i; - if ((gSaveContext.time < CLOCK_TIME(6, 0)) && (gSaveContext.time >= CLOCK_TIME(5, 15))) { - gSaveContext.weekEventReg[22] |= 1; + if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && (gSaveContext.save.time >= CLOCK_TIME(5, 15))) { + gSaveContext.save.weekEventReg[22] |= 1; func_80B47064(this); } else { func_80B457A0(this); @@ -2086,7 +2086,7 @@ void func_80B47298(EnInvadepoh* this, GlobalContext* globalCtx) { globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 0x48; gSaveContext.nextTransition = 0x48; - gSaveContext.weekEventReg[89] |= 0x10; + gSaveContext.save.weekEventReg[89] |= 0x10; func_80B47304(this); } @@ -2335,7 +2335,7 @@ void func_80B47BAC(Actor* thisx, GlobalContext* globalCtx) { func_80B447C0(this, globalCtx); func_80B43F0C(this); func_80B4516C(this); - if (D_80B4E940 == 1 || gSaveContext.time < CLOCK_TIME(2, 31)) { + if (D_80B4E940 == 1 || gSaveContext.save.time < CLOCK_TIME(2, 31)) { func_80B47380(this); } else if (D_80B4E940 == 2) { if (this->clockTime >= 0.0001f) { @@ -3105,7 +3105,7 @@ void func_80B49DFC(EnInvadepoh* this, GlobalContext* globalCtx) { substruct->unk26.y = CLAMP(temp_v1, -0x1F40, 0x1F40); if (func_800B867C(&this->actor, globalCtx)) { if (this->actor.textId == 0x332D) { - gSaveContext.weekEventReg[54] |= 0x10; + gSaveContext.save.weekEventReg[54] |= 0x10; this->actor.textId = 0x332E; } func_80B49BD0(this); @@ -3118,7 +3118,7 @@ void func_80B49F88(Actor* thisx, GlobalContext* globalCtx) { s32 sp38; if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) { - sp38 = gSaveContext.time; + sp38 = gSaveContext.save.time; this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); @@ -3130,8 +3130,8 @@ void func_80B49F88(Actor* thisx, GlobalContext* globalCtx) { func_80B44C24(this, globalCtx); func_80B43F0C(this); func_80B4516C(this); - if (0x20 & gSaveContext.weekEventReg[21]) { - if (gSaveContext.weekEventReg[54] & 0x10) { + if (0x20 & gSaveContext.save.weekEventReg[21]) { + if (gSaveContext.save.weekEventReg[54] & 0x10) { this->actor.textId = 0x332E; } else { this->actor.textId = 0x332D; @@ -3157,7 +3157,7 @@ void func_80B49F88(Actor* thisx, GlobalContext* globalCtx) { void func_80B4A168(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; - if ((gSaveContext.time < CLOCK_TIME(6, 0)) && (gSaveContext.time >= CLOCK_TIME(2, 0))) { + if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && (gSaveContext.save.time >= CLOCK_TIME(2, 0))) { this->actor.update = func_80B4A1B8; this->actor.draw = func_80B4E324; func_80B49BD0(this); @@ -3332,7 +3332,7 @@ void func_80B4A81C(EnInvadepoh* this, GlobalContext* globalCtx) { if (func_800B867C(&this->actor, globalCtx)) { if (this->actor.textId == 0x332D) { - gSaveContext.weekEventReg[54] |= 0x10; + gSaveContext.save.weekEventReg[54] |= 0x10; this->actor.textId = 0x332E; } if (this->pathIndex == this->endPoint) { @@ -3349,7 +3349,7 @@ void func_80B4A9C8(Actor* thisx, GlobalContext* globalCtx) { s32 sp38; if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) { - sp38 = gSaveContext.time; + sp38 = gSaveContext.save.time; this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); @@ -3371,8 +3371,8 @@ void func_80B4A9C8(Actor* thisx, GlobalContext* globalCtx) { func_80B43F0C(this); func_800B4AEC(globalCtx, &this->actor, 50.0f); func_80B4516C(this); - if (gSaveContext.weekEventReg[21] & 0x20) { - if (gSaveContext.weekEventReg[54] & 0x10) { + if (gSaveContext.save.weekEventReg[21] & 0x20) { + if (gSaveContext.save.weekEventReg[54] & 0x10) { this->actor.textId = 0x332E; } else { this->actor.textId = 0x332D; @@ -3386,7 +3386,7 @@ void func_80B4A9C8(Actor* thisx, GlobalContext* globalCtx) { void func_80B4AB8C(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; - if ((gSaveContext.time < CLOCK_TIME(6, 0)) && (gSaveContext.time >= CLOCK_TIME(2, 15))) { + if ((gSaveContext.save.time < CLOCK_TIME(6, 0)) && (gSaveContext.save.time >= CLOCK_TIME(2, 15))) { this->actor.update = func_80B4ABDC; this->actor.draw = func_80B4E324; func_80B4A614(this); @@ -3420,7 +3420,7 @@ void func_80B4ACDC(EnInvadepoh* this) { } void func_80B4ACF0(EnInvadepoh* this, GlobalContext* globalCtx) { - if (gSaveContext.weekEventReg[22] & 1) { + if (gSaveContext.save.weekEventReg[22] & 1) { this->actor.draw = func_80B4E324; this->actor.flags |= (0x8 | 0x1); func_80B4AD3C(this); @@ -3448,7 +3448,7 @@ void func_80B4ADB8(EnInvadepoh* this) { void func_80B4ADCC(EnInvadepoh* this, GlobalContext* globalCtx) { if ((func_80152498(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { if (this->textId == 0x3331) { - if (gSaveContext.weekEventReg[22] & 2) { + if (gSaveContext.save.weekEventReg[22] & 2) { EnInvadepoh_SetTextID(this, globalCtx, 0x3334); func_80151BB4(globalCtx, 0x1D); func_80151BB4(globalCtx, 5); @@ -3480,7 +3480,7 @@ void func_80B4AEDC(EnInvadepoh* this, GlobalContext* globalCtx) { } if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; - gSaveContext.weekEventReg[22] |= 2; + gSaveContext.save.weekEventReg[22] |= 2; func_80B4AF80(this); } else { func_800B8A1C(&this->actor, globalCtx, GI_MILK_BOTTLE, 2000.0f, 2000.0f); @@ -3835,7 +3835,7 @@ void func_80B4BC4C(EnInvadepoh* this, GlobalContext* globalCtx) { (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 12.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } - if (gSaveContext.time > CLOCK_TIME(20, 15)) { + if (gSaveContext.save.time > CLOCK_TIME(20, 15)) { Actor_MarkForDeath(&this->actor); } else if ((temp_t6 != NULL) && (temp_t6->actionFunc == func_80B4CB0C)) { func_80B4C1BC(this); @@ -3912,7 +3912,7 @@ void func_80B4C3A0(Actor* thisx, GlobalContext* globalCtx) { if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) { s32 pad[2]; - s32 currentTime = gSaveContext.time; + s32 currentTime = gSaveContext.save.time; this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); @@ -3948,7 +3948,7 @@ void func_80B4C3A0(Actor* thisx, GlobalContext* globalCtx) { void func_80B4C568(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; - if ((gSaveContext.time >= 0xD573) && (gSaveContext.time < CLOCK_TIME(20, 15))) { + if ((gSaveContext.save.time >= 0xD573) && (gSaveContext.save.time < CLOCK_TIME(20, 15))) { this->actor.update = func_80B4C5C0; this->actor.draw = func_80B4E7BC; func_80B4BBE0(this); @@ -4133,7 +4133,7 @@ void func_80B4CE54(Actor* thisx, GlobalContext* globalCtx) { s32 sp38; if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) { - sp38 = gSaveContext.time; + sp38 = gSaveContext.save.time; this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); @@ -4164,7 +4164,7 @@ void func_80B4CE54(Actor* thisx, GlobalContext* globalCtx) { void func_80B4CFFC(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; - if ((gSaveContext.time >= CLOCK_TIME(20, 0)) && (gSaveContext.time < 0xD7E1)) { + if ((gSaveContext.save.time >= CLOCK_TIME(20, 0)) && (gSaveContext.save.time < 0xD7E1)) { this->actor.update = func_80B4D054; this->actor.draw = func_80B4E324; func_80B4C6C8(this); diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 631fc26e5..e1904bcdf 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -185,14 +185,14 @@ void EnKakasi_Init(Actor* thisx, GlobalContext* globalCtx) { } if (this->aboveGroundStatus) { - if (gSaveContext.weekEventReg[79] & 0x8) { + if (gSaveContext.save.weekEventReg[79] & 0x8) { this->aboveGroundStatus = ENKAKASI_ABOVE_GROUND_TYPE; this->songSummonDist = 80.0f; EnKakasi_SetupIdleUnderground(this); } else { Actor_SetHeight(&this->actor, 60.0f); this->unkFunc = EnKakasi_8096F88C; - if (gSaveContext.weekEventReg[83] & 0x1) { + if (gSaveContext.save.weekEventReg[83] & 0x1) { EnKakasi_InitTimeSkipDialogue(this); } else { EnKakasi_SetupIdleStanding(this); @@ -311,13 +311,13 @@ void EnKakasi_TimeSkipDialogue(EnKakasi* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (gSaveContext.respawnFlag != -4 && gSaveContext.respawnFlag != -8) { - if (gSaveContext.time != CLOCK_TIME(6, 0) && gSaveContext.time != CLOCK_TIME(18, 0) && + if (gSaveContext.save.time != CLOCK_TIME(6, 0) && gSaveContext.save.time != CLOCK_TIME(18, 0) && !(gSaveContext.eventInf[1] & 0x80)) { if (this->actor.textId == 0) { // dialogue after skipped time 'did you feel that? went by in an instant' this->actor.textId = 0x1653; - gSaveContext.weekEventReg[0x53] &= (u8)~1; + gSaveContext.save.weekEventReg[0x53] &= (u8)~1; this->unkMsgState1AC = 5; player->stateFlags1 |= 0x20; this->actor.flags |= 0x10000; @@ -341,7 +341,7 @@ void EnKakasi_SetupIdleStanding(EnKakasi* this) { } void EnKakasi_IdleStanding(EnKakasi* this, GlobalContext* globalCtx) { - u32 saveContextDay = gSaveContext.day; + u32 saveContextDay = gSaveContext.save.day; s16 passedValue1; s16 passedValue2; @@ -370,7 +370,7 @@ void EnKakasi_IdleStanding(EnKakasi* this, GlobalContext* globalCtx) { EnKakasi_SetAnimation(this, ENKAKASI_ANIM_SIDEWAYS_SHAKING); this->skelanime.playSpeed = 2.0f; } - } else if (saveContextDay == 3 && gSaveContext.isNight) { + } else if (saveContextDay == 3 && gSaveContext.save.isNight) { this->skelanime.playSpeed = 1.0f; if (this->animIndex != ENKAKASI_ANIM_SIDEWAYS_SHAKING) { EnKakasi_SetAnimation(this, 1); @@ -397,7 +397,7 @@ void EnKakasi_SetupDialogue(EnKakasi* this) { } void EnKakasi_RegularDialogue(EnKakasi* this, GlobalContext* globalCtx) { - u32 saveContextDay = gSaveContext.day; + u32 saveContextDay = gSaveContext.save.day; f32 currentAnimeFrame = this->skelanime.curFrame; Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 2000, 0); @@ -434,16 +434,16 @@ void EnKakasi_RegularDialogue(EnKakasi* this, GlobalContext* globalCtx) { // after timeskip if (this->actor.textId == 0x1653) { - u32 saveContextDay2 = gSaveContext.day; + u32 saveContextDay2 = gSaveContext.save.day; if (this->animIndex != ENKAKASI_ANIM_SIDEWAYS_SHAKING) { EnKakasi_SetAnimation(this, ENKAKASI_ANIM_SIDEWAYS_SHAKING); } - if (saveContextDay2 == 3 && gSaveContext.isNight) { + if (saveContextDay2 == 3 && gSaveContext.save.isNight) { // text: dangerous outside this->actor.textId = 0x164F; - } else if (gSaveContext.isNight) { + } else if (gSaveContext.save.isNight) { // text: would you like to skip time? this->actor.textId = 0x164E; } else { @@ -484,7 +484,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, GlobalContext* globalCtx) { if (this->animIndex != ENKAKASI_ANIM_SIDEWAYS_SHAKING) { EnKakasi_SetAnimation(this, ENKAKASI_ANIM_SIDEWAYS_SHAKING); } - if (gSaveContext.isNight) { + if (gSaveContext.save.isNight) { this->actor.textId = 0x164E; } else { this->actor.textId = 0x1645; @@ -528,7 +528,7 @@ void EnKakasi_RegularDialogue(EnKakasi* this, GlobalContext* globalCtx) { this->actor.textId = 0x1658; } else if (this->actor.textId == 0x165C) { this->actor.textId = 0x165E; - } else if (saveContextDay == 3 && gSaveContext.isNight) { + } else if (saveContextDay == 3 && gSaveContext.save.isNight) { this->actor.textId = 0x164F; } else { this->actor.textId = 0x1652; @@ -797,7 +797,7 @@ void EnKakasi_PostSongLearnDialogue(EnKakasi* this, GlobalContext* globalCtx) { * talking before dancing the night away, and cutscene setup */ void EnKakasi_DancingRemark(EnKakasi* this, GlobalContext* globalCtx) { - u32 currentDay = gSaveContext.day; + u32 currentDay = gSaveContext.save.day; this->unkState196 = 3; if (ActorCutscene_GetCurrentIndex() == 0x7C) { @@ -808,7 +808,7 @@ void EnKakasi_DancingRemark(EnKakasi* this, GlobalContext* globalCtx) { } else { ActorCutscene_StartAndSetUnkLinkFields(this->actorCutscenes[0], &this->actor); this->cutsceneCamId = ActorCutscene_GetCurrentCamera(this->actor.cutscene); - if (currentDay == 3 && gSaveContext.isNight) { + if (currentDay == 3 && gSaveContext.save.isNight) { EnKakasi_SetupDigAway(this); } else { func_801A2BB8(NA_BGM_SARIAS_SONG); @@ -945,15 +945,15 @@ void EnKakasi_DancingNightAway(EnKakasi* this, GlobalContext* globalCtx) { func_80169EFC(globalCtx); if (0) {} - if (gSaveContext.time > CLOCK_TIME(18, 0) || gSaveContext.time < CLOCK_TIME(6, 0)) { - gSaveContext.time = CLOCK_TIME(6, 0); + if (gSaveContext.save.time > CLOCK_TIME(18, 0) || gSaveContext.save.time < CLOCK_TIME(6, 0)) { + gSaveContext.save.time = CLOCK_TIME(6, 0); gSaveContext.respawnFlag = -4; gSaveContext.eventInf[2] |= 0x80; } else { - gSaveContext.time = CLOCK_TIME(18, 0); + gSaveContext.save.time = CLOCK_TIME(18, 0); gSaveContext.respawnFlag = -8; } - gSaveContext.weekEventReg[0x53] |= 1; + gSaveContext.save.weekEventReg[0x53] |= 1; this->unk190 = 0; this->actionFunc = EnKakasi_DoNothing; } @@ -1022,7 +1022,7 @@ void EnKakasi_DiggingAway(EnKakasi* this, GlobalContext* globalCtx) { Math_ApproachF(&this->actor.shape.yOffset, -6000.0f, 0.5f, 200.0f); if (fabsf(this->actor.shape.yOffset + 6000.0f) < 10.0f) { - gSaveContext.weekEventReg[79] |= 8; + gSaveContext.save.weekEventReg[79] |= 8; func_800B7298(globalCtx, &this->actor, 6); ActorCutscene_Stop(this->actorCutscenes[0]); this->aboveGroundStatus = ENKAKASI_ABOVE_GROUND_TYPE; @@ -1040,7 +1040,7 @@ void EnKakasi_SetupIdleUnderground(EnKakasi* this) { } void EnKakasi_IdleUnderground(EnKakasi* this, GlobalContext* globalCtx) { - if ((gSaveContext.weekEventReg[79] & 0x8) && this->actor.xzDistToPlayer < this->songSummonDist && + if ((gSaveContext.save.weekEventReg[79] & 0x8) && this->actor.xzDistToPlayer < this->songSummonDist && (BREG(1) != 0 || globalCtx->msgCtx.unk1202A == 0xD)) { this->actor.flags &= ~0x8000000; globalCtx->msgCtx.unk1202A = 4; diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index be9d78aed..195e85ace 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -75,10 +75,10 @@ void EnKgy_Init(Actor* thisx, GlobalContext* globalCtx) { this->zubora = EnKgy_FindZubora(globalCtx); this->iceBlock = EnKgy_FindIceBlock(globalCtx); Actor_UnsetSwitchFlag(globalCtx, ENKGY_GET_FE00(&this->actor) + 1); - if (Flags_GetSwitch(globalCtx, ENKGY_GET_FE00(&this->actor)) || (gSaveContext.weekEventReg[33] & 0x80)) { + if (Flags_GetSwitch(globalCtx, ENKGY_GET_FE00(&this->actor)) || (gSaveContext.save.weekEventReg[33] & 0x80)) { Actor_SetSwitchFlag(globalCtx, ENKGY_GET_FE00(&this->actor) + 1); globalCtx->envCtx.unk_C3 = 1; - gSaveContext.weekEventReg[21] |= 1; + gSaveContext.save.weekEventReg[21] |= 1; if (!func_80B40D64(globalCtx)) { EnKgy_ChangeAnim(this, 4, 0, 0); this->actionFunc = func_80B425A0; @@ -95,7 +95,7 @@ void EnKgy_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.textId = 0xC50; } } else { - if (gSaveContext.weekEventReg[20] & 0x80) { + if (gSaveContext.save.weekEventReg[20] & 0x80) { EnKgy_ChangeAnim(this, 4, 0, 0); } else { EnKgy_ChangeAnim(this, 0, 0, 0); @@ -167,32 +167,32 @@ ObjIcePoly* EnKgy_FindIceBlock(GlobalContext* globalCtx) { } void func_80B40C74(GlobalContext* globalCtx) { - gSaveContext.roomInf[globalCtx->sceneNum][5] |= 1; + gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 1; if (CURRENT_DAY == 1) { - gSaveContext.roomInf[globalCtx->sceneNum][5] |= 2; + gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 2; } else { - gSaveContext.roomInf[globalCtx->sceneNum][5] &= ~2; + gSaveContext.save.roomInf[globalCtx->sceneNum][5] &= ~2; } } void func_80B40D00(GlobalContext* globalCtx) { - gSaveContext.roomInf[globalCtx->sceneNum][5] |= 4; + gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 4; } void func_80B40D30(GlobalContext* globalCtx) { - gSaveContext.roomInf[globalCtx->sceneNum][5] &= ~7; + gSaveContext.save.roomInf[globalCtx->sceneNum][5] &= ~7; } s32 func_80B40D64(GlobalContext* globalCtx) { - return gSaveContext.roomInf[globalCtx->sceneNum][5] & 1; + return gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 1; } s32 func_80B40D8C(GlobalContext* globalCtx) { - return gSaveContext.roomInf[globalCtx->sceneNum][5] & 4; + return gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 4; } s32 func_80B40DB4(GlobalContext* globalCtx) { - if ((CURRENT_DAY == 3) || ((CURRENT_DAY == 2) && (gSaveContext.roomInf[globalCtx->sceneNum][5] & 2))) { + if ((CURRENT_DAY == 3) || ((CURRENT_DAY == 2) && (gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 2))) { return true; } return false; @@ -375,7 +375,7 @@ void func_80B413C8(EnKgy* this) { } s32 func_80B41460(void) { - if ((gSaveContext.playerForm != PLAYER_FORM_HUMAN) || + if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || ((CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_KOKIRI) && (CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_RAZOR) && (CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_GILDED))) { return 0xC38; @@ -636,7 +636,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { case 0xC3B: switch (globalCtx->msgCtx.choiceIndex) { case 0: - if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { play_sound(NA_SE_SY_ERROR); func_80B40E74(this, globalCtx, 0xC3F); } else { @@ -1069,7 +1069,7 @@ void func_80B42D28(EnKgy* this, GlobalContext* globalCtx) { func_80B40BC0(this, 1); } else { EnKgy_ChangeAnim(this, 5, 2, -5.0f); - gSaveContext.weekEventReg[20] |= 0x80; + gSaveContext.save.weekEventReg[20] |= 0x80; } func_80B411DC(this, globalCtx, 0); func_80B40E18(this, this->actor.textId); @@ -1077,7 +1077,7 @@ void func_80B42D28(EnKgy* this, GlobalContext* globalCtx) { if (Flags_GetSwitch(globalCtx, ENKGY_GET_FE00(&this->actor))) { this->actor.textId = 0xC30; this->actionFunc = func_80B4296C; - gSaveContext.weekEventReg[21] |= 1; + gSaveContext.save.weekEventReg[21] |= 1; } else if (this->actor.xzDistToPlayer < 200.0f) { if (this->unk_2D2 == 4) { this->actor.textId = 0xC2D; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 92908ac6d..edca81f6e 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -220,7 +220,7 @@ void EnMa4_Init(Actor* thisx, GlobalContext* globalCtx) { if (CURRENT_DAY == 1) { this->type = MA4_TYPE_DAY1; - } else if (gSaveContext.weekEventReg[0x16] & 1) { // Aliens defeated + } else if (gSaveContext.save.weekEventReg[0x16] & 1) { // Aliens defeated this->type = MA4_TYPE_ALIENS_DEFEATED; } else { this->type = MA4_TYPE_ALIENS_WON; @@ -234,10 +234,10 @@ void EnMa4_Init(Actor* thisx, GlobalContext* globalCtx) { } else { EnMa4_InitPath(this, globalCtx); - if (gSaveContext.entranceIndex == 0x6410) { + if (gSaveContext.save.entranceIndex == 0x6410) { EnMa4_ChangeAnim(this, 0); this->state = MA4_STATE_AFTERHORSEBACKGAME; - } else if (gSaveContext.entranceIndex == 0x64A0) { + } else if (gSaveContext.save.entranceIndex == 0x64A0) { EnMa4_ChangeAnim(this, 0); this->state = MA4_STATE_AFTERDESCRIBETHEMCS; } else { @@ -258,7 +258,7 @@ void EnMa4_Destroy(Actor* thisx, GlobalContext* globalCtx) { EnMa4* this = THIS; Collider_DestroyCylinder(globalCtx, &this->collider); - gSaveContext.weekEventReg[0x8] &= (u8)~0x01; + gSaveContext.save.weekEventReg[0x8] &= (u8)~0x01; } // Running in circles in the ranch @@ -392,7 +392,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, GlobalContext* globalCtx) { case 0x3341: if (globalCtx->msgCtx.choiceIndex == 0) { func_8019F208(); - gSaveContext.weekEventReg[0x15] |= 0x20; + gSaveContext.save.weekEventReg[0x15] |= 0x20; func_801518B0(globalCtx, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -408,7 +408,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, GlobalContext* globalCtx) { case 0x3346: if (globalCtx->msgCtx.choiceIndex == 0) { func_8019F208(); - gSaveContext.weekEventReg[0x15] |= 0x20; + gSaveContext.save.weekEventReg[0x15] |= 0x20; func_801518B0(globalCtx, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -623,7 +623,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, GlobalContext* globalCtx) { break; case 0x3358: - if ((gSaveContext.playerForm != PLAYER_FORM_HUMAN) || !(CHECK_QUEST_ITEM(QUEST_SONG_EPONA))) { + if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || !(CHECK_QUEST_ITEM(QUEST_SONG_EPONA))) { func_801518B0(globalCtx, 0x335C, &this->actor); this->textId = 0x335C; func_80151BB4(globalCtx, 5); @@ -712,7 +712,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, GlobalContext* globalCtx) { globalCtx->interfaceCtx.unk_280 = 1; func_8010E9F0(4, 0); - gSaveContext.weekEventReg[0x8] |= 0x01; + gSaveContext.save.weekEventReg[0x8] |= 0x01; func_80112AFC(globalCtx); player->stateFlags1 |= 0x20; this->actionFunc = EnMa4_SetupHorsebackGameWait; @@ -748,7 +748,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, GlobalContext* globalCtx) { } void EnMa4_SetupHorsebackGameEnd(EnMa4* this, GlobalContext* globalCtx) { - gSaveContext.weekEventReg[0x8] &= (u8)~0x01; + gSaveContext.save.weekEventReg[0x8] &= (u8)~0x01; this->actionFunc = EnMa4_HorsebackGameEnd; Audio_QueueSeqCmd(NA_BGM_STOP); Audio_QueueSeqCmd(NA_BGM_HORSE_GOAL | 0x8000); @@ -894,8 +894,8 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { switch (this->type) { case MA4_TYPE_DAY1: - if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { - if ((gSaveContext.weekEventReg[0x15] & 0x80)) { + if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { + if ((gSaveContext.save.weekEventReg[0x15] & 0x80)) { EnMa4_SetFaceExpression(this, 3, 3); func_801518B0(globalCtx, 0x3337, &this->actor); this->textId = 0x3337; @@ -903,11 +903,11 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { } else { func_801518B0(globalCtx, 0x3335, &this->actor); this->textId = 0x3335; - gSaveContext.weekEventReg[0x15] |= 0x80; + gSaveContext.save.weekEventReg[0x15] |= 0x80; } } else if (this->state == MA4_STATE_DEFAULT) { - if ((gSaveContext.weekEventReg[0x15] & 0x40)) { - if (!(gSaveContext.weekEventReg[0x15] & 0x20)) { + if ((gSaveContext.save.weekEventReg[0x15] & 0x40)) { + if (!(gSaveContext.save.weekEventReg[0x15] & 0x20)) { func_801518B0(globalCtx, 0x3346, &this->actor); this->textId = 0x3346; } else { @@ -917,7 +917,7 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { } else { func_801518B0(globalCtx, 0x3338, &this->actor); this->textId = 0x3338; - gSaveContext.weekEventReg[0x15] |= 0x40; + gSaveContext.save.weekEventReg[0x15] |= 0x40; } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { if (gSaveContext.unk_3DE0[4] >= 2 * 60 * 100) { @@ -927,9 +927,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x336D; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.roomInf[127][4]) { + if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { // [Score] New record! - gSaveContext.roomInf[127][4] = time; + gSaveContext.save.roomInf[127][4] = time; EnMa4_SetFaceExpression(this, 0, 3); func_801518B0(globalCtx, 0x3350, &this->actor); this->textId = 0x3350; @@ -950,8 +950,8 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { break; case MA4_TYPE_ALIENS_DEFEATED: - if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { - if ((gSaveContext.weekEventReg[0x15] & 0x80)) { + if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { + if ((gSaveContext.save.weekEventReg[0x15] & 0x80)) { EnMa4_SetFaceExpression(this, 3, 3); func_801518B0(globalCtx, 0x3337, &this->actor); this->textId = 0x3337; @@ -959,7 +959,7 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { } else { func_801518B0(globalCtx, 0x3335, &this->actor); this->textId = 0x3335; - gSaveContext.weekEventReg[0x15] |= 0x80; + gSaveContext.save.weekEventReg[0x15] |= 0x80; } } else if (this->state == MA4_STATE_DEFAULT) { func_801518B0(globalCtx, 0x3354, &this->actor); @@ -971,8 +971,8 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x3356; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.roomInf[127][4]) { - gSaveContext.roomInf[127][4] = time; + if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { + gSaveContext.save.roomInf[127][4] = time; EnMa4_SetFaceExpression(this, 0, 3); func_801518B0(globalCtx, 0x3350, &this->actor); this->textId = 0x3350; @@ -998,9 +998,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x3356; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.roomInf[127][4]) { + if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { // New record - gSaveContext.roomInf[127][4] = time; + gSaveContext.save.roomInf[127][4] = time; func_801518B0(globalCtx, 0x335D, &this->actor); this->textId = 0x335D; } else { diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index 6b55a48a7..415e56146 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -174,7 +174,7 @@ void EnMaYto_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk320 = 0; this->eyeTexIndex = 0; - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { EnMaYto_SetFaceExpression(this, 0, 1); } else { EnMaYto_SetFaceExpression(this, 5, 2); @@ -208,34 +208,34 @@ void EnMaYto_Init(Actor* thisx, GlobalContext* globalCtx) { s32 EnMaYto_CheckValidSpawn(EnMaYto* this, GlobalContext* globalCtx) { switch (this->type) { case MA_YTO_TYPE_DEFAULT: - if (CURRENT_DAY == 3 && !(gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 3 && !(gSaveContext.save.weekEventReg[0x16] & 1)) { return false; } break; case MA_YTO_TYPE_DINNER: - if (CURRENT_DAY != 1 && (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY != 1 && (gSaveContext.save.weekEventReg[0x16] & 1)) { return false; } break; case MA_YTO_TYPE_BARN: - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { if (((this->actor.params & 0x0F00) >> 8) != 0) { return false; } } else if (((this->actor.params & 0x0F00) >> 8) == 0) { return false; } - if (gSaveContext.time >= CLOCK_TIME(20, 0) && CURRENT_DAY == 3) { + if (gSaveContext.save.time >= CLOCK_TIME(20, 0) && CURRENT_DAY == 3) { return false; } break; case MA_YTO_TYPE_AFTERMILKRUN: - // if (!(ProtectedCremia) && !(gSaveContext.weekEventReg[0x34] & 2)) || (PlayedMilkMinigame)) - if ((!(gSaveContext.weekEventReg[0x34] & 1) && !(gSaveContext.weekEventReg[0x34] & 2)) || - (gSaveContext.weekEventReg[0xE] & 1)) { + // if (!(ProtectedCremia) && !(gSaveContext.save.weekEventReg[0x34] & 2)) || (PlayedMilkMinigame)) + if ((!(gSaveContext.save.weekEventReg[0x34] & 1) && !(gSaveContext.save.weekEventReg[0x34] & 2)) || + (gSaveContext.save.weekEventReg[0xE] & 1)) { return false; } break; @@ -263,7 +263,7 @@ void EnMaYto_InitAnimation(EnMaYto* this, GlobalContext* globalCtx) { case MA_YTO_TYPE_BARN: // if (AliensDefeated) - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { EnMaYto_ChangeAnim(this, 12); } else { EnMaYto_ChangeAnim(this, 8); @@ -301,7 +301,7 @@ void EnMaYto_ChooseAction(EnMaYto* this, GlobalContext* globalCtx) { case MA_YTO_TYPE_AFTERMILKRUN: this->unk310 = 0; - if (INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI && (gSaveContext.weekEventReg[0x34] & 1) && + if (INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI && (gSaveContext.save.weekEventReg[0x34] & 1) && (Rand_Next() & 0x80)) { EnMaYto_SetupBeginWarmFuzzyFeelingCs(this); } else { @@ -356,7 +356,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, GlobalContext* globalCtx) { return 0; case MA_YTO_TYPE_DINNER: - if (!(gSaveContext.weekEventReg[0x16] & 1) && CURRENT_DAY == 2) { + if (!(gSaveContext.save.weekEventReg[0x16] & 1) && CURRENT_DAY == 2) { return 0; } if (EnMaYto_SearchRomani(this, globalCtx)) { @@ -366,7 +366,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, GlobalContext* globalCtx) { case MA_YTO_TYPE_BARN: // if (AliensDefeated) - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { if (EnMaYto_SearchRomani(this, globalCtx)) { return 2; } @@ -520,7 +520,7 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, GlobalContext* globalCtx) } void EnMaYto_SetupDinnerWait(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { func_80B90E50(this, 0); this->unk31E = 0; } else { @@ -561,7 +561,7 @@ void EnMaYto_DinnerWait(EnMaYto* this, GlobalContext* globalCtx) { } void EnMaYto_SetupDinnerDialogueHandler(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -712,7 +712,7 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, GlobalContext* globalCtx) { } void EnMaYto_SetupBarnWait(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { EnMaYto_ChangeAnim(this, 13); func_80B90E50(this, 0); this->unk31E = 0; @@ -740,7 +740,7 @@ void EnMaYto_BarnWait(EnMaYto* this, GlobalContext* globalCtx) { func_800B86C8(&this->actor, globalCtx, &this->actor); EnMaYto_BarnStartDialogue(this, globalCtx); EnMaYto_SetupBarnDialogueHandler(this); - } else if (!(gSaveContext.weekEventReg[0x16] & 1) || ABS_ALT(direction) < 0x2000) { + } else if (!(gSaveContext.save.weekEventReg[0x16] & 1) || ABS_ALT(direction) < 0x2000) { func_800B8614(&this->actor, globalCtx, 100.0f); child = this->actor.child; @@ -752,7 +752,7 @@ void EnMaYto_BarnWait(EnMaYto* this, GlobalContext* globalCtx) { } void EnMaYto_SetupBarnDialogueHandler(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -900,7 +900,7 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, GlobalContext* globalCtx) { } void EnMaYto_SetupAfterMilkRunInit(EnMaYto* this) { - if (gSaveContext.weekEventReg[0x34] & 1) { // if (ProtectedCremia) + if (gSaveContext.save.weekEventReg[0x34] & 1) { // if (ProtectedCremia) EnMaYto_SetFaceExpression(this, 3, 1); } else { func_801A3098(NA_BGM_FAILURE_1); @@ -915,7 +915,7 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { this->actor.flags &= ~0x10000; - if (gSaveContext.weekEventReg[0x34] & 1) { // if (ProtectedCremia) + if (gSaveContext.save.weekEventReg[0x34] & 1) { // if (ProtectedCremia) func_801518B0(globalCtx, 0x33C1, &this->actor); this->textId = 0x33C1; } else { @@ -924,7 +924,7 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x33C0, &this->actor); this->textId = 0x33C0; // Attempted Cremia Cart Ride - gSaveContext.weekEventReg[0xE] |= 0x1; + gSaveContext.save.weekEventReg[0xE] |= 0x1; this->unk310 = 4; EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); func_80151BB4(globalCtx, 6); @@ -1006,7 +1006,7 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x33C3, &this->actor); this->textId = 0x33C3; // Attempted Cremia Cart Ride - gSaveContext.weekEventReg[0xE] |= 0x1; + gSaveContext.save.weekEventReg[0xE] |= 0x1; this->unk310 = 3; func_80151BB4(globalCtx, 0x20); func_80151BB4(globalCtx, 0x1F); @@ -1018,7 +1018,7 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x33D0, &this->actor); this->textId = 0x33D0; // Attempted Cremia Cart Ride - gSaveContext.weekEventReg[0xE] |= 0x1; + gSaveContext.save.weekEventReg[0xE] |= 0x1; this->unk310 = 3; func_80151BB4(globalCtx, 6); EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); @@ -1069,7 +1069,7 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, GlobalContext* globalCtx) { case 2: // Attempted Cremia Cart Ride - gSaveContext.weekEventReg[0xE] |= 1; + gSaveContext.save.weekEventReg[0xE] |= 1; EnMaYto_ChangeAnim(this, 18); break; @@ -1127,7 +1127,7 @@ void EnMaYto_PostMilkRunEnd(EnMaYto* this, GlobalContext* globalCtx) { void EnMaYto_DefaultStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { if (CURRENT_DAY == 1) { - if (Player_GetMask(globalCtx) != PLAYER_MASK_NONE && gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (Player_GetMask(globalCtx) != PLAYER_MASK_NONE && gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { switch (Player_GetMask(globalCtx)) { case PLAYER_MASK_ROMANI: func_801518B0(globalCtx, 0x235D, &this->actor); @@ -1186,7 +1186,7 @@ void EnMaYto_DefaultStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { void EnMaYto_DinnerStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { switch (CURRENT_DAY) { case 1: - if (Player_GetMask(globalCtx) != PLAYER_MASK_NONE && gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (Player_GetMask(globalCtx) != PLAYER_MASK_NONE && gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { switch (Player_GetMask(globalCtx)) { case PLAYER_MASK_ROMANI: func_801518B0(globalCtx, 0x235D, &this->actor); @@ -1253,7 +1253,7 @@ void EnMaYto_DinnerStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { void EnMaYto_BarnStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { // if (AliensDefeated) - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { if (CURRENT_DAY == 2) { if (this->unk310 == 1) { func_801518B0(globalCtx, 0x33AE, &this->actor); @@ -1376,7 +1376,7 @@ void EnMaYto_SetFaceExpression(EnMaYto* this, s16 overrideEyeTexIndex, s16 mouth } void EnMaYto_InitFaceExpression(EnMaYto* this) { - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { EnMaYto_SetFaceExpression(this, 0, 1); EnMaYto_SetRomaniFaceExpression(this, 0, 0); } else { @@ -1388,19 +1388,19 @@ void EnMaYto_InitFaceExpression(EnMaYto* this) { s32 EnMaYto_HasSpokeToPlayerToday(void) { switch (CURRENT_DAY) { case 1: - if (gSaveContext.weekEventReg[0xD] & 0x4) { + if (gSaveContext.save.weekEventReg[0xD] & 0x4) { return true; } break; case 2: - if (gSaveContext.weekEventReg[0xD] & 0x8) { + if (gSaveContext.save.weekEventReg[0xD] & 0x8) { return true; } break; case 3: - if (gSaveContext.weekEventReg[0xD] & 0x10) { + if (gSaveContext.save.weekEventReg[0xD] & 0x10) { return true; } break; @@ -1412,17 +1412,17 @@ s32 EnMaYto_HasSpokeToPlayer(void) { // Please note each case doesn't have their respective `break`s. switch (CURRENT_DAY) { case 3: - if (gSaveContext.weekEventReg[0xD] & 0x10) { + if (gSaveContext.save.weekEventReg[0xD] & 0x10) { return true; } case 2: - if (gSaveContext.weekEventReg[0xD] & 0x8) { + if (gSaveContext.save.weekEventReg[0xD] & 0x8) { return true; } case 1: - if (gSaveContext.weekEventReg[0xD] & 0x4) { + if (gSaveContext.save.weekEventReg[0xD] & 0x4) { return true; } } @@ -1432,15 +1432,15 @@ s32 EnMaYto_HasSpokeToPlayer(void) { void EnMaYto_SetTalkedFlag(void) { switch (CURRENT_DAY) { case 1: - gSaveContext.weekEventReg[0xD] |= 0x4; + gSaveContext.save.weekEventReg[0xD] |= 0x4; break; case 2: - gSaveContext.weekEventReg[0xD] |= 0x8; + gSaveContext.save.weekEventReg[0xD] |= 0x8; break; case 3: - gSaveContext.weekEventReg[0xD] |= 0x10; + gSaveContext.save.weekEventReg[0xD] |= 0x10; break; } } @@ -1490,7 +1490,7 @@ void EnMaYto_Draw(Actor* thisx, GlobalContext* globalCtx) { s32 pad; OPEN_DISPS(globalCtx->state.gfxCtx); - if (this->type == MA_YTO_TYPE_BARN && (gSaveContext.weekEventReg[0x16] & 1)) { // Alieans defeated + if (this->type == MA_YTO_TYPE_BARN && (gSaveContext.save.weekEventReg[0x16] & 1)) { // Alieans defeated gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06005430); } diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index 266ba90e9..bccf4e67a 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -167,7 +167,7 @@ void EnMaYts_InitAnimation(EnMaYts* this, GlobalContext* globalCtx) { case MA_YTS_TYPE_SITTING: this->actor.targetMode = 6; // Day 1 or "Winning" the alien invasion - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { EnMaYts_ChangeAnim(this, 14); } else { EnMaYts_ChangeAnim(this, 18); @@ -200,14 +200,14 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, GlobalContext* globalCtx) { case 2: // Failing the alien invasion - if (!(gSaveContext.weekEventReg[0x16] & 1)) { + if (!(gSaveContext.save.weekEventReg[0x16] & 1)) { return false; } break; case 3: // "Winning" the alien invasion - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { return false; } break; @@ -216,16 +216,16 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, GlobalContext* globalCtx) { case MA_YTS_TYPE_BARN: // Failing the alien invasion - if (!(gSaveContext.weekEventReg[0x16] & 1)) { + if (!(gSaveContext.save.weekEventReg[0x16] & 1)) { return false; - } else if (gSaveContext.time >= CLOCK_TIME(20, 0) && CURRENT_DAY == 3) { + } else if (gSaveContext.save.time >= CLOCK_TIME(20, 0) && CURRENT_DAY == 3) { return false; } break; case MA_YTS_TYPE_SLEEPING: // "Winning" the alien invasion - if (gSaveContext.weekEventReg[0x16] & 1) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { return false; } break; @@ -271,7 +271,7 @@ void EnMaYts_Init(Actor* thisx, GlobalContext* globalCtx) { this->hasBow = false; } - if (CURRENT_DAY == 1 || (gSaveContext.weekEventReg[0x16] & 1)) { + if (CURRENT_DAY == 1 || (gSaveContext.save.weekEventReg[0x16] & 1)) { this->overrideEyeTexIndex = 0; this->eyeTexIndex = 0; this->mouthTexIndex = 0; @@ -289,7 +289,7 @@ void EnMaYts_Init(Actor* thisx, GlobalContext* globalCtx) { this->mouthTexIndex = 0; this->unk_32C = 2; EnMaYts_SetupEndCreditsHandler(this); - } else if (CURRENT_DAY == 2 && gSaveContext.isNight == 1 && (gSaveContext.weekEventReg[0x16] & 1)) { + } else if (CURRENT_DAY == 2 && gSaveContext.save.isNight == 1 && (gSaveContext.save.weekEventReg[0x16] & 1)) { EnMaYts_SetupStartDialogue(this); } else { EnMaYts_SetupDoNothing(this); @@ -318,10 +318,10 @@ void EnMaYts_StartDialogue(EnMaYts* this, GlobalContext* globalCtx) { s16 sp26 = this->actor.shape.rot.y - this->actor.yawTowardsPlayer; if (func_800B84D0(&this->actor, globalCtx)) { // if (Actor_IsTalking) - if (!(gSaveContext.playerForm == PLAYER_FORM_HUMAN)) { - if (!(gSaveContext.weekEventReg[0x41] & 0x80)) { + if (!(gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { + if (!(gSaveContext.save.weekEventReg[0x41] & 0x80)) { // Saying to non-human Link: "Cremia went to town." - gSaveContext.weekEventReg[0x41] |= 0x80; + gSaveContext.save.weekEventReg[0x41] |= 0x80; EnMaYts_SetFaceExpression(this, 0, 0); func_801518B0(globalCtx, 0x335F, &this->actor); this->textId = 0x335F; @@ -333,8 +333,8 @@ void EnMaYts_StartDialogue(EnMaYts* this, GlobalContext* globalCtx) { func_80151BB4(globalCtx, 5); } } else if (Player_GetMask(globalCtx) != PLAYER_MASK_NONE) { - if (!(gSaveContext.weekEventReg[0x41] & 0x40)) { - gSaveContext.weekEventReg[0x41] |= 0x40; + if (!(gSaveContext.save.weekEventReg[0x41] & 0x40)) { + gSaveContext.save.weekEventReg[0x41] |= 0x40; EnMaYts_SetFaceExpression(this, 0, 0); func_801518B0(globalCtx, 0x3363, &this->actor); this->textId = 0x3363; @@ -344,14 +344,14 @@ void EnMaYts_StartDialogue(EnMaYts* this, GlobalContext* globalCtx) { this->textId = 0x3366; func_80151BB4(globalCtx, 5); } - } else if (!(gSaveContext.weekEventReg[0x15] & 0x20)) { + } else if (!(gSaveContext.save.weekEventReg[0x15] & 0x20)) { EnMaYts_SetFaceExpression(this, 0, 0); func_801518B0(globalCtx, 0x3367, &this->actor); this->textId = 0x3367; } else { - if (!(gSaveContext.weekEventReg[0x41] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[0x41] & 0x20)) { // Saying to Grasshopper: "Cremia went to town." - gSaveContext.weekEventReg[0x41] |= 0x20; + gSaveContext.save.weekEventReg[0x41] |= 0x20; EnMaYts_SetFaceExpression(this, 4, 2); func_801518B0(globalCtx, 0x3369, &this->actor); this->textId = 0x3369; diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 4b5585086..15c36600d 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -70,7 +70,7 @@ static UNK_TYPE4* D_808A4D74[] = { &D_06005BA0, }; -// gSaveContext.weekEventReg[KEY] = VALUE +// gSaveContext.save.weekEventReg[KEY] = VALUE // KEY | VALUE static u16 isFrogReturnedFlags[] = { (0 << 8) | 0x00, // NULL @@ -117,7 +117,7 @@ void EnMinifrog_Init(Actor* thisx, GlobalContext* globalCtx) { if (1) {} if (!EN_MINIFROG_IS_RETURNED(this)) { if ((this->frogIndex == MINIFROG_YELLOW) || - ((gSaveContext.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & + ((gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & (u8)isFrogReturnedFlags[this->frogIndex]))) { Actor_MarkForDeath(&this->actor); } else { @@ -132,7 +132,7 @@ void EnMinifrog_Init(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc = EnMinifrog_SetupYellowFrogDialog; // Not spoken to MINIFROG_YELLOW - if (!(gSaveContext.weekEventReg[34] & 1)) { + if (!(gSaveContext.save.weekEventReg[34] & 1)) { this->actor.flags |= 0x10000; } @@ -143,7 +143,7 @@ void EnMinifrog_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.flags &= ~1; // Frog has been returned - if ((gSaveContext.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & + if ((gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] & (u8)isFrogReturnedFlags[this->frogIndex])) { this->actionFunc = EnMinifrog_SetupNextFrogInit; } else { @@ -274,14 +274,14 @@ void EnMinifrog_ReturnFrogCutscene(EnMinifrog* this, GlobalContext* globalCtx) { func_80151938(globalCtx, globalCtx->msgCtx.unk11F04 + 1); break; case 0xD82: // "What has brought you all this way?" - if (gSaveContext.weekEventReg[33] & 0x80) { // Mountain village is unfrozen + if (gSaveContext.save.weekEventReg[33] & 0x80) { // Mountain village is unfrozen func_80151938(globalCtx, 0xD83); // "Could it be... Has spring finally come to the mountains?" } else { func_80151938(globalCtx, 0xD86); // "Could it be... You came all this way looking for me?" } - flag = gSaveContext.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8]; - gSaveContext.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] = + flag = gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8]; + gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] = flag | (u8)isFrogReturnedFlags[this->frogIndex]; break; case 0xD85: // "I understand. I shall head for the mountains immediately." @@ -521,7 +521,7 @@ void EnMinifrog_YellowFrogDialog(EnMinifrog* this, GlobalContext* globalCtx) { // you've lost a little weight..." func_80151938(globalCtx, globalCtx->msgCtx.unk11F04 + 1); this->actor.flags &= ~0x10000; - gSaveContext.weekEventReg[34] |= 1; // Spoken to MINIFROG_YELLOW + gSaveContext.save.weekEventReg[34] |= 1; // Spoken to MINIFROG_YELLOW break; case 0xD78: // "Unfortunately, it seems not all of our members have gathered." case 0xD79: // "Perhaps it is because winter was too long? They must not have realized that spring @@ -535,11 +535,11 @@ void EnMinifrog_YellowFrogDialog(EnMinifrog* this, GlobalContext* globalCtx) { globalCtx->msgCtx.unk11F10 = 0; break; case 0xD7C: // "The conducting was spectacular. And all of our members rose to the occasion!" - if (gSaveContext.weekEventReg[35] & 0x80) { // Obtained Heart Piece + if (gSaveContext.save.weekEventReg[35] & 0x80) { // Obtained Heart Piece func_80151938(globalCtx, 0xD7E); } else { func_80151938(globalCtx, 0xD7D); // Get Heart Piece - gSaveContext.weekEventReg[35] |= 0x80; + gSaveContext.save.weekEventReg[35] |= 0x80; } break; case 0xD7D: // "This is how deeply we were moved by your spectacular conducting..." @@ -567,7 +567,7 @@ void EnMinifrog_SetupYellowFrogDialog(EnMinifrog* this, GlobalContext* globalCtx EnMinifrog_JumpTimer(this); if (func_800B84D0(&this->actor, globalCtx)) { this->actionFunc = EnMinifrog_YellowFrogDialog; - if (!(gSaveContext.weekEventReg[34] & 1)) { // Not spoken with MINIFROG_YELLOW + if (!(gSaveContext.save.weekEventReg[34] & 1)) { // Not spoken with MINIFROG_YELLOW func_801518B0(globalCtx, 0xD76, &this->actor); // "I have been waiting for you, Don Gero. Forgive me if I'm mistaken, but it // looks like you've lost a little weight..." diff --git a/src/overlays/actors/ovl_En_Mm/z_en_mm.c b/src/overlays/actors/ovl_En_Mm/z_en_mm.c index 00bf38f8a..39844aefe 100644 --- a/src/overlays/actors/ovl_En_Mm/z_en_mm.c +++ b/src/overlays/actors/ovl_En_Mm/z_en_mm.c @@ -73,8 +73,8 @@ void EnMm_Init(Actor* thisx, GlobalContext* globalCtx) { EnMm* this = THIS; EnMmActionFunc action; - if ((this->actor.params >= 0) && ((!(gSaveContext.weekEventReg[37] & 0x10)) || - (gSaveContext.weekEventReg[37] & 8) || (gSaveContext.unk_1014 != 0))) { + if ((this->actor.params >= 0) && ((!(gSaveContext.save.weekEventReg[37] & 0x10)) || + (gSaveContext.save.weekEventReg[37] & 8) || (gSaveContext.unk_1014 != 0))) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index efc0ea175..039834505 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -84,7 +84,7 @@ void EnMs_Destroy(Actor* thisx, GlobalContext* globalCtx) { void EnMs_Wait(EnMs* this, GlobalContext* globalCtx) { s16 yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; - if (gSaveContext.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[SLOT_MAGIC_BEANS] == ITEM_NONE) { this->actor.textId = 0x92E; // "[...] You're the first customer [...]" } else { this->actor.textId = 0x932; // "[...] So you liked my Magic Beans [...]" @@ -119,7 +119,7 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { switch (globalCtx->msgCtx.choiceIndex) { case 0: // yes func_801477B4(globalCtx); - if (gSaveContext.rupees < 10) { + if (gSaveContext.save.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x935); // "[...] You don't have enough Rupees." } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { diff --git a/src/overlays/actors/ovl_En_Muto/z_en_muto.c b/src/overlays/actors/ovl_En_Muto/z_en_muto.c index 131fbebcc..2e22d2769 100644 --- a/src/overlays/actors/ovl_En_Muto/z_en_muto.c +++ b/src/overlays/actors/ovl_En_Muto/z_en_muto.c @@ -71,11 +71,11 @@ void EnMuto_Init(Actor* thisx, GlobalContext* globalCtx) { if (!this->isInMayorsRoom) { this->shouldSetHeadRotation = true; this->textIdIndex = 2; - if (gSaveContext.weekEventReg[60] & 0x80) { + if (gSaveContext.save.weekEventReg[60] & 0x80) { this->textIdIndex = 3; } - if (gSaveContext.day != 3 || !gSaveContext.isNight) { + if (gSaveContext.save.day != 3 || !gSaveContext.save.isNight) { Actor_MarkForDeath(&this->actor); } } else { @@ -83,7 +83,7 @@ void EnMuto_Init(Actor* thisx, GlobalContext* globalCtx) { this->collider.dim.height = 60; this->collider.dim.yShift = 0; - if (gSaveContext.weekEventReg[63] & 0x80 || (gSaveContext.day == 3 && gSaveContext.isNight)) { + if (gSaveContext.save.weekEventReg[63] & 0x80 || (gSaveContext.save.day == 3 && gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); } } @@ -135,7 +135,7 @@ void EnMuto_Idle(EnMuto* this, GlobalContext* globalCtx) { this->actor.textId = sTextIds[this->textIdIndex]; if (!this->isInMayorsRoom && (player = GET_PLAYER(globalCtx))->transformation == PLAYER_FORM_DEKU) { - if (!(gSaveContext.weekEventReg[0x58] & 8)) { + if (!(gSaveContext.save.weekEventReg[0x58] & 8)) { this->actor.textId = 0x62C; } else { this->actor.textId = 0x62B; @@ -162,7 +162,7 @@ void EnMuto_Idle(EnMuto* this, GlobalContext* globalCtx) { } } else { this->textIdIndex = 0; - if (gSaveContext.weekEventReg[0x3C] & 8) { + if (gSaveContext.save.weekEventReg[0x3C] & 8) { this->textIdIndex = 1; } if (Player_GetMask(globalCtx) == PLAYER_MASK_COUPLE) { @@ -200,10 +200,10 @@ void EnMuto_InDialogue(EnMuto* this, GlobalContext* globalCtx) { func_801477B4(globalCtx); if (this->actor.textId == 0x62C) { - gSaveContext.weekEventReg[88] |= 8; + gSaveContext.save.weekEventReg[88] |= 8; } if (this->actor.textId == 0x624) { - gSaveContext.weekEventReg[60] |= 0x80; + gSaveContext.save.weekEventReg[60] |= 0x80; } this->textIdIndex = 3; @@ -252,7 +252,7 @@ void EnMuto_Update(Actor* thisx, GlobalContext* globalCtx2) { EnMuto_SetHeadRotation(this); } - if (this->isInMayorsRoom && gSaveContext.day == 3 && gSaveContext.isNight) { + if (this->isInMayorsRoom && gSaveContext.save.day == 3 && gSaveContext.save.isNight) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index be2c4b570..a5244fc9a 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -172,10 +172,10 @@ s32 EnOssan_TestItemSelected(GlobalContext* globalCtx) { } void EnOssan_CheckValidSpawn(EnOssan* this) { - switch (gSaveContext.day) { + switch (gSaveContext.save.day) { case 1: case 2: - if (gSaveContext.time <= CLOCK_TIME(21, 30) && gSaveContext.time > CLOCK_TIME(6, 00)) { + if (gSaveContext.save.time <= CLOCK_TIME(21, 30) && gSaveContext.save.time > CLOCK_TIME(6, 00)) { if (this->actor.params != ENOSSAN_CURIOSITY_SHOP_MAN) { Actor_MarkForDeath(&this->actor); } @@ -187,7 +187,7 @@ void EnOssan_CheckValidSpawn(EnOssan* this) { if (this->actor.params == ENOSSAN_CURIOSITY_SHOP_MAN) { Actor_MarkForDeath(&this->actor); } - if (!(gSaveContext.time <= CLOCK_TIME(22, 00) && gSaveContext.time >= CLOCK_TIME(6, 00))) { + if (!(gSaveContext.save.time <= CLOCK_TIME(22, 00) && gSaveContext.save.time >= CLOCK_TIME(6, 00))) { if (this->actor.params != ENOSSAN_CURIOSITY_SHOP_MAN) { Actor_MarkForDeath(&this->actor); } @@ -1350,19 +1350,19 @@ u16 EnOssan_GetWelcomeCuriosityShopMan(EnOssan* this, GlobalContext* globalCtx) switch (player->transformation) { case PLAYER_FORM_DEKU: this->animationIdx = 10; - if (gSaveContext.weekEventReg[0x12] & 0x10) { + if (gSaveContext.save.weekEventReg[0x12] & 0x10) { return sWelcomeDekuTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeDekuFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; case PLAYER_FORM_ZORA: this->animationIdx = 8; - if (gSaveContext.weekEventReg[0x12] & 8) { + if (gSaveContext.save.weekEventReg[0x12] & 8) { return sWelcomeZoraTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeZoraFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; case PLAYER_FORM_GORON: this->animationIdx = 6; - if (gSaveContext.weekEventReg[0x12] & 4) { + if (gSaveContext.save.weekEventReg[0x12] & 4) { return sWelcomeGoronTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; } return sWelcomeGoronFirstTimeTextIds[ENOSSAN_CURIOSITY_SHOP_MAN]; @@ -1381,17 +1381,17 @@ u16 EnOssan_GetWelcomePartTimeWorker(EnOssan* this, GlobalContext* globalCtx) { } switch (player->transformation) { case PLAYER_FORM_DEKU: - if (gSaveContext.weekEventReg[0x37] & 0x10) { + if (gSaveContext.save.weekEventReg[0x37] & 0x10) { return sWelcomeDekuTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeDekuFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; case PLAYER_FORM_ZORA: - if (gSaveContext.weekEventReg[0x37] & 8) { + if (gSaveContext.save.weekEventReg[0x37] & 8) { return sWelcomeZoraTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeZoraFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; case PLAYER_FORM_GORON: - if (gSaveContext.weekEventReg[0x37] & 4) { + if (gSaveContext.save.weekEventReg[0x37] & 4) { return sWelcomeGoronTextIds[ENOSSAN_PART_TIME_WORKER]; } return sWelcomeGoronFirstTimeTextIds[ENOSSAN_PART_TIME_WORKER]; @@ -1402,22 +1402,22 @@ u16 EnOssan_GetWelcomePartTimeWorker(EnOssan* this, GlobalContext* globalCtx) { void EnOssan_SetHaveMet(EnOssan* this) { switch (this->textId) { case 0x06A9: - gSaveContext.weekEventReg[0x12] |= 0x10; + gSaveContext.save.weekEventReg[0x12] |= 0x10; break; case 0x06C6: - gSaveContext.weekEventReg[0x37] |= 0x10; + gSaveContext.save.weekEventReg[0x37] |= 0x10; break; case 0x06A7: - gSaveContext.weekEventReg[0x12] |= 8; + gSaveContext.save.weekEventReg[0x12] |= 8; break; case 0x06C4: - gSaveContext.weekEventReg[0x37] |= 8; + gSaveContext.save.weekEventReg[0x37] |= 8; break; case 0x06A5: - gSaveContext.weekEventReg[0x12] |= 4; + gSaveContext.save.weekEventReg[0x12] |= 4; break; case 0x06C2: - gSaveContext.weekEventReg[0x37] |= 4; + gSaveContext.save.weekEventReg[0x37] |= 4; break; } } diff --git a/src/overlays/actors/ovl_En_Ot/z_en_ot.c b/src/overlays/actors/ovl_En_Ot/z_en_ot.c index 65fd93e86..d4f791c6f 100644 --- a/src/overlays/actors/ovl_En_Ot/z_en_ot.c +++ b/src/overlays/actors/ovl_En_Ot/z_en_ot.c @@ -186,7 +186,7 @@ void EnOt_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.world.pos.y = BgCheck_EntityRaycastFloor3(&globalCtx->colCtx, &this->actor.floorPoly, &bgId, &this->actor.world.pos) + 50.0f; - if (gSaveContext.weekEventReg[84] & 0x10) { + if (gSaveContext.save.weekEventReg[84] & 0x10) { Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_NEW); Matrix_GetStateTranslationAndScaledZ(52.519997f, &sp64); Math_Vec3f_Sum(&this->actor.world.pos, &sp64, &sp64); @@ -201,7 +201,7 @@ void EnOt_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_394.y = this->actor.world.pos.y; this->unk_394.z = (this->actor.world.pos.z + this->unk_360->actor.world.pos.z) * 0.5f; Math_Vec3f_Copy(&this->unk_360->unk_394, &this->unk_394); - if (gSaveContext.weekEventReg[32] & 1) { + if (gSaveContext.save.weekEventReg[32] & 1) { func_80B5C244(this, globalCtx); } else { func_80B5C684(this, globalCtx); @@ -236,7 +236,7 @@ void EnOt_Init(Actor* thisx, GlobalContext* globalCtx) { switch (this->unk_344) { case 0: Actor_SetScale(&this->actor, 0.0f); - if (!(gSaveContext.weekEventReg[13] & 1)) { + if (!(gSaveContext.save.weekEventReg[13] & 1)) { Actor_SetScale(&this->actor, 0.0f); func_80B5C910(this, globalCtx); } else { @@ -256,8 +256,8 @@ void EnOt_Init(Actor* thisx, GlobalContext* globalCtx) { case 1: Actor_SetScale(&this->actor, 0.012999999f); - if (gSaveContext.weekEventReg[84] & 0x10) { - if (gSaveContext.weekEventReg[32] & 1) { + if (gSaveContext.save.weekEventReg[84] & 0x10) { + if (gSaveContext.save.weekEventReg[32] & 1) { func_80B5C244(this, globalCtx); } else { func_80B5C684(this, globalCtx); @@ -270,7 +270,7 @@ void EnOt_Init(Actor* thisx, GlobalContext* globalCtx) { break; case 3: - if (!(gSaveContext.weekEventReg[26] & 8)) { + if (!(gSaveContext.save.weekEventReg[26] & 8)) { this->actor.flags |= 0x8000000; this->actor.flags &= ~(0x8 | 0x1); Actor_SetScale(&this->actor, 0.0064999997f); @@ -382,11 +382,11 @@ void func_80B5BFB8(EnOt* this, GlobalContext* globalCtx) { } void func_80B5C154(EnOt* this, GlobalContext* globalCtx) { - if (gSaveContext.weekEventReg[32] & 1) { + if (gSaveContext.save.weekEventReg[32] & 1) { this->unk_38C = GI_RUPEE_RED; } else { this->unk_38C = GI_HEART_PIECE; - gSaveContext.weekEventReg[32] |= 1; + gSaveContext.save.weekEventReg[32] |= 1; } func_800B8A1C(&this->actor, globalCtx, this->unk_38C, this->actor.xzDistToPlayer, this->actor.playerHeightRel); this->actionFunc = func_80B5C1CC; @@ -488,7 +488,7 @@ void func_80B5C634(EnOt* this, GlobalContext* globalCtx) { } void func_80B5C64C(EnOt* this, GlobalContext* globalCtx) { - if (gSaveContext.weekEventReg[26] & 8) { + if (gSaveContext.save.weekEventReg[26] & 8) { Actor_MarkForDeath(&this->actor); } } @@ -511,7 +511,7 @@ void func_80B5C6DC(EnOt* this, GlobalContext* globalCtx) { Matrix_GetStateTranslationAndScaledZ(26.259998f, &sp30); } else { if (this->unk_73C == 0) { - gSaveContext.weekEventReg[84] |= 0x10; + gSaveContext.save.weekEventReg[84] |= 0x10; switch (this->unk_388) { case 0: ActorCutscene_Stop(this->cutscenes[2]); @@ -533,7 +533,7 @@ void func_80B5C6DC(EnOt* this, GlobalContext* globalCtx) { Math_SmoothStepToF(&this->actor.world.pos.x, this->unk_348.x, 1.0f, 2.0f, 0.01f); Math_SmoothStepToF(&this->actor.world.pos.z, this->unk_348.z, 1.0f, 2.0f, 0.01f); Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); - if ((gSaveContext.weekEventReg[84] & 0x10) && (this->unk_33C == 1)) { + if ((gSaveContext.save.weekEventReg[84] & 0x10) && (this->unk_33C == 1)) { this->actor.textId = 0; this->unk_384 = 1; if (func_800B84D0(&this->actor, globalCtx)) { @@ -562,7 +562,7 @@ void func_80B5C910(EnOt* this, GlobalContext* globalCtx) { void func_80B5C950(EnOt* this, GlobalContext* globalCtx) { if (this->unk_32C & 8) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SEAHORSE_OUT_BOTTLE); - gSaveContext.weekEventReg[25] |= 4; + gSaveContext.save.weekEventReg[25] |= 4; func_80B5CAD0(this, globalCtx); } } @@ -656,7 +656,7 @@ void func_80B5CD40(EnOt* this, GlobalContext* globalCtx) { this->actor.world.rot.y = this->actor.shape.rot.y; if (1) {} if (!temp) { - gSaveContext.weekEventReg[23] |= 0x10; + gSaveContext.save.weekEventReg[23] |= 0x10; func_801518B0(globalCtx, 0x1069, NULL); } break; @@ -707,7 +707,7 @@ void func_80B5CEC8(EnOt* this, GlobalContext* globalCtx) { } } - if (!(gSaveContext.weekEventReg[84] & 0x10) && (ENOT_GET_C000(&this->actor) == 1)) { + if (!(gSaveContext.save.weekEventReg[84] & 0x10) && (ENOT_GET_C000(&this->actor) == 1)) { if ((fabsf(this->actor.xzDistToPlayer) <= 130.0f) && (fabsf(this->actor.playerHeightRel) <= 130.0f)) { player->unk_B2B = 29; } @@ -760,7 +760,7 @@ void func_80B5D160(EnOt* this, GlobalContext* globalCtx) { phi_a1 = 0x1069; } } else if (Flags_GetSwitch(globalCtx, ENOT_GET_3F80(&this->actor))) { - if (gSaveContext.weekEventReg[23] & 0x10) { + if (gSaveContext.save.weekEventReg[23] & 0x10) { phi_a1 = 0x106C; } else { phi_a1 = 0x106B; @@ -994,8 +994,8 @@ void func_80B5DB6C(Actor* thisx, GlobalContext* globalCtx) { EnOt* this = THIS; Player* player = GET_PLAYER(globalCtx); - if (!(gSaveContext.weekEventReg[84] & 0x10) && !(this->unk_32C & 8)) { - if (gSaveContext.weekEventReg[25] & 4) { + if (!(gSaveContext.save.weekEventReg[84] & 0x10) && !(this->unk_32C & 8)) { + if (gSaveContext.save.weekEventReg[25] & 4) { Vec3f sp50; func_80B5B2E0(globalCtx, &this->actor.world.pos, ENOT_GET_7F(&this->actor), &sp50, &this->unk_340); @@ -1007,7 +1007,7 @@ void func_80B5DB6C(Actor* thisx, GlobalContext* globalCtx) { } else if (D_80B5E888 != NULL) { s32 sp4C = false; - if (gSaveContext.weekEventReg[13] & 1) { + if (gSaveContext.save.weekEventReg[13] & 1) { if (!SurfaceType_IsHorseBlocked(&globalCtx->colCtx, player->actor.floorPoly, player->actor.floorBgId)) { sp4C = true; } diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index ab5e2520a..ed034275e 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -168,7 +168,7 @@ void EnOwl_Init(Actor* thisx, GlobalContext* globalCtx) { break; case ENOWL_GET_TYPE_2: - if (gSaveContext.inventory.items[SLOT_LENS] == ITEM_LENS) { + if (gSaveContext.save.inventory.items[SLOT_LENS] == ITEM_LENS) { Actor_MarkForDeath(&this->actor); return; } @@ -194,7 +194,7 @@ void EnOwl_Init(Actor* thisx, GlobalContext* globalCtx) { case ENOWL_GET_TYPE_2: this->actionFunc = func_8095BE0C; - if (gSaveContext.weekEventReg[9] & 0x20) { + if (gSaveContext.save.weekEventReg[9] & 0x20) { this->actor.textId = 0xBF0; } else { this->actor.textId = 0xBEA; @@ -623,10 +623,10 @@ void func_8095BA84(EnOwl* this, GlobalContext* globalCtx) { switch (globalCtx->msgCtx.choiceIndex) { case 0: func_8019F208(); - if (gSaveContext.weekEventReg[9] & 0x40) { + if (gSaveContext.save.weekEventReg[9] & 0x40) { func_80151938(globalCtx, 0xBF4); } else { - gSaveContext.weekEventReg[9] |= 0x40; + gSaveContext.save.weekEventReg[9] |= 0x40; func_80151938(globalCtx, 0xBED); } break; @@ -659,7 +659,7 @@ void func_8095BA84(EnOwl* this, GlobalContext* globalCtx) { if (func_80147624(globalCtx)) { switch (globalCtx->msgCtx.unk11F04) { case 0xBEA: - gSaveContext.weekEventReg[9] |= 0x20; + gSaveContext.save.weekEventReg[9] |= 0x20; func_80151938(globalCtx, 0xBEB); break; diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 14ad82b2d..6e9bf5084 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -171,14 +171,14 @@ void EnPamera_Init(Actor* thisx, GlobalContext* globalCtx) { func_80BD8588(this, globalCtx); func_80BD8658(this); if (1) {} - if (!(gSaveContext.weekEventReg[14] & 4) || (gSaveContext.weekEventReg[52] & 0x20) || - (gSaveContext.weekEventReg[75] & 0x20) || (gSaveContext.entranceIndex == 0x2090)) { + if (!(gSaveContext.save.weekEventReg[14] & 4) || (gSaveContext.save.weekEventReg[52] & 0x20) || + (gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.entranceIndex == 0x2090)) { Actor_MarkForDeath(&this->actor); } - if (gSaveContext.weekEventReg[61] & 4) { - if (!(gSaveContext.weekEventReg[59] & 1) || (gSaveContext.entranceIndex != 0x2020)) { - if ((gSaveContext.entranceIndex != 0x2020) && (gSaveContext.weekEventReg[59] & 1)) { - gSaveContext.weekEventReg[59] &= (u8)~1; + if (gSaveContext.save.weekEventReg[61] & 4) { + if (!(gSaveContext.save.weekEventReg[59] & 1) || (gSaveContext.save.entranceIndex != 0x2020)) { + if ((gSaveContext.save.entranceIndex != 0x2020) && (gSaveContext.save.weekEventReg[59] & 1)) { + gSaveContext.save.weekEventReg[59] &= (u8)~1; } func_80BD8700(this); } else { @@ -189,7 +189,7 @@ void EnPamera_Init(Actor* thisx, GlobalContext* globalCtx) { func_80BD8CCC(this); } } else { - gSaveContext.weekEventReg[59] |= 1; + gSaveContext.save.weekEventReg[59] |= 1; func_80BD8FF0(this); } } @@ -216,7 +216,7 @@ void func_80BD8588(EnPamera* this, GlobalContext* globalCtx) { if (path == NULL) { Actor_MarkForDeath(&this->actor); } - if (gSaveContext.weekEventReg[61] & 4) { + if (gSaveContext.save.weekEventReg[61] & 4) { path = &globalCtx->setupPathList[path->unk1]; } this->pathPoints = Lib_SegmentedToVirtual(path->points); @@ -304,7 +304,7 @@ void func_80BD8964(EnPamera* this, GlobalContext* globalCtx) { if (Math_Vec3f_StepTo(&this->actor.world.pos, &vec, 1.0f) < 5.0f) { this->actor.speedXZ = 1.5f; func_800BDC5C(&this->skelAnime, sAnimations, 1); - gSaveContext.weekEventReg[59] |= 1; + gSaveContext.save.weekEventReg[59] |= 1; func_80BD8B50(this); } } @@ -319,10 +319,10 @@ void func_80BD8A7C(EnPamera* this, GlobalContext* globalCtx) { 0x3000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; if (Math_Vec3f_StepTo(&this->actor.world.pos, &this->actor.home.pos, 1.5f) < 10.0f) { - gSaveContext.weekEventReg[59] &= (u8)~1; - if (!(gSaveContext.weekEventReg[61] & 4)) { + gSaveContext.save.weekEventReg[59] &= (u8)~1; + if (!(gSaveContext.save.weekEventReg[61] & 4)) { func_80BD92D0(this, globalCtx); - gSaveContext.weekEventReg[61] |= 4; + gSaveContext.save.weekEventReg[61] |= 4; } func_80BD8700(this); } @@ -581,7 +581,7 @@ void func_80BD9840(EnPamera* this, GlobalContext* globalCtx) { this->actor.update = func_80BDA344; this->actor.flags |= 0x2000000; this->actor.flags |= 0x100000; - if ((gSaveContext.weekEventReg[75] & 0x20) || (gSaveContext.weekEventReg[52] & 0x20)) { + if ((gSaveContext.save.weekEventReg[75] & 0x20) || (gSaveContext.save.weekEventReg[52] & 0x20)) { func_80BD9E60(this); func_80BD9938(this); } else { @@ -589,7 +589,7 @@ void func_80BD9840(EnPamera* this, GlobalContext* globalCtx) { func_80BD9E60(this); func_80BD9904(this); } - if (gSaveContext.weekEventReg[14] & 4) { + if (gSaveContext.save.weekEventReg[14] & 4) { func_801A0204(NA_BGM_MUSIC_BOX_HOUSE); } else { func_801A0204(NA_BGM_INSIDE_A_HOUSE); @@ -616,8 +616,8 @@ void func_80BD994C(EnPamera* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x15A8, &this->actor); this->unk_324 = 0x15A8; - } else if ((gSaveContext.playerForm != PLAYER_FORM_HUMAN) || - ((gSaveContext.weekEventReg[52] & 0x20) && (!(gSaveContext.weekEventReg[75] & 0x20)))) { + } else if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || + ((gSaveContext.save.weekEventReg[52] & 0x20) && (!(gSaveContext.save.weekEventReg[75] & 0x20)))) { func_80BD93CC(this, 1, 0); func_801518B0(globalCtx, 0x158E, &this->actor); this->unk_324 = 0x158E; @@ -740,7 +740,7 @@ s32 func_80BD9CB8(EnPamera* this, GlobalContext* globalCtx) { this->setupFunc(this, globalCtx); return 1; } - if ((globalCtx->csCtx.state == 0) && (gSaveContext.weekEventReg[75] & 0x20)) { + if ((globalCtx->csCtx.state == 0) && (gSaveContext.save.weekEventReg[75] & 0x20)) { if ((this->actionFunc != func_80BD994C) && (this->actionFunc != EnPamera_HandleDialogue)) { this->actor.shape.rot.y = this->actor.world.rot.y; func_80BD9904(this); @@ -864,11 +864,11 @@ void func_80BDA344(Actor* thisx, GlobalContext* globalCtx) { func_80BD9384(this, globalCtx); if (func_80BD9CB8(this, globalCtx)) { // Pamela is outside - if (gSaveContext.weekEventReg[59] & 1) { - gSaveContext.weekEventReg[59] &= (u8)~1; + if (gSaveContext.save.weekEventReg[59] & 1) { + gSaveContext.save.weekEventReg[59] &= (u8)~1; } - if (!(gSaveContext.weekEventReg[61] & 4)) { - gSaveContext.weekEventReg[61] |= 4; + if (!(gSaveContext.save.weekEventReg[61] & 4)) { + gSaveContext.save.weekEventReg[61] |= 4; } func_800E8F08(&this->limb9Rot, &this->limb8Rot); } else { @@ -877,7 +877,7 @@ void func_80BDA344(Actor* thisx, GlobalContext* globalCtx) { Collider_UpdateCylinder(&this->actor, &this->collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); } - if (gSaveContext.weekEventReg[14] & 4) { + if (gSaveContext.save.weekEventReg[14] & 4) { globalCtx->roomCtx.unk7A[0]++; } } diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index 9d15d2df3..4c76c7ede 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -191,7 +191,7 @@ static InitChainEntry sInitChain[] = { ICHAIN_U8(targetMode, 10, ICHAIN_STOP), }; -// gSaveContext.weekEventReg[KEY] = VALUE +// gSaveContext.save.weekEventReg[KEY] = VALUE // KEY | VALUE static s32 isFrogReturnedFlags[] = { (32 << 8) | 0x40, // Woodfall Temple Frog Returned @@ -212,7 +212,7 @@ void EnPametfrog_Init(Actor* thisx, GlobalContext* globalCtx) { this->params = CLAMP(this->actor.params, 1, 4); if (Actor_GetRoomCleared(globalCtx, globalCtx->roomCtx.currRoom.num)) { Actor_MarkForDeath(&this->actor); - if (!(gSaveContext.weekEventReg[isFrogReturnedFlags[this->actor.params - 1] >> 8] & + if (!(gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->actor.params - 1] >> 8] & (u8)isFrogReturnedFlags[this->actor.params - 1])) { Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_MINIFROG, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0, this->params); diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 5cb68e3df..0a4be0ccc 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -257,19 +257,19 @@ static ActorAnimationEntryS sAnimations[] = { }; s32 func_80AF7B40(void) { - if (gSaveContext.weekEventReg[90] & 1) { + if (gSaveContext.save.weekEventReg[90] & 1) { return 4; } - if (gSaveContext.weekEventReg[89] & 0x40) { + if (gSaveContext.save.weekEventReg[89] & 0x40) { return 3; } - if (gSaveContext.weekEventReg[89] & 8) { + if (gSaveContext.save.weekEventReg[89] & 8) { return 2; } - if (gSaveContext.weekEventReg[86] & 1) { + if (gSaveContext.save.weekEventReg[86] & 1) { return 1; } @@ -279,29 +279,29 @@ s32 func_80AF7B40(void) { s32 func_80AF7BAC(EnPm* this) { switch (this->unk_38C) { case 0: - if (gSaveContext.weekEventReg[86] & 1) { - D_801F4E78 = gSaveContext.time; + if (gSaveContext.save.weekEventReg[86] & 1) { + D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } break; case 1: - if (gSaveContext.weekEventReg[89] & 8) { - D_801F4E78 = gSaveContext.time; + if (gSaveContext.save.weekEventReg[89] & 8) { + D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } break; case 2: - if (gSaveContext.weekEventReg[89] & 0x40) { + if (gSaveContext.save.weekEventReg[89] & 0x40) { D_801F4E78 = 0; this->unk_38C++; } break; case 3: - if (gSaveContext.weekEventReg[90] & 1) { - D_801F4E78 = gSaveContext.time; + if (gSaveContext.save.weekEventReg[90] & 1) { + D_801F4E78 = gSaveContext.save.time; this->unk_38C++; } break; @@ -555,7 +555,7 @@ s32 func_80AF81E8(EnPm* this, GlobalContext* globalCtx) { case 1: case 3: case 5: - if ((gSaveContext.weekEventReg[86] & 8) && (this->unk_378 == 3)) { + if ((gSaveContext.save.weekEventReg[86] & 8) && (this->unk_378 == 3)) { ActorCutscene_Stop(sp2A); } else { func_800E0308(Play_GetCamera(globalCtx, ActorCutscene_GetCurrentCamera(sp2A)), &this->actor); @@ -823,24 +823,24 @@ void func_80AF8BA8(s32 arg0) { }; s32 temp; - if (!(gSaveContext.weekEventReg[88] & 2)) { - if (gSaveContext.weekEventReg[D_80AFB8D4[arg0] >> 8] & (D_80AFB8D4[arg0] & 0xFF)) { - switch (gSaveContext.day) { + if (!(gSaveContext.save.weekEventReg[88] & 2)) { + if (gSaveContext.save.weekEventReg[D_80AFB8D4[arg0] >> 8] & (D_80AFB8D4[arg0] & 0xFF)) { + switch (gSaveContext.save.day) { case 2: - gSaveContext.weekEventReg[28] |= 8; + gSaveContext.save.weekEventReg[28] |= 8; break; case 3: - gSaveContext.weekEventReg[28] |= 0x10; + gSaveContext.save.weekEventReg[28] |= 0x10; break; } - gSaveContext.weekEventReg[51] |= 2; - gSaveContext.weekEventReg[90] |= 8; + gSaveContext.save.weekEventReg[51] |= 2; + gSaveContext.save.weekEventReg[90] |= 8; } } - temp = gSaveContext.weekEventReg[D_80AFB8E0[arg0] >> 8]; - gSaveContext.weekEventReg[D_80AFB8E0[arg0] >> 8] = temp | (D_80AFB8E0[arg0] & 0xFF); + temp = gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8]; + gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8] = temp | (D_80AFB8E0[arg0] & 0xFF); } void func_80AF8C68(EnPm* this, GlobalContext* globalCtx) { @@ -940,7 +940,7 @@ s32 func_80AF8ED4(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar } s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) { - u16 sp56 = gSaveContext.time - 0x3FFC; + u16 sp56 = gSaveContext.save.time - 0x3FFC; u8 sp55 = this->actor.params & 0xFF; Actor* sp50; Vec3s* sp4C; @@ -974,7 +974,7 @@ s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar this->unk_36C = arg2->unk8 - arg2->unk4; this->unk_36E = sp56 - arg2->unk4; this->actor.flags &= ~1; - if (gSaveContext.weekEventReg[90] & 8) { + if (gSaveContext.save.weekEventReg[90] & 8) { this->unk_356 |= 0x800; } this->unk_356 |= 0x9000; @@ -988,7 +988,7 @@ s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar } s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) { - u16 sp2E = (u16)(gSaveContext.time - 0x3FFC); + u16 sp2E = (u16)(gSaveContext.save.time - 0x3FFC); u16 phi_v1; u8 sp2B = this->actor.params & 0xFF; s32 pad; @@ -1052,7 +1052,7 @@ s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar default: func_8013AED4(&this->unk_356, 3, 7); func_80AF7E98(this, 0); - if (gSaveContext.weekEventReg[90] & 8) { + if (gSaveContext.save.weekEventReg[90] & 8) { this->unk_356 |= 0x800; } this->unk_356 |= 0x9000; @@ -1168,10 +1168,10 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar break; case 23: - if (gSaveContext.weekEventReg[90] & 8) { + if (gSaveContext.save.weekEventReg[90] & 8) { this->unk_356 |= 0x800; } - gSaveContext.weekEventReg[60] |= 4; + gSaveContext.save.weekEventReg[60] |= 4; default: if (arg2->unk0 == 0x1D) { @@ -1489,11 +1489,11 @@ s32 func_80AF9E7C(EnPm* this, GlobalContext* globalCtx) { } if ((this->unk_356 & 0x10) && (this->unk_258 == 90)) { - u8 val = gSaveContext.weekEventReg[89] | 0x40; + u8 val = gSaveContext.save.weekEventReg[89] | 0x40; - gSaveContext.weekEventReg[89] = val; + gSaveContext.save.weekEventReg[89] = val; if (val == 0) { - gSaveContext.weekEventReg[89] |= 0x40; + gSaveContext.save.weekEventReg[89] |= 0x40; } } @@ -1506,8 +1506,8 @@ s32 func_80AFA170(EnPm* this, GlobalContext* globalCtx) { switch (this->unk_258) { case 28: - if (gSaveContext.time >= CLOCK_TIME(1, 39)) { - gSaveContext.weekEventReg[89] |= 8; + if (gSaveContext.save.time >= CLOCK_TIME(1, 39)) { + gSaveContext.save.weekEventReg[89] |= 8; } case 16: @@ -1696,16 +1696,16 @@ void func_80AFA4D0(EnPm* this, GlobalContext* globalCtx) { static UNK_PTR D_80AFB900[] = { D_80AFAD80, D_80AFB30C, D_80AFB3C0, D_80AFB3FC, D_80AFB41C, }; - u16 time = gSaveContext.time; + u16 time = gSaveContext.save.time; u16 sp3C = 0; - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 sp2C; this->unk_374 = REG(15) + *unk_14; if (this->unk_38C != 0) { - time = gSaveContext.time - D_801F4E78; - sp3C = gSaveContext.time; - gSaveContext.time = time; + time = gSaveContext.save.time - D_801F4E78; + sp3C = gSaveContext.save.time; + gSaveContext.save.time = time; } if (!func_80133038(globalCtx, D_80AFB900[this->unk_38C], &sp2C) || @@ -1722,7 +1722,7 @@ void func_80AFA4D0(EnPm* this, GlobalContext* globalCtx) { this->unk_268 = func_80AF8040(this, globalCtx); func_80AFA438(this, globalCtx); if (this->unk_38C != 0) { - gSaveContext.time = sp3C; + gSaveContext.save.time = sp3C; } } @@ -1830,7 +1830,7 @@ void func_80AFAA44(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* Matrix_MultiplyVector3fByState(&D_801D15B0, &this->actor.focus.pos); Math_Vec3s_Copy(&this->actor.focus.rot, &this->actor.world.rot); } - if ((this->unk_356 & 0x8000) && !(gSaveContext.weekEventReg[90] & 4)) { + if ((this->unk_356 & 0x8000) && !(gSaveContext.save.weekEventReg[90] & 4)) { func_80AF8890(this, gfx, 1); } break; diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index 6b1d57ea8..bbee3ba22 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -209,7 +209,7 @@ void EnRailgibud_Init(Actor* thisx, GlobalContext* globalCtx) { func_80BA5400(this, globalCtx); this->unk_3F2 = 0; - this->unk_402 = gSaveContext.time; + this->unk_402 = gSaveContext.save.time; this->unk_404 = 0; this->unk_3F8 = 0; this->unk_400 = 0; @@ -224,7 +224,7 @@ void EnRailgibud_Init(Actor* thisx, GlobalContext* globalCtx) { Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); - if (gSaveContext.weekEventReg[14] & 4) { + if (gSaveContext.save.weekEventReg[14] & 4) { Actor_MarkForDeath(&this->actor); } @@ -328,7 +328,7 @@ void func_80BA5B64(EnRailgibud* this, GlobalContext* globalCtx) { if (func_80BA6D10(this, globalCtx) && Actor_IsActorFacingLink(&this->actor, 0x38E3)) { if ((this->unk_3F4 == 0) && (this->actor.xzDistToPlayer <= 45.0f)) { player->actor.freezeTimer = 0; - if ((gSaveContext.playerForm == PLAYER_FORM_GORON) || (gSaveContext.playerForm == PLAYER_FORM_DEKU)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_GORON) || (gSaveContext.save.playerForm == PLAYER_FORM_DEKU)) { func_80BA6054(this); } else if (globalCtx->grabPlayer(globalCtx, player)) { func_80BA5DBC(this); @@ -494,7 +494,7 @@ void func_80BA62D4(EnRailgibud* this, GlobalContext* globalCtx) { this->actor.world.rot = this->actor.shape.rot; } if (func_80BA6D10(this, globalCtx)) { - if ((gSaveContext.playerForm != PLAYER_FORM_GORON) && (gSaveContext.playerForm != PLAYER_FORM_DEKU) && + if ((gSaveContext.save.playerForm != PLAYER_FORM_GORON) && (gSaveContext.save.playerForm != PLAYER_FORM_DEKU) && Actor_IsActorFacingLink(&this->actor, 0x38E3)) { func_80BA5AF0(this); } @@ -776,7 +776,7 @@ s32 func_80BA7088(EnRailgibud* this, GlobalContext* globalCtx) { sp3C = Math_Vec3f_StepTo(&this->actor.world.pos, &sp40, 10.0f); temp_s0_2 = Math_SmoothStepToS(&this->actor.shape.rot.y, player->actor.shape.rot.y, 1, 0x1770, 0x64); this->actor.world.rot.y = this->actor.shape.rot.y; - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { sp38 = Math_SmoothStepToF(&this->actor.shape.yOffset, -1500.0f, 1.0f, 150.0f, 0.0f); } @@ -1000,7 +1000,7 @@ void func_80BA7B6C(EnRailgibud* this, GlobalContext* globalCtx) { Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); - if (gSaveContext.entranceIndex != 0x2090) { // NOT Cutscene: Music Box House Opens + if (gSaveContext.save.entranceIndex != 0x2090) { // NOT Cutscene: Music Box House Opens Actor_MarkForDeath(&this->actor); } func_80BA7CF0(this); diff --git a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c index 07f3ca850..28e8c6f0c 100644 --- a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c +++ b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c @@ -157,7 +157,7 @@ void EnRecepgirl_Talk(EnRecepgirl* this, GlobalContext* globalCtx) { 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) diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 96e688bb4..7e47204d2 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -305,7 +305,7 @@ void func_808FA4F4(EnRr* this, GlobalContext* globalCtx) { this->unk_210 = 0.0f; this->unk_20C = 0x800; - if (((this->unk_1E2 == 0) && (gSaveContext.playerForm == PLAYER_FORM_HUMAN)) && + if (((this->unk_1E2 == 0) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) && (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) == EQUIP_SHIELD)) { sp34 = true; this->unk_1E2 = func_8012ED78(globalCtx, 1); diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index dd5db5c86..567c30785 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -358,21 +358,21 @@ void func_80ADB544(EnSellnuts* this, GlobalContext* globalCtx) { } else { switch (this->unk_340) { case 0x60E: - gSaveContext.weekEventReg[17] |= 0x20; - gSaveContext.weekEventReg[86] |= 4; + gSaveContext.save.weekEventReg[17] |= 0x20; + gSaveContext.save.weekEventReg[86] |= 4; func_801518B0(globalCtx, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; case 0x628: - gSaveContext.weekEventReg[77] |= 0x40; - gSaveContext.weekEventReg[86] |= 4; + gSaveContext.save.weekEventReg[77] |= 0x40; + gSaveContext.save.weekEventReg[86] |= 4; func_801518B0(globalCtx, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; case 0x614: - gSaveContext.weekEventReg[17] |= 0x40; + gSaveContext.save.weekEventReg[17] |= 0x40; func_801518B0(globalCtx, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; break; @@ -394,22 +394,22 @@ void func_80ADB544(EnSellnuts* this, GlobalContext* globalCtx) { this->actor.isTargeted) { func_800B85E0(&this->actor, globalCtx, 80.0f, 0x2A); if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { this->unk_33A = 2; - if (gSaveContext.weekEventReg[77] & 0x40) { + if (gSaveContext.save.weekEventReg[77] & 0x40) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; } } else { this->unk_33A = 1; - if (gSaveContext.weekEventReg[17] & 0x20) { + if (gSaveContext.save.weekEventReg[17] & 0x20) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; } } - } else if (gSaveContext.weekEventReg[17] & 0x40) { + } else if (gSaveContext.save.weekEventReg[17] & 0x40) { this->unk_340 = D_80ADD918[this->unk_33A]; } else { this->unk_340 = D_80ADD910[this->unk_33A]; @@ -489,7 +489,7 @@ void func_80ADBAB8(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADBBEC(EnSellnuts* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; - gSaveContext.weekEventReg[17] |= 0x80; + gSaveContext.save.weekEventReg[17] |= 0x80; this->actionFunc = func_80ADBCE4; } else { func_800B8A1C(&this->actor, globalCtx, GI_DEED_LAND, 300.0f, 300.0f); @@ -733,7 +733,7 @@ void func_80ADC6D0(EnSellnuts* this, GlobalContext* globalCtx) { globalCtx->msgCtx.unk11F22 = 0x43; globalCtx->msgCtx.unk12023 = 4; if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { this->unk_33A = 2; } else { this->unk_33A = 1; @@ -845,7 +845,7 @@ void func_80ADCA64(EnSellnuts* this, GlobalContext* globalCtx) { func_8013BC6C(&this->skelAnime, D_80ADD990, 17); } else if (this->unk_34C == 17) { ActorCutscene_Stop(this->cutscene); - gSaveContext.weekEventReg[73] |= 4; + gSaveContext.save.weekEventReg[73] |= 4; Actor_MarkForDeath(&this->actor); } } @@ -881,7 +881,7 @@ void func_80ADCC04(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADCD3C(EnSellnuts* this, GlobalContext* globalCtx) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xE38); - if (gSaveContext.weekEventReg[73] & 4) { + if (gSaveContext.save.weekEventReg[73] & 4) { this->unk_338 |= 2; this->unk_338 |= 1; this->unk_340 = 0x626; @@ -957,7 +957,7 @@ void EnSellnuts_Init(Actor* thisx, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s32 pad2; - if ((gSaveContext.weekEventReg[17] & 0x80) || (gSaveContext.weekEventReg[61] & 0x10)) { + if ((gSaveContext.save.weekEventReg[17] & 0x80) || (gSaveContext.save.weekEventReg[61] & 0x10)) { Actor_MarkForDeath(&this->actor); } @@ -978,7 +978,7 @@ void EnSellnuts_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_36C = 0.01f; this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; - if (gSaveContext.weekEventReg[73] & 4) { + if (gSaveContext.save.weekEventReg[73] & 4) { if (ENSELLNUTS_GET_1(&this->actor)) { Actor_MarkForDeath(&this->actor); return; @@ -986,7 +986,7 @@ void EnSellnuts_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_338 |= 2; this->unk_338 |= 1; if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { this->unk_33A = 2; } else { this->unk_33A = 1; @@ -1044,7 +1044,7 @@ void EnSellnuts_Update(Actor* thisx, GlobalContext* globalCtx) { this->unk_328++; if (player->transformation == PLAYER_FORM_DEKU) { - if (gSaveContext.day == 3) { + if (gSaveContext.save.day == 3) { this->unk_33A = 2; } else { this->unk_33A = 1; diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index 0f8a95f96..2f8a4a8b3 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -806,7 +806,7 @@ void func_809964A0(EnSkb* this, GlobalContext* globalCtx) { void func_809964DC(EnSkb* this, GlobalContext* globalCtx) { if (this->unk_3D6 == 0) { if ((this->actionFunc != func_80994E94) && (this->actionFunc != func_80996284) && - (this->actionFunc != func_809964A0) && (gSaveContext.weekEventReg[85] & 0x40)) { + (this->actionFunc != func_809964A0) && (gSaveContext.save.weekEventReg[85] & 0x40)) { this->actor.colChkInfo.health = 0; func_809961E4(this, globalCtx); } diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index 140fc2c71..c16cae9d4 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -198,9 +198,9 @@ u16 EnSob1_GetTalkOption(EnSob1* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->shopType == BOMB_SHOP) { - if (gSaveContext.day == 1 && gSaveContext.time >= CLOCK_TIME(6, 00)) { + if (gSaveContext.save.day == 1 && gSaveContext.save.time >= CLOCK_TIME(6, 00)) { return 0x648; - } else if (gSaveContext.weekEventReg[0x21] & 8) { + } else if (gSaveContext.save.weekEventReg[0x21] & 8) { return 0x649; } else { return 0x64A; @@ -270,58 +270,58 @@ u16 EnSob1_GetWelcome(EnSob1* this, GlobalContext* globalCtx) { } else if (this->shopType == ZORA_SHOP) { switch (player->transformation) { case PLAYER_FORM_HUMAN: - if (gSaveContext.weekEventReg[0x39] & 0x10) { + if (gSaveContext.save.weekEventReg[0x39] & 0x10) { return 0x12CF; } - gSaveContext.weekEventReg[0x39] |= 0x10; + gSaveContext.save.weekEventReg[0x39] |= 0x10; return 0x12CE; case PLAYER_FORM_DEKU: - if (gSaveContext.weekEventReg[0x39] & 0x20) { + if (gSaveContext.save.weekEventReg[0x39] & 0x20) { return 0x12D1; } - gSaveContext.weekEventReg[0x39] |= 0x20; + gSaveContext.save.weekEventReg[0x39] |= 0x20; return 0x12D0; case PLAYER_FORM_GORON: - if (gSaveContext.weekEventReg[0x39] & 0x40) { + if (gSaveContext.save.weekEventReg[0x39] & 0x40) { return 0x12D3; } - gSaveContext.weekEventReg[0x39] |= 0x40; + gSaveContext.save.weekEventReg[0x39] |= 0x40; return 0x12D2; case PLAYER_FORM_ZORA: - if (gSaveContext.weekEventReg[0x39] & 0x80) { + if (gSaveContext.save.weekEventReg[0x39] & 0x80) { return 0x12D5; } - gSaveContext.weekEventReg[0x39] |= 0x80; + gSaveContext.save.weekEventReg[0x39] |= 0x80; return 0x12D4; default: return 0x12CE; } } else if (this->shopType == GORON_SHOP) { if (player->transformation != PLAYER_FORM_GORON) { - if (gSaveContext.weekEventReg[0x3A] & 4) { + if (gSaveContext.save.weekEventReg[0x3A] & 4) { return 0xBB9; } - gSaveContext.weekEventReg[0x3A] |= 4; + gSaveContext.save.weekEventReg[0x3A] |= 4; return 0xBB8; } else { - if (gSaveContext.weekEventReg[0x3A] & 8) { + if (gSaveContext.save.weekEventReg[0x3A] & 8) { return 0xBBB; } - gSaveContext.weekEventReg[0x3A] |= 8; + gSaveContext.save.weekEventReg[0x3A] |= 8; return 0xBBA; } } else if (this->shopType == GORON_SHOP_SPRING) { if (player->transformation != PLAYER_FORM_GORON) { - if (gSaveContext.weekEventReg[0x3A] & 0x10) { + if (gSaveContext.save.weekEventReg[0x3A] & 0x10) { return 0xBBD; } - gSaveContext.weekEventReg[0x3A] |= 0x10; + gSaveContext.save.weekEventReg[0x3A] |= 0x10; return 0xBBC; } else { - if (gSaveContext.weekEventReg[0x3A] & 0x20) { + if (gSaveContext.save.weekEventReg[0x3A] & 0x20) { return 0xBBF; } - gSaveContext.weekEventReg[0x3A] |= 0x20; + gSaveContext.save.weekEventReg[0x3A] |= 0x20; return 0xBBE; } } @@ -330,11 +330,11 @@ u16 EnSob1_GetWelcome(EnSob1* this, GlobalContext* globalCtx) { u16 EnSob1_GetGoodbye(EnSob1* this) { if (this->shopType == BOMB_SHOP) { - if (gSaveContext.day == 1) { + if (gSaveContext.save.day == 1) { return 0x64C; - } else if (gSaveContext.day == 2) { + } else if (gSaveContext.save.day == 2) { return 0x64D; - } else if (!gSaveContext.isNight) { + } else if (!gSaveContext.save.isNight) { return 0x64E; } else { return 0x64F; @@ -396,7 +396,7 @@ void EnSob1_Init(Actor* thisx, GlobalContext* globalCtx) { this->shopType = ZORA_SHOP; break; case GORON_SHOP: - if (gSaveContext.weekEventReg[0x21] & 0x80) { + if (gSaveContext.save.weekEventReg[0x21] & 0x80) { this->shopType = GORON_SHOP_SPRING; } else { this->shopType = GORON_SHOP; @@ -1374,7 +1374,7 @@ void EnSob1_InitShop(EnSob1* this, GlobalContext* globalCtx) { this->actor.world.pos.y += posOffset->y; this->actor.world.pos.z += posOffset->z; shopItems = sShops[this->shopType]; - if ((this->shopType == BOMB_SHOP) && (gSaveContext.weekEventReg[0x21] & 8)) { + if ((this->shopType == BOMB_SHOP) && (gSaveContext.save.weekEventReg[0x21] & 8)) { sShops[this->shopType][0].shopItemId = SI_BOMB_BAG_30_2; } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 0e6b20f3d..d7be16475 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -192,12 +192,12 @@ void EnSuttari_SetNextEntrance(GlobalContext* globalCtx, u16 nextEntranceIndex) } void EnSuttari_UpdateTime(void) { - u32* unk_14 = &gSaveContext.unk_14; - u16 time = gSaveContext.time; + u32* unk_14 = &gSaveContext.save.daySpeed; + u16 time = gSaveContext.save.time; - gSaveContext.time = (u16)REG(15) + time; - time = gSaveContext.time; - gSaveContext.time = (u16)*unk_14 + time; + gSaveContext.save.time = (u16)REG(15) + time; + time = gSaveContext.save.time; + gSaveContext.save.time = (u16)*unk_14 + time; } s32 func_80BAA904(EnSuttari* this, GlobalContext* globalCtx) { @@ -329,7 +329,7 @@ void func_80BAAB78(EnSuttari* this, GlobalContext* globalCtx) { } else if (this->flags1 & 1) { switch (this->textId) { case 0: - if (gSaveContext.weekEventReg[0x51] & 1) { + if (gSaveContext.save.weekEventReg[0x51] & 1) { this->textId = 0x1455; ((EnElf*)GET_PLAYER(globalCtx)->tatlActor)->unk264 |= 8; this->flags2 |= 1; @@ -347,12 +347,12 @@ void func_80BAAB78(EnSuttari* this, GlobalContext* globalCtx) { } else { this->flags1 |= 0x400; this->textId = 0x1452; - gSaveContext.weekEventReg[0x51] |= 1; + gSaveContext.save.weekEventReg[0x51] |= 1; } break; case 0x1453: this->flags1 |= 0x400; - gSaveContext.weekEventReg[0x51] |= 1; + gSaveContext.save.weekEventReg[0x51] |= 1; ((EnElf*)GET_PLAYER(globalCtx)->tatlActor)->unk264 |= 8; this->flags2 |= 1; this->textId = 0x1454; @@ -420,7 +420,7 @@ void func_80BAAFDC(EnSuttari* this, GlobalContext* globalCtx) { if (this->unk1F4[0] != 0) { this->unk1F4[0]--; } - gSaveContext.weekEventReg[0x3D] |= 8; + gSaveContext.save.weekEventReg[0x3D] |= 8; this->unk3F6 = 20; this->actionFunc = func_80BADE8C; } @@ -452,7 +452,7 @@ void func_80BAB1A0(EnSuttari* this, GlobalContext* globalCtx) { if (this->unk1F4[0] != 0) { this->unk1F4[0]--; } - gSaveContext.weekEventReg[0x3D] |= 8; + gSaveContext.save.weekEventReg[0x3D] |= 8; this->unk3F6 = 20; this->actionFunc = func_80BADE8C; } else { @@ -642,7 +642,7 @@ void func_80BABB90(EnSuttari* this, s32 arg1) { } s32 func_80BABC48(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg2* unkStruct) { - u16 sp26 = gSaveContext.time - 0x3FFC; + u16 sp26 = gSaveContext.save.time - 0x3FFC; u16 pad1; u8 sp23 = ENSUTTARI_GET_PATH(&this->actor); u16 pad2; @@ -685,7 +685,7 @@ s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg UNK_TYPE sp24; sp47 = ENSUTTARI_GET_PATH(&this->actor); - sp44 = gSaveContext.time - 0x3FFC; + sp44 = gSaveContext.save.time - 0x3FFC; if (this->unk428 == 10 || this->unk428 == 11 || this->unk428 == 2) { return 0; } @@ -825,7 +825,7 @@ void func_80BAC2FC(EnSuttari* this, GlobalContext* globalCtx) { this->animationIdx = 2; func_800BDC5C(&this->skelAnime, sAnimations, this->animationIdx); } - if (!(gSaveContext.weekEventReg[0x53] & 4) && !(this->flags1 & 0x1000)) { + if (!(gSaveContext.save.weekEventReg[0x53] & 4) && !(this->flags1 & 0x1000)) { if (ActorCutscene_GetCanPlayNext(this->cutscenes[0])) { ActorCutscene_Start(this->cutscenes[0], &this->actor); if (!(player->stateFlags1 & 0x10000000)) { @@ -874,7 +874,7 @@ void func_80BAC2FC(EnSuttari* this, GlobalContext* globalCtx) { Actor_MarkForDeath(&this->actor); break; case 2: - if (!(gSaveContext.weekEventReg[0x51] & 4)) { + if (!(gSaveContext.save.weekEventReg[0x51] & 4)) { this->flags1 |= 0x80; this->actor.world.pos.x = -16.0f; this->actor.world.pos.z = -16.0f; @@ -884,7 +884,7 @@ void func_80BAC2FC(EnSuttari* this, GlobalContext* globalCtx) { } break; case 4: - if (!(gSaveContext.weekEventReg[0x21] & 8)) { + if (!(gSaveContext.save.weekEventReg[0x21] & 8)) { if (this->animationIdx == 2 || this->animationIdx == 1) { this->animationIdx = 5; func_800BDC5C(&this->skelAnime, sAnimations, this->animationIdx); @@ -913,25 +913,25 @@ void func_80BAC6E8(EnSuttari* this, GlobalContext* globalCtx) { this->actor.flags |= 1; if (globalCtx->sceneNum == SCENE_IKANA) { this->flags1 |= 1; - if (gSaveContext.day == 1 || gSaveContext.day == 2) { + if (gSaveContext.save.day == 1 || gSaveContext.save.day == 2) { this->animationIdx = 2; func_800BDC5C(&this->skelAnime, sAnimations, this->animationIdx); this->flags1 |= 0x80; this->actionFunc = func_80BACA14; return; - } else if ((gSaveContext.day == 3) && (gSaveContext.time <= CLOCK_TIME(19, 00)) && - !(gSaveContext.weekEventReg[0x3D] & 8) && !(gSaveContext.weekEventReg[0x21] & 8) && - (gSaveContext.weekEventReg[0x33] & 8)) { + } else if ((gSaveContext.save.day == 3) && (gSaveContext.save.time <= CLOCK_TIME(19, 00)) && + !(gSaveContext.save.weekEventReg[0x3D] & 8) && !(gSaveContext.save.weekEventReg[0x21] & 8) && + (gSaveContext.save.weekEventReg[0x33] & 8)) { this->animationIdx = 2; func_800BDC5C(&this->skelAnime, sAnimations, this->animationIdx); this->actionFunc = func_80BACEE0; return; } } else if (globalCtx->sceneNum == SCENE_BACKTOWN) { - if (gSaveContext.time >= CLOCK_TIME(0, 20) && gSaveContext.time < CLOCK_TIME(6, 00)) { + if (gSaveContext.save.time >= CLOCK_TIME(0, 20) && gSaveContext.save.time < CLOCK_TIME(6, 00)) { Actor_MarkForDeath(&this->actor); } - if ((gSaveContext.entranceIndex == 0xD670) || (gSaveContext.weekEventReg[0x3A] & 0x40)) { + if ((gSaveContext.save.entranceIndex == 0xD670) || (gSaveContext.save.weekEventReg[0x3A] & 0x40)) { Actor_MarkForDeath(&this->actor); } this->cutscenes[0] = this->actor.cutscene; @@ -943,7 +943,7 @@ void func_80BAC6E8(EnSuttari* this, GlobalContext* globalCtx) { this->actionFunc = func_80BAD004; return; } else if (globalCtx->sceneNum == SCENE_ICHIBA) { - if (gSaveContext.weekEventReg[0x21] & 8) { + if (gSaveContext.save.weekEventReg[0x21] & 8) { Actor_MarkForDeath(&this->actor); return; } @@ -953,7 +953,7 @@ void func_80BAC6E8(EnSuttari* this, GlobalContext* globalCtx) { this->actionFunc = func_80BAD5F8; return; } else if (globalCtx->sceneNum == SCENE_AYASHIISHOP) { - if (gSaveContext.weekEventReg[0x21] & 8) { + if (gSaveContext.save.weekEventReg[0x21] & 8) { Actor_MarkForDeath(&this->actor); return; } @@ -1066,7 +1066,7 @@ void func_80BACE4C(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BACEE0(EnSuttari* this, GlobalContext* globalCtx) { - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 unkStruct; this->unk42A = REG(15) + *unk_14; @@ -1081,7 +1081,7 @@ void func_80BACEE0(EnSuttari* this, GlobalContext* globalCtx) { func_80BAC2FC(this, globalCtx); func_80BAB434(this); if (this->unk428 == 5) { - gSaveContext.weekEventReg[0x3A] |= 0x80; + gSaveContext.save.weekEventReg[0x3A] |= 0x80; this->actionFunc = func_80BADDB4; this->actor.speedXZ = 0.0f; } else if (Player_GetMask(globalCtx) != PLAYER_MASK_STONE) { @@ -1091,7 +1091,7 @@ void func_80BACEE0(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAD004(EnSuttari* this, GlobalContext* globalCtx) { - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 unkStruct; this->unk42A = REG(15) + *unk_14; @@ -1186,7 +1186,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) { this->flags2 |= 8; func_80BAAF1C(this); } else if (this->flags1 & 0x200) { - gSaveContext.weekEventReg[0x4F] |= 0x40; + gSaveContext.save.weekEventReg[0x4F] |= 0x40; this->flags2 |= 4; this->actor.speedXZ = 0.0f; Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x, @@ -1197,7 +1197,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) { } if (this->unk1F4[1] == -0x63) { if (this->flags2 & 8) { - gSaveContext.weekEventReg[0x21] |= 8; + gSaveContext.save.weekEventReg[0x21] |= 8; } this->actor.speedXZ = 0.0f; Audio_QueueSeqCmd(0x101400FF); @@ -1213,7 +1213,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) { - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 unkStruct; s16 curFrame = this->skelAnime.curFrame; s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); @@ -1249,7 +1249,7 @@ void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAD7F8(EnSuttari* this, GlobalContext* globalCtx) { - u32* unk_14 = &gSaveContext.unk_14; + u32* unk_14 = &gSaveContext.save.daySpeed; struct_80133038_arg2 unkStruct; s16 curFrame = this->skelAnime.curFrame; s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); @@ -1291,7 +1291,7 @@ void func_80BADA08(EnSuttari* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { this->actor.flags &= ~0x10000; func_80BAAB78(this, globalCtx); - gSaveContext.weekEventReg[0x51] |= 4; + gSaveContext.save.weekEventReg[0x51] |= 4; } else if (this->actor.xzDistToPlayer < 500.0f) { this->actor.flags |= 0x10000; func_800B8614(&this->actor, globalCtx, 500.0f); @@ -1369,7 +1369,7 @@ void func_80BADD0C(EnSuttari* this, GlobalContext* globalCtx) { void func_80BADDB4(EnSuttari* this, GlobalContext* globalCtx) { func_80BABA90(this, 1, 1); func_80BAB434(this); - if (gSaveContext.weekEventReg[0x33] & 0x10) { + if (gSaveContext.save.weekEventReg[0x33] & 0x10) { this->actionFunc = func_80BADE14; } Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); @@ -1415,7 +1415,7 @@ void EnSuttari_Init(Actor* thisx, GlobalContext* globalCtx) { EnSuttari* this = THIS; s32 pad; - if (gSaveContext.weekEventReg[0x4F] & 0x40) { + if (gSaveContext.save.weekEventReg[0x4F] & 0x40) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 513762805..e69ca5ddc 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -173,7 +173,7 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) { } void EnSyatekiMan_Destroy(Actor* thisx, GlobalContext* globalCtx) { - gSaveContext.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~1; } s32 func_809C6720(GlobalContext* globalCtx, Vec3f arg1) { @@ -267,7 +267,7 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) { play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0xA30, &this->actor); this->unk_284 = 0xA30; - } else if (gSaveContext.rupees < 20) { + } else if (gSaveContext.save.playerData.rupees < 20) { play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0xA31, &this->actor); this->unk_284 = 0xA31; @@ -278,8 +278,8 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) { } else { func_8019F208(); func_801159EC(-20); - gSaveContext.weekEventReg[63] |= 1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] |= 1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; globalCtx->msgCtx.unk11F22 = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_26A = 7; @@ -341,11 +341,11 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) { break; case 0xA32: - if (gSaveContext.weekEventReg[63] & 2) { + if (gSaveContext.save.weekEventReg[63] & 2) { func_801477B4(globalCtx); player->stateFlags1 &= ~0x20; - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->actionFunc = func_809C6848; gSaveContext.minigameState = 3; this->unk_26A = 0; @@ -400,8 +400,8 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) { globalCtx->msgCtx.unk11F22 = 0x43; globalCtx->msgCtx.unk12023 = 4; player->stateFlags1 &= ~0x20; - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->actionFunc = func_809C6848; this->unk_26A = 0; } @@ -425,7 +425,7 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) { } void func_809C6F98(EnSyatekiMan* this, GlobalContext* globalCtx) { - switch (gSaveContext.playerForm) { + switch (gSaveContext.save.playerForm) { case PLAYER_FORM_HUMAN: Actor_SetAllChestFlag(globalCtx, Actor_GetAllChestFlag(globalCtx) + 1); if (CURRENT_DAY != 3) { @@ -539,7 +539,7 @@ void func_809C7380(EnSyatekiMan* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x3FA, &this->actor); this->unk_284 = 0x3FA; } - } else if (gSaveContext.rupees < 20) { + } else if (gSaveContext.save.playerData.rupees < 20) { play_sound(NA_SE_SY_ERROR); if (CURRENT_DAY != 3) { func_801518B0(globalCtx, 0x3FB, &this->actor); @@ -566,8 +566,8 @@ void func_809C7380(EnSyatekiMan* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x3FF, &this->actor); this->unk_284 = 0x3FF; } - gSaveContext.weekEventReg[63] |= 1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] |= 1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; } } else { func_8019F230(); @@ -642,8 +642,8 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { player->actor.freezeTimer = 0; this->unk_26A = 7; player->stateFlags1 |= 0x20; - gSaveContext.weekEventReg[63] |= 1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] |= 1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->actionFunc = func_809C8710; } break; @@ -662,10 +662,10 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { break; case 0x401: - if (gSaveContext.weekEventReg[63] & 2) { + if (gSaveContext.save.weekEventReg[63] & 2) { func_801477B4(globalCtx); - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->unk_26A = 0; this->actionFunc = func_809C72D8; } else { @@ -675,10 +675,10 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { break; case 0x403: - if (gSaveContext.weekEventReg[63] & 2) { + if (gSaveContext.save.weekEventReg[63] & 2) { func_801477B4(globalCtx); - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->unk_26A = 0; this->actionFunc = func_809C72D8; } else { @@ -731,8 +731,8 @@ void func_809C7990(EnSyatekiMan* this, GlobalContext* globalCtx) { case 6: if (func_80147624(globalCtx)) { - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; player->stateFlags1 &= ~0x20; this->actionFunc = func_809C72D8; this->unk_26A = 0; @@ -754,19 +754,19 @@ void func_809C7A90(EnSyatekiMan* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (Actor_HasParent(&this->actor, globalCtx)) { - if (!(gSaveContext.weekEventReg[59] & 0x10)) { - gSaveContext.weekEventReg[59] |= 0x10; - } else if (!(gSaveContext.weekEventReg[32] & 2) && (this->unk_280 >= 0x884)) { - gSaveContext.weekEventReg[32] |= 2; + if (!(gSaveContext.save.weekEventReg[59] & 0x10)) { + gSaveContext.save.weekEventReg[59] |= 0x10; + } else if (!(gSaveContext.save.weekEventReg[32] & 2) && (this->unk_280 >= 0x884)) { + gSaveContext.save.weekEventReg[32] |= 2; } this->actor.parent = NULL; this->actionFunc = func_809C7C14; } else { - if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.weekEventReg[59] & 0x10)) { + if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.save.weekEventReg[59] & 0x10)) { func_800B8A1C(&this->actor, globalCtx, GI_QUIVER_30 + CUR_UPG_VALUE(UPG_QUIVER), 500.0f, 100.0f); } else if (this->unk_280 < 0x884) { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_RED, 500.0f, 100.0f); - } else if (!(gSaveContext.weekEventReg[32] & 2)) { + } else if (!(gSaveContext.save.weekEventReg[32] & 2)) { func_800B8A1C(&this->actor, globalCtx, GI_HEART_PIECE, 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_PURPLE, 500.0f, 100.0f); @@ -783,7 +783,7 @@ void func_809C7C14(EnSyatekiMan* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (func_800B84D0(&this->actor, globalCtx)) { - if ((CURRENT_DAY == 3) && (gSaveContext.time > CLOCK_TIME(12, 00))) { + if ((CURRENT_DAY == 3) && (gSaveContext.save.time > CLOCK_TIME(12, 00))) { func_801518B0(globalCtx, 0xA36, &this->actor); this->unk_284 = 0xA36; } else { @@ -805,26 +805,26 @@ void func_809C7D14(EnSyatekiMan* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { if (this->unk_284 == 0x407) { - if (!(gSaveContext.weekEventReg[59] & 0x20)) { - gSaveContext.weekEventReg[59] |= 0x20; + if (!(gSaveContext.save.weekEventReg[59] & 0x20)) { + gSaveContext.save.weekEventReg[59] |= 0x20; } } if ((this->unk_284 == 0x405) || (this->unk_284 == 0x406)) { - if (!(gSaveContext.weekEventReg[32] & 4)) { - gSaveContext.weekEventReg[32] |= 4; + if (!(gSaveContext.save.weekEventReg[32] & 4)) { + gSaveContext.save.weekEventReg[32] |= 4; } } this->actor.parent = NULL; this->actionFunc = func_809C7EB4; } else { if (this->unk_284 == 0x407) { - if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.weekEventReg[59] & 0x20)) { + if ((CUR_UPG_VALUE(UPG_QUIVER) < 3) && !(gSaveContext.save.weekEventReg[59] & 0x20)) { func_800B8A1C(&this->actor, globalCtx, GI_QUIVER_30 + CUR_UPG_VALUE(UPG_QUIVER), 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_PURPLE, 500.0f, 100.0f); } - } else if (!(gSaveContext.weekEventReg[32] & 4)) { + } else if (!(gSaveContext.save.weekEventReg[32] & 4)) { func_800B8A1C(&this->actor, globalCtx, GI_HEART_PIECE, 500.0f, 100.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_RUPEE_HUGE, 500.0f, 100.0f); @@ -845,8 +845,8 @@ void func_809C7EB4(EnSyatekiMan* this, GlobalContext* globalCtx) { player->stateFlags1 &= ~0x20; this->unk_280 = 0; this->unk_26A = 0; - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->actionFunc = func_809C6810; } } else if (func_800B84D0(&this->actor, globalCtx)) { @@ -983,8 +983,8 @@ void func_809C8488(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_274 = 0; this->unk_276 = 0; if (this->unk_270 <= 0) { - if ((s32)((gSaveContext.roomInf[127][6] & 0xFFFF0000) >> 0x10) < this->unk_280) { - gSaveContext.roomInf[127][6] = ((gSaveContext.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10); + if ((s32)((gSaveContext.save.roomInf[127][6] & 0xFFFF0000) >> 0x10) < this->unk_280) { + gSaveContext.save.roomInf[127][6] = ((gSaveContext.save.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10); } this->unk_270 = 15; if (this->unk_280 >= 0x848) { @@ -992,9 +992,9 @@ void func_809C8488(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_284 = 0xA34; this->unk_26A = 6; } else if (this->unk_280 >= 0x7D0) { - if (gSaveContext.weekEventReg[63] & 2) { - gSaveContext.weekEventReg[63] &= (u8)~1; - gSaveContext.weekEventReg[63] &= (u8)~2; + if (gSaveContext.save.weekEventReg[63] & 2) { + gSaveContext.save.weekEventReg[63] &= (u8)~1; + gSaveContext.save.weekEventReg[63] &= (u8)~2; this->unk_26A = 0; gSaveContext.minigameState = 3; this->actionFunc = func_809C6848; @@ -1048,7 +1048,7 @@ void func_809C8610(EnSyatekiMan* this, GlobalContext* globalCtx) { void func_809C8710(EnSyatekiMan* this, GlobalContext* globalCtx) { Vec3f sp24; - if (gSaveContext.playerForm == PLAYER_FORM_FIERCE_DEITY) { + if (gSaveContext.save.playerForm == PLAYER_FORM_FIERCE_DEITY) { sp24 = D_809C9480; } else { sp24 = D_809C948C; @@ -1173,9 +1173,9 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) { if ((this->unk_270 <= 0) && (globalCtx->interfaceCtx.unk_286 == 0)) { Actor_SetAllChestFlag(globalCtx, this->unk_280); this->unk_270 = 15; - if (((s32)(gSaveContext.roomInf[127][6] & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) { - if ((s32)(gSaveContext.roomInf[127][6] & 0xFFFF) < this->unk_280) { - if (!(gSaveContext.weekEventReg[59] & 0x20)) { + if (((s32)(gSaveContext.save.roomInf[127][6] & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) { + if ((s32)(gSaveContext.save.roomInf[127][6] & 0xFFFF) < this->unk_280) { + if (!(gSaveContext.save.weekEventReg[59] & 0x20)) { func_801518B0(globalCtx, 0x407, &this->actor); this->unk_284 = 0x407; } else if (this->unk_280 == 50) { @@ -1189,7 +1189,7 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x406, &this->actor); this->unk_284 = 0x406; } - gSaveContext.roomInf[127][6] = (gSaveContext.roomInf[127][6] & 0xFFFF0000) | (this->unk_280 & 0xFFFF); + gSaveContext.save.roomInf[127][6] = (gSaveContext.save.roomInf[127][6] & 0xFFFF0000) | (this->unk_280 & 0xFFFF); this->unk_26A = 6; } else { if (CURRENT_DAY != 3) { diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 9e1417c84..46e8dbbd5 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -51,11 +51,11 @@ void func_80A41D70(EnTest4* this, GlobalContext* globalCtx) { } else if ((sCutscenes[this->unk_144] < 0) || ((globalCtx->actorCtx.unk5 & 2) != 0)) { if (globalCtx->actorCtx.unk5 & 2) { Sram_IncrementDay(); - gSaveContext.time = CLOCK_TIME(6, 0); + gSaveContext.save.time = CLOCK_TIME(6, 0); func_80151A68(globalCtx, sDayMessages1[CURRENT_DAY - 1]); } else { this->unk_144 = 0; - this->unk_146 = gSaveContext.time += CLOCK_TIME_MINUTE; + this->unk_146 = gSaveContext.save.time += CLOCK_TIME_MINUTE; } func_8010EE74(globalCtx, CURRENT_DAY); @@ -84,7 +84,7 @@ void func_80A41D70(EnTest4* this, GlobalContext* globalCtx) { this->unk_144 = 0; } - this->unk_146 = gSaveContext.time += CLOCK_TIME_MINUTE; + this->unk_146 = gSaveContext.save.time += CLOCK_TIME_MINUTE; } } @@ -93,7 +93,7 @@ void func_80A41FA4(EnTest4* this, GlobalContext* globalCtx) { func_80151A68(globalCtx, sNightMessages2[CURRENT_DAY - 1]); } else if ((sCutscenes[this->unk_144] < 0) || ((globalCtx->actorCtx.unk5 & 2) != 0)) { Sram_IncrementDay(); - gSaveContext.time = CLOCK_TIME(6, 0); + gSaveContext.save.time = CLOCK_TIME(6, 0); func_8010EE74(globalCtx, CURRENT_DAY); func_80151A68(globalCtx, sDayMessages2[CURRENT_DAY - 1]); D_801BDBC8 = 0xFE; @@ -121,168 +121,168 @@ void func_80A41FA4(EnTest4* this, GlobalContext* globalCtx) { this->unk_144 = 0; } - this->unk_146 = gSaveContext.time += CLOCK_TIME_MINUTE; + this->unk_146 = gSaveContext.save.time += CLOCK_TIME_MINUTE; } } // Bells on last day void func_80A42198(EnTest4* this) { - if ((gSaveContext.time >= CLOCK_TIME(6, 0)) && (gSaveContext.time <= CLOCK_TIME(18, 0))) { - if (gSaveContext.time < CLOCK_TIME(17, 30)) { + if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { + if (gSaveContext.save.time < CLOCK_TIME(17, 30)) { this->nextBellTime = CLOCK_TIME(17, 30); - } else if (gSaveContext.time < CLOCK_TIME(17, 36)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 36)) { this->nextBellTime = CLOCK_TIME(17, 36); - } else if (gSaveContext.time < CLOCK_TIME(17, 42)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 42)) { this->nextBellTime = CLOCK_TIME(17, 42); - } else if (gSaveContext.time < CLOCK_TIME(17, 48)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 48)) { this->nextBellTime = CLOCK_TIME(17, 48); - } else if (gSaveContext.time < CLOCK_TIME(17, 54)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 54)) { this->nextBellTime = CLOCK_TIME(17, 54); } else { this->nextBellTime = CLOCK_TIME(0, 0); } - } else if (gSaveContext.time > CLOCK_TIME(6, 0)) { + } else if (gSaveContext.save.time > CLOCK_TIME(6, 0)) { this->nextBellTime = CLOCK_TIME(0, 0); - } else if (gSaveContext.time < CLOCK_TIME(0, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(0, 10)) { this->nextBellTime = CLOCK_TIME(0, 10); - } else if (gSaveContext.time < CLOCK_TIME(0, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(0, 20)) { this->nextBellTime = CLOCK_TIME(0, 20); - } else if (gSaveContext.time < CLOCK_TIME(0, 30)) { + } else if (gSaveContext.save.time < CLOCK_TIME(0, 30)) { this->nextBellTime = CLOCK_TIME(0, 30); - } else if (gSaveContext.time < CLOCK_TIME(0, 40)) { + } else if (gSaveContext.save.time < CLOCK_TIME(0, 40)) { this->nextBellTime = CLOCK_TIME(0, 40); - } else if (gSaveContext.time < CLOCK_TIME(0, 50)) { + } else if (gSaveContext.save.time < CLOCK_TIME(0, 50)) { this->nextBellTime = CLOCK_TIME(0, 50); - } else if (gSaveContext.time < CLOCK_TIME(1, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 0)) { this->nextBellTime = CLOCK_TIME(1, 0); - } else if (gSaveContext.time < CLOCK_TIME(1, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 10)) { this->nextBellTime = CLOCK_TIME(1, 10); - } else if (gSaveContext.time < CLOCK_TIME(1, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 20)) { this->nextBellTime = CLOCK_TIME(1, 20); - } else if (gSaveContext.time < CLOCK_TIME(1, 30) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 30) - 1) { this->nextBellTime = CLOCK_TIME(1, 30) - 1; - } else if (gSaveContext.time < CLOCK_TIME(1, 40) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 40) - 1) { this->nextBellTime = CLOCK_TIME(1, 40) - 1; - } else if (gSaveContext.time < CLOCK_TIME(1, 50) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(1, 50) - 1) { this->nextBellTime = CLOCK_TIME(1, 50) - 1; - } else if (gSaveContext.time < CLOCK_TIME(2, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 0)) { this->nextBellTime = CLOCK_TIME(2, 0); - } else if (gSaveContext.time < CLOCK_TIME(2, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 10)) { this->nextBellTime = CLOCK_TIME(2, 10); - } else if (gSaveContext.time < CLOCK_TIME(2, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 20)) { this->nextBellTime = CLOCK_TIME(2, 20); - } else if (gSaveContext.time < CLOCK_TIME(2, 30)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 30)) { this->nextBellTime = CLOCK_TIME(2, 30); - } else if (gSaveContext.time < CLOCK_TIME(2, 40)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 40)) { this->nextBellTime = CLOCK_TIME(2, 40); - } else if (gSaveContext.time < CLOCK_TIME(2, 50)) { + } else if (gSaveContext.save.time < CLOCK_TIME(2, 50)) { this->nextBellTime = CLOCK_TIME(2, 50); - } else if (gSaveContext.time < CLOCK_TIME(3, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 0)) { this->nextBellTime = CLOCK_TIME(3, 0); - } else if (gSaveContext.time < CLOCK_TIME(3, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 10)) { this->nextBellTime = CLOCK_TIME(3, 10); - } else if (gSaveContext.time < CLOCK_TIME(3, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 20)) { this->nextBellTime = CLOCK_TIME(3, 20); - } else if (gSaveContext.time < CLOCK_TIME(3, 30)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 30)) { this->nextBellTime = CLOCK_TIME(3, 30); - } else if (gSaveContext.time < CLOCK_TIME(3, 40)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 40)) { this->nextBellTime = CLOCK_TIME(3, 40); - } else if (gSaveContext.time < CLOCK_TIME(3, 50)) { + } else if (gSaveContext.save.time < CLOCK_TIME(3, 50)) { this->nextBellTime = CLOCK_TIME(3, 50); - } else if (gSaveContext.time < CLOCK_TIME(4, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 0)) { this->nextBellTime = CLOCK_TIME(4, 0); - } else if (gSaveContext.time < CLOCK_TIME(4, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 10)) { this->nextBellTime = CLOCK_TIME(4, 10); - } else if (gSaveContext.time < CLOCK_TIME(4, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 20)) { this->nextBellTime = CLOCK_TIME(4, 20); - } else if (gSaveContext.time < CLOCK_TIME(4, 30) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 30) - 1) { this->nextBellTime = CLOCK_TIME(4, 30) - 1; - } else if (gSaveContext.time < CLOCK_TIME(4, 40) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 40) - 1) { this->nextBellTime = CLOCK_TIME(4, 40) - 1; - } else if (gSaveContext.time < CLOCK_TIME(4, 50) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(4, 50) - 1) { this->nextBellTime = CLOCK_TIME(4, 50) - 1; - } else if (gSaveContext.time < CLOCK_TIME(5, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 0)) { this->nextBellTime = CLOCK_TIME(5, 0); - } else if (gSaveContext.time < CLOCK_TIME(5, 5)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 5)) { this->nextBellTime = CLOCK_TIME(5, 5); - } else if (gSaveContext.time < CLOCK_TIME(5, 10)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 10)) { this->nextBellTime = CLOCK_TIME(5, 10); - } else if (gSaveContext.time < CLOCK_TIME(5, 15) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 15) - 1) { this->nextBellTime = CLOCK_TIME(5, 15) - 1; - } else if (gSaveContext.time < CLOCK_TIME(5, 20)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 20)) { this->nextBellTime = CLOCK_TIME(5, 20); - } else if (gSaveContext.time < CLOCK_TIME(5, 25) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 25) - 1) { this->nextBellTime = CLOCK_TIME(5, 25) - 1; - } else if (gSaveContext.time < CLOCK_TIME(5, 30)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 30)) { this->nextBellTime = CLOCK_TIME(5, 30); - } else if (gSaveContext.time < CLOCK_TIME(5, 33) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 33) - 1) { this->nextBellTime = CLOCK_TIME(5, 33) - 1; - } else if (gSaveContext.time < CLOCK_TIME(5, 36)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 36)) { this->nextBellTime = CLOCK_TIME(5, 36); - } else if (gSaveContext.time < CLOCK_TIME(5, 39) - 1) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 39) - 1) { this->nextBellTime = CLOCK_TIME(5, 39) - 1; - } else if (gSaveContext.time < CLOCK_TIME(5, 42)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 42)) { this->nextBellTime = CLOCK_TIME(5, 42); - } else if (gSaveContext.time < CLOCK_TIME(5, 45)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 45)) { this->nextBellTime = CLOCK_TIME(5, 45); - } else if (gSaveContext.time < CLOCK_TIME(5, 48)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 48)) { this->nextBellTime = CLOCK_TIME(5, 48); - } else if (gSaveContext.time < CLOCK_TIME(5, 51)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 51)) { this->nextBellTime = CLOCK_TIME(5, 51); - } else if (gSaveContext.time < CLOCK_TIME(5, 54)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 54)) { this->nextBellTime = CLOCK_TIME(5, 54); - } else if (gSaveContext.time < CLOCK_TIME(5, 57)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 57)) { this->nextBellTime = CLOCK_TIME(5, 57); - } else if (gSaveContext.time < CLOCK_TIME(6, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(6, 0)) { this->nextBellTime = CLOCK_TIME(6, 0); } } // Bells on first and second day void func_80A425E4(EnTest4* this, GlobalContext* globalCtx) { - gSaveContext.unk_3F64 = 1000.0f; + gSaveContext.screenScale = 1000.0f; - if ((gSaveContext.time >= CLOCK_TIME(6, 0)) && (gSaveContext.time < CLOCK_TIME(18, 0))) { - if (gSaveContext.time < CLOCK_TIME(17, 30)) { + if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time < CLOCK_TIME(18, 0))) { + if (gSaveContext.save.time < CLOCK_TIME(17, 30)) { this->nextBellTime = CLOCK_TIME(17, 30); - } else if (gSaveContext.time < CLOCK_TIME(17, 36)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 36)) { this->nextBellTime = CLOCK_TIME(17, 36); - } else if (gSaveContext.time < CLOCK_TIME(17, 42)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 42)) { this->nextBellTime = CLOCK_TIME(17, 42); - } else if (gSaveContext.time < CLOCK_TIME(17, 48)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 48)) { this->nextBellTime = CLOCK_TIME(17, 48); - } else if (gSaveContext.time < CLOCK_TIME(17, 54)) { + } else if (gSaveContext.save.time < CLOCK_TIME(17, 54)) { this->nextBellTime = CLOCK_TIME(17, 54); } else { this->nextBellTime = CLOCK_TIME(5, 30); } } else { - if (gSaveContext.time < CLOCK_TIME(5, 30)) { + if (gSaveContext.save.time < CLOCK_TIME(5, 30)) { this->nextBellTime = CLOCK_TIME(5, 30); - } else if (gSaveContext.time < CLOCK_TIME(5, 36)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 36)) { this->nextBellTime = CLOCK_TIME(5, 36); - } else if (gSaveContext.time < CLOCK_TIME(5, 42)) { + } else if (gSaveContext.save.time < CLOCK_TIME(5, 42)) { this->nextBellTime = CLOCK_TIME(5, 42); - gSaveContext.unk_3F64 -= 50.0f; - } else if (gSaveContext.time < CLOCK_TIME(5, 48)) { + gSaveContext.screenScale -= 50.0f; + } else if (gSaveContext.save.time < CLOCK_TIME(5, 48)) { this->nextBellTime = CLOCK_TIME(5, 48); - gSaveContext.unk_3F64 -= 100.0f; - } else if (gSaveContext.time < CLOCK_TIME(5, 54)) { + gSaveContext.screenScale -= 100.0f; + } else if (gSaveContext.save.time < CLOCK_TIME(5, 54)) { this->nextBellTime = CLOCK_TIME(5, 54); - gSaveContext.unk_3F64 -= 150.0f; - } else if (gSaveContext.time < CLOCK_TIME(6, 0)) { + gSaveContext.screenScale -= 150.0f; + } else if (gSaveContext.save.time < CLOCK_TIME(6, 0)) { this->nextBellTime = CLOCK_TIME(17, 30); - gSaveContext.unk_3F64 -= 200.0f; + gSaveContext.screenScale -= 200.0f; } else { this->nextBellTime = CLOCK_TIME(17, 30); } if ((sCutscenes[this->unk_144] < 0) || ((globalCtx->actorCtx.unk5 & 2) != 0) || (CURRENT_DAY == 3) || - (gSaveContext.time >= CLOCK_TIME(17, 0))) { - gSaveContext.unk_3F64 = 1000.0f; + (gSaveContext.save.time >= CLOCK_TIME(17, 0))) { + gSaveContext.screenScale = 1000.0f; } - if (gSaveContext.unk_3F64 != 1000.0f) { - gSaveContext.unk_3F60 = 1; + if (gSaveContext.screenScale != 1000.0f) { + gSaveContext.screenScaleFlag = 1; } } } @@ -309,11 +309,11 @@ void EnTest4_Init(Actor* thisx, GlobalContext* globalCtx) { } else { sIsLoaded = true; this->actor.room = -1; - gSaveContext.unk_3F60 = 0; - gSaveContext.unk_3F64 = 1000.0f; + gSaveContext.screenScaleFlag = 0; + gSaveContext.screenScale = 1000.0f; if (CURRENT_DAY == 0) { - if (gSaveContext.time < CLOCK_TIME(6, 1)) { - gSaveContext.time = CLOCK_TIME(6, 0); + if (gSaveContext.save.time < CLOCK_TIME(6, 1)) { + gSaveContext.save.time = CLOCK_TIME(6, 0); gSaveContext.gameMode = 0; { GameState* state = &globalCtx->state; @@ -322,17 +322,17 @@ void EnTest4_Init(Actor* thisx, GlobalContext* globalCtx) { SET_NEXT_GAMESTATE(&globalCtx->state, Daytelop_Init, DaytelopContext); if (this && this && this) {} this->unk_144 = 1; - gSaveContext.time = CLOCK_TIME(6, 0); + gSaveContext.save.time = CLOCK_TIME(6, 0); Actor_MarkForDeath(&this->actor); } else { - gSaveContext.day = 1; - dayTemp = gSaveContext.day; - gSaveContext.daysElapsed = dayTemp; + gSaveContext.save.day = 1; + dayTemp = gSaveContext.save.day; + gSaveContext.save.daysElapsed = dayTemp; this->unk_144 = 1; - this->unk_146 = gSaveContext.time; + this->unk_146 = gSaveContext.save.time; this->actionFunc = func_80A42AB8; } - } else if (gSaveContext.time == CLOCK_TIME(6, 0)) { + } else if (gSaveContext.save.time == CLOCK_TIME(6, 0)) { this->unk_144 = 0; func_80A41D70(this, globalCtx); if ((gSaveContext.cutsceneTrigger == 0) && (sCutscenes[this->unk_144] >= 0) && @@ -340,12 +340,12 @@ void EnTest4_Init(Actor* thisx, GlobalContext* globalCtx) { player->stateFlags1 |= 0x200; } } else { - if ((gSaveContext.time > CLOCK_TIME(18, 0)) || (gSaveContext.time < CLOCK_TIME(6, 0))) { + if ((gSaveContext.save.time > CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 0))) { this->unk_144 = 0; } else { this->unk_144 = 1; } - this->unk_146 = gSaveContext.time; + this->unk_146 = gSaveContext.save.time; this->actionFunc = func_80A42AB8; } } @@ -356,10 +356,10 @@ void EnTest4_Init(Actor* thisx, GlobalContext* globalCtx) { func_80A425E4(this, globalCtx); } - this->lastBellTime = gSaveContext.time; + this->lastBellTime = gSaveContext.save.time; if ((sCutscenes[this->unk_144] < 0) || (globalCtx->actorCtx.unk5 & 2)) { - gSaveContext.unk_3F60 = 0; - gSaveContext.unk_3F64 = 1000.0f; + gSaveContext.screenScaleFlag = 0; + gSaveContext.screenScale = 1000.0f; } } @@ -377,10 +377,10 @@ void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { s16 bellDiff; s16 new_var; - temp_a3 = gSaveContext.time - temp_a0; + temp_a3 = gSaveContext.save.time - temp_a0; temp_a2 = this->unk_146 - temp_a0; bellDiff = this->lastBellTime - this->nextBellTime; - new_var = gSaveContext.time - this->nextBellTime; + new_var = gSaveContext.save.time - this->nextBellTime; if ((temp_a3 * temp_a2) <= 0) { gSaveContext.unk_3CA7 = 1; @@ -398,7 +398,7 @@ void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { } else if (((sCutscenes[this->unk_144] < 0) || (globalCtx->actorCtx.unk5 & 2)) && CURRENT_DAY != 3) { func_80A41FA4(this, globalCtx); } else { - gSaveContext.unk_3F64 = 0.0f; + gSaveContext.screenScale = 0.0f; func_80169DCC(globalCtx, 0, Entrance_CreateIndexFromSpawn(0), player->unk_3CE, 0xBFF, &player->unk_3C0, player->unk_3CC); func_80169EFC(globalCtx); @@ -422,7 +422,7 @@ void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { if ((sCutscenes[this->unk_144] >= 0) && ((globalCtx->actorCtx.unk5 & 2) == 0)) { player->stateFlags1 |= 0x200; - this->unk_146 = gSaveContext.time; + this->unk_146 = gSaveContext.save.time; } else { if (this->unk_144 == 0) { this->unk_144 = 1; @@ -430,18 +430,18 @@ void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { this->unk_144 = 0; } - this->unk_146 = gSaveContext.time += CLOCK_TIME_MINUTE; + this->unk_146 = gSaveContext.save.time += CLOCK_TIME_MINUTE; } } else if ((new_var * bellDiff) <= 0) { func_801A0124(&this->actor.projectedPos, (this->actor.params >> 5) & 0xF); - this->lastBellTime = gSaveContext.time; + this->lastBellTime = gSaveContext.save.time; if (CURRENT_DAY == 3) { if ((this->nextBellTime == CLOCK_TIME(0, 0)) && - ((gSaveContext.inventory.items[SLOT_OCARINA] == ITEM_NONE) || + ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) || (globalCtx->sceneNum == SCENE_CLOCKTOWER))) { s32 phi_v0; - u32 entranceIndex = gSaveContext.entranceIndex; + u32 entranceIndex = gSaveContext.save.entranceIndex; if ((globalCtx->actorCtx.unk5 & 2)) { phi_v0 = 0xCFF; @@ -494,8 +494,8 @@ void func_80A42F20(EnTest4* this, GlobalContext* globalCtx) { if (this->transitionCsTimer == 60) { Player* player = GET_PLAYER(globalCtx); - gSaveContext.time += CLOCK_TIME_MINUTE; - this->unk_146 = gSaveContext.time; + gSaveContext.save.time += CLOCK_TIME_MINUTE; + this->unk_146 = gSaveContext.save.time; globalCtx->numSetupActors = -globalCtx->numSetupActors; player->stateFlags1 &= ~0x200; } @@ -517,7 +517,7 @@ void func_80A42F20(EnTest4* this, GlobalContext* globalCtx) { } void func_80A430C8(EnTest4* this, GlobalContext* globalCtx) { - if ((CURRENT_DAY == 2) && (gSaveContext.time >= CLOCK_TIME(7, 0)) && (gSaveContext.time < CLOCK_TIME(17, 30)) && + if ((CURRENT_DAY == 2) && (gSaveContext.save.time >= CLOCK_TIME(7, 0)) && (gSaveContext.save.time < CLOCK_TIME(17, 30)) && (globalCtx->envCtx.unk_F2[2] == 0)) { // rain? @@ -542,7 +542,7 @@ void func_80A430C8(EnTest4* this, GlobalContext* globalCtx) { } void func_80A431C8(EnTest4* this, GlobalContext* globalCtx) { - if (((gSaveContext.time >= CLOCK_TIME(17, 30)) && (gSaveContext.time < CLOCK_TIME(23, 0)) && + if (((gSaveContext.save.time >= CLOCK_TIME(17, 30)) && (gSaveContext.save.time < CLOCK_TIME(23, 0)) && (globalCtx->envCtx.unk_F2[0] != 0)) || (globalCtx->envCtx.unk_F2[2] != 0)) { D_801BDBB0 = 0; diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 89973ff69..62d527de2 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -179,7 +179,7 @@ void EnThiefbird_Init(Actor* thisx, GlobalContext* globalCtx) { D_80C1392C = 1; Math_Vec3f_Copy(&D_80C13920, &this->actor.world.pos); Actor_MarkForDeath(&this->actor); - } else if ((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) { + } else if ((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) { Actor_MarkForDeath(&this->actor); } else { func_80C11538(this); @@ -224,16 +224,16 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { s32 itemId1; s16 itemId2 = 0; - for (; slotId < ARRAY_COUNT(gSaveContext.inventory.items); slotId++) { - if ((gSaveContext.inventory.items[slotId] >= ITEM_BOTTLE) && - (gSaveContext.inventory.items[slotId] <= ITEM_POTION_BLUE)) { + for (; slotId < ARRAY_COUNT(gSaveContext.save.inventory.items); slotId++) { + if ((gSaveContext.save.inventory.items[slotId] >= ITEM_BOTTLE) && + (gSaveContext.save.inventory.items[slotId] <= ITEM_POTION_BLUE)) { isItemFound = true; - itemId2 = gSaveContext.inventory.items[slotId]; + itemId2 = gSaveContext.save.inventory.items[slotId]; break; } } - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { phi_a3 = CUR_EQUIP_VALUE_VOID(EQUIP_SWORD); if (INV_CONTENT(ITEM_SWORD_GREAT_FAIRY) == ITEM_SWORD_GREAT_FAIRY) { phi_a3 += 4; @@ -282,10 +282,10 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { return false; } - if (!((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18)) { - gSaveContext.roomInf[126][5] = (gSaveContext.roomInf[126][5] & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18); + if (!((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18)) { + gSaveContext.save.roomInf[126][5] = (gSaveContext.save.roomInf[126][5] & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18); } else { - gSaveContext.roomInf[126][5] = (gSaveContext.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); + gSaveContext.save.roomInf[126][5] = (gSaveContext.save.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); } return true; @@ -345,7 +345,7 @@ s32 func_80C10E98(GlobalContext* globalCtx) { spAC = 0; } - sp98 = (gSaveContext.rupees / 4) * 3; + sp98 = (gSaveContext.save.playerData.rupees / 4) * 3; phi_s0_2 = sp98 / 50; sp5C = (-spB0 - spAC); sp5C += 8; @@ -581,8 +581,8 @@ void func_80C1193C(EnThiefbird* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_THIEFBIRD_VOICE); if (!(this->collider.base.atFlags & AT_BOUNCED)) { if ((D_80C1392C != 0) && CUR_UPG_VALUE(UPG_QUIVER) && - (!((gSaveContext.roomInf[126][5] & 0xFF000000) >> 0x18) || - !((gSaveContext.roomInf[126][5] & 0xFF0000) >> 0x10)) && + (!((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || + !((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10)) && (Rand_ZeroOne() < 0.5f) && func_80C10B0C(this, globalCtx)) { func_80C1242C(this); } else if (func_80C10E98(globalCtx)) { diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 07bf625d2..0d7265ec1 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -511,7 +511,7 @@ s32 func_80AED354(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* ar } s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) { - u16 sp1E = gSaveContext.time - 0x3FFC; + u16 sp1E = gSaveContext.save.time - 0x3FFC; u8 params = ENTK_GET_F800(&this->actor); u16 phi_a1; s32 idx = arg2->unk0 - 1; @@ -543,14 +543,14 @@ void func_80AED4F8(EnTk* this, GlobalContext* globalCtx) { } void func_80AED544(EnTk* this, GlobalContext* globalCtx) { - if (!(gSaveContext.weekEventReg[31] & 0x10)) { + if (!(gSaveContext.save.weekEventReg[31] & 0x10)) { func_801518B0(globalCtx, 0x13FE, &this->actor); - gSaveContext.weekEventReg[31] |= 0x10; - } else if (gSaveContext.time < CLOCK_TIME(9, 0)) { + gSaveContext.save.weekEventReg[31] |= 0x10; + } else if (gSaveContext.save.time < CLOCK_TIME(9, 0)) { func_801518B0(globalCtx, 0x13FF, &this->actor); - } else if (gSaveContext.time < CLOCK_TIME(12, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(12, 0)) { func_801518B0(globalCtx, 0x1400, &this->actor); - } else if (gSaveContext.time < CLOCK_TIME(15, 0)) { + } else if (gSaveContext.save.time < CLOCK_TIME(15, 0)) { func_801518B0(globalCtx, 0x1401, &this->actor); } else { func_801518B0(globalCtx, 0x1402, &this->actor); @@ -572,7 +572,7 @@ void func_80AED610(EnTk* this, GlobalContext* globalCtx) { func_80AED544(this, globalCtx); } else if (!Flags_GetSwitch(globalCtx, ENTK_GET_7F0(&this->actor))) { func_801518B0(globalCtx, 0x1403, &this->actor); - } else if (gSaveContext.weekEventReg[60] & 2) { + } else if (gSaveContext.save.weekEventReg[60] & 2) { func_80AED544(this, globalCtx); } else { func_801518B0(globalCtx, 0x1413, &this->actor); @@ -603,7 +603,7 @@ void func_80AED610(EnTk* this, GlobalContext* globalCtx) { case 0x1413: func_801159EC(30); - gSaveContext.weekEventReg[60] |= 2; + gSaveContext.save.weekEventReg[60] |= 2; func_80151938(globalCtx, 0x13FF); break; @@ -765,7 +765,7 @@ void func_80AEDE10(EnTk* this, GlobalContext* globalCtx) { switch (this->unk_310) { case 0: this->unk_2CA &= ~0x1000; - if (!(gSaveContext.weekEventReg[52] & 0x80)) { + if (!(gSaveContext.save.weekEventReg[52] & 0x80)) { this->unk_2E6 = 0x1405; } else { this->unk_2E6 = 0x140B; @@ -870,7 +870,7 @@ void func_80AEDF5C(EnTk* this, GlobalContext* globalCtx) { break; case 0x140A: - gSaveContext.weekEventReg[52] |= 0x80; + gSaveContext.save.weekEventReg[52] |= 0x80; case 0x140B: func_80AEE784(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index 0acdc0485..fdaa29568 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -10,7 +10,7 @@ #define THIS ((EnToto*)thisx) -#define ENTOTO_WEEK_EVENT_FLAGS (gSaveContext.weekEventReg[50] & 1 || gSaveContext.weekEventReg[51] & 0x80) +#define ENTOTO_WEEK_EVENT_FLAGS (gSaveContext.save.weekEventReg[50] & 1 || gSaveContext.save.weekEventReg[51] & 0x80) void EnToto_Init(Actor* thisx, GlobalContext* globalCtx); void EnToto_Destroy(Actor* thisx, GlobalContext* globalCtx); @@ -199,7 +199,7 @@ void EnToto_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, sInitChain); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); - if (globalCtx->sceneNum == 0x15 && (gSaveContext.time >= 0x4000 && gSaveContext.time < 0xE555)) { + if (globalCtx->sceneNum == 0x15 && (gSaveContext.save.time >= 0x4000 && gSaveContext.save.time < 0xE555)) { Actor_MarkForDeath(&this->actor); return; } @@ -264,7 +264,7 @@ void func_80BA39C8(EnToto* this, GlobalContext* globalCtx) { return; } - if ((globalCtx->sceneNum == 0x15 && !(gSaveContext.time >= 0x4000 && gSaveContext.time < 0xED02)) || + if ((globalCtx->sceneNum == 0x15 && !(gSaveContext.save.time >= 0x4000 && gSaveContext.save.time < 0xED02)) || (globalCtx->sceneNum != 0x15 && func_80BA397C(this, 0x2000))) { if (this->unk2B6 != 0) { this->text = D_80BA5044; @@ -449,7 +449,7 @@ s32 func_80BA4204(EnToto* this, GlobalContext* globalCtx) { if (DECR(this->unk2B1) == 0) { if (!ENTOTO_WEEK_EVENT_FLAGS) { - temp_v1_2 = &D_80BA50DC[gSaveContext.playerForm - 1]; + temp_v1_2 = &D_80BA50DC[gSaveContext.save.playerForm - 1]; func_801518B0(globalCtx, (this->text->unk0 == 6) ? temp_v1_2->unk0 : temp_v1_2->unk4, NULL); } return 1; @@ -528,7 +528,7 @@ s32 func_80BA4530(EnToto* this, GlobalContext* globalCtx) { return this->text->unk1; } if (player->actor.bgCheckFlags & 1) { - temp_s0 = &D_80BA50DC[gSaveContext.playerForm - 1]; + temp_s0 = &D_80BA50DC[gSaveContext.save.playerForm - 1]; if (func_80BA44D4(temp_s0, player)) { Math_Vec3s_ToVec3f(&player->actor.world.pos, &temp_s0->unk6); player->actor.shape.rot.y = 0; @@ -541,7 +541,7 @@ s32 func_80BA4530(EnToto* this, GlobalContext* globalCtx) { if (this->unk2B1 < 10) { this->unk2B1++; if (this->unk2B1 >= 10) { - tmp = gSaveContext.playerForm; // Needed for regalloc possible FAKE MATCH + tmp = gSaveContext.save.playerForm; // Needed for regalloc possible FAKE MATCH func_801518B0(globalCtx, D_80BA50DC[tmp - 1].unk2, NULL); } } @@ -562,17 +562,17 @@ s32 func_80BA46D8(EnToto* this, GlobalContext* globalCtx) { s32 func_80BA4740(EnToto* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.unk1202A == 4) { - if (gSaveContext.playerForm == PLAYER_FORM_HUMAN) { - gSaveContext.weekEventReg[56] |= 0x10; + if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { + gSaveContext.save.weekEventReg[56] |= 0x10; } - if (gSaveContext.playerForm == PLAYER_FORM_DEKU) { - gSaveContext.weekEventReg[56] |= 0x20; + if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { + gSaveContext.save.weekEventReg[56] |= 0x20; } - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { - gSaveContext.weekEventReg[56] |= 0x40; + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { + gSaveContext.save.weekEventReg[56] |= 0x40; } - if (gSaveContext.playerForm == PLAYER_FORM_GORON) { - gSaveContext.weekEventReg[56] |= 0x80; + if (gSaveContext.save.playerForm == PLAYER_FORM_GORON) { + gSaveContext.save.weekEventReg[56] |= 0x80; } return 1; } @@ -584,20 +584,20 @@ s32 func_80BA47E0(EnToto* this, GlobalContext* globalCtx) { s32 i; this->unk2B3 = 0; - if (gSaveContext.weekEventReg[56] & 0x10) { + if (gSaveContext.save.weekEventReg[56] & 0x10) { this->unk2B3 += 1; } - if (gSaveContext.weekEventReg[56] & 0x20) { + if (gSaveContext.save.weekEventReg[56] & 0x20) { this->unk2B3 += 2; } - if (gSaveContext.weekEventReg[56] & 0x40) { + if (gSaveContext.save.weekEventReg[56] & 0x40) { this->unk2B3 += 4; } - if (gSaveContext.weekEventReg[56] & 0x80) { + if (gSaveContext.save.weekEventReg[56] & 0x80) { this->unk2B3 += 8; } for (i = 0; i < 4; i++) { - if (gSaveContext.playerForm != (i + 1) && (D_80BA5128[i] & this->unk2B3)) { + if (gSaveContext.save.playerForm != (i + 1) && (D_80BA5128[i] & this->unk2B3)) { Math_Vec3s_ToVec3f(&spawnPos, &D_80BA50DC[i].unk6); Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_PLAYER, spawnPos.x, spawnPos.y, spawnPos.z, i + 2, 0, 0, -1); @@ -634,9 +634,9 @@ s32 func_80BA4A00(EnToto* this, GlobalContext* globalCtx) { func_800B7298(globalCtx, NULL, 0x45); if (this->unk2B3 == 0xF) { if (CURRENT_DAY == 1) { - gSaveContext.weekEventReg[50] |= 1; + gSaveContext.save.weekEventReg[50] |= 1; } else { - gSaveContext.weekEventReg[51] |= 0x80; + gSaveContext.save.weekEventReg[51] |= 0x80; } } else { func_80BA402C(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index a03072c52..e922e3a0e 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -199,7 +199,7 @@ u16 EnTrt_GetItemTextId(EnTrt* this) { u16 EnTrt_GetItemChoiceTextId(EnTrt* this) { EnGirlA* item = this->items[this->cursorIdx]; - if (item->actor.params == SI_POTION_BLUE && !(gSaveContext.weekEventReg[0x35] & 0x10)) { + if (item->actor.params == SI_POTION_BLUE && !(gSaveContext.save.weekEventReg[0x35] & 0x10)) { this->textId = 0x881; return 0x881; } @@ -345,7 +345,7 @@ void EnTrt_GetMushroom(EnTrt* this, GlobalContext* globalCtx) { case 0x883: this->textId = 0x884; func_801518B0(globalCtx, this->textId, &this->actor); - gSaveContext.weekEventReg[0x35] |= 8; + gSaveContext.save.weekEventReg[0x35] |= 8; func_80123D50(globalCtx, GET_PLAYER(globalCtx), ITEM_BOTTLE, PLAYER_AP_BOTTLE); break; case 0x888: @@ -397,7 +397,7 @@ void EnTrt_Goodbye(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->textId == 0x88F) { - if (func_80114E90() || !(gSaveContext.weekEventReg[0xC] & 0x10)) { + if (func_80114E90() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -408,28 +408,28 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { } else { this->tmpTextId = this->textId; this->textId = 0x88E; - gSaveContext.weekEventReg[0x55] |= 8; + gSaveContext.save.weekEventReg[0x55] |= 8; func_801518B0(globalCtx, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } } else { - if (gSaveContext.weekEventReg[0xC] & 8) { + if (gSaveContext.save.weekEventReg[0xC] & 8) { this->textId = 0x83D; EnTrt_SetupStartShopping(globalCtx, this, 0); - } else if (gSaveContext.weekEventReg[0x54] & 0x40) { + } else if (gSaveContext.save.weekEventReg[0x54] & 0x40) { this->textId = 0x83B; if (func_80114F2C(ITEM_POTION_RED)) { EnTrt_SetupStartShopping(globalCtx, this, false); } else { this->actionFunc = EnTrt_TryToGiveRedPotion; } - } else if (gSaveContext.weekEventReg[0x10] & 0x10) { + } else if (gSaveContext.save.weekEventReg[0x10] & 0x10) { this->timer = 30; this->textId = 0x838; this->cutsceneState = ENTRT_CUTSCENESTATE_PLAYING_SPECIAL; this->actionFunc = EnTrt_Surprised; return; - } else if (gSaveContext.weekEventReg[0x11] & 1) { + } else if (gSaveContext.save.weekEventReg[0x11] & 1) { this->textId = 0x835; EnTrt_SetupStartShopping(globalCtx, this, false); } @@ -443,13 +443,13 @@ void EnTrt_GiveRedPotionForKoume(EnTrt* this, GlobalContext* globalCtx) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; - if (!(gSaveContext.weekEventReg[0xC] & 0x10)) { - gSaveContext.weekEventReg[0xC] |= 0x10; + if (!(gSaveContext.save.weekEventReg[0xC] & 0x10)) { + gSaveContext.save.weekEventReg[0xC] |= 0x10; } - gSaveContext.weekEventReg[0x54] |= 0x40; + gSaveContext.save.weekEventReg[0x54] |= 0x40; player->stateFlags2 &= ~0x20000000; this->actionFunc = EnTrt_GivenRedPotionForKoume; - } else if (gSaveContext.weekEventReg[0xC] & 0x10) { + } else if (gSaveContext.save.weekEventReg[0xC] & 0x10) { func_800B8A1C(&this->actor, globalCtx, GI_POTION_RED, 300.0f, 300.0f); } else { func_800B8A1C(&this->actor, globalCtx, GI_BOTTLE_POTION_RED, 300.0f, 300.0f); @@ -742,7 +742,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { this->drawCursor = 0; this->shopItemSelectedTween = 0.0f; item->boughtFunc(globalCtx, item); - gSaveContext.weekEventReg[0x35] |= 0x10; + gSaveContext.save.weekEventReg[0x35] |= 0x10; } } } @@ -751,14 +751,14 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_IdleSleeping(EnTrt* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - if ((gSaveContext.weekEventReg[0x55] & 8) && !(gSaveContext.weekEventReg[0x54] & 0x40)) { + if ((gSaveContext.save.weekEventReg[0x55] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40)) { this->textId = 0x88F; } else if (!(this->flags & ENTRT_MET)) { this->textId = 0x834; } else { this->textId = 0x83E; } - if (!(gSaveContext.weekEventReg[0x35] & 8)) { + if (!(gSaveContext.save.weekEventReg[0x35] & 8)) { this->talkOptionTextId = 0x845; } else if (this->flags & ENTRT_GIVEN_MUSHROOM) { this->talkOptionTextId = 0x882; @@ -883,8 +883,8 @@ void EnTrt_BeginInteraction(EnTrt* this, GlobalContext* globalCtx) { this->animationIdx = 5; switch (this->textId) { case 0x834: - if (!(gSaveContext.weekEventReg[0xC] & 8) && !(gSaveContext.weekEventReg[0x54] & 0x40) && - !(gSaveContext.weekEventReg[0x10] & 0x10) && !(gSaveContext.weekEventReg[0x11] & 1)) { + if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && + !(gSaveContext.save.weekEventReg[0x10] & 0x10) && !(gSaveContext.save.weekEventReg[0x11] & 1)) { func_8011552C(globalCtx, 6); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; @@ -941,7 +941,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt this->blinkFunc = EnTrt_Blink; if (talkState == 6 && func_80147624(globalCtx)) { - if (func_80114E90() || !(gSaveContext.weekEventReg[0xC] & 0x10)) { + if (func_80114E90() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -950,7 +950,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt } else { this->tmpTextId = this->textId; this->textId = 0x88E; - gSaveContext.weekEventReg[0x55] |= 8; + gSaveContext.save.weekEventReg[0x55] |= 8; func_801518B0(globalCtx, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } @@ -971,7 +971,7 @@ void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { } else { this->tmpTextId = this->textId; this->textId = 0x88E; - gSaveContext.weekEventReg[0x55] |= 8; + gSaveContext.save.weekEventReg[0x55] |= 8; func_801518B0(globalCtx, this->textId, &this->actor); this->actionFunc = EnTrt_EndConversation; } @@ -1043,7 +1043,7 @@ void EnTrt_ShopkeeperGone(EnTrt* this, GlobalContext* globalCtx) { } } if (talkState == 6 && func_80147624(globalCtx)) { - if (gSaveContext.weekEventReg[0x14] & 2) { + if (gSaveContext.save.weekEventReg[0x14] & 2) { globalCtx->nextEntranceIndex = 0xC50; } else { globalCtx->nextEntranceIndex = 0x8450; @@ -1384,7 +1384,7 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, GlobalContext* globalCtx) { itemActionParam = func_80123810(globalCtx); if (itemActionParam > PLAYER_AP_NONE) { if (itemActionParam == PLAYER_AP_BOTTLE_MUSHROOM) { - if (gSaveContext.weekEventReg[0x35] & 8) { + if (gSaveContext.save.weekEventReg[0x35] & 8) { player->actor.textId = 0x888; } else { player->actor.textId = 0x883; @@ -1453,7 +1453,7 @@ void EnTrt_LookToShopkeeperFromShelf(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_InitShopkeeper(EnTrt* this, GlobalContext* globalCtx) { SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600FEF0, &D_0600FD34, NULL, NULL, 0); - if (!(gSaveContext.weekEventReg[0xC] & 8) && !(gSaveContext.weekEventReg[0x54] & 0x40) && gSaveContext.day >= 2) { + if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && gSaveContext.save.day >= 2) { this->actor.draw = NULL; } else { this->actor.draw = EnTrt_Draw; @@ -1471,7 +1471,7 @@ void EnTrt_InitShop(EnTrt* this, GlobalContext* globalCtx) { this->actor.colChkInfo.mass = MASS_IMMOVABLE; this->actor.colChkInfo.cylRadius = 50; this->timer = Rand_S16Offset(40, 20); - if (!(gSaveContext.weekEventReg[0xC] & 8) && !(gSaveContext.weekEventReg[0x54] & 0x40) && gSaveContext.day >= 2) { + if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && gSaveContext.save.day >= 2) { this->textId = 0x84A; this->actionFunc = EnTrt_ShopkeeperGone; } else { @@ -1539,7 +1539,7 @@ void EnTrt_InitShop(EnTrt* this, GlobalContext* globalCtx) { this->blinkTimer = 20; this->eyeTextureIdx = 0; this->blinkFunc = EnTrt_EyesClosed; - if (gSaveContext.weekEventReg[0x35] & 8) { + if (gSaveContext.save.weekEventReg[0x35] & 8) { this->flags |= ENTRT_GIVEN_MUSHROOM; } diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index b230a767f..4e4df76ee 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -77,7 +77,7 @@ void EnWeatherTag_Init(Actor* thisx, GlobalContext* globalCtx) { EnWeatherTag_SetupAction(this, func_80966A08); break; case WEATHERTAG_TYPE_UNK1: - if (gSaveContext.weekEventReg[0x34] & 0x20) { // if cleared STT + if (gSaveContext.save.weekEventReg[0x34] & 0x20) { // if cleared STT Actor_MarkForDeath(&this->actor); } EnWeatherTag_SetupAction(this, func_80966B08); @@ -252,7 +252,7 @@ void func_80966BF4(EnWeatherTag* this, GlobalContext* globalCtx) { if (func_800EE29C(globalCtx, 0x237) != 0) { tmpAction = globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x237)]; if ((globalCtx->csCtx.frames >= tmpAction->startFrame) && (tmpAction->unk0 >= 2)) { - switch (gSaveContext.day) { + switch (gSaveContext.save.day) { case 0: case 1: default: @@ -282,7 +282,7 @@ void func_80966BF4(EnWeatherTag* this, GlobalContext* globalCtx) { void func_80966D20(EnWeatherTag* this, GlobalContext* globalCtx) { u8 newUnk20; - switch (gSaveContext.day) { + switch (gSaveContext.save.day) { case 0: case 1: default: @@ -452,7 +452,7 @@ void func_809674C8(EnWeatherTag* this, GlobalContext* globalCtx) { if (Actor_XZDistanceBetweenActors(&player->actor, &this->actor) < WEATHER_TAG_RANGE100(this)) { if (CURRENT_DAY == 2) { - if ((gSaveContext.time >= 0x4AAA) && (gSaveContext.time < 0xBAAA) && (globalCtx->envCtx.unk_F2[2] == 0)) { + if ((gSaveContext.save.time >= 0x4AAA) && (gSaveContext.save.time < 0xBAAA) && (globalCtx->envCtx.unk_F2[2] == 0)) { D_801BDBB0 = 1; func_800FD78C(globalCtx); @@ -488,11 +488,11 @@ void EnWeatherTag_Update(Actor* thisx, GlobalContext* globalCtx) { (!FrameAdvance_IsEnabled(globalCtx)) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { - oldTime = gSaveContext.time; - gSaveContext.time = (u16)REG(0xF) + oldTime; // cast req + oldTime = gSaveContext.save.time; + gSaveContext.save.time = (u16)REG(0xF) + oldTime; // cast req if (REG(0xF) != 0) { - oldTime = gSaveContext.time; - gSaveContext.time = (u16)gSaveContext.unk_14 + oldTime; + oldTime = gSaveContext.save.time; + gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + oldTime; } } } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index fe2b2cbef..6c3aa8f7e 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -198,14 +198,14 @@ void EnZot_Init(Actor* thisx, GlobalContext* globalCtx2) { func_80B96BEC(this, 2, 0); this->actor.colChkInfo.cylRadius = 0; this->actor.shape.yOffset = -1400.0f; - if (!(gSaveContext.weekEventReg[55] & 0x80)) { + if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { Actor_MarkForDeath(&this->actor); } break; case 18: this->actionFunc = func_80B99384; - if (!(gSaveContext.weekEventReg[55] & 0x80)) { + if (!(gSaveContext.save.weekEventReg[55] & 0x80)) { Actor_MarkForDeath(&this->actor); } break; @@ -233,7 +233,7 @@ void EnZot_Init(Actor* thisx, GlobalContext* globalCtx2) { break; } - if ((ENZOT_GET_1F(thisx) >= 2) && (ENZOT_GET_1F(thisx) < 11) && (gSaveContext.weekEventReg[55] & 0x80)) { + if ((ENZOT_GET_1F(thisx) >= 2) && (ENZOT_GET_1F(thisx) < 11) && (gSaveContext.save.weekEventReg[55] & 0x80)) { Actor_MarkForDeath(&this->actor); } } @@ -243,7 +243,7 @@ void EnZot_Destroy(Actor* thisx, GlobalContext* globalCtx) { Collider_DestroyCylinder(globalCtx, &this->collider); if (ENZOT_GET_1F(&this->actor) == 8) { - gSaveContext.weekEventReg[41] &= (u8)~0x20; + gSaveContext.save.weekEventReg[41] &= (u8)~0x20; } } @@ -372,19 +372,19 @@ void func_80B97100(EnZot* this, GlobalContext* globalCtx) { void func_80B97110(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x125F; - if (gSaveContext.weekEventReg[28] & 0x80) { + if (gSaveContext.save.weekEventReg[28] & 0x80) { textId = 0x1261; } else { - gSaveContext.weekEventReg[28] |= 0x80; + gSaveContext.save.weekEventReg[28] |= 0x80; } } else { textId = 0x125C; - if (gSaveContext.weekEventReg[28] & 0x40) { + if (gSaveContext.save.weekEventReg[28] & 0x40) { textId = 0x125E; } else { - gSaveContext.weekEventReg[28] |= 0x40; + gSaveContext.save.weekEventReg[28] |= 0x40; } } func_801518B0(globalCtx, textId, &this->actor); @@ -422,35 +422,35 @@ void func_80B97240(EnZot* this, GlobalContext* globalCtx) { void func_80B972E8(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.weekEventReg[29] & 0x10) { - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.weekEventReg[29] & 0x10) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x126A; - if (gSaveContext.weekEventReg[29] & 1) { + if (gSaveContext.save.weekEventReg[29] & 1) { textId = 0x126D; } else { - gSaveContext.weekEventReg[29] |= 1; + gSaveContext.save.weekEventReg[29] |= 1; } } else { textId = 0x1267; - if (gSaveContext.weekEventReg[29] & 2) { + if (gSaveContext.save.weekEventReg[29] & 2) { textId = 0x1269; } else { - gSaveContext.weekEventReg[29] |= 2; + gSaveContext.save.weekEventReg[29] |= 2; } } - } else if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x1265; - if (gSaveContext.weekEventReg[29] & 4) { + if (gSaveContext.save.weekEventReg[29] & 4) { textId = 0x1266; } else { - gSaveContext.weekEventReg[29] |= 4; + gSaveContext.save.weekEventReg[29] |= 4; } } else { textId = 0x1262; - if (gSaveContext.weekEventReg[29] & 8) { + if (gSaveContext.save.weekEventReg[29] & 8) { textId = 0x1264; } else { - gSaveContext.weekEventReg[29] |= 8; + gSaveContext.save.weekEventReg[29] |= 8; } } func_801518B0(globalCtx, textId, &this->actor); @@ -479,7 +479,7 @@ void func_80B973BC(EnZot* this, GlobalContext* globalCtx) { break; case 0x1275: - if (gSaveContext.rupees < 10) { + if (gSaveContext.save.playerData.rupees < 10) { func_80151938(globalCtx, 0x1277); } else { func_80151938(globalCtx, 0x1278); @@ -571,15 +571,15 @@ void func_80B97708(EnZot* this, GlobalContext* globalCtx) { } if (phi_v1 != 0) { - gSaveContext.weekEventReg[29] |= 0x10; + gSaveContext.save.weekEventReg[29] |= 0x10; this->actor.flags |= 0x10000; if (phi_v1 == 5) { - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { this->actor.textId = 0x126E; } else { this->actor.textId = 0x1272; } - } else if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + } else if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { this->actor.textId = 0x1273; } else { this->actor.textId = 0x1276; @@ -596,61 +596,61 @@ void func_80B9787C(EnZot* this, GlobalContext* globalCtx) { u16 textId; if (this->actor.textId == 0) { - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { switch (ENZOT_GET_1F(&this->actor)) { case 2: - if (gSaveContext.weekEventReg[37] & 0x40) { + if (gSaveContext.save.weekEventReg[37] & 0x40) { textId = 0x127E; } else { textId = 0x127C; - gSaveContext.weekEventReg[37] |= 0x40; + gSaveContext.save.weekEventReg[37] |= 0x40; } break; case 3: - if (gSaveContext.weekEventReg[38] & 1) { + if (gSaveContext.save.weekEventReg[38] & 1) { textId = 0x1284; } else { textId = 0x1282; - gSaveContext.weekEventReg[38] |= 1; + gSaveContext.save.weekEventReg[38] |= 1; } break; default: - if (gSaveContext.weekEventReg[38] & 4) { + if (gSaveContext.save.weekEventReg[38] & 4) { textId = 0x128A; } else { textId = 0x1288; - gSaveContext.weekEventReg[38] |= 4; + gSaveContext.save.weekEventReg[38] |= 4; } break; } } else { switch (ENZOT_GET_1F(&this->actor)) { case 2: - if (gSaveContext.weekEventReg[37] & 0x20) { + if (gSaveContext.save.weekEventReg[37] & 0x20) { textId = 0x127B; } else { textId = 0x1279; - gSaveContext.weekEventReg[37] |= 0x20; + gSaveContext.save.weekEventReg[37] |= 0x20; } break; case 3: - if (gSaveContext.weekEventReg[37] & 0x80) { + if (gSaveContext.save.weekEventReg[37] & 0x80) { textId = 0x1281; } else { textId = 0x127F; - gSaveContext.weekEventReg[37] |= 0x80; + gSaveContext.save.weekEventReg[37] |= 0x80; } break; default: - if (gSaveContext.weekEventReg[38] & 2) { + if (gSaveContext.save.weekEventReg[38] & 2) { textId = 0x1287; } else { textId = 0x1285; - gSaveContext.weekEventReg[38] |= 2; + gSaveContext.save.weekEventReg[38] |= 2; } break; } @@ -719,7 +719,7 @@ void func_80B97B5C(EnZot* this, GlobalContext* globalCtx) { void func_80B97BF8(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x128C; } else { textId = 0x128B; @@ -798,7 +798,7 @@ void func_80B97E4C(EnZot* this, GlobalContext* globalCtx) { this->actionFunc = func_80B97D6C; this->unk_2F2 |= 4; func_80B96BEC(this, 3, 0); - gSaveContext.weekEventReg[38] |= 8; + gSaveContext.save.weekEventReg[38] |= 8; break; case 0x128B: @@ -815,8 +815,8 @@ void func_80B97FD0(EnZot* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { this->actionFunc = func_80B97E4C; func_80B97BF8(this, globalCtx); - } else if (gSaveContext.weekEventReg[38] & 8) { - if ((this->actor.xzDistToPlayer < 120.0f) && (gSaveContext.playerForm == PLAYER_FORM_ZORA)) { + } else if (gSaveContext.save.weekEventReg[38] & 8) { + if ((this->actor.xzDistToPlayer < 120.0f) && (gSaveContext.save.playerForm == PLAYER_FORM_ZORA)) { this->unk_2F2 |= 4; this->actionFunc = func_80B97E0C; func_80B96BEC(this, 6, 2); @@ -846,38 +846,38 @@ void func_80B98178(EnZot* this, GlobalContext* globalCtx) { switch (ENZOT_GET_1F(&this->actor)) { case 6: - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (CURRENT_DAY == 3) { textId = 0x129D; - } else if (gSaveContext.weekEventReg[39] & 1) { + } else if (gSaveContext.save.weekEventReg[39] & 1) { textId = 0x129C; } else { textId = 0x129B; - gSaveContext.weekEventReg[39] |= 1; + gSaveContext.save.weekEventReg[39] |= 1; } - } else if (gSaveContext.weekEventReg[38] & 0x80) { + } else if (gSaveContext.save.weekEventReg[38] & 0x80) { textId = 0x1293; } else { textId = 0x1291; - gSaveContext.weekEventReg[38] |= 0x80; + gSaveContext.save.weekEventReg[38] |= 0x80; } break; case 7: - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.weekEventReg[39] & 4) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.weekEventReg[39] & 4) { textId = 0x12AA; } else { textId = 0x12A6; - gSaveContext.weekEventReg[39] |= 4; + gSaveContext.save.weekEventReg[39] |= 4; } } else if (Flags_GetSwitch(globalCtx, this->actor.home.rot.z & 0x7F)) { textId = 0x12A0; - } else if (gSaveContext.weekEventReg[39] & 2) { + } else if (gSaveContext.save.weekEventReg[39] & 2) { textId = 0x12A5; } else { textId = 0x12A2; - gSaveContext.weekEventReg[39] |= 2; + gSaveContext.save.weekEventReg[39] |= 2; } break; @@ -889,18 +889,18 @@ void func_80B98178(EnZot* this, GlobalContext* globalCtx) { case 16: case 17: phi_v0 = (ENZOT_GET_1F(&this->actor) * 4) - 44; - if (gSaveContext.weekEventReg[79] & 1) { + if (gSaveContext.save.weekEventReg[79] & 1) { phi_v0 += 2; } - if (gSaveContext.playerForm != PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm != PLAYER_FORM_ZORA) { phi_v0++; } textId = phi_v0 + 0x1302; break; default: - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { textId = 0x129F; } else { textId = 0x1295; @@ -1086,18 +1086,18 @@ void func_80B98998(EnZot* this, GlobalContext* globalCtx) { void func_80B98A4C(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.weekEventReg[39] & 0x80) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.weekEventReg[39] & 0x80) { textId = 0x12B6; } else { textId = 0x12B4; - gSaveContext.weekEventReg[39] |= 0x80; + gSaveContext.save.weekEventReg[39] |= 0x80; } - } else if (gSaveContext.weekEventReg[39] & 0x40) { + } else if (gSaveContext.save.weekEventReg[39] & 0x40) { textId = 0x12B3; } else { textId = 0x12B1; - gSaveContext.weekEventReg[39] |= 0x40; + gSaveContext.save.weekEventReg[39] |= 0x40; } func_801518B0(globalCtx, textId, &this->actor); } @@ -1115,14 +1115,14 @@ void func_80B98AD0(EnZot* this, GlobalContext* globalCtx) { case 0x12B8: func_801477B4(globalCtx); this->actionFunc = func_80B98CA8; - gSaveContext.weekEventReg[41] &= (u8)~0x20; + gSaveContext.save.weekEventReg[41] &= (u8)~0x20; func_8019C300(0); break; case 0x12BA: func_801477B4(globalCtx); this->actionFunc = func_80B98CA8; - gSaveContext.weekEventReg[41] |= 0x20; + gSaveContext.save.weekEventReg[41] |= 0x20; func_8019C300(0); break; @@ -1137,7 +1137,7 @@ void func_80B98AD0(EnZot* this, GlobalContext* globalCtx) { void func_80B98BF4(EnZot* this, GlobalContext* globalCtx) { if (func_800B84D0(&this->actor, globalCtx)) { this->actor.flags &= ~0x10000; - if (gSaveContext.weekEventReg[41] & 0x20) { + if (gSaveContext.save.weekEventReg[41] & 0x20) { func_801518B0(globalCtx, 0x12B7, &this->actor); this->actionFunc = func_80B98AD0; } else { @@ -1164,32 +1164,32 @@ void func_80B98CA8(EnZot* this, GlobalContext* globalCtx) { func_800B8614(&this->actor, globalCtx, 120.0f); } - if ((gSaveContext.playerForm == PLAYER_FORM_ZORA) || (this->actor.xzDistToPlayer < 100.0f)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_ZORA) || (this->actor.xzDistToPlayer < 100.0f)) { func_800B874C(&this->actor, globalCtx, 120.0, 100.0f); } } if (this->actor.xzDistToPlayer > 100.0f) { - gSaveContext.weekEventReg[41] &= (u8)~0x20; + gSaveContext.save.weekEventReg[41] &= (u8)~0x20; } } void func_80B98E10(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (Flags_GetSwitch(globalCtx, this->actor.home.rot.z & 0x7F)) { - if (gSaveContext.weekEventReg[40] & 4) { + if (gSaveContext.save.weekEventReg[40] & 4) { textId = 0x12C5; } else { textId = 0x12C3; - gSaveContext.weekEventReg[40] |= 4; + gSaveContext.save.weekEventReg[40] |= 4; } - } else if (gSaveContext.weekEventReg[40] & 2) { + } else if (gSaveContext.save.weekEventReg[40] & 2) { textId = 0x12C2; } else { textId = 0x12C0; - gSaveContext.weekEventReg[40] |= 2; + gSaveContext.save.weekEventReg[40] |= 2; } } else { if (Flags_GetSwitch(globalCtx, this->actor.home.rot.z & 0x7F)) { @@ -1199,10 +1199,10 @@ void func_80B98E10(EnZot* this, GlobalContext* globalCtx) { textId = 0x12BE; this->unk_2F2 |= 0x10; } - } else if (gSaveContext.weekEventReg[40] & 1) { + } else if (gSaveContext.save.weekEventReg[40] & 1) { textId = 0x12BC; } else { - gSaveContext.weekEventReg[40] |= 1; + gSaveContext.save.weekEventReg[40] |= 1; this->unk_2F2 |= 4; textId = 0x12BB; } @@ -1264,18 +1264,18 @@ void func_80B990A4(EnZot* this, GlobalContext* globalCtx) { void func_80B99160(EnZot* this, GlobalContext* globalCtx) { u16 textId; - if (gSaveContext.playerForm == PLAYER_FORM_ZORA) { - if (gSaveContext.weekEventReg[40] & 0x10) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { + if (gSaveContext.save.weekEventReg[40] & 0x10) { textId = 0x12CD; } else { textId = 0x12CA; - gSaveContext.weekEventReg[40] |= 0x10; + gSaveContext.save.weekEventReg[40] |= 0x10; } - } else if (gSaveContext.weekEventReg[40] & 8) { + } else if (gSaveContext.save.weekEventReg[40] & 8) { textId = 0x12C9; } else { textId = 0x12C6; - gSaveContext.weekEventReg[40] |= 8; + gSaveContext.save.weekEventReg[40] |= 8; } func_801518B0(globalCtx, textId, &this->actor); } diff --git a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c index fde316a81..6f04ac880 100644 --- a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c +++ b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c @@ -32,7 +32,7 @@ extern Gfx D_060011E0[]; void ObjDinner_Init(Actor* thisx, GlobalContext* globalCtx) { ObjDinner* this = THIS; - if (gSaveContext.isNight != true || (CURRENT_DAY == 3 && gSaveContext.weekEventReg[0x16] & 1)) { + if (gSaveContext.save.isNight != true || (CURRENT_DAY == 3 && gSaveContext.save.weekEventReg[0x16] & 1)) { Actor_MarkForDeath(&this->actor); } Actor_SetScale(&this->actor, 0.1f); diff --git a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c index 4cfc3fcf7..314eb9f60 100644 --- a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c +++ b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c @@ -47,7 +47,7 @@ extern Gfx D_06001980[]; extern CollisionHeader D_06003CD0; void func_80B3C260(ObjGhaka* this) { - if (gSaveContext.weekEventReg[20] & 0x20) { + if (gSaveContext.save.weekEventReg[20] & 0x20) { this->dyna.actor.world.pos.z = this->dyna.actor.home.pos.z + 100.0f; } this->actionFunc = func_80B3C39C; @@ -62,7 +62,7 @@ void func_80B3C2B0(ObjGhaka* this) { } void func_80B3C2C4(ObjGhaka* this, GlobalContext* globalCtx) { - if (!(gSaveContext.weekEventReg[20] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[20] & 0x20)) { Actor_SpawnAsChildAndCutscene(&globalCtx->actorCtx, globalCtx, ACTOR_BG_GORON_OYU, 0.0f, 25.0f, 261.0f, 0, 0, 0, 0, this->dyna.actor.cutscene, this->dyna.actor.unk20, 0); } else { @@ -87,7 +87,7 @@ void func_80B3C39C(ObjGhaka* this, GlobalContext* globalCtx) { } } } - if (this->dyna.pushForce < 0.0f && !(gSaveContext.weekEventReg[20] & 0x20) && + if (this->dyna.pushForce < 0.0f && !(gSaveContext.save.weekEventReg[20] & 0x20) && player->transformation == PLAYER_FORM_GORON) { func_80B3C2B0(this); } else { @@ -138,7 +138,7 @@ void func_80B3C624(ObjGhaka* this, GlobalContext* globalCtx) { player->stateFlags2 &= ~0x10; this->dyna.pushForce = 0.0f; func_80B3C2C4(this, globalCtx); - gSaveContext.weekEventReg[20] |= 0x20; + gSaveContext.save.weekEventReg[20] |= 0x20; func_80B3C260(this); func_8019F1C0(&D_80B3C960, NA_SE_EV_BLOCK_BOUND); } else { @@ -160,7 +160,7 @@ void ObjGhaka_Init(Actor* thisx, GlobalContext* globalCtx) { if (this->dyna.actor.floorPoly == 0) { Actor_MarkForDeath(&this->dyna.actor); } - if (gSaveContext.weekEventReg[20] & 0x20) { + if (gSaveContext.save.weekEventReg[20] & 0x20) { func_80B3C2C4(this, globalCtx); } func_80B3C260(this); diff --git a/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c b/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c index 0b32504fa..c89b09a0c 100644 --- a/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c +++ b/src/overlays/actors/ovl_Obj_Hgdoor/z_obj_hgdoor.c @@ -102,7 +102,7 @@ void ObjHgdoor_SetupCheckShouldOpen(ObjHgdoor* this) { } void ObjHgdoor_CheckShouldOpen(ObjHgdoor* this, GlobalContext* globalCtx) { - if (!(gSaveContext.weekEventReg[75] & 0x20) && !(gSaveContext.weekEventReg[52] & 0x20) && + if (!(gSaveContext.save.weekEventReg[75] & 0x20) && !(gSaveContext.save.weekEventReg[52] & 0x20) && (this->dyna.actor.xzDistToPlayer < 100.0f) && (this->dyna.actor.playerHeightRel < 40.0f) && OBJHGDOOR_IS_RIGHT_DOOR(&this->dyna.actor)) { ObjHgdoor_SetChild(this, globalCtx); diff --git a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c index 5af876303..ac35bc327 100644 --- a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c +++ b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c @@ -60,7 +60,7 @@ void ObjMilkBin_Init(Actor* thisx, GlobalContext* globalCtx) { this->disableDraw = 0; this->type = thisx->params; - if ((this->type == OBJ_MILK_BIN_TYPE_2) && !(gSaveContext.weekEventReg[0x34] & 1)) { + if ((this->type == OBJ_MILK_BIN_TYPE_2) && !(gSaveContext.save.weekEventReg[0x34] & 1)) { this->disableDraw |= 1; } } @@ -76,14 +76,14 @@ void ObjMilkBin_Update(Actor* thisx, GlobalContext* globalCtx2) { GlobalContext* globalCtx = globalCtx2; if (this->type == OBJ_MILK_BIN_TYPE_1) { - if (gSaveContext.weekEventReg[0x16] & 1) { - if (((gSaveContext.day == 2) && (gSaveContext.isNight == 1)) || (gSaveContext.day >= 3)) { + if (gSaveContext.save.weekEventReg[0x16] & 1) { + if (((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == 1)) || (gSaveContext.save.day >= 3)) { Actor_MarkForDeath(&this->actor); return; } } } else if (this->type == OBJ_MILK_BIN_TYPE_2) { - if (gSaveContext.weekEventReg[0x34] & 1) { + if (gSaveContext.save.weekEventReg[0x34] & 1) { this->disableDraw &= ~1; } else { this->disableDraw |= 1; diff --git a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c index 153a4a914..3409eab45 100644 --- a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c +++ b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c @@ -53,8 +53,8 @@ void ObjMoonStone_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.flags |= 9; func_80C0662C(this); } else { - if ((gSaveContext.weekEventReg[74] & 0x40) == 0) { - if ((gSaveContext.weekEventReg[74] & 0x80)) { + if ((gSaveContext.save.weekEventReg[74] & 0x40) == 0) { + if ((gSaveContext.save.weekEventReg[74] & 0x80)) { Actor_Spawn(&globalCtx->actorCtx, globalCtx, 1, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, -1); } @@ -102,14 +102,14 @@ void func_80C0670C(ObjMoonStone* this, GlobalContext* globalCtx) { } void func_80C0673C(ObjMoonStone* this) { - if ((gSaveContext.weekEventReg[74] & 0x80) == 0) { + if ((gSaveContext.save.weekEventReg[74] & 0x80) == 0) { this->actor.draw = NULL; } this->actionFunc = func_80C06768; } void func_80C06768(ObjMoonStone* this, GlobalContext* globalCtx) { - if ((gSaveContext.weekEventReg[74] & 0x80)) { + if ((gSaveContext.save.weekEventReg[74] & 0x80)) { if (this->actor.draw == 0) { this->actor.draw = ObjMoonStone_Draw; Actor_Spawn(&globalCtx->actorCtx, globalCtx, 1, this->actor.world.pos.x, this->actor.world.pos.y, @@ -133,7 +133,7 @@ void func_80C0685C(ObjMoonStone* this) { void func_80C06870(ObjMoonStone* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 6 && func_80147624(globalCtx)) { - gSaveContext.weekEventReg[74] |= 0x40; + gSaveContext.save.weekEventReg[74] |= 0x40; Actor_MarkForDeath(&this->actor); } } diff --git a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c index 0e510d6b3..db8921018 100644 --- a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c +++ b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c @@ -40,7 +40,7 @@ const ActorInit Obj_Mu_Pict_InitVars = { void ObjMuPict_Init(Actor* thisx, GlobalContext* globalCtx) { ObjMuPict* this = THIS; - if (!(gSaveContext.weekEventReg[75] & 0x20) && !(gSaveContext.weekEventReg[52] & 0x20)) { + if (!(gSaveContext.save.weekEventReg[75] & 0x20) && !(gSaveContext.save.weekEventReg[52] & 0x20)) { Actor_MarkForDeath(&this->actor); } diff --git a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c index a62ce6cf6..9674fd15f 100644 --- a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c +++ b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c @@ -200,7 +200,7 @@ void ObjTokeiStep_Init(Actor* thisx, GlobalContext* globalCtx) { DynaPolyActor_LoadMesh(globalCtx, &this->dyna, &D_06000968); ObjTokeiStep_InitSteps(this); ObjTokeiStep_SetupBeginOpen(this); - } else if (!((CURRENT_DAY != 3) || (gSaveContext.time >= 0x4000)) || gSaveContext.day >= 4) { + } else if (!((CURRENT_DAY != 3) || (gSaveContext.save.time >= 0x4000)) || gSaveContext.save.day >= 4) { this->dyna.actor.draw = ObjTokeiStep_DrawOpen; ObjTokeiStep_InitStepsOpen(this); ObjTokeiStep_SetupDoNothingOpen(this); diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c index 6e66c9cab..7b8138a7a 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c @@ -146,7 +146,7 @@ void ObjWarpstone_Update(Actor* thisx, GlobalContext* globalCtx) { globalCtx->msgCtx.unk11F22 = 0x4D; globalCtx->msgCtx.unk120D6 = 0; globalCtx->msgCtx.unk120D4 = 0; - gSaveContext.owlSaveLocation = OBJ_WARPSTONE_GET_ID(this); + gSaveContext.save.owlSaveLocation = OBJ_WARPSTONE_GET_ID(this); } else { func_801477B4(globalCtx); } diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h index 47163ec2c..063504026 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.h @@ -29,6 +29,6 @@ typedef struct ObjWarpstone { extern const ActorInit Obj_Warpstone_InitVars; #define OBJ_WARPSTONE_GET_ID(this) ((u16)(this->dyna.actor.params & 0xF)) -#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0,gSaveContext.owlActivationFlags) & (u16)gBitFlags[owlId]) +#define OBJ_WARPSTONE_IS_ACTIVATED(owlId) (((void)0,gSaveContext.save.playerData.owlActivationFlags) & (u16)gBitFlags[owlId]) #endif // Z_OBJ_WARPSTONE_H diff --git a/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c b/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c index 2d8689d4f..98c748227 100644 --- a/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c +++ b/src/overlays/actors/ovl_Obj_Yado/z_obj_yado.c @@ -42,7 +42,7 @@ void ObjYado_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, sInitChain); D_80C16470 = (AnimatedMaterial*)Lib_SegmentedToVirtual(&D_060012E8); - this->isNight = gSaveContext.isNight; + this->isNight = gSaveContext.save.isNight; } void ObjYado_Destroy(Actor* thisx, GlobalContext* globalCtx) { @@ -51,7 +51,7 @@ void ObjYado_Destroy(Actor* thisx, GlobalContext* globalCtx) { void ObjYado_Update(Actor* thisx, GlobalContext* globalCtx) { ObjYado* this = THIS; - this->isNight = gSaveContext.isNight; + this->isNight = gSaveContext.save.isNight; } void ObjYado_Draw(Actor* thisx, GlobalContext* globalCtx) { diff --git a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c index 1637e1978..376260a69 100644 --- a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c +++ b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c @@ -70,11 +70,11 @@ void Daytelop_Update(DaytelopContext* this, GameState* gameState) { this->transitionCountdown--; if (this->transitionCountdown == 0) { - if (gSaveContext.day < 9) { + if (gSaveContext.save.day < 9) { gSaveContext.gameMode = 0; } else { gSaveContext.nextCutsceneIndex = 0xFFF6; - gSaveContext.day = 1; + gSaveContext.save.day = 1; } { @@ -83,7 +83,7 @@ void Daytelop_Update(DaytelopContext* this, GameState* gameState) { } SET_NEXT_GAMESTATE(&this->state, Play_Init, GlobalContext); - gSaveContext.time = CLOCK_TIME(6, 0); + gSaveContext.save.time = CLOCK_TIME(6, 0); D_801BDBC8 = 0xFE; } else if (this->transitionCountdown == 90) { this->fadeInState = DAYTELOP_HOURSTEXT_FADEIN; @@ -132,7 +132,7 @@ void Daytelop_Draw(DaytelopContext* this) { OPEN_DISPS(gfxCtx); func_8012C628(this->state.gfxCtx); - if (gSaveContext.day >= 9) { + if (gSaveContext.save.day >= 9) { // Draw a white screen gDPSetRenderMode(POLY_OPA_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); @@ -145,12 +145,12 @@ void Daytelop_Draw(DaytelopContext* this) { gDPSetRenderMode(POLY_OPA_DISP++, G_RM_OPA_SURF, G_RM_OPA_SURF2); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); - if (gSaveContext.day >= 9) { + if (gSaveContext.save.day >= 9) { gDPSetAlphaCompare(POLY_OPA_DISP++, G_AC_NONE); } // Draw the left side of the "Dawn of" texture - if (gSaveContext.day < 9) { + if (gSaveContext.save.day < 9) { gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sDayLeftTextures[CURRENT_DAY - 1], G_IM_FMT_I, 128, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -163,7 +163,7 @@ void Daytelop_Draw(DaytelopContext* this) { 0x0400, 0x0400); // Draw the right side of the "Dawn of" texture - if (gSaveContext.day < 9) { + if (gSaveContext.save.day < 9) { gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sDayRightTextures[CURRENT_DAY - 1], G_IM_FMT_I, 128, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -176,7 +176,7 @@ void Daytelop_Draw(DaytelopContext* this) { 0x0400, 0x0400); // Draw the "Hours left" texture - if (gSaveContext.day < 9) { + if (gSaveContext.save.day < 9) { gDPPipeSync(POLY_OPA_DISP++); gDPSetRenderMode(POLY_OPA_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->alpha); @@ -234,8 +234,8 @@ void Daytelop_Init(GameState* thisx) { this->transitionCountdown = 140; this->fadeInState = DAYTELOP_HOURSTEXT_OFF; - if (gSaveContext.day < 9) { - if (gSaveContext.day == 0) { + if (gSaveContext.save.day < 9) { + if (gSaveContext.save.day == 0) { func_80143AC4(); } Sram_IncrementDay(); diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index 96fe615fc..2d4f51006 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -15,19 +15,19 @@ void Opening_SetupForTitleCutscene(OpeningContext* this) { func_80144890(); - gSaveContext.entranceIndex = openingEntrances[D_801BB12C]; - gSaveContext.nextCutsceneIndex = gSaveContext.cutscene = openingCutscenes[D_801BB12C]; + gSaveContext.save.entranceIndex = openingEntrances[D_801BB12C]; + gSaveContext.nextCutsceneIndex = gSaveContext.save.cutscene = openingCutscenes[D_801BB12C]; gSaveContext.sceneSetupIndex = 0; - gSaveContext.time = CLOCK_TIME(8, 0); - gSaveContext.day = 1; + gSaveContext.save.time = CLOCK_TIME(8, 0); + gSaveContext.save.day = 1; { GameState* thisx = &this->gameState; thisx->running = false; } SET_NEXT_GAMESTATE(&this->gameState, Play_Init, GlobalContext); - gSaveContext.playerForm = PLAYER_FORM_HUMAN; + gSaveContext.save.playerForm = PLAYER_FORM_HUMAN; } void func_80803EA0(OpeningContext* this) { diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 1cae35a85..ea28e5e2b 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -33,15 +33,15 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { gSaveContext.unk_3F24 = 0; Audio_QueueSeqCmd(NA_BGM_STOP); - gSaveContext.entranceIndex = entranceIndex; + gSaveContext.save.entranceIndex = entranceIndex; if (opt != 0) { - gSaveContext.entranceIndex = - Entrance_CreateIndex((s32)gSaveContext.entranceIndex >> 9, opt, gSaveContext.entranceIndex & 0xF); + gSaveContext.save.entranceIndex = + Entrance_CreateIndex((s32)gSaveContext.save.entranceIndex >> 9, opt, gSaveContext.save.entranceIndex & 0xF); } - if (gSaveContext.entranceIndex == 0xC000) { - gSaveContext.day = 0; - gSaveContext.time = CLOCK_TIME(6, 0) - 1; + if (gSaveContext.save.entranceIndex == 0xC000) { + gSaveContext.save.day = 0; + gSaveContext.save.time = CLOCK_TIME(6, 0) - 1; } gSaveContext.respawn[0].entranceIndex = 0xFFFF; @@ -382,78 +382,78 @@ void Select_UpdateMenu(SelectContext* this) { } if (CHECK_BTN_ALL(controller1->press.button, BTN_B)) { - playerForm = gSaveContext.playerForm - 1; + playerForm = gSaveContext.save.playerForm - 1; if (playerForm < PLAYER_FORM_FIERCE_DEITY) { playerForm = PLAYER_FORM_HUMAN; } - gSaveContext.playerForm = playerForm; + gSaveContext.save.playerForm = playerForm; } if (CHECK_BTN_ALL(controller1->press.button, BTN_Z)) { - if (gSaveContext.cutscene == 0x8000) { - gSaveContext.cutscene = 0; - } else if (gSaveContext.cutscene == 0) { - gSaveContext.cutscene = 0x8800; - } else if (gSaveContext.cutscene == 0x8800) { - gSaveContext.cutscene = 0xFFF0; - } else if (gSaveContext.cutscene == 0xFFF0) { - gSaveContext.cutscene = 0xFFF1; - } else if (gSaveContext.cutscene == 0xFFF1) { - gSaveContext.cutscene = 0xFFF2; - } else if (gSaveContext.cutscene == 0xFFF2) { - gSaveContext.cutscene = 0xFFF3; - } else if (gSaveContext.cutscene == 0xFFF3) { - gSaveContext.cutscene = 0xFFF4; - } else if (gSaveContext.cutscene == 0xFFF4) { - gSaveContext.cutscene = 0xFFF5; - } else if (gSaveContext.cutscene == 0xFFF5) { - gSaveContext.cutscene = 0xFFF6; - } else if (gSaveContext.cutscene == 0xFFF6) { - gSaveContext.cutscene = 0xFFF7; - } else if (gSaveContext.cutscene == 0xFFF7) { - gSaveContext.cutscene = 0xFFF8; - } else if (gSaveContext.cutscene == 0xFFF8) { - gSaveContext.cutscene = 0xFFF9; - } else if (gSaveContext.cutscene == 0xFFF9) { - gSaveContext.cutscene = 0xFFFA; - } else if (gSaveContext.cutscene == 0xFFFA) { - gSaveContext.cutscene = 0x8000; + if (gSaveContext.save.cutscene == 0x8000) { + gSaveContext.save.cutscene = 0; + } else if (gSaveContext.save.cutscene == 0) { + gSaveContext.save.cutscene = 0x8800; + } else if (gSaveContext.save.cutscene == 0x8800) { + gSaveContext.save.cutscene = 0xFFF0; + } else if (gSaveContext.save.cutscene == 0xFFF0) { + gSaveContext.save.cutscene = 0xFFF1; + } else if (gSaveContext.save.cutscene == 0xFFF1) { + gSaveContext.save.cutscene = 0xFFF2; + } else if (gSaveContext.save.cutscene == 0xFFF2) { + gSaveContext.save.cutscene = 0xFFF3; + } else if (gSaveContext.save.cutscene == 0xFFF3) { + gSaveContext.save.cutscene = 0xFFF4; + } else if (gSaveContext.save.cutscene == 0xFFF4) { + gSaveContext.save.cutscene = 0xFFF5; + } else if (gSaveContext.save.cutscene == 0xFFF5) { + gSaveContext.save.cutscene = 0xFFF6; + } else if (gSaveContext.save.cutscene == 0xFFF6) { + gSaveContext.save.cutscene = 0xFFF7; + } else if (gSaveContext.save.cutscene == 0xFFF7) { + gSaveContext.save.cutscene = 0xFFF8; + } else if (gSaveContext.save.cutscene == 0xFFF8) { + gSaveContext.save.cutscene = 0xFFF9; + } else if (gSaveContext.save.cutscene == 0xFFF9) { + gSaveContext.save.cutscene = 0xFFFA; + } else if (gSaveContext.save.cutscene == 0xFFFA) { + gSaveContext.save.cutscene = 0x8000; } } else if (CHECK_BTN_ALL(controller1->press.button, BTN_R)) { - if (gSaveContext.cutscene == 0x8000) { - gSaveContext.cutscene = 0xFFFA; - } else if (gSaveContext.cutscene == 0) { - gSaveContext.cutscene = 0x8000; - } else if (gSaveContext.cutscene == 0x8800) { - gSaveContext.cutscene = 0; - } else if (gSaveContext.cutscene == 0xFFF0) { - gSaveContext.cutscene = 0x8800; - } else if (gSaveContext.cutscene == 0xFFF1) { - gSaveContext.cutscene = 0xFFF0; - } else if (gSaveContext.cutscene == 0xFFF2) { - gSaveContext.cutscene = 0xFFF1; - } else if (gSaveContext.cutscene == 0xFFF3) { - gSaveContext.cutscene = 0xFFF2; - } else if (gSaveContext.cutscene == 0xFFF4) { - gSaveContext.cutscene = 0xFFF3; - } else if (gSaveContext.cutscene == 0xFFF5) { - gSaveContext.cutscene = 0xFFF4; - } else if (gSaveContext.cutscene == 0xFFF6) { - gSaveContext.cutscene = 0xFFF5; - } else if (gSaveContext.cutscene == 0xFFF7) { - gSaveContext.cutscene = 0xFFF6; - } else if (gSaveContext.cutscene == 0xFFF8) { - gSaveContext.cutscene = 0xFFF7; - } else if (gSaveContext.cutscene == 0xFFF9) { - gSaveContext.cutscene = 0xFFF8; - } else if (gSaveContext.cutscene == 0xFFFA) { - gSaveContext.cutscene = 0xFFF9; + if (gSaveContext.save.cutscene == 0x8000) { + gSaveContext.save.cutscene = 0xFFFA; + } else if (gSaveContext.save.cutscene == 0) { + gSaveContext.save.cutscene = 0x8000; + } else if (gSaveContext.save.cutscene == 0x8800) { + gSaveContext.save.cutscene = 0; + } else if (gSaveContext.save.cutscene == 0xFFF0) { + gSaveContext.save.cutscene = 0x8800; + } else if (gSaveContext.save.cutscene == 0xFFF1) { + gSaveContext.save.cutscene = 0xFFF0; + } else if (gSaveContext.save.cutscene == 0xFFF2) { + gSaveContext.save.cutscene = 0xFFF1; + } else if (gSaveContext.save.cutscene == 0xFFF3) { + gSaveContext.save.cutscene = 0xFFF2; + } else if (gSaveContext.save.cutscene == 0xFFF4) { + gSaveContext.save.cutscene = 0xFFF3; + } else if (gSaveContext.save.cutscene == 0xFFF5) { + gSaveContext.save.cutscene = 0xFFF4; + } else if (gSaveContext.save.cutscene == 0xFFF6) { + gSaveContext.save.cutscene = 0xFFF5; + } else if (gSaveContext.save.cutscene == 0xFFF7) { + gSaveContext.save.cutscene = 0xFFF6; + } else if (gSaveContext.save.cutscene == 0xFFF8) { + gSaveContext.save.cutscene = 0xFFF7; + } else if (gSaveContext.save.cutscene == 0xFFF9) { + gSaveContext.save.cutscene = 0xFFF8; + } else if (gSaveContext.save.cutscene == 0xFFFA) { + gSaveContext.save.cutscene = 0xFFF9; } } - gSaveContext.isNight = false; - if (gSaveContext.cutscene == 0x8800) { - gSaveContext.isNight = true; + gSaveContext.save.isNight = false; + if (gSaveContext.save.cutscene == 0x8800) { + gSaveContext.save.isNight = true; } if (CHECK_BTN_ALL(controller1->press.button, BTN_CUP)) { @@ -464,14 +464,14 @@ void Select_UpdateMenu(SelectContext* this) { } if (CHECK_BTN_ALL(controller1->press.button, BTN_CLEFT)) { - if (gSaveContext.day > 1) { - gSaveContext.day--; + if (gSaveContext.save.day > 1) { + gSaveContext.save.day--; } } if (CHECK_BTN_ALL(controller1->press.button, BTN_CRIGHT)) { - if (gSaveContext.day < 4) { - gSaveContext.day++; + if (gSaveContext.save.day < 4) { + gSaveContext.save.day++; } } @@ -723,19 +723,19 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI case 0: // clang-format off // "Afternoon-jara" - gSaveContext.time = CLOCK_TIME(12, 0); stage = "\x8Dオヒル\x8Cジャラ"; + gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "\x8Dオヒル\x8Cジャラ"; // clang-format on break; case 0x8000: // clang-format off // "Morning-jara" - gSaveContext.time = CLOCK_TIME(6, 0) + 1; stage = "\x8Dアサ \x8Cジャラ"; + gSaveContext.save.time = CLOCK_TIME(6, 0) + 1; stage = "\x8Dアサ \x8Cジャラ"; // clang-format on break; case 0x8800: - gSaveContext.time = CLOCK_TIME(18, 1); + gSaveContext.save.time = CLOCK_TIME(18, 1); // "Night-jara" stage = "\x8Dヨル \x8Cジャラ"; break; @@ -743,7 +743,7 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI case 0xFFF0: // clang-format off // "Cutscene 00" - gSaveContext.time = CLOCK_TIME(12, 0); stage = "デモ00"; + gSaveContext.save.time = CLOCK_TIME(12, 0); stage = "デモ00"; // clang-format on break; case 0xFFF1: @@ -791,13 +791,13 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI stage = "???"; break; } - gSaveContext.environmentTime = gSaveContext.time; + gSaveContext.environmentTime = gSaveContext.save.time; GfxPrint_Printf(printer, "Stage:\x8C%s", stage); GfxPrint_SetPos(printer, 23, 25); GfxPrint_SetColor(printer, 255, 255, 55, 255); - switch (gSaveContext.day) { + switch (gSaveContext.save.day) { case 1: // "The First Day" day = "\x8Dサイショノヒ"; @@ -815,7 +815,7 @@ void Select_PrintCutsceneSetting(SelectContext* this, GfxPrint* printer, u16 csI day = "\x8Dクリアーノヒ"; break; default: - gSaveContext.day = 1; + gSaveContext.save.day = 1; // "The First Day" day = "\x8Dサイショノヒ"; break; @@ -837,8 +837,8 @@ void Select_DrawMenu(SelectContext* this) { GfxPrint_Open(printer, POLY_OPA_DISP); Select_PrintMenu(this, printer); - Select_PrintAgeSetting(this, printer, ((void)0, gSaveContext.playerForm)); - Select_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.cutscene)); + Select_PrintAgeSetting(this, printer, ((void)0, gSaveContext.save.playerForm)); + Select_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.save.cutscene)); POLY_OPA_DISP = GfxPrint_Close(printer); GfxPrint_Destroy(printer); @@ -928,7 +928,7 @@ void Select_Init(GameState* thisx) { } Game_SetFramerateDivisor(&this->state, 1); - gSaveContext.cutscene = 0; - gSaveContext.playerForm = PLAYER_FORM_HUMAN; - gSaveContext.linkAge = 0; + gSaveContext.save.cutscene = 0; + gSaveContext.save.playerForm = PLAYER_FORM_HUMAN; + gSaveContext.save.linkAge = 0; } From 47a5b153a142d4789f6732df83428ca9873bdb51 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 23 Dec 2021 02:47:19 +1100 Subject: [PATCH 002/160] Migrate data and bss --- spec | 2 - src/code/z_parameter.c | 689 +++++++++++++++++++++++++++++++++++++ tools/disasm/variables.txt | 78 ++--- 3 files changed, 720 insertions(+), 49 deletions(-) diff --git a/spec b/spec index 7e142f3bb..89c69dd5e 100644 --- a/spec +++ b/spec @@ -511,8 +511,6 @@ beginseg include "build/src/code/z_olib.o" pad_text include "build/src/code/z_parameter.o" - include "build/data/code/z_parameter.data.o" - include "build/data/code/z_parameter.bss.o" include "build/src/code/z_path.o" include "build/src/code/z_pause.o" include "build/src/code/z_player_lib.o" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index ec227aaa9..6136a546b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,5 +1,694 @@ #include "global.h" +typedef struct { + /* 0x00 */ u8 scene; + /* 0x01 */ u8 flags1; + /* 0x02 */ u8 flags2; + /* 0x03 */ u8 flags3; +} RestrictionFlags; + +// bss +Input D_801F5850[4]; + +// data +static RestrictionFlags sRestrictionFlags[] = { + { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_1, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_2, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_3, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_4, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_5, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_6, 0x00, 0x00, 0x00 }, + { SCENE_KAKUSIANA, 0x00, 0x00, 0x00 }, + { SCENE_SPOT00, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_9, 0x00, 0x00, 0x00 }, + { SCENE_WITCH_SHOP, 0x10, 0x30, 0xC1 }, + { SCENE_LAST_BS, 0x00, 0x3F, 0x00 }, + { SCENE_HAKASHITA, 0x00, 0x00, 0x00 }, + { SCENE_AYASHIISHOP, 0x10, 0x30, 0xC1 }, + { SCENE_UNSET_E, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_F, 0x00, 0x00, 0x00 }, + { SCENE_OMOYA, 0x00, 0x33, 0x00 }, + { SCENE_BOWLING, 0x10, 0x30, 0xC1 }, + { SCENE_SONCHONOIE, 0x10, 0x30, 0xC1 }, + { SCENE_IKANA, 0x00, 0x00, 0x00 }, + { SCENE_KAIZOKU, 0x00, 0x00, 0x00 }, + { SCENE_MILK_BAR, 0x10, 0x30, 0xC1 }, + { SCENE_INISIE_N, 0x00, 0x00, 0x00 }, + { SCENE_TAKARAYA, 0x10, 0x30, 0xC1 }, + { SCENE_INISIE_R, 0x00, 0x00, 0x00 }, + { SCENE_OKUJOU, 0x00, 0x3F, 0xF0 }, + { SCENE_OPENINGDAN, 0x00, 0x00, 0x00 }, + { SCENE_MITURIN, 0x00, 0x00, 0x00 }, + { SCENE_13HUBUKINOMITI, 0x00, 0x00, 0x00 }, + { SCENE_CASTLE, 0x00, 0x00, 0x00 }, + { SCENE_DEKUTES, 0x10, 0x30, 0x01 }, + { SCENE_MITURIN_BS, 0x00, 0x00, 0x00 }, + { SCENE_SYATEKI_MIZU, 0x10, 0x30, 0xC1 }, + { SCENE_HAKUGIN, 0x00, 0x00, 0x00 }, + { SCENE_ROMANYMAE, 0x00, 0x00, 0x00 }, + { SCENE_PIRATE, 0x00, 0x00, 0x00 }, + { SCENE_SYATEKI_MORI, 0x10, 0x30, 0xC1 }, + { SCENE_SINKAI, 0x00, 0x00, 0x00 }, + { SCENE_YOUSEI_IZUMI, 0x00, 0x00, 0x00 }, + { SCENE_KINSTA1, 0x00, 0x30, 0x00 }, + { SCENE_KINDAN2, 0x00, 0x30, 0x00 }, + { SCENE_TENMON_DAI, 0x00, 0x03, 0xC0 }, + { SCENE_LAST_DEKU, 0x00, 0x3F, 0x00 }, + { SCENE_22DEKUCITY, 0x00, 0x00, 0x00 }, + { SCENE_KAJIYA, 0x00, 0x30, 0xC0 }, + { SCENE_00KEIKOKU, 0x00, 0x00, 0x00 }, + { SCENE_POSTHOUSE, 0x00, 0x30, 0xC1 }, + { SCENE_LABO, 0x00, 0x30, 0xC1 }, + { SCENE_DANPEI2TEST, 0x00, 0x30, 0x00 }, + { SCENE_UNSET_31, 0x00, 0x00, 0x00 }, + { SCENE_16GORON_HOUSE, 0x00, 0x00, 0x00 }, + { SCENE_33ZORACITY, 0x00, 0x00, 0xC0 }, + { SCENE_8ITEMSHOP, 0x00, 0x30, 0xC1 }, + { SCENE_F01, 0x00, 0x00, 0x00 }, + { SCENE_INISIE_BS, 0x00, 0x00, 0x00 }, + { SCENE_30GYOSON, 0x00, 0x00, 0x00 }, + { SCENE_31MISAKI, 0x00, 0x00, 0x00 }, + { SCENE_TAKARAKUJI, 0x00, 0x30, 0xC1 }, + { SCENE_UNSET_3A, 0x00, 0x00, 0x00 }, + { SCENE_TORIDE, 0x00, 0x00, 0x00 }, + { SCENE_FISHERMAN, 0x00, 0x30, 0xC1 }, + { SCENE_GORONSHOP, 0x10, 0x30, 0xC1 }, + { SCENE_DEKU_KING, 0x00, 0x30, 0xC0 }, + { SCENE_LAST_GORON, 0x00, 0x3F, 0x00 }, + { SCENE_24KEMONOMITI, 0x00, 0x00, 0x00 }, + { SCENE_F01_B, 0x00, 0x30, 0x00 }, + { SCENE_F01C, 0x00, 0x30, 0x00 }, + { SCENE_BOTI, 0x00, 0x00, 0x00 }, + { SCENE_HAKUGIN_BS, 0x00, 0x00, 0x00 }, + { SCENE_20SICHITAI, 0x00, 0x00, 0x00 }, + { SCENE_21MITURINMAE, 0x00, 0x00, 0x00 }, + { SCENE_LAST_ZORA, 0x00, 0x3F, 0x00 }, + { SCENE_11GORONNOSATO2, 0x00, 0x00, 0x00 }, + { SCENE_SEA, 0x00, 0x00, 0x00 }, + { SCENE_35TAKI, 0x00, 0x00, 0x00 }, + { SCENE_REDEAD, 0x00, 0x00, 0x00 }, + { SCENE_BANDROOM, 0x00, 0x30, 0xC0 }, + { SCENE_11GORONNOSATO, 0x00, 0x00, 0x00 }, + { SCENE_GORON_HAKA, 0x00, 0x00, 0x00 }, + { SCENE_SECOM, 0x00, 0x3C, 0xC0 }, + { SCENE_10YUKIYAMANOMURA, 0x00, 0x00, 0x00 }, + { SCENE_TOUGITES, 0x00, 0x3F, 0xF0 }, + { SCENE_DANPEI, 0x00, 0x30, 0x00 }, + { SCENE_IKANAMAE, 0x00, 0x00, 0x00 }, + { SCENE_DOUJOU, 0x00, 0x30, 0xC1 }, + { SCENE_MUSICHOUSE, 0x00, 0x30, 0xC0 }, + { SCENE_IKNINSIDE, 0x00, 0x3F, 0xC0 }, + { SCENE_MAP_SHOP, 0x10, 0x30, 0xC1 }, + { SCENE_F40, 0x00, 0x00, 0x00 }, + { SCENE_F41, 0x00, 0x00, 0x00 }, + { SCENE_10YUKIYAMANOMURA2, 0x00, 0x00, 0x00 }, + { SCENE_14YUKIDAMANOMITI, 0x00, 0x00, 0x00 }, + { SCENE_12HAKUGINMAE, 0x00, 0x00, 0x00 }, + { SCENE_17SETUGEN, 0x00, 0x00, 0x00 }, + { SCENE_17SETUGEN2, 0x00, 0x00, 0x00 }, + { SCENE_SEA_BS, 0x00, 0x00, 0x00 }, + { SCENE_RANDOM, 0x00, 0x00, 0x00 }, + { SCENE_YADOYA, 0x10, 0x30, 0xC1 }, + { SCENE_KONPEKI_ENT, 0x00, 0x00, 0x00 }, + { SCENE_INSIDETOWER, 0x00, 0xFF, 0xC0 }, + { SCENE_26SARUNOMORI, 0x00, 0x30, 0x00 }, + { SCENE_LOST_WOODS, 0x00, 0x00, 0x00 }, + { SCENE_LAST_LINK, 0x00, 0x3F, 0x00 }, + { SCENE_SOUGEN, 0x00, 0x3F, 0x00 }, + { SCENE_BOMYA, 0x10, 0x30, 0xC1 }, + { SCENE_KYOJINNOMA, 0x00, 0x00, 0x00 }, + { SCENE_KOEPONARACE, 0x00, 0x30, 0x00 }, + { SCENE_GORONRACE, 0x00, 0x00, 0x00 }, + { SCENE_TOWN, 0x00, 0x00, 0x00 }, + { SCENE_ICHIBA, 0x00, 0x00, 0x00 }, + { SCENE_BACKTOWN, 0x00, 0x00, 0x00 }, + { SCENE_CLOCKTOWER, 0x00, 0x00, 0x00 }, + { SCENE_ALLEY, 0x00, 0x00, 0x00 }, +}; + +s32 D_801BF884[] = { + 0x00000000, +}; + +s32 D_801BF888[] = { + 0x00000000, +}; + +s16 D_801BF88C = 0; + +s32 D_801BF890[] = { + 0x00000000, + 0x00000000, +}; + +s32 D_801BF898[] = { + 0x00000000, +}; + +s32 D_801BF89C[] = { + 0x00000000, +}; + +s32 D_801BF8A0[] = { + 0x00FF0000, +}; + +s32 D_801BF8A4[] = { + 0x00FF0000, +}; + +s32 D_801BF8A8[] = { + 0x00FF0000, +}; + +s32 D_801BF8AC[] = { + 0x00020000, +}; + +s32 D_801BF8B0[] = { + 0x00010000, 0x00080008, 0x00090009, 0x00060006, 0x00060006, 0x00010001, + 0x00010007, 0x00070007, 0x00070008, 0x00080009, 0x00090000, +}; + +s32 D_801BF8DC[] = { + 0x00000000, +}; + +s16 D_801BF8E0 = 0; + +s16 D_801BF8E4 = 0; + +s32 D_801BF8E8[] = { + 0x00000000, + 0x00000000, +}; + +s32 D_801BF8F0[] = { + 0x00000000, +}; + +s32 D_801BF8F4[] = { + 0x00000000, +}; + +s32 D_801BF8F8[] = { + 0x00000000, +}; + +s32 D_801BF8FC[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +s32 D_801BF930[] = { + 0x00000000, +}; + +s32 D_801BF934[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; + +s32 D_801BF968[] = { + 0x00000000, +}; + +s32 D_801BF96C[] = { + 0x00000000, +}; + +s32 D_801BF970[] = { + 0x00630000, +}; + +s32 D_801BF974[] = { + 0x00000000, +}; + +s32 D_801BF978[] = { + 0x000A0000, +}; + +s32 D_801BF97C[] = { + 0x00FF0000, +}; + +s32 D_801BF980[] = { + 0x3F800000, // f32: 1.0 + 0x00000000, +}; + +s32 D_801BF988[] = { + 0xE7000000, + 0x00000000, + 0xD9C0F9FA, + 0x00000000, +}; + +s32 D_801BF998[] = { + 0xEF802C30, 0x00504340, 0xFCFFFFFF, 0xFFFDF6FB, 0xDF000000, 0x00000000, +}; + +s32 D_801BF9B0[] = { + 0x00000000, +}; + +s32 D_801BF9B4[] = { + 0x42C80000, // f32: 100.0 + 0x42DA0000, // f32: 109.0 +}; + +s32 D_801BF9BC[] = { + 0x022602A8, + 0x02A802A8, +}; + +s32 D_801BF9C4[] = { + 0x009E009B, +}; + +s32 D_801BF9C8[] = { + 0x00170016, +}; + +s32 D_801BF9CC[] = { + 0xC3BE0000, // f32: -380.0 + 0xC3AF0000, // f32: -350.0 +}; + +s32 D_801BF9D4[] = { + 0x00A700E3, +}; + +s32 D_801BF9D8[] = { + 0x00F9010F, +}; + +s32 D_801BF9DC[] = { + 0x00110012, +}; + +s32 D_801BF9E0[] = { + 0x00220012, +}; + +s32 D_801BF9E4[] = { + 0x023F026C, +}; + +s32 D_801BF9E8[] = { + 0x026C026C, +}; + +s32 D_801BF9EC[] = { + 0x00000000, +}; + +s32 D_801BF9F0[] = { + 0x00000000, +}; + +s32 D_801BF9F4[] = { + 0x00000000, +}; + +s32 D_801BF9F8[] = { + 0x00000000, +}; + +s32 D_801BF9FC[] = { + 0x000F0000, +}; + +s32 D_801BFA00[] = { + 0x00000000, +}; + +s32 D_801BFA04[] = { + 0xFFF2FFF2, 0xFFE8FFF8, 0xFFF4FFF4, 0xFFF9FFF8, 0xFFF9FFF8, 0xFFF40000, +}; + +s32 D_801BFA1C[] = { + 0x001C001C, 0x00300010, 0x00180018, 0x00100010, 0x00100010, 0x00180000, +}; + +s32 D_801BFA34[] = { + 0x000E000E, 0x00080018, 0xFFAEFFAE, 0x003A003B, 0x003A003B, 0x00200000, +}; + +s32 D_801BFA4C[] = { + 0x001C001C, 0x00100010, 0x00180018, 0x000B000B, 0x000B000B, 0x00200000, +}; + +s32 D_801BFA64[] = { + 0xFFC3FFD3, + 0x001D0068, + 0xFF8BFFD6, + 0x00200037, +}; + +s32 D_801BFA74[] = { + 0x0001FFBA, + 0xFF9DFFBA, + 0x00470065, + 0x00480001, +}; + +// Possibly? +// s32 D_801BFA84 = 0; +// s16 D_801BFA88 = {...}; +s32 D_801BFA84[] = { + 0x00000000, 0x0005000A, 0x0014001E, 0x000A001E, 0x00280032, 0x0014000A, + 0x00010005, 0x00010005, 0x000A0014, 0x00320064, 0x00C80000, +}; + +s32 D_801BFAB0[] = { + 0x09000000, + 0x09000180, +}; + +s32 D_801BFAB8[] = { + 0x00FF00FF, + 0x00FF0096, + 0x00960096, +}; + +s32 D_801BFAC4[] = { + 0x00000001, + 0x00010000, +}; + +s32 D_801BFACC[] = { + 0x00020001, + 0x00020001, +}; + +s32 D_801BFAD4[] = { + 0x02002AE0, 0x02002AE0, 0x02002BA0, 0x02002C60, 0x02002D20, 0x00820088, 0x00880088, 0x00880000, +}; + +s32 D_801BFAF4[] = { + 0x001D001B, +}; + +s32 D_801BFAF8[] = { + 0x001B001B, +}; + +s32 D_801BFAFC[] = { + 0x001E0018, + 0x00180018, +}; + +s32 D_801BFB04[] = { + 0x00A200E4, + 0x00FA0110, +}; + +s32 D_801BFB0C[] = { + 0x00230023, + 0x00330023, +}; + +s32 D_801BFB14[] = { + 0x00FF0064, + 0x00FF0000, +}; + +s32 D_801BFB1C[] = { + 0x00000064, + 0x00FF0000, +}; + +s32 D_801BFB24[] = { + 0x000000FF, + 0x00640000, +}; + +s32 D_801BFB2C[] = { + 0x00FF0000, +}; + +s32 D_801BFB30[] = { + 0x00000000, +}; + +s32 D_801BFB34[] = { + 0x00000000, +}; + +s32 D_801BFB38[] = { + 0x00000AAA, 0x15552000, 0x2AAA3555, 0x40004AAA, 0x55556000, 0x6AAA7555, 0x80008AAA, + 0x9555A000, 0xAAAAB555, 0xC000CAAA, 0xD555E000, 0xEAAAF555, 0xFFFF0000, +}; + +s32 D_801BFB6C[] = { + 0x02006440, 0x02006498, 0x020064F0, 0x02006548, 0x020065A0, 0x020065F8, 0x02006650, 0x020066A8, + 0x02006700, 0x02006758, 0x020067B0, 0x02006808, 0x02006440, 0x02006498, 0x020064F0, 0x02006548, + 0x020065A0, 0x020065F8, 0x02006650, 0x020066A8, 0x02006700, 0x02006758, 0x020067B0, 0x02006808, +}; + +s32 D_801BFBCC[] = { + 0x00000000, +}; + +s32 D_801BFBD0[] = { + 0x009B0000, +}; + +s32 D_801BFBD4[] = { + 0x00FF0000, +}; + +s32 D_801BFBD8[] = { + 0x00000000, +}; + +s32 D_801BFBDC[] = { + 0x00000000, +}; + +s32 D_801BFBE0[] = { + 0x00000000, +}; + +s32 D_801BFBE4[] = { + 0x000F0000, +}; + +s32 D_801BFBE8[] = { + 0x00000000, +}; + +s32 D_801BFBEC[] = { + 0x00640000, +}; + +s32 D_801BFBF0[] = { + 0x00CD009B, +}; + +s32 D_801BFBF4[] = { + 0x00FF00FF, +}; + +s32 D_801BFBF8[] = { + 0x001E0000, +}; + +s32 D_801BFBFC[] = { + 0x001E0000, +}; + +s32 D_801BFC00[] = { + 0x00640000, +}; + +s32 D_801BFC04[] = { + 0x00FF0000, +}; + +s32 D_801BFC08[] = { + 0x00640000, +}; + +s32 D_801BFC0C[] = { + 0x001E0000, +}; + +s32 D_801BFC10[] = { + 0x00640000, +}; + +s32 D_801BFC14[] = { + 0x02006860, 0x020068A0, 0x020068E0, 0x02006920, 0x02006960, 0x020069A0, + 0x020069E0, 0x02006A20, 0x02006A60, 0x02006AA0, 0x02006AE0, +}; + +s32 D_801BFC40[] = { + 0x007F0088, + 0x00900097, + 0x00A000A8, + 0x00AF00B8, +}; + +s32 D_801BFC50[] = { + 0xC000E000, + 0x00002000, + 0xA0008000, + 0x60004000, +}; + +s32 D_801BFC60[] = { + 0x00FF00FF, +}; + +s32 D_801BFC64[] = { + 0x00FF00FF, + 0x00A50037, +}; + +s32 D_801BFC6C[] = { + 0x004E0036, + 0x001D0005, + 0xFFEEFFD6, + 0xFFBDFFAB, +}; + +s32 D_801BFC7C[] = { + 0x00B400B4, + 0x00B400B4, + 0xFF4CFF4C, + 0xFF4CFF4C, +}; + +s32 D_801BFC8C[] = { + 0x00FF00FF, + 0x00FF00FF, + 0x00A50037, +}; + +s32 D_801BFC98[] = { + 0x004E0036, + 0x001D0005, + 0xFFEEFFD6, + 0xFFBDFFAB, +}; + +s32 D_801BFCA8[] = { + 0xC000E000, + 0x00002000, + 0xA0008000, + 0x60004000, +}; + +s32 D_801BFCB8[] = { + 0x00FF00FF, + 0x00FF00FF, + 0x00A50037, +}; + +s32 D_801BFCC4[] = { + 0x02007B28, 0x02007D38, 0x02007F48, 0x02008158, 0x02007D38, 0x02008368, 0x02008578, 0x02008788, +}; + +s32 D_801BFCE4[] = { + 0x00000000, +}; + +s32 D_801BFCE8[] = { + 0x00000000, +}; + +s32 D_801BFCEC[] = { + 0x00000000, +}; + +s32 D_801BFCF0[] = { + 0x00000000, +}; + +s32 D_801BFCF4[] = { + 0x00000000, +}; + +s32 D_801BFCF8[] = { + 0x00630000, +}; + +s32 D_801BFCFC[] = { + 0x00100019, + 0x0022002A, + 0x0033003C, + 0x0044004D, +}; + +s32 D_801BFD0C[] = { + 0x00090009, + 0x00080009, + 0x00090008, + 0x00090009, +}; + +s32 D_801BFD1C[] = { + 0x00010000, + 0x00000000, +}; + +s32 D_801BFD24[] = { + 0x00020003, + 0x00030000, +}; + +s32 D_801BFD2C[] = { + 0x00C800FF, 0x006400AA, 0x00AA00FF, 0x00FF0069, 0x00690000, +}; + +s32 D_801BFD40[] = { + 0x00000050, 0x0000000A, 0x000A0050, 0x0028000A, 0x00000000, +}; + +s32 D_801BFD54[] = { + 0x02007828, + 0x02007528, + 0x02007228, + 0x02006D28, +}; + +s32 D_801BFD64[] = { + 0x00180018, + 0x00180028, +}; + +s32 D_801BFD6C[] = { + 0x006400FF, 0x006400FF, 0x00FF003C, 0x00FF0064, 0x00000078, 0x00AA00FF, +}; + +s32 D_801BFD84[] = { + 0x07000000, + 0x07012C00, +}; + +s32 D_801BFD8C[] = { + 0x07025800, + 0x07025A00, +}; + +s32 D_801BFD94[] = { + 0x00000000, +}; + +s32 D_801BFD98[] = { + 0x00000000, + 0x00000000, +}; + +s32 D_801BFDA0[] = { + 0x01DE01FF, 0x025D01DB, 0x01DA01FE, 0x0219024C, 0x0221025E, 0x020001FD, + 0x025C025F, 0x01DC024E, 0x025201DD, 0x01D90214, 0x01E401E1, 0x01E201E3, +}; + #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CB80.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CD98.s") diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index d5d2eb0e7..5fd381bac 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1063,8 +1063,7 @@ 0x801BF5B0:("D_801BF5B0","UNK_TYPE2","",0x2), 0x801BF5C0:("D_801BF5C0","UNK_PTR","",0x4), 0x801BF68C:("D_801BF68C","UNK_TYPE1","",0x1), - 0x801BF6C0:("D_801BF6C0","UNK_TYPE1","",0x1), - 0x801BF79E:("D_801BF79E","UNK_TYPE1","",0x1), + 0x801BF6C0:("sRestrictionFlags","RestrictionFlags","[113]",0x1c4), 0x801BF884:("D_801BF884","UNK_TYPE2","",0x2), 0x801BF888:("D_801BF888","UNK_TYPE2","",0x2), 0x801BF88C:("D_801BF88C","UNK_TYPE2","",0x2), @@ -1086,15 +1085,12 @@ 0x801BF8FC:("D_801BF8FC","UNK_TYPE4","",0x4), 0x801BF930:("D_801BF930","UNK_TYPE4","",0x4), 0x801BF934:("D_801BF934","UNK_TYPE4","",0x4), - 0x801BF968:("D_801BF968","UNK_TYPE1","",0x1), - 0x801BF96A:("D_801BF96A","UNK_TYPE1","",0x1), - 0x801BF96C:("D_801BF96C","UNK_TYPE1","",0x1), - 0x801BF96E:("D_801BF96E","UNK_TYPE1","",0x1), - 0x801BF970:("D_801BF970","UNK_TYPE2","",0x2), - 0x801BF972:("D_801BF972","UNK_TYPE1","",0x1), - 0x801BF974:("D_801BF974","UNK_TYPE2","",0x2), - 0x801BF978:("D_801BF978","UNK_TYPE2","",0x2), - 0x801BF97C:("D_801BF97C","UNK_TYPE2","",0x2), + 0x801BF968:("D_801BF968","UNK_TYPE4","",0x4), + 0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4), + 0x801BF970:("D_801BF970","UNK_TYPE4","",0x4), + 0x801BF974:("D_801BF974","UNK_TYPE4","",0x4), + 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), + 0x801BF97C:("D_801BF97C","UNK_TYPE4","",0x4), 0x801BF980:("D_801BF980","UNK_TYPE4","",0x4), 0x801BF988:("D_801BF988","UNK_TYPE1","",0x1), 0x801BF998:("D_801BF998","UNK_TYPE1","",0x1), @@ -1104,19 +1100,13 @@ 0x801BF9C4:("D_801BF9C4","UNK_TYPE1","",0x1), 0x801BF9C8:("D_801BF9C8","UNK_TYPE1","",0x1), 0x801BF9CC:("D_801BF9CC","UNK_TYPE1","",0x1), - 0x801BF9D4:("D_801BF9D4","UNK_TYPE2","",0x2), - 0x801BF9D6:("D_801BF9D6","UNK_TYPE2","",0x2), - 0x801BF9D8:("D_801BF9D8","UNK_TYPE2","",0x2), - 0x801BF9DA:("D_801BF9DA","UNK_TYPE2","",0x2), - 0x801BF9DC:("D_801BF9DC","UNK_TYPE2","",0x2), - 0x801BF9DE:("D_801BF9DE","UNK_TYPE2","",0x2), - 0x801BF9E0:("D_801BF9E0","UNK_TYPE2","",0x2), - 0x801BF9E2:("D_801BF9E2","UNK_TYPE2","",0x2), - 0x801BF9E4:("D_801BF9E4","UNK_TYPE2","",0x2), - 0x801BF9E6:("D_801BF9E6","UNK_TYPE2","",0x2), - 0x801BF9E8:("D_801BF9E8","UNK_TYPE2","",0x2), - 0x801BF9EA:("D_801BF9EA","UNK_TYPE2","",0x2), - 0x801BF9EC:("D_801BF9EC","UNK_TYPE2","",0x2), + 0x801BF9D4:("D_801BF9D4","UNK_TYPE4","",0x4), + 0x801BF9D8:("D_801BF9D8","UNK_TYPE4","",0x4), + 0x801BF9DC:("D_801BF9DC","UNK_TYPE4","",0x4), + 0x801BF9E0:("D_801BF9E0","UNK_TYPE4","",0x4), + 0x801BF9E4:("D_801BF9E4","UNK_TYPE4","",0x4), + 0x801BF9E8:("D_801BF9E8","UNK_TYPE4","",0x4), + 0x801BF9EC:("D_801BF9EC","UNK_TYPE4","",0x4), 0x801BF9F0:("D_801BF9F0","UNK_TYPE2","",0x2), 0x801BF9F4:("D_801BF9F4","UNK_TYPE2","",0x2), 0x801BF9F8:("D_801BF9F8","UNK_TYPE2","",0x2), @@ -1134,11 +1124,9 @@ 0x801BFAC4:("D_801BFAC4","UNK_TYPE1","",0x1), 0x801BFACC:("D_801BFACC","UNK_TYPE1","",0x1), 0x801BFAD4:("D_801BFAD4","UNK_TYPE1","",0x1), - 0x801BFAF4:("D_801BFAF4","UNK_TYPE2","",0x2), - 0x801BFAF6:("D_801BFAF6","UNK_TYPE2","",0x2), - 0x801BFAF8:("D_801BFAF8","UNK_TYPE2","",0x2), - 0x801BFAFA:("D_801BFAFA","UNK_TYPE2","",0x2), - 0x801BFAFC:("D_801BFAFC","UNK_TYPE1","",0x1), + 0x801BFAF4:("D_801BFAF4","UNK_TYPE4","",0x4), + 0x801BFAF8:("D_801BFAF8","UNK_TYPE4","",0x4), + 0x801BFAFC:("D_801BFAFC","UNK_TYPE4","",0x4), 0x801BFB04:("D_801BFB04","UNK_TYPE1","",0x1), 0x801BFB0C:("D_801BFB0C","UNK_TYPE1","",0x1), 0x801BFB14:("D_801BFB14","UNK_TYPE1","",0x1), @@ -1170,27 +1158,23 @@ 0x801BFC14:("D_801BFC14","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), 0x801BFC50:("D_801BFC50","UNK_TYPE2","",0x2), - 0x801BFC60:("D_801BFC60","UNK_TYPE2","",0x2), - 0x801BFC62:("D_801BFC62","UNK_TYPE2","",0x2), - 0x801BFC64:("D_801BFC64","UNK_TYPE2","",0x2), - 0x801BFC6C:("D_801BFC6C","UNK_TYPE2","",0x2), + 0x801BFC60:("D_801BFC60","UNK_TYPE4","",0x4), + 0x801BFC64:("D_801BFC64","UNK_TYPE4","",0x4), + 0x801BFC6C:("D_801BFC6C","UNK_TYPE4","",0x4), 0x801BFC7C:("D_801BFC7C","UNK_TYPE2","",0x2), 0x801BFC8C:("D_801BFC8C","UNK_TYPE1","",0x1), 0x801BFC98:("D_801BFC98","UNK_TYPE2","",0x2), 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), 0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1), 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), - 0x801BFCE4:("D_801BFCE4","UNK_TYPE2","",0x2), - 0x801BFCE8:("D_801BFCE8","UNK_TYPE2","",0x2), - 0x801BFCEA:("D_801BFCEA","UNK_TYPE2","",0x2), - 0x801BFCEC:("D_801BFCEC","UNK_TYPE2","",0x2), - 0x801BFCEE:("D_801BFCEE","UNK_TYPE2","",0x2), - 0x801BFCF0:("D_801BFCF0","UNK_TYPE2","",0x2), - 0x801BFCF2:("D_801BFCF2","UNK_TYPE2","",0x2), - 0x801BFCF4:("D_801BFCF4","UNK_TYPE2","",0x2), - 0x801BFCF8:("D_801BFCF8","UNK_TYPE2","",0x2), - 0x801BFCFC:("D_801BFCFC","UNK_TYPE2","",0x2), - 0x801BFD0C:("D_801BFD0C","UNK_TYPE2","",0x2), + 0x801BFCE4:("D_801BFCE4","UNK_TYPE4","",0x4), + 0x801BFCE8:("D_801BFCE8","UNK_TYPE4","",0x4), + 0x801BFCEC:("D_801BFCEC","UNK_TYPE4","",0x4), + 0x801BFCF0:("D_801BFCF0","UNK_TYPE4","",0x4), + 0x801BFCF4:("D_801BFCF4","UNK_TYPE4","",0x4), + 0x801BFCF8:("D_801BFCF8","UNK_TYPE4","",0x4), + 0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4), + 0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4), 0x801BFD1C:("D_801BFD1C","UNK_TYPE1","",0x1), 0x801BFD24:("D_801BFD24","UNK_TYPE1","",0x1), 0x801BFD2C:("D_801BFD2C","UNK_TYPE1","",0x1), @@ -1200,9 +1184,9 @@ 0x801BFD6C:("D_801BFD6C","UNK_TYPE2","",0x2), 0x801BFD84:("D_801BFD84","UNK_TYPE1","",0x1), 0x801BFD8C:("D_801BFD8C","UNK_TYPE1","",0x1), - 0x801BFD94:("D_801BFD94","UNK_TYPE1","",0x1), - 0x801BFD98:("D_801BFD98","UNK_TYPE2","",0x2), - 0x801BFD9E:("D_801BFD9E","UNK_TYPE1","",0x1), + 0x801BFD94:("D_801BFD94","UNK_TYPE4","",0x4), + 0x801BFD98:("D_801BFD98","UNK_TYPE4","[2]",0x8), + 0x801BFDA0:("D_801BFDA0","UNK_TYPE1","",0x1), 0x801BFDD0:("D_801BFDD0","UNK_TYPE1","",0x1), 0x801BFDE8:("D_801BFDE8","UNK_TYPE1","",0x1), 0x801BFE00:("D_801BFE00","UNK_TYPE1","",0x1), From affc00ae74ab1af6c89a768c8e94c7c5d5519bbf Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 23 Dec 2021 03:07:18 +1100 Subject: [PATCH 003/160] Copy over previous WIP --- include/functions.h | 12 +- include/z64.h | 2 +- src/code/z_parameter.c | 1057 ++++++++++++++++++++- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 2 +- tools/disasm/functions.txt | 12 +- tools/sizes/code_functions.csv | 12 +- 6 files changed, 1044 insertions(+), 53 deletions(-) diff --git a/include/functions.h b/include/functions.h index 9e4809bb8..7f4312921 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2043,12 +2043,12 @@ Vec3f* OLib_Vec3fDiffDegF(Vec3f* dest, Vec3f* a, Vec3f* b); Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b); void OLib_DbCameraVec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); -// void func_8010CB80(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void func_8010CD98(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_TextureRGBA16(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_TextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); // void func_8010CFBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); // void func_8010D2D4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11); // void func_8010D480(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16); -// void func_8010D7D0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_TextureI8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); // void func_8010D9F4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); // void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); // void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); @@ -2068,7 +2068,7 @@ void Interface_ChangeAlpha(u16 param_1); // void func_80111CB4(void); // void func_801129E4(void); void func_80112AFC(GlobalContext* globalCtx); -void func_80112B40(GlobalContext* globalCtx, s32 arg1); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1); // void func_80112BE4(void); // void func_80112C0C(void); u32 Item_Give(GlobalContext* globalCtx, u8 param_2); @@ -2120,11 +2120,11 @@ void func_8011C808(GlobalContext* globalCtx); // void func_8011CA64(void); // void func_8011E3B4(void); // void func_8011E730(void); -// void func_8011F0E0(UNK_TYPE4 ctxt); +// void Interface_Draw(UNK_TYPE4 ctxt); // void func_80120F90(void); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); // void func_80121064(void); -// void func_801210E0(void); +// void Interface_Update(void); // void func_80121F94(void); void func_80121FC4(GlobalContext* globalCtx); Path* Path_GetByIndex(GlobalContext* globalCtx, s16 index, s16 max); diff --git a/include/z64.h b/include/z64.h index f094c7cfc..ff023590e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -679,7 +679,7 @@ typedef struct { /* 0x30A */ s16 unk_30A; /* 0x30C */ s16 unk_30C; struct { - /* 0x30E */ u8 unk_30E; // "h_gauge" + /* 0x30E */ u8 hGauge; /* 0x30F */ u8 bButton; /* 0x310 */ u8 aButton; /* 0x311 */ u8 tradeItems; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6136a546b..db40a9a4b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -184,13 +184,7 @@ s32 D_801BF8E8[] = { 0x00000000, }; -s32 D_801BF8F0[] = { - 0x00000000, -}; - -s32 D_801BF8F4[] = { - 0x00000000, -}; +OSTime D_801BF8F0 = 0; s32 D_801BF8F8[] = { 0x00000000, @@ -689,61 +683,1055 @@ s32 D_801BFDA0[] = { 0x025C025F, 0x01DC024E, 0x025201DD, 0x01D90214, 0x01E401E1, 0x01E201E3, }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CB80.s") +Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CD98.s") + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CFBC.s") + return displayListHead; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010D2D4.s") +Gfx* Gfx_TextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010D480.s") + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010D7D0.s") + return displayListHead; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010D9F4.s") +Gfx* func_8010CFBC(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { + s16 temp_var = a; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010DC58.s") + if (a > 100) { + temp_var = 100; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010DE38.s") + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + + return displayListHead; +} + +Gfx* func_8010D2D4(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, + s16 r, s16 g, s16 b, s16 a) { + s16 temp_var = a; + + if (a > 100) { + temp_var = 100; + } + + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + + return displayListHead; +} + +Gfx* func_8010D480(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 argE, s32 argF) { + s16 temp_var = a; + + if (a > 100) { + temp_var = 100; + } + + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, argE, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, argF, 0, dsdx, dtdy); + + gDPPipeSync(displayListHead++); + gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, argF, 0, dsdx, dtdy); + + return displayListHead; +} + +Gfx* Gfx_TextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + + return displayListHead; +} + +Gfx* func_8010D9F4(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, cms, + G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, s, 0, dsdx, dtdy); + + return displayListHead; +} + +Gfx* func_8010DC58(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 i) { + gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + gSP1Quadrangle(displayListHead++, i, i + 2, i + 3, i + 1, 0); + + return displayListHead; +} + +Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 i) { + gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSP1Quadrangle(displayListHead++, i, i + 2, i + 3, i + 1, 0); + + return displayListHead; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E028.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E968.s") +void func_8010E968(s32 arg0) { + s32 btnAPressed; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E9F0.s") + func_80175E68(&D_801F5850[0], 0); + btnAPressed = CHECK_BTN_ALL(D_801F5850[0].cur.button, BTN_A); + if ((btnAPressed != D_801BFA84[0]) && btnAPressed) { + gSaveContext.unk_3DC8 = osGetTime(); + gSaveContext.unk_3DD0[0] = 15; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EA9C.s") + D_801BFA84[0] = btnAPressed; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EB50.s") +void func_8010E9F0(s16 arg0, s16 arg1) { + gSaveContext.timerX[arg0] = 115; + gSaveContext.timerY[arg0] = 80; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EBA0.s") + D_801BF8E0 = 0; + + gSaveContext.unk_3DE0[arg0] = arg1 * 100; + gSaveContext.unk_3E18[arg0] = gSaveContext.unk_3DE0[arg0]; + + if (gSaveContext.unk_3DE0[arg0] != 0) { + gSaveContext.unk_3DD7[arg0] = 0; + } else { + gSaveContext.unk_3DD7[arg0] = 1; + } + + gSaveContext.unk_3DD0[arg0] = 1; +} + +void func_8010EA9C(s16 arg0, s16 arg1) { + gSaveContext.timerX[0] = 115; + gSaveContext.timerY[0] = 80; + + D_801BF8E4 = arg1; + + gSaveContext.unk_3DE0[0] = arg0 * 100; + gSaveContext.unk_3E18[0] = gSaveContext.unk_3DE0[0]; + + if (gSaveContext.unk_3DE0[0] != 0) { + gSaveContext.unk_3DD7[0] = 0; + } else { + gSaveContext.unk_3DD7[0] = 1; + } + gSaveContext.unk_3DD0[0] = 13; + + gSaveContext.unk_3E88[0] = 0; + gSaveContext.unk_3EC0[0] = 0; +} + +void func_8010EB50(s32 arg0) { + if (gSaveContext.unk_3DD0[6] != 0) { + // Goron race started + if (gSaveContext.eventInf[1] & 1) { + gSaveContext.unk_3DE0[6] = 239; + } else { + gSaveContext.unk_3DE0[6] = 1; + } + } +} + +void func_8010EBA0(s16 arg0, s16 arg1) { + gSaveContext.unk_101A[arg1] = 1; + gSaveContext.unk_1080[arg1] = arg0 * 100; + gSaveContext.unk_1050[arg1] = gSaveContext.unk_1080[arg1]; + gSaveContext.unk_1020[arg1] = osGetTime(); + gSaveContext.unk_10B0[arg1] = 0; + D_801BF8F0 = 0; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EE74.s") +void func_8010EE74(GlobalContext* globalCtx, s32 arg1) { + s32 pad; + s16 phi_t0 = arg1 - 1; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_ChangeAlpha.s") + if (phi_t0 < 0 || phi_t0 >= 3) { + phi_t0 = 0; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EF9C.s") + DmaMgr_SendRequest0((u32)globalCtx->interfaceCtx.doActionSegment + 0x780, (u32)_week_staticSegmentRomStart + phi_t0 * 0x510, + 0x510); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010F0D4.s") + for (phi_t0 = 0; phi_t0 < 120; phi_t0++) { + gSaveContext.save.roomInf[phi_t0][0] = gSaveContext.cycleSceneFlags[phi_t0].chest; + gSaveContext.save.roomInf[phi_t0][1] = gSaveContext.cycleSceneFlags[phi_t0].swch0; + gSaveContext.save.roomInf[phi_t0][2] = gSaveContext.cycleSceneFlags[phi_t0].swch1; + gSaveContext.save.roomInf[phi_t0][3] = gSaveContext.cycleSceneFlags[phi_t0].clearedRoom; + gSaveContext.save.roomInf[phi_t0][4] = gSaveContext.cycleSceneFlags[phi_t0].collectible; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010F1A8.s") +void Interface_ChangeAlpha(u16 alphaType) { + if (gSaveContext.unk_3F22 != alphaType) { + gSaveContext.unk_3F22 = alphaType; + gSaveContext.unk_3F20 = alphaType; + gSaveContext.unk_3F24 = 1; + } +} +/** + * Nearly identical to func_80082644 from OoT + */ +void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + if ((gSaveContext.buttonStatus[0] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if (interfaceCtx->bAlpha != 70) { + interfaceCtx->bAlpha = 70; + } + } else { + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + } + + if (gSaveContext.buttonStatus[1] == BTN_DISABLED) { + if (interfaceCtx->cLeftAlpha != 70) { + interfaceCtx->cLeftAlpha = 70; + } + } else { + if (interfaceCtx->cLeftAlpha != 255) { + interfaceCtx->cLeftAlpha = alpha; + } + } + + if (gSaveContext.buttonStatus[2] == BTN_DISABLED) { + if (interfaceCtx->cDownAlpha != 70) { + interfaceCtx->cDownAlpha = 70; + } + } else { + if (interfaceCtx->cDownAlpha != 255) { + interfaceCtx->cDownAlpha = alpha; + } + } + + if (gSaveContext.buttonStatus[3] == BTN_DISABLED) { + if (interfaceCtx->cRightAlpha != 70) { + interfaceCtx->cRightAlpha = 70; + } + } else { + if (interfaceCtx->cRightAlpha != 255) { + interfaceCtx->cRightAlpha = alpha; + } + } + + if (gSaveContext.buttonStatus[4] == BTN_DISABLED) { + if (interfaceCtx->aAlpha != 70) { + interfaceCtx->aAlpha = 70; + } + } else { + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + } +} + +/** + * Identical to func_8008277C from OoT + */ +void func_8010F0D4(GlobalContext* globalCtx, s16 maxAlpha, s16 alpha) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + if (gSaveContext.unk_3F1E != 0) { + func_8010EF9C(globalCtx, alpha); + return; + } + + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } +} + +void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 alpha = 255 - maxAlpha; + + switch (gSaveContext.unk_3F20) { + case 1: + case 2: + case 8: + if (gSaveContext.unk_3F20 == 8) { + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + } else { + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + break; + case 3: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + func_8010F0D4(globalCtx, maxAlpha, alpha + 0); + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 4: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + break; + case 5: + func_8010F0D4(globalCtx, maxAlpha, alpha); + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + break; + case 6: + func_8010F0D4(globalCtx, maxAlpha, alpha); + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (globalCtx->sceneNum == SCENE_SPOT00) { + if (interfaceCtx->minimapAlpha < 170) { + interfaceCtx->minimapAlpha = alpha; + } else { + interfaceCtx->minimapAlpha = 170; + } + } else if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + break; + case 7: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + func_8010EF9C(globalCtx, alpha); + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + break; + case 9: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 10: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + break; + case 11: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 12: + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if ((gSaveContext.buttonStatus[0] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if (interfaceCtx->bAlpha != 70) { + interfaceCtx->bAlpha = 70; + } + } else { + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + } + + if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + break; + case 13: + func_8010F0D4(globalCtx, maxAlpha, alpha); + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 14: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->cLeftAlpha != 255) { + interfaceCtx->cLeftAlpha = alpha; + } + + if (interfaceCtx->cDownAlpha != 255) { + interfaceCtx->cDownAlpha = alpha; + } + + if (interfaceCtx->cRightAlpha != 255) { + interfaceCtx->cRightAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 15: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->cLeftAlpha != 255) { + interfaceCtx->cLeftAlpha = alpha; + } + + if (interfaceCtx->cDownAlpha != 255) { + interfaceCtx->cDownAlpha = alpha; + } + + if (interfaceCtx->cRightAlpha != 255) { + interfaceCtx->cRightAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + + case 16: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->cLeftAlpha != 255) { + interfaceCtx->cLeftAlpha = alpha; + } + + if (interfaceCtx->cDownAlpha != 255) { + interfaceCtx->cDownAlpha = alpha; + } + + if (interfaceCtx->cRightAlpha != 255) { + interfaceCtx->cRightAlpha = alpha; + } + + break; + case 17: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + break; + case 18: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + break; + case 19: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { + interfaceCtx->bAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + case 20: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { + interfaceCtx->aAlpha = maxAlpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + break; + case 21: + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { + interfaceCtx->minimapAlpha = maxAlpha; + } + + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { + interfaceCtx->magicAlpha = maxAlpha; + } + + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { + interfaceCtx->healthAlpha = maxAlpha; + } + + break; + case 22: + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { + interfaceCtx->cLeftAlpha = maxAlpha; + } + + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { + interfaceCtx->cDownAlpha = maxAlpha; + } + + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { + interfaceCtx->cRightAlpha = maxAlpha; + } + + if (interfaceCtx->bAlpha != 255) { + interfaceCtx->bAlpha = alpha; + } + + if (interfaceCtx->aAlpha != 255) { + interfaceCtx->aAlpha = alpha; + } + + if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha; + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha; + } + + break; + } + + if ((globalCtx->roomCtx.currRoom.unk3 == 1) && (interfaceCtx->minimapAlpha >= 255)) { + interfaceCtx->minimapAlpha = 255; + } +} + +// oot func_80083108 #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80110038.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801129E4.s") +void func_801129E4(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 i = 0; + u8 currentScene; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112AF4.s") + do { + currentScene = (u8)globalCtx->sceneNum; + if (sRestrictionFlags[i].scene == currentScene) { + interfaceCtx->restrictions.hGauge = (sRestrictionFlags[i].flags1 & 0xC0) >> 6; + interfaceCtx->restrictions.bButton = (sRestrictionFlags[i].flags1 & 0x30) >> 4; + interfaceCtx->restrictions.aButton = (sRestrictionFlags[i].flags1 & 0x0C) >> 2; + interfaceCtx->restrictions.tradeItems = (sRestrictionFlags[i].flags1 & 0x03) >> 0; + interfaceCtx->restrictions.unk_312 = (sRestrictionFlags[i].flags2 & 0xC0) >> 6; + interfaceCtx->restrictions.unk_313 = (sRestrictionFlags[i].flags2 & 0x30) >> 4; + interfaceCtx->restrictions.unk_314 = (sRestrictionFlags[i].flags2 & 0x0C) >> 2; + interfaceCtx->restrictions.songOfSoaring = (sRestrictionFlags[i].flags2 & 0x03) >> 0; + interfaceCtx->restrictions.songOfStorms = (sRestrictionFlags[i].flags3 & 0xC0) >> 6; + interfaceCtx->restrictions.unk_317 = (sRestrictionFlags[i].flags3 & 0x30) >> 4; + interfaceCtx->restrictions.pictographBox = (sRestrictionFlags[i].flags3 & 0x0C) >> 2; + interfaceCtx->restrictions.all = (sRestrictionFlags[i].flags3 & 0x03) >> 0; + return; + } + i++; + } while (sRestrictionFlags[i].scene != 0xFF); +} +void func_80112AF4(void) { +} + +#ifdef NON_MATCHING +void func_80112AFC(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + gSaveContext.minigameState = 1; + gSaveContext.minigameScore = 0; + gSaveContext.unk_3F3C = 0; + + D_801BF88C = 0; + + interfaceCtx->unk_262 = 0; + interfaceCtx->unk_25E = 0; + interfaceCtx->unk_25C = 0; + interfaceCtx->hbaAmmo = 0x14; +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112AFC.s") +#endif -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112B40.s") +void func_801B45D8(u32 romSegment, u8 arg1, void* dst, u32 size); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112BE4.s") +#define SAVE_GET(field) ((void)0, field) +#define TRANSFORMATION SAVE_GET(gSaveContext.playerForm) +#define TRANSFORMATION_CHECK ((TRANSFORMATION == 4) ? 0 : TRANSFORMATION) + +#ifdef NON_EQUIVALENT +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + u8 phi_v0 = (arg1 == 0) ? gSaveContext.equips.buttonItems[TRANSFORMATION_CHECK][arg1] : gSaveContext.equips.buttonItems[0][arg1]; + + func_80178E3C(_icon_item_static_testSegmentRomStart, phi_v0, (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s") +#endif + +void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { + Interface_LoadItemIcon(globalCtx, arg1); +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") @@ -845,14 +1833,17 @@ s32 D_801BFDA0[] = { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011F0E0.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Draw.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80120F90.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121064.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801210E0.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Update.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121F94.s") +void func_80121F94(void) { + func_8010A410(); + func_80174F9C(func_8010E968, NULL); +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121FC4.s") diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 195e85ace..302ddb50e 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -732,7 +732,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { this->actor.textId = 0xC43; CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; TAKE_EQUIPPED_ITEM(EQUIP_SWORD); - func_80112B40(globalCtx, 0); + Interface_LoadItemIcon(globalCtx, 0); func_80B40C74(globalCtx); break; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 537d9b2ec..ea338f54f 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2083,12 +2083,12 @@ 0x8010C930:("OLib_Vec3fDiffBinAng",), 0x8010C9C8:("OLib_DbCameraVec3fDiff",), 0x8010CAA0:("OLib_DbCameraVec3fSum",), - 0x8010CB80:("func_8010CB80",), - 0x8010CD98:("func_8010CD98",), + 0x8010CB80:("Gfx_TextureRGBA16",), + 0x8010CD98:("Gfx_TextureIA8",), 0x8010CFBC:("func_8010CFBC",), 0x8010D2D4:("func_8010D2D4",), 0x8010D480:("func_8010D480",), - 0x8010D7D0:("func_8010D7D0",), + 0x8010D7D0:("Gfx_TextureI8",), 0x8010D9F4:("func_8010D9F4",), 0x8010DC58:("func_8010DC58",), 0x8010DE38:("func_8010DE38",), @@ -2109,7 +2109,7 @@ 0x801129E4:("func_801129E4",), 0x80112AF4:("func_80112AF4",), 0x80112AFC:("func_80112AFC",), - 0x80112B40:("func_80112B40",), + 0x80112B40:("Interface_LoadItemIcon",), 0x80112BE4:("func_80112BE4",), 0x80112C0C:("func_80112C0C",), 0x80112E80:("Item_Give",), @@ -2161,10 +2161,10 @@ 0x8011CA64:("func_8011CA64",), 0x8011E3B4:("func_8011E3B4",), 0x8011E730:("func_8011E730",), - 0x8011F0E0:("func_8011F0E0",), + 0x8011F0E0:("Interface_Draw",), 0x80120F90:("func_80120F90",), 0x80121064:("func_80121064",), - 0x801210E0:("func_801210E0",), + 0x801210E0:("Interface_Update",), 0x80121F94:("func_80121F94",), 0x80121FC4:("func_80121FC4",), 0x801224E0:("Path_GetByIndex",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 8a0090f84..faeaada60 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1597,12 +1597,12 @@ asm/non_matchings/code/z_olib/OLib_Vec3fDiffDegF.s,OLib_Vec3fDiffDegF,0x8010C8C8 asm/non_matchings/code/z_olib/OLib_Vec3fDiffBinAng.s,OLib_Vec3fDiffBinAng,0x8010C930,0x26 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fDiff.s,OLib_DbCameraVec3fDiff,0x8010C9C8,0x36 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fSum.s,OLib_DbCameraVec3fSum,0x8010CAA0,0x34 -asm/non_matchings/code/z_parameter/func_8010CB80.s,func_8010CB80,0x8010CB80,0x86 -asm/non_matchings/code/z_parameter/func_8010CD98.s,func_8010CD98,0x8010CD98,0x89 +asm/non_matchings/code/z_parameter/Gfx_TextureRGBA16.s,Gfx_TextureRGBA16,0x8010CB80,0x86 +asm/non_matchings/code/z_parameter/Gfx_TextureIA8.s,Gfx_TextureIA8,0x8010CD98,0x89 asm/non_matchings/code/z_parameter/func_8010CFBC.s,func_8010CFBC,0x8010CFBC,0xC6 asm/non_matchings/code/z_parameter/func_8010D2D4.s,func_8010D2D4,0x8010D2D4,0x6B asm/non_matchings/code/z_parameter/func_8010D480.s,func_8010D480,0x8010D480,0xD4 -asm/non_matchings/code/z_parameter/func_8010D7D0.s,func_8010D7D0,0x8010D7D0,0x89 +asm/non_matchings/code/z_parameter/Gfx_TextureI8.s,Gfx_TextureI8,0x8010D7D0,0x89 asm/non_matchings/code/z_parameter/func_8010D9F4.s,func_8010D9F4,0x8010D9F4,0x99 asm/non_matchings/code/z_parameter/func_8010DC58.s,func_8010DC58,0x8010DC58,0x78 asm/non_matchings/code/z_parameter/func_8010DE38.s,func_8010DE38,0x8010DE38,0x7C @@ -1623,7 +1623,7 @@ asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34 asm/non_matchings/code/z_parameter/func_801129E4.s,func_801129E4,0x801129E4,0x44 asm/non_matchings/code/z_parameter/func_80112AF4.s,func_80112AF4,0x80112AF4,0x2 asm/non_matchings/code/z_parameter/func_80112AFC.s,func_80112AFC,0x80112AFC,0x11 -asm/non_matchings/code/z_parameter/func_80112B40.s,func_80112B40,0x80112B40,0x29 +asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112B40,0x29 asm/non_matchings/code/z_parameter/func_80112BE4.s,func_80112BE4,0x80112BE4,0xA asm/non_matchings/code/z_parameter/func_80112C0C.s,func_80112C0C,0x80112C0C,0x9D asm/non_matchings/code/z_parameter/Item_Give.s,Item_Give,0x80112E80,0x553 @@ -1675,10 +1675,10 @@ asm/non_matchings/code/z_parameter/func_8011C898.s,func_8011C898,0x8011C898,0x73 asm/non_matchings/code/z_parameter/func_8011CA64.s,func_8011CA64,0x8011CA64,0x654 asm/non_matchings/code/z_parameter/func_8011E3B4.s,func_8011E3B4,0x8011E3B4,0xDF asm/non_matchings/code/z_parameter/func_8011E730.s,func_8011E730,0x8011E730,0x26C -asm/non_matchings/code/z_parameter/func_8011F0E0.s,func_8011F0E0,0x8011F0E0,0x7AC +asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x7AC asm/non_matchings/code/z_parameter/func_80120F90.s,func_80120F90,0x80120F90,0x35 asm/non_matchings/code/z_parameter/func_80121064.s,func_80121064,0x80121064,0x1F -asm/non_matchings/code/z_parameter/func_801210E0.s,func_801210E0,0x801210E0,0x3AD +asm/non_matchings/code/z_parameter/Interface_Update.s,Interface_Update,0x801210E0,0x3AD asm/non_matchings/code/z_parameter/func_80121F94.s,func_80121F94,0x80121F94,0xC asm/non_matchings/code/z_parameter/func_80121FC4.s,func_80121FC4,0x80121FC4,0x147 asm/non_matchings/code/z_path/func_801224E0.s,func_801224E0,0x801224E0,0x11 From 275dba3b673ac1c0c3acbd0a8f17516aa131e72f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 23 Dec 2021 04:11:32 +1100 Subject: [PATCH 004/160] More progress and docs --- include/functions.h | 14 +- include/variables.h | 2 +- include/z64.h | 46 ++++ src/code/z_parameter.c | 252 +++++++++++++++++- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 14 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 20 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 14 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 20 +- tools/disasm/functions.txt | 6 +- tools/disasm/variables.txt | 2 +- tools/sizes/code_functions.csv | 6 +- 12 files changed, 334 insertions(+), 64 deletions(-) diff --git a/include/functions.h b/include/functions.h index 7f4312921..bc87eb42e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2073,19 +2073,19 @@ void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1); // void func_80112C0C(void); u32 Item_Give(GlobalContext* globalCtx, u8 param_2); // void func_801143CC(void); -UNK_TYPE func_80114978(UNK_TYPE arg0); -void func_801149A0(s32 arg0, s16 arg1); +s32 func_80114978(u8 arg0); +void func_801149A0(s16 arg0, s16 arg1); // void func_80114A9C(void); // void func_80114B84(void); // void func_80114CA0(void); -UNK_TYPE func_80114E90(void); -UNK_TYPE func_80114F2C(UNK_TYPE arg0); +s32 func_80114E90(void); +s32 func_80114F2C(u8 arg0); // void func_80114FD0(void); // void func_80115130(void); // void func_801152B8(void); // void func_801153C8(void); -// void func_80115428(void); -void func_8011552C(GlobalContext* globalCtx, s16 arg1); +// void Interface_LoadActionLabel(void); +void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); // void func_801155B4(void); // void func_80115764(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); @@ -2093,7 +2093,7 @@ s32 func_80115908(GlobalContext* globalCtx, u8 param_2); void func_801159c0(s16 param_1); void func_801159EC(s16 arg0); void func_80115A14(s32 arg0, s16 arg1); -void Parameter_AddMagic(GlobalContext* globalCtx, s16 arg1); +void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); // void func_80116088(void); diff --git a/include/variables.h b/include/variables.h index 35277bb80..d6754856f 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1107,7 +1107,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BFA64; // extern UNK_TYPE2 D_801BFA74; // extern UNK_TYPE4 D_801BFA84; -// extern UNK_TYPE1 D_801BFAB0; +// extern UNK_TYPE1 sDoActionTextures; // extern UNK_TYPE1 D_801BFAB8; // extern UNK_TYPE1 D_801BFAC4; // extern UNK_TYPE1 D_801BFACC; diff --git a/include/z64.h b/include/z64.h index ff023590e..4adbf8733 100644 --- a/include/z64.h +++ b/include/z64.h @@ -602,6 +602,52 @@ typedef struct { /* 0x2CA */ s16 unk_2CA; } PauseContext; // size = 0x2D0 +typedef enum { + /* 0x00 */ DO_ACTION_UNK00, + /* 0x01 */ DO_ACTION_UNK01, + /* 0x02 */ DO_ACTION_UNK02, + /* 0x03 */ DO_ACTION_UNK03, + /* 0x04 */ DO_ACTION_UNK04, + /* 0x05 */ DO_ACTION_UNK05, + /* 0x06 */ DO_ACTION_DECIDE, + /* 0x07 */ DO_ACTION_UNK07, + /* 0x08 */ DO_ACTION_UNK08, + /* 0x09 */ DO_ACTION_UNK09, + /* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value + /* 0x0B */ DO_ACTION_UNK0B, + /* 0x0C */ DO_ACTION_UNK0C, + /* 0x0D */ DO_ACTION_UNK0D, + /* 0x0E */ DO_ACTION_UNK0E, + /* 0x0F */ DO_ACTION_UNK0F, + /* 0x10 */ DO_ACTION_NEXT, + /* 0x11 */ DO_ACTION_UNK11, + /* 0x12 */ DO_ACTION_UNK12, + /* 0x13 */ DO_ACTION_UNK13, + /* 0x14 */ DO_ACTION_UNK14, + /* 0x15 */ DO_ACTION_UNK15, + /* 0x16 */ DO_ACTION_UNK16, + /* 0x17 */ DO_ACTION_UNK17, + /* 0x18 */ DO_ACTION_UNK18, + /* 0x19 */ DO_ACTION_UNK19, + /* 0x1A */ DO_ACTION_UNK1A, + /* 0x1B */ DO_ACTION_UNK1B, + /* 0x1C */ DO_ACTION_UNK1C, + /* 0x1D */ DO_ACTION_UNK1D, + /* 0x1E */ DO_ACTION_UNK1E, + /* 0x1F */ DO_ACTION_UNK1F, + /* 0x20 */ DO_ACTION_UNK20, + /* 0x21 */ DO_ACTION_UNK21, + /* 0x22 */ DO_ACTION_UNK22, + /* 0x23 */ DO_ACTION_UNK23, + /* 0x24 */ DO_ACTION_UNK24, + /* 0x25 */ DO_ACTION_UNK25, + /* 0x26 */ DO_ACTION_UNK26, + /* 0x27 */ DO_ACTION_UNK27, + /* 0x28 */ DO_ACTION_UNK28, + /* 0x29 */ DO_ACTION_UNK29, + /* 0x2A */ DO_ACTION_MAX +} DoAction; + typedef struct { /* 0x000 */ View view; /* 0x168 */ Vtx* actionVtx; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index db40a9a4b..2c6a9175a 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -357,9 +357,9 @@ s32 D_801BFA84[] = { 0x00010005, 0x00010005, 0x000A0014, 0x00320064, 0x00C80000, }; -s32 D_801BFAB0[] = { - 0x09000000, - 0x09000180, +s32 sDoActionTextures[] = { + 0x09000000, // gAttackDoActionENGTex + 0x09000180, // gCheckDoActionENGTex }; s32 D_801BFAB8[] = { @@ -1737,33 +1737,218 @@ void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s") +s32 func_801143CC(u8); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801143CC.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114978.s") +s32 func_80114978(u8 arg0) { + return func_801143CC(arg0); +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801149A0.s") +void func_801149A0(s16 arg0, s16 arg1) { + s16 phi_v0; + s32 phi_a1; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114A9C.s") + gSaveContext.save.inventory.items[arg1] = 0xFF; + + for (phi_v0 = 1; phi_v0 < 4; phi_v0++) { + if (phi_v0 == 0) { + phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_v0]; + } else { + phi_a1 = gSaveContext.save.equips.buttonItems[0][phi_v0]; + } + if (arg0 == (phi_a1 & 0xFF)) { + if (phi_v0 == 0) { + phi_a1 = CUR_FORM; + gSaveContext.save.equips.buttonItems[phi_a1][phi_v0] = 0xFF; + } else { + gSaveContext.save.equips.buttonItems[0][phi_v0] = 0xFF; + } + if (phi_v0 == 0) { + phi_a1 = CUR_FORM; + gSaveContext.save.equips.cButtonSlots[phi_a1][phi_v0] = 0xFF; + } else { + gSaveContext.save.equips.cButtonSlots[0][phi_v0] = 0xFF; + } + } + } +} + +void func_80114A9C(s16 arg0) { + s16 phi_v0; + s32 phi_a1; + + for (phi_v0 = 1; phi_v0 < 4; phi_v0++) { + if (phi_v0 == 0) { + phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_v0]; + } else { + phi_a1 = gSaveContext.save.equips.buttonItems[0][phi_v0]; + } + if (arg0 == (phi_a1 & 0xFF)) { + if (phi_v0 == 0) { + phi_a1 = CUR_FORM; + gSaveContext.save.equips.buttonItems[phi_a1][phi_v0] = 0xFF; + } else { + gSaveContext.save.equips.buttonItems[0][phi_v0] = 0xFF; + } + if (phi_v0 == 0) { + phi_a1 = CUR_FORM; + gSaveContext.save.equips.cButtonSlots[phi_a1][phi_v0] = 0xFF; + } else { + gSaveContext.save.equips.cButtonSlots[0][phi_v0] = 0xFF; + } + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114B84.s") +/* s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { + u8 phi_a3; + s32 phi_a0; + u8 phi_a3_2; + for (phi_a3 = 0; phi_a3 < 24; phi_a3++) { + if (gSaveContext.save.inventory.items[phi_a3] == arg1) { + gSaveContext.save.inventory.items[phi_a3] = arg2; + for (phi_a3_2 = 1; phi_a3_2 < 4; phi_a3_2++) { + if (phi_a3_2 == 0) { + phi_a0 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_a3_2]; + } else { + phi_a0 = gSaveContext.save.equips.buttonItems[0][phi_a3_2]; + } + if (arg1 == (phi_a0 & 0xFF)) { + if (phi_a3_2 == 0) { + phi_a0 = CUR_FORM; + gSaveContext.save.equips.buttonItems[phi_a0][phi_a3_2] = arg2; + } else { + gSaveContext.save.equips.buttonItems[0][phi_a3_2] = arg2; + } + Interface_LoadItemIcon(arg0, phi_a3_2 & 0xFF); + return 1; + } + } + return 1; + } + } + return 0; +} */ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114E90.s") +s32 func_80114E90(void) { + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114F2C.s") + for (i = 18; i < 24; i++) { + if (gSaveContext.save.inventory.items[i] == ITEM_BOTTLE) { + return true; + } + } + return false; +} + +s32 func_80114F2C(u8 arg0) { + s32 i; + + for (i = 18; i < 24; i++) { + if (gSaveContext.save.inventory.items[i] == arg0) { + return true; + } + } + return false; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114FD0.s") +/* void func_80114FD0(GlobalContext* globalCtx, u8 arg1, u8 arg2) { + u8 phi_v1; + s32 phi_a0; + if (arg2 == 0) { + phi_v1 = gSaveContext.save.equips.cButtonSlots[CUR_FORM][arg2]; + } else { + phi_v1 = gSaveContext.save.equips.cButtonSlots[0][arg2]; + } + gSaveContext.save.inventory.items[phi_v1] = arg1; + if (arg2 == 0) { + phi_a0 = CUR_FORM; + gSaveContext.save.equips.buttonItems[phi_a0][arg2] = arg1; + } else { + gSaveContext.save.equips.buttonItems[0][arg2] = arg1; + } + Interface_LoadItemIcon(globalCtx, arg2); + globalCtx->pauseCtx.cursorItem[0] = arg1; + gSaveContext.buttonStatus[arg2] = 0; + if (arg1 == 0x20) { + if (arg2 == 0) { + phi_a0 = CUR_FORM; + phi_v1 = gSaveContext.save.equips.cButtonSlots[phi_a0][arg2]; + } else { + phi_v1 = gSaveContext.save.equips.cButtonSlots[0][arg2]; + } + func_8012FB84(0x3C, phi_v1 - 0x12); + } +} */ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115130.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801152B8.s") +/* void func_801152B8(GlobalContext* globalCtx, s16 arg1, s16 arg2) { + s16 phi_s0; + u8 phi_v1; + gSaveContext.save.inventory.items[arg1] = arg2; + for (phi_s0 = 1; phi_s0 < 4; phi_s0++) { + if (phi_s0 == 0) { + phi_v1 = gSaveContext.save.equips.cButtonSlots[CUR_FORM][phi_s0]; + } else { + phi_v1 = gSaveContext.save.equips.cButtonSlots[0][phi_s0]; + } + if (arg1 == (phi_v1 & 0xFF)) { + if (phi_s0 == 0) { + gSaveContext.save.equips.buttonItems[CUR_FORM][phi_s0] = arg2; + } else { + gSaveContext.save.equips.buttonItems[0][phi_s0] = arg2; + } + Interface_LoadItemIcon(globalCtx, phi_s0); + } + } +} */ -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801153C8.s") +void func_801153C8(s32* buf, s32 size) { + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115428.s") + for (i = 0; i != size; i++) { + buf[i] = 0; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011552C.s") +void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 loadOffset) { + if (action >= DO_ACTION_MAX) { + action = DO_ACTION_NONE; + } + + if (action != DO_ACTION_NONE) { + osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, (u32)interfaceCtx->doActionSegment + (loadOffset * 0x180), + (u32)_do_action_staticSegmentRomStart + (action * 0x180), 0x180, 0, + &interfaceCtx->loadQueue, 0); + osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); + return; + } + + gSegments[0x09] = PHYSICAL_TO_VIRTUAL(interfaceCtx->doActionSegment); + func_801153C8(Lib_SegmentedToVirtual(sDoActionTextures[loadOffset]), 0x60); +} + +void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + PauseContext* pauseCtx = &globalCtx->pauseCtx; + + if (interfaceCtx->unk_214 != action) { + interfaceCtx->unk_214 = action; + interfaceCtx->unk_210 = 1; + interfaceCtx->unk_218 = 0.0f; + Interface_LoadActionLabel(interfaceCtx, action, 1); + if (pauseCtx->state != 0) { + interfaceCtx->unk_210 = 3; + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801155B4.s") @@ -1779,7 +1964,14 @@ void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115A14.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Parameter_AddMagic.s") +void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { + if (gSaveContext.save.playerData.magic) {} + + if (gSaveContext.save.playerData.magic < gSaveContext.unk_3F2E) { + gSaveContext.unk_3F34 += arg1; + gSaveContext.unk_3F2A = 1; + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115D5C.s") @@ -1835,9 +2027,41 @@ void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Draw.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80120F90.s") +#ifdef NON_MATCHING +void func_80120F90(GlobalContext* globalCtx, s32 block) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121064.s") + switch (interfaceCtx->unk_31C) { + case 0: + if (interfaceCtx->unk_33C == NULL) { + break; + } + osCreateMesgQueue(&interfaceCtx->unk_320, interfaceCtx->unk_338, 1); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->unk_33C, interfaceCtx->unk_340, + interfaceCtx->unk_344, 0, &interfaceCtx->unk_320, NULL); + interfaceCtx->unk_31C = 1; + case 1: + if (osRecvMesg(&interfaceCtx->unk_320, NULL, block) == 0) { + interfaceCtx->unk_31C = 2; + } + break; + } +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80120F90.s") +#endif + +void func_80121064(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + interfaceCtx->unk_340 = (u32)_story_staticSegmentRomStart; + interfaceCtx->unk_344 = (u32)_story_staticSegmentRomEnd - (u32)_story_staticSegmentRomStart; + + if (interfaceCtx->unk_33C == NULL) { + interfaceCtx->unk_33C = ZeldaArena_Malloc(interfaceCtx->unk_344); + } + func_80120F90(globalCtx, 0); +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Update.s") diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 533f88d6c..22cca3e09 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -789,7 +789,7 @@ void EnFsn_BeginInteraction(EnFsn* this, GlobalContext* globalCtx) { ActorCutscene_StartAndSetFlag(this->cutscene, &this->actor); this->cutsceneState = 2; if (Player_GetMask(globalCtx) == PLAYER_MASK_NONE) { - func_8011552C(globalCtx, 16); + Interface_SetDoAction(globalCtx, DO_ACTION_NEXT); if (EnFsn_HasItemsToSell()) { this->actionFunc = EnFsn_AskBuyOrSell; } else { @@ -868,7 +868,7 @@ void EnFsn_AskBuyOrSell(EnFsn* this, GlobalContext* globalCtx) { } } } else if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnFsn_TestEndInteraction(this, globalCtx, CONTROLLER1(globalCtx)) && func_80147624(globalCtx)) { u32 trueTmp = true; switch (globalCtx->msgCtx.choiceIndex) { @@ -1045,7 +1045,7 @@ void EnFsn_ResumeShoppingInteraction(EnFsn* this, GlobalContext* globalCtx) { } else if (this->actor.textId != 0x29D6) { this->actionFunc = EnFsn_AskCanBuyAterRunningOutOfItems; } else { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnFsn_FaceShopkeeperSelling; @@ -1096,7 +1096,7 @@ void EnFsn_BrowseShelf(EnFsn* this, GlobalContext* globalCtx) { this->stickLeftPrompt.isEnabled = true; EnFsn_UpdateCursorPos(this, globalCtx); if (talkstate == 5) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnFsn_HasPlayerSelectedItem(this, globalCtx, CONTROLLER1(globalCtx))) { EnFsn_CursorLeftRight(this); if (this->cursorIdx != prevCursorIdx) { @@ -1198,7 +1198,7 @@ void EnFsn_SelectItem(EnFsn* this, GlobalContext* globalCtx) { u8 talkState = func_80152498(&globalCtx->msgCtx); if (EnFsn_TakeItemOffShelf(this) && talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnFsn_TestCancelOption(this, globalCtx, CONTROLLER1(globalCtx)) && func_80147624(globalCtx)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: @@ -1318,7 +1318,7 @@ void EnFsn_FaceShopkeeperSelling(EnFsn* this, GlobalContext* globalCtx) { u8 cursorIdx; if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnFsn_TestEndInteraction(this, globalCtx, CONTROLLER1(globalCtx)) && (!func_80147624(globalCtx) || !EnFsn_FacingShopkeeperDialogResult(this, globalCtx)) && this->stickAccumX > 0) { @@ -1326,7 +1326,7 @@ void EnFsn_FaceShopkeeperSelling(EnFsn* this, GlobalContext* globalCtx) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; this->actionFunc = EnFsn_LookToShelf; - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 88ffa7f6c..130fce3dd 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -660,7 +660,7 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) { s16 temp = gSaveContext.unk_3F30; - Parameter_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); + Interface_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); } func_80962F10(this); diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index a5244fc9a..26d431997 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -304,7 +304,7 @@ s32 EnOssan_TestCancelOption(EnOssan* this, GlobalContext* globalCtx, Input* inp } void EnOssan_SetupStartShopping(GlobalContext* globalCtx, EnOssan* this, u8 skipHello) { - func_8011552C(globalCtx, 0x10); + Interface_SetDoAction(globalCtx, DO_ACTION_NEXT); if (!skipHello) { EnOssan_SetupAction(this, EnOssan_Hello); } else { @@ -315,7 +315,7 @@ void EnOssan_SetupStartShopping(GlobalContext* globalCtx, EnOssan* this, u8 skip void EnOssan_StartShopping(GlobalContext* globalCtx, EnOssan* this) { EnOssan_SetupAction(this, EnOssan_FaceShopkeeper); func_80151938(globalCtx, 0x640); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = true; this->stickLeftPrompt.isEnabled = true; } @@ -568,7 +568,7 @@ s32 EnOssan_FacingShopkeeperDialogResult(EnOssan* this, GlobalContext* globalCtx } EnOssan_SetupAction(this, EnOssan_TalkToShopkeeper); func_80151938(globalCtx, sTalkOptionTextIds[this->actor.params]); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; return true; @@ -595,7 +595,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, GlobalContext* globalCtx) { this->cutsceneState = ENOSSAN_CUTSCENESTATE_WAITING; } else { if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnOssan_TestEndInteraction(this, globalCtx, CONTROLLER1(globalCtx)) && (!func_80147624(globalCtx) || !EnOssan_FacingShopkeeperDialogResult(this, globalCtx))) { if (this->stickAccumX < 0) { @@ -603,7 +603,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, GlobalContext* globalCtx) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; EnOssan_SetupAction(this, EnOssan_LookToLeftShelf); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -612,7 +612,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, GlobalContext* globalCtx) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; EnOssan_SetupAction(this, EnOssan_LookToRightShelf); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -818,7 +818,7 @@ void EnOssan_BrowseLeftShelf(EnOssan* this, GlobalContext* globalCtx) { this->stickRightPrompt.isEnabled = true; EnOssan_UpdateCursorPos(globalCtx, this); if (talkState == 5) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnOssan_HasPlayerSelectedItem(globalCtx, this, CONTROLLER1(globalCtx))) { if (this->moveHorizontal) { if (this->stickAccumX > 0) { @@ -876,7 +876,7 @@ void EnOssan_BrowseRightShelf(EnOssan* this, GlobalContext* globalCtx) { this->stickLeftPrompt.isEnabled = true; EnOssan_UpdateCursorPos(globalCtx, this); if (talkState == 5) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnOssan_HasPlayerSelectedItem(globalCtx, this, CONTROLLER1(globalCtx))) { if (this->moveHorizontal != 0) { if (this->stickAccumX < 0) { @@ -1017,7 +1017,7 @@ void EnOssan_SelectItem(EnOssan* this, GlobalContext* globalCtx) { u8 talkState = func_80152498(&globalCtx->msgCtx); if (EnOssan_TakeItemOffShelf(this) && talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnOssan_TestCancelOption(this, globalCtx, CONTROLLER1(globalCtx)) && func_80147624(globalCtx)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: @@ -1084,7 +1084,7 @@ void EnOssan_ContinueShopping(EnOssan* this, GlobalContext* globalCtx) { EnGirlA* item; if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (func_80147624(globalCtx)) { EnOssan_ResetItemPosition(this); item = this->items[this->cursorIdx]; diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index c16cae9d4..86efb6ab1 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -484,7 +484,7 @@ s32 EnSob1_TestCancelOption(EnSob1* this, GlobalContext* globalCtx, Input* input } void EnSob1_SetupStartShopping(GlobalContext* globalCtx, EnSob1* this, u8 skipHello) { - func_8011552C(globalCtx, 16); + Interface_SetDoAction(globalCtx, DO_ACTION_NEXT); if (!skipHello) { EnSob1_SetupAction(this, EnSob1_Hello); } else { @@ -495,7 +495,7 @@ void EnSob1_SetupStartShopping(GlobalContext* globalCtx, EnSob1* this, u8 skipHe void EnSob1_StartShopping(GlobalContext* globalCtx, EnSob1* this) { EnSob1_SetupAction(this, EnSob1_FaceShopkeeper); func_80151938(globalCtx, sFacingShopkeeperTextIds[this->shopType]); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; } @@ -504,7 +504,7 @@ void EnSob1_TalkToShopkeeper(GlobalContext* globalCtx, EnSob1* this) { EnSob1_SetupAction(this, EnSob1_TalkingToShopkeeper); this->talkOptionTextId = EnSob1_GetTalkOption(this, globalCtx); func_80151938(globalCtx, this->talkOptionTextId); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; } @@ -670,7 +670,7 @@ void EnSob1_FaceShopkeeper(EnSob1* this, GlobalContext* globalCtx) { this->cutsceneState = ENSOB1_CUTSCENESTATE_WAITING; } else { if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnSob1_TestEndInteraction(this, globalCtx, CONTROLLER1(globalCtx))) { if (!func_80147624(globalCtx) || !EnSob1_FacingShopkeeperDialogResult(this, globalCtx)) { if (this->stickAccumX > 0) { @@ -678,7 +678,7 @@ void EnSob1_FaceShopkeeper(EnSob1* this, GlobalContext* globalCtx) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; EnSob1_SetupAction(this, EnSob1_LookToShelf); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -924,7 +924,7 @@ void EnSob1_BrowseShelf(EnSob1* this, GlobalContext* globalCtx) { this->stickLeftPrompt.isEnabled = true; EnSob1_UpdateCursorPos(globalCtx, this); if (talkState == 5) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnSob1_HasPlayerSelectedItem(globalCtx, this, CONTROLLER1(globalCtx))) { EnSob1_CursorLeftRight(globalCtx, this); cursorIdx = this->cursorIdx; @@ -1032,7 +1032,7 @@ void EnSob1_SelectItem(EnSob1* this, GlobalContext* globalCtx) { u8 talkState = func_80152498(&globalCtx->msgCtx); if (EnSob1_TakeItemOffShelf(this) && talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnSob1_TestCancelOption(this, globalCtx, CONTROLLER1(globalCtx)) && func_80147624(globalCtx)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index e922e3a0e..ac49b3eda 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -250,7 +250,7 @@ s32 EnTrt_TestCancelOption(EnTrt* this, GlobalContext* globalCtx, Input* input) } void EnTrt_SetupStartShopping(GlobalContext* globalCtx, EnTrt* this, u8 skipHello) { - func_8011552C(globalCtx, 0x10); + Interface_SetDoAction(globalCtx, DO_ACTION_NEXT); if (!skipHello) { this->actionFunc = EnTrt_Hello; } else { @@ -260,7 +260,7 @@ void EnTrt_SetupStartShopping(GlobalContext* globalCtx, EnTrt* this, u8 skipHell void EnTrt_StartShopping(GlobalContext* globalCtx, EnTrt* this) { func_80151938(globalCtx, 0x83E); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_FaceShopkeeper; @@ -529,7 +529,7 @@ void EnTrt_FaceShopkeeper(EnTrt* this, GlobalContext* globalCtx) { ActorCutscene_SetIntentToPlay(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_WAITING; } else if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnTrt_TestEndInteraction(this, globalCtx, CONTROLLER1(globalCtx))) { if ((!func_80147624(globalCtx) || !EnTrt_FacingShopkeeperDialogResult(this, globalCtx)) && (this->stickAccumX > 0)) { @@ -537,7 +537,7 @@ void EnTrt_FaceShopkeeper(EnTrt* this, GlobalContext* globalCtx) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; this->actionFunc = EnTrt_LookToShelf; - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -631,7 +631,7 @@ void EnTrt_BrowseShelf(EnTrt* this, GlobalContext* globalCtx) { this->stickLeftPrompt.isEnabled = true; EnTrt_UpdateCursorPos(globalCtx, this); if (talkState == 5) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnTrt_HasPlayerSelectedItem(globalCtx, this, CONTROLLER1(globalCtx))) { EnTrt_CursorLeftRight(globalCtx, this); if (this->cursorIdx != prevCursorIdx) { @@ -716,7 +716,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { if (EnTrt_TakeItemOffShelf(this)) { if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (!EnTrt_TestCancelOption(this, globalCtx, CONTROLLER1(globalCtx)) && func_80147624(globalCtx)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: @@ -885,7 +885,7 @@ void EnTrt_BeginInteraction(EnTrt* this, GlobalContext* globalCtx) { case 0x834: if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && !(gSaveContext.save.weekEventReg[0x10] & 0x10) && !(gSaveContext.save.weekEventReg[0x11] & 1)) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_Hello; @@ -894,7 +894,7 @@ void EnTrt_BeginInteraction(EnTrt* this, GlobalContext* globalCtx) { } break; case 0x83E: - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_FaceShopkeeper; @@ -1103,7 +1103,7 @@ void EnTrt_ContinueShopping(EnTrt* this, GlobalContext* globalCtx) { EnGirlA* item; if (talkState == 4) { - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if (func_80147624(globalCtx)) { EnTrt_ResetItemPosition(this); item = this->items[this->cursorIdx]; @@ -1417,7 +1417,7 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_SetupTalkToShopkeeper(GlobalContext* globalCtx, EnTrt* this) { this->actionFunc = EnTrt_TalkToShopkeeper; func_80151938(globalCtx, this->talkOptionTextId); - func_8011552C(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index ea338f54f..256356e04 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2125,8 +2125,8 @@ 0x80115130:("func_80115130",), 0x801152B8:("func_801152B8",), 0x801153C8:("func_801153C8",), - 0x80115428:("func_80115428",), - 0x8011552C:("func_8011552C",), + 0x80115428:("Interface_LoadActionLabel",), + 0x8011552C:("Interface_SetDoAction",), 0x801155B4:("func_801155B4",), 0x80115764:("func_80115764",), 0x80115844:("func_80115844",), @@ -2134,7 +2134,7 @@ 0x801159C0:("func_801159c0",), 0x801159EC:("func_801159EC",), 0x80115A14:("func_80115A14",), - 0x80115D14:("Parameter_AddMagic",), + 0x80115D14:("Interface_AddMagic",), 0x80115D5C:("func_80115D5C",), 0x80115DB4:("func_80115DB4",), 0x80116088:("func_80116088",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 5fd381bac..3e0f23377 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1119,7 +1119,7 @@ 0x801BFA64:("D_801BFA64","UNK_TYPE2","",0x2), 0x801BFA74:("D_801BFA74","UNK_TYPE2","",0x2), 0x801BFA84:("D_801BFA84","UNK_TYPE4","",0x4), - 0x801BFAB0:("D_801BFAB0","UNK_TYPE1","",0x1), + 0x801BFAB0:("sDoActionTextures","UNK_TYPE1","",0x1), 0x801BFAB8:("D_801BFAB8","UNK_TYPE1","",0x1), 0x801BFAC4:("D_801BFAC4","UNK_TYPE1","",0x1), 0x801BFACC:("D_801BFACC","UNK_TYPE1","",0x1), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index faeaada60..4cc77f525 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1639,8 +1639,8 @@ asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58 asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44 asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 -asm/non_matchings/code/z_parameter/func_80115428.s,func_80115428,0x80115428,0x41 -asm/non_matchings/code/z_parameter/func_8011552C.s,func_8011552C,0x8011552C,0x22 +asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 +asm/non_matchings/code/z_parameter/Interface_SetDoAction.s,Interface_SetDoAction,0x8011552C,0x22 asm/non_matchings/code/z_parameter/func_801155B4.s,func_801155B4,0x801155B4,0x6C asm/non_matchings/code/z_parameter/func_80115764.s,func_80115764,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 @@ -1648,7 +1648,7 @@ asm/non_matchings/code/z_parameter/func_80115908.s,func_80115908,0x80115908,0x2E asm/non_matchings/code/z_parameter/func_801159c0.s,func_801159c0,0x801159C0,0xB asm/non_matchings/code/z_parameter/func_801159EC.s,func_801159EC,0x801159EC,0xA asm/non_matchings/code/z_parameter/func_80115A14.s,func_80115A14,0x80115A14,0xC0 -asm/non_matchings/code/z_parameter/Parameter_AddMagic.s,Parameter_AddMagic,0x80115D14,0x12 +asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 From b0863fc11f54bacd705c5b811d5c14614d141270 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 23 Dec 2021 12:11:24 +1100 Subject: [PATCH 005/160] More functions, mainly small ones --- include/functions.h | 6 +- src/code/code_8012EC80.c | 4 +- src/code/z_parameter.c | 156 ++++++++++++++++++++++++++------- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 5 files changed, 132 insertions(+), 38 deletions(-) diff --git a/include/functions.h b/include/functions.h index bc87eb42e..888ea76dc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2068,7 +2068,7 @@ void Interface_ChangeAlpha(u16 param_1); // void func_80111CB4(void); // void func_801129E4(void); void func_80112AFC(GlobalContext* globalCtx); -void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u32 arg1); // void func_80112BE4(void); // void func_80112C0C(void); u32 Item_Give(GlobalContext* globalCtx, u8 param_2); @@ -2110,7 +2110,7 @@ void func_80115D5C(GameState* gamestate); // void func_80118BA4(void); // void func_80119030(void); // void func_80119610(void); -void func_8011B4E0(GlobalContext* globalCtx, s32 arg1); +void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); // void func_8011B5C0(void); // void func_8011B9E0(void); // void func_8011BF70(void); @@ -2366,7 +2366,7 @@ void func_8012EBF8(GlobalContext* globalCtx, RoomContext* roomCtx); s32 func_8012EC80(GlobalContext* globalCtx); void func_8012ED34(s16 equipment); u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment); -void func_8012EDE8(s16 arg0, u32 arg1); +void Inventory_ChangeUpgrade(s16 arg0, u32 arg1); s32 func_8012EE34(s16 arg0); void func_8012EF0C(s16 arg0); void func_8012F0EC(s16 arg0); diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index c86b59374..9cfa2b3d2 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -435,8 +435,8 @@ void func_8012ED34(s16 equipment); u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment); #pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012ED78.s") -void func_8012EDE8(s16 arg0, u32 arg1); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012EDE8.s") +void Inventory_ChangeUpgrade(s16 arg0, u32 arg1); +#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s") s32 func_8012EE34(s16 arg0) { s16 num = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 2c6a9175a..6345edbb6 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -150,17 +150,11 @@ s32 D_801BF89C[] = { 0x00000000, }; -s32 D_801BF8A0[] = { - 0x00FF0000, -}; +s16 D_801BF8A0 = 0xFF; -s32 D_801BF8A4[] = { - 0x00FF0000, -}; +s16 D_801BF8A4 = 0xFF; -s32 D_801BF8A8[] = { - 0x00FF0000, -}; +s16 D_801BF8A8 = 0xFF; s32 D_801BF8AC[] = { 0x00020000, @@ -1712,18 +1706,20 @@ void func_80112AFC(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112AFC.s") #endif -void func_801B45D8(u32 romSegment, u8 arg1, void* dst, u32 size); - -#define SAVE_GET(field) ((void)0, field) -#define TRANSFORMATION SAVE_GET(gSaveContext.playerForm) -#define TRANSFORMATION_CHECK ((TRANSFORMATION == 4) ? 0 : TRANSFORMATION) +void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); #ifdef NON_EQUIVALENT -void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { +void Interface_LoadItemIcon(GlobalContext* globalCtx, volatile u8 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - u8 phi_v0 = (arg1 == 0) ? gSaveContext.equips.buttonItems[TRANSFORMATION_CHECK][arg1] : gSaveContext.equips.buttonItems[0][arg1]; + u8 phi_v0; + + if (arg1 == 0) { + phi_v0 = gSaveContext.save.equips.buttonItems[CUR_FORM][arg1]; + } else { + phi_v0 = gSaveContext.save.equips.buttonItems[0][arg1]; + } - func_80178E3C(_icon_item_static_testSegmentRomStart, phi_v0, (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); + func_80178E3C((u32)_icon_item_static_testSegmentRomStart, phi_v0 & 0xFF, (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); } #else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s") @@ -1800,10 +1796,10 @@ void func_80114A9C(s16 arg0) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114B84.s") -/* s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { +#ifdef NON_MATCHING +s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { u8 phi_a3; - s32 phi_a0; + u8 phi_a0; u8 phi_a3_2; for (phi_a3 = 0; phi_a3 < 24; phi_a3++) { if (gSaveContext.save.inventory.items[phi_a3] == arg1) { @@ -1814,22 +1810,26 @@ void func_80114A9C(s16 arg0) { } else { phi_a0 = gSaveContext.save.equips.buttonItems[0][phi_a3_2]; } + if (arg1 == (phi_a0 & 0xFF)) { if (phi_a3_2 == 0) { - phi_a0 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a0][phi_a3_2] = arg2; + gSaveContext.save.equips.buttonItems[CUR_FORM][phi_a3_2] = arg2; } else { gSaveContext.save.equips.buttonItems[0][phi_a3_2] = arg2; } + Interface_LoadItemIcon(arg0, phi_a3_2 & 0xFF); - return 1; + return true; } } - return 1; + return true; } } - return 0; -} */ + return false; +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114B84.s") +#endif #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") @@ -1973,11 +1973,34 @@ void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115D5C.s") +void func_80115D5C(GameState* gamestate) { + if ((gSaveContext.unk_3F28 != 8) && (gSaveContext.unk_3F28 != 9)) { + D_801BF8A0 = D_801BF8A4 = D_801BF8A8 = 0xFF; + gSaveContext.unk_3F28 = 0; + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115DB4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116088.s") +void func_80116088(void) { + if (gSaveContext.unk_3F2A != 0) { + gSaveContext.save.playerData.magic += 4; + play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); + if (gSaveContext.save.playerData.magic >= gSaveContext.unk_3F2E) { + if (gSaveContext.save.playerData.magic) {} + gSaveContext.save.playerData.magic = gSaveContext.unk_3F2E; + gSaveContext.unk_3F34 = 0; + gSaveContext.unk_3F2A = 0; + } else { + gSaveContext.unk_3F34 -= 4; + if (gSaveContext.unk_3F34 <= 0) { + gSaveContext.unk_3F34 = 0; + gSaveContext.unk_3F2A = 0; + } + } + + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116114.s") @@ -1985,9 +2008,35 @@ void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116918.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116FD8.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801170B8.s") +void func_80116FD8(GlobalContext* globalCtx, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Vec3f eye; + Vec3f lookAt; + Vec3f up; + + eye.x = eye.y = eye.z = 0.0f; + lookAt.x = lookAt.y = 0.0f; + lookAt.z = -1.0f; + up.x = up.z = 0.0f; + up.y = 1.0f; + + View_SetViewOrientation(&interfaceCtx->view, &eye, &lookAt, &up); + + interfaceCtx->viewport.topY = topY; + interfaceCtx->viewport.bottomY = bottomY; + interfaceCtx->viewport.leftX = leftX; + interfaceCtx->viewport.rightX = rightX; + View_SetViewport(&interfaceCtx->view, &interfaceCtx->viewport); + + func_8013F0D0(&interfaceCtx->view, 60.0f, 10.0f, 60.0f); + func_8013FD74(&interfaceCtx->view); +} + +void func_801170B8(InterfaceContext* interfaceCtx) { + SET_FULLSCREEN_VIEWPORT(&interfaceCtx->view); + func_8013FBC8(&interfaceCtx->view); +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117100.s") @@ -2005,7 +2054,36 @@ void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B4E0.s") +void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 i; + + interfaceCtx->unk_286 = 1; + interfaceCtx->unk_288 = arg1; + interfaceCtx->unk_2FC[0] = 255; + interfaceCtx->unk_2FC[1] = 165; + interfaceCtx->unk_2FC[2] = 55; + interfaceCtx->unk_2FC[3] = 255; + interfaceCtx->unk_30A = 0x14; + interfaceCtx->unk_308 = 0; + interfaceCtx->unk_304 = 1; + interfaceCtx->unk_30C = 0; + + for (i = 0; i < 8; i++) { + interfaceCtx->unk_2AA[i] = 0; + interfaceCtx->unk_29A[i] = 0; + interfaceCtx->unk_28A[i] = interfaceCtx->unk_2AA[i]; + if (interfaceCtx->unk_288 == 1) { + interfaceCtx->unk_2BC[i] = 140.0f; + interfaceCtx->unk_2DC[i] = 100.0f; + } else { + interfaceCtx->unk_2DC[i] = 200.0f; + interfaceCtx->unk_2BC[i] = 200.0f; + } + } + + interfaceCtx->unk_28A[0] = 1; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") @@ -2015,7 +2093,23 @@ void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") +#ifdef NON_MATCHING +void func_8011C808(GlobalContext* globalCtx) { + if (globalCtx->actorCtx.unk5 & 2) { + Audio_QueueSeqCmd(0xE0000100); + } + + gSaveContext.save.day = 4; + gSaveContext.save.daysElapsed = gSaveContext.save.day; + gSaveContext.save.time = 0x400A; + globalCtx->nextEntranceIndex = 0x54C0; + gSaveContext.nextCutsceneIndex = 0; + globalCtx->sceneLoadFlag = 0x14; + globalCtx->unk_1887F = 3; +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C808.s") +#endif #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 256356e04..6cce66120 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2408,7 +2408,7 @@ 0x8012EC80:("func_8012EC80",), 0x8012ED34:("func_8012ED34",), 0x8012ED78:("func_8012ED78",), - 0x8012EDE8:("func_8012EDE8",), + 0x8012EDE8:("Inventory_ChangeUpgrade",), 0x8012EE34:("func_8012EE34",), 0x8012EF0C:("func_8012EF0C",), 0x8012F0EC:("func_8012F0EC",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 4cc77f525..20ac0414e 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1922,7 +1922,7 @@ asm/non_matchings/code/z_room/func_8012EBF8.s,func_8012EBF8,0x8012EBF8,0x22 asm/non_matchings/code/code_8012EC80/func_8012EC80.s,func_8012EC80,0x8012EC80,0x2D asm/non_matchings/code/code_8012EC80/func_8012ED34.s,func_8012ED34,0x8012ED34,0x11 asm/non_matchings/code/code_8012EC80/func_8012ED78.s,func_8012ED78,0x8012ED78,0x1C -asm/non_matchings/code/code_8012EC80/func_8012EDE8.s,func_8012EDE8,0x8012EDE8,0x13 +asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s,Inventory_ChangeUpgrade,0x8012EDE8,0x13 asm/non_matchings/code/code_8012EC80/func_8012EE34.s,func_8012EE34,0x8012EE34,0x36 asm/non_matchings/code/code_8012EC80/func_8012EF0C.s,func_8012EF0C,0x8012EF0C,0x78 asm/non_matchings/code/code_8012EC80/func_8012F0EC.s,func_8012F0EC,0x8012F0EC,0x34 From c5ea34672db357ea819e9cda06128d7f03bc012e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 25 Dec 2021 19:57:55 +1100 Subject: [PATCH 006/160] introduce parameter_static wip --- assets/xml/misc/parameter_static.xml | 133 ++++++++++++++++++ spec | 3 +- src/boot_O2_g3/z_std_dma.c | 1 + src/code/code_8012EC80.c | 2 +- src/code/z_en_item00.c | 6 +- src/code/z_parameter.c | 114 +++++++-------- .../actors/ovl_Bg_Tobira01/z_bg_tobira01.c | 4 +- .../actors/ovl_En_Baisen/z_en_baisen.c | 6 +- src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 3 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 3 +- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 3 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 3 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 4 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 3 +- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 4 +- src/overlays/actors/ovl_En_In/z_en_in.c | 25 ++-- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 3 +- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 2 +- .../actors/ovl_En_Railgibud/z_en_railgibud.c | 3 +- .../actors/ovl_En_Recepgirl/z_en_recepgirl.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 3 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 4 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 3 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 6 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 3 +- 25 files changed, 252 insertions(+), 94 deletions(-) create mode 100644 assets/xml/misc/parameter_static.xml diff --git a/assets/xml/misc/parameter_static.xml b/assets/xml/misc/parameter_static.xml new file mode 100644 index 000000000..2d0385ef3 --- /dev/null +++ b/assets/xml/misc/parameter_static.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spec b/spec index 89c69dd5e..5127b83b2 100644 --- a/spec +++ b/spec @@ -9321,7 +9321,8 @@ beginseg name "parameter_static" compress romalign 0x1000 - include "build/baserom/parameter_static.o" + include "build/assets/misc/parameter_static/parameter_static.o" + number 2 endseg beginseg diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index ebf390924..190536b21 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u32 sDmaMgrDmaBuffSize = 0x2000; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 9cfa2b3d2..1c2555f05 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -534,7 +534,7 @@ void func_8012F0EC(s16 arg0); void func_8012F1BC(s16 sceneIndex) { if (sceneIndex == SCENE_KINSTA1) { gSaveContext.save.roomInf[126][0] = ((((gSaveContext.save.roomInf[126][0] & 0xFFFF0000) >> 0x10) + 1) << 0x10) | - (gSaveContext.save.roomInf[126][0] & 0xFFFF); + (gSaveContext.save.roomInf[126][0] & 0xFFFF); } else { gSaveContext.save.roomInf[126][0] = ((gSaveContext.save.roomInf[126][0] + 1) & 0xFFFF) | (gSaveContext.save.roomInf[126][0] & 0xFFFF0000); diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 11073ed60..595ffba90 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -814,7 +814,8 @@ 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.save.playerData.magicLevel == 0))) { + (((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) && + (gSaveContext.save.playerData.magicLevel == 0))) { return ITEM00_NO_DROP; } @@ -1116,7 +1117,8 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3 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.playerData.magicLevel != 0) && + ((gSaveContext.save.playerData.magicLevel >> 1) >= gSaveContext.save.playerData.magic)) { params = 0xD0; dropId = ITEM00_MAGIC_LARGE; dropQuantity = 1; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6345edbb6..402f3e796 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,4 +1,5 @@ #include "global.h" +#include "misc/parameter_static/parameter_static.h" typedef struct { /* 0x00 */ u8 scene; @@ -372,8 +373,14 @@ s32 D_801BFACC[] = { 0x00020001, }; -s32 D_801BFAD4[] = { - 0x02002AE0, 0x02002AE0, 0x02002BA0, 0x02002C60, 0x02002D20, 0x00820088, 0x00880088, 0x00880000, +TexturePtr D_801BFAD4[] = { + gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, +}; + +s32 D_801BFAE8[] = { + 0x00820088, + 0x00880088, + 0x00880000, }; s32 D_801BFAF4[] = { @@ -426,15 +433,18 @@ s32 D_801BFB34[] = { 0x00000000, }; -s32 D_801BFB38[] = { - 0x00000AAA, 0x15552000, 0x2AAA3555, 0x40004AAA, 0x55556000, 0x6AAA7555, 0x80008AAA, - 0x9555A000, 0xAAAAB555, 0xC000CAAA, 0xD555E000, 0xEAAAF555, 0xFFFF0000, +s16 D_801BFB38[] = { + 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, + 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, 0x0000, }; -s32 D_801BFB6C[] = { - 0x02006440, 0x02006498, 0x020064F0, 0x02006548, 0x020065A0, 0x020065F8, 0x02006650, 0x020066A8, - 0x02006700, 0x02006758, 0x020067B0, 0x02006808, 0x02006440, 0x02006498, 0x020064F0, 0x02006548, - 0x020065A0, 0x020065F8, 0x02006650, 0x020066A8, 0x02006700, 0x02006758, 0x020067B0, 0x02006808, +TexturePtr D_801BFB6C[] = { + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, }; s32 D_801BFBCC[] = { @@ -509,9 +519,10 @@ s32 D_801BFC10[] = { 0x00640000, }; -s32 D_801BFC14[] = { - 0x02006860, 0x020068A0, 0x020068E0, 0x02006920, 0x02006960, 0x020069A0, - 0x020069E0, 0x02006A20, 0x02006A60, 0x02006AA0, 0x02006AE0, +TexturePtr D_801BFC14[] = { + gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, + gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, + gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, }; s32 D_801BFC40[] = { @@ -537,18 +548,12 @@ s32 D_801BFC64[] = { 0x00A50037, }; -s32 D_801BFC6C[] = { - 0x004E0036, - 0x001D0005, - 0xFFEEFFD6, - 0xFFBDFFAB, +s16 D_801BFC6C[] = { + 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, }; -s32 D_801BFC7C[] = { - 0x00B400B4, - 0x00B400B4, - 0xFF4CFF4C, - 0xFF4CFF4C, +s16 D_801BFC7C[] = { + 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; s32 D_801BFC8C[] = { @@ -577,8 +582,9 @@ s32 D_801BFCB8[] = { 0x00A50037, }; -s32 D_801BFCC4[] = { - 0x02007B28, 0x02007D38, 0x02007F48, 0x02008158, 0x02007D38, 0x02008368, 0x02008578, 0x02008788, +TexturePtr D_801BFCC4[] = { + gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, + gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, }; s32 D_801BFCE4[] = { @@ -605,18 +611,12 @@ s32 D_801BFCF8[] = { 0x00630000, }; -s32 D_801BFCFC[] = { - 0x00100019, - 0x0022002A, - 0x0033003C, - 0x0044004D, +s16 D_801BFCFC[] = { + 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, }; -s32 D_801BFD0C[] = { - 0x00090009, - 0x00080009, - 0x00090008, - 0x00090009, +s16 D_801BFD0C[] = { + 9, 9, 8, 9, 9, 8, 9, 9, }; s32 D_801BFD1C[] = { @@ -629,6 +629,7 @@ s32 D_801BFD24[] = { 0x00030000, }; +// Likely rbga values s32 D_801BFD2C[] = { 0x00C800FF, 0x006400AA, 0x00AA00FF, 0x00FF0069, 0x00690000, }; @@ -637,18 +638,22 @@ s32 D_801BFD40[] = { 0x00000050, 0x0000000A, 0x000A0050, 0x0028000A, 0x00000000, }; -s32 D_801BFD54[] = { - 0x02007828, - 0x02007528, - 0x02007228, - 0x02006D28, +TexturePtr D_801BFD54[] = { + gMinigameCountdown3Tex, + gMinigameCountdown2Tex, + gMinigameCountdown1Tex, + gMinigameGoTex, }; -s32 D_801BFD64[] = { - 0x00180018, - 0x00180028, +// Texture heights of D_801BFD54 +s16 D_801BFD64[] = { + 24, + 24, + 24, + 40, }; +// Likely rbga values s32 D_801BFD6C[] = { 0x006400FF, 0x006400FF, 0x00FF003C, 0x00FF0064, 0x00000078, 0x00AA00FF, }; @@ -672,9 +677,9 @@ s32 D_801BFD98[] = { 0x00000000, }; -s32 D_801BFDA0[] = { - 0x01DE01FF, 0x025D01DB, 0x01DA01FE, 0x0219024C, 0x0221025E, 0x020001FD, - 0x025C025F, 0x01DC024E, 0x025201DD, 0x01D90214, 0x01E401E1, 0x01E201E3, +s16 D_801BFDA0[] = { + 0x1DE, 0x1FF, 0x25D, 0x1DB, 0x1DA, 0x1FE, 0x219, 0x24C, 0x221, 0x25E, 0x200, 0x1FD, + 0x25C, 0x25F, 0x1DC, 0x24E, 0x252, 0x1DD, 0x1D9, 0x214, 0x1E4, 0x1E1, 0x1E2, 0x1E3, }; Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, @@ -901,8 +906,8 @@ void func_8010EE74(GlobalContext* globalCtx, s32 arg1) { phi_t0 = 0; } - DmaMgr_SendRequest0((u32)globalCtx->interfaceCtx.doActionSegment + 0x780, (u32)_week_staticSegmentRomStart + phi_t0 * 0x510, - 0x510); + DmaMgr_SendRequest0((u32)globalCtx->interfaceCtx.doActionSegment + 0x780, + (u32)_week_staticSegmentRomStart + phi_t0 * 0x510, 0x510); for (phi_t0 = 0; phi_t0 < 120; phi_t0++) { gSaveContext.save.roomInf[phi_t0][0] = gSaveContext.cycleSceneFlags[phi_t0].chest; @@ -1712,14 +1717,15 @@ void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); void Interface_LoadItemIcon(GlobalContext* globalCtx, volatile u8 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; u8 phi_v0; - + if (arg1 == 0) { phi_v0 = gSaveContext.save.equips.buttonItems[CUR_FORM][arg1]; } else { phi_v0 = gSaveContext.save.equips.buttonItems[0][arg1]; } - func_80178E3C((u32)_icon_item_static_testSegmentRomStart, phi_v0 & 0xFF, (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); + func_80178E3C((u32)_icon_item_static_testSegmentRomStart, phi_v0 & 0xFF, + (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); } #else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s") @@ -1925,8 +1931,8 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l if (action != DO_ACTION_NONE) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, (u32)interfaceCtx->doActionSegment + (loadOffset * 0x180), - (u32)_do_action_staticSegmentRomStart + (action * 0x180), 0x180, 0, - &interfaceCtx->loadQueue, 0); + (u32)_do_action_staticSegmentRomStart + (action * 0x180), 0x180, 0, + &interfaceCtx->loadQueue, 0); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); return; } @@ -1966,7 +1972,7 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { if (gSaveContext.save.playerData.magic) {} - + if (gSaveContext.save.playerData.magic < gSaveContext.unk_3F2E) { gSaveContext.unk_3F34 += arg1; gSaveContext.unk_3F2A = 1; @@ -1998,7 +2004,6 @@ void func_80116088(void) { gSaveContext.unk_3F2A = 0; } } - } } @@ -2008,7 +2013,6 @@ void func_80116088(void) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116918.s") - void func_80116FD8(GlobalContext* globalCtx, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; Vec3f eye; @@ -2132,7 +2136,7 @@ void func_80120F90(GlobalContext* globalCtx, s32 block) { } osCreateMesgQueue(&interfaceCtx->unk_320, interfaceCtx->unk_338, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->unk_33C, interfaceCtx->unk_340, - interfaceCtx->unk_344, 0, &interfaceCtx->unk_320, NULL); + interfaceCtx->unk_344, 0, &interfaceCtx->unk_320, NULL); interfaceCtx->unk_31C = 1; case 1: if (osRecvMesg(&interfaceCtx->unk_320, NULL, block) == 0) { diff --git a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c index 691dc7573..761dee64f 100644 --- a/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c +++ b/src/overlays/actors/ovl_Bg_Tobira01/z_bg_tobira01.c @@ -45,8 +45,8 @@ void BgTobira01_Open(BgTobira01* this, GlobalContext* globalCtx) { } else { ActorCutscene_SetIntentToPlay(cutsceneId); } - } else if (!(gSaveContext.save.weekEventReg[88] & 0x40) && (this->timer == 0) && (globalCtx->actorCtx.unk1F5 != 0) && - (globalCtx->actorCtx.unk1F4 == 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)) { this->playCutscene = true; diff --git a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c index 3f9ce23c7..075d6be06 100644 --- a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c +++ b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c @@ -74,14 +74,16 @@ void EnBaisen_Init(Actor* thisx, GlobalContext* globalCtx) { this->paramCopy = this->actor.params; if (this->actor.params == 0) { this->unk290 = true; - if (!(gSaveContext.save.weekEventReg[63] & 0x80) && ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) { + if (!(gSaveContext.save.weekEventReg[63] & 0x80) && + ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); } } else { this->collider.dim.radius = 30; this->collider.dim.height = 60; this->collider.dim.yShift = 0; - if ((gSaveContext.save.weekEventReg[63] & 0x80) || ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight))) { + if ((gSaveContext.save.weekEventReg[63] & 0x80) || + ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight))) { Actor_MarkForDeath(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 98770ec61..7ba09f969 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -92,7 +92,8 @@ void EnDaiku_Init(Actor* thisx, GlobalContext* globalCtx) { this->collider.dim.height = 60; this->collider.dim.yShift = 0; this->actor.flags |= 0x8000000; - if ((gSaveContext.save.weekEventReg[63] & 0x80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { + if ((gSaveContext.save.weekEventReg[63] & 0x80) || + ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) { Actor_MarkForDeath(&this->actor); } } else if ((gSaveContext.save.day == 3) && gSaveContext.save.isNight) { diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index 26238993a..b134a21c1 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -359,7 +359,8 @@ void func_80989BF8(EnDg* this) { D_8098C2A8[this->unk_286].unk_04 = 0x3538 + ((gSaveContext.save.weekEventReg[42 + (this->unk_286 / 2)] & 0xF0) >> 4); } else { - D_8098C2A8[this->unk_286].unk_04 = 0x3538 + (gSaveContext.save.weekEventReg[42 + (this->unk_286 / 2)] & 0xF); + D_8098C2A8[this->unk_286].unk_04 = + 0x3538 + (gSaveContext.save.weekEventReg[42 + (this->unk_286 / 2)] & 0xF); } } else { Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index ae0bdbb77..1577fb1fa 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -390,7 +390,8 @@ void func_8092D1B8(EnDns* this, GlobalContext* globalCtx) { } if (!ENDNS_GET_4000(&this->actor) || (this->unk_2D2 != 0)) { - if (!(gSaveContext.save.weekEventReg[23] & 0x20) && !(gSaveContext.eventInf[1] & 0x20) && func_8092CC68(globalCtx)) { + if (!(gSaveContext.save.weekEventReg[23] & 0x20) && !(gSaveContext.eventInf[1] & 0x20) && + func_8092CC68(globalCtx)) { player->stateFlags1 |= 0x20; this->unk_2C6 |= 0x100; func_8013AED4(&this->unk_2C6, 4, 7); diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 22cca3e09..82a93f60f 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -851,7 +851,8 @@ void EnFsn_AskBuyOrSell(EnFsn* this, GlobalContext* globalCtx) { case 0x29D2: if (gSaveContext.save.weekEventReg[0x21] & 4) { this->actor.textId = 0x2A01; - } else if (!(gSaveContext.save.weekEventReg[0x21] & 8) && !(gSaveContext.save.weekEventReg[0x4F] & 0x40)) { + } else if (!(gSaveContext.save.weekEventReg[0x21] & 8) && + !(gSaveContext.save.weekEventReg[0x4F] & 0x40)) { this->actor.textId = 0x29D3; } else { this->actor.textId = 0x29D4; diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 130fce3dd..1c0673836 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -900,8 +900,8 @@ void func_80963630(EnFu* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (func_800B84D0(&this->actor, globalCtx)) { - if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20) && (CURRENT_DAY == 3) && - (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { + if ((gSaveContext.save.weekEventReg[22] & 0x10) && (gSaveContext.save.weekEventReg[22] & 0x20) && + (CURRENT_DAY == 3) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) { if (gSaveContext.save.weekEventReg[22] & 0x40) { func_801518B0(globalCtx, 0x2884, &this->actor); this->unk_552 = 0x2884; diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 9fcababa5..001277740 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -408,7 +408,8 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) func_800BDC5C(&this->skelAnime, animations, GINKO_FLOORSMACKING); func_801518B0(globalCtx, 0x476, &this->actor); this->curTextId = 0x476; // you dont have enough deposited to withdrawl - } else if (CUR_CAPACITY(UPG_WALLET) < (globalCtx->msgCtx.bankRupeesSelected + gSaveContext.save.playerData.rupees)) { + } else if (CUR_CAPACITY(UPG_WALLET) < + (globalCtx->msgCtx.bankRupeesSelected + gSaveContext.save.playerData.rupees)) { // check if wallet is big enough play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0x475, &this->actor); diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 3113f40e2..5f5a88f20 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -391,8 +391,8 @@ void func_809985B8(EnGs* this, GlobalContext* globalCtx) { Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos); Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos); this->unk_200 = 0.0f; - gSaveContext.save.roomInf[126][1] = - (gSaveContext.save.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3)); + gSaveContext.save.roomInf[126][1] = (gSaveContext.save.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | + ((this->unk_194 & 7) << (this->unk_198 * 3)); gossipStone = NULL; do { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 07e2443da..9bd60d712 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -10,17 +10,17 @@ #define THIS ((EnIn*)thisx) -#define SET_FLAGS_FINISH_RACE \ - { \ - gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ - gSaveContext.save.weekEventReg[92] = \ +#define SET_FLAGS_FINISH_RACE \ + { \ + gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ + gSaveContext.save.weekEventReg[92] = \ gSaveContext.save.weekEventReg[92] | (u8)(gSaveContext.save.weekEventReg[92] & ~(1 | 2 | 4)); \ } -#define SET_FLAGS_START_RACE \ - { \ - gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ - gSaveContext.save.weekEventReg[92] = \ +#define SET_FLAGS_START_RACE \ + { \ + gSaveContext.save.weekEventReg[92] &= (u8) ~(1 | 2 | 4); \ + gSaveContext.save.weekEventReg[92] = \ gSaveContext.save.weekEventReg[92] | (u8)((gSaveContext.save.weekEventReg[92] & ~(1 | 2 | 4)) | 1); \ } @@ -267,7 +267,8 @@ s32 func_808F3334(EnIn* this, GlobalContext* globalCtx) { s32 func_808F33B8(void) { s32 ret; - if (((ret = gSaveContext.save.day == 1) && (ret = gSaveContext.save.time >= 0x3AAA) && (ret = gSaveContext.save.time <= 0x4000)) || + if (((ret = gSaveContext.save.day == 1) && (ret = gSaveContext.save.time >= 0x3AAA) && + (ret = gSaveContext.save.time <= 0x4000)) || (ret = gSaveContext.save.day >= 2)) { ret = (gSaveContext.save.weekEventReg[22] & 1) == 0; } @@ -512,7 +513,8 @@ u16 func_808F3DD4(GlobalContext* globalCtx, EnIn* this, u32 arg2) { } else { switch (arg2) { case 0: - if ((gSaveContext.save.playerForm == PLAYER_FORM_ZORA) || (gSaveContext.save.playerForm == PLAYER_FORM_GORON)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_ZORA) || + (gSaveContext.save.playerForm == PLAYER_FORM_GORON)) { textId = 0x345C; } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x3460; @@ -542,7 +544,8 @@ u16 func_808F3DD4(GlobalContext* globalCtx, EnIn* this, u32 arg2) { } break; case 4: - if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || gSaveContext.save.playerForm == PLAYER_FORM_GORON) { + if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA || + gSaveContext.save.playerForm == PLAYER_FORM_GORON) { textId = 0x348A; } else if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { textId = 0x348B; diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index f55dd43cc..601d29cf5 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -673,7 +673,8 @@ void func_80B439B0(s32 arg0, s32 arg1) { } if (!(arg0 & 1)) { - gSaveContext.save.roomInf[124][arg0 >> 1] = (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); + gSaveContext.save.roomInf[124][arg0 >> 1] = + (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); } else { gSaveContext.save.roomInf[124][arg0 >> 1] = (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10); diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 15c36600d..31f67960c 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -273,7 +273,7 @@ void EnMinifrog_ReturnFrogCutscene(EnMinifrog* this, GlobalContext* globalCtx) { case 0xD87: // "Ah! You need not say a thing. Upon seeing that face, I understand!" ... func_80151938(globalCtx, globalCtx->msgCtx.unk11F04 + 1); break; - case 0xD82: // "What has brought you all this way?" + case 0xD82: // "What has brought you all this way?" if (gSaveContext.save.weekEventReg[33] & 0x80) { // Mountain village is unfrozen func_80151938(globalCtx, 0xD83); // "Could it be... Has spring finally come to the mountains?" } else { diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index bbee3ba22..e72565748 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -328,7 +328,8 @@ void func_80BA5B64(EnRailgibud* this, GlobalContext* globalCtx) { if (func_80BA6D10(this, globalCtx) && Actor_IsActorFacingLink(&this->actor, 0x38E3)) { if ((this->unk_3F4 == 0) && (this->actor.xzDistToPlayer <= 45.0f)) { player->actor.freezeTimer = 0; - if ((gSaveContext.save.playerForm == PLAYER_FORM_GORON) || (gSaveContext.save.playerForm == PLAYER_FORM_DEKU)) { + if ((gSaveContext.save.playerForm == PLAYER_FORM_GORON) || + (gSaveContext.save.playerForm == PLAYER_FORM_DEKU)) { func_80BA6054(this); } else if (globalCtx->grabPlayer(globalCtx, player)) { func_80BA5DBC(this); diff --git a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c index 28e8c6f0c..6bdd02754 100644 --- a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c +++ b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c @@ -158,7 +158,7 @@ void EnRecepgirl_Talk(EnRecepgirl* this, GlobalContext* globalCtx) { Animation_MorphToPlayOnce(&this->skelAnime, &D_0600AD98, 10.0f); 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) + 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) } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index e69ca5ddc..852c16911 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -984,7 +984,8 @@ void func_809C8488(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_276 = 0; if (this->unk_270 <= 0) { if ((s32)((gSaveContext.save.roomInf[127][6] & 0xFFFF0000) >> 0x10) < this->unk_280) { - gSaveContext.save.roomInf[127][6] = ((gSaveContext.save.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10); + gSaveContext.save.roomInf[127][6] = + ((gSaveContext.save.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10); } this->unk_270 = 15; if (this->unk_280 >= 0x848) { diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 46e8dbbd5..0244e66c7 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -517,8 +517,8 @@ void func_80A42F20(EnTest4* this, GlobalContext* globalCtx) { } void func_80A430C8(EnTest4* this, GlobalContext* globalCtx) { - if ((CURRENT_DAY == 2) && (gSaveContext.save.time >= CLOCK_TIME(7, 0)) && (gSaveContext.save.time < CLOCK_TIME(17, 30)) && - (globalCtx->envCtx.unk_F2[2] == 0)) { + if ((CURRENT_DAY == 2) && (gSaveContext.save.time >= CLOCK_TIME(7, 0)) && + (gSaveContext.save.time < CLOCK_TIME(17, 30)) && (globalCtx->envCtx.unk_F2[2] == 0)) { // rain? D_801BDBB0 = 1; diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 62d527de2..4ed2a0c03 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -285,7 +285,8 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { if (!((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18)) { gSaveContext.save.roomInf[126][5] = (gSaveContext.save.roomInf[126][5] & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18); } else { - gSaveContext.save.roomInf[126][5] = (gSaveContext.save.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); + gSaveContext.save.roomInf[126][5] = + (gSaveContext.save.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); } return true; diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index ac49b3eda..da137a5ea 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -1453,7 +1453,8 @@ void EnTrt_LookToShopkeeperFromShelf(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_InitShopkeeper(EnTrt* this, GlobalContext* globalCtx) { SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600FEF0, &D_0600FD34, NULL, NULL, 0); - if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && gSaveContext.save.day >= 2) { + if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && + gSaveContext.save.day >= 2) { this->actor.draw = NULL; } else { this->actor.draw = EnTrt_Draw; @@ -1471,7 +1472,8 @@ void EnTrt_InitShop(EnTrt* this, GlobalContext* globalCtx) { this->actor.colChkInfo.mass = MASS_IMMOVABLE; this->actor.colChkInfo.cylRadius = 50; this->timer = Rand_S16Offset(40, 20); - if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && gSaveContext.save.day >= 2) { + if (!(gSaveContext.save.weekEventReg[0xC] & 8) && !(gSaveContext.save.weekEventReg[0x54] & 0x40) && + gSaveContext.save.day >= 2) { this->textId = 0x84A; this->actionFunc = EnTrt_ShopkeeperGone; } else { diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 4e4df76ee..3a5eeb3fc 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -452,7 +452,8 @@ void func_809674C8(EnWeatherTag* this, GlobalContext* globalCtx) { if (Actor_XZDistanceBetweenActors(&player->actor, &this->actor) < WEATHER_TAG_RANGE100(this)) { if (CURRENT_DAY == 2) { - if ((gSaveContext.save.time >= 0x4AAA) && (gSaveContext.save.time < 0xBAAA) && (globalCtx->envCtx.unk_F2[2] == 0)) { + if ((gSaveContext.save.time >= 0x4AAA) && (gSaveContext.save.time < 0xBAAA) && + (globalCtx->envCtx.unk_F2[2] == 0)) { D_801BDBB0 = 1; func_800FD78C(globalCtx); From 662c62c4e6b25cc55769014cab3e23ee497b055b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 01:00:40 +1100 Subject: [PATCH 007/160] Interface Draw Attempt, now its compiling --- include/color.h | 6 + include/z64.h | 4 +- src/code/z_parameter.c | 535 ++++++++++++++++++++++++++++++++++++++--- 3 files changed, 513 insertions(+), 32 deletions(-) diff --git a/include/color.h b/include/color.h index 438d857ad..af4a6e129 100644 --- a/include/color.h +++ b/include/color.h @@ -35,6 +35,12 @@ typedef struct { u32 r, g, b, a; } Color_RGBAu32; +typedef struct { + /* 0x0 */ u16 r; + /* 0x1 */ u16 g; + /* 0x2 */ u16 b; +} Color_RGB16; // size = 0x6 + typedef union { struct { u16 r : 5; diff --git a/include/z64.h b/include/z64.h index 4adbf8733..dd4f6fe49 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1484,7 +1484,9 @@ struct GlobalContext { /* 0x18B4C */ PreRender pauseBgPreRender; /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; - /* 0x18E58 */ char unk_18E58[0x400]; + /* 0x18E58 */ char unk_18E58[0x4]; + /* 0x18E5C */ void* unk_18E5C; + /* 0x18E60 */ char unk_18E60[0x3F8]; }; // size = 0x19258 typedef struct { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 402f3e796..d771edf35 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -128,9 +128,7 @@ static RestrictionFlags sRestrictionFlags[] = { { SCENE_ALLEY, 0x00, 0x00, 0x00 }, }; -s32 D_801BF884[] = { - 0x00000000, -}; +s32 D_801BF884 = 0; // pictoBox related s32 D_801BF888[] = { 0x00000000, @@ -228,11 +226,11 @@ s32 D_801BF980[] = { 0x00000000, }; -s32 D_801BF988[] = { - 0xE7000000, - 0x00000000, - 0xD9C0F9FA, - 0x00000000, +// Display List +Gfx D_801BF988[] = { + gsDPPipeSync(), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), }; s32 D_801BF998[] = { @@ -619,23 +617,30 @@ s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; -s32 D_801BFD1C[] = { - 0x00010000, - 0x00000000, +s16 D_801BFD1C[] = { + 1, + 0, + 0, + 0, }; -s32 D_801BFD24[] = { - 0x00020003, - 0x00030000, +s16 D_801BFD24[] = { + 2, + 3, + 3, + 0, }; -// Likely rbga values -s32 D_801BFD2C[] = { - 0x00C800FF, 0x006400AA, 0x00AA00FF, 0x00FF0069, 0x00690000, +Color_RGB16 D_801BFD2C[] = { + { 200, 255, 100 }, + { 170, 170, 255 }, + { 255, 105, 105 }, }; -s32 D_801BFD40[] = { - 0x00000050, 0x0000000A, 0x000A0050, 0x0028000A, 0x00000000, +Color_RGB16 D_801BFD40[] = { + { 0, 80, 0 }, + { 10, 10, 80 }, + { 40, 10, 0 }, }; TexturePtr D_801BFD54[] = { @@ -653,9 +658,11 @@ s16 D_801BFD64[] = { 40, }; -// Likely rbga values -s32 D_801BFD6C[] = { - 0x006400FF, 0x006400FF, 0x00FF003C, 0x00FF0064, 0x00000078, 0x00AA00FF, +Color_RGB16 D_801BFD6C[] = { + { 100, 255, 100 }, + { 255, 255, 60 }, + { 255, 100, 0 }, + { 120, 170, 255 }, }; s32 D_801BFD84[] = { @@ -838,22 +845,22 @@ void func_8010E968(s32 arg0) { D_801BFA84[0] = btnAPressed; } -void func_8010E9F0(s16 arg0, s16 arg1) { - gSaveContext.timerX[arg0] = 115; - gSaveContext.timerY[arg0] = 80; +void func_8010E9F0(s16 timerId, s16 arg1) { + gSaveContext.timerX[timerId] = 115; + gSaveContext.timerY[timerId] = 80; D_801BF8E0 = 0; - gSaveContext.unk_3DE0[arg0] = arg1 * 100; - gSaveContext.unk_3E18[arg0] = gSaveContext.unk_3DE0[arg0]; + gSaveContext.unk_3DE0[timerId] = arg1 * 100; + gSaveContext.unk_3E18[timerId] = gSaveContext.unk_3DE0[timerId]; - if (gSaveContext.unk_3DE0[arg0] != 0) { - gSaveContext.unk_3DD7[arg0] = 0; + if (gSaveContext.unk_3DE0[timerId] != 0) { + gSaveContext.unk_3DD7[timerId] = 0; } else { - gSaveContext.unk_3DD7[arg0] = 1; + gSaveContext.unk_3DD7[timerId] = 1; } - gSaveContext.unk_3DD0[arg0] = 1; + gSaveContext.unk_3DD0[timerId] = 1; } void func_8010EA9C(s16 arg0, s16 arg1) { @@ -2123,7 +2130,473 @@ void func_8011C808(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") +void func_8010E028(GlobalContext* globalCtx); +// ? func_8010A54C(GlobalContext*); +// ? func_80116918(GlobalContext*, Gfx*); +// ? func_80117100(GlobalContext*); +// ? func_80118084(GlobalContext*); +// ? func_80118890(GlobalContext*); +// ? func_80118BA4(GlobalContext*); +// ? func_80119030(GlobalContext*); +// ? func_80119610(GlobalContext*); +// ? func_8011C4C4(GlobalContext*); +// ? func_8011CA64(GlobalContext*); +// ? func_8011E730(GlobalContext*); +// ? func_801663C4(void*, u64*, ?, GlobalContext*); +extern Gfx D_0E0002E0[]; // Display List +extern u8 D_801ABAB0[]; +extern u8 D_801E3BB0[]; + +#ifdef NON_EQUIVALENT +void Interface_Draw(GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + PauseContext* pauseCtx = &globalCtx->pauseCtx; + + s16 sp2CE; + s16 sp2CC; + s16 sp2CA; + s16 sp2C8; + f32 sp2C0; + s16 counterDigits[4]; // sp2B8 + u32 sp4C; + + s16 temp_t0; + s16 temp_t1; + s16 temp_t1_2; + s16 temp_v0_19; + s32 temp_v1_13; + u8 temp_v1_11; + void* temp_v0_32; + void* temp_v0_33; + u32 phi_t3; + s16 phi_t4; + s16 phi_t1; + s16 phi_t0; + s32 phi_v0_7; + void* phi_a0_2; + void* phi_a0_3; + s16 phi_t0_2; + s16 phi_a2; + s16 phi_v1_4; + Gfx* gfx; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gSPSegment(OVERLAY_DISP++, 0x02, interfaceCtx->parameterSegment); + gSPSegment(OVERLAY_DISP++, 0x09, interfaceCtx->doActionSegment); + gSPSegment(OVERLAY_DISP++, 0x08, interfaceCtx->iconItemSegment); + gSPSegment(OVERLAY_DISP++, 0x0B, interfaceCtx->mapSegment); + + if (pauseCtx->debugState == 0) { + func_8010E028(globalCtx); // Interface_InitVertices + func_801170B8(interfaceCtx); + + if (interfaceCtx->unk_31C == 2) { + gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->unk_33C); + func_8012C628(globalCtx->state.gfxCtx); + + gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_POINT); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); + gSPLoadUcodeEx(OVERLAY_DISP++, OS_K0_TO_PHYSICAL(D_801ABAB0), OS_K0_TO_PHYSICAL(D_801E3BB0), 0x800); + + gfx = OVERLAY_DISP; + func_80172758(&gfx, D_801BFD84[interfaceCtx->unk_31B], D_801BFD8C[interfaceCtx->unk_31B], 0x140, 0xF0, 2, 1, + 0x8000, 0x100, 0.0f, 0.0f, 1.0f, 1.0f, 0); + OVERLAY_DISP = gfx; + + gSPLoadUcodeEx(OVERLAY_DISP++, SysUcode_GetUCode(), SysUcode_GetUCodeData(), 0x800); + gDPPipeSync(OVERLAY_DISP++); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, gGameInfo->data[0x59B]); + gDPFillRectangle(OVERLAY_DISP++, 0, 0, 320, 240); + } + + LifeMeter_Draw(globalCtx); + + func_8012C654(globalCtx->state.gfxCtx); + + // Rupee Icon + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD2C[CUR_UPG_VALUE(4)].r, D_801BFD2C[CUR_UPG_VALUE(4)].g, + D_801BFD2C[CUR_UPG_VALUE(4)].b, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, D_801BFD40[CUR_UPG_VALUE(4)].r, D_801BFD40[CUR_UPG_VALUE(4)].g, + D_801BFD40[CUR_UPG_VALUE(4)].b, 255); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); + + switch (globalCtx->sceneNum) { + case 0x16: + case 0x18: + case 0x1B: + case 0x21: + case 0x49: + if (gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { + // Small Key Icon + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, 16, + 1 << 10, 1 << 10); + + // Small Key Counter + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); + + counterDigits[2] = 0; + counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]; + + while (counterDigits[3] >= 10) { + counterDigits[2]++; + counterDigits[3] -= 10; + } + + sp2CA = 42; + + if (counterDigits[2] != 0) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), + 8, 16, 43, 191, 8, 16, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gSPTextureRectangle(OVERLAY_DISP++, 168, 760, 200, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); + + sp2CA = 50; + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, + 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0, + 1 << 10, 1 << 10); + } + break; + case 0x27: + case 0x28: + // Gold Skulltula Icon + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gGoldSkulltulaCounterIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 24, + 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 80, 748, 176, 820, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + // Gold Skulluta Counter + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); + + counterDigits[2] = 0; + counterDigits[3] = func_8012F22C(globalCtx->sceneNum); + + while (counterDigits[3] >= 10) { + counterDigits[2]++; + counterDigits[3] -= 10; + } + + sp2CA = 42; + + if (counterDigits[2] != 0) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, + 16, 43, 191, 8, 16, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gSPTextureRectangle(OVERLAY_DISP++, 168, 760, 200, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + sp2CA = 50; + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, 16, + sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0, + 1 << 10, 1 << 10); + + break; + } + + // Rupee Counter + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + + counterDigits[0] = counterDigits[1] = 0; + counterDigits[2] = gSaveContext.save.playerData.rupees; + + if ((counterDigits[2] > 9999) || (counterDigits[2] < 0)) { + counterDigits[2] &= 0xDDD; + } + + while (counterDigits[2] >= 100) { + counterDigits[0]++; + counterDigits[2] -= 100; + } + + while (counterDigits[2] >= 10) { + counterDigits[1]++; + counterDigits[2] -= 10; + } + + phi_t4 = D_801BFD24[CUR_UPG_VALUE(UPG_WALLET)]; + phi_t0 = D_801BFD1C[CUR_UPG_VALUE(UPG_WALLET)]; + + phi_v1_4 = interfaceCtx->magicAlpha; + if (phi_v1_4 > 180) { + phi_v1_4 = 180; + } + + sp2CA = 42; + phi_t1 = 0; + + if (phi_t4 > 0) { + phi_t3 = phi_v1_4 & 0xFF; + do { + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, phi_t3); + + sp2C8 = phi_t4; + sp4C = phi_t3; + sp2CE = phi_t1; + sp2CC = phi_t0; + + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[phi_t0]), 8, + 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + + temp_t1 = phi_t1 + 1; + + if (gSaveContext.save.playerData.rupees == CAPACITY(UPG_WALLET, CUR_UPG_VALUE(UPG_WALLET))) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); + } else if (gSaveContext.save.playerData.rupees != 0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); + } + + gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 824, (sp2CA * 4) + 0x20, 888, G_TX_RENDERTILE, 0, 0, + 1 << 10, 1 << 10); + + sp2CA = sp2CA + 8; + phi_t1 = temp_t1; + phi_t0 = phi_t0 + 1; + } while (temp_t1 < phi_t4); + } + + func_80116918(globalCtx); + func_8010A54C(globalCtx); + + if ((gGameInfo->data[0xBE] != 2) && (gGameInfo->data[0xBE] != 3)) { + func_800B5208(&globalCtx->actorCtx.targetContext, globalCtx); // Draw Z-Target + } + + func_8012C654(globalCtx->state.gfxCtx); + func_80117100(globalCtx); + + if (player->transformation == gSaveContext.save.playerForm) { + func_80118084(globalCtx); + } + + func_80118890(globalCtx); + func_80118BA4(globalCtx); + func_80119030(globalCtx); + + if (globalCtx->pauseCtx.state == 0) { + if (globalCtx->pauseCtx.debugState == 0) { + temp_v1_11 = interfaceCtx->unk_280; + if (temp_v1_11 != 0) { + if (temp_v1_11 < 0x14) { + if ((temp_v1_11 & 1) == 0) { + + temp_t1_2 = (temp_v1_11 >> 1) - 1; + sp2C0 = interfaceCtx->unk_284 / 100.0f; + + if (temp_t1_2 == 3) { + interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; + interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = + interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; + interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; + } + interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; + + sp2CE = temp_t1_2; + + func_8012C8D4(globalCtx->state.gfxCtx); + + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[temp_t1_2].r, D_801BFD6C[temp_t1_2].g, + D_801BFD6C[temp_t1_2].b, interfaceCtx->unk_282); + + sp2CE = temp_t1_2; + + Matrix_InsertTranslation(0.0f, -40.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, interfaceCtx->actionVtx + 0x280, 4, 0); + + sp2CE = temp_t1_2; + + OVERLAY_DISP = + func_8010DC58(OVERLAY_DISP, D_801BFD54[temp_t1_2], D_801BFD64[temp_t1_2], 32, 0); + } + } else { + goto block_56; + } + } else { + block_56: + func_80119610(globalCtx); + } + } + } + + if (interfaceCtx->unk_286 != 0) { + func_8011C4C4(globalCtx); + } + + func_8011E730(globalCtx); + func_8011CA64(globalCtx); + } + + temp_v0_19 = D_801BF884; + phi_v0_7 = temp_v0_19; + + // PictoBox + if (temp_v0_19 == 1) { + + func_8012C654(globalCtx->state.gfxCtx); + + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, 255); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusBorderTex, G_IM_FMT_IA, 16, 16, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(OVERLAY_DISP++, YREG(32) * 4, YREG(33) * 4, (YREG(32) * 4) + 0x40, (YREG(33) * 4) + 0x40, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(34) * 4, YREG(35) * 4, (YREG(34) * 4) + 0x40, (YREG(35) * 4) + 0x40, + G_TX_RENDERTILE, 0x200, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(36) * 4, YREG(37) * 4, (YREG(36) * 4) + 0x40, (YREG(37) * 4) + 0x40, + G_TX_RENDERTILE, 0, 0x200, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(38) * 4, YREG(39) * 4, (YREG(38) * 4) + 0x40, (YREG(39) * 4) + 0x40, + G_TX_RENDERTILE, 0x200, 0x200, 1 << 10, 1 << 10); + + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusIconTex, G_IM_FMT_I, 32, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(OVERLAY_DISP++, YREG(40) * 4, YREG(41) * 4, (YREG(40) * 4) + 0x80, (YREG(41) * 4) + 0x40, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusTextTex, G_IM_FMT_I, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) * 4) + 0x80, (YREG(43) * 4) + 0x20, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + phi_v0_7 = D_801BF884; + } + + if (phi_v0_7 >= 2) { + if ((globalCtx->actorCtx.unk5 & 4) == 0) { + temp_v0_32 = globalCtx->unk_18E5C; + if (temp_v0_32 != 0) { + phi_a0_2 = temp_v0_32; + } else { + phi_a0_2 = D_801FBB90; + } + + func_801663C4(phi_a0_2, gSaveContext.pictoPhoto, 0x4600, globalCtx); + + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + + D_801BF884 = 0; + gSaveContext.unk_3F22 = 0; + Interface_ChangeAlpha(50); + + } else { + if (phi_v0_7 == 2) { + + D_801BF884 = 3; + func_801518B0(globalCtx, 0xF8, NULL); + Interface_ChangeAlpha(1); + player->stateFlags1 |= 0x200; + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 200, 200, 250); + gDPFillRectangle(OVERLAY_DISP++, 70, 22, 251, 151); + + func_8012C654(globalCtx->state.gfxCtx); + + gDPSetRenderMode(OVERLAY_DISP++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); + + phi_t0_2 = 0; + phi_a2 = 0x1F; + + do { + temp_v0_33 = globalCtx->unk_18E5C; + temp_t0 = phi_t0_2 + 1; + + if (temp_v0_33 != NULL) { + phi_a0_3 = temp_v0_33; + } else { + phi_a0_3 = D_801FBB90; + } + + gDPLoadTextureBlock(OVERLAY_DISP++, (u32)phi_a0_3 + (phi_t0_2 * 0x500), G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, + 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(OVERLAY_DISP++, 320, temp_v1_13, 960, temp_v1_13 + 0x20, G_TX_RENDERTILE, 0, 0, + 1 << 10, 1 << 10); + + phi_t0_2 = temp_t0; + phi_a2 = phi_a2 + 8; + + } while (temp_t0 < 14); + } + } + + if (interfaceCtx->unk_264 != 0) { + gDPPipeSync(OVERLAY_DISP++); + gSPDisplayList(OVERLAY_DISP++, D_801BF988); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->unk_264); + gSPDisplayList(OVERLAY_DISP++, D_0E0002E0); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Draw.s") +#endif #ifdef NON_MATCHING void func_80120F90(GlobalContext* globalCtx, s32 block) { From e1d6238a2b4906e5be5ae445af73e2de2310ddf8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 02:11:29 +1100 Subject: [PATCH 008/160] Interface_Draw is getting really close now --- include/color.h | 6 +- src/code/z_parameter.c | 227 ++++++++++++++--------------------------- 2 files changed, 82 insertions(+), 151 deletions(-) diff --git a/include/color.h b/include/color.h index af4a6e129..db2ecd7e7 100644 --- a/include/color.h +++ b/include/color.h @@ -36,9 +36,9 @@ typedef struct { } Color_RGBAu32; typedef struct { - /* 0x0 */ u16 r; - /* 0x1 */ u16 g; - /* 0x2 */ u16 b; + /* 0x0 */ s16 r; + /* 0x1 */ s16 g; + /* 0x2 */ s16 b; } Color_RGB16; // size = 0x6 typedef union { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d771edf35..3e61e3fa4 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -128,7 +128,7 @@ static RestrictionFlags sRestrictionFlags[] = { { SCENE_ALLEY, 0x00, 0x00, 0x00 }, }; -s32 D_801BF884 = 0; // pictoBox related +s16 D_801BF884 = 0; // pictoBox related s32 D_801BF888[] = { 0x00000000, @@ -2131,26 +2131,28 @@ void func_8011C808(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") void func_8010E028(GlobalContext* globalCtx); -// ? func_8010A54C(GlobalContext*); -// ? func_80116918(GlobalContext*, Gfx*); -// ? func_80117100(GlobalContext*); -// ? func_80118084(GlobalContext*); -// ? func_80118890(GlobalContext*); -// ? func_80118BA4(GlobalContext*); -// ? func_80119030(GlobalContext*); -// ? func_80119610(GlobalContext*); -// ? func_8011C4C4(GlobalContext*); -// ? func_8011CA64(GlobalContext*); -// ? func_8011E730(GlobalContext*); -// ? func_801663C4(void*, u64*, ?, GlobalContext*); +void func_8010A54C(GlobalContext*); +void func_80116918(GlobalContext*); +void func_80117100(GlobalContext*); +void func_80118084(GlobalContext*); +void func_80118890(GlobalContext*); +void func_80118BA4(GlobalContext*); +void func_80119030(GlobalContext*); +void func_80119610(GlobalContext*); +void func_8011C4C4(GlobalContext*); +void func_8011CA64(GlobalContext*); +void func_8011E730(GlobalContext*); +void func_801663C4(u8* arg0, s8* arg1, s32 arg2); extern Gfx D_0E0002E0[]; // Display List extern u8 D_801ABAB0[]; extern u8 D_801E3BB0[]; #ifdef NON_EQUIVALENT void Interface_Draw(GlobalContext* globalCtx) { - Player* player = GET_PLAYER(globalCtx); + s32 pad; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Player* player = GET_PLAYER(globalCtx); + Gfx* gfx; PauseContext* pauseCtx = &globalCtx->pauseCtx; s16 sp2CE; @@ -2159,27 +2161,10 @@ void Interface_Draw(GlobalContext* globalCtx) { s16 sp2C8; f32 sp2C0; s16 counterDigits[4]; // sp2B8 - u32 sp4C; - s16 temp_t0; - s16 temp_t1; - s16 temp_t1_2; - s16 temp_v0_19; - s32 temp_v1_13; - u8 temp_v1_11; - void* temp_v0_32; - void* temp_v0_33; - u32 phi_t3; - s16 phi_t4; - s16 phi_t1; - s16 phi_t0; - s32 phi_v0_7; - void* phi_a0_2; - void* phi_a0_3; + s16 sp4C; s16 phi_t0_2; s16 phi_a2; - s16 phi_v1_4; - Gfx* gfx; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -2230,7 +2215,7 @@ void Interface_Draw(GlobalContext* globalCtx) { case 0x1B: case 0x21: case 0x49: - if (gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { + if (gSaveContext.save.inventory.dungeonKeys[0, gSaveContext.mapIndex] >= 0) { // Small Key Icon gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); @@ -2244,7 +2229,7 @@ void Interface_Draw(GlobalContext* globalCtx) { TEXEL0, 0, PRIMITIVE, 0); counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]; + counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[0, gSaveContext.mapIndex]; while (counterDigits[3] >= 10) { counterDigits[2]++; @@ -2265,7 +2250,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPTextureRectangle(OVERLAY_DISP++, 168, 760, 200, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - sp2CA = 50; + sp2CA += 8; } gDPPipeSync(OVERLAY_DISP++); @@ -2318,7 +2303,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); gSPTextureRectangle(OVERLAY_DISP++, 168, 760, 200, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - sp2CA = 50; + sp2CA += 8; } gDPPipeSync(OVERLAY_DISP++); @@ -2332,6 +2317,8 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + break; + default: break; } @@ -2357,50 +2344,33 @@ void Interface_Draw(GlobalContext* globalCtx) { counterDigits[2] -= 10; } - phi_t4 = D_801BFD24[CUR_UPG_VALUE(UPG_WALLET)]; - phi_t0 = D_801BFD1C[CUR_UPG_VALUE(UPG_WALLET)]; + sp2CC = D_801BFD1C[CUR_UPG_VALUE(UPG_WALLET)]; + sp2C8 = D_801BFD24[CUR_UPG_VALUE(UPG_WALLET)]; - phi_v1_4 = interfaceCtx->magicAlpha; - if (phi_v1_4 > 180) { - phi_v1_4 = 180; + sp4C = interfaceCtx->magicAlpha; + if (sp4C > 180) { + sp4C = 180; } - sp2CA = 42; - phi_t1 = 0; + for (sp2CE = 0, sp2CA = 42; sp2CE < sp2C8; sp2CE++, sp2CC++, sp2CA += 8) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sp4C); - if (phi_t4 > 0) { - phi_t3 = phi_v1_4 & 0xFF; - do { - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, phi_t3); + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), 8, 16, + sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); - sp2C8 = phi_t4; - sp4C = phi_t3; - sp2CE = phi_t1; - sp2CC = phi_t0; + gDPPipeSync(OVERLAY_DISP++); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[phi_t0]), 8, - 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); + if (gSaveContext.save.playerData.rupees == CAPACITY(UPG_WALLET, CUR_UPG_VALUE(UPG_WALLET))) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); + } else if (gSaveContext.save.playerData.rupees != 0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); + } - gDPPipeSync(OVERLAY_DISP++); - - temp_t1 = phi_t1 + 1; - - if (gSaveContext.save.playerData.rupees == CAPACITY(UPG_WALLET, CUR_UPG_VALUE(UPG_WALLET))) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); - } else if (gSaveContext.save.playerData.rupees != 0) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, interfaceCtx->magicAlpha); - } - - gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 824, (sp2CA * 4) + 0x20, 888, G_TX_RENDERTILE, 0, 0, - 1 << 10, 1 << 10); - - sp2CA = sp2CA + 8; - phi_t1 = temp_t1; - phi_t0 = phi_t0 + 1; - } while (temp_t1 < phi_t4); + gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 824, (sp2CA * 4) + 0x20, 888, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); } func_80116918(globalCtx); @@ -2413,7 +2383,7 @@ void Interface_Draw(GlobalContext* globalCtx) { func_8012C654(globalCtx->state.gfxCtx); func_80117100(globalCtx); - if (player->transformation == gSaveContext.save.playerForm) { + if (player->transformation == (0, gSaveContext.save.playerForm)) { func_80118084(globalCtx); } @@ -2423,50 +2393,38 @@ void Interface_Draw(GlobalContext* globalCtx) { if (globalCtx->pauseCtx.state == 0) { if (globalCtx->pauseCtx.debugState == 0) { - temp_v1_11 = interfaceCtx->unk_280; - if (temp_v1_11 != 0) { - if (temp_v1_11 < 0x14) { - if ((temp_v1_11 & 1) == 0) { + if ((interfaceCtx->unk_280 != 0) && (interfaceCtx->unk_280 < 20)) { + if ((interfaceCtx->unk_280 % 2) == 0) { - temp_t1_2 = (temp_v1_11 >> 1) - 1; - sp2C0 = interfaceCtx->unk_284 / 100.0f; + sp2CE = (interfaceCtx->unk_280 >> 1) - 1; + sp2C0 = interfaceCtx->unk_284 / 100.0f; - if (temp_t1_2 == 3) { - interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; - interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = - interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; - interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; - } - interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; - - sp2CE = temp_t1_2; - - func_8012C8D4(globalCtx->state.gfxCtx); - - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[temp_t1_2].r, D_801BFD6C[temp_t1_2].g, - D_801BFD6C[temp_t1_2].b, interfaceCtx->unk_282); - - sp2CE = temp_t1_2; - - Matrix_InsertTranslation(0.0f, -40.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); - - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, interfaceCtx->actionVtx + 0x280, 4, 0); - - sp2CE = temp_t1_2; - - OVERLAY_DISP = - func_8010DC58(OVERLAY_DISP, D_801BFD54[temp_t1_2], D_801BFD64[temp_t1_2], 32, 0); + if (sp2CE == 3) { + interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; + interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = + interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; + interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; } - } else { - goto block_56; + + interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; + + func_8012C8D4(globalCtx->state.gfxCtx); + + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[sp2CE].r, D_801BFD6C[sp2CE].g, + D_801BFD6C[sp2CE].b, interfaceCtx->unk_282); + + Matrix_InsertTranslation(0.0f, -40.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x28], 4, 0); + + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); } } else { - block_56: func_80119610(globalCtx); } } @@ -2480,11 +2438,8 @@ void Interface_Draw(GlobalContext* globalCtx) { func_8011CA64(globalCtx); } - temp_v0_19 = D_801BF884; - phi_v0_7 = temp_v0_19; - // PictoBox - if (temp_v0_19 == 1) { + if (D_801BF884 == 1) { func_8012C654(globalCtx->state.gfxCtx); @@ -2515,20 +2470,11 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) * 4) + 0x80, (YREG(43) * 4) + 0x20, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - - phi_v0_7 = D_801BF884; } - if (phi_v0_7 >= 2) { + if (D_801BF884 >= 2) { if ((globalCtx->actorCtx.unk5 & 4) == 0) { - temp_v0_32 = globalCtx->unk_18E5C; - if (temp_v0_32 != 0) { - phi_a0_2 = temp_v0_32; - } else { - phi_a0_2 = D_801FBB90; - } - - func_801663C4(phi_a0_2, gSaveContext.pictoPhoto, 0x4600, globalCtx); + func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), gSaveContext.pictoPhoto, 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; @@ -2538,7 +2484,7 @@ void Interface_Draw(GlobalContext* globalCtx) { Interface_ChangeAlpha(50); } else { - if (phi_v0_7 == 2) { + if (D_801BF884 == 2) { D_801BF884 = 3; func_801518B0(globalCtx, 0xF8, NULL); @@ -2558,30 +2504,15 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); - phi_t0_2 = 0; phi_a2 = 0x1F; - - do { - temp_v0_33 = globalCtx->unk_18E5C; - temp_t0 = phi_t0_2 + 1; - - if (temp_v0_33 != NULL) { - phi_a0_3 = temp_v0_33; - } else { - phi_a0_3 = D_801FBB90; - } - - gDPLoadTextureBlock(OVERLAY_DISP++, (u32)phi_a0_3 + (phi_t0_2 * 0x500), G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, + for (phi_t0_2 = 0; phi_t0_2 < 14; phi_t0_2++, phi_a2 += 8) { + gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90) + (0x500 * phi_t0_2), G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, 320, temp_v1_13, 960, temp_v1_13 + 0x20, G_TX_RENDERTILE, 0, 0, + gSPTextureRectangle(OVERLAY_DISP++, 320, phi_a2 * 4, 960, phi_a2 * 4 + 0x20, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - - phi_t0_2 = temp_t0; - phi_a2 = phi_a2 + 8; - - } while (temp_t0 < 14); + } } } From 52d57dd822dafbc340bedde8ab00c4b838f5a1a3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 03:38:06 +1100 Subject: [PATCH 009/160] Interface_Draw down to score of 315 --- assets/xml/misc/parameter_static.xml | 2 +- include/functions.h | 2 +- src/code/sched.c | 1 + src/code/z_parameter.c | 277 +++++++++++++-------------- 4 files changed, 138 insertions(+), 144 deletions(-) diff --git a/assets/xml/misc/parameter_static.xml b/assets/xml/misc/parameter_static.xml index 2d0385ef3..bf67840b8 100644 --- a/assets/xml/misc/parameter_static.xml +++ b/assets/xml/misc/parameter_static.xml @@ -110,7 +110,7 @@ - + diff --git a/include/functions.h b/include/functions.h index 888ea76dc..dd3cd4dc1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1967,7 +1967,7 @@ void func_8010A2DC(GlobalContext* globalCtx); void func_8010A33C(GlobalContext* globalCtx, s16 param_2); // void func_8010A410(void); // void func_8010A430(void); -// void func_8010A54C(void); +void func_8010A54C(GlobalContext* globalCtx); // void func_8010A580(void); // void func_8010A760(void); // void func_8010A7CC(void); diff --git a/src/code/sched.c b/src/code/sched.c index 927a48f66..5f9cdf236 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #define RSP_DONE_MSG 667 diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3e61e3fa4..e85af0a54 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,6 +1,11 @@ #include "global.h" #include "misc/parameter_static/parameter_static.h" +void func_801663C4(u8* arg0, u8* arg1, u32 arg2); +extern Gfx D_0E0002E0[]; // Display List +extern u8 D_801ABAB0[]; +extern u8 D_801E3BB0[]; + typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -617,78 +622,6 @@ s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; -s16 D_801BFD1C[] = { - 1, - 0, - 0, - 0, -}; - -s16 D_801BFD24[] = { - 2, - 3, - 3, - 0, -}; - -Color_RGB16 D_801BFD2C[] = { - { 200, 255, 100 }, - { 170, 170, 255 }, - { 255, 105, 105 }, -}; - -Color_RGB16 D_801BFD40[] = { - { 0, 80, 0 }, - { 10, 10, 80 }, - { 40, 10, 0 }, -}; - -TexturePtr D_801BFD54[] = { - gMinigameCountdown3Tex, - gMinigameCountdown2Tex, - gMinigameCountdown1Tex, - gMinigameGoTex, -}; - -// Texture heights of D_801BFD54 -s16 D_801BFD64[] = { - 24, - 24, - 24, - 40, -}; - -Color_RGB16 D_801BFD6C[] = { - { 100, 255, 100 }, - { 255, 255, 60 }, - { 255, 100, 0 }, - { 120, 170, 255 }, -}; - -s32 D_801BFD84[] = { - 0x07000000, - 0x07012C00, -}; - -s32 D_801BFD8C[] = { - 0x07025800, - 0x07025A00, -}; - -s32 D_801BFD94[] = { - 0x00000000, -}; - -s32 D_801BFD98[] = { - 0x00000000, - 0x00000000, -}; - -s16 D_801BFDA0[] = { - 0x1DE, 0x1FF, 0x25D, 0x1DB, 0x1DA, 0x1FE, 0x219, 0x24C, 0x221, 0x25E, 0x200, 0x1FD, - 0x25C, 0x25F, 0x1DC, 0x24E, 0x252, 0x1DD, 0x1D9, 0x214, 0x1E4, 0x1E1, 0x1E2, 0x1E3, -}; - Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, @@ -830,6 +763,8 @@ Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidt return displayListHead; } +// Interface_InitVertices +void func_8010E028(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E028.s") void func_8010E968(s32 arg0) { @@ -2018,6 +1953,7 @@ void func_80116088(void) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116348.s") +void func_80116918(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116918.s") void func_80116FD8(GlobalContext* globalCtx, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { @@ -2049,20 +1985,26 @@ void func_801170B8(InterfaceContext* interfaceCtx) { func_8013FBC8(&interfaceCtx->view); } +void func_80117100(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117100.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117A20.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117BD0.s") +void func_80118084(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s") +void func_80118890(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118890.s") +void func_80118BA4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118BA4.s") +void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +void func_80119610(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { @@ -2102,6 +2044,7 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") +void func_8011C4C4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") #ifdef NON_MATCHING @@ -2124,47 +2067,78 @@ void func_8011C808(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") +void func_8011CA64(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") +void func_8011E730(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") -void func_8010E028(GlobalContext* globalCtx); -void func_8010A54C(GlobalContext*); -void func_80116918(GlobalContext*); -void func_80117100(GlobalContext*); -void func_80118084(GlobalContext*); -void func_80118890(GlobalContext*); -void func_80118BA4(GlobalContext*); -void func_80119030(GlobalContext*); -void func_80119610(GlobalContext*); -void func_8011C4C4(GlobalContext*); -void func_8011CA64(GlobalContext*); -void func_8011E730(GlobalContext*); -void func_801663C4(u8* arg0, s8* arg1, s32 arg2); -extern Gfx D_0E0002E0[]; // Display List -extern u8 D_801ABAB0[]; -extern u8 D_801E3BB0[]; +// rupeeDigitsFirst +s16 D_801BFD1C[] = { 1, 0, 0, 0 }; -#ifdef NON_EQUIVALENT +// rupeeDigitsCount +s16 D_801BFD24[] = { 2, 3, 3, 0 }; + +// rupeeIconPrimColor +Color_RGB16 D_801BFD2C[] = { + { 200, 255, 100 }, + { 170, 170, 255 }, + { 255, 105, 105 }, +}; + +// rupeeIconEnvColor +Color_RGB16 D_801BFD40[] = { + { 0, 80, 0 }, + { 10, 10, 80 }, + { 40, 10, 0 }, +}; + +// minigameCountdownTexs +TexturePtr D_801BFD54[] = { + gMinigameCountdown3Tex, + gMinigameCountdown2Tex, + gMinigameCountdown1Tex, + gMinigameCountdownGoTex, +}; + +// minigameCountdownTexHeights +s16 D_801BFD64[] = { 24, 24, 24, 40 }; + +// minigameCountdownPrimColor +Color_RGB16 D_801BFD6C[] = { + { 100, 255, 100 }, + { 255, 255, 60 }, + { 255, 100, 0 }, + { 120, 170, 255 }, +}; + +s32 D_801BFD84[] = { + 0x07000000, + 0x07012C00, +}; + +// TLUT +u32 D_801BFD8C[] = { + 0x07025800, + 0x07025A00, +}; + +#ifdef NON_MATCHING void Interface_Draw(GlobalContext* globalCtx) { s32 pad; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; Player* player = GET_PLAYER(globalCtx); Gfx* gfx; - PauseContext* pauseCtx = &globalCtx->pauseCtx; - s16 sp2CE; s16 sp2CC; s16 sp2CA; s16 sp2C8; + PauseContext* pauseCtx = &globalCtx->pauseCtx; f32 sp2C0; s16 counterDigits[4]; // sp2B8 - s16 sp4C; - s16 phi_t0_2; - s16 phi_a2; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -2174,7 +2148,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPSegment(OVERLAY_DISP++, 0x0B, interfaceCtx->mapSegment); if (pauseCtx->debugState == 0) { - func_8010E028(globalCtx); // Interface_InitVertices + func_8010E028(globalCtx); func_801170B8(interfaceCtx); if (interfaceCtx->unk_31C == 2) { @@ -2210,11 +2184,11 @@ void Interface_Draw(GlobalContext* globalCtx) { OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); switch (globalCtx->sceneNum) { - case 0x16: - case 0x18: - case 0x1B: - case 0x21: - case 0x49: + case SCENE_INISIE_N: + case SCENE_INISIE_R: + case SCENE_MITURIN: + case SCENE_HAKUGIN: + case SCENE_SEA: if (gSaveContext.save.inventory.dungeonKeys[0, gSaveContext.mapIndex] >= 0) { // Small Key Icon gDPPipeSync(OVERLAY_DISP++); @@ -2265,8 +2239,8 @@ void Interface_Draw(GlobalContext* globalCtx) { 1 << 10, 1 << 10); } break; - case 0x27: - case 0x28: + case SCENE_KINSTA1: + case SCENE_KINDAN2: // Gold Skulltula Icon gDPPipeSync(OVERLAY_DISP++); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -2383,7 +2357,7 @@ void Interface_Draw(GlobalContext* globalCtx) { func_8012C654(globalCtx->state.gfxCtx); func_80117100(globalCtx); - if (player->transformation == (0, gSaveContext.save.playerForm)) { + if (player->transformation == ((void)0, gSaveContext.save.playerForm)) { func_80118084(globalCtx); } @@ -2391,42 +2365,40 @@ void Interface_Draw(GlobalContext* globalCtx) { func_80118BA4(globalCtx); func_80119030(globalCtx); - if (globalCtx->pauseCtx.state == 0) { - if (globalCtx->pauseCtx.debugState == 0) { - if ((interfaceCtx->unk_280 != 0) && (interfaceCtx->unk_280 < 20)) { - if ((interfaceCtx->unk_280 % 2) == 0) { + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + if ((interfaceCtx->unk_280 != 0) && (interfaceCtx->unk_280 < 20)) { + if (((u32)interfaceCtx->unk_280 % 2) == 0) { - sp2CE = (interfaceCtx->unk_280 >> 1) - 1; - sp2C0 = interfaceCtx->unk_284 / 100.0f; + sp2CE = (interfaceCtx->unk_280 >> 1) - 1; + sp2C0 = interfaceCtx->unk_284 / 100.0f; - if (sp2CE == 3) { - interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; - interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = - interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; - interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; - } - - interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; - - func_8012C8D4(globalCtx->state.gfxCtx); - - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[sp2CE].r, D_801BFD6C[sp2CE].g, - D_801BFD6C[sp2CE].b, interfaceCtx->unk_282); - - Matrix_InsertTranslation(0.0f, -40.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); - - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x28], 4, 0); - - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); + if (sp2CE == 3) { + interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; + interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = + interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; + interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; } - } else { - func_80119610(globalCtx); + + interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; + + func_8012C8D4(globalCtx->state.gfxCtx); + + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[sp2CE].r, D_801BFD6C[sp2CE].g, D_801BFD6C[sp2CE].b, + interfaceCtx->unk_282); + + Matrix_InsertTranslation(0.0f, -40.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x28], 4, 0); + + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); } + } else { + func_80119610(globalCtx); } } @@ -2474,7 +2446,8 @@ void Interface_Draw(GlobalContext* globalCtx) { if (D_801BF884 >= 2) { if ((globalCtx->actorCtx.unk5 & 4) == 0) { - func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), gSaveContext.pictoPhoto, 0x4600); + func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + gSaveContext.pictoPhoto, 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; @@ -2484,14 +2457,18 @@ void Interface_Draw(GlobalContext* globalCtx) { Interface_ChangeAlpha(50); } else { - if (D_801BF884 == 2) { + s16 phi_a2; + s16 phi_t0_2; + if (D_801BF884 == 2) { D_801BF884 = 3; func_801518B0(globalCtx, 0xF8, NULL); Interface_ChangeAlpha(1); player->stateFlags1 |= 0x200; } + if (1) {} + gDPPipeSync(OVERLAY_DISP++); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); @@ -2506,12 +2483,14 @@ void Interface_Draw(GlobalContext* globalCtx) { phi_a2 = 0x1F; for (phi_t0_2 = 0; phi_t0_2 < 14; phi_t0_2++, phi_a2 += 8) { - gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90) + (0x500 * phi_t0_2), G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, - 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(OVERLAY_DISP++, + (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90) + + (0x500 * phi_t0_2), + G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, 320, phi_a2 * 4, 960, phi_a2 * 4 + 0x20, G_TX_RENDERTILE, 0, 0, - 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, ((void)0, 320), phi_a2 * 4, ((void)0, 960), phi_a2 * 4 + 0x20, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } } @@ -2565,6 +2544,14 @@ void func_80121064(GlobalContext* globalCtx) { func_80120F90(globalCtx, 0); } +s32 D_801BFD94[] = { + 0x00000000, +}; +s32 D_801BFD98[] = { + 0x00000000, + 0x00000000, +}; + #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Update.s") void func_80121F94(void) { @@ -2573,3 +2560,9 @@ void func_80121F94(void) { } #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121FC4.s") + +// Likely belongs to z_player_lib (D_801BFD98 + 6) +s16 D_801BFDA0[] = { + 0x1DE, 0x1FF, 0x25D, 0x1DB, 0x1DA, 0x1FE, 0x219, 0x24C, 0x221, 0x25E, 0x200, 0x1FD, + 0x25C, 0x25F, 0x1DC, 0x24E, 0x252, 0x1DD, 0x1D9, 0x214, 0x1E4, 0x1E1, 0x1E2, 0x1E3, +}; From 8575fde146c148b4e54000ab23eaf5ef24e8f10b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 04:25:35 +1100 Subject: [PATCH 010/160] Names and Docs --- include/functions.h | 10 +++--- include/z64.h | 14 ++++---- src/code/z_parameter.c | 62 ++++++++++++++++++---------------- tools/disasm/functions.txt | 10 +++--- tools/sizes/code_functions.csv | 10 +++--- 5 files changed, 54 insertions(+), 52 deletions(-) diff --git a/include/functions.h b/include/functions.h index dd3cd4dc1..300dffa21 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2052,7 +2052,7 @@ void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); // void func_8010D9F4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); // void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); // void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); -// void func_8010E028(void); +// void Interface_InitVertices(void); // void func_8010E968(void); void func_8010E9F0(s16 arg0, s16 arg1); // void func_8010EA9C(void); @@ -2099,10 +2099,10 @@ void func_80115D5C(GameState* gamestate); // void func_80116088(void); // void func_80116114(void); // void func_80116348(void); -// void func_80116918(void); +// void Interface_DrawMagicBar(void); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); -// void func_80117100(void); +// void Interface_DrawItemButtons(void); // void func_80117A20(void); // void func_80117BD0(void); // void func_80118084(void); @@ -2121,9 +2121,9 @@ void func_8011C808(GlobalContext* globalCtx); // void func_8011E3B4(void); // void func_8011E730(void); // void Interface_Draw(UNK_TYPE4 ctxt); -// void func_80120F90(void); +// void Interface_LoadStory(void); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); -// void func_80121064(void); +// void Interface_AllocStory(void); // void Interface_Update(void); // void func_80121F94(void); void func_80121FC4(GlobalContext* globalCtx); diff --git a/include/z64.h b/include/z64.h index dd4f6fe49..d82513897 100644 --- a/include/z64.h +++ b/include/z64.h @@ -739,13 +739,13 @@ typedef struct { /* 0x319 */ u8 all; // "another"; enables all item restrictions } restrictions; // size = 0xC /* 0x31A */ u8 unk_31A; - /* 0x31B */ u8 unk_31B; - /* 0x31C */ u8 unk_31C; - /* 0x320 */ OSMesgQueue unk_320; - /* 0x338 */ OSMesg unk_338; - /* 0x33C */ void* unk_33C; - /* 0x340 */ u32 unk_340; - /* 0x344 */ u32 unk_344; + /* 0x31B */ u8 storyType; + /* 0x31C */ u8 storyState; + /* 0x320 */ OSMesgQueue storyMsgQueue; + /* 0x338 */ OSMesg storyMsgBuf; + /* 0x33C */ void* storySegment; + /* 0x340 */ u32 storyAddr; + /* 0x344 */ u32 storySize; } InterfaceContext; // size = 0x348 typedef struct { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e85af0a54..92eaa3f25 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -763,9 +763,8 @@ Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidt return displayListHead; } -// Interface_InitVertices -void func_8010E028(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E028.s") +void Interface_InitVertices(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_InitVertices.s") void func_8010E968(s32 arg0) { s32 btnAPressed; @@ -1953,8 +1952,8 @@ void func_80116088(void) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116348.s") -void func_80116918(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116918.s") +void Interface_DrawMagicBar(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s") void func_80116FD8(GlobalContext* globalCtx, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -1985,8 +1984,8 @@ void func_801170B8(InterfaceContext* interfaceCtx) { func_8013FBC8(&interfaceCtx->view); } -void func_80117100(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117100.s") +void Interface_DrawItemButtons(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117A20.s") @@ -2114,12 +2113,13 @@ Color_RGB16 D_801BFD6C[] = { { 120, 170, 255 }, }; +// grandma's story pictures s32 D_801BFD84[] = { 0x07000000, 0x07012C00, }; -// TLUT +// grandma's story TLUT u32 D_801BFD8C[] = { 0x07025800, 0x07025A00, @@ -2148,11 +2148,11 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPSegment(OVERLAY_DISP++, 0x0B, interfaceCtx->mapSegment); if (pauseCtx->debugState == 0) { - func_8010E028(globalCtx); + Interface_InitVertices(globalCtx); func_801170B8(interfaceCtx); - if (interfaceCtx->unk_31C == 2) { - gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->unk_33C); + if (interfaceCtx->storyState == 2) { + gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->storySegment); func_8012C628(globalCtx->state.gfxCtx); gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_POINT); @@ -2160,7 +2160,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPLoadUcodeEx(OVERLAY_DISP++, OS_K0_TO_PHYSICAL(D_801ABAB0), OS_K0_TO_PHYSICAL(D_801E3BB0), 0x800); gfx = OVERLAY_DISP; - func_80172758(&gfx, D_801BFD84[interfaceCtx->unk_31B], D_801BFD8C[interfaceCtx->unk_31B], 0x140, 0xF0, 2, 1, + func_80172758(&gfx, D_801BFD84[interfaceCtx->storyType], D_801BFD8C[interfaceCtx->storyType], 0x140, 0xF0, 2, 1, 0x8000, 0x100, 0.0f, 0.0f, 1.0f, 1.0f, 0); OVERLAY_DISP = gfx; @@ -2347,7 +2347,7 @@ void Interface_Draw(GlobalContext* globalCtx) { 1 << 10); } - func_80116918(globalCtx); + Interface_DrawMagicBar(globalCtx); func_8010A54C(globalCtx); if ((gGameInfo->data[0xBE] != 2) && (gGameInfo->data[0xBE] != 3)) { @@ -2355,7 +2355,8 @@ void Interface_Draw(GlobalContext* globalCtx) { } func_8012C654(globalCtx->state.gfxCtx); - func_80117100(globalCtx); + + Interface_DrawItemButtons(globalCtx); if (player->transformation == ((void)0, gSaveContext.save.playerForm)) { func_80118084(globalCtx); @@ -2367,6 +2368,7 @@ void Interface_Draw(GlobalContext* globalCtx) { if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { if ((interfaceCtx->unk_280 != 0) && (interfaceCtx->unk_280 < 20)) { + // Minigame Countdown if (((u32)interfaceCtx->unk_280 % 2) == 0) { sp2CE = (interfaceCtx->unk_280 >> 1) - 1; @@ -2509,39 +2511,39 @@ void Interface_Draw(GlobalContext* globalCtx) { #endif #ifdef NON_MATCHING -void func_80120F90(GlobalContext* globalCtx, s32 block) { +void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - switch (interfaceCtx->unk_31C) { + switch (interfaceCtx->storyState) { case 0: - if (interfaceCtx->unk_33C == NULL) { + if (interfaceCtx->storySegment == NULL) { break; } - osCreateMesgQueue(&interfaceCtx->unk_320, interfaceCtx->unk_338, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->unk_33C, interfaceCtx->unk_340, - interfaceCtx->unk_344, 0, &interfaceCtx->unk_320, NULL); - interfaceCtx->unk_31C = 1; + osCreateMesgQueue(&interfaceCtx->storyMsgQueue, interfaceCtx->storyMsgBuf, 1); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->storySegment, interfaceCtx->storyAddr, + interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); + interfaceCtx->storyState = 1; case 1: - if (osRecvMesg(&interfaceCtx->unk_320, NULL, block) == 0) { - interfaceCtx->unk_31C = 2; + if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, block) == 0) { + interfaceCtx->storyState = 2; } break; } } #else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80120F90.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadStory.s") #endif -void func_80121064(GlobalContext* globalCtx) { +void Interface_AllocStory(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - interfaceCtx->unk_340 = (u32)_story_staticSegmentRomStart; - interfaceCtx->unk_344 = (u32)_story_staticSegmentRomEnd - (u32)_story_staticSegmentRomStart; + interfaceCtx->storyAddr = (u32)_story_staticSegmentRomStart; + interfaceCtx->storySize = (u32)_story_staticSegmentRomEnd - (u32)_story_staticSegmentRomStart; - if (interfaceCtx->unk_33C == NULL) { - interfaceCtx->unk_33C = ZeldaArena_Malloc(interfaceCtx->unk_344); + if (interfaceCtx->storySegment == NULL) { + interfaceCtx->storySegment = ZeldaArena_Malloc(interfaceCtx->storySize); } - func_80120F90(globalCtx, 0); + Interface_LoadStory(globalCtx, 0); } s32 D_801BFD94[] = { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 6cce66120..38cab996b 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2092,7 +2092,7 @@ 0x8010D9F4:("func_8010D9F4",), 0x8010DC58:("func_8010DC58",), 0x8010DE38:("func_8010DE38",), - 0x8010E028:("func_8010E028",), + 0x8010E028:("Interface_InitVertices",), 0x8010E968:("func_8010E968",), 0x8010E9F0:("func_8010E9F0",), 0x8010EA9C:("func_8010EA9C",), @@ -2140,10 +2140,10 @@ 0x80116088:("func_80116088",), 0x80116114:("func_80116114",), 0x80116348:("func_80116348",), - 0x80116918:("func_80116918",), + 0x80116918:("Interface_DrawMagicBar",), 0x80116FD8:("func_80116FD8",), 0x801170B8:("func_801170B8",), - 0x80117100:("func_80117100",), + 0x80117100:("Interface_DrawItemButtons",), 0x80117A20:("func_80117A20",), 0x80117BD0:("func_80117BD0",), 0x80118084:("func_80118084",), @@ -2162,8 +2162,8 @@ 0x8011E3B4:("func_8011E3B4",), 0x8011E730:("func_8011E730",), 0x8011F0E0:("Interface_Draw",), - 0x80120F90:("func_80120F90",), - 0x80121064:("func_80121064",), + 0x80120F90:("Interface_LoadStory",), + 0x80121064:("Interface_AllocStory",), 0x801210E0:("Interface_Update",), 0x80121F94:("func_80121F94",), 0x80121FC4:("func_80121FC4",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 20ac0414e..81e8aea7d 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1606,7 +1606,7 @@ asm/non_matchings/code/z_parameter/Gfx_TextureI8.s,Gfx_TextureI8,0x8010D7D0,0x89 asm/non_matchings/code/z_parameter/func_8010D9F4.s,func_8010D9F4,0x8010D9F4,0x99 asm/non_matchings/code/z_parameter/func_8010DC58.s,func_8010DC58,0x8010DC58,0x78 asm/non_matchings/code/z_parameter/func_8010DE38.s,func_8010DE38,0x8010DE38,0x7C -asm/non_matchings/code/z_parameter/func_8010E028.s,func_8010E028,0x8010E028,0x250 +asm/non_matchings/code/z_parameter/Interface_InitVertices.s,Interface_InitVertices,0x8010E028,0x250 asm/non_matchings/code/z_parameter/func_8010E968.s,func_8010E968,0x8010E968,0x22 asm/non_matchings/code/z_parameter/func_8010E9F0.s,func_8010E9F0,0x8010E9F0,0x2B asm/non_matchings/code/z_parameter/func_8010EA9C.s,func_8010EA9C,0x8010EA9C,0x2D @@ -1654,10 +1654,10 @@ asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 asm/non_matchings/code/z_parameter/func_80116114.s,func_80116114,0x80116114,0x8D asm/non_matchings/code/z_parameter/func_80116348.s,func_80116348,0x80116348,0x174 -asm/non_matchings/code/z_parameter/func_80116918.s,func_80116918,0x80116918,0x1B0 +asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s,Interface_DrawMagicBar,0x80116918,0x1B0 asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 -asm/non_matchings/code/z_parameter/func_80117100.s,func_80117100,0x80117100,0x248 +asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 asm/non_matchings/code/z_parameter/func_80117A20.s,func_80117A20,0x80117A20,0x6C asm/non_matchings/code/z_parameter/func_80117BD0.s,func_80117BD0,0x80117BD0,0x12D asm/non_matchings/code/z_parameter/func_80118084.s,func_80118084,0x80118084,0x203 @@ -1676,8 +1676,8 @@ asm/non_matchings/code/z_parameter/func_8011CA64.s,func_8011CA64,0x8011CA64,0x65 asm/non_matchings/code/z_parameter/func_8011E3B4.s,func_8011E3B4,0x8011E3B4,0xDF asm/non_matchings/code/z_parameter/func_8011E730.s,func_8011E730,0x8011E730,0x26C asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x7AC -asm/non_matchings/code/z_parameter/func_80120F90.s,func_80120F90,0x80120F90,0x35 -asm/non_matchings/code/z_parameter/func_80121064.s,func_80121064,0x80121064,0x1F +asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x80120F90,0x35 +asm/non_matchings/code/z_parameter/Interface_AllocStory.s,Interface_AllocStory,0x80121064,0x1F asm/non_matchings/code/z_parameter/Interface_Update.s,Interface_Update,0x801210E0,0x3AD asm/non_matchings/code/z_parameter/func_80121F94.s,func_80121F94,0x80121F94,0xC asm/non_matchings/code/z_parameter/func_80121FC4.s,func_80121FC4,0x80121FC4,0x147 From de1bd4e6dc71bbfd9ff90cf8d6a1aadc32f281e3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 16:05:03 +1100 Subject: [PATCH 011/160] Interface_Update OK (except for data-splitting issues) --- include/functions.h | 4 +- include/z64.h | 10 +- include/z64item.h | 3 +- include/z64save.h | 9 +- src/code/z_map_exp.c | 2 +- src/code/z_parameter.c | 487 +++++++++++++++++- src/code/z_scene.c | 14 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 2 +- src/overlays/actors/ovl_En_Dai/z_en_dai.c | 2 +- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 2 +- src/overlays/actors/ovl_En_Hg/z_en_hg.c | 2 +- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 10 +- src/overlays/actors/ovl_En_Rd/z_en_rd.c | 14 +- src/overlays/actors/ovl_En_Toto/z_en_toto.c | 2 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 2 +- tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 17 files changed, 519 insertions(+), 54 deletions(-) diff --git a/include/functions.h b/include/functions.h index 300dffa21..7400f844f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1968,7 +1968,7 @@ void func_8010A33C(GlobalContext* globalCtx, s16 param_2); // void func_8010A410(void); // void func_8010A430(void); void func_8010A54C(GlobalContext* globalCtx); -// void func_8010A580(void); +// void Map_Update(void); // void func_8010A760(void); // void func_8010A7CC(void); // void func_8010A814(void); @@ -2098,7 +2098,7 @@ void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); // void func_80116088(void); // void func_80116114(void); -// void func_80116348(void); +// void Interface_UpdateMagicBar(void); // void Interface_DrawMagicBar(void); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); diff --git a/include/z64.h b/include/z64.h index d82513897..0ca115d9a 100644 --- a/include/z64.h +++ b/include/z64.h @@ -750,7 +750,7 @@ typedef struct { typedef struct { /* 0x00 */ u16 unk_0; - /* 0x02 */ u16 unk_2; + /* 0x02 */ u16 timeIncrement; /* 0x04 */ f32 unk_4; /* 0x08 */ f32 unk_8; /* 0x0C */ f32 unk_C; @@ -898,14 +898,16 @@ typedef struct { /* 0x11F10 */ s32 unk11F10; /* 0x11F14 */ UNK_TYPE1 pad11F14[0xE]; /* 0x11F22 */ u8 unk11F22; - /* 0x11F23 */ UNK_TYPE1 pad11F23[0xFD]; + /* 0x11F23 */ UNK_TYPE1 pad11F23[0xE3]; + /* 0x11F23 */ s16 unk12006; + /* 0x12007 */ UNK_TYPE1 pad12007[0x18]; /* 0x12020 */ u8 unk12020; /* 0x12021 */ u8 choiceIndex; /* 0x12022 */ u8 unk12022; /* 0x12023 */ u8 unk12023; /* 0x12024 */ UNK_TYPE1 unk12024[0x6]; - /* 0x1202A */ u16 unk1202A; - /* 0x1202C */ UNK_TYPE1 pad1202C[0x2]; + /* 0x1202A */ u16 ocarinaMode; + /* 0x1202C */ u16 ocarinaAction; /* 0x1202E */ u16 unk1202E; /* 0x12030 */ UNK_TYPE1 pad12030[0x14]; /* 0x12044 */ s16 unk12044; diff --git a/include/z64item.h b/include/z64item.h index d912169f2..8aa0b45a3 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -8,7 +8,8 @@ typedef enum { /* 0x0 */ EQUIP_SWORD, - /* 0x1 */ EQUIP_SHIELD + /* 0x1 */ EQUIP_SHIELD, + /* 0x2 */ EQUIP_TUNIC // Remnant of OoT } EquipmentType; typedef enum { diff --git a/include/z64save.h b/include/z64save.h index 9d15efe01..c8d15d4de 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -189,7 +189,7 @@ typedef struct { /* 0x3F54 */ u8 dogIsLost; // "dog_event_flag" /* 0x3F55 */ u8 nextTransition; // "next_wipe" /* 0x3F56 */ s16 worldMapArea; // "area_type" - /* 0x3F58 */ s16 unk_3F58; // "sunmoon_flag" + /* 0x3F58 */ s16 sunsSongState; // "sunmoon_flag" /* 0x3F5A */ s16 healthAccumulator; // "life_mode" /* 0x3F5C */ s32 unk_3F5C; // "bet_rupees" /* 0x3F60 */ u8 screenScaleFlag; // "framescale_flag" @@ -217,4 +217,11 @@ typedef enum { /* 0xFF */ BTN_DISABLED = 0xFF } ButtonStatus; +typedef enum { + /* 0 */ SUNSSONG_INACTIVE, + /* 1 */ SUNSSONG_START, // the suns ocarina effect signals that the song has finished playing + /* 2 */ SUNSSONG_SPEED_TIME, // suns was played where time passes, speed up the advancement of time + /* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads +} SunsSongState; + #endif diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 079117fd4..27a83c68a 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -28,4 +28,4 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_exp/func_8010A54C.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_exp/func_8010A580.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_exp/Map_Update.s") diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 92eaa3f25..9e6a18e9e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2,6 +2,9 @@ #include "misc/parameter_static/parameter_static.h" void func_801663C4(u8* arg0, u8* arg1, u32 arg2); +void Map_Update(GlobalContext* globalCtx); +s16 func_801242DC(GlobalContext*); // s32 func_8008F2F8 (OoT) + extern Gfx D_0E0002E0[]; // Display List extern u8 D_801ABAB0[]; extern u8 D_801E3BB0[]; @@ -139,12 +142,11 @@ s32 D_801BF888[] = { 0x00000000, }; +// sMinigameScoreTier s16 D_801BF88C = 0; -s32 D_801BF890[] = { - 0x00000000, - 0x00000000, -}; +// sMinigameScoreDigits +u16 D_801BF890[] = { 0, 0, 0, 0 }; s32 D_801BF898[] = { 0x00000000, @@ -169,9 +171,7 @@ s32 D_801BF8B0[] = { 0x00010007, 0x00070007, 0x00070008, 0x00080009, 0x00090000, }; -s32 D_801BF8DC[] = { - 0x00000000, -}; +s16 D_801BF8DC = 0; s16 D_801BF8E0 = 0; @@ -1602,6 +1602,7 @@ void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { // oot func_80083108 #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80110038.s") +void func_80111CB4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") void func_801129E4(GlobalContext* globalCtx) { @@ -1950,7 +1951,8 @@ void func_80116088(void) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116114.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116348.s") +void Interface_UpdateMagicBar(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s") void Interface_DrawMagicBar(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s") @@ -2037,10 +2039,13 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_28A[0] = 1; } +void func_8011B5C0(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") +void func_8011B9E0(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") +void func_8011BF70(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") void func_8011C4C4(GlobalContext* globalCtx); @@ -2069,6 +2074,7 @@ void func_8011C808(GlobalContext* globalCtx) { void func_8011CA64(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") +void func_8011E3B4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") void func_8011E730(GlobalContext* globalCtx); @@ -2335,7 +2341,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.save.playerData.rupees == CAPACITY(UPG_WALLET, CUR_UPG_VALUE(UPG_WALLET))) { + if (gSaveContext.save.playerData.rupees == CUR_CAPACITY(UPG_WALLET)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, interfaceCtx->magicAlpha); } else if (gSaveContext.save.playerData.rupees != 0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -2546,15 +2552,464 @@ void Interface_AllocStory(GlobalContext* globalCtx) { Interface_LoadStory(globalCtx, 0); } -s32 D_801BFD94[] = { - 0x00000000, -}; -s32 D_801BFD98[] = { - 0x00000000, - 0x00000000, -}; +// Is Matching: Need to work out D_801BFD98 conflicting with Player_Lib +#ifdef NON_MATCHING +void Interface_Update(GlobalContext* globalCtx) { + static u8 D_801BFD94 = 0; + static s16 D_801BFD98 = 0; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + MessageContext* msgCtx = &globalCtx->msgCtx; + Player* player = GET_PLAYER(globalCtx); + s16 alpha; // sp32 + s16 alpha1; // sp30 + u16 action; + s16 health; + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + if (globalCtx->gameOverCtx.state == 0) { + func_80111CB4(globalCtx); + } + } + + switch (gSaveContext.unk_3F20) { + case 0x1: + case 0x2: + case 0x8: + alpha = 255 - (gSaveContext.unk_3F24 << 5); + if (alpha < 0) { + alpha = 0; + } + + func_8010F1A8(globalCtx, alpha); + health = 2; // Fake + gSaveContext.unk_3F24 += health; + if (alpha == 0) { + gSaveContext.unk_3F20 = 0; + } + break; + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + case 0x9: + case 0xA: + case 0xB: + case 0xC: + case 0xD: + case 0xE: + case 0xF: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + alpha = 255 - (gSaveContext.unk_3F24 << 5); + if (alpha < 0) { + alpha = 0; + } + + func_8010F1A8(globalCtx, alpha); + gSaveContext.unk_3F24++; + if (alpha == 0) { + gSaveContext.unk_3F20 = 0; + } + break; + + case 0x32: + alpha = 255 - (gSaveContext.unk_3F24 << 5); + if (alpha < 0) { + alpha = 0; + } + + alpha1 = 255 - alpha; + if (alpha1 >= 255) { + alpha1 = 255; + } + + func_8010EF9C(globalCtx, alpha1); + + if (gSaveContext.buttonStatus[5] == 0xFF) { + if (interfaceCtx->startAlpha != 70) { + interfaceCtx->startAlpha = 70; + } + } else { + if (interfaceCtx->startAlpha != 255) { + interfaceCtx->startAlpha = alpha1; + } + } + + if (interfaceCtx->healthAlpha != 255) { + interfaceCtx->healthAlpha = alpha1; + } + + if (interfaceCtx->magicAlpha != 255) { + interfaceCtx->magicAlpha = alpha1; + } + + if (globalCtx->sceneNum == SCENE_SPOT00) { + if (interfaceCtx->minimapAlpha < 170) { + interfaceCtx->minimapAlpha = alpha1; + } else { + interfaceCtx->minimapAlpha = 170; + } + } else if (interfaceCtx->minimapAlpha != 255) { + interfaceCtx->minimapAlpha = alpha1; + } + + gSaveContext.unk_3F24++; + + if (alpha1 == 255) { + gSaveContext.unk_3F20 = 0; + } + break; + + case 0x34: + gSaveContext.unk_3F20 = 1; + func_8010F1A8(globalCtx, 0); + gSaveContext.unk_3F20 = 0; + default: + break; + + } + + Map_Update(globalCtx); + + if (gSaveContext.healthAccumulator != 0) { + gSaveContext.healthAccumulator -= 4; + gSaveContext.save.playerData.health += 4; + + if ((gSaveContext.save.playerData.health & 0xF) < 4) { + play_sound(NA_SE_SY_HP_RECOVER); + } + + // TODO: Missing s16 cast + health = gSaveContext.save.playerData.health; + if (health >= gSaveContext.save.playerData.healthCapacity) { + gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; + gSaveContext.healthAccumulator = 0; + } + } + + LifeMeter_UpdateSizeAndBeep(globalCtx); + D_801BF8DC = func_801242DC(globalCtx); + + if (D_801BF8DC == 1) { + if (CUR_EQUIP_VALUE_VOID(EQUIP_TUNIC) == 2) { + D_801BF8DC = 0; + } + } else if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { + if (CUR_EQUIP_VALUE_VOID(EQUIP_TUNIC) == 3) { + D_801BF8DC = 0; + } + } + + LifeMeter_UpdateColors(globalCtx); + + if (gSaveContext.rupeeAccumulator != 0) { + if (gSaveContext.rupeeAccumulator > 0) { + if (gSaveContext.save.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { + gSaveContext.rupeeAccumulator--; + gSaveContext.save.playerData.rupees++; + play_sound(NA_SE_SY_RUPY_COUNT); + } else { + // Max rupees + gSaveContext.save.playerData.rupees = CUR_CAPACITY(UPG_WALLET); + gSaveContext.rupeeAccumulator = 0; + } + } else if (gSaveContext.save.playerData.rupees != 0) { + if (gSaveContext.rupeeAccumulator <= -50) { + gSaveContext.rupeeAccumulator += 10; + gSaveContext.save.playerData.rupees -= 10; + if (gSaveContext.save.playerData.rupees < 0) { + gSaveContext.save.playerData.rupees = 0; + } + play_sound(NA_SE_SY_RUPY_COUNT); + } else { + gSaveContext.rupeeAccumulator++; + gSaveContext.save.playerData.rupees--; + play_sound(NA_SE_SY_RUPY_COUNT); + } + } else { + gSaveContext.rupeeAccumulator = 0; + } + + } + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + if (interfaceCtx->unk_286 != 0) { + if (interfaceCtx->unk_288 == 1) { + func_8011B5C0(globalCtx); + } else if (interfaceCtx->unk_288 == 2) { + func_8011B9E0(globalCtx); + } else if (interfaceCtx->unk_288 == 3) { + func_8011BF70(globalCtx); + } + } + } + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + if (interfaceCtx->unk_280) { + switch (interfaceCtx->unk_280) { + case 1: + case 3: + case 5: + case 7: + interfaceCtx->unk_282 = 255; + interfaceCtx->unk_284 = 100; + interfaceCtx->unk_280++; + if (interfaceCtx->unk_280 == 8) { + interfaceCtx->unk_284 = 160; + play_sound(NA_SE_SY_START_SHOT); + } else { + play_sound(NA_SE_SY_WARNING_COUNT_E); + } + break; + case 2: + case 4: + case 6: + interfaceCtx->unk_282 -= 10; + interfaceCtx->unk_284 += 3; + if (interfaceCtx->unk_282 < 22) { + interfaceCtx->unk_280++; + } + break; + case 8: + interfaceCtx->unk_282 += -10; + if (interfaceCtx->unk_282 <= 150) { + interfaceCtx->unk_280 = 0x1E; + } + break; + case 20: + interfaceCtx->unk_282 = 0; + interfaceCtx->unk_280++; + break; + case 21: + interfaceCtx->unk_282++; + if (interfaceCtx->unk_282 >= 18) { + interfaceCtx->unk_280 = 30; + } + break; + } + } + } + + switch (interfaceCtx->unk_210) { + case 1: + interfaceCtx->unk_218 += 10466.667f; + if (interfaceCtx->unk_218 >= 15700.0f) { + interfaceCtx->unk_218 = -15700.0f; + interfaceCtx->unk_210 = 2; + + if ((msgCtx->unk11F22 != 0) && (msgCtx->unk12006 == 0x26)) { + gGameInfo->data[0x55F] = -14; + } else { + gGameInfo->data[0x55F] = 0; + } + } + break; + case 2: + interfaceCtx->unk_218 += 10466.667f; + if (interfaceCtx->unk_218 >= 0.0f) { + interfaceCtx->unk_218 = 0.0f; + interfaceCtx->unk_210 = 0; + interfaceCtx->unk_212 = interfaceCtx->unk_214; + action = interfaceCtx->unk_212; + if ((action == DO_ACTION_MAX) || (action == DO_ACTION_MAX + 1)) { + action = DO_ACTION_NONE; + } + Interface_LoadActionLabel(&globalCtx->interfaceCtx, action, 0); + } + break; + case 3: + interfaceCtx->unk_218 += 10466.667f; + if (interfaceCtx->unk_218 >= 15700.0f) { + interfaceCtx->unk_218 = -15700.0f; + interfaceCtx->unk_210 = 2; + } + break; + case 4: + interfaceCtx->unk_218 += 10466.667f; + if (interfaceCtx->unk_218 >= 0.0f) { + interfaceCtx->unk_218 = 0.0f; + interfaceCtx->unk_210 = 0; + interfaceCtx->unk_212 = interfaceCtx->unk_214; + action = interfaceCtx->unk_212; + if ((action == DO_ACTION_MAX) || (action == DO_ACTION_MAX + 1)) { + action = DO_ACTION_NONE; + } + + Interface_LoadActionLabel(&globalCtx->interfaceCtx, action, 0); + } + break; + } + + if (!(player->stateFlags1 & 0x200)) { + if (gGameInfo->data[0x544] == 1) { + if (gSaveContext.save.playerData.magicAcquired == 0) { + gSaveContext.save.playerData.magicAcquired = 1; + } + gSaveContext.save.playerData.doubleMagic = 1; + gSaveContext.save.playerData.magic = 0x60; + gSaveContext.save.playerData.magicLevel = 0; + gGameInfo->data[0x544] = 0; + } else if (gGameInfo->data[0x544] == -1) { + if (gSaveContext.save.playerData.magicAcquired == 0) { + gSaveContext.save.playerData.magicAcquired = 1; + } + gSaveContext.save.playerData.doubleMagic = 0; + gSaveContext.save.playerData.magic = 0x30; + gSaveContext.save.playerData.magicLevel = 0; + gGameInfo->data[0x544] = 0; + } + + if (gSaveContext.save.playerData.magicAcquired != 0) { + if (gSaveContext.save.playerData.magicLevel == 0) { + gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.doubleMagic + 1; + gSaveContext.unk_3F30 = gSaveContext.save.playerData.magic; + gSaveContext.save.playerData.magic = 0; + gSaveContext.unk_3F28 = 8; + gSaveContext.save.equips.buttonItems[3][0] = ITEM_NUT; + } + } + Interface_UpdateMagicBar(globalCtx); + + func_80116088(); + } + + + if (gSaveContext.unk_3DD0[5] == 0) { + if ((D_801BF8DC == 1) || (D_801BF8DC == 4)) { + if (CUR_FORM != 2) { + if (globalCtx->gameOverCtx.state == 0) { + if ((gSaveContext.save.playerData.health >> 1) != 0) { + gSaveContext.unk_3DD0[5] = 8; + gSaveContext.timerX[5] = 115; + gSaveContext.timerY[5] = 80; + D_801BF8E0 = 1; + gSaveContext.unk_3DD7[5] = 0; + } + } + } + } + } else { + if (((D_801BF8DC == 0) || (D_801BF8DC == 3)) && (gSaveContext.unk_3DD0[5] < 5)) { + gSaveContext.unk_3DD0[5] = 0; + } + } + + if (gSaveContext.minigameState == 1) { + gSaveContext.minigameScore += interfaceCtx->unk_25C; + gSaveContext.unk_3F3C += interfaceCtx->unk_25E; + interfaceCtx->unk_25C = 0; + interfaceCtx->unk_25E = 0; + + if (D_801BF88C == 0) { + if (gSaveContext.minigameScore >= 1000) { + D_801BF88C++; + } + } else if (D_801BF88C == 1) { + if (gSaveContext.minigameScore >= 1500) { + D_801BF88C++; + } + } + + D_801BF890[0] = D_801BF890[1] = 0; + D_801BF890[2] = 0; + D_801BF890[3] = gSaveContext.minigameScore; + + while (D_801BF890[3] >= 1000) { + D_801BF890[0]++; + D_801BF890[3] -= 1000; + } + + while (D_801BF890[3] >= 100) { + D_801BF890[1]++; + D_801BF890[3] -= 100; + } + + while (D_801BF890[3] >= 10) { + D_801BF890[2]++; + D_801BF890[3] -= 10; + } + } + + if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) { + // exit out of ocarina mode after suns song finishes playing + if ((msgCtx->ocarinaAction != 0x39) && (gSaveContext.sunsSongState == SUNSSONG_START) ) { + globalCtx->msgCtx.ocarinaMode = 4; + } + + // handle suns song in areas where time moves + if (globalCtx->envCtx.timeIncrement != 0) { + if (gSaveContext.sunsSongState != SUNSSONG_SPEED_TIME) { + D_801BFD94 = false; + if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { + D_801BFD94 = true; + } + + gSaveContext.sunsSongState = SUNSSONG_SPEED_TIME; + D_801BFD98 = gGameInfo->data[0xF]; + gGameInfo->data[0xF] = 400; + } else if (!D_801BFD94) { + if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; + gGameInfo->data[0xF] = D_801BFD98; + globalCtx->msgCtx.ocarinaMode = 4; + } + } else if (gSaveContext.save.time > CLOCK_TIME(18, 0)) { + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; + gGameInfo->data[0xF] = D_801BFD98; + globalCtx->msgCtx.ocarinaMode = 4; + } + } else { + gSaveContext.sunsSongState = SUNSSONG_SPECIAL; + } + } + + func_8011E3B4(globalCtx); + + if (interfaceCtx->unk_31A != 0) { + if (interfaceCtx->unk_31A == 1) { + interfaceCtx->storyState = 0; + interfaceCtx->unk_31A = 2; + gGameInfo->data[0x59B] = 0; + } + + Interface_AllocStory(globalCtx); + + if (interfaceCtx->unk_31A == 3) { + interfaceCtx->unk_31A = 0; + interfaceCtx->storyState = 0; + if (interfaceCtx->storySegment != NULL) { + ZeldaArena_Free(interfaceCtx->storySegment); + interfaceCtx->storySegment = NULL; + } + } else if (interfaceCtx->unk_31A == 4) { + interfaceCtx->unk_31A = 2; + } else if (interfaceCtx->unk_31A == 5) { + gGameInfo->data[0x59B] += 10; + if (gGameInfo->data[0x59B] >= 250) { + gGameInfo->data[0x59B] = 255; + interfaceCtx->unk_31A = 2; + } + } else if (interfaceCtx->unk_31A == 6) { + gGameInfo->data[0x59B] -= 10; + if (gGameInfo->data[0x59B] < 0) { + gGameInfo->data[0x59B] = 0; + interfaceCtx->unk_31A = 2; + } + } + } +} +#else +u8 D_801BFD94 = 0; +s16 D_801BFD98 = 0; +s32 D_801BFD9C = 0; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Update.s") +#endif void func_80121F94(void) { func_8010A410(); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 7d14ec98b..46c627982 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -388,17 +388,17 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) { } if (cmd->timeSettings.unk6 != 0xFF) { - globalCtx->envCtx.unk_2 = cmd->timeSettings.unk6; + globalCtx->envCtx.timeIncrement = cmd->timeSettings.unk6; } else { - globalCtx->envCtx.unk_2 = 0; + globalCtx->envCtx.timeIncrement = 0; } - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.unk_2 != 0)) { - globalCtx->envCtx.unk_2 = 5; + if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (globalCtx->envCtx.timeIncrement != 0)) { + globalCtx->envCtx.timeIncrement = 5; } - if (gSaveContext.unk_3F58 == 0) { - REG(15) = globalCtx->envCtx.unk_2; + if (gSaveContext.sunsSongState == SUNSSONG_INACTIVE) { + REG(15) = globalCtx->envCtx.timeIncrement; } dayTime = gSaveContext.save.time; @@ -408,7 +408,7 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) { dayTime = gSaveContext.save.time; globalCtx->envCtx.unk_C = (Math_CosS(dayTime - 0x8000) * 20.0f) * 25.0f; - if (globalCtx->envCtx.unk_2 == 0 && gSaveContext.save.cutscene < 0xFFF0) { + if (globalCtx->envCtx.timeIncrement == 0 && gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.environmentTime = gSaveContext.save.time; if (gSaveContext.environmentTime >= 0x2AAA && gSaveContext.environmentTime < 0x4555) { diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 6db3733b8..60fa3ff9e 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -270,7 +270,7 @@ void EnCow_Talk(EnCow* this, GlobalContext* globalCtx) { } void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { - if ((globalCtx->msgCtx.unk1202A == 0) || (globalCtx->msgCtx.unk1202A == 4)) { + if ((globalCtx->msgCtx.ocarinaMode == 0) || (globalCtx->msgCtx.ocarinaMode == 4)) { if (D_801BDAA4 != 0) { if (this->flags & EN_COW_FLAG_WONT_GIVE_MILK) { this->flags &= ~EN_COW_FLAG_WONT_GIVE_MILK; diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 65df5600b..8de7cd4cb 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -424,7 +424,7 @@ void func_80B3EE8C(EnDai* this, GlobalContext* globalCtx) { void func_80B3EEDC(EnDai* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - if ((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.unk1202A == 3) && + if ((player->transformation == PLAYER_FORM_GORON) && (globalCtx->msgCtx.ocarinaMode == 3) && (globalCtx->msgCtx.unk1202E == 1)) { func_80B3E5DC(this, 1); this->actionFunc = func_80B3EE8C; diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 5f5a88f20..b2ea32a7e 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -276,7 +276,7 @@ void func_80998040(EnGs* this, GlobalContext* globalCtx) { } void func_8099807C(EnGs* this, GlobalContext* globalCtx) { - switch (globalCtx->msgCtx.unk1202A) { + switch (globalCtx->msgCtx.ocarinaMode) { case 3: switch (globalCtx->msgCtx.unk1202E) { case 7: diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index d4994b38e..1b96d563e 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -362,7 +362,7 @@ void func_80BCFC0C(EnHg* this, GlobalContext* globalCtx) { } else { D_80BD00C8 = false; } - if (globalCtx->msgCtx.unk1202A == 3) { + if (globalCtx->msgCtx.ocarinaMode == 3) { if (globalCtx->msgCtx.unk1202E == 7 && gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { if (INV_CONTENT(ITEM_MASK_GIBDO) == ITEM_MASK_GIBDO) { this->unk218 = 3; diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index e1904bcdf..fea4e0a01 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -627,7 +627,7 @@ void EnKakasi_TeachingSong(EnKakasi* this, GlobalContext* globalCtx) { func_8096FAAC(this, globalCtx); func_8096FBB8(this, globalCtx); - if (globalCtx->msgCtx.unk1202A == 4) { // song failed + if (globalCtx->msgCtx.ocarinaMode == 4) { // song failed this->unk190 = 0; this->unkCounter1A4 = 0; ActorCutscene_Stop(this->actorCutscenes[0]); @@ -641,7 +641,7 @@ void EnKakasi_TeachingSong(EnKakasi* this, GlobalContext* globalCtx) { EnKakasi_SetAnimation(this, ENKAKASI_ANIM_ARMS_CROSSED_ROCKING); this->actionFunc = EnKakasi_RegularDialogue; - } else if (globalCtx->msgCtx.unk1202A == 3) { // song success + } else if (globalCtx->msgCtx.ocarinaMode == 3) { // song success this->postTeachTimer = 30; this->skelanime.playSpeed = 2.0f; EnKakasi_SetAnimation(this, ENKAKASI_ANIM_HOPPING_REGULAR); @@ -664,7 +664,7 @@ void EnKakasi_PostSongLearnTwirl(EnKakasi* this, GlobalContext* globalCtx) { void EnKakasi_SetupPostSongLearnDialogue(EnKakasi* this, GlobalContext* globalCtx) { ActorCutscene_Stop(this->actorCutscenes[0]); - globalCtx->msgCtx.unk1202A = 4; + globalCtx->msgCtx.ocarinaMode = 4; this->unk190 = 0; this->unkCounter1A4 = 0; EnKakasi_SetAnimation(this, ENKAKASI_ANIM_HOPPING_REGULAR); @@ -1041,9 +1041,9 @@ void EnKakasi_SetupIdleUnderground(EnKakasi* this) { void EnKakasi_IdleUnderground(EnKakasi* this, GlobalContext* globalCtx) { if ((gSaveContext.save.weekEventReg[79] & 0x8) && this->actor.xzDistToPlayer < this->songSummonDist && - (BREG(1) != 0 || globalCtx->msgCtx.unk1202A == 0xD)) { + (BREG(1) != 0 || globalCtx->msgCtx.ocarinaMode == 0xD)) { this->actor.flags &= ~0x8000000; - globalCtx->msgCtx.unk1202A = 4; + globalCtx->msgCtx.ocarinaMode = 4; this->actionFunc = EnKakasi_SetupRiseOutOfGround; } } diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/src/overlays/actors/ovl_En_Rd/z_en_rd.c index be62210ea..a65802a02 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -237,8 +237,8 @@ void EnRd_Init(Actor* thisx, GlobalContext* globalCtx) { void EnRd_Destroy(Actor* thisx, GlobalContext* globalCtx) { EnRd* this = THIS; - if (gSaveContext.unk_3F58 != 0) { - gSaveContext.unk_3F58 = 0; + if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) { + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; } Collider_DestroyCylinder(globalCtx, &this->collider); } @@ -994,7 +994,7 @@ void func_808D64D0(EnRd* this) { this->unk_3D6 = 0xA; this->actor.speedXZ = 0.0f; this->actor.world.rot.y = this->actor.shape.rot.y; - if (gSaveContext.unk_3F58 != 0) { + if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) { this->unk_3E9 = 1; this->unk_3E0 = 600; Audio_PlayActorSound2(&this->actor, NA_SE_EN_LIGHT_ARROW_HIT); @@ -1021,7 +1021,7 @@ void func_808D65BC(EnRd* this, GlobalContext* globalCtx) { if (this->unk_3E0 == 0) { this->unk_3E9 = 0; - gSaveContext.unk_3F58 = 0; + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; } } } @@ -1060,7 +1060,7 @@ void func_808D6814(EnRd* this, GlobalContext* globalCtx) { s32 pad; Player* player = GET_PLAYER(globalCtx); - if ((gSaveContext.unk_3F58 != 0) && (this->actor.shape.rot.x == 0) && (this->unk_3E9 == 0) && + if ((gSaveContext.sunsSongState != SUNSSONG_INACTIVE) && (this->actor.shape.rot.x == 0) && (this->unk_3E9 == 0) && (this->unk_3EF != 11) && (this->unk_3EF != 12) && (this->unk_3EF != 1)) { func_808D64D0(this); return; @@ -1171,8 +1171,8 @@ void EnRd_Update(Actor* thisx, GlobalContext* globalCtx) { EnRd* this = THIS; func_808D6814(this, globalCtx); - if ((gSaveContext.unk_3F58 != 0) && (this->unk_3E9 == 0)) { - gSaveContext.unk_3F58 = 0; + if ((gSaveContext.sunsSongState != SUNSSONG_INACTIVE) && (this->unk_3E9 == 0)) { + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; } if ((this->unk_3F0 != 6) && ((this->unk_3EF != 13) || (this->unk_3F0 != 2))) { diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index fdaa29568..13cc6ddfe 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -561,7 +561,7 @@ s32 func_80BA46D8(EnToto* this, GlobalContext* globalCtx) { } s32 func_80BA4740(EnToto* this, GlobalContext* globalCtx) { - if (globalCtx->msgCtx.unk1202A == 4) { + if (globalCtx->msgCtx.ocarinaMode == 4) { if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { gSaveContext.save.weekEventReg[56] |= 0x10; } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 6c3aa8f7e..9ab445247 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -1151,7 +1151,7 @@ void func_80B98BF4(EnZot* this, GlobalContext* globalCtx) { void func_80B98CA8(EnZot* this, GlobalContext* globalCtx) { if (func_800B8718(&this->actor, globalCtx)) { - globalCtx->msgCtx.unk1202A = 4; + globalCtx->msgCtx.ocarinaMode = 4; func_8019B544(0xFFFF); this->actionFunc = func_80B98BF4; this->actor.flags |= 0x10000; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 38cab996b..8ad5dc8c3 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2008,7 +2008,7 @@ 0x8010A410:("func_8010A410",), 0x8010A430:("func_8010A430",), 0x8010A54C:("func_8010A54C",), - 0x8010A580:("func_8010A580",), + 0x8010A580:("Map_Update",), 0x8010A760:("func_8010A760",), 0x8010A7CC:("func_8010A7CC",), 0x8010A814:("func_8010A814",), @@ -2139,7 +2139,7 @@ 0x80115DB4:("func_80115DB4",), 0x80116088:("func_80116088",), 0x80116114:("func_80116114",), - 0x80116348:("func_80116348",), + 0x80116348:("Interface_UpdateMagicBar",), 0x80116918:("Interface_DrawMagicBar",), 0x80116FD8:("func_80116FD8",), 0x801170B8:("func_801170B8",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 81e8aea7d..3e2b2daf5 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1522,7 +1522,7 @@ asm/non_matchings/code/z_map_exp/func_8010A33C.s,func_8010A33C,0x8010A33C,0x35 asm/non_matchings/code/z_map_exp/func_8010A410.s,func_8010A410,0x8010A410,0x8 asm/non_matchings/code/z_map_exp/func_8010A430.s,func_8010A430,0x8010A430,0x47 asm/non_matchings/code/z_map_exp/func_8010A54C.s,func_8010A54C,0x8010A54C,0xD -asm/non_matchings/code/z_map_exp/func_8010A580.s,func_8010A580,0x8010A580,0x78 +asm/non_matchings/code/z_map_exp/Map_Update.s,Map_Update,0x8010A580,0x78 asm/non_matchings/code/z_msgevent/func_8010A760.s,func_8010A760,0x8010A760,0x1B asm/non_matchings/code/z_msgevent/func_8010A7CC.s,func_8010A7CC,0x8010A7CC,0x12 asm/non_matchings/code/z_msgevent/func_8010A814.s,func_8010A814,0x8010A814,0x12 @@ -1653,7 +1653,7 @@ asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 asm/non_matchings/code/z_parameter/func_80116114.s,func_80116114,0x80116114,0x8D -asm/non_matchings/code/z_parameter/func_80116348.s,func_80116348,0x80116348,0x174 +asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s,Interface_UpdateMagicBar,0x80116348,0x174 asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s,Interface_DrawMagicBar,0x80116918,0x1B0 asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 From d11b306ab8ff15a94fa3b56d56b233e55ac68646 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 26 Dec 2021 16:31:27 +1100 Subject: [PATCH 012/160] Interface_Update fully OK (copy decomped func from z_player_lib) --- src/boot_O2_g3/idle_extra_bss.c | 1 + src/code/z_parameter.c | 94 ++++++++++++++++----------------- src/code/z_player_lib.c | 47 ++++++++++++++++- 3 files changed, 92 insertions(+), 50 deletions(-) diff --git a/src/boot_O2_g3/idle_extra_bss.c b/src/boot_O2_g3/idle_extra_bss.c index 019b62640..7afa57250 100644 --- a/src/boot_O2_g3/idle_extra_bss.c +++ b/src/boot_O2_g3/idle_extra_bss.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" // This file is currently required to fix bss reordering in idle.c. It is not resolved by prevent_bss_reordering.h . diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9e6a18e9e..f172e1724 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2166,8 +2166,8 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPLoadUcodeEx(OVERLAY_DISP++, OS_K0_TO_PHYSICAL(D_801ABAB0), OS_K0_TO_PHYSICAL(D_801E3BB0), 0x800); gfx = OVERLAY_DISP; - func_80172758(&gfx, D_801BFD84[interfaceCtx->storyType], D_801BFD8C[interfaceCtx->storyType], 0x140, 0xF0, 2, 1, - 0x8000, 0x100, 0.0f, 0.0f, 1.0f, 1.0f, 0); + func_80172758(&gfx, D_801BFD84[interfaceCtx->storyType], D_801BFD8C[interfaceCtx->storyType], 0x140, 0xF0, + 2, 1, 0x8000, 0x100, 0.0f, 0.0f, 1.0f, 1.0f, 0); OVERLAY_DISP = gfx; gSPLoadUcodeEx(OVERLAY_DISP++, SysUcode_GetUCode(), SysUcode_GetUCodeData(), 0x800); @@ -2552,16 +2552,15 @@ void Interface_AllocStory(GlobalContext* globalCtx) { Interface_LoadStory(globalCtx, 0); } -// Is Matching: Need to work out D_801BFD98 conflicting with Player_Lib -#ifdef NON_MATCHING void Interface_Update(GlobalContext* globalCtx) { static u8 D_801BFD94 = 0; static s16 D_801BFD98 = 0; + static s16 D_801BFD9C = 0; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; Player* player = GET_PLAYER(globalCtx); - s16 alpha; // sp32 - s16 alpha1; // sp30 + s16 alpha; + s16 alpha1; u16 action; s16 health; @@ -2572,9 +2571,9 @@ void Interface_Update(GlobalContext* globalCtx) { } switch (gSaveContext.unk_3F20) { - case 0x1: - case 0x2: - case 0x8: + case 0x1: + case 0x2: + case 0x8: alpha = 255 - (gSaveContext.unk_3F24 << 5); if (alpha < 0) { alpha = 0; @@ -2587,25 +2586,25 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.unk_3F20 = 0; } break; - case 0x3: - case 0x4: - case 0x5: - case 0x6: - case 0x7: - case 0x9: - case 0xA: - case 0xB: - case 0xC: - case 0xD: - case 0xE: - case 0xF: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + case 0x9: + case 0xA: + case 0xB: + case 0xC: + case 0xD: + case 0xE: + case 0xF: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: alpha = 255 - (gSaveContext.unk_3F24 << 5); if (alpha < 0) { alpha = 0; @@ -2618,7 +2617,7 @@ void Interface_Update(GlobalContext* globalCtx) { } break; - case 0x32: + case 0x32: alpha = 255 - (gSaveContext.unk_3F24 << 5); if (alpha < 0) { alpha = 0; @@ -2666,13 +2665,12 @@ void Interface_Update(GlobalContext* globalCtx) { } break; - case 0x34: + case 0x34: gSaveContext.unk_3F20 = 1; func_8010F1A8(globalCtx, 0); gSaveContext.unk_3F20 = 0; - default: + default: break; - } Map_Update(globalCtx); @@ -2685,7 +2683,6 @@ void Interface_Update(GlobalContext* globalCtx) { play_sound(NA_SE_SY_HP_RECOVER); } - // TODO: Missing s16 cast health = gSaveContext.save.playerData.health; if (health >= gSaveContext.save.playerData.healthCapacity) { gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; @@ -2708,6 +2705,7 @@ void Interface_Update(GlobalContext* globalCtx) { LifeMeter_UpdateColors(globalCtx); + // Update Rupees if (gSaveContext.rupeeAccumulator != 0) { if (gSaveContext.rupeeAccumulator > 0) { if (gSaveContext.save.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { @@ -2735,7 +2733,6 @@ void Interface_Update(GlobalContext* globalCtx) { } else { gSaveContext.rupeeAccumulator = 0; } - } if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { @@ -2750,13 +2747,14 @@ void Interface_Update(GlobalContext* globalCtx) { } } + // Update Minigame State if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { if (interfaceCtx->unk_280) { switch (interfaceCtx->unk_280) { - case 1: - case 3: - case 5: - case 7: + case 1: // minigame countdown 3 + case 3: // minigame countdown 2 + case 5: // minigame countdown 1 + case 7: // minigame countdown Go! interfaceCtx->unk_282 = 255; interfaceCtx->unk_284 = 100; interfaceCtx->unk_280++; @@ -2792,10 +2790,11 @@ void Interface_Update(GlobalContext* globalCtx) { interfaceCtx->unk_280 = 30; } break; - } + } } } + // Update Do-Actions switch (interfaceCtx->unk_210) { case 1: interfaceCtx->unk_218 += 10466.667f; @@ -2840,12 +2839,13 @@ void Interface_Update(GlobalContext* globalCtx) { if ((action == DO_ACTION_MAX) || (action == DO_ACTION_MAX + 1)) { action = DO_ACTION_NONE; } - + Interface_LoadActionLabel(&globalCtx->interfaceCtx, action, 0); } break; } + // Update Magic if (!(player->stateFlags1 & 0x200)) { if (gGameInfo->data[0x544] == 1) { if (gSaveContext.save.playerData.magicAcquired == 0) { @@ -2879,7 +2879,6 @@ void Interface_Update(GlobalContext* globalCtx) { func_80116088(); } - if (gSaveContext.unk_3DD0[5] == 0) { if ((D_801BF8DC == 1) || (D_801BF8DC == 4)) { if (CUR_FORM != 2) { @@ -2900,6 +2899,7 @@ void Interface_Update(GlobalContext* globalCtx) { } } + // Update Horseback Archery (remnant of OoT) if (gSaveContext.minigameState == 1) { gSaveContext.minigameScore += interfaceCtx->unk_25C; gSaveContext.unk_3F3C += interfaceCtx->unk_25E; @@ -2936,9 +2936,10 @@ void Interface_Update(GlobalContext* globalCtx) { } } + // Update sun song if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) { // exit out of ocarina mode after suns song finishes playing - if ((msgCtx->ocarinaAction != 0x39) && (gSaveContext.sunsSongState == SUNSSONG_START) ) { + if ((msgCtx->ocarinaAction != 0x39) && (gSaveContext.sunsSongState == SUNSSONG_START)) { globalCtx->msgCtx.ocarinaMode = 4; } @@ -2971,6 +2972,7 @@ void Interface_Update(GlobalContext* globalCtx) { func_8011E3B4(globalCtx); + // Update Grandma's Story if (interfaceCtx->unk_31A != 0) { if (interfaceCtx->unk_31A == 1) { interfaceCtx->storyState = 0; @@ -3004,12 +3006,6 @@ void Interface_Update(GlobalContext* globalCtx) { } } } -#else -u8 D_801BFD94 = 0; -s16 D_801BFD98 = 0; -s32 D_801BFD9C = 0; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Update.s") -#endif void func_80121F94(void) { func_8010A410(); @@ -3018,7 +3014,7 @@ void func_80121F94(void) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121FC4.s") -// Likely belongs to z_player_lib (D_801BFD98 + 6) +// Belongs to z_player_lib s16 D_801BFDA0[] = { 0x1DE, 0x1FF, 0x25D, 0x1DB, 0x1DA, 0x1FE, 0x219, 0x24C, 0x221, 0x25E, 0x200, 0x1FD, 0x25C, 0x25F, 0x1DC, 0x24E, 0x252, 0x1DD, 0x1D9, 0x214, 0x1E4, 0x1E1, 0x1E2, 0x1E3, diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index c03c0dfc7..3e81aea4c 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -12,7 +12,52 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_801229EC.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_801229FC.s") +typedef struct { + /* 0x00 */ Vec3f unk_00; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ s16 unk_18; + /* 0x1A */ s16 unk_1A; +} struct_801F58B0; // size = 0x1C + +extern s16 D_801BFDA0[]; +extern struct_801F58B0 D_801F58B0[3][3]; +extern s32 D_801F59C8[2]; + +void func_80127B64(struct_801F58B0 arg0[], UNK_TYPE arg1, Vec3f* arg2); + +void func_801229FC(Player* player) { + if (player->maskObjectLoading == 1) { + // TODO: check if player->maskId is unsigned + s16 temp_s1 = D_801BFDA0[(u8)player->maskId - 1]; + + osCreateMesgQueue(&player->maskObjectLoadQueue, &player->maskObjectLoadMsg, 1); + DmaMgr_SendRequestImpl(&player->maskDmaRequest, player->maskObjectSegment, objectFileTable[temp_s1].vromStart, + objectFileTable[temp_s1].vromEnd - objectFileTable[temp_s1].vromStart, 0, + &player->maskObjectLoadQueue, NULL); + player->maskObjectLoading += 1; + } else if (player->maskObjectLoading == 2) { + if (osRecvMesg(&player->maskObjectLoadQueue, NULL, 0) == 0) { + player->maskObjectLoading = 0; + + if (player->currentMask == PLAYER_MASK_GREAT_FAIRY) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(D_801F58B0); i++) { + func_80127B64(D_801F58B0[i], ARRAY_COUNT(D_801F58B0[i]), &player->bodyPartsPos[7]); + } + } + } + } else if ((player->currentMask != 0) && (player->currentMask != (u8)player->maskId)) { + player->maskObjectLoading = 1; + player->maskId = player->currentMask; + } else if (player->currentMask == 8) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(D_801F59C8); i++) { + D_801F59C8[i] += Rand_S16Offset(4, 0x17) + (s32)(fabsf(player->linearVelocity) * 50.0f); + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80122BA4.s") From 3cf8313434ee29fb2bea9f502a657f75bc6537b3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 01:28:47 +1100 Subject: [PATCH 013/160] Three day timer Draw function WIP: "func_80119610" --- include/z64.h | 2 +- src/code/z_parameter.c | 833 ++++++++++++++++++++++++++++++----------- 2 files changed, 605 insertions(+), 230 deletions(-) diff --git a/include/z64.h b/include/z64.h index 0ca115d9a..8ccbb0359 100644 --- a/include/z64.h +++ b/include/z64.h @@ -899,7 +899,7 @@ typedef struct { /* 0x11F14 */ UNK_TYPE1 pad11F14[0xE]; /* 0x11F22 */ u8 unk11F22; /* 0x11F23 */ UNK_TYPE1 pad11F23[0xE3]; - /* 0x11F23 */ s16 unk12006; + /* 0x12006 */ s16 unk12006; /* 0x12007 */ UNK_TYPE1 pad12007[0x18]; /* 0x12020 */ u8 unk12020; /* 0x12021 */ u8 choiceIndex; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f172e1724..f73b3dec3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,10 +1,13 @@ #include "global.h" #include "misc/parameter_static/parameter_static.h" -void func_801663C4(u8* arg0, u8* arg1, u32 arg2); void Map_Update(GlobalContext* globalCtx); +u8 func_800FE4A8(); +s32 func_801234D4(GlobalContext* globalCtx); s16 func_801242DC(GlobalContext*); // s32 func_8008F2F8 (OoT) +void func_801663C4(u8* arg0, u8* arg1, u32 arg2); +extern Gfx D_0E0001C8[]; // Display List extern Gfx D_0E0002E0[]; // Display List extern u8 D_801ABAB0[]; extern u8 D_801E3BB0[]; @@ -214,22 +217,15 @@ s32 D_801BF970[] = { 0x00630000, }; -s32 D_801BF974[] = { - 0x00000000, -}; +u32 D_801BF974 = 0; -s32 D_801BF978[] = { - 0x000A0000, -}; +s16 D_801BF978 = 10; -s32 D_801BF97C[] = { - 0x00FF0000, -}; +s16 D_801BF97C = 255; -s32 D_801BF980[] = { - 0x3F800000, // f32: 1.0 - 0x00000000, -}; +f32 D_801BF980 = 1.0f; + +s32 D_801BF984 = 0; // Display List Gfx D_801BF988[] = { @@ -293,29 +289,17 @@ s32 D_801BF9E8[] = { 0x026C026C, }; -s32 D_801BF9EC[] = { - 0x00000000, -}; +s16 D_801BF9EC = 0; -s32 D_801BF9F0[] = { - 0x00000000, -}; +s16 D_801BF9F0 = 0; -s32 D_801BF9F4[] = { - 0x00000000, -}; +s16 D_801BF9F4 = 0; -s32 D_801BF9F8[] = { - 0x00000000, -}; +s16 D_801BF9F8 = 0; -s32 D_801BF9FC[] = { - 0x000F0000, -}; +s16 D_801BF9FC = 0xF; -s32 D_801BFA00[] = { - 0x00000000, -}; +u32 D_801BFA00 = 0; s32 D_801BFA04[] = { 0xFFF2FFF2, 0xFFE8FFF8, 0xFFF4FFF4, 0xFFF9FFF8, 0xFFF9FFF8, 0xFFF40000, @@ -424,203 +408,6 @@ s32 D_801BFB24[] = { 0x00640000, }; -s32 D_801BFB2C[] = { - 0x00FF0000, -}; - -s32 D_801BFB30[] = { - 0x00000000, -}; - -s32 D_801BFB34[] = { - 0x00000000, -}; - -s16 D_801BFB38[] = { - 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, - 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, 0x0000, -}; - -TexturePtr D_801BFB6C[] = { - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, -}; - -s32 D_801BFBCC[] = { - 0x00000000, -}; - -s32 D_801BFBD0[] = { - 0x009B0000, -}; - -s32 D_801BFBD4[] = { - 0x00FF0000, -}; - -s32 D_801BFBD8[] = { - 0x00000000, -}; - -s32 D_801BFBDC[] = { - 0x00000000, -}; - -s32 D_801BFBE0[] = { - 0x00000000, -}; - -s32 D_801BFBE4[] = { - 0x000F0000, -}; - -s32 D_801BFBE8[] = { - 0x00000000, -}; - -s32 D_801BFBEC[] = { - 0x00640000, -}; - -s32 D_801BFBF0[] = { - 0x00CD009B, -}; - -s32 D_801BFBF4[] = { - 0x00FF00FF, -}; - -s32 D_801BFBF8[] = { - 0x001E0000, -}; - -s32 D_801BFBFC[] = { - 0x001E0000, -}; - -s32 D_801BFC00[] = { - 0x00640000, -}; - -s32 D_801BFC04[] = { - 0x00FF0000, -}; - -s32 D_801BFC08[] = { - 0x00640000, -}; - -s32 D_801BFC0C[] = { - 0x001E0000, -}; - -s32 D_801BFC10[] = { - 0x00640000, -}; - -TexturePtr D_801BFC14[] = { - gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, - gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, - gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, -}; - -s32 D_801BFC40[] = { - 0x007F0088, - 0x00900097, - 0x00A000A8, - 0x00AF00B8, -}; - -s32 D_801BFC50[] = { - 0xC000E000, - 0x00002000, - 0xA0008000, - 0x60004000, -}; - -s32 D_801BFC60[] = { - 0x00FF00FF, -}; - -s32 D_801BFC64[] = { - 0x00FF00FF, - 0x00A50037, -}; - -s16 D_801BFC6C[] = { - 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, -}; - -s16 D_801BFC7C[] = { - 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, -}; - -s32 D_801BFC8C[] = { - 0x00FF00FF, - 0x00FF00FF, - 0x00A50037, -}; - -s32 D_801BFC98[] = { - 0x004E0036, - 0x001D0005, - 0xFFEEFFD6, - 0xFFBDFFAB, -}; - -s32 D_801BFCA8[] = { - 0xC000E000, - 0x00002000, - 0xA0008000, - 0x60004000, -}; - -s32 D_801BFCB8[] = { - 0x00FF00FF, - 0x00FF00FF, - 0x00A50037, -}; - -TexturePtr D_801BFCC4[] = { - gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, - gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, -}; - -s32 D_801BFCE4[] = { - 0x00000000, -}; - -s32 D_801BFCE8[] = { - 0x00000000, -}; - -s32 D_801BFCEC[] = { - 0x00000000, -}; - -s32 D_801BFCF0[] = { - 0x00000000, -}; - -s32 D_801BFCF4[] = { - 0x00000000, -}; - -s32 D_801BFCF8[] = { - 0x00630000, -}; - -s16 D_801BFCFC[] = { - 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, -}; - -s16 D_801BFD0C[] = { - 9, 9, 8, 9, 9, 8, 9, 9, -}; Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { @@ -2005,8 +1792,505 @@ void func_80118BA4(GlobalContext* globalCtx); void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +#ifdef NON_EQUIVALENT +void func_80119610(GlobalContext* globalCtx) { + static s16 D_801BFB2C = 255; + static s16 D_801BFB30 = 0; + static s16 D_801BFB34 = 0; + static u16 D_801BFB38[] = { + 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, + 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, + }; + static TexturePtr D_801BFB6C[] = { + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + }; + static s16 D_801BFBCC = 0; // color R + static s16 D_801BFBD0 = 0; // color G + static s16 D_801BFBD4 = 255; + static s16 D_801BFBD8 = 0; + static s16 D_801BFBDC = 0; + static s16 D_801BFBE0 = 0; + static s16 D_801BFBE4 = 0xF; + static u32 D_801BFBE8 = 0; + static s16 D_801BFBEC[] = { 100, 0 }; + static s16 D_801BFBF0[] = { 205, 155 }; + static s16 D_801BFBF4[] = { 255, 255 }; + static s16 D_801BFBF8[] = { 30, 0 }; + static s16 D_801BFBFC[] = { 30, 0 }; + static s16 D_801BFC00[] = { 100, 0 }; + static s16 D_801BFC04[] = { 255, 0 }; + static s16 D_801BFC08[] = { 100, 0 }; + static s16 D_801BFC0C[] = { 30, 0 }; + static s16 D_801BFC10[] = { 100, 0 }; + static TexturePtr D_801BFC14[] = { + gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, + gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, + gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, + }; + static s16 D_801BFC40[] = { + 0x007F, 0x0088, + 0x0090, 0x0097, + 0x00A0, 0x00A8, + 0x00AF, 0x00B8, + }; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + MessageContext* msgCtx = &globalCtx->msgCtx; + s16 sp1E6; + f32 sp1D8; + f32 sp1D0; + f32 sp1CC; + s16 sp1C6; + s16 sp1AC[8]; + + f32 temp_f0; + f32 temp_f14; + u32 temp_a1_7; + s32 phi_v1_2; + s16 phi_t0_3; + + s16 frac; + s16 color1; + s16 color2; + s16 color3; + s16 color4; + f32 new_var1; + f32 new_var2; + + s32 pad[5]; // available temps to use + + OPEN_DISPS(globalCtx->state.gfxCtx); + + if (gGameInfo->data[0xF] != 0) { + if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && (func_801690CC(globalCtx) == 0)) || (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 < 0x201)) || (gSaveContext.gameMode == 3)) { + if (FrameAdvance_IsEnabled(globalCtx) == 0) { + if (func_800FE4A8() == 0) { + if ((0, gSaveContext.save.day) < 4) { + if ((0, gSaveContext.unk_3F22) == 0x32) { + if (func_801234D4(globalCtx) != 0) { + D_801BFB2C = 80; + D_801BFB34 = 20; + D_801BFB30 = 5; + } else if (D_801BFB34 != 0) { + D_801BFB34--; + } else if (D_801BFB30 != 0) { + D_801BFB2C += (s16)(ABS_ALT(D_801BFB2C - 255) / D_801BFB30); + if (D_801BFB2C >= 255) { + D_801BFB2C = 255; + D_801BFB30 = 0; + } + } else { + if (globalCtx->actorCtx.unk5 & 2) { + D_801BFB2C = 255; + } else { + D_801BFB2C = interfaceCtx->bAlpha; + } + D_801BFB34 = 0; + D_801BFB30 = 0; + } + } else { + if (globalCtx->actorCtx.unk5 & 2) { + D_801BFB2C = 255; + } else { + D_801BFB2C = interfaceCtx->bAlpha; + } + D_801BFB34 = 0; + D_801BFB30 = 0; + } + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + + func_8012C654(globalCtx->state.gfxCtx); + + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, D_801BFB2C); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerHourLinesTex, 4, 64, 35, 96, 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, D_801BFB2C); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + + if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000)))) { + func_8012C8D4(globalCtx->state.gfxCtx); + gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + } else { + gDPPipeSync(OVERLAY_DISP++); + + if (gSaveContext.save.daySpeed == -2) { + color1 = D_801BFBEC[D_801BFBE8]; + phi_v1_2 = ABS_ALT(D_801BFBCC - color1); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBCC >= color1) { + D_801BFBCC -= frac; + } else { + D_801BFBCC += frac; + } + + color2 = D_801BFBF0[D_801BFBE8]; + phi_v1_2 = ABS_ALT(D_801BFBD0 - color2); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBD0 >= color2) { + D_801BFBD0 -= frac; + } else { + D_801BFBD0 += frac; + } + + phi_v1_2 = ABS_ALT(D_801BFBD4 - D_801BFBF4[D_801BFBE8]); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBD4 >= D_801BFBF4[D_801BFBE8]) { + D_801BFBD4 -= frac; + } else { + D_801BFBD4 += frac; + } + + phi_v1_2 = ABS_ALT(D_801BFBD8 - D_801BFBF8[D_801BFBE8]); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBD8 >= D_801BFBF8[D_801BFBE8]) { + D_801BFBD8 -= frac; + } else { + D_801BFBD8 += frac; + } + + color3 = D_801BFBFC[D_801BFBE8]; + phi_v1_2 = ABS_ALT(D_801BFBDC - color3); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBDC >= color3) { + D_801BFBDC -= frac; + } else { + D_801BFBDC += frac; + } + + color4 = D_801BFC00[D_801BFBE8]; + phi_v1_2 = ABS_ALT(D_801BFBE0 - color4); + frac = phi_v1_2 / D_801BFBE4; + if (D_801BFBE0 >= color4) { + D_801BFBE0 -= frac; + } else { + D_801BFBE0 += frac; + } + + D_801BFBE4--; + + if (D_801BFBE4 == 0) { + D_801BFBCC = color1; + D_801BFBE4 = 0xF; + D_801BFBE8 ^= 1; + D_801BFBD8 = color2; + D_801BFBDC = color3; + D_801BFBE0 = color4; + } + + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, D_801BFB2C); + gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); + } else { + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); + } + + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayTimerDiamondTex, 40, 32, 140, 190, 40, 32, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + + if (D_801BF974 != 0) { + D_801BF980 += 0.02f; + D_801BF97C += 11; + } else { + D_801BF980 -= 0.02f; + D_801BF97C -= 11; + } + + D_801BF978--; + if (D_801BF978 == 0) { + D_801BF978 = 10; + D_801BF974 ^= 1; + } + + sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - ((((0, gSaveContext.save.time) * 1.3183594f) / 3600.0f) * 3600.0f); + + func_8012C8D4(globalCtx->state.gfxCtx); + + gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (D_801BFB2C != 255) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BFB2C); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BF97C); + } + + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + + Matrix_InsertTranslation(0.0f, -86.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, D_801BF980, MTXMODE_APPLY); + Matrix_InsertZRotation_f(-(sp1D0 * 0.0175f) / 10.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0xC], 4, 0); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayTimerStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56C] * 4.0f); + + for (phi_t0_3 = 0; phi_t0_3 < 25; phi_t0_3++) { + if (((0, gSaveContext.save.time) & 0xFFFF) >= D_801BFB38[phi_t0_3 + 1]) { + break; + } + } + + sp1D8 = Math_SinS(gSaveContext.save.time) * -40.0f; + temp_f14 = Math_CosS(gSaveContext.save.time) * -34.0f; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 110, D_801BFB2C); + + Matrix_InsertTranslation(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x10], 4, 0); + + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerSunHourTex, 24, 24, 0); + + sp1D8 = Math_SinS(gSaveContext.save.time) * 40.0f; + temp_f14 = Math_CosS(gSaveContext.save.time) * 34.0f; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 55, D_801BFB2C); + + Matrix_InsertTranslation(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x14], 4, 0); + + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerMoonHourTex, 24, 24, 0); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56D] * 4.0f); + + sp1CC = (0, gSaveContext.save.time) * 0.000096131f; + + Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_InsertZRotation_f(-(sp1CC - 3.15f), MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x18], 8, 0); + + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + + Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x20], 8, 0); + + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + gSPDisplayList(OVERLAY_DISP++, D_0E0001C8); + + if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000))) { + if ((0, gSaveContext.save.time) >= 0x3555) { + + color1 = D_801BFC04[D_801BFA00]; + phi_v1_2 = ABS_ALT(D_801BF9EC - color1); + + frac = phi_v1_2 / D_801BF9FC; + if (D_801BF9EC >= color1) { + D_801BF9EC -= frac; + } else { + D_801BF9EC += frac; + } + + color2 = D_801BFC08[D_801BFA00]; + phi_v1_2 = ABS_ALT(D_801BF9F0 - color2); + + frac = phi_v1_2 / D_801BF9FC; + if (D_801BF9F0 >= color2) { + D_801BF9F0 -= frac; + } else { + D_801BF9F0 += frac; + } + + color3 = D_801BFC0C[D_801BFA00]; + phi_v1_2 = ABS_ALT(D_801BF9F4 - color3); + + frac = phi_v1_2 / D_801BF9FC; + if (D_801BF9F4 >= color3) { + D_801BF9F4 -= frac; + } else { + D_801BF9F4 += frac; + } + + color4 = D_801BFC10[D_801BFA00]; + phi_v1_2 = ABS_ALT(D_801BF9F8 - color4); + + frac = phi_v1_2 / D_801BF9FC; + if (D_801BF9F8 >= color4) { + D_801BF9F8 -= frac; + } else { + D_801BF9F8 += frac; + } + + D_801BF9FC--; + if (D_801BF9FC == 0) { + D_801BF9EC = color1; + D_801BF9F0 = color2; + D_801BF9F4 = color3; + D_801BF9F8 = color4; + D_801BF9FC = 6; + D_801BFA00 ^= 1; + } + } + + sp1E6 = D_801BFB2C; + if (D_801BFB2C != 0) { + sp1E6 = 0xFF; + } + + func_8012C654(globalCtx->state.gfxCtx); + + gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 195, sp1E6); + gDPSetEnvColor(OVERLAY_DISP++, D_801BF9F0, D_801BF9F4, D_801BF9F8, 0); + + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursTimerFrameTex, 3, 80, 13, 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); + + temp_a1_7 = (-(CURRENT_DAY << 0x10) - (((0, gSaveContext.save.time) - 0x4000) & 0xFFFF)) + 0x40000; + temp_f0 = temp_a1_7 * 0.021972656f; + + sp1AC[0] = 0; + sp1AC[1] = temp_f0 / 60.0f;; + sp1AC[2] = temp_f0 / 60.0f;; + + while (sp1AC[1] >= 0xA) { + sp1AC[0]++; + sp1AC[1] -= 10; + } + + + sp1AC[3] = 0; + sp1AC[4] = (s32)temp_f0 % 60; + + while (sp1AC[4] >= 10) { + sp1AC[3]++; + sp1AC[4] -= 10; + } + + sp1AC[6] = 0; + new_var1 = (sp1AC[4] * 45.511112f); + sp1AC[7] = temp_a1_7 - (u32)(new_var1 + (sp1AC[2] * 2730.6667f)); + + while (sp1AC[7] >= 10) { + sp1AC[6]++; + sp1AC[7] -= 10; + } + + sp1AC[2] = 10; + sp1AC[5] = 10; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BF9EC, 0, 0, sp1E6); + gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); + + for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[sp1AC[sp1C6]], 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); + } + } + } + } + } + } + } + } + CLOSE_DISPS(globalCtx->state.gfxCtx); +} +#else +s16 D_801BFB2C = 255; +s16 D_801BFB30 = 0; +s16 D_801BFB34 = 0; +u16 D_801BFB38[] = { + 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, + 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, +}; +TexturePtr D_801BFB6C[] = { + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, + gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, + gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, +}; +s16 D_801BFBCC = 0; // color R +s16 D_801BFBD0 = 155; // color G +s16 D_801BFBD4 = 255; +s16 D_801BFBD8 = 0; +s16 D_801BFBDC = 0; +s16 D_801BFBE0 = 0; +s16 D_801BFBE4 = 0xF; +u32 D_801BFBE8 = 0; +s16 D_801BFBEC[] = { 100, 0 }; +s16 D_801BFBF0[] = { 205, 155 }; +s16 D_801BFBF4[] = { 255, 255 }; +s16 D_801BFBF8[] = { 30, 0 }; +s16 D_801BFBFC[] = { 30, 0 }; +s16 D_801BFC00[] = { 100, 0 }; +s16 D_801BFC04[] = { 255, 0 }; +s16 D_801BFC08[] = { 100, 0 }; +s16 D_801BFC0C[] = { 30, 0 }; +s16 D_801BFC10[] = { 100, 0 }; +TexturePtr D_801BFC14[] = { + gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, + gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, + gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, +}; +s16 D_801BFC40[] = { + 0x007F, 0x0088, + 0x0090, 0x0097, + 0x00A0, 0x00A8, + 0x00AF, 0x00B8, +}; void func_80119610(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") +#endif + + void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -2039,15 +2323,73 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_28A[0] = 1; } + +s32 D_801BFC50[] = { + 0xC000E000, + 0x00002000, + 0xA0008000, + 0x60004000, +}; + +s32 D_801BFC60[] = { + 0x00FF00FF, +}; + +s32 D_801BFC64[] = { + 0x00FF00FF, + 0x00A50037, +}; void func_8011B5C0(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") + +s16 D_801BFC6C[] = { + 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, +}; + +s16 D_801BFC7C[] = { + 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, +}; + +s32 D_801BFC8C[] = { + 0x00FF00FF, + 0x00FF00FF, + 0x00A50037, +}; + void func_8011B9E0(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") + +s32 D_801BFC98[] = { + 0x004E0036, + 0x001D0005, + 0xFFEEFFD6, + 0xFFBDFFAB, +}; + +s32 D_801BFCA8[] = { + 0xC000E000, + 0x00002000, + 0xA0008000, + 0x60004000, +}; + +s32 D_801BFCB8[] = { + 0x00FF00FF, + 0x00FF00FF, + 0x00A50037, +}; + void func_8011BF70(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") + +TexturePtr D_801BFCC4[] = { + gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, + gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, +}; + void func_8011C4C4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") @@ -2071,6 +2413,39 @@ void func_8011C808(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") + +s32 D_801BFCE4[] = { + 0x00000000, +}; + +s32 D_801BFCE8[] = { + 0x00000000, +}; + +s32 D_801BFCEC[] = { + 0x00000000, +}; + +s32 D_801BFCF0[] = { + 0x00000000, +}; + +s32 D_801BFCF4[] = { + 0x00000000, +}; + +s32 D_801BFCF8[] = { + 0x00630000, +}; + +s16 D_801BFCFC[] = { + 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, +}; + +s16 D_801BFD0C[] = { + 9, 9, 8, 9, 9, 8, 9, 9, +}; + void func_8011CA64(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") From ab264c7cbd96dfe1a86c2f5e0318fb7462b503c2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 02:38:59 +1100 Subject: [PATCH 014/160] Some docs --- include/functions.h | 6 +- src/code/z_parameter.c | 184 +++++++++--------- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 4 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 2 +- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 2 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 8 +- src/overlays/actors/ovl_En_In/z_en_in.c | 8 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 10 +- tools/disasm/functions.txt | 6 +- tools/sizes/code_functions.csv | 6 +- 10 files changed, 122 insertions(+), 114 deletions(-) diff --git a/include/functions.h b/include/functions.h index 7400f844f..df4a39f9b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2078,8 +2078,8 @@ void func_801149A0(s16 arg0, s16 arg1); // void func_80114A9C(void); // void func_80114B84(void); // void func_80114CA0(void); -s32 func_80114E90(void); -s32 func_80114F2C(u8 arg0); +s32 Interface_HasEmptyBottle(void); +s32 Interface_HasItemInBottle(u8 itemId); // void func_80114FD0(void); // void func_80115130(void); // void func_801152B8(void); @@ -2109,7 +2109,7 @@ void func_80115D5C(GameState* gamestate); // void func_80118890(void); // void func_80118BA4(void); // void func_80119030(void); -// void func_80119610(void); +// void Interface_DrawClock(void); void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); // void func_8011B5C0(void); // void func_8011B9E0(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f73b3dec3..a38e84a58 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -408,7 +408,6 @@ s32 D_801BFB24[] = { 0x00640000, }; - Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, @@ -1568,22 +1567,22 @@ s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") -s32 func_80114E90(void) { - s32 i; +s32 Interface_HasEmptyBottle(void) { + s32 slot; - for (i = 18; i < 24; i++) { - if (gSaveContext.save.inventory.items[i] == ITEM_BOTTLE) { + for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { + if (gSaveContext.save.inventory.items[slot] == ITEM_BOTTLE) { return true; } } return false; } -s32 func_80114F2C(u8 arg0) { - s32 i; +s32 Interface_HasItemInBottle(u8 itemId) { + s32 slot; - for (i = 18; i < 24; i++) { - if (gSaveContext.save.inventory.items[i] == arg0) { + for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { + if (gSaveContext.save.inventory.items[slot] == itemId) { return true; } } @@ -1792,14 +1791,20 @@ void func_80118BA4(GlobalContext* globalCtx); void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +/** + * Draws either the analog three-day clock or the digital final-hours clock + */ #ifdef NON_EQUIVALENT -void func_80119610(GlobalContext* globalCtx) { +void Interface_DrawClock(GlobalContext* globalCtx) { static s16 D_801BFB2C = 255; static s16 D_801BFB30 = 0; static s16 D_801BFB34 = 0; static u16 D_801BFB38[] = { - 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, - 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, + CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), + CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), + CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), + CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), + CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; static TexturePtr D_801BFB6C[] = { gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, @@ -1833,10 +1838,7 @@ void func_80119610(GlobalContext* globalCtx) { gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, }; static s16 D_801BFC40[] = { - 0x007F, 0x0088, - 0x0090, 0x0097, - 0x00A0, 0x00A8, - 0x00AF, 0x00B8, + 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, }; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; @@ -1866,7 +1868,9 @@ void func_80119610(GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); if (gGameInfo->data[0xF] != 0) { - if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && (func_801690CC(globalCtx) == 0)) || (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 < 0x201)) || (gSaveContext.gameMode == 3)) { + if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && (func_801690CC(globalCtx) == 0)) || + (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 < 0x201)) || + (gSaveContext.gameMode == 3)) { if (FrameAdvance_IsEnabled(globalCtx) == 0) { if (func_800FE4A8() == 0) { if ((0, gSaveContext.save.day) < 4) { @@ -1909,17 +1913,22 @@ void func_80119610(GlobalContext* globalCtx) { gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, D_801BFB2C); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerHourLinesTex, 4, 64, 35, 96, 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerHourLinesTex, 4, 64, 35, 96, 180, + 128, 35, 1, 6, 0, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, D_801BFB2C); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000)))) { + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, + 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + + if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && + ((0, gSaveContext.save.time) < 0x4000)))) { func_8012C8D4(globalCtx->state.gfxCtx); gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } else { @@ -1989,7 +1998,9 @@ void func_80119610(GlobalContext* globalCtx) { D_801BFBE0 = color4; } - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, + TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, + ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, D_801BFB2C); gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); } else { @@ -1997,12 +2008,14 @@ void func_80119610(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayTimerDiamondTex, 40, 32, 140, 190, 40, 32, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayTimerDiamondTex, 40, 32, 140, 190, + 40, 32, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, + 27, 137, 192, 48, 27, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -2013,14 +2026,15 @@ void func_80119610(GlobalContext* globalCtx) { D_801BF980 -= 0.02f; D_801BF97C -= 11; } - + D_801BF978--; if (D_801BF978 == 0) { D_801BF978 = 10; D_801BF974 ^= 1; } - sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - ((((0, gSaveContext.save.time) * 1.3183594f) / 3600.0f) * 3600.0f); + sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - + ((((0, gSaveContext.save.time) * 1.3183594f) / 3600.0f) * 3600.0f); func_8012C8D4(globalCtx->state.gfxCtx); @@ -2040,14 +2054,18 @@ void func_80119610(GlobalContext* globalCtx) { Matrix_Scale(1.0f, 1.0f, D_801BF980, MTXMODE_APPLY); Matrix_InsertZRotation_f(-(sp1D0 * 0.0175f) / 10.0f, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0xC], 4, 0); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayTimerStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayTimerStarMinuteTex, G_IM_FMT_I, 16, 16, + 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); } gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56C] * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + gGameInfo->data[0x56C] * 4.0f); for (phi_t0_3 = 0; phi_t0_3 < 25; phi_t0_3++) { if (((0, gSaveContext.save.time) & 0xFFFF) >= D_801BFB38[phi_t0_3 + 1]) { @@ -2065,7 +2083,8 @@ void func_80119610(GlobalContext* globalCtx) { Matrix_InsertTranslation(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x10], 4, 0); OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerSunHourTex, 24, 24, 0); @@ -2079,26 +2098,30 @@ void func_80119610(GlobalContext* globalCtx) { Matrix_InsertTranslation(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x14], 4, 0); OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerMoonHourTex, 24, 24, 0); gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56D] * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + gGameInfo->data[0x56D] * 4.0f); sp1CC = (0, gSaveContext.save.time) * 0.000096131f; Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-(sp1CC - 3.15f), MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x18], 8, 0); - + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); gDPPipeSync(OVERLAY_DISP++); @@ -2108,10 +2131,12 @@ void func_80119610(GlobalContext* globalCtx) { Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, + PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x20], 8, 0); @@ -2122,7 +2147,8 @@ void func_80119610(GlobalContext* globalCtx) { gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); gSPDisplayList(OVERLAY_DISP++, D_0E0001C8); - if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000))) { + if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && + ((0, gSaveContext.save.time) < 0x4000))) { if ((0, gSaveContext.save.time) >= 0x3555) { color1 = D_801BFC04[D_801BFA00]; @@ -2186,25 +2212,31 @@ void func_80119610(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, + 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, + 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 195, sp1E6); gDPSetEnvColor(OVERLAY_DISP++, D_801BF9F0, D_801BF9F4, D_801BF9F8, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursTimerFrameTex, 3, 80, 13, 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); - - temp_a1_7 = (-(CURRENT_DAY << 0x10) - (((0, gSaveContext.save.time) - 0x4000) & 0xFFFF)) + 0x40000; + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursTimerFrameTex, 3, 80, 13, 119, + 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); + + temp_a1_7 = + (-(CURRENT_DAY << 0x10) - (((0, gSaveContext.save.time) - 0x4000) & 0xFFFF)) + + 0x40000; temp_f0 = temp_a1_7 * 0.021972656f; - + sp1AC[0] = 0; - sp1AC[1] = temp_f0 / 60.0f;; - sp1AC[2] = temp_f0 / 60.0f;; + sp1AC[1] = temp_f0 / 60.0f; + ; + sp1AC[2] = temp_f0 / 60.0f; + ; while (sp1AC[1] >= 0xA) { sp1AC[0]++; sp1AC[1] -= 10; } - sp1AC[3] = 0; sp1AC[4] = (s32)temp_f0 % 60; @@ -2230,7 +2262,8 @@ void func_80119610(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[sp1AC[sp1C6]], 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[sp1AC[sp1C6]], 8, 8, + D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); } } } @@ -2246,8 +2279,11 @@ s16 D_801BFB2C = 255; s16 D_801BFB30 = 0; s16 D_801BFB34 = 0; u16 D_801BFB38[] = { - 0x0000, 0x0AAA, 0x1555, 0x2000, 0x2AAA, 0x3555, 0x4000, 0x4AAA, 0x5555, 0x6000, 0x6AAA, 0x7555, 0x8000, - 0x8AAA, 0x9555, 0xA000, 0xAAAA, 0xB555, 0xC000, 0xCAAA, 0xD555, 0xE000, 0xEAAA, 0xF555, 0xFFFF, + CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), + CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), + CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), + CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), + CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; TexturePtr D_801BFB6C[] = { gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, @@ -2257,7 +2293,7 @@ TexturePtr D_801BFB6C[] = { gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, }; -s16 D_801BFBCC = 0; // color R +s16 D_801BFBCC = 0; // color R s16 D_801BFBD0 = 155; // color G s16 D_801BFBD4 = 255; s16 D_801BFBD8 = 0; @@ -2281,17 +2317,12 @@ TexturePtr D_801BFC14[] = { gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, }; s16 D_801BFC40[] = { - 0x007F, 0x0088, - 0x0090, 0x0097, - 0x00A0, 0x00A8, - 0x00AF, 0x00B8, + 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, }; -void func_80119610(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") +void Interface_DrawClock(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawClock.s") #endif - - void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 i; @@ -2319,7 +2350,6 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_2BC[i] = 200.0f; } } - interfaceCtx->unk_28A[0] = 1; } @@ -2330,11 +2360,9 @@ s32 D_801BFC50[] = { 0xA0008000, 0x60004000, }; - s32 D_801BFC60[] = { 0x00FF00FF, }; - s32 D_801BFC64[] = { 0x00FF00FF, 0x00A50037, @@ -2346,17 +2374,14 @@ void func_8011B5C0(GlobalContext* globalCtx); s16 D_801BFC6C[] = { 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, }; - s16 D_801BFC7C[] = { 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; - s32 D_801BFC8C[] = { 0x00FF00FF, 0x00FF00FF, 0x00A50037, }; - void func_8011B9E0(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") @@ -2367,20 +2392,17 @@ s32 D_801BFC98[] = { 0xFFEEFFD6, 0xFFBDFFAB, }; - s32 D_801BFCA8[] = { 0xC000E000, 0x00002000, 0xA0008000, 0x60004000, }; - s32 D_801BFCB8[] = { 0x00FF00FF, 0x00FF00FF, 0x00A50037, }; - void func_8011BF70(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") @@ -2389,10 +2411,10 @@ TexturePtr D_801BFCC4[] = { gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, }; - void func_8011C4C4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") + #ifdef NON_MATCHING void func_8011C808(GlobalContext* globalCtx) { if (globalCtx->actorCtx.unk5 & 2) { @@ -2417,64 +2439,55 @@ void func_8011C808(GlobalContext* globalCtx) { s32 D_801BFCE4[] = { 0x00000000, }; - s32 D_801BFCE8[] = { 0x00000000, }; - s32 D_801BFCEC[] = { 0x00000000, }; - s32 D_801BFCF0[] = { 0x00000000, }; - s32 D_801BFCF4[] = { 0x00000000, }; - s32 D_801BFCF8[] = { 0x00630000, }; - s16 D_801BFCFC[] = { 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, }; - s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; - void func_8011CA64(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") + void func_8011E3B4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") + void func_8011E730(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") + // rupeeDigitsFirst s16 D_801BFD1C[] = { 1, 0, 0, 0 }; - // rupeeDigitsCount s16 D_801BFD24[] = { 2, 3, 3, 0 }; - // rupeeIconPrimColor Color_RGB16 D_801BFD2C[] = { { 200, 255, 100 }, { 170, 170, 255 }, { 255, 105, 105 }, }; - // rupeeIconEnvColor Color_RGB16 D_801BFD40[] = { { 0, 80, 0 }, { 10, 10, 80 }, { 40, 10, 0 }, }; - // minigameCountdownTexs TexturePtr D_801BFD54[] = { gMinigameCountdown3Tex, @@ -2482,10 +2495,8 @@ TexturePtr D_801BFD54[] = { gMinigameCountdown1Tex, gMinigameCountdownGoTex, }; - // minigameCountdownTexHeights s16 D_801BFD64[] = { 24, 24, 24, 40 }; - // minigameCountdownPrimColor Color_RGB16 D_801BFD6C[] = { { 100, 255, 100 }, @@ -2493,19 +2504,16 @@ Color_RGB16 D_801BFD6C[] = { { 255, 100, 0 }, { 120, 170, 255 }, }; - // grandma's story pictures s32 D_801BFD84[] = { 0x07000000, 0x07012C00, }; - // grandma's story TLUT u32 D_801BFD8C[] = { 0x07025800, 0x07025A00, }; - #ifdef NON_MATCHING void Interface_Draw(GlobalContext* globalCtx) { s32 pad; @@ -2781,7 +2789,7 @@ void Interface_Draw(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); } } else { - func_80119610(globalCtx); + Interface_DrawClock(globalCtx); } } diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 60fa3ff9e..5a938bce4 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -241,7 +241,7 @@ void EnCow_GiveMilk(EnCow* this, GlobalContext* globalCtx) { void EnCow_CheckForEmptyBottle(EnCow* this, GlobalContext* globalCtx) { if ((func_80152498(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { func_80151938(globalCtx, 0x32C9); // Text to give milk. this->actionFunc = EnCow_GiveMilk; } else { @@ -298,7 +298,7 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { if (func_801A5100() == 4) { if (!(gSaveContext.save.weekEventReg[87] & 1)) { gSaveContext.save.weekEventReg[87] |= 1; - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { this->actor.textId = 0x32C9; // Text to give milk. } else { this->actor.textId = 0x32CA; // Text if you don't have an empty bottle. diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 89d3eaec1..29dbd0047 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -375,7 +375,7 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.world.rot.x = this->actor.shape.rot.x; this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; - } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !func_80114F2C(0x17) && + } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && !(gSaveContext.save.weekEventReg[23] & 0x20)) || ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.save.weekEventReg[23] & 0x20))) { Actor_SetScale(&this->actor, 0.0085f); diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index e4cc78ebc..a25225f96 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -346,7 +346,7 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { this->unk_390 = 70.0f; - if (func_80114F2C(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && + if (Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && (func_80152498(&globalCtx->msgCtx) == 0) && (ActorCutscene_GetCurrentIndex() == -1)) { if ((DECR(this->unk_384) == 0) && (gSaveContext.save.weekEventReg[29] & 0x40)) { func_801518B0(globalCtx, 0x969, NULL); diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index f856b46b0..a5e8ef5e9 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -185,7 +185,7 @@ void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) { } s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { - if (!func_80114E90()) { + if (!Interface_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -195,7 +195,7 @@ s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyPotionGreen(GlobalContext* globalCtx, EnGirlA* this) { - if (!func_80114E90()) { + if (!Interface_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -208,7 +208,7 @@ s32 EnGirlA_CanBuyPotionBlue(GlobalContext* globalCtx, EnGirlA* this) { if (!(gSaveContext.save.weekEventReg[53] & 8)) { return CANBUY_RESULT_CANNOT_GET_NOW; } - if (!func_80114E90()) { + if (!Interface_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (!(gSaveContext.save.weekEventReg[53] & 0x10)) { @@ -366,7 +366,7 @@ s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyFairy(GlobalContext* globalCtx, EnGirlA* this) { - if (!func_80114E90()) { + if (!Interface_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 9bd60d712..5fb56af65 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -793,7 +793,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); func_801159EC(-globalCtx->msgCtx.unk1206C); @@ -939,7 +939,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x347E: func_808F35D8(this, globalCtx); - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3B40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); ret = true; @@ -1045,7 +1045,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); func_801159EC(-globalCtx->msgCtx.unk1206C); @@ -1143,7 +1143,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x34A1: func_808F35D8(this, globalCtx); - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3B40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); ret = true; diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index da137a5ea..2660ce492 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -397,7 +397,7 @@ void EnTrt_Goodbye(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->textId == 0x88F) { - if (func_80114E90() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { + if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -418,7 +418,7 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { EnTrt_SetupStartShopping(globalCtx, this, 0); } else if (gSaveContext.save.weekEventReg[0x54] & 0x40) { this->textId = 0x83B; - if (func_80114F2C(ITEM_POTION_RED)) { + if (Interface_HasItemInBottle(ITEM_POTION_RED)) { EnTrt_SetupStartShopping(globalCtx, this, false); } else { this->actionFunc = EnTrt_TryToGiveRedPotion; @@ -730,7 +730,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { } } } else if (talkState == 5 && func_80147624(globalCtx)) { - if (!func_80114E90()) { + if (!Interface_HasEmptyBottle()) { play_sound(NA_SE_SY_ERROR); EnTrt_SetupCannotBuy(globalCtx, this, 0x846); } else { @@ -941,7 +941,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt this->blinkFunc = EnTrt_Blink; if (talkState == 6 && func_80147624(globalCtx)) { - if (func_80114E90() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { + if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -960,7 +960,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->textId == 0x83C) { - if (func_80114E90()) { + if (Interface_HasEmptyBottle()) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 8ad5dc8c3..b07089b65 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2119,8 +2119,8 @@ 0x80114A9C:("func_80114A9C",), 0x80114B84:("func_80114B84",), 0x80114CA0:("func_80114CA0",), - 0x80114E90:("func_80114E90",), - 0x80114F2C:("func_80114F2C",), + 0x80114E90:("Interface_HasEmptyBottle",), + 0x80114F2C:("Interface_HasItemInBottle",), 0x80114FD0:("func_80114FD0",), 0x80115130:("func_80115130",), 0x801152B8:("func_801152B8",), @@ -2150,7 +2150,7 @@ 0x80118890:("func_80118890",), 0x80118BA4:("func_80118BA4",), 0x80119030:("func_80119030",), - 0x80119610:("func_80119610",), + 0x80119610:("Interface_DrawClock",), 0x8011B4E0:("func_8011B4E0",), 0x8011B5C0:("func_8011B5C0",), 0x8011B9E0:("func_8011B9E0",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 3e2b2daf5..60dd5ba51 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1633,8 +1633,8 @@ asm/non_matchings/code/z_parameter/func_801149A0.s,func_801149A0,0x801149A0,0x3F asm/non_matchings/code/z_parameter/func_80114A9C.s,func_80114A9C,0x80114A9C,0x3A asm/non_matchings/code/z_parameter/func_80114B84.s,func_80114B84,0x80114B84,0x47 asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C -asm/non_matchings/code/z_parameter/func_80114E90.s,func_80114E90,0x80114E90,0x27 -asm/non_matchings/code/z_parameter/func_80114F2C.s,func_80114F2C,0x80114F2C,0x29 +asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s,Interface_HasEmptyBottle,0x80114E90,0x27 +asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s,Interface_HasItemInBottle,0x80114F2C,0x29 asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58 asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44 @@ -1664,7 +1664,7 @@ asm/non_matchings/code/z_parameter/func_80118084.s,func_80118084,0x80118084,0x20 asm/non_matchings/code/z_parameter/func_80118890.s,func_80118890,0x80118890,0xC5 asm/non_matchings/code/z_parameter/func_80118BA4.s,func_80118BA4,0x80118BA4,0x123 asm/non_matchings/code/z_parameter/func_80119030.s,func_80119030,0x80119030,0x178 -asm/non_matchings/code/z_parameter/func_80119610.s,func_80119610,0x80119610,0x7B4 +asm/non_matchings/code/z_parameter/Interface_DrawClock.s,Interface_DrawClock,0x80119610,0x7B4 asm/non_matchings/code/z_parameter/func_8011B4E0.s,func_8011B4E0,0x8011B4E0,0x38 asm/non_matchings/code/z_parameter/func_8011B5C0.s,func_8011B5C0,0x8011B5C0,0x108 asm/non_matchings/code/z_parameter/func_8011B9E0.s,func_8011B9E0,0x8011B9E0,0x164 From 2e9511745427e274bcf1012d55a2662819c1df5a Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 14:44:27 +1100 Subject: [PATCH 015/160] Small cleanup --- src/code/z_parameter.c | 57 ++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a38e84a58..4daf3ab9c 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1474,57 +1474,60 @@ s32 func_80114978(u8 arg0) { return func_801143CC(arg0); } -void func_801149A0(s16 arg0, s16 arg1) { - s16 phi_v0; +void func_801149A0(s16 itemId, s16 invSlot) { + s16 i; + s16 new_var; s32 phi_a1; - gSaveContext.save.inventory.items[arg1] = 0xFF; + gSaveContext.save.inventory.items[invSlot] = ITEM_NONE;; - for (phi_v0 = 1; phi_v0 < 4; phi_v0++) { - if (phi_v0 == 0) { - phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_v0]; + for (i = 1; i < 4; i++) { + if (i == 0) { + phi_a1 = CUR_FORM_EQUIP(i); } else { - phi_a1 = gSaveContext.save.equips.buttonItems[0][phi_v0]; + phi_a1 = gSaveContext.save.equips.buttonItems[0][i]; } - if (arg0 == (phi_a1 & 0xFF)) { - if (phi_v0 == 0) { + + if (itemId == (phi_a1 & 0xFF)) { + if (i == 0) { phi_a1 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a1][phi_v0] = 0xFF; + gSaveContext.save.equips.buttonItems[phi_a1][i] = ITEM_NONE;; } else { - gSaveContext.save.equips.buttonItems[0][phi_v0] = 0xFF; + gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE;; } - if (phi_v0 == 0) { + if (i == 0) { phi_a1 = CUR_FORM; - gSaveContext.save.equips.cButtonSlots[phi_a1][phi_v0] = 0xFF; + gSaveContext.save.equips.cButtonSlots[phi_a1][i] = ITEM_NONE;; } else { - gSaveContext.save.equips.cButtonSlots[0][phi_v0] = 0xFF; + gSaveContext.save.equips.cButtonSlots[0][i] = ITEM_NONE;; } } } } -void func_80114A9C(s16 arg0) { - s16 phi_v0; +void func_80114A9C(s16 itemId) { + s16 i; s32 phi_a1; - for (phi_v0 = 1; phi_v0 < 4; phi_v0++) { - if (phi_v0 == 0) { - phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_v0]; + for (i = 1; i < 4; i++) { + if (i == 0) { + phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][i]; } else { - phi_a1 = gSaveContext.save.equips.buttonItems[0][phi_v0]; + phi_a1 = gSaveContext.save.equips.buttonItems[0][i]; } - if (arg0 == (phi_a1 & 0xFF)) { - if (phi_v0 == 0) { + + if (itemId == (phi_a1 & 0xFF)) { + if (i == 0) { phi_a1 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a1][phi_v0] = 0xFF; + gSaveContext.save.equips.buttonItems[phi_a1][i] = ITEM_NONE; } else { - gSaveContext.save.equips.buttonItems[0][phi_v0] = 0xFF; + gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE; } - if (phi_v0 == 0) { + if (i == 0) { phi_a1 = CUR_FORM; - gSaveContext.save.equips.cButtonSlots[phi_a1][phi_v0] = 0xFF; + gSaveContext.save.equips.cButtonSlots[phi_a1][i] = ITEM_NONE; } else { - gSaveContext.save.equips.cButtonSlots[0][phi_v0] = 0xFF; + gSaveContext.save.equips.cButtonSlots[0][i] = ITEM_NONE; } } } From 97baf4b38ac7f110eca1f998bd50e4061f6137cb Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 19:55:21 +1100 Subject: [PATCH 016/160] Fix split data --- src/code/z_parameter.c | 6 ------ tools/disasm/files.txt | 2 +- tools/disasm/variables.txt | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 4daf3ab9c..b7c1c9a10 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3399,9 +3399,3 @@ void func_80121F94(void) { } #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121FC4.s") - -// Belongs to z_player_lib -s16 D_801BFDA0[] = { - 0x1DE, 0x1FF, 0x25D, 0x1DB, 0x1DA, 0x1FE, 0x219, 0x24C, 0x221, 0x25E, 0x200, 0x1FD, - 0x25C, 0x25F, 0x1DC, 0x24E, 0x252, 0x1DD, 0x1D9, 0x214, 0x1E4, 0x1E1, 0x1E2, 0x1E3, -}; diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index 52d498397..cecdd0477 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -540,7 +540,7 @@ 0x801BF550 : "z_map_exp", 0x801BF5C0 : "z_msgevent", 0x801BF6C0 : "z_parameter", - 0x801BFDD0 : "z_player_lib", + 0x801BFDA0 : "z_player_lib", 0x801C0EC0 : "z_quake", 0x801C0EF0 : "z_rcp", 0x801C1D10 : "z_room", diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 3e0f23377..b1d6866a7 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1186,7 +1186,7 @@ 0x801BFD8C:("D_801BFD8C","UNK_TYPE1","",0x1), 0x801BFD94:("D_801BFD94","UNK_TYPE4","",0x4), 0x801BFD98:("D_801BFD98","UNK_TYPE4","[2]",0x8), - 0x801BFDA0:("D_801BFDA0","UNK_TYPE1","",0x1), + 0x801BFDA0:("D_801BFDA0","s16","[24]",0x30), 0x801BFDD0:("D_801BFDD0","UNK_TYPE1","",0x1), 0x801BFDE8:("D_801BFDE8","UNK_TYPE1","",0x1), 0x801BFE00:("D_801BFE00","UNK_TYPE1","",0x1), From 3087dd982ddc6855c692a6aaffe0427dd0c1d61e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 22:02:11 +1100 Subject: [PATCH 017/160] Improve docs and score of `Interface_DrawClock` --- src/code/z_parameter.c | 294 +++++++++++++++++++++-------------------- 1 file changed, 154 insertions(+), 140 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 098b15957..2b1f3a39e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1794,6 +1794,30 @@ void func_80118BA4(GlobalContext* globalCtx); void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +/** + * Steps `var` towards `target` linearly, so that it will arrive in `timeRemaining` seconds. Can be used from either + * direction. `timeRemaining` must be decremented separately for this to work properly, and obviously timeRemaining = 0 + * must be handled separately. + * + * @param var Variable to step. + * @param target Target to step towards. + * @param timeRemaining Number of times this function should be run for `var` to reach `target` + * @param stepVar Variable to use for the step (required to match). + * + * The progression is not quite linear because of truncation in the division, but the variable will always reach + * `target` at the appropriate time since the last step is always the full difference. + */ +#define TIMED_STEP_TO(var, target, timeRemaining, stepVar) \ + { \ + stepVar = ABS_ALT(var - target) / timeRemaining; \ + if (var >= target) { \ + var -= stepVar; \ + } else { \ + var += stepVar; \ + } \ + } \ + (void)0 + /** * Draws either the analog three-day clock or the digital final-hours clock */ @@ -1817,14 +1841,14 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, }; - static s16 D_801BFBCC = 0; // color R - static s16 D_801BFBD0 = 0; // color G - static s16 D_801BFBD4 = 255; + static s16 D_801BFBCC = 0; // color R + static s16 D_801BFBD0 = 0; // color G + static s16 D_801BFBD4 = 255; // color B static s16 D_801BFBD8 = 0; static s16 D_801BFBDC = 0; static s16 D_801BFBE0 = 0; static s16 D_801BFBE4 = 0xF; - static u32 D_801BFBE8 = 0; + static s16 D_801BFBE8 = 0; static s16 D_801BFBEC[] = { 100, 0 }; static s16 D_801BFBF0[] = { 205, 155 }; static s16 D_801BFBF4[] = { 255, 255 }; @@ -1835,13 +1859,15 @@ void Interface_DrawClock(GlobalContext* globalCtx) { static s16 D_801BFC08[] = { 100, 0 }; static s16 D_801BFC0C[] = { 30, 0 }; static s16 D_801BFC10[] = { 100, 0 }; + // sFinalHoursCounterDigitTex static TexturePtr D_801BFC14[] = { gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, }; + // sFinalHoursDigitSlotPosXOffset static s16 D_801BFC40[] = { - 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, + 127, 136, 144, 151, 160, 168, 175, 184, }; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; @@ -1850,7 +1876,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { f32 sp1D0; f32 sp1CC; s16 sp1C6; - s16 sp1AC[8]; + s16 finalHoursClockSlots[8]; // sp1AC f32 temp_f0; f32 temp_f14; @@ -1858,15 +1884,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { s32 phi_v1_2; s16 phi_t0_3; - s16 frac; - s16 color1; - s16 color2; - s16 color3; - s16 color4; f32 new_var1; - f32 new_var2; - - s32 pad[5]; // available temps to use + s16 colorStep; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -1913,6 +1932,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { func_8012C654(globalCtx->state.gfxCtx); + /** + * Draw Clock's Hour Lines + */ + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, D_801BFB2C); @@ -1922,83 +1945,54 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerHourLinesTex, 4, 64, 35, 96, 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + /** + * Draw Clock's Border + */ + gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, D_801BFB2C); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + //! @bug A texture height of 50 is given below. The texture is only 48 units height + //! resulting in this reading into the next texture. This results in a white + //! dot in the center. For the three-day clock, this is covered by the diamond. + //! However, it can be seen by the final-hours clock. OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000)))) { func_8012C8D4(globalCtx->state.gfxCtx); - gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } else { + /** + * Draw Three-Day Clock's Diamond + */ + gDPPipeSync(OVERLAY_DISP++); + // Time is slowed down to half speed with inverted song of time if (gSaveContext.save.daySpeed == -2) { - color1 = D_801BFBEC[D_801BFBE8]; - phi_v1_2 = ABS_ALT(D_801BFBCC - color1); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBCC >= color1) { - D_801BFBCC -= frac; - } else { - D_801BFBCC += frac; - } - - color2 = D_801BFBF0[D_801BFBE8]; - phi_v1_2 = ABS_ALT(D_801BFBD0 - color2); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBD0 >= color2) { - D_801BFBD0 -= frac; - } else { - D_801BFBD0 += frac; - } - - phi_v1_2 = ABS_ALT(D_801BFBD4 - D_801BFBF4[D_801BFBE8]); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBD4 >= D_801BFBF4[D_801BFBE8]) { - D_801BFBD4 -= frac; - } else { - D_801BFBD4 += frac; - } - - phi_v1_2 = ABS_ALT(D_801BFBD8 - D_801BFBF8[D_801BFBE8]); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBD8 >= D_801BFBF8[D_801BFBE8]) { - D_801BFBD8 -= frac; - } else { - D_801BFBD8 += frac; - } - - color3 = D_801BFBFC[D_801BFBE8]; - phi_v1_2 = ABS_ALT(D_801BFBDC - color3); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBDC >= color3) { - D_801BFBDC -= frac; - } else { - D_801BFBDC += frac; - } - - color4 = D_801BFC00[D_801BFBE8]; - phi_v1_2 = ABS_ALT(D_801BFBE0 - color4); - frac = phi_v1_2 / D_801BFBE4; - if (D_801BFBE0 >= color4) { - D_801BFBE0 -= frac; - } else { - D_801BFBE0 += frac; - } + // Clock diamond is blue and flashes high and low + TIMED_STEP_TO(D_801BFBCC, D_801BFBEC[D_801BFBE8], D_801BFBE4, colorStep); + TIMED_STEP_TO(D_801BFBD0, D_801BFBF0[D_801BFBE8], D_801BFBE4, colorStep); + TIMED_STEP_TO(D_801BFBD4, D_801BFBF4[D_801BFBE8], D_801BFBE4, colorStep); + TIMED_STEP_TO(D_801BFBD8, D_801BFBF8[D_801BFBE8], D_801BFBE4, colorStep); + TIMED_STEP_TO(D_801BFBDC, D_801BFBFC[D_801BFBE8], D_801BFBE4, colorStep); + TIMED_STEP_TO(D_801BFBE0, D_801BFC00[D_801BFBE8], D_801BFBE4, colorStep); D_801BFBE4--; if (D_801BFBE4 == 0) { - D_801BFBCC = color1; - D_801BFBE4 = 0xF; + D_801BFBCC = D_801BFBEC[D_801BFBE8]; + D_801BFBD0 = D_801BFBF0[D_801BFBE8]; + D_801BFBD4 = D_801BFBF4[D_801BFBE8]; + D_801BFBD8 = D_801BFBF0[D_801BFBE8]; + D_801BFBDC = D_801BFBFC[D_801BFBE8]; + D_801BFBE0 = D_801BFC00[D_801BFBE8]; + D_801BFBE4 = 15; D_801BFBE8 ^= 1; - D_801BFBD8 = color2; - D_801BFBDC = color3; - D_801BFBE0 = color4; } gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, @@ -2007,6 +2001,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, D_801BFB2C); gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); } else { + // Clock diamond is default green gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } @@ -2014,12 +2009,20 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayTimerDiamondTex, 40, 32, 140, 190, 40, 32, 1 << 10, 1 << 10); + /** + * Draw Three-Day Clock's Day Number over Diamond + */ + gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); + /** + * Draw Three-Day Clock's Star for the Minute Tracker + */ + gDPPipeSync(OVERLAY_DISP++); if (D_801BF974 != 0) { @@ -2041,7 +2044,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { func_8012C8D4(globalCtx->state.gfxCtx); - gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (D_801BFB2C != 255) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BFB2C); @@ -2066,6 +2069,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); } + /** + * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock + */ + gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56C] * 4.0f); @@ -2076,6 +2083,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } } + /** + * Draw Three-Day Clock's Sun for the Day-Time Hours Tracker + */ + sp1D8 = Math_SinS(gSaveContext.save.time) * -40.0f; temp_f14 = Math_CosS(gSaveContext.save.time) * -34.0f; @@ -2092,6 +2103,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerSunHourTex, 24, 24, 0); + /** + * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker + */ + sp1D8 = Math_SinS(gSaveContext.save.time) * 40.0f; temp_f14 = Math_CosS(gSaveContext.save.time) * 34.0f; @@ -2107,10 +2122,19 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerMoonHourTex, 24, 24, 0); + /** + * Cuts off Three-Day Clock's Hour Digits when they dip below the clock + */ + gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56D] * 4.0f); + /** + * Draws Three-Day Clock's Hour Digit Above the Sun + */ + + // Rotates Three-Day Clock's Hour Digit To Above the Sun sp1CC = (0, gSaveContext.save.time) * 0.000096131f; Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); @@ -2119,6 +2143,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + // Draws Three-Day Clock's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -2127,16 +2152,23 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + /** + * Draws Three-Day Clock's Hour Digit Above the Moon + */ + + // Rotates Three-Day Clock's Hour Digit To Above the Moon Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + // Draws Three-Day Clock's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -2145,61 +2177,31 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + + // Unknown gSPDisplayList(OVERLAY_DISP++, D_0E0001C8); + // Final Hours if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < 0x4000))) { if ((0, gSaveContext.save.time) >= 0x3555) { - - color1 = D_801BFC04[D_801BFA00]; - phi_v1_2 = ABS_ALT(D_801BF9EC - color1); - - frac = phi_v1_2 / D_801BF9FC; - if (D_801BF9EC >= color1) { - D_801BF9EC -= frac; - } else { - D_801BF9EC += frac; - } - - color2 = D_801BFC08[D_801BFA00]; - phi_v1_2 = ABS_ALT(D_801BF9F0 - color2); - - frac = phi_v1_2 / D_801BF9FC; - if (D_801BF9F0 >= color2) { - D_801BF9F0 -= frac; - } else { - D_801BF9F0 += frac; - } - - color3 = D_801BFC0C[D_801BFA00]; - phi_v1_2 = ABS_ALT(D_801BF9F4 - color3); - - frac = phi_v1_2 / D_801BF9FC; - if (D_801BF9F4 >= color3) { - D_801BF9F4 -= frac; - } else { - D_801BF9F4 += frac; - } - - color4 = D_801BFC10[D_801BFA00]; - phi_v1_2 = ABS_ALT(D_801BF9F8 - color4); - - frac = phi_v1_2 / D_801BF9FC; - if (D_801BF9F8 >= color4) { - D_801BF9F8 -= frac; - } else { - D_801BF9F8 += frac; - } + // The Final Hours clock will flash red + TIMED_STEP_TO(D_801BF9EC, D_801BFC04[D_801BFA00], D_801BF9FC, colorStep); + TIMED_STEP_TO(D_801BF9F0, D_801BFC08[D_801BFA00], D_801BF9FC, colorStep); + TIMED_STEP_TO(D_801BF9F4, D_801BFC0C[D_801BFA00], D_801BF9FC, colorStep); + TIMED_STEP_TO(D_801BF9F8, D_801BFC10[D_801BFA00], D_801BF9FC, colorStep); D_801BF9FC--; + if (D_801BF9FC == 0) { - D_801BF9EC = color1; - D_801BF9F0 = color2; - D_801BF9F4 = color3; - D_801BF9F8 = color4; + D_801BF9EC = D_801BFC04[D_801BFA00]; + D_801BF9F0 = D_801BFC08[D_801BFA00]; + D_801BF9F4 = D_801BFC0C[D_801BFA00]; + D_801BF9F8 = D_801BFC10[D_801BFA00]; D_801BF9FC = 6; D_801BFA00 ^= 1; } @@ -2212,7 +2214,11 @@ void Interface_DrawClock(GlobalContext* globalCtx) { func_8012C654(globalCtx->state.gfxCtx); - gSPMatrix(OVERLAY_DISP++, &D_801D1DE0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + /** + * Draws Final-Hours Clock's Frame + */ + + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, @@ -2229,44 +2235,52 @@ void Interface_DrawClock(GlobalContext* globalCtx) { 0x40000; temp_f0 = temp_a1_7 * 0.021972656f; - sp1AC[0] = 0; - sp1AC[1] = temp_f0 / 60.0f; - ; - sp1AC[2] = temp_f0 / 60.0f; - ; + finalHoursClockSlots[0] = 0; + finalHoursClockSlots[1] = temp_f0 / 60.0f; + finalHoursClockSlots[2] = temp_f0 / 60.0f; - while (sp1AC[1] >= 0xA) { - sp1AC[0]++; - sp1AC[1] -= 10; + // digits for hours + while (finalHoursClockSlots[1] >= 0xA) { + finalHoursClockSlots[0]++; + finalHoursClockSlots[1] -= 10; } - sp1AC[3] = 0; - sp1AC[4] = (s32)temp_f0 % 60; + finalHoursClockSlots[3] = 0; + finalHoursClockSlots[4] = (s32)temp_f0 % 60; - while (sp1AC[4] >= 10) { - sp1AC[3]++; - sp1AC[4] -= 10; + // digits for minutes + while (finalHoursClockSlots[4] >= 10) { + finalHoursClockSlots[3]++; + finalHoursClockSlots[4] -= 10; } - sp1AC[6] = 0; - new_var1 = (sp1AC[4] * 45.511112f); - sp1AC[7] = temp_a1_7 - (u32)(new_var1 + (sp1AC[2] * 2730.6667f)); + finalHoursClockSlots[6] = 0; + new_var1 = (finalHoursClockSlots[4] * 45.511112f); + finalHoursClockSlots[7] = + temp_a1_7 - (u32)(new_var1 + (finalHoursClockSlots[2] * 2730.6667f)); - while (sp1AC[7] >= 10) { - sp1AC[6]++; - sp1AC[7] -= 10; + // digits for seconds + while (finalHoursClockSlots[7] >= 10) { + finalHoursClockSlots[6]++; + finalHoursClockSlots[7] -= 10; } - sp1AC[2] = 10; - sp1AC[5] = 10; + // Colon separating hours from minutes + finalHoursClockSlots[2] = 10; + // Colon separating minutes from seconds + finalHoursClockSlots[5] = 10; + + /** + * Draws Final-Hours Clock's Digits + */ gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BF9EC, 0, 0, sp1E6); gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[sp1AC[sp1C6]], 8, 8, - D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], + 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); } } } From 9fc346387062c87f0d9d6e25ed43b207a7e06a84 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 22:03:55 +1100 Subject: [PATCH 018/160] Extra spaces looks bad --- src/code/z_parameter.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 2b1f3a39e..8616419d8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1935,7 +1935,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Clock's Hour Lines */ - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, D_801BFB2C); @@ -1948,7 +1947,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Clock's Border */ - gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, D_801BFB2C); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, @@ -1969,7 +1967,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Diamond */ - gDPPipeSync(OVERLAY_DISP++); // Time is slowed down to half speed with inverted song of time @@ -2012,7 +2009,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Day Number over Diamond */ - gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); @@ -2022,7 +2018,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Star for the Minute Tracker */ - gDPPipeSync(OVERLAY_DISP++); if (D_801BF974 != 0) { @@ -2072,7 +2067,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock */ - gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56C] * 4.0f); @@ -2086,7 +2080,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Sun for the Day-Time Hours Tracker */ - sp1D8 = Math_SinS(gSaveContext.save.time) * -40.0f; temp_f14 = Math_CosS(gSaveContext.save.time) * -34.0f; @@ -2106,7 +2099,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker */ - sp1D8 = Math_SinS(gSaveContext.save.time) * 40.0f; temp_f14 = Math_CosS(gSaveContext.save.time) * 34.0f; @@ -2125,7 +2117,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Cuts off Three-Day Clock's Hour Digits when they dip below the clock */ - gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, gGameInfo->data[0x56D] * 4.0f); @@ -2160,7 +2151,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draws Three-Day Clock's Hour Digit Above the Moon */ - // Rotates Three-Day Clock's Hour Digit To Above the Moon Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); @@ -2217,7 +2207,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draws Final-Hours Clock's Frame */ - gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); @@ -2273,7 +2262,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draws Final-Hours Clock's Digits */ - gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BF9EC, 0, 0, sp1E6); gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); From b747a580840cddd0d3b54c80a1dc56e3acaaa470 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 23:21:52 +1100 Subject: [PATCH 019/160] Better score, better docs for DrawClock --- include/z64save.h | 2 + src/code/z_parameter.c | 116 ++++++++++++++++++++++++----------------- 2 files changed, 71 insertions(+), 47 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index 5a54478c6..d5bb62829 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -5,6 +5,8 @@ #include "z64math.h" #include "os.h" +#define DAY_SPEED_INVERTED -2 + typedef struct { /* 0x00 */ u8 buttonItems[4][4]; /* 0x10 */ u8 cButtonSlots[4][4]; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 8616419d8..20d02daaa 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -217,7 +217,7 @@ s32 D_801BF970[] = { 0x00630000, }; -u32 D_801BF974 = 0; +s16 D_801BF974 = 0; s16 D_801BF978 = 10; @@ -299,7 +299,7 @@ s16 D_801BF9F8 = 0; s16 D_801BF9FC = 0xF; -u32 D_801BFA00 = 0; +s16 D_801BFA00 = 0; s32 D_801BFA04[] = { 0xFFF2FFF2, 0xFFE8FFF8, 0xFFF4FFF4, 0xFFF9FFF8, 0xFFF9FFF8, 0xFFF40000, @@ -1818,6 +1818,18 @@ void func_80119030(GlobalContext* globalCtx); } \ (void)0 +/** + * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var > target, this will eventually increase `var` by + * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to + * truncation from the divisions. + */ +#define TIMED_STEP_UP_TO(var, target, timeRemaining, stepVar) \ + { \ + stepVar = ABS_ALT(var - target) / timeRemaining; \ + var += stepVar; \ + } \ + (void)0 + /** * Draws either the analog three-day clock or the digital final-hours clock */ @@ -1882,29 +1894,33 @@ void Interface_DrawClock(GlobalContext* globalCtx) { f32 temp_f14; u32 temp_a1_7; s32 phi_v1_2; - s16 phi_t0_3; - + s16 currentHour; + u16 time; f32 new_var1; s16 colorStep; OPEN_DISPS(globalCtx->state.gfxCtx); - if (gGameInfo->data[0xF] != 0) { - if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && (func_801690CC(globalCtx) == 0)) || - (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 < 0x201)) || + if (REG(15) != 0) { + if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && !func_801690CC(globalCtx)) || + (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 <= 0x200)) || (gSaveContext.gameMode == 3)) { if (FrameAdvance_IsEnabled(globalCtx) == 0) { if (func_800FE4A8() == 0) { if ((0, gSaveContext.save.day) < 4) { - if ((0, gSaveContext.unk_3F22) == 0x32) { + /** + * Changes Clock's transparancy depending if Player is moving or not and possibly other things + */ + if ((0, gSaveContext.unk_3F22) == 50) { if (func_801234D4(globalCtx) != 0) { D_801BFB2C = 80; - D_801BFB34 = 20; D_801BFB30 = 5; + D_801BFB34 = 20; } else if (D_801BFB34 != 0) { D_801BFB34--; } else if (D_801BFB30 != 0) { - D_801BFB2C += (s16)(ABS_ALT(D_801BFB2C - 255) / D_801BFB30); + TIMED_STEP_UP_TO(D_801BFB2C, 255, D_801BFB30, colorStep); + if (D_801BFB2C >= 255) { D_801BFB2C = 255; D_801BFB30 = 0; @@ -1953,14 +1969,14 @@ void Interface_DrawClock(GlobalContext* globalCtx) { PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); //! @bug A texture height of 50 is given below. The texture is only 48 units height - //! resulting in this reading into the next texture. This results in a white - //! dot in the center. For the three-day clock, this is covered by the diamond. - //! However, it can be seen by the final-hours clock. + //! resulting in this reading into the next texture. This results in a white + //! dot in the bottom center of the clock. For the three-day clock, this is + //! covered by the diamond. However, it can be seen by the final-hours clock. OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && - ((0, gSaveContext.save.time) < 0x4000)))) { + ((0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { func_8012C8D4(globalCtx->state.gfxCtx); gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } else { @@ -1971,7 +1987,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { // Time is slowed down to half speed with inverted song of time if (gSaveContext.save.daySpeed == -2) { - // Clock diamond is blue and flashes high and low + // Clock diamond is blue and flashes white TIMED_STEP_TO(D_801BFBCC, D_801BFBEC[D_801BFBE8], D_801BFBE4, colorStep); TIMED_STEP_TO(D_801BFBD0, D_801BFBF0[D_801BFBE8], D_801BFBE4, colorStep); TIMED_STEP_TO(D_801BFBD4, D_801BFBF4[D_801BFBE8], D_801BFBE4, colorStep); @@ -1998,7 +2014,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, D_801BFB2C); gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); } else { - // Clock diamond is default green + // Clock diamond is green for regular daySpeed gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } @@ -2007,7 +2023,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { 40, 32, 1 << 10, 1 << 10); /** - * Draw Three-Day Clock's Day Number over Diamond + * Draw Three-Day Clock's Day-Number over Diamond */ gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); @@ -2034,8 +2050,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { D_801BF974 ^= 1; } - sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - - ((((0, gSaveContext.save.time) * 1.3183594f) / 3600.0f) * 3600.0f); + sp1D0 = ((((0, gSaveContext.save.time)) * 1.3183594f) / 3600.0f) * 3600.0f; + + sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - sp1D0; func_8012C8D4(globalCtx->state.gfxCtx); @@ -2057,7 +2074,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0xC], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayTimerStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -2069,10 +2086,11 @@ void Interface_DrawClock(GlobalContext* globalCtx) { */ gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - gGameInfo->data[0x56C] * 4.0f); + XREG(44) * 4.0f); - for (phi_t0_3 = 0; phi_t0_3 < 25; phi_t0_3++) { - if (((0, gSaveContext.save.time) & 0xFFFF) >= D_801BFB38[phi_t0_3 + 1]) { + // determines the current hour + for (currentHour = 0; currentHour <= 24; currentHour++) { + if ((0, gSaveContext.save.time) < D_801BFB38[currentHour + 1]) { break; } } @@ -2080,8 +2098,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Sun for the Day-Time Hours Tracker */ - sp1D8 = Math_SinS(gSaveContext.save.time) * -40.0f; - temp_f14 = Math_CosS(gSaveContext.save.time) * -34.0f; + + time = gSaveContext.save.time; + sp1D8 = Math_SinS(time) * -40.0f; + temp_f14 = Math_CosS(time) * -34.0f; gDPPipeSync(OVERLAY_DISP++); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -2092,15 +2112,15 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x10], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerSunHourTex, 24, 24, 0); /** * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker */ - sp1D8 = Math_SinS(gSaveContext.save.time) * 40.0f; - temp_f14 = Math_CosS(gSaveContext.save.time) * 34.0f; + sp1D8 = Math_SinS(time) * 40.0f; + temp_f14 = Math_CosS(time) * 34.0f; gDPPipeSync(OVERLAY_DISP++); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -2110,7 +2130,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x14], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerMoonHourTex, 24, 24, 0); @@ -2119,16 +2139,15 @@ void Interface_DrawClock(GlobalContext* globalCtx) { */ gDPPipeSync(OVERLAY_DISP++); gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - gGameInfo->data[0x56D] * 4.0f); + XREG(45) * 4.0f); /** * Draws Three-Day Clock's Hour Digit Above the Sun */ - // Rotates Three-Day Clock's Hour Digit To Above the Sun - sp1CC = (0, gSaveContext.save.time) * 0.000096131f; + sp1CC = gSaveContext.save.time * 0.000096131f; - Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_InsertTranslation(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-(sp1CC - 3.15f), MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), @@ -2139,9 +2158,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x18], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[currentHour], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); @@ -2152,7 +2171,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Draws Three-Day Clock's Hour Digit Above the Moon */ // Rotates Three-Day Clock's Hour Digit To Above the Moon - Matrix_InsertTranslation(0.0f, gGameInfo->data[0x56B] / 10.0f, 0.0f, MTXMODE_NEW); + + Matrix_InsertTranslation(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), @@ -2163,9 +2183,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x20], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[phi_t0_3], 4, 16, 11, 0); + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[currentHour], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); @@ -2177,9 +2197,11 @@ void Interface_DrawClock(GlobalContext* globalCtx) { // Final Hours if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && - ((0, gSaveContext.save.time) < 0x4000))) { - if ((0, gSaveContext.save.time) >= 0x3555) { + ((0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) { + sp1C6 = 0; + if ((0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { // The Final Hours clock will flash red + TIMED_STEP_TO(D_801BF9EC, D_801BFC04[D_801BFA00], D_801BF9FC, colorStep); TIMED_STEP_TO(D_801BF9F0, D_801BFC08[D_801BFA00], D_801BF9FC, colorStep); TIMED_STEP_TO(D_801BF9F4, D_801BFC0C[D_801BFA00], D_801BF9FC, colorStep); @@ -2198,8 +2220,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } sp1E6 = D_801BFB2C; - if (D_801BFB2C != 0) { - sp1E6 = 0xFF; + if (sp1E6 != 0) { + sp1E6 = 255; } func_8012C654(globalCtx->state.gfxCtx); @@ -2220,8 +2242,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); temp_a1_7 = - (-(CURRENT_DAY << 0x10) - (((0, gSaveContext.save.time) - 0x4000) & 0xFFFF)) + - 0x40000; + (-(CURRENT_DAY << 0x10) - (u16)((0, gSaveContext.save.time) - 0x4000)) + 0x40000; + temp_f0 = temp_a1_7 * 0.021972656f; finalHoursClockSlots[0] = 0; @@ -2229,13 +2251,13 @@ void Interface_DrawClock(GlobalContext* globalCtx) { finalHoursClockSlots[2] = temp_f0 / 60.0f; // digits for hours - while (finalHoursClockSlots[1] >= 0xA) { + while (finalHoursClockSlots[1] >= 10) { finalHoursClockSlots[0]++; finalHoursClockSlots[1] -= 10; } finalHoursClockSlots[3] = 0; - finalHoursClockSlots[4] = (s32)temp_f0 % 60; + finalHoursClockSlots[4] = (s16)temp_f0 % 60; // digits for minutes while (finalHoursClockSlots[4] >= 10) { @@ -2266,7 +2288,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BF9EC, 0, 0, sp1E6); gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); - for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { + for (; sp1C6 < 8; sp1C6++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); } From 91b27a606c17d1481cb0228e3364bf2fdc3baa33 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 23:41:22 +1100 Subject: [PATCH 020/160] more docs --- include/variables.h | 12 ++-- src/code/z_parameter.c | 116 +++++++++++++++++++------------------ tools/disasm/variables.txt | 12 ++-- 3 files changed, 72 insertions(+), 68 deletions(-) diff --git a/include/variables.h b/include/variables.h index 357752d16..251175b64 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1092,12 +1092,12 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BF9E6; // extern UNK_TYPE2 D_801BF9E8; // extern UNK_TYPE2 D_801BF9EA; -// extern UNK_TYPE2 D_801BF9EC; -// extern UNK_TYPE2 D_801BF9F0; -// extern UNK_TYPE2 D_801BF9F4; -// extern UNK_TYPE2 D_801BF9F8; -// extern UNK_TYPE2 D_801BF9FC; -// extern UNK_TYPE2 D_801BFA00; +// extern UNK_TYPE2 sFinalHoursClockDigitsRed; +// extern UNK_TYPE2 sFinalHoursClockFrameEnvRed; +// extern UNK_TYPE2 sFinalHoursClockFrameEnvGreen; +// extern UNK_TYPE2 sFinalHoursClockFrameEnvBlue; +// extern UNK_TYPE2 sFinalHoursClockColorTimer; +// extern UNK_TYPE2 sFinalHoursClockColorTargetIndex; // extern UNK_TYPE2 D_801BFA04; // extern UNK_TYPE2 D_801BFA1C; // extern UNK_TYPE2 D_801BFA34; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 20d02daaa..8ecd54527 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -289,17 +289,12 @@ s32 D_801BF9E8[] = { 0x026C026C, }; -s16 D_801BF9EC = 0; - -s16 D_801BF9F0 = 0; - -s16 D_801BF9F4 = 0; - -s16 D_801BF9F8 = 0; - -s16 D_801BF9FC = 0xF; - -s16 D_801BFA00 = 0; +s16 sFinalHoursClockDigitsRed = 0; +s16 sFinalHoursClockFrameEnvRed = 0; +s16 sFinalHoursClockFrameEnvGreen = 0; +s16 sFinalHoursClockFrameEnvBlue = 0; +s16 sFinalHoursClockColorTimer = 15; +s16 sFinalHoursClockColorTargetIndex = 0; s32 D_801BFA04[] = { 0xFFF2FFF2, 0xFFE8FFF8, 0xFFF4FFF4, 0xFFF9FFF8, 0xFFF9FFF8, 0xFFF40000, @@ -1835,9 +1830,10 @@ void func_80119030(GlobalContext* globalCtx); */ #ifdef NON_EQUIVALENT void Interface_DrawClock(GlobalContext* globalCtx) { - static s16 D_801BFB2C = 255; - static s16 D_801BFB30 = 0; - static s16 D_801BFB34 = 0; + static s16 D_801BFB2C = 255; // clockAlpha + static s16 D_801BFB30 = 0; // clockAlphaTimer1 + static s16 D_801BFB34 = 0; // clockAlphaTimer2 + // clockHours static u16 D_801BFB38[] = { CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), @@ -1845,6 +1841,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; + // threeDayTimerHourTexs static TexturePtr D_801BFB6C[] = { gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, @@ -1853,31 +1850,31 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, }; - static s16 D_801BFBCC = 0; // color R - static s16 D_801BFBD0 = 0; // color G - static s16 D_801BFBD4 = 255; // color B - static s16 D_801BFBD8 = 0; - static s16 D_801BFBDC = 0; - static s16 D_801BFBE0 = 0; - static s16 D_801BFBE4 = 0xF; - static s16 D_801BFBE8 = 0; - static s16 D_801BFBEC[] = { 100, 0 }; - static s16 D_801BFBF0[] = { 205, 155 }; - static s16 D_801BFBF4[] = { 255, 255 }; - static s16 D_801BFBF8[] = { 30, 0 }; - static s16 D_801BFBFC[] = { 30, 0 }; - static s16 D_801BFC00[] = { 100, 0 }; - static s16 D_801BFC04[] = { 255, 0 }; - static s16 D_801BFC08[] = { 100, 0 }; - static s16 D_801BFC0C[] = { 30, 0 }; - static s16 D_801BFC10[] = { 100, 0 }; - // sFinalHoursCounterDigitTex + static s16 D_801BFBCC = 0; // clockInvDiamondPrimRed + static s16 D_801BFBD0 = 0; // clockInvDiamondPrimGreen + static s16 D_801BFBD4 = 255; // clockInvDiamondPrimBlue + static s16 D_801BFBD8 = 0; // clockInvDiamondEnvRed + static s16 D_801BFBDC = 0; // clockInvDiamondEnvGreen + static s16 D_801BFBE0 = 0; // clockInvDiamondEnvBlue + static s16 D_801BFBE4 = 15; // clockInvDiamondTimer + static s16 D_801BFBE8 = 0; // clockInvDiamondTargetIndex + static s16 D_801BFBEC[] = { 100, 0 }; // clockInvDiamondPrimRedTargets + static s16 D_801BFBF0[] = { 205, 155 }; // clockInvDiamondPrimGreenTargets + static s16 D_801BFBF4[] = { 255, 255 }; // clockInvDiamondPrimBlueTargets + static s16 D_801BFBF8[] = { 30, 0 }; // clockInvDiamondEnvRedTargets + static s16 D_801BFBFC[] = { 30, 0 }; // clockInvDiamondEnvGreenTargets + static s16 D_801BFC00[] = { 100, 0 }; // clockInvDiamondEnvBlueTargets + static s16 D_801BFC04[] = { 255, 0 }; // finalHoursClockDigitsRed + static s16 D_801BFC08[] = { 100, 0 }; // finalHoursClockFrameEnvRedTargets + static s16 D_801BFC0C[] = { 30, 0 }; // finalHoursClockFrameEnvGreenTargets + static s16 D_801BFC10[] = { 100, 0 }; // finalHoursClockFrameEnvBlueTargets + // finalHoursCounterDigitTex static TexturePtr D_801BFC14[] = { gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, }; - // sFinalHoursDigitSlotPosXOffset + // finalHoursDigitSlotPosXOffset static s16 D_801BFC40[] = { 127, 136, 144, 151, 160, 168, 175, 184, }; @@ -1920,7 +1917,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { D_801BFB34--; } else if (D_801BFB30 != 0) { TIMED_STEP_UP_TO(D_801BFB2C, 255, D_801BFB30, colorStep); - + if (D_801BFB2C >= 255) { D_801BFB2C = 255; D_801BFB30 = 0; @@ -2085,8 +2082,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock */ gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - XREG(44) * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, XREG(44) * 4.0f); // determines the current hour for (currentHour = 0; currentHour <= 24; currentHour++) { @@ -2138,8 +2134,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Cuts off Three-Day Clock's Hour Digits when they dip below the clock */ gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - XREG(45) * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, XREG(45) * 4.0f); /** * Draws Three-Day Clock's Hour Digit Above the Sun @@ -2171,7 +2166,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Draws Three-Day Clock's Hour Digit Above the Moon */ // Rotates Three-Day Clock's Hour Digit To Above the Moon - + Matrix_InsertTranslation(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); @@ -2201,21 +2196,29 @@ void Interface_DrawClock(GlobalContext* globalCtx) { sp1C6 = 0; if ((0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { // The Final Hours clock will flash red - - TIMED_STEP_TO(D_801BF9EC, D_801BFC04[D_801BFA00], D_801BF9FC, colorStep); - TIMED_STEP_TO(D_801BF9F0, D_801BFC08[D_801BFA00], D_801BF9FC, colorStep); - TIMED_STEP_TO(D_801BF9F4, D_801BFC0C[D_801BFA00], D_801BF9FC, colorStep); - TIMED_STEP_TO(D_801BF9F8, D_801BFC10[D_801BFA00], D_801BF9FC, colorStep); - D_801BF9FC--; + TIMED_STEP_TO(sFinalHoursClockDigitsRed, + D_801BFC04[sFinalHoursClockColorTargetIndex], + sFinalHoursClockColorTimer, colorStep); + TIMED_STEP_TO(sFinalHoursClockFrameEnvRed, + D_801BFC08[sFinalHoursClockColorTargetIndex], + sFinalHoursClockColorTimer, colorStep); + TIMED_STEP_TO(sFinalHoursClockFrameEnvGreen, + D_801BFC0C[sFinalHoursClockColorTargetIndex], + sFinalHoursClockColorTimer, colorStep); + TIMED_STEP_TO(sFinalHoursClockFrameEnvBlue, + D_801BFC10[sFinalHoursClockColorTargetIndex], + sFinalHoursClockColorTimer, colorStep); - if (D_801BF9FC == 0) { - D_801BF9EC = D_801BFC04[D_801BFA00]; - D_801BF9F0 = D_801BFC08[D_801BFA00]; - D_801BF9F4 = D_801BFC0C[D_801BFA00]; - D_801BF9F8 = D_801BFC10[D_801BFA00]; - D_801BF9FC = 6; - D_801BFA00 ^= 1; + sFinalHoursClockColorTimer--; + + if (sFinalHoursClockColorTimer == 0) { + sFinalHoursClockDigitsRed = D_801BFC04[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvRed = D_801BFC08[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvGreen = D_801BFC0C[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvBlue = D_801BFC10[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockColorTimer = 6; + sFinalHoursClockColorTargetIndex ^= 1; } } @@ -2236,7 +2239,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 195, sp1E6); - gDPSetEnvColor(OVERLAY_DISP++, D_801BF9F0, D_801BF9F4, D_801BF9F8, 0); + gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, + sFinalHoursClockFrameEnvGreen, sFinalHoursClockFrameEnvBlue, 0); OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursTimerFrameTex, 3, 80, 13, 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); @@ -2285,8 +2289,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Draws Final-Hours Clock's Digits */ gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BF9EC, 0, 0, sp1E6); - gDPSetEnvColor(OVERLAY_DISP++, D_801BF9EC, 0, 0, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sFinalHoursClockDigitsRed, 0, 0, sp1E6); + gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockDigitsRed, 0, 0, 0); for (; sp1C6 < 8; sp1C6++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 86642024f..e5b63e530 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1106,12 +1106,12 @@ 0x801BF9E0:("D_801BF9E0","UNK_TYPE4","",0x4), 0x801BF9E4:("D_801BF9E4","UNK_TYPE4","",0x4), 0x801BF9E8:("D_801BF9E8","UNK_TYPE4","",0x4), - 0x801BF9EC:("D_801BF9EC","UNK_TYPE4","",0x4), - 0x801BF9F0:("D_801BF9F0","UNK_TYPE2","",0x2), - 0x801BF9F4:("D_801BF9F4","UNK_TYPE2","",0x2), - 0x801BF9F8:("D_801BF9F8","UNK_TYPE2","",0x2), - 0x801BF9FC:("D_801BF9FC","UNK_TYPE2","",0x2), - 0x801BFA00:("D_801BFA00","UNK_TYPE2","",0x2), + 0x801BF9EC:("sFinalHoursClockDigitsRed","UNK_TYPE4","",0x4), + 0x801BF9F0:("sFinalHoursClockFrameEnvRed","UNK_TYPE2","",0x2), + 0x801BF9F4:("sFinalHoursClockFrameEnvGreen","UNK_TYPE2","",0x2), + 0x801BF9F8:("sFinalHoursClockFrameEnvBlue","UNK_TYPE2","",0x2), + 0x801BF9FC:("sFinalHoursClockColorTimer","UNK_TYPE2","",0x2), + 0x801BFA00:("sFinalHoursClockColorTargetIndex","UNK_TYPE2","",0x2), 0x801BFA04:("D_801BFA04","UNK_TYPE2","",0x2), 0x801BFA1C:("D_801BFA1C","UNK_TYPE2","",0x2), 0x801BFA34:("D_801BFA34","UNK_TYPE2","",0x2), From f956c25aa92c78d5b3e97551a77ada06622ab3ba Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 27 Dec 2021 23:52:50 +1100 Subject: [PATCH 021/160] Update Parameter_Static --- .../{misc => interface}/parameter_static.xml | 71 ++++++++++--------- spec | 2 +- src/code/z_parameter.c | 57 +++++++-------- 3 files changed, 65 insertions(+), 65 deletions(-) rename assets/xml/{misc => interface}/parameter_static.xml (70%) diff --git a/assets/xml/misc/parameter_static.xml b/assets/xml/interface/parameter_static.xml similarity index 70% rename from assets/xml/misc/parameter_static.xml rename to assets/xml/interface/parameter_static.xml index bf67840b8..dd35b081e 100644 --- a/assets/xml/misc/parameter_static.xml +++ b/assets/xml/interface/parameter_static.xml @@ -20,7 +20,7 @@ - + @@ -32,6 +32,7 @@ + @@ -43,6 +44,8 @@ + + @@ -76,41 +79,41 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + diff --git a/spec b/spec index 3cdca4171..75e8c7d28 100644 --- a/spec +++ b/spec @@ -9313,7 +9313,7 @@ beginseg name "parameter_static" compress romalign 0x1000 - include "build/assets/misc/parameter_static/parameter_static.o" + include "build/assets/interface/parameter_static/parameter_static.o" number 2 endseg diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 8ecd54527..39a5a352b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,5 +1,5 @@ #include "global.h" -#include "misc/parameter_static/parameter_static.h" +#include "interface/parameter_static/parameter_static.h" void Map_Update(GlobalContext* globalCtx); u8 func_800FE4A8(); @@ -1843,12 +1843,12 @@ void Interface_DrawClock(GlobalContext* globalCtx) { }; // threeDayTimerHourTexs static TexturePtr D_801BFB6C[] = { - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, }; static s16 D_801BFBCC = 0; // clockInvDiamondPrimRed static s16 D_801BFBD0 = 0; // clockInvDiamondPrimGreen @@ -1870,9 +1870,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { static s16 D_801BFC10[] = { 100, 0 }; // finalHoursClockFrameEnvBlueTargets // finalHoursCounterDigitTex static TexturePtr D_801BFC14[] = { - gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, - gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, - gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, + gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, + gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, + gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, }; // finalHoursDigitSlotPosXOffset static s16 D_801BFC40[] = { @@ -1954,7 +1954,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerHourLinesTex, 4, 64, 35, 96, 180, + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); /** @@ -1969,7 +1969,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { //! resulting in this reading into the next texture. This results in a white //! dot in the bottom center of the clock. For the three-day clock, this is //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayTimerDialBoarderTex, 4, 64, 50, 96, 168, + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockDialBorderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && @@ -2016,7 +2016,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayTimerDiamondTex, 40, 32, 140, 190, + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, 190, 40, 32, 1 << 10, 1 << 10); /** @@ -2048,7 +2048,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } sp1D0 = ((((0, gSaveContext.save.time)) * 1.3183594f) / 3600.0f) * 3600.0f; - sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - sp1D0; func_8012C8D4(globalCtx->state.gfxCtx); @@ -2072,7 +2071,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayTimerStarMinuteTex, G_IM_FMT_I, 16, 16, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayClockStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); @@ -2094,7 +2093,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draw Three-Day Clock's Sun for the Day-Time Hours Tracker */ - time = gSaveContext.save.time; sp1D8 = Math_SinS(time) * -40.0f; temp_f14 = Math_CosS(time) * -34.0f; @@ -2110,7 +2108,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerSunHourTex, 24, 24, 0); + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); /** * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker @@ -2128,7 +2126,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayTimerMoonHourTex, 24, 24, 0); + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); /** * Cuts off Three-Day Clock's Hour Digits when they dip below the clock @@ -2139,9 +2137,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { /** * Draws Three-Day Clock's Hour Digit Above the Sun */ - // Rotates Three-Day Clock's Hour Digit To Above the Sun sp1CC = gSaveContext.save.time * 0.000096131f; + // Rotates Three-Day Clock's Hour Digit To Above the Sun Matrix_InsertTranslation(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-(sp1CC - 3.15f), MTXMODE_APPLY); @@ -2166,7 +2164,6 @@ void Interface_DrawClock(GlobalContext* globalCtx) { * Draws Three-Day Clock's Hour Digit Above the Moon */ // Rotates Three-Day Clock's Hour Digit To Above the Moon - Matrix_InsertTranslation(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_InsertZRotation_f(-sp1CC, MTXMODE_APPLY); @@ -2242,7 +2239,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, sFinalHoursClockFrameEnvGreen, sFinalHoursClockFrameEnvBlue, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursTimerFrameTex, 3, 80, 13, 119, + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); temp_a1_7 = @@ -2317,12 +2314,12 @@ u16 D_801BFB38[] = { CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; TexturePtr D_801BFB6C[] = { - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, - gThreeDayTimerHour12Tex, gThreeDayTimerHour1Tex, gThreeDayTimerHour2Tex, gThreeDayTimerHour3Tex, - gThreeDayTimerHour4Tex, gThreeDayTimerHour5Tex, gThreeDayTimerHour6Tex, gThreeDayTimerHour7Tex, - gThreeDayTimerHour8Tex, gThreeDayTimerHour9Tex, gThreeDayTimerHour10Tex, gThreeDayTimerHour11Tex, + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, }; s16 D_801BFBCC = 0; // color R s16 D_801BFBD0 = 155; // color G @@ -2343,9 +2340,9 @@ s16 D_801BFC08[] = { 100, 0 }; s16 D_801BFC0C[] = { 30, 0 }; s16 D_801BFC10[] = { 100, 0 }; TexturePtr D_801BFC14[] = { - gFinalHoursTimerDigit0Tex, gFinalHoursTimerDigit1Tex, gFinalHoursTimerDigit2Tex, gFinalHoursTimerDigit3Tex, - gFinalHoursTimerDigit4Tex, gFinalHoursTimerDigit5Tex, gFinalHoursTimerDigit6Tex, gFinalHoursTimerDigit7Tex, - gFinalHoursTimerDigit8Tex, gFinalHoursTimerDigit9Tex, gFinalHoursTimerColonTex, + gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, + gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, + gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, }; s16 D_801BFC40[] = { 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, From fe83c939fa0660e2f61bb3f653afed6e5af59b25 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 00:43:21 +1100 Subject: [PATCH 022/160] Interface_DrawMagicBar OK --- src/code/z_parameter.c | 55 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 39a5a352b..ed4f0c898 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1738,8 +1738,59 @@ void func_80116088(void) { void Interface_UpdateMagicBar(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s") -void Interface_DrawMagicBar(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s") +void Interface_DrawMagicBar(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 magicBarY; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + if (gSaveContext.save.playerData.magicLevel != 0) { + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + magicBarY = 42; + } else { + magicBarY = 34; + } + + func_8012C654(globalCtx->state.gfxCtx); + + gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); + + OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha); + OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, ((void)0, gSaveContext.unk_3F2E), 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha); + OVERLAY_DISP = func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.unk_3F2E) + 26, magicBarY, 8, 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha, 3, 0x100); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + + if (gSaveContext.unk_3F28 == 4) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + + gDPPipeSync(OVERLAY_DISP++); + + if (gSaveContext.save.weekEventReg[0xE] & 8) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); + } + + gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + } else { + if (gSaveContext.save.weekEventReg[0xE] & 8) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); + } + + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + } + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} void func_80116FD8(GlobalContext* globalCtx, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From a818f88cf65471476afc02187b4377092d7f5304 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 01:40:22 +1100 Subject: [PATCH 023/160] clean up data --- include/variables.h | 6 +- src/code/z_parameter.c | 294 ++++++++++++++++--------------------- tools/disasm/variables.txt | 9 +- 3 files changed, 133 insertions(+), 176 deletions(-) diff --git a/include/variables.h b/include/variables.h index 251175b64..e41db0546 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1047,9 +1047,9 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BF890; // extern UNK_TYPE2 D_801BF898; // extern UNK_TYPE2 D_801BF89C; -// extern UNK_TYPE2 D_801BF8A0; -// extern UNK_TYPE2 D_801BF8A4; -// extern UNK_TYPE2 D_801BF8A8; +// extern UNK_TYPE2 sMagicBarOutlinePrimRed; +// extern UNK_TYPE2 sMagicBarOutlinePrimGreen; +// extern UNK_TYPE2 sMagicBarOutlinePrimBlue; // extern UNK_TYPE2 D_801BF8AC; // extern UNK_TYPE2 D_801BF8B0; // extern UNK_TYPE2 D_801BF8DC; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index ed4f0c898..8fdc077fd 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -141,9 +141,7 @@ static RestrictionFlags sRestrictionFlags[] = { s16 D_801BF884 = 0; // pictoBox related -s32 D_801BF888[] = { - 0x00000000, -}; +s32 D_801BF888 = 0; // sMinigameScoreTier s16 D_801BF88C = 0; @@ -151,27 +149,18 @@ s16 D_801BF88C = 0; // sMinigameScoreDigits u16 D_801BF890[] = { 0, 0, 0, 0 }; -s32 D_801BF898[] = { - 0x00000000, -}; +s32 D_801BF898 = 0; -s32 D_801BF89C[] = { - 0x00000000, -}; +s32 D_801BF89C = 0; -s16 D_801BF8A0 = 0xFF; +s16 sMagicBarOutlinePrimRed = 255; +s16 sMagicBarOutlinePrimGreen = 255; +s16 sMagicBarOutlinePrimBlue = 255; -s16 D_801BF8A4 = 0xFF; +s16 D_801BF8AC = 2; -s16 D_801BF8A8 = 0xFF; - -s32 D_801BF8AC[] = { - 0x00020000, -}; - -s32 D_801BF8B0[] = { - 0x00010000, 0x00080008, 0x00090009, 0x00060006, 0x00060006, 0x00010001, - 0x00010007, 0x00070007, 0x00070008, 0x00080009, 0x00090000, +s16 D_801BF8B0[] = { + 1, 0, 8, 8, 9, 9, 6, 6, 6, 6, 1, 1, 1, 7, 7, 7, 7, 8, 8, 9, 9, 0, }; s16 D_801BF8DC = 0; @@ -187,35 +176,25 @@ s32 D_801BF8E8[] = { OSTime D_801BF8F0 = 0; -s32 D_801BF8F8[] = { - 0x00000000, -}; +s32 D_801BF8F8 = 0; s32 D_801BF8FC[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; -s32 D_801BF930[] = { - 0x00000000, -}; +s32 D_801BF930 = 0; s32 D_801BF934[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; -s32 D_801BF968[] = { - 0x00000000, -}; +s32 D_801BF968 = 0; -s32 D_801BF96C[] = { - 0x00000000, -}; +s32 D_801BF96C = 0; -s32 D_801BF970[] = { - 0x00630000, -}; +s16 D_801BF970 = 99; s16 D_801BF974 = 0; @@ -232,32 +211,35 @@ Gfx D_801BF988[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_1PRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsSPEndDisplayList(), }; -s32 D_801BF998[] = { - 0xEF802C30, 0x00504340, 0xFCFFFFFF, 0xFFFDF6FB, 0xDF000000, 0x00000000, -}; - -s32 D_801BF9B0[] = { - 0x00000000, -}; +s32 D_801BF9B0 = 0; s32 D_801BF9B4[] = { 0x42C80000, // f32: 100.0 0x42DA0000, // f32: 109.0 }; -s32 D_801BF9BC[] = { - 0x022602A8, - 0x02A802A8, +s16 D_801BF9BC[] = { + 0x226, + 0x2A8, + 0x2A8, + 0x2A8, }; -s32 D_801BF9C4[] = { - 0x009E009B, +s16 D_801BF9C4[] = { + 0x9E, + 0x9B, }; -s32 D_801BF9C8[] = { - 0x00170016, +s16 D_801BF9C8[] = { + 0x17, + 0x16, }; s32 D_801BF9CC[] = { @@ -265,28 +247,34 @@ s32 D_801BF9CC[] = { 0xC3AF0000, // f32: -350.0 }; -s32 D_801BF9D4[] = { - 0x00A700E3, +s16 D_801BF9D4[] = { + 0xA7, + 0xE3, }; -s32 D_801BF9D8[] = { - 0x00F9010F, +s16 D_801BF9D8[] = { + 0xF9, + 0x10F, }; -s32 D_801BF9DC[] = { - 0x00110012, +s16 D_801BF9DC[] = { + 0x11, + 0x12, }; -s32 D_801BF9E0[] = { - 0x00220012, +s16 D_801BF9E0[] = { + 0x22, + 0x12, }; -s32 D_801BF9E4[] = { - 0x023F026C, +s16 D_801BF9E4[] = { + 0x23F, + 0x26C, }; -s32 D_801BF9E8[] = { - 0x026C026C, +s16 D_801BF9E8[] = { + 0x26C, + 0x26C, }; s16 sFinalHoursClockDigitsRed = 0; @@ -296,111 +284,34 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -s32 D_801BFA04[] = { - 0xFFF2FFF2, 0xFFE8FFF8, 0xFFF4FFF4, 0xFFF9FFF8, 0xFFF9FFF8, 0xFFF40000, +s16 D_801BFA04[] = { + 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, }; -s32 D_801BFA1C[] = { - 0x001C001C, 0x00300010, 0x00180018, 0x00100010, 0x00100010, 0x00180000, +s16 D_801BFA1C[] = { + 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, }; -s32 D_801BFA34[] = { - 0x000E000E, 0x00080018, 0xFFAEFFAE, 0x003A003B, 0x003A003B, 0x00200000, +s16 D_801BFA34[] = { + 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, }; -s32 D_801BFA4C[] = { - 0x001C001C, 0x00100010, 0x00180018, 0x000B000B, 0x000B000B, 0x00200000, +s16 D_801BFA4C[] = { + 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, }; -s32 D_801BFA64[] = { - 0xFFC3FFD3, - 0x001D0068, - 0xFF8BFFD6, - 0x00200037, +s16 D_801BFA64[] = { + 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, }; -s32 D_801BFA74[] = { - 0x0001FFBA, - 0xFF9DFFBA, - 0x00470065, - 0x00480001, +s16 D_801BFA74[] = { + 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, }; -// Possibly? -// s32 D_801BFA84 = 0; -// s16 D_801BFA88 = {...}; -s32 D_801BFA84[] = { - 0x00000000, 0x0005000A, 0x0014001E, 0x000A001E, 0x00280032, 0x0014000A, - 0x00010005, 0x00010005, 0x000A0014, 0x00320064, 0x00C80000, -}; +s32 D_801BFA84 = 0; -s32 sDoActionTextures[] = { - 0x09000000, // gAttackDoActionENGTex - 0x09000180, // gCheckDoActionENGTex -}; - -s32 D_801BFAB8[] = { - 0x00FF00FF, - 0x00FF0096, - 0x00960096, -}; - -s32 D_801BFAC4[] = { - 0x00000001, - 0x00010000, -}; - -s32 D_801BFACC[] = { - 0x00020001, - 0x00020001, -}; - -TexturePtr D_801BFAD4[] = { - gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, -}; - -s32 D_801BFAE8[] = { - 0x00820088, - 0x00880088, - 0x00880000, -}; - -s32 D_801BFAF4[] = { - 0x001D001B, -}; - -s32 D_801BFAF8[] = { - 0x001B001B, -}; - -s32 D_801BFAFC[] = { - 0x001E0018, - 0x00180018, -}; - -s32 D_801BFB04[] = { - 0x00A200E4, - 0x00FA0110, -}; - -s32 D_801BFB0C[] = { - 0x00230023, - 0x00330023, -}; - -s32 D_801BFB14[] = { - 0x00FF0064, - 0x00FF0000, -}; - -s32 D_801BFB1C[] = { - 0x00000064, - 0x00FF0000, -}; - -s32 D_801BFB24[] = { - 0x000000FF, - 0x00640000, +s16 D_801BFA88[] = { + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, }; Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, @@ -552,12 +463,12 @@ void func_8010E968(s32 arg0) { func_80175E68(&D_801F5850[0], 0); btnAPressed = CHECK_BTN_ALL(D_801F5850[0].cur.button, BTN_A); - if ((btnAPressed != D_801BFA84[0]) && btnAPressed) { + if ((btnAPressed != D_801BFA84) && btnAPressed) { gSaveContext.unk_3DC8 = osGetTime(); gSaveContext.unk_3DD0[0] = 15; } - D_801BFA84[0] = btnAPressed; + D_801BFA84 = btnAPressed; } void func_8010E9F0(s16 timerId, s16 arg1) { @@ -1650,6 +1561,11 @@ void func_801153C8(s32* buf, s32 size) { } void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 loadOffset) { + static TexturePtr sDoActionTextures[] = { + 0x09000000, // gAttackDoActionENGTex + 0x09000180, // gCheckDoActionENGTex + }; + if (action >= DO_ACTION_MAX) { action = DO_ACTION_NONE; } @@ -1707,7 +1623,7 @@ void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { void func_80115D5C(GameState* gamestate) { if ((gSaveContext.unk_3F28 != 8) && (gSaveContext.unk_3F28 != 9)) { - D_801BF8A0 = D_801BF8A4 = D_801BF8A8 = 0xFF; + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; gSaveContext.unk_3F28 = 0; } } @@ -1733,6 +1649,11 @@ void func_80116088(void) { } } +s16 D_801BFAB8[] = { + 255, 255, 255, 150, 150, 150, +}; +s16 D_801BFAC4[] = { 0, 1, 1, 0 }; +s16 D_801BFACC[] = { 2, 1, 2, 1 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116114.s") void Interface_UpdateMagicBar(GlobalContext* globalCtx); @@ -1755,18 +1676,29 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); - OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha); - OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, ((void)0, gSaveContext.unk_3F2E), 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha); - OVERLAY_DISP = func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.unk_3F2E) + 26, magicBarY, 8, 16, 1 << 10, 1 << 10, D_801BF8A0, D_801BF8A4, D_801BF8A8, interfaceCtx->magicAlpha, 3, 0x100); - + OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, + sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, + interfaceCtx->magicAlpha); + OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, + ((void)0, gSaveContext.unk_3F2E), 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, + sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); + OVERLAY_DISP = + func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.unk_3F2E) + 26, magicBarY, 8, 16, + 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, + sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); + gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); if (gSaveContext.unk_3F28 == 4) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, + (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -1776,7 +1708,10 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); } - gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + gSPTextureRectangle( + OVERLAY_DISP++, 104, (magicBarY + 3) << 2, + ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, + (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); } else { if (gSaveContext.save.weekEventReg[0xE] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); @@ -1784,8 +1719,11 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); } - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, + (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -1821,11 +1759,28 @@ void func_801170B8(InterfaceContext* interfaceCtx) { func_8013FBC8(&interfaceCtx->view); } +TexturePtr D_801BFAD4[] = { + gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, +}; +s16 D_801BFAE8[] = { + 130, 136, 136, 136, 136, +}; +s16 D_801BFAF4[] = { + 0x1D, + 0x1B, +}; +s16 D_801BFAF8[] = { + 0x1B, + 0x1B, +}; void Interface_DrawItemButtons(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s") +s16 D_801BFAFC[] = { 30, 24, 24, 24 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117A20.s") +s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; +s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117BD0.s") void func_80118084(GlobalContext* globalCtx); @@ -1837,6 +1792,9 @@ void func_80118890(GlobalContext* globalCtx); void func_80118BA4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118BA4.s") +s16 D_801BFB14[] = { 255, 100, 255, 0 }; +s16 D_801BFB1C[] = { 0, 100, 255, 0 }; +s16 D_801BFB24[] = { 0, 255, 100, 0 }; void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") @@ -2648,7 +2606,7 @@ void Interface_Draw(GlobalContext* globalCtx) { case SCENE_MITURIN: case SCENE_HAKUGIN: case SCENE_SEA: - if (gSaveContext.save.inventory.dungeonKeys[0, gSaveContext.mapIndex] >= 0) { + if (gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] >= 0) { // Small Key Icon gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); @@ -2662,7 +2620,7 @@ void Interface_Draw(GlobalContext* globalCtx) { TEXEL0, 0, PRIMITIVE, 0); counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[0, gSaveContext.mapIndex]; + counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex]; while (counterDigits[3] >= 10) { counterDigits[2]++; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index e5b63e530..f74a26f36 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1070,9 +1070,9 @@ 0x801BF890:("D_801BF890","UNK_TYPE2","",0x2), 0x801BF898:("D_801BF898","UNK_TYPE2","",0x2), 0x801BF89C:("D_801BF89C","UNK_TYPE2","",0x2), - 0x801BF8A0:("D_801BF8A0","UNK_TYPE2","",0x2), - 0x801BF8A4:("D_801BF8A4","UNK_TYPE2","",0x2), - 0x801BF8A8:("D_801BF8A8","UNK_TYPE2","",0x2), + 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), + 0x801BF8A4:("sMagicBarOutlinePrimGreen","UNK_TYPE2","",0x2), + 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), 0x801BF8AC:("D_801BF8AC","UNK_TYPE2","",0x2), 0x801BF8B0:("D_801BF8B0","UNK_TYPE2","",0x2), 0x801BF8DC:("D_801BF8DC","UNK_TYPE2","",0x2), @@ -1092,8 +1092,7 @@ 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), 0x801BF97C:("D_801BF97C","UNK_TYPE4","",0x4), 0x801BF980:("D_801BF980","UNK_TYPE4","",0x4), - 0x801BF988:("D_801BF988","UNK_TYPE1","",0x1), - 0x801BF998:("D_801BF998","UNK_TYPE1","",0x1), + 0x801BF988:("D_801BF988","Gfx","[5]",0x28), 0x801BF9B0:("D_801BF9B0","UNK_TYPE2","",0x2), 0x801BF9B4:("D_801BF9B4","UNK_TYPE1","",0x1), 0x801BF9BC:("D_801BF9BC","UNK_TYPE1","",0x1), From 634157a5554898a3e908bcbe531c26173365f87c Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 17:17:04 +1100 Subject: [PATCH 024/160] Attempt Item_Give, needs a lot of work still --- include/functions.h | 4 +- include/macros.h | 1 + include/z64item.h | 5 +- src/code/z_parameter.c | 465 ++++++++++++++++++++++++++++++++++++++++- 4 files changed, 466 insertions(+), 9 deletions(-) diff --git a/include/functions.h b/include/functions.h index c7bc79d77..ca926e5c4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2056,7 +2056,7 @@ void func_80112AFC(GlobalContext* globalCtx); void Interface_LoadItemIcon(GlobalContext* globalCtx, u32 arg1); // void func_80112BE4(void); // void func_80112C0C(void); -u32 Item_Give(GlobalContext* globalCtx, u8 param_2); +u8 Item_Give(GlobalContext* globalCtx, u8 param_2); // void func_801143CC(void); s32 func_80114978(u8 arg0); void func_801149A0(s16 arg0, s16 arg1); @@ -2150,7 +2150,7 @@ s32 func_80123810(GlobalContext* globalCtx); void func_80123AA4(Player* player, s32 arg1); // void func_80123BD4(void); // void func_80123C58(void); -// void func_80123C90(void); +void func_80123C90(GlobalContext* globalCtx, Player* player); void func_80123D50(GlobalContext* globalCtx, Player* player, UNK_TYPE arg2, UNK_TYPE arg3); void func_80123DA4(Player* player); // void func_80123DC0(void); diff --git a/include/macros.h b/include/macros.h index d00da3b08..f08d810a7 100644 --- a/include/macros.h +++ b/include/macros.h @@ -74,6 +74,7 @@ #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 SET_EQUIP_VALUE(equip, value) (gSaveContext.save.equips.equipment = ((((void)0, gSaveContext.save.equips.equipment) & (gEquipNegMasks[equip])) | (u16)((u16)(value) << gEquipShifts[equip]))) #define CAPACITY(upg, value) gUpgradeCapacities[upg][value] #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) diff --git a/include/z64item.h b/include/z64item.h index 8aa0b45a3..6a9b62417 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -43,8 +43,11 @@ typedef enum { /* 0x10 */ QUEST_SONG_STORMS, /* 0x11 */ QUEST_SONG_SUN, /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, - /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, + /* 0x17 */ QUEST_SKULL_TOKEN = 0x17, + /* 0x18 */ QUEST_SONG_LULLABY_INTRO, /* 0x19 */ QUEST_UNK_19, // Related to PictoBox + /* 0x1C */ QUEST_HEART_PIECE = 0x1C, + /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; typedef enum { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 8fdc077fd..d2bf94e12 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -159,8 +159,12 @@ s16 sMagicBarOutlinePrimBlue = 255; s16 D_801BF8AC = 2; -s16 D_801BF8B0[] = { - 1, 0, 8, 8, 9, 9, 6, 6, 6, 6, 1, 1, 1, 7, 7, 7, 7, 8, 8, 9, 9, 0, +s16 D_801BF8B0 = 1; + +s16 sExtraItemBases[] = { + ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOW, + ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, + ITEM_NUT, }; s16 D_801BF8DC = 0; @@ -310,10 +314,6 @@ s16 D_801BFA74[] = { s32 D_801BFA84 = 0; -s16 D_801BFA88[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, -}; - Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, @@ -1371,7 +1371,459 @@ void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") +#ifdef NON_EQUIVALENT +u8 Item_Give(GlobalContext* globalCtx, u8 item) { + static s16 sAmmoRefillCounts[] = { + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, + }; + Player* player = GET_PLAYER(globalCtx); + u8 i; + u8 slot; + u16 value; + u8 phi_a2_2; + + slot = SLOT(item); + if (item >= ITEM_STICKS_5) { + slot = SLOT(sExtraItemBases[item - ITEM_STICKS_5]); + } + + if (item == ITEM_SKULL_TOKEN) { + gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; + func_8012F1BC(globalCtx->sceneNum); + return ITEM_NONE; + + } else if (item == ITEM_TINGLE_MAP) { + return ITEM_NONE; + + } else if (item == ITEM_BOMBERS_NOTEBOOK) { + gSaveContext.save.inventory.questItems |= gBitFlags[QUEST_BOMBERS_NOTEBOOK]; + return ITEM_NONE; + + } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { + gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE); + if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (1 << QUEST_HEART_CONTAINER)) { + gSaveContext.save.inventory.questItems ^= (1 << QUEST_HEART_CONTAINER); + gSaveContext.save.playerData.healthCapacity += 0x10; + gSaveContext.save.playerData.health += 0x10; + } + return ITEM_NONE; + + } else if (item == ITEM_HEART_CONTAINER) { + gSaveContext.save.playerData.healthCapacity += 0x10; + gSaveContext.save.playerData.health += 0x10; + return ITEM_NONE; + + } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { + gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; + return ITEM_NONE; + + } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { + value = item - ITEM_SWORD_KOKIRI - 1; + SET_EQUIP_VALUE(EQUIP_SWORD, value); + gSaveContext.save.equips.buttonItems[CUR_FORM][0] = item; + Interface_LoadItemIcon(globalCtx, 0); + if (item == ITEM_SWORD_RAZOR) { + gSaveContext.save.playerData.swordHealth = 100; + } + return ITEM_NONE; + + } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { + value = item - ITEM_SHIELD_HERO - 1; + if (value != CUR_EQUIP_VALUE(EQUIP_SHIELD)) { + SET_EQUIP_VALUE(EQUIP_SHIELD, value); + func_80123C90(globalCtx, player); + return ITEM_NONE; + } + return item; + + } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { + gSaveContext.save.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS]; + return ITEM_NONE; + + } else if (item == ITEM_KEY_SMALL) { + if (gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { + gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; + return ITEM_NONE; + } else { + gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]++; + return ITEM_NONE; + } + + } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { + if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { + Inventory_ChangeUpgrade(UPG_QUIVER, 1); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 1); + return ITEM_NONE; + } else { + AMMO(ITEM_BOW)++; + if (AMMO(ITEM_BOW) > CUR_CAPACITY(UPG_QUIVER)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } + } + } else if (item == ITEM_QUIVER_40) { + Inventory_ChangeUpgrade(UPG_QUIVER, 2); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 2); + return ITEM_NONE; + + } else if (item == ITEM_QUIVER_50) { + Inventory_ChangeUpgrade(UPG_QUIVER, 3); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 3); + return ITEM_NONE; + + } else if (item == ITEM_BOMB_BAG_20) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 1); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 1); + return ITEM_NONE; + + } else { + AMMO(ITEM_BOMB)++; + if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + } + + } else if (item == ITEM_BOMB_BAG_30) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 2); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 2); + return ITEM_NONE; + + } else if (item == ITEM_BOMB_BAG_40) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 3); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 3); + return ITEM_NONE; + + } else if (item == ITEM_WALLET_ADULT) { + Inventory_ChangeUpgrade(UPG_WALLET, 1); + return ITEM_NONE; + + } else if (item == ITEM_WALLET_GIANT) { + Inventory_ChangeUpgrade(UPG_WALLET, 2); + return ITEM_NONE; + + } else if (item == ITEM_STICK_UPGRADE_20) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + INV_CONTENT(ITEM_STICK) = ITEM_STICK; + } + Inventory_ChangeUpgrade(UPG_STICKS, 2); + AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 2); + return ITEM_NONE; + + } else if (item == ITEM_STICK_UPGRADE_30) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + INV_CONTENT(ITEM_STICK) = ITEM_STICK; + } + Inventory_ChangeUpgrade(UPG_STICKS, 3); + AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 3); + return ITEM_NONE; + + } else if (item == ITEM_NUT_UPGRADE_30) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + INV_CONTENT(ITEM_NUT) = ITEM_NUT; + } + Inventory_ChangeUpgrade(UPG_NUTS, 2); + AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 2); + return ITEM_NONE; + + } else if (item == ITEM_NUT_UPGRADE_40) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + INV_CONTENT(ITEM_NUT) = ITEM_NUT; + } + Inventory_ChangeUpgrade(UPG_NUTS, 3); + AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 3); + return ITEM_NONE; + + } else if (item == ITEM_STICK) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + Inventory_ChangeUpgrade(UPG_STICKS, 1); + AMMO(ITEM_STICK) = 1; + slot = gItemSlots[item]; + } else { + AMMO(ITEM_STICK)++; + if (AMMO(ITEM_STICK) > CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } + } + } else if ((item == ITEM_STICKS_5) || (item == ITEM_STICKS_10)) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + Inventory_ChangeUpgrade(UPG_STICKS, 1); + AMMO(ITEM_STICK) = sAmmoRefillCounts[item - ITEM_STICKS_5]; + } else { + AMMO(ITEM_STICK) += sAmmoRefillCounts[item - ITEM_STICKS_5]; + if (AMMO(ITEM_STICK) > CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } + } + + item = ITEM_STICK; + slot = gItemSlots[8]; + + } else if (item == ITEM_NUT) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + Inventory_ChangeUpgrade(UPG_NUTS, 1); + AMMO(ITEM_NUT) = 1; + slot = gItemSlots[item]; + } else { + AMMO(ITEM_NUT)++; + if (AMMO(ITEM_NUT) > CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } + } + + } else if ((item == ITEM_NUTS_5) || (item == ITEM_NUTS_10)) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + Inventory_ChangeUpgrade(UPG_NUTS, 1); + AMMO(ITEM_NUT) += sAmmoRefillCounts[item - ITEM_NUTS_5]; + } else { + AMMO(ITEM_NUT) += sAmmoRefillCounts[item - ITEM_NUTS_5]; + if (AMMO(ITEM_NUT) > CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } + } + item = ITEM_NUT; + slot = gItemSlots[9]; + + } else if (item == ITEM_POWDER_KEG) { + if (INV_CONTENT(ITEM_POWDER_KEG) != ITEM_POWDER_KEG) { + INV_CONTENT(ITEM_POWDER_KEG)= ITEM_POWDER_KEG; + } + + AMMO(ITEM_POWDER_KEG) = 1; + return ITEM_NONE; + + } else if (item == ITEM_BOMB) { + AMMO(ITEM_BOMB)++; + if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) { + if (gSaveContext.save.inventory.items[6] != ITEM_BOMB) { + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; + return ITEM_NONE; + } + + AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; + + if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if (item == ITEM_BOMBCHU) { + if (INV_CONTENT(ITEM_BOMBCHU) != ITEM_BOMBCHU) { + INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; + AMMO(ITEM_BOMBCHU) = 10; + return ITEM_NONE; + } + + AMMO(ITEM_BOMBCHU) += 10; + if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { + if (gSaveContext.save.inventory.items[7] != ITEM_BOMBCHU) { + INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; + AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20]; + + if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + } + + AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20]; + if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_ARROWS_10) && (item <= ITEM_ARROWS_50)) { + AMMO(ITEM_BOW) += sAmmoRefillCounts[item - ITEM_ARROWS_10 + 4]; + + if ((AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) || (AMMO(ITEM_BOW) < 0)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + + } + return ITEM_BOW; + + } else if (item == ITEM_OCARINA) { + INV_CONTENT(ITEM_OCARINA) = 0; + return ITEM_NONE; + + } else if (item == ITEM_MAGIC_BEANS) { + if (INV_CONTENT(ITEM_MAGIC_BEANS) == ITEM_NONE) { + INV_CONTENT(ITEM_MAGIC_BEANS) = item; + AMMO(ITEM_MAGIC_BEANS) = 1; + return ITEM_NONE; + } + + if (AMMO(ITEM_MAGIC_BEANS) < 20) { + AMMO(ITEM_MAGIC_BEANS)++; + return ITEM_NONE; + } + + AMMO(ITEM_MAGIC_BEANS) = 20; + return ITEM_NONE; + + } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { + gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; + return ITEM_NONE; + + } else if (item == ITEM_HEART) { + func_80115908(globalCtx, 0x10); + return item; + + } else if (item == ITEM_MAGIC_SMALL) { + Interface_AddMagic(globalCtx, 0x18); + if (!(gSaveContext.save.weekEventReg[0xC] & 0x80)) { + gSaveContext.save.weekEventReg[0xC] |= 0x80; + return ITEM_NONE; + } + return item; + + } else if (item == ITEM_MAGIC_LARGE) { + Interface_AddMagic(globalCtx, 0x30); + if (!(gSaveContext.save.weekEventReg[0xC] & 0x80)) { + gSaveContext.save.weekEventReg[0xC] |= 0x80; + return ITEM_NONE; + } + return item; + + } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { + func_801159EC(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 10]); + return ITEM_NONE; + + } else if (item == ITEM_LONGSHOT) { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { + gSaveContext.save.inventory.items[i] = ITEM_POTION_RED; + } + } + return item; + + } else if ((item == 0x18) || (item == 0x1D) || (item == 0x22) || (item == 0x25) || (item == 0x26)) { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { + gSaveContext.save.inventory.items[i] = item; + return ITEM_NONE; + } + } + return item; + + } else if (item == 0x12) { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { + gSaveContext.save.inventory.items[i] = item; + return ITEM_NONE; + } + } + return item; + + } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || (item == 0xA2) || (item == 0xA3)) { + + slot = gItemSlots[item]; + if ((item != 0x18) && (item != 0x19)) { + // i = 0; + if (item == 0x9F) { + slot = gItemSlots[0x25]; + item = 0x25; + + } else if (item == 0xA0) { + slot = gItemSlots[0x18]; + item = 0x18; + + } else if (item == 0xA1) { + slot = gItemSlots[0x22]; + item = 0x22; + + } else if (item == 0xA2) { + slot = gItemSlots[0x26]; + item = 0x26; + + } else if (item == 0xA3) { + slot = gItemSlots[0x24]; + item = 0x24; + } + + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == 0x12) { + if (item == 0x20) { + func_8010EBA0(0x3C, i); + } + + if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { + gSaveContext.save.equips.buttonItems[0][1] = item; + Interface_LoadItemIcon(globalCtx, 1); + gSaveContext.buttonStatus[1] = 0; + } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { + gSaveContext.save.equips.buttonItems[0][2] = item; + Interface_LoadItemIcon(globalCtx, 2); + gSaveContext.buttonStatus[2] = 0; + } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { + gSaveContext.save.equips.buttonItems[0][3] = item; + Interface_LoadItemIcon(globalCtx, 3); + gSaveContext.buttonStatus[3] = 0; + } + + gSaveContext.save.inventory.items[slot] = item; + return ITEM_NONE; + } + } + } else { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { + gSaveContext.save.inventory.items[i] = item; + return ITEM_NONE; + } + } + } + + } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { + INV_CONTENT(item); + gSaveContext.save.inventory.items[gItemSlots[item]] = item; + if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (INV_CONTENT(item) != ITEM_NONE)) { + for (i = 1; i < 4; i++) { + if (i == 0) { + phi_a2_2 = gSaveContext.save.equips.buttonItems[CUR_FORM][i]; + } else { + phi_a2_2 = gSaveContext.save.equips.buttonItems[0][i]; + } + + if (INV_CONTENT(item) == phi_a2_2) { + if (i == 0) { + gSaveContext.save.equips.buttonItems[CUR_FORM][i] = item; + } else { + gSaveContext.save.equips.buttonItems[0][i] = item; + } + Interface_LoadItemIcon(globalCtx, i); + return ITEM_NONE; + } + } + } + return ITEM_NONE; + } + + gSaveContext.save.inventory.items[slot] = item; + return gSaveContext.save.inventory.items[slot]; +} +#else +s16 sAmmoRefillCounts[] = { + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, + }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s") +#endif s32 func_801143CC(u8); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801143CC.s") @@ -1608,6 +2060,7 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159c0.s") +// Rupees_ChangeBy #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159EC.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115A14.s") From 89c2af41dee7c80a237a516614ea4801ad90299e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 17:19:31 +1100 Subject: [PATCH 025/160] Rupees_ChangeBy --- docs/tutorial/advanced_control_flow.md | 18 ++++++------- include/functions.h | 2 +- src/code/z_parameter.c | 7 ++--- .../ovl_En_Akindonuts/z_en_akindonuts.c | 2 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 8 +++--- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 4 +-- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 26 +++++++++---------- src/overlays/actors/ovl_En_In/z_en_in.c | 8 +++--- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 4 +-- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 4 +-- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 2 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 2 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 4 +-- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 17 files changed, 50 insertions(+), 49 deletions(-) diff --git a/docs/tutorial/advanced_control_flow.md b/docs/tutorial/advanced_control_flow.md index 99f7fca27..a7cbd3c31 100644 --- a/docs/tutorial/advanced_control_flow.md +++ b/docs/tutorial/advanced_control_flow.md @@ -199,7 +199,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } } @@ -291,7 +291,7 @@ block_13: block_15: func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -391,7 +391,7 @@ block_11: func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -461,7 +461,7 @@ block_11: func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -510,7 +510,7 @@ So let us rewrite the entire second half as a switch: func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; break; @@ -541,7 +541,7 @@ There's a couple of other obvious things here: } else { func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -606,7 +606,7 @@ block_7: } else { func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -670,7 +670,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } else { func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -722,7 +722,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } else { func_8019F208(); func_800B8A1C((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; diff --git a/include/functions.h b/include/functions.h index ca926e5c4..eff32f53b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2076,7 +2076,7 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); void func_80115844(GlobalContext* globalCtx, s16 param_2); s32 func_80115908(GlobalContext* globalCtx, u8 param_2); void func_801159c0(s16 param_1); -void func_801159EC(s16 arg0); +void Rupees_ChangeBy(s16 arg0); void func_80115A14(s32 arg0, s16 arg1); void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d2bf94e12..6fbcc351e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1701,7 +1701,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { - func_801159EC(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 10]); + Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 10]); return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { @@ -2060,8 +2060,9 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159c0.s") -// Rupees_ChangeBy -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159EC.s") +void Rupees_ChangeBy(s16 rupeeChange) { + gSaveContext.rupeeAccumulator += rupeeChange; +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115A14.s") diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 6be1713ab..dcf3fe5a1 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -1315,7 +1315,7 @@ void func_80BEF360(EnAkindonuts* this, GlobalContext* globalCtx) { if (this->unk_32C & 0x40) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; - func_801159EC(this->unk_364); + Rupees_ChangeBy(this->unk_364); this->unk_32C &= ~0x40; this->actionFunc = func_80BEF450; } else { diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index e25f585aa..955ff625a 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -392,7 +392,7 @@ void func_809C16DC(EnAob01* this, GlobalContext* globalCtx) { case 0x3529: if (this->unk_2D2 & 2) { this->unk_2D2 &= ~2; - func_801159EC(-this->unk_434); + Rupees_ChangeBy(-this->unk_434); func_800B7298(globalCtx, NULL, 7); globalCtx->msgCtx.unk11F22 = 0x43; globalCtx->msgCtx.unk12023 = 4; @@ -708,7 +708,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { this->unk_210 = 0x352A; this->unk_2D2 |= 0x80; this->unk_434 *= 3; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); globalCtx->msgCtx.bankRupees = this->unk_434; break; @@ -716,7 +716,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { this->unk_210 = 0x352B; this->unk_2D2 |= 0x80; this->unk_434 *= 2; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); globalCtx->msgCtx.bankRupees = this->unk_434; break; @@ -724,7 +724,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { case 4: case 5: this->unk_210 = 0x352C; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); break; default: diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 1c0673836..f2ebc0668 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -436,7 +436,7 @@ void func_80962588(EnFu* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.choiceIndex == 0) { if (gSaveContext.save.playerData.rupees >= 10) { func_8019F208(); - func_801159EC(-10); + Rupees_ChangeBy(-10); func_80963DE4(this, globalCtx); } else { play_sound(NA_SE_SY_ERROR); diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 001277740..2a74471c1 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -363,7 +363,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->isNewAccount = true; } - func_801159EC((s16)-globalCtx->msgCtx.bankRupeesSelected); + Rupees_ChangeBy((s16)-globalCtx->msgCtx.bankRupeesSelected); this->previousBankValue = gSaveContext.save.roomInf[127][0] & 0xFFFF; if (1) {} // Needed to match gSaveContext.save.roomInf[127][0] = @@ -432,7 +432,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) (gSaveContext.save.roomInf[127][0] & 0xFFFF0000) | (((gSaveContext.save.roomInf[127][0] & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - this->serviceFee); - func_801159EC(globalCtx->msgCtx.bankRupeesSelected); + Rupees_ChangeBy(globalCtx->msgCtx.bankRupeesSelected); } } else { func_8019F230(); diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index a5e8ef5e9..b8df2ce4c 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -398,12 +398,12 @@ void EnGirlA_BuyBottleItem(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_FAIRY); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyArrows(GlobalContext* globalCtx, EnGirlA* this) { func_80115A14(ITEM_BOW, this->itemParams); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyNuts(GlobalContext* globalCtx, EnGirlA* this) { @@ -415,22 +415,22 @@ void EnGirlA_BuyNuts(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_NUTS_10); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyShieldHero(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SHIELD_HERO); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyStick(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_STICK); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyMaskAllNight(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_MASK_ALL_NIGHT); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombBag(GlobalContext* globalCtx, EnGirlA* this) { @@ -446,14 +446,14 @@ void EnGirlA_BuyBombBag(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOMB_BAG_40); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombchus(GlobalContext* globalCtx, EnGirlA* this) { if (this->itemParams == 10) { Item_Give(globalCtx, ITEM_BOMBCHUS_10); } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombs(GlobalContext* globalCtx, EnGirlA* this) { @@ -471,12 +471,12 @@ void EnGirlA_BuyBombs(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOMBS_30); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBottle(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOTTLE); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuySword(GlobalContext* globalCtx, EnGirlA* this) { @@ -494,17 +494,17 @@ void EnGirlA_BuySword(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SWORD_GREAT_FAIRY); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SHIELD_MIRROR); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } // Fanfare is handled by ovl_en_ossan void EnGirlA_BuyFanfare(GlobalContext* globalCtx, EnGirlA* this) { - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_DoNothing(EnGirlA* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 5fb56af65..0e85140f2 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -622,7 +622,7 @@ s32 func_808F4150(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); if (!(gSaveContext.save.weekEventReg[57] & 1)) { func_808F4108(this, globalCtx, 0x3474); } else if (this->unk4AC & 8) { @@ -648,7 +648,7 @@ s32 func_808F4270(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= fee) { - func_801159EC(-fee); + Rupees_ChangeBy(-fee); if (!(gSaveContext.save.weekEventReg[57] & 1)) { if (arg4 != 0) { func_800E8EA0(globalCtx, &this->actor, 0x3474); @@ -796,7 +796,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x3469); @@ -1048,7 +1048,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x3469); diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 35bc06154..eae91832c 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -642,7 +642,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { } else { func_8019F208(); func_80B40E74(this, globalCtx, 0xC42); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } break; @@ -765,7 +765,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { func_80B41368(this, globalCtx, 4); if (this->unk_29C & 0x10) { this->actor.textId = 0xC56; - func_801159EC(globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(globalCtx->msgCtx.unk1206C); } else { this->actor.textId = 0xC42; } diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 039834505..f154d592d 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -128,7 +128,7 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { } else { func_8019F208(); func_800B8A1C(&this->actor, globalCtx, GI_MAGIC_BEANS, 90.0f, 10.0f); - func_801159EC(-10); + Rupees_ChangeBy(-10); this->actionFunc = EnMs_Sell; } break; diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 852c16911..aab14a2af 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -277,7 +277,7 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_26A = 3; } else { func_8019F208(); - func_801159EC(-20); + Rupees_ChangeBy(-20); gSaveContext.save.weekEventReg[63] |= 1; gSaveContext.save.weekEventReg[63] &= (u8)~2; globalCtx->msgCtx.unk11F22 = 0x43; @@ -556,7 +556,7 @@ void func_809C7380(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_26A = 3; } else { func_8019F208(); - func_801159EC(-20); + Rupees_ChangeBy(-20); this->unk_26A = 2; if (!(this->unk_282 & 0x10)) { this->unk_282 |= 0x10; diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 5002edb14..f7bdaa56f 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -416,7 +416,7 @@ s32 func_80C10E98(GlobalContext* globalCtx) { AMMO(ITEM_BOMB) -= spB0 * 5; AMMO(ITEM_BOW) -= spAC * 10; - func_801159EC(-((phi_s0_2 * 50) + (spA0 * 20) + (phi_s2 * 5) + spA8)); + Rupees_ChangeBy(-((phi_s0_2 * 50) + (spA0 * 20) + (phi_s2 * 5) + spA8)); return true; } diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index ee65a76bd..61112d8cb 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -602,7 +602,7 @@ void func_80AED610(EnTk* this, GlobalContext* globalCtx) { break; case 0x1413: - func_801159EC(30); + Rupees_ChangeBy(30); gSaveContext.save.weekEventReg[60] |= 2; func_80151938(globalCtx, 0x13FF); break; diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 9ab445247..4e395801c 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -474,7 +474,7 @@ void func_80B973BC(EnZot* this, GlobalContext* globalCtx) { break; case 0x126F: - func_801159EC(90); + Rupees_ChangeBy(90); func_80151938(globalCtx, 0x1270); break; @@ -483,7 +483,7 @@ void func_80B973BC(EnZot* this, GlobalContext* globalCtx) { func_80151938(globalCtx, 0x1277); } else { func_80151938(globalCtx, 0x1278); - func_801159EC(-10); + Rupees_ChangeBy(-10); } break; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 477be7f1b..67104c669 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2132,7 +2132,7 @@ 0x80115844:("func_80115844",), 0x80115908:("func_80115908",), 0x801159C0:("func_801159c0",), - 0x801159EC:("func_801159EC",), + 0x801159EC:("Rupees_ChangeBy",), 0x80115A14:("func_80115A14",), 0x80115D14:("Interface_AddMagic",), 0x80115D5C:("func_80115D5C",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 379c16368..4f8777953 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1646,7 +1646,7 @@ asm/non_matchings/code/z_parameter/func_80115764.s,func_80115764,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 asm/non_matchings/code/z_parameter/func_80115908.s,func_80115908,0x80115908,0x2E asm/non_matchings/code/z_parameter/func_801159c0.s,func_801159c0,0x801159C0,0xB -asm/non_matchings/code/z_parameter/func_801159EC.s,func_801159EC,0x801159EC,0xA +asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA asm/non_matchings/code/z_parameter/func_80115A14.s,func_80115A14,0x80115A14,0xC0 asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 From 6fc234492f2bb3d81a7707b61a1d930090537d4a Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 18:22:47 +1100 Subject: [PATCH 026/160] More small functions --- include/functions.h | 4 +- include/z64item.h | 2 +- src/code/code_8012EC80.c | 6 +- src/code/z_parameter.c | 109 ++++++++++++++++-- .../ovl_En_Akindonuts/z_en_akindonuts.c | 4 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 2 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 2 +- tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 9 files changed, 114 insertions(+), 23 deletions(-) diff --git a/include/functions.h b/include/functions.h index eff32f53b..ad92fbeca 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2075,9 +2075,9 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); // void func_80115764(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); s32 func_80115908(GlobalContext* globalCtx, u8 param_2); -void func_801159c0(s16 param_1); +void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 arg0); -void func_80115A14(s32 arg0, s16 arg1); +void Inventory_ChangeAmmo(s16 arg0, s16 arg1); void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); diff --git a/include/z64item.h b/include/z64item.h index 6a9b62417..7da1b28ad 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -113,7 +113,7 @@ typedef enum { /* 0x07 */ ITEM_BOMBCHU, /* 0x08 */ ITEM_STICK, /* 0x09 */ ITEM_NUT, - /* 0x0A */ ITEM_MAGIC_BEANS, + /* 0x0A */ ITEM_BEAN, /* 0x0B */ ITEM_SLINGSHOT, /* 0x0C */ ITEM_POWDER_KEG, /* 0x0D */ ITEM_PICTO_BOX, diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 1c2555f05..bfb33e2e1 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -45,7 +45,7 @@ void* gItemIcons[] = { 0x08007000, // ITEM_BOMBCHU 0x08008000, // ITEM_STICK 0x08009000, // ITEM_NUT - 0x0800A000, // ITEM_MAGIC_BEANS + 0x0800A000, // ITEM_BEAN 0x0800B000, // ITEM_SLINGSHOT 0x0800C000, // ITEM_POWDER_KEG 0x0800D000, // ITEM_PICTO_BOX @@ -180,7 +180,7 @@ u8 gItemSlots[] = { SLOT_BOMBCHU, // ITEM_BOMBCHU SLOT_STICK, // ITEM_STICK SLOT_NUT, // ITEM_NUT - SLOT_MAGIC_BEANS, // ITEM_MAGIC_BEANS + SLOT_MAGIC_BEANS, // ITEM_BEAN SLOT_TRADE_KEY_MAMA, // ITEM_SLINGSHOT SLOT_POWDER_KEG, // ITEM_POWDER_KEG SLOT_PICTO_BOX, // ITEM_PICTO_BOX @@ -260,7 +260,7 @@ s16 gItemPrices[] = { 0, // ITEM_BOMBCHU 0, // ITEM_STICK 0, // ITEM_NUT - 0, // ITEM_MAGIC_BEANS + 0, // ITEM_BEAN 0, // ITEM_SLINGSHOT 0, // ITEM_POWDER_KEG 0, // ITEM_PICTO_BOX diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6fbcc351e..269e862a3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -529,7 +529,39 @@ void func_8010EBA0(s16 arg0, s16 arg1) { D_801BF8F0 = 0; } +// Crazy u64 math +#ifdef NON_EQUIVALENT +s32 func_8010EC54(s32 timerId) { + u64 time; + s16 sp22; + s16 sp20; + s16 sp1E; + s16 sp1C; + s16 temp_a0; + s16 final; + + time = gSaveContext.unk_3DE0[timerId]; + + sp1C = time / 36000; + time -= sp1C * 36000; + + sp1E = time / 6000; + time -= sp1E * 6000; + + sp20 = time / 1000; + time -= sp20 * 1000; + + sp22 = time / 100; + time -= sp22 * 100; + + temp_a0 = time / 10; + time -= sp22 * 10; + + return (s16)time | (sp1C << 0x14) | (sp1E << 0x10) | (sp20 << 0xC) | (sp22 << 8) | (temp_a0 << 4); +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") +#endif void func_8010EE74(GlobalContext* globalCtx, s32 arg1) { s32 pad; @@ -1661,19 +1693,19 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { INV_CONTENT(ITEM_OCARINA) = 0; return ITEM_NONE; - } else if (item == ITEM_MAGIC_BEANS) { - if (INV_CONTENT(ITEM_MAGIC_BEANS) == ITEM_NONE) { - INV_CONTENT(ITEM_MAGIC_BEANS) = item; - AMMO(ITEM_MAGIC_BEANS) = 1; + } else if (item == ITEM_BEAN) { + if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { + INV_CONTENT(ITEM_BEAN) = item; + AMMO(ITEM_BEAN) = 1; return ITEM_NONE; } - if (AMMO(ITEM_MAGIC_BEANS) < 20) { - AMMO(ITEM_MAGIC_BEANS)++; + if (AMMO(ITEM_BEAN) < 20) { + AMMO(ITEM_BEAN)++; return ITEM_NONE; } - AMMO(ITEM_MAGIC_BEANS) = 20; + AMMO(ITEM_BEAN) = 20; return ITEM_NONE; } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { @@ -2058,13 +2090,72 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115908.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159c0.s") +void Health_GiveHearts(s16 hearts) { + gSaveContext.save.playerData.healthCapacity += hearts * 0x10; +} void Rupees_ChangeBy(s16 rupeeChange) { gSaveContext.rupeeAccumulator += rupeeChange; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115A14.s") +void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { + if (item == ITEM_STICK) { + AMMO(ITEM_STICK) += ammoChange; + + if (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } else if (AMMO(ITEM_STICK) < 0) { + AMMO(ITEM_STICK) = 0; + } + + } else if (item == ITEM_NUT) { + AMMO(ITEM_NUT) += ammoChange; + + if (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } else if (AMMO(ITEM_NUT) < 0) { + AMMO(ITEM_NUT) = 0; + } + + } else if (item == ITEM_BOMBCHU) { + AMMO(ITEM_BOMBCHU) += ammoChange; + + if (AMMO(ITEM_BOMBCHU) >= CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } else if (AMMO(ITEM_BOMBCHU) < 0) { + AMMO(ITEM_BOMBCHU) = 0; + } + + } else if (item == ITEM_BOW) { + AMMO(ITEM_BOW) += ammoChange; + + if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } else if (AMMO(ITEM_BOW) < 0) { + AMMO(ITEM_BOW) = 0; + } + + } else if (item == ITEM_BOMB) { + AMMO(ITEM_BOMB) += ammoChange; + + if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } else if (AMMO(ITEM_BOMB) < 0) { + AMMO(ITEM_BOMB) = 0; + } + + } else if (item == ITEM_BEAN) { + AMMO(ITEM_BEAN) += ammoChange; + + } else if (item == ITEM_POWDER_KEG) { + AMMO(ITEM_POWDER_KEG) += ammoChange; + if (AMMO(ITEM_POWDER_KEG) >= 1) { + AMMO(ITEM_POWDER_KEG) = 1; + } else if (AMMO(ITEM_POWDER_KEG) < 0) { + AMMO(ITEM_POWDER_KEG) = 0; + } + } +} void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { if (gSaveContext.save.playerData.magic) {} diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index dcf3fe5a1..c79c6c580 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -285,7 +285,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if (INV_CONTENT(ITEM_MAGIC_BEANS) != 10U) { + if (INV_CONTENT(ITEM_BEAN) != 10U) { return 0; } @@ -293,7 +293,7 @@ s32 func_80BED208(EnAkindonuts* this) { return 1; } - if (AMMO(ITEM_MAGIC_BEANS) >= 20) { + if (AMMO(ITEM_BEAN) >= 20) { return 2; } diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index b8df2ce4c..31539bd3e 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -402,7 +402,7 @@ void EnGirlA_BuyBottleItem(GlobalContext* globalCtx, EnGirlA* this) { } void EnGirlA_BuyArrows(GlobalContext* globalCtx, EnGirlA* this) { - func_80115A14(ITEM_BOW, this->itemParams); + Inventory_ChangeAmmo(ITEM_BOW, this->itemParams); Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index f154d592d..cb7888762 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -122,7 +122,7 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { if (gSaveContext.save.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x935); // "[...] You don't have enough Rupees." - } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { + } else if (AMMO(ITEM_BEAN) >= 20) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x937); // "[...] You can't carry anymore." } else { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 67104c669..084fb5842 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2131,9 +2131,9 @@ 0x80115764:("func_80115764",), 0x80115844:("func_80115844",), 0x80115908:("func_80115908",), - 0x801159C0:("func_801159c0",), + 0x801159C0:("Health_GiveHearts",), 0x801159EC:("Rupees_ChangeBy",), - 0x80115A14:("func_80115A14",), + 0x80115A14:("Inventory_ChangeAmmo",), 0x80115D14:("Interface_AddMagic",), 0x80115D5C:("func_80115D5C",), 0x80115DB4:("func_80115DB4",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 4f8777953..4141077f5 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1645,9 +1645,9 @@ asm/non_matchings/code/z_parameter/func_801155B4.s,func_801155B4,0x801155B4,0x6C asm/non_matchings/code/z_parameter/func_80115764.s,func_80115764,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 asm/non_matchings/code/z_parameter/func_80115908.s,func_80115908,0x80115908,0x2E -asm/non_matchings/code/z_parameter/func_801159c0.s,func_801159c0,0x801159C0,0xB +asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA -asm/non_matchings/code/z_parameter/func_80115A14.s,func_80115A14,0x80115A14,0xC0 +asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 From 1fb26cdffa940d22e27d1c4177c2f51bceef84c8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Dec 2021 23:33:39 +1100 Subject: [PATCH 027/160] Match `func_80116114` --- src/code/z_parameter.c | 140 ++++++++++++++++++++++++++++------------- 1 file changed, 98 insertions(+), 42 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 269e862a3..421ccecba 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -12,6 +12,56 @@ extern Gfx D_0E0002E0[]; // Display List extern u8 D_801ABAB0[]; extern u8 D_801E3BB0[]; +/** + * Steps `var` towards `target` linearly, so that it will arrive in `timeRemaining` seconds. Can be used from either + * direction. `timeRemaining` must be decremented separately for this to work properly, and obviously timeRemaining = 0 + * must be handled separately. + * + * @param var Variable to step. + * @param target Target to step towards. + * @param timeRemaining Number of times this function should be run for `var` to reach `target` + * @param stepVar Variable to use for the step (required to match). + * + * The progression is not quite linear because of truncation in the division, but the variable will always reach + * `target` at the appropriate time since the last step is always the full difference. + */ +#define TIMED_STEP_TO(var, target, timeRemaining, stepVar) \ + { \ + stepVar = ABS_ALT(var - target) / timeRemaining; \ + if (var >= target) { \ + var -= stepVar; \ + } else { \ + var += stepVar; \ + } \ + } \ + (void)0 + +/** + * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var > target, this will eventually increase `var` by + * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to + * truncation from the divisions. + */ +#define TIMED_STEP_UP_TO(var, target, timeRemaining, stepVar) \ + { \ + stepVar = ABS_ALT(var - target) / timeRemaining; \ + var += stepVar; \ + } \ + (void)0 + +/** + * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var < target, this will eventually dncrease `var` by + * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to + * truncation from the divisions. + */ +#define TIMED_STEP_DOWN_TO(var, target, timeRemaining, stepVar) \ + { \ + stepVar = ABS_ALT(var - target) / timeRemaining; \ + var -= stepVar; \ + } \ + (void)0 + + + typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -2194,12 +2244,54 @@ void func_80116088(void) { } } -s16 D_801BFAB8[] = { - 255, 255, 255, 150, 150, 150, -}; -s16 D_801BFAC4[] = { 0, 1, 1, 0 }; -s16 D_801BFACC[] = { 2, 1, 2, 1 }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116114.s") +void func_80116114(void) { + static s16 magicBorderColors[][3] = { + { 255, 255, 255 }, + { 150, 150, 150 }, + }; + static s16 magicBorderIndices[] = { 0, 1, 1, 0 }; + static s16 magicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; + s16 colorStep1; + s16 colorStep2; + s16 colorStep3; + s16 index; + + index = magicBorderIndices[D_801BF8B0]; + colorStep1 = ABS_ALT(sMagicBarOutlinePrimRed - magicBorderColors[index][0]) / D_801BF8AC; + colorStep2 = ABS_ALT(sMagicBarOutlinePrimGreen - magicBorderColors[index][1]) / D_801BF8AC; + colorStep3 = ABS_ALT(sMagicBarOutlinePrimBlue - magicBorderColors[index][2]) / D_801BF8AC; + + if (sMagicBarOutlinePrimRed >= magicBorderColors[index][0]) { + sMagicBarOutlinePrimRed -= colorStep1; + } else { + sMagicBarOutlinePrimRed += colorStep1; + } + + if (sMagicBarOutlinePrimGreen >= magicBorderColors[index][1]) { + sMagicBarOutlinePrimGreen -= colorStep2; + } else { + sMagicBarOutlinePrimGreen += colorStep2; + } + + if (sMagicBarOutlinePrimBlue >= magicBorderColors[index][2]) { + sMagicBarOutlinePrimBlue -= colorStep3; + } else { + sMagicBarOutlinePrimBlue += colorStep3; + } + + D_801BF8AC--; + + if (D_801BF8AC == 0) { + sMagicBarOutlinePrimRed = magicBorderColors[index][0]; + sMagicBarOutlinePrimGreen = magicBorderColors[index][1]; + sMagicBarOutlinePrimBlue = magicBorderColors[index][2]; + D_801BF8AC = magicBorderColorTimerIndex[D_801BF8B0]; + D_801BF8B0++; + if (D_801BF8B0 >= 4) { + D_801BF8B0 = 0; + } + } +} void Interface_UpdateMagicBar(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s") @@ -2343,42 +2435,6 @@ s16 D_801BFB24[] = { 0, 255, 100, 0 }; void func_80119030(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") -/** - * Steps `var` towards `target` linearly, so that it will arrive in `timeRemaining` seconds. Can be used from either - * direction. `timeRemaining` must be decremented separately for this to work properly, and obviously timeRemaining = 0 - * must be handled separately. - * - * @param var Variable to step. - * @param target Target to step towards. - * @param timeRemaining Number of times this function should be run for `var` to reach `target` - * @param stepVar Variable to use for the step (required to match). - * - * The progression is not quite linear because of truncation in the division, but the variable will always reach - * `target` at the appropriate time since the last step is always the full difference. - */ -#define TIMED_STEP_TO(var, target, timeRemaining, stepVar) \ - { \ - stepVar = ABS_ALT(var - target) / timeRemaining; \ - if (var >= target) { \ - var -= stepVar; \ - } else { \ - var += stepVar; \ - } \ - } \ - (void)0 - -/** - * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var > target, this will eventually increase `var` by - * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to - * truncation from the divisions. - */ -#define TIMED_STEP_UP_TO(var, target, timeRemaining, stepVar) \ - { \ - stepVar = ABS_ALT(var - target) / timeRemaining; \ - var += stepVar; \ - } \ - (void)0 - /** * Draws either the analog three-day clock or the digital final-hours clock */ From a95ad585bfdee609f6ff95f51f4e40b4c14ea6e0 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 29 Dec 2021 01:26:23 +1100 Subject: [PATCH 028/160] New macro, fixes many functions, more names --- include/functions.h | 20 +- include/macros.h | 2 + include/variables.h | 4 +- src/code/z_parameter.c | 377 ++++++++---------- .../ovl_En_Akindonuts/z_en_akindonuts.c | 6 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 4 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 2 +- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 2 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 14 +- src/overlays/actors/ovl_En_In/z_en_in.c | 8 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 4 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 2 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 4 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 10 +- tools/disasm/functions.txt | 18 +- tools/disasm/variables.txt | 4 +- tools/sizes/code_functions.csv | 18 +- 18 files changed, 236 insertions(+), 265 deletions(-) diff --git a/include/functions.h b/include/functions.h index 8fd2e769f..b76114785 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2051,20 +2051,20 @@ void Interface_ChangeAlpha(u16 param_1); // void func_8010F1A8(void); // void func_80110038(void); // void func_80111CB4(void); -// void func_801129E4(void); -void func_80112AFC(GlobalContext* globalCtx); -void Interface_LoadItemIcon(GlobalContext* globalCtx, u32 arg1); +// void Interface_SetSceneRestrictions(void); +void Interface_InitMinigame(GlobalContext* globalCtx); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1); // void func_80112BE4(void); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 param_2); -// void func_801143CC(void); -s32 func_80114978(u8 arg0); -void func_801149A0(s16 arg0, s16 arg1); -// void func_80114A9C(void); -// void func_80114B84(void); +// void Item_CheckObtainabilityImpl(void); +s32 Item_CheckObtainability(u8 arg0); +void Inventory_DeleteItem(s16 arg0, s16 arg1); +// void Inventory_UnequipItem(void); +// void Inventory_ReplaceItem(void); // void func_80114CA0(void); -s32 Interface_HasEmptyBottle(void); -s32 Interface_HasItemInBottle(u8 itemId); +s32 Inventory_HasEmptyBottle(void); +s32 Inventory_HasItemInBottle(u8 itemId); // void func_80114FD0(void); // void func_80115130(void); // void func_801152B8(void); diff --git a/include/macros.h b/include/macros.h index f08d810a7..464e460d5 100644 --- a/include/macros.h +++ b/include/macros.h @@ -66,6 +66,8 @@ #define INV_CONTENT_VOID(item) ((void)0, gSaveContext.save.inventory.items)[SLOT(item)] #define CUR_FORM ((gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.save.playerForm) +#define CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.buttonItems[CUR_FORM][btn] : gSaveContext.save.equips.buttonItems[0][btn])) +#define CUR_FORM_CBTN_SLOT(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.cButtonSlots[CUR_FORM][btn] : gSaveContext.save.equips.cButtonSlots[0][btn])) #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]) diff --git a/include/variables.h b/include/variables.h index 8b9999058..4e4b444eb 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1043,8 +1043,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BF79E; // extern UNK_TYPE2 D_801BF884; // extern UNK_TYPE2 D_801BF888; -// extern UNK_TYPE2 D_801BF88C; -// extern UNK_TYPE2 D_801BF890; +// extern UNK_TYPE2 sHBAScoreTier; +// extern UNK_TYPE2 sMinigameScoreDigits; // extern UNK_TYPE2 D_801BF898; // extern UNK_TYPE2 D_801BF89C; // extern UNK_TYPE2 sMagicBarOutlinePrimRed; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 421ccecba..479e9c5a5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -60,8 +60,6 @@ extern u8 D_801E3BB0[]; } \ (void)0 - - typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -193,11 +191,9 @@ s16 D_801BF884 = 0; // pictoBox related s32 D_801BF888 = 0; -// sMinigameScoreTier -s16 D_801BF88C = 0; +s16 sHBAScoreTier = 0; -// sMinigameScoreDigits -u16 D_801BF890[] = { 0, 0, 0, 0 }; +u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; s32 D_801BF898 = 0; @@ -212,9 +208,9 @@ s16 D_801BF8AC = 2; s16 D_801BF8B0 = 1; s16 sExtraItemBases[] = { - ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, ITEM_BOW, - ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, - ITEM_NUT, + ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, + ITEM_BOMB, ITEM_BOW, ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, + ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, }; s16 D_801BF8DC = 0; @@ -581,7 +577,7 @@ void func_8010EBA0(s16 arg0, s16 arg1) { // Crazy u64 math #ifdef NON_EQUIVALENT -s32 func_8010EC54(s32 timerId) { +s32 func_8010EC54(s16 timerId) { u64 time; s16 sp22; s16 sp20; @@ -592,22 +588,20 @@ s32 func_8010EC54(s32 timerId) { time = gSaveContext.unk_3DE0[timerId]; - sp1C = time / 36000; - time -= sp1C * 36000; + time -= (sp1C = time / 36000) * 36000; + if (1) {} - sp1E = time / 6000; - time -= sp1E * 6000; + time -= (sp1E = time / 6000) * 6000; - sp20 = time / 1000; - time -= sp20 * 1000; + time -= (sp20 = time / 1000) * 1000; - sp22 = time / 100; - time -= sp22 * 100; + time -= (sp22 = time / 100) * 100; - temp_a0 = time / 10; - time -= sp22 * 10; + time -= (temp_a0 = time / 10) * 10; - return (s16)time | (sp1C << 0x14) | (sp1E << 0x10) | (sp20 << 0xC) | (sp22 << 8) | (temp_a0 << 4); + final = (sp1C << 0x14); + + return time | final | (sp1E << 0x10) | (sp20 << 0xC) | (sp22 << 8) | (temp_a0 << 4); } #else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") @@ -1379,7 +1373,7 @@ void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { void func_80111CB4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") -void func_801129E4(GlobalContext* globalCtx) { +void Interface_SetSceneRestrictions(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 i = 0; u8 currentScene; @@ -1408,29 +1402,26 @@ void func_801129E4(GlobalContext* globalCtx) { void func_80112AF4(void) { } -#ifdef NON_MATCHING -void func_80112AFC(GlobalContext* globalCtx) { +/** + * Initializes Romani's balloon horseback archery minigame + */ +void Interface_InitMinigame(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; gSaveContext.minigameState = 1; gSaveContext.minigameScore = 0; gSaveContext.unk_3F3C = 0; - D_801BF88C = 0; + sHBAScoreTier = 0; + interfaceCtx->unk_25C = interfaceCtx->unk_25E = interfaceCtx->unk_262 = 0; - interfaceCtx->unk_262 = 0; - interfaceCtx->unk_25E = 0; - interfaceCtx->unk_25C = 0; - interfaceCtx->hbaAmmo = 0x14; + interfaceCtx->hbaAmmo = 20; } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112AFC.s") -#endif void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); #ifdef NON_EQUIVALENT -void Interface_LoadItemIcon(GlobalContext* globalCtx, volatile u8 arg1) { +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; u8 phi_v0; @@ -1451,7 +1442,36 @@ void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { Interface_LoadItemIcon(globalCtx, arg1); } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") +void func_80112C0C(GlobalContext* globalCtx, u16 flag) { + if (flag) { + if ((gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOW) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMB) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMBCHU) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_FISHING_POLE) || + (gSaveContext.buttonStatus[0] == BTN_DISABLED)) { + if ((gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOW) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMB) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMBCHU) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_FISHING_POLE)) { + gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; + Interface_LoadItemIcon(globalCtx, 0); + } + } else if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NONE) { + if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] != ITEM_NONE) { + gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; + Interface_LoadItemIcon(globalCtx, 0); + } + } + + gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[1] = + gSaveContext.buttonStatus[0] = BTN_ENABLED; + Interface_ChangeAlpha(7); + } else { + gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[1] = + gSaveContext.buttonStatus[0] = BTN_ENABLED; + func_80111CB4(globalCtx); + } +} #ifdef NON_EQUIVALENT u8 Item_Give(GlobalContext* globalCtx, u8 item) { @@ -1584,7 +1604,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_WALLET_ADULT) { Inventory_ChangeUpgrade(UPG_WALLET, 1); return ITEM_NONE; - + } else if (item == ITEM_WALLET_GIANT) { Inventory_ChangeUpgrade(UPG_WALLET, 2); return ITEM_NONE; @@ -1620,7 +1640,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { Inventory_ChangeUpgrade(UPG_NUTS, 3); AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 3); return ITEM_NONE; - + } else if (item == ITEM_STICK) { if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { Inventory_ChangeUpgrade(UPG_STICKS, 1); @@ -1673,7 +1693,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_POWDER_KEG) { if (INV_CONTENT(ITEM_POWDER_KEG) != ITEM_POWDER_KEG) { - INV_CONTENT(ITEM_POWDER_KEG)= ITEM_POWDER_KEG; + INV_CONTENT(ITEM_POWDER_KEG) = ITEM_POWDER_KEG; } AMMO(ITEM_POWDER_KEG) = 1; @@ -1682,13 +1702,13 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_BOMB) { AMMO(ITEM_BOMB)++; if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { - AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; } else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) { if (gSaveContext.save.inventory.items[6] != ITEM_BOMB) { - INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; return ITEM_NONE; } @@ -1696,7 +1716,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { - AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; @@ -1735,7 +1755,6 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { if ((AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) || (AMMO(ITEM_BOW) < 0)) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); - } return ITEM_BOW; @@ -1812,64 +1831,64 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return item; - } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || (item == 0xA2) || (item == 0xA3)) { + } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || + (item == 0xA2) || (item == 0xA3)) { slot = gItemSlots[item]; if ((item != 0x18) && (item != 0x19)) { - // i = 0; - if (item == 0x9F) { - slot = gItemSlots[0x25]; - item = 0x25; + // i = 0; + if (item == 0x9F) { + slot = gItemSlots[0x25]; + item = 0x25; - } else if (item == 0xA0) { - slot = gItemSlots[0x18]; - item = 0x18; + } else if (item == 0xA0) { + slot = gItemSlots[0x18]; + item = 0x18; - } else if (item == 0xA1) { - slot = gItemSlots[0x22]; - item = 0x22; + } else if (item == 0xA1) { + slot = gItemSlots[0x22]; + item = 0x22; - } else if (item == 0xA2) { - slot = gItemSlots[0x26]; - item = 0x26; + } else if (item == 0xA2) { + slot = gItemSlots[0x26]; + item = 0x26; - } else if (item == 0xA3) { - slot = gItemSlots[0x24]; - item = 0x24; - } + } else if (item == 0xA3) { + slot = gItemSlots[0x24]; + item = 0x24; + } - - for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[slot + i] == 0x12) { - if (item == 0x20) { - func_8010EBA0(0x3C, i); - } - - if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { - gSaveContext.save.equips.buttonItems[0][1] = item; - Interface_LoadItemIcon(globalCtx, 1); - gSaveContext.buttonStatus[1] = 0; - } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { - gSaveContext.save.equips.buttonItems[0][2] = item; - Interface_LoadItemIcon(globalCtx, 2); - gSaveContext.buttonStatus[2] = 0; - } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { - gSaveContext.save.equips.buttonItems[0][3] = item; - Interface_LoadItemIcon(globalCtx, 3); - gSaveContext.buttonStatus[3] = 0; - } - - gSaveContext.save.inventory.items[slot] = item; - return ITEM_NONE; + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == 0x12) { + if (item == 0x20) { + func_8010EBA0(0x3C, i); } + + if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { + gSaveContext.save.equips.buttonItems[0][1] = item; + Interface_LoadItemIcon(globalCtx, 1); + gSaveContext.buttonStatus[1] = 0; + } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { + gSaveContext.save.equips.buttonItems[0][2] = item; + Interface_LoadItemIcon(globalCtx, 2); + gSaveContext.buttonStatus[2] = 0; + } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { + gSaveContext.save.equips.buttonItems[0][3] = item; + Interface_LoadItemIcon(globalCtx, 3); + gSaveContext.buttonStatus[3] = 0; + } + + gSaveContext.save.inventory.items[slot] = item; + return ITEM_NONE; } + } } else { for (i = 0; i < 6; i++) { if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { gSaveContext.save.inventory.items[i] = item; return ITEM_NONE; } - } + } } } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { @@ -1895,108 +1914,82 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } return ITEM_NONE; - } + } gSaveContext.save.inventory.items[slot] = item; return gSaveContext.save.inventory.items[slot]; } #else s16 sAmmoRefillCounts[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, - }; + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s") #endif -s32 func_801143CC(u8); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801143CC.s") +s32 Item_CheckObtainabilityImpl(u8 item); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s") -s32 func_80114978(u8 arg0) { - return func_801143CC(arg0); +s32 Item_CheckObtainability(u8 item) { + return Item_CheckObtainabilityImpl(item); } -void func_801149A0(s16 itemId, s16 invSlot) { +void Inventory_DeleteItem(s16 itemId, s16 invSlot) { s16 i; - s16 new_var; - s32 phi_a1; gSaveContext.save.inventory.items[invSlot] = ITEM_NONE; for (i = 1; i < 4; i++) { - if (i == 0) { - phi_a1 = CUR_FORM_EQUIP(i); - } else { - phi_a1 = gSaveContext.save.equips.buttonItems[0][i]; - } - - if (itemId == (phi_a1 & 0xFF)) { + if (itemId == CUR_FORM_BTN_ITEM(i)) { if (i == 0) { - phi_a1 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a1][i] = ITEM_NONE; + gSaveContext.save.equips.buttonItems[CUR_FORM][i] = ITEM_NONE; } else { gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE; } if (i == 0) { - phi_a1 = CUR_FORM; - gSaveContext.save.equips.cButtonSlots[phi_a1][i] = ITEM_NONE; + gSaveContext.save.equips.cButtonSlots[CUR_FORM][i] = SLOT_NONE; } else { - gSaveContext.save.equips.cButtonSlots[0][i] = ITEM_NONE; + gSaveContext.save.equips.cButtonSlots[0][i] = SLOT_NONE; } } } } -void func_80114A9C(s16 itemId) { +void Inventory_UnequipItem(s16 itemId) { s16 i; - s32 phi_a1; for (i = 1; i < 4; i++) { - if (i == 0) { - phi_a1 = gSaveContext.save.equips.buttonItems[CUR_FORM][i]; - } else { - phi_a1 = gSaveContext.save.equips.buttonItems[0][i]; - } - - if (itemId == (phi_a1 & 0xFF)) { + if (itemId == CUR_FORM_BTN_ITEM(i)) { if (i == 0) { - phi_a1 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a1][i] = ITEM_NONE; + gSaveContext.save.equips.buttonItems[CUR_FORM][i] = ITEM_NONE; } else { gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE; } if (i == 0) { - phi_a1 = CUR_FORM; - gSaveContext.save.equips.cButtonSlots[phi_a1][i] = ITEM_NONE; + gSaveContext.save.equips.cButtonSlots[CUR_FORM][i] = SLOT_NONE; } else { - gSaveContext.save.equips.cButtonSlots[0][i] = ITEM_NONE; + gSaveContext.save.equips.cButtonSlots[0][i] = SLOT_NONE; } } } } -#ifdef NON_MATCHING -s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { - u8 phi_a3; - u8 phi_a0; - u8 phi_a3_2; - for (phi_a3 = 0; phi_a3 < 24; phi_a3++) { - if (gSaveContext.save.inventory.items[phi_a3] == arg1) { - gSaveContext.save.inventory.items[phi_a3] = arg2; - for (phi_a3_2 = 1; phi_a3_2 < 4; phi_a3_2++) { - if (phi_a3_2 == 0) { - phi_a0 = gSaveContext.save.equips.buttonItems[CUR_FORM][phi_a3_2]; - } else { - phi_a0 = gSaveContext.save.equips.buttonItems[0][phi_a3_2]; - } +s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { + u8 i; - if (arg1 == (phi_a0 & 0xFF)) { - if (phi_a3_2 == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][phi_a3_2] = arg2; + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.inventory.items); i++) { + if (gSaveContext.save.inventory.items[i] == oldItem) { + gSaveContext.save.inventory.items[i] = newItem; + + for (i = 1; i < 4; i++) { + if (oldItem == CUR_FORM_BTN_ITEM(i)) { + if (i == 0) { + gSaveContext.save.equips.buttonItems[CUR_FORM][i] = newItem; } else { - gSaveContext.save.equips.buttonItems[0][phi_a3_2] = arg2; + gSaveContext.save.equips.buttonItems[0][i] = newItem; } - Interface_LoadItemIcon(arg0, phi_a3_2 & 0xFF); - return true; + Interface_LoadItemIcon(globalCtx, i); + break; } } return true; @@ -2004,13 +1997,10 @@ s32 func_80114B84(s32 arg0, u8 arg1, u8 arg2) { } return false; } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114B84.s") -#endif #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") -s32 Interface_HasEmptyBottle(void) { +s32 Inventory_HasEmptyBottle(void) { s32 slot; for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { @@ -2021,7 +2011,7 @@ s32 Interface_HasEmptyBottle(void) { return false; } -s32 Interface_HasItemInBottle(u8 itemId) { +s32 Inventory_HasItemInBottle(u8 itemId) { s32 slot; for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { @@ -2032,59 +2022,38 @@ s32 Interface_HasItemInBottle(u8 itemId) { return false; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114FD0.s") -/* void func_80114FD0(GlobalContext* globalCtx, u8 arg1, u8 arg2) { - u8 phi_v1; - s32 phi_a0; +void func_80114FD0(GlobalContext* globalCtx, u8 item, u8 arg2) { + gSaveContext.save.inventory.items[CUR_FORM_CBTN_SLOT(arg2)] = item; if (arg2 == 0) { - phi_v1 = gSaveContext.save.equips.cButtonSlots[CUR_FORM][arg2]; + gSaveContext.save.equips.buttonItems[CUR_FORM][arg2] = item; } else { - phi_v1 = gSaveContext.save.equips.cButtonSlots[0][arg2]; - } - gSaveContext.save.inventory.items[phi_v1] = arg1; - if (arg2 == 0) { - phi_a0 = CUR_FORM; - gSaveContext.save.equips.buttonItems[phi_a0][arg2] = arg1; - } else { - gSaveContext.save.equips.buttonItems[0][arg2] = arg1; + gSaveContext.save.equips.buttonItems[0][arg2] = item; } Interface_LoadItemIcon(globalCtx, arg2); - globalCtx->pauseCtx.cursorItem[0] = arg1; + globalCtx->pauseCtx.unk_25E[0] = item; gSaveContext.buttonStatus[arg2] = 0; - if (arg1 == 0x20) { - if (arg2 == 0) { - phi_a0 = CUR_FORM; - phi_v1 = gSaveContext.save.equips.cButtonSlots[phi_a0][arg2]; - } else { - phi_v1 = gSaveContext.save.equips.cButtonSlots[0][arg2]; - } - func_8012FB84(0x3C, phi_v1 - 0x12); + if (item == ITEM_HOT_SPRING_WATER) { + func_8010EBA0(0x3C, CUR_FORM_CBTN_SLOT(arg2) - 0x12); } -} */ +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115130.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801152B8.s") -/* void func_801152B8(GlobalContext* globalCtx, s16 arg1, s16 arg2) { - s16 phi_s0; - u8 phi_v1; - gSaveContext.save.inventory.items[arg1] = arg2; - for (phi_s0 = 1; phi_s0 < 4; phi_s0++) { - if (phi_s0 == 0) { - phi_v1 = gSaveContext.save.equips.cButtonSlots[CUR_FORM][phi_s0]; - } else { - phi_v1 = gSaveContext.save.equips.cButtonSlots[0][phi_s0]; - } - if (arg1 == (phi_v1 & 0xFF)) { - if (phi_s0 == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][phi_s0] = arg2; +void func_801152B8(GlobalContext* globalCtx, s16 slot, s16 item) { + s16 i; + + gSaveContext.save.inventory.items[slot] = item; + for (i = 1; i < 4; i++) { + if (slot == CUR_FORM_CBTN_SLOT(i)) { + if (i == 0) { + gSaveContext.save.equips.buttonItems[CUR_FORM][i] = item; } else { - gSaveContext.save.equips.buttonItems[0][phi_s0] = arg2; + gSaveContext.save.equips.buttonItems[0][i] = item; } - Interface_LoadItemIcon(globalCtx, phi_s0); + Interface_LoadItemIcon(globalCtx, i); } } -} */ +} void func_801153C8(s32* buf, s32 size) { s32 i; @@ -2184,7 +2153,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } else if (AMMO(ITEM_BOW) < 0) { AMMO(ITEM_BOW) = 0; } - + } else if (item == ITEM_BOMB) { AMMO(ITEM_BOMB) += ammoChange; @@ -2246,11 +2215,11 @@ void func_80116088(void) { void func_80116114(void) { static s16 magicBorderColors[][3] = { - { 255, 255, 255 }, + { 255, 255, 255 }, { 150, 150, 150 }, }; static s16 magicBorderIndices[] = { 0, 1, 1, 0 }; - static s16 magicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; + static s16 magicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; s16 colorStep1; s16 colorStep2; s16 colorStep3; @@ -3911,40 +3880,40 @@ void Interface_Update(GlobalContext* globalCtx) { } } - // Update Horseback Archery (remnant of OoT) + // Update Minigame if (gSaveContext.minigameState == 1) { gSaveContext.minigameScore += interfaceCtx->unk_25C; gSaveContext.unk_3F3C += interfaceCtx->unk_25E; interfaceCtx->unk_25C = 0; interfaceCtx->unk_25E = 0; - if (D_801BF88C == 0) { + if (sHBAScoreTier == 0) { if (gSaveContext.minigameScore >= 1000) { - D_801BF88C++; + sHBAScoreTier++; } - } else if (D_801BF88C == 1) { + } else if (sHBAScoreTier == 1) { if (gSaveContext.minigameScore >= 1500) { - D_801BF88C++; + sHBAScoreTier++; } } - D_801BF890[0] = D_801BF890[1] = 0; - D_801BF890[2] = 0; - D_801BF890[3] = gSaveContext.minigameScore; + sMinigameScoreDigits[0] = sMinigameScoreDigits[1] = 0; + sMinigameScoreDigits[2] = 0; + sMinigameScoreDigits[3] = gSaveContext.minigameScore; - while (D_801BF890[3] >= 1000) { - D_801BF890[0]++; - D_801BF890[3] -= 1000; + while (sMinigameScoreDigits[3] >= 1000) { + sMinigameScoreDigits[0]++; + sMinigameScoreDigits[3] -= 1000; } - while (D_801BF890[3] >= 100) { - D_801BF890[1]++; - D_801BF890[3] -= 100; + while (sMinigameScoreDigits[3] >= 100) { + sMinigameScoreDigits[1]++; + sMinigameScoreDigits[3] -= 100; } - while (D_801BF890[3] >= 10) { - D_801BF890[2]++; - D_801BF890[3] -= 10; + while (sMinigameScoreDigits[3] >= 10) { + sMinigameScoreDigits[2]++; + sMinigameScoreDigits[3] -= 10; } } diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index c79c6c580..a808f5d07 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -219,7 +219,7 @@ s32 func_80BECFBC(EnAkindonuts* this) { return 0x9A; case 3: - func_801149A0(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); + Inventory_DeleteItem(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); return 0x7; } return 0; @@ -321,7 +321,7 @@ s32 func_80BED27C(EnAkindonuts* this) { } s32 func_80BED2FC(EnAkindonuts* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return 2; } @@ -335,7 +335,7 @@ s32 func_80BED2FC(EnAkindonuts* this) { } s32 func_80BED35C(EnAkindonuts* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return 2; } diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 5a938bce4..811eef903 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -241,7 +241,7 @@ void EnCow_GiveMilk(EnCow* this, GlobalContext* globalCtx) { void EnCow_CheckForEmptyBottle(EnCow* this, GlobalContext* globalCtx) { if ((func_80152498(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { func_80151938(globalCtx, 0x32C9); // Text to give milk. this->actionFunc = EnCow_GiveMilk; } else { @@ -298,7 +298,7 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { if (func_801A5100() == 4) { if (!(gSaveContext.save.weekEventReg[87] & 1)) { gSaveContext.save.weekEventReg[87] |= 1; - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actor.textId = 0x32C9; // Text to give milk. } else { this->actor.textId = 0x32CA; // Text if you don't have an empty bottle. diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 106d64393..44a7325b9 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -375,7 +375,7 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.world.rot.x = this->actor.shape.rot.x; this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; - } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && + } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !(gSaveContext.save.weekEventReg[23] & 0x20)) || ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.save.weekEventReg[23] & 0x20))) { Actor_SetScale(&this->actor, 0.0085f); diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index a25225f96..23e6dd21c 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -346,7 +346,7 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { this->unk_390 = 70.0f; - if (Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && + if (Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && (func_80152498(&globalCtx->msgCtx) == 0) && (ActorCutscene_GetCurrentIndex() == -1)) { if ((DECR(this->unk_384) == 0) && (gSaveContext.save.weekEventReg[29] & 0x40)) { func_801518B0(globalCtx, 0x969, NULL); diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 31539bd3e..88fb9ccc7 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -185,7 +185,7 @@ void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) { } s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -195,7 +195,7 @@ s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyPotionGreen(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -208,7 +208,7 @@ s32 EnGirlA_CanBuyPotionBlue(GlobalContext* globalCtx, EnGirlA* this) { if (!(gSaveContext.save.weekEventReg[53] & 8)) { return CANBUY_RESULT_CANNOT_GET_NOW; } - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (!(gSaveContext.save.weekEventReg[53] & 0x10)) { @@ -240,7 +240,7 @@ s32 EnGirlA_CanBuyNuts(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_NUT) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -263,7 +263,7 @@ s32 EnGirlA_CanBuyStick(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_STICK) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -322,7 +322,7 @@ s32 EnGirlA_CanBuyBombchus(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_BOMBCHU) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -366,7 +366,7 @@ s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyFairy(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 0e85140f2..664905624 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -793,7 +793,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); @@ -939,7 +939,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x347E: func_808F35D8(this, globalCtx); - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3B40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); ret = true; @@ -1045,7 +1045,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); @@ -1143,7 +1143,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x34A1: func_808F35D8(this, globalCtx); - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3B40; func_800B8A1C(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); ret = true; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index edca81f6e..8ec05a656 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -713,7 +713,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, GlobalContext* globalCtx) { globalCtx->interfaceCtx.unk_280 = 1; func_8010E9F0(4, 0); gSaveContext.save.weekEventReg[0x8] |= 0x01; - func_80112AFC(globalCtx); + Interface_InitMinigame(globalCtx); player->stateFlags1 |= 0x20; this->actionFunc = EnMa4_SetupHorsebackGameWait; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index aab14a2af..b0c699c9b 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -332,7 +332,7 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) { globalCtx->msgCtx.unk11F22 = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; - func_80112AFC(globalCtx); + Interface_InitMinigame(globalCtx); globalCtx->interfaceCtx.hbaAmmo = 80; func_80123F2C(globalCtx, 80); this->unk_26A = 1; @@ -654,7 +654,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; this->unk_27E = 0; - func_80112AFC(globalCtx); + Interface_InitMinigame(globalCtx); func_80123F2C(globalCtx, 0x63); this->unk_26A = 1; func_801A2BB8(NA_BGM_MINI_GAME_2); diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index 379ac2f45..4b9ab04b9 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -670,7 +670,7 @@ s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, GlobalContext* gl return EN_TALK_GIBUD_REQUESTED_ITEM_NOT_ENOUGH_AMMO; } } - if (Interface_HasItemInBottle(requestedItem->item)) { + if (Inventory_HasItemInBottle(requestedItem->item)) { return EN_TALK_GIBUD_REQUESTED_ITEM_MET; } } diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index f7bdaa56f..d07c74a04 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -249,7 +249,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { } if (isItemFound) { - func_801149A0(itemId2, slotId); + Inventory_DeleteItem(itemId2, slotId); this->unk_3E8 = D_060033B0; if (!func_80152498(&globalCtx->msgCtx)) { func_801518B0(globalCtx, 0xF4, NULL); @@ -266,7 +266,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { itemId1 = phi_a3 + (ITEM_SWORD_KOKIRI - 1); if (phi_a3 == 4) { - func_801149A0(ITEM_SWORD_GREAT_FAIRY, SLOT_SWORD_GREAT_FAIRY); + Inventory_DeleteItem(ITEM_SWORD_GREAT_FAIRY, SLOT_SWORD_GREAT_FAIRY); this->unk_3E8 = D_06003D58; itemId1 = ITEM_SWORD_GREAT_FAIRY; } else { diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 39811da94..41c254c64 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -397,7 +397,7 @@ void EnTrt_Goodbye(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->textId == 0x88F) { - if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { + if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -418,7 +418,7 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { EnTrt_SetupStartShopping(globalCtx, this, 0); } else if (gSaveContext.save.weekEventReg[0x54] & 0x40) { this->textId = 0x83B; - if (Interface_HasItemInBottle(ITEM_POTION_RED)) { + if (Inventory_HasItemInBottle(ITEM_POTION_RED)) { EnTrt_SetupStartShopping(globalCtx, this, false); } else { this->actionFunc = EnTrt_TryToGiveRedPotion; @@ -730,7 +730,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { } } } else if (talkState == 5 && func_80147624(globalCtx)) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { play_sound(NA_SE_SY_ERROR); EnTrt_SetupCannotBuy(globalCtx, this, 0x846); } else { @@ -941,7 +941,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt this->blinkFunc = EnTrt_Blink; if (talkState == 6 && func_80147624(globalCtx)) { - if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { + if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[0xC] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -960,7 +960,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (func_80152498(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->textId == 0x83C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index d35cda7e7..8a64270f5 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2106,21 +2106,21 @@ 0x8010F1A8:("func_8010F1A8",), 0x80110038:("func_80110038",), 0x80111CB4:("func_80111CB4",), - 0x801129E4:("func_801129E4",), + 0x801129E4:("Interface_SetSceneRestrictions",), 0x80112AF4:("func_80112AF4",), - 0x80112AFC:("func_80112AFC",), + 0x80112AFC:("Interface_InitMinigame",), 0x80112B40:("Interface_LoadItemIcon",), 0x80112BE4:("func_80112BE4",), 0x80112C0C:("func_80112C0C",), 0x80112E80:("Item_Give",), - 0x801143CC:("func_801143CC",), - 0x80114978:("func_80114978",), - 0x801149A0:("func_801149A0",), - 0x80114A9C:("func_80114A9C",), - 0x80114B84:("func_80114B84",), + 0x801143CC:("Item_CheckObtainabilityImpl",), + 0x80114978:("Item_CheckObtainability",), + 0x801149A0:("Inventory_DeleteItem",), + 0x80114A9C:("Inventory_UnequipItem",), + 0x80114B84:("Inventory_ReplaceItem",), 0x80114CA0:("func_80114CA0",), - 0x80114E90:("Interface_HasEmptyBottle",), - 0x80114F2C:("Interface_HasItemInBottle",), + 0x80114E90:("Inventory_HasEmptyBottle",), + 0x80114F2C:("Inventory_HasItemInBottle",), 0x80114FD0:("func_80114FD0",), 0x80115130:("func_80115130",), 0x801152B8:("func_801152B8",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 0f0ab7531..608c3ea5e 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1066,8 +1066,8 @@ 0x801BF6C0:("sRestrictionFlags","RestrictionFlags","[113]",0x1c4), 0x801BF884:("D_801BF884","UNK_TYPE2","",0x2), 0x801BF888:("D_801BF888","UNK_TYPE2","",0x2), - 0x801BF88C:("D_801BF88C","UNK_TYPE2","",0x2), - 0x801BF890:("D_801BF890","UNK_TYPE2","",0x2), + 0x801BF88C:("sHBAScoreTier","UNK_TYPE2","",0x2), + 0x801BF890:("sMinigameScoreDigits","UNK_TYPE2","",0x2), 0x801BF898:("D_801BF898","UNK_TYPE2","",0x2), 0x801BF89C:("D_801BF89C","UNK_TYPE2","",0x2), 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 4141077f5..63b51cc49 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1620,21 +1620,21 @@ asm/non_matchings/code/z_parameter/func_8010F0D4.s,func_8010F0D4,0x8010F0D4,0x35 asm/non_matchings/code/z_parameter/func_8010F1A8.s,func_8010F1A8,0x8010F1A8,0x3A4 asm/non_matchings/code/z_parameter/func_80110038.s,func_80110038,0x80110038,0x71F asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34C -asm/non_matchings/code/z_parameter/func_801129E4.s,func_801129E4,0x801129E4,0x44 +asm/non_matchings/code/z_parameter/Interface_SetSceneRestrictions.s,Interface_SetSceneRestrictions,0x801129E4,0x44 asm/non_matchings/code/z_parameter/func_80112AF4.s,func_80112AF4,0x80112AF4,0x2 -asm/non_matchings/code/z_parameter/func_80112AFC.s,func_80112AFC,0x80112AFC,0x11 +asm/non_matchings/code/z_parameter/Interface_InitMinigame.s,Interface_InitMinigame,0x80112AFC,0x11 asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112B40,0x29 asm/non_matchings/code/z_parameter/func_80112BE4.s,func_80112BE4,0x80112BE4,0xA asm/non_matchings/code/z_parameter/func_80112C0C.s,func_80112C0C,0x80112C0C,0x9D asm/non_matchings/code/z_parameter/Item_Give.s,Item_Give,0x80112E80,0x553 -asm/non_matchings/code/z_parameter/func_801143CC.s,func_801143CC,0x801143CC,0x16B -asm/non_matchings/code/z_parameter/func_80114978.s,func_80114978,0x80114978,0xA -asm/non_matchings/code/z_parameter/func_801149A0.s,func_801149A0,0x801149A0,0x3F -asm/non_matchings/code/z_parameter/func_80114A9C.s,func_80114A9C,0x80114A9C,0x3A -asm/non_matchings/code/z_parameter/func_80114B84.s,func_80114B84,0x80114B84,0x47 +asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s,Item_CheckObtainabilityImpl,0x801143CC,0x16B +asm/non_matchings/code/z_parameter/Item_CheckObtainability.s,Item_CheckObtainability,0x80114978,0xA +asm/non_matchings/code/z_parameter/Inventory_DeleteItem.s,Inventory_DeleteItem,0x801149A0,0x3F +asm/non_matchings/code/z_parameter/Inventory_UnequipItem.s,Inventory_UnequipItem,0x80114A9C,0x3A +asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s,Inventory_ReplaceItem,0x80114B84,0x47 asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C -asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s,Interface_HasEmptyBottle,0x80114E90,0x27 -asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s,Interface_HasItemInBottle,0x80114F2C,0x29 +asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s,Inventory_HasEmptyBottle,0x80114E90,0x27 +asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s,Inventory_HasItemInBottle,0x80114F2C,0x29 asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58 asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44 From 7a9aa3c157e11971bb3979cba645604cc9920bac Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 29 Dec 2021 01:54:42 +1100 Subject: [PATCH 029/160] Match Interface_LoadItemIcon --- include/functions.h | 6 +-- src/code/z_parameter.c | 47 ++++++++--------------- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 2 +- tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 5 files changed, 24 insertions(+), 39 deletions(-) diff --git a/include/functions.h b/include/functions.h index b76114785..0e079edbf 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2053,8 +2053,8 @@ void Interface_ChangeAlpha(u16 param_1); // void func_80111CB4(void); // void Interface_SetSceneRestrictions(void); void Interface_InitMinigame(GlobalContext* globalCtx); -void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1); -// void func_80112BE4(void); +void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); +// void Interface_LoadItemIcon(void); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 param_2); // void Item_CheckObtainabilityImpl(void); @@ -3197,7 +3197,7 @@ s32 func_80178A94(s32 param_1, s32 param_2); // void func_80178C80(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_80178D7C(void); // void func_80178DAC(void); -// void func_80178E3C(void); +void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); // void func_80178E7C(void); // void Check_WriteRGBA16Pixel(u16* buffer, u32 x, u32 y, u32 value); // void Check_WriteI4Pixel(u16* buffer, u32 x, u32 y, u32 value); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 479e9c5a5..b0d4a074f 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1402,9 +1402,6 @@ void Interface_SetSceneRestrictions(GlobalContext* globalCtx) { void func_80112AF4(void) { } -/** - * Initializes Romani's balloon horseback archery minigame - */ void Interface_InitMinigame(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -1418,28 +1415,16 @@ void Interface_InitMinigame(GlobalContext* globalCtx) { interfaceCtx->hbaAmmo = 20; } -void func_80178E3C(u32 romSegment, u32 arg1, void* dst, u32 size); - -#ifdef NON_EQUIVALENT -void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { +void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - u8 phi_v0; + u32 new_var = arg1; - if (arg1 == 0) { - phi_v0 = gSaveContext.save.equips.buttonItems[CUR_FORM][arg1]; - } else { - phi_v0 = gSaveContext.save.equips.buttonItems[0][arg1]; - } - - func_80178E3C((u32)_icon_item_static_testSegmentRomStart, phi_v0 & 0xFF, - (u32)interfaceCtx->iconItemSegment + (arg1 * 0x1000), 0x1000); + func_80178E3C(_icon_item_static_testSegmentRomStart, CUR_FORM_BTN_ITEM(new_var), + &interfaceCtx->iconItemSegment[new_var * 0x1000], 0x1000); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s") -#endif -void func_80112BE4(GlobalContext* globalCtx, u8 arg1) { - Interface_LoadItemIcon(globalCtx, arg1); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { + Interface_LoadItemIconImpl(globalCtx, arg1); } void func_80112C0C(GlobalContext* globalCtx, u16 flag) { @@ -1454,12 +1439,12 @@ void func_80112C0C(GlobalContext* globalCtx, u16 flag) { (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMBCHU) || (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_FISHING_POLE)) { gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; - Interface_LoadItemIcon(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, 0); } } else if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NONE) { if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] != ITEM_NONE) { gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; - Interface_LoadItemIcon(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, 0); } } @@ -1523,7 +1508,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { value = item - ITEM_SWORD_KOKIRI - 1; SET_EQUIP_VALUE(EQUIP_SWORD, value); gSaveContext.save.equips.buttonItems[CUR_FORM][0] = item; - Interface_LoadItemIcon(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, 0); if (item == ITEM_SWORD_RAZOR) { gSaveContext.save.playerData.swordHealth = 100; } @@ -1866,15 +1851,15 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { gSaveContext.save.equips.buttonItems[0][1] = item; - Interface_LoadItemIcon(globalCtx, 1); + Interface_LoadItemIconImpl(globalCtx, 1); gSaveContext.buttonStatus[1] = 0; } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { gSaveContext.save.equips.buttonItems[0][2] = item; - Interface_LoadItemIcon(globalCtx, 2); + Interface_LoadItemIconImpl(globalCtx, 2); gSaveContext.buttonStatus[2] = 0; } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { gSaveContext.save.equips.buttonItems[0][3] = item; - Interface_LoadItemIcon(globalCtx, 3); + Interface_LoadItemIconImpl(globalCtx, 3); gSaveContext.buttonStatus[3] = 0; } @@ -1908,7 +1893,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else { gSaveContext.save.equips.buttonItems[0][i] = item; } - Interface_LoadItemIcon(globalCtx, i); + Interface_LoadItemIconImpl(globalCtx, i); return ITEM_NONE; } } @@ -1988,7 +1973,7 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { gSaveContext.save.equips.buttonItems[0][i] = newItem; } - Interface_LoadItemIcon(globalCtx, i); + Interface_LoadItemIconImpl(globalCtx, i); break; } } @@ -2029,7 +2014,7 @@ void func_80114FD0(GlobalContext* globalCtx, u8 item, u8 arg2) { } else { gSaveContext.save.equips.buttonItems[0][arg2] = item; } - Interface_LoadItemIcon(globalCtx, arg2); + Interface_LoadItemIconImpl(globalCtx, arg2); globalCtx->pauseCtx.unk_25E[0] = item; gSaveContext.buttonStatus[arg2] = 0; if (item == ITEM_HOT_SPRING_WATER) { @@ -2050,7 +2035,7 @@ void func_801152B8(GlobalContext* globalCtx, s16 slot, s16 item) { } else { gSaveContext.save.equips.buttonItems[0][i] = item; } - Interface_LoadItemIcon(globalCtx, i); + Interface_LoadItemIconImpl(globalCtx, i); } } } diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index eae91832c..cc3a8e605 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -732,7 +732,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { this->actor.textId = 0xC43; CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; TAKE_EQUIPPED_ITEM(EQUIP_SWORD); - Interface_LoadItemIcon(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, 0); func_80B40C74(globalCtx); break; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 8a64270f5..0669c1837 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2109,8 +2109,8 @@ 0x801129E4:("Interface_SetSceneRestrictions",), 0x80112AF4:("func_80112AF4",), 0x80112AFC:("Interface_InitMinigame",), - 0x80112B40:("Interface_LoadItemIcon",), - 0x80112BE4:("func_80112BE4",), + 0x80112B40:("Interface_LoadItemIconImpl",), + 0x80112BE4:("Interface_LoadItemIcon",), 0x80112C0C:("func_80112C0C",), 0x80112E80:("Item_Give",), 0x801143CC:("Item_CheckObtainabilityImpl",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 63b51cc49..551d98994 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1623,8 +1623,8 @@ asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34 asm/non_matchings/code/z_parameter/Interface_SetSceneRestrictions.s,Interface_SetSceneRestrictions,0x801129E4,0x44 asm/non_matchings/code/z_parameter/func_80112AF4.s,func_80112AF4,0x80112AF4,0x2 asm/non_matchings/code/z_parameter/Interface_InitMinigame.s,Interface_InitMinigame,0x80112AFC,0x11 -asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112B40,0x29 -asm/non_matchings/code/z_parameter/func_80112BE4.s,func_80112BE4,0x80112BE4,0xA +asm/non_matchings/code/z_parameter/Interface_LoadItemIconImpl.s,Interface_LoadItemIconImpl,0x80112B40,0x29 +asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112BE4,0xA asm/non_matchings/code/z_parameter/func_80112C0C.s,func_80112C0C,0x80112C0C,0x9D asm/non_matchings/code/z_parameter/Item_Give.s,Item_Give,0x80112E80,0x553 asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s,Item_CheckObtainabilityImpl,0x801143CC,0x16B From a19ab64a3c95ce62316e82ec72bf84647fab76e3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 29 Dec 2021 03:37:29 +1100 Subject: [PATCH 030/160] Match two minigame functions --- include/functions.h | 2 +- src/code/z_parameter.c | 164 ++++++++++++++++++++++++++++----- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 4 files changed, 145 insertions(+), 25 deletions(-) diff --git a/include/functions.h b/include/functions.h index 0e079edbf..7adcaa490 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2099,7 +2099,7 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); // void func_8011B5C0(void); // void func_8011B9E0(void); // void func_8011BF70(void); -// void func_8011C4C4(void); +// void Interface_DrawMinigamePerfect(void); void func_8011C808(GlobalContext* globalCtx); // void func_8011C898(void); // void func_8011CA64(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index b0d4a074f..0aa821e43 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2945,21 +2945,94 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_28A[0] = 1; } -s32 D_801BFC50[] = { - 0xC000E000, - 0x00002000, - 0xA0008000, - 0x60004000, -}; -s32 D_801BFC60[] = { - 0x00FF00FF, -}; -s32 D_801BFC64[] = { - 0x00FF00FF, - 0x00A50037, -}; -void func_8011B5C0(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") +void func_8011B5C0(GlobalContext* globalCtx) { + static u16 D_801BFC50[] = { + 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, + }; + static s16 D_801BFC60[][3] = { + 255, 255, 255, 255, 165, 55, + }; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 i; + s16 count; + s16 colorStepR; + s16 colorStepG; + s16 colorStepB; + + for (count = 0, i = 0; i < interfaceCtx->unk_304; i++, count += 4) { + if (interfaceCtx->unk_28A[i] == 1) { + interfaceCtx->unk_29A[i] = D_801BFC50[i] + 0xA000; + interfaceCtx->unk_28A[i] = 2; + } else if (interfaceCtx->unk_28A[i] == 2) { + interfaceCtx->unk_29A[i] -= 0x800; + if (interfaceCtx->unk_29A[i] == D_801BFC50[i]) { + interfaceCtx->unk_28A[i] = 3; + } + } else if (interfaceCtx->unk_28A[i] == 4) { + interfaceCtx->unk_29A[i] -= 0x800; + if (interfaceCtx->unk_29A[i] == (u16)(D_801BFC50[i] - 0x8000)) { + interfaceCtx->unk_28A[i] = 0; + } + } + } + + if ((interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) && (interfaceCtx->unk_304 < 8)) { + interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; + interfaceCtx->unk_2BC[interfaceCtx->unk_304] = 140.0f; + interfaceCtx->unk_2DC[interfaceCtx->unk_304] = 100.0f; + interfaceCtx->unk_29A[interfaceCtx->unk_304] = D_801BFC50[interfaceCtx->unk_304] + 0xA000; + interfaceCtx->unk_304++; + } + + if ((interfaceCtx->unk_304 == 8) && (interfaceCtx->unk_28A[7] == 3)) { + + colorStepR = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFC60[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; + colorStepG = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFC60[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; + colorStepB = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFC60[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + + if (interfaceCtx->unk_2FC[0] >= D_801BFC60[interfaceCtx->unk_308][0]) { + interfaceCtx->unk_2FC[0] -= colorStepR; + } else { + interfaceCtx->unk_2FC[0] += colorStepR; + } + + if (interfaceCtx->unk_2FC[1] >= D_801BFC60[interfaceCtx->unk_308][1]) { + interfaceCtx->unk_2FC[1] -= colorStepG; + } else { + interfaceCtx->unk_2FC[1] += colorStepG; + } + + if (interfaceCtx->unk_2FC[2] >= D_801BFC60[interfaceCtx->unk_308][2]) { + interfaceCtx->unk_2FC[2] -= colorStepB; + } else { + interfaceCtx->unk_2FC[2] += colorStepB; + } + + interfaceCtx->unk_30A--; + + if (interfaceCtx->unk_30A == 0) { + interfaceCtx->unk_30A = 20; + interfaceCtx->unk_308 ^= 1; + interfaceCtx->unk_30C++; + + if (interfaceCtx->unk_30C == 6) { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_28A[i] = 4; + } + } + } + } + + for (count = 0, i = 0; i < 8; i++) { + if (interfaceCtx->unk_28A[i] == 0) { + count++; + } + } + + if (count == 8) { + interfaceCtx->unk_286 = 0; + } +} s16 D_801BFC6C[] = { 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, @@ -2995,12 +3068,59 @@ s32 D_801BFCB8[] = { void func_8011BF70(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") -TexturePtr D_801BFCC4[] = { - gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, - gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, -}; -void func_8011C4C4(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") +void Interface_DrawMinigamePerfect(GlobalContext* globalCtx) { + static TexturePtr D_801BFCC4[] = { + gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, + gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, + }; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + f32 temp_f22; + f32 temp_f24; + s16 i; + s16 phi_s7; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + func_8012C8D4(globalCtx->state.gfxCtx); + + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + + for (phi_s7 = 0, i = 0; i < 8; phi_s7 += 4, i++) { + if (interfaceCtx->unk_28A[i] != 0) { + temp_f24 = Math_SinS(interfaceCtx->unk_29A[i]) * interfaceCtx->unk_2BC[i]; + temp_f22 = Math_CosS(interfaceCtx->unk_29A[i]) * interfaceCtx->unk_2DC[i]; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->unk_2FC[3]); + + Matrix_InsertTranslation(temp_f24, temp_f22, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x2C, 4, 0); + + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->unk_2FC[0], interfaceCtx->unk_2FC[1], + interfaceCtx->unk_2FC[2], interfaceCtx->unk_2FC[3]); + + Matrix_InsertTranslation(temp_f24, temp_f22, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x4C, 4, 0); + + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + } + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} #ifdef NON_MATCHING void func_8011C808(GlobalContext* globalCtx) { @@ -3377,7 +3497,7 @@ void Interface_Draw(GlobalContext* globalCtx) { } if (interfaceCtx->unk_286 != 0) { - func_8011C4C4(globalCtx); + Interface_DrawMinigamePerfect(globalCtx); } func_8011E730(globalCtx); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 0669c1837..a0463e658 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2155,7 +2155,7 @@ 0x8011B5C0:("func_8011B5C0",), 0x8011B9E0:("func_8011B9E0",), 0x8011BF70:("func_8011BF70",), - 0x8011C4C4:("func_8011C4C4",), + 0x8011C4C4:("Interface_DrawMinigamePerfect",), 0x8011C808:("func_8011C808",), 0x8011C898:("func_8011C898",), 0x8011CA64:("func_8011CA64",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 551d98994..7b12671ec 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1669,7 +1669,7 @@ asm/non_matchings/code/z_parameter/func_8011B4E0.s,func_8011B4E0,0x8011B4E0,0x38 asm/non_matchings/code/z_parameter/func_8011B5C0.s,func_8011B5C0,0x8011B5C0,0x108 asm/non_matchings/code/z_parameter/func_8011B9E0.s,func_8011B9E0,0x8011B9E0,0x164 asm/non_matchings/code/z_parameter/func_8011BF70.s,func_8011BF70,0x8011BF70,0x155 -asm/non_matchings/code/z_parameter/func_8011C4C4.s,func_8011C4C4,0x8011C4C4,0xD1 +asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_DrawMinigamePerfect,0x8011C4C4,0xD1 asm/non_matchings/code/z_parameter/func_8011C808.s,func_8011C808,0x8011C808,0x24 asm/non_matchings/code/z_parameter/func_8011C898.s,func_8011C898,0x8011C898,0x73 asm/non_matchings/code/z_parameter/func_8011CA64.s,func_8011CA64,0x8011CA64,0x654 From c0afa143f4ddc76c65643c46710ad68d0741e961 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 29 Dec 2021 23:38:11 +1100 Subject: [PATCH 031/160] 2 more functions, a few names --- include/functions.h | 10 +- include/z64save.h | 2 +- src/code/z_parameter.c | 172 ++++++++++++------ src/overlays/actors/ovl_En_Test4/z_en_test4.c | 4 +- tools/disasm/functions.txt | 10 +- tools/sizes/code_functions.csv | 10 +- 6 files changed, 131 insertions(+), 77 deletions(-) diff --git a/include/functions.h b/include/functions.h index 7adcaa490..bc14b3440 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2044,7 +2044,7 @@ void func_8010E9F0(s16 arg0, s16 arg1); // void func_8010EB50(void); // void func_8010EBA0(void); // void func_8010EC54(void); -void func_8010EE74(GlobalContext* globalCtx, s32 day); +void Interface_NewDay(GlobalContext* globalCtx, s32 day); void Interface_ChangeAlpha(u16 param_1); // void func_8010EF9C(void); // void func_8010F0D4(void); @@ -2088,8 +2088,8 @@ void func_80115D5C(GameState* gamestate); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); // void Interface_DrawItemButtons(void); -// void func_80117A20(void); -// void func_80117BD0(void); +// void Interface_DrawItemIconTexture(void); +// void Interface_DrawAmmoCount(void); // void func_80118084(void); // void func_80118890(void); // void func_80118BA4(void); @@ -2102,9 +2102,9 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); // void Interface_DrawMinigamePerfect(void); void func_8011C808(GlobalContext* globalCtx); // void func_8011C898(void); -// void func_8011CA64(void); +// void Interface_DrawTimers(void); // void func_8011E3B4(void); -// void func_8011E730(void); +// void Interface_DrawMinigame(void); // void Interface_Draw(UNK_TYPE4 ctxt); // void Interface_LoadStory(void); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); diff --git a/include/z64save.h b/include/z64save.h index d5bb62829..5b0c33ab8 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -148,7 +148,7 @@ typedef struct { /* 0x3DC2 */ u8 unk_3DC2; // "pad1" /* 0x3DC8 */ OSTime unk_3DC8; // "get_time" /* 0x3DD0 */ u8 unk_3DD0[7]; // "event_fg" - /* 0x3DD7 */ u8 unk_3DD7[7]; // "calc_flag" + /* 0x3DD7 */ u8 timersNoTimeLimit[7]; // "calc_flag" /* 0x3DE0 */ OSTime unk_3DE0[7]; // "event_ostime" /* 0x3E18 */ OSTime unk_3E18[7]; // "event_sub" /* 0x3E50 */ OSTime unk_3E50[7]; // "func_time" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 0aa821e43..64e1c6a4f 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -36,30 +36,6 @@ extern u8 D_801E3BB0[]; } \ (void)0 -/** - * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var > target, this will eventually increase `var` by - * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to - * truncation from the divisions. - */ -#define TIMED_STEP_UP_TO(var, target, timeRemaining, stepVar) \ - { \ - stepVar = ABS_ALT(var - target) / timeRemaining; \ - var += stepVar; \ - } \ - (void)0 - -/** - * Similar to `TIMED_STEP_TO`, but will always increase `var`. If var < target, this will eventually dncrease `var` by - * an amount that is at most ( timeRemaining + 1 ) * | var - target |, but which depends on the amount lost to - * truncation from the divisions. - */ -#define TIMED_STEP_DOWN_TO(var, target, timeRemaining, stepVar) \ - { \ - stepVar = ABS_ALT(var - target) / timeRemaining; \ - var -= stepVar; \ - } \ - (void)0 - typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -292,9 +268,9 @@ s16 D_801BF9C8[] = { 0x16, }; -s32 D_801BF9CC[] = { - 0xC3BE0000, // f32: -380.0 - 0xC3AF0000, // f32: -350.0 +f32 D_801BF9CC[] = { + -380.0f, + -350.0f, }; s16 D_801BF9D4[] = { @@ -517,37 +493,37 @@ void func_8010E968(s32 arg0) { D_801BFA84 = btnAPressed; } -void func_8010E9F0(s16 timerId, s16 arg1) { +void func_8010E9F0(s16 timerId, s16 timeLimit) { gSaveContext.timerX[timerId] = 115; gSaveContext.timerY[timerId] = 80; D_801BF8E0 = 0; - gSaveContext.unk_3DE0[timerId] = arg1 * 100; + gSaveContext.unk_3DE0[timerId] = timeLimit * 100; gSaveContext.unk_3E18[timerId] = gSaveContext.unk_3DE0[timerId]; if (gSaveContext.unk_3DE0[timerId] != 0) { - gSaveContext.unk_3DD7[timerId] = 0; + gSaveContext.timersNoTimeLimit[timerId] = false; } else { - gSaveContext.unk_3DD7[timerId] = 1; + gSaveContext.timersNoTimeLimit[timerId] = true; } gSaveContext.unk_3DD0[timerId] = 1; } -void func_8010EA9C(s16 arg0, s16 arg1) { +void func_8010EA9C(s16 timeLimit, s16 arg1) { gSaveContext.timerX[0] = 115; gSaveContext.timerY[0] = 80; D_801BF8E4 = arg1; - gSaveContext.unk_3DE0[0] = arg0 * 100; + gSaveContext.unk_3DE0[0] = timeLimit * 100; gSaveContext.unk_3E18[0] = gSaveContext.unk_3DE0[0]; if (gSaveContext.unk_3DE0[0] != 0) { - gSaveContext.unk_3DD7[0] = 0; + gSaveContext.timersNoTimeLimit[0] = false; } else { - gSaveContext.unk_3DD7[0] = 1; + gSaveContext.timersNoTimeLimit[0] = true; } gSaveContext.unk_3DD0[0] = 13; @@ -588,15 +564,20 @@ s32 func_8010EC54(s16 timerId) { time = gSaveContext.unk_3DE0[timerId]; + // hours time -= (sp1C = time / 36000) * 36000; if (1) {} + // minutes time -= (sp1E = time / 6000) * 6000; + // seconds time -= (sp20 = time / 1000) * 1000; + // 100 milliseconds time -= (sp22 = time / 100) * 100; + // 10 miliseconds time -= (temp_a0 = time / 10) * 10; final = (sp1C << 0x14); @@ -607,23 +588,26 @@ s32 func_8010EC54(s16 timerId) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") #endif -void func_8010EE74(GlobalContext* globalCtx, s32 arg1) { +void Interface_NewDay(GlobalContext* globalCtx, s32 day) { s32 pad; - s16 phi_t0 = arg1 - 1; + s16 i = day - 1; - if (phi_t0 < 0 || phi_t0 >= 3) { - phi_t0 = 0; + // i is used to store dayMinusOne + if (i < 0 || i >= 3) { + i = 0; } + // Loads day number from week_static for the three-day clock DmaMgr_SendRequest0((u32)globalCtx->interfaceCtx.doActionSegment + 0x780, - (u32)_week_staticSegmentRomStart + phi_t0 * 0x510, 0x510); + (u32)_week_staticSegmentRomStart + i * 0x510, 0x510); - for (phi_t0 = 0; phi_t0 < 120; phi_t0++) { - gSaveContext.save.roomInf[phi_t0][0] = gSaveContext.cycleSceneFlags[phi_t0].chest; - gSaveContext.save.roomInf[phi_t0][1] = gSaveContext.cycleSceneFlags[phi_t0].swch0; - gSaveContext.save.roomInf[phi_t0][2] = gSaveContext.cycleSceneFlags[phi_t0].swch1; - gSaveContext.save.roomInf[phi_t0][3] = gSaveContext.cycleSceneFlags[phi_t0].clearedRoom; - gSaveContext.save.roomInf[phi_t0][4] = gSaveContext.cycleSceneFlags[phi_t0].collectible; + // i is used to store sceneId + for (i = 0; i < 120; i++) { + gSaveContext.save.roomInf[i][0] = gSaveContext.cycleSceneFlags[i].chest; + gSaveContext.save.roomInf[i][1] = gSaveContext.cycleSceneFlags[i].swch0; + gSaveContext.save.roomInf[i][2] = gSaveContext.cycleSceneFlags[i].swch1; + gSaveContext.save.roomInf[i][3] = gSaveContext.cycleSceneFlags[i].clearedRoom; + gSaveContext.save.roomInf[i][4] = gSaveContext.cycleSceneFlags[i].collectible; } } @@ -2367,12 +2351,24 @@ s16 D_801BFAF8[] = { void Interface_DrawItemButtons(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s") -s16 D_801BFAFC[] = { 30, 24, 24, 24 }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117A20.s") +void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16 button) { + static s16 D_801BFAFC[] = { 30, 24, 24, 24 }; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gDPLoadTextureBlock(OVERLAY_DISP++, texture, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPTextureRectangle(OVERLAY_DISP++, D_801BF9D4[button] << 2, D_801BF9DC[button] << 2, + (D_801BF9D4[button] + D_801BFAFC[button]) << 2, (D_801BF9DC[button] + D_801BFAFC[button]) << 2, + G_TX_RENDERTILE, 0, 0, D_801BF9BC[button] << 1, D_801BF9BC[button] << 1); + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117BD0.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s") void func_80118084(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s") @@ -2380,8 +2376,65 @@ void func_80118084(GlobalContext* globalCtx); void func_80118890(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118890.s") -void func_80118BA4(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118BA4.s") +void func_80118BA4(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 aAlpha; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + aAlpha = interfaceCtx->aAlpha; + + if (aAlpha > 100) { + aAlpha = 100; + } + + func_8012C8D4(globalCtx->state.gfxCtx); + + func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x19, gGameInfo->data[0x55F] + 0x46, 192, 237); + + gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + + Matrix_InsertTranslation(0.0f, 0.0f, -38.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_RotateStateAroundXAxis(interfaceCtx->unk_218 / 10000.0f); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPPipeSync(OVERLAY_DISP++); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, aAlpha); + + OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); + + gDPPipeSync(OVERLAY_DISP++); + func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x17, gGameInfo->data[0x55F] + 0x44, 190, 235); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); + gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + + gDPPipeSync(OVERLAY_DISP++); + func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x17, gGameInfo->data[0x55F] + 0x44, 190, 235); + gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); + + Matrix_InsertTranslation(0.0f, 0.0f, D_801BF9CC[gSaveContext.options.language] / 10.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_RotateStateAroundXAxis(interfaceCtx->unk_218 / 10000.0f); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[8], 4, 0); + + if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, 0x30, 0x10, 0); + } else { + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x180, 3, 0x30, 0x10, 0); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} s16 D_801BFB14[] = { 255, 100, 255, 0 }; s16 D_801BFB1C[] = { 0, 100, 255, 0 }; @@ -2480,7 +2533,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } else if (D_801BFB34 != 0) { D_801BFB34--; } else if (D_801BFB30 != 0) { - TIMED_STEP_UP_TO(D_801BFB2C, 255, D_801BFB30, colorStep); + colorStep = ABS_ALT(D_801BFB2C - 255) / D_801BFB30; + D_801BFB2C += colorStep; if (D_801BFB2C >= 255) { D_801BFB2C = 255; @@ -3166,14 +3220,14 @@ s16 D_801BFCFC[] = { s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; -void func_8011CA64(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") +void Interface_DrawTimers(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") void func_8011E3B4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") -void func_8011E730(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") +void Interface_DrawMinigame(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigame.s") // rupeeDigitsFirst s16 D_801BFD1C[] = { 1, 0, 0, 0 }; @@ -3500,8 +3554,8 @@ void Interface_Draw(GlobalContext* globalCtx) { Interface_DrawMinigamePerfect(globalCtx); } - func_8011E730(globalCtx); - func_8011CA64(globalCtx); + Interface_DrawMinigame(globalCtx); + Interface_DrawTimers(globalCtx); } // PictoBox @@ -3974,7 +4028,7 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.timerX[5] = 115; gSaveContext.timerY[5] = 80; D_801BF8E0 = 1; - gSaveContext.unk_3DD7[5] = 0; + gSaveContext.timersNoTimeLimit[5] = false; } } } diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 0244e66c7..a4afa9204 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -58,7 +58,7 @@ void func_80A41D70(EnTest4* this, GlobalContext* globalCtx) { this->unk_146 = gSaveContext.save.time += CLOCK_TIME_MINUTE; } - func_8010EE74(globalCtx, CURRENT_DAY); + Interface_NewDay(globalCtx, CURRENT_DAY); D_801BDBC8 = 0xFE; func_800FB758(globalCtx); func_800FEAF4(&globalCtx->envCtx); @@ -94,7 +94,7 @@ void func_80A41FA4(EnTest4* this, GlobalContext* globalCtx) { } else if ((sCutscenes[this->unk_144] < 0) || ((globalCtx->actorCtx.unk5 & 2) != 0)) { Sram_IncrementDay(); gSaveContext.save.time = CLOCK_TIME(6, 0); - func_8010EE74(globalCtx, CURRENT_DAY); + Interface_NewDay(globalCtx, CURRENT_DAY); func_80151A68(globalCtx, sDayMessages2[CURRENT_DAY - 1]); D_801BDBC8 = 0xFE; func_800FB758(globalCtx); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index a0463e658..43d8eb4d4 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2099,7 +2099,7 @@ 0x8010EB50:("func_8010EB50",), 0x8010EBA0:("func_8010EBA0",), 0x8010EC54:("func_8010EC54",), - 0x8010EE74:("func_8010EE74",), + 0x8010EE74:("Interface_NewDay",), 0x8010EF68:("Interface_ChangeAlpha",), 0x8010EF9C:("func_8010EF9C",), 0x8010F0D4:("func_8010F0D4",), @@ -2144,8 +2144,8 @@ 0x80116FD8:("func_80116FD8",), 0x801170B8:("func_801170B8",), 0x80117100:("Interface_DrawItemButtons",), - 0x80117A20:("func_80117A20",), - 0x80117BD0:("func_80117BD0",), + 0x80117A20:("Interface_DrawItemIconTexture",), + 0x80117BD0:("Interface_DrawAmmoCount",), 0x80118084:("func_80118084",), 0x80118890:("func_80118890",), 0x80118BA4:("func_80118BA4",), @@ -2158,9 +2158,9 @@ 0x8011C4C4:("Interface_DrawMinigamePerfect",), 0x8011C808:("func_8011C808",), 0x8011C898:("func_8011C898",), - 0x8011CA64:("func_8011CA64",), + 0x8011CA64:("Interface_DrawTimers",), 0x8011E3B4:("func_8011E3B4",), - 0x8011E730:("func_8011E730",), + 0x8011E730:("Interface_DrawMinigame",), 0x8011F0E0:("Interface_Draw",), 0x80120F90:("Interface_LoadStory",), 0x80121064:("Interface_AllocStory",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 7b12671ec..60e8afe3f 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1613,7 +1613,7 @@ asm/non_matchings/code/z_parameter/func_8010EA9C.s,func_8010EA9C,0x8010EA9C,0x2D asm/non_matchings/code/z_parameter/func_8010EB50.s,func_8010EB50,0x8010EB50,0x14 asm/non_matchings/code/z_parameter/func_8010EBA0.s,func_8010EBA0,0x8010EBA0,0x2D asm/non_matchings/code/z_parameter/func_8010EC54.s,func_8010EC54,0x8010EC54,0x88 -asm/non_matchings/code/z_parameter/func_8010EE74.s,func_8010EE74,0x8010EE74,0x3D +asm/non_matchings/code/z_parameter/Interface_NewDay.s,Interface_NewDay,0x8010EE74,0x3D asm/non_matchings/code/z_parameter/Interface_ChangeAlpha.s,Interface_ChangeAlpha,0x8010EF68,0xD asm/non_matchings/code/z_parameter/func_8010EF9C.s,func_8010EF9C,0x8010EF9C,0x4E asm/non_matchings/code/z_parameter/func_8010F0D4.s,func_8010F0D4,0x8010F0D4,0x35 @@ -1658,8 +1658,8 @@ asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s,Interface_DrawMagicB asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 -asm/non_matchings/code/z_parameter/func_80117A20.s,func_80117A20,0x80117A20,0x6C -asm/non_matchings/code/z_parameter/func_80117BD0.s,func_80117BD0,0x80117BD0,0x12D +asm/non_matchings/code/z_parameter/Interface_DrawItemIconTexture.s,Interface_DrawItemIconTexture,0x80117A20,0x6C +asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s,Interface_DrawAmmoCount,0x80117BD0,0x12D asm/non_matchings/code/z_parameter/func_80118084.s,func_80118084,0x80118084,0x203 asm/non_matchings/code/z_parameter/func_80118890.s,func_80118890,0x80118890,0xC5 asm/non_matchings/code/z_parameter/func_80118BA4.s,func_80118BA4,0x80118BA4,0x123 @@ -1672,9 +1672,9 @@ asm/non_matchings/code/z_parameter/func_8011BF70.s,func_8011BF70,0x8011BF70,0x15 asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_DrawMinigamePerfect,0x8011C4C4,0xD1 asm/non_matchings/code/z_parameter/func_8011C808.s,func_8011C808,0x8011C808,0x24 asm/non_matchings/code/z_parameter/func_8011C898.s,func_8011C898,0x8011C898,0x73 -asm/non_matchings/code/z_parameter/func_8011CA64.s,func_8011CA64,0x8011CA64,0x654 +asm/non_matchings/code/z_parameter/Interface_DrawTimers.s,Interface_DrawTimers,0x8011CA64,0x654 asm/non_matchings/code/z_parameter/func_8011E3B4.s,func_8011E3B4,0x8011E3B4,0xDF -asm/non_matchings/code/z_parameter/func_8011E730.s,func_8011E730,0x8011E730,0x26C +asm/non_matchings/code/z_parameter/Interface_DrawMinigame.s,Interface_DrawMinigame,0x8011E730,0x26C asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x7AC asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x80120F90,0x35 asm/non_matchings/code/z_parameter/Interface_AllocStory.s,Interface_AllocStory,0x80121064,0x1F From 7d1aed3ae0dc5282f589eccb8a0a6fd24b8e962e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 30 Dec 2021 13:27:35 +1100 Subject: [PATCH 032/160] More docs & cleanup --- include/functions.h | 4 +- include/macros.h | 20 +++++- include/z64.h | 2 +- src/code/z_parameter.c | 128 ++++++++++++++------------------- tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 6 files changed, 78 insertions(+), 84 deletions(-) diff --git a/include/functions.h b/include/functions.h index bc14b3440..7bb86dacb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2065,9 +2065,9 @@ void Inventory_DeleteItem(s16 arg0, s16 arg1); // void func_80114CA0(void); s32 Inventory_HasEmptyBottle(void); s32 Inventory_HasItemInBottle(u8 itemId); -// void func_80114FD0(void); +// void Inventory_UpdateBottleItem(void); // void func_80115130(void); -// void func_801152B8(void); +// void Inventory_UpdateItem(void); // void func_801153C8(void); // void Interface_LoadActionLabel(void); void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); diff --git a/include/macros.h b/include/macros.h index 464e460d5..9333185d6 100644 --- a/include/macros.h +++ b/include/macros.h @@ -66,8 +66,24 @@ #define INV_CONTENT_VOID(item) ((void)0, gSaveContext.save.inventory.items)[SLOT(item)] #define CUR_FORM ((gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.save.playerForm) -#define CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.buttonItems[CUR_FORM][btn] : gSaveContext.save.equips.buttonItems[0][btn])) -#define CUR_FORM_CBTN_SLOT(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.cButtonSlots[CUR_FORM][btn] : gSaveContext.save.equips.cButtonSlots[0][btn])) +#define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.buttonItems[CUR_FORM][btn] : gSaveContext.save.equips.buttonItems[0][btn])) +#define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == 0 ? gSaveContext.save.equips.cButtonSlots[CUR_FORM][btn] : gSaveContext.save.equips.cButtonSlots[0][btn])) + +#define SET_CUR_FORM_BTN_ITEM(btn, item) \ + if ((btn) == 0) { \ + gSaveContext.save.equips.buttonItems[CUR_FORM][btn] = (item); \ + } else { \ + gSaveContext.save.equips.buttonItems[0][btn] = (item); \ + } + +#define SET_CUR_FORM_BTN_SLOT(btn, slot) \ + if ((btn) == 0) { \ + gSaveContext.save.equips.cButtonSlots[CUR_FORM][btn] = (slot); \ + } else { \ + gSaveContext.save.equips.cButtonSlots[0][btn] = (slot); \ + } + + #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]) diff --git a/include/z64.h b/include/z64.h index bb78ace49..e9bc5676e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -569,7 +569,7 @@ typedef struct { /* 0x258 */ s16 unk_258; /* 0x25A */ s16 unk_25A; /* 0x25C */ u16 unk_25C; - /* 0x25E */ u16 unk_25E[5]; // ItemId + /* 0x25E */ u16 cursorItem[5]; /* 0x268 */ u16 unk_268[5]; /* 0x272 */ u16 equipTargetItem; /* 0x274 */ u16 equipTargetSlot; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 64e1c6a4f..926aa4323 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -542,12 +542,12 @@ void func_8010EB50(s32 arg0) { } } -void func_8010EBA0(s16 arg0, s16 arg1) { - gSaveContext.unk_101A[arg1] = 1; - gSaveContext.unk_1080[arg1] = arg0 * 100; - gSaveContext.unk_1050[arg1] = gSaveContext.unk_1080[arg1]; - gSaveContext.unk_1020[arg1] = osGetTime(); - gSaveContext.unk_10B0[arg1] = 0; +void func_8010EBA0(s16 timer, s16 timerId) { + gSaveContext.unk_101A[timerId] = 1; + gSaveContext.unk_1080[timerId] = timer * 100; + gSaveContext.unk_1050[timerId] = gSaveContext.unk_1080[timerId]; + gSaveContext.unk_1020[timerId] = osGetTime(); + gSaveContext.unk_10B0[timerId] = 0; D_801BF8F0 = 0; } @@ -1399,16 +1399,15 @@ void Interface_InitMinigame(GlobalContext* globalCtx) { interfaceCtx->hbaAmmo = 20; } -void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1) { +void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 btn) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - u32 new_var = arg1; - func_80178E3C(_icon_item_static_testSegmentRomStart, CUR_FORM_BTN_ITEM(new_var), - &interfaceCtx->iconItemSegment[new_var * 0x1000], 0x1000); + func_80178E3C(_icon_item_static_testSegmentRomStart, GET_CUR_FORM_BTN_ITEM(btn), + &interfaceCtx->iconItemSegment[(u32)btn * 0x1000], 0x1000); } -void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 arg1) { - Interface_LoadItemIconImpl(globalCtx, arg1); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 btn) { + Interface_LoadItemIconImpl(globalCtx, btn); } void func_80112C0C(GlobalContext* globalCtx, u16 flag) { @@ -1830,21 +1829,21 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { for (i = 0; i < 6; i++) { if (gSaveContext.save.inventory.items[slot + i] == 0x12) { if (item == 0x20) { - func_8010EBA0(0x3C, i); + func_8010EBA0(60, i); } if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { gSaveContext.save.equips.buttonItems[0][1] = item; Interface_LoadItemIconImpl(globalCtx, 1); - gSaveContext.buttonStatus[1] = 0; + gSaveContext.buttonStatus[1] = BTN_ENABLED; } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { gSaveContext.save.equips.buttonItems[0][2] = item; Interface_LoadItemIconImpl(globalCtx, 2); - gSaveContext.buttonStatus[2] = 0; + gSaveContext.buttonStatus[2] = BTN_ENABLED; } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { gSaveContext.save.equips.buttonItems[0][3] = item; Interface_LoadItemIconImpl(globalCtx, 3); - gSaveContext.buttonStatus[3] = 0; + gSaveContext.buttonStatus[3] = BTN_ENABLED; } gSaveContext.save.inventory.items[slot] = item; @@ -1902,42 +1901,26 @@ s32 Item_CheckObtainability(u8 item) { return Item_CheckObtainabilityImpl(item); } -void Inventory_DeleteItem(s16 itemId, s16 invSlot) { - s16 i; +void Inventory_DeleteItem(s16 item, s16 invSlot) { + s16 btn; gSaveContext.save.inventory.items[invSlot] = ITEM_NONE; - for (i = 1; i < 4; i++) { - if (itemId == CUR_FORM_BTN_ITEM(i)) { - if (i == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][i] = ITEM_NONE; - } else { - gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE; - } - if (i == 0) { - gSaveContext.save.equips.cButtonSlots[CUR_FORM][i] = SLOT_NONE; - } else { - gSaveContext.save.equips.cButtonSlots[0][i] = SLOT_NONE; - } + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == item) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); + SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); } } } -void Inventory_UnequipItem(s16 itemId) { - s16 i; +void Inventory_UnequipItem(s16 item) { + s16 btn; - for (i = 1; i < 4; i++) { - if (itemId == CUR_FORM_BTN_ITEM(i)) { - if (i == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][i] = ITEM_NONE; - } else { - gSaveContext.save.equips.buttonItems[0][i] = ITEM_NONE; - } - if (i == 0) { - gSaveContext.save.equips.cButtonSlots[CUR_FORM][i] = SLOT_NONE; - } else { - gSaveContext.save.equips.cButtonSlots[0][i] = SLOT_NONE; - } + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == item) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); + SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); } } } @@ -1950,13 +1933,8 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { gSaveContext.save.inventory.items[i] = newItem; for (i = 1; i < 4; i++) { - if (oldItem == CUR_FORM_BTN_ITEM(i)) { - if (i == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][i] = newItem; - } else { - gSaveContext.save.equips.buttonItems[0][i] = newItem; - } - + if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) { + SET_CUR_FORM_BTN_ITEM(i, newItem); Interface_LoadItemIconImpl(globalCtx, i); break; } @@ -1969,6 +1947,7 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") + s32 Inventory_HasEmptyBottle(void) { s32 slot; @@ -1980,46 +1959,45 @@ s32 Inventory_HasEmptyBottle(void) { return false; } -s32 Inventory_HasItemInBottle(u8 itemId) { +s32 Inventory_HasItemInBottle(u8 item) { s32 slot; for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { - if (gSaveContext.save.inventory.items[slot] == itemId) { + if (gSaveContext.save.inventory.items[slot] == item) { return true; } } return false; } -void func_80114FD0(GlobalContext* globalCtx, u8 item, u8 arg2) { - gSaveContext.save.inventory.items[CUR_FORM_CBTN_SLOT(arg2)] = item; - if (arg2 == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][arg2] = item; - } else { - gSaveContext.save.equips.buttonItems[0][arg2] = item; - } - Interface_LoadItemIconImpl(globalCtx, arg2); - globalCtx->pauseCtx.unk_25E[0] = item; - gSaveContext.buttonStatus[arg2] = 0; +void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { + gSaveContext.save.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item; + SET_CUR_FORM_BTN_ITEM(btn, item); + + Interface_LoadItemIconImpl(globalCtx, btn); + + globalCtx->pauseCtx.cursorItem[0] = item; + gSaveContext.buttonStatus[btn] = BTN_ENABLED; + if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(0x3C, CUR_FORM_CBTN_SLOT(arg2) - 0x12); + func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); } } #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115130.s") -void func_801152B8(GlobalContext* globalCtx, s16 slot, s16 item) { - s16 i; +/** + * Only used to equip spring water when hot sprint water timer runs out + */ +void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item) { + s16 btn; gSaveContext.save.inventory.items[slot] = item; - for (i = 1; i < 4; i++) { - if (slot == CUR_FORM_CBTN_SLOT(i)) { - if (i == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][i] = item; - } else { - gSaveContext.save.equips.buttonItems[0][i] = item; - } - Interface_LoadItemIconImpl(globalCtx, i); + + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_SLOT(btn) == slot) { + SET_CUR_FORM_BTN_ITEM(btn, item); + Interface_LoadItemIconImpl(globalCtx, btn); } } } @@ -3770,7 +3748,7 @@ void Interface_Update(GlobalContext* globalCtx) { func_8010EF9C(globalCtx, alpha1); - if (gSaveContext.buttonStatus[5] == 0xFF) { + if (gSaveContext.buttonStatus[5] == BTN_DISABLED) { if (interfaceCtx->startAlpha != 70) { interfaceCtx->startAlpha = 70; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 43d8eb4d4..a70936687 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2121,9 +2121,9 @@ 0x80114CA0:("func_80114CA0",), 0x80114E90:("Inventory_HasEmptyBottle",), 0x80114F2C:("Inventory_HasItemInBottle",), - 0x80114FD0:("func_80114FD0",), + 0x80114FD0:("Inventory_UpdateBottleItem",), 0x80115130:("func_80115130",), - 0x801152B8:("func_801152B8",), + 0x801152B8:("Inventory_UpdateItem",), 0x801153C8:("func_801153C8",), 0x80115428:("Interface_LoadActionLabel",), 0x8011552C:("Interface_SetDoAction",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 60e8afe3f..2c8d24eae 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1635,9 +1635,9 @@ asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s,Inventory_ReplaceItem asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s,Inventory_HasEmptyBottle,0x80114E90,0x27 asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s,Inventory_HasItemInBottle,0x80114F2C,0x29 -asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58 +asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s,Inventory_UpdateBottleItem,0x80114FD0,0x58 asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 -asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44 +asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s,Inventory_UpdateItem,0x801152B8,0x44 asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 asm/non_matchings/code/z_parameter/Interface_SetDoAction.s,Interface_SetDoAction,0x8011552C,0x22 From d923f60479b520ec4d43827d2554cc49b18c27b3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 30 Dec 2021 13:40:35 +1100 Subject: [PATCH 033/160] Another two functions named --- include/functions.h | 4 ++-- include/macros.h | 2 -- src/code/z_parameter.c | 12 ++++++------ tools/disasm/functions.txt | 4 ++-- tools/sizes/code_functions.csv | 4 ++-- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/include/functions.h b/include/functions.h index 7bb86dacb..4dac94871 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2103,8 +2103,8 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); void func_8011C808(GlobalContext* globalCtx); // void func_8011C898(void); // void Interface_DrawTimers(void); -// void func_8011E3B4(void); -// void Interface_DrawMinigame(void); +// void Interface_UpdateTimers(void); +// void Interface_DrawMinigameIcons(void); // void Interface_Draw(UNK_TYPE4 ctxt); // void Interface_LoadStory(void); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); diff --git a/include/macros.h b/include/macros.h index 9333185d6..7b5b1305b 100644 --- a/include/macros.h +++ b/include/macros.h @@ -83,8 +83,6 @@ gSaveContext.save.equips.cButtonSlots[0][btn] = (slot); \ } - - #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]) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 926aa4323..4d9216453 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3201,11 +3201,11 @@ s16 D_801BFD0C[] = { void Interface_DrawTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") -void func_8011E3B4(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") +void Interface_UpdateTimers(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s") -void Interface_DrawMinigame(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigame.s") +void Interface_DrawMinigameIcons(GlobalContext* globalCtx); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s") // rupeeDigitsFirst s16 D_801BFD1C[] = { 1, 0, 0, 0 }; @@ -3532,7 +3532,7 @@ void Interface_Draw(GlobalContext* globalCtx) { Interface_DrawMinigamePerfect(globalCtx); } - Interface_DrawMinigame(globalCtx); + Interface_DrawMinigameIcons(globalCtx); Interface_DrawTimers(globalCtx); } @@ -4088,7 +4088,7 @@ void Interface_Update(GlobalContext* globalCtx) { } } - func_8011E3B4(globalCtx); + Interface_UpdateTimers(globalCtx); // Update Grandma's Story if (interfaceCtx->unk_31A != 0) { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index a70936687..862391454 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2159,8 +2159,8 @@ 0x8011C808:("func_8011C808",), 0x8011C898:("func_8011C898",), 0x8011CA64:("Interface_DrawTimers",), - 0x8011E3B4:("func_8011E3B4",), - 0x8011E730:("Interface_DrawMinigame",), + 0x8011E3B4:("Interface_UpdateTimers",), + 0x8011E730:("Interface_DrawMinigameIcons",), 0x8011F0E0:("Interface_Draw",), 0x80120F90:("Interface_LoadStory",), 0x80121064:("Interface_AllocStory",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 2c8d24eae..186b55038 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1673,8 +1673,8 @@ asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_Dra asm/non_matchings/code/z_parameter/func_8011C808.s,func_8011C808,0x8011C808,0x24 asm/non_matchings/code/z_parameter/func_8011C898.s,func_8011C898,0x8011C898,0x73 asm/non_matchings/code/z_parameter/Interface_DrawTimers.s,Interface_DrawTimers,0x8011CA64,0x654 -asm/non_matchings/code/z_parameter/func_8011E3B4.s,func_8011E3B4,0x8011E3B4,0xDF -asm/non_matchings/code/z_parameter/Interface_DrawMinigame.s,Interface_DrawMinigame,0x8011E730,0x26C +asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s,Interface_UpdateTimers,0x8011E3B4,0xDF +asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s,Interface_DrawMinigameIcons,0x8011E730,0x26C asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x7AC asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x80120F90,0x35 asm/non_matchings/code/z_parameter/Interface_AllocStory.s,Interface_AllocStory,0x80121064,0x1F From 542bbfdeea2b4647ad82ad5b9b2c733a4be29b46 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 30 Dec 2021 13:50:02 +1100 Subject: [PATCH 034/160] Some minigame docs --- include/functions.h | 2 +- include/z64.h | 4 +-- src/code/z_parameter.c | 25 +++++++++---------- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 4 +-- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 8 +++--- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 7 files changed, 23 insertions(+), 24 deletions(-) diff --git a/include/functions.h b/include/functions.h index 4dac94871..2fef88b66 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2095,7 +2095,7 @@ void func_80115D5C(GameState* gamestate); // void func_80118BA4(void); // void func_80119030(void); // void Interface_DrawClock(void); -void func_8011B4E0(GlobalContext* globalCtx, s16 arg1); +void Interface_SetPerfectMinigame(GlobalContext* globalCtx, s16 rewardType); // void func_8011B5C0(void); // void func_8011B9E0(void); // void func_8011BF70(void); diff --git a/include/z64.h b/include/z64.h index e9bc5676e..de053cecb 100644 --- a/include/z64.h +++ b/include/z64.h @@ -711,8 +711,8 @@ typedef struct { /* 0x280 */ u8 unk_280; /* 0x282 */ s16 unk_282; /* 0x284 */ s16 unk_284; - /* 0x286 */ s16 unk_286; - /* 0x288 */ s16 unk_288; + /* 0x286 */ s16 isMinigamePerfect; + /* 0x288 */ s16 minigameRewardType; /* 0x28A */ s16 unk_28A[8]; /* 0x29A */ u16 unk_29A[8]; /* 0x2AA */ s16 unk_2AA[8]; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 4d9216453..dd6db1a54 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1947,7 +1947,6 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") - s32 Inventory_HasEmptyBottle(void) { s32 slot; @@ -1980,7 +1979,7 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { gSaveContext.buttonStatus[btn] = BTN_ENABLED; if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); + func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); } } @@ -2947,17 +2946,17 @@ void Interface_DrawClock(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawClock.s") #endif -void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { +void Interface_SetPerfectMinigame(GlobalContext* globalCtx, s16 rewardType) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 i; - interfaceCtx->unk_286 = 1; - interfaceCtx->unk_288 = arg1; + interfaceCtx->isMinigamePerfect = true; + interfaceCtx->minigameRewardType = rewardType; interfaceCtx->unk_2FC[0] = 255; interfaceCtx->unk_2FC[1] = 165; interfaceCtx->unk_2FC[2] = 55; interfaceCtx->unk_2FC[3] = 255; - interfaceCtx->unk_30A = 0x14; + interfaceCtx->unk_30A = 20; interfaceCtx->unk_308 = 0; interfaceCtx->unk_304 = 1; interfaceCtx->unk_30C = 0; @@ -2966,7 +2965,7 @@ void func_8011B4E0(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_2AA[i] = 0; interfaceCtx->unk_29A[i] = 0; interfaceCtx->unk_28A[i] = interfaceCtx->unk_2AA[i]; - if (interfaceCtx->unk_288 == 1) { + if (interfaceCtx->minigameRewardType == 1) { interfaceCtx->unk_2BC[i] = 140.0f; interfaceCtx->unk_2DC[i] = 100.0f; } else { @@ -3062,7 +3061,7 @@ void func_8011B5C0(GlobalContext* globalCtx) { } if (count == 8) { - interfaceCtx->unk_286 = 0; + interfaceCtx->isMinigamePerfect = false; } } @@ -3528,7 +3527,7 @@ void Interface_Draw(GlobalContext* globalCtx) { } } - if (interfaceCtx->unk_286 != 0) { + if (interfaceCtx->isMinigamePerfect != 0) { Interface_DrawMinigamePerfect(globalCtx); } @@ -3854,12 +3853,12 @@ void Interface_Update(GlobalContext* globalCtx) { } if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { - if (interfaceCtx->unk_286 != 0) { - if (interfaceCtx->unk_288 == 1) { + if (interfaceCtx->isMinigamePerfect) { + if (interfaceCtx->minigameRewardType == 1) { func_8011B5C0(globalCtx); - } else if (interfaceCtx->unk_288 == 2) { + } else if (interfaceCtx->minigameRewardType == 2) { func_8011B9E0(globalCtx); - } else if (interfaceCtx->unk_288 == 3) { + } else if (interfaceCtx->minigameRewardType == 3) { func_8011BF70(globalCtx); } } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index f2ebc0668..bd9fd446f 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -806,7 +806,7 @@ void func_80962F4C(EnFu* this, GlobalContext* globalCtx) { gSaveContext.unk_3DE0[4] = 0; gSaveContext.unk_3DD0[4] = 5; func_801A3098(NA_BGM_GET_ITEM | 0x900); - func_8011B4E0(globalCtx, 1); + Interface_SetPerfectMinigame(globalCtx, 1); this->unk_54A = 3; func_809632D0(this); } @@ -853,7 +853,7 @@ void func_80963350(EnFu* this, GlobalContext* globalCtx) { D_80964C24 = 1; } - if ((this->unk_54A == 3) && (globalCtx->interfaceCtx.unk_286 == 0)) { + if ((this->unk_54A == 3) && !globalCtx->interfaceCtx.isMinigamePerfect) { this->unk_54A = 2; D_80964C24 = 1; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index b0c699c9b..e97a29797 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -966,7 +966,7 @@ void func_809C81D0(EnSyatekiMan* this, GlobalContext* globalCtx) { func_801A2C20(); this->unk_26A = 5; if (this->unk_280 == 0x848) { - func_8011B4E0(globalCtx, 2); + Interface_SetPerfectMinigame(globalCtx, 2); gSaveContext.unk_3DD0[1] = 6; this->actionFunc = func_809C8610; } else { @@ -1026,7 +1026,7 @@ void func_809C8610(EnSyatekiMan* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); player->stateFlags1 |= 0x20; - if (globalCtx->interfaceCtx.unk_286 == 0) { + if (!globalCtx->interfaceCtx.isMinigamePerfect) { if (gSaveContext.unk_3DE0[1] == 0) { gSaveContext.unk_3DE0[1] = 0; gSaveContext.unk_3DD0[1] = 5; @@ -1162,7 +1162,7 @@ void func_809C898C(EnSyatekiMan* this, GlobalContext* globalCtx) { this->actionFunc = func_809C8BF0; if (this->unk_280 == 50) { func_801A3098(NA_BGM_GET_ITEM | 0x900); - func_8011B4E0(globalCtx, 1); + Interface_SetPerfectMinigame(globalCtx, 1); } } } @@ -1171,7 +1171,7 @@ void func_809C898C(EnSyatekiMan* this, GlobalContext* globalCtx) { void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) { if (this->unk_26A == 1) { this->unk_190 = 0; - if ((this->unk_270 <= 0) && (globalCtx->interfaceCtx.unk_286 == 0)) { + if ((this->unk_270 <= 0) && !globalCtx->interfaceCtx.isMinigamePerfect) { Actor_SetAllChestFlag(globalCtx, this->unk_280); this->unk_270 = 15; if (((s32)(gSaveContext.save.roomInf[127][6] & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 862391454..64915df39 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2151,7 +2151,7 @@ 0x80118BA4:("func_80118BA4",), 0x80119030:("func_80119030",), 0x80119610:("Interface_DrawClock",), - 0x8011B4E0:("func_8011B4E0",), + 0x8011B4E0:("Interface_SetPerfectMinigame",), 0x8011B5C0:("func_8011B5C0",), 0x8011B9E0:("func_8011B9E0",), 0x8011BF70:("func_8011BF70",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 186b55038..02824b114 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1665,7 +1665,7 @@ asm/non_matchings/code/z_parameter/func_80118890.s,func_80118890,0x80118890,0xC5 asm/non_matchings/code/z_parameter/func_80118BA4.s,func_80118BA4,0x80118BA4,0x123 asm/non_matchings/code/z_parameter/func_80119030.s,func_80119030,0x80119030,0x178 asm/non_matchings/code/z_parameter/Interface_DrawClock.s,Interface_DrawClock,0x80119610,0x7B4 -asm/non_matchings/code/z_parameter/func_8011B4E0.s,func_8011B4E0,0x8011B4E0,0x38 +asm/non_matchings/code/z_parameter/Interface_SetPerfectMinigame.s,Interface_SetPerfectMinigame,0x8011B4E0,0x38 asm/non_matchings/code/z_parameter/func_8011B5C0.s,func_8011B5C0,0x8011B5C0,0x108 asm/non_matchings/code/z_parameter/func_8011B9E0.s,func_8011B9E0,0x8011B9E0,0x164 asm/non_matchings/code/z_parameter/func_8011BF70.s,func_8011BF70,0x8011BF70,0x155 From 8421222792ff4d461a4cfabb9525e3fd515732cd Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 4 Feb 2022 23:34:11 +1100 Subject: [PATCH 035/160] bss fix --- include/variables.h | 1 + src/code/graph.c | 1 + 2 files changed, 2 insertions(+) diff --git a/include/variables.h b/include/variables.h index a0acd9325..77a97c131 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3343,6 +3343,7 @@ extern FaultAddrConvClient sGraphFaultAddrConvClient; extern FaultClient sGraphFaultClient; extern GfxMasterList* gGfxMasterDL; extern CfbInfo sGraphCfbInfos[3]; +extern OSTime sGraphTaskStartTime; extern OSMesgQueue sSiIntMsgQ; extern OSMesg sSiIntMsgBuf[1]; extern u32 gSegments[NUM_SEGMENTS]; diff --git a/src/code/graph.c b/src/code/graph.c index 04ab72057..8059d1f63 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "system_malloc.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" From 0e023a4682dec70e3d50155b8b892eedfc06a2c0 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 5 Feb 2022 14:42:00 +1100 Subject: [PATCH 036/160] fix --- src/code/z_parameter.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c959c4b9a..94fa6c53b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -603,11 +603,11 @@ void Interface_NewDay(GlobalContext* globalCtx, s32 day) { // i is used to store sceneId for (i = 0; i < 120; i++) { - gSaveContext.cycleSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest; - gSaveContext.cycleSceneFlags[i].swch0 = gSaveContext.cycleSceneFlags[i].swch0; - gSaveContext.cycleSceneFlags[i].swch1 = gSaveContext.cycleSceneFlags[i].swch1; - gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom; - gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible; + gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest; + gSaveContext.save.permanentSceneFlags[i].swch0 = gSaveContext.cycleSceneFlags[i].swch0; + gSaveContext.save.permanentSceneFlags[i].swch1 = gSaveContext.cycleSceneFlags[i].swch1; + gSaveContext.save.permanentSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom; + gSaveContext.save.permanentSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible; } } From 4bdc8d82009512d235e79301f7646fee32e08199 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 27 Mar 2022 21:01:25 +1100 Subject: [PATCH 037/160] Match func_8011B9E0 --- src/code/z_parameter.c | 135 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 128 insertions(+), 7 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 94fa6c53b..a188b7647 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2484,7 +2484,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { f32 temp_f0; f32 temp_f14; u32 temp_a1_7; - s32 phi_v1_2; + s32 phi_v1_2; // Unused s16 currentHour; u16 time; f32 new_var1; @@ -3071,13 +3071,134 @@ s16 D_801BFC6C[] = { s16 D_801BFC7C[] = { 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; -s32 D_801BFC8C[] = { - 0x00FF00FF, - 0x00FF00FF, - 0x00A50037, +s16 D_801BFC8C[2][3] = { + { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xA5, 0x37 }, }; -void func_8011B9E0(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") +void func_8011B9E0(GlobalContext* globalCtx) { + s16 i; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 stepVar1; + s16 stepVar2; + s16 stepVar3; + s16 new_var; + s16 j = 0; // unused incrementer + + for (i = 0; i < interfaceCtx->unk_304; i++, j += 4) { + if (interfaceCtx->unk_28A[i] == 1) { + interfaceCtx->unk_29A[i] = i << 0xD; + interfaceCtx->unk_2BC[i] = 200.0f; + interfaceCtx->unk_2DC[i] = 200.0f; + interfaceCtx->unk_2AA[i] = 0; + interfaceCtx->unk_28A[i] = 2; + } else if (interfaceCtx->unk_28A[i] == 2) { + interfaceCtx->unk_29A[i] -= 0x800; + interfaceCtx->unk_2BC[i] -= 8.0f; + interfaceCtx->unk_2DC[i] -= 8.0f; + if (interfaceCtx->unk_2BC[i] <= 0.0f) { + interfaceCtx->unk_2DC[i] = 0.0f; + interfaceCtx->unk_2BC[i] = 0.0f; + interfaceCtx->unk_28A[i] = 3; + if (i == 7) { + interfaceCtx->unk_30A = 5; + interfaceCtx->unk_28A[7] = 4; + interfaceCtx->unk_28A[6] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[5] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[4] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[3] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[2] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[1] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[0] = interfaceCtx->unk_28A[7]; + } + } + } else if (interfaceCtx->unk_28A[i] == 4) { + + stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC6C[i]) / interfaceCtx->unk_30A; + if (interfaceCtx->unk_2AA[i] >= D_801BFC6C[i]) { + interfaceCtx->unk_2AA[i] -= stepVar1; + } else { + interfaceCtx->unk_2AA[i] += stepVar1; + } + } else if (interfaceCtx->unk_28A[i] == 6) { + + stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC7C[i]) / interfaceCtx->unk_30A; + if (interfaceCtx->unk_2AA[i] >= D_801BFC7C[i]) { + interfaceCtx->unk_2AA[i] -= stepVar1; + } else { + interfaceCtx->unk_2AA[i] += stepVar1; + } + } + + } + + if ((interfaceCtx->unk_28A[0] == 4) || (interfaceCtx->unk_28A[0] == 6)) { + if (interfaceCtx->unk_28A[0] == 6) { + new_var = interfaceCtx->unk_2FC[3] / interfaceCtx->unk_30A; + interfaceCtx->unk_2FC[3] -= new_var; + } + interfaceCtx->unk_30A--; + if (interfaceCtx->unk_30A == 0) { + + if (interfaceCtx->unk_28A[0] == 4) { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_28A[i] = 5; + } + interfaceCtx->unk_30A = 20; + } else { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_28A[i] = 0; + } + interfaceCtx->isMinigamePerfect = 0; + } + } + } + + if (interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) { + if (interfaceCtx->unk_304 < 8) { + interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; + interfaceCtx->unk_304++; + } + } + if (interfaceCtx->unk_304 == 8) { + if (interfaceCtx->unk_28A[7] == 5) { + + stepVar1 = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFC8C[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; + stepVar2 = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFC8C[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; + stepVar3 = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFC8C[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + + if (interfaceCtx->unk_2FC[0] >= D_801BFC8C[interfaceCtx->unk_308][0]) { + interfaceCtx->unk_2FC[0] -= stepVar1; + } else { + interfaceCtx->unk_2FC[0] += stepVar1; + } + + if (interfaceCtx->unk_2FC[1] >= D_801BFC8C[interfaceCtx->unk_308][1]) { + interfaceCtx->unk_2FC[1] -= stepVar2; + } else { + interfaceCtx->unk_2FC[1] += stepVar2; + } + + if (interfaceCtx->unk_2FC[2] >= D_801BFC8C[interfaceCtx->unk_308][2]) { + interfaceCtx->unk_2FC[2] -= stepVar3; + } else { + interfaceCtx->unk_2FC[2] += stepVar3; + } + + interfaceCtx->unk_30A--; + if (interfaceCtx->unk_30A == 0) { + interfaceCtx->unk_30A = 20; + interfaceCtx->unk_308 ^= 1; + interfaceCtx->unk_30C++; + if (interfaceCtx->unk_30C == 6) { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_28A[i] = 6; + } + interfaceCtx->unk_30A = 5; + } + } + } + } +} s32 D_801BFC98[] = { 0x004E0036, From 7658c3bffd557ee8f35dfd9c7c756830f0214aa8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 28 Mar 2022 23:32:15 +1100 Subject: [PATCH 038/160] Match func_80115DB4 and func_8011BF70 --- src/code/z_parameter.c | 255 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 238 insertions(+), 17 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a188b7647..785ed3649 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2138,7 +2138,111 @@ void func_80115D5C(GameState* gamestate) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115DB4.s") +s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { + if (gSaveContext.save.playerData.magicAcquired == 0) { + return 0; + } + + if ((gSaveContext.save.playerData.magic - arg1) < 0) { + if (gSaveContext.unk_3F2E != 0) { + play_sound(NA_SE_SY_ERROR); + } + return 0; + } + + switch (arg2) { + case 0: + case 2: + if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { + if (gSaveContext.unk_3F28 == 7) { + globalCtx->actorCtx.unk3 = 0; + } + if (gSaveContext.save.weekEventReg[0xE] & 8) { + arg1 = 0; + } + gSaveContext.unk_3F32 = arg1; + gSaveContext.unk_3F28 = 1; + return 1; + } + + play_sound(NA_SE_SY_ERROR); + return 0; + case 1: + if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { + if (gSaveContext.unk_3F28 == 7) { + globalCtx->actorCtx.unk3 = 0; + } + if (gSaveContext.save.weekEventReg[0xE] & 8) { + arg1 = 0; + } + gSaveContext.unk_3F32 = arg1; + gSaveContext.unk_3F28 = 6; + return 1; + } + + play_sound(NA_SE_SY_ERROR); + return 0; + case 3: + if (gSaveContext.unk_3F28 == 0) { + if (gSaveContext.save.playerData.magic != 0) { + globalCtx->interfaceCtx.unk_258 = 0x50; + gSaveContext.unk_3F28 = 7; + return 1; + } + return 0; + } + if (gSaveContext.unk_3F28 == 7) { + return 1; + } + return 0; + case 4: + if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { + if (gSaveContext.unk_3F28 == 7) { + globalCtx->actorCtx.unk3 = 0; + } + gSaveContext.unk_3F32 = arg1; + gSaveContext.unk_3F28 = 4; + return 1; + } + play_sound(NA_SE_SY_ERROR); + return 0; + case 5: + if (gSaveContext.save.playerData.magic != 0) { + globalCtx->interfaceCtx.unk_258 = 0xA; + gSaveContext.unk_3F28 = 0xA; + return 1; + } + return 0; + case 6: + if (gSaveContext.unk_3F28 == 0) { + if (gSaveContext.save.playerData.magic != 0) { + globalCtx->interfaceCtx.unk_258 = gGameInfo->data[0x569]; + gSaveContext.unk_3F28 = 0xC; + return 1; + } + return 0; + } + if (gSaveContext.unk_3F28 == 0xC) { + return 1; + } + return 0; + case 7: + if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { + if (gSaveContext.unk_3F28 == 7) { + globalCtx->actorCtx.unk3 = 0; + } + if (gSaveContext.save.weekEventReg[0xE] & 8) { + arg1 = 0; + } + gSaveContext.save.playerData.magic -= arg1; + return 1; + } + play_sound(NA_SE_SY_ERROR); + return 0; + default: + return 0; + } +} void func_80116088(void) { if (gSaveContext.unk_3F2A != 0) { @@ -3200,25 +3304,142 @@ void func_8011B9E0(GlobalContext* globalCtx) { } } -s32 D_801BFC98[] = { - 0x004E0036, - 0x001D0005, - 0xFFEEFFD6, - 0xFFBDFFAB, +s16 D_801BFC98[] = { + 0x004E, 0x0036, + 0x001D, 0x0005, + 0xFFEE, 0xFFD6, + 0xFFBD, 0xFFAB, }; -s32 D_801BFCA8[] = { - 0xC000E000, - 0x00002000, - 0xA0008000, - 0x60004000, +u16 D_801BFCA8[] = { + 0xC000, 0xE000, + 0x0000, 0x2000, + 0xA000, 0x8000, + 0x6000, 0x4000, }; -s32 D_801BFCB8[] = { - 0x00FF00FF, - 0x00FF00FF, - 0x00A50037, +s16 D_801BFCB8[2][3] = { + { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xA5, 0x37 }, }; -void func_8011BF70(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") +void func_8011BF70(GlobalContext* globalCtx) { + s16 i; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 stepVar1; + s16 stepVar2; + s16 stepVar3; + s16 stepVar4; + s16 j = 0; + + for (i = 0; i < interfaceCtx->unk_304; i++, j += 4) { + if (interfaceCtx->unk_28A[i] == 1) { + interfaceCtx->unk_29A[i] = i << 0xD; + interfaceCtx->unk_2BC[i] = 200.0f; + interfaceCtx->unk_2DC[i] = 200.0f; + interfaceCtx->unk_2AA[i] = 0; + interfaceCtx->unk_28A[i] = 2; + } else if (interfaceCtx->unk_28A[i] == 2) { + interfaceCtx->unk_29A[i] += -0x800; + interfaceCtx->unk_2BC[i] -= 8.0f; + interfaceCtx->unk_2DC[i] -= 8.0f; + if (interfaceCtx->unk_2BC[i] <= 0.0f) { + interfaceCtx->unk_2DC[i] = 0.0f; + interfaceCtx->unk_2BC[i] = 0.0f; + interfaceCtx->unk_28A[i] = 3; + if (i == 7) { + interfaceCtx->unk_28A[7] = 4; + interfaceCtx->unk_30A = 5; + interfaceCtx->unk_28A[6] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[5] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[4] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[3] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[2] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[1] = interfaceCtx->unk_28A[7]; + interfaceCtx->unk_28A[0] = interfaceCtx->unk_28A[7]; + } + } + } else if (interfaceCtx->unk_28A[i] == 4) { + stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC98[i]) / interfaceCtx->unk_30A; + if (interfaceCtx->unk_2AA[i] >= D_801BFC98[i]) { + interfaceCtx->unk_2AA[i] -= stepVar1; + } else { + interfaceCtx->unk_2AA[i] += stepVar1; + } + } else if (interfaceCtx->unk_28A[i] == 6) { + interfaceCtx->unk_29A[i] -= 0x800; + if (interfaceCtx->unk_29A[i] == (u16)(D_801BFCA8[i] - 0x8000)) { + interfaceCtx->unk_28A[i] = 0; + } + } + } + + if (interfaceCtx->unk_28A[0] == 4) { + interfaceCtx->unk_30A--; + if (interfaceCtx->unk_30A == 0) { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_28A[i] = 5; + } + interfaceCtx->unk_30A = 20; + } + } + + if ((interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) && (interfaceCtx->unk_304 < 8)) { + interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; + interfaceCtx->unk_304++; + } + + if ((interfaceCtx->unk_304 == 8) && (interfaceCtx->unk_28A[7] == 5)) { + + stepVar1 = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFCB8[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; + stepVar2 = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFCB8[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; + stepVar3 = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFCB8[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + + if (interfaceCtx->unk_2FC[0] >= D_801BFCB8[interfaceCtx->unk_308][0]) { + interfaceCtx->unk_2FC[0] -= stepVar1; + } else { + interfaceCtx->unk_2FC[0] += stepVar1; + } + + if (interfaceCtx->unk_2FC[1] >= D_801BFCB8[interfaceCtx->unk_308][1]) { + interfaceCtx->unk_2FC[1] -= stepVar2; + } else { + interfaceCtx->unk_2FC[1] += stepVar2; + } + + if (interfaceCtx->unk_2FC[2] >= D_801BFCB8[interfaceCtx->unk_308][2]) { + interfaceCtx->unk_2FC[2] -= stepVar3; + } else { + interfaceCtx->unk_2FC[2] += stepVar3; + } + + interfaceCtx->unk_30A--; + if (interfaceCtx->unk_30A == 0) { + interfaceCtx->unk_30A = 20; + interfaceCtx->unk_308 ^= 1; + interfaceCtx->unk_30C++; + if (interfaceCtx->unk_30C == 6) { + for (i = 0; i < 8; i++) { + interfaceCtx->unk_2BC[i] = 140.0f; + interfaceCtx->unk_2DC[i] = 100.0f; + interfaceCtx->unk_29A[i] = D_801BFCA8[i]; + interfaceCtx->unk_28A[i] = 6; + } + interfaceCtx->unk_30A = 5; + } + } + } + + j = 0; + for (i = 0; i < 8; i++) { + if (interfaceCtx->unk_28A[i] == 0) { + j++; + } + } + + if (j == 8) { + interfaceCtx->isMinigamePerfect = 0; + } +} + + void Interface_DrawMinigamePerfect(GlobalContext* globalCtx) { static TexturePtr D_801BFCC4[] = { From 4bc4ea3dfada94712fe450e52332dcd3981e075a Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 14:06:49 +1000 Subject: [PATCH 039/160] Interface_UpdateMagicBar OK --- src/code/z_parameter.c | 169 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 166 insertions(+), 3 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 785ed3649..73aed66aa 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -179,7 +179,7 @@ s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; s16 sMagicBarOutlinePrimBlue = 255; -s16 D_801BF8AC = 2; +s16 D_801BF8AC = 2; // sMagicBorderRatio s16 D_801BF8B0 = 1; @@ -2263,6 +2263,7 @@ void func_80116088(void) { } } +// Part of Interface_UpdateMagicBar in OoT, but that function was broken into parts void func_80116114(void) { static s16 magicBorderColors[][3] = { { 255, 255, 255 }, @@ -2312,8 +2313,170 @@ void func_80116114(void) { } } -void Interface_UpdateMagicBar(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s") +void Interface_UpdateMagicBar(GlobalContext* globalCtx) { + MessageContext* msgCtx = &globalCtx->msgCtx; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 temp; + + if (gSaveContext.save.weekEventReg[0xE] & 8) { + func_80116114(); + } + + switch (gSaveContext.unk_3F28) { + case 8: + temp = gSaveContext.save.playerData.magicLevel * 0x30; + if (gSaveContext.unk_3F2E != temp) { + if (gSaveContext.unk_3F2E < temp) { + gSaveContext.unk_3F2E += 0x10; + if (gSaveContext.unk_3F2E > temp) { + gSaveContext.unk_3F2E = temp; + } + } else { + gSaveContext.unk_3F2E -= 0x10; + if (gSaveContext.unk_3F2E <= temp) { + gSaveContext.unk_3F2E = temp; + } + } + } else { + gSaveContext.unk_3F28 = 9; + } + break; + + case 9: + gSaveContext.save.playerData.magic += 0x10; + + if ((gSaveContext.gameMode == 0) && (gSaveContext.sceneSetupIndex < 4)) { + play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); + } + + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.unk_3F30)) { + gSaveContext.save.playerData.magic = gSaveContext.unk_3F30; + gSaveContext.unk_3F28 = 0; + } + break; + + case 1: + D_801BF8AC = 2; + gSaveContext.unk_3F28 = 2; + break; + + case 2: + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32); + if (gSaveContext.save.playerData.magic <= 0) { + gSaveContext.save.playerData.magic = 0; + } + gSaveContext.unk_3F28 = 3; + sMagicBarOutlinePrimBlue = 255; + sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue; + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen; + } + // fallthrough + + case 3: + case 4: + case 6: + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + func_80116114(); + } + break; + + case 5: + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + gSaveContext.unk_3F28 = 0; + break; + + case 7: + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if (!func_801690CC(globalCtx)) { + if ((gSaveContext.save.playerData.magic == 0) || + ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || + (((gSaveContext.save.equips.buttonItems[0][1]) != ITEM_LENS) && + (gSaveContext.save.equips.buttonItems[0][2] != ITEM_LENS) && + (gSaveContext.save.equips.buttonItems[0][3] != ITEM_LENS)) || + (globalCtx->actorCtx.unk3 == 0)) { + globalCtx->actorCtx.unk3 = false; + play_sound(NA_SE_SY_GLASSMODE_OFF); + gSaveContext.unk_3F28 = 0; + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + break; + } + + interfaceCtx->unk_258--; + if (interfaceCtx->unk_258 == 0) { + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + gSaveContext.save.playerData.magic--; + } + interfaceCtx->unk_258 = 80; + } + } + } + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + func_80116114(); + } + break; + + case 10: + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + gSaveContext.save.playerData.magic -= 2; + } + if (gSaveContext.save.playerData.magic <= 0) { + gSaveContext.save.playerData.magic = 0; + } + gSaveContext.unk_3F28 = 11; + // fallthrough + + case 11: + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if (!func_801690CC(globalCtx)) { + interfaceCtx->unk_258--; + if (interfaceCtx->unk_258 == 0) { + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + gSaveContext.save.playerData.magic--; + } + if (gSaveContext.save.playerData.magic <= 0) { + gSaveContext.save.playerData.magic = 0; + } + interfaceCtx->unk_258 = 10; + } + } + } + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + func_80116114(); + } + break; + + case 12: + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if (!func_801690CC(globalCtx)) { + interfaceCtx->unk_258--; + if (interfaceCtx->unk_258 == 0) { + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + gSaveContext.save.playerData.magic--; + } + if (gSaveContext.save.playerData.magic <= 0) { + gSaveContext.save.playerData.magic = 0; + } + interfaceCtx->unk_258 = gGameInfo->data[0x569]; + } + } + } + if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + func_80116114(); + } + break; + + default: + gSaveContext.unk_3F28 = 0; + break; + } +} void Interface_DrawMagicBar(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 9ab45197a108525da0c4bff419c538ccb669c17e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 14:54:20 +1000 Subject: [PATCH 040/160] Match another 4 functions --- include/functions.h | 4 +- src/code/z_en_item00.c | 4 +- src/code/z_parameter.c | 91 +++++++++++++++++-- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 2 +- .../actors/ovl_En_Elforg/z_en_elforg.c | 2 +- tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 7 files changed, 93 insertions(+), 18 deletions(-) diff --git a/include/functions.h b/include/functions.h index e1d4bb45b..201a7c5c7 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1977,9 +1977,9 @@ s32 Inventory_HasItemInBottle(u8 itemId); // void Interface_LoadActionLabel(void); void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); // void func_801155B4(void); -// void func_80115764(void); +// void Interface_SetNaviCall(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); -s32 func_80115908(GlobalContext* globalCtx, u8 param_2); +s32 Health_ChangeBy(GlobalContext* globalCtx, s16 param_2); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 arg0); void Inventory_ChangeAmmo(s16 arg0, s16 arg1); diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 7100aec71..9dda61d3f 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -215,7 +215,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { break; case ITEM00_FLEXIBLE: case ITEM00_BIG_FAIRY: - func_80115908(globalCtx, 0x70); + Health_ChangeBy(globalCtx, 0x70); break; case ITEM00_BOMBS_A: case ITEM00_BOMBS_B: @@ -528,7 +528,7 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) { break; case ITEM00_FLEXIBLE: case ITEM00_BIG_FAIRY: - func_80115908(globalCtx, 0x70); + Health_ChangeBy(globalCtx, 0x70); break; case ITEM00_BOMBS_A: case ITEM00_BOMBS_B: diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 73aed66aa..687066760 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -171,9 +171,8 @@ s16 sHBAScoreTier = 0; u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; -s32 D_801BF898 = 0; - -s32 D_801BF89C = 0; +s16 D_801BF898 = 0; +s16 D_801BF89C = 0; s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; @@ -1750,7 +1749,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if (item == ITEM_HEART) { - func_80115908(globalCtx, 0x10); + Health_ChangeBy(globalCtx, 0x10); return item; } else if (item == ITEM_MAGIC_SMALL) { @@ -2047,13 +2046,89 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801155B4.s") +void func_801155B4(GlobalContext* globalCtx, s16 arg1) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115764.s") + if (((gSaveContext.save.equips.buttonItems[CUR_FORM][0] >= ITEM_SWORD_KOKIRI) && + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] <= ITEM_SWORD_GILDED)) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NONE) || + (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NUT)) { + if ((CUR_FORM == PLAYER_FORM_DEKU) && (gSaveContext.save.playerData.magicAcquired == 0)) { + interfaceCtx->unk_21E = 0xFD; + } else { + interfaceCtx->unk_21E = arg1; + if (interfaceCtx->unk_21E != 0xA) { + osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x600, + (arg1 * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, + &interfaceCtx->loadQueue, NULL); + osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115844.s") + interfaceCtx->unk_21C = 1; + } + } else { + interfaceCtx->unk_21C = 0; + interfaceCtx->unk_21E = 0; + } +} + +void Interface_SetNaviCall(GlobalContext* globalCtx, u16 naviCallState) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + if (((naviCallState == 0x2A) || (naviCallState == 0x2B)) && (interfaceCtx->unk_220 == 0) && + (globalCtx->csCtx.state == 0)) { + if (naviCallState == 0x2B) { + play_sound(NA_SE_VO_NAVY_CALL); + } + if (naviCallState == 0x2A) { + func_8019FDC8(&D_801DB4A4, NA_SE_VO_NA_HELLO_2, 0x20); + } + interfaceCtx->unk_220 = 1; + D_801BF898 = 0; + D_801BF89C = 10; + } else if (naviCallState == 0x2C) { + if (interfaceCtx->unk_220 != 0) { + interfaceCtx->unk_220 = 0; + } + } +} + +// Interface_LoadActionLabelB? +void func_80115844(GlobalContext* globalCtx, s16 arg1) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + interfaceCtx->unk_224 = arg1; + + osCreateMesgQueue(&globalCtx->interfaceCtx.loadQueue, &globalCtx->interfaceCtx.loadMsg, 1); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x480, (arg1 * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, NULL); + osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); + + interfaceCtx->unk_222 = 1; +} + +s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { + + if (healthChange > 0) { + play_sound(NA_SE_SY_HP_RECOVER); + } else if ((gSaveContext.save.playerData.doubleDefense != 0) && (healthChange < 0)) { + healthChange >>= 1; + } + + gSaveContext.save.playerData.health += healthChange; + + if (((void)0, gSaveContext.save.playerData.health) > ((void)0, gSaveContext.save.playerData.healthCapacity)) { + gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; + } + + if (gSaveContext.save.playerData.health <= 0) { + gSaveContext.save.playerData.health = 0; + return false; + } else { + return true; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115908.s") void Health_GiveHearts(s16 hearts) { gSaveContext.save.playerData.healthCapacity += hearts * 0x10; diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 472ece34b..5f175cdb8 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -673,7 +673,7 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { if ((this->fairyFlags & 0x1000) && (heightDiff > 0.0f) && (heightDiff < 60.0f) && !func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) { - func_80115908(globalCtx, 0x80); + Health_ChangeBy(globalCtx, 0x80); if (this->fairyFlags & 0x200) { Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index c33495438..71f15a6a2 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -440,7 +440,7 @@ void EnElforg_FreeFloating(EnElforg* this, GlobalContext* globalCtx) { if (!Player_InCsMode(&globalCtx->state)) { if ((this->actor.xzDistToPlayer < 30.0f) && (scaledYDistance < 12.0f) && (scaledYDistance > -68.0f)) { EnElforg_SetupFairyCollected(this, globalCtx); - func_80115908(globalCtx, 48); + Health_ChangeBy(globalCtx, 48); switch (STRAY_FAIRY_TYPE(&this->actor)) { case STRAY_FAIRY_TYPE_COLLECTIBLE: Flags_SetCollectible(globalCtx, STRAY_FAIRY_FLAG(&this->actor)); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index f2141726a..4bd9a7aaa 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2128,9 +2128,9 @@ 0x80115428:("Interface_LoadActionLabel",), 0x8011552C:("Interface_SetDoAction",), 0x801155B4:("func_801155B4",), - 0x80115764:("func_80115764",), + 0x80115764:("Interface_SetNaviCall",), 0x80115844:("func_80115844",), - 0x80115908:("func_80115908",), + 0x80115908:("Health_ChangeBy",), 0x801159C0:("Health_GiveHearts",), 0x801159EC:("Rupees_ChangeBy",), 0x80115A14:("Inventory_ChangeAmmo",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 532fff5f4..edea6d621 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1642,9 +1642,9 @@ asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 asm/non_matchings/code/z_parameter/Interface_SetDoAction.s,Interface_SetDoAction,0x8011552C,0x22 asm/non_matchings/code/z_parameter/func_801155B4.s,func_801155B4,0x801155B4,0x6C -asm/non_matchings/code/z_parameter/func_80115764.s,func_80115764,0x80115764,0x38 +asm/non_matchings/code/z_parameter/Interface_SetNaviCall.s,Interface_SetNaviCall,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 -asm/non_matchings/code/z_parameter/func_80115908.s,func_80115908,0x80115908,0x2E +asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908,0x2E asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 From 835b888b1c7c5ccc602e9832df3ad3c6d1264ce3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 16:18:13 +1000 Subject: [PATCH 041/160] Better matches --- src/code/z_parameter.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 687066760..cd0aeb9ac 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2198,9 +2198,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { - if (gSaveContext.save.playerData.magic) {} - - if (gSaveContext.save.playerData.magic < gSaveContext.unk_3F2E) { + if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.unk_3F2E)) { gSaveContext.unk_3F34 += arg1; gSaveContext.unk_3F2A = 1; } @@ -2323,8 +2321,7 @@ void func_80116088(void) { if (gSaveContext.unk_3F2A != 0) { gSaveContext.save.playerData.magic += 4; play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); - if (gSaveContext.save.playerData.magic >= gSaveContext.unk_3F2E) { - if (gSaveContext.save.playerData.magic) {} + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.unk_3F2E)) { gSaveContext.save.playerData.magic = gSaveContext.unk_3F2E; gSaveContext.unk_3F34 = 0; gSaveContext.unk_3F2A = 0; From 147f6b30b8036e6749321dab8b41f0a187095a3b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 16:24:04 +1000 Subject: [PATCH 042/160] Fix clock border --- src/code/z_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index cd0aeb9ac..7bbd72b19 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2903,7 +2903,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { //! resulting in this reading into the next texture. This results in a white //! dot in the bottom center of the clock. For the three-day clock, this is //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockDialBorderTex, 4, 64, 50, 96, 168, + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && From 495417f0760189865495e93cd856b3983f1e1f37 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 16:26:42 +1000 Subject: [PATCH 043/160] Match Interface_LoadStory --- src/code/z_parameter.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 7bbd72b19..ef502468b 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4210,7 +4210,6 @@ void Interface_Draw(GlobalContext* globalCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Draw.s") #endif -#ifdef NON_MATCHING void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -4219,7 +4218,7 @@ void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { if (interfaceCtx->storySegment == NULL) { break; } - osCreateMesgQueue(&interfaceCtx->storyMsgQueue, interfaceCtx->storyMsgBuf, 1); + osCreateMesgQueue(&interfaceCtx->storyMsgQueue, &interfaceCtx->storyMsgBuf, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->storySegment, interfaceCtx->storyAddr, interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); interfaceCtx->storyState = 1; @@ -4230,9 +4229,6 @@ void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { break; } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadStory.s") -#endif void Interface_AllocStory(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 8b2338f50d9b4d019e3fde4dc8cd045a546ad275 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 3 Apr 2022 16:32:42 +1000 Subject: [PATCH 044/160] cleanup --- src/code/z_parameter.c | 50 ++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index ef502468b..3be12c9c8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2289,7 +2289,7 @@ s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { case 6: if (gSaveContext.unk_3F28 == 0) { if (gSaveContext.save.playerData.magic != 0) { - globalCtx->interfaceCtx.unk_258 = gGameInfo->data[0x569]; + globalCtx->interfaceCtx.unk_258 = XREG(41); gSaveContext.unk_3F28 = 0xC; return 1; } @@ -2535,7 +2535,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - interfaceCtx->unk_258 = gGameInfo->data[0x569]; + interfaceCtx->unk_258 = XREG(41); } } } @@ -2706,7 +2706,7 @@ void func_80118BA4(GlobalContext* globalCtx) { func_8012C8D4(globalCtx->state.gfxCtx); - func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x19, gGameInfo->data[0x55F] + 0x46, 192, 237); + func_80116FD8(globalCtx, XREG(31) + 0x19, XREG(31) + 0x46, 192, 237); gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -2724,13 +2724,13 @@ void func_80118BA4(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); - func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x17, gGameInfo->data[0x55F] + 0x44, 190, 235); + func_80116FD8(globalCtx, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); gDPPipeSync(OVERLAY_DISP++); - func_80116FD8(globalCtx, gGameInfo->data[0x55F] + 0x17, gGameInfo->data[0x55F] + 0x44, 190, 235); + func_80116FD8(globalCtx, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -3868,7 +3868,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, gGameInfo->data[0x59B]); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, XREG(91)); gDPFillRectangle(OVERLAY_DISP++, 0, 0, 320, 240); } @@ -4050,7 +4050,7 @@ void Interface_Draw(GlobalContext* globalCtx) { Interface_DrawMagicBar(globalCtx); func_8010A54C(globalCtx); - if ((gGameInfo->data[0xBE] != 2) && (gGameInfo->data[0xBE] != 3)) { + if ((SREG(94) != 2) && (SREG(94) != 3)) { func_800B5208(&globalCtx->actorCtx.targetContext, globalCtx); // Draw Z-Target } @@ -4222,6 +4222,8 @@ void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->storySegment, interfaceCtx->storyAddr, interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); interfaceCtx->storyState = 1; + // fallthrough + case 1: if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, block) == 0) { interfaceCtx->storyState = 2; @@ -4493,9 +4495,9 @@ void Interface_Update(GlobalContext* globalCtx) { interfaceCtx->unk_210 = 2; if ((msgCtx->msgMode != 0) && (msgCtx->unk12006 == 0x26)) { - gGameInfo->data[0x55F] = -14; + XREG(31) = -14; } else { - gGameInfo->data[0x55F] = 0; + XREG(31) = 0; } } break; @@ -4537,22 +4539,22 @@ void Interface_Update(GlobalContext* globalCtx) { // Update Magic if (!(player->stateFlags1 & 0x200)) { - if (gGameInfo->data[0x544] == 1) { + if (XREG(4) == 1) { if (gSaveContext.save.playerData.magicAcquired == 0) { gSaveContext.save.playerData.magicAcquired = 1; } gSaveContext.save.playerData.doubleMagic = 1; gSaveContext.save.playerData.magic = 0x60; gSaveContext.save.playerData.magicLevel = 0; - gGameInfo->data[0x544] = 0; - } else if (gGameInfo->data[0x544] == -1) { + XREG(4) = 0; + } else if (XREG(4) == -1) { if (gSaveContext.save.playerData.magicAcquired == 0) { gSaveContext.save.playerData.magicAcquired = 1; } gSaveContext.save.playerData.doubleMagic = 0; gSaveContext.save.playerData.magic = 0x30; gSaveContext.save.playerData.magicLevel = 0; - gGameInfo->data[0x544] = 0; + XREG(4) = 0; } if (gSaveContext.save.playerData.magicAcquired != 0) { @@ -4642,17 +4644,17 @@ void Interface_Update(GlobalContext* globalCtx) { } gSaveContext.sunsSongState = SUNSSONG_SPEED_TIME; - D_801BFD98 = gGameInfo->data[0xF]; - gGameInfo->data[0xF] = 400; + D_801BFD98 = REG(15); + REG(15) = 400; } else if (!D_801BFD94) { if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - gGameInfo->data[0xF] = D_801BFD98; + REG(15) = D_801BFD98; globalCtx->msgCtx.ocarinaMode = 4; } } else if (gSaveContext.save.time > CLOCK_TIME(18, 0)) { gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - gGameInfo->data[0xF] = D_801BFD98; + REG(15) = D_801BFD98; globalCtx->msgCtx.ocarinaMode = 4; } } else { @@ -4667,7 +4669,7 @@ void Interface_Update(GlobalContext* globalCtx) { if (interfaceCtx->unk_31A == 1) { interfaceCtx->storyState = 0; interfaceCtx->unk_31A = 2; - gGameInfo->data[0x59B] = 0; + XREG(91) = 0; } Interface_AllocStory(globalCtx); @@ -4682,15 +4684,15 @@ void Interface_Update(GlobalContext* globalCtx) { } else if (interfaceCtx->unk_31A == 4) { interfaceCtx->unk_31A = 2; } else if (interfaceCtx->unk_31A == 5) { - gGameInfo->data[0x59B] += 10; - if (gGameInfo->data[0x59B] >= 250) { - gGameInfo->data[0x59B] = 255; + XREG(91) += 10; + if (XREG(91) >= 250) { + XREG(91) = 255; interfaceCtx->unk_31A = 2; } } else if (interfaceCtx->unk_31A == 6) { - gGameInfo->data[0x59B] -= 10; - if (gGameInfo->data[0x59B] < 0) { - gGameInfo->data[0x59B] = 0; + XREG(91) -= 10; + if (XREG(91) < 0) { + XREG(91) = 0; interfaceCtx->unk_31A = 2; } } From e27d687dfcaf3d60f022afce8e570461502bbc43 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 12 Apr 2022 17:00:49 +1000 Subject: [PATCH 045/160] Match Item_Give --- src/code/z_parameter.c | 136 ++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 83 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3be12c9c8..23a891ab4 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1440,16 +1440,14 @@ void func_80112C0C(GlobalContext* globalCtx, u16 flag) { } } -#ifdef NON_EQUIVALENT u8 Item_Give(GlobalContext* globalCtx, u8 item) { static s16 sAmmoRefillCounts[] = { 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, }; Player* player = GET_PLAYER(globalCtx); u8 i; + u8 temp; u8 slot; - u16 value; - u8 phi_a2_2; slot = SLOT(item); if (item >= ITEM_STICKS_5) { @@ -1457,15 +1455,15 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } if (item == ITEM_SKULL_TOKEN) { - gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; - func_8012F1BC(globalCtx->sceneNum); + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN - 4]; + Inventory_IncrementSkullTokenCount(globalCtx->sceneNum); return ITEM_NONE; } else if (item == ITEM_TINGLE_MAP) { return ITEM_NONE; } else if (item == ITEM_BOMBERS_NOTEBOOK) { - gSaveContext.save.inventory.questItems |= gBitFlags[QUEST_BOMBERS_NOTEBOOK]; + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_BOMBERS_NOTEBOOK]; return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { @@ -1483,12 +1481,11 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { - gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { - value = item - ITEM_SWORD_KOKIRI - 1; - SET_EQUIP_VALUE(EQUIP_SWORD, value); + SET_EQUIP_VALUE(EQUIP_SWORD, item - ITEM_SWORD_KOKIRI + 1); gSaveContext.save.equips.buttonItems[CUR_FORM][0] = item; Interface_LoadItemIconImpl(globalCtx, 0); if (item == ITEM_SWORD_RAZOR) { @@ -1497,24 +1494,23 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { - value = item - ITEM_SHIELD_HERO - 1; - if (value != CUR_EQUIP_VALUE(EQUIP_SHIELD)) { - SET_EQUIP_VALUE(EQUIP_SHIELD, value); - func_80123C90(globalCtx, player); + if (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + 1)) { + SET_EQUIP_VALUE(EQUIP_SHIELD, item - ITEM_SHIELD_HERO + 1); + Player_SetEquipmentData(globalCtx, player); return ITEM_NONE; } return item; } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { - gSaveContext.save.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS]; + gSaveContext.save.inventory.dungeonItems[(void)0, gSaveContext.mapIndex] |= (u8)gBitFlags[item - ITEM_KEY_BOSS]; return ITEM_NONE; } else if (item == ITEM_KEY_SMALL) { - if (gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; + if (gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] < 0) { + gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] = 1; return ITEM_NONE; } else { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]++; + gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex]++; return ITEM_NONE; } @@ -1526,7 +1522,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else { AMMO(ITEM_BOW)++; - if (AMMO(ITEM_BOW) > CUR_CAPACITY(UPG_QUIVER)) { + if (AMMO(ITEM_BOW) > (s8)CUR_CAPACITY(UPG_QUIVER)) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); } } @@ -1612,7 +1608,6 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { Inventory_ChangeUpgrade(UPG_STICKS, 1); AMMO(ITEM_STICK) = 1; - slot = gItemSlots[item]; } else { AMMO(ITEM_STICK)++; if (AMMO(ITEM_STICK) > CUR_CAPACITY(UPG_STICKS)) { @@ -1631,13 +1626,11 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } item = ITEM_STICK; - slot = gItemSlots[8]; } else if (item == ITEM_NUT) { if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { Inventory_ChangeUpgrade(UPG_NUTS, 1); AMMO(ITEM_NUT) = 1; - slot = gItemSlots[item]; } else { AMMO(ITEM_NUT)++; if (AMMO(ITEM_NUT) > CUR_CAPACITY(UPG_NUTS)) { @@ -1656,7 +1649,6 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } item = ITEM_NUT; - slot = gItemSlots[9]; } else if (item == ITEM_POWDER_KEG) { if (INV_CONTENT(ITEM_POWDER_KEG) != ITEM_POWDER_KEG) { @@ -1667,8 +1659,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if (item == ITEM_BOMB) { - AMMO(ITEM_BOMB)++; - if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMB) += 1) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; @@ -1680,9 +1671,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; - - if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; @@ -1693,9 +1682,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_BOMBCHU) = 10; return ITEM_NONE; } - - AMMO(ITEM_BOMBCHU) += 10; - if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMBCHU) += 10) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; @@ -1703,7 +1690,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { if (gSaveContext.save.inventory.items[7] != ITEM_BOMBCHU) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; - AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20]; + AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]; if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); @@ -1711,8 +1698,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20]; - if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; @@ -1731,21 +1717,17 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_BEAN) { if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { - INV_CONTENT(ITEM_BEAN) = item; + gSaveContext.save.inventory.items[SLOT(item)] = item; AMMO(ITEM_BEAN) = 1; - return ITEM_NONE; - } - - if (AMMO(ITEM_BEAN) < 20) { + } else if (AMMO(ITEM_BEAN) < 20) { AMMO(ITEM_BEAN)++; - return ITEM_NONE; + } else { + AMMO(ITEM_BEAN) = 20; } - - AMMO(ITEM_BEAN) = 20; return ITEM_NONE; } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { - gSaveContext.save.inventory.questItems |= gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems ) | gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; return ITEM_NONE; } else if (item == ITEM_HEART) { @@ -1769,30 +1751,37 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { - Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 10]); + Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { + slot = SLOT(item); + for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { - gSaveContext.save.inventory.items[i] = ITEM_POTION_RED; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; + return ITEM_NONE; } } return item; } else if ((item == 0x18) || (item == 0x1D) || (item == 0x22) || (item == 0x25) || (item == 0x26)) { + slot = SLOT(item); + for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { - gSaveContext.save.inventory.items[i] = item; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; } } return item; } else if (item == 0x12) { + slot = SLOT(item); + for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { - gSaveContext.save.inventory.items[i] = item; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; } } @@ -1800,30 +1789,25 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || (item == 0xA2) || (item == 0xA3)) { - - slot = gItemSlots[item]; + slot = SLOT(item); + if ((item != 0x18) && (item != 0x19)) { - // i = 0; if (item == 0x9F) { - slot = gItemSlots[0x25]; item = 0x25; } else if (item == 0xA0) { - slot = gItemSlots[0x18]; item = 0x18; } else if (item == 0xA1) { - slot = gItemSlots[0x22]; item = 0x22; } else if (item == 0xA2) { - slot = gItemSlots[0x26]; item = 0x26; } else if (item == 0xA3) { - slot = gItemSlots[0x24]; item = 0x24; } + slot = SLOT(item); for (i = 0; i < 6; i++) { if (gSaveContext.save.inventory.items[slot + i] == 0x12) { @@ -1845,36 +1829,27 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { gSaveContext.buttonStatus[3] = BTN_ENABLED; } - gSaveContext.save.inventory.items[slot] = item; + gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; } } } else { for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[i] == ITEM_NONE) { - gSaveContext.save.inventory.items[i] = item; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; } } } + } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { - INV_CONTENT(item); - gSaveContext.save.inventory.items[gItemSlots[item]] = item; - if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (INV_CONTENT(item) != ITEM_NONE)) { + temp = INV_CONTENT(item); + INV_CONTENT(item) = item; + if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (temp != ITEM_NONE)) { for (i = 1; i < 4; i++) { - if (i == 0) { - phi_a2_2 = gSaveContext.save.equips.buttonItems[CUR_FORM][i]; - } else { - phi_a2_2 = gSaveContext.save.equips.buttonItems[0][i]; - } - - if (INV_CONTENT(item) == phi_a2_2) { - if (i == 0) { - gSaveContext.save.equips.buttonItems[CUR_FORM][i] = item; - } else { - gSaveContext.save.equips.buttonItems[0][i] = item; - } + if (temp == GET_CUR_FORM_BTN_ITEM(i)) { + SET_CUR_FORM_BTN_ITEM(i, item); Interface_LoadItemIconImpl(globalCtx, i); return ITEM_NONE; } @@ -1883,15 +1858,10 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - gSaveContext.save.inventory.items[slot] = item; - return gSaveContext.save.inventory.items[slot]; + temp = gSaveContext.save.inventory.items[slot]; + INV_CONTENT(item) = item; + return temp; } -#else -s16 sAmmoRefillCounts[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, -}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s") -#endif s32 Item_CheckObtainabilityImpl(u8 item); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s") From 4e2231399e2470ebc6c3c6c9c366deabed2b56e8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 12 Apr 2022 18:01:41 +1000 Subject: [PATCH 046/160] format --- src/code/z_parameter.c | 67 +++++++++++++++++++----------------------- src/code/z_sram_NES.c | 6 ++-- 2 files changed, 33 insertions(+), 40 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 13545820e..96088b9bb 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1455,7 +1455,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } if (item == ITEM_SKULL_TOKEN) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN - 4]; + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | + gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN - 4]; Inventory_IncrementSkullTokenCount(globalCtx->sceneNum); return ITEM_NONE; @@ -1463,7 +1464,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if (item == ITEM_BOMBERS_NOTEBOOK) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_BOMBERS_NOTEBOOK]; + gSaveContext.save.inventory.questItems = + ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_BOMBERS_NOTEBOOK]; return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { @@ -1481,7 +1483,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; + gSaveContext.save.inventory.questItems = + ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { @@ -1727,7 +1730,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems ) | gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; + gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | + gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; return ITEM_NONE; } else if (item == ITEM_HEART) { @@ -1756,7 +1760,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_LONGSHOT) { slot = SLOT(item); - + for (i = 0; i < 6; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; @@ -1790,7 +1794,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || (item == 0xA2) || (item == 0xA3)) { slot = SLOT(item); - + if ((item != 0x18) && (item != 0x19)) { if (item == 0x9F) { item = 0x25; @@ -1841,7 +1845,6 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } - } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { temp = INV_CONTENT(item); @@ -1894,7 +1897,7 @@ void Inventory_UnequipItem(s16 item) { } } -s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { +s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { u8 i; for (i = 0; i < 24; i++) { @@ -2071,7 +2074,9 @@ void func_80115844(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_224 = arg1; osCreateMesgQueue(&globalCtx->interfaceCtx.loadQueue, &globalCtx->interfaceCtx.loadMsg, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x480, (arg1 * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, NULL); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x480, + (arg1 * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, + NULL); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); interfaceCtx->unk_222 = 1; @@ -2099,7 +2104,6 @@ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { } } - void Health_GiveHearts(s16 hearts) { gSaveContext.save.playerData.healthCapacity += hearts * 0x10; } @@ -2305,7 +2309,7 @@ void func_80116088(void) { } } -// Part of Interface_UpdateMagicBar in OoT, but that function was broken into parts +// Part of Interface_UpdateMagicBar in OoT, but that function was broken into parts void func_80116114(void) { static s16 magicBorderColors[][3] = { { 255, 255, 255 }, @@ -2386,7 +2390,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { case 9: gSaveContext.save.playerData.magic += 0x10; - + if ((gSaveContext.gameMode == 0) && (gSaveContext.sceneSetupIndex < 4)) { play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); } @@ -2404,7 +2408,8 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { case 2: if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { - gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32); + gSaveContext.save.playerData.magic = + ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32); if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } @@ -2429,9 +2434,8 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { break; case 7: - if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && - (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { if ((gSaveContext.save.playerData.magic == 0) || ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || @@ -2471,9 +2475,8 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { // fallthrough case 11: - if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && - (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->unk_258--; if (interfaceCtx->unk_258 == 0) { @@ -2493,9 +2496,8 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { break; case 12: - if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && - (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->unk_258--; if (interfaceCtx->unk_258 == 0) { @@ -2873,8 +2875,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { //! resulting in this reading into the next texture. This results in a white //! dot in the bottom center of the clock. For the three-day clock, this is //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, - 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, + 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && ((0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { @@ -3381,7 +3383,7 @@ s16 D_801BFC7C[] = { 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; s16 D_801BFC8C[2][3] = { - { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF }, { 0xFF, 0xA5, 0x37 }, }; void func_8011B9E0(GlobalContext* globalCtx) { @@ -3437,7 +3439,6 @@ void func_8011B9E0(GlobalContext* globalCtx) { interfaceCtx->unk_2AA[i] += stepVar1; } } - } if ((interfaceCtx->unk_28A[0] == 4) || (interfaceCtx->unk_28A[0] == 6)) { @@ -3510,19 +3511,13 @@ void func_8011B9E0(GlobalContext* globalCtx) { } s16 D_801BFC98[] = { - 0x004E, 0x0036, - 0x001D, 0x0005, - 0xFFEE, 0xFFD6, - 0xFFBD, 0xFFAB, + 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, }; u16 D_801BFCA8[] = { - 0xC000, 0xE000, - 0x0000, 0x2000, - 0xA000, 0x8000, - 0x6000, 0x4000, + 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, }; s16 D_801BFCB8[2][3] = { - { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF }, { 0xFF, 0xA5, 0x37 }, }; void func_8011BF70(GlobalContext* globalCtx) { @@ -3644,8 +3639,6 @@ void func_8011BF70(GlobalContext* globalCtx) { } } - - void Interface_DrawMinigamePerfect(GlobalContext* globalCtx) { static TexturePtr D_801BFCC4[] = { gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 05dcd9811..0fd487518 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -149,9 +149,9 @@ s32 D_801C6798[] = { }; u8 D_801C67B0[24] = { - ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, - ITEM_STICK, ITEM_NUT, ITEM_BEAN, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, - ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, + ITEM_STICK, ITEM_NUT, ITEM_BEAN, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }; s32 D_801C67C8[] = { 0, 0x40, 0x80, 0xC0, 0x100, 0x180, 0x200, 0x280 }; From bb897667698dde8dae6284f60531ff8eeafc5557 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 12 Apr 2022 18:17:11 +1000 Subject: [PATCH 047/160] macros --- src/code/z_parameter.c | 96 +++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 96088b9bb..e9f157fbe 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1411,21 +1411,21 @@ void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 btn) { void func_80112C0C(GlobalContext* globalCtx, u16 flag) { if (flag) { - if ((gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOW) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMB) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMBCHU) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_FISHING_POLE) || + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_FISHING_POLE) || (gSaveContext.buttonStatus[0] == BTN_DISABLED)) { - if ((gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOW) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMB) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_BOMBCHU) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_FISHING_POLE)) { - gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_FISHING_POLE)) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; Interface_LoadItemIconImpl(globalCtx, 0); } - } else if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NONE) { - if (gSaveContext.save.equips.buttonItems[CUR_FORM][0] != ITEM_NONE) { - gSaveContext.save.equips.buttonItems[CUR_FORM][0] = gSaveContext.buttonStatus[0]; + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; Interface_LoadItemIconImpl(globalCtx, 0); } } @@ -1489,7 +1489,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { SET_EQUIP_VALUE(EQUIP_SWORD, item - ITEM_SWORD_KOKIRI + 1); - gSaveContext.save.equips.buttonItems[CUR_FORM][0] = item; + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = item; Interface_LoadItemIconImpl(globalCtx, 0); if (item == ITEM_SWORD_RAZOR) { gSaveContext.save.playerData.swordHealth = 100; @@ -1668,7 +1668,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) { - if (gSaveContext.save.inventory.items[6] != ITEM_BOMB) { + if (gSaveContext.save.inventory.items[SLOT_BOMB] != ITEM_BOMB) { INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; return ITEM_NONE; @@ -1691,7 +1691,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { - if (gSaveContext.save.inventory.items[7] != ITEM_BOMBCHU) { + if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]; @@ -1720,7 +1720,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_BEAN) { if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { - gSaveContext.save.inventory.items[SLOT(item)] = item; + INV_CONTENT(item) = item; AMMO(ITEM_BEAN) = 1; } else if (AMMO(ITEM_BEAN) < 20) { AMMO(ITEM_BEAN)++; @@ -1769,7 +1769,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return item; - } else if ((item == 0x18) || (item == 0x1D) || (item == 0x22) || (item == 0x25) || (item == 0x26)) { + } else if ((item == ITEM_MILK_BOTTLE) || (item == ITEM_POE) || (item == ITEM_GOLD_DUST) || (item == ITEM_CHATEAU) || + (item == ITEM_HYLIAN_LOACH)) { slot = SLOT(item); for (i = 0; i < 6; i++) { @@ -1780,7 +1781,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return item; - } else if (item == 0x12) { + } else if (item == ITEM_BOTTLE) { slot = SLOT(item); for (i = 0; i < 6; i++) { @@ -1791,44 +1792,45 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return item; - } else if (((item >= 0x13) && (item < 0x28)) || (item == 0x9F) || (item == 0xA0) || (item == 0xA1) || - (item == 0xA2) || (item == 0xA3)) { + } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || + (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || + (item == ITEM_SEA_HORSE_CAUGHT)) { slot = SLOT(item); - if ((item != 0x18) && (item != 0x19)) { - if (item == 0x9F) { - item = 0x25; + if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { + if (item == ITEM_CHATEAU_2) { + item = ITEM_CHATEAU; - } else if (item == 0xA0) { - item = 0x18; + } else if (item == ITEM_MILK) { + item = ITEM_MILK_BOTTLE; - } else if (item == 0xA1) { - item = 0x22; + } else if (item == ITEM_GOLD_DUST_2) { + item = ITEM_GOLD_DUST; - } else if (item == 0xA2) { - item = 0x26; + } else if (item == ITEM_HYLIAN_LOACH_2) { + item = ITEM_HYLIAN_LOACH; - } else if (item == 0xA3) { - item = 0x24; + } else if (item == ITEM_SEA_HORSE_CAUGHT) { + item = ITEM_SEA_HORSE; } slot = SLOT(item); for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[slot + i] == 0x12) { - if (item == 0x20) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { + if (item == ITEM_HOT_SPRING_WATER) { func_8010EBA0(60, i); } - if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][1]) { - gSaveContext.save.equips.buttonItems[0][1] = item; + if ((slot + i) == C_SLOT_EQUIP(0, 1)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = item; Interface_LoadItemIconImpl(globalCtx, 1); gSaveContext.buttonStatus[1] = BTN_ENABLED; - } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][2]) { - gSaveContext.save.equips.buttonItems[0][2] = item; + } else if ((slot + i) == C_SLOT_EQUIP(0, 2)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = item; Interface_LoadItemIconImpl(globalCtx, 2); gSaveContext.buttonStatus[2] = BTN_ENABLED; - } else if ((slot + i) == gSaveContext.save.equips.cButtonSlots[0][3]) { - gSaveContext.save.equips.buttonItems[0][3] = item; + } else if ((slot + i) == C_SLOT_EQUIP(0, 3)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = item; Interface_LoadItemIconImpl(globalCtx, 3); gSaveContext.buttonStatus[3] = BTN_ENABLED; } @@ -2022,10 +2024,10 @@ void Interface_SetDoAction(GlobalContext* globalCtx, u16 action) { void func_801155B4(GlobalContext* globalCtx, s16 arg1) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - if (((gSaveContext.save.equips.buttonItems[CUR_FORM][0] >= ITEM_SWORD_KOKIRI) && - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] <= ITEM_SWORD_GILDED)) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NONE) || - (gSaveContext.save.equips.buttonItems[CUR_FORM][0] == ITEM_NUT)) { + if (((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) >= ITEM_SWORD_KOKIRI) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) <= ITEM_SWORD_GILDED)) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { if ((CUR_FORM == PLAYER_FORM_DEKU) && (gSaveContext.save.playerData.magicAcquired == 0)) { interfaceCtx->unk_21E = 0xFD; } else { @@ -2439,9 +2441,9 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { if (!Play_InCsMode(globalCtx)) { if ((gSaveContext.save.playerData.magic == 0) || ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || - (((gSaveContext.save.equips.buttonItems[0][1]) != ITEM_LENS) && - (gSaveContext.save.equips.buttonItems[0][2] != ITEM_LENS) && - (gSaveContext.save.equips.buttonItems[0][3] != ITEM_LENS)) || + ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && + (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && + (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || (globalCtx->actorCtx.unk3 == 0)) { globalCtx->actorCtx.unk3 = false; play_sound(NA_SE_SY_GLASSMODE_OFF); @@ -4526,7 +4528,7 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.unk_3F30 = gSaveContext.save.playerData.magic; gSaveContext.save.playerData.magic = 0; gSaveContext.unk_3F28 = 8; - gSaveContext.save.equips.buttonItems[3][0] = ITEM_NUT; + BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT; } } Interface_UpdateMagicBar(globalCtx); From 25b0ac0226116ba9e2525545c1ecde7c16ebe7ac Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 12 Apr 2022 20:34:54 +1000 Subject: [PATCH 048/160] Match Item_CheckObtainabilityImpl --- include/functions.h | 2 +- src/code/z_parameter.c | 157 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 155 insertions(+), 4 deletions(-) diff --git a/include/functions.h b/include/functions.h index 8ad9b47b2..e8348f5a3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1915,7 +1915,7 @@ void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 param_2); // void Item_CheckObtainabilityImpl(void); -s32 Item_CheckObtainability(u8 arg0); +u8 Item_CheckObtainability(u8 arg0); void Inventory_DeleteItem(s16 arg0, s16 arg1); // void Inventory_UnequipItem(void); // void Inventory_ReplaceItem(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e9f157fbe..d500aa5e7 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1868,10 +1868,161 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return temp; } -s32 Item_CheckObtainabilityImpl(u8 item); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s") +u8 Item_CheckObtainabilityImpl(u8 item) { + s16 i; + u8 slot; + u8 temp; -s32 Item_CheckObtainability(u8 item) { + slot = SLOT(item); + if (item >= ITEM_STICKS_5) { + slot = SLOT(sExtraItemBases[item - ITEM_STICKS_5]); + } + + if (item == ITEM_SKULL_TOKEN) { + return ITEM_NONE; + + } else if (item == ITEM_TINGLE_MAP) { + return ITEM_NONE; + + } else if (item == ITEM_BOMBERS_NOTEBOOK) { + return ITEM_NONE; + + } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { + return ITEM_NONE; + + } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { + return ITEM_NONE; + + } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { + if (!(gSaveContext.save.inventory.dungeonItems[(void)0, gSaveContext.mapIndex] & + gBitFlags[item - ITEM_KEY_BOSS])) { + return ITEM_NONE; + } + return item; + + } else if (item == ITEM_KEY_SMALL) { + return ITEM_NONE; + + } else if ((item == ITEM_OCARINA) || (item == ITEM_BOMBCHU) || (item == ITEM_HOOKSHOT) || (item == ITEM_LENS) || + (item == ITEM_SWORD_GREAT_FAIRY) || (item == ITEM_PICTO_BOX)) { + if (INV_CONTENT(item) == ITEM_NONE) { + return ITEM_NONE; + } + return INV_CONTENT(item); + + } else if ((item >= ITEM_BOMBS_5) && (item == ITEM_BOMBS_30)) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { + if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item == ITEM_QUIVER_40) || (item == ITEM_QUIVER_50)) { + return ITEM_NONE; + + } else if ((item == ITEM_BOMB_BAG_20) || (item == ITEM_BOMB)) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item >= ITEM_STICK_UPGRADE_20) && (item <= ITEM_NUT_UPGRADE_40)) { + return ITEM_NONE; + + } else if ((item >= ITEM_BOMB_BAG_30) && (item <= ITEM_WALLET_GIANT)) { + return ITEM_NONE; + + } else if (item == ITEM_BEAN) { + return ITEM_NONE; + + } else if (item == ITEM_POWDER_KEG) { + return ITEM_NONE; + + } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { + return ITEM_NONE; + + } else if (item == ITEM_HEART_CONTAINER) { + return ITEM_NONE; + + } else if (item == ITEM_HEART) { + return ITEM_HEART; + + } else if ((item == ITEM_MAGIC_SMALL) || (item == ITEM_MAGIC_LARGE)) { + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + return ITEM_NONE; + } + return item; + + } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { + return ITEM_NONE; + + } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { + return ITEM_NONE; + + } else if (item == ITEM_LONGSHOT) { + return ITEM_NONE; + + } else if (item == ITEM_BOTTLE) { + return ITEM_NONE; + + } else if ((item == ITEM_MILK_BOTTLE) || (item == ITEM_POE) || (item == ITEM_GOLD_DUST) || (item == ITEM_CHATEAU) || + (item == ITEM_HYLIAN_LOACH)) { + return ITEM_NONE; + + } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || + (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || + (item == ITEM_SEA_HORSE_CAUGHT)) { + temp = SLOT(item); + + if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { + if (item == ITEM_CHATEAU_2) { + item = ITEM_CHATEAU; + + } else if (item == ITEM_MILK) { + item = ITEM_MILK_BOTTLE; + + } else if (item == ITEM_GOLD_DUST_2) { + item = ITEM_GOLD_DUST; + + } else if (item == ITEM_HYLIAN_LOACH_2) { + item = ITEM_HYLIAN_LOACH; + + } else if (item == ITEM_SEA_HORSE_CAUGHT) { + item = ITEM_SEA_HORSE; + } + temp = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[temp + i] == ITEM_BOTTLE) { + return ITEM_NONE; + } + } + } else { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { + return ITEM_NONE; + } + } + } + } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { + return ITEM_NONE; + } + + return gSaveContext.save.inventory.items[slot]; +} + +u8 Item_CheckObtainability(u8 item) { return Item_CheckObtainabilityImpl(item); } From 6e808b91a146475cfe916fe1164e1da1329030ce Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 12 Apr 2022 20:37:33 +1000 Subject: [PATCH 049/160] Mark a bug --- src/code/z_parameter.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d500aa5e7..1ed1f0cba 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1911,6 +1911,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { return INV_CONTENT(item); } else if ((item >= ITEM_BOMBS_5) && (item == ITEM_BOMBS_30)) { + //! @bug: Should be a range check: (item <= ITEM_BOMBS_30) if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { return ITEM_NONE; } From 75a6ba7c6b3e8efa6a31557869a411c53287461e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 13 Apr 2022 09:08:07 +1000 Subject: [PATCH 050/160] Match another 2 functions --- include/functions.h | 4 +-- src/code/z_parameter.c | 51 ++++++++++++++++++++++++++++++++-- tools/disasm/functions.txt | 4 +-- tools/sizes/code_functions.csv | 4 +-- 4 files changed, 55 insertions(+), 8 deletions(-) diff --git a/include/functions.h b/include/functions.h index e8348f5a3..cee24d215 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1919,11 +1919,11 @@ u8 Item_CheckObtainability(u8 arg0); void Inventory_DeleteItem(s16 arg0, s16 arg1); // void Inventory_UnequipItem(void); // void Inventory_ReplaceItem(void); -// void func_80114CA0(void); +// void Inventory_UpdateDeitySwordEquip(void); s32 Inventory_HasEmptyBottle(void); s32 Inventory_HasItemInBottle(u8 itemId); // void func_80114FD0(void); -// void func_80115130(void); +// void Inventory_ConsumeFairy(void); // void Inventory_UpdateItem(void); // void func_801153C8(void); // void Interface_LoadActionLabel(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 1ed1f0cba..e830bf0a3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2071,7 +2071,32 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { return false; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") +void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + u8 btn; + + if (CUR_FORM == 0) { + interfaceCtx->unk_21C = 0; + interfaceCtx->unk_21E = 0; + if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) ? 1 : gSaveContext.save.playerForm >> 1) == 0) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_DEITY; + } else { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { + if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; + } + } + } + } + + for (btn = 0; btn < 1; btn++) { + if ((GET_CUR_FORM_BTN_ITEM(btn) != ITEM_NONE) && (GET_CUR_FORM_BTN_ITEM(btn) != ITEM_UNK_FD)) { + Interface_LoadItemIconImpl(globalCtx, btn); + } + } +} s32 Inventory_HasEmptyBottle(void) { s32 slot; @@ -2109,7 +2134,29 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115130.s") +s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { + u8 bottleSlot = SLOT(ITEM_FAIRY); + u8 btn; + u8 i; + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE); + Interface_LoadItemIconImpl(globalCtx, btn); + bottleSlot = GET_CUR_FORM_BTN_SLOT(btn); + i = 0; + break; + } + } + gSaveContext.save.inventory.items[bottleSlot + i] = ITEM_BOTTLE; + return true; + } + } + + return false; +} /** * Only used to equip spring water when hot sprint water timer runs out diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index fb76c370a..7cbc92ecc 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2118,11 +2118,11 @@ 0x801149A0:("Inventory_DeleteItem",), 0x80114A9C:("Inventory_UnequipItem",), 0x80114B84:("Inventory_ReplaceItem",), - 0x80114CA0:("func_80114CA0",), + 0x80114CA0:("Inventory_UpdateDeitySwordEquip",), 0x80114E90:("Inventory_HasEmptyBottle",), 0x80114F2C:("Inventory_HasItemInBottle",), 0x80114FD0:("Inventory_UpdateBottleItem",), - 0x80115130:("func_80115130",), + 0x80115130:("Inventory_ConsumeFairy",), 0x801152B8:("Inventory_UpdateItem",), 0x801153C8:("func_801153C8",), 0x80115428:("Interface_LoadActionLabel",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 04d7cb4fd..a3a8c92d6 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1632,11 +1632,11 @@ asm/non_matchings/code/z_parameter/Item_CheckObtainability.s,Item_CheckObtainabi asm/non_matchings/code/z_parameter/Inventory_DeleteItem.s,Inventory_DeleteItem,0x801149A0,0x3F asm/non_matchings/code/z_parameter/Inventory_UnequipItem.s,Inventory_UnequipItem,0x80114A9C,0x3A asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s,Inventory_ReplaceItem,0x80114B84,0x47 -asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C +asm/non_matchings/code/z_parameter/Inventory_UpdateDeitySwordEquip.s,Inventory_UpdateDeitySwordEquip,0x80114CA0,0x7C asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s,Inventory_HasEmptyBottle,0x80114E90,0x27 asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s,Inventory_HasItemInBottle,0x80114F2C,0x29 asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s,Inventory_UpdateBottleItem,0x80114FD0,0x58 -asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 +asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s,Inventory_ConsumeFairy,0x80115130,0x62 asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s,Inventory_UpdateItem,0x801152B8,0x44 asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 From 52e886355bda607998d2dc07ab22bff1fdb53d9f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 13 Apr 2022 14:38:41 +1000 Subject: [PATCH 051/160] Match Interface_DrawItemButtons --- include/variables.h | 6 +- include/z64.h | 2 +- src/code/z_parameter.c | 150 ++++++++++++++++++++++++++++++------- tools/disasm/variables.txt | 6 +- 4 files changed, 131 insertions(+), 33 deletions(-) diff --git a/include/variables.h b/include/variables.h index 474a9e324..4a3d977b9 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1027,8 +1027,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BF888; // extern UNK_TYPE2 sHBAScoreTier; // extern UNK_TYPE2 sMinigameScoreDigits; -// extern UNK_TYPE2 D_801BF898; -// extern UNK_TYPE2 D_801BF89C; +// extern UNK_TYPE2 sCUpInvisible; +// extern UNK_TYPE2 sCUpTimer; // extern UNK_TYPE2 sMagicBarOutlinePrimRed; // extern UNK_TYPE2 sMagicBarOutlinePrimGreen; // extern UNK_TYPE2 sMagicBarOutlinePrimBlue; @@ -1091,7 +1091,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFAB8; // extern UNK_TYPE1 D_801BFAC4; // extern UNK_TYPE1 D_801BFACC; -// extern UNK_TYPE1 D_801BFAD4; +// extern UNK_TYPE1 cUpLabelTextures; // extern UNK_TYPE2 D_801BFAF4; // extern UNK_TYPE2 D_801BFAF6; // extern UNK_TYPE2 D_801BFAF8; diff --git a/include/z64.h b/include/z64.h index 5ae6f0636..18ed092c3 100644 --- a/include/z64.h +++ b/include/z64.h @@ -636,7 +636,7 @@ typedef struct { /* 0x218 */ f32 unk_218; /* 0x21C */ s16 unk_21C; /* 0x21E */ s16 unk_21E; - /* 0x220 */ s16 unk_220; + /* 0x220 */ s16 naviCalling; // tatlCalling? /* 0x222 */ s16 unk_222; /* 0x224 */ s16 unk_224; /* 0x226 */ s16 lifeColorChange; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e830bf0a3..d18a49460 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -171,8 +171,8 @@ s16 sHBAScoreTier = 0; u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; -s16 D_801BF898 = 0; -s16 D_801BF89C = 0; +u16 sCUpInvisible = 0; +u16 sCUpTimer = 0; s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; @@ -2078,14 +2078,17 @@ void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { if (CUR_FORM == 0) { interfaceCtx->unk_21C = 0; interfaceCtx->unk_21E = 0; - if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) ? 1 : gSaveContext.save.playerForm >> 1) == 0) { + if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) + ? 1 + : gSaveContext.save.playerForm >> 1) == 0) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_DEITY; } else { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } else { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = + GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; } } } @@ -2250,7 +2253,7 @@ void func_801155B4(GlobalContext* globalCtx, s16 arg1) { void Interface_SetNaviCall(GlobalContext* globalCtx, u16 naviCallState) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - if (((naviCallState == 0x2A) || (naviCallState == 0x2B)) && (interfaceCtx->unk_220 == 0) && + if (((naviCallState == 0x2A) || (naviCallState == 0x2B)) && !interfaceCtx->naviCalling && (globalCtx->csCtx.state == 0)) { if (naviCallState == 0x2B) { play_sound(NA_SE_VO_NAVY_CALL); @@ -2258,12 +2261,12 @@ void Interface_SetNaviCall(GlobalContext* globalCtx, u16 naviCallState) { if (naviCallState == 0x2A) { func_8019FDC8(&D_801DB4A4, NA_SE_VO_NA_HELLO_2, 0x20); } - interfaceCtx->unk_220 = 1; - D_801BF898 = 0; - D_801BF89C = 10; + interfaceCtx->naviCalling = true; + sCUpInvisible = 0; + sCUpTimer = 10; } else if (naviCallState == 0x2C) { - if (interfaceCtx->unk_220 != 0) { - interfaceCtx->unk_220 = 0; + if (interfaceCtx->naviCalling) { + interfaceCtx->naviCalling = false; } } } @@ -2823,22 +2826,117 @@ void func_801170B8(InterfaceContext* interfaceCtx) { func_8013FBC8(&interfaceCtx->view); } -TexturePtr D_801BFAD4[] = { - gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, -}; -s16 D_801BFAE8[] = { - 130, 136, 136, 136, 136, -}; -s16 D_801BFAF4[] = { - 0x1D, - 0x1B, -}; -s16 D_801BFAF8[] = { - 0x1B, - 0x1B, -}; -void Interface_DrawItemButtons(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s") +void Interface_DrawItemButtons(GlobalContext* globalCtx) { + static TexturePtr cUpLabelTextures[] = { + gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, + }; + static s16 startButtonLeftPos[] = { + // Remnant of OoT + 130, 136, 136, 136, 136, + }; + static s16 D_801BFAF4[] = { 0x1D, 0x1B }; + static s16 D_801BFAF8[] = { 0x1B, 0x1B }; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Player* player = GET_PLAYER(globalCtx); + PauseContext* pauseCtx = &globalCtx->pauseCtx; + MessageContext* msgCtx = &globalCtx->msgCtx; + s16 temp; // Used as both an alpha value and a button index + s32 pad; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + + // B Button Color & Texture + OVERLAY_DISP = + func_8010CFBC(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], D_801BF9DC[0], D_801BFAF4[0], + D_801BFAF4[0], D_801BF9E4[0] * 2, D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); + if (1) {} + gDPPipeSync(OVERLAY_DISP++); + + // C-Left Button Color & Texture + OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D4[1], D_801BF9DC[1], D_801BFAF4[1], D_801BFAF4[1], + D_801BF9E4[1] * 2, D_801BF9E4[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cLeftAlpha); + // C-Down Button Color & Texture + OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D8[0], D_801BF9E0[0], D_801BFAF8[0], D_801BFAF8[0], + D_801BF9E8[0] * 2, D_801BF9E8[0] * 2, 0xFF, 0xF0, 0, interfaceCtx->cDownAlpha); + // C-Right Button Color & Texture + OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D8[1], D_801BF9E0[1], D_801BFAF8[1], D_801BFAF8[1], + D_801BF9E8[1] * 2, D_801BF9E8[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cRightAlpha); + + if ((pauseCtx->state < 8) || (pauseCtx->state >= 19)) { + if ((globalCtx->pauseCtx.state != 0) || (globalCtx->pauseCtx.debugState != 0)) { + OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, 0x88, 0x11, 0x16, 0x16, 0x5B6, 0x5B6, 0xFF, 0x82, 0x3C, + interfaceCtx->startAlpha); + // Start Button Texture, Color & Label + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + 0x300, G_IM_FMT_IA, 48, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 0x01F8, 0x0054, 0x02D4, 0x009C, G_TX_RENDERTILE, 0, 0, 0x04A6, 0x04A6); + } + } + + if (interfaceCtx->naviCalling && (globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (globalCtx->csCtx.state == 0) && (D_801BF884 == 0)) { + if (sCUpInvisible == 0) { + // C-Up Button Texture, Color & Label (Tatl Text) + gDPPipeSync(OVERLAY_DISP++); + + if ((gSaveContext.unk_3F22 == 1) || (gSaveContext.unk_3F22 == 2) || (gSaveContext.unk_3F22 == 5) || + (msgCtx->msgMode != 0)) { + temp = 0; + } else if (player->stateFlags1 & 0x200000) { + temp = 70; + } else { + temp = interfaceCtx->aAlpha; + } + + OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, 0xFE, 0x10, 0x10, 0x10, 0x800, 0x800, 0xFF, 0xF0, 0, temp); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, temp); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.options.language], G_IM_FMT_IA, 32, 12, + 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(OVERLAY_DISP++, 0x03DC, 0x0048, 0x045C, 0x0078, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + } + + sCUpTimer--; + if (sCUpTimer == 0) { + sCUpInvisible ^= 1; + sCUpTimer = 10; + } + } + + gDPPipeSync(OVERLAY_DISP++); + + // Empty C Button Arrows + for (temp = 1; temp < 4; temp++) { + if (GET_CUR_FORM_BTN_ITEM(temp) > 0xF0) { + if (temp == 1) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cLeftAlpha); + } else if (temp == 2) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cDownAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cRightAlpha); + } + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), 0x20, + 0x20, D_801BF9D4[temp], D_801BF9DC[temp], D_801BFAF4[temp], D_801BFAF4[temp], + D_801BF9E4[temp] * 2, D_801BF9E4[temp] * 2); + } + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16 button) { static s16 D_801BFAFC[] = { 30, 24, 24, 24 }; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index f9cc84ab4..184e78754 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1067,8 +1067,8 @@ 0x801BF888:("D_801BF888","UNK_TYPE2","",0x2), 0x801BF88C:("sHBAScoreTier","UNK_TYPE2","",0x2), 0x801BF890:("sMinigameScoreDigits","UNK_TYPE2","",0x2), - 0x801BF898:("D_801BF898","UNK_TYPE2","",0x2), - 0x801BF89C:("D_801BF89C","UNK_TYPE2","",0x2), + 0x801BF898:("sCUpInvisible","UNK_TYPE2","",0x2), + 0x801BF89C:("sCUpTimer","UNK_TYPE2","",0x2), 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), 0x801BF8A4:("sMagicBarOutlinePrimGreen","UNK_TYPE2","",0x2), 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), @@ -1121,7 +1121,7 @@ 0x801BFAB8:("D_801BFAB8","UNK_TYPE1","",0x1), 0x801BFAC4:("D_801BFAC4","UNK_TYPE1","",0x1), 0x801BFACC:("D_801BFACC","UNK_TYPE1","",0x1), - 0x801BFAD4:("D_801BFAD4","UNK_TYPE1","",0x1), + 0x801BFAD4:("cUpLabelTextures","UNK_TYPE1","",0x1), 0x801BFAF4:("D_801BFAF4","UNK_TYPE4","",0x4), 0x801BFAF8:("D_801BFAF8","UNK_TYPE4","",0x4), 0x801BFAFC:("D_801BFAFC","UNK_TYPE4","",0x4), From 17f710491d8c7cbfc50fd9e2829d4801cc23151b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 13 Apr 2022 15:52:39 +1000 Subject: [PATCH 052/160] Interface_DrawAmmoCount WIP --- include/z64item.h | 4 +-- src/code/z_parameter.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/include/z64item.h b/include/z64item.h index f8b2cbf92..1c9a8b9ad 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -42,10 +42,10 @@ typedef enum { /* 0x0F */ QUEST_SONG_SOARING, /* 0x10 */ QUEST_SONG_STORMS, /* 0x11 */ QUEST_SONG_SUN, - /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, + /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook /* 0x17 */ QUEST_SKULL_TOKEN = 0x17, /* 0x18 */ QUEST_SONG_LULLABY_INTRO, - /* 0x19 */ QUEST_UNK_19, // Related to PictoBox + /* 0x19 */ QUEST_UNK_19, // Photo taken from PictoBox /* 0x1C */ QUEST_HEART_PIECE = 0x1C, /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d18a49460..4575f3ce5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2955,7 +2955,71 @@ void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16 s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; +#ifdef NON_MATCHING +void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { + u8 i; + u16 ammo; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + i = (((button) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, button) : BUTTON_ITEM_EQUIP(0, button)) & 0xFF); + + if ((i == ITEM_STICK) || (i == ITEM_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) || + ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) || (i == ITEM_BOMBCHU) || (i == ITEM_POWDER_KEG) || + (i == ITEM_BEAN) || (i == ITEM_PICTO_BOX)) { + + if ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) { + i = ITEM_BOW; + } + + ammo = AMMO(i); + + if (i == ITEM_PICTO_BOX) { + if ((((void)0, gSaveContext.save.inventory.questItems) & (gBitFlags[0, QUEST_UNK_19])) == 0) { + ammo = 0; + } else { + ammo = 1; + } + } + + gDPPipeSync(OVERLAY_DISP++); + + if ((button == 0) && (gSaveContext.minigameState == 1)) { + ammo = globalCtx->interfaceCtx.hbaAmmo; + } else if ((button == 0) && (globalCtx->unk_1887C > 1)) { + ammo = globalCtx->unk_1887C - 1; + } else if (((i == ITEM_BOW) && (AMMO(i) == CUR_CAPACITY(UPG_QUIVER))) || + ((i == ITEM_BOMB) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || + ((i == ITEM_STICK) && (AMMO(i) == CUR_CAPACITY(UPG_STICKS))) || + ((i == ITEM_NUT) && (AMMO(i) == CUR_CAPACITY(UPG_NUTS))) || + ((i == ITEM_BOMBCHU) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || + ((i == ITEM_POWDER_KEG) && (ammo == 1)) || ((i == ITEM_PICTO_BOX) && (ammo == 1)) || + ((i == ITEM_BEAN) && (ammo == 20))) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha); + } + + if (!ammo) { // TODO: No == 0 + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha); + } + + for (i = 0; ammo >= 10; i++) { + ammo -= 10; + } + + if (i) { // TODO: No != 0 + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, D_801BFB04[button], + D_801BFB0C[button], 8, 8, 0x400, 0x400); + } + + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, + D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 0x400, 0x400); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s") +#endif void func_80118084(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s") From ea42fbdc812db05ea8afc146131f32521d50e0bd Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 12:40:37 +1000 Subject: [PATCH 053/160] Match func_80118084 --- src/code/z_parameter.c | 88 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 6 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 4575f3ce5..d48c0bf87 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -243,11 +243,11 @@ Gfx D_801BF988[] = { gsSPEndDisplayList(), }; -s32 D_801BF9B0 = 0; +s16 D_801BF9B0 = 0; -s32 D_801BF9B4[] = { - 0x42C80000, // f32: 100.0 - 0x42DA0000, // f32: 109.0 +f32 D_801BF9B4[] = { + 100.0f, + 109.0f, }; s16 D_801BF9BC[] = { @@ -3021,8 +3021,84 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s") #endif -void func_80118084(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s") +void func_80118084(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Player* player = GET_PLAYER(globalCtx); + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + + if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & 0x1000000)) { + if (gSaveContext.buttonStatus[0] != 0xFF) { + Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment, 0); + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + + Interface_DrawAmmoCount(globalCtx, 0, interfaceCtx->bAlpha); + } + } else if (((interfaceCtx->unk_21C == 0) && (interfaceCtx->unk_222 == 0)) || + ((interfaceCtx->unk_21C != 0) && + ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED)) && + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT)) { + if ((player->transformation == PLAYER_FORM_FIERCE_DEITY) || (player->transformation == PLAYER_FORM_HUMAN)) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment, 0); + if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || + (globalCtx->unk_1887C >= 2)) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, + 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + + if ((globalCtx->sceneNum != SCENE_SYATEKI_MIZU) && (globalCtx->sceneNum != SCENE_SYATEKI_MORI) && + (globalCtx->sceneNum != SCENE_BOWLING) && + ((gSaveContext.minigameState != 1) || (gSaveContext.save.entranceIndex != 0x6400)) && + ((gSaveContext.minigameState != 1) || !(gSaveContext.eventInf[3] & 0x20)) && + (!(gSaveContext.save.weekEventReg[31] & 0x80) || (globalCtx->unk_1887C != 0x64))) { + Interface_DrawAmmoCount(globalCtx, 0, interfaceCtx->bAlpha); + } + } + } + } + } else if (interfaceCtx->unk_222 != 0) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + 0x480, G_IM_FMT_IA, 48, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + + D_801BF9B0 = 1024.0f / (D_801BF9B4[gSaveContext.options.language] / 100.0f); + + gSPTextureRectangle( + OVERLAY_DISP++, (D_801BF9C4[gSaveContext.options.language] * 4), + (D_801BF9C8[gSaveContext.options.language] * 4), ((D_801BF9C4[gSaveContext.options.language] + 0x30) << 2), + ((D_801BF9C8[gSaveContext.options.language] + 0x10) << 2), G_TX_RENDERTILE, 0, 0, D_801BF9B0, D_801BF9B0); + } else if (interfaceCtx->unk_21E != 0xA) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + 0x600, G_IM_FMT_IA, 48, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + + D_801BF9B0 = 1024.0f / (D_801BF9B4[gSaveContext.options.language] / 100.0f); + + gSPTextureRectangle( + OVERLAY_DISP++, (D_801BF9C4[gSaveContext.options.language] * 4), + (D_801BF9C8[gSaveContext.options.language] * 4), ((D_801BF9C4[gSaveContext.options.language] + 0x30) << 2), + ((D_801BF9C8[gSaveContext.options.language] + 0x10) << 2), G_TX_RENDERTILE, 0, 0, D_801BF9B0, D_801BF9B0); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} void func_80118890(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118890.s") From 2578a567a562eeaca2474cca4485e7d1c5f90bd2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 12:52:20 +1000 Subject: [PATCH 054/160] Match func_80118890 --- src/code/z_parameter.c | 49 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d48c0bf87..0e2fe9e75 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2975,6 +2975,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { ammo = AMMO(i); if (i == ITEM_PICTO_BOX) { + // TODO: index of gBitFlags? if ((((void)0, gSaveContext.save.inventory.questItems) & (gBitFlags[0, QUEST_UNK_19])) == 0) { ammo = 0; } else { @@ -3100,8 +3101,52 @@ void func_80118084(GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); } -void func_80118890(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118890.s") +void func_80118890(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gDPPipeSync(OVERLAY_DISP++); + + // C-Left Button Icon & Ammo Count + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) < 0xF0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cLeftAlpha); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment + 0x1000, 1); + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + Interface_DrawAmmoCount(globalCtx, 1, interfaceCtx->cLeftAlpha); + } + + gDPPipeSync(OVERLAY_DISP++); + + // C-Down Button Icon & Ammo Count + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) < 0xF0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cDownAlpha); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment + 0x2000, 2); + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + Interface_DrawAmmoCount(globalCtx, 2, interfaceCtx->cDownAlpha); + } + + gDPPipeSync(OVERLAY_DISP++); + + // C-Right Button Icon & Ammo Count + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) < 0xF0) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cRightAlpha); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment + 0x3000, 3); + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + Interface_DrawAmmoCount(globalCtx, 3, interfaceCtx->cRightAlpha); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} void func_80118BA4(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From ae6ba9d88d0e3cf77d7984dc6fb611d4eaba140c Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 13:48:03 +1000 Subject: [PATCH 055/160] Match func_80119030 and func_8011C808 --- include/z64save.h | 2 +- src/code/z_parameter.c | 79 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 70 insertions(+), 11 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index 32822a8b3..93eb48ab6 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -131,7 +131,7 @@ typedef struct Save { /* 0x0010 */ s32 isNight; // "asahiru_fg" /* 0x0014 */ u32 daySpeed; // "change_zelda_time" /* 0x0018 */ s32 day; // "totalday" - /* 0x001C */ u32 daysElapsed; // "eventday" + /* 0x001C */ s32 daysElapsed; // "eventday" /* 0x0020 */ u8 playerForm; // "player_character" /* 0x0021 */ u8 snowheadCleared; // "spring_flag" /* 0x0022 */ u8 hasTatl; // "bell_flag" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 0e2fe9e75..afdabfbb2 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3208,11 +3208,74 @@ void func_80118BA4(GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); } -s16 D_801BFB14[] = { 255, 100, 255, 0 }; -s16 D_801BFB1C[] = { 0, 100, 255, 0 }; -s16 D_801BFB24[] = { 0, 255, 100, 0 }; -void func_80119030(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex +s16 D_801BFB14[] = { 255, 100, 255, 0 }; // magicArrowEffectsR +s16 D_801BFB1C[] = { 0, 100, 255, 0 }; // magicArrowEffectsG +s16 D_801BFB24[] = { 0, 255, 100, 0 }; // magicArrowEffectsB +void func_80119030(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + PauseContext* pauseCtx = &globalCtx->pauseCtx; + s16 temp; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + gDPPipeSync(OVERLAY_DISP++); + + func_801170B8(interfaceCtx); + + if (pauseCtx->state == 6) { + if ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF)) { + // Inventory Equip Effects + gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); + func_8012C8D4(globalCtx->state.gfxCtx); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = pauseCtx->equipAnimX / 10; + pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] + (pauseCtx->unk_2BA / 10); + pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = pauseCtx->equipAnimY / 10; + pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] - (pauseCtx->unk_2BA / 10); + + if (pauseCtx->equipTargetItem < 0xB5) { + // Normal Equip (icon goes from the inventory slot to the C button when equipping it) + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, pauseCtx->equipAnimAlpha); + gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); + gDPLoadTextureBlock(OVERLAY_DISP++, gItemIcons[pauseCtx->equipTargetItem], G_IM_FMT_RGBA, G_IM_SIZ_32b, + 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + } else { + // Magic Arrow Equip Effect + temp = pauseCtx->equipTargetItem - 0xB5; + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFB14[temp], D_801BFB1C[temp], D_801BFB24[temp], + pauseCtx->equipAnimAlpha); + + if ((pauseCtx->equipAnimAlpha > 0) && (pauseCtx->equipAnimAlpha < 255)) { + temp = (pauseCtx->equipAnimAlpha / 8) / 2; + pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] - temp; + pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] + temp * 2 + 32; + pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] + temp; + pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] - temp * 2 - 32; + } + + gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); + gDPLoadTextureBlock(OVERLAY_DISP++, &D_08095AC0, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } + + gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + } + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} /** * Draws either the analog three-day clock or the digital final-hours clock @@ -4177,23 +4240,19 @@ void Interface_DrawMinigamePerfect(GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); } -#ifdef NON_MATCHING void func_8011C808(GlobalContext* globalCtx) { if (globalCtx->actorCtx.unk5 & 2) { Audio_QueueSeqCmd(0xE0000100); } gSaveContext.save.day = 4; - gSaveContext.save.daysElapsed = gSaveContext.save.day; + gSaveContext.save.daysElapsed = 4; gSaveContext.save.time = 0x400A; globalCtx->nextEntranceIndex = 0x54C0; gSaveContext.nextCutsceneIndex = 0; globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 3; } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C808.s") -#endif #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") From 2f49e3f5c7e970b3fd2d9a98d65caace62ed301d Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 15:07:09 +1000 Subject: [PATCH 056/160] Interface_DrawMinigameIcons WIP --- src/code/z_parameter.c | 119 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index afdabfbb2..9ea40cafa 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -550,7 +550,7 @@ void func_8010EBA0(s16 timer, s16 timerId) { D_801BF8F0 = 0; } -// Crazy u64 math +// u64 nonsense #ifdef NON_EQUIVALENT s32 func_8010EC54(s16 timerId) { u64 time; @@ -4254,6 +4254,7 @@ void func_8011C808(GlobalContext* globalCtx) { globalCtx->unk_1887F = 3; } +// u64 nonsense #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") s32 D_801BFCE4[] = { @@ -4286,8 +4287,124 @@ void Interface_DrawTimers(GlobalContext* globalCtx); void Interface_UpdateTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s") +#ifdef NON_EQUIVALENT +void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 sp42; + s16 sp40; + s16 sp3E; + s16 sp3C; + s16 phi_a0; + s16 phi_a1; + + func_8012C654(globalCtx->state.gfxCtx); + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + if (interfaceCtx->unk_212 == 8) { + gDPLoadTextureBlock(OVERLAY_DISP++, gCarrotIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + + if (interfaceCtx->unk_280 != 0) { + sp3C = 200; + } else { + sp3C = 56; + } + + for (sp42 = 1, sp3E = 110; sp42 < 7; sp42++, sp3E += 16) { + if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < sp42)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 150, 255, interfaceCtx->aAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha); + } + + gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), (sp3E * 4), ((sp3C + 0x10) * 4), + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + } + } + + if (gSaveContext.minigameState == 1) { + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + sp3E = 0x14; + phi_a0 = 0x18; + phi_a1 = 0x10; + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + sp3C = 0x4B; + } else { + sp3C = 0x43; + } + + if (gSaveContext.save.entranceIndex == 0x8E10) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gBeaverRingIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } else { + if (globalCtx->sceneNum == 0x54) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 140, 50, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gSwordTrainingLogIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } else if (globalCtx->sceneNum == 0x37) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, + 30, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + sp3E = 0x18; + phi_a0 = 0x10; + phi_a1 = 0x1E; + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gArcheryScoreIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } + } + + gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), ((sp3E + phi_a0) * 4), ((sp3C + phi_a1) * 4), + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, + 0, PRIMITIVE, 0); + + if (globalCtx->sceneNum == 0x37) { + sp3E += 0x14; + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + sp3C = 0x57; + } else { + sp3C = 0x4F; + } + } else { + sp3E += 0x1A; + } + + for (sp42 = sp40 = 0; sp42 < 4; sp42++) { + if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) { + // (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]) + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8, + 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370); + sp3E += 9; + sp40++; + } + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + } + } +} +#else void Interface_DrawMinigameIcons(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s") +#endif // rupeeDigitsFirst s16 D_801BFD1C[] = { 1, 0, 0, 0 }; From 0693cbbaffb82033399d3507597b8aed093a4c94 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 20:14:49 +1000 Subject: [PATCH 057/160] First attempt at func_80110038 --- include/variables.h | 2 +- src/code/z_parameter.c | 476 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 476 insertions(+), 2 deletions(-) diff --git a/include/variables.h b/include/variables.h index 4a3d977b9..e09e372ba 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1342,7 +1342,7 @@ extern void* gItemIcons[]; extern u8 gItemSlots[]; extern s16 gItemPrices[]; extern u16 gScenesPerRegion[11][27]; -extern u32 D_801C2410[]; +extern u8 D_801C2410[5][114]; extern s16 gLinkFormObjectIndexes[8]; extern RomFile objectFileTable[643]; extern SceneTableEntry gSceneTable[]; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9ea40cafa..04cc6c3ed 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1351,7 +1351,481 @@ void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { } // oot func_80083108 +#ifdef NON_EQUIVALENT +void func_80110038(GlobalContext* globalCtx) { + MessageContext* msgCtx = &globalCtx->msgCtx; + Player* player = GET_PLAYER(globalCtx); + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 i; + u8 temp_t9; + u8 phi_a1_6; + s16 phi_t3 = false; + + if (gSaveContext.eventInf[4] & 2) { + + for (i = 1; i < 4; i++) { + if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) || (msgCtx->msgMode != 0)) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + + if (D_801BF884 == 0) { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[0] = BTN_ENABLED; + } + } else { + if (gSaveContext.save.weekEventReg[90] & 0x20) { + for (i = 1; i < 4; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + + Interface_ChangeAlpha(8); + } else if (gSaveContext.save.weekEventReg[0x52] & 8) { + for (i = 1; i < 4; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + + Interface_ChangeAlpha(22); + } else if (gSaveContext.save.weekEventReg[84] & 0x20) { + if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { + + for (i = 1; i < 4; i++) { + if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_ENABLED; + phi_t3 = true; + } + } + } + } else { + + for (i = 1; i < 4; i++) { + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_ZORA)) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + } + } else if ((globalCtx->sceneNum == SCENE_SPOT00) && (gSaveContext.sceneSetupIndex == 6)) { + for (i = 1; i < 4; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (gSaveContext.eventInf[3] & 0x10) { + if (player->stateFlags3 & 0x1000000) { + if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; + Interface_LoadItemIconImpl(globalCtx, 0); + } else { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + phi_t3 = true; + } + } else { + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_ENABLED; + phi_t3 = true; + } + + for (i = 1; i < 4; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + if (phi_t3 || (gSaveContext.unk_3F22 != 0xC)) { + gSaveContext.unk_3F22 = 0; + Interface_ChangeAlpha(0xC); + phi_t3 = false; + } + } else if (player->stateFlags3 & 0x1000000) { + if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; + Interface_LoadItemIconImpl(globalCtx, 0); + gSaveContext.buttonStatus[0] = BTN_ENABLED; + phi_t3 = true; + } + } else if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + phi_t3 = true; + } + + if (phi_t3) { + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + } + } else if ((gSaveContext.save.playerData.magicAcquired == 0) && (CUR_FORM == PLAYER_FORM_DEKU) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_UNK_FD; + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } else { + if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { + if (CUR_FORM != 2) { + if ((player->currentMask == PLAYER_MASK_BLAST) && (player->unk_B60 == 0)) { + if (gSaveContext.unk_1015 == 0xFF) { + phi_t3 = true; + } + gSaveContext.unk_1015 = 0; + } else if ((interfaceCtx->unk_21E == 0x18) && (player->currentMask == PLAYER_MASK_BLAST)) { + if (gSaveContext.unk_1015 != 0xFF) { + gSaveContext.unk_1015 = 0xFF; + phi_t3 = true; + } + } else { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } + } else { + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[0] = BTN_ENABLED; + } + + for (i = 1; i < 4; i++) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { + if (func_801242DC(globalCtx) == 2) { + if ((GET_CUR_FORM_BTN_ITEM(i) < ITEM_BOTTLE) || + (GET_CUR_FORM_BTN_ITEM(i) > ITEM_OBABA_DRINK)) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_ENABLED; + phi_t3 = true; + } + } + + if (phi_t3) { + gSaveContext.unk_3F22 = 0; + } + + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if (ActorCutscene_GetCurrentIndex() == -1) { + Interface_ChangeAlpha(50); + } + } + } else { + if (player->stateFlags1 & 0x200000) { + + for (i = 1; i < 4; i++) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + phi_t3 = true; + } + } else if (player->stateFlags1 & 0x2000) { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + phi_t3 = true; + Interface_ChangeAlpha(50); + } + } else { + if ((interfaceCtx->unk_21E == 0x18) && (player->currentMask == PLAYER_MASK_BLAST) && + (player->unk_B60 != 0)) { + if (gSaveContext.unk_1015 != 0xFF) { + gSaveContext.unk_1015 = 0xFF; + phi_t3 = true; + } + } else { + if (gSaveContext.unk_1015 == 0xFF) { + gSaveContext.unk_1015 = 0; + phi_t3 = true; + } + + if (interfaceCtx->restrictions.bButton == 0) { + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } + phi_a1_6 = gSaveContext.buttonStatus[0]; + if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { + temp_t9 = GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; + gSaveContext.buttonStatus[0] = temp_t9; + phi_a1_6 = temp_t9 & 0xFF; + } + + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = phi_a1_6; + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_LoadItemIconImpl(globalCtx, 0); + } + phi_t3 = true; + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { + if (interfaceCtx->unk_21E != 0) { + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[0] = BTN_ENABLED; + } + } else { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } + } + } else { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } + } else { + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[0] = BTN_ENABLED; + } + } + } + } else { + if (interfaceCtx->restrictions.bButton != 0) { + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + } + + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; + + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_LoadItemIconImpl(globalCtx, 0); + } + phi_t3 = true; + } + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_DISABLED; + phi_t3 = true; + } + } + } + } + + if (gSaveContext.save.playerForm == player->transformation) { + for (i = 1; i < 4; i++) { + + if (!D_801C2410[gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + phi_t3 = true; + } + } else if (player->actor.id != 0) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + phi_t3 = true; + } + } else if (player->currentMask == PLAYER_MASK_GIANT) { + + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_GIANT) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + phi_t3 = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_GIANT) { + if (globalCtx->sceneNum != SCENE_INISIE_BS) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + phi_t3 = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) { + if ((globalCtx->sceneNum != SCENE_MITURIN_BS) && + (globalCtx->sceneNum != SCENE_HAKUGIN_BS) && + (globalCtx->sceneNum != SCENE_SEA_BS) && (globalCtx->sceneNum != SCENE_INISIE_BS) && + (globalCtx->sceneNum != SCENE_LAST_BS)) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + phi_t3 = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else { + if (interfaceCtx->restrictions.tradeItems != 0) { + if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES)) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || + (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (interfaceCtx->restrictions.tradeItems == 0) { + if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES)) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || + (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + + if (interfaceCtx->restrictions.unk_317 != 0) { + if (GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) { + if (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + } else if (interfaceCtx->restrictions.unk_317 == 0) { + if (GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) { + if (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + } + + if (interfaceCtx->restrictions.pictographBox != 0) { + if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (interfaceCtx->restrictions.pictographBox == 0) { + if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + + if (interfaceCtx->restrictions.all != 0) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES))) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT))) { + if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) && + (gSaveContext.buttonStatus[i] == BTN_ENABLED)) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + } + } + } + } else if (interfaceCtx->restrictions.all == 0) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES))) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT))) { + if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) && + (gSaveContext.buttonStatus[i] == BTN_DISABLED)) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + } + } + } + } + } + } + } + } + } + } + } + + if (phi_t3 && (globalCtx->activeCamera == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + gSaveContext.unk_3F22 = 0; + Interface_ChangeAlpha(50); + } +} +#else #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80110038.s") +#endif void func_80111CB4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") @@ -3033,7 +3507,7 @@ void func_80118084(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & 0x1000000)) { - if (gSaveContext.buttonStatus[0] != 0xFF) { + if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment, 0); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, From 867487ac9b17e851cda258cbcfc84b372bd79443 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 20:59:30 +1000 Subject: [PATCH 058/160] Match func_80110038 --- src/code/z_parameter.c | 97 ++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 04cc6c3ed..a36b25a63 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1350,15 +1350,11 @@ void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { } } -// oot func_80083108 -#ifdef NON_EQUIVALENT void func_80110038(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; - Player* player = GET_PLAYER(globalCtx); InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Player* player = GET_PLAYER(globalCtx); s16 i; - u8 temp_t9; - u8 phi_a1_6; s16 phi_t3 = false; if (gSaveContext.eventInf[4] & 2) { @@ -1413,11 +1409,11 @@ void func_80110038(GlobalContext* globalCtx) { ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; phi_t3 = true; } } @@ -1606,14 +1602,14 @@ void func_80110038(GlobalContext* globalCtx) { if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { gSaveContext.buttonStatus[0] = BTN_DISABLED; } - phi_a1_6 = gSaveContext.buttonStatus[0]; + if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { - temp_t9 = GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; - gSaveContext.buttonStatus[0] = temp_t9; - phi_a1_6 = temp_t9 & 0xFF; + gSaveContext.buttonStatus[0] = + GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; } - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = phi_a1_6; + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { Interface_LoadItemIconImpl(globalCtx, 0); } @@ -1670,7 +1666,7 @@ void func_80110038(GlobalContext* globalCtx) { if (gSaveContext.save.playerForm == player->transformation) { for (i = 1; i < 4; i++) { - if (!D_801C2410[gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { + if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; phi_t3 = true; @@ -1740,28 +1736,26 @@ void func_80110038(GlobalContext* globalCtx) { } if (interfaceCtx->restrictions.unk_317 != 0) { - if (GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) { - if (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED + phi_t3 = true; } + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (interfaceCtx->restrictions.unk_317 == 0) { - if (GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) { - if (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT) { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_ENABLED; + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + phi_t3 = true; } + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } if (interfaceCtx->restrictions.pictographBox != 0) { if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED phi_t3 = true; } gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1777,36 +1771,32 @@ void func_80110038(GlobalContext* globalCtx) { if (interfaceCtx->restrictions.all != 0) { if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES))) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { - if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT))) { - if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) && - (gSaveContext.buttonStatus[i] == BTN_ENABLED)) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } - } + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES)) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { + + if ((gSaveContext.buttonStatus[i] == BTN_ENABLED)) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } } else if (interfaceCtx->restrictions.all == 0) { if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES))) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { - if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT))) { - if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) && - (gSaveContext.buttonStatus[i] == BTN_DISABLED)) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } - } + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_MEMORIES)) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { + + if ((gSaveContext.buttonStatus[i] == BTN_DISABLED)) { + phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } } @@ -1823,9 +1813,6 @@ void func_80110038(GlobalContext* globalCtx) { Interface_ChangeAlpha(50); } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80110038.s") -#endif void func_80111CB4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") From baffbf5a706d287b4e7894cb4b221ba7130d1d68 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 23:01:47 +1000 Subject: [PATCH 059/160] Interface_Init OK, 10 functions left --- include/functions.h | 4 +- src/code/z_parameter.c | 162 ++++++++++++++++++++++++++++----- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 4 files changed, 141 insertions(+), 29 deletions(-) diff --git a/include/functions.h b/include/functions.h index cee24d215..6d69c9913 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1808,7 +1808,7 @@ s32 func_8010A0A4(GlobalContext* globalCtx); void func_8010A2DC(GlobalContext* globalCtx); void func_8010A33C(GlobalContext* globalCtx, s16 param_2); // void func_8010A410(void); -// void func_8010A430(void); +void func_8010A430(GlobalContext* globalCtx); void func_8010A54C(GlobalContext* globalCtx); // void Map_Update(void); // void func_8010A760(void); @@ -1968,7 +1968,7 @@ void func_8011C808(GlobalContext* globalCtx); // void Interface_AllocStory(void); // void Interface_Update(void); // void func_80121F94(void); -void func_80121FC4(GlobalContext* globalCtx); +void Interface_Init(GlobalContext* globalCtx); Path* Path_GetByIndex(GlobalContext* globalCtx, s16 index, s16 max); f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); void Path_CopyLastPoint(Path* path, Vec3f* dest); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a36b25a63..f9382fddb 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -165,7 +165,7 @@ static RestrictionFlags sRestrictionFlags[] = { s16 D_801BF884 = 0; // pictoBox related -s32 D_801BF888 = 0; +s16 D_801BF888 = 0; s16 sHBAScoreTier = 0; @@ -1393,7 +1393,7 @@ void func_80110038(GlobalContext* globalCtx) { } Interface_ChangeAlpha(8); - } else if (gSaveContext.save.weekEventReg[0x52] & 8) { + } else if (gSaveContext.save.weekEventReg[82] & 8) { for (i = 1; i < 4; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1492,7 +1492,7 @@ void func_80110038(GlobalContext* globalCtx) { gSaveContext.buttonStatus[0] = BTN_DISABLED; } else { if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { - if (CUR_FORM != 2) { + if (CUR_FORM != PLAYER_FORM_ZORA) { if ((player->currentMask == PLAYER_MASK_BLAST) && (player->unk_B60 == 0)) { if (gSaveContext.unk_1015 == 0xFF) { phi_t3 = true; @@ -2201,16 +2201,16 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_MAGIC_SMALL) { Interface_AddMagic(globalCtx, 0x18); - if (!(gSaveContext.save.weekEventReg[0xC] & 0x80)) { - gSaveContext.save.weekEventReg[0xC] |= 0x80; + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; } return item; } else if (item == ITEM_MAGIC_LARGE) { Interface_AddMagic(globalCtx, 0x30); - if (!(gSaveContext.save.weekEventReg[0xC] & 0x80)) { - gSaveContext.save.weekEventReg[0xC] |= 0x80; + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; } return item; @@ -2536,7 +2536,7 @@ void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; u8 btn; - if (CUR_FORM == 0) { + if (CUR_FORM == PLAYER_FORM_FIERCE_DEITY) { interfaceCtx->unk_21C = 0; interfaceCtx->unk_21E = 0; if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) @@ -2869,7 +2869,7 @@ s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { if (gSaveContext.unk_3F28 == 7) { globalCtx->actorCtx.unk3 = 0; } - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { arg1 = 0; } gSaveContext.unk_3F32 = arg1; @@ -2884,7 +2884,7 @@ s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { if (gSaveContext.unk_3F28 == 7) { globalCtx->actorCtx.unk3 = 0; } - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { arg1 = 0; } gSaveContext.unk_3F32 = arg1; @@ -2943,7 +2943,7 @@ s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { if (gSaveContext.unk_3F28 == 7) { globalCtx->actorCtx.unk3 = 0; } - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { arg1 = 0; } gSaveContext.save.playerData.magic -= arg1; @@ -3029,7 +3029,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 temp; - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { func_80116114(); } @@ -3072,7 +3072,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { break; case 2: - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32); if (gSaveContext.save.playerData.magic <= 0) { @@ -3088,7 +3088,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { case 3: case 4: case 6: - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { func_80116114(); } break; @@ -3117,20 +3117,20 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { interfaceCtx->unk_258--; if (interfaceCtx->unk_258 == 0) { - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } interfaceCtx->unk_258 = 80; } } } - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { func_80116114(); } break; case 10: - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3145,7 +3145,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->unk_258--; if (interfaceCtx->unk_258 == 0) { - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3155,7 +3155,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { } } } - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { func_80116114(); } break; @@ -3166,7 +3166,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->unk_258--; if (interfaceCtx->unk_258 == 0) { - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3176,7 +3176,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { } } } - if (!(gSaveContext.save.weekEventReg[0xE] & 8)) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { func_80116114(); } break; @@ -3230,7 +3230,7 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -3241,7 +3241,7 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); } else { - if (gSaveContext.save.weekEventReg[0xE] & 8) { + if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -5657,7 +5657,7 @@ void Interface_Update(GlobalContext* globalCtx) { if (gSaveContext.unk_3DD0[5] == 0) { if ((D_801BF8DC == 1) || (D_801BF8DC == 4)) { - if (CUR_FORM != 2) { + if (CUR_FORM != PLAYER_FORM_ZORA) { if (globalCtx->gameOverCtx.state == 0) { if ((gSaveContext.save.playerData.health >> 1) != 0) { gSaveContext.unk_3DD0[5] = 8; @@ -5788,4 +5788,116 @@ void func_80121F94(void) { func_80174F9C(func_8010E968, NULL); } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121FC4.s") +// OoT func_801109B0 (from z_construct.c) +void Interface_Init(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s32 i; + s32 pad; + size_t parameterSize; + + bzero(interfaceCtx, 0x348); + + gSaveContext.sunsSongState = 0; + gSaveContext.unk_3F20 = 0; + gSaveContext.unk_3F22 = 0; + + View_Init(&interfaceCtx->view, globalCtx->state.gfxCtx); + + interfaceCtx->unk_258 = 0x10; + interfaceCtx->unkTimer = 200; + + parameterSize = (u32)_parameter_staticSegmentRomEnd - (u32)_parameter_staticSegmentRomStart; + + interfaceCtx->parameterSegment = THA_AllocEndAlign16(&globalCtx->state.heap, parameterSize); + + DmaMgr_SendRequest0(interfaceCtx->parameterSegment, _parameter_staticSegmentRomStart, parameterSize); + + interfaceCtx->doActionSegment = THA_AllocEndAlign16(&globalCtx->state.heap, 0xC90); + DmaMgr_SendRequest0(interfaceCtx->doActionSegment, _do_action_staticSegmentRomStart, 0x300); + DmaMgr_SendRequest0(interfaceCtx->doActionSegment + 0x300, _do_action_staticSegmentRomStart + 0x480, 0x180); + + Interface_NewDay(globalCtx, CURRENT_DAY); + + interfaceCtx->iconItemSegment = THA_AllocEndAlign16(&globalCtx->state.heap, 0x4000); + + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < 0xF0) { + Interface_LoadItemIconImpl(globalCtx, 0); + } else if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_UNK_FD)) { + Interface_LoadItemIconImpl(globalCtx, 0); + } + + if (gSaveContext.save.equips.buttonItems[0][1] < 0xF0) { + Interface_LoadItemIconImpl(globalCtx, 1); + } + + if (gSaveContext.save.equips.buttonItems[0][2] < 0xF0) { + Interface_LoadItemIconImpl(globalCtx, 2); + } + + if (gSaveContext.save.equips.buttonItems[0][3] < 0xF0) { + Interface_LoadItemIconImpl(globalCtx, 3); + } + + if (((gSaveContext.unk_3DD0[4] == 4) || (gSaveContext.unk_3DD0[6] == 4)) && + ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && (gSaveContext.unk_3DD0[4] == 4)) { + gSaveContext.unk_3DD0[4] = 1; + gSaveContext.timerX[4] = 0x73; + gSaveContext.timerY[4] = 0x50; + } + + LifeMeter_Init(globalCtx); + func_8010A430(globalCtx); + + gSaveContext.minigameState = 3; + interfaceCtx->unk_2FC[0] = 255; + interfaceCtx->unk_2FC[1] = 165; + interfaceCtx->unk_2FC[2] = 55; + + if (gSaveContext.eventInf[3] & 0x10) { + gSaveContext.eventInf[3] &= 0xEF; + gSaveContext.unk_3DD0[4] = 0; + } + + gSaveContext.unk_3DD0[1] = 0; + gSaveContext.unk_3DE0[1] = 0; + gSaveContext.unk_3E18[1] = 0; + gSaveContext.unk_3E50[1] = 0; + gSaveContext.unk_3E88[1] = 0; + gSaveContext.unk_3EC0[1] = 0; + + for (i = 0; i < 7; i++) { + if (gSaveContext.unk_3DD0[i] == 7) { + gSaveContext.unk_3DD0[i] = 0; + } + } + + D_801BF884 = 0; + D_801BF888 = 0; + + if ((globalCtx->sceneNum != SCENE_MITURIN_BS) && (globalCtx->sceneNum != SCENE_HAKUGIN_BS) && + (globalCtx->sceneNum != SCENE_SEA_BS) && (globalCtx->sceneNum != SCENE_INISIE_BS) && + (globalCtx->sceneNum != SCENE_LAST_BS) && (globalCtx->sceneNum != SCENE_MITURIN) && + (globalCtx->sceneNum != SCENE_HAKUGIN) && (globalCtx->sceneNum != SCENE_SEA) && + (globalCtx->sceneNum != SCENE_INISIE_N) && (globalCtx->sceneNum != SCENE_INISIE_R) && + (globalCtx->sceneNum != SCENE_LAST_DEKU) && (globalCtx->sceneNum != SCENE_LAST_GORON) && + (globalCtx->sceneNum != SCENE_LAST_ZORA) && (globalCtx->sceneNum != SCENE_LAST_LINK)) { + + gSaveContext.eventInf[5] &= 0xF7; + gSaveContext.eventInf[5] &= 0xEF; + gSaveContext.eventInf[5] &= 0xDF; + gSaveContext.eventInf[5] &= 0xBF; + gSaveContext.eventInf[5] &= 0x7F; + gSaveContext.eventInf[6] &= 0xFE; + gSaveContext.eventInf[6] &= 0xFD; + gSaveContext.eventInf[6] &= 0xFB; + gSaveContext.eventInf[6] &= 0xF7; + } + + sFinalHoursClockFrameEnvBlue = 0; + sFinalHoursClockFrameEnvGreen = sFinalHoursClockFrameEnvBlue; + sFinalHoursClockFrameEnvRed = sFinalHoursClockFrameEnvGreen; + sFinalHoursClockDigitsRed = sFinalHoursClockFrameEnvRed; + sFinalHoursClockColorTimer = 0xF; + sFinalHoursClockColorTargetIndex = 0; +} diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 7cbc92ecc..edfbd827a 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2166,7 +2166,7 @@ 0x80121064:("Interface_AllocStory",), 0x801210E0:("Interface_Update",), 0x80121F94:("func_80121F94",), - 0x80121FC4:("func_80121FC4",), + 0x80121FC4:("Interface_Init",), 0x801224E0:("Path_GetByIndex",), 0x80122524:("Path_OrientAndGetDistSq",), 0x801225CC:("Path_CopyLastPoint",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index a3a8c92d6..4082245a0 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1680,7 +1680,7 @@ asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x8 asm/non_matchings/code/z_parameter/Interface_AllocStory.s,Interface_AllocStory,0x80121064,0x1F asm/non_matchings/code/z_parameter/Interface_Update.s,Interface_Update,0x801210E0,0x3AD asm/non_matchings/code/z_parameter/func_80121F94.s,func_80121F94,0x80121F94,0xC -asm/non_matchings/code/z_parameter/func_80121FC4.s,func_80121FC4,0x80121FC4,0x147 +asm/non_matchings/code/z_parameter/Interface_Init.s,Interface_Init,0x80121FC4,0x147 asm/non_matchings/code/z_path/func_801224E0.s,func_801224E0,0x801224E0,0x11 asm/non_matchings/code/z_path/func_80122524.s,func_80122524,0x80122524,0x2A asm/non_matchings/code/z_path/func_801225CC.s,func_801225CC,0x801225CC,0x25 From ff5835a6b64f9434ed51e9c58446c7d0206cf353 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Apr 2022 23:23:13 +1000 Subject: [PATCH 060/160] Small cleanup --- src/code/z_parameter.c | 68 ++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f9382fddb..e056412d3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -598,7 +598,7 @@ void Interface_NewDay(GlobalContext* globalCtx, s32 day) { // Loads day number from week_static for the three-day clock DmaMgr_SendRequest0((u32)globalCtx->interfaceCtx.doActionSegment + 0x780, - (u32)_week_staticSegmentRomStart + i * 0x510, 0x510); + (u32)SEGMENT_ROM_START(week_static) + i * 0x510, 0x510); // i is used to store sceneId for (i = 0; i < 120; i++) { @@ -1862,7 +1862,7 @@ void Interface_InitMinigame(GlobalContext* globalCtx) { void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 btn) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - func_80178E3C(_icon_item_static_testSegmentRomStart, GET_CUR_FORM_BTN_ITEM(btn), + func_80178E3C(SEGMENT_ROM_START(icon_item_static_test), GET_CUR_FORM_BTN_ITEM(btn), &interfaceCtx->iconItemSegment[(u32)btn * 0x1000], 0x1000); } @@ -2659,7 +2659,7 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l if (action != DO_ACTION_NONE) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, (u32)interfaceCtx->doActionSegment + (loadOffset * 0x180), - (u32)_do_action_staticSegmentRomStart + (action * 0x180), 0x180, 0, + (u32)SEGMENT_ROM_START(do_action_static) + (action * 0x180), 0x180, 0, &interfaceCtx->loadQueue, 0); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); return; @@ -5319,8 +5319,8 @@ void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { void Interface_AllocStory(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - interfaceCtx->storyAddr = (u32)_story_staticSegmentRomStart; - interfaceCtx->storySize = (u32)_story_staticSegmentRomEnd - (u32)_story_staticSegmentRomStart; + interfaceCtx->storyAddr = SEGMENT_ROM_START(story_static); + interfaceCtx->storySize = SEGMENT_ROM_SIZE(story_static); if (interfaceCtx->storySegment == NULL) { interfaceCtx->storySegment = ZeldaArena_Malloc(interfaceCtx->storySize); @@ -5790,12 +5790,12 @@ void func_80121F94(void) { // OoT func_801109B0 (from z_construct.c) void Interface_Init(GlobalContext* globalCtx) { - InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - s32 i; s32 pad; - size_t parameterSize; + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + size_t parameterStaticSize; + s32 i; - bzero(interfaceCtx, 0x348); + bzero(interfaceCtx, sizeof(InterfaceContext)); gSaveContext.sunsSongState = 0; gSaveContext.unk_3F20 = 0; @@ -5806,15 +5806,13 @@ void Interface_Init(GlobalContext* globalCtx) { interfaceCtx->unk_258 = 0x10; interfaceCtx->unkTimer = 200; - parameterSize = (u32)_parameter_staticSegmentRomEnd - (u32)_parameter_staticSegmentRomStart; - - interfaceCtx->parameterSegment = THA_AllocEndAlign16(&globalCtx->state.heap, parameterSize); - - DmaMgr_SendRequest0(interfaceCtx->parameterSegment, _parameter_staticSegmentRomStart, parameterSize); + parameterStaticSize = SEGMENT_ROM_SIZE(parameter_static); + interfaceCtx->parameterSegment = THA_AllocEndAlign16(&globalCtx->state.heap, parameterStaticSize); + DmaMgr_SendRequest0(interfaceCtx->parameterSegment, SEGMENT_ROM_START(parameter_static), parameterStaticSize); interfaceCtx->doActionSegment = THA_AllocEndAlign16(&globalCtx->state.heap, 0xC90); - DmaMgr_SendRequest0(interfaceCtx->doActionSegment, _do_action_staticSegmentRomStart, 0x300); - DmaMgr_SendRequest0(interfaceCtx->doActionSegment + 0x300, _do_action_staticSegmentRomStart + 0x480, 0x180); + DmaMgr_SendRequest0(interfaceCtx->doActionSegment, SEGMENT_ROM_START(do_action_static), 0x300); + DmaMgr_SendRequest0(interfaceCtx->doActionSegment + 0x300, SEGMENT_ROM_START(do_action_static) + 0x480, 0x180); Interface_NewDay(globalCtx, CURRENT_DAY); @@ -5827,23 +5825,23 @@ void Interface_Init(GlobalContext* globalCtx) { Interface_LoadItemIconImpl(globalCtx, 0); } - if (gSaveContext.save.equips.buttonItems[0][1] < 0xF0) { + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) < 0xF0) { Interface_LoadItemIconImpl(globalCtx, 1); } - if (gSaveContext.save.equips.buttonItems[0][2] < 0xF0) { + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) < 0xF0) { Interface_LoadItemIconImpl(globalCtx, 2); } - if (gSaveContext.save.equips.buttonItems[0][3] < 0xF0) { + if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) < 0xF0) { Interface_LoadItemIconImpl(globalCtx, 3); } if (((gSaveContext.unk_3DD0[4] == 4) || (gSaveContext.unk_3DD0[6] == 4)) && ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && (gSaveContext.unk_3DD0[4] == 4)) { gSaveContext.unk_3DD0[4] = 1; - gSaveContext.timerX[4] = 0x73; - gSaveContext.timerY[4] = 0x50; + gSaveContext.timerX[4] = 115; + gSaveContext.timerY[4] = 80; } LifeMeter_Init(globalCtx); @@ -5855,7 +5853,7 @@ void Interface_Init(GlobalContext* globalCtx) { interfaceCtx->unk_2FC[2] = 55; if (gSaveContext.eventInf[3] & 0x10) { - gSaveContext.eventInf[3] &= 0xEF; + gSaveContext.eventInf[3] &= (u8)~0x10; gSaveContext.unk_3DD0[4] = 0; } @@ -5883,21 +5881,19 @@ void Interface_Init(GlobalContext* globalCtx) { (globalCtx->sceneNum != SCENE_LAST_DEKU) && (globalCtx->sceneNum != SCENE_LAST_GORON) && (globalCtx->sceneNum != SCENE_LAST_ZORA) && (globalCtx->sceneNum != SCENE_LAST_LINK)) { - gSaveContext.eventInf[5] &= 0xF7; - gSaveContext.eventInf[5] &= 0xEF; - gSaveContext.eventInf[5] &= 0xDF; - gSaveContext.eventInf[5] &= 0xBF; - gSaveContext.eventInf[5] &= 0x7F; - gSaveContext.eventInf[6] &= 0xFE; - gSaveContext.eventInf[6] &= 0xFD; - gSaveContext.eventInf[6] &= 0xFB; - gSaveContext.eventInf[6] &= 0xF7; + gSaveContext.eventInf[5] &= (u8)~0x8; + gSaveContext.eventInf[5] &= (u8)~0x10; + gSaveContext.eventInf[5] &= (u8)~0x20; + gSaveContext.eventInf[5] &= (u8)~0x40; + gSaveContext.eventInf[5] &= (u8)~0x80; + gSaveContext.eventInf[6] &= (u8)~0x1; + gSaveContext.eventInf[6] &= (u8)~0x2; + gSaveContext.eventInf[6] &= (u8)~0x4; + gSaveContext.eventInf[6] &= (u8)~0x8; } - sFinalHoursClockFrameEnvBlue = 0; - sFinalHoursClockFrameEnvGreen = sFinalHoursClockFrameEnvBlue; - sFinalHoursClockFrameEnvRed = sFinalHoursClockFrameEnvGreen; - sFinalHoursClockDigitsRed = sFinalHoursClockFrameEnvRed; - sFinalHoursClockColorTimer = 0xF; + sFinalHoursClockDigitsRed = sFinalHoursClockFrameEnvRed = sFinalHoursClockFrameEnvGreen = + sFinalHoursClockFrameEnvBlue = 0; + sFinalHoursClockColorTimer = 15; sFinalHoursClockColorTargetIndex = 0; } From e672bc95e053f194e96278be9ba2d15928ffeb58 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 09:02:14 +1000 Subject: [PATCH 061/160] Match Interface_DrawMinigameIcons --- src/code/z_parameter.c | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e056412d3..e7a6551cb 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3239,7 +3239,7 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gSPTextureRectangle( OVERLAY_DISP++, 104, (magicBarY + 3) << 2, ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, - (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); @@ -3368,7 +3368,8 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.options.language], G_IM_FMT_IA, 32, 12, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, 0x03DC, 0x0048, 0x045C, 0x0078, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + gSPTextureRectangle(OVERLAY_DISP++, 0x03DC, 0x0048, 0x045C, 0x0078, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); } sCUpTimer--; @@ -4748,7 +4749,6 @@ void Interface_DrawTimers(GlobalContext* globalCtx); void Interface_UpdateTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s") -#ifdef NON_EQUIVALENT void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 sp42; @@ -4758,29 +4758,32 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { s16 phi_a0; s16 phi_a1; + OPEN_DISPS(globalCtx->state.gfxCtx); + func_8012C654(globalCtx->state.gfxCtx); if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { + // Carrots rendering if the action corresponds to riding a horse if (interfaceCtx->unk_212 == 8) { + // Load Carrot Icon gDPLoadTextureBlock(OVERLAY_DISP++, gCarrotIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - if (interfaceCtx->unk_280 != 0) { - sp3C = 200; - } else { - sp3C = 56; - } + sp3E = 110; + sp3C = (interfaceCtx->unk_280 != 0) ? 200 : 56; - for (sp42 = 1, sp3E = 110; sp42 < 7; sp42++, sp3E += 16) { + // Draw 6 carrots + for (sp42 = 1; sp42 < 7; sp42++, sp3E += 16) { + // Carrot Color (based on availability) if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < sp42)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 150, 255, interfaceCtx->aAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha); } - gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), (sp3E * 4), ((sp3C + 0x10) * 4), - G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + gSPTextureRectangle(OVERLAY_DISP++, sp3E << 2, sp3C << 2, (sp3E + 16) << 2, (sp3C + 16) << 2, + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -4788,9 +4791,9 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - sp3E = 0x14; phi_a0 = 0x18; phi_a1 = 0x10; + sp3E = 0x14; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { sp3C = 0x4B; } else { @@ -4811,14 +4814,14 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } else if (globalCtx->sceneNum == 0x37) { + phi_a0 = 0x10; + phi_a1 = 0x1E; + sp3E = 0x18; gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha); gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255); gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 30, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - sp3E = 0x18; - phi_a0 = 0x10; - phi_a1 = 0x1E; } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); @@ -4828,14 +4831,14 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { } } - gSPTextureRectangle(OVERLAY_DISP++, (sp3E * 4), (sp3C * 4), ((sp3E + phi_a0) * 4), ((sp3C + phi_a1) * 4), - G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + gSPTextureRectangle(OVERLAY_DISP++, (sp3E << 2), (sp3C << 2), ((sp3E + phi_a0) << 2), + ((sp3C + phi_a1) << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - if (globalCtx->sceneNum == 0x37) { + if (globalCtx->sceneNum == SCENE_30GYOSON) { sp3E += 0x14; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { sp3C = 0x57; @@ -4848,7 +4851,6 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { for (sp42 = sp40 = 0; sp42 < 4; sp42++) { if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) { - // (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]) OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8, 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370); @@ -4861,11 +4863,9 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); } } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -#else -void Interface_DrawMinigameIcons(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s") -#endif // rupeeDigitsFirst s16 D_801BFD1C[] = { 1, 0, 0, 0 }; From 76e88cc314c9fdc9a5daedf826d1e8a5d0a86688 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 12:30:20 +1000 Subject: [PATCH 062/160] Interface_InitVertices WIP --- src/code/z_parameter.c | 281 +++++++++++++++++++++++++++++++++-------- 1 file changed, 230 insertions(+), 51 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e7a6551cb..c2f72fc27 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -309,32 +309,6 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -s16 D_801BFA04[] = { - 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, -}; - -s16 D_801BFA1C[] = { - 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, -}; - -s16 D_801BFA34[] = { - 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, -}; - -s16 D_801BFA4C[] = { - 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, -}; - -s16 D_801BFA64[] = { - 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, -}; - -s16 D_801BFA74[] = { - 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, -}; - -s32 D_801BFA84 = 0; - Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, @@ -476,9 +450,216 @@ Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidt return displayListHead; } +s16 D_801BFA04[] = { + 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, +}; +s16 D_801BFA1C[] = { + 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, +}; +s16 D_801BFA34[] = { + 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, +}; +s16 D_801BFA4C[] = { + 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, +}; +s16 D_801BFA64[] = { + 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, +}; +s16 D_801BFA74[] = { + 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, +}; +#ifdef NON_MATCHING +void Interface_InitVertices(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + s16 i; + s16 j; + s16 k; + s16 counter; + s16 offset; + + globalCtx->interfaceCtx.actionVtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, 108 * sizeof(Vtx)); + + // clang-format off + for (counter = 0, i = 0; i < 44; i += 4, counter++) { + interfaceCtx->actionVtx[i].v.ob[0] = + interfaceCtx->actionVtx[i + 2].v.ob[0] = D_801BFA04[counter]; + + interfaceCtx->actionVtx[i + 1].v.ob[0] = + interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + D_801BFA1C[counter]; + + interfaceCtx->actionVtx[i].v.ob[1] = + interfaceCtx->actionVtx[i + 1].v.ob[1] = D_801BFA34[counter]; + + interfaceCtx->actionVtx[i + 2].v.ob[1] = + interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - D_801BFA4C[counter]; + + interfaceCtx->actionVtx[i].v.ob[2] = + interfaceCtx->actionVtx[i + 1].v.ob[2] = + interfaceCtx->actionVtx[i + 2].v.ob[2] = + interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; + + interfaceCtx->actionVtx[i].v.flag = + interfaceCtx->actionVtx[i + 1].v.flag = + interfaceCtx->actionVtx[i + 2].v.flag = + interfaceCtx->actionVtx[i + 3].v.flag = 0; + + interfaceCtx->actionVtx[i].v.tc[0] = + interfaceCtx->actionVtx[i].v.tc[1] = + interfaceCtx->actionVtx[i + 1].v.tc[1] = + interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; + + interfaceCtx->actionVtx[i + 1].v.tc[0] = + interfaceCtx->actionVtx[i + 3].v.tc[0] = D_801BFA1C[counter] << 5; + + interfaceCtx->actionVtx[i + 2].v.tc[1] = + interfaceCtx->actionVtx[i + 3].v.tc[1] = D_801BFA4C[counter] << 5; + + interfaceCtx->actionVtx[i].v.cn[0] = + interfaceCtx->actionVtx[i + 1].v.cn[0] = + interfaceCtx->actionVtx[i + 2].v.cn[0] = + interfaceCtx->actionVtx[i + 3].v.cn[0] = + interfaceCtx->actionVtx[i].v.cn[1] = + interfaceCtx->actionVtx[i + 1].v.cn[1] = + interfaceCtx->actionVtx[i + 2].v.cn[1] = + interfaceCtx->actionVtx[i + 3].v.cn[1] = + interfaceCtx->actionVtx[i].v.cn[2] = + interfaceCtx->actionVtx[i + 1].v.cn[2] = + interfaceCtx->actionVtx[i + 2].v.cn[2] = + interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; + + interfaceCtx->actionVtx[i].v.cn[3] = + interfaceCtx->actionVtx[i + 1].v.cn[3] = + interfaceCtx->actionVtx[i + 2].v.cn[3] = + interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; + } + + interfaceCtx->actionVtx[1].v.tc[0] = + interfaceCtx->actionVtx[3].v.tc[0] = + interfaceCtx->actionVtx[2].v.tc[1] = + interfaceCtx->actionVtx[3].v.tc[1] = 0x400; + + interfaceCtx->actionVtx[5].v.tc[0] = + interfaceCtx->actionVtx[7].v.tc[0] = + interfaceCtx->actionVtx[6].v.tc[1] = + interfaceCtx->actionVtx[7].v.tc[1] = 0x400; + + for (offset = 2, j = 0; j < 2; j++, offset -= 2) { + for (k = 0; k < 8; k++, i += 4) { + if ((interfaceCtx->minigameRewardType == 1) || ((interfaceCtx->minigameRewardType == 3) && (interfaceCtx->unk_28A[0] == 6))) { + interfaceCtx->actionVtx[i].v.ob[0] = + interfaceCtx->actionVtx[i + 2].v.ob[0] = -((D_801BFA64[k] - offset) + 0x10); + + interfaceCtx->actionVtx[i + 1].v.ob[0] = + interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + + interfaceCtx->actionVtx[i].v.ob[1] = + interfaceCtx->actionVtx[i + 1].v.ob[1] = (D_801BFA74[k] - offset) + 0x10; + + interfaceCtx->actionVtx[i + 2].v.ob[1] = + interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + + } else if ((interfaceCtx->minigameRewardType == 2) || (interfaceCtx->minigameRewardType == 3)) { + interfaceCtx->actionVtx[i].v.ob[0] = + interfaceCtx->actionVtx[i + 2].v.ob[0] = -(interfaceCtx->unk_2AA[k] - offset + 0x10); + + interfaceCtx->actionVtx[i + 1].v.ob[0] = + interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + + interfaceCtx->actionVtx[i].v.ob[1] = + interfaceCtx->actionVtx[i + 1].v.ob[1] = 0x10 - offset; + + interfaceCtx->actionVtx[i + 2].v.ob[1] = + interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + + } else { + interfaceCtx->actionVtx[i].v.ob[0] = + interfaceCtx->actionVtx[i + 2].v.ob[0] = -(0xD8 - offset); + + interfaceCtx->actionVtx[i + 1].v.ob[0] = + interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + + interfaceCtx->actionVtx[i].v.ob[1] = + interfaceCtx->actionVtx[i + 1].v.ob[1] = 0x18 - offset; + + interfaceCtx->actionVtx[i + 2].v.ob[1] = + interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + } + + interfaceCtx->actionVtx[i].v.ob[2] = + interfaceCtx->actionVtx[i + 1].v.ob[2] = + interfaceCtx->actionVtx[i + 2].v.ob[2] = + interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; + + interfaceCtx->actionVtx[i].v.flag = + interfaceCtx->actionVtx[i + 1].v.flag = + interfaceCtx->actionVtx[i + 2].v.flag = + interfaceCtx->actionVtx[i + 3].v.flag = 0; + + interfaceCtx->actionVtx[i].v.tc[0] = + interfaceCtx->actionVtx[i].v.tc[1] = + interfaceCtx->actionVtx[i + 1].v.tc[1] = + interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; + + interfaceCtx->actionVtx[i + 1].v.tc[0] = + interfaceCtx->actionVtx[i + 3].v.tc[0] = 0x400; + + interfaceCtx->actionVtx[i + 2].v.tc[1] = + interfaceCtx->actionVtx[i + 3].v.tc[1] = 0x420; + + interfaceCtx->actionVtx[i].v.cn[0] = + interfaceCtx->actionVtx[i + 1].v.cn[0] = + interfaceCtx->actionVtx[i + 2].v.cn[0] = + interfaceCtx->actionVtx[i + 3].v.cn[0] = + interfaceCtx->actionVtx[i].v.cn[1] = + interfaceCtx->actionVtx[i + 1].v.cn[1] = + interfaceCtx->actionVtx[i + 2].v.cn[1] = + interfaceCtx->actionVtx[i + 3].v.cn[1] = + interfaceCtx->actionVtx[i].v.cn[2] = + interfaceCtx->actionVtx[i + 1].v.cn[2] = + interfaceCtx->actionVtx[i + 2].v.cn[2] = + interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; + + interfaceCtx->actionVtx[i].v.cn[3] = + interfaceCtx->actionVtx[i + 1].v.cn[3] = + interfaceCtx->actionVtx[i + 2].v.cn[3] = + interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; + } + } + + interfaceCtx->beatingHeartVtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, 4 * sizeof(Vtx)); + + interfaceCtx->beatingHeartVtx[0].v.ob[0] = interfaceCtx->beatingHeartVtx[2].v.ob[0] = -8; + interfaceCtx->beatingHeartVtx[1].v.ob[0] = interfaceCtx->beatingHeartVtx[3].v.ob[0] = 8; + interfaceCtx->beatingHeartVtx[0].v.ob[1] = interfaceCtx->beatingHeartVtx[1].v.ob[1] = 8; + interfaceCtx->beatingHeartVtx[2].v.ob[1] = interfaceCtx->beatingHeartVtx[3].v.ob[1] = -8; + + interfaceCtx->beatingHeartVtx[0].v.ob[2] = interfaceCtx->beatingHeartVtx[1].v.ob[2] = + interfaceCtx->beatingHeartVtx[2].v.ob[2] = interfaceCtx->beatingHeartVtx[3].v.ob[2] = 0; + + interfaceCtx->beatingHeartVtx[0].v.flag = interfaceCtx->beatingHeartVtx[1].v.flag = + interfaceCtx->beatingHeartVtx[2].v.flag = interfaceCtx->beatingHeartVtx[3].v.flag = 0; + + interfaceCtx->beatingHeartVtx[0].v.tc[0] = interfaceCtx->beatingHeartVtx[0].v.tc[1] = + interfaceCtx->beatingHeartVtx[1].v.tc[1] = interfaceCtx->beatingHeartVtx[2].v.tc[0] = 0; + interfaceCtx->beatingHeartVtx[1].v.tc[0] = interfaceCtx->beatingHeartVtx[2].v.tc[1] = + interfaceCtx->beatingHeartVtx[3].v.tc[0] = interfaceCtx->beatingHeartVtx[3].v.tc[1] = 512; + + interfaceCtx->beatingHeartVtx[0].v.cn[0] = interfaceCtx->beatingHeartVtx[1].v.cn[0] = + interfaceCtx->beatingHeartVtx[2].v.cn[0] = interfaceCtx->beatingHeartVtx[3].v.cn[0] = + interfaceCtx->beatingHeartVtx[0].v.cn[1] = interfaceCtx->beatingHeartVtx[1].v.cn[1] = + interfaceCtx->beatingHeartVtx[2].v.cn[1] = interfaceCtx->beatingHeartVtx[3].v.cn[1] = + interfaceCtx->beatingHeartVtx[0].v.cn[2] = interfaceCtx->beatingHeartVtx[1].v.cn[2] = + interfaceCtx->beatingHeartVtx[2].v.cn[2] = interfaceCtx->beatingHeartVtx[3].v.cn[2] = + interfaceCtx->beatingHeartVtx[0].v.cn[3] = interfaceCtx->beatingHeartVtx[1].v.cn[3] = + interfaceCtx->beatingHeartVtx[2].v.cn[3] = interfaceCtx->beatingHeartVtx[3].v.cn[3] = 255; + // clang-format on +} +#else void Interface_InitVertices(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_InitVertices.s") +#endif +s32 D_801BFA84 = 0; void func_8010E968(s32 arg0) { s32 btnAPressed; @@ -4806,29 +4987,27 @@ void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { gDPLoadTextureBlock(OVERLAY_DISP++, gBeaverRingIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + } else if (globalCtx->sceneNum == SCENE_DOUJOU) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 140, 50, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gSwordTrainingLogIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } else if (globalCtx->sceneNum == SCENE_30GYOSON) { + phi_a0 = 0x10; + phi_a1 = 0x1E; + sp3E = 0x18; + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 30, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); } else { - if (globalCtx->sceneNum == 0x54) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 140, 50, interfaceCtx->bAlpha); - gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); - gDPLoadTextureBlock(OVERLAY_DISP++, gSwordTrainingLogIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); - } else if (globalCtx->sceneNum == 0x37) { - phi_a0 = 0x10; - phi_a1 = 0x1E; - sp3E = 0x18; - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha); - gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255); - gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, - 30, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); - gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); - gDPLoadTextureBlock(OVERLAY_DISP++, gArcheryScoreIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 16, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); - } + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); + gDPLoadTextureBlock(OVERLAY_DISP++, gArcheryScoreIconTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); } gSPTextureRectangle(OVERLAY_DISP++, (sp3E << 2), (sp3C << 2), ((sp3E + phi_a0) << 2), @@ -5041,7 +5220,7 @@ void Interface_Draw(GlobalContext* globalCtx) { TEXEL0, 0, PRIMITIVE, 0); counterDigits[2] = 0; - counterDigits[3] = func_8012F22C(globalCtx->sceneNum); + counterDigits[3] = Inventory_GetSkullTokenCount(globalCtx->sceneNum); while (counterDigits[3] >= 10) { counterDigits[2]++; @@ -5135,7 +5314,7 @@ void Interface_Draw(GlobalContext* globalCtx) { func_8010A54C(globalCtx); if ((SREG(94) != 2) && (SREG(94) != 3)) { - func_800B5208(&globalCtx->actorCtx.targetContext, globalCtx); // Draw Z-Target + Actor_DrawZTarget(&globalCtx->actorCtx.targetContext, globalCtx); } func_8012C654(globalCtx->state.gfxCtx); @@ -5275,7 +5454,7 @@ void Interface_Draw(GlobalContext* globalCtx) { G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, ((void)0, 320), phi_a2 * 4, ((void)0, 960), phi_a2 * 4 + 0x20, + gSPTextureRectangle(OVERLAY_DISP++, ((void)0, 320), phi_a2 * 4, ((void)0, 960), (phi_a2 + 8) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } From 2b5706cfb4c88a72c02fe53d0bd0490d46bba8b1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 13:14:26 +1000 Subject: [PATCH 063/160] Match the 2 u64 timer math functions --- src/code/z_parameter.c | 54 ++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c2f72fc27..ab12643f7 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -731,42 +731,36 @@ void func_8010EBA0(s16 timer, s16 timerId) { D_801BF8F0 = 0; } -// u64 nonsense -#ifdef NON_EQUIVALENT s32 func_8010EC54(s16 timerId) { u64 time; - s16 sp22; - s16 sp20; - s16 sp1E; - s16 sp1C; - s16 temp_a0; - s16 final; + s16 timeArr[6]; time = gSaveContext.unk_3DE0[timerId]; // hours - time -= (sp1C = time / 36000) * 36000; - if (1) {} + timeArr[0] = time / 36000; + time -= timeArr[0] * 36000; // minutes - time -= (sp1E = time / 6000) * 6000; + timeArr[1] = time / 6000; + time -= timeArr[1] * 6000; // seconds - time -= (sp20 = time / 1000) * 1000; + timeArr[2] = time / 1000; + time -= timeArr[2] * 1000; // 100 milliseconds - time -= (sp22 = time / 100) * 100; + timeArr[3] = time / 100; + time -= timeArr[3] * 100; // 10 miliseconds - time -= (temp_a0 = time / 10) * 10; + timeArr[4] = time / 10; + time -= timeArr[4] * 10; - final = (sp1C << 0x14); + timeArr[5] = time; - return time | final | (sp1E << 0x10) | (sp20 << 0xC) | (sp22 << 8) | (temp_a0 << 4); + return (timeArr[0] << 0x14) | (timeArr[1] << 0x10) | (timeArr[2] << 0xC) | (timeArr[3] << 8) | (timeArr[4] << 4) | timeArr[5]; } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") -#endif void Interface_NewDay(GlobalContext* globalCtx, s32 day) { s32 pad; @@ -4897,8 +4891,26 @@ void func_8011C808(GlobalContext* globalCtx) { globalCtx->unk_1887F = 3; } -// u64 nonsense -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") +void func_8011C898(u64 arg0, s16* arg2) { + u64 timer = arg0; + + arg2[0] = timer / 36000; + timer -= arg2[0] * 36000; + + arg2[1] = timer / 6000; + timer -= arg2[1] * 6000; + + arg2[3] = timer / 1000; + timer -= arg2[3] * 1000; + + arg2[4] = timer / 100; + timer -= arg2[4] * 100; + + arg2[6] = timer / 10; + timer -= arg2[6] * 10; + + arg2[7] = timer; +} s32 D_801BFCE4[] = { 0x00000000, From 043dfa0b8a454214810cc6ef71235f97810dd209 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 13:14:45 +1000 Subject: [PATCH 064/160] format --- src/code/z_parameter.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index ab12643f7..f48f23962 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -759,7 +759,8 @@ s32 func_8010EC54(s16 timerId) { timeArr[5] = time; - return (timeArr[0] << 0x14) | (timeArr[1] << 0x10) | (timeArr[2] << 0xC) | (timeArr[3] << 8) | (timeArr[4] << 4) | timeArr[5]; + return (timeArr[0] << 0x14) | (timeArr[1] << 0x10) | (timeArr[2] << 0xC) | (timeArr[3] << 8) | (timeArr[4] << 4) | + timeArr[5]; } void Interface_NewDay(GlobalContext* globalCtx, s32 day) { From 95d97ba63e093274301aacaf58ecd3571f2c9fc9 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 14:16:34 +1000 Subject: [PATCH 065/160] Interface_UpdateTimers WIP --- src/code/z_parameter.c | 130 ++++++++++++++++++++++++++++++++--------- 1 file changed, 101 insertions(+), 29 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f48f23962..5406db861 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -217,7 +217,7 @@ s32 D_801BF934[] = { s32 D_801BF968 = 0; -s32 D_801BF96C = 0; +u8 D_801BF96C = 0; s16 D_801BF970 = 99; @@ -733,34 +733,35 @@ void func_8010EBA0(s16 timer, s16 timerId) { s32 func_8010EC54(s16 timerId) { u64 time; - s16 timeArr[6]; + s16 timerArr[6]; time = gSaveContext.unk_3DE0[timerId]; // hours - timeArr[0] = time / 36000; - time -= timeArr[0] * 36000; + timerArr[0] = time / 36000; + time -= timerArr[0] * 36000; // minutes - timeArr[1] = time / 6000; - time -= timeArr[1] * 6000; + timerArr[1] = time / 6000; + time -= timerArr[1] * 6000; // seconds - timeArr[2] = time / 1000; - time -= timeArr[2] * 1000; + timerArr[2] = time / 1000; + time -= timerArr[2] * 1000; // 100 milliseconds - timeArr[3] = time / 100; - time -= timeArr[3] * 100; + timerArr[3] = time / 100; + time -= timerArr[3] * 100; - // 10 miliseconds - timeArr[4] = time / 10; - time -= timeArr[4] * 10; + // 10 milliseconds + timerArr[4] = time / 10; + time -= timerArr[4] * 10; - timeArr[5] = time; + // milliseconds + timerArr[5] = time; - return (timeArr[0] << 0x14) | (timeArr[1] << 0x10) | (timeArr[2] << 0xC) | (timeArr[3] << 8) | (timeArr[4] << 4) | - timeArr[5]; + return (timerArr[0] << 0x14) | (timerArr[1] << 0x10) | (timerArr[2] << 0xC) | (timerArr[3] << 8) | + (timerArr[4] << 4) | timerArr[5]; } void Interface_NewDay(GlobalContext* globalCtx, s32 day) { @@ -4892,25 +4893,31 @@ void func_8011C808(GlobalContext* globalCtx) { globalCtx->unk_1887F = 3; } -void func_8011C898(u64 arg0, s16* arg2) { - u64 timer = arg0; +void func_8011C898(u64 timer, s16* timerArr) { + u64 time = timer; - arg2[0] = timer / 36000; - timer -= arg2[0] * 36000; + // hours + timerArr[0] = time / 36000; + time -= timerArr[0] * 36000; - arg2[1] = timer / 6000; - timer -= arg2[1] * 6000; + // minutes + timerArr[1] = time / 6000; + time -= timerArr[1] * 6000; - arg2[3] = timer / 1000; - timer -= arg2[3] * 1000; + // seconds + timerArr[3] = time / 1000; + time -= timerArr[3] * 1000; - arg2[4] = timer / 100; - timer -= arg2[4] * 100; + // 100 milliseconds + timerArr[4] = time / 100; + time -= timerArr[4] * 100; - arg2[6] = timer / 10; - timer -= arg2[6] * 10; + // 10 milliseconds + timerArr[6] = time / 10; + time -= timerArr[6] * 10; - arg2[7] = timer; + // milliseconds + timerArr[7] = time; } s32 D_801BFCE4[] = { @@ -4940,8 +4947,73 @@ s16 D_801BFD0C[] = { void Interface_DrawTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") +#ifdef NON_MATCHING +void Interface_UpdateTimers(GlobalContext* globalCtx) { + MessageContext* msgCtx = &globalCtx->msgCtx; + s16 i; + // u64 var0; + // u64 var1; + // u64 var2; + u64 var3; + u64 temp_ret; + // s32 pad[2]; + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (globalCtx->gameOverCtx.state == 0) && + ((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || + ((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { + + if (D_801BF96C != 0) { + temp_ret = osGetTime(); + + for (i = 0; i < 6; i++) { + if (gSaveContext.unk_101A[i] == 1) { + gSaveContext.unk_10B0[i] += temp_ret - D_801BF8F0; + } + } + + D_801BF96C = 0; + } + + D_801BF970 = 99; + + for (i = 0; i < 6; i++) { + if (gSaveContext.unk_101A[i] == 1) { + temp_ret = osGetTime(); + temp_ret = temp_ret - gSaveContext.unk_10B0[i]; + var3 = temp_ret - gSaveContext.unk_1020[i]; + var3 = var3 / 1000; + var3 = var3 * 64; + var3 = var3 / 3000; + if (var3 == 0) { + gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; + } else if (gSaveContext.unk_1050[i] >= var3) { + if (gSaveContext.unk_1050[i] <= var3) { + gSaveContext.unk_1080[i] = 0; + } else { + gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; + } + } else { + gSaveContext.unk_1080[i] = 0; + + if (gSaveContext.save.inventory.items[SLOT_BOTTLE_1 + i] == ITEM_HOT_SPRING_WATER) { + Inventory_UpdateItem(globalCtx, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); + Message_StartTextbox(globalCtx, 0xFA, NULL); + } + gSaveContext.unk_101A[i] = 0; + } + } + } + } else if (D_801BF96C == 0) { + D_801BF8F0 = osGetTime(); + D_801BF96C = 1; + } +} +#else void Interface_UpdateTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s") +#endif void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 7831a142f866b83c05c46529608ea2c94a50703e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 15 Apr 2022 20:05:37 +1000 Subject: [PATCH 066/160] func_80111CB4 WIP --- include/functions.h | 2 +- src/code/z_parameter.c | 267 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 259 insertions(+), 10 deletions(-) diff --git a/include/functions.h b/include/functions.h index 6d69c9913..9b8dff325 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2735,7 +2735,7 @@ void func_80165690(void); Gfx* func_801660B8(GlobalContext* globalCtx, Gfx* gfx); void Play_Fini(GameState* gameState); // void func_801663C4(void); -// void func_80166644(void); +void func_80166644(u8* arg0, void* arg1, s32 arg2); // void func_801668B4(void); void func_80166968(GlobalContext* globalCtx, Camera* camera); void func_80166B30(GlobalContext* globalCtx); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 5406db861..99c9e7b3d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -217,7 +217,7 @@ s32 D_801BF934[] = { s32 D_801BF968 = 0; -u8 D_801BF96C = 0; +u8 D_801BF96C = false; s16 D_801BF970 = 99; @@ -1642,7 +1642,7 @@ void func_80110038(GlobalContext* globalCtx) { } if (phi_t3 || (gSaveContext.unk_3F22 != 0xC)) { gSaveContext.unk_3F22 = 0; - Interface_ChangeAlpha(0xC); + Interface_ChangeAlpha(12); phi_t3 = false; } } else if (player->stateFlags3 & 0x1000000) { @@ -1991,8 +1991,257 @@ void func_80110038(GlobalContext* globalCtx) { } } +#ifdef NON_MATCHING +void func_80111CB4(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + Player* player = GET_PLAYER(globalCtx); + void* phi_a1; + s32 sp28; + s32 pad; + s32 pad2; + + sp28 = false; + if (gSaveContext.save.cutscene < 0xFFF0) { + gSaveContext.unk_3F1E = 0; + if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || + (!(gSaveContext.eventInf[4] & 2) && (globalCtx->unk_1887C >= 2))) { + if ((player->stateFlags1 & 0x800000) && (player->currentMask == PLAYER_MASK_BLAST) && + (gSaveContext.unk_1015 == 0xFF)) { + sp28 = true; + gSaveContext.unk_1015 = 0; + } + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { + gSaveContext.unk_3F1E = 1; + if (globalCtx->sceneNum == SCENE_BOWLING) { + if (gSaveContext.buttonStatus[0] == 0xFF) { + gSaveContext.buttonStatus[0] = 0; + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + } + } else if (gSaveContext.buttonStatus[0] == 0xFF) { + gSaveContext.buttonStatus[0] = 0; + gSaveContext.buttonStatus[1] = 0; + gSaveContext.buttonStatus[2] = 0; + gSaveContext.buttonStatus[3] = 0; + } + Interface_ChangeAlpha(20); + } else { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOW) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU) { + gSaveContext.unk_3F1E = 1; + gSaveContext.buttonStatus[0] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); + gSaveContext.buttonStatus[1] = 0; + gSaveContext.buttonStatus[2] = 0; + gSaveContext.buttonStatus[3] = 0; + if (globalCtx->sceneNum == SCENE_BOWLING) { + if (CURRENT_DAY == 1) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; + } else if (CURRENT_DAY == 2) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMB; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + } + Interface_LoadItemIconImpl(globalCtx, 0); + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + if (globalCtx->unk_1887C >= 2) { + Interface_LoadItemIconImpl(globalCtx, 0); + } else if (gSaveContext.save.inventory.items[1] == 0xFF) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + Interface_LoadItemIconImpl(globalCtx, 0); + } + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(6); + } + } + } + } + + if (globalCtx->unk_18B4A != 0) { + Interface_ChangeAlpha(1); + } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && + (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { + Interface_ChangeAlpha(12); + } else if ((gSaveContext.minigameState == 1) && (gSaveContext.eventInf[3] & 0x20)) { + Interface_ChangeAlpha(17); + } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && (gSaveContext.minigameState == 1)) { + Interface_ChangeAlpha(8); + } else if (globalCtx->unk_1887C >= 2) { + Interface_ChangeAlpha(8); + } else if (gSaveContext.save.weekEventReg[8] & 1) { + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(12); + } else if (player->stateFlags1 & 0x800000) { + Interface_ChangeAlpha(12); + } + } + } else { + if (player->stateFlags1 & 0x800000) { + Interface_ChangeAlpha(12); + } + if (globalCtx->sceneNum == SCENE_BOWLING) { + if (CURRENT_DAY == 1) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; + } else if (CURRENT_DAY == 2) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMB; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + } + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + } + if (globalCtx->unk_1887C >= 2) { + Interface_LoadItemIconImpl(globalCtx, 0); + } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + Interface_LoadItemIconImpl(globalCtx, 0); + } + if (gSaveContext.buttonStatus[0] == 0xFF) { + gSaveContext.buttonStatus[0] = 0; + sp28 = true; + } + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(6); + + if (globalCtx->unk_18B4A != 0) { + Interface_ChangeAlpha(1); + } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && + (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { + Interface_ChangeAlpha(12); + } else if (gSaveContext.minigameState == 1) { + Interface_ChangeAlpha(8); + } else if (globalCtx->unk_1887C >= 2) { + Interface_ChangeAlpha(8); + } else if (gSaveContext.save.weekEventReg[8] & 1) { + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(12); + } else if (player->stateFlags1 & 0x800000) { + Interface_ChangeAlpha(12); + } + } + } else { + if (D_801BF884 != 0) { + if (D_801BF884 == 1) { + if (!(globalCtx->actorCtx.unk5 & 4)) { + func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + gSaveContext.pictoPhoto, 0x4600); + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + sp28 = true; + D_801BF884 = 0; + } else { + if (~(globalCtx->state.input[0].press.button | ~0x4000) == 0) { + globalCtx->actorCtx.unk5 &= 0xFFFB; + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + sp28 = true; + D_801BF884 = 0; + } else if ((~(globalCtx->state.input[0].press.button | 0xFFFF7FFF) == 0) || + (func_801A5100() == 1)) { + if (!(gSaveContext.eventInf[4] & 2) || + ((gSaveContext.eventInf[4] & 2) && (ActorCutscene_GetCurrentIndex() == -1))) { + play_sound(0x4850); + gGameInfo->data[0xB9] = 1; + globalCtx->unk_18845 = 1; + D_801BF884 = 2; + D_801BF888 = 1; + } + } + } + } else if (D_801BF884 >= 2) { + if (Message_GetState(&globalCtx->msgCtx) == 4) { + if (Message_ShouldAdvance(globalCtx)) { + globalCtx->unk_18845 = 0; + player->stateFlags1 &= ~0x200; + func_801477B4(globalCtx); + if (globalCtx->msgCtx.choiceIndex != 0) { + func_8019F230(); + func_80115844(globalCtx, 0x12); + Interface_ChangeAlpha(21); + D_801BF884 = 1; + gSaveContext.save.inventory.questItems = + ((void)0, gSaveContext.save.inventory.questItems) & (-1 - gBitFlags[QUEST_UNK_19]); + } else { + func_8019F208(); + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + sp28 = true; + Interface_ChangeAlpha(50); + D_801BF884 = 0; + if (D_801BF888 != 0) { + func_801663C4( + (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + gSaveContext.pictoPhoto, 0x4600); + func_8013A240(globalCtx); + } + globalCtx->actorCtx.unk5 &= 0xFFFB; + gSaveContext.save.inventory.questItems = + ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_UNK_19]; + D_801BF888 = 0; + } + } + } + } + } else { + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(12); + } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->unk_18B4A == 0)) { + gSaveContext.buttonStatus[1] = 0xFF; + gSaveContext.buttonStatus[2] = 0xFF; + gSaveContext.buttonStatus[3] = 0xFF; + Interface_ChangeAlpha(22); + } else if (globalCtx->actorCtx.unk5 & 4) { + if ((((void)0, gSaveContext.save.inventory.questItems) & gBitFlags[QUEST_UNK_19]) == 0) { + func_80115844(globalCtx, 0x12); + Interface_ChangeAlpha(21); + D_801BF884 = 1; + } else { + phi_a1 = (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90; + func_80166644(gSaveContext.pictoPhoto, phi_a1, 0x4600); + globalCtx->unk_18845 = 1; + D_801BF884 = 2; + } + } else { + func_80110038(globalCtx); + } + } + } + } + if (sp28) { + gSaveContext.unk_3F22 = 0; + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + Interface_ChangeAlpha(50); + } + } +} +#else void func_80111CB4(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") +#endif void Interface_SetSceneRestrictions(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -4723,7 +4972,7 @@ void func_8011BF70(GlobalContext* globalCtx) { interfaceCtx->unk_2AA[i] = 0; interfaceCtx->unk_28A[i] = 2; } else if (interfaceCtx->unk_28A[i] == 2) { - interfaceCtx->unk_29A[i] += -0x800; + interfaceCtx->unk_29A[i] -= 0x800; interfaceCtx->unk_2BC[i] -= 8.0f; interfaceCtx->unk_2DC[i] -= 8.0f; if (interfaceCtx->unk_2BC[i] <= 0.0f) { @@ -4964,7 +5213,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { ((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { - if (D_801BF96C != 0) { + if (D_801BF96C) { temp_ret = osGetTime(); for (i = 0; i < 6; i++) { @@ -4973,7 +5222,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { } } - D_801BF96C = 0; + D_801BF96C = false; } D_801BF970 = 99; @@ -4997,7 +5246,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { } else { gSaveContext.unk_1080[i] = 0; - if (gSaveContext.save.inventory.items[SLOT_BOTTLE_1 + i] == ITEM_HOT_SPRING_WATER) { + if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(globalCtx, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(globalCtx, 0xFA, NULL); } @@ -5005,9 +5254,9 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { } } } - } else if (D_801BF96C == 0) { + } else if (!D_801BF96C) { D_801BF8F0 = osGetTime(); - D_801BF96C = 1; + D_801BF96C = true; } } #else @@ -5815,7 +6064,7 @@ void Interface_Update(GlobalContext* globalCtx) { } break; case 8: - interfaceCtx->unk_282 += -10; + interfaceCtx->unk_282 -= 10; if (interfaceCtx->unk_282 <= 150) { interfaceCtx->unk_280 = 0x1E; } From 6ffce8e97eef04abc42e53ee423d1fdcf1fcf904 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 12:33:12 +1000 Subject: [PATCH 067/160] cleanup --- include/macros.h | 2 + include/z64item.h | 6 +- src/code/z_parameter.c | 316 ++++++++++------------ src/code/z_sram_NES.c | 2 +- src/overlays/actors/ovl_En_Shn/z_en_shn.c | 4 +- src/overlays/actors/ovl_En_Tsn/z_en_tsn.c | 4 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 4 +- 7 files changed, 161 insertions(+), 177 deletions(-) diff --git a/include/macros.h b/include/macros.h index bd76cd90e..a5ca08be3 100644 --- a/include/macros.h +++ b/include/macros.h @@ -81,9 +81,11 @@ #define C_SLOT_EQUIP(form, button) (gSaveContext.save.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 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 GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn))) diff --git a/include/z64item.h b/include/z64item.h index 1c9a8b9ad..f4225ac45 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -43,9 +43,9 @@ typedef enum { /* 0x10 */ QUEST_SONG_STORMS, /* 0x11 */ QUEST_SONG_SUN, /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook - /* 0x17 */ QUEST_SKULL_TOKEN = 0x17, - /* 0x18 */ QUEST_SONG_LULLABY_INTRO, - /* 0x19 */ QUEST_UNK_19, // Photo taken from PictoBox + /* 0x13 */ QUEST_SKULL_TOKEN, + /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, + /* 0x19 */ QUEST_PICTOBOX, // Photo taken from PictoBox /* 0x1C */ QUEST_HEART_PIECE = 0x1C, /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 99c9e7b3d..e98072782 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -163,9 +163,8 @@ static RestrictionFlags sRestrictionFlags[] = { { SCENE_ALLEY, 0x00, 0x00, 0x00 }, }; -s16 D_801BF884 = 0; // pictoBox related - -s16 D_801BF888 = 0; +s16 D_801BF884 = 0; // pictoBox related +s16 D_801BF888 = false; // pictoBox related s16 sHBAScoreTier = 0; @@ -1997,8 +1996,6 @@ void func_80111CB4(GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); void* phi_a1; s32 sp28; - s32 pad; - s32 pad2; sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { @@ -2010,59 +2007,59 @@ void func_80111CB4(GlobalContext* globalCtx) { sp28 = true; gSaveContext.unk_1015 = 0; } + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { gSaveContext.unk_3F1E = 1; if (globalCtx->sceneNum == SCENE_BOWLING) { - if (gSaveContext.buttonStatus[0] == 0xFF) { - gSaveContext.buttonStatus[0] = 0; - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; } - } else if (gSaveContext.buttonStatus[0] == 0xFF) { - gSaveContext.buttonStatus[0] = 0; - gSaveContext.buttonStatus[1] = 0; - gSaveContext.buttonStatus[2] = 0; - gSaveContext.buttonStatus[3] = 0; + } else if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[1] = BTN_ENABLED; + gSaveContext.buttonStatus[2] = BTN_ENABLED; + gSaveContext.buttonStatus[3] = BTN_ENABLED; } + Interface_ChangeAlpha(20); } else { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOW) { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU) { - gSaveContext.unk_3F1E = 1; - gSaveContext.buttonStatus[0] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); - gSaveContext.buttonStatus[1] = 0; - gSaveContext.buttonStatus[2] = 0; - gSaveContext.buttonStatus[3] = 0; - if (globalCtx->sceneNum == SCENE_BOWLING) { - if (CURRENT_DAY == 1) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; - } else if (CURRENT_DAY == 2) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMB; - } else { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; - } - Interface_LoadItemIconImpl(globalCtx, 0); - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; - } else { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; - if (globalCtx->unk_1887C >= 2) { - Interface_LoadItemIconImpl(globalCtx, 0); - } else if (gSaveContext.save.inventory.items[1] == 0xFF) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; - } else { - Interface_LoadItemIconImpl(globalCtx, 0); - } - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; - Interface_ChangeAlpha(6); - } + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOW) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU)) { + gSaveContext.unk_3F1E = 1; + gSaveContext.buttonStatus[0] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); + gSaveContext.buttonStatus[1] = BTN_ENABLED; + gSaveContext.buttonStatus[2] = BTN_ENABLED; + gSaveContext.buttonStatus[3] = BTN_ENABLED; + if (globalCtx->sceneNum == SCENE_BOWLING) { + if (CURRENT_DAY == 1) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; + } else if (CURRENT_DAY == 2) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMB; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } + Interface_LoadItemIconImpl(globalCtx, 0); + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + if (globalCtx->unk_1887C >= 2) { + Interface_LoadItemIconImpl(globalCtx, 0); + } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + Interface_LoadItemIconImpl(globalCtx, 0); + } + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + Interface_ChangeAlpha(6); } } @@ -2078,9 +2075,9 @@ void func_80111CB4(GlobalContext* globalCtx) { } else if (globalCtx->unk_1887C >= 2) { Interface_ChangeAlpha(8); } else if (gSaveContext.save.weekEventReg[8] & 1) { - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if (player->stateFlags1 & 0x800000) { Interface_ChangeAlpha(12); @@ -2090,6 +2087,7 @@ void func_80111CB4(GlobalContext* globalCtx) { if (player->stateFlags1 & 0x800000) { Interface_ChangeAlpha(12); } + if (globalCtx->sceneNum == SCENE_BOWLING) { if (CURRENT_DAY == 1) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; @@ -2098,12 +2096,13 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } + if (globalCtx->unk_1887C >= 2) { Interface_LoadItemIconImpl(globalCtx, 0); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { @@ -2111,13 +2110,15 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { Interface_LoadItemIconImpl(globalCtx, 0); } - if (gSaveContext.buttonStatus[0] == 0xFF) { - gSaveContext.buttonStatus[0] = 0; + + if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + gSaveContext.buttonStatus[0] = BTN_ENABLED; sp28 = true; } - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; + + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; Interface_ChangeAlpha(6); if (globalCtx->unk_18B4A != 0) { @@ -2130,105 +2131,91 @@ void func_80111CB4(GlobalContext* globalCtx) { } else if (globalCtx->unk_1887C >= 2) { Interface_ChangeAlpha(8); } else if (gSaveContext.save.weekEventReg[8] & 1) { - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if (player->stateFlags1 & 0x800000) { Interface_ChangeAlpha(12); } } - } else { - if (D_801BF884 != 0) { - if (D_801BF884 == 1) { - if (!(globalCtx->actorCtx.unk5 & 4)) { - func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), - gSaveContext.pictoPhoto, 0x4600); - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; - sp28 = true; - D_801BF884 = 0; - } else { - if (~(globalCtx->state.input[0].press.button | ~0x4000) == 0) { - globalCtx->actorCtx.unk5 &= 0xFFFB; - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; - sp28 = true; - D_801BF884 = 0; - } else if ((~(globalCtx->state.input[0].press.button | 0xFFFF7FFF) == 0) || - (func_801A5100() == 1)) { - if (!(gSaveContext.eventInf[4] & 2) || - ((gSaveContext.eventInf[4] & 2) && (ActorCutscene_GetCurrentIndex() == -1))) { - play_sound(0x4850); - gGameInfo->data[0xB9] = 1; - globalCtx->unk_18845 = 1; - D_801BF884 = 2; - D_801BF888 = 1; - } - } - } - } else if (D_801BF884 >= 2) { - if (Message_GetState(&globalCtx->msgCtx) == 4) { - if (Message_ShouldAdvance(globalCtx)) { - globalCtx->unk_18845 = 0; - player->stateFlags1 &= ~0x200; - func_801477B4(globalCtx); - if (globalCtx->msgCtx.choiceIndex != 0) { - func_8019F230(); - func_80115844(globalCtx, 0x12); - Interface_ChangeAlpha(21); - D_801BF884 = 1; - gSaveContext.save.inventory.questItems = - ((void)0, gSaveContext.save.inventory.questItems) & (-1 - gBitFlags[QUEST_UNK_19]); - } else { - func_8019F208(); - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; - sp28 = true; - Interface_ChangeAlpha(50); - D_801BF884 = 0; - if (D_801BF888 != 0) { - func_801663C4( - (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), - gSaveContext.pictoPhoto, 0x4600); - func_8013A240(globalCtx); - } - globalCtx->actorCtx.unk5 &= 0xFFFB; - gSaveContext.save.inventory.questItems = - ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_UNK_19]; - D_801BF888 = 0; - } - } - } - } - } else { - if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; - Interface_ChangeAlpha(12); - } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && - (globalCtx->unk_18B4A == 0)) { - gSaveContext.buttonStatus[1] = 0xFF; - gSaveContext.buttonStatus[2] = 0xFF; - gSaveContext.buttonStatus[3] = 0xFF; - Interface_ChangeAlpha(22); - } else if (globalCtx->actorCtx.unk5 & 4) { - if ((((void)0, gSaveContext.save.inventory.questItems) & gBitFlags[QUEST_UNK_19]) == 0) { - func_80115844(globalCtx, 0x12); - Interface_ChangeAlpha(21); - D_801BF884 = 1; - } else { - phi_a1 = (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90; - func_80166644(gSaveContext.pictoPhoto, phi_a1, 0x4600); + } else if (D_801BF884 != 0) { + if (D_801BF884 == 1) { + if (!(globalCtx->actorCtx.unk5 & 4)) { + func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + gSaveContext.pictoPhoto, 0x4600); + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + sp28 = true; + D_801BF884 = 0; + } else if (CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_B)) { + globalCtx->actorCtx.unk5 &= 0xFFFB; + interfaceCtx->unk_224 = 0; + interfaceCtx->unk_222 = interfaceCtx->unk_224; + sp28 = true; + D_801BF884 = 0; + } else if (CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_A) || (func_801A5100() == 1)) { + if (!(gSaveContext.eventInf[4] & 2) || + ((gSaveContext.eventInf[4] & 2) && (ActorCutscene_GetCurrentIndex() == -1))) { + play_sound(NA_SE_SY_CAMERA_SHUTTER); + SREG(89) = 1; globalCtx->unk_18845 = 1; D_801BF884 = 2; + D_801BF888 = true; } + } + } else if ((D_801BF884 >= 2) && (Message_GetState(&globalCtx->msgCtx) == 4) && + Message_ShouldAdvance(globalCtx)) { + globalCtx->unk_18845 = 0; + player->stateFlags1 &= ~0x200; + func_801477B4(globalCtx); + if (globalCtx->msgCtx.choiceIndex != 0) { + func_8019F230(); + func_80115844(globalCtx, 0x12); + Interface_ChangeAlpha(21); + D_801BF884 = 1; + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { - func_80110038(globalCtx); + func_8019F208(); + interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; + sp28 = true; + Interface_ChangeAlpha(50); + D_801BF884 = 0; + if (D_801BF888) { + func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + gSaveContext.pictoPhoto, 0x4600); + func_8013A240(globalCtx); + } + globalCtx->actorCtx.unk5 &= ~0x4; + SET_QUEST_ITEM(QUEST_PICTOBOX); + D_801BF888 = false; } } + } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && + (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + Interface_ChangeAlpha(12); + } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->unk_18B4A == 0)) { + gSaveContext.buttonStatus[1] = BTN_DISABLED; + gSaveContext.buttonStatus[2] = BTN_DISABLED; + gSaveContext.buttonStatus[3] = BTN_DISABLED; + Interface_ChangeAlpha(22); + } else if (globalCtx->actorCtx.unk5 & 4) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { + func_80115844(globalCtx, 0x12); + Interface_ChangeAlpha(21); + D_801BF884 = 1; + } else { + phi_a1 = (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90; + func_80166644(gSaveContext.pictoPhoto, phi_a1, 0x4600); + globalCtx->unk_18845 = 1; + D_801BF884 = 2; + } + } else { + func_80110038(globalCtx); } } if (sp28) { @@ -2342,8 +2329,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } if (item == ITEM_SKULL_TOKEN) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | - gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN - 4]; + SET_QUEST_ITEM(item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN); Inventory_IncrementSkullTokenCount(globalCtx->sceneNum); return ITEM_NONE; @@ -2351,8 +2337,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if (item == ITEM_BOMBERS_NOTEBOOK) { - gSaveContext.save.inventory.questItems = - ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[QUEST_BOMBERS_NOTEBOOK]; + SET_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK); return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { @@ -2370,8 +2355,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { - gSaveContext.save.inventory.questItems = - ((void)0, gSaveContext.save.inventory.questItems) | gBitFlags[item - ITEM_SONG_SONATA + QUEST_SONG_SONATA]; + SET_QUEST_ITEM(item - ITEM_SONG_SONATA + QUEST_SONG_SONATA); return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { @@ -2392,15 +2376,15 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { - gSaveContext.save.inventory.dungeonItems[(void)0, gSaveContext.mapIndex] |= (u8)gBitFlags[item - ITEM_KEY_BOSS]; + SET_DUNGEON_ITEM(item - ITEM_KEY_BOSS, gSaveContext.mapIndex); return ITEM_NONE; } else if (item == ITEM_KEY_SMALL) { - if (gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] < 0) { - gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] = 1; + if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) < 0) { + DUNGEON_KEY_COUNT(gSaveContext.mapIndex) = 1; return ITEM_NONE; } else { - gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex]++; + DUNGEON_KEY_COUNT(gSaveContext.mapIndex)++; return ITEM_NONE; } @@ -2617,8 +2601,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { - gSaveContext.save.inventory.questItems = ((void)0, gSaveContext.save.inventory.questItems) | - gBitFlags[item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA]; + SET_QUEST_ITEM(item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA); return ITEM_NONE; } else if (item == ITEM_HEART) { @@ -2642,7 +2625,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { - Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); + Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); // TODO: Different to OoT? Or wrong. return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { @@ -2781,8 +2764,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { return ITEM_NONE; } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { - if (!(gSaveContext.save.inventory.dungeonItems[(void)0, gSaveContext.mapIndex] & - gBitFlags[item - ITEM_KEY_BOSS])) { + if (!CHECK_DUNGEON_ITEM(item - ITEM_KEY_BOSS, gSaveContext.mapIndex)) { return ITEM_NONE; } return item; @@ -3864,7 +3846,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { if (i == ITEM_PICTO_BOX) { // TODO: index of gBitFlags? - if ((((void)0, gSaveContext.save.inventory.questItems) & (gBitFlags[0, QUEST_UNK_19])) == 0) { + if (!CHECK_QUEST_ITEM(((void)0, QUEST_PICTOBOX))) { ammo = 0; } else { ammo = 1; @@ -5486,7 +5468,7 @@ void Interface_Draw(GlobalContext* globalCtx) { case SCENE_MITURIN: case SCENE_HAKUGIN: case SCENE_SEA: - if (gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex] >= 0) { + if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) >= 0) { // Small Key Icon gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); @@ -5500,7 +5482,7 @@ void Interface_Draw(GlobalContext* globalCtx) { TEXEL0, 0, PRIMITIVE, 0); counterDigits[2] = 0; - counterDigits[3] = gSaveContext.save.inventory.dungeonKeys[(void)0, gSaveContext.mapIndex]; + counterDigits[3] = DUNGEON_KEY_COUNT(gSaveContext.mapIndex); while (counterDigits[3] >= 10) { counterDigits[2]++; @@ -6384,7 +6366,7 @@ void Interface_Init(GlobalContext* globalCtx) { } D_801BF884 = 0; - D_801BF888 = 0; + D_801BF888 = false; if ((globalCtx->sceneNum != SCENE_MITURIN_BS) && (globalCtx->sceneNum != SCENE_HAKUGIN_BS) && (globalCtx->sceneNum != SCENE_SEA_BS) && (globalCtx->sceneNum != SCENE_INISIE_BS) && diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 0fd487518..f1fba8576 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -354,7 +354,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } } - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); if (gSaveContext.save.playerData.health < 0x30) { gSaveContext.save.playerData.health = 0x30; diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index 92d4c7514..cf3352375 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -235,7 +235,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { switch (this->unk_2C6) { case 0: - if (!CHECK_QUEST_ITEM(QUEST_UNK_19)) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { this->unk_2C6 = 6; ret = 1; } else { @@ -250,7 +250,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { if (func_8013A4C4(D_80AE7258[this->unk_2C6])) { this->unk_2C6 = 6; ret = 1; - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { this->unk_2C6++; } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index 5e5459fa5..b8b80d25e 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -323,7 +323,7 @@ void func_80AE04FC(EnTsn* this, GlobalContext* globalCtx) { func_801477B4(globalCtx); this->actionFunc = func_80AE0704; if (sp24 == 19) { - if (CHECK_QUEST_ITEM(QUEST_UNK_19)) { + if (CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { if (func_8013A4C4(1 | 8)) { player->actor.textId = 0x107B; return; @@ -433,7 +433,7 @@ void func_80AE0704(EnTsn* this, GlobalContext* globalCtx) { this->actor.focus.pos = this->actor.world.pos; ActorCutscene_Stop(this->actor.cutscene); this->actor.flags &= ~ACTOR_FLAG_100; - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { func_80151938(globalCtx, 0x10A8); } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 676077216..59ee515d2 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -956,13 +956,13 @@ void func_80B985EC(EnZot* this, GlobalContext* globalCtx) { itemActionParam = func_80123810(globalCtx); if (itemActionParam > PLAYER_AP_NONE) { func_801477B4(globalCtx); - if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_UNK_19) && func_8013A4C4(4)) { + if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOBOX) && func_8013A4C4(4)) { if (func_8013A4C4(5) && func_8013A4C4(6)) { player->actor.textId = 0x12AE; } else { player->actor.textId = 0x12AC; } - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { player->actor.textId = 0x12AB; } From a9103d926b3f1199cf28b8c8bb15c683e912efbc Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 12:46:08 +1000 Subject: [PATCH 068/160] Fix macro --- include/macros.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/macros.h b/include/macros.h index a5ca08be3..4a4ea2f36 100644 --- a/include/macros.h +++ b/include/macros.h @@ -98,6 +98,7 @@ } else { \ BUTTON_ITEM_EQUIP(0, (btn)) = (item); \ } \ + (void)0 #define SET_CUR_FORM_BTN_SLOT(btn, item) \ if ((btn) == EQUIP_SLOT_B) { \ @@ -105,6 +106,7 @@ } else { \ C_SLOT_EQUIP(0, (btn)) = (item); \ } \ + (void)0 #define STOLEN_ITEM_NONE (0) From ea6746ff5e14b780fd071da237f7c0256eabd38b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 14:36:31 +1000 Subject: [PATCH 069/160] Improvement on func_80111CB4 --- include/functions.h | 2 +- include/variables.h | 2 +- include/z64.h | 2 +- src/code/graph.c | 2 +- src/code/z_parameter.c | 18 ++++++++++-------- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/functions.h b/include/functions.h index 9b8dff325..a9e43f7d2 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2735,7 +2735,7 @@ void func_80165690(void); Gfx* func_801660B8(GlobalContext* globalCtx, Gfx* gfx); void Play_Fini(GameState* gameState); // void func_801663C4(void); -void func_80166644(u8* arg0, void* arg1, s32 arg2); +void func_80166644(u8* arg0, u8* arg1, s32 arg2); // void func_801668B4(void); void func_80166968(GlobalContext* globalCtx, Camera* camera); void func_80166B30(GlobalContext* globalCtx); diff --git a/include/variables.h b/include/variables.h index e09e372ba..19fdf5033 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3320,7 +3320,7 @@ extern OSViMode D_801FBB30; extern u32* gFramebuffers[2]; extern OSViMode* D_801FBB88; extern u16* gZBufferPtr; -extern void* D_801FBB90; +extern u8* D_801FBB90; extern u64* gGfxSPTaskOutputBufferPtr; extern size_t gGfxSPTaskOutputBufferSize; // extern UNK_TYPE1 D_801FBB9C; diff --git a/include/z64.h b/include/z64.h index 18ed092c3..876594e91 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1418,7 +1418,7 @@ struct GlobalContext { /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; /* 0x18E58 */ char unk_18E58[0x4]; - /* 0x18E5C */ void* unk_18E5C; + /* 0x18E5C */ u8* unk_18E5C; /* 0x18E60 */ char unk_18E60[0x8]; /* 0x18E68 */ s32 unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; diff --git a/src/code/graph.c b/src/code/graph.c index 8059d1f63..ca18a9049 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -349,7 +349,7 @@ void Graph_ThreadEntry(void* arg) { gGfxSPTaskOutputBufferEnd2 = (u8*)gGfxSPTaskOutputBuffer2 + sizeof(*gGfxSPTaskOutputBuffer2); func_80178978(); - Fault_SetFB(D_801FBB90, SCREEN_WIDTH, SCREEN_HEIGHT); + Fault_SetFB((void*)D_801FBB90, SCREEN_WIDTH, SCREEN_HEIGHT); Graph_Init(&gfxCtx); while (nextOvl) { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e98072782..08c2a9628 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1990,11 +1990,12 @@ void func_80110038(GlobalContext* globalCtx) { } } +// a0/a1 swap. Likely related to globalCtx->unk_18E5C #ifdef NON_MATCHING void func_80111CB4(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; Player* player = GET_PLAYER(globalCtx); - void* phi_a1; + s32 pad; s32 sp28; sp28 = false; @@ -2049,6 +2050,7 @@ void func_80111CB4(GlobalContext* globalCtx) { gSaveContext.buttonStatus[3] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; + if (globalCtx->unk_1887C >= 2) { Interface_LoadItemIconImpl(globalCtx, 0); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { @@ -2056,6 +2058,7 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { Interface_LoadItemIconImpl(globalCtx, 0); } + gSaveContext.buttonStatus[1] = BTN_DISABLED; gSaveContext.buttonStatus[2] = BTN_DISABLED; gSaveContext.buttonStatus[3] = BTN_DISABLED; @@ -2142,8 +2145,8 @@ void func_80111CB4(GlobalContext* globalCtx) { } else if (D_801BF884 != 0) { if (D_801BF884 == 1) { if (!(globalCtx->actorCtx.unk5 & 4)) { - func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), - gSaveContext.pictoPhoto, 0x4600); + func_801663C4((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, + (u8*)gSaveContext.pictoPhoto, 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; sp28 = true; @@ -2182,8 +2185,8 @@ void func_80111CB4(GlobalContext* globalCtx) { Interface_ChangeAlpha(50); D_801BF884 = 0; if (D_801BF888) { - func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), - gSaveContext.pictoPhoto, 0x4600); + func_801663C4((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, + (u8*)gSaveContext.pictoPhoto, 0x4600); func_8013A240(globalCtx); } globalCtx->actorCtx.unk5 &= ~0x4; @@ -2209,8 +2212,7 @@ void func_80111CB4(GlobalContext* globalCtx) { Interface_ChangeAlpha(21); D_801BF884 = 1; } else { - phi_a1 = (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90; - func_80166644(gSaveContext.pictoPhoto, phi_a1, 0x4600); + func_80166644((u8*)gSaveContext.pictoPhoto, ((void)0, (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), 0x4600); globalCtx->unk_18845 = 1; D_801BF884 = 2; } @@ -5728,7 +5730,7 @@ void Interface_Draw(GlobalContext* globalCtx) { if (D_801BF884 >= 2) { if ((globalCtx->actorCtx.unk5 & 4) == 0) { func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), - gSaveContext.pictoPhoto, 0x4600); + (u8*)gSaveContext.pictoPhoto, 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; From 4282ab393e1166ba5ff3886526de8f04632a2a49 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 18:17:36 +1000 Subject: [PATCH 070/160] Attempt Interface_DrawTimers --- include/functions.h | 4 +- src/code/z_parameter.c | 473 ++++++++++++++++++++++++++++++++++--- tools/disasm/variables.txt | 11 +- 3 files changed, 441 insertions(+), 47 deletions(-) diff --git a/include/functions.h b/include/functions.h index a9e43f7d2..a0274cff9 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2910,8 +2910,8 @@ void Main(void* arg); u32 Padmgr_GetControllerBitmask(void); // void func_80174F24(void); // void func_80174F44(void); -// void func_80174F7C(void); -// void func_80174F9C(void); +void func_80174F7C(void (*arg0)(void*), void* arg1); +void func_80174F9C(void (*arg0)(void*), void* arg1); // OSMesgQueue* Padmgr_GetEventCallback(void); // void func_80175008(void); void Padmgr_SetEventCallback(OSMesg pvParm1); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 08c2a9628..3690eadca 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -193,29 +193,16 @@ s16 D_801BF8E0 = 0; s16 D_801BF8E4 = 0; -s32 D_801BF8E8[] = { - 0x00000000, - 0x00000000, -}; - +OSTime D_801BF8E8 = 0; OSTime D_801BF8F0 = 0; - -s32 D_801BF8F8 = 0; - -s32 D_801BF8FC[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u64 D_801BF8F8[] = { // D_801BF8FC + 0, 0, 0, 0, 0, 0, 0, +}; +u64 D_801BF930[] = { // D_801BF934 + 0, 0, 0, 0, 0, 0, 0, }; -s32 D_801BF930 = 0; - -s32 D_801BF934[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, -}; - -s32 D_801BF968 = 0; - +u8 D_801BF968 = false; u8 D_801BF96C = false; s16 D_801BF970 = 99; @@ -5153,32 +5140,444 @@ void func_8011C898(u64 timer, s16* timerArr) { timerArr[7] = time; } -s32 D_801BFCE4[] = { - 0x00000000, -}; -s32 D_801BFCE8[] = { - 0x00000000, -}; -s32 D_801BFCEC[] = { - 0x00000000, -}; -s32 D_801BFCF0[] = { - 0x00000000, -}; -s32 D_801BFCF4[] = { - 0x00000000, -}; -s32 D_801BFCF8[] = { - 0x00630000, +s32 D_801BFCE4 = 0; +u16 D_801BFCE8[] = { + 0, 0, 0, 0, 0, 0, 0, 0 }; +s16 D_801BFCF8 = 0x63; s16 D_801BFCFC[] = { 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, }; s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; +// Likely very non-equivalent, unsure about both control-flow logic and u64 logic +#ifdef NON_EQUIVALENT +void Interface_DrawTimers(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + MessageContext* msgCtx = &globalCtx->msgCtx; + Player* player = GET_PLAYER(globalCtx); + s16 i; // spC6 + + OSTime osTime; + OSTime spD0; + s16 phi_t0_2; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && + (globalCtx->gameOverCtx.state == 0) && + ((msgCtx->msgMode == 0) || + ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && + (msgCtx->currentTextId <= 0x1BB6))) && + !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { + if (D_801BF968) { + osTime = osGetTime(); + + for (i = 0; i < 7; i++) { + if (gSaveContext.unk_3DD0[i] == 4) { + gSaveContext.unk_3EC0[i] = gSaveContext.unk_3EC0[i] + osTime - D_801BF8E8; + } + } + + D_801BF968 = false; + } + + D_801BF970 = 99; + + for (i = 0; i < 7; i++) { + if (gSaveContext.unk_3DD0[i] != 0) { + D_801BF970 = i; + if (D_801BF970 == 0) { + switch (gSaveContext.unk_3DD0[0]) { + case 13: + if (gSaveContext.timersNoTimeLimit[0] != 0) { + gSaveContext.unk_3E50[0] = osGetTime(); + } + gSaveContext.unk_3DD0[0] = 14; + D_801BFA84 = 1; + func_80174F7C(func_8010E968, NULL); + break; + case 15: + osTime = (gSaveContext.unk_3DC8 - gSaveContext.unk_3DE0[0] - gSaveContext.unk_3EC0[0]) * 0x40; + osTime = osTime / 3000; + osTime = osTime / 10000; + + gSaveContext.unk_3DE0[0] = osTime; + gSaveContext.unk_3DD0[0] = 16; + + func_80174F9C(func_8010E968, NULL); + break; + case 14: + case 16: + break; + } + + break; + } else { + switch (gSaveContext.unk_3DD0[D_801BF970]) { + case 1: + case 9: + D_801BFCE4 = 20; + if (interfaceCtx->unk_280 != 0) { + gSaveContext.timerX[D_801BF970] = 26; + + if (interfaceCtx->magicAlpha != 255) { + gSaveContext.timerY[D_801BF970] = 22; + } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + gSaveContext.timerY[D_801BF970] = 54; + } else { + gSaveContext.timerY[D_801BF970] = 46; + } + + if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) { + if (gSaveContext.unk_3DD0[D_801BF970] == 1) { + gSaveContext.unk_3DD0[D_801BF970] = 4; + } else { + gSaveContext.unk_3DD0[D_801BF970] = 11; + D_801BF8F8[D_801BF970] = osGetTime(); + D_801BF930[D_801BF970] = 0; + } + + gSaveContext.unk_3E50[D_801BF970] = osGetTime(); + gSaveContext.unk_3E88[D_801BF970] = 0; + gSaveContext.unk_3EC0[D_801BF970] = 0; + } + } else { + gSaveContext.unk_3DD0[D_801BF970] = 2; + } + break; + + case 2: + D_801BFCE4--; + if (D_801BFCE4 == 0) { + gSaveContext.unk_3DD0[D_801BF970] = 3; + D_801BFCE4 = 20; + } + break; + + case 3: + if (D_801BF970 == 3) { + gSaveContext.timerX[D_801BF970] = + gSaveContext.timerX[D_801BF970] - + ((gSaveContext.timerX[D_801BF970] - XREG(81)) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] = + gSaveContext.timerY[D_801BF970] - + ((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4); + } else { + gSaveContext.timerX[D_801BF970] = + gSaveContext.timerX[D_801BF970] - ((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4; + } else { + phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 46) / D_801BFCE4; + } + gSaveContext.timerY[D_801BF970] -= phi_t0_2; + } + + D_801BFCE4--; + if (D_801BFCE4 == 0) { + D_801BFCE4 = 20; + + if (D_801BF970 == 3) { + gSaveContext.timerY[D_801BF970] = XREG(80); + } else { + gSaveContext.timerX[D_801BF970] = 26; + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + gSaveContext.timerY[D_801BF970] = 54; + } else { + gSaveContext.timerY[D_801BF970] = 46; + } + } + + gSaveContext.unk_3DD0[D_801BF970] = 4; + gSaveContext.unk_3E50[D_801BF970] = osGetTime(); + gSaveContext.unk_3E88[D_801BF970] = 0; + gSaveContext.unk_3EC0[D_801BF970] = 0; + } + // fallthrough + + case 4: + if ((gSaveContext.unk_3DD0[D_801BF970] == 4) && (D_801BF970 == 3)) { + gSaveContext.timerX[3] = XREG(81); + gSaveContext.timerY[3] = XREG(80); + } + break; + + case 10: + D_801BF8F8[D_801BF970] = osGetTime(); + D_801BF930[D_801BF970] = 0; + gSaveContext.unk_3DD0[D_801BF970] = 11; + // fallthrough + + case 11: + D_801BF930[D_801BF970] = osGetTime() - D_801BF8F8[D_801BF970]; + break; + + case 12: + osTime = osGetTime(); + gSaveContext.unk_3EC0[D_801BF970] = gSaveContext.unk_3EC0[D_801BF970] + osTime - D_801BF8F8[D_801BF970]; + D_801BF930[D_801BF970] = 0; + gSaveContext.unk_3DD0[D_801BF970] = 4; + break; + + case 8: + gSaveContext.unk_3DE0[D_801BF970] = (gSaveContext.save.playerData.health >> 1) * 100; + gSaveContext.timersNoTimeLimit[D_801BF970] = 0; + gSaveContext.unk_3E18[D_801BF970] = gSaveContext.unk_3DE0[D_801BF970]; + gSaveContext.unk_3DD0[D_801BF970] = 3; + D_801BFCE4 = 20; + break; + + case 5: + osTime = osGetTime(); + + osTime = + (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40; + osTime = osTime / 3000; + osTime = osTime / 10000; + + gSaveContext.unk_3E88[D_801BF970] = osTime; + + gSaveContext.unk_3DD0[D_801BF970] = 0; + + if (D_801BF970 == 3) { + gSaveContext.save.day = 4; + if ((globalCtx->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { + globalCtx->nextEntranceIndex = 0x5410; + gSaveContext.nextCutsceneIndex = 0xFFF0; + globalCtx->sceneLoadFlag = 0x14; + } else { + func_8011C808(globalCtx); + } + } else if (gSaveContext.unk_3DD0[6] != 0) { + gSaveContext.timerX[6] = 115; + gSaveContext.timerY[6] = 80; + if (gSaveContext.unk_3DD0[6] < 0xB) { + gSaveContext.unk_3DD0[6] = 3; + } + } + break; + + case 6: + osTime = osGetTime(); + + osTime = + (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40; + osTime = osTime / 3000; + osTime = osTime / 10000; + + gSaveContext.unk_3E88[D_801BF970] = osTime; + + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if (gSaveContext.unk_3E88[D_801BF970] >= 12000) { + gSaveContext.unk_3E88[D_801BF970] = 12000; + gSaveContext.unk_3DE0[D_801BF970] = 12000; + } + } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES) && + (gSaveContext.unk_3E88[D_801BF970] >= 12000)) { + gSaveContext.unk_3DE0[D_801BF970] = 12000; + } + gSaveContext.unk_3DD0[D_801BF970] = 7; + + if (gSaveContext.unk_3DD0[6] != 0) { + gSaveContext.timerX[6] = 115; + gSaveContext.timerY[6] = 80; + if (gSaveContext.unk_3DD0[6] < 0xB) { + gSaveContext.unk_3DD0[6] = 3; + } + gSaveContext.unk_3DD0[D_801BF970] = 0; + } + break; + } + } + break; + } + } + + + if ((D_801BF970 != 99) && (gSaveContext.unk_3DD0[D_801BF970] != 0)) { + if (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) { + D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; + D_801BFCE8[2] = D_801BFCE8[5] = 10; + if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) || + (gSaveContext.unk_3DD0[D_801BF970] == 11) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { + osTime = osGetTime(); + osTime = (osTime - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64; + osTime = osTime / 3000; + osTime = osTime / 10000; + + spD0 = osTime; + } else { + if (gSaveContext.unk_3DD0[D_801BF970] == 7) { + spD0 = gSaveContext.unk_3E88[D_801BF970]; + } else { + spD0 = 0; + } + } + + if (spD0 == 0) { + gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; + } else { + if (gSaveContext.unk_3E18[D_801BF970] >= spD0) { + if (gSaveContext.unk_3E18[D_801BF970] <= spD0) { + gSaveContext.unk_3DE0[D_801BF970] = 0; + } else { + gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; + } + } else { + gSaveContext.unk_3DE0[D_801BF970] = 0; + gSaveContext.unk_3DD0[D_801BF970] = 5; + if (D_801BF8E0 != 0) { + gSaveContext.save.playerData.health = 0; + globalCtx->damagePlayer(globalCtx, -2 - gSaveContext.save.playerData.health); + } + D_801BF8E0 = 0; + } + } + + func_8011C898(gSaveContext.unk_3DE0[D_801BF970], D_801BFCE8); + + if (gSaveContext.unk_3DE0[D_801BF970] > 6000) { + if ((D_801BFCF8 != D_801BFCE8[4]) && (D_801BFCE8[4] == 1)) { + play_sound(NA_SE_SY_MESSAGE_WOMAN); + D_801BFCF8 = D_801BFCE8[4]; + } + } else if (gSaveContext.unk_3DE0[D_801BF970] > 1000) { + if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] & 1) != 0)) { + play_sound(NA_SE_SY_WARNING_COUNT_N); + D_801BFCF8 = D_801BFCE8[4]; + } + } else if (D_801BFCF8 != D_801BFCE8[4]) { + play_sound(NA_SE_SY_WARNING_COUNT_E); + D_801BFCF8 = D_801BFCE8[4]; + } + } else { + D_801BFCE8[4] = 0; + D_801BFCE8[0] = 0; + D_801BFCE8[5] = 10; + D_801BFCE8[2] = D_801BFCE8[5]; + + if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { + osTime = osGetTime(); + osTime = (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64; + osTime = osTime / 3000; + osTime = osTime / 10000; + + spD0 = osTime; + } else if (gSaveContext.unk_3DD0[D_801BF970] == 7) { + spD0 = gSaveContext.unk_3E88[D_801BF970]; + } else if (D_801BF970 == 0) { + spD0 = gSaveContext.unk_3DE0[D_801BF970]; + } else { + spD0 = 0; + } + + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if (spD0 >= 12000) { + spD0 = 12000; + } + } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES) && (spD0 >= 12000)) { + spD0 = 12000; + } + + gSaveContext.unk_3DE0[D_801BF970] = spD0; + func_8011C898(spD0, D_801BFCE8); + + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if ((gSaveContext.unk_3DE0[D_801BF970] > 11000) && (D_801BFCF8 != D_801BFCE8[4])) { + play_sound(NA_SE_SY_WARNING_COUNT_E); + D_801BFCF8 = D_801BFCE8[4]; + } + } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES)) { + if ((gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { + play_sound(NA_SE_SY_WARNING_COUNT_E); + D_801BFCF8 = D_801BFCE8[4]; + } + } + } + + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); + OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 0x400, 0x400); + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, + 0, PRIMITIVE, 0); + + if (((D_801BF970 == 0) && (gSaveContext.unk_3DD0[0] == 14) && (D_801BF8E4 == 0) && + (gSaveContext.unk_3DE0[0] < 300)) || + (D_801BF8E4 == 2) || (gSaveContext.unk_3DD0[D_801BF970] < 13)) { + if (gSaveContext.unk_3DD0[D_801BF970] != 0) { + if (D_801BF970 == 2) { + if ((gSaveContext.unk_3DE0[D_801BF970] == 0) || (gSaveContext.unk_3DD0[D_801BF970] == 4)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + } + } else { + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if (gSaveContext.unk_3DE0[D_801BF970] > 11000) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + } + } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { + if (gSaveContext.unk_3DE0[D_801BF970] >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY]) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else if (gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + } + } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) && (gSaveContext.unk_3DD0[D_801BF970] != 11)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + } + } + } + + if (D_801BF970 == 0) { + if (D_801BF8E4 == 2) { + for (i = 0; i < 4; i++) { + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, + 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + } + } else { + for (i = 0; i < 5; i++) { + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, + 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + } + } + } else { + for (i = 0; i < 8; i++) { + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[i])), 8, 0x10, + D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + } + } + } + } + + } else if (!D_801BF968) { + D_801BF8E8 = osGetTime(); + D_801BF968 = true; + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} +#else void Interface_DrawTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") +#endif #ifdef NON_MATCHING void Interface_UpdateTimers(GlobalContext* globalCtx) { diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 184e78754..0270f4cc6 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1080,10 +1080,8 @@ 0x801BF8E8:("D_801BF8E8","UNK_TYPE4","",0x4), 0x801BF8F0:("D_801BF8F0","UNK_TYPE4","",0x4), 0x801BF8F4:("D_801BF8F4","UNK_TYPE4","",0x4), - 0x801BF8F8:("D_801BF8F8","UNK_TYPE4","",0x4), - 0x801BF8FC:("D_801BF8FC","UNK_TYPE4","",0x4), - 0x801BF930:("D_801BF930","UNK_TYPE4","",0x4), - 0x801BF934:("D_801BF934","UNK_TYPE4","",0x4), + 0x801BF8F8:("D_801BF8F8","u64","[7]",0x38), + 0x801BF930:("D_801BF930","u64","[7]",0x38), 0x801BF968:("D_801BF968","UNK_TYPE4","",0x4), 0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4), 0x801BF970:("D_801BF970","UNK_TYPE4","",0x4), @@ -1166,10 +1164,7 @@ 0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1), 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), 0x801BFCE4:("D_801BFCE4","UNK_TYPE4","",0x4), - 0x801BFCE8:("D_801BFCE8","UNK_TYPE4","",0x4), - 0x801BFCEC:("D_801BFCEC","UNK_TYPE4","",0x4), - 0x801BFCF0:("D_801BFCF0","UNK_TYPE4","",0x4), - 0x801BFCF4:("D_801BFCF4","UNK_TYPE4","",0x4), + 0x801BFCE8:("D_801BFCE8","u16","[8]",0x10), 0x801BFCF8:("D_801BFCF8","UNK_TYPE4","",0x4), 0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4), 0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4), From 468a0a66dadac09a31da8c24df8059720efc174f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 18:20:32 +1000 Subject: [PATCH 071/160] format --- src/code/z_parameter.c | 84 +++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3690eadca..65cfa8b69 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -195,10 +195,10 @@ s16 D_801BF8E4 = 0; OSTime D_801BF8E8 = 0; OSTime D_801BF8F0 = 0; -u64 D_801BF8F8[] = { // D_801BF8FC +u64 D_801BF8F8[] = { 0, 0, 0, 0, 0, 0, 0, }; -u64 D_801BF930[] = { // D_801BF934 +u64 D_801BF930[] = { 0, 0, 0, 0, 0, 0, 0, }; @@ -2045,7 +2045,7 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { Interface_LoadItemIconImpl(globalCtx, 0); } - + gSaveContext.buttonStatus[1] = BTN_DISABLED; gSaveContext.buttonStatus[2] = BTN_DISABLED; gSaveContext.buttonStatus[3] = BTN_DISABLED; @@ -2199,7 +2199,8 @@ void func_80111CB4(GlobalContext* globalCtx) { Interface_ChangeAlpha(21); D_801BF884 = 1; } else { - func_80166644((u8*)gSaveContext.pictoPhoto, ((void)0, (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), 0x4600); + func_80166644((u8*)gSaveContext.pictoPhoto, + ((void)0, (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), 0x4600); globalCtx->unk_18845 = 1; D_801BF884 = 2; } @@ -5141,9 +5142,7 @@ void func_8011C898(u64 timer, s16* timerArr) { } s32 D_801BFCE4 = 0; -u16 D_801BFCE8[] = { - 0, 0, 0, 0, 0, 0, 0, 0 -}; +u16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; s16 D_801BFCF8 = 0x63; s16 D_801BFCFC[] = { 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, @@ -5168,10 +5167,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (globalCtx->gameOverCtx.state == 0) && ((msgCtx->msgMode == 0) || - ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && - (msgCtx->currentTextId <= 0x1BB6))) && - !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && - (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { + ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && + !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && + !Play_InCsMode(globalCtx)) { if (D_801BF968) { osTime = osGetTime(); @@ -5185,7 +5183,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { } D_801BF970 = 99; - + for (i = 0; i < 7; i++) { if (gSaveContext.unk_3DD0[i] != 0) { D_801BF970 = i; @@ -5200,7 +5198,8 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { func_80174F7C(func_8010E968, NULL); break; case 15: - osTime = (gSaveContext.unk_3DC8 - gSaveContext.unk_3DE0[0] - gSaveContext.unk_3EC0[0]) * 0x40; + osTime = + (gSaveContext.unk_3DC8 - gSaveContext.unk_3DE0[0] - gSaveContext.unk_3EC0[0]) * 0x40; osTime = osTime / 3000; osTime = osTime / 10000; @@ -5213,7 +5212,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 16: break; } - + break; } else { switch (gSaveContext.unk_3DD0[D_801BF970]) { @@ -5266,8 +5265,8 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gSaveContext.timerY[D_801BF970] - ((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4); } else { - gSaveContext.timerX[D_801BF970] = - gSaveContext.timerX[D_801BF970] - ((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); + gSaveContext.timerX[D_801BF970] = gSaveContext.timerX[D_801BF970] - + ((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); if (gSaveContext.save.playerData.healthCapacity > 0xA0) { phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4; } else { @@ -5307,7 +5306,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 10: D_801BF8F8[D_801BF970] = osGetTime(); - D_801BF930[D_801BF970] = 0; + D_801BF930[D_801BF970] = 0; gSaveContext.unk_3DD0[D_801BF970] = 11; // fallthrough @@ -5317,8 +5316,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 12: osTime = osGetTime(); - gSaveContext.unk_3EC0[D_801BF970] = gSaveContext.unk_3EC0[D_801BF970] + osTime - D_801BF8F8[D_801BF970]; - D_801BF930[D_801BF970] = 0; + gSaveContext.unk_3EC0[D_801BF970] = + gSaveContext.unk_3EC0[D_801BF970] + osTime - D_801BF8F8[D_801BF970]; + D_801BF930[D_801BF970] = 0; gSaveContext.unk_3DD0[D_801BF970] = 4; break; @@ -5376,7 +5376,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gSaveContext.unk_3DE0[D_801BF970] = 12000; } } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES) && - (gSaveContext.unk_3E88[D_801BF970] >= 12000)) { + (gSaveContext.unk_3E88[D_801BF970] >= 12000)) { gSaveContext.unk_3DE0[D_801BF970] = 12000; } gSaveContext.unk_3DD0[D_801BF970] = 7; @@ -5392,14 +5392,13 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { break; } } - break; + break; } } - if ((D_801BF970 != 99) && (gSaveContext.unk_3DD0[D_801BF970] != 0)) { if (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) { - D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; + D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) || (gSaveContext.unk_3DD0[D_801BF970] == 11) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { @@ -5461,7 +5460,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { osTime = osGetTime(); - osTime = (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64; + osTime = (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970] - + D_801BF930[D_801BF970]) * + 64; osTime = osTime / 3000; osTime = osTime / 10000; @@ -5478,7 +5479,8 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (spD0 >= 12000) { spD0 = 12000; } - } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES) && (spD0 >= 12000)) { + } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES) && + (spD0 >= 12000)) { spD0 = 12000; } @@ -5491,7 +5493,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if ((gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { + if ((gSaveContext.unk_3DE0[D_801BF970] >= + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) && + (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); D_801BFCF8 = D_801BFCE8[4]; } @@ -5502,13 +5506,13 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 0x400, 0x400); + gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 0x400, 0x400); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, - 0, PRIMITIVE, 0); + 0, PRIMITIVE, 0); if (((D_801BF970 == 0) && (gSaveContext.unk_3DD0[0] == 14) && (D_801BF8E4 == 0) && - (gSaveContext.unk_3DE0[0] < 300)) || + (gSaveContext.unk_3DE0[0] < 300)) || (D_801BF8E4 == 2) || (gSaveContext.unk_3DD0[D_801BF970] < 13)) { if (gSaveContext.unk_3DD0[D_801BF970] != 0) { if (D_801BF970 == 2) { @@ -5525,14 +5529,18 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if (gSaveContext.unk_3DE0[D_801BF970] >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY]) { + if (gSaveContext.unk_3DE0[D_801BF970] >= + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) { + } else if (gSaveContext.unk_3DE0[D_801BF970] >= + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) && (gSaveContext.unk_3DD0[D_801BF970] != 11)) { + } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && + (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) && + (gSaveContext.unk_3DD0[D_801BF970] != 11)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); @@ -5545,23 +5553,23 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { for (i = 0; i < 4; i++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, - 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); } } else { for (i = 0; i < 5; i++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, - 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); } } } else { for (i = 0; i < 8; i++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[i])), 8, 0x10, - D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], + gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); } } } From e1eb6390013cbf60841378f41cdc41c012702eed Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 19:36:29 +1000 Subject: [PATCH 072/160] Small improvements in Interface_DrawClock --- src/code/z_parameter.c | 118 +++++++++++++++++++++++++++++++---------- 1 file changed, 90 insertions(+), 28 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 65cfa8b69..aab7c74d0 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4202,17 +4202,18 @@ void Interface_DrawClock(GlobalContext* globalCtx) { f32 temp_f0; f32 temp_f14; u32 temp_a1_7; - s32 phi_v1_2; // Unused + f32 new_var; s16 currentHour; u16 time; - f32 new_var1; + s16 pad; + s16 sp1B4; s16 colorStep; OPEN_DISPS(globalCtx->state.gfxCtx); if (REG(15) != 0) { - if ((msgCtx->msgMode == 0) || ((globalCtx->actorCtx.unk5 & 2) && !func_801690CC(globalCtx)) || - (msgCtx->msgMode == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 <= 0x200)) || + if ((msgCtx->msgMode == 0) || ((globalCtx->actorCtx.unk5 & 2) && !Play_InCsMode(globalCtx)) || + (msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || (gSaveContext.gameMode == 3)) { if (FrameAdvance_IsEnabled(globalCtx) == 0) { if (func_800FE4A8() == 0) { @@ -4298,12 +4299,47 @@ void Interface_DrawClock(GlobalContext* globalCtx) { // Time is slowed down to half speed with inverted song of time if (gSaveContext.save.daySpeed == -2) { // Clock diamond is blue and flashes white - TIMED_STEP_TO(D_801BFBCC, D_801BFBEC[D_801BFBE8], D_801BFBE4, colorStep); - TIMED_STEP_TO(D_801BFBD0, D_801BFBF0[D_801BFBE8], D_801BFBE4, colorStep); - TIMED_STEP_TO(D_801BFBD4, D_801BFBF4[D_801BFBE8], D_801BFBE4, colorStep); - TIMED_STEP_TO(D_801BFBD8, D_801BFBF8[D_801BFBE8], D_801BFBE4, colorStep); - TIMED_STEP_TO(D_801BFBDC, D_801BFBFC[D_801BFBE8], D_801BFBE4, colorStep); - TIMED_STEP_TO(D_801BFBE0, D_801BFC00[D_801BFBE8], D_801BFBE4, colorStep); + colorStep = ABS_ALT(D_801BFBCC - D_801BFBEC[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBCC >= D_801BFBEC[D_801BFBE8]) { + D_801BFBCC -= colorStep; + } else { + D_801BFBCC += colorStep; + } + + colorStep = ABS_ALT(D_801BFBD0 - D_801BFBF0[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD0 >= D_801BFBF0[D_801BFBE8]) { + D_801BFBD0 -= colorStep; + } else { + D_801BFBD0 += colorStep; + } + + colorStep = ABS_ALT(D_801BFBD4 - D_801BFBF4[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD4 >= D_801BFBF4[D_801BFBE8]) { + D_801BFBD4 -= colorStep; + } else { + D_801BFBD4 += colorStep; + } + + colorStep = ABS_ALT(D_801BFBD8 - D_801BFBF8[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD8 >= D_801BFBF8[D_801BFBE8]) { + D_801BFBD8 -= colorStep; + } else { + D_801BFBD8 += colorStep; + } + + colorStep = ABS_ALT(D_801BFBDC - D_801BFBFC[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBDC >= D_801BFBFC[D_801BFBE8]) { + D_801BFBDC -= colorStep; + } else { + D_801BFBDC += colorStep; + } + + colorStep = ABS_ALT(D_801BFBE0 - D_801BFC00[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBE0 >= D_801BFC00[D_801BFBE8]) { + D_801BFBE0 -= colorStep; + } else { + D_801BFBE0 += colorStep; + } D_801BFBE4--; @@ -4311,7 +4347,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { D_801BFBCC = D_801BFBEC[D_801BFBE8]; D_801BFBD0 = D_801BFBF0[D_801BFBE8]; D_801BFBD4 = D_801BFBF4[D_801BFBE8]; - D_801BFBD8 = D_801BFBF0[D_801BFBE8]; + D_801BFBD8 = D_801BFBF8[D_801BFBE8]; D_801BFBDC = D_801BFBFC[D_801BFBE8]; D_801BFBE0 = D_801BFC00[D_801BFBE8]; D_801BFBE4 = 15; @@ -4507,18 +4543,41 @@ void Interface_DrawClock(GlobalContext* globalCtx) { if ((0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { // The Final Hours clock will flash red - TIMED_STEP_TO(sFinalHoursClockDigitsRed, - D_801BFC04[sFinalHoursClockColorTargetIndex], - sFinalHoursClockColorTimer, colorStep); - TIMED_STEP_TO(sFinalHoursClockFrameEnvRed, - D_801BFC08[sFinalHoursClockColorTargetIndex], - sFinalHoursClockColorTimer, colorStep); - TIMED_STEP_TO(sFinalHoursClockFrameEnvGreen, - D_801BFC0C[sFinalHoursClockColorTargetIndex], - sFinalHoursClockColorTimer, colorStep); - TIMED_STEP_TO(sFinalHoursClockFrameEnvBlue, - D_801BFC10[sFinalHoursClockColorTargetIndex], - sFinalHoursClockColorTimer, colorStep); + colorStep = ABS_ALT(sFinalHoursClockDigitsRed - + D_801BFC04[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockDigitsRed >= D_801BFC04[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockDigitsRed -= colorStep; + } else { + sFinalHoursClockDigitsRed += colorStep; + } + + colorStep = ABS_ALT(sFinalHoursClockFrameEnvRed - + D_801BFC08[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvRed >= D_801BFC08[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvRed -= colorStep; + } else { + sFinalHoursClockFrameEnvRed += colorStep; + } + + colorStep = ABS_ALT(sFinalHoursClockFrameEnvGreen - + D_801BFC0C[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvGreen >= D_801BFC0C[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvGreen -= colorStep; + } else { + sFinalHoursClockFrameEnvGreen += colorStep; + } + + colorStep = ABS_ALT(sFinalHoursClockFrameEnvBlue - + D_801BFC10[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvBlue >= D_801BFC10[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvBlue -= colorStep; + } else { + sFinalHoursClockFrameEnvBlue += colorStep; + } sFinalHoursClockColorTimer--; @@ -4556,7 +4615,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); temp_a1_7 = - (-(CURRENT_DAY << 0x10) - (u16)((0, gSaveContext.save.time) - 0x4000)) + 0x40000; + (-(CURRENT_DAY << 0x10) - (u16)(((void)0, gSaveContext.save.time) - 0x4000)) + + 0x40000; temp_f0 = temp_a1_7 * 0.021972656f; @@ -4571,7 +4631,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } finalHoursClockSlots[3] = 0; - finalHoursClockSlots[4] = (s16)temp_f0 % 60; + sp1B4 = (s16)temp_f0 % 60; + finalHoursClockSlots[4] = sp1B4; + if (sp1B4) {} // TODO: Needed? // digits for minutes while (finalHoursClockSlots[4] >= 10) { @@ -4580,9 +4642,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } finalHoursClockSlots[6] = 0; - new_var1 = (finalHoursClockSlots[4] * 45.511112f); - finalHoursClockSlots[7] = - temp_a1_7 - (u32)(new_var1 + (finalHoursClockSlots[2] * 2730.6667f)); + finalHoursClockSlots[7] = temp_a1_7 - (u32)((finalHoursClockSlots[2] * 2730.6667f) + + (finalHoursClockSlots[4] * 45.511112f)); // digits for seconds while (finalHoursClockSlots[7] >= 10) { @@ -4590,6 +4651,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { finalHoursClockSlots[7] -= 10; } + // TODO: May be one line // Colon separating hours from minutes finalHoursClockSlots[2] = 10; // Colon separating minutes from seconds From 9ef5daa1fe25a0431413fc79295bf2def1db32a2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 19:46:47 +1000 Subject: [PATCH 073/160] cleanup warnings --- include/functions.h | 4 ++-- src/code/z_parameter.c | 36 ++++++------------------------------ 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/include/functions.h b/include/functions.h index a0274cff9..d1ebbdb33 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1807,7 +1807,7 @@ s32 func_8010A0A4(GlobalContext* globalCtx); // void func_8010A2AC(void); void func_8010A2DC(GlobalContext* globalCtx); void func_8010A33C(GlobalContext* globalCtx, s16 param_2); -// void func_8010A410(void); +void func_8010A410(void); void func_8010A430(GlobalContext* globalCtx); void func_8010A54C(GlobalContext* globalCtx); // void Map_Update(void); @@ -2911,7 +2911,7 @@ u32 Padmgr_GetControllerBitmask(void); // void func_80174F24(void); // void func_80174F44(void); void func_80174F7C(void (*arg0)(void*), void* arg1); -void func_80174F9C(void (*arg0)(void*), void* arg1); +void func_80174F9C(void (*arg0)(s32), void* arg1); // OSMesgQueue* Padmgr_GetEventCallback(void); // void func_80175008(void); void Padmgr_SetEventCallback(OSMesg pvParm1); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index aab7c74d0..5dbb9cc40 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -12,30 +12,6 @@ extern Gfx D_0E0002E0[]; // Display List extern u8 D_801ABAB0[]; extern u8 D_801E3BB0[]; -/** - * Steps `var` towards `target` linearly, so that it will arrive in `timeRemaining` seconds. Can be used from either - * direction. `timeRemaining` must be decremented separately for this to work properly, and obviously timeRemaining = 0 - * must be handled separately. - * - * @param var Variable to step. - * @param target Target to step towards. - * @param timeRemaining Number of times this function should be run for `var` to reach `target` - * @param stepVar Variable to use for the step (required to match). - * - * The progression is not quite linear because of truncation in the division, but the variable will always reach - * `target` at the appropriate time since the last step is always the full difference. - */ -#define TIMED_STEP_TO(var, target, timeRemaining, stepVar) \ - { \ - stepVar = ABS_ALT(var - target) / timeRemaining; \ - if (var >= target) { \ - var -= stepVar; \ - } else { \ - var += stepVar; \ - } \ - } \ - (void)0 - typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -3902,11 +3878,11 @@ void func_80118084(GlobalContext* globalCtx) { Interface_DrawAmmoCount(globalCtx, 0, interfaceCtx->bAlpha); } } else if (((interfaceCtx->unk_21C == 0) && (interfaceCtx->unk_222 == 0)) || - ((interfaceCtx->unk_21C != 0) && - ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED)) && - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT)) { + (((interfaceCtx->unk_21C != 0) && + ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED)) && + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT))) { if ((player->transformation == PLAYER_FORM_FIERCE_DEITY) || (player->transformation == PLAYER_FORM_HUMAN)) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment, 0); @@ -6214,7 +6190,7 @@ void Interface_Draw(GlobalContext* globalCtx) { if (D_801BF884 == 2) { D_801BF884 = 3; - func_801518B0(globalCtx, 0xF8, NULL); + Message_StartTextbox(globalCtx, 0xF8, NULL); Interface_ChangeAlpha(1); player->stateFlags1 |= 0x200; } From 38cf37151825f5691420b79a02ab948478828db3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 23:09:18 +1000 Subject: [PATCH 074/160] Match Interface_InitVertices --- src/code/z_parameter.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 5dbb9cc40..b7cb9705c 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -430,30 +430,28 @@ s16 D_801BFA64[] = { s16 D_801BFA74[] = { 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, }; -#ifdef NON_MATCHING void Interface_InitVertices(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 i; s16 j; s16 k; - s16 counter; s16 offset; globalCtx->interfaceCtx.actionVtx = GRAPH_ALLOC(globalCtx->state.gfxCtx, 108 * sizeof(Vtx)); // clang-format off - for (counter = 0, i = 0; i < 44; i += 4, counter++) { + for (k = 0, i = 0; i < 44; i += 4, k++) { interfaceCtx->actionVtx[i].v.ob[0] = - interfaceCtx->actionVtx[i + 2].v.ob[0] = D_801BFA04[counter]; + interfaceCtx->actionVtx[i + 2].v.ob[0] = D_801BFA04[k]; interfaceCtx->actionVtx[i + 1].v.ob[0] = - interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + D_801BFA1C[counter]; + interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + D_801BFA1C[k]; interfaceCtx->actionVtx[i].v.ob[1] = - interfaceCtx->actionVtx[i + 1].v.ob[1] = D_801BFA34[counter]; + interfaceCtx->actionVtx[i + 1].v.ob[1] = D_801BFA34[k]; interfaceCtx->actionVtx[i + 2].v.ob[1] = - interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - D_801BFA4C[counter]; + interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - D_801BFA4C[k]; interfaceCtx->actionVtx[i].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = @@ -471,10 +469,10 @@ void Interface_InitVertices(GlobalContext* globalCtx) { interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; interfaceCtx->actionVtx[i + 1].v.tc[0] = - interfaceCtx->actionVtx[i + 3].v.tc[0] = D_801BFA1C[counter] << 5; + interfaceCtx->actionVtx[i + 3].v.tc[0] = D_801BFA1C[k] << 5; interfaceCtx->actionVtx[i + 2].v.tc[1] = - interfaceCtx->actionVtx[i + 3].v.tc[1] = D_801BFA4C[counter] << 5; + interfaceCtx->actionVtx[i + 3].v.tc[1] = D_801BFA4C[k] << 5; interfaceCtx->actionVtx[i].v.cn[0] = interfaceCtx->actionVtx[i + 1].v.cn[0] = @@ -505,7 +503,7 @@ void Interface_InitVertices(GlobalContext* globalCtx) { interfaceCtx->actionVtx[6].v.tc[1] = interfaceCtx->actionVtx[7].v.tc[1] = 0x400; - for (offset = 2, j = 0; j < 2; j++, offset -= 2) { + for (j = 0, offset = 2; j < 2; j++, offset -= 2) { for (k = 0; k < 8; k++, i += 4) { if ((interfaceCtx->minigameRewardType == 1) || ((interfaceCtx->minigameRewardType == 3) && (interfaceCtx->unk_28A[0] == 6))) { interfaceCtx->actionVtx[i].v.ob[0] = @@ -616,10 +614,6 @@ void Interface_InitVertices(GlobalContext* globalCtx) { interfaceCtx->beatingHeartVtx[2].v.cn[3] = interfaceCtx->beatingHeartVtx[3].v.cn[3] = 255; // clang-format on } -#else -void Interface_InitVertices(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_InitVertices.s") -#endif s32 D_801BFA84 = 0; void func_8010E968(s32 arg0) { From 9db22c24a7e850d35144cf7cda8e546ebbc93e94 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 23:26:38 +1000 Subject: [PATCH 075/160] Match Interface_DrawAmmoCount --- src/code/z_parameter.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index b7cb9705c..f759f78f4 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3785,14 +3785,13 @@ void Interface_DrawItemIconTexture(GlobalContext* globalCtx, void* texture, s16 s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; -#ifdef NON_MATCHING void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { u8 i; u16 ammo; OPEN_DISPS(globalCtx->state.gfxCtx); - i = (((button) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, button) : BUTTON_ITEM_EQUIP(0, button)) & 0xFF); + i = ((void)0, GET_CUR_FORM_BTN_ITEM(button)); if ((i == ITEM_STICK) || (i == ITEM_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) || ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) || (i == ITEM_BOMBCHU) || (i == ITEM_POWDER_KEG) || @@ -3805,8 +3804,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { ammo = AMMO(i); if (i == ITEM_PICTO_BOX) { - // TODO: index of gBitFlags? - if (!CHECK_QUEST_ITEM(((void)0, QUEST_PICTOBOX))) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { ammo = 0; } else { ammo = 1; @@ -3829,7 +3827,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha); } - if (!ammo) { // TODO: No == 0 + if (!ammo) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha); } @@ -3837,20 +3835,17 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { ammo -= 10; } - if (i) { // TODO: No != 0 + if (i) { OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, D_801BFB04[button], - D_801BFB0C[button], 8, 8, 0x400, 0x400); + D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, - D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 0x400, 0x400); + D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } CLOSE_DISPS(globalCtx->state.gfxCtx); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s") -#endif void func_80118084(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 6ca3e249a66a36a394b35cbd21a75e1fd5379fbd Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 17 Apr 2022 23:50:45 +1000 Subject: [PATCH 076/160] Small fix in Interface_UpdateTimers --- src/code/z_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f759f78f4..81a94af59 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -5650,7 +5650,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { temp_ret = osGetTime(); temp_ret = temp_ret - gSaveContext.unk_10B0[i]; var3 = temp_ret - gSaveContext.unk_1020[i]; - var3 = var3 / 1000; + var3 = var3 / 10000; var3 = var3 * 64; var3 = var3 / 3000; if (var3 == 0) { From 98f09ddf141bde04cbdb31768a618691c0529fd8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 00:18:19 +1000 Subject: [PATCH 077/160] Small cleanup --- src/code/z_parameter.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 81a94af59..98f7b9d6d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1536,7 +1536,6 @@ void func_80110038(GlobalContext* globalCtx) { Interface_ChangeAlpha(22); } else if (gSaveContext.save.weekEventReg[84] & 0x20) { if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { - for (i = 1; i < 4; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { @@ -1552,7 +1551,6 @@ void func_80110038(GlobalContext* globalCtx) { } } } else { - for (i = 1; i < 4; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_ZORA)) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { @@ -1596,6 +1594,7 @@ void func_80110038(GlobalContext* globalCtx) { gSaveContext.buttonStatus[i] = BTN_DISABLED; } } + if (phi_t3 || (gSaveContext.unk_3F22 != 0xC)) { gSaveContext.unk_3F22 = 0; Interface_ChangeAlpha(12); @@ -1687,7 +1686,6 @@ void func_80110038(GlobalContext* globalCtx) { } } else { if (player->stateFlags1 & 0x200000) { - for (i = 1; i < 4; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1798,7 +1796,6 @@ void func_80110038(GlobalContext* globalCtx) { if (gSaveContext.save.playerForm == player->transformation) { for (i = 1; i < 4; i++) { - if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -2109,7 +2106,7 @@ void func_80111CB4(GlobalContext* globalCtx) { sp28 = true; D_801BF884 = 0; } else if (CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_B)) { - globalCtx->actorCtx.unk5 &= 0xFFFB; + globalCtx->actorCtx.unk5 &= ~4; interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; sp28 = true; @@ -2146,7 +2143,7 @@ void func_80111CB4(GlobalContext* globalCtx) { (u8*)gSaveContext.pictoPhoto, 0x4600); func_8013A240(globalCtx); } - globalCtx->actorCtx.unk5 &= ~0x4; + globalCtx->actorCtx.unk5 &= ~4; SET_QUEST_ITEM(QUEST_PICTOBOX); D_801BF888 = false; } @@ -5217,7 +5214,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (D_801BF970 == 0) { switch (gSaveContext.unk_3DD0[0]) { case 13: - if (gSaveContext.timersNoTimeLimit[0] != 0) { + if (gSaveContext.timersNoTimeLimit[0]) { gSaveContext.unk_3E50[0] = osGetTime(); } gSaveContext.unk_3DD0[0] = 14; @@ -5351,7 +5348,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 8: gSaveContext.unk_3DE0[D_801BF970] = (gSaveContext.save.playerData.health >> 1) * 100; - gSaveContext.timersNoTimeLimit[D_801BF970] = 0; + gSaveContext.timersNoTimeLimit[D_801BF970] = false; gSaveContext.unk_3E18[D_801BF970] = gSaveContext.unk_3DE0[D_801BF970]; gSaveContext.unk_3DD0[D_801BF970] = 3; D_801BFCE4 = 20; @@ -5424,7 +5421,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { } if ((D_801BF970 != 99) && (gSaveContext.unk_3DD0[D_801BF970] != 0)) { - if (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) { + if (!gSaveContext.timersNoTimeLimit[D_801BF970]) { D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) || @@ -5533,7 +5530,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 0x400, 0x400); + gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -5566,7 +5563,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && - (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) && + !gSaveContext.timersNoTimeLimit[D_801BF970] && (gSaveContext.unk_3DD0[D_801BF970] != 11)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { @@ -6162,7 +6159,7 @@ void Interface_Draw(GlobalContext* globalCtx) { } if (D_801BF884 >= 2) { - if ((globalCtx->actorCtx.unk5 & 4) == 0) { + if (!(globalCtx->actorCtx.unk5 & 4)) { func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), (u8*)gSaveContext.pictoPhoto, 0x4600); @@ -6198,6 +6195,7 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); + // Regalloc. Could be reused temps? phi_a2 = 0x1F; for (phi_t0_2 = 0; phi_t0_2 < 14; phi_t0_2++, phi_a2 += 8) { gDPLoadTextureBlock(OVERLAY_DISP++, From a7cf76ea1e4fefccca346ece78569da7ac1ef1f8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 10:05:27 +1000 Subject: [PATCH 078/160] Match Interface_UpdateTimers --- src/code/z_parameter.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 98f7b9d6d..084c13d6d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -5611,16 +5611,12 @@ void Interface_DrawTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") #endif -#ifdef NON_MATCHING void Interface_UpdateTimers(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; s16 i; - // u64 var0; - // u64 var1; - // u64 var2; + s16 j; u64 var3; - u64 temp_ret; - // s32 pad[2]; + s32 pad[2]; if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (globalCtx->gameOverCtx.state == 0) && @@ -5629,11 +5625,11 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { if (D_801BF96C) { - temp_ret = osGetTime(); + var3 = osGetTime(); - for (i = 0; i < 6; i++) { - if (gSaveContext.unk_101A[i] == 1) { - gSaveContext.unk_10B0[i] += temp_ret - D_801BF8F0; + for (j = 0; j < 6; j++) { + if (gSaveContext.unk_101A[j] == 1) { + gSaveContext.unk_10B0[j] += var3 - D_801BF8F0; } } @@ -5644,12 +5640,8 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { for (i = 0; i < 6; i++) { if (gSaveContext.unk_101A[i] == 1) { - temp_ret = osGetTime(); - temp_ret = temp_ret - gSaveContext.unk_10B0[i]; - var3 = temp_ret - gSaveContext.unk_1020[i]; - var3 = var3 / 10000; - var3 = var3 * 64; - var3 = var3 / 3000; + var3 = osGetTime(); + var3 = (((var3 - ((void)0, gSaveContext.unk_10B0[i]) - ((void)0, gSaveContext.unk_1020[i])) / 10000) * 64) / 3000; if (var3 == 0) { gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; } else if (gSaveContext.unk_1050[i] >= var3) { @@ -5674,10 +5666,6 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { D_801BF96C = true; } } -#else -void Interface_UpdateTimers(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s") -#endif void Interface_DrawMinigameIcons(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 87617ea92df51aec0cbeabbba24365d66727616e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 11:15:57 +1000 Subject: [PATCH 079/160] Match Interface_Draw!!! --- src/code/z_parameter.c | 56 +++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 084c13d6d..31d8f1aab 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -9,8 +9,6 @@ void func_801663C4(u8* arg0, u8* arg1, u32 arg2); extern Gfx D_0E0001C8[]; // Display List extern Gfx D_0E0002E0[]; // Display List -extern u8 D_801ABAB0[]; -extern u8 D_801E3BB0[]; typedef struct { /* 0x00 */ u8 scene; @@ -5641,7 +5639,9 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { for (i = 0; i < 6; i++) { if (gSaveContext.unk_101A[i] == 1) { var3 = osGetTime(); - var3 = (((var3 - ((void)0, gSaveContext.unk_10B0[i]) - ((void)0, gSaveContext.unk_1020[i])) / 10000) * 64) / 3000; + var3 = (((var3 - ((void)0, gSaveContext.unk_10B0[i]) - ((void)0, gSaveContext.unk_1020[i])) / 10000) * + 64) / + 3000; if (var3 == 0) { gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; } else if (gSaveContext.unk_1050[i] >= var3) { @@ -5825,7 +5825,6 @@ u32 D_801BFD8C[] = { 0x07025800, 0x07025A00, }; -#ifdef NON_MATCHING void Interface_Draw(GlobalContext* globalCtx) { s32 pad; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -5857,7 +5856,8 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetTextureFilter(POLY_OPA_DISP++, G_TF_POINT); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - gSPLoadUcodeEx(OVERLAY_DISP++, OS_K0_TO_PHYSICAL(D_801ABAB0), OS_K0_TO_PHYSICAL(D_801E3BB0), 0x800); + gSPLoadUcodeEx(OVERLAY_DISP++, OS_K0_TO_PHYSICAL(gspS2DEX2_fifoTextStart), + OS_K0_TO_PHYSICAL(gspS2DEX2_fifoDataStart), 0x800); gfx = OVERLAY_DISP; func_80172758(&gfx, D_801BFD84[interfaceCtx->storyType], D_801BFD8C[interfaceCtx->storyType], 0x140, 0xF0, @@ -6075,13 +6075,13 @@ void Interface_Draw(GlobalContext* globalCtx) { sp2C0 = interfaceCtx->unk_284 / 100.0f; if (sp2CE == 3) { - interfaceCtx->actionVtx[0x28].v.ob[0] = interfaceCtx->actionVtx[0x2A].v.ob[0] = -0x14; - interfaceCtx->actionVtx[0x29].v.ob[0] = interfaceCtx->actionVtx[0x2B].v.ob[0] = - interfaceCtx->actionVtx[0x28].v.ob[0] + 0x28; - interfaceCtx->actionVtx[0x29].v.tc[0] = interfaceCtx->actionVtx[0x2B].v.tc[0] = 0x500; + interfaceCtx->actionVtx[40].v.ob[0] = interfaceCtx->actionVtx[42].v.ob[0] = -20; + interfaceCtx->actionVtx[41].v.ob[0] = interfaceCtx->actionVtx[43].v.ob[0] = + interfaceCtx->actionVtx[40].v.ob[0] + 40; + interfaceCtx->actionVtx[41].v.tc[0] = interfaceCtx->actionVtx[43].v.tc[0] = 0x500; } - interfaceCtx->actionVtx[0x2A].v.tc[1] = interfaceCtx->actionVtx[0x2B].v.tc[1] = 0x400; + interfaceCtx->actionVtx[42].v.tc[1] = interfaceCtx->actionVtx[43].v.tc[1] = 0x400; func_8012C8D4(globalCtx->state.gfxCtx); @@ -6124,35 +6124,36 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusBorderTex, G_IM_FMT_IA, 16, 16, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(32) * 4, YREG(33) * 4, (YREG(32) * 4) + 0x40, (YREG(33) * 4) + 0x40, + gSPTextureRectangle(OVERLAY_DISP++, YREG(32) * 4, YREG(33) * 4, (YREG(32) + 0x10) * 4, (YREG(33) + 0x10) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(34) * 4, YREG(35) * 4, (YREG(34) * 4) + 0x40, (YREG(35) * 4) + 0x40, - G_TX_RENDERTILE, 0x200, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(36) * 4, YREG(37) * 4, (YREG(36) * 4) + 0x40, (YREG(37) * 4) + 0x40, - G_TX_RENDERTILE, 0, 0x200, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(38) * 4, YREG(39) * 4, (YREG(38) * 4) + 0x40, (YREG(39) * 4) + 0x40, - G_TX_RENDERTILE, 0x200, 0x200, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(34) * 4, YREG(35) * 4, (YREG(34) + 0x10) * 4, (YREG(35) + 0x10) * 4, + G_TX_RENDERTILE, 512, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(36) * 4, YREG(37) * 4, (YREG(36) + 0x10) * 4, (YREG(37) + 0x10) * 4, + G_TX_RENDERTILE, 0, 512, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(38) * 4, YREG(39) * 4, (YREG(38) + 0x10) * 4, (YREG(39) + 0x10) * 4, + G_TX_RENDERTILE, 512, 512, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusIconTex, G_IM_FMT_I, 32, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(40) * 4, YREG(41) * 4, (YREG(40) * 4) + 0x80, (YREG(41) * 4) + 0x40, + gSPTextureRectangle(OVERLAY_DISP++, YREG(40) * 4, YREG(41) * 4, (YREG(40) + 0x20) * 4, (YREG(41) + 0x10) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + if (1) {} + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusTextTex, G_IM_FMT_I, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) * 4) + 0x80, (YREG(43) * 4) + 0x20, + gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) + 0x20) * 4, (YREG(43) + 0x8) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } if (D_801BF884 >= 2) { if (!(globalCtx->actorCtx.unk5 & 4)) { - func_801663C4((u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), + func_801663C4((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, (u8*)gSaveContext.pictoPhoto, 0x4600); - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; + interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; D_801BF884 = 0; gSaveContext.unk_3F22 = 0; @@ -6160,7 +6161,6 @@ void Interface_Draw(GlobalContext* globalCtx) { } else { s16 phi_a2; - s16 phi_t0_2; if (D_801BF884 == 2) { D_801BF884 = 3; @@ -6169,8 +6169,6 @@ void Interface_Draw(GlobalContext* globalCtx) { player->stateFlags1 |= 0x200; } - if (1) {} - gDPPipeSync(OVERLAY_DISP++); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); gDPSetCombineMode(OVERLAY_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); @@ -6183,12 +6181,11 @@ void Interface_Draw(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); - // Regalloc. Could be reused temps? phi_a2 = 0x1F; - for (phi_t0_2 = 0; phi_t0_2 < 14; phi_t0_2++, phi_a2 += 8) { + for (sp2CC = 0; sp2CC < 14; sp2CC++, phi_a2 += 8) { gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90) + - (0x500 * phi_t0_2), + (0x500 * sp2CC), G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -6207,9 +6204,6 @@ void Interface_Draw(GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_Draw.s") -#endif void Interface_LoadStory(GlobalContext* globalCtx, s32 block) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From 0ceb2cc828c3876b52a6216a6ee82b7804e6129c Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 12:40:22 +1000 Subject: [PATCH 080/160] Progress on Interface_DrawTimers --- src/code/z_parameter.c | 220 +++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 119 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 31d8f1aab..d587ebe7e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -169,10 +169,10 @@ s16 D_801BF8E4 = 0; OSTime D_801BF8E8 = 0; OSTime D_801BF8F0 = 0; -u64 D_801BF8F8[] = { +OSTime D_801BF8F8[] = { 0, 0, 0, 0, 0, 0, 0, }; -u64 D_801BF930[] = { +OSTime D_801BF930[] = { 0, 0, 0, 0, 0, 0, 0, }; @@ -5163,8 +5163,8 @@ void func_8011C898(u64 timer, s16* timerArr) { timerArr[7] = time; } -s32 D_801BFCE4 = 0; -u16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +s16 D_801BFCE4 = 0; // May or may not be in-function static (does affect regalloc) +s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; s16 D_801BFCF8 = 0x63; s16 D_801BFCFC[] = { 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, @@ -5172,17 +5172,16 @@ s16 D_801BFCFC[] = { s16 D_801BFD0C[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; -// Likely very non-equivalent, unsure about both control-flow logic and u64 logic #ifdef NON_EQUIVALENT void Interface_DrawTimers(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; Player* player = GET_PLAYER(globalCtx); - s16 i; // spC6 - - OSTime osTime; OSTime spD0; - s16 phi_t0_2; + s16 timerX; + s16 timerY; + s16 i; // spC6 + s16 j; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -5192,12 +5191,13 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { - if (D_801BF968) { - osTime = osGetTime(); - for (i = 0; i < 7; i++) { - if (gSaveContext.unk_3DD0[i] == 4) { - gSaveContext.unk_3EC0[i] = gSaveContext.unk_3EC0[i] + osTime - D_801BF8E8; + if (D_801BF968) { + spD0 = osGetTime(); + + for (j = 0; j < 7; j++) { + if (gSaveContext.unk_3DD0[j] == 4) { + gSaveContext.unk_3EC0[j] += spD0 - D_801BF8E8; } } @@ -5219,17 +5219,17 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFA84 = 1; func_80174F7C(func_8010E968, NULL); break; - case 15: - osTime = - (gSaveContext.unk_3DC8 - gSaveContext.unk_3DE0[0] - gSaveContext.unk_3EC0[0]) * 0x40; - osTime = osTime / 3000; - osTime = osTime / 10000; - gSaveContext.unk_3DE0[0] = osTime; + case 15: + spD0 = gSaveContext.unk_3DC8; + gSaveContext.unk_3DE0[0] = + (spD0 - ((void)0, gSaveContext.unk_3E50[0]) - ((void)0, gSaveContext.unk_3EC0[0])) * + 64 / 3000 / 10000; gSaveContext.unk_3DD0[0] = 16; func_80174F9C(func_8010E968, NULL); break; + case 14: case 16: break; @@ -5280,21 +5280,18 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 3: if (D_801BF970 == 3) { - gSaveContext.timerX[D_801BF970] = - gSaveContext.timerX[D_801BF970] - - ((gSaveContext.timerX[D_801BF970] - XREG(81)) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] = - gSaveContext.timerY[D_801BF970] - - ((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4); + // TODO: s16 casts + gSaveContext.timerX[D_801BF970] -= + (s16)((gSaveContext.timerX[D_801BF970] - XREG(81)) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] -= + (s16)((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4); } else { - gSaveContext.timerX[D_801BF970] = gSaveContext.timerX[D_801BF970] - - ((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4; - } else { - phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 46) / D_801BFCE4; - } - gSaveContext.timerY[D_801BF970] -= phi_t0_2; + gSaveContext.timerX[D_801BF970] -= + (s16)((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] -= + (gSaveContext.save.playerData.healthCapacity > 0xA0) + ? (s16)((gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4) + : (s16)((gSaveContext.timerY[D_801BF970] - 46) / D_801BFCE4); } D_801BFCE4--; @@ -5337,9 +5334,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { break; case 12: - osTime = osGetTime(); + spD0 = osGetTime(); gSaveContext.unk_3EC0[D_801BF970] = - gSaveContext.unk_3EC0[D_801BF970] + osTime - D_801BF8F8[D_801BF970]; + gSaveContext.unk_3EC0[D_801BF970] + spD0 - D_801BF8F8[D_801BF970]; D_801BF930[D_801BF970] = 0; gSaveContext.unk_3DD0[D_801BF970] = 4; break; @@ -5353,14 +5350,11 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { break; case 5: - osTime = osGetTime(); + spD0 = osGetTime(); - osTime = - (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40; - osTime = osTime / 3000; - osTime = osTime / 10000; - - gSaveContext.unk_3E88[D_801BF970] = osTime; + gSaveContext.unk_3E88[D_801BF970] = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - + ((void)0, gSaveContext.unk_3EC0[D_801BF970])) * + 64 / 3000 / 10000; gSaveContext.unk_3DD0[D_801BF970] = 0; @@ -5383,14 +5377,11 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { break; case 6: - osTime = osGetTime(); + spD0 = osGetTime(); - osTime = - (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40; - osTime = osTime / 3000; - osTime = osTime / 10000; - - gSaveContext.unk_3E88[D_801BF970] = osTime; + gSaveContext.unk_3E88[D_801BF970] = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - + ((void)0, gSaveContext.unk_3EC0[D_801BF970])) * + 64 / 3000 / 10000; if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { if (gSaveContext.unk_3E88[D_801BF970] >= 12000) { @@ -5406,7 +5397,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (gSaveContext.unk_3DD0[6] != 0) { gSaveContext.timerX[6] = 115; gSaveContext.timerY[6] = 80; - if (gSaveContext.unk_3DD0[6] < 0xB) { + if (gSaveContext.unk_3DD0[6] < 11) { gSaveContext.unk_3DD0[6] = 3; } gSaveContext.unk_3DD0[D_801BF970] = 0; @@ -5424,12 +5415,10 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCE8[2] = D_801BFCE8[5] = 10; if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) || (gSaveContext.unk_3DD0[D_801BF970] == 11) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { - osTime = osGetTime(); - osTime = (osTime - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64; - osTime = osTime / 3000; - osTime = osTime / 10000; - - spD0 = osTime; + spD0 = osGetTime(); + spD0 = (spD0 - ((void)0, gSaveContext.unk_3EC0[D_801BF970]) - D_801BF930[D_801BF970] - + ((void)0, gSaveContext.unk_3E50[D_801BF970])) * + 64 / 3000 / 10000; } else { if (gSaveContext.unk_3DD0[D_801BF970] == 7) { spD0 = gSaveContext.unk_3E88[D_801BF970]; @@ -5440,22 +5429,20 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (spD0 == 0) { gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; - } else { - if (gSaveContext.unk_3E18[D_801BF970] >= spD0) { - if (gSaveContext.unk_3E18[D_801BF970] <= spD0) { - gSaveContext.unk_3DE0[D_801BF970] = 0; - } else { - gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; - } - } else { + } else if (gSaveContext.unk_3E18[D_801BF970] >= spD0) { + if (gSaveContext.unk_3E18[D_801BF970] <= spD0) { gSaveContext.unk_3DE0[D_801BF970] = 0; - gSaveContext.unk_3DD0[D_801BF970] = 5; - if (D_801BF8E0 != 0) { - gSaveContext.save.playerData.health = 0; - globalCtx->damagePlayer(globalCtx, -2 - gSaveContext.save.playerData.health); - } - D_801BF8E0 = 0; + } else { + gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; } + } else { + gSaveContext.unk_3DE0[D_801BF970] = 0; + gSaveContext.unk_3DD0[D_801BF970] = 5; + if (D_801BF8E0 != 0) { + gSaveContext.save.playerData.health = 0; + globalCtx->damagePlayer(globalCtx, -(gSaveContext.save.playerData.health + 2)); + } + D_801BF8E0 = 0; } func_8011C898(gSaveContext.unk_3DE0[D_801BF970], D_801BFCE8); @@ -5466,7 +5453,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else if (gSaveContext.unk_3DE0[D_801BF970] > 1000) { - if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] & 1) != 0)) { + if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] % 2) != 0)) { play_sound(NA_SE_SY_WARNING_COUNT_N); D_801BFCF8 = D_801BFCE8[4]; } @@ -5475,20 +5462,14 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else { - D_801BFCE8[4] = 0; - D_801BFCE8[0] = 0; - D_801BFCE8[5] = 10; - D_801BFCE8[2] = D_801BFCE8[5]; + D_801BFCE8[0] = D_801BFCE8[4] = 0; + D_801BFCE8[2] = D_801BFCE8[5] = 10; if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { - osTime = osGetTime(); - osTime = (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970] - - D_801BF930[D_801BF970]) * - 64; - osTime = osTime / 3000; - osTime = osTime / 10000; - - spD0 = osTime; + spD0 = osGetTime(); + spD0 = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - + ((void)0, gSaveContext.unk_3EC0[D_801BF970]) - D_801BF930[D_801BF970]) * + 64 / 3000 / 10000; } else if (gSaveContext.unk_3DD0[D_801BF970] == 7) { spD0 = gSaveContext.unk_3E88[D_801BF970]; } else if (D_801BF970 == 0) { @@ -5501,7 +5482,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (spD0 >= 12000) { spD0 = 12000; } - } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES) && + } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES) && (spD0 >= 12000)) { spD0 = 12000; } @@ -5514,9 +5495,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { play_sound(NA_SE_SY_WARNING_COUNT_E); D_801BFCF8 = D_801BFCE8[4]; } - } else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES)) { + } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { if ((gSaveContext.unk_3DE0[D_801BF970] >= - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) && + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); D_801BFCF8 = D_801BFCE8[4]; @@ -5543,55 +5524,56 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else { - if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { - if (gSaveContext.unk_3DE0[D_801BF970] > 11000) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); - } - } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if (gSaveContext.unk_3DE0[D_801BF970] >= - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY]) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (gSaveContext.unk_3DE0[D_801BF970] >= - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); - } - } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && - !gSaveContext.timersNoTimeLimit[D_801BF970] && - (gSaveContext.unk_3DD0[D_801BF970] != 11)) { + } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if (gSaveContext.unk_3DE0[D_801BF970] >= 11000) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } + } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { + if (gSaveContext.unk_3DE0[D_801BF970] >= + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else if (gSaveContext.unk_3DE0[D_801BF970] >= + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); + } + } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && + !gSaveContext.timersNoTimeLimit[D_801BF970] && + (gSaveContext.unk_3DD0[D_801BF970] != 11)) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } if (D_801BF970 == 0) { if (D_801BF8E4 == 2) { - for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + timerX = gSaveContext.timerX[D_801BF970]; + timerY = gSaveContext.timerY[D_801BF970]; OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, - 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, + 0x10, D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); } } else { - for (i = 0; i < 5; i++) { + for (j = 0; j < 5; j++) { + timerX = gSaveContext.timerX[D_801BF970]; + timerY = gSaveContext.timerY[D_801BF970]; OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8, - 0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, + 0x10, D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } else { - for (i = 0; i < 8; i++) { + for (j = 0; j < 8; j++) { + timerX = gSaveContext.timerX[D_801BF970]; + timerY = gSaveContext.timerY[D_801BF970]; OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[i])), 8, 0x10, - D_801BFCFC[i] + gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370); + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, + D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } From c8e7a862719201be95991d9a24462442281ed451 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 14:12:57 +1000 Subject: [PATCH 081/160] More improvements on Interface_DrawTimers --- src/code/z_parameter.c | 94 ++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d587ebe7e..de74efa65 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -5163,22 +5163,24 @@ void func_8011C898(u64 timer, s16* timerArr) { timerArr[7] = time; } -s16 D_801BFCE4 = 0; // May or may not be in-function static (does affect regalloc) -s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -s16 D_801BFCF8 = 0x63; -s16 D_801BFCFC[] = { - 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, -}; -s16 D_801BFD0C[] = { - 9, 9, 8, 9, 9, 8, 9, 9, -}; #ifdef NON_EQUIVALENT void Interface_DrawTimers(GlobalContext* globalCtx) { + static s16 D_801BFCE4 = 0; + static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + static s16 D_801BFCF8 = 0x63; + static s16 D_801BFCFC[] = { + // timer digit width + 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, + }; + static s16 D_801BFD0C[] = { + // digit width + 9, 9, 8, 9, 9, 8, 9, 9, + }; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; Player* player = GET_PLAYER(globalCtx); OSTime spD0; - s16 timerX; + s16 timerTemp; s16 timerY; s16 i; // spC6 s16 j; @@ -5273,25 +5275,29 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 2: D_801BFCE4--; if (D_801BFCE4 == 0) { - gSaveContext.unk_3DD0[D_801BF970] = 3; D_801BFCE4 = 20; + gSaveContext.unk_3DD0[D_801BF970] = 3; } break; case 3: if (D_801BF970 == 3) { // TODO: s16 casts - gSaveContext.timerX[D_801BF970] -= - (s16)((gSaveContext.timerX[D_801BF970] - XREG(81)) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] -= - (s16)((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4); + timerTemp = gSaveContext.timerX[D_801BF970]; + timerTemp = ((timerTemp - XREG(81)) / D_801BFCE4); + gSaveContext.timerX[D_801BF970] = (gSaveContext.timerX[D_801BF970]) - timerTemp; + + timerTemp = gSaveContext.timerY[D_801BF970]; + timerTemp = ((timerTemp - XREG(80)) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] = (gSaveContext.timerY[D_801BF970]) - timerTemp; } else { - gSaveContext.timerX[D_801BF970] -= - (s16)((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] -= - (gSaveContext.save.playerData.healthCapacity > 0xA0) - ? (s16)((gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4) - : (s16)((gSaveContext.timerY[D_801BF970] - 46) / D_801BFCE4); + timerTemp = (((gSaveContext.timerX[D_801BF970]) - 26) / D_801BFCE4); + gSaveContext.timerX[D_801BF970] = (gSaveContext.timerX[D_801BF970]) - timerTemp; + + timerTemp = (gSaveContext.save.playerData.healthCapacity > 0xA0) + ? (((gSaveContext.timerY[D_801BF970]) - 54) / D_801BFCE4) + : (((gSaveContext.timerY[D_801BF970]) - 46) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] = (gSaveContext.timerY[D_801BF970]) - timerTemp; } D_801BFCE4--; @@ -5345,8 +5351,8 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gSaveContext.unk_3DE0[D_801BF970] = (gSaveContext.save.playerData.health >> 1) * 100; gSaveContext.timersNoTimeLimit[D_801BF970] = false; gSaveContext.unk_3E18[D_801BF970] = gSaveContext.unk_3DE0[D_801BF970]; - gSaveContext.unk_3DD0[D_801BF970] = 3; D_801BFCE4 = 20; + gSaveContext.unk_3DD0[D_801BF970] = 3; break; case 5: @@ -5440,12 +5446,12 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gSaveContext.unk_3DD0[D_801BF970] = 5; if (D_801BF8E0 != 0) { gSaveContext.save.playerData.health = 0; - globalCtx->damagePlayer(globalCtx, -(gSaveContext.save.playerData.health + 2)); + globalCtx->damagePlayer(globalCtx, -(((void)0, gSaveContext.save.playerData.health) + 2)); } D_801BF8E0 = 0; } - func_8011C898(gSaveContext.unk_3DE0[D_801BF970], D_801BFCE8); + func_8011C898(((void)0, gSaveContext.unk_3DE0[D_801BF970]), D_801BFCE8); if (gSaveContext.unk_3DE0[D_801BF970] > 6000) { if ((D_801BFCF8 != D_801BFCE8[4]) && (D_801BFCE8[4] == 1)) { @@ -5462,7 +5468,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else { - D_801BFCE8[0] = D_801BFCE8[4] = 0; + D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { @@ -5496,7 +5502,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if ((gSaveContext.unk_3DE0[D_801BF970] >= + if ((((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -5508,8 +5514,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, gSaveContext.timerX[D_801BF970], - gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[D_801BF970]), + ((void)0, gSaveContext.timerY[D_801BF970]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -5531,10 +5538,10 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if (gSaveContext.unk_3DE0[D_801BF970] >= + if (((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (gSaveContext.unk_3DE0[D_801BF970] >= + } else if (((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { @@ -5552,28 +5559,25 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (D_801BF970 == 0) { if (D_801BF8E4 == 2) { for (j = 0; j < 4; j++) { - timerX = gSaveContext.timerX[D_801BF970]; - timerY = gSaveContext.timerY[D_801BF970]; - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, - 0x10, D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, + ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } else { for (j = 0; j < 5; j++) { - timerX = gSaveContext.timerX[D_801BF970]; - timerY = gSaveContext.timerY[D_801BF970]; - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, - 0x10, D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, + ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } else { for (j = 0; j < 8; j++) { - timerX = gSaveContext.timerX[D_801BF970]; - timerY = gSaveContext.timerY[D_801BF970]; - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, - D_801BFCFC[j] + timerX, timerY, D_801BFD0C[j], 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, + ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } From 6879820c3fccc67102dad24b7a9d6bd22392a3c4 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 15:30:42 +1000 Subject: [PATCH 082/160] Interface_DrawTimers is close now --- src/code/z_parameter.c | 51 ++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index de74efa65..caa13d5a9 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -5163,7 +5163,7 @@ void func_8011C898(u64 timer, s16* timerArr) { timerArr[7] = time; } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING void Interface_DrawTimers(GlobalContext* globalCtx) { static s16 D_801BFCE4 = 0; static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -5180,8 +5180,8 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; Player* player = GET_PLAYER(globalCtx); OSTime spD0; + OSTime spCC; s16 timerTemp; - s16 timerY; s16 i; // spC6 s16 j; @@ -5223,9 +5223,9 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { break; case 15: - spD0 = gSaveContext.unk_3DC8; + spCC = gSaveContext.unk_3DC8; gSaveContext.unk_3DE0[0] = - (spD0 - ((void)0, gSaveContext.unk_3E50[0]) - ((void)0, gSaveContext.unk_3EC0[0])) * + (spCC - ((void)0, gSaveContext.unk_3E50[0]) - ((void)0, gSaveContext.unk_3EC0[0])) * 64 / 3000 / 10000; gSaveContext.unk_3DD0[0] = 16; @@ -5283,21 +5283,19 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 3: if (D_801BF970 == 3) { // TODO: s16 casts - timerTemp = gSaveContext.timerX[D_801BF970]; - timerTemp = ((timerTemp - XREG(81)) / D_801BFCE4); - gSaveContext.timerX[D_801BF970] = (gSaveContext.timerX[D_801BF970]) - timerTemp; - - timerTemp = gSaveContext.timerY[D_801BF970]; - timerTemp = ((timerTemp - XREG(80)) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] = (gSaveContext.timerY[D_801BF970]) - timerTemp; + timerTemp = ((((void)0, gSaveContext.timerX[D_801BF970]) - XREG(81)) / D_801BFCE4); + gSaveContext.timerX[D_801BF970] -= timerTemp; + timerTemp = ((((void)0, gSaveContext.timerY[D_801BF970]) - XREG(80)) / D_801BFCE4); + dummy:; // TODO: Needed? + gSaveContext.timerY[D_801BF970] -= timerTemp; } else { - timerTemp = (((gSaveContext.timerX[D_801BF970]) - 26) / D_801BFCE4); - gSaveContext.timerX[D_801BF970] = (gSaveContext.timerX[D_801BF970]) - timerTemp; + timerTemp = ((((void)0, gSaveContext.timerX[D_801BF970]) - 26) / D_801BFCE4); + gSaveContext.timerX[D_801BF970] -= timerTemp; timerTemp = (gSaveContext.save.playerData.healthCapacity > 0xA0) - ? (((gSaveContext.timerY[D_801BF970]) - 54) / D_801BFCE4) - : (((gSaveContext.timerY[D_801BF970]) - 46) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] = (gSaveContext.timerY[D_801BF970]) - timerTemp; + ? ((((void)0, gSaveContext.timerY[D_801BF970]) - 54) / D_801BFCE4) + : ((((void)0, gSaveContext.timerY[D_801BF970]) - 46) / D_801BFCE4); + gSaveContext.timerY[D_801BF970] -= timerTemp; } D_801BFCE4--; @@ -5325,6 +5323,10 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { case 4: if ((gSaveContext.unk_3DD0[D_801BF970] == 4) && (D_801BF970 == 3)) { gSaveContext.timerX[3] = XREG(81); + if (1) {} + if (1) {} + if (1) {} + if (1) {} // TODO: Needed? gSaveContext.timerY[3] = XREG(80); } break; @@ -5415,7 +5417,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { } } - if ((D_801BF970 != 99) && (gSaveContext.unk_3DD0[D_801BF970] != 0)) { + if ((D_801BF970 != 99) && gSaveContext.unk_3DD0[D_801BF970]) { // TODO: No != 0 if (!gSaveContext.timersNoTimeLimit[D_801BF970]) { D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; @@ -5502,7 +5504,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { D_801BFCF8 = D_801BFCE8[4]; } } else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) { - if ((((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= + if ((((void)0, gSaveContext.unk_3DE0[D_801BF970]) > (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -5524,7 +5526,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if (((D_801BF970 == 0) && (gSaveContext.unk_3DD0[0] == 14) && (D_801BF8E4 == 0) && (gSaveContext.unk_3DE0[0] < 300)) || (D_801BF8E4 == 2) || (gSaveContext.unk_3DD0[D_801BF970] < 13)) { - if (gSaveContext.unk_3DD0[D_801BF970] != 0) { + if (gSaveContext.unk_3DD0[D_801BF970]) { // TODO: No != 0 if (D_801BF970 == 2) { if ((gSaveContext.unk_3DE0[D_801BF970] == 0) || (gSaveContext.unk_3DD0[D_801BF970] == 4)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); @@ -5591,6 +5593,17 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); } #else +static s16 D_801BFCE4 = 0; +static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +static s16 D_801BFCF8 = 0x63; +static s16 D_801BFCFC[] = { + // timer digit width + 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, +}; +static s16 D_801BFD0C[] = { + // digit width + 9, 9, 8, 9, 9, 8, 9, 9, +}; void Interface_DrawTimers(GlobalContext* globalCtx); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") #endif From 2514bb079772d92f284da1481a391db493be2bc1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 16:51:44 +1000 Subject: [PATCH 083/160] Match func_80111CB4 --- src/code/z_parameter.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index caa13d5a9..f9ddf2b37 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1942,8 +1942,6 @@ void func_80110038(GlobalContext* globalCtx) { } } -// a0/a1 swap. Likely related to globalCtx->unk_18E5C -#ifdef NON_MATCHING void func_80111CB4(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; Player* player = GET_PLAYER(globalCtx); @@ -2098,7 +2096,7 @@ void func_80111CB4(GlobalContext* globalCtx) { if (D_801BF884 == 1) { if (!(globalCtx->actorCtx.unk5 & 4)) { func_801663C4((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, - (u8*)gSaveContext.pictoPhoto, 0x4600); + (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; sp28 = true; @@ -2138,7 +2136,7 @@ void func_80111CB4(GlobalContext* globalCtx) { D_801BF884 = 0; if (D_801BF888) { func_801663C4((globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, - (u8*)gSaveContext.pictoPhoto, 0x4600); + (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); func_8013A240(globalCtx); } globalCtx->actorCtx.unk5 &= ~4; @@ -2164,8 +2162,8 @@ void func_80111CB4(GlobalContext* globalCtx) { Interface_ChangeAlpha(21); D_801BF884 = 1; } else { - func_80166644((u8*)gSaveContext.pictoPhoto, - ((void)0, (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90), 0x4600); + func_80166644((u8*)((void)0, gSaveContext.pictoPhoto), + (globalCtx->unk_18E5C != NULL) ? globalCtx->unk_18E5C : D_801FBB90, 0x4600); globalCtx->unk_18845 = 1; D_801BF884 = 2; } @@ -2180,10 +2178,6 @@ void func_80111CB4(GlobalContext* globalCtx) { } } } -#else -void func_80111CB4(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80111CB4.s") -#endif void Interface_SetSceneRestrictions(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; From cfe59d8ee1c935cfdcf49f2d5b89e5d7df0dcb25 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 18:01:53 +1000 Subject: [PATCH 084/160] Progress? --- src/code/z_message_nes.c | 6 ++-- src/code/z_parameter.c | 70 +++++++++++++++++++--------------------- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/code/z_message_nes.c b/src/code/z_message_nes.c index 1de839d68..68a87dfd3 100644 --- a/src/code/z_message_nes.c +++ b/src/code/z_message_nes.c @@ -196,14 +196,12 @@ void Message_LoadTimeNES(GlobalContext* globalCtx, u8 arg1, s32* offset, f32* ar u32 dayTime; s16 digits[4]; f32 timeInMinutes; - s32 day; s16 i; if (arg1 == 0xCF) { - day = gSaveContext.save.day; - dayTime = 0x40000 - ((day % 5) << 16) - (u16)(-0x4000 + gSaveContext.save.time); + dayTime = (4 << 16) - (CURRENT_DAY << 16) - (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); } else { - dayTime = 0x10000 - (u16)(-0x4000 + gSaveContext.save.time); + dayTime = (1 << 16) - (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); } timeInMinutes = TIME_TO_MINUTES_F(dayTime); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f9ddf2b37..e5d6b310d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4147,20 +4147,19 @@ void Interface_DrawClock(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; s16 sp1E6; + f32 temp_f14; + u32 dayTime; f32 sp1D8; + f32 timeInMinutes; f32 sp1D0; f32 sp1CC; - s16 sp1C6; - s16 finalHoursClockSlots[8]; // sp1AC - - f32 temp_f0; - f32 temp_f14; - u32 temp_a1_7; f32 new_var; + s16 sp1C6; s16 currentHour; u16 time; + s16 temp; s16 pad; - s16 sp1B4; + s16 finalHoursClockSlots[8]; // sp1AC s16 colorStep; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -4240,8 +4239,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); - if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && - ((0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { + if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && + (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { func_8012C8D4(globalCtx->state.gfxCtx); gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } else { @@ -4350,8 +4349,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { D_801BF974 ^= 1; } - sp1D0 = ((((0, gSaveContext.save.time)) * 1.3183594f) / 3600.0f) * 3600.0f; - sp1D0 = (s16)((0, gSaveContext.save.time) * 1.3183594f) - sp1D0; + sp1D0 = ((s16)((gSaveContext.save.time * 1.3183594f) / 3600.0f)) * 3600.0f; + sp1D0 = (gSaveContext.save.time * 1.3183594f) - sp1D0; func_8012C8D4(globalCtx->state.gfxCtx); @@ -4387,8 +4386,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, XREG(44) * 4.0f); // determines the current hour - for (currentHour = 0; currentHour <= 24; currentHour++) { - if ((0, gSaveContext.save.time) < D_801BFB38[currentHour + 1]) { + for (sp1C6 = 0; sp1C6 <= 24; sp1C6++) { + if (((void)0, gSaveContext.save.time) < D_801BFB38[sp1C6 + 1]) { break; } } @@ -4456,7 +4455,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[currentHour], 4, 16, 11, 0); + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); @@ -4480,7 +4479,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[currentHour], 4, 16, 11, 0); + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); @@ -4491,10 +4490,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gSPDisplayList(OVERLAY_DISP++, D_0E0001C8); // Final Hours - if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && ((0, gSaveContext.save.time) >= 5) && - ((0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) { - sp1C6 = 0; - if ((0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { + if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && + (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) { + if (((void)0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { // The Final Hours clock will flash red colorStep = ABS_ALT(sFinalHoursClockDigitsRed - @@ -4568,26 +4566,26 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); - temp_a1_7 = - (-(CURRENT_DAY << 0x10) - (u16)(((void)0, gSaveContext.save.time) - 0x4000)) + - 0x40000; - - temp_f0 = temp_a1_7 * 0.021972656f; - finalHoursClockSlots[0] = 0; - finalHoursClockSlots[1] = temp_f0 / 60.0f; - finalHoursClockSlots[2] = temp_f0 / 60.0f; + + dayTime = + (4 << 16) - (CURRENT_DAY << 16) - (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); + + timeInMinutes = TIME_TO_MINUTES_F(dayTime); + + finalHoursClockSlots[2] = finalHoursClockSlots[1] = timeInMinutes / 60.0f; + // finalHoursClockSlots[2] = timeInMinutes / 60.0f; // digits for hours while (finalHoursClockSlots[1] >= 10) { finalHoursClockSlots[0]++; finalHoursClockSlots[1] -= 10; } - + + // temp = (s16)timeInMinutes % 60; finalHoursClockSlots[3] = 0; - sp1B4 = (s16)temp_f0 % 60; - finalHoursClockSlots[4] = sp1B4; - if (sp1B4) {} // TODO: Needed? + finalHoursClockSlots[4] = (s32)timeInMinutes % 60; + // if (temp) {} // TODO: Needed? // digits for minutes while (finalHoursClockSlots[4] >= 10) { @@ -4596,8 +4594,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } finalHoursClockSlots[6] = 0; - finalHoursClockSlots[7] = temp_a1_7 - (u32)((finalHoursClockSlots[2] * 2730.6667f) + - (finalHoursClockSlots[4] * 45.511112f)); + finalHoursClockSlots[7] = dayTime - (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 + (finalHoursClockSlots[4] * 45.511112f)); // 2^13 / 3 / 60 // digits for seconds while (finalHoursClockSlots[7] >= 10) { @@ -4607,9 +4605,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { // TODO: May be one line // Colon separating hours from minutes - finalHoursClockSlots[2] = 10; + finalHoursClockSlots[2] = finalHoursClockSlots[5] = 10; // Colon separating minutes from seconds - finalHoursClockSlots[5] = 10; + // finalHoursClockSlots[5] = 10; /** * Draws Final-Hours Clock's Digits @@ -4618,7 +4616,7 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sFinalHoursClockDigitsRed, 0, 0, sp1E6); gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockDigitsRed, 0, 0, 0); - for (; sp1C6 < 8; sp1C6++) { + for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); } From 1bae451aa15d722092afd131ec0021dae8ce9af1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 23:14:09 +1000 Subject: [PATCH 085/160] Almost there on Interface_DrawClock, just 1 trick left to solve --- src/code/z_parameter.c | 53 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e5d6b310d..35ee286ea 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4094,7 +4094,7 @@ void func_80119030(GlobalContext* globalCtx) { /** * Draws either the analog three-day clock or the digital final-hours clock */ -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING void Interface_DrawClock(GlobalContext* globalCtx) { static s16 D_801BFB2C = 255; // clockAlpha static s16 D_801BFB30 = 0; // clockAlphaTimer1 @@ -4153,14 +4153,14 @@ void Interface_DrawClock(GlobalContext* globalCtx) { f32 timeInMinutes; f32 sp1D0; f32 sp1CC; - f32 new_var; + s32 new_var; s16 sp1C6; s16 currentHour; u16 time; s16 temp; - s16 pad; - s16 finalHoursClockSlots[8]; // sp1AC s16 colorStep; + s16 finalHoursClockSlots[8]; // sp1AC + s16 index; OPEN_DISPS(globalCtx->state.gfxCtx); @@ -4168,13 +4168,13 @@ void Interface_DrawClock(GlobalContext* globalCtx) { if ((msgCtx->msgMode == 0) || ((globalCtx->actorCtx.unk5 & 2) && !Play_InCsMode(globalCtx)) || (msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || (gSaveContext.gameMode == 3)) { - if (FrameAdvance_IsEnabled(globalCtx) == 0) { + if (!FrameAdvance_IsEnabled(&globalCtx->state)) { if (func_800FE4A8() == 0) { - if ((0, gSaveContext.save.day) < 4) { + if (((void)0, gSaveContext.save.day) < 4) { /** * Changes Clock's transparancy depending if Player is moving or not and possibly other things */ - if ((0, gSaveContext.unk_3F22) == 50) { + if (((void)0, gSaveContext.unk_3F22) == 50) { if (func_801234D4(globalCtx) != 0) { D_801BFB2C = 80; D_801BFB30 = 5; @@ -4239,8 +4239,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); - if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && - (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { + if (((CURRENT_DAY >= 4) || + ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && + (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { func_8012C8D4(globalCtx->state.gfxCtx); gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } else { @@ -4349,8 +4350,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { D_801BF974 ^= 1; } - sp1D0 = ((s16)((gSaveContext.save.time * 1.3183594f) / 3600.0f)) * 3600.0f; - sp1D0 = (gSaveContext.save.time * 1.3183594f) - sp1D0; + sp1D0 = gSaveContext.save.time * 1.3183594f; + sp1D0 -= ((s16)(sp1D0 / 3600.0f)) * 3600.0f; func_8012C8D4(globalCtx->state.gfxCtx); @@ -4568,24 +4569,24 @@ void Interface_DrawClock(GlobalContext* globalCtx) { finalHoursClockSlots[0] = 0; - dayTime = - (4 << 16) - (CURRENT_DAY << 16) - (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); + dayTime = (4 << 16) - (CURRENT_DAY << 16) - + (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); timeInMinutes = TIME_TO_MINUTES_F(dayTime); - finalHoursClockSlots[2] = finalHoursClockSlots[1] = timeInMinutes / 60.0f; - // finalHoursClockSlots[2] = timeInMinutes / 60.0f; + finalHoursClockSlots[1] = timeInMinutes / 60.0f; + finalHoursClockSlots[2] = timeInMinutes / 60.0f; + + temp = (s32)timeInMinutes % 60; // digits for hours while (finalHoursClockSlots[1] >= 10) { finalHoursClockSlots[0]++; finalHoursClockSlots[1] -= 10; } - - // temp = (s16)timeInMinutes % 60; + finalHoursClockSlots[3] = 0; - finalHoursClockSlots[4] = (s32)timeInMinutes % 60; - // if (temp) {} // TODO: Needed? + finalHoursClockSlots[4] = temp; // digits for minutes while (finalHoursClockSlots[4] >= 10) { @@ -4594,8 +4595,9 @@ void Interface_DrawClock(GlobalContext* globalCtx) { } finalHoursClockSlots[6] = 0; - finalHoursClockSlots[7] = dayTime - (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 - (finalHoursClockSlots[4] * 45.511112f)); // 2^13 / 3 / 60 + finalHoursClockSlots[7] = + dayTime - (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 (ft1 - e6c4) + (((void)0, temp) * 45.511112f)); // 2^13 / 3 / 60 (ft0 - e758) // digits for seconds while (finalHoursClockSlots[7] >= 10) { @@ -4603,11 +4605,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { finalHoursClockSlots[7] -= 10; } - // TODO: May be one line - // Colon separating hours from minutes + // Colon separating hours from minutes and minutes from seconds finalHoursClockSlots[2] = finalHoursClockSlots[5] = 10; - // Colon separating minutes from seconds - // finalHoursClockSlots[5] = 10; /** * Draws Final-Hours Clock's Digits @@ -4617,8 +4616,10 @@ void Interface_DrawClock(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockDigitsRed, 0, 0, 0); for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { + index = D_801BFC40[sp1C6]; + OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], - 8, 8, D_801BFC40[sp1C6], 205, 8, 8, 1 << 10, 1 << 10); + 8, 8, index, 205, 8, 8, 1 << 10, 1 << 10); } } } From afc52d7a7e3fc0e0b5fb42d091b667115a913a70 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 18 Apr 2022 23:34:58 +1000 Subject: [PATCH 086/160] Fix warning --- include/functions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/functions.h b/include/functions.h index d1ebbdb33..74fb4aa26 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2910,7 +2910,7 @@ void Main(void* arg); u32 Padmgr_GetControllerBitmask(void); // void func_80174F24(void); // void func_80174F44(void); -void func_80174F7C(void (*arg0)(void*), void* arg1); +void func_80174F7C(void (*arg0)(s32), void* arg1); void func_80174F9C(void (*arg0)(s32), void* arg1); // OSMesgQueue* Padmgr_GetEventCallback(void); // void func_80175008(void); From c544aed0e308a4b60879e17449d74dcd9a9c9017 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Apr 2022 19:17:02 +1000 Subject: [PATCH 087/160] Small touchup --- src/code/z_parameter.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 35ee286ea..52cf48744 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2263,10 +2263,10 @@ void func_80112C0C(GlobalContext* globalCtx, u16 flag) { } } +s16 sAmmoRefillCounts[] = { + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, +}; u8 Item_Give(GlobalContext* globalCtx, u8 item) { - static s16 sAmmoRefillCounts[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, - }; Player* player = GET_PLAYER(globalCtx); u8 i; u8 temp; @@ -3105,7 +3105,6 @@ void func_80115844(GlobalContext* globalCtx, s16 arg1) { } s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { - if (healthChange > 0) { play_sound(NA_SE_SY_HP_RECOVER); } else if ((gSaveContext.save.playerData.doubleDefense != 0) && (healthChange < 0)) { From f07dc046f7dda7b80f90c89761ba80ba95798bb8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Apr 2022 19:59:37 +1000 Subject: [PATCH 088/160] Import Data --- docs/tutorial/advanced_control_flow.md | 18 +- include/color.h | 6 + include/functions.h | 38 +- include/macros.h | 27 +- include/z64item.h | 9 +- spec | 2 - src/boot_O2_g3/yaz0.c | 1 - src/code/code_8012EC80.c | 6 +- src/code/z_en_item00.c | 4 +- src/code/z_parameter.c | 896 +++++++++++++++++- src/code/z_sram_NES.c | 22 +- .../ovl_En_Akindonuts/z_en_akindonuts.c | 12 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 8 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 4 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 2 +- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 2 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 4 +- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 2 +- .../actors/ovl_En_Elforg/z_en_elforg.c | 2 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 4 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 6 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 4 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 42 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 6 +- src/overlays/actors/ovl_En_In/z_en_in.c | 16 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 2 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 4 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 6 +- .../actors/ovl_En_Kujiya/z_en_kujiya.c | 2 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 4 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 4 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 2 +- .../actors/ovl_En_Scopenuts/z_en_scopenuts.c | 2 +- src/overlays/actors/ovl_En_Shn/z_en_shn.c | 4 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 4 +- src/overlays/actors/ovl_En_Tab/z_en_tab.c | 2 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 6 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 6 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 2 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 10 +- src/overlays/actors/ovl_En_Trt2/z_en_trt2.c | 6 +- src/overlays/actors/ovl_En_Tsn/z_en_tsn.c | 6 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 8 +- tools/disasm/files.txt | 2 +- tools/disasm/functions.txt | 36 +- tools/disasm/variables.txt | 120 +-- tools/namefixer.py | 4 +- tools/sizes/code_functions.csv | 36 +- 49 files changed, 1138 insertions(+), 287 deletions(-) diff --git a/docs/tutorial/advanced_control_flow.md b/docs/tutorial/advanced_control_flow.md index 4952f7586..09ba2505f 100644 --- a/docs/tutorial/advanced_control_flow.md +++ b/docs/tutorial/advanced_control_flow.md @@ -199,7 +199,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } } @@ -291,7 +291,7 @@ block_13: block_15: func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -391,7 +391,7 @@ block_11: func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -461,7 +461,7 @@ block_11: func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; block_16: @@ -510,7 +510,7 @@ So let us rewrite the entire second half as a switch: func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; return; break; @@ -541,7 +541,7 @@ There's a couple of other obvious things here: } else { func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -606,7 +606,7 @@ block_7: } else { func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -670,7 +670,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } else { func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; @@ -722,7 +722,7 @@ void func_809527F8(EnMs *this, GlobalContext *globalCtx) { } else { func_8019F208(); Actor_PickUp((Actor *) this, globalCtx, 0x35, 90.0f, 10.0f); - func_801159EC(-0xA); + Rupees_ChangeBy(-0xA); this->actionFunc = func_809529AC; } break; diff --git a/include/color.h b/include/color.h index 438d857ad..db2ecd7e7 100644 --- a/include/color.h +++ b/include/color.h @@ -35,6 +35,12 @@ typedef struct { u32 r, g, b, a; } Color_RGBAu32; +typedef struct { + /* 0x0 */ s16 r; + /* 0x1 */ s16 g; + /* 0x2 */ s16 b; +} Color_RGB16; // size = 0x6 + typedef union { struct { u16 r : 5; diff --git a/include/functions.h b/include/functions.h index d15fbbbfa..48b2fc566 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1910,32 +1910,32 @@ void Interface_ChangeAlpha(u16 param_1); // void func_80111CB4(void); // void func_801129E4(void); void func_80112AFC(GlobalContext* globalCtx); -void func_80112B40(GlobalContext* globalCtx, u8 arg1); -// void func_80112BE4(void); +void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); +// void Interface_LoadItemIcon(void); // void func_80112C0C(void); -u32 Item_Give(GlobalContext* globalCtx, u8 param_2); -// void func_801143CC(void); -UNK_TYPE func_80114978(UNK_TYPE arg0); -void func_801149A0(s32 itemId, s16 slotId); -// void func_80114A9C(void); -// void func_80114B84(void); -// void func_80114CA0(void); -s32 Interface_HasEmptyBottle(void); -s32 Interface_HasItemInBottle(u8 itemId); -// void func_80114FD0(void); -// void func_80115130(void); -// void func_801152B8(void); +u8 Item_Give(GlobalContext* globalCtx, u8 item); +// void Item_CheckObtainabilityImpl(void); +UNK_TYPE Item_CheckObtainability(UNK_TYPE arg0); +void Inventory_DeleteItem(s32 itemId, s16 slotId); +// void Inventory_UnequipItem(void); +// void Inventory_ReplaceItem(void); +// void Inventory_UpdateDeitySwordEquip(void); +s32 Inventory_HasEmptyBottle(void); +s32 Inventory_HasItemInBottle(u8 itemId); +// void Inventory_UpdateBottleItem(void); +// void Inventory_ConsumeFairy(void); +// void Inventory_UpdateItem(void); // void func_801153C8(void); // void func_80115428(void); void func_8011552C(GlobalContext* globalCtx, s16 arg1); // void func_801155B4(void); // void func_80115764(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); -s32 func_80115908(GlobalContext* globalCtx, u8 param_2); -void func_801159c0(s16 param_1); -void func_801159EC(s16 arg0); -void func_80115A14(s16 arg0, s16 arg1); -void Parameter_AddMagic(GlobalContext* globalCtx, s16 arg1); +s32 Health_ChangeBy(GlobalContext* globalCtx, u8 param_2); +void Health_GiveHearts(s16 param_1); +void Rupees_ChangeBy(s16 arg0); +void Inventory_ChangeAmmo(s16 arg0, s16 arg1); +void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); // void func_80116088(void); diff --git a/include/macros.h b/include/macros.h index 5e9c062c9..4a4ea2f36 100644 --- a/include/macros.h +++ b/include/macros.h @@ -81,21 +81,32 @@ #define C_SLOT_EQUIP(form, button) (gSaveContext.save.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 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 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))) -#define SET_CUR_FORM_BTN_ITEM(btn, item) \ - do { \ - if ((btn) == EQUIP_SLOT_B) { \ - BUTTON_ITEM_EQUIP(CUR_FORM, (btn)) = (item); \ - } else { \ - BUTTON_ITEM_EQUIP(0, (btn)) = (item); \ - } \ - } while (0) + +#define SET_CUR_FORM_BTN_ITEM(btn, item) \ + if ((btn) == EQUIP_SLOT_B) { \ + BUTTON_ITEM_EQUIP(CUR_FORM, (btn)) = (item); \ + } else { \ + BUTTON_ITEM_EQUIP(0, (btn)) = (item); \ + } \ + (void)0 + +#define SET_CUR_FORM_BTN_SLOT(btn, item) \ + if ((btn) == EQUIP_SLOT_B) { \ + C_SLOT_EQUIP(CUR_FORM, (btn)) = (item); \ + } else { \ + C_SLOT_EQUIP(0, (btn)) = (item); \ + } \ + (void)0 #define STOLEN_ITEM_NONE (0) diff --git a/include/z64item.h b/include/z64item.h index 785d56577..ad1524fda 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -41,9 +41,12 @@ typedef enum { /* 0x0F */ QUEST_SONG_SOARING, /* 0x10 */ QUEST_SONG_STORMS, /* 0x11 */ QUEST_SONG_SUN, - /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, + /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook + /* 0x13 */ QUEST_SKULL_TOKEN, /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, - /* 0x19 */ QUEST_UNK_19 // Related to PictoBox + /* 0x19 */ QUEST_PICTOBOX, // Photo taken from PictoBox + /* 0x1C */ QUEST_HEART_PIECE = 0x1C, + /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; typedef enum { @@ -109,7 +112,7 @@ typedef enum { /* 0x07 */ ITEM_BOMBCHU, /* 0x08 */ ITEM_STICK, /* 0x09 */ ITEM_NUT, - /* 0x0A */ ITEM_MAGIC_BEANS, + /* 0x0A */ ITEM_BEAN, /* 0x0B */ ITEM_SLINGSHOT, /* 0x0C */ ITEM_POWDER_KEG, /* 0x0D */ ITEM_PICTO_BOX, diff --git a/spec b/spec index 958bb80f9..45b796d54 100644 --- a/spec +++ b/spec @@ -500,8 +500,6 @@ beginseg include "build/src/code/z_olib.o" pad_text include "build/src/code/z_parameter.o" - include "build/data/code/z_parameter.data.o" - include "build/data/code/z_parameter.bss.o" include "build/src/code/z_path.o" include "build/src/code/z_pause.o" include "build/src/code/z_player_lib.o" diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index 5f8e5a0ed..80d819acc 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" u8 sYaz0DataBuffer[0x400]; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 5dee17fb5..9e0a9b516 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -107,7 +107,7 @@ void* gItemIcons[] = { 0x08007000, // ITEM_BOMBCHU 0x08008000, // ITEM_STICK 0x08009000, // ITEM_NUT - 0x0800A000, // ITEM_MAGIC_BEANS + 0x0800A000, // ITEM_BEAN 0x0800B000, // ITEM_SLINGSHOT 0x0800C000, // ITEM_POWDER_KEG 0x0800D000, // ITEM_PICTO_BOX @@ -242,7 +242,7 @@ u8 gItemSlots[] = { SLOT_BOMBCHU, // ITEM_BOMBCHU SLOT_STICK, // ITEM_STICK SLOT_NUT, // ITEM_NUT - SLOT_MAGIC_BEANS, // ITEM_MAGIC_BEANS + SLOT_MAGIC_BEANS, // ITEM_BEAN SLOT_TRADE_KEY_MAMA, // ITEM_SLINGSHOT SLOT_POWDER_KEG, // ITEM_POWDER_KEG SLOT_PICTO_BOX, // ITEM_PICTO_BOX @@ -322,7 +322,7 @@ s16 gItemPrices[] = { 0, // ITEM_BOMBCHU 0, // ITEM_STICK 0, // ITEM_NUT - 0, // ITEM_MAGIC_BEANS + 0, // ITEM_BEAN 0, // ITEM_SLINGSHOT 0, // ITEM_POWDER_KEG 0, // ITEM_PICTO_BOX diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index b8fa0f4f1..08fcba8c2 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -224,7 +224,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { break; case ITEM00_FLEXIBLE: case ITEM00_BIG_FAIRY: - func_80115908(globalCtx, 0x70); + Health_ChangeBy(globalCtx, 0x70); break; case ITEM00_BOMBS_A: case ITEM00_BOMBS_B: @@ -537,7 +537,7 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) { break; case ITEM00_FLEXIBLE: case ITEM00_BIG_FAIRY: - func_80115908(globalCtx, 0x70); + Health_ChangeBy(globalCtx, 0x70); break; case ITEM00_BOMBS_A: case ITEM00_BOMBS_B: diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 44b1de152..18e4aaae1 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,4 +1,264 @@ #include "global.h" +#include "interface/parameter_static/parameter_static.h" + +typedef struct { + /* 0x00 */ u8 scene; + /* 0x01 */ u8 flags1; + /* 0x02 */ u8 flags2; + /* 0x03 */ u8 flags3; +} RestrictionFlags; + +// bss +Input D_801F5850[4]; + +// data +static RestrictionFlags sRestrictionFlags[] = { + { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_1, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_2, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_3, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_4, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_5, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_6, 0x00, 0x00, 0x00 }, + { SCENE_KAKUSIANA, 0x00, 0x00, 0x00 }, + { SCENE_SPOT00, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_9, 0x00, 0x00, 0x00 }, + { SCENE_WITCH_SHOP, 0x10, 0x30, 0xC1 }, + { SCENE_LAST_BS, 0x00, 0x3F, 0x00 }, + { SCENE_HAKASHITA, 0x00, 0x00, 0x00 }, + { SCENE_AYASHIISHOP, 0x10, 0x30, 0xC1 }, + { SCENE_UNSET_E, 0x00, 0x00, 0x00 }, + { SCENE_UNSET_F, 0x00, 0x00, 0x00 }, + { SCENE_OMOYA, 0x00, 0x33, 0x00 }, + { SCENE_BOWLING, 0x10, 0x30, 0xC1 }, + { SCENE_SONCHONOIE, 0x10, 0x30, 0xC1 }, + { SCENE_IKANA, 0x00, 0x00, 0x00 }, + { SCENE_KAIZOKU, 0x00, 0x00, 0x00 }, + { SCENE_MILK_BAR, 0x10, 0x30, 0xC1 }, + { SCENE_INISIE_N, 0x00, 0x00, 0x00 }, + { SCENE_TAKARAYA, 0x10, 0x30, 0xC1 }, + { SCENE_INISIE_R, 0x00, 0x00, 0x00 }, + { SCENE_OKUJOU, 0x00, 0x3F, 0xF0 }, + { SCENE_OPENINGDAN, 0x00, 0x00, 0x00 }, + { SCENE_MITURIN, 0x00, 0x00, 0x00 }, + { SCENE_13HUBUKINOMITI, 0x00, 0x00, 0x00 }, + { SCENE_CASTLE, 0x00, 0x00, 0x00 }, + { SCENE_DEKUTES, 0x10, 0x30, 0x01 }, + { SCENE_MITURIN_BS, 0x00, 0x00, 0x00 }, + { SCENE_SYATEKI_MIZU, 0x10, 0x30, 0xC1 }, + { SCENE_HAKUGIN, 0x00, 0x00, 0x00 }, + { SCENE_ROMANYMAE, 0x00, 0x00, 0x00 }, + { SCENE_PIRATE, 0x00, 0x00, 0x00 }, + { SCENE_SYATEKI_MORI, 0x10, 0x30, 0xC1 }, + { SCENE_SINKAI, 0x00, 0x00, 0x00 }, + { SCENE_YOUSEI_IZUMI, 0x00, 0x00, 0x00 }, + { SCENE_KINSTA1, 0x00, 0x30, 0x00 }, + { SCENE_KINDAN2, 0x00, 0x30, 0x00 }, + { SCENE_TENMON_DAI, 0x00, 0x03, 0xC0 }, + { SCENE_LAST_DEKU, 0x00, 0x3F, 0x00 }, + { SCENE_22DEKUCITY, 0x00, 0x00, 0x00 }, + { SCENE_KAJIYA, 0x00, 0x30, 0xC0 }, + { SCENE_00KEIKOKU, 0x00, 0x00, 0x00 }, + { SCENE_POSTHOUSE, 0x00, 0x30, 0xC1 }, + { SCENE_LABO, 0x00, 0x30, 0xC1 }, + { SCENE_DANPEI2TEST, 0x00, 0x30, 0x00 }, + { SCENE_UNSET_31, 0x00, 0x00, 0x00 }, + { SCENE_16GORON_HOUSE, 0x00, 0x00, 0x00 }, + { SCENE_33ZORACITY, 0x00, 0x00, 0xC0 }, + { SCENE_8ITEMSHOP, 0x00, 0x30, 0xC1 }, + { SCENE_F01, 0x00, 0x00, 0x00 }, + { SCENE_INISIE_BS, 0x00, 0x00, 0x00 }, + { SCENE_30GYOSON, 0x00, 0x00, 0x00 }, + { SCENE_31MISAKI, 0x00, 0x00, 0x00 }, + { SCENE_TAKARAKUJI, 0x00, 0x30, 0xC1 }, + { SCENE_UNSET_3A, 0x00, 0x00, 0x00 }, + { SCENE_TORIDE, 0x00, 0x00, 0x00 }, + { SCENE_FISHERMAN, 0x00, 0x30, 0xC1 }, + { SCENE_GORONSHOP, 0x10, 0x30, 0xC1 }, + { SCENE_DEKU_KING, 0x00, 0x30, 0xC0 }, + { SCENE_LAST_GORON, 0x00, 0x3F, 0x00 }, + { SCENE_24KEMONOMITI, 0x00, 0x00, 0x00 }, + { SCENE_F01_B, 0x00, 0x30, 0x00 }, + { SCENE_F01C, 0x00, 0x30, 0x00 }, + { SCENE_BOTI, 0x00, 0x00, 0x00 }, + { SCENE_HAKUGIN_BS, 0x00, 0x00, 0x00 }, + { SCENE_20SICHITAI, 0x00, 0x00, 0x00 }, + { SCENE_21MITURINMAE, 0x00, 0x00, 0x00 }, + { SCENE_LAST_ZORA, 0x00, 0x3F, 0x00 }, + { SCENE_11GORONNOSATO2, 0x00, 0x00, 0x00 }, + { SCENE_SEA, 0x00, 0x00, 0x00 }, + { SCENE_35TAKI, 0x00, 0x00, 0x00 }, + { SCENE_REDEAD, 0x00, 0x00, 0x00 }, + { SCENE_BANDROOM, 0x00, 0x30, 0xC0 }, + { SCENE_11GORONNOSATO, 0x00, 0x00, 0x00 }, + { SCENE_GORON_HAKA, 0x00, 0x00, 0x00 }, + { SCENE_SECOM, 0x00, 0x3C, 0xC0 }, + { SCENE_10YUKIYAMANOMURA, 0x00, 0x00, 0x00 }, + { SCENE_TOUGITES, 0x00, 0x3F, 0xF0 }, + { SCENE_DANPEI, 0x00, 0x30, 0x00 }, + { SCENE_IKANAMAE, 0x00, 0x00, 0x00 }, + { SCENE_DOUJOU, 0x00, 0x30, 0xC1 }, + { SCENE_MUSICHOUSE, 0x00, 0x30, 0xC0 }, + { SCENE_IKNINSIDE, 0x00, 0x3F, 0xC0 }, + { SCENE_MAP_SHOP, 0x10, 0x30, 0xC1 }, + { SCENE_F40, 0x00, 0x00, 0x00 }, + { SCENE_F41, 0x00, 0x00, 0x00 }, + { SCENE_10YUKIYAMANOMURA2, 0x00, 0x00, 0x00 }, + { SCENE_14YUKIDAMANOMITI, 0x00, 0x00, 0x00 }, + { SCENE_12HAKUGINMAE, 0x00, 0x00, 0x00 }, + { SCENE_17SETUGEN, 0x00, 0x00, 0x00 }, + { SCENE_17SETUGEN2, 0x00, 0x00, 0x00 }, + { SCENE_SEA_BS, 0x00, 0x00, 0x00 }, + { SCENE_RANDOM, 0x00, 0x00, 0x00 }, + { SCENE_YADOYA, 0x10, 0x30, 0xC1 }, + { SCENE_KONPEKI_ENT, 0x00, 0x00, 0x00 }, + { SCENE_INSIDETOWER, 0x00, 0xFF, 0xC0 }, + { SCENE_26SARUNOMORI, 0x00, 0x30, 0x00 }, + { SCENE_LOST_WOODS, 0x00, 0x00, 0x00 }, + { SCENE_LAST_LINK, 0x00, 0x3F, 0x00 }, + { SCENE_SOUGEN, 0x00, 0x3F, 0x00 }, + { SCENE_BOMYA, 0x10, 0x30, 0xC1 }, + { SCENE_KYOJINNOMA, 0x00, 0x00, 0x00 }, + { SCENE_KOEPONARACE, 0x00, 0x30, 0x00 }, + { SCENE_GORONRACE, 0x00, 0x00, 0x00 }, + { SCENE_TOWN, 0x00, 0x00, 0x00 }, + { SCENE_ICHIBA, 0x00, 0x00, 0x00 }, + { SCENE_BACKTOWN, 0x00, 0x00, 0x00 }, + { SCENE_CLOCKTOWER, 0x00, 0x00, 0x00 }, + { SCENE_ALLEY, 0x00, 0x00, 0x00 }, +}; + +s16 D_801BF884 = 0; // pictoBox related +s16 D_801BF888 = false; // pictoBox related + +s16 sHBAScoreTier = 0; + +u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; + +u16 sCUpInvisible = 0; +u16 sCUpTimer = 0; + +s16 sMagicBarOutlinePrimRed = 255; +s16 sMagicBarOutlinePrimGreen = 255; +s16 sMagicBarOutlinePrimBlue = 255; + +s16 D_801BF8AC = 2; // sMagicBorderRatio + +s16 D_801BF8B0 = 1; + +s16 sExtraItemBases[] = { + ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, + ITEM_BOMB, ITEM_BOW, ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, + ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, +}; + +s16 D_801BF8DC = 0; + +s16 D_801BF8E0 = 0; + +s16 D_801BF8E4 = 0; + +OSTime D_801BF8E8 = 0; +OSTime D_801BF8F0 = 0; +OSTime D_801BF8F8[] = { + 0, 0, 0, 0, 0, 0, 0, +}; +OSTime D_801BF930[] = { + 0, 0, 0, 0, 0, 0, 0, +}; + +u8 D_801BF968 = false; +u8 D_801BF96C = false; + +s16 D_801BF970 = 99; + +s16 D_801BF974 = 0; + +s16 D_801BF978 = 10; + +s16 D_801BF97C = 255; + +f32 D_801BF980 = 1.0f; + +s32 D_801BF984 = 0; + +// Display List +Gfx D_801BF988[] = { + gsDPPipeSync(), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_1PRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsSPEndDisplayList(), +}; + +s16 D_801BF9B0 = 0; + +f32 D_801BF9B4[] = { + 100.0f, + 109.0f, +}; + +s16 D_801BF9BC[] = { + 0x226, + 0x2A8, + 0x2A8, + 0x2A8, +}; + +s16 D_801BF9C4[] = { + 0x9E, + 0x9B, +}; + +s16 D_801BF9C8[] = { + 0x17, + 0x16, +}; + +f32 D_801BF9CC[] = { + -380.0f, + -350.0f, +}; + +s16 D_801BF9D4[] = { + 0xA7, + 0xE3, +}; + +s16 D_801BF9D8[] = { + 0xF9, + 0x10F, +}; + +s16 D_801BF9DC[] = { + 0x11, + 0x12, +}; + +s16 D_801BF9E0[] = { + 0x22, + 0x12, +}; + +s16 D_801BF9E4[] = { + 0x23F, + 0x26C, +}; + +s16 D_801BF9E8[] = { + 0x26C, + 0x26C, +}; + +s16 sFinalHoursClockDigitsRed = 0; +s16 sFinalHoursClockFrameEnvRed = 0; +s16 sFinalHoursClockFrameEnvGreen = 0; +s16 sFinalHoursClockFrameEnvBlue = 0; +s16 sFinalHoursClockColorTimer = 15; +s16 sFinalHoursClockColorTargetIndex = 0; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010CB80.s") @@ -18,8 +278,27 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010DE38.s") +s16 D_801BFA04[] = { + 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, +}; +s16 D_801BFA1C[] = { + 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, +}; +s16 D_801BFA34[] = { + 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, +}; +s16 D_801BFA4C[] = { + 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, +}; +s16 D_801BFA64[] = { + 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, +}; +s16 D_801BFA74[] = { + 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E028.s") +s32 D_801BFA84 = 0; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E968.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E9F0.s") @@ -28,6 +307,7 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EB50.s") +void func_8010EBA0(s16 timer, s16 timerId); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EBA0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010EC54.s") @@ -52,38 +332,464 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112AFC.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112B40.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIconImpl.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112BE4.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_Give.s") +s16 sAmmoRefillCounts[] = { + 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, +}; +u8 Item_Give(GlobalContext* globalCtx, u8 item) { + Player* player = GET_PLAYER(globalCtx); + u8 i; + u8 temp; + u8 slot; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801143CC.s") + slot = SLOT(item); + if (item >= ITEM_STICKS_5) { + slot = SLOT(sExtraItemBases[item - ITEM_STICKS_5]); + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114978.s") + if (item == ITEM_SKULL_TOKEN) { + SET_QUEST_ITEM(item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN); + Inventory_IncrementSkullTokenCount(globalCtx->sceneNum); + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801149A0.s") + } else if (item == ITEM_TINGLE_MAP) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114A9C.s") + } else if (item == ITEM_BOMBERS_NOTEBOOK) { + SET_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK); + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114B84.s") + } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { + gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE); + if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (1 << QUEST_HEART_CONTAINER)) { + gSaveContext.save.inventory.questItems ^= (1 << QUEST_HEART_CONTAINER); + gSaveContext.save.playerData.healthCapacity += 0x10; + gSaveContext.save.playerData.health += 0x10; + } + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114CA0.s") + } else if (item == ITEM_HEART_CONTAINER) { + gSaveContext.save.playerData.healthCapacity += 0x10; + gSaveContext.save.playerData.health += 0x10; + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s") + } else if ((item >= ITEM_SONG_SONATA) && (item <= ITEM_SONG_LULLABY_INTRO)) { + SET_QUEST_ITEM(item - ITEM_SONG_SONATA + QUEST_SONG_SONATA); + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s") + } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { + SET_EQUIP_VALUE(EQUIP_SWORD, item - ITEM_SWORD_KOKIRI + 1); + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = item; + Interface_LoadItemIconImpl(globalCtx, 0); + if (item == ITEM_SWORD_RAZOR) { + gSaveContext.save.playerData.swordHealth = 100; + } + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80114FD0.s") + } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + 1)) { + SET_EQUIP_VALUE(EQUIP_SHIELD, item - ITEM_SHIELD_HERO + 1); + Player_SetEquipmentData(globalCtx, player); + return ITEM_NONE; + } + return item; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115130.s") + } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { + SET_DUNGEON_ITEM(item - ITEM_KEY_BOSS, gSaveContext.mapIndex); + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801152B8.s") + } else if (item == ITEM_KEY_SMALL) { + if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) < 0) { + DUNGEON_KEY_COUNT(gSaveContext.mapIndex) = 1; + return ITEM_NONE; + } else { + DUNGEON_KEY_COUNT(gSaveContext.mapIndex)++; + return ITEM_NONE; + } + + } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { + if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { + Inventory_ChangeUpgrade(UPG_QUIVER, 1); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 1); + return ITEM_NONE; + } else { + AMMO(ITEM_BOW)++; + if (AMMO(ITEM_BOW) > (s8)CUR_CAPACITY(UPG_QUIVER)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } + } + } else if (item == ITEM_QUIVER_40) { + Inventory_ChangeUpgrade(UPG_QUIVER, 2); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 2); + return ITEM_NONE; + + } else if (item == ITEM_QUIVER_50) { + Inventory_ChangeUpgrade(UPG_QUIVER, 3); + INV_CONTENT(ITEM_BOW) = ITEM_BOW; + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 3); + return ITEM_NONE; + + } else if (item == ITEM_BOMB_BAG_20) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 1); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 1); + return ITEM_NONE; + + } else { + AMMO(ITEM_BOMB)++; + if (AMMO(ITEM_BOMB) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + } + + } else if (item == ITEM_BOMB_BAG_30) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 2); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 2); + return ITEM_NONE; + + } else if (item == ITEM_BOMB_BAG_40) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, 3); + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 3); + return ITEM_NONE; + + } else if (item == ITEM_WALLET_ADULT) { + Inventory_ChangeUpgrade(UPG_WALLET, 1); + return ITEM_NONE; + + } else if (item == ITEM_WALLET_GIANT) { + Inventory_ChangeUpgrade(UPG_WALLET, 2); + return ITEM_NONE; + + } else if (item == ITEM_STICK_UPGRADE_20) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + INV_CONTENT(ITEM_STICK) = ITEM_STICK; + } + Inventory_ChangeUpgrade(UPG_STICKS, 2); + AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 2); + return ITEM_NONE; + + } else if (item == ITEM_STICK_UPGRADE_30) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + INV_CONTENT(ITEM_STICK) = ITEM_STICK; + } + Inventory_ChangeUpgrade(UPG_STICKS, 3); + AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 3); + return ITEM_NONE; + + } else if (item == ITEM_NUT_UPGRADE_30) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + INV_CONTENT(ITEM_NUT) = ITEM_NUT; + } + Inventory_ChangeUpgrade(UPG_NUTS, 2); + AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 2); + return ITEM_NONE; + + } else if (item == ITEM_NUT_UPGRADE_40) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + INV_CONTENT(ITEM_NUT) = ITEM_NUT; + } + Inventory_ChangeUpgrade(UPG_NUTS, 3); + AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 3); + return ITEM_NONE; + + } else if (item == ITEM_STICK) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + Inventory_ChangeUpgrade(UPG_STICKS, 1); + AMMO(ITEM_STICK) = 1; + } else { + AMMO(ITEM_STICK)++; + if (AMMO(ITEM_STICK) > CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } + } + } else if ((item == ITEM_STICKS_5) || (item == ITEM_STICKS_10)) { + if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { + Inventory_ChangeUpgrade(UPG_STICKS, 1); + AMMO(ITEM_STICK) = sAmmoRefillCounts[item - ITEM_STICKS_5]; + } else { + AMMO(ITEM_STICK) += sAmmoRefillCounts[item - ITEM_STICKS_5]; + if (AMMO(ITEM_STICK) > CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } + } + + item = ITEM_STICK; + + } else if (item == ITEM_NUT) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + Inventory_ChangeUpgrade(UPG_NUTS, 1); + AMMO(ITEM_NUT) = 1; + } else { + AMMO(ITEM_NUT)++; + if (AMMO(ITEM_NUT) > CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } + } + + } else if ((item == ITEM_NUTS_5) || (item == ITEM_NUTS_10)) { + if (INV_CONTENT(ITEM_NUT) != ITEM_NUT) { + Inventory_ChangeUpgrade(UPG_NUTS, 1); + AMMO(ITEM_NUT) += sAmmoRefillCounts[item - ITEM_NUTS_5]; + } else { + AMMO(ITEM_NUT) += sAmmoRefillCounts[item - ITEM_NUTS_5]; + if (AMMO(ITEM_NUT) > CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } + } + item = ITEM_NUT; + + } else if (item == ITEM_POWDER_KEG) { + if (INV_CONTENT(ITEM_POWDER_KEG) != ITEM_POWDER_KEG) { + INV_CONTENT(ITEM_POWDER_KEG) = ITEM_POWDER_KEG; + } + + AMMO(ITEM_POWDER_KEG) = 1; + return ITEM_NONE; + + } else if (item == ITEM_BOMB) { + if ((AMMO(ITEM_BOMB) += 1) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_BOMBS_5) && (item <= ITEM_BOMBS_30)) { + if (gSaveContext.save.inventory.items[SLOT_BOMB] != ITEM_BOMB) { + INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; + AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]; + return ITEM_NONE; + } + + if ((AMMO(ITEM_BOMB) += sAmmoRefillCounts[item - ITEM_BOMBS_5]) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if (item == ITEM_BOMBCHU) { + if (INV_CONTENT(ITEM_BOMBCHU) != ITEM_BOMBCHU) { + INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; + AMMO(ITEM_BOMBCHU) = 10; + return ITEM_NONE; + } + if ((AMMO(ITEM_BOMBCHU) += 10) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { + if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { + INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; + AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]; + + if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + } + + if ((AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]) > CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } + return ITEM_NONE; + + } else if ((item >= ITEM_ARROWS_10) && (item <= ITEM_ARROWS_50)) { + AMMO(ITEM_BOW) += sAmmoRefillCounts[item - ITEM_ARROWS_10 + 4]; + + if ((AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) || (AMMO(ITEM_BOW) < 0)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } + return ITEM_BOW; + + } else if (item == ITEM_OCARINA) { + INV_CONTENT(ITEM_OCARINA) = 0; + return ITEM_NONE; + + } else if (item == ITEM_BEAN) { + if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { + INV_CONTENT(item) = item; + AMMO(ITEM_BEAN) = 1; + } else if (AMMO(ITEM_BEAN) < 20) { + AMMO(ITEM_BEAN)++; + } else { + AMMO(ITEM_BEAN) = 20; + } + return ITEM_NONE; + + } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { + SET_QUEST_ITEM(item - ITEM_REMAINS_ODOLWA + QUEST_REMAINS_ODOWLA); + return ITEM_NONE; + + } else if (item == ITEM_HEART) { + Health_ChangeBy(globalCtx, 0x10); + return item; + + } else if (item == ITEM_MAGIC_SMALL) { + Interface_AddMagic(globalCtx, 0x18); + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + gSaveContext.save.weekEventReg[12] |= 0x80; + return ITEM_NONE; + } + return item; + + } else if (item == ITEM_MAGIC_LARGE) { + Interface_AddMagic(globalCtx, 0x30); + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + gSaveContext.save.weekEventReg[12] |= 0x80; + return ITEM_NONE; + } + return item; + + } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { + Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); // TODO: Different to OoT? Or wrong. + return ITEM_NONE; + + } else if (item == ITEM_LONGSHOT) { + slot = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; + return ITEM_NONE; + } + } + return item; + + } else if ((item == ITEM_MILK_BOTTLE) || (item == ITEM_POE) || (item == ITEM_GOLD_DUST) || (item == ITEM_CHATEAU) || + (item == ITEM_HYLIAN_LOACH)) { + slot = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; + return ITEM_NONE; + } + } + return item; + + } else if (item == ITEM_BOTTLE) { + slot = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; + return ITEM_NONE; + } + } + return item; + + } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || + (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || + (item == ITEM_SEA_HORSE_CAUGHT)) { + slot = SLOT(item); + + if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { + if (item == ITEM_CHATEAU_2) { + item = ITEM_CHATEAU; + + } else if (item == ITEM_MILK) { + item = ITEM_MILK_BOTTLE; + + } else if (item == ITEM_GOLD_DUST_2) { + item = ITEM_GOLD_DUST; + + } else if (item == ITEM_HYLIAN_LOACH_2) { + item = ITEM_HYLIAN_LOACH; + + } else if (item == ITEM_SEA_HORSE_CAUGHT) { + item = ITEM_SEA_HORSE; + } + slot = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { + if (item == ITEM_HOT_SPRING_WATER) { + func_8010EBA0(60, i); + } + + if ((slot + i) == C_SLOT_EQUIP(0, 1)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = item; + Interface_LoadItemIconImpl(globalCtx, 1); + gSaveContext.buttonStatus[1] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, 2)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = item; + Interface_LoadItemIconImpl(globalCtx, 2); + gSaveContext.buttonStatus[2] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, 3)) { + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = item; + Interface_LoadItemIconImpl(globalCtx, 3); + gSaveContext.buttonStatus[3] = BTN_ENABLED; + } + + gSaveContext.save.inventory.items[slot + i] = item; + return ITEM_NONE; + } + } + } else { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = item; + return ITEM_NONE; + } + } + } + + } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { + temp = INV_CONTENT(item); + INV_CONTENT(item) = item; + if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (temp != ITEM_NONE)) { + for (i = 1; i < 4; i++) { + if (temp == GET_CUR_FORM_BTN_ITEM(i)) { + SET_CUR_FORM_BTN_ITEM(i, item); + Interface_LoadItemIconImpl(globalCtx, i); + return ITEM_NONE; + } + } + } + return ITEM_NONE; + } + + temp = gSaveContext.save.inventory.items[slot]; + INV_CONTENT(item) = item; + return temp; +} + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainability.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_DeleteItem.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UnequipItem.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateDeitySwordEquip.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801153C8.s") +TexturePtr sDoActionTextures[] = { + 0x09000000, // gAttackDoActionENGTex + 0x09000180, // gCheckDoActionENGTex +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115428.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011552C.s") @@ -94,15 +800,15 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115844.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115908.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Health_ChangeBy.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159c0.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Health_GiveHearts.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801159EC.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115A14.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Parameter_AddMagic.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_AddMagic.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115D5C.s") @@ -110,6 +816,12 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116088.s") +s16 magicBorderColors[][3] = { + { 255, 255, 255 }, + { 150, 150, 150 }, +}; +s16 magicBorderIndices[] = { 0, 1, 1, 0 }; +s16 magicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116114.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80116348.s") @@ -120,10 +832,22 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801170B8.s") +TexturePtr cUpLabelTextures[] = { + gTatlCUpENGTex, gTatlCUpENGTex, gTatlCUpGERTex, gTatlCUpFRATex, gTatlCUpESPTex, +}; +s16 startButtonLeftPos[] = { + // Remnant of OoT + 130, 136, 136, 136, 136, +}; +s16 D_801BFAF4[] = { 0x1D, 0x1B }; +s16 D_801BFAF8[] = { 0x1B, 0x1B }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117100.s") +s16 D_801BFAFC[] = { 30, 24, 24, 24 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117A20.s") +s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; +s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80117BD0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118084.s") @@ -132,36 +856,170 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80118BA4.s") +extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex +s16 D_801BFB14[] = { 255, 100, 255, 0 }; // magicArrowEffectsR +s16 D_801BFB1C[] = { 0, 100, 255, 0 }; // magicArrowEffectsG +s16 D_801BFB24[] = { 0, 255, 100, 0 }; // magicArrowEffectsB #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119030.s") +s16 D_801BFB2C = 255; +s16 D_801BFB30 = 0; +s16 D_801BFB34 = 0; +u16 D_801BFB38[] = { + CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), + CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), + CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), + CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), + CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, +}; +TexturePtr D_801BFB6C[] = { + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, + gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, + gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, + gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, +}; +s16 D_801BFBCC = 0; // color R +s16 D_801BFBD0 = 155; // color G +s16 D_801BFBD4 = 255; +s16 D_801BFBD8 = 0; +s16 D_801BFBDC = 0; +s16 D_801BFBE0 = 0; +s16 D_801BFBE4 = 0xF; +u32 D_801BFBE8 = 0; +s16 D_801BFBEC[] = { 100, 0 }; +s16 D_801BFBF0[] = { 205, 155 }; +s16 D_801BFBF4[] = { 255, 255 }; +s16 D_801BFBF8[] = { 30, 0 }; +s16 D_801BFBFC[] = { 30, 0 }; +s16 D_801BFC00[] = { 100, 0 }; +s16 D_801BFC04[] = { 255, 0 }; +s16 D_801BFC08[] = { 100, 0 }; +s16 D_801BFC0C[] = { 30, 0 }; +s16 D_801BFC10[] = { 100, 0 }; +TexturePtr D_801BFC14[] = { + gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, + gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, + gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, +}; +s16 D_801BFC40[] = { + 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B4E0.s") +u16 D_801BFC50[] = { + 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, +}; +s16 D_801BFC60[][3] = { + 255, 255, 255, 255, 165, 55, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") +s16 D_801BFC6C[] = { + 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, +}; +s16 D_801BFC7C[] = { + 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, +}; +s16 D_801BFC8C[2][3] = { + { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xA5, 0x37 }, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") +s16 D_801BFC98[] = { + 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, +}; +u16 D_801BFCA8[] = { + 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, +}; +s16 D_801BFCB8[2][3] = { + { 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xA5, 0x37 }, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") +TexturePtr D_801BFCC4[] = { + gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, + gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C4C4.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C808.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011C898.s") +s16 D_801BFCE4 = 0; +s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +s16 D_801BFCF8 = 0x63; +s16 D_801BFCFC[] = { + // timer digit width + 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, +}; +s16 D_801BFD0C[] = { + // digit width + 9, 9, 8, 9, 9, 8, 9, 9, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011CA64.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E3B4.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011E730.s") +// rupeeDigitsFirst +s16 D_801BFD1C[] = { 1, 0, 0, 0 }; +// rupeeDigitsCount +s16 D_801BFD24[] = { 2, 3, 3, 0 }; +// rupeeIconPrimColor +Color_RGB16 D_801BFD2C[] = { + { 200, 255, 100 }, + { 170, 170, 255 }, + { 255, 105, 105 }, +}; +// rupeeIconEnvColor +Color_RGB16 D_801BFD40[] = { + { 0, 80, 0 }, + { 10, 10, 80 }, + { 40, 10, 0 }, +}; +// minigameCountdownTexs +TexturePtr D_801BFD54[] = { + gMinigameCountdown3Tex, + gMinigameCountdown2Tex, + gMinigameCountdown1Tex, + gMinigameCountdownGoTex, +}; +// minigameCountdownTexHeights +s16 D_801BFD64[] = { 24, 24, 24, 40 }; +// minigameCountdownPrimColor +Color_RGB16 D_801BFD6C[] = { + { 100, 255, 100 }, + { 255, 255, 60 }, + { 255, 100, 0 }, + { 120, 170, 255 }, +}; +// grandma's story pictures +s32 D_801BFD84[] = { + 0x07000000, + 0x07012C00, +}; +// grandma's story TLUT +u32 D_801BFD8C[] = { + 0x07025800, + 0x07025A00, +}; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011F0E0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80120F90.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121064.s") +u8 D_801BFD94 = 0; +s16 D_801BFD98 = 0; +s16 D_801BFD9C = 0; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801210E0.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80121F94.s") diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 52acc9379..2ebb32447 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -149,9 +149,9 @@ s32 D_801C6798[] = { }; u8 D_801C67B0[24] = { - ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, - ITEM_STICK, ITEM_NUT, ITEM_MAGIC_BEANS, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, - ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, + ITEM_STICK, ITEM_NUT, ITEM_BEAN, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }; s32 D_801C67C8[] = { 0, 0x40, 0x80, 0xC0, 0x100, 0x180, 0x200, 0x280 }; @@ -276,7 +276,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } if (gSaveContext.save.weekEventReg[84] & 0x20) { - func_801149A0(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); + Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); } for (i = 0; i < ARRAY_COUNT(D_801C66D0); i++) { @@ -346,7 +346,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { for (j = 1; j < 4; j++) { if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.inventory.items[i]) { SET_CUR_FORM_BTN_ITEM(j, ITEM_BOTTLE); - func_80112B40(globalCtx, j); + Interface_LoadItemIconImpl(globalCtx, j); } } gSaveContext.save.inventory.items[i] = ITEM_BOTTLE; @@ -354,7 +354,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } } - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); if (gSaveContext.save.playerData.health < 0x30) { gSaveContext.save.playerData.health = 0x30; @@ -408,14 +408,14 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { SET_STOLEN_ITEM_2(STOLEN_ITEM_NONE); // ?? - func_801149A0(ITEM_OCARINA_FAIRY, SLOT_TRADE_DEED); - func_801149A0(ITEM_SLINGSHOT, SLOT_TRADE_KEY_MAMA); - func_801149A0(ITEM_LONGSHOT, SLOT_TRADE_COUPLE); + Inventory_DeleteItem(ITEM_OCARINA_FAIRY, SLOT_TRADE_DEED); + Inventory_DeleteItem(ITEM_SLINGSHOT, SLOT_TRADE_KEY_MAMA); + Inventory_DeleteItem(ITEM_LONGSHOT, SLOT_TRADE_COUPLE); for (j = 1; j < 4; j++) { if (GET_CUR_FORM_BTN_ITEM(j) >= ITEM_MOON_TEAR && GET_CUR_FORM_BTN_ITEM(j) <= ITEM_PENDANT_MEMORIES) { SET_CUR_FORM_BTN_ITEM(j, ITEM_NONE); - func_80112B40(globalCtx, j); + Interface_LoadItemIconImpl(globalCtx, j); } } @@ -718,7 +718,7 @@ Inventory sSaveDebugInventory = { ITEM_BOMBCHU, ITEM_STICK, ITEM_NUT, - ITEM_MAGIC_BEANS, + ITEM_BEAN, ITEM_ROOM_KEY, ITEM_POWDER_KEG, ITEM_PICTO_BOX, diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 70e98fc15..1c48235ae 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -230,7 +230,7 @@ s32 func_80BECFBC(EnAkindonuts* this) { return 0x9A; case 3: - func_801149A0(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); + Inventory_DeleteItem(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); return 0x7; } return 0; @@ -296,7 +296,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if (INV_CONTENT(ITEM_MAGIC_BEANS) != 10U) { + if (INV_CONTENT(ITEM_BEAN) != 10U) { return 0; } @@ -304,7 +304,7 @@ s32 func_80BED208(EnAkindonuts* this) { return 1; } - if (AMMO(ITEM_MAGIC_BEANS) >= 20) { + if (AMMO(ITEM_BEAN) >= 20) { return 2; } @@ -332,7 +332,7 @@ s32 func_80BED27C(EnAkindonuts* this) { } s32 func_80BED2FC(EnAkindonuts* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return 2; } @@ -346,7 +346,7 @@ s32 func_80BED2FC(EnAkindonuts* this) { } s32 func_80BED35C(EnAkindonuts* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return 2; } @@ -1326,7 +1326,7 @@ void func_80BEF360(EnAkindonuts* this, GlobalContext* globalCtx) { if (this->unk_32C & 0x40) { if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; - func_801159EC(this->unk_364); + Rupees_ChangeBy(this->unk_364); this->unk_32C &= ~0x40; this->actionFunc = func_80BEF450; } else { diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 0705d7f06..9fcb56018 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -394,7 +394,7 @@ void func_809C16DC(EnAob01* this, GlobalContext* globalCtx) { case 0x3529: if (this->unk_2D2 & 2) { this->unk_2D2 &= ~2; - func_801159EC(-this->unk_434); + Rupees_ChangeBy(-this->unk_434); func_800B7298(globalCtx, NULL, 7); globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; @@ -710,7 +710,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { this->unk_210 = 0x352A; this->unk_2D2 |= 0x80; this->unk_434 *= 3; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); globalCtx->msgCtx.bankRupees = this->unk_434; break; @@ -718,7 +718,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { this->unk_210 = 0x352B; this->unk_2D2 |= 0x80; this->unk_434 *= 2; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); globalCtx->msgCtx.bankRupees = this->unk_434; break; @@ -726,7 +726,7 @@ void func_809C28B8(EnAob01* this, GlobalContext* globalCtx) { case 4: case 5: this->unk_210 = 0x352C; - func_801159EC(this->unk_434); + Rupees_ChangeBy(this->unk_434); break; default: diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 772d054ab..84aae79a7 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -234,7 +234,7 @@ void EnCow_GiveMilk(EnCow* this, GlobalContext* globalCtx) { void EnCow_CheckForEmptyBottle(EnCow* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && Message_ShouldAdvance(globalCtx)) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { func_80151938(globalCtx, 0x32C9); // Text to give milk. this->actionFunc = EnCow_GiveMilk; } else { @@ -291,7 +291,7 @@ void EnCow_Idle(EnCow* this, GlobalContext* globalCtx) { if (func_801A5100() == 4) { if (!(gSaveContext.save.weekEventReg[87] & 1)) { gSaveContext.save.weekEventReg[87] |= 1; - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actor.textId = 0x32C9; // Text to give milk. } else { this->actor.textId = 0x32CA; // Text if you don't have an empty bottle. diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 13a02345d..27bd5e359 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -365,7 +365,7 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.world.rot.x = this->actor.shape.rot.x; this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; - } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && + } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !(gSaveContext.save.weekEventReg[23] & 0x20)) || ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.save.weekEventReg[23] & 0x20))) { Actor_SetScale(&this->actor, 0.0085f); diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 917a2d4d9..d2a29442d 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -342,7 +342,7 @@ void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { if (!(gSaveContext.save.weekEventReg[23] & 0x20)) { this->unk_390 = 70.0f; - if (Interface_HasItemInBottle(ITEM_DEKU_PRINCESS) && !Play_InCsMode(globalCtx) && + if (Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !Play_InCsMode(globalCtx) && (Message_GetState(&globalCtx->msgCtx) == 0) && (ActorCutscene_GetCurrentIndex() == -1)) { if ((DECR(this->unk_384) == 0) && (gSaveContext.save.weekEventReg[29] & 0x40)) { Message_StartTextbox(globalCtx, 0x969, NULL); diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 62d455147..fcaf6063d 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -673,9 +673,9 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { if ((this->fairyFlags & 0x1000) && (heightDiff > 0.0f) && (heightDiff < 60.0f) && !func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) { - func_80115908(globalCtx, 0x80); + Health_ChangeBy(globalCtx, 0x80); if (this->fairyFlags & 0x200) { - Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + + Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); } gSaveContext.jinxTimer = 0; diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 3acd2adf5..605edd6d4 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -481,7 +481,7 @@ void func_80A3A610(EnElfgrp* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->unk_144 == 60) { - Parameter_AddMagic(globalCtx, + Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); gSaveContext.healthAccumulator = 320; } diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index 36ad91c0f..0ab1e4210 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -440,7 +440,7 @@ void EnElforg_FreeFloating(EnElforg* this, GlobalContext* globalCtx) { if (!Player_InCsMode(&globalCtx->state)) { if ((this->actor.xzDistToPlayer < 30.0f) && (scaledYDistance < 12.0f) && (scaledYDistance > -68.0f)) { EnElforg_SetupFairyCollected(this, globalCtx); - func_80115908(globalCtx, 48); + Health_ChangeBy(globalCtx, 48); switch (STRAY_FAIRY_TYPE(&this->actor)) { case STRAY_FAIRY_TYPE_COLLECTIBLE: Flags_SetCollectible(globalCtx, STRAY_FAIRY_FLAG(&this->actor)); diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index eccee0fe9..2a8722fd7 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -1130,7 +1130,7 @@ void EnFishing_UpdateEffects(FishingEffect* effect, GlobalContext* globalCtx) { if ((effect->unk_2C >= 100) && (Message_GetState(&globalCtx->msgCtx) == 5)) { if (Message_ShouldAdvance(globalCtx) || Message_GetState(&globalCtx->msgCtx) == 0) { func_801477B4(globalCtx); - func_801159EC(-50); + Rupees_ChangeBy(-50); effect->unk_2C = -1; } } @@ -4729,7 +4729,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { switch (globalCtx->msgCtx.choiceIndex) { case 0: if (gSaveContext.save.playerData.rupees >= 20) { - func_801159EC(-20); + Rupees_ChangeBy(-20); if (func_8013EE04() == 0) { this->actor.textId = 0x407C; } else { diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index b67a3080e..0e51cb6db 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -430,7 +430,7 @@ void func_80962588(EnFu* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.choiceIndex == 0) { if (gSaveContext.save.playerData.rupees >= 10) { func_8019F208(); - func_801159EC(-10); + Rupees_ChangeBy(-10); func_80963DE4(this, globalCtx); } else { play_sound(NA_SE_SY_ERROR); @@ -654,7 +654,7 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) { s16 temp = gSaveContext.unk_3F30; - Parameter_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); + Interface_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); } func_80962F10(this); diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 82010f193..676d4f701 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -430,7 +430,7 @@ void func_80B0FFA8(EnGb2* this, GlobalContext* globalCtx) { switch (globalCtx->msgCtx.choiceIndex) { case 0: func_8019F208(); - func_801159EC(-this->unk_288); + Rupees_ChangeBy(-this->unk_288); globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_800B7298(globalCtx, NULL, 7); @@ -582,7 +582,7 @@ void func_80B10634(EnGb2* this, GlobalContext* globalCtx) { Message_StartTextbox(globalCtx, this->unk_26E, &this->actor); } else { func_8019F208(); - func_801159EC(-this->unk_288); + Rupees_ChangeBy(-this->unk_288); globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_800B7298(globalCtx, NULL, 7); @@ -628,7 +628,7 @@ void func_80B10924(EnGb2* this, GlobalContext* globalCtx) { if (sp24 == 12) { gSaveContext.save.weekEventReg[54] |= 0x40; } else { - func_801159EC(50); + Rupees_ChangeBy(50); } this->actionFunc = func_80B109DC; } else { diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 34b0e36b4..f5d07fcf5 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -357,7 +357,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->isNewAccount = true; } - func_801159EC((s16)-globalCtx->msgCtx.bankRupeesSelected); + Rupees_ChangeBy((s16)-globalCtx->msgCtx.bankRupeesSelected); this->previousBankValue = gSaveContext.save.bankRupees & 0xFFFF; gSaveContext.save.bankRupees = ((gSaveContext.save.bankRupees & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected) | @@ -425,7 +425,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) (((gSaveContext.save.bankRupees & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - this->serviceFee) | (gSaveContext.save.bankRupees & 0xFFFF0000); - func_801159EC(globalCtx->msgCtx.bankRupeesSelected); + Rupees_ChangeBy(globalCtx->msgCtx.bankRupeesSelected); } } else { func_8019F230(); diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index b509d4500..7a9529c2e 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -185,7 +185,7 @@ void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) { } s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -195,7 +195,7 @@ s32 EnGirlA_CanBuyPotionRed(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyPotionGreen(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -208,7 +208,7 @@ s32 EnGirlA_CanBuyPotionBlue(GlobalContext* globalCtx, EnGirlA* this) { if (!(gSaveContext.save.weekEventReg[53] & 8)) { return CANBUY_RESULT_CANNOT_GET_NOW; } - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (!(gSaveContext.save.weekEventReg[53] & 0x10)) { @@ -240,7 +240,7 @@ s32 EnGirlA_CanBuyNuts(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_NUT) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -263,7 +263,7 @@ s32 EnGirlA_CanBuyStick(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_STICK) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -322,7 +322,7 @@ s32 EnGirlA_CanBuyBombchus(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { return CANBUY_RESULT_NEED_RUPEES; } - if (func_80114978(ITEM_BOMBCHU) == ITEM_NONE) { + if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) { return CANBUY_RESULT_SUCCESS_1; } return CANBUY_RESULT_SUCCESS_2; @@ -366,7 +366,7 @@ s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyFairy(GlobalContext* globalCtx, EnGirlA* this) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { return CANBUY_RESULT_NEED_EMPTY_BOTTLE; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -398,12 +398,12 @@ void EnGirlA_BuyBottleItem(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_FAIRY); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyArrows(GlobalContext* globalCtx, EnGirlA* this) { - func_80115A14(ITEM_BOW, this->itemParams); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Inventory_ChangeAmmo(ITEM_BOW, this->itemParams); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyNuts(GlobalContext* globalCtx, EnGirlA* this) { @@ -415,22 +415,22 @@ void EnGirlA_BuyNuts(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_NUTS_10); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyShieldHero(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SHIELD_HERO); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyStick(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_STICK); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyMaskAllNight(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_MASK_ALL_NIGHT); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombBag(GlobalContext* globalCtx, EnGirlA* this) { @@ -446,14 +446,14 @@ void EnGirlA_BuyBombBag(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOMB_BAG_40); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombchus(GlobalContext* globalCtx, EnGirlA* this) { if (this->itemParams == 10) { Item_Give(globalCtx, ITEM_BOMBCHUS_10); } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBombs(GlobalContext* globalCtx, EnGirlA* this) { @@ -471,12 +471,12 @@ void EnGirlA_BuyBombs(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOMBS_30); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyBottle(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_BOTTLE); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuySword(GlobalContext* globalCtx, EnGirlA* this) { @@ -494,17 +494,17 @@ void EnGirlA_BuySword(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SWORD_GREAT_FAIRY); break; } - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_BuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { Item_Give(globalCtx, ITEM_SHIELD_MIRROR); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } // Fanfare is handled by ovl_en_ossan void EnGirlA_BuyFanfare(GlobalContext* globalCtx, EnGirlA* this) { - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } void EnGirlA_DoNothing(EnGirlA* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 059f18c9c..22c34cf72 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -168,7 +168,7 @@ u16 func_80B50410(EnGk* this, GlobalContext* globalCtx) { if (player->transformation == PLAYER_FORM_GORON) { if (!(gSaveContext.save.weekEventReg[41] & 4)) { if (this->unk_31C == 0xE88) { - if (!(gSaveContext.save.weekEventReg[41] & 8) || Interface_HasEmptyBottle()) { + if (!(gSaveContext.save.weekEventReg[41] & 8) || Inventory_HasEmptyBottle()) { return 0xE89; } gSaveContext.save.weekEventReg[41] |= 4; @@ -179,7 +179,7 @@ u16 func_80B50410(EnGk* this, GlobalContext* globalCtx) { } if ((this->unk_31C == 0xE8D) || (this->unk_31C == 0xE98)) { - if (!(gSaveContext.save.weekEventReg[41] & 8) || Interface_HasEmptyBottle()) { + if (!(gSaveContext.save.weekEventReg[41] & 8) || Inventory_HasEmptyBottle()) { return 0xE89; } gSaveContext.save.weekEventReg[41] |= 4; @@ -727,7 +727,7 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) { globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; - Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + + Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); } else { this->actionFunc = func_80B51760; diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 758543f45..31bd34cc6 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -576,7 +576,7 @@ s32 func_808F4150(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); if (!(gSaveContext.save.weekEventReg[57] & 1)) { func_808F4108(this, globalCtx, 0x3474); } else if (this->unk4AC & 8) { @@ -602,7 +602,7 @@ s32 func_808F4270(GlobalContext* globalCtx, EnIn* this, s32 arg2, MessageContext if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= fee) { - func_801159EC(-fee); + Rupees_ChangeBy(-fee); if (!(gSaveContext.save.weekEventReg[57] & 1)) { if (arg4 != 0) { func_800E8EA0(globalCtx, &this->actor, 0x3474); @@ -747,10 +747,10 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x3469); @@ -893,7 +893,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x347E: func_808F35D8(this, globalCtx); - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3B40; Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); ret = true; @@ -999,10 +999,10 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (msgCtx->choiceIndex == 0) { func_8019F208(); if (gSaveContext.save.playerData.rupees >= globalCtx->msgCtx.unk1206C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3C40; Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x3469); @@ -1097,7 +1097,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { break; case 0x34A1: func_808F35D8(this, globalCtx); - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->actionFunc = func_808F3B40; Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); ret = true; diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 104e2bc3c..478f05323 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -410,7 +410,7 @@ void func_80C14684(EnJgameTsn* this, GlobalContext* globalCtx) { if (gSaveContext.save.playerData.rupees >= 20) { Message_StartTextbox(globalCtx, 0x109E, &this->actor); this->unk_300 = 0x109E; - func_801159EC(-20); + Rupees_ChangeBy(-20); } else { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 2); Message_StartTextbox(globalCtx, 0x109D, &this->actor); diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index 92053374a..caf4fe389 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -227,7 +227,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { this->unk_288 = 0x2718; } else { func_8019F208(); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); Message_StartTextbox(globalCtx, 0x2719, &this->actor); this->unk_288 = 0x2719; } @@ -245,7 +245,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { this->unk_288 = 0x2718; } else { func_8019F208(); - func_801159EC(-globalCtx->msgCtx.unk12070); + Rupees_ChangeBy(-globalCtx->msgCtx.unk12070); Message_StartTextbox(globalCtx, 0x273A, &this->actor); this->unk_288 = 0x273A; } diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 176a556e5..0d1933bb6 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -629,7 +629,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { } else { func_8019F208(); func_80B40E74(this, globalCtx, 0xC42); - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } break; @@ -719,7 +719,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { this->actor.textId = 0xC43; CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; SET_EQUIP_VALUE(EQUIP_SWORD, 0); - func_80112B40(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, 0); func_80B40C74(globalCtx); break; @@ -752,7 +752,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { func_80B41368(this, globalCtx, 4); if (this->unk_29C & 0x10) { this->actor.textId = 0xC56; - func_801159EC(globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(globalCtx->msgCtx.unk1206C); } else { this->actor.textId = 0xC42; } diff --git a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c index caf235b05..0b6c348c0 100644 --- a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c +++ b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c @@ -117,7 +117,7 @@ void EnKujiya_HandlePlayerChoice(EnKujiya* this, GlobalContext* globalCtx) { this->textId = 0x2B62; // Not enough Rupees } else { func_8019F208(); - func_801159EC(-10); + Rupees_ChangeBy(-10); Message_StartTextbox(globalCtx, 0x2B5F, &this->actor); this->textId = 0x2B5F; // Enter number } diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 396a3f040..0a4fb551f 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -148,7 +148,7 @@ void func_80A6F3B4(EnMm3* this, GlobalContext* globalCtx) { func_8019F208(); Message_StartTextbox(globalCtx, 0x2790, &this->actor); this->unk_2B4 = 0x2790; - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } else { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x279C, &this->actor); @@ -174,7 +174,7 @@ void func_80A6F3B4(EnMm3* this, GlobalContext* globalCtx) { func_8019F208(); Message_StartTextbox(globalCtx, 0x2790, &this->actor); this->unk_2B4 = 0x2790; - func_801159EC(-globalCtx->msgCtx.unk1206C); + Rupees_ChangeBy(-globalCtx->msgCtx.unk1206C); } else { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x279C, &this->actor); diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 729e36d49..0c16e9b03 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -121,13 +121,13 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { if (gSaveContext.save.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x935); // "[...] You don't have enough Rupees." - } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { + } else if (AMMO(ITEM_BEAN) >= 20) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x937); // "[...] You can't carry anymore." } else { func_8019F208(); Actor_PickUp(&this->actor, globalCtx, GI_MAGIC_BEANS, 90.0f, 10.0f); - func_801159EC(-10); + Rupees_ChangeBy(-10); this->actionFunc = EnMs_Sell; } break; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 6952f10c2..8dfdeaeb8 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -433,7 +433,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) { gSaveContext.nextTransition = 2; func_801477B4(globalCtx); func_800B7298(globalCtx, &this->actor, 7); - Parameter_AddMagic(globalCtx, + Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 48) + 48); gSaveContext.eventInf[1] &= (u8)~1; diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index dc7715fa0..b266cc0b6 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -343,7 +343,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) { func_8019F208(); globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; - func_801159EC(this->unk_358 * -1); + Rupees_ChangeBy(this->unk_358 * -1); this->actionFunc = func_80BCB90C; } break; diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index 92d4c7514..cf3352375 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -235,7 +235,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { switch (this->unk_2C6) { case 0: - if (!CHECK_QUEST_ITEM(QUEST_UNK_19)) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { this->unk_2C6 = 6; ret = 1; } else { @@ -250,7 +250,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { if (func_8013A4C4(D_80AE7258[this->unk_2C6])) { this->unk_2C6 = 6; ret = 1; - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { this->unk_2C6++; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index e69c7e5ab..9cceab788 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -268,7 +268,7 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_26A = 3; } else { func_8019F208(); - func_801159EC(-20); + Rupees_ChangeBy(-20); gSaveContext.save.weekEventReg[63] |= 1; gSaveContext.save.weekEventReg[63] &= (u8)~2; globalCtx->msgCtx.msgMode = 0x43; @@ -547,7 +547,7 @@ void func_809C7380(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_26A = 3; } else { func_8019F208(); - func_801159EC(-20); + Rupees_ChangeBy(-20); this->unk_26A = 2; if (!(this->unk_282 & 0x10)) { this->unk_282 |= 0x10; diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c index 48a1bc064..8ff08e32a 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -301,7 +301,7 @@ s32 func_80BE0C04(EnTab* this, Actor* actor, f32 arg2) { } s32 func_80BE0D38(EnTab* this, GlobalContext* globalCtx) { - return Interface_HasEmptyBottle(); + return Inventory_HasEmptyBottle(); } s32 func_80BE0D60(EnTab* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index a2324aaf6..47d78ae29 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -200,7 +200,7 @@ static CollisionCheckInfoInit2 sColChkInfoInit = { 8, 0, 0, 0, MASS_HEAVY }; static EnTalkGibudRequestedItem sRequestedItemTable[] = { { PLAYER_AP_BOTTLE_POTION_BLUE, ITEM_POTION_BLUE, 1, true }, - { PLAYER_AP_MAGIC_BEANS, ITEM_MAGIC_BEANS, 5, false }, + { PLAYER_AP_MAGIC_BEANS, ITEM_BEAN, 5, false }, { PLAYER_AP_BOTTLE_SPRING_WATER, ITEM_SPRING_WATER, 1, true }, { PLAYER_AP_BOTTLE_FISH, ITEM_FISH, 1, true }, { PLAYER_AP_BOTTLE_BUG, ITEM_BUG, 1, true }, @@ -713,7 +713,7 @@ s32 EnTalkGibud_PresentedItemMatchesRequest(EnTalkGibud* this, GlobalContext* gl return EN_TALK_GIBUD_REQUESTED_ITEM_NOT_ENOUGH_AMMO; } } - if (Interface_HasItemInBottle(requestedItem->item)) { + if (Inventory_HasItemInBottle(requestedItem->item)) { return EN_TALK_GIBUD_REQUESTED_ITEM_MET; } } @@ -819,7 +819,7 @@ void EnTalkGibud_Talk(EnTalkGibud* this, GlobalContext* globalCtx) { // Remove the requested item/amount from the player's inventory requestedItem = &sRequestedItemTable[this->requestedItemIndex]; if (!requestedItem->isBottledItem) { - func_80115A14(requestedItem->item, -requestedItem->amount); + Inventory_ChangeAmmo(requestedItem->item, -requestedItem->amount); } else { func_80123D50(globalCtx, player, ITEM_BOTTLE, PLAYER_AP_BOTTLE); } diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 5a89347e7..cfb1f5180 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -238,7 +238,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { } if (isItemFound) { - func_801149A0(itemId2, slotId); + Inventory_DeleteItem(itemId2, slotId); this->unk_3E8 = object_thiefbird_DL_0033B0; if (Message_GetState(&globalCtx->msgCtx) == 0) { Message_StartTextbox(globalCtx, 0xF4, NULL); @@ -255,7 +255,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { itemId1 = phi_a3 + (ITEM_SWORD_KOKIRI - 1); if (phi_a3 == 4) { - func_801149A0(ITEM_SWORD_GREAT_FAIRY, SLOT_SWORD_GREAT_FAIRY); + Inventory_DeleteItem(ITEM_SWORD_GREAT_FAIRY, SLOT_SWORD_GREAT_FAIRY); this->unk_3E8 = object_thiefbird_DL_003D58; itemId1 = ITEM_SWORD_GREAT_FAIRY; } else { @@ -404,7 +404,7 @@ s32 func_80C10E98(GlobalContext* globalCtx) { AMMO(ITEM_BOMB) -= spB0 * 5; AMMO(ITEM_BOW) -= spAC * 10; - func_801159EC(-((phi_s0_2 * 50) + (spA0 * 20) + (phi_s2 * 5) + spA8)); + Rupees_ChangeBy(-((phi_s0_2 * 50) + (spA0 * 20) + (phi_s2 * 5) + spA8)); return true; } diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 976a5ac31..9f9bed14c 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -593,7 +593,7 @@ void func_80AED610(EnTk* this, GlobalContext* globalCtx) { break; case 0x1413: - func_801159EC(30); + Rupees_ChangeBy(30); gSaveContext.save.weekEventReg[60] |= 2; func_80151938(globalCtx, 0x13FF); break; diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index dde803708..68c685777 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -387,7 +387,7 @@ void EnTrt_Goodbye(EnTrt* this, GlobalContext* globalCtx) { void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (Message_GetState(&globalCtx->msgCtx) == 5 && Message_ShouldAdvance(globalCtx)) { if (this->textId == 0x88F) { - if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { + if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -408,7 +408,7 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { EnTrt_SetupStartShopping(globalCtx, this, 0); } else if (gSaveContext.save.weekEventReg[84] & 0x40) { this->textId = 0x83B; - if (Interface_HasItemInBottle(ITEM_POTION_RED)) { + if (Inventory_HasItemInBottle(ITEM_POTION_RED)) { EnTrt_SetupStartShopping(globalCtx, this, false); } else { this->actionFunc = EnTrt_TryToGiveRedPotion; @@ -720,7 +720,7 @@ void EnTrt_SelectItem(EnTrt* this, GlobalContext* globalCtx) { } } } else if (talkState == 5 && Message_ShouldAdvance(globalCtx)) { - if (!Interface_HasEmptyBottle()) { + if (!Inventory_HasEmptyBottle()) { play_sound(NA_SE_SY_ERROR); EnTrt_SetupCannotBuy(globalCtx, this, 0x846); } else { @@ -931,7 +931,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt this->blinkFunc = EnTrt_Blink; if (talkState == 6 && Message_ShouldAdvance(globalCtx)) { - if (Interface_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { + if (Inventory_HasEmptyBottle() || !(gSaveContext.save.weekEventReg[12] & 0x10)) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; @@ -950,7 +950,7 @@ void EnTrt_TryToGiveRedPotionAfterSurprised(EnTrt* this, GlobalContext* globalCt void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { if (Message_GetState(&globalCtx->msgCtx) == 5 && Message_ShouldAdvance(globalCtx)) { if (this->textId == 0x83C) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c index 0af7ac4bb..8ed15ca3d 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -348,7 +348,7 @@ void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) { this->unk_3B2 = 11; return; } else if (this->unk_3A8 == 0x88F) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { this->unk_3B2 = 11; } else { this->unk_3B2 = 10; @@ -360,7 +360,7 @@ void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) { void func_80AD3E34(EnTrt2* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && Message_ShouldAdvance(globalCtx)) { - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_3B2 = 12; @@ -378,7 +378,7 @@ void func_80AD3EF0(EnTrt2* this, GlobalContext* globalCtx) { if (temp_v0 == 6) { if (Message_ShouldAdvance(globalCtx)) { - if ((Interface_HasEmptyBottle() && !(gSaveContext.save.weekEventReg[84] & 0x40)) || + if ((Inventory_HasEmptyBottle() && !(gSaveContext.save.weekEventReg[84] & 0x40)) || !(gSaveContext.save.weekEventReg[12] & 0x10)) { this->unk_3B2 = 12; } else { diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index e999e5c5c..b8b80d25e 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -323,7 +323,7 @@ void func_80AE04FC(EnTsn* this, GlobalContext* globalCtx) { func_801477B4(globalCtx); this->actionFunc = func_80AE0704; if (sp24 == 19) { - if (CHECK_QUEST_ITEM(QUEST_UNK_19)) { + if (CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { if (func_8013A4C4(1 | 8)) { player->actor.textId = 0x107B; return; @@ -424,7 +424,7 @@ void func_80AE0704(EnTsn* this, GlobalContext* globalCtx) { break; case 0x107C: - if (Interface_HasEmptyBottle()) { + if (Inventory_HasEmptyBottle()) { gSaveContext.save.weekEventReg[26] |= 8; func_801477B4(globalCtx); this->actionFunc = func_80AE0460; @@ -433,7 +433,7 @@ void func_80AE0704(EnTsn* this, GlobalContext* globalCtx) { this->actor.focus.pos = this->actor.world.pos; ActorCutscene_Stop(this->actor.cutscene); this->actor.flags &= ~ACTOR_FLAG_100; - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { func_80151938(globalCtx, 0x10A8); } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index bfab9fcf6..59ee515d2 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -461,7 +461,7 @@ void func_80B973BC(EnZot* this, GlobalContext* globalCtx) { break; case 0x126F: - func_801159EC(90); + Rupees_ChangeBy(90); func_80151938(globalCtx, 0x1270); break; @@ -470,7 +470,7 @@ void func_80B973BC(EnZot* this, GlobalContext* globalCtx) { func_80151938(globalCtx, 0x1277); } else { func_80151938(globalCtx, 0x1278); - func_801159EC(-10); + Rupees_ChangeBy(-10); } break; @@ -956,13 +956,13 @@ void func_80B985EC(EnZot* this, GlobalContext* globalCtx) { itemActionParam = func_80123810(globalCtx); if (itemActionParam > PLAYER_AP_NONE) { func_801477B4(globalCtx); - if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_UNK_19) && func_8013A4C4(4)) { + if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOBOX) && func_8013A4C4(4)) { if (func_8013A4C4(5) && func_8013A4C4(6)) { player->actor.textId = 0x12AE; } else { player->actor.textId = 0x12AC; } - REMOVE_QUEST_ITEM(QUEST_UNK_19); + REMOVE_QUEST_ITEM(QUEST_PICTOBOX); } else { player->actor.textId = 0x12AB; } diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index cd1bbac2f..7cb0f2be1 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -544,7 +544,7 @@ 0x801BF550 : "z_map_exp", 0x801BF5C0 : "z_msgevent", 0x801BF6C0 : "z_parameter", - 0x801BFDD0 : "z_player_lib", + 0x801BFDA0 : "z_player_lib", 0x801C0EC0 : "z_quake", 0x801C0EF0 : "z_rcp", 0x801C1D10 : "z_room", diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 6a7b92683..b2f5caebc 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2109,32 +2109,32 @@ 0x801129E4:("func_801129E4",), 0x80112AF4:("func_80112AF4",), 0x80112AFC:("func_80112AFC",), - 0x80112B40:("func_80112B40",), - 0x80112BE4:("func_80112BE4",), + 0x80112B40:("Interface_LoadItemIconImpl",), + 0x80112BE4:("Interface_LoadItemIcon",), 0x80112C0C:("func_80112C0C",), 0x80112E80:("Item_Give",), - 0x801143CC:("func_801143CC",), - 0x80114978:("func_80114978",), - 0x801149A0:("func_801149A0",), - 0x80114A9C:("func_80114A9C",), - 0x80114B84:("func_80114B84",), - 0x80114CA0:("func_80114CA0",), - 0x80114E90:("Interface_HasEmptyBottle",), - 0x80114F2C:("Interface_HasItemInBottle",), - 0x80114FD0:("func_80114FD0",), - 0x80115130:("func_80115130",), - 0x801152B8:("func_801152B8",), + 0x801143CC:("Item_CheckObtainabilityImpl",), + 0x80114978:("Item_CheckObtainability",), + 0x801149A0:("Inventory_DeleteItem",), + 0x80114A9C:("Inventory_UnequipItem",), + 0x80114B84:("Inventory_ReplaceItem",), + 0x80114CA0:("Inventory_UpdateDeitySwordEquip",), + 0x80114E90:("Inventory_HasEmptyBottle",), + 0x80114F2C:("Inventory_HasItemInBottle",), + 0x80114FD0:("Inventory_UpdateBottleItem",), + 0x80115130:("Inventory_ConsumeFairy",), + 0x801152B8:("Inventory_UpdateItem",), 0x801153C8:("func_801153C8",), 0x80115428:("func_80115428",), 0x8011552C:("func_8011552C",), 0x801155B4:("func_801155B4",), 0x80115764:("func_80115764",), 0x80115844:("func_80115844",), - 0x80115908:("func_80115908",), - 0x801159C0:("func_801159c0",), - 0x801159EC:("func_801159EC",), - 0x80115A14:("func_80115A14",), - 0x80115D14:("Parameter_AddMagic",), + 0x80115908:("Health_ChangeBy",), + 0x801159C0:("Health_GiveHearts",), + 0x801159EC:("Rupees_ChangeBy",), + 0x80115A14:("Inventory_ChangeAmmo",), + 0x80115D14:("Interface_AddMagic",), 0x80115D5C:("func_80115D5C",), 0x80115DB4:("func_80115DB4",), 0x80116088:("func_80116088",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index c96b82408..24720a884 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1062,65 +1062,51 @@ 0x801BF5B0:("D_801BF5B0","UNK_TYPE2","",0x2), 0x801BF5C0:("D_801BF5C0","UNK_PTR","",0x4), 0x801BF68C:("D_801BF68C","UNK_TYPE1","",0x1), - 0x801BF6C0:("D_801BF6C0","UNK_TYPE1","",0x1), - 0x801BF79E:("D_801BF79E","UNK_TYPE1","",0x1), + 0x801BF6C0:("sRestrictionFlags","RestrictionFlags","[113]",0x1c4), 0x801BF884:("D_801BF884","UNK_TYPE2","",0x2), 0x801BF888:("D_801BF888","UNK_TYPE2","",0x2), - 0x801BF88C:("D_801BF88C","UNK_TYPE2","",0x2), - 0x801BF890:("D_801BF890","UNK_TYPE2","",0x2), - 0x801BF898:("D_801BF898","UNK_TYPE2","",0x2), - 0x801BF89C:("D_801BF89C","UNK_TYPE2","",0x2), - 0x801BF8A0:("D_801BF8A0","UNK_TYPE2","",0x2), - 0x801BF8A4:("D_801BF8A4","UNK_TYPE2","",0x2), - 0x801BF8A8:("D_801BF8A8","UNK_TYPE2","",0x2), + 0x801BF88C:("sHBAScoreTier","UNK_TYPE2","",0x2), + 0x801BF890:("sMinigameScoreDigits","UNK_TYPE2","",0x2), + 0x801BF898:("sCUpInvisible","UNK_TYPE2","",0x2), + 0x801BF89C:("sCUpTimer","UNK_TYPE2","",0x2), + 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), + 0x801BF8A4:("sMagicBarOutlinePrimGreen","UNK_TYPE2","",0x2), + 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), 0x801BF8AC:("D_801BF8AC","UNK_TYPE2","",0x2), 0x801BF8B0:("D_801BF8B0","UNK_TYPE2","",0x2), 0x801BF8DC:("D_801BF8DC","UNK_TYPE2","",0x2), 0x801BF8E0:("D_801BF8E0","UNK_TYPE2","",0x2), 0x801BF8E4:("D_801BF8E4","UNK_TYPE2","",0x2), 0x801BF8E8:("D_801BF8E8","UNK_TYPE4","",0x4), - 0x801BF8F0:("D_801BF8F0","UNK_TYPE4","",0x4), - 0x801BF8F4:("D_801BF8F4","UNK_TYPE4","",0x4), - 0x801BF8F8:("D_801BF8F8","UNK_TYPE4","",0x4), - 0x801BF8FC:("D_801BF8FC","UNK_TYPE4","",0x4), - 0x801BF930:("D_801BF930","UNK_TYPE4","",0x4), - 0x801BF934:("D_801BF934","UNK_TYPE4","",0x4), - 0x801BF968:("D_801BF968","UNK_TYPE1","",0x1), - 0x801BF96A:("D_801BF96A","UNK_TYPE1","",0x1), - 0x801BF96C:("D_801BF96C","UNK_TYPE1","",0x1), - 0x801BF96E:("D_801BF96E","UNK_TYPE1","",0x1), - 0x801BF970:("D_801BF970","UNK_TYPE2","",0x2), - 0x801BF972:("D_801BF972","UNK_TYPE1","",0x1), - 0x801BF974:("D_801BF974","UNK_TYPE2","",0x2), - 0x801BF978:("D_801BF978","UNK_TYPE2","",0x2), - 0x801BF97C:("D_801BF97C","UNK_TYPE2","",0x2), + 0x801BF8F0:("D_801BF8F0","u64","",0x8), + 0x801BF8F8:("D_801BF8F8","u64","[7]",0x38), + 0x801BF930:("D_801BF930","u64","[7]",0x38), + 0x801BF968:("D_801BF968","UNK_TYPE4","",0x4), + 0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4), + 0x801BF970:("D_801BF970","UNK_TYPE4","",0x4), + 0x801BF974:("D_801BF974","UNK_TYPE4","",0x4), + 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), + 0x801BF97C:("D_801BF97C","UNK_TYPE4","",0x4), 0x801BF980:("D_801BF980","UNK_TYPE4","",0x4), - 0x801BF988:("D_801BF988","UNK_TYPE1","",0x1), - 0x801BF998:("D_801BF998","UNK_TYPE1","",0x1), + 0x801BF988:("D_801BF988","Gfx","[5]",0x28), 0x801BF9B0:("D_801BF9B0","UNK_TYPE2","",0x2), 0x801BF9B4:("D_801BF9B4","UNK_TYPE1","",0x1), 0x801BF9BC:("D_801BF9BC","UNK_TYPE1","",0x1), 0x801BF9C4:("D_801BF9C4","UNK_TYPE1","",0x1), 0x801BF9C8:("D_801BF9C8","UNK_TYPE1","",0x1), 0x801BF9CC:("D_801BF9CC","UNK_TYPE1","",0x1), - 0x801BF9D4:("D_801BF9D4","UNK_TYPE2","",0x2), - 0x801BF9D6:("D_801BF9D6","UNK_TYPE2","",0x2), - 0x801BF9D8:("D_801BF9D8","UNK_TYPE2","",0x2), - 0x801BF9DA:("D_801BF9DA","UNK_TYPE2","",0x2), - 0x801BF9DC:("D_801BF9DC","UNK_TYPE2","",0x2), - 0x801BF9DE:("D_801BF9DE","UNK_TYPE2","",0x2), - 0x801BF9E0:("D_801BF9E0","UNK_TYPE2","",0x2), - 0x801BF9E2:("D_801BF9E2","UNK_TYPE2","",0x2), - 0x801BF9E4:("D_801BF9E4","UNK_TYPE2","",0x2), - 0x801BF9E6:("D_801BF9E6","UNK_TYPE2","",0x2), - 0x801BF9E8:("D_801BF9E8","UNK_TYPE2","",0x2), - 0x801BF9EA:("D_801BF9EA","UNK_TYPE2","",0x2), - 0x801BF9EC:("D_801BF9EC","UNK_TYPE2","",0x2), - 0x801BF9F0:("D_801BF9F0","UNK_TYPE2","",0x2), - 0x801BF9F4:("D_801BF9F4","UNK_TYPE2","",0x2), - 0x801BF9F8:("D_801BF9F8","UNK_TYPE2","",0x2), - 0x801BF9FC:("D_801BF9FC","UNK_TYPE2","",0x2), - 0x801BFA00:("D_801BFA00","UNK_TYPE2","",0x2), + 0x801BF9D4:("D_801BF9D4","UNK_TYPE4","",0x4), + 0x801BF9D8:("D_801BF9D8","UNK_TYPE4","",0x4), + 0x801BF9DC:("D_801BF9DC","UNK_TYPE4","",0x4), + 0x801BF9E0:("D_801BF9E0","UNK_TYPE4","",0x4), + 0x801BF9E4:("D_801BF9E4","UNK_TYPE4","",0x4), + 0x801BF9E8:("D_801BF9E8","UNK_TYPE4","",0x4), + 0x801BF9EC:("sFinalHoursClockDigitsRed","UNK_TYPE4","",0x4), + 0x801BF9F0:("sFinalHoursClockFrameEnvRed","UNK_TYPE2","",0x2), + 0x801BF9F4:("sFinalHoursClockFrameEnvGreen","UNK_TYPE2","",0x2), + 0x801BF9F8:("sFinalHoursClockFrameEnvBlue","UNK_TYPE2","",0x2), + 0x801BF9FC:("sFinalHoursClockColorTimer","UNK_TYPE2","",0x2), + 0x801BFA00:("sFinalHoursClockColorTargetIndex","UNK_TYPE2","",0x2), 0x801BFA04:("D_801BFA04","UNK_TYPE2","",0x2), 0x801BFA1C:("D_801BFA1C","UNK_TYPE2","",0x2), 0x801BFA34:("D_801BFA34","UNK_TYPE2","",0x2), @@ -1128,16 +1114,14 @@ 0x801BFA64:("D_801BFA64","UNK_TYPE2","",0x2), 0x801BFA74:("D_801BFA74","UNK_TYPE2","",0x2), 0x801BFA84:("D_801BFA84","UNK_TYPE4","",0x4), - 0x801BFAB0:("D_801BFAB0","UNK_TYPE1","",0x1), - 0x801BFAB8:("D_801BFAB8","UNK_TYPE1","",0x1), - 0x801BFAC4:("D_801BFAC4","UNK_TYPE1","",0x1), - 0x801BFACC:("D_801BFACC","UNK_TYPE1","",0x1), - 0x801BFAD4:("D_801BFAD4","UNK_TYPE1","",0x1), - 0x801BFAF4:("D_801BFAF4","UNK_TYPE2","",0x2), - 0x801BFAF6:("D_801BFAF6","UNK_TYPE2","",0x2), - 0x801BFAF8:("D_801BFAF8","UNK_TYPE2","",0x2), - 0x801BFAFA:("D_801BFAFA","UNK_TYPE2","",0x2), - 0x801BFAFC:("D_801BFAFC","UNK_TYPE1","",0x1), + 0x801BFAB0:("sDoActionTextures","UNK_TYPE1","",0x1), + 0x801BFAB8:("magicBorderColors","UNK_TYPE1","",0x1), + 0x801BFAC4:("magicBorderIndices","UNK_TYPE1","",0x1), + 0x801BFACC:("magicBorderColorTimerIndex","UNK_TYPE1","",0x1), + 0x801BFAD4:("cUpLabelTextures","UNK_TYPE1","",0x1), + 0x801BFAF4:("D_801BFAF4","UNK_TYPE4","",0x4), + 0x801BFAF8:("D_801BFAF8","UNK_TYPE4","",0x4), + 0x801BFAFC:("D_801BFAFC","UNK_TYPE4","",0x4), 0x801BFB04:("D_801BFB04","UNK_TYPE1","",0x1), 0x801BFB0C:("D_801BFB0C","UNK_TYPE1","",0x1), 0x801BFB14:("D_801BFB14","UNK_TYPE1","",0x1), @@ -1169,27 +1153,19 @@ 0x801BFC14:("D_801BFC14","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), 0x801BFC50:("D_801BFC50","UNK_TYPE2","",0x2), - 0x801BFC60:("D_801BFC60","UNK_TYPE2","",0x2), - 0x801BFC62:("D_801BFC62","UNK_TYPE2","",0x2), - 0x801BFC64:("D_801BFC64","UNK_TYPE2","",0x2), - 0x801BFC6C:("D_801BFC6C","UNK_TYPE2","",0x2), + 0x801BFC60:("D_801BFC60","s16","[6]",0xC), + 0x801BFC6C:("D_801BFC6C","UNK_TYPE4","",0x4), 0x801BFC7C:("D_801BFC7C","UNK_TYPE2","",0x2), 0x801BFC8C:("D_801BFC8C","UNK_TYPE1","",0x1), 0x801BFC98:("D_801BFC98","UNK_TYPE2","",0x2), 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), 0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1), 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), - 0x801BFCE4:("D_801BFCE4","UNK_TYPE2","",0x2), - 0x801BFCE8:("D_801BFCE8","UNK_TYPE2","",0x2), - 0x801BFCEA:("D_801BFCEA","UNK_TYPE2","",0x2), - 0x801BFCEC:("D_801BFCEC","UNK_TYPE2","",0x2), - 0x801BFCEE:("D_801BFCEE","UNK_TYPE2","",0x2), - 0x801BFCF0:("D_801BFCF0","UNK_TYPE2","",0x2), - 0x801BFCF2:("D_801BFCF2","UNK_TYPE2","",0x2), - 0x801BFCF4:("D_801BFCF4","UNK_TYPE2","",0x2), - 0x801BFCF8:("D_801BFCF8","UNK_TYPE2","",0x2), - 0x801BFCFC:("D_801BFCFC","UNK_TYPE2","",0x2), - 0x801BFD0C:("D_801BFD0C","UNK_TYPE2","",0x2), + 0x801BFCE4:("D_801BFCE4","UNK_TYPE4","",0x4), + 0x801BFCE8:("D_801BFCE8","u16","[8]",0x10), + 0x801BFCF8:("D_801BFCF8","UNK_TYPE4","",0x4), + 0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4), + 0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4), 0x801BFD1C:("D_801BFD1C","UNK_TYPE1","",0x1), 0x801BFD24:("D_801BFD24","UNK_TYPE1","",0x1), 0x801BFD2C:("D_801BFD2C","UNK_TYPE1","",0x1), @@ -1199,9 +1175,9 @@ 0x801BFD6C:("D_801BFD6C","UNK_TYPE2","",0x2), 0x801BFD84:("D_801BFD84","UNK_TYPE1","",0x1), 0x801BFD8C:("D_801BFD8C","UNK_TYPE1","",0x1), - 0x801BFD94:("D_801BFD94","UNK_TYPE1","",0x1), - 0x801BFD98:("D_801BFD98","UNK_TYPE2","",0x2), - 0x801BFD9E:("D_801BFD9E","UNK_TYPE1","",0x1), + 0x801BFD94:("D_801BFD94","UNK_TYPE4","",0x4), + 0x801BFD98:("D_801BFD98","UNK_TYPE4","[2]",0x8), + 0x801BFDA0:("D_801BFDA0","s16","[24]",0x30), 0x801BFDD0:("D_801BFDD0","UNK_TYPE1","",0x1), 0x801BFDE8:("D_801BFDE8","UNK_TYPE1","",0x1), 0x801BFE00:("D_801BFE00","UNK_TYPE1","",0x1), diff --git a/tools/namefixer.py b/tools/namefixer.py index 08621f709..177546726 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -448,8 +448,8 @@ wordReplace = { "func_8013BC6C": "SubS_ChangeAnimationByInfoS", "func_8013E1C8": "SubS_ChangeAnimationBySpeedInfo", "func_8013D9C8": "SubS_FillLimbRotTables", - "func_80114E90": "Interface_HasEmptyBottle", - "func_80114F2C": "Interface_HasItemInBottle", + "func_80114E90": "Inventory_HasEmptyBottle", + "func_80114F2C": "Inventory_HasItemInBottle", "func_80123C90": "Player_SetEquipmentData", "Quake2_ClearType": "Distortion_ClearType", "Quake2_SetType": "Distortion_SetType", diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index a1267e0d3..7cf6c6034 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1623,32 +1623,32 @@ asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34 asm/non_matchings/code/z_parameter/func_801129E4.s,func_801129E4,0x801129E4,0x44 asm/non_matchings/code/z_parameter/func_80112AF4.s,func_80112AF4,0x80112AF4,0x2 asm/non_matchings/code/z_parameter/func_80112AFC.s,func_80112AFC,0x80112AFC,0x11 -asm/non_matchings/code/z_parameter/func_80112B40.s,func_80112B40,0x80112B40,0x29 -asm/non_matchings/code/z_parameter/func_80112BE4.s,func_80112BE4,0x80112BE4,0xA +asm/non_matchings/code/z_parameter/Interface_LoadItemIconImpl.s,Interface_LoadItemIconImpl,0x80112B40,0x29 +asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112BE4,0xA asm/non_matchings/code/z_parameter/func_80112C0C.s,func_80112C0C,0x80112C0C,0x9D asm/non_matchings/code/z_parameter/Item_Give.s,Item_Give,0x80112E80,0x553 -asm/non_matchings/code/z_parameter/func_801143CC.s,func_801143CC,0x801143CC,0x16B -asm/non_matchings/code/z_parameter/func_80114978.s,func_80114978,0x80114978,0xA -asm/non_matchings/code/z_parameter/func_801149A0.s,func_801149A0,0x801149A0,0x3F -asm/non_matchings/code/z_parameter/func_80114A9C.s,func_80114A9C,0x80114A9C,0x3A -asm/non_matchings/code/z_parameter/func_80114B84.s,func_80114B84,0x80114B84,0x47 -asm/non_matchings/code/z_parameter/func_80114CA0.s,func_80114CA0,0x80114CA0,0x7C -asm/non_matchings/code/z_parameter/Interface_HasEmptyBottle.s,Interface_HasEmptyBottle,0x80114E90,0x27 -asm/non_matchings/code/z_parameter/Interface_HasItemInBottle.s,Interface_HasItemInBottle,0x80114F2C,0x29 -asm/non_matchings/code/z_parameter/func_80114FD0.s,func_80114FD0,0x80114FD0,0x58 -asm/non_matchings/code/z_parameter/func_80115130.s,func_80115130,0x80115130,0x62 -asm/non_matchings/code/z_parameter/func_801152B8.s,func_801152B8,0x801152B8,0x44 +asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s,Item_CheckObtainabilityImpl,0x801143CC,0x16B +asm/non_matchings/code/z_parameter/Item_CheckObtainability.s,Item_CheckObtainability,0x80114978,0xA +asm/non_matchings/code/z_parameter/Inventory_DeleteItem.s,Inventory_DeleteItem,0x801149A0,0x3F +asm/non_matchings/code/z_parameter/Inventory_UnequipItem.s,Inventory_UnequipItem,0x80114A9C,0x3A +asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s,Inventory_ReplaceItem,0x80114B84,0x47 +asm/non_matchings/code/z_parameter/Inventory_UpdateDeitySwordEquip.s,Inventory_UpdateDeitySwordEquip,0x80114CA0,0x7C +asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s,Inventory_HasEmptyBottle,0x80114E90,0x27 +asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s,Inventory_HasItemInBottle,0x80114F2C,0x29 +asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s,Inventory_UpdateBottleItem,0x80114FD0,0x58 +asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s,Inventory_ConsumeFairy,0x80115130,0x62 +asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s,Inventory_UpdateItem,0x801152B8,0x44 asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 asm/non_matchings/code/z_parameter/func_80115428.s,func_80115428,0x80115428,0x41 asm/non_matchings/code/z_parameter/func_8011552C.s,func_8011552C,0x8011552C,0x22 asm/non_matchings/code/z_parameter/func_801155B4.s,func_801155B4,0x801155B4,0x6C asm/non_matchings/code/z_parameter/func_80115764.s,func_80115764,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 -asm/non_matchings/code/z_parameter/func_80115908.s,func_80115908,0x80115908,0x2E -asm/non_matchings/code/z_parameter/func_801159c0.s,func_801159c0,0x801159C0,0xB -asm/non_matchings/code/z_parameter/func_801159EC.s,func_801159EC,0x801159EC,0xA -asm/non_matchings/code/z_parameter/func_80115A14.s,func_80115A14,0x80115A14,0xC0 -asm/non_matchings/code/z_parameter/Parameter_AddMagic.s,Parameter_AddMagic,0x80115D14,0x12 +asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908,0x2E +asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB +asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA +asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 +asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 From 5162cd235f02d6781f0283b5a22dd977762495f4 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Apr 2022 20:11:46 +1000 Subject: [PATCH 089/160] More functions --- include/functions.h | 27 ++- include/z64.h | 2 +- src/code/z_parameter.c | 396 +++++++++++++++++++++++++++++++++++++++-- tools/namefixer.py | 17 ++ 4 files changed, 412 insertions(+), 30 deletions(-) diff --git a/include/functions.h b/include/functions.h index 48b2fc566..2708a7f45 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1914,27 +1914,26 @@ void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); // void Interface_LoadItemIcon(void); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 item); -// void Item_CheckObtainabilityImpl(void); -UNK_TYPE Item_CheckObtainability(UNK_TYPE arg0); -void Inventory_DeleteItem(s32 itemId, s16 slotId); -// void Inventory_UnequipItem(void); -// void Inventory_ReplaceItem(void); -// void Inventory_UpdateDeitySwordEquip(void); +u8 Item_CheckObtainability(u8 item); +void Inventory_DeleteItem(s16 item, s16 invSlot); +void Inventory_UnequipItem(s16 item); +s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem); +void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) ; s32 Inventory_HasEmptyBottle(void); -s32 Inventory_HasItemInBottle(u8 itemId); -// void Inventory_UpdateBottleItem(void); -// void Inventory_ConsumeFairy(void); -// void Inventory_UpdateItem(void); +s32 Inventory_HasItemInBottle(u8 item); +void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn); +s32 Inventory_ConsumeFairy(GlobalContext* globalCtx); +void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item); // void func_801153C8(void); // void func_80115428(void); void func_8011552C(GlobalContext* globalCtx, s16 arg1); // void func_801155B4(void); // void func_80115764(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); -s32 Health_ChangeBy(GlobalContext* globalCtx, u8 param_2); -void Health_GiveHearts(s16 param_1); -void Rupees_ChangeBy(s16 arg0); -void Inventory_ChangeAmmo(s16 arg0, s16 arg1); +s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange); +void Health_GiveHearts(s16 hearts); +void Rupees_ChangeBy(s16 rupeeChange); +void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); diff --git a/include/z64.h b/include/z64.h index 1ef496df3..ad3a826b4 100644 --- a/include/z64.h +++ b/include/z64.h @@ -536,7 +536,7 @@ typedef struct { /* 0x258 */ s16 unk_258; /* 0x25A */ s16 unk_25A; /* 0x25C */ u16 unk_25C; - /* 0x25E */ u16 unk_25E[5]; // ItemId + /* 0x25E */ u16 cursorItem[5]; /* 0x268 */ u16 unk_268[5]; /* 0x272 */ u16 equipTargetItem; /* 0x274 */ u16 equipTargetSlot; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 18e4aaae1..a28ba887c 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -762,27 +762,313 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return temp; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s") +u8 Item_CheckObtainabilityImpl(u8 item) { + s16 i; + u8 slot; + u8 temp; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Item_CheckObtainability.s") + slot = SLOT(item); + if (item >= ITEM_STICKS_5) { + slot = SLOT(sExtraItemBases[item - ITEM_STICKS_5]); + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_DeleteItem.s") + if (item == ITEM_SKULL_TOKEN) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UnequipItem.s") + } else if (item == ITEM_TINGLE_MAP) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ReplaceItem.s") + } else if (item == ITEM_BOMBERS_NOTEBOOK) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateDeitySwordEquip.s") + } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_HasEmptyBottle.s") + } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s") + } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { + if (!CHECK_DUNGEON_ITEM(item - ITEM_KEY_BOSS, gSaveContext.mapIndex)) { + return ITEM_NONE; + } + return item; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s") + } else if (item == ITEM_KEY_SMALL) { + return ITEM_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s") + } else if ((item == ITEM_OCARINA) || (item == ITEM_BOMBCHU) || (item == ITEM_HOOKSHOT) || (item == ITEM_LENS) || + (item == ITEM_SWORD_GREAT_FAIRY) || (item == ITEM_PICTO_BOX)) { + if (INV_CONTENT(item) == ITEM_NONE) { + return ITEM_NONE; + } + return INV_CONTENT(item); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s") + } else if ((item >= ITEM_BOMBS_5) && (item == ITEM_BOMBS_30)) { + //! @bug: Should be a range check: (item <= ITEM_BOMBS_30) + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { + if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item == ITEM_QUIVER_40) || (item == ITEM_QUIVER_50)) { + return ITEM_NONE; + + } else if ((item == ITEM_BOMB_BAG_20) || (item == ITEM_BOMB)) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + return ITEM_NONE; + } + return 0; + + } else if ((item >= ITEM_STICK_UPGRADE_20) && (item <= ITEM_NUT_UPGRADE_40)) { + return ITEM_NONE; + + } else if ((item >= ITEM_BOMB_BAG_30) && (item <= ITEM_WALLET_GIANT)) { + return ITEM_NONE; + + } else if (item == ITEM_BEAN) { + return ITEM_NONE; + + } else if (item == ITEM_POWDER_KEG) { + return ITEM_NONE; + + } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { + return ITEM_NONE; + + } else if (item == ITEM_HEART_CONTAINER) { + return ITEM_NONE; + + } else if (item == ITEM_HEART) { + return ITEM_HEART; + + } else if ((item == ITEM_MAGIC_SMALL) || (item == ITEM_MAGIC_LARGE)) { + if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { + return ITEM_NONE; + } + return item; + + } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { + return ITEM_NONE; + + } else if ((item >= ITEM_REMAINS_ODOLWA) && (item <= ITEM_REMAINS_TWINMOLD)) { + return ITEM_NONE; + + } else if (item == ITEM_LONGSHOT) { + return ITEM_NONE; + + } else if (item == ITEM_BOTTLE) { + return ITEM_NONE; + + } else if ((item == ITEM_MILK_BOTTLE) || (item == ITEM_POE) || (item == ITEM_GOLD_DUST) || (item == ITEM_CHATEAU) || + (item == ITEM_HYLIAN_LOACH)) { + return ITEM_NONE; + + } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || + (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || + (item == ITEM_SEA_HORSE_CAUGHT)) { + temp = SLOT(item); + + if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { + if (item == ITEM_CHATEAU_2) { + item = ITEM_CHATEAU; + + } else if (item == ITEM_MILK) { + item = ITEM_MILK_BOTTLE; + + } else if (item == ITEM_GOLD_DUST_2) { + item = ITEM_GOLD_DUST; + + } else if (item == ITEM_HYLIAN_LOACH_2) { + item = ITEM_HYLIAN_LOACH; + + } else if (item == ITEM_SEA_HORSE_CAUGHT) { + item = ITEM_SEA_HORSE; + } + temp = SLOT(item); + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[temp + i] == ITEM_BOTTLE) { + return ITEM_NONE; + } + } + } else { + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { + return ITEM_NONE; + } + } + } + } else if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_MASK_GIANT)) { + return ITEM_NONE; + } + + return gSaveContext.save.inventory.items[slot]; +} + +u8 Item_CheckObtainability(u8 item) { + return Item_CheckObtainabilityImpl(item); +} + +void Inventory_DeleteItem(s16 item, s16 invSlot) { + s16 btn; + + gSaveContext.save.inventory.items[invSlot] = ITEM_NONE; + + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == item) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); + SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); + } + } +} + +void Inventory_UnequipItem(s16 item) { + s16 btn; + + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == item) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); + SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); + } + } +} + +s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { + u8 i; + + for (i = 0; i < 24; i++) { + if (gSaveContext.save.inventory.items[i] == oldItem) { + gSaveContext.save.inventory.items[i] = newItem; + + for (i = 1; i < 4; i++) { + if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) { + SET_CUR_FORM_BTN_ITEM(i, newItem); + Interface_LoadItemIconImpl(globalCtx, i); + break; + } + } + return true; + } + } + return false; +} + +void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + u8 btn; + + if (CUR_FORM == PLAYER_FORM_FIERCE_DEITY) { + interfaceCtx->unk_21C = 0; + interfaceCtx->unk_21E = 0; + if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) + ? 1 + : gSaveContext.save.playerForm >> 1) == 0) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_DEITY; + } else { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { + if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = + GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; + } + } + } + } + + for (btn = 0; btn < 1; btn++) { + if ((GET_CUR_FORM_BTN_ITEM(btn) != ITEM_NONE) && (GET_CUR_FORM_BTN_ITEM(btn) != ITEM_UNK_FD)) { + Interface_LoadItemIconImpl(globalCtx, btn); + } + } +} + +s32 Inventory_HasEmptyBottle(void) { + s32 slot; + + for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { + if (gSaveContext.save.inventory.items[slot] == ITEM_BOTTLE) { + return true; + } + } + return false; +} + +s32 Inventory_HasItemInBottle(u8 item) { + s32 slot; + + for (slot = SLOT_BOTTLE_1; slot <= SLOT_BOTTLE_6; slot++) { + if (gSaveContext.save.inventory.items[slot] == item) { + return true; + } + } + return false; +} + +void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { + gSaveContext.save.inventory.items[GET_CUR_FORM_BTN_SLOT(btn)] = item; + SET_CUR_FORM_BTN_ITEM(btn, item); + + Interface_LoadItemIconImpl(globalCtx, btn); + + globalCtx->pauseCtx.cursorItem[0] = item; + gSaveContext.buttonStatus[btn] = BTN_ENABLED; + + if (item == ITEM_HOT_SPRING_WATER) { + func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); + } +} + +s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { + u8 bottleSlot = SLOT(ITEM_FAIRY); + u8 btn; + u8 i; + + for (i = 0; i < 6; i++) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { + SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE); + Interface_LoadItemIconImpl(globalCtx, btn); + bottleSlot = GET_CUR_FORM_BTN_SLOT(btn); + i = 0; + break; + } + } + gSaveContext.save.inventory.items[bottleSlot + i] = ITEM_BOTTLE; + return true; + } + } + + return false; +} + +/** + * Only used to equip spring water when hot sprint water timer runs out + */ +void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item) { + s16 btn; + + gSaveContext.save.inventory.items[slot] = item; + + for (btn = 1; btn < 4; btn++) { + if (GET_CUR_FORM_BTN_SLOT(btn) == slot) { + SET_CUR_FORM_BTN_ITEM(btn, item); + Interface_LoadItemIconImpl(globalCtx, btn); + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_801153C8.s") @@ -800,13 +1086,93 @@ TexturePtr sDoActionTextures[] = { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115844.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Health_ChangeBy.s") +s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { + if (healthChange > 0) { + play_sound(NA_SE_SY_HP_RECOVER); + } else if ((gSaveContext.save.playerData.doubleDefense != 0) && (healthChange < 0)) { + healthChange >>= 1; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Health_GiveHearts.s") + gSaveContext.save.playerData.health += healthChange; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s") + if (((void)0, gSaveContext.save.playerData.health) > ((void)0, gSaveContext.save.playerData.healthCapacity)) { + gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s") + if (gSaveContext.save.playerData.health <= 0) { + gSaveContext.save.playerData.health = 0; + return false; + } else { + return true; + } +} + +void Health_GiveHearts(s16 hearts) { + gSaveContext.save.playerData.healthCapacity += hearts * 0x10; +} + +void Rupees_ChangeBy(s16 rupeeChange) { + gSaveContext.rupeeAccumulator += rupeeChange; +} + +void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { + if (item == ITEM_STICK) { + AMMO(ITEM_STICK) += ammoChange; + + if (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS)) { + AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); + } else if (AMMO(ITEM_STICK) < 0) { + AMMO(ITEM_STICK) = 0; + } + + } else if (item == ITEM_NUT) { + AMMO(ITEM_NUT) += ammoChange; + + if (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS)) { + AMMO(ITEM_NUT) = CUR_CAPACITY(UPG_NUTS); + } else if (AMMO(ITEM_NUT) < 0) { + AMMO(ITEM_NUT) = 0; + } + + } else if (item == ITEM_BOMBCHU) { + AMMO(ITEM_BOMBCHU) += ammoChange; + + if (AMMO(ITEM_BOMBCHU) >= CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); + } else if (AMMO(ITEM_BOMBCHU) < 0) { + AMMO(ITEM_BOMBCHU) = 0; + } + + } else if (item == ITEM_BOW) { + AMMO(ITEM_BOW) += ammoChange; + + if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) { + AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); + } else if (AMMO(ITEM_BOW) < 0) { + AMMO(ITEM_BOW) = 0; + } + + } else if (item == ITEM_BOMB) { + AMMO(ITEM_BOMB) += ammoChange; + + if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) { + AMMO(ITEM_BOMB) = CUR_CAPACITY(UPG_BOMB_BAG); + } else if (AMMO(ITEM_BOMB) < 0) { + AMMO(ITEM_BOMB) = 0; + } + + } else if (item == ITEM_BEAN) { + AMMO(ITEM_BEAN) += ammoChange; + + } else if (item == ITEM_POWDER_KEG) { + AMMO(ITEM_POWDER_KEG) += ammoChange; + if (AMMO(ITEM_POWDER_KEG) >= 1) { + AMMO(ITEM_POWDER_KEG) = 1; + } else if (AMMO(ITEM_POWDER_KEG) < 0) { + AMMO(ITEM_POWDER_KEG) = 0; + } + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_AddMagic.s") diff --git a/tools/namefixer.py b/tools/namefixer.py index 177546726..4a4df0e2e 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -421,6 +421,23 @@ wordReplace = { "func_80169E6C": "Play_SetupRespawnPoint", "func_8016A0AC": "Play_IsUnderwater", "func_801690CC": "Play_InCsMode", + "func_80112B40": "Interface_LoadItemIconImpl", + "func_80112BE4": "Interface_LoadItemIcon", + "func_80114978": "Item_CheckObtainability", + "func_801149A0": "Inventory_DeleteItem", + "func_80114A9C": "Inventory_UnequipItem", + "func_80114B84": "Inventory_ReplaceItem", + "func_80114CA0": "Inventory_UpdateDeitySwordEquip", + "Interface_HasEmptyBottle": "Inventory_HasEmptyBottle", + "Interface_HasItemInBottle": "Inventory_HasItemInBottle", + "func_80114FD0": "Inventory_UpdateBottleItem", + "func_80115130": "Inventory_ConsumeFairy", + "func_801152B8": "Inventory_UpdateItem", + "func_80115908": "Health_ChangeBy", + "func_801159c0": "Health_GiveHearts", + "func_801159EC": "Rupees_ChangeBy", + "func_80115A14": "Inventory_ChangeAmmo", + "Parameter_AddMagic": "Interface_AddMagic", "func_8017D2FC": "Math3D_LineSegVsPlane", "func_8013A7C0": "SubS_FindDoor", "func_8013E640": "SubS_FindActorCustom", From 6ab2f2992bb9cc12a333d13242e78c0a644f9831 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Apr 2022 20:22:39 +1000 Subject: [PATCH 090/160] cleanup --- include/functions.h | 2 +- src/code/z_kaleido_setup.c | 8 ++++---- src/code/z_parameter.c | 4 ++-- src/code/z_sram_NES.c | 1 - src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c | 2 +- src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 2 +- src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c | 4 ++-- 7 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/functions.h b/include/functions.h index 2708a7f45..ec58d9b1c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1915,7 +1915,7 @@ void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 item); u8 Item_CheckObtainability(u8 item); -void Inventory_DeleteItem(s16 item, s16 invSlot); +void Inventory_DeleteItem(s16 item, s16 slot); void Inventory_UnequipItem(s16 item); s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem); void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) ; diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 5a234ea44..bc7dcd646 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -124,10 +124,10 @@ void KaleidoSetup_Init(GlobalContext* globalCtx) { pauseCtx->unk_258 = 11; pauseCtx->unk_25A = 0; - pauseCtx->unk_25E[PAUSE_0] = 999; - pauseCtx->unk_25E[PAUSE_1] = XREG(94) + 3; - pauseCtx->unk_25E[PAUSE_2] = 999; - pauseCtx->unk_25E[PAUSE_3] = 999; + pauseCtx->cursorItem[PAUSE_0] = 999; + pauseCtx->cursorItem[PAUSE_1] = XREG(94) + 3; + pauseCtx->cursorItem[PAUSE_2] = 999; + pauseCtx->cursorItem[PAUSE_3] = 999; pauseCtx->unk_268[PAUSE_0] = 0; pauseCtx->unk_268[PAUSE_1] = XREG(94) + 3; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a28ba887c..73bdc2937 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -920,10 +920,10 @@ u8 Item_CheckObtainability(u8 item) { return Item_CheckObtainabilityImpl(item); } -void Inventory_DeleteItem(s16 item, s16 invSlot) { +void Inventory_DeleteItem(s16 item, s16 slot) { s16 btn; - gSaveContext.save.inventory.items[invSlot] = ITEM_NONE; + gSaveContext.save.inventory.items[slot] = ITEM_NONE; for (btn = 1; btn < 4; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 2ebb32447..f1fba8576 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -407,7 +407,6 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { SET_STOLEN_ITEM_1(STOLEN_ITEM_NONE); SET_STOLEN_ITEM_2(STOLEN_ITEM_NONE); - // ?? Inventory_DeleteItem(ITEM_OCARINA_FAIRY, SLOT_TRADE_DEED); Inventory_DeleteItem(ITEM_SLINGSHOT, SLOT_TRADE_KEY_MAMA); Inventory_DeleteItem(ITEM_LONGSHOT, SLOT_TRADE_COUPLE); diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 1c48235ae..13a470709 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -296,7 +296,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if (INV_CONTENT(ITEM_BEAN) != 10U) { + if ((u32)INV_CONTENT(ITEM_BEAN) != 10) { return 0; } diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index f5d07fcf5..2ac74c770 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -357,7 +357,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->isNewAccount = true; } - Rupees_ChangeBy((s16)-globalCtx->msgCtx.bankRupeesSelected); + Rupees_ChangeBy(-globalCtx->msgCtx.bankRupeesSelected); this->previousBankValue = gSaveContext.save.bankRupees & 0xFFFF; gSaveContext.save.bankRupees = ((gSaveContext.save.bankRupees & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected) | diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index b266cc0b6..c7a010c32 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -331,7 +331,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) { } } } else if (temp_v0 == 4) { - if (Message_ShouldAdvance(globalCtx) != 0) { + if (Message_ShouldAdvance(globalCtx)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: if (gSaveContext.save.playerData.rupees < this->unk_358) { @@ -343,7 +343,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) { func_8019F208(); globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; - Rupees_ChangeBy(this->unk_358 * -1); + Rupees_ChangeBy(-this->unk_358); this->actionFunc = func_80BCB90C; } break; From 84d710877073d18cb441d955b369a7c0a45a564e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Apr 2022 21:01:52 +1000 Subject: [PATCH 091/160] Add Enum --- src/code/z_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 73bdc2937..50cf0f4e2 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1026,7 +1026,7 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { gSaveContext.buttonStatus[btn] = BTN_ENABLED; if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); + func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - SLOT_BOTTLE_1); } } From 76e7537813bdfaa28a5e1e2e59cd9e17b01a25a0 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 13:33:04 +1000 Subject: [PATCH 092/160] Many changes, PR and add-ons --- include/z64.h | 1 + include/z64item.h | 25 ++- src/code/code_8012EC80.c | 12 +- src/code/z_game_over.c | 14 +- src/code/z_parameter.c | 193 +++++++----------- src/code/z_sram_NES.c | 26 +-- .../ovl_En_Akindonuts/z_en_akindonuts.c | 4 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 4 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 4 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 4 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 2 +- src/overlays/actors/ovl_En_Rr/z_en_rr.c | 4 +- src/overlays/actors/ovl_En_Shn/z_en_shn.c | 4 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 2 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 2 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 4 +- src/overlays/actors/ovl_En_Tsn/z_en_tsn.c | 4 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 4 +- src/overlays/gamestates/ovl_select/z_select.c | 10 +- 19 files changed, 148 insertions(+), 175 deletions(-) diff --git a/include/z64.h b/include/z64.h index ad3a826b4..a0b64b5f1 100644 --- a/include/z64.h +++ b/include/z64.h @@ -66,6 +66,7 @@ #define EQUIP_SLOT_C_LEFT 1 #define EQUIP_SLOT_C_DOWN 2 #define EQUIP_SLOT_C_RIGHT 3 +#define EQUIP_SLOT_UNUSED 4 typedef struct { /* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority diff --git a/include/z64item.h b/include/z64item.h index ad1524fda..29ad62f85 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -7,10 +7,27 @@ // TODO fill out these enums typedef enum { - /* 0x0 */ EQUIP_SWORD, - /* 0x1 */ EQUIP_SHIELD + /* 0x0 */ EQUIP_TYPE_SWORD, + /* 0x1 */ EQUIP_TYPE_SHIELD, + /* 0x2 */ EQUIP_TYPE_MAX } EquipmentType; +typedef enum { + /* 0 */ EQUIP_VALUE_SWORD_NONE, + /* 1 */ EQUIP_VALUE_SWORD_KOKIRI, + /* 2 */ EQUIP_VALUE_SWORD_RAZOR, + /* 3 */ EQUIP_VALUE_SWORD_GILDED, + /* 4 */ EQUIP_VALUE_SWORD_DIETY, + /* 5 */ EQUIP_VALUE_SWORD_MAX, +} EquipValueSword; + +typedef enum { + /* 0 */ EQUIP_VALUE_SHIELD_NONE, + /* 1 */ EQUIP_VALUE_SHIELD_HERO, + /* 2 */ EQUIP_VALUE_SHIELD_MIRROR, + /* 3 */ EQUIP_VALUE_SHIELD_MAX +} EquipValueShield; + typedef enum { /* 0x00 */ UPG_QUIVER, /* 0x01 */ UPG_BOMB_BAG, @@ -44,7 +61,7 @@ typedef enum { /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook /* 0x13 */ QUEST_SKULL_TOKEN, /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, - /* 0x19 */ QUEST_PICTOBOX, // Photo taken from PictoBox + /* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph is saved /* 0x1C */ QUEST_HEART_PIECE = 0x1C, /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; @@ -112,7 +129,7 @@ typedef enum { /* 0x07 */ ITEM_BOMBCHU, /* 0x08 */ ITEM_STICK, /* 0x09 */ ITEM_NUT, - /* 0x0A */ ITEM_BEAN, + /* 0x0A */ ITEM_MAGIC_BEANS, /* 0x0B */ ITEM_SLINGSHOT, /* 0x0C */ ITEM_POWDER_KEG, /* 0x0D */ ITEM_PICTO_BOX, diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 9e0a9b516..55dcd7b2b 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -107,7 +107,7 @@ void* gItemIcons[] = { 0x08007000, // ITEM_BOMBCHU 0x08008000, // ITEM_STICK 0x08009000, // ITEM_NUT - 0x0800A000, // ITEM_BEAN + 0x0800A000, // ITEM_MAGIC_BEANS 0x0800B000, // ITEM_SLINGSHOT 0x0800C000, // ITEM_POWDER_KEG 0x0800D000, // ITEM_PICTO_BOX @@ -242,7 +242,7 @@ u8 gItemSlots[] = { SLOT_BOMBCHU, // ITEM_BOMBCHU SLOT_STICK, // ITEM_STICK SLOT_NUT, // ITEM_NUT - SLOT_MAGIC_BEANS, // ITEM_BEAN + SLOT_MAGIC_BEANS, // ITEM_MAGIC_BEANS SLOT_TRADE_KEY_MAMA, // ITEM_SLINGSHOT SLOT_POWDER_KEG, // ITEM_POWDER_KEG SLOT_PICTO_BOX, // ITEM_PICTO_BOX @@ -322,7 +322,7 @@ s16 gItemPrices[] = { 0, // ITEM_BOMBCHU 0, // ITEM_STICK 0, // ITEM_NUT - 0, // ITEM_BEAN + 0, // ITEM_MAGIC_BEANS 0, // ITEM_SLINGSHOT 0, // ITEM_POWDER_KEG 0, // ITEM_PICTO_BOX @@ -495,7 +495,7 @@ s32 Inventory_GetBtnBItem(GlobalContext* globalCtx) { * Only changes shield */ void Inventory_ChangeEquipment(s16 value) { - SET_EQUIP_VALUE(EQUIP_SHIELD, value); + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, value); } /** @@ -504,8 +504,8 @@ void Inventory_ChangeEquipment(s16 value) { u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) { Player* player = GET_PLAYER(globalCtx); - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { - SET_EQUIP_VALUE(EQUIP_SHIELD, 0); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, EQUIP_VALUE_SHIELD_NONE); Player_SetEquipmentData(globalCtx, player); return true; } diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 62d55bc00..291731260 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -35,8 +35,8 @@ void GameOver_Update(GlobalContext* globalCtx) { CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_GILDED && CUR_FORM_EQUIP(EQUIP_SLOT_B) != ITEM_SWORD_DEITY) { - if (gSaveContext.buttonStatus[0] != BTN_ENABLED) { - CUR_FORM_EQUIP(EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_ENABLED) { + CUR_FORM_EQUIP(EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; } @@ -51,11 +51,11 @@ void GameOver_Update(GlobalContext* globalCtx) { gSaveContext.eventInf[1] = 0; gSaveContext.eventInf[2] = 0; gSaveContext.eventInf[3] = 0; - gSaveContext.buttonStatus[0] = BTN_ENABLED; - gSaveContext.buttonStatus[1] = BTN_ENABLED; - gSaveContext.buttonStatus[2] = BTN_ENABLED; - gSaveContext.buttonStatus[3] = BTN_ENABLED; - gSaveContext.buttonStatus[4] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_UNUSED] = BTN_ENABLED; gSaveContext.unk_3F1E = 0; gSaveContext.unk_3F20 = 0; gSaveContext.unk_3F22 = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 50cf0f4e2..6d142e78e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -8,11 +8,9 @@ typedef struct { /* 0x03 */ u8 flags3; } RestrictionFlags; -// bss Input D_801F5850[4]; -// data -static RestrictionFlags sRestrictionFlags[] = { +RestrictionFlags sRestrictionFlags[] = { { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, { SCENE_UNSET_1, 0x00, 0x00, 0x00 }, { SCENE_UNSET_2, 0x00, 0x00, 0x00 }, @@ -131,7 +129,7 @@ static RestrictionFlags sRestrictionFlags[] = { s16 D_801BF884 = 0; // pictoBox related s16 D_801BF888 = false; // pictoBox related -s16 sHBAScoreTier = 0; +s16 sHBAScoreTier = 0; // Remnant of OoT, non-functional u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; @@ -195,63 +193,17 @@ Gfx D_801BF988[] = { }; s16 D_801BF9B0 = 0; - -f32 D_801BF9B4[] = { - 100.0f, - 109.0f, -}; - -s16 D_801BF9BC[] = { - 0x226, - 0x2A8, - 0x2A8, - 0x2A8, -}; - -s16 D_801BF9C4[] = { - 0x9E, - 0x9B, -}; - -s16 D_801BF9C8[] = { - 0x17, - 0x16, -}; - -f32 D_801BF9CC[] = { - -380.0f, - -350.0f, -}; - -s16 D_801BF9D4[] = { - 0xA7, - 0xE3, -}; - -s16 D_801BF9D8[] = { - 0xF9, - 0x10F, -}; - -s16 D_801BF9DC[] = { - 0x11, - 0x12, -}; - -s16 D_801BF9E0[] = { - 0x22, - 0x12, -}; - -s16 D_801BF9E4[] = { - 0x23F, - 0x26C, -}; - -s16 D_801BF9E8[] = { - 0x26C, - 0x26C, -}; +f32 D_801BF9B4[] = { 100.0f, 109.0f }; +s16 D_801BF9BC[] = { 0x226, 0x2A8, 0x2A8, 0x2A8 }; +s16 D_801BF9C4[] = { 0x9E, 0x9B }; +s16 D_801BF9C8[] = { 0x17, 0x16 }; +f32 D_801BF9CC[] = { -380.0f, -350.0f }; +s16 D_801BF9D4[] = { 0xA7, 0xE3 }; +s16 D_801BF9D8[] = { 0xF9, 0x10F }; +s16 D_801BF9DC[] = { 0x11, 0x12 }; +s16 D_801BF9E0[] = { 0x22, 0x12 }; +s16 D_801BF9E4[] = { 0x23F, 0x26C }; +s16 D_801BF9E8[] = { 0x26C, 0x26C }; s16 sFinalHoursClockDigitsRed = 0; s16 sFinalHoursClockFrameEnvRed = 0; @@ -279,22 +231,22 @@ s16 sFinalHoursClockColorTargetIndex = 0; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010DE38.s") s16 D_801BFA04[] = { - 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, + -14, -14, -24, -8, -12, -12, -7, -8, -7, -8, -12, 0, }; s16 D_801BFA1C[] = { 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, }; s16 D_801BFA34[] = { - 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, + 14, 14, 8, 24, -82, -82, 58, 59, 58, 59, 32, 0, }; s16 D_801BFA4C[] = { 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, }; s16 D_801BFA64[] = { - 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, + -61, -45, 29, 104, -117, -42, 32, 55, }; s16 D_801BFA74[] = { - 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, + 1, -70, -99, -70, 71, 101, 72, 1, }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8010E028.s") @@ -383,17 +335,17 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { - SET_EQUIP_VALUE(EQUIP_SWORD, item - ITEM_SWORD_KOKIRI + 1); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, item - ITEM_SWORD_KOKIRI + EQUIP_VALUE_SWORD_KOKIRI); BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = item; - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); if (item == ITEM_SWORD_RAZOR) { gSaveContext.save.playerData.swordHealth = 100; } return ITEM_NONE; } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + 1)) { - SET_EQUIP_VALUE(EQUIP_SHIELD, item - ITEM_SHIELD_HERO + 1); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + EQUIP_VALUE_SHIELD_HERO)) { + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, item - ITEM_SHIELD_HERO + EQUIP_VALUE_SHIELD_HERO); Player_SetEquipmentData(globalCtx, player); return ITEM_NONE; } @@ -424,6 +376,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); } } + } else if (item == ITEM_QUIVER_40) { Inventory_ChangeUpgrade(UPG_QUIVER, 2); INV_CONTENT(ITEM_BOW) = ITEM_BOW; @@ -512,6 +465,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); } } + } else if ((item == ITEM_STICKS_5) || (item == ITEM_STICKS_10)) { if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { Inventory_ChangeUpgrade(UPG_STICKS, 1); @@ -613,14 +567,14 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { INV_CONTENT(ITEM_OCARINA) = 0; return ITEM_NONE; - } else if (item == ITEM_BEAN) { - if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { + } else if (item == ITEM_MAGIC_BEANS) { + if (INV_CONTENT(ITEM_MAGIC_BEANS) == ITEM_NONE) { INV_CONTENT(item) = item; - AMMO(ITEM_BEAN) = 1; - } else if (AMMO(ITEM_BEAN) < 20) { - AMMO(ITEM_BEAN)++; + AMMO(ITEM_MAGIC_BEANS) = 1; + } else if (AMMO(ITEM_MAGIC_BEANS) < 20) { + AMMO(ITEM_MAGIC_BEANS)++; } else { - AMMO(ITEM_BEAN) = 20; + AMMO(ITEM_MAGIC_BEANS) = 20; } return ITEM_NONE; @@ -715,18 +669,18 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { func_8010EBA0(60, i); } - if ((slot + i) == C_SLOT_EQUIP(0, 1)) { + if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = item; - Interface_LoadItemIconImpl(globalCtx, 1); - gSaveContext.buttonStatus[1] = BTN_ENABLED; - } else if ((slot + i) == C_SLOT_EQUIP(0, 2)) { + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_LEFT); + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = item; - Interface_LoadItemIconImpl(globalCtx, 2); - gSaveContext.buttonStatus[2] = BTN_ENABLED; - } else if ((slot + i) == C_SLOT_EQUIP(0, 3)) { + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_DOWN); + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = item; - Interface_LoadItemIconImpl(globalCtx, 3); - gSaveContext.buttonStatus[3] = BTN_ENABLED; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_RIGHT); + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } gSaveContext.save.inventory.items[slot + i] = item; @@ -746,7 +700,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { temp = INV_CONTENT(item); INV_CONTENT(item) = item; if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (temp != ITEM_NONE)) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (temp == GET_CUR_FORM_BTN_ITEM(i)) { SET_CUR_FORM_BTN_ITEM(i, item); Interface_LoadItemIconImpl(globalCtx, i); @@ -765,7 +719,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { u8 Item_CheckObtainabilityImpl(u8 item) { s16 i; u8 slot; - u8 temp; + u8 bottleSlot; slot = SLOT(item); if (item >= ITEM_STICKS_5) { @@ -837,7 +791,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if ((item >= ITEM_BOMB_BAG_30) && (item <= ITEM_WALLET_GIANT)) { return ITEM_NONE; - } else if (item == ITEM_BEAN) { + } else if (item == ITEM_MAGIC_BEANS) { return ITEM_NONE; } else if (item == ITEM_POWDER_KEG) { @@ -877,7 +831,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || (item == ITEM_SEA_HORSE_CAUGHT)) { - temp = SLOT(item); + bottleSlot = SLOT(item); if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { if (item == ITEM_CHATEAU_2) { @@ -895,16 +849,16 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if (item == ITEM_SEA_HORSE_CAUGHT) { item = ITEM_SEA_HORSE; } - temp = SLOT(item); + bottleSlot = SLOT(item); for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_BOTTLE) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { return ITEM_NONE; } } } else { for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_NONE) { return ITEM_NONE; } } @@ -925,7 +879,7 @@ void Inventory_DeleteItem(s16 item, s16 slot) { gSaveContext.save.inventory.items[slot] = ITEM_NONE; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); @@ -936,7 +890,7 @@ void Inventory_DeleteItem(s16 item, s16 slot) { void Inventory_UnequipItem(s16 item) { s16 btn; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); @@ -951,7 +905,7 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { if (gSaveContext.save.inventory.items[i] == oldItem) { gSaveContext.save.inventory.items[i] = newItem; - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) { SET_CUR_FORM_BTN_ITEM(i, newItem); Interface_LoadItemIconImpl(globalCtx, i); @@ -975,19 +929,17 @@ void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { ? 1 : gSaveContext.save.playerForm >> 1) == 0) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_DEITY; - } else { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; - } else { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = - GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; - } + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) - EQUIP_VALUE_SWORD_KOKIRI + ITEM_SWORD_KOKIRI; } } } - for (btn = 0; btn < 1; btn++) { + for (btn = EQUIP_SLOT_B; btn <= EQUIP_SLOT_B; btn++) { if ((GET_CUR_FORM_BTN_ITEM(btn) != ITEM_NONE) && (GET_CUR_FORM_BTN_ITEM(btn) != ITEM_UNK_FD)) { Interface_LoadItemIconImpl(globalCtx, btn); } @@ -1037,7 +989,7 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { for (i = 0; i < 6; i++) { if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE); Interface_LoadItemIconImpl(globalCtx, btn); @@ -1055,14 +1007,14 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { } /** - * Only used to equip spring water when hot sprint water timer runs out + * Only used to equip Spring Water when Hot Spring Water timer runs out. */ void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item) { s16 btn; gSaveContext.save.inventory.items[slot] = item; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_SLOT(btn) == slot) { SET_CUR_FORM_BTN_ITEM(btn, item); Interface_LoadItemIconImpl(globalCtx, btn); @@ -1086,6 +1038,9 @@ TexturePtr sDoActionTextures[] = { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115844.s") +/** + * Returns true if player still has health left. Otherwise, return false. + */ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { if (healthChange > 0) { play_sound(NA_SE_SY_HP_RECOVER); @@ -1161,8 +1116,8 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { AMMO(ITEM_BOMB) = 0; } - } else if (item == ITEM_BEAN) { - AMMO(ITEM_BEAN) += ammoChange; + } else if (item == ITEM_MAGIC_BEANS) { + AMMO(ITEM_MAGIC_BEANS) += ammoChange; } else if (item == ITEM_POWDER_KEG) { AMMO(ITEM_POWDER_KEG) += ammoChange; @@ -1270,7 +1225,7 @@ TexturePtr D_801BFC14[] = { gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, }; s16 D_801BFC40[] = { - 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, + 127, 136, 144, 151, 160, 168, 175, 184, }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80119610.s") @@ -1285,26 +1240,26 @@ s16 D_801BFC60[][3] = { #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B5C0.s") s16 D_801BFC6C[] = { - 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, + 78, 54, 29, 5, -18, -42, -67, -85, }; s16 D_801BFC7C[] = { - 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, + 180, 180, 180, 180, -180, -180, -180, -180, }; s16 D_801BFC8C[2][3] = { - { 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xA5, 0x37 }, + { 255, 255, 255 }, + { 255, 165, 55 }, }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011B9E0.s") s16 D_801BFC98[] = { - 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, + 78, 54, 29, 5, -18, -42, -67, -85, }; u16 D_801BFCA8[] = { 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, }; s16 D_801BFCB8[2][3] = { - { 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xA5, 0x37 }, + { 255, 255, 255 }, + { 255, 165, 55 }, }; #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_8011BF70.s") @@ -1320,10 +1275,10 @@ TexturePtr D_801BFCC4[] = { s16 D_801BFCE4 = 0; s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -s16 D_801BFCF8 = 0x63; +s16 D_801BFCF8 = 99; s16 D_801BFCFC[] = { // timer digit width - 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, + 16, 25, 34, 42, 51, 60, 68, 77, }; s16 D_801BFD0C[] = { // digit width @@ -1368,7 +1323,7 @@ Color_RGB16 D_801BFD6C[] = { { 120, 170, 255 }, }; // grandma's story pictures -s32 D_801BFD84[] = { +TexturePtr D_801BFD84[] = { 0x07000000, 0x07012C00, }; diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index f1fba8576..34472d563 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -149,9 +149,9 @@ s32 D_801C6798[] = { }; u8 D_801C67B0[24] = { - ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, - ITEM_STICK, ITEM_NUT, ITEM_BEAN, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, - ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, + ITEM_STICK, ITEM_NUT, ITEM_MAGIC_BEANS, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }; s32 D_801C67C8[] = { 0, 0x40, 0x80, 0xC0, 0x100, 0x180, 0x200, 0x280 }; @@ -343,7 +343,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { // Check for all bottled items if (gSaveContext.save.inventory.items[i] >= ITEM_POTION_RED) { if (gSaveContext.save.inventory.items[i] <= ITEM_OBABA_DRINK) { - for (j = 1; j < 4; j++) { + for (j = EQUIP_SLOT_C_LEFT; j <= EQUIP_SLOT_C_RIGHT; j++) { if (GET_CUR_FORM_BTN_ITEM(j) == gSaveContext.save.inventory.items[i]) { SET_CUR_FORM_BTN_ITEM(j, ITEM_BOTTLE); Interface_LoadItemIconImpl(globalCtx, j); @@ -354,26 +354,26 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } } - REMOVE_QUEST_ITEM(QUEST_PICTOBOX); + REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); if (gSaveContext.save.playerData.health < 0x30) { gSaveContext.save.playerData.health = 0x30; } - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) < 3) { - SET_EQUIP_VALUE(EQUIP_SWORD, 1); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) <= EQUIP_VALUE_SWORD_RAZOR) { + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_KOKIRI); if (CUR_FORM == 0) { if ((STOLEN_ITEM_1 >= ITEM_SWORD_GILDED) || (STOLEN_ITEM_2 >= ITEM_SWORD_GILDED)) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_GILDED; - SET_EQUIP_VALUE(EQUIP_SWORD, 3); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_GILDED); } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_KOKIRI; } } else { if ((STOLEN_ITEM_1 >= ITEM_SWORD_GILDED) || (STOLEN_ITEM_2 >= ITEM_SWORD_GILDED)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_B) = ITEM_SWORD_GILDED; - SET_EQUIP_VALUE(EQUIP_SWORD, 3); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_GILDED); } else { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_B) = ITEM_SWORD_KOKIRI; } @@ -411,7 +411,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { Inventory_DeleteItem(ITEM_SLINGSHOT, SLOT_TRADE_KEY_MAMA); Inventory_DeleteItem(ITEM_LONGSHOT, SLOT_TRADE_COUPLE); - for (j = 1; j < 4; j++) { + for (j = EQUIP_SLOT_C_LEFT; j <= EQUIP_SLOT_C_RIGHT; j++) { if (GET_CUR_FORM_BTN_ITEM(j) >= ITEM_MOON_TEAR && GET_CUR_FORM_BTN_ITEM(j) <= ITEM_PENDANT_MEMORIES) { SET_CUR_FORM_BTN_ITEM(j, ITEM_NONE); Interface_LoadItemIconImpl(globalCtx, j); @@ -717,7 +717,7 @@ Inventory sSaveDebugInventory = { ITEM_BOMBCHU, ITEM_STICK, ITEM_NUT, - ITEM_BEAN, + ITEM_MAGIC_BEANS, ITEM_ROOM_KEY, ITEM_POWDER_KEG, ITEM_PICTO_BOX, @@ -808,8 +808,8 @@ void Sram_InitDebugSave(void) { Lib_MemCpy(&gSaveContext.save.checksum, &sSaveDebugChecksum, sizeof(gSaveContext.save.checksum)); if (gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) { - BUTTON_ITEM_EQUIP(0, 2) = D_801C6A48[((void)0, gSaveContext.save.playerForm & 0xFF)]; - C_SLOT_EQUIP(0, 2) = D_801C6A50[((void)0, gSaveContext.save.playerForm & 0xFF)]; + BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A48[((void)0, gSaveContext.save.playerForm & 0xFF)]; + C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN) = D_801C6A50[((void)0, gSaveContext.save.playerForm & 0xFF)]; } gSaveContext.save.hasTatl = true; diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 13a470709..8a5b863fd 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -296,7 +296,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if ((u32)INV_CONTENT(ITEM_BEAN) != 10) { + if ((u32)INV_CONTENT(ITEM_MAGIC_BEANS) != 10) { return 0; } @@ -304,7 +304,7 @@ s32 func_80BED208(EnAkindonuts* this) { return 1; } - if (AMMO(ITEM_BEAN) >= 20) { + if (AMMO(ITEM_MAGIC_BEANS) >= 20) { return 2; } diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 7a9529c2e..a35424673 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -247,7 +247,7 @@ s32 EnGirlA_CanBuyNuts(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyShieldHero(GlobalContext* globalCtx, EnGirlA* this) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { return CANBUY_RESULT_NO_ROOM; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -356,7 +356,7 @@ s32 EnGirlA_CanBuySword(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { return CANBUY_RESULT_NO_ROOM; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index caf4fe389..c2218ae57 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -216,7 +216,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { if (Message_ShouldAdvance(globalCtx) && (this->unk_288 == 0x2716)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == EQUIP_SWORD) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x272C, &this->actor); this->unk_288 = 0x272C; @@ -234,7 +234,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { break; case 1: - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == EQUIP_SWORD) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x272C, &this->actor); this->unk_288 = 0x272C; diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 0d1933bb6..9a6ffeffd 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -718,8 +718,8 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { func_80B41368(this, globalCtx, 0); this->actor.textId = 0xC43; CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; - SET_EQUIP_VALUE(EQUIP_SWORD, 0); - Interface_LoadItemIconImpl(globalCtx, 0); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_NONE); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); func_80B40C74(globalCtx); break; diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 0c16e9b03..728120f7c 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -121,7 +121,7 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { if (gSaveContext.save.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x935); // "[...] You don't have enough Rupees." - } else if (AMMO(ITEM_BEAN) >= 20) { + } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x937); // "[...] You can't carry anymore." } else { diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 4bd5bcf32..e753ed91c 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -305,9 +305,9 @@ void func_808FA4F4(EnRr* this, GlobalContext* globalCtx) { this->unk_20C = 0x800; if (((this->unk_1E2 == 0) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) && - (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) == 1)) { + (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) == EQUIP_VALUE_SHIELD_HERO)) { sp34 = true; - this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, 1); + this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, EQUIP_VALUE_SHIELD_HERO); } else { sp34 = false; } diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index cf3352375..89e1cb217 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -235,7 +235,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { switch (this->unk_2C6) { case 0: - if (!CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { + if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { this->unk_2C6 = 6; ret = 1; } else { @@ -250,7 +250,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { if (func_8013A4C4(D_80AE7258[this->unk_2C6])) { this->unk_2C6 = 6; ret = 1; - REMOVE_QUEST_ITEM(QUEST_PICTOBOX); + REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { this->unk_2C6++; } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index dafed18c5..144c801d9 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -980,7 +980,7 @@ void func_80BACA14(EnSuttari* this, GlobalContext* globalCtx) { this->unk3F2 = this->unk2DC.y; this->actionFunc = func_80BACBB0; } - } else if ((player->transformation == PLAYER_FORM_HUMAN) && GET_CUR_EQUIP_VALUE(EQUIP_SWORD) != 0) { + } else if ((player->transformation == PLAYER_FORM_HUMAN) && GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != 0) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { this->unk3F2 = this->unk2DC.y; func_80BAAB78(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index 47d78ae29..9f2bdac2b 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -200,7 +200,7 @@ static CollisionCheckInfoInit2 sColChkInfoInit = { 8, 0, 0, 0, MASS_HEAVY }; static EnTalkGibudRequestedItem sRequestedItemTable[] = { { PLAYER_AP_BOTTLE_POTION_BLUE, ITEM_POTION_BLUE, 1, true }, - { PLAYER_AP_MAGIC_BEANS, ITEM_BEAN, 5, false }, + { PLAYER_AP_MAGIC_BEANS, ITEM_MAGIC_BEANS, 5, false }, { PLAYER_AP_BOTTLE_SPRING_WATER, ITEM_SPRING_WATER, 1, true }, { PLAYER_AP_BOTTLE_FISH, ITEM_FISH, 1, true }, { PLAYER_AP_BOTTLE_BUG, ITEM_BUG, 1, true }, diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index cfb1f5180..aee78840e 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -223,7 +223,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { } if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { - phi_a3 = GET_CUR_EQUIP_VALUE(EQUIP_SWORD); + phi_a3 = GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD); if (INV_CONTENT(ITEM_SWORD_GREAT_FAIRY) == ITEM_SWORD_GREAT_FAIRY) { phi_a3 += 4; } @@ -260,7 +260,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { itemId1 = ITEM_SWORD_GREAT_FAIRY; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; - SET_EQUIP_VALUE(EQUIP_SWORD, 0); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_NONE); this->unk_3E8 = D_80C13680[phi_a3 - 1]; } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index b8b80d25e..c54319ddf 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -323,7 +323,7 @@ void func_80AE04FC(EnTsn* this, GlobalContext* globalCtx) { func_801477B4(globalCtx); this->actionFunc = func_80AE0704; if (sp24 == 19) { - if (CHECK_QUEST_ITEM(QUEST_PICTOBOX)) { + if (CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { if (func_8013A4C4(1 | 8)) { player->actor.textId = 0x107B; return; @@ -433,7 +433,7 @@ void func_80AE0704(EnTsn* this, GlobalContext* globalCtx) { this->actor.focus.pos = this->actor.world.pos; ActorCutscene_Stop(this->actor.cutscene); this->actor.flags &= ~ACTOR_FLAG_100; - REMOVE_QUEST_ITEM(QUEST_PICTOBOX); + REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { func_80151938(globalCtx, 0x10A8); } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 59ee515d2..b91608345 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -956,13 +956,13 @@ void func_80B985EC(EnZot* this, GlobalContext* globalCtx) { itemActionParam = func_80123810(globalCtx); if (itemActionParam > PLAYER_AP_NONE) { func_801477B4(globalCtx); - if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOBOX) && func_8013A4C4(4)) { + if ((itemActionParam == PLAYER_AP_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOGRAPH) && func_8013A4C4(4)) { if (func_8013A4C4(5) && func_8013A4C4(6)) { player->actor.textId = 0x12AE; } else { player->actor.textId = 0x12AC; } - REMOVE_QUEST_ITEM(QUEST_PICTOBOX); + REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { player->actor.textId = 0x12AB; } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 53dbc266f..04cea5ff9 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -22,11 +22,11 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { Sram_InitDebugSave(); } - gSaveContext.buttonStatus[0] = BTN_ENABLED; - gSaveContext.buttonStatus[1] = BTN_ENABLED; - gSaveContext.buttonStatus[2] = BTN_ENABLED; - gSaveContext.buttonStatus[3] = BTN_ENABLED; - gSaveContext.buttonStatus[4] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_UNUSED] = BTN_ENABLED; gSaveContext.unk_3F1E = 0; gSaveContext.unk_3F20 = 0; gSaveContext.unk_3F22 = 0; From a1376fb43d7905561b1aff7985225d3e9c60b8a2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 13:36:40 +1000 Subject: [PATCH 093/160] Fix bss --- src/boot_O2_g3/z_std_dma.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index 10d84dcb0..d9c7fb221 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" u32 sDmaMgrDmaBuffSize = 0x2000; From 3ace9a083eb1daf3f7a5a6116440457077ae98f2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:28:55 +1000 Subject: [PATCH 094/160] Better data --- include/functions.h | 4 ++-- src/code/z_parameter.c | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/functions.h b/include/functions.h index ec58d9b1c..90d9ab6cf 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1910,8 +1910,8 @@ void Interface_ChangeAlpha(u16 param_1); // void func_80111CB4(void); // void func_801129E4(void); void func_80112AFC(GlobalContext* globalCtx); -void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 arg1); -// void Interface_LoadItemIcon(void); +void Interface_LoadItemIconImpl(GlobalContext* globalCtx, u8 btn); +void Interface_LoadItemIcon(GlobalContext* globalCtx, u8 btn); // void func_80112C0C(void); u8 Item_Give(GlobalContext* globalCtx, u8 item); u8 Item_CheckObtainability(u8 item); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6d142e78e..f0d821b0e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -290,9 +290,13 @@ void func_8010EBA0(s16 timer, s16 timerId); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") -s16 sAmmoRefillCounts[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, +s16 sAmmoRefillCounts[] = { 5, 10, 20, 30 }; +s16 sArrowRefillCounts[] = { 10, 30, 40, 50 }; +s16 sBombchuRefillCounts[] = { 20, 10, 1, 5 }; +s16 sRupeeRefillCounts[] = { + 1, 5, 10, 20, 50, 100, 200, }; + u8 Item_Give(GlobalContext* globalCtx, u8 item) { Player* player = GET_PLAYER(globalCtx); u8 i; @@ -542,7 +546,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; - AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]; + AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20]; if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); @@ -550,13 +554,13 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - if ((AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20]) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; } else if ((item >= ITEM_ARROWS_10) && (item <= ITEM_ARROWS_50)) { - AMMO(ITEM_BOW) += sAmmoRefillCounts[item - ITEM_ARROWS_10 + 4]; + AMMO(ITEM_BOW) += sArrowRefillCounts[item - ITEM_ARROWS_10]; if ((AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) || (AMMO(ITEM_BOW) < 0)) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); @@ -603,7 +607,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { - Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); // TODO: Different to OoT? Or wrong. + Rupees_ChangeBy(sRupeeRefillCounts[item - ITEM_RUPEE_GREEN]); return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { From 9d788605add0f13290539475e9dc89f50312ecd3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:31:05 +1000 Subject: [PATCH 095/160] Extra space --- src/code/z_parameter.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f0d821b0e..20c0eaffc 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -296,7 +296,6 @@ s16 sBombchuRefillCounts[] = { 20, 10, 1, 5 }; s16 sRupeeRefillCounts[] = { 1, 5, 10, 20, 50, 100, 200, }; - u8 Item_Give(GlobalContext* globalCtx, u8 item) { Player* player = GET_PLAYER(globalCtx); u8 i; From d3c0deb863268988717ff8c86026b359d8275597 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:38:17 +1000 Subject: [PATCH 096/160] DoubleDefense is boolean --- src/code/z_parameter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 20c0eaffc..34212f0cf 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1047,7 +1047,7 @@ TexturePtr sDoActionTextures[] = { s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { if (healthChange > 0) { play_sound(NA_SE_SY_HP_RECOVER); - } else if ((gSaveContext.save.playerData.doubleDefense != 0) && (healthChange < 0)) { + } else if (gSaveContext.save.playerData.doubleDefense && (healthChange < 0)) { healthChange >>= 1; } From 47ee89ee35ec98c81441d56d03b4c6593ac8b88f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:41:08 +1000 Subject: [PATCH 097/160] Missed a macro --- src/overlays/actors/ovl_En_Suttari/z_en_suttari.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 144c801d9..e0fd2ef89 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -980,7 +980,8 @@ void func_80BACA14(EnSuttari* this, GlobalContext* globalCtx) { this->unk3F2 = this->unk2DC.y; this->actionFunc = func_80BACBB0; } - } else if ((player->transformation == PLAYER_FORM_HUMAN) && GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != 0) { + } else if ((player->transformation == PLAYER_FORM_HUMAN) && + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != EQUIP_VALUE_SWORD_NONE) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { this->unk3F2 = this->unk2DC.y; func_80BAAB78(this, globalCtx); From cdf61ca57aa445bc2263830d3438391e97549dc1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:45:45 +1000 Subject: [PATCH 098/160] More enums missed --- src/code/z_parameter.c | 2 +- src/code/z_sram_NES.c | 36 +++++++++---------- .../ovl_En_Akindonuts/z_en_akindonuts.c | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 34212f0cf..94552ce33 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -567,7 +567,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_BOW; } else if (item == ITEM_OCARINA) { - INV_CONTENT(ITEM_OCARINA) = 0; + INV_CONTENT(ITEM_OCARINA) = ITEM_OCARINA; return ITEM_NONE; } else if (item == ITEM_MAGIC_BEANS) { diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 34472d563..a7400f67e 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -230,8 +230,8 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { s16 sceneNum; s32 j; s32 i; - u8 temp; - u8 temp2; + u8 slot; + u8 item; gSaveContext.save.daySpeed = 0; gSaveContext.save.daysElapsed = 0; @@ -306,26 +306,26 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } if (INV_CONTENT(ITEM_BOMB) == ITEM_BOMB) { - temp2 = INV_CONTENT(ITEM_BOMB); - if (AMMO(temp2) != 0) { + item = INV_CONTENT(ITEM_BOMB); + if (AMMO(item) != 0) { gSaveContext.eventInf[7] |= 2; } } if (INV_CONTENT(ITEM_NUT) == ITEM_NUT) { - temp2 = INV_CONTENT(ITEM_NUT); - if (AMMO(temp2) != 0) { + item = INV_CONTENT(ITEM_NUT); + if (AMMO(item) != 0) { gSaveContext.eventInf[7] |= 4; } } if (INV_CONTENT(ITEM_STICK) == ITEM_STICK) { - temp2 = INV_CONTENT(ITEM_STICK); - if (AMMO(temp2) != 0) { + item = INV_CONTENT(ITEM_STICK); + if (AMMO(item) != 0) { gSaveContext.eventInf[7] |= 8; } } if (INV_CONTENT(ITEM_BOW) == ITEM_BOW) { - temp2 = INV_CONTENT(ITEM_BOW); - if (AMMO(temp2) != 0) { + item = INV_CONTENT(ITEM_BOW); + if (AMMO(item) != 0) { gSaveContext.eventInf[7] |= 0x10; } } @@ -333,8 +333,8 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { for (i = 0; i < ARRAY_COUNT(D_801C67B0); i++) { if (D_801C67B0[i] != ITEM_NONE) { if ((gSaveContext.save.inventory.items[i] != ITEM_NONE) && (i != SLOT_PICTO_BOX)) { - temp2 = gSaveContext.save.inventory.items[i]; - AMMO(temp2) = 0; + item = gSaveContext.save.inventory.items[i]; + AMMO(item) = 0; } } } @@ -385,20 +385,20 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { } if (STOLEN_ITEM_1 == ITEM_BOTTLE) { - temp = SLOT(ITEM_BOTTLE); + slot = SLOT(ITEM_BOTTLE); for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[temp + i] = ITEM_BOTTLE; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE; break; } } } if (STOLEN_ITEM_2 == ITEM_BOTTLE) { - temp = SLOT(ITEM_BOTTLE); + slot = SLOT(ITEM_BOTTLE); for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { - gSaveContext.save.inventory.items[temp + i] = ITEM_BOTTLE; + if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { + gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE; break; } } diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 8a5b863fd..1c013c2a6 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -296,7 +296,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if ((u32)INV_CONTENT(ITEM_MAGIC_BEANS) != 10) { + if ((u32)INV_CONTENT(ITEM_MAGIC_BEANS) != ITEM_MAGIC_BEANS) { return 0; } From 727afd66a414b87b9a402d75339feef475486602 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:50:10 +1000 Subject: [PATCH 099/160] macro -> enum --- include/z64.h | 12 +++++++----- src/code/graph.c | 1 - 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/z64.h b/include/z64.h index a0b64b5f1..7403f025e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -62,11 +62,13 @@ #define Z_PRIORITY_DMAMGR 17 #define Z_PRIORITY_IRQMGR 18 -#define EQUIP_SLOT_B 0 -#define EQUIP_SLOT_C_LEFT 1 -#define EQUIP_SLOT_C_DOWN 2 -#define EQUIP_SLOT_C_RIGHT 3 -#define EQUIP_SLOT_UNUSED 4 +typedef enum { + /* 0 */ EQUIP_SLOT_B, + /* 1 */ EQUIP_SLOT_C_LEFT, + /* 2 */ EQUIP_SLOT_C_DOWN, + /* 3 */ EQUIP_SLOT_C_RIGHT, + /* 4 */ EQUIP_SLOT_UNUSED +} EquipSlot; typedef struct { /* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority diff --git a/src/code/graph.c b/src/code/graph.c index 8059d1f63..04ab72057 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "system_malloc.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" From ceec8127bf269a40cf54f789d71da96c282e088e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 15:59:36 +1000 Subject: [PATCH 100/160] More item cleanup... --- .../ovl_En_Akindonuts/z_en_akindonuts.c | 20 +++++++++---------- src/overlays/actors/ovl_En_Zos/z_en_zos.c | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 1c013c2a6..3b99ec85d 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -221,36 +221,36 @@ s16 func_80BECF6C(Path* path) { s32 func_80BECFBC(EnAkindonuts* this) { switch (ENAKINDONUTS_GET_3(&this->actor)) { case 0: - return 0x98; + return GI_DEED_SWAMP; case 1: - return 0x99; + return GI_DEED_MOUNTAIN; case 2: - return 0x9A; + return GI_DEED_OCEAN; case 3: Inventory_DeleteItem(ITEM_DEED_OCEAN, SLOT(ITEM_DEED_OCEAN)); - return 0x7; + return GI_RUPEE_HUGE; } - return 0; + return GI_NONE; } s32 func_80BED034(EnAkindonuts* this) { switch (ENAKINDONUTS_GET_3(&this->actor)) { case 0: - return 0x35; + return GI_MAGIC_BEANS; case 1: - return 0x1D; + return GI_BOMB_BAG_40; case 2: - return 0x5C; + return GI_POTION_GREEN; case 3: - return 0x5D; + return GI_POTION_BLUE; } - return 0; + return GI_NONE; } void func_80BED090(GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index 419d3325e..5bbd0efa9 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -232,7 +232,7 @@ void func_80BBB2C4(EnZos* this, GlobalContext* globalCtx) { } void func_80BBB354(EnZos* this, GlobalContext* globalCtx) { - s32 item; + s32 getItemId; if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; @@ -242,11 +242,11 @@ void func_80BBB354(EnZos* this, GlobalContext* globalCtx) { func_800B8500(&this->actor, globalCtx, 1000.0f, 1000.0f, -1); } else { if (gSaveContext.save.weekEventReg[39] & 0x20) { - item = GI_RUPEE_PURPLE; + getItemId = GI_RUPEE_PURPLE; } else { - item = GI_HEART_PIECE; + getItemId = GI_HEART_PIECE; } - Actor_PickUp(&this->actor, globalCtx, item, 10000.0f, 50.0f); + Actor_PickUp(&this->actor, globalCtx, getItemId, 10000.0f, 50.0f); } } From eb3378e2056219a35a40d23348d6dc4dab93012b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 21 Apr 2022 22:19:13 +1000 Subject: [PATCH 101/160] missing/wrong quest items --- src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c | 4 ++-- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 321468424..4270ae46f 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -98,7 +98,7 @@ void EnBomBowlMan_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_2C8 = 80.0f; if ((gSaveContext.save.entranceIndex == 0xD220) && (gSaveContext.save.weekEventReg[73] & 0x80) && - !CHECK_QUEST_ITEM(ITEM_BOTTLE)) { + !CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { this->unk_2D6 = this->actor.cutscene; if (this->unk_2D6 == 0) { Actor_MarkForDeath(&this->actor); @@ -261,7 +261,7 @@ void func_809C4DA4(EnBomBowlMan* this, GlobalContext* globalCtx) { func_809C493C(this, 3, 1.0f); this->unk_2D4 = this->actor.yawTowardsPlayer; this->unk_2C0 = 2; - if ((player->transformation == PLAYER_FORM_HUMAN) && CHECK_QUEST_ITEM(ITEM_BOTTLE)) { + if ((player->transformation == PLAYER_FORM_HUMAN) && CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { this->unk_2C0 = 4; } break; diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 440ac3578..440bfef00 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -740,7 +740,7 @@ void EnHorse_Init(Actor* thisx, GlobalContext* globalCtx2) { this->stateFlags = ENHORSE_FLAG_19 | ENHORSE_CANT_JUMP | ENHORSE_UNRIDEABLE; } else if (this->actor.params == ENHORSE_8) { this->stateFlags = ENHORSE_FLAG_19 | ENHORSE_CANT_JUMP; - if (CHECK_QUEST_ITEM(14)) { + if (CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { this->stateFlags &= ~ENHORSE_CANT_JUMP; this->stateFlags |= ENHORSE_FLAG_26; } From bc2542bd51052cc3647f4e1faff744da0885d431 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 22 Apr 2022 10:04:12 +1000 Subject: [PATCH 102/160] Next PR Review --- include/z64item.h | 5 +- src/code/z_lifemeter.c | 6 +- src/code/z_parameter.c | 56 ++++++++++--------- src/code/z_sram_NES.c | 4 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 2 +- 5 files changed, 41 insertions(+), 32 deletions(-) diff --git a/include/z64item.h b/include/z64item.h index 29ad62f85..4073a8025 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -61,7 +61,7 @@ typedef enum { /* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook /* 0x13 */ QUEST_SKULL_TOKEN, /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, - /* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph is saved + /* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph box is saved /* 0x1C */ QUEST_HEART_PIECE = 0x1C, /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E } QuestItem; @@ -285,6 +285,9 @@ typedef enum { /* 0xFF */ ITEM_NONE = 0xFF } ItemID; +#define BOTTLE_FIRST 0 +#define BOTTLE_MAX 6 + typedef enum { /* 0x00 */ GI_NONE, /* 0x01 */ GI_RUPEE_GREEN, diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index 73ba326b5..fe446f1a4 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -416,13 +416,13 @@ void LifeMeter_UpdateSizeAndBeep(GlobalContext* globalCtx) { u32 LifeMeter_IsCritical(void) { s16 criticalThreshold; - if (gSaveContext.save.playerData.healthCapacity <= 80) { // healthCapacity <= 5 hearts? + if (gSaveContext.save.playerData.healthCapacity <= 80) { // healthCapacity <= 5 hearts criticalThreshold = 16; - } else if (gSaveContext.save.playerData.healthCapacity <= 160) { // healthCapacity <= 10 hearts? + } else if (gSaveContext.save.playerData.healthCapacity <= 160) { // healthCapacity <= 10 hearts criticalThreshold = 24; - } else if (gSaveContext.save.playerData.healthCapacity <= 240) { // healthCapacity <= 15 hearts? + } else if (gSaveContext.save.playerData.healthCapacity <= 240) { // healthCapacity <= 15 hearts criticalThreshold = 32; } else { criticalThreshold = 44; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 94552ce33..db06368b5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,5 +1,6 @@ #include "global.h" #include "interface/parameter_static/parameter_static.h" +#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" typedef struct { /* 0x00 */ u8 scene; @@ -139,21 +140,33 @@ u16 sCUpTimer = 0; s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; s16 sMagicBarOutlinePrimBlue = 255; - s16 D_801BF8AC = 2; // sMagicBorderRatio - s16 D_801BF8B0 = 1; s16 sExtraItemBases[] = { - ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, - ITEM_BOMB, ITEM_BOW, ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, - ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, + ITEM_STICK, // ITEM_STICKS_5 + ITEM_STICK, // ITEM_STICKS_10 + ITEM_NUT, // ITEM_NUTS_5 + ITEM_NUT, // ITEM_NUTS_10 + ITEM_BOMB, // ITEM_BOMBS_5 + ITEM_BOMB, // ITEM_BOMBS_10 + ITEM_BOMB, // ITEM_BOMBS_20 + ITEM_BOMB, // ITEM_BOMBS_30 + ITEM_BOW, // ITEM_ARROWS_10 + ITEM_BOW, // ITEM_ARROWS_30 + ITEM_BOW, // ITEM_ARROWS_40 + ITEM_BOMBCHU, // ITEM_ARROWS_50 !@bug this data is missing an ITEM_BOW, offsetting the rest by 1 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_20 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_10 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_1 + ITEM_STICK, // ITEM_BOMBCHUS_5 + ITEM_STICK, // ITEM_STICK_UPGRADE_20 + ITEM_NUT, // ITEM_STICK_UPGRADE_30 + ITEM_NUT, // ITEM_NUT_UPGRADE_30 }; s16 D_801BF8DC = 0; - s16 D_801BF8E0 = 0; - s16 D_801BF8E4 = 0; OSTime D_801BF8E8 = 0; @@ -169,15 +182,10 @@ u8 D_801BF968 = false; u8 D_801BF96C = false; s16 D_801BF970 = 99; - s16 D_801BF974 = 0; - s16 D_801BF978 = 10; - s16 D_801BF97C = 255; - f32 D_801BF980 = 1.0f; - s32 D_801BF984 = 0; // Display List @@ -290,12 +298,10 @@ void func_8010EBA0(s16 timer, s16 timerId); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80112C0C.s") -s16 sAmmoRefillCounts[] = { 5, 10, 20, 30 }; +s16 sAmmoRefillCounts[] = { 5, 10, 20, 30 }; // Sticks, nuts, bombs s16 sArrowRefillCounts[] = { 10, 30, 40, 50 }; s16 sBombchuRefillCounts[] = { 20, 10, 1, 5 }; -s16 sRupeeRefillCounts[] = { - 1, 5, 10, 20, 50, 100, 200, -}; +s16 sRupeeRefillCounts[] = { 1, 5, 10, 20, 50, 100, 200 }; u8 Item_Give(GlobalContext* globalCtx, u8 item) { Player* player = GET_PLAYER(globalCtx); u8 i; @@ -612,7 +618,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_LONGSHOT) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; return ITEM_NONE; @@ -624,7 +630,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { (item == ITEM_HYLIAN_LOACH)) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -635,7 +641,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_BOTTLE) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -666,7 +672,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { if (item == ITEM_HOT_SPRING_WATER) { func_8010EBA0(60, i); @@ -691,7 +697,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } else { - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -854,13 +860,13 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } bottleSlot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { return ITEM_NONE; } } } else { - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_NONE) { return ITEM_NONE; } @@ -977,7 +983,7 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { Interface_LoadItemIconImpl(globalCtx, btn); - globalCtx->pauseCtx.cursorItem[0] = item; + globalCtx->pauseCtx.cursorItem[PAUSE_0] = item; gSaveContext.buttonStatus[btn] = BTN_ENABLED; if (item == ITEM_HOT_SPRING_WATER) { @@ -990,7 +996,7 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { u8 btn; u8 i; - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index a7400f67e..63c3a1571 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -386,7 +386,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { if (STOLEN_ITEM_1 == ITEM_BOTTLE) { slot = SLOT(ITEM_BOTTLE); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE; break; @@ -396,7 +396,7 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { if (STOLEN_ITEM_2 == ITEM_BOTTLE) { slot = SLOT(ITEM_BOTTLE); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = ITEM_BOTTLE; break; diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index e0fd2ef89..b778a2dad 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -981,7 +981,7 @@ void func_80BACA14(EnSuttari* this, GlobalContext* globalCtx) { this->actionFunc = func_80BACBB0; } } else if ((player->transformation == PLAYER_FORM_HUMAN) && - GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != EQUIP_VALUE_SWORD_NONE) { + (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != EQUIP_VALUE_SWORD_NONE)) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { this->unk3F2 = this->unk2DC.y; func_80BAAB78(this, globalCtx); From b42d6b08742b55754c9783471b2eb48ebe828b5f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 22 Apr 2022 10:11:56 +1000 Subject: [PATCH 103/160] Revert Interface_AddMagic to Parameter_AddMagic --- include/functions.h | 2 +- src/code/z_parameter.c | 6 +++--- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 2 +- src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c | 2 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 2 +- src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c | 2 +- tools/disasm/functions.txt | 2 +- tools/namefixer.py | 1 - tools/sizes/code_functions.csv | 2 +- 10 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/functions.h b/include/functions.h index 90d9ab6cf..c1ef4ac7a 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1934,7 +1934,7 @@ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); void Inventory_ChangeAmmo(s16 item, s16 ammoChange); -void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); +void Parameter_AddMagic(GlobalContext* globalCtx, s16 arg1); void func_80115D5C(GameState* gamestate); // void func_80115DB4(void); // void func_80116088(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index db06368b5..91ddd0e23 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -596,7 +596,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_SMALL) { - Interface_AddMagic(globalCtx, 0x18); + Parameter_AddMagic(globalCtx, 0x18); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; @@ -604,7 +604,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_LARGE) { - Interface_AddMagic(globalCtx, 0x30); + Parameter_AddMagic(globalCtx, 0x30); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; @@ -1138,7 +1138,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_AddMagic.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Parameter_AddMagic.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/func_80115D5C.s") diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index fcaf6063d..7889826e7 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -675,7 +675,7 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { !func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) { Health_ChangeBy(globalCtx, 0x80); if (this->fairyFlags & 0x200) { - Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + + Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); } gSaveContext.jinxTimer = 0; diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 605edd6d4..3acd2adf5 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -481,7 +481,7 @@ void func_80A3A610(EnElfgrp* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->unk_144 == 60) { - Interface_AddMagic(globalCtx, + Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); gSaveContext.healthAccumulator = 320; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 0e51cb6db..6f8ce837f 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -654,7 +654,7 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) { s16 temp = gSaveContext.unk_3F30; - Interface_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); + Parameter_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); } func_80962F10(this); diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 22c34cf72..5efd21738 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -727,7 +727,7 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) { globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; - Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + + Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); } else { this->actionFunc = func_80B51760; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 8dfdeaeb8..6952f10c2 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -433,7 +433,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) { gSaveContext.nextTransition = 2; func_801477B4(globalCtx); func_800B7298(globalCtx, &this->actor, 7); - Interface_AddMagic(globalCtx, + Parameter_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 48) + 48); gSaveContext.eventInf[1] &= (u8)~1; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index b2f5caebc..81ea81063 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2134,7 +2134,7 @@ 0x801159C0:("Health_GiveHearts",), 0x801159EC:("Rupees_ChangeBy",), 0x80115A14:("Inventory_ChangeAmmo",), - 0x80115D14:("Interface_AddMagic",), + 0x80115D14:("Parameter_AddMagic",), 0x80115D5C:("func_80115D5C",), 0x80115DB4:("func_80115DB4",), 0x80116088:("func_80116088",), diff --git a/tools/namefixer.py b/tools/namefixer.py index 4a4df0e2e..5e0114881 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -437,7 +437,6 @@ wordReplace = { "func_801159c0": "Health_GiveHearts", "func_801159EC": "Rupees_ChangeBy", "func_80115A14": "Inventory_ChangeAmmo", - "Parameter_AddMagic": "Interface_AddMagic", "func_8017D2FC": "Math3D_LineSegVsPlane", "func_8013A7C0": "SubS_FindDoor", "func_8013E640": "SubS_FindActorCustom", diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 7cf6c6034..e5cf41071 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1648,7 +1648,7 @@ asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908, asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 -asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 +asm/non_matchings/code/z_parameter/Parameter_AddMagic.s,Parameter_AddMagic,0x80115D14,0x12 asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 From 39978d01c6f39d9e389b22c44586ddb1472ff846 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 22 Apr 2022 20:30:09 +1000 Subject: [PATCH 104/160] Remove QUEST_HEART_CONTAINER --- include/z64item.h | 3 +-- src/code/z_parameter.c | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/z64item.h b/include/z64item.h index 4073a8025..c4c13a614 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -62,8 +62,7 @@ typedef enum { /* 0x13 */ QUEST_SKULL_TOKEN, /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, /* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph box is saved - /* 0x1C */ QUEST_HEART_PIECE = 0x1C, - /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E + /* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C } QuestItem; typedef enum { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 91ddd0e23..fdf788107 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -326,9 +326,9 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { - gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE); - if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (1 << QUEST_HEART_CONTAINER)) { - gSaveContext.save.inventory.questItems ^= (1 << QUEST_HEART_CONTAINER); + gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT); + if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (4 << QUEST_HEART_PIECE_COUNT)) { + gSaveContext.save.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT); gSaveContext.save.playerData.healthCapacity += 0x10; gSaveContext.save.playerData.health += 0x10; } From 04ca02b18c941c82e399bdcf6d528a0da814ef73 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 22 Apr 2022 20:34:19 +1000 Subject: [PATCH 105/160] Fix bss --- src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c index 16ac7e8e9..59c7599d2 100644 --- a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c +++ b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c @@ -4,6 +4,7 @@ * Description: Breakable Pot With Grass */ +#include "prevent_bss_reordering.h" #include "z_obj_flowerpot.h" #include "objects/object_flowerpot/object_flowerpot.h" From 040f01cde4d7360ef1463047fe1ba26c338964ea Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 11:50:36 +1000 Subject: [PATCH 106/160] Sync with Open PR --- include/z64item.h | 33 ++- src/boot_O2_g3/z_std_dma.c | 1 - src/code/code_8012EC80.c | 12 +- src/code/graph.c | 1 - src/code/z_parameter.c | 266 ++++++++---------- src/code/z_sram_NES.c | 16 +- .../ovl_En_Akindonuts/z_en_akindonuts.c | 4 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 4 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 4 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 2 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 2 +- src/overlays/actors/ovl_En_Rr/z_en_rr.c | 4 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 3 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 2 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 4 +- 15 files changed, 170 insertions(+), 188 deletions(-) diff --git a/include/z64item.h b/include/z64item.h index f4225ac45..35661c1f6 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -7,11 +7,28 @@ // TODO fill out these enums typedef enum { - /* 0x0 */ EQUIP_SWORD, - /* 0x1 */ EQUIP_SHIELD, - /* 0x2 */ EQUIP_TUNIC // Remnant of OoT + /* 0x0 */ EQUIP_TYPE_SWORD, + /* 0x1 */ EQUIP_TYPE_SHIELD, + /* 0x2 */ EQUIP_TYPE_TUNIC, // Remnant of OoT + /* 0x2 */ EQUIP_TYPE_MAX } EquipmentType; +typedef enum { + /* 0 */ EQUIP_VALUE_SWORD_NONE, + /* 1 */ EQUIP_VALUE_SWORD_KOKIRI, + /* 2 */ EQUIP_VALUE_SWORD_RAZOR, + /* 3 */ EQUIP_VALUE_SWORD_GILDED, + /* 4 */ EQUIP_VALUE_SWORD_DIETY, + /* 5 */ EQUIP_VALUE_SWORD_MAX, +} EquipValueSword; + +typedef enum { + /* 0 */ EQUIP_VALUE_SHIELD_NONE, + /* 1 */ EQUIP_VALUE_SHIELD_HERO, + /* 2 */ EQUIP_VALUE_SHIELD_MIRROR, + /* 3 */ EQUIP_VALUE_SHIELD_MAX +} EquipValueShield; + typedef enum { /* 0x00 */ UPG_QUIVER, /* 0x01 */ UPG_BOMB_BAG, @@ -46,8 +63,7 @@ typedef enum { /* 0x13 */ QUEST_SKULL_TOKEN, /* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18, /* 0x19 */ QUEST_PICTOBOX, // Photo taken from PictoBox - /* 0x1C */ QUEST_HEART_PIECE = 0x1C, - /* 0x1E */ QUEST_HEART_CONTAINER = 0x1E + /* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C, } QuestItem; typedef enum { @@ -113,7 +129,7 @@ typedef enum { /* 0x07 */ ITEM_BOMBCHU, /* 0x08 */ ITEM_STICK, /* 0x09 */ ITEM_NUT, - /* 0x0A */ ITEM_BEAN, + /* 0x0A */ ITEM_MAGIC_BEANS, /* 0x0B */ ITEM_SLINGSHOT, /* 0x0C */ ITEM_POWDER_KEG, /* 0x0D */ ITEM_PICTO_BOX, @@ -267,7 +283,10 @@ typedef enum { /* 0xA3 */ ITEM_SEA_HORSE_CAUGHT, /* 0xFD */ ITEM_UNK_FD = 0xFD, /* 0xFF */ ITEM_NONE = 0xFF -} ItemID; +} ItemId; + +#define BOTTLE_FIRST 0 +#define BOTTLE_MAX 6 typedef enum { /* 0x00 */ GI_NONE, diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index 10d84dcb0..d9c7fb221 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" u32 sDmaMgrDmaBuffSize = 0x2000; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 9e0a9b516..55dcd7b2b 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -107,7 +107,7 @@ void* gItemIcons[] = { 0x08007000, // ITEM_BOMBCHU 0x08008000, // ITEM_STICK 0x08009000, // ITEM_NUT - 0x0800A000, // ITEM_BEAN + 0x0800A000, // ITEM_MAGIC_BEANS 0x0800B000, // ITEM_SLINGSHOT 0x0800C000, // ITEM_POWDER_KEG 0x0800D000, // ITEM_PICTO_BOX @@ -242,7 +242,7 @@ u8 gItemSlots[] = { SLOT_BOMBCHU, // ITEM_BOMBCHU SLOT_STICK, // ITEM_STICK SLOT_NUT, // ITEM_NUT - SLOT_MAGIC_BEANS, // ITEM_BEAN + SLOT_MAGIC_BEANS, // ITEM_MAGIC_BEANS SLOT_TRADE_KEY_MAMA, // ITEM_SLINGSHOT SLOT_POWDER_KEG, // ITEM_POWDER_KEG SLOT_PICTO_BOX, // ITEM_PICTO_BOX @@ -322,7 +322,7 @@ s16 gItemPrices[] = { 0, // ITEM_BOMBCHU 0, // ITEM_STICK 0, // ITEM_NUT - 0, // ITEM_BEAN + 0, // ITEM_MAGIC_BEANS 0, // ITEM_SLINGSHOT 0, // ITEM_POWDER_KEG 0, // ITEM_PICTO_BOX @@ -495,7 +495,7 @@ s32 Inventory_GetBtnBItem(GlobalContext* globalCtx) { * Only changes shield */ void Inventory_ChangeEquipment(s16 value) { - SET_EQUIP_VALUE(EQUIP_SHIELD, value); + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, value); } /** @@ -504,8 +504,8 @@ void Inventory_ChangeEquipment(s16 value) { u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) { Player* player = GET_PLAYER(globalCtx); - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { - SET_EQUIP_VALUE(EQUIP_SHIELD, 0); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, EQUIP_VALUE_SHIELD_NONE); Player_SetEquipmentData(globalCtx, player); return true; } diff --git a/src/code/graph.c b/src/code/graph.c index ca18a9049..b2de2ae38 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "system_malloc.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 52cf48744..27b3d69b8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,5 +1,6 @@ #include "global.h" #include "interface/parameter_static/parameter_static.h" +#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" void Map_Update(GlobalContext* globalCtx); u8 func_800FE4A8(); @@ -17,11 +18,9 @@ typedef struct { /* 0x03 */ u8 flags3; } RestrictionFlags; -// bss Input D_801F5850[4]; -// data -static RestrictionFlags sRestrictionFlags[] = { +RestrictionFlags sRestrictionFlags[] = { { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, { SCENE_UNSET_1, 0x00, 0x00, 0x00 }, { SCENE_UNSET_2, 0x00, 0x00, 0x00 }, @@ -140,7 +139,7 @@ static RestrictionFlags sRestrictionFlags[] = { s16 D_801BF884 = 0; // pictoBox related s16 D_801BF888 = false; // pictoBox related -s16 sHBAScoreTier = 0; +s16 sHBAScoreTier = 0; // Remnant of OoT, non-functional u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; @@ -150,21 +149,33 @@ u16 sCUpTimer = 0; s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; s16 sMagicBarOutlinePrimBlue = 255; - s16 D_801BF8AC = 2; // sMagicBorderRatio - s16 D_801BF8B0 = 1; s16 sExtraItemBases[] = { - ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, ITEM_BOMB, ITEM_BOMB, ITEM_BOMB, - ITEM_BOMB, ITEM_BOW, ITEM_BOW, ITEM_BOW, ITEM_BOMBCHU, ITEM_BOMBCHU, ITEM_BOMBCHU, - ITEM_BOMBCHU, ITEM_STICK, ITEM_STICK, ITEM_NUT, ITEM_NUT, + ITEM_STICK, // ITEM_STICKS_5 + ITEM_STICK, // ITEM_STICKS_10 + ITEM_NUT, // ITEM_NUTS_5 + ITEM_NUT, // ITEM_NUTS_10 + ITEM_BOMB, // ITEM_BOMBS_5 + ITEM_BOMB, // ITEM_BOMBS_10 + ITEM_BOMB, // ITEM_BOMBS_20 + ITEM_BOMB, // ITEM_BOMBS_30 + ITEM_BOW, // ITEM_ARROWS_10 + ITEM_BOW, // ITEM_ARROWS_30 + ITEM_BOW, // ITEM_ARROWS_40 + ITEM_BOMBCHU, // ITEM_ARROWS_50 !@bug this data is missing an ITEM_BOW, offsetting the rest by 1 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_20 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_10 + ITEM_BOMBCHU, // ITEM_BOMBCHUS_1 + ITEM_STICK, // ITEM_BOMBCHUS_5 + ITEM_STICK, // ITEM_STICK_UPGRADE_20 + ITEM_NUT, // ITEM_STICK_UPGRADE_30 + ITEM_NUT, // ITEM_NUT_UPGRADE_30 }; s16 D_801BF8DC = 0; - s16 D_801BF8E0 = 0; - s16 D_801BF8E4 = 0; OSTime D_801BF8E8 = 0; @@ -180,15 +191,10 @@ u8 D_801BF968 = false; u8 D_801BF96C = false; s16 D_801BF970 = 99; - s16 D_801BF974 = 0; - s16 D_801BF978 = 10; - s16 D_801BF97C = 255; - f32 D_801BF980 = 1.0f; - s32 D_801BF984 = 0; // Display List @@ -204,63 +210,17 @@ Gfx D_801BF988[] = { }; s16 D_801BF9B0 = 0; - -f32 D_801BF9B4[] = { - 100.0f, - 109.0f, -}; - -s16 D_801BF9BC[] = { - 0x226, - 0x2A8, - 0x2A8, - 0x2A8, -}; - -s16 D_801BF9C4[] = { - 0x9E, - 0x9B, -}; - -s16 D_801BF9C8[] = { - 0x17, - 0x16, -}; - -f32 D_801BF9CC[] = { - -380.0f, - -350.0f, -}; - -s16 D_801BF9D4[] = { - 0xA7, - 0xE3, -}; - -s16 D_801BF9D8[] = { - 0xF9, - 0x10F, -}; - -s16 D_801BF9DC[] = { - 0x11, - 0x12, -}; - -s16 D_801BF9E0[] = { - 0x22, - 0x12, -}; - -s16 D_801BF9E4[] = { - 0x23F, - 0x26C, -}; - -s16 D_801BF9E8[] = { - 0x26C, - 0x26C, -}; +f32 D_801BF9B4[] = { 100.0f, 109.0f }; +s16 D_801BF9BC[] = { 0x226, 0x2A8, 0x2A8, 0x2A8 }; +s16 D_801BF9C4[] = { 0x9E, 0x9B }; +s16 D_801BF9C8[] = { 0x17, 0x16 }; +f32 D_801BF9CC[] = { -380.0f, -350.0f }; +s16 D_801BF9D4[] = { 0xA7, 0xE3 }; +s16 D_801BF9D8[] = { 0xF9, 0x10F }; +s16 D_801BF9DC[] = { 0x11, 0x12 }; +s16 D_801BF9E0[] = { 0x22, 0x12 }; +s16 D_801BF9E4[] = { 0x23F, 0x26C }; +s16 D_801BF9E8[] = { 0x26C, 0x26C }; s16 sFinalHoursClockDigitsRed = 0; s16 sFinalHoursClockFrameEnvRed = 0; @@ -411,22 +371,22 @@ Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidt } s16 D_801BFA04[] = { - 0xFFF2, 0xFFF2, 0xFFE8, 0xFFF8, 0xFFF4, 0xFFF4, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFF8, 0xFFF4, 0, + -14, -14, -24, -8, -12, -12, -7, -8, -7, -8, -12, 0, }; s16 D_801BFA1C[] = { 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, }; s16 D_801BFA34[] = { - 0xE, 0xE, 0x8, 0x18, 0xFFAE, 0xFFAE, 0x3A, 0x3B, 0x3A, 0x3B, 0x20, 0, + 14, 14, 8, 24, -82, -82, 58, 59, 58, 59, 32, 0, }; s16 D_801BFA4C[] = { 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, }; s16 D_801BFA64[] = { - 0xFFC3, 0xFFD3, 0x001D, 0x0068, 0xFF8B, 0xFFD6, 0x0020, 0x0037, + -61, -45, 29, 104, -117, -42, 32, 55, }; s16 D_801BFA74[] = { - 0x0001, 0xFFBA, 0xFF9D, 0xFFBA, 0x0047, 0x0065, 0x0048, 0x0001, + 1, -70, -99, -70, 71, 101, 72, 1, }; void Interface_InitVertices(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -1728,13 +1688,13 @@ void func_80110038(GlobalContext* globalCtx) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == 0) { gSaveContext.buttonStatus[0] = BTN_DISABLED; } if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { gSaveContext.buttonStatus[0] = - GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) + ITEM_SWORD_KOKIRI - 1; } BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; @@ -1773,7 +1733,7 @@ void func_80110038(GlobalContext* globalCtx) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == 0) { gSaveContext.buttonStatus[0] = BTN_DISABLED; } @@ -2263,9 +2223,10 @@ void func_80112C0C(GlobalContext* globalCtx, u16 flag) { } } -s16 sAmmoRefillCounts[] = { - 5, 10, 20, 30, 10, 30, 40, 50, 20, 10, 1, 5, 1, 5, 10, 20, 50, 100, 200, 0, -}; +s16 sAmmoRefillCounts[] = { 5, 10, 20, 30 }; // Sticks, nuts, bombs +s16 sArrowRefillCounts[] = { 10, 30, 40, 50 }; +s16 sBombchuRefillCounts[] = { 20, 10, 1, 5 }; +s16 sRupeeRefillCounts[] = { 1, 5, 10, 20, 50, 100, 200 }; u8 Item_Give(GlobalContext* globalCtx, u8 item) { Player* player = GET_PLAYER(globalCtx); u8 i; @@ -2290,9 +2251,9 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { - gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE); - if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (1 << QUEST_HEART_CONTAINER)) { - gSaveContext.save.inventory.questItems ^= (1 << QUEST_HEART_CONTAINER); + gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT); + if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (4 << QUEST_HEART_PIECE_COUNT)) { + gSaveContext.save.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT); gSaveContext.save.playerData.healthCapacity += 0x10; gSaveContext.save.playerData.health += 0x10; } @@ -2308,17 +2269,17 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_GILDED)) { - SET_EQUIP_VALUE(EQUIP_SWORD, item - ITEM_SWORD_KOKIRI + 1); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, item - ITEM_SWORD_KOKIRI + EQUIP_VALUE_SWORD_KOKIRI); BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = item; - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); if (item == ITEM_SWORD_RAZOR) { gSaveContext.save.playerData.swordHealth = 100; } return ITEM_NONE; } else if ((item >= ITEM_SHIELD_HERO) && (item <= ITEM_SHIELD_MIRROR)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + 1)) { - SET_EQUIP_VALUE(EQUIP_SHIELD, item - ITEM_SHIELD_HERO + 1); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != (u16)(item - ITEM_SHIELD_HERO + EQUIP_VALUE_SHIELD_HERO)) { + SET_EQUIP_VALUE(EQUIP_TYPE_SHIELD, item - ITEM_SHIELD_HERO + EQUIP_VALUE_SHIELD_HERO); Player_SetEquipmentData(globalCtx, player); return ITEM_NONE; } @@ -2349,6 +2310,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); } } + } else if (item == ITEM_QUIVER_40) { Inventory_ChangeUpgrade(UPG_QUIVER, 2); INV_CONTENT(ITEM_BOW) = ITEM_BOW; @@ -2437,6 +2399,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { AMMO(ITEM_STICK) = CUR_CAPACITY(UPG_STICKS); } } + } else if ((item == ITEM_STICKS_5) || (item == ITEM_STICKS_10)) { if (INV_CONTENT(ITEM_STICK) != ITEM_STICK) { Inventory_ChangeUpgrade(UPG_STICKS, 1); @@ -2513,7 +2476,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if ((item >= ITEM_BOMBCHUS_20) && (item <= ITEM_BOMBCHUS_5)) { if (gSaveContext.save.inventory.items[SLOT_BOMBCHU] != ITEM_BOMBCHU) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; - AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]; + AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20]; if (AMMO(ITEM_BOMBCHU) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); @@ -2521,13 +2484,13 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - if ((AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_20 + 8]) > CUR_CAPACITY(UPG_BOMB_BAG)) { + if ((AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_20]) > CUR_CAPACITY(UPG_BOMB_BAG)) { AMMO(ITEM_BOMBCHU) = CUR_CAPACITY(UPG_BOMB_BAG); } return ITEM_NONE; } else if ((item >= ITEM_ARROWS_10) && (item <= ITEM_ARROWS_50)) { - AMMO(ITEM_BOW) += sAmmoRefillCounts[item - ITEM_ARROWS_10 + 4]; + AMMO(ITEM_BOW) += sArrowRefillCounts[item - ITEM_ARROWS_10]; if ((AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) || (AMMO(ITEM_BOW) < 0)) { AMMO(ITEM_BOW) = CUR_CAPACITY(UPG_QUIVER); @@ -2535,17 +2498,17 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_BOW; } else if (item == ITEM_OCARINA) { - INV_CONTENT(ITEM_OCARINA) = 0; + INV_CONTENT(ITEM_OCARINA) = ITEM_OCARINA; return ITEM_NONE; - } else if (item == ITEM_BEAN) { - if (INV_CONTENT(ITEM_BEAN) == ITEM_NONE) { + } else if (item == ITEM_MAGIC_BEANS) { + if (INV_CONTENT(ITEM_MAGIC_BEANS) == ITEM_NONE) { INV_CONTENT(item) = item; - AMMO(ITEM_BEAN) = 1; - } else if (AMMO(ITEM_BEAN) < 20) { - AMMO(ITEM_BEAN)++; + AMMO(ITEM_MAGIC_BEANS) = 1; + } else if (AMMO(ITEM_MAGIC_BEANS) < 20) { + AMMO(ITEM_MAGIC_BEANS)++; } else { - AMMO(ITEM_BEAN) = 20; + AMMO(ITEM_MAGIC_BEANS) = 20; } return ITEM_NONE; @@ -2574,13 +2537,13 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if ((item >= ITEM_RUPEE_GREEN) && (item <= ITEM_RUPEE_HUGE)) { - Rupees_ChangeBy(sAmmoRefillCounts[item - ITEM_RUPEE_GREEN + 12]); // TODO: Different to OoT? Or wrong. + Rupees_ChangeBy(sRupeeRefillCounts[item - ITEM_RUPEE_GREEN]); return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = ITEM_POTION_RED; return ITEM_NONE; @@ -2592,7 +2555,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { (item == ITEM_HYLIAN_LOACH)) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -2603,7 +2566,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } else if (item == ITEM_BOTTLE) { slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -2634,24 +2597,24 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } slot = SLOT(item); - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { if (item == ITEM_HOT_SPRING_WATER) { func_8010EBA0(60, i); } - if ((slot + i) == C_SLOT_EQUIP(0, 1)) { + if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) = item; - Interface_LoadItemIconImpl(globalCtx, 1); - gSaveContext.buttonStatus[1] = BTN_ENABLED; - } else if ((slot + i) == C_SLOT_EQUIP(0, 2)) { + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_LEFT); + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_DOWN)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) = item; - Interface_LoadItemIconImpl(globalCtx, 2); - gSaveContext.buttonStatus[2] = BTN_ENABLED; - } else if ((slot + i) == C_SLOT_EQUIP(0, 3)) { + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_DOWN); + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + } else if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_RIGHT)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) = item; - Interface_LoadItemIconImpl(globalCtx, 3); - gSaveContext.buttonStatus[3] = BTN_ENABLED; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_RIGHT); + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } gSaveContext.save.inventory.items[slot + i] = item; @@ -2659,7 +2622,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } else { - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_NONE) { gSaveContext.save.inventory.items[slot + i] = item; return ITEM_NONE; @@ -2671,7 +2634,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { temp = INV_CONTENT(item); INV_CONTENT(item) = item; if ((item >= ITEM_MOON_TEAR) && (item <= ITEM_PENDANT_MEMORIES) && (temp != ITEM_NONE)) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (temp == GET_CUR_FORM_BTN_ITEM(i)) { SET_CUR_FORM_BTN_ITEM(i, item); Interface_LoadItemIconImpl(globalCtx, i); @@ -2690,7 +2653,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { u8 Item_CheckObtainabilityImpl(u8 item) { s16 i; u8 slot; - u8 temp; + u8 bottleSlot; slot = SLOT(item); if (item >= ITEM_STICKS_5) { @@ -2762,7 +2725,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if ((item >= ITEM_BOMB_BAG_30) && (item <= ITEM_WALLET_GIANT)) { return ITEM_NONE; - } else if (item == ITEM_BEAN) { + } else if (item == ITEM_MAGIC_BEANS) { return ITEM_NONE; } else if (item == ITEM_POWDER_KEG) { @@ -2802,7 +2765,7 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if (((item >= ITEM_POTION_RED) && (item <= ITEM_OBABA_DRINK)) || (item == ITEM_CHATEAU_2) || (item == ITEM_MILK) || (item == ITEM_GOLD_DUST_2) || (item == ITEM_HYLIAN_LOACH_2) || (item == ITEM_SEA_HORSE_CAUGHT)) { - temp = SLOT(item); + bottleSlot = SLOT(item); if ((item != ITEM_MILK_BOTTLE) && (item != ITEM_MILK_HALF)) { if (item == ITEM_CHATEAU_2) { @@ -2820,16 +2783,16 @@ u8 Item_CheckObtainabilityImpl(u8 item) { } else if (item == ITEM_SEA_HORSE_CAUGHT) { item = ITEM_SEA_HORSE; } - temp = SLOT(item); + bottleSlot = SLOT(item); - for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_BOTTLE) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { return ITEM_NONE; } } } else { - for (i = 0; i < 6; i++) { - if (gSaveContext.save.inventory.items[temp + i] == ITEM_NONE) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { + if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_NONE) { return ITEM_NONE; } } @@ -2845,12 +2808,12 @@ u8 Item_CheckObtainability(u8 item) { return Item_CheckObtainabilityImpl(item); } -void Inventory_DeleteItem(s16 item, s16 invSlot) { +void Inventory_DeleteItem(s16 item, s16 slot) { s16 btn; - gSaveContext.save.inventory.items[invSlot] = ITEM_NONE; + gSaveContext.save.inventory.items[slot] = ITEM_NONE; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); @@ -2861,7 +2824,7 @@ void Inventory_DeleteItem(s16 item, s16 invSlot) { void Inventory_UnequipItem(s16 item) { s16 btn; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == item) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_NONE); SET_CUR_FORM_BTN_SLOT(btn, SLOT_NONE); @@ -2876,7 +2839,7 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u8 oldItem, u8 newItem) { if (gSaveContext.save.inventory.items[i] == oldItem) { gSaveContext.save.inventory.items[i] = newItem; - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) == oldItem) { SET_CUR_FORM_BTN_ITEM(i, newItem); Interface_LoadItemIconImpl(globalCtx, i); @@ -2900,19 +2863,17 @@ void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { ? 1 : gSaveContext.save.playerForm >> 1) == 0) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_DEITY; - } else { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == 0) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; - } else { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = - GET_CUR_EQUIP_VALUE(EQUIP_SWORD) + ITEM_SWORD_KOKIRI - 1; - } + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_SWORD_DEITY) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; + } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) - EQUIP_VALUE_SWORD_KOKIRI + ITEM_SWORD_KOKIRI; } } } - for (btn = 0; btn < 1; btn++) { + for (btn = EQUIP_SLOT_B; btn <= EQUIP_SLOT_B; btn++) { if ((GET_CUR_FORM_BTN_ITEM(btn) != ITEM_NONE) && (GET_CUR_FORM_BTN_ITEM(btn) != ITEM_UNK_FD)) { Interface_LoadItemIconImpl(globalCtx, btn); } @@ -2947,11 +2908,11 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn) { Interface_LoadItemIconImpl(globalCtx, btn); - globalCtx->pauseCtx.cursorItem[0] = item; + globalCtx->pauseCtx.cursorItem[PAUSE_0] = item; gSaveContext.buttonStatus[btn] = BTN_ENABLED; if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - 18); + func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - SLOT_BOTTLE_1); } } @@ -2960,9 +2921,9 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { u8 btn; u8 i; - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[bottleSlot + i] == ITEM_FAIRY) { - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_ITEM(btn) == ITEM_FAIRY) { SET_CUR_FORM_BTN_ITEM(btn, ITEM_BOTTLE); Interface_LoadItemIconImpl(globalCtx, btn); @@ -2980,14 +2941,14 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { } /** - * Only used to equip spring water when hot sprint water timer runs out + * Only used to equip Spring Water when Hot Spring Water timer runs out. */ void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item) { s16 btn; gSaveContext.save.inventory.items[slot] = item; - for (btn = 1; btn < 4; btn++) { + for (btn = EQUIP_SLOT_C_LEFT; btn <= EQUIP_SLOT_C_RIGHT; btn++) { if (GET_CUR_FORM_BTN_SLOT(btn) == slot) { SET_CUR_FORM_BTN_ITEM(btn, item); Interface_LoadItemIconImpl(globalCtx, btn); @@ -3104,10 +3065,13 @@ void func_80115844(GlobalContext* globalCtx, s16 arg1) { interfaceCtx->unk_222 = 1; } +/** + * Returns true if player still has health left. Otherwise, return false. + */ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { if (healthChange > 0) { play_sound(NA_SE_SY_HP_RECOVER); - } else if ((gSaveContext.save.playerData.doubleDefense != 0) && (healthChange < 0)) { + } else if (gSaveContext.save.playerData.doubleDefense && (healthChange < 0)) { healthChange >>= 1; } @@ -3179,8 +3143,8 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { AMMO(ITEM_BOMB) = 0; } - } else if (item == ITEM_BEAN) { - AMMO(ITEM_BEAN) += ammoChange; + } else if (item == ITEM_MAGIC_BEANS) { + AMMO(ITEM_MAGIC_BEANS) += ammoChange; } else if (item == ITEM_POWDER_KEG) { AMMO(ITEM_POWDER_KEG) += ammoChange; @@ -3783,7 +3747,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { if ((i == ITEM_STICK) || (i == ITEM_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) || ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) || (i == ITEM_BOMBCHU) || (i == ITEM_POWDER_KEG) || - (i == ITEM_BEAN) || (i == ITEM_PICTO_BOX)) { + (i == ITEM_MAGIC_BEANS) || (i == ITEM_PICTO_BOX)) { if ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) { i = ITEM_BOW; @@ -3811,7 +3775,7 @@ void Interface_DrawAmmoCount(GlobalContext* globalCtx, s16 button, s16 alpha) { ((i == ITEM_NUT) && (AMMO(i) == CUR_CAPACITY(UPG_NUTS))) || ((i == ITEM_BOMBCHU) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || ((i == ITEM_POWDER_KEG) && (ammo == 1)) || ((i == ITEM_PICTO_BOX) && (ammo == 1)) || - ((i == ITEM_BEAN) && (ammo == 20))) { + ((i == ITEM_MAGIC_BEANS) && (ammo == 20))) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 120, 255, 0, alpha); } @@ -6372,11 +6336,11 @@ void Interface_Update(GlobalContext* globalCtx) { D_801BF8DC = func_801242DC(globalCtx); if (D_801BF8DC == 1) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TUNIC) == 2) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == 2) { D_801BF8DC = 0; } } else if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TUNIC) == 3) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == 3) { D_801BF8DC = 0; } } diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index f1fba8576..190d44d1f 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -149,9 +149,9 @@ s32 D_801C6798[] = { }; u8 D_801C67B0[24] = { - ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, - ITEM_STICK, ITEM_NUT, ITEM_BEAN, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, - ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BOMB, ITEM_BOMBCHU, + ITEM_STICK, ITEM_NUT, ITEM_MAGIC_BEANS, ITEM_NONE, ITEM_POWDER_KEG, ITEM_PICTO_BOX, ITEM_NONE, ITEM_NONE, + ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, }; s32 D_801C67C8[] = { 0, 0x40, 0x80, 0xC0, 0x100, 0x180, 0x200, 0x280 }; @@ -360,20 +360,20 @@ void Sram_SaveEndOfCycle(GlobalContext* globalCtx) { gSaveContext.save.playerData.health = 0x30; } - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) < 3) { - SET_EQUIP_VALUE(EQUIP_SWORD, 1); + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) < 3) { + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, 1); if (CUR_FORM == 0) { if ((STOLEN_ITEM_1 >= ITEM_SWORD_GILDED) || (STOLEN_ITEM_2 >= ITEM_SWORD_GILDED)) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_GILDED; - SET_EQUIP_VALUE(EQUIP_SWORD, 3); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, 3); } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_SWORD_KOKIRI; } } else { if ((STOLEN_ITEM_1 >= ITEM_SWORD_GILDED) || (STOLEN_ITEM_2 >= ITEM_SWORD_GILDED)) { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_B) = ITEM_SWORD_GILDED; - SET_EQUIP_VALUE(EQUIP_SWORD, 3); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, 3); } else { BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_B) = ITEM_SWORD_KOKIRI; } @@ -717,7 +717,7 @@ Inventory sSaveDebugInventory = { ITEM_BOMBCHU, ITEM_STICK, ITEM_NUT, - ITEM_BEAN, + ITEM_MAGIC_BEANS, ITEM_ROOM_KEY, ITEM_POWDER_KEG, ITEM_PICTO_BOX, diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 1c48235ae..1c013c2a6 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -296,7 +296,7 @@ s32 func_80BED140(GlobalContext* globalCtx) { } s32 func_80BED208(EnAkindonuts* this) { - if (INV_CONTENT(ITEM_BEAN) != 10U) { + if ((u32)INV_CONTENT(ITEM_MAGIC_BEANS) != ITEM_MAGIC_BEANS) { return 0; } @@ -304,7 +304,7 @@ s32 func_80BED208(EnAkindonuts* this) { return 1; } - if (AMMO(ITEM_BEAN) >= 20) { + if (AMMO(ITEM_MAGIC_BEANS) >= 20) { return 2; } diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 7a9529c2e..2fe084673 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -247,7 +247,7 @@ s32 EnGirlA_CanBuyNuts(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyShieldHero(GlobalContext* globalCtx, EnGirlA* this) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != EQUIP_VALUE_SHIELD_NONE) { return CANBUY_RESULT_NO_ROOM; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { @@ -356,7 +356,7 @@ s32 EnGirlA_CanBuySword(GlobalContext* globalCtx, EnGirlA* this) { } s32 EnGirlA_CanBuyShieldMirror(GlobalContext* globalCtx, EnGirlA* this) { - if (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) != 0) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) != 0) { return CANBUY_RESULT_NO_ROOM; } if (gSaveContext.save.playerData.rupees < globalCtx->msgCtx.unk1206C) { diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index 234415d76..3fba931ee 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -216,7 +216,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { if (Message_ShouldAdvance(globalCtx) && (this->unk_288 == 0x2716)) { switch (globalCtx->msgCtx.choiceIndex) { case 0: - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == EQUIP_SWORD) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x272C, &this->actor); this->unk_288 = 0x272C; @@ -234,7 +234,7 @@ void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { break; case 1: - if (GET_CUR_EQUIP_VALUE(EQUIP_SWORD) == EQUIP_SWORD) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(globalCtx, 0x272C, &this->actor); this->unk_288 = 0x272C; diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 0d1933bb6..ae87d666b 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -718,7 +718,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { func_80B41368(this, globalCtx, 0); this->actor.textId = 0xC43; CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; - SET_EQUIP_VALUE(EQUIP_SWORD, 0); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_NONE); Interface_LoadItemIconImpl(globalCtx, 0); func_80B40C74(globalCtx); break; diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 0c16e9b03..728120f7c 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -121,7 +121,7 @@ void EnMs_Talk(EnMs* this, GlobalContext* globalCtx) { if (gSaveContext.save.playerData.rupees < 10) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x935); // "[...] You don't have enough Rupees." - } else if (AMMO(ITEM_BEAN) >= 20) { + } else if (AMMO(ITEM_MAGIC_BEANS) >= 20) { play_sound(NA_SE_SY_ERROR); func_80151938(globalCtx, 0x937); // "[...] You can't carry anymore." } else { diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 4bd5bcf32..e753ed91c 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -305,9 +305,9 @@ void func_808FA4F4(EnRr* this, GlobalContext* globalCtx) { this->unk_20C = 0x800; if (((this->unk_1E2 == 0) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) && - (GET_CUR_EQUIP_VALUE(EQUIP_SHIELD) == 1)) { + (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SHIELD) == EQUIP_VALUE_SHIELD_HERO)) { sp34 = true; - this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, 1); + this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, EQUIP_VALUE_SHIELD_HERO); } else { sp34 = false; } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index dafed18c5..e0fd2ef89 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -980,7 +980,8 @@ void func_80BACA14(EnSuttari* this, GlobalContext* globalCtx) { this->unk3F2 = this->unk2DC.y; this->actionFunc = func_80BACBB0; } - } else if ((player->transformation == PLAYER_FORM_HUMAN) && GET_CUR_EQUIP_VALUE(EQUIP_SWORD) != 0) { + } else if ((player->transformation == PLAYER_FORM_HUMAN) && + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) != EQUIP_VALUE_SWORD_NONE) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { this->unk3F2 = this->unk2DC.y; func_80BAAB78(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index 47d78ae29..9f2bdac2b 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -200,7 +200,7 @@ static CollisionCheckInfoInit2 sColChkInfoInit = { 8, 0, 0, 0, MASS_HEAVY }; static EnTalkGibudRequestedItem sRequestedItemTable[] = { { PLAYER_AP_BOTTLE_POTION_BLUE, ITEM_POTION_BLUE, 1, true }, - { PLAYER_AP_MAGIC_BEANS, ITEM_BEAN, 5, false }, + { PLAYER_AP_MAGIC_BEANS, ITEM_MAGIC_BEANS, 5, false }, { PLAYER_AP_BOTTLE_SPRING_WATER, ITEM_SPRING_WATER, 1, true }, { PLAYER_AP_BOTTLE_FISH, ITEM_FISH, 1, true }, { PLAYER_AP_BOTTLE_BUG, ITEM_BUG, 1, true }, diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index cfb1f5180..7530b0d40 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -223,7 +223,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { } if (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN) { - phi_a3 = GET_CUR_EQUIP_VALUE(EQUIP_SWORD); + phi_a3 = GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD); if (INV_CONTENT(ITEM_SWORD_GREAT_FAIRY) == ITEM_SWORD_GREAT_FAIRY) { phi_a3 += 4; } @@ -260,7 +260,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { itemId1 = ITEM_SWORD_GREAT_FAIRY; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; - SET_EQUIP_VALUE(EQUIP_SWORD, 0); + SET_EQUIP_VALUE(EQUIP_TYPE_SWORD, 0); this->unk_3E8 = D_80C13680[phi_a3 - 1]; } From ad861d29d4bda8d852e8afd2e2c076ab5c416080 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 12:17:26 +1000 Subject: [PATCH 107/160] Cleanup macros --- include/z64.h | 2 +- include/z64item.h | 13 +- include/z64save.h | 2 +- src/code/code_8012EC80.c | 2 +- src/code/z_game_over.c | 2 +- src/code/z_parameter.c | 263 +++++++++--------- src/overlays/gamestates/ovl_select/z_select.c | 2 +- 7 files changed, 146 insertions(+), 140 deletions(-) diff --git a/include/z64.h b/include/z64.h index 3d261be88..c11506226 100644 --- a/include/z64.h +++ b/include/z64.h @@ -67,7 +67,7 @@ typedef enum { /* 1 */ EQUIP_SLOT_C_LEFT, /* 2 */ EQUIP_SLOT_C_DOWN, /* 3 */ EQUIP_SLOT_C_RIGHT, - /* 4 */ EQUIP_SLOT_UNUSED + /* 4 */ EQUIP_SLOT_A } EquipSlot; typedef struct { diff --git a/include/z64item.h b/include/z64item.h index a602948af..7c2cd3e2d 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -27,7 +27,15 @@ typedef enum { /* 1 */ EQUIP_VALUE_SHIELD_HERO, /* 2 */ EQUIP_VALUE_SHIELD_MIRROR, /* 3 */ EQUIP_VALUE_SHIELD_MAX -} EquipValueShield; +} EquipValueShield; + +typedef enum { + /* 0 */ EQUIP_VALUE_TUNIC_NONE, + /* 1 */ EQUIP_VALUE_TUNIC_KOKIRI, + /* 2 */ EQUIP_VALUE_TUNIC_GORON, + /* 3 */ EQUIP_VALUE_TUNIC_ZORA, + /* 4 */ EQUIP_VALUE_TUNIC_MAX +} EquipValueTunic; // Remnant of OoT typedef enum { /* 0 */ UPG_QUIVER, @@ -288,9 +296,6 @@ typedef enum { #define BOTTLE_FIRST 0 #define BOTTLE_MAX 6 -#define BOTTLE_FIRST 0 -#define BOTTLE_MAX 6 - typedef enum { /* 0x00 */ GI_NONE, /* 0x01 */ GI_RUPEE_GREEN, diff --git a/include/z64save.h b/include/z64save.h index 93eb48ab6..12d4e981e 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -129,7 +129,7 @@ typedef struct Save { /* 0x000C */ u16 time; // "zelda_time" /* 0x000E */ u16 owlSaveLocation; /* 0x0010 */ s32 isNight; // "asahiru_fg" - /* 0x0014 */ u32 daySpeed; // "change_zelda_time" + /* 0x0014 */ s32 daySpeed; // "change_zelda_time" /* 0x0018 */ s32 day; // "totalday" /* 0x001C */ s32 daysElapsed; // "eventday" /* 0x0020 */ u8 playerForm; // "player_character" diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 55dcd7b2b..e1c2bdaa8 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -475,7 +475,7 @@ u16 gScenesPerRegion[11][27] = { }; s32 Inventory_GetBtnBItem(GlobalContext* globalCtx) { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { return ITEM_NONE; } else if (gSaveContext.unk_1015 == ITEM_NONE) { return ITEM_NONE; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 291731260..383e66e40 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -55,7 +55,7 @@ void GameOver_Update(GlobalContext* globalCtx) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_UNUSED] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; gSaveContext.unk_3F1E = 0; gSaveContext.unk_3F20 = 0; gSaveContext.unk_3F22 = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9452dea99..9b7b662d5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -715,7 +715,7 @@ void Interface_ChangeAlpha(u16 alphaType) { void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - if ((gSaveContext.buttonStatus[0] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } @@ -725,7 +725,7 @@ void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { } } - if (gSaveContext.buttonStatus[1] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] == BTN_DISABLED) { if (interfaceCtx->cLeftAlpha != 70) { interfaceCtx->cLeftAlpha = 70; } @@ -735,7 +735,7 @@ void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { } } - if (gSaveContext.buttonStatus[2] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] == BTN_DISABLED) { if (interfaceCtx->cDownAlpha != 70) { interfaceCtx->cDownAlpha = 70; } @@ -745,7 +745,7 @@ void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { } } - if (gSaveContext.buttonStatus[3] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] == BTN_DISABLED) { if (interfaceCtx->cRightAlpha != 70) { interfaceCtx->cRightAlpha = 70; } @@ -755,7 +755,7 @@ void func_8010EF9C(GlobalContext* globalCtx, s16 alpha) { } } - if (gSaveContext.buttonStatus[4] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_A] == BTN_DISABLED) { if (interfaceCtx->aAlpha != 70) { interfaceCtx->aAlpha = 70; } @@ -1072,7 +1072,7 @@ void func_8010F1A8(GlobalContext* globalCtx, s16 maxAlpha) { interfaceCtx->aAlpha = alpha; } - if ((gSaveContext.buttonStatus[0] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } @@ -1450,7 +1450,7 @@ void func_80110038(GlobalContext* globalCtx) { if (gSaveContext.eventInf[4] & 2) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) || (msgCtx->msgMode != 0)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { phi_t3 = true; @@ -1465,19 +1465,19 @@ void func_80110038(GlobalContext* globalCtx) { } if (D_801BF884 == 0) { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { phi_t3 = true; } - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { phi_t3 = true; } - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { if (gSaveContext.save.weekEventReg[90] & 0x20) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; } @@ -1485,7 +1485,7 @@ void func_80110038(GlobalContext* globalCtx) { Interface_ChangeAlpha(8); } else if (gSaveContext.save.weekEventReg[82] & 8) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; } @@ -1494,7 +1494,7 @@ void func_80110038(GlobalContext* globalCtx) { Interface_ChangeAlpha(22); } else if (gSaveContext.save.weekEventReg[84] & 0x20) { if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { @@ -1509,7 +1509,7 @@ void func_80110038(GlobalContext* globalCtx) { } } } else { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_ZORA)) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { phi_t3 = true; @@ -1524,7 +1524,7 @@ void func_80110038(GlobalContext* globalCtx) { } } } else if ((globalCtx->sceneNum == SCENE_SPOT00) && (gSaveContext.sceneSetupIndex == 6)) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { phi_t3 = true; } @@ -1534,18 +1534,18 @@ void func_80110038(GlobalContext* globalCtx) { if (player->stateFlags3 & 0x1000000) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } else { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; phi_t3 = true; } } else { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_ENABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; phi_t3 = true; } - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { phi_t3 = true; } @@ -1562,24 +1562,24 @@ void func_80110038(GlobalContext* globalCtx) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; - Interface_LoadItemIconImpl(globalCtx, 0); - gSaveContext.buttonStatus[0] = BTN_ENABLED; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; phi_t3 = true; } - } else if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + } else if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; phi_t3 = true; } if (phi_t3) { - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } } else if ((gSaveContext.save.playerData.magicAcquired == 0) && (CUR_FORM == PLAYER_FORM_DEKU) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_UNK_FD; - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { if (CUR_FORM != PLAYER_FORM_ZORA) { @@ -1594,19 +1594,19 @@ void func_80110038(GlobalContext* globalCtx) { phi_t3 = true; } } else { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { phi_t3 = true; } - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } else { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { phi_t3 = true; } - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { if (func_801242DC(globalCtx) == 2) { if ((GET_CUR_FORM_BTN_ITEM(i) < ITEM_BOTTLE) || @@ -1644,7 +1644,7 @@ void func_80110038(GlobalContext* globalCtx) { } } else { if (player->stateFlags1 & 0x200000) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { phi_t3 = true; @@ -1658,16 +1658,16 @@ void func_80110038(GlobalContext* globalCtx) { } } - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; phi_t3 = true; } } else if (player->stateFlags1 & 0x2000) { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; phi_t3 = true; Interface_ChangeAlpha(50); } @@ -1688,43 +1688,44 @@ void func_80110038(GlobalContext* globalCtx) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == 0) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } - if (gSaveContext.buttonStatus[0] == BTN_ENABLED) { - gSaveContext.buttonStatus[0] = - GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) + ITEM_SWORD_KOKIRI - 1; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = ITEM_SWORD_KOKIRI + + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) - + EQUIP_VALUE_SWORD_KOKIRI; } - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } phi_t3 = true; } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { if (interfaceCtx->unk_21E != 0) { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { phi_t3 = true; - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { phi_t3 = true; - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } } else { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { phi_t3 = true; - gSaveContext.buttonStatus[0] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } else { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { phi_t3 = true; - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } } @@ -1733,19 +1734,19 @@ void func_80110038(GlobalContext* globalCtx) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == 0) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } phi_t3 = true; } - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; phi_t3 = true; } } @@ -1753,7 +1754,7 @@ void func_80110038(GlobalContext* globalCtx) { } if (gSaveContext.save.playerForm == player->transformation) { - for (i = 1; i < 4; i++) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1923,17 +1924,17 @@ void func_80111CB4(GlobalContext* globalCtx) { if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { gSaveContext.unk_3F1E = 1; if (globalCtx->sceneNum == SCENE_BOWLING) { - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_ENABLED; - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } - } else if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_ENABLED; - gSaveContext.buttonStatus[1] = BTN_ENABLED; - gSaveContext.buttonStatus[2] = BTN_ENABLED; - gSaveContext.buttonStatus[3] = BTN_ENABLED; + } else if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } Interface_ChangeAlpha(20); @@ -1942,10 +1943,10 @@ void func_80111CB4(GlobalContext* globalCtx) { (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU)) { gSaveContext.unk_3F1E = 1; - gSaveContext.buttonStatus[0] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); - gSaveContext.buttonStatus[1] = BTN_ENABLED; - gSaveContext.buttonStatus[2] = BTN_ENABLED; - gSaveContext.buttonStatus[3] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; if (globalCtx->sceneNum == SCENE_BOWLING) { if (CURRENT_DAY == 1) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; @@ -1954,24 +1955,24 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } - Interface_LoadItemIconImpl(globalCtx, 0); - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; if (globalCtx->unk_1887C >= 2) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } else { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(6); } } @@ -1988,9 +1989,9 @@ void func_80111CB4(GlobalContext* globalCtx) { } else if (globalCtx->unk_1887C >= 2) { Interface_ChangeAlpha(8); } else if (gSaveContext.save.weekEventReg[8] & 1) { - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if (player->stateFlags1 & 0x800000) { Interface_ChangeAlpha(12); @@ -2009,29 +2010,29 @@ void func_80111CB4(GlobalContext* globalCtx) { } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } if (globalCtx->unk_1887C >= 2) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } else { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } - if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { - gSaveContext.buttonStatus[0] = BTN_ENABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; sp28 = true; } - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(6); if (globalCtx->unk_18B4A != 0) { @@ -2044,9 +2045,9 @@ void func_80111CB4(GlobalContext* globalCtx) { } else if (globalCtx->unk_1887C >= 2) { Interface_ChangeAlpha(8); } else if (gSaveContext.save.weekEventReg[8] & 1) { - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if (player->stateFlags1 & 0x800000) { Interface_ChangeAlpha(12); @@ -2106,15 +2107,15 @@ void func_80111CB4(GlobalContext* globalCtx) { } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { - gSaveContext.buttonStatus[1] = BTN_DISABLED; - gSaveContext.buttonStatus[2] = BTN_DISABLED; - gSaveContext.buttonStatus[3] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(22); } else if (globalCtx->actorCtx.unk5 & 4) { if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { @@ -2198,27 +2199,27 @@ void func_80112C0C(GlobalContext* globalCtx, u16 flag) { (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_FISHING_POLE) || - (gSaveContext.buttonStatus[0] == BTN_DISABLED)) { + (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED)) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_FISHING_POLE)) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; - Interface_LoadItemIconImpl(globalCtx, 0); + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[0]; - Interface_LoadItemIconImpl(globalCtx, 0); + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } } - gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[1] = - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; Interface_ChangeAlpha(7); } else { - gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[2] = gSaveContext.buttonStatus[1] = - gSaveContext.buttonStatus[0] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; func_80111CB4(globalCtx); } } @@ -3702,7 +3703,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) { gDPPipeSync(OVERLAY_DISP++); // Empty C Button Arrows - for (temp = 1; temp < 4; temp++) { + for (temp = EQUIP_SLOT_C_LEFT; temp <= EQUIP_SLOT_C_RIGHT; temp++) { if (GET_CUR_FORM_BTN_ITEM(temp) > 0xF0) { if (temp == 1) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cLeftAlpha); @@ -3810,7 +3811,7 @@ void func_80118084(GlobalContext* globalCtx) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & 0x1000000)) { - if (gSaveContext.buttonStatus[0] != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { Interface_DrawItemIconTexture(globalCtx, interfaceCtx->iconItemSegment, 0); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, @@ -5551,7 +5552,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { #else static s16 D_801BFCE4 = 0; static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -static s16 D_801BFCF8 = 0x63; +static s16 D_801BFCF8 = 99; static s16 D_801BFCFC[] = { // timer digit width 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, @@ -5580,7 +5581,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { if (D_801BF96C) { var3 = osGetTime(); - for (j = 0; j < 6; j++) { + for (j = BOTTLE_FIRST; j < BOTTLE_MAX; j++) { if (gSaveContext.unk_101A[j] == 1) { gSaveContext.unk_10B0[j] += var3 - D_801BF8F0; } @@ -5591,7 +5592,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { D_801BF970 = 99; - for (i = 0; i < 6; i++) { + for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.unk_101A[i] == 1) { var3 = osGetTime(); var3 = (((var3 - ((void)0, gSaveContext.unk_10B0[i]) - ((void)0, gSaveContext.unk_1020[i])) / 10000) * @@ -6336,11 +6337,11 @@ void Interface_Update(GlobalContext* globalCtx) { D_801BF8DC = func_801242DC(globalCtx); if (D_801BF8DC == 1) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == 2) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_GORON) { D_801BF8DC = 0; } } else if ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == 3) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_ZORA) { D_801BF8DC = 0; } } @@ -6663,7 +6664,7 @@ void Interface_Init(GlobalContext* globalCtx) { bzero(interfaceCtx, sizeof(InterfaceContext)); - gSaveContext.sunsSongState = 0; + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; gSaveContext.unk_3F20 = 0; gSaveContext.unk_3F22 = 0; @@ -6685,22 +6686,22 @@ void Interface_Init(GlobalContext* globalCtx) { interfaceCtx->iconItemSegment = THA_AllocEndAlign16(&globalCtx->state.heap, 0x4000); if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < 0xF0) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } else if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_UNK_FD)) { - Interface_LoadItemIconImpl(globalCtx, 0); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_B); } if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) < 0xF0) { - Interface_LoadItemIconImpl(globalCtx, 1); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_LEFT); } if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) < 0xF0) { - Interface_LoadItemIconImpl(globalCtx, 2); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_DOWN); } if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) < 0xF0) { - Interface_LoadItemIconImpl(globalCtx, 3); + Interface_LoadItemIconImpl(globalCtx, EQUIP_SLOT_C_RIGHT); } if (((gSaveContext.unk_3DD0[4] == 4) || (gSaveContext.unk_3DD0[6] == 4)) && diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 04cea5ff9..7162d8348 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -26,7 +26,7 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_UNUSED] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; gSaveContext.unk_3F1E = 0; gSaveContext.unk_3F20 = 0; gSaveContext.unk_3F22 = 0; From 966c3234956a928268381ac72d24e836d14e7b0f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 13:24:39 +1000 Subject: [PATCH 108/160] Magic docs, first draft --- include/functions.h | 16 +- include/variables.h | 4 +- include/z64actor.h | 2 +- include/z64save.h | 46 +- src/code/z_actor.c | 13 +- src/code/z_elf_message.c | 2 +- src/code/z_kaleido_setup.c | 3 +- src/code/z_parameter.c | 403 +++++++++--------- src/code/z_sram_NES.c | 16 +- .../actors/ovl_Arrow_Fire/z_arrow_fire.c | 2 +- .../actors/ovl_Arrow_Ice/z_arrow_ice.c | 2 +- .../actors/ovl_Arrow_Light/z_arrow_light.c | 2 +- src/overlays/actors/ovl_En_Arrow/z_en_arrow.c | 10 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 4 +- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 8 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 9 +- src/overlays/actors/ovl_En_Gg/z_en_gg.c | 2 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 4 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- .../actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c | 2 +- tools/disasm/functions.txt | 16 +- tools/disasm/variables.txt | 4 +- tools/sizes/code_functions.csv | 16 +- 23 files changed, 319 insertions(+), 271 deletions(-) diff --git a/include/functions.h b/include/functions.h index 2dc52d561..744354ec4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -739,7 +739,7 @@ void func_800B9038(Actor* actor, s32 timer); void func_800B9084(Actor* actor); void func_800B9098(Actor* actor); s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon, s32 index, s32 arg4); -void func_800B90F4(GlobalContext* globalCtx); +void Actor_DisableLens(GlobalContext* globalCtx); void func_800B9120(ActorContext* actorCtx); void Actor_InitContext(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry); void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx); @@ -1934,13 +1934,13 @@ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); void Inventory_ChangeAmmo(s16 item, s16 ammoChange); -void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1); -void func_80115D5C(GameState* gamestate); -// void func_80115DB4(void); -// void func_80116088(void); -// void func_80116114(void); -// void Interface_UpdateMagicBar(void); -// void Interface_DrawMagicBar(void); +void Magic_Add(GlobalContext* globalCtx, s16 arg1); +void Magic_ResetBar(GameState* gamestate); +// void Magic_Consume(void); +// void Magic_UpdateAdd(void); +// void Magic_UpdateBarBorderColor(void); +// void Magic_UpdateBar(void); +// void Magic_DrawBar(void); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); // void Interface_DrawItemButtons(void); diff --git a/include/variables.h b/include/variables.h index fe89204e4..c16905aaf 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1032,8 +1032,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sMagicBarOutlinePrimRed; // extern UNK_TYPE2 sMagicBarOutlinePrimGreen; // extern UNK_TYPE2 sMagicBarOutlinePrimBlue; -// extern UNK_TYPE2 D_801BF8AC; -// extern UNK_TYPE2 D_801BF8B0; +// extern UNK_TYPE2 sMagicBorderRatio; +// extern UNK_TYPE2 sMagicBorderStep; // extern UNK_TYPE2 D_801BF8DC; // extern UNK_TYPE2 D_801BF8E0; // extern UNK_TYPE2 D_801BF8E4; diff --git a/include/z64actor.h b/include/z64actor.h index ee73ae8af..af74a4757 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -359,7 +359,7 @@ typedef struct ActorContext { /* 0x000 */ u8 freezeFlashTimer; /* 0x001 */ UNK_TYPE1 pad1; /* 0x002 */ u8 unk2; - /* 0x003 */ u8 unk3; + /* 0x003 */ u8 lensActive; /* 0x004 */ s8 unk4; /* 0x005 */ u8 unk5; /* 0x006 */ UNK_TYPE1 pad6[0x5]; diff --git a/include/z64save.h b/include/z64save.h index 12d4e981e..3d8c3b98e 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -24,6 +24,36 @@ typedef enum RespawnMode { #define SAVE_BUFFER_SIZE 0x4000 +typedef enum MagicBarAction { + /* 00 */ MAGIC_BAR_ACTION_IDLE, // Regular gameplay + /* 01 */ MAGIC_BAR_ACTION_CONSUME_SETUP, // Sets the speed in which magic border flashes + /* 02 */ MAGIC_BAR_ACTION_CONSUME, // Consume magic until target is reached or no more magic is available + /* 03 */ MAGIC_BAR_ACTION_BORDER_CHANGE_1, // Flashes border and freezes Dark Link + /* 04 */ MAGIC_BAR_ACTION_BORDER_CHANGE_2, // Flashes border and draws yellow magic to preview target consumption + /* 05 */ MAGIC_BAR_ACTION_RESTORE_IDLE, // Reset colors and return to idle + /* 06 */ MAGIC_BAR_ACTION_BORDER_CHANGE_3, // Flashes border with no additional behaviour + /* 07 */ MAGIC_BAR_ACTION_LENS_CONSUME, // Magic slowly consumed by lens. + /* 08 */ MAGIC_BAR_ACTION_GROW_WIDE, // Init magic on a new load, grow from a width of 0 to magicCapacity + /* 09 */ MAGIC_BAR_ACTION_FILL, + /* 10 */ MAGIC_BAR_ACTION_CONSUME_2, + /* 11 */ MAGIC_BAR_ACTION_CONSUME_3, + /* 12 */ MAGIC_BAR_ACTION_CONSUME_4 +} MagicBarAction; + +typedef enum MagicBarChange { + /* 0 */ MAGIC_BAR_CONSUME_NOW, // Consume Magic immediately without preview + /* 1 */ MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused + /* 2 */ MAGIC_BAR_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_BAR_CONSUME_NOW. Unused + /* 3 */ MAGIC_BAR_CONSUME_LENS, // Lens consumption + /* 4 */ MAGIC_BAR_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption + /* 5 */ MAGIC_BAR_CONSUME_2, + /* 6 */ MAGIC_BAR_CONSUME_4, + /* 7 */ MAGIC_BAR_CONSUME_UNK +} MagicBarChange; + +#define MAGIC_HALF_BAR 0x30 +#define MAGIC_FULL_BAR (2 * MAGIC_HALF_BAR) + typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -109,8 +139,8 @@ typedef struct SavePlayerData { /* 0x0016 */ s16 rupees; // "lupy_count" /* 0x0018 */ u16 swordHealth; // "long_sword_hp" /* 0x001A */ u16 tatlTimer; // "navi_timer" - /* 0x001C */ u8 magicAcquired; // "magic_mode" - /* 0x001D */ u8 doubleMagic; // "magic_ability" + /* 0x001C */ u8 isMagicAcquired; // "magic_mode" + /* 0x001D */ u8 isDoubleMagicAcquired; // "magic_ability" /* 0x001E */ u8 doubleDefense; // "life_ability" /* 0x001F */ u8 unk_1F; // "ocarina_round" /* 0x0020 */ u8 unk_20; // "first_memory" @@ -225,13 +255,13 @@ typedef struct SaveContext { /* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type" /* 0x3F24 */ u16 unk_3F24; // "alpha_count" /* 0x3F26 */ u16 unk_3F26; // "last_time_type" - /* 0x3F28 */ s16 unk_3F28; // "magic_flag" - /* 0x3F2A */ s16 unk_3F2A; // "recovery_magic_flag" + /* 0x3F28 */ s16 magicBarAction; // "magic_flag" + /* 0x3F2A */ s16 isMagicRequested; // "recovery_magic_flag" /* 0x3F2C */ s16 unk_3F2C; // "keep_magic_flag" - /* 0x3F2E */ s16 unk_3F2E; // "magic_now_max" - /* 0x3F30 */ s16 unk_3F30; // "magic_now_now" - /* 0x3F32 */ s16 unk_3F32; // "magic_used" - /* 0x3F34 */ s16 unk_3F34; // "magic_recovery" + /* 0x3F2E */ s16 magicCapacityDrawn; // "magic_now_max" + /* 0x3F30 */ s16 magicCapacity; // "magic_now_now" + /* 0x3F32 */ s16 magicToConsume; // "magic_used" + /* 0x3F34 */ s16 magicToAdd; // "magic_recovery" /* 0x3F36 */ u16 mapIndex; // "scene_ID" /* 0x3F38 */ u16 minigameState; // "yabusame_mode" /* 0x3F3A */ u16 minigameScore; // "yabusame_total" diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 24bc91a17..56e121b33 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -2214,10 +2214,10 @@ s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon return false; } -void func_800B90F4(GlobalContext* globalCtx) { - if (globalCtx->actorCtx.unk3 != 0) { - globalCtx->actorCtx.unk3 = 0; - func_80115D5C(&globalCtx->state); +void Actor_DisableLens(GlobalContext* globalCtx) { + if (globalCtx->actorCtx.lensActive) { + globalCtx->actorCtx.lensActive = false; + Magic_ResetBar(&globalCtx->state); } } @@ -2906,14 +2906,15 @@ void Actor_DrawAll(GlobalContext* globalCtx, ActorContext* actorCtx) { gSPDisplayList(sp58, &ref2[1]); POLY_XLU_DISP = &ref2[1]; - if (globalCtx->actorCtx.unk3 != 0) { + if (globalCtx->actorCtx.lensActive) { Math_StepToC(&globalCtx->actorCtx.unk4, 100, 20); if (GET_PLAYER(globalCtx)->stateFlags2 & 0x8000000) { - func_800B90F4(globalCtx); + Actor_DisableLens(globalCtx); } } else { Math_StepToC(&globalCtx->actorCtx.unk4, 0, 10); } + if (globalCtx->actorCtx.unk4 != 0) { globalCtx->actorCtx.unkB = 1; func_800B9EF4(globalCtx, globalCtx->actorCtx.undrawnActorCount, globalCtx->actorCtx.undrawnActors); diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index cd2fa96b6..7e2a1933f 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -25,7 +25,7 @@ u16 ElfMessage_GetFirstCycleHint(GlobalContext* globalCtx) { } return 0x21D; } - if (gSaveContext.save.playerData.magicAcquired != true) { + if (gSaveContext.save.playerData.isMagicAcquired != true) { return 0x21F; } if (INV_CONTENT(ITEM_DEED_LAND) == ITEM_DEED_LAND) { diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index bc7dcd646..6505355b9 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -73,7 +73,8 @@ void KaleidoSetup_Update(GlobalContext* globalCtx) { if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(globalCtx) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { - if ((globalCtx->unk_1887C < 2) && (gSaveContext.unk_3F28 != 8) && (gSaveContext.unk_3F28 != 9)) { + if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicBarAction != 8) && + (gSaveContext.magicBarAction != 9)) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(globalCtx->actorCtx.unk5 & 2) && !(globalCtx->actorCtx.unk5 & 4)) { if ((globalCtx->actorCtx.unk268 == 0) && diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9b7b662d5..4d6854ecb 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -149,8 +149,8 @@ u16 sCUpTimer = 0; s16 sMagicBarOutlinePrimRed = 255; s16 sMagicBarOutlinePrimGreen = 255; s16 sMagicBarOutlinePrimBlue = 255; -s16 D_801BF8AC = 2; // sMagicBorderRatio -s16 D_801BF8B0 = 1; +s16 sMagicBorderRatio = 2; +s16 sMagicBorderStep = 1; s16 sExtraItemBases[] = { ITEM_STICK, // ITEM_STICKS_5 @@ -1576,7 +1576,7 @@ void func_80110038(GlobalContext* globalCtx) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; } - } else if ((gSaveContext.save.playerData.magicAcquired == 0) && (CUR_FORM == PLAYER_FORM_DEKU) && + } else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_UNK_FD; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; @@ -2522,7 +2522,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_SMALL) { - Interface_AddMagic(globalCtx, 0x18); + Magic_Add(globalCtx, 0x18); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; @@ -2530,7 +2530,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_LARGE) { - Interface_AddMagic(globalCtx, 0x30); + Magic_Add(globalCtx, 0x30); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; @@ -3010,7 +3010,7 @@ void func_801155B4(GlobalContext* globalCtx, s16 arg1) { (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) <= ITEM_SWORD_GILDED)) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { - if ((CUR_FORM == PLAYER_FORM_DEKU) && (gSaveContext.save.playerData.magicAcquired == 0)) { + if ((CUR_FORM == PLAYER_FORM_DEKU) && !gSaveContext.save.playerData.isMagicAcquired) { interfaceCtx->unk_21E = 0xFD; } else { interfaceCtx->unk_21E = arg1; @@ -3157,269 +3157,285 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } } -void Interface_AddMagic(GlobalContext* globalCtx, s16 arg1) { - if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.unk_3F2E)) { - gSaveContext.unk_3F34 += arg1; - gSaveContext.unk_3F2A = 1; +void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd) { + if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.magicCapacityDrawn)) { + gSaveContext.magicToAdd += magicToAdd; + gSaveContext.isMagicRequested = true; } } -void func_80115D5C(GameState* gamestate) { - if ((gSaveContext.unk_3F28 != 8) && (gSaveContext.unk_3F28 != 9)) { +void Magic_ResetBar(GameState* gamestate) { + if ((gSaveContext.magicBarAction != MAGIC_BAR_ACTION_GROW_WIDE) && + (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_FILL)) { sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; - gSaveContext.unk_3F28 = 0; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; } } -s32 func_80115DB4(GlobalContext* globalCtx, s16 arg1, s16 arg2) { - if (gSaveContext.save.playerData.magicAcquired == 0) { - return 0; +s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) { + InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + + if (!gSaveContext.save.playerData.isMagicAcquired) { + return false; } - if ((gSaveContext.save.playerData.magic - arg1) < 0) { - if (gSaveContext.unk_3F2E != 0) { + if ((gSaveContext.save.playerData.magic - magicToConsume) < 0) { + if (gSaveContext.magicCapacityDrawn != 0) { play_sound(NA_SE_SY_ERROR); } - return 0; + return false; } - switch (arg2) { - case 0: - case 2: - if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { - if (gSaveContext.unk_3F28 == 7) { - globalCtx->actorCtx.unk3 = 0; + switch (consumeType) { + case MAGIC_BAR_CONSUME_NOW: + case MAGIC_BAR_CONSUME_NOW_ALT: + if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || + (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { - arg1 = 0; + magicToConsume = 0; } - gSaveContext.unk_3F32 = arg1; - gSaveContext.unk_3F28 = 1; - return 1; + gSaveContext.magicToConsume = magicToConsume; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_SETUP; + return true; + } else { + play_sound(NA_SE_SY_ERROR); + return false; } - play_sound(NA_SE_SY_ERROR); - return 0; - case 1: - if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { - if (gSaveContext.unk_3F28 == 7) { - globalCtx->actorCtx.unk3 = 0; + case MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW: + if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || + (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { - arg1 = 0; + magicToConsume = 0; } - gSaveContext.unk_3F32 = arg1; - gSaveContext.unk_3F28 = 6; - return 1; + gSaveContext.magicToConsume = magicToConsume; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_3; + return true; + } else { + play_sound(NA_SE_SY_ERROR); + return false; } - play_sound(NA_SE_SY_ERROR); - return 0; - case 3: - if (gSaveContext.unk_3F28 == 0) { + case MAGIC_BAR_CONSUME_LENS: + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - globalCtx->interfaceCtx.unk_258 = 0x50; - gSaveContext.unk_3F28 = 7; - return 1; + interfaceCtx->unk_258 = 80; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_LENS_CONSUME; + return true; + } else { + return false; } - return 0; + } else if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + return true; + } else { + return false; } - if (gSaveContext.unk_3F28 == 7) { - return 1; - } - return 0; - case 4: - if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { - if (gSaveContext.unk_3F28 == 7) { - globalCtx->actorCtx.unk3 = 0; + + case MAGIC_BAR_CONSUME_WAIT_PREVIEW: + if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || + (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + globalCtx->actorCtx.lensActive = false; } - gSaveContext.unk_3F32 = arg1; - gSaveContext.unk_3F28 = 4; - return 1; + gSaveContext.magicToConsume = magicToConsume; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_2; + return true; + } else { + play_sound(NA_SE_SY_ERROR); + return false; } - play_sound(NA_SE_SY_ERROR); - return 0; - case 5: + + case MAGIC_BAR_CONSUME_2: if (gSaveContext.save.playerData.magic != 0) { - globalCtx->interfaceCtx.unk_258 = 0xA; - gSaveContext.unk_3F28 = 0xA; - return 1; + interfaceCtx->unk_258 = 10; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_2; + return true; + } else { + return false; } - return 0; - case 6: - if (gSaveContext.unk_3F28 == 0) { + + case MAGIC_BAR_CONSUME_4: + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - globalCtx->interfaceCtx.unk_258 = XREG(41); - gSaveContext.unk_3F28 = 0xC; - return 1; + interfaceCtx->unk_258 = XREG(41); + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_4; + return true; + } else { + return false; } - return 0; } - if (gSaveContext.unk_3F28 == 0xC) { - return 1; + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_CONSUME_4) { + return true; + } else { + return false; } - return 0; - case 7: - if ((gSaveContext.unk_3F28 == 0) || (gSaveContext.unk_3F28 == 7)) { - if (gSaveContext.unk_3F28 == 7) { - globalCtx->actorCtx.unk3 = 0; + + case MAGIC_BAR_CONSUME_UNK: + if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || + (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { - arg1 = 0; + magicToConsume = 0; } - gSaveContext.save.playerData.magic -= arg1; - return 1; + gSaveContext.save.playerData.magic -= magicToConsume; + return true; + } else { + play_sound(NA_SE_SY_ERROR); + return false; } - play_sound(NA_SE_SY_ERROR); - return 0; + default: - return 0; + return false; } } -void func_80116088(void) { - if (gSaveContext.unk_3F2A != 0) { +void Magic_UpdateAdd(void) { + if (gSaveContext.isMagicRequested) { gSaveContext.save.playerData.magic += 4; play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.unk_3F2E)) { - gSaveContext.save.playerData.magic = gSaveContext.unk_3F2E; - gSaveContext.unk_3F34 = 0; - gSaveContext.unk_3F2A = 0; + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacityDrawn)) { + gSaveContext.save.playerData.magic = gSaveContext.magicCapacityDrawn; + gSaveContext.magicToAdd = 0; + gSaveContext.isMagicRequested = false; } else { - gSaveContext.unk_3F34 -= 4; - if (gSaveContext.unk_3F34 <= 0) { - gSaveContext.unk_3F34 = 0; - gSaveContext.unk_3F2A = 0; + gSaveContext.magicToAdd -= 4; + if (gSaveContext.magicToAdd <= 0) { + gSaveContext.magicToAdd = 0; + gSaveContext.isMagicRequested = false; } } } } -// Part of Interface_UpdateMagicBar in OoT, but that function was broken into parts -void func_80116114(void) { - static s16 magicBorderColors[][3] = { +void Magic_UpdateBarBorderColor(void) { + static s16 sMagicBorderColors[][3] = { { 255, 255, 255 }, { 150, 150, 150 }, }; - static s16 magicBorderIndices[] = { 0, 1, 1, 0 }; - static s16 magicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; - s16 colorStep1; - s16 colorStep2; - s16 colorStep3; - s16 index; + static s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; + static s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; + s16 borderChangeR; + s16 borderChangeG; + s16 borderChangeB; + s16 index = sMagicBorderIndices[sMagicBorderStep]; - index = magicBorderIndices[D_801BF8B0]; - colorStep1 = ABS_ALT(sMagicBarOutlinePrimRed - magicBorderColors[index][0]) / D_801BF8AC; - colorStep2 = ABS_ALT(sMagicBarOutlinePrimGreen - magicBorderColors[index][1]) / D_801BF8AC; - colorStep3 = ABS_ALT(sMagicBarOutlinePrimBlue - magicBorderColors[index][2]) / D_801BF8AC; + borderChangeR = ABS_ALT(sMagicBarOutlinePrimRed - sMagicBorderColors[index][0]) / sMagicBorderRatio; + borderChangeG = ABS_ALT(sMagicBarOutlinePrimGreen - sMagicBorderColors[index][1]) / sMagicBorderRatio; + borderChangeB = ABS_ALT(sMagicBarOutlinePrimBlue - sMagicBorderColors[index][2]) / sMagicBorderRatio; - if (sMagicBarOutlinePrimRed >= magicBorderColors[index][0]) { - sMagicBarOutlinePrimRed -= colorStep1; + if (sMagicBarOutlinePrimRed >= sMagicBorderColors[index][0]) { + sMagicBarOutlinePrimRed -= borderChangeR; } else { - sMagicBarOutlinePrimRed += colorStep1; + sMagicBarOutlinePrimRed += borderChangeR; } - if (sMagicBarOutlinePrimGreen >= magicBorderColors[index][1]) { - sMagicBarOutlinePrimGreen -= colorStep2; + if (sMagicBarOutlinePrimGreen >= sMagicBorderColors[index][1]) { + sMagicBarOutlinePrimGreen -= borderChangeG; } else { - sMagicBarOutlinePrimGreen += colorStep2; + sMagicBarOutlinePrimGreen += borderChangeG; } - if (sMagicBarOutlinePrimBlue >= magicBorderColors[index][2]) { - sMagicBarOutlinePrimBlue -= colorStep3; + if (sMagicBarOutlinePrimBlue >= sMagicBorderColors[index][2]) { + sMagicBarOutlinePrimBlue -= borderChangeB; } else { - sMagicBarOutlinePrimBlue += colorStep3; + sMagicBarOutlinePrimBlue += borderChangeB; } - D_801BF8AC--; + sMagicBorderRatio--; - if (D_801BF8AC == 0) { - sMagicBarOutlinePrimRed = magicBorderColors[index][0]; - sMagicBarOutlinePrimGreen = magicBorderColors[index][1]; - sMagicBarOutlinePrimBlue = magicBorderColors[index][2]; - D_801BF8AC = magicBorderColorTimerIndex[D_801BF8B0]; - D_801BF8B0++; - if (D_801BF8B0 >= 4) { - D_801BF8B0 = 0; + if (sMagicBorderRatio == 0) { + sMagicBarOutlinePrimRed = sMagicBorderColors[index][0]; + sMagicBarOutlinePrimGreen = sMagicBorderColors[index][1]; + sMagicBarOutlinePrimBlue = sMagicBorderColors[index][2]; + sMagicBorderRatio = sMagicBorderColorTimerIndex[sMagicBorderStep]; + sMagicBorderStep++; + if (sMagicBorderStep >= 4) { + sMagicBorderStep = 0; } } } -void Interface_UpdateMagicBar(GlobalContext* globalCtx) { +void Magic_UpdateBar(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 temp; if (gSaveContext.save.weekEventReg[14] & 8) { - func_80116114(); + Magic_UpdateBarBorderColor(); } - switch (gSaveContext.unk_3F28) { - case 8: - temp = gSaveContext.save.playerData.magicLevel * 0x30; - if (gSaveContext.unk_3F2E != temp) { - if (gSaveContext.unk_3F2E < temp) { - gSaveContext.unk_3F2E += 0x10; - if (gSaveContext.unk_3F2E > temp) { - gSaveContext.unk_3F2E = temp; + switch (gSaveContext.magicBarAction) { + case MAGIC_BAR_ACTION_GROW_WIDE: + temp = gSaveContext.save.playerData.magicLevel * MAGIC_HALF_BAR; // magicCapacity + if (gSaveContext.magicCapacityDrawn != temp) { + if (gSaveContext.magicCapacityDrawn < temp) { + gSaveContext.magicCapacityDrawn += 0x10; + if (gSaveContext.magicCapacityDrawn > temp) { + gSaveContext.magicCapacityDrawn = temp; } } else { - gSaveContext.unk_3F2E -= 0x10; - if (gSaveContext.unk_3F2E <= temp) { - gSaveContext.unk_3F2E = temp; + gSaveContext.magicCapacityDrawn -= 0x10; + if (gSaveContext.magicCapacityDrawn <= temp) { + gSaveContext.magicCapacityDrawn = temp; } } } else { - gSaveContext.unk_3F28 = 9; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_FILL; } break; - case 9: + case MAGIC_BAR_ACTION_FILL: gSaveContext.save.playerData.magic += 0x10; if ((gSaveContext.gameMode == 0) && (gSaveContext.sceneSetupIndex < 4)) { play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); } - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.unk_3F30)) { - gSaveContext.save.playerData.magic = gSaveContext.unk_3F30; - gSaveContext.unk_3F28 = 0; + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) { + gSaveContext.save.playerData.magic = gSaveContext.magicCapacity; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; } break; - case 1: - D_801BF8AC = 2; - gSaveContext.unk_3F28 = 2; + case MAGIC_BAR_ACTION_CONSUME_SETUP: + sMagicBorderRatio = 2; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME; break; - case 2: + case MAGIC_BAR_ACTION_CONSUME: if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic = - ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32); + ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.unk_3F28 = 3; - sMagicBarOutlinePrimBlue = 255; - sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue; - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_1; + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; } // fallthrough - case 3: - case 4: - case 6: + case MAGIC_BAR_ACTION_BORDER_CHANGE_1: + case MAGIC_BAR_ACTION_BORDER_CHANGE_2: + case MAGIC_BAR_ACTION_BORDER_CHANGE_3: if (!(gSaveContext.save.weekEventReg[14] & 8)) { - func_80116114(); + Magic_UpdateBarBorderColor(); } break; - case 5: + case MAGIC_BAR_ACTION_RESTORE_IDLE: sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; - gSaveContext.unk_3F28 = 0; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; break; - case 7: + case MAGIC_BAR_ACTION_LENS_CONSUME: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { @@ -3428,10 +3444,10 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || - (globalCtx->actorCtx.unk3 == 0)) { - globalCtx->actorCtx.unk3 = false; + !globalCtx->actorCtx.lensActive) { + globalCtx->actorCtx.lensActive = false; play_sound(NA_SE_SY_GLASSMODE_OFF); - gSaveContext.unk_3F28 = 0; + gSaveContext.magicBarAction = 0; sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; break; } @@ -3446,7 +3462,7 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - func_80116114(); + Magic_UpdateBarBorderColor(); } break; @@ -3457,10 +3473,10 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.unk_3F28 = 11; + gSaveContext.magicBarAction = 11; // fallthrough - case 11: + case MAGIC_BAR_ACTION_CONSUME_3: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { @@ -3477,11 +3493,11 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - func_80116114(); + Magic_UpdateBarBorderColor(); } break; - case 12: + case MAGIC_BAR_ACTION_CONSUME_4: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { @@ -3498,17 +3514,17 @@ void Interface_UpdateMagicBar(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - func_80116114(); + Magic_UpdateBarBorderColor(); } break; default: - gSaveContext.unk_3F28 = 0; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; break; } } -void Interface_DrawMagicBar(GlobalContext* globalCtx) { +void Magic_DrawBar(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 magicBarY; @@ -3528,12 +3544,13 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); - OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, - ((void)0, gSaveContext.unk_3F2E), 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, - sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); OVERLAY_DISP = - func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.unk_3F2E) + 26, magicBarY, 8, 16, - 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, + func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, + ((void)0, gSaveContext.magicCapacityDrawn), 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, + sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); + OVERLAY_DISP = + func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.magicCapacityDrawn) + 26, + magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); gDPPipeSync(OVERLAY_DISP++); @@ -3541,7 +3558,7 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); - if (gSaveContext.unk_3F28 == 4) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_BORDER_CHANGE_2) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -3559,7 +3576,7 @@ void Interface_DrawMagicBar(GlobalContext* globalCtx) { gSPTextureRectangle( OVERLAY_DISP++, 104, (magicBarY + 3) << 2, - ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.unk_3F32)) + 26) << 2, + ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { if (gSaveContext.save.weekEventReg[14] & 8) { @@ -6003,7 +6020,7 @@ void Interface_Draw(GlobalContext* globalCtx) { 1 << 10); } - Interface_DrawMagicBar(globalCtx); + Magic_DrawBar(globalCtx); func_8010A54C(globalCtx); if ((SREG(94) != 2) && (SREG(94) != 3)) { @@ -6491,35 +6508,35 @@ void Interface_Update(GlobalContext* globalCtx) { // Update Magic if (!(player->stateFlags1 & 0x200)) { if (XREG(4) == 1) { - if (gSaveContext.save.playerData.magicAcquired == 0) { - gSaveContext.save.playerData.magicAcquired = 1; + if (!gSaveContext.save.playerData.isMagicAcquired) { + gSaveContext.save.playerData.isMagicAcquired = 1; } - gSaveContext.save.playerData.doubleMagic = 1; - gSaveContext.save.playerData.magic = 0x60; + gSaveContext.save.playerData.isDoubleMagicAcquired = true; + gSaveContext.save.playerData.magic = MAGIC_FULL_BAR; gSaveContext.save.playerData.magicLevel = 0; XREG(4) = 0; } else if (XREG(4) == -1) { - if (gSaveContext.save.playerData.magicAcquired == 0) { - gSaveContext.save.playerData.magicAcquired = 1; + if (!gSaveContext.save.playerData.isMagicAcquired) { + gSaveContext.save.playerData.isMagicAcquired = true; } - gSaveContext.save.playerData.doubleMagic = 0; - gSaveContext.save.playerData.magic = 0x30; + gSaveContext.save.playerData.isDoubleMagicAcquired = false; + gSaveContext.save.playerData.magic = MAGIC_HALF_BAR; gSaveContext.save.playerData.magicLevel = 0; XREG(4) = 0; } - if (gSaveContext.save.playerData.magicAcquired != 0) { + if (gSaveContext.save.playerData.isMagicAcquired) { if (gSaveContext.save.playerData.magicLevel == 0) { - gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.doubleMagic + 1; - gSaveContext.unk_3F30 = gSaveContext.save.playerData.magic; + gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1; + gSaveContext.magicCapacity = gSaveContext.save.playerData.magic; gSaveContext.save.playerData.magic = 0; - gSaveContext.unk_3F28 = 8; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_GROW_WIDE; BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT; } } - Interface_UpdateMagicBar(globalCtx); - func_80116088(); + Magic_UpdateBar(globalCtx); + Magic_UpdateAdd(); } if (gSaveContext.unk_3DD0[5] == 0) { @@ -6670,7 +6687,7 @@ void Interface_Init(GlobalContext* globalCtx) { View_Init(&interfaceCtx->view, globalCtx->state.gfxCtx); - interfaceCtx->unk_258 = 0x10; + interfaceCtx->unk_258 = 16; interfaceCtx->unkTimer = 200; parameterStaticSize = SEGMENT_ROM_SIZE(parameter_static); diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 05078382b..8ba19a473 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -576,12 +576,12 @@ SavePlayerData sSaveDefaultPlayerData = { 0x30, // healthCapacity 0x30, // health 0, // magicLevel - 0x30, // magic + MAGIC_HALF_BAR, // magic 0, // rupees 0, // swordHealth 0, // tatlTimer - 0, // magicAcquired - 0, // doubleMagic + false, // isMagicAcquired + false, // isDoubleMagicAcquired 0, // doubleDefense 0, // unk_1F 0xFF, // unk_20 @@ -674,12 +674,12 @@ SavePlayerData sSaveDebugPlayerData = { 0x80, // healthCapacity 0x80, // health 0, // magicLevel - 0x30, // magic - 0x32, // rupees - 0x64, // swordHealth + MAGIC_HALF_BAR, // magic + 50, // rupees + 100, // swordHealth 0, // tatlTimer - 1, // magicAcquired - 0, // doubleMagic + true, // isMagicAcquired + false, // isDoubleMagicAcquired 0, // doubleDefense 0, // unk_1F 0xFF, // unk_20 diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c index 0b9bedbb8..18c26d62f 100644 --- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c +++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c @@ -81,7 +81,7 @@ void ArrowFire_Init(Actor* thisx, GlobalContext* globalCtx) { void ArrowFire_Destroy(Actor* thisx, GlobalContext* globalCtx) { ArrowFire* this = THIS; - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); Collider_DestroyQuad(globalCtx, &this->collider1); Collider_DestroyQuad(globalCtx, &this->collider2); } diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index 8a402dfbe..f2a1a6712 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -57,7 +57,7 @@ void ArrowIce_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowIce_Destroy(Actor* thisx, GlobalContext* globalCtx) { - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c index ac8eb1ae9..0c1689837 100644 --- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c +++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c @@ -56,7 +56,7 @@ void ArrowLight_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowLight_Destroy(Actor* thisx, GlobalContext* globalCtx) { - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index f1dc5c6f6..6547673a1 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -139,7 +139,7 @@ void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx) { } if ((this->actor.params >= ENARROW_3) && (this->actor.params < ENARROW_6) && (this->actor.child == NULL)) { - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); } } @@ -162,13 +162,13 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_148++; if (this->bubble.unk_148 > 20) { this->actionFunc = func_8088ACE0; - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); } } } else { if ((this->actor.params != ENARROW_8) && (player->unk_D57 == 0)) { if (this->actor.params == ENARROW_7) { - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); } Actor_MarkForDeath(&this->actor); return; @@ -202,7 +202,7 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_144 = CLAMP_MIN(this->bubble.unk_144, 3.5f); func_8088A514(this); this->unk_260 = 99; - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); } else if (this->actor.params >= ENARROW_6) { if ((this->actor.params == ENARROW_8) && (this->actor.world.rot.x < 0)) { Actor_SetScale(&this->actor, 0.009f); @@ -311,7 +311,7 @@ void func_8088AA98(EnArrow* this, GlobalContext* globalCtx) { return; } - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); } } } diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index fcaf6063d..5903ce55d 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -675,8 +675,8 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { !func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) { Health_ChangeBy(globalCtx, 0x80); if (this->fairyFlags & 0x200) { - Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + - (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); } gSaveContext.jinxTimer = 0; this->unk_254 = 50.0f; diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 605edd6d4..410ab1222 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -99,7 +99,7 @@ void EnElfgrp_Init(Actor* thisx, GlobalContext* globalCtx) { break; case ENELFGRP_2: - if (gSaveContext.save.playerData.doubleMagic == true) { + if (gSaveContext.save.playerData.isDoubleMagicAcquired == true) { func_80A396B0(this, 1); } break; @@ -156,7 +156,7 @@ void EnElfgrp_Init(Actor* thisx, GlobalContext* globalCtx) { func_80A396B0(this, 3); this->unk_14A |= 2; } - } else if (gSaveContext.save.playerData.magicAcquired == true) { + } else if (gSaveContext.save.playerData.isMagicAcquired == true) { func_80A396B0(this, 1); } } else { @@ -481,8 +481,8 @@ void func_80A3A610(EnElfgrp* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->unk_144 == 60) { - Interface_AddMagic(globalCtx, - ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); gSaveContext.healthAccumulator = 320; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 6100e5ea8..96022e0ac 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -651,10 +651,9 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { this->unk_546 = 1; } - if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.magicAcquired) { - s16 temp = gSaveContext.unk_3F30; - - Interface_AddMagic(globalCtx, temp + (gSaveContext.save.playerData.doubleMagic * 48) + 48); + if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.isMagicAcquired) { + Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); } func_80962F10(this); @@ -1139,7 +1138,7 @@ void func_80963DE4(EnFu* this, GlobalContext* globalCtx) { } void func_80963EAC(EnFu* this, GlobalContext* globalCtx) { - if (gSaveContext.save.playerData.magicAcquired) { + if (gSaveContext.save.playerData.isMagicAcquired) { if (this->unk_540 == 1) { Message_StartTextbox(globalCtx, 0x2847, &this->actor); this->unk_552 = 0x2847; diff --git a/src/overlays/actors/ovl_En_Gg/z_en_gg.c b/src/overlays/actors/ovl_En_Gg/z_en_gg.c index 3d80cc847..cb660bf02 100644 --- a/src/overlays/actors/ovl_En_Gg/z_en_gg.c +++ b/src/overlays/actors/ovl_En_Gg/z_en_gg.c @@ -231,7 +231,7 @@ void func_80B35450(EnGg* this, GlobalContext* globalCtx) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_80)) { - func_800B90F4(globalCtx); + Actor_DisableLens(globalCtx); } this->unk_308 = 1; this->actionFunc = func_80B352A4; diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 22c34cf72..60bf9aa60 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -727,8 +727,8 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) { globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; - Interface_AddMagic(globalCtx, ((void)0, gSaveContext.unk_3F30) + - (gSaveContext.save.playerData.doubleMagic * 0x30) + 0x30); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); } else { this->actionFunc = func_80B51760; } diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 8dfdeaeb8..31ff3015d 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -433,8 +433,8 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) { gSaveContext.nextTransition = 2; func_801477B4(globalCtx); func_800B7298(globalCtx, &this->actor, 7); - Interface_AddMagic(globalCtx, - ((void)0, gSaveContext.unk_3F30) + (gSaveContext.save.playerData.doubleMagic * 48) + 48); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); gSaveContext.eventInf[1] &= (u8)~1; gSaveContext.eventInf[1] &= (u8)~2; diff --git a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c index a16821f00..1944ba739 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c +++ b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c @@ -38,7 +38,7 @@ void OceffWipe6_Init(Actor* thisx, GlobalContext* globalCtx) { } void OceffWipe6_Destroy(Actor* thisx, GlobalContext* globalCtx) { - func_80115D5C(&globalCtx->state); + Magic_ResetBar(&globalCtx->state); globalCtx->msgCtx.unk120B0 = 0; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index e3e4d6f1b..7d2b4a438 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -811,7 +811,7 @@ 0x800B9084:("func_800B9084",), 0x800B9098:("func_800B9098",), 0x800B90AC:("func_800B90AC",), - 0x800B90F4:("func_800B90F4",), + 0x800B90F4:("Actor_DisableLens",), 0x800B9120:("func_800B9120",), 0x800B9170:("Actor_InitContext",), 0x800B9334:("Actor_SpawnSetupActors",), @@ -2134,13 +2134,13 @@ 0x801159C0:("Health_GiveHearts",), 0x801159EC:("Rupees_ChangeBy",), 0x80115A14:("Inventory_ChangeAmmo",), - 0x80115D14:("Interface_AddMagic",), - 0x80115D5C:("func_80115D5C",), - 0x80115DB4:("func_80115DB4",), - 0x80116088:("func_80116088",), - 0x80116114:("func_80116114",), - 0x80116348:("Interface_UpdateMagicBar",), - 0x80116918:("Interface_DrawMagicBar",), + 0x80115D14:("Magic_Add",), + 0x80115D5C:("Magic_ResetBar",), + 0x80115DB4:("Magic_Consume",), + 0x80116088:("Magic_UpdateAdd",), + 0x80116114:("Magic_UpdateBarBorderColor",), + 0x80116348:("Magic_UpdateBar",), + 0x80116918:("Magic_DrawBar",), 0x80116FD8:("func_80116FD8",), 0x801170B8:("func_801170B8",), 0x80117100:("Interface_DrawItemButtons",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 02fc3e1ab..ad68be167 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1072,8 +1072,8 @@ 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), 0x801BF8A4:("sMagicBarOutlinePrimGreen","UNK_TYPE2","",0x2), 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), - 0x801BF8AC:("D_801BF8AC","UNK_TYPE2","",0x2), - 0x801BF8B0:("D_801BF8B0","UNK_TYPE2","",0x2), + 0x801BF8AC:("sMagicBorderRatio","UNK_TYPE2","",0x2), + 0x801BF8B0:("sMagicBorderStep","UNK_TYPE2","",0x2), 0x801BF8DC:("D_801BF8DC","UNK_TYPE2","",0x2), 0x801BF8E0:("D_801BF8E0","UNK_TYPE2","",0x2), 0x801BF8E4:("D_801BF8E4","UNK_TYPE2","",0x2), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index f58eee8ff..f22dd6cf4 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -325,7 +325,7 @@ asm/non_matchings/code/z_actor/func_800B9038.s,func_800B9038,0x800B9038,0x13 asm/non_matchings/code/z_actor/func_800B9084.s,func_800B9084,0x800B9084,0x5 asm/non_matchings/code/z_actor/func_800B9098.s,func_800B9098,0x800B9098,0x5 asm/non_matchings/code/z_actor/func_800B90AC.s,func_800B90AC,0x800B90AC,0x12 -asm/non_matchings/code/z_actor/func_800B90F4.s,func_800B90F4,0x800B90F4,0xB +asm/non_matchings/code/z_actor/Actor_DisableLens.s,Actor_DisableLens,0x800B90F4,0xB asm/non_matchings/code/z_actor/func_800B9120.s,func_800B9120,0x800B9120,0x14 asm/non_matchings/code/z_actor/Actor_InitContext.s,Actor_InitContext,0x800B9170,0x71 asm/non_matchings/code/z_actor/Actor_SpawnSetupActors.s,Actor_SpawnSetupActors,0x800B9334,0x56 @@ -1648,13 +1648,13 @@ asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908, asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 -asm/non_matchings/code/z_parameter/Interface_AddMagic.s,Interface_AddMagic,0x80115D14,0x12 -asm/non_matchings/code/z_parameter/func_80115D5C.s,func_80115D5C,0x80115D5C,0x16 -asm/non_matchings/code/z_parameter/func_80115DB4.s,func_80115DB4,0x80115DB4,0xB5 -asm/non_matchings/code/z_parameter/func_80116088.s,func_80116088,0x80116088,0x23 -asm/non_matchings/code/z_parameter/func_80116114.s,func_80116114,0x80116114,0x8D -asm/non_matchings/code/z_parameter/Interface_UpdateMagicBar.s,Interface_UpdateMagicBar,0x80116348,0x174 -asm/non_matchings/code/z_parameter/Interface_DrawMagicBar.s,Interface_DrawMagicBar,0x80116918,0x1B0 +asm/non_matchings/code/z_parameter/Magic_Add.s,Magic_Add,0x80115D14,0x12 +asm/non_matchings/code/z_parameter/Magic_ResetBar.s,Magic_ResetBar,0x80115D5C,0x16 +asm/non_matchings/code/z_parameter/Magic_Consume.s,Magic_Consume,0x80115DB4,0xB5 +asm/non_matchings/code/z_parameter/Magic_UpdateAdd.s,Magic_UpdateAdd,0x80116088,0x23 +asm/non_matchings/code/z_parameter/Magic_UpdateBarBorderColor.s,Magic_UpdateBarBorderColor,0x80116114,0x8D +asm/non_matchings/code/z_parameter/Magic_UpdateBar.s,Magic_UpdateBar,0x80116348,0x174 +asm/non_matchings/code/z_parameter/Magic_DrawBar.s,Magic_DrawBar,0x80116918,0x1B0 asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 From 353781bbe74b0132ce59f7e8cd45511dc5431ef3 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 15:07:34 +1000 Subject: [PATCH 109/160] More docs, clean up matching --- Makefile | 2 +- include/z64.h | 2 +- src/code/z_demo.c | 14 ++---- src/code/z_en_item00.c | 5 +- src/code/z_parameter.c | 48 ++++++++++--------- src/code/z_scene.c | 20 +++----- .../actors/ovl_Dm_Ravine/z_dm_ravine.c | 4 +- .../actors/ovl_Door_Shutter/z_door_shutter.c | 4 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 20 ++++---- .../actors/ovl_En_Bomjimb/z_en_bomjimb.c | 13 ++--- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 5 +- .../actors/ovl_En_Floormas/z_en_floormas.c | 4 +- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 6 +-- 13 files changed, 61 insertions(+), 86 deletions(-) diff --git a/Makefile b/Makefile index ac7174e89..3efc1c04b 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ WERROR ?= 0 # Keep .mdebug section in build KEEP_MDEBUG ?= 0 # Disassembles all asm from the ROM instead of skipping files which are entirely in C -FULL_DISASM ?= 0 +FULL_DISASM ?= 1 ifeq ($(NON_MATCHING),1) CFLAGS := -DNON_MATCHING diff --git a/include/z64.h b/include/z64.h index c11506226..e984210fd 100644 --- a/include/z64.h +++ b/include/z64.h @@ -657,7 +657,7 @@ typedef struct { /* 0x252 */ s16 lifeSizeChange; /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing /* 0x256 */ s16 unk_256; - /* 0x258 */ s16 unk_258; + /* 0x258 */ s16 lensMagicDepletionTimer; /* 0x25A */ u8 numHorseBoosts; /* 0x25C */ u16 unk_25C; /* 0x25E */ u16 unk_25E; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 762be4538..0a666e64d 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -133,7 +133,6 @@ void Cutscene_Command_Misc(GlobalContext* globalCtx2, CutsceneContext* csCtx, Cs u8 isStartFrame = false; f32 progress; SceneTableEntry* loadedScene; - u16 time; if ((csCtx->frames < cmd->startFrame) || ((csCtx->frames >= cmd->endFrame) && (cmd->endFrame != cmd->startFrame))) { return; @@ -251,11 +250,9 @@ void Cutscene_Command_Misc(GlobalContext* globalCtx2, CutsceneContext* csCtx, Cs break; case 0x12: if (!gSaveContext.save.isNight) { - time = gSaveContext.save.time; - gSaveContext.save.time = time - (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)REG(15); } else { - time = gSaveContext.save.time; - gSaveContext.save.time = time - (u16)(2 * REG(15)); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * REG(15)); } break; case 0x13: @@ -329,10 +326,9 @@ void Cutscene_Command_Misc(GlobalContext* globalCtx2, CutsceneContext* csCtx, Cs D_801BB15C = csCtx->frames; if (REG(15) != 0) { - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)REG(15) + time; - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + time; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + gSaveContext.save.time = + ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } } break; diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 08fcba8c2..fde6aaa06 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -815,8 +815,6 @@ void EnItem00_DrawHeartPiece(EnItem00* this, GlobalContext* globalCtx) { } s16 func_800A7650(s16 dropId) { - s16 healthCapacity; - if ((((dropId == ITEM00_BOMBS_A) || (dropId == ITEM00_BOMBS_0) || (dropId == ITEM00_BOMBS_B)) && (INV_CONTENT(ITEM_BOMB) == ITEM_NONE)) || (((dropId == ITEM00_ARROWS_10) || (dropId == ITEM00_ARROWS_30) || (dropId == ITEM00_ARROWS_40) || @@ -828,8 +826,7 @@ s16 func_800A7650(s16 dropId) { } if (dropId == ITEM00_HEART) { - healthCapacity = gSaveContext.save.playerData.healthCapacity; - if (healthCapacity == gSaveContext.save.playerData.health) { + if (((void)0, gSaveContext.save.playerData.healthCapacity) == ((void)0, gSaveContext.save.playerData.health)) { return ITEM00_RUPEE_GREEN; } } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 4d6854ecb..5f93dcf5d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3225,7 +3225,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) case MAGIC_BAR_CONSUME_LENS: if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->unk_258 = 80; + interfaceCtx->lensMagicDepletionTimer = 80; gSaveContext.magicBarAction = MAGIC_BAR_ACTION_LENS_CONSUME; return true; } else { @@ -3253,7 +3253,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) case MAGIC_BAR_CONSUME_2: if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->unk_258 = 10; + interfaceCtx->lensMagicDepletionTimer = 10; gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_2; return true; } else { @@ -3263,7 +3263,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) case MAGIC_BAR_CONSUME_4: if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->unk_258 = XREG(41); + interfaceCtx->lensMagicDepletionTimer = XREG(41); gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_4; return true; } else { @@ -3452,12 +3452,12 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { break; } - interfaceCtx->unk_258--; - if (interfaceCtx->unk_258 == 0) { + interfaceCtx->lensMagicDepletionTimer--; + if (interfaceCtx->lensMagicDepletionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } - interfaceCtx->unk_258 = 80; + interfaceCtx->lensMagicDepletionTimer = 80; } } } @@ -3466,29 +3466,29 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { } break; - case 10: + case MAGIC_BAR_ACTION_CONSUME_2: if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.magicBarAction = 11; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_3; // fallthrough case MAGIC_BAR_ACTION_CONSUME_3: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { - interfaceCtx->unk_258--; - if (interfaceCtx->unk_258 == 0) { + interfaceCtx->lensMagicDepletionTimer--; + if (interfaceCtx->lensMagicDepletionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - interfaceCtx->unk_258 = 10; + interfaceCtx->lensMagicDepletionTimer = 10; } } } @@ -3501,15 +3501,15 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { if (!Play_InCsMode(globalCtx)) { - interfaceCtx->unk_258--; - if (interfaceCtx->unk_258 == 0) { + interfaceCtx->lensMagicDepletionTimer--; + if (interfaceCtx->lensMagicDepletionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - interfaceCtx->unk_258 = XREG(41); + interfaceCtx->lensMagicDepletionTimer = XREG(41); } } } @@ -3532,9 +3532,9 @@ void Magic_DrawBar(GlobalContext* globalCtx) { if (gSaveContext.save.playerData.magicLevel != 0) { if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - magicBarY = 42; + magicBarY = 42; // two rows of hearts } else { - magicBarY = 34; + magicBarY = 34; // one row of hearts } func_8012C654(globalCtx->state.gfxCtx); @@ -3559,6 +3559,7 @@ void Magic_DrawBar(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_BORDER_CHANGE_2) { + // Yellow part of the bar indicating the amount of magic to be subtracted gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -3566,8 +3567,8 @@ void Magic_DrawBar(GlobalContext* globalCtx) { (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + // Fill the rest of the bar with the normal magic color gDPPipeSync(OVERLAY_DISP++); - if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { @@ -3579,6 +3580,7 @@ void Magic_DrawBar(GlobalContext* globalCtx) { ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { + // Fill the whole bar with the normal magic color if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { @@ -6222,7 +6224,6 @@ void Interface_Update(GlobalContext* globalCtx) { s16 alpha; s16 alpha1; u16 action; - s16 health; if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0)) { if (globalCtx->gameOverCtx.state == 0) { @@ -6240,12 +6241,12 @@ void Interface_Update(GlobalContext* globalCtx) { } func_8010F1A8(globalCtx, alpha); - health = 2; // Fake - gSaveContext.unk_3F24 += health; + gSaveContext.unk_3F24 += 2; if (alpha == 0) { gSaveContext.unk_3F20 = 0; } break; + case 0x3: case 0x4: case 0x5: @@ -6329,6 +6330,8 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.unk_3F20 = 1; func_8010F1A8(globalCtx, 0); gSaveContext.unk_3F20 = 0; + // fallthrough + default: break; } @@ -6343,8 +6346,7 @@ void Interface_Update(GlobalContext* globalCtx) { play_sound(NA_SE_SY_HP_RECOVER); } - health = gSaveContext.save.playerData.health; - if (health >= gSaveContext.save.playerData.healthCapacity) { + if (((void)0, gSaveContext.save.playerData.health) >= ((void)0, gSaveContext.save.playerData.healthCapacity)) { gSaveContext.save.playerData.health = gSaveContext.save.playerData.healthCapacity; gSaveContext.healthAccumulator = 0; } @@ -6687,7 +6689,7 @@ void Interface_Init(GlobalContext* globalCtx) { View_Init(&interfaceCtx->view, globalCtx->state.gfxCtx); - interfaceCtx->unk_258 = 16; + interfaceCtx->lensMagicDepletionTimer = 16; interfaceCtx->unkTimer = 200; parameterStaticSize = SEGMENT_ROM_SIZE(parameter_static); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index b03990702..b9dbb35dd 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -142,11 +142,9 @@ void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id) { // SceneTableEntry Header Command 0x00: Spawn List void Scene_HeaderCmdSpawnList(GlobalContext* globalCtx, SceneCmd* cmd) { - GlobalContext* globalCtx2 = globalCtx; s32 loadedCount; - void* nextObject; s16 playerObjectId; - u8 playerForm; + void* nextObject; globalCtx->linkActorEntry = (ActorEntry*)Lib_SegmentedToVirtual(cmd->spawnList.segment) + globalCtx->setupEntranceList[globalCtx->curSpawn].spawn; @@ -158,11 +156,10 @@ void Scene_HeaderCmdSpawnList(GlobalContext* globalCtx, SceneCmd* cmd) { } loadedCount = Object_Spawn(&globalCtx->objectCtx, OBJECT_LINK_CHILD); - nextObject = globalCtx2->objectCtx.status[globalCtx2->objectCtx.num].segment; + nextObject = globalCtx->objectCtx.status[globalCtx->objectCtx.num].segment; globalCtx->objectCtx.num = loadedCount; globalCtx->objectCtx.spawnedObjectCount = loadedCount; - playerForm = gSaveContext.save.playerForm; - playerObjectId = gLinkFormObjectIndexes[playerForm]; + playerObjectId = gLinkFormObjectIndexes[(void)0, gSaveContext.save.playerForm]; gActorOverlayTable[0].initInfo->objectId = playerObjectId; Object_Spawn(&globalCtx->objectCtx, playerObjectId); @@ -378,8 +375,6 @@ void Scene_HeaderCmdSkyboxDisables(GlobalContext* globalCtx, SceneCmd* cmd) { // SceneTableEntry Header Command 0x10: Time Settings void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) { - u32 dayTime; - if (cmd->timeSettings.hour != 0xFF && cmd->timeSettings.min != 0xFF) { gSaveContext.environmentTime = gSaveContext.save.time = (u16)(((cmd->timeSettings.hour + (cmd->timeSettings.min / 60.0f)) * 60.0f) / 0.021972656f); @@ -399,12 +394,9 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) { REG(15) = globalCtx->envCtx.timeIncrement; } - dayTime = gSaveContext.save.time; - globalCtx->envCtx.unk_4 = -(Math_SinS(dayTime - 0x8000) * 120.0f) * 25.0f; - dayTime = gSaveContext.save.time; - globalCtx->envCtx.unk_8 = (Math_CosS(dayTime - 0x8000) * 120.0f) * 25.0f; - dayTime = gSaveContext.save.time; - globalCtx->envCtx.unk_C = (Math_CosS(dayTime - 0x8000) * 20.0f) * 25.0f; + globalCtx->envCtx.unk_4 = -(Math_SinS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f; + globalCtx->envCtx.unk_8 = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f; + globalCtx->envCtx.unk_C = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 20.0f) * 25.0f; if (globalCtx->envCtx.timeIncrement == 0 && gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.environmentTime = gSaveContext.save.time; diff --git a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c index bb8b735a4..fd83ea034 100644 --- a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c +++ b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.c @@ -30,8 +30,8 @@ const ActorInit Dm_Ravine_InitVars = { void DmRavine_Init(Actor* thisx, GlobalContext* globalCtx) { DmRavine* this = THIS; - u8 flag = gSaveContext.save.weekEventReg[0]; - if (((flag & 0x10) | cREG(0)) != 0) { + + if (((((void)0, gSaveContext.save.weekEventReg[0]) & 0x10) | cREG(0)) != 0) { Actor_MarkForDeath(&this->actor); return; } diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 01430acc3..999eec485 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -570,9 +570,7 @@ void func_808A1884(DoorShutter* this, GlobalContext* globalCtx) { if (DoorShutter_SetupDoor(this, globalCtx) && !(player->stateFlags1 & 0x800)) { DoorShutter_SetupAction(this, func_808A1C50); if (ActorCutscene_GetCurrentIndex() == 0x7D) { - s8 data = gSaveContext.respawn[RESTART_MODE_DOWN].data; - - func_801226E0(globalCtx, data); + func_801226E0(globalCtx, ((void)0, gSaveContext.respawn[RESTART_MODE_DOWN].data)); player->unk_A86 = -1; func_800B7298(globalCtx, NULL, 0x73); } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index b787dd003..95b34f0ca 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -882,8 +882,8 @@ void func_809C2F34(EnAob01* this, GlobalContext* globalCtx) { void func_809C2FA0(void) { u8 i; - u8 idx; - u8 idx2; + u8 rand; + u8 index; u8 orig; u8 orig2; u8 sp44[7]; @@ -892,11 +892,11 @@ void func_809C2FA0(void) { }; for (i = 0; i < ARRAY_COUNT(sp34); i++) { - idx = Rand_ZeroFloat(14.0f); + rand = Rand_ZeroFloat(14.0f); orig = sp34[i]; - sp34[i] = sp34[idx]; - sp34[idx] = orig; + sp34[i] = sp34[rand]; + sp34[rand] = orig; } for (i = 0; i < ARRAY_COUNT(sp44); i++) { @@ -906,14 +906,14 @@ void func_809C2FA0(void) { for (i = 0; i < ARRAY_COUNT(sp34); i++) { orig2 = sp34[i]; - idx2 = i / 2; + index = i / 2; if (i % 2) { - sp44[idx2] |= orig2 << 0x4; - idx = gSaveContext.save.weekEventReg[42 + idx2]; - gSaveContext.save.weekEventReg[42 + idx2] = idx | sp44[idx2]; + sp44[index] |= orig2 << 0x4; + gSaveContext.save.weekEventReg[42 + index] = + ((void)0, gSaveContext.save.weekEventReg[42 + index]) | sp44[index]; } else { - sp44[idx2] |= orig2; + sp44[index] |= orig2; } } } diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index c18a94209..a0392018a 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -651,12 +651,11 @@ void func_80C02704(EnBomjimb* this, GlobalContext* globalCtx) { } } +u16 D_80C03230[] = { + 0x0721, 0x0722, 0x0723, 0x0724, 0x072C, +}; void func_80C02740(EnBomjimb* this, GlobalContext* globalCtx) { - static u16 D_80C03230[] = { - 0x0721, 0x0722, 0x0723, 0x0724, 0x072C, - }; Player* player = GET_PLAYER(globalCtx); - s16 idx; func_80C012E0(this); func_80C0113C(this, 21, 1.0f); @@ -683,10 +682,8 @@ void func_80C02740(EnBomjimb* this, GlobalContext* globalCtx) { return; } - idx = gSaveContext.save.bombersCaughtNum; - Message_StartTextbox(globalCtx, D_80C03230[idx], &this->actor); - idx = gSaveContext.save.bombersCaughtNum; - gSaveContext.save.bombersCaughtOrder[idx] = this->unk_2C8 + 1; + Message_StartTextbox(globalCtx, D_80C03230[((void)0, gSaveContext.save.bombersCaughtNum)], &this->actor); + gSaveContext.save.bombersCaughtOrder[((void)0, gSaveContext.save.bombersCaughtNum)] = this->unk_2C8 + 1; gSaveContext.save.bombersCaughtNum++; if (gSaveContext.save.bombersCaughtNum > 4) { diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 410ab1222..a0ff9cc96 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -177,14 +177,11 @@ void EnElfgrp_Destroy(Actor* thisx, GlobalContext* globalCtx) { } s32 func_80A39BD0(GlobalContext* globalCtx, s32 arg2) { - s8 sp1F; - if ((arg2 < 1) || (arg2 >= 5)) { return 0; } - sp1F = gSaveContext.save.inventory.strayFairies[arg2 - 1]; - return (sp1F - func_80A39C1C(globalCtx, arg2)) + 10; + return (((void)0, gSaveContext.save.inventory.strayFairies[arg2 - 1]) - func_80A39C1C(globalCtx, arg2)) + 10; } s32 func_80A39C1C(GlobalContext* globalCtx, s32 arg1) { diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c index de7d34024..75d6ce63b 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c @@ -713,15 +713,13 @@ void func_808D2040(EnFloormas* this, GlobalContext* globalCtx) { void func_808D217C(EnFloormas* this, Player* player) { Vec3f* ptr; - u8 playerForm; Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 1.0f, 36.0f, 45.0f, ANIMMODE_ONCE, -3.0f); this->actor.flags &= ~ACTOR_FLAG_1; this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; func_808D08D0(this); - playerForm = gSaveContext.save.playerForm; - ptr = &D_808D3900[playerForm]; + ptr = &D_808D3900[(void)0, gSaveContext.save.playerForm]; this->actor.home.pos.x = ptr->z * Math_SinS(this->actor.shape.rot.y); this->actor.home.pos.y = CLAMP(-this->actor.playerHeightRel, ptr->x, ptr->y); this->actor.home.pos.z = ptr->z * Math_CosS(this->actor.shape.rot.y); diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 27192800e..c506a995f 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -255,8 +255,6 @@ void EnMinifrog_SpawnDust(EnMinifrog* this, GlobalContext* globalCtx) { } void EnMinifrog_ReturnFrogCutscene(EnMinifrog* this, GlobalContext* globalCtx) { - u8 flag; - EnMinifrog_TurnToPlayer(this); EnMinifrog_Jump(this); if ((Message_GetState(&globalCtx->msgCtx) == 5) && Message_ShouldAdvance(globalCtx)) { @@ -277,9 +275,9 @@ void EnMinifrog_ReturnFrogCutscene(EnMinifrog* this, GlobalContext* globalCtx) { func_80151938(globalCtx, 0xD86); // "Could it be... You came all this way looking for me?" } - flag = gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8]; gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8] = - flag | (u8)isFrogReturnedFlags[this->frogIndex]; + ((void)0, gSaveContext.save.weekEventReg[isFrogReturnedFlags[this->frogIndex] >> 8]) | + (u8)isFrogReturnedFlags[this->frogIndex]; break; case 0xD85: // "I understand. I shall head for the mountains immediately." default: From c8d1b5914e00cdc4f12f2382a28cf645de2b697d Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 16:01:21 +1000 Subject: [PATCH 110/160] More cleanup --- src/code/z_message.c | 5 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 7 +-- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 7 +-- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 5 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 15 ++---- src/overlays/actors/ovl_En_Muto/z_en_muto.c | 15 +++--- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 17 +++--- src/overlays/actors/ovl_En_Prz/z_en_prz.c | 6 +-- .../actors/ovl_En_Suttari/z_en_suttari.c | 8 +-- src/overlays/actors/ovl_En_Sw/z_en_sw.c | 53 +++++++++---------- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 15 ++---- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 7 +-- src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c | 10 ++-- src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c | 6 +-- 14 files changed, 71 insertions(+), 105 deletions(-) diff --git a/src/code/z_message.c b/src/code/z_message.c index 83fd51b4d..68634e1a3 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -405,7 +405,6 @@ void func_80151BB4(GlobalContext* globalCtx, u8 arg1) { u32 func_80151C9C(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; - u8 flag; while (true) { if (msgCtx->unk120B1 == 0) { @@ -415,9 +414,9 @@ u32 func_80151C9C(GlobalContext* globalCtx) { if ((gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8] & (u8)D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]) == 0) { - flag = gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8]; gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8] = - flag | (u8)D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]; + ((void)0, gSaveContext.save.weekEventReg[D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]] >> 8]) | + (u8)D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]; if ((D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]] != 0) && CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { func_80151938(globalCtx, D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]]); play_sound(NA_SE_SY_SCHEDULE_WRITE); diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 08e515d26..b778f3fcc 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1512,7 +1512,6 @@ void func_80AA27EC(DmStk* this, GlobalContext* globalCtx) { void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) { DmStk* this = THIS; - u16 time; if (this->actor.params != 1) { if (this->unk_2E0 == 33) { @@ -1569,11 +1568,9 @@ void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) { (globalCtx->msgCtx.currentTextId == 0x5E6) && !FrameAdvance_IsEnabled(&globalCtx->state) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)REG(15) + time; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); if (REG(15) != 0) { - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + time; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } } } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 95b34f0ca..89f949a9d 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -100,11 +100,8 @@ void func_809C10B0(EnAob01* this, s32 arg1) { } void func_809C1124(void) { - u16 time = gSaveContext.save.time; - - gSaveContext.save.time = (u16)REG(15) + time; - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + time; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } void func_809C1158(EnAob01* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index c80b9432c..22ced1f8f 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -872,9 +872,7 @@ s32 func_80B44234(EnInvadepoh* this, Vec3f* vec) { } void func_80B442E4(EnInvadepoh* this) { - s32 pad; - s32 sp18 = gSaveContext.save.time; - s32 temp_v1_2 = sp18 - func_80B43A24(this->actor.params & 7); + s32 temp_v1_2 = ((void)0, (s32)gSaveContext.save.time) - func_80B43A24(this->actor.params & 7); if (D_80B4E940 == 1) { this->clockTime = 0.0f; @@ -999,6 +997,7 @@ void func_80B44700(EnInvadepoh* this) { this->clockTime = 1.0f; } else { f32 new_var = 0.00153374229558f; + this->clockTime = (currentTime + new_var4) * new_var; this->clockTime = CLAMP(this->clockTime, 0.0f, 1.0f); } diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 0a4fb551f..799872de4 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -375,24 +375,19 @@ void func_80A6FBA0(EnMm3* this) { void func_80A6FBFC(EnMm3* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - OSTime a; - OSTime b; if (gSaveContext.unk_3DD0[0] == 0x10) { player->stateFlags1 &= ~0x20; this->actor.flags |= ACTOR_FLAG_10000; - if (gSaveContext.unk_3DE0[0] >= 0x5DD) { + if (gSaveContext.unk_3DE0[0] > 0x5DC) { gSaveContext.unk_3DE0[0] = 0x5DC; } else { - a = gSaveContext.unk_3DE0[0]; - if (a >= (OSTime)(995 - XREG(16))) { - b = gSaveContext.unk_3DE0[0]; - if ((OSTime)(XREG(17) + 1005) >= b) { - gSaveContext.unk_3DE0[0] = 1000; - } + if ((((void)0, gSaveContext.unk_3DE0[0]) >= (OSTime)(995 - XREG(16))) && + (((void)0, gSaveContext.unk_3DE0[0]) <= (OSTime)(XREG(17) + 1005))) { + gSaveContext.unk_3DE0[0] = 1000; } } - } else if (gSaveContext.unk_3DE0[0] >= 0x5DD) { + } else if (gSaveContext.unk_3DE0[0] > 0x5DC) { gSaveContext.unk_3DD0[0] = 15; gSaveContext.unk_3DC8 = osGetTime(); } diff --git a/src/overlays/actors/ovl_En_Muto/z_en_muto.c b/src/overlays/actors/ovl_En_Muto/z_en_muto.c index 4aed3132f..c41408000 100644 --- a/src/overlays/actors/ovl_En_Muto/z_en_muto.c +++ b/src/overlays/actors/ovl_En_Muto/z_en_muto.c @@ -133,15 +133,18 @@ void EnMuto_Idle(EnMuto* this, GlobalContext* globalCtx) { Player* player; this->actor.textId = sTextIds[this->textIdIndex]; - if (!this->isInMayorsRoom && (player = GET_PLAYER(globalCtx))->transformation == PLAYER_FORM_DEKU) { - if (!(gSaveContext.save.weekEventReg[88] & 8)) { - this->actor.textId = 0x62C; - } else { - this->actor.textId = 0x62B; + if (!this->isInMayorsRoom) { + player = GET_PLAYER(globalCtx); + if (player->transformation == PLAYER_FORM_DEKU) { + if (!(gSaveContext.save.weekEventReg[88] & 8)) { + this->actor.textId = 0x62C; + } else { + this->actor.textId = 0x62B; + } } } - if (1) {} // Needed to match + if (1) {} // Needed match if (!this->isInMayorsRoom && Player_GetMask(globalCtx) == PLAYER_MASK_KAFEIS_MASK) { this->actor.textId = 0x2363; diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 21f9487ad..e43e55091 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -807,14 +807,13 @@ void func_80AF8AC8(EnPm* this) { } } +u16 D_80AFB8D4[] = { + 0x1B02, 0x1B04, 0x1B08, 0x1B10, 0x1B20, 0x0000, +}; +u16 D_80AFB8E0[] = { + 0x1B40, 0x1B80, 0x1C01, 0x1C02, 0x1C04, 0x0000, +}; void func_80AF8BA8(s32 arg0) { - static u16 D_80AFB8D4[] = { - 0x1B02, 0x1B04, 0x1B08, 0x1B10, 0x1B20, 0x0000, - }; - static u16 D_80AFB8E0[] = { - 0x1B40, 0x1B80, 0x1C01, 0x1C02, 0x1C04, 0x0000, - }; - s32 temp; if (!(gSaveContext.save.weekEventReg[88] & 2)) { if (gSaveContext.save.weekEventReg[D_80AFB8D4[arg0] >> 8] & @@ -833,9 +832,9 @@ void func_80AF8BA8(s32 arg0) { } } - temp = gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8]; gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8] = - temp | (D_80AFB8E0[arg0] & (1 | 2 | 4 | 0x38 | 0x40 | 0x80)); + ((void)0, gSaveContext.save.weekEventReg[D_80AFB8E0[arg0] >> 8]) | + (D_80AFB8E0[arg0] & (1 | 2 | 4 | 0x38 | 0x40 | 0x80)); } void func_80AF8C68(EnPm* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Prz/z_en_prz.c b/src/overlays/actors/ovl_En_Prz/z_en_prz.c index 29df2aa2c..91f4dd070 100644 --- a/src/overlays/actors/ovl_En_Prz/z_en_prz.c +++ b/src/overlays/actors/ovl_En_Prz/z_en_prz.c @@ -314,7 +314,6 @@ void func_80A767A8(EnPrz* this, GlobalContext* globalCtx) { EnPr* pr = (EnPr*)this->actor.parent; f32 sqrt; s32 pad[2]; - u8 playerForm; if (func_80A762C0(this, globalCtx)) { func_80A75F18(this, 0); @@ -354,9 +353,8 @@ void func_80A767A8(EnPrz* this, GlobalContext* globalCtx) { this->unk_1C8 = 1; } - playerForm = gSaveContext.save.playerForm; - this->unk_1D8.y = - (player->actor.world.pos.y + D_80A771E0[playerForm]) + randPlusMinusPoint5Scaled((2.0f * this->unk_1E6) + 1.0f); + this->unk_1D8.y = (player->actor.world.pos.y + D_80A771E0[((void)0, gSaveContext.save.playerForm)]) + + randPlusMinusPoint5Scaled((2.0f * this->unk_1E6) + 1.0f); func_80A76070(this, Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk_1D8), globalCtx); } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 76b6bea99..10296484d 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -186,12 +186,8 @@ void EnSuttari_SetNextEntrance(GlobalContext* globalCtx, u16 nextEntranceIndex) } void EnSuttari_UpdateTime(void) { - u32* unk_14 = &gSaveContext.save.daySpeed; - u16 time = gSaveContext.save.time; - - gSaveContext.save.time = (u16)REG(15) + time; - time = gSaveContext.save.time; - gSaveContext.save.time = (u16)*unk_14 + time; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } s32 func_80BAA904(EnSuttari* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index 91d602f87..512e90d4f 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -885,38 +885,33 @@ void func_808DA89C(EnSw* this, GlobalContext* globalCtx) { this->drawDmgEffType = ACTOR_DRAW_DMGEFF_BLUE_FIRE; func_808D8ED0(this, globalCtx); } - return; - if (1) {} - } - - if (ENSW_GET_3(&this->actor)) { + } else if (ENSW_GET_3(&this->actor)) { this->actionFunc = func_808DAEB4; - return; - } - - if (this->actor.bgCheckFlags & 1) { - f32 temp_f2; - - this->actor.shape.yOffset = 400.0f; - temp_f2 = fabsf(this->actor.velocity.y) * 0.6f; - this->actor.velocity.y = temp_f2; - this->unk_448 = temp_f2; - this->actor.speedXZ = 0.0f; - if ((s32)temp_f2 != 0) { - Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALTURA_BOUND); - } else { - this->actionFunc = func_808DAEB4; - this->actor.velocity.y = 0.0f; - } - if ((s32)this->actor.velocity.y >= 2) { - func_808D8940(this, globalCtx); - } } else { - Math_ApproachF(&this->actor.shape.yOffset, 400.0f, 0.3f, 1000.0f); - } + if (this->actor.bgCheckFlags & 1) { + f32 temp_f2; - Actor_MoveWithGravity(&this->actor); - Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); + this->actor.shape.yOffset = 400.0f; + temp_f2 = fabsf(this->actor.velocity.y) * 0.6f; + this->actor.velocity.y = temp_f2; + this->unk_448 = temp_f2; + this->actor.speedXZ = 0.0f; + if ((s32)temp_f2 != 0) { + Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALTURA_BOUND); + } else { + this->actionFunc = func_808DAEB4; + this->actor.velocity.y = 0.0f; + } + if ((s32)this->actor.velocity.y >= 2) { + func_808D8940(this, globalCtx); + } + } else { + Math_ApproachF(&this->actor.shape.yOffset, 400.0f, 0.3f, 1000.0f); + } + + Actor_MoveWithGravity(&this->actor); + Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); + } } void func_808DAA60(EnSw* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index dcb1ec98d..29766a709 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1098,23 +1098,16 @@ void func_809C898C(EnSyatekiMan* this, GlobalContext* globalCtx) { }; static s32 D_809C94A8 = 0; Player* player = GET_PLAYER(globalCtx); - s32 sp30; - s32 pad; - u64 sp20; - - sp20 = gSaveContext.unk_3DE0[1]; - sp30 = (sp20 * 0.1f) + 1.0f; + s32 sp30 = (((void)0, gSaveContext.unk_3DE0[1]) * 0.1f) + 1.0f; if (sp30 < 0x2EF) { s32 temp; - // clang-format off if (D_809C94A8 == 0) { - sp20 = gSaveContext.unk_3DE0[1]; temp = sp20 % 0x1F4; + temp = ((void)0, gSaveContext.unk_3DE0[1]) % 0x1F4; } else { - sp20 = gSaveContext.unk_3DE0[1]; temp = (sp20 + 250) % 0x1F4; + temp = (((void)0, gSaveContext.unk_3DE0[1]) + 250) % 0x1F4; } - //clang-format on if (temp < 100) { this->unk_26C = 0x50; @@ -1293,7 +1286,7 @@ void EnSyatekiMan_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264])); SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, - EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, &this->actor); + EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index f4d999fae..3d6023616 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -482,18 +482,15 @@ void func_80967608(EnWeatherTag* this, GlobalContext* globalCtx) { void EnWeatherTag_Update(Actor* thisx, GlobalContext* globalCtx) { EnWeatherTag* this = THIS; - u16 oldTime; this->actionFunc(this, globalCtx); if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.currentTextId == 0x5E6) && (!FrameAdvance_IsEnabled(&globalCtx->state)) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { - oldTime = gSaveContext.save.time; - gSaveContext.save.time = (u16)REG(0xF) + oldTime; // cast req + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(0xF); if (REG(0xF) != 0) { - oldTime = gSaveContext.save.time; - gSaveContext.save.time = (u16)gSaveContext.save.daySpeed + oldTime; + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } } } diff --git a/src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c b/src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c index 15bef2ca5..f7f43bcab 100644 --- a/src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c +++ b/src/overlays/actors/ovl_Mir_Ray3/z_mir_ray3.c @@ -351,7 +351,7 @@ void MirRay3_Draw(Actor* thisx, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s32 i; f32 temp; - u16 phi_a0; + u16 time; if (!(this->unk_210 & 1) && func_8012405C(globalCtx)) { Matrix_InsertMatrix(&player->shieldMf, MTXMODE_NEW); @@ -369,13 +369,13 @@ void MirRay3_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (MIRRAY3_GET_F(&this->actor) == MIRRAY3_F_1) { - phi_a0 = gSaveContext.save.time; + time = gSaveContext.save.time; - if (phi_a0 > CLOCK_TIME(12, 0)) { - phi_a0 = 0xFFFF - phi_a0; + if (time > CLOCK_TIME(12, 0)) { + time = 0xFFFF - time; } - temp = (phi_a0 * (1.0f / 0x8000)); + temp = (time * (1.0f / 0x8000)); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x78, 255, 255, 255, (u8)(s8)(100 * this->unk_214)); gDPSetEnvColor(POLY_XLU_DISP++, 218, 225, (u8)((100.0f * temp) + 105.0f), 255); diff --git a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c index 8a822bea4..e058ec7c4 100644 --- a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c +++ b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c @@ -290,7 +290,6 @@ void ObjChan_InitPot(ObjChan* this, GlobalContext* globalCtx) { void ObjChan_PotAction(ObjChan* this, GlobalContext* globalCtx) { s32 potBreaks; - s16 temp_v0_2; s32 phi_v1; potBreaks = false; @@ -311,9 +310,8 @@ void ObjChan_PotAction(ObjChan* this, GlobalContext* globalCtx) { SoundSource_PlaySfxAtFixedWorldPos(globalCtx, &this->actor.world.pos, 20, NA_SE_EV_CHANDELIER_BROKEN); func_80BB9A1C((ObjChan*)this->actor.parent, 40.0f); if (this->myPotIndex == 4) { - temp_v0_2 = gSaveContext.save.weekEventReg[0x25]; - if (!(temp_v0_2 & 0x10)) { - gSaveContext.save.weekEventReg[0x25] = temp_v0_2 | 0x10; + if (!(((void)0, gSaveContext.save.weekEventReg[0x25]) & 0x10)) { + gSaveContext.save.weekEventReg[0x25] = ((void)0, gSaveContext.save.weekEventReg[0x25]) | 0x10; Actor_SpawnAsChildAndCutscene(&globalCtx->actorCtx, globalCtx, ACTOR_EN_MM, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, 0x8000, this->actor.cutscene, this->actor.unk20, NULL); From 43278f57c357fe7db9290be283f443b90ffa3ed1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 23 Apr 2022 20:11:01 +1000 Subject: [PATCH 111/160] More magic docs --- include/regs.h | 1 + include/z64.h | 4 +- include/z64save.h | 12 +- src/code/title_setup.c | 38 +++--- src/code/z_kaleido_setup.c | 6 +- src/code/z_parameter.c | 116 +++++++++--------- src/overlays/actors/ovl_Boss_02/z_boss_02.c | 2 +- src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 2 +- src/overlays/actors/ovl_En_Holl/z_en_holl.c | 4 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 2 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 4 +- 11 files changed, 99 insertions(+), 92 deletions(-) diff --git a/include/regs.h b/include/regs.h index 9942242a7..67f7c322b 100644 --- a/include/regs.h +++ b/include/regs.h @@ -70,6 +70,7 @@ #define R_A_ICON_Y XREG(19) #define R_A_ICON_X XREG(20) #define R_A_BTN_COLOR(i) XREG(22 + i) +#define R_MAGIC_CONSUME_TIMER_GIANT XREG(41) #define R_MAGIC_BAR_SMALL_Y XREG(48) #define R_MAGIC_BAR_X XREG(49) #define R_MAGIC_BAR_LARGE_Y XREG(50) diff --git a/include/z64.h b/include/z64.h index e984210fd..7e9315995 100644 --- a/include/z64.h +++ b/include/z64.h @@ -657,7 +657,7 @@ typedef struct { /* 0x252 */ s16 lifeSizeChange; /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing /* 0x256 */ s16 unk_256; - /* 0x258 */ s16 lensMagicDepletionTimer; + /* 0x258 */ s16 magicConsumptionTimer; /* 0x25A */ u8 numHorseBoosts; /* 0x25C */ u16 unk_25C; /* 0x25E */ u16 unk_25E; @@ -1416,7 +1416,7 @@ struct GlobalContext { /* 0x18B20 */ u16 envFlags[20]; /* 0x18B48 */ u8 curSpawn; /* 0x18B49 */ u8 unk_18B49; - /* 0x18B4A */ u8 unk_18B4A; + /* 0x18B4A */ u8 transitionMode; /* 0x18B4C */ PreRender pauseBgPreRender; /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; diff --git a/include/z64save.h b/include/z64save.h index 3d8c3b98e..1efc3bb9d 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -35,9 +35,9 @@ typedef enum MagicBarAction { /* 07 */ MAGIC_BAR_ACTION_LENS_CONSUME, // Magic slowly consumed by lens. /* 08 */ MAGIC_BAR_ACTION_GROW_WIDE, // Init magic on a new load, grow from a width of 0 to magicCapacity /* 09 */ MAGIC_BAR_ACTION_FILL, - /* 10 */ MAGIC_BAR_ACTION_CONSUME_2, - /* 11 */ MAGIC_BAR_ACTION_CONSUME_3, - /* 12 */ MAGIC_BAR_ACTION_CONSUME_4 + /* 10 */ MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP, + /* 11 */ MAGIC_BAR_ACTION_CONSUME_GORON_ZORA, + /* 12 */ MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK } MagicBarAction; typedef enum MagicBarChange { @@ -46,9 +46,9 @@ typedef enum MagicBarChange { /* 2 */ MAGIC_BAR_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_BAR_CONSUME_NOW. Unused /* 3 */ MAGIC_BAR_CONSUME_LENS, // Lens consumption /* 4 */ MAGIC_BAR_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption - /* 5 */ MAGIC_BAR_CONSUME_2, - /* 6 */ MAGIC_BAR_CONSUME_4, - /* 7 */ MAGIC_BAR_CONSUME_UNK + /* 5 */ MAGIC_BAR_CONSUME_GORON_ZORA, // Zora shock and Goron Spike Roll slow consumption + /* 6 */ MAGIC_BAR_CONSUME_GIANTS_MASK, // Giants Mask Slow consumption + /* 7 */ MAGIC_BAR_CONSUME_DEITY_BEAM // Fierce Deity Beam consumption, consumed magic now and directly } MagicBarChange; #define MAGIC_HALF_BAR 0x30 diff --git a/src/code/title_setup.c b/src/code/title_setup.c index 69790b60c..8b71a54c5 100644 --- a/src/code/title_setup.c +++ b/src/code/title_setup.c @@ -3,30 +3,30 @@ void TitleSetup_GameStateResetContext(void) { XREG(2) = 0; - XREG(10) = 0x1A; - XREG(11) = 0x14; - XREG(12) = 0xE; + XREG(10) = 26; + XREG(11) = 20; + XREG(12) = 14; XREG(13) = 0; XREG(31) = 0; - XREG(41) = 0x50; + R_MAGIC_CONSUME_TIMER_GIANT = 80; XREG(43) = 0xFC54; - XREG(44) = 0xD7; - XREG(45) = 0xDA; - XREG(68) = 0x61; - XREG(69) = 0x93; - XREG(70) = 0x28; - XREG(73) = 0x1E; - XREG(74) = 0x42; - XREG(75) = 0x1E; - XREG(76) = 0x1C; - XREG(77) = 0x3C; - XREG(78) = 0x2F; - XREG(79) = 0x62; + XREG(44) = 215; + XREG(45) = 218; + XREG(68) = 97; + XREG(69) = 147; + XREG(70) = 40; + XREG(73) = 30; + XREG(74) = 66; + XREG(75) = 30; + XREG(76) = 28; + XREG(77) = 60; + XREG(78) = 47; + XREG(79) = 98; XREG(87) = 0; - XREG(88) = 0x56; - XREG(89) = 0x258; - XREG(90) = 0x1C2; + XREG(88) = 86; + XREG(89) = 600; + XREG(90) = 450; XREG(91) = 0; XREG(94) = 0; XREG(95) = 0; diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 6505355b9..330395fe7 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -70,11 +70,11 @@ void KaleidoSetup_Update(GlobalContext* globalCtx) { } if ((pauseCtx->state == 0) && (pauseCtx->debugState == 0) && (globalCtx->gameOverCtx.state == GAMEOVER_INACTIVE)) { - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(globalCtx) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { - if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicBarAction != 8) && - (gSaveContext.magicBarAction != 9)) { + if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_GROW_WIDE) && + (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_FILL)) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(globalCtx->actorCtx.unk5 & 2) && !(globalCtx->actorCtx.unk5 & 4)) { if ((globalCtx->actorCtx.unk268 == 0) && diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 5f93dcf5d..a9cbec4d6 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1637,7 +1637,7 @@ void func_80110038(GlobalContext* globalCtx) { gSaveContext.unk_3F22 = 0; } - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { if (ActorCutscene_GetCurrentIndex() == -1) { Interface_ChangeAlpha(50); } @@ -1897,7 +1897,8 @@ void func_80110038(GlobalContext* globalCtx) { } } - if (phi_t3 && (globalCtx->activeCamera == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if (phi_t3 && (globalCtx->activeCamera == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->transitionMode == 0)) { gSaveContext.unk_3F22 = 0; Interface_ChangeAlpha(50); } @@ -1977,7 +1978,7 @@ void func_80111CB4(GlobalContext* globalCtx) { } } - if (globalCtx->unk_18B4A != 0) { + if (globalCtx->transitionMode != 0) { Interface_ChangeAlpha(1); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { @@ -2035,7 +2036,7 @@ void func_80111CB4(GlobalContext* globalCtx) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(6); - if (globalCtx->unk_18B4A != 0) { + if (globalCtx->transitionMode != 0) { Interface_ChangeAlpha(1); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { @@ -2106,13 +2107,13 @@ void func_80111CB4(GlobalContext* globalCtx) { } } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(12); } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && - (globalCtx->unk_18B4A == 0)) { + (globalCtx->transitionMode == 0)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; @@ -2134,7 +2135,7 @@ void func_80111CB4(GlobalContext* globalCtx) { } if (sp28) { gSaveContext.unk_3F22 = 0; - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { Interface_ChangeAlpha(50); } } @@ -3187,7 +3188,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) } switch (consumeType) { - case MAGIC_BAR_CONSUME_NOW: + case MAGIC_BAR_CONSUME_NOW: // Deku Bubble case MAGIC_BAR_CONSUME_NOW_ALT: if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { @@ -3222,10 +3223,10 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_LENS: + case MAGIC_BAR_CONSUME_LENS: // Lens if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->lensMagicDepletionTimer = 80; + interfaceCtx->magicConsumptionTimer = 80; gSaveContext.magicBarAction = MAGIC_BAR_ACTION_LENS_CONSUME; return true; } else { @@ -3237,7 +3238,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_WAIT_PREVIEW: + case MAGIC_BAR_CONSUME_WAIT_PREVIEW: // Spin Attack if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { @@ -3251,32 +3252,32 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_2: + case MAGIC_BAR_CONSUME_GORON_ZORA: // Zora Shock, Goron Spike Roll if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->lensMagicDepletionTimer = 10; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_2; + interfaceCtx->magicConsumptionTimer = 10; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP; return true; } else { return false; } - case MAGIC_BAR_CONSUME_4: + case MAGIC_BAR_CONSUME_GIANTS_MASK: // Giants Mask if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { if (gSaveContext.save.playerData.magic != 0) { - interfaceCtx->lensMagicDepletionTimer = XREG(41); - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_4; + interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANT; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK; return true; } else { return false; } } - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_CONSUME_4) { + if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK) { return true; } else { return false; } - case MAGIC_BAR_CONSUME_UNK: + case MAGIC_BAR_CONSUME_DEITY_BEAM: // Fierce Deity Beam if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { @@ -3301,6 +3302,7 @@ void Magic_UpdateAdd(void) { if (gSaveContext.isMagicRequested) { gSaveContext.save.playerData.magic += 4; play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacityDrawn)) { gSaveContext.save.playerData.magic = gSaveContext.magicCapacityDrawn; gSaveContext.magicToAdd = 0; @@ -3315,13 +3317,13 @@ void Magic_UpdateAdd(void) { } } +s16 sMagicBorderColors[][3] = { + { 255, 255, 255 }, + { 150, 150, 150 }, +}; +s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; +s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; void Magic_UpdateBarBorderColor(void) { - static s16 sMagicBorderColors[][3] = { - { 255, 255, 255 }, - { 150, 150, 150 }, - }; - static s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; - static s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; s16 borderChangeR; s16 borderChangeG; s16 borderChangeB; @@ -3350,12 +3352,13 @@ void Magic_UpdateBarBorderColor(void) { } sMagicBorderRatio--; - if (sMagicBorderRatio == 0) { sMagicBarOutlinePrimRed = sMagicBorderColors[index][0]; sMagicBarOutlinePrimGreen = sMagicBorderColors[index][1]; sMagicBarOutlinePrimBlue = sMagicBorderColors[index][2]; + sMagicBorderRatio = sMagicBorderColorTimerIndex[sMagicBorderStep]; + sMagicBorderStep++; if (sMagicBorderStep >= 4) { sMagicBorderStep = 0; @@ -3366,7 +3369,7 @@ void Magic_UpdateBarBorderColor(void) { void Magic_UpdateBar(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - s16 temp; + s16 magicCapacity; if (gSaveContext.save.weekEventReg[14] & 8) { Magic_UpdateBarBorderColor(); @@ -3374,17 +3377,17 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { switch (gSaveContext.magicBarAction) { case MAGIC_BAR_ACTION_GROW_WIDE: - temp = gSaveContext.save.playerData.magicLevel * MAGIC_HALF_BAR; // magicCapacity - if (gSaveContext.magicCapacityDrawn != temp) { - if (gSaveContext.magicCapacityDrawn < temp) { + magicCapacity = gSaveContext.save.playerData.magicLevel * MAGIC_HALF_BAR; + if (gSaveContext.magicCapacityDrawn != magicCapacity) { + if (gSaveContext.magicCapacityDrawn < magicCapacity) { gSaveContext.magicCapacityDrawn += 0x10; - if (gSaveContext.magicCapacityDrawn > temp) { - gSaveContext.magicCapacityDrawn = temp; + if (gSaveContext.magicCapacityDrawn > magicCapacity) { + gSaveContext.magicCapacityDrawn = magicCapacity; } } else { gSaveContext.magicCapacityDrawn -= 0x10; - if (gSaveContext.magicCapacityDrawn <= temp) { - gSaveContext.magicCapacityDrawn = temp; + if (gSaveContext.magicCapacityDrawn <= magicCapacity) { + gSaveContext.magicCapacityDrawn = magicCapacity; } } } else { @@ -3437,7 +3440,8 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { case MAGIC_BAR_ACTION_LENS_CONSUME: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->transitionMode == 0)) { if (!Play_InCsMode(globalCtx)) { if ((gSaveContext.save.playerData.magic == 0) || ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || @@ -3447,17 +3451,17 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { !globalCtx->actorCtx.lensActive) { globalCtx->actorCtx.lensActive = false; play_sound(NA_SE_SY_GLASSMODE_OFF); - gSaveContext.magicBarAction = 0; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; break; } - interfaceCtx->lensMagicDepletionTimer--; - if (interfaceCtx->lensMagicDepletionTimer == 0) { + interfaceCtx->magicConsumptionTimer--; + if (interfaceCtx->magicConsumptionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } - interfaceCtx->lensMagicDepletionTimer = 80; + interfaceCtx->magicConsumptionTimer = 80; } } } @@ -3466,29 +3470,30 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { } break; - case MAGIC_BAR_ACTION_CONSUME_2: + case MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP: if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_3; + gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GORON_ZORA; // fallthrough - case MAGIC_BAR_ACTION_CONSUME_3: + case MAGIC_BAR_ACTION_CONSUME_GORON_ZORA: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->transitionMode == 0)) { if (!Play_InCsMode(globalCtx)) { - interfaceCtx->lensMagicDepletionTimer--; - if (interfaceCtx->lensMagicDepletionTimer == 0) { + interfaceCtx->magicConsumptionTimer--; + if (interfaceCtx->magicConsumptionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - interfaceCtx->lensMagicDepletionTimer = 10; + interfaceCtx->magicConsumptionTimer = 10; } } } @@ -3497,19 +3502,20 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { } break; - case MAGIC_BAR_ACTION_CONSUME_4: + case MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0)) { + (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->transitionMode == 0)) { if (!Play_InCsMode(globalCtx)) { - interfaceCtx->lensMagicDepletionTimer--; - if (interfaceCtx->lensMagicDepletionTimer == 0) { + interfaceCtx->magicConsumptionTimer--; + if (interfaceCtx->magicConsumptionTimer == 0) { if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - interfaceCtx->lensMagicDepletionTimer = XREG(41); + interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANT; } } } @@ -5167,7 +5173,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { (globalCtx->gameOverCtx.state == 0) && ((msgCtx->msgMode == 0) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && - !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && + !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { if (D_801BF968) { @@ -5595,7 +5601,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { (globalCtx->gameOverCtx.state == 0) && ((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || ((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) { + (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { if (D_801BF96C) { var3 = osGetTime(); @@ -6511,7 +6517,7 @@ void Interface_Update(GlobalContext* globalCtx) { if (!(player->stateFlags1 & 0x200)) { if (XREG(4) == 1) { if (!gSaveContext.save.playerData.isMagicAcquired) { - gSaveContext.save.playerData.isMagicAcquired = 1; + gSaveContext.save.playerData.isMagicAcquired = true; } gSaveContext.save.playerData.isDoubleMagicAcquired = true; gSaveContext.save.playerData.magic = MAGIC_FULL_BAR; @@ -6689,7 +6695,7 @@ void Interface_Init(GlobalContext* globalCtx) { View_Init(&interfaceCtx->view, globalCtx->state.gfxCtx); - interfaceCtx->lensMagicDepletionTimer = 16; + interfaceCtx->magicConsumptionTimer = 16; interfaceCtx->unkTimer = 200; parameterStaticSize = SEGMENT_ROM_SIZE(parameter_static); diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index 4a9061207..ad6b54bfa 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -572,7 +572,7 @@ void Boss02_Init(Actor* thisx, GlobalContext* globalCtx) { } else { this->unk_1D20 = 1; } - XREG(41) = KREG(14) + 20; + R_MAGIC_CONSUME_TIMER_GIANT = KREG(14) + 20; this->unk_01AC = 1.0f; Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EN_TANRON5, 0.0f, 1000.0f, 0.0f, 0, 0, 0, 0); diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index 0d1daa6b5..c20f17cce 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -129,7 +129,7 @@ void DoorAna_WaitOpen(DoorAna* this, GlobalContext* globalCtx) { s32 grottoType = DOORANA_GET_TYPE(&this->actor); if (Math_StepToF(&this->actor.scale.x, 0.01f, 0.001f)) { - if (this->actor.targetMode != 0 && globalCtx->sceneLoadFlag == 0 && globalCtx->unk_18B4A == 0 && + if (this->actor.targetMode != 0 && globalCtx->sceneLoadFlag == 0 && globalCtx->transitionMode == 0 && (player->stateFlags1 & 0x80000000) && player->unk_AE7 == 0) { if (grottoType == DOORANA_TYPE_VISIBLE_SCENE_EXIT) { diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.c b/src/overlays/actors/ovl_En_Holl/z_en_holl.c index 8d5816c16..7e54332a1 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.c +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.c @@ -162,7 +162,7 @@ void EnHoll_VisibleIdle(EnHoll* this, GlobalContext* globalCtx) { func_800B9010(&this->actor, NA_SE_EV_INVISIBLE_MONKEY - SFX_FLAG); } } - if ((globalCtx->sceneLoadFlag != 0) || (globalCtx->unk_18B4A != 0)) { + if ((globalCtx->sceneLoadFlag != 0) || (globalCtx->transitionMode != 0)) { this->alpha = 255; } else { f32 enHollBottom = EN_HOLL_BOTTOM_DEFAULT; @@ -309,7 +309,7 @@ void EnHoll_Update(Actor* thisx, GlobalContext* globalCtx) { EnHoll* this = THIS; Player* player = GET_PLAYER(globalCtx); - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->unk_18B4A == 0) && !(player->stateFlags1 & 0x200)) { + if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && !(player->stateFlags1 & 0x200)) { this->actionFunc(this, globalCtx); } } diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 4606c4edb..fc3b5182b 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -369,7 +369,7 @@ void EnTest4_Destroy(Actor* thisx, GlobalContext* globalCtx) { void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - if ((globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx) && (globalCtx->numSetupActors <= 0) && + if ((globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx) && (globalCtx->numSetupActors <= 0) && (globalCtx->roomCtx.unk31 == 0) && (func_8016A168() == 0)) { s16 temp_a2; u16 temp_a0 = D_80A43364[this->unk_144]; diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index baa4adb89..1ca9b0d6e 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -413,7 +413,7 @@ s32 func_80AECE60(EnTk* this, GlobalContext* globalCtx) { this->unk_3CE |= 4; } - if ((globalCtx->unk_18B4A != 0) || (this->unk_3D0 == 0)) { + if ((globalCtx->transitionMode != 0) || (this->unk_3D0 == 0)) { sp78 = this->unk_3F0; sp74 = this->unk_3EC; sp7C = this->actor.world.pos; @@ -430,7 +430,7 @@ s32 func_80AECE60(EnTk* this, GlobalContext* globalCtx) { this->actor.world.rot.y = Math_Vec3f_Yaw(&sp94, &sp88); } - if ((globalCtx->unk_18B4A != 0) || (this->unk_3D0 == 0)) { + if ((globalCtx->transitionMode != 0) || (this->unk_3D0 == 0)) { this->unk_3F0 = sp78; this->unk_3EC = sp74; this->unk_3D4 = sp7C; From 991cb44133bd9322148130e260d76ecd36f7d645 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 16:49:21 +1000 Subject: [PATCH 112/160] sync with items PR --- src/code/z_parameter.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a9cbec4d6..a43417b91 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,5 +1,7 @@ #include "global.h" #include "interface/parameter_static/parameter_static.h" +#include "interface/do_action_static/do_action_static.h" +#include "misc/story_static/story_static.h" #include "overlays/gamestates/ovl_file_choose/z_file_choose.h" void Map_Update(GlobalContext* globalCtx); @@ -197,7 +199,6 @@ s16 D_801BF97C = 255; f32 D_801BF980 = 1.0f; s32 D_801BF984 = 0; -// Display List Gfx D_801BF988[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | @@ -2861,6 +2862,8 @@ void Inventory_UpdateDeitySwordEquip(GlobalContext* globalCtx) { if (CUR_FORM == PLAYER_FORM_FIERCE_DEITY) { interfaceCtx->unk_21C = 0; interfaceCtx->unk_21E = 0; + + // Is simply checking if (gSaveContext.save.playerForm == PLAYER_FORM_FIERCE_DEITY) if ((((gSaveContext.save.playerForm > 0) && (gSaveContext.save.playerForm < 4)) ? 1 : gSaveContext.save.playerForm >> 1) == 0) { @@ -2968,8 +2971,8 @@ void func_801153C8(s32* buf, s32 size) { void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 loadOffset) { static TexturePtr sDoActionTextures[] = { - 0x09000000, // gAttackDoActionENGTex - 0x09000180, // gCheckDoActionENGTex + gDoActionAttackENGTex, + gDoActionCheckENGTex, }; if (action >= DO_ACTION_MAX) { @@ -5798,13 +5801,13 @@ Color_RGB16 D_801BFD6C[] = { }; // grandma's story pictures s32 D_801BFD84[] = { - 0x07000000, - 0x07012C00, + gStoryMaskFestivalTex, + gStoryGiantsLeavingTex, }; // grandma's story TLUT u32 D_801BFD8C[] = { - 0x07025800, - 0x07025A00, + gStoryMaskFestivalTLUT, + gStoryGiantsLeavingTLUT, }; void Interface_Draw(GlobalContext* globalCtx) { s32 pad; From a4f17618c74022dabd93ef719eccb997e408a36a Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 17:27:11 +1000 Subject: [PATCH 113/160] Magic docs (sync with OoT) --- assets/xml/interface/parameter_static.xml | 6 +- include/functions.h | 10 +- include/z64save.h | 62 ++--- src/code/z_actor.c | 2 +- src/code/z_kaleido_setup.c | 4 +- src/code/z_parameter.c | 229 +++++++++--------- src/code/z_sram_NES.c | 4 +- .../actors/ovl_Arrow_Fire/z_arrow_fire.c | 2 +- .../actors/ovl_Arrow_Ice/z_arrow_ice.c | 2 +- .../actors/ovl_Arrow_Light/z_arrow_light.c | 2 +- src/overlays/actors/ovl_En_Arrow/z_en_arrow.c | 10 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 4 +- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 4 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 5 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- .../actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c | 2 +- tools/disasm/functions.txt | 10 +- tools/sizes/code_functions.csv | 10 +- 19 files changed, 186 insertions(+), 190 deletions(-) diff --git a/assets/xml/interface/parameter_static.xml b/assets/xml/interface/parameter_static.xml index 33ab40de4..7532a95b8 100644 --- a/assets/xml/interface/parameter_static.xml +++ b/assets/xml/interface/parameter_static.xml @@ -75,9 +75,9 @@ - - - + + + diff --git a/include/functions.h b/include/functions.h index 51bce7e20..8b5b286d3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1935,12 +1935,12 @@ void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(GlobalContext* globalCtx, s16 arg1); -void Magic_ResetBar(GameState* gamestate); +void Magic_Reset(GameState* gamestate); // void Magic_Consume(void); -// void Magic_UpdateAdd(void); -// void Magic_UpdateBarBorderColor(void); -// void Magic_UpdateBar(void); -// void Magic_DrawBar(void); +// void Magic_UpdateAddRequest(void); +// void Magic_UpdateMeterBorderColor(void); +// void Magic_Update(void); +// void Magic_DrawMeter(void); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); // void Interface_DrawItemButtons(void); diff --git a/include/z64save.h b/include/z64save.h index 1efc3bb9d..d55cbe90a 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -24,23 +24,23 @@ typedef enum RespawnMode { #define SAVE_BUFFER_SIZE 0x4000 -typedef enum MagicBarAction { - /* 00 */ MAGIC_BAR_ACTION_IDLE, // Regular gameplay - /* 01 */ MAGIC_BAR_ACTION_CONSUME_SETUP, // Sets the speed in which magic border flashes - /* 02 */ MAGIC_BAR_ACTION_CONSUME, // Consume magic until target is reached or no more magic is available - /* 03 */ MAGIC_BAR_ACTION_BORDER_CHANGE_1, // Flashes border and freezes Dark Link - /* 04 */ MAGIC_BAR_ACTION_BORDER_CHANGE_2, // Flashes border and draws yellow magic to preview target consumption - /* 05 */ MAGIC_BAR_ACTION_RESTORE_IDLE, // Reset colors and return to idle - /* 06 */ MAGIC_BAR_ACTION_BORDER_CHANGE_3, // Flashes border with no additional behaviour - /* 07 */ MAGIC_BAR_ACTION_LENS_CONSUME, // Magic slowly consumed by lens. - /* 08 */ MAGIC_BAR_ACTION_GROW_WIDE, // Init magic on a new load, grow from a width of 0 to magicCapacity - /* 09 */ MAGIC_BAR_ACTION_FILL, - /* 10 */ MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP, - /* 11 */ MAGIC_BAR_ACTION_CONSUME_GORON_ZORA, - /* 12 */ MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK -} MagicBarAction; +typedef enum { + /* 00 */ MAGIC_STATE_IDLE, // Regular gameplay + /* 01 */ MAGIC_STATE_CONSUME_SETUP, // Sets the speed in which magic border flashes + /* 02 */ MAGIC_STATE_CONSUME, // Consume magic until target is reached or no more magic is available + /* 03 */ MAGIC_STATE_METER_FLASH_1, // Flashes border + /* 04 */ MAGIC_STATE_METER_FLASH_2, // Flashes border and draws yellow magic to preview target consumption + /* 05 */ MAGIC_STATE_RESET, // Reset colors and return to idle + /* 06 */ MAGIC_STATE_METER_FLASH_3, // Flashes border with no additional behaviour + /* 07 */ MAGIC_STATE_CONSUME_LENS, // Magic slowly consumed by lens + /* 08 */ MAGIC_STATE_STEP_CAPACITY, // Step `magicCapacity` to full capacity + /* 09 */ MAGIC_STATE_FILL, // Add magic until magicFillTarget is reached + /* 10 */ MAGIC_STATE_CONSUME_GORON_ZORA_SETUP, + /* 11 */ MAGIC_STATE_CONSUME_GORON_ZORA, // Magic slowly consumed by goron spikes or zora shocks + /* 12 */ MAGIC_STATE_CONSUME_GIANTS_MASK // Magic slowly consumed by giants mask +} MagicState; -typedef enum MagicBarChange { +typedef enum { /* 0 */ MAGIC_BAR_CONSUME_NOW, // Consume Magic immediately without preview /* 1 */ MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused /* 2 */ MAGIC_BAR_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_BAR_CONSUME_NOW. Unused @@ -48,11 +48,11 @@ typedef enum MagicBarChange { /* 4 */ MAGIC_BAR_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption /* 5 */ MAGIC_BAR_CONSUME_GORON_ZORA, // Zora shock and Goron Spike Roll slow consumption /* 6 */ MAGIC_BAR_CONSUME_GIANTS_MASK, // Giants Mask Slow consumption - /* 7 */ MAGIC_BAR_CONSUME_DEITY_BEAM // Fierce Deity Beam consumption, consumed magic now and directly -} MagicBarChange; + /* 7 */ MAGIC_BAR_CONSUME_DEITY_BEAM // Fierce Deity Beam consumption, consumed magic now and not via request +} MagicChangeType; -#define MAGIC_HALF_BAR 0x30 -#define MAGIC_FULL_BAR (2 * MAGIC_HALF_BAR) +#define MAGIC_NORMAL_METER 0x30 +#define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER) typedef struct SramContext { /* 0x00 */ u8* readBuff; @@ -134,13 +134,13 @@ typedef struct SavePlayerData { /* 0x0008 */ char playerName[8]; // "player_name" /* 0x0010 */ s16 healthCapacity; // "max_life" /* 0x0012 */ s16 health; // "now_life" - /* 0x0014 */ s8 magicLevel; // "magic_max" - /* 0x0015 */ s8 magic; // "magic_now" + /* 0x0014 */ s8 magicLevel; // 0 for no magic/new load, 1 for magic, 2 for double magic "magic_max" + /* 0x0015 */ s8 magic; // current magic available for use "magic_now" /* 0x0016 */ s16 rupees; // "lupy_count" /* 0x0018 */ u16 swordHealth; // "long_sword_hp" /* 0x001A */ u16 tatlTimer; // "navi_timer" - /* 0x001C */ u8 isMagicAcquired; // "magic_mode" - /* 0x001D */ u8 isDoubleMagicAcquired; // "magic_ability" + /* 0x001C */ u8 isMagicAcquired; // "magic_mode" + /* 0x001D */ u8 isDoubleMagicAcquired; // "magic_ability" /* 0x001E */ u8 doubleDefense; // "life_ability" /* 0x001F */ u8 unk_1F; // "ocarina_round" /* 0x0020 */ u8 unk_20; // "first_memory" @@ -255,13 +255,13 @@ typedef struct SaveContext { /* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type" /* 0x3F24 */ u16 unk_3F24; // "alpha_count" /* 0x3F26 */ u16 unk_3F26; // "last_time_type" - /* 0x3F28 */ s16 magicBarAction; // "magic_flag" - /* 0x3F2A */ s16 isMagicRequested; // "recovery_magic_flag" - /* 0x3F2C */ s16 unk_3F2C; // "keep_magic_flag" - /* 0x3F2E */ s16 magicCapacityDrawn; // "magic_now_max" - /* 0x3F30 */ s16 magicCapacity; // "magic_now_now" - /* 0x3F32 */ s16 magicToConsume; // "magic_used" - /* 0x3F34 */ s16 magicToAdd; // "magic_recovery" + /* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag" + /* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag" + /* 0x3F2C */ s16 magicUnusedFlag; // Set to 0 in func_80812D94, otherwise unused "keep_magic_flag" + /* 0x3F2E */ s16 magicCapacity; // maximum magic available "magic_now_max" + /* 0x3F30 */ s16 magicFillTarget; // target used to fill magic "magic_now_now" + /* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used" + /* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery" /* 0x3F36 */ u16 mapIndex; // "scene_ID" /* 0x3F38 */ u16 minigameState; // "yabusame_mode" /* 0x3F3A */ u16 minigameScore; // "yabusame_total" diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 56e121b33..cbfc1ecd2 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -2217,7 +2217,7 @@ s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon void Actor_DisableLens(GlobalContext* globalCtx) { if (globalCtx->actorCtx.lensActive) { globalCtx->actorCtx.lensActive = false; - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } } diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 330395fe7..78f05903d 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -73,8 +73,8 @@ void KaleidoSetup_Update(GlobalContext* globalCtx) { if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(globalCtx) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { - if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_GROW_WIDE) && - (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_FILL)) { + if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && + (gSaveContext.magicState != MAGIC_STATE_FILL)) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(globalCtx->actorCtx.unk5 & 2) && !(globalCtx->actorCtx.unk5 & 4)) { if ((globalCtx->actorCtx.unk268 == 0) && diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index a43417b91..03c7c7209 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3162,17 +3162,16 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) { } void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd) { - if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.magicCapacityDrawn)) { + if (((void)0, gSaveContext.save.playerData.magic) < ((void)0, gSaveContext.magicCapacity)) { gSaveContext.magicToAdd += magicToAdd; gSaveContext.isMagicRequested = true; } } -void Magic_ResetBar(GameState* gamestate) { - if ((gSaveContext.magicBarAction != MAGIC_BAR_ACTION_GROW_WIDE) && - (gSaveContext.magicBarAction != MAGIC_BAR_ACTION_FILL)) { +void Magic_Reset(GameState* gamestate) { + if ((gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; + gSaveContext.magicState = MAGIC_STATE_IDLE; } } @@ -3184,7 +3183,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) } if ((gSaveContext.save.playerData.magic - magicToConsume) < 0) { - if (gSaveContext.magicCapacityDrawn != 0) { + if (gSaveContext.magicCapacity != 0) { play_sound(NA_SE_SY_ERROR); } return false; @@ -3193,16 +3192,16 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) switch (consumeType) { case MAGIC_BAR_CONSUME_NOW: // Deku Bubble case MAGIC_BAR_CONSUME_NOW_ALT: - if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || - (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || + (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { + if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_SETUP; + gSaveContext.magicState = MAGIC_STATE_CONSUME_SETUP; return true; } else { play_sound(NA_SE_SY_ERROR); @@ -3210,16 +3209,16 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) } case MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW: - if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || - (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || + (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { + if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_3; + gSaveContext.magicState = MAGIC_STATE_METER_FLASH_3; return true; } else { play_sound(NA_SE_SY_ERROR); @@ -3227,28 +3226,28 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) } case MAGIC_BAR_CONSUME_LENS: // Lens - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { + if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 80; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_LENS_CONSUME; + gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS; return true; } else { return false; } - } else if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + } else if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { return true; } else { return false; } case MAGIC_BAR_CONSUME_WAIT_PREVIEW: // Spin Attack - if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || - (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || + (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { + if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { globalCtx->actorCtx.lensActive = false; } gSaveContext.magicToConsume = magicToConsume; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_2; + gSaveContext.magicState = MAGIC_STATE_METER_FLASH_2; return true; } else { play_sound(NA_SE_SY_ERROR); @@ -3258,32 +3257,32 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) case MAGIC_BAR_CONSUME_GORON_ZORA: // Zora Shock, Goron Spike Roll if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 10; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP; + gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA_SETUP; return true; } else { return false; } case MAGIC_BAR_CONSUME_GIANTS_MASK: // Giants Mask - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) { + if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANT; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK; + gSaveContext.magicState = MAGIC_STATE_CONSUME_GIANTS_MASK; return true; } else { return false; } } - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK) { + if (gSaveContext.magicState == MAGIC_STATE_CONSUME_GIANTS_MASK) { return true; } else { return false; } case MAGIC_BAR_CONSUME_DEITY_BEAM: // Fierce Deity Beam - if ((gSaveContext.magicBarAction == MAGIC_BAR_ACTION_IDLE) || - (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME)) { - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_LENS_CONSUME) { + if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || + (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { + if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { globalCtx->actorCtx.lensActive = false; } if (gSaveContext.save.weekEventReg[14] & 8) { @@ -3301,13 +3300,13 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) } } -void Magic_UpdateAdd(void) { +void Magic_UpdateAddRequest(void) { if (gSaveContext.isMagicRequested) { gSaveContext.save.playerData.magic += 4; play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacityDrawn)) { - gSaveContext.save.playerData.magic = gSaveContext.magicCapacityDrawn; + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) { + gSaveContext.save.playerData.magic = gSaveContext.magicCapacity; gSaveContext.magicToAdd = 0; gSaveContext.isMagicRequested = false; } else { @@ -3326,7 +3325,7 @@ s16 sMagicBorderColors[][3] = { }; s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; -void Magic_UpdateBarBorderColor(void) { +void Magic_UpdateMeterBorderColor(void) { s16 borderChangeR; s16 borderChangeG; s16 borderChangeB; @@ -3369,121 +3368,119 @@ void Magic_UpdateBarBorderColor(void) { } } -void Magic_UpdateBar(GlobalContext* globalCtx) { +void Magic_Update(GlobalContext* globalCtx) { MessageContext* msgCtx = &globalCtx->msgCtx; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - s16 magicCapacity; + s16 magicCapacityTarget; if (gSaveContext.save.weekEventReg[14] & 8) { - Magic_UpdateBarBorderColor(); + Magic_UpdateMeterBorderColor(); } - switch (gSaveContext.magicBarAction) { - case MAGIC_BAR_ACTION_GROW_WIDE: - magicCapacity = gSaveContext.save.playerData.magicLevel * MAGIC_HALF_BAR; - if (gSaveContext.magicCapacityDrawn != magicCapacity) { - if (gSaveContext.magicCapacityDrawn < magicCapacity) { - gSaveContext.magicCapacityDrawn += 0x10; - if (gSaveContext.magicCapacityDrawn > magicCapacity) { - gSaveContext.magicCapacityDrawn = magicCapacity; + switch (gSaveContext.magicState) { + case MAGIC_STATE_STEP_CAPACITY: + magicCapacityTarget = gSaveContext.save.playerData.magicLevel * MAGIC_NORMAL_METER; + if (gSaveContext.magicCapacity != magicCapacityTarget) { + if (gSaveContext.magicCapacity < magicCapacityTarget) { + gSaveContext.magicCapacity += 0x10; + if (gSaveContext.magicCapacity > magicCapacityTarget) { + gSaveContext.magicCapacity = magicCapacityTarget; } } else { - gSaveContext.magicCapacityDrawn -= 0x10; - if (gSaveContext.magicCapacityDrawn <= magicCapacity) { - gSaveContext.magicCapacityDrawn = magicCapacity; + gSaveContext.magicCapacity -= 0x10; + if (gSaveContext.magicCapacity <= magicCapacityTarget) { + gSaveContext.magicCapacity = magicCapacityTarget; } } } else { - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_FILL; + gSaveContext.magicState = MAGIC_STATE_FILL; } break; - case MAGIC_BAR_ACTION_FILL: + case MAGIC_STATE_FILL: gSaveContext.save.playerData.magic += 0x10; if ((gSaveContext.gameMode == 0) && (gSaveContext.sceneSetupIndex < 4)) { play_sound(NA_SE_SY_GAUGE_UP - SFX_FLAG); } - if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicCapacity)) { - gSaveContext.save.playerData.magic = gSaveContext.magicCapacity; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; + if (((void)0, gSaveContext.save.playerData.magic) >= ((void)0, gSaveContext.magicFillTarget)) { + gSaveContext.save.playerData.magic = gSaveContext.magicFillTarget; + gSaveContext.magicState = MAGIC_STATE_IDLE; } break; - case MAGIC_BAR_ACTION_CONSUME_SETUP: + case MAGIC_STATE_CONSUME_SETUP: sMagicBorderRatio = 2; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME; + gSaveContext.magicState = MAGIC_STATE_CONSUME; break; - case MAGIC_BAR_ACTION_CONSUME: + case MAGIC_STATE_CONSUME: if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_BORDER_CHANGE_1; + gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; } // fallthrough - case MAGIC_BAR_ACTION_BORDER_CHANGE_1: - case MAGIC_BAR_ACTION_BORDER_CHANGE_2: - case MAGIC_BAR_ACTION_BORDER_CHANGE_3: + case MAGIC_STATE_METER_FLASH_1: + case MAGIC_STATE_METER_FLASH_2: + case MAGIC_STATE_METER_FLASH_3: if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateBarBorderColor(); + Magic_UpdateMeterBorderColor(); } break; - case MAGIC_BAR_ACTION_RESTORE_IDLE: + case MAGIC_STATE_RESET: sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; + gSaveContext.magicState = MAGIC_STATE_IDLE; break; - case MAGIC_BAR_ACTION_LENS_CONSUME: + case MAGIC_STATE_CONSUME_LENS: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && - (globalCtx->transitionMode == 0)) { - if (!Play_InCsMode(globalCtx)) { - if ((gSaveContext.save.playerData.magic == 0) || - ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || - ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && - (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || - !globalCtx->actorCtx.lensActive) { - globalCtx->actorCtx.lensActive = false; - play_sound(NA_SE_SY_GLASSMODE_OFF); - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; - break; - } + (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { - interfaceCtx->magicConsumptionTimer--; - if (interfaceCtx->magicConsumptionTimer == 0) { - if (!(gSaveContext.save.weekEventReg[14] & 8)) { - gSaveContext.save.playerData.magic--; - } - interfaceCtx->magicConsumptionTimer = 80; + if ((gSaveContext.save.playerData.magic == 0) || + ((func_801242DC(globalCtx) >= 2) && (func_801242DC(globalCtx) < 5)) || + ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && + (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && + (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || + !globalCtx->actorCtx.lensActive) { + globalCtx->actorCtx.lensActive = false; + play_sound(NA_SE_SY_GLASSMODE_OFF); + gSaveContext.magicState = MAGIC_STATE_IDLE; + sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + break; + } + + interfaceCtx->magicConsumptionTimer--; + if (interfaceCtx->magicConsumptionTimer == 0) { + if (!(gSaveContext.save.weekEventReg[14] & 8)) { + gSaveContext.save.playerData.magic--; } + interfaceCtx->magicConsumptionTimer = 80; } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateBarBorderColor(); + Magic_UpdateMeterBorderColor(); } break; - case MAGIC_BAR_ACTION_CONSUME_GORON_ZORA_SETUP: + case MAGIC_STATE_CONSUME_GORON_ZORA_SETUP: if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { gSaveContext.save.playerData.magic = 0; } - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_CONSUME_GORON_ZORA; + gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA; // fallthrough - - case MAGIC_BAR_ACTION_CONSUME_GORON_ZORA: + case MAGIC_STATE_CONSUME_GORON_ZORA: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { @@ -3501,11 +3498,11 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateBarBorderColor(); + Magic_UpdateMeterBorderColor(); } break; - case MAGIC_BAR_ACTION_CONSUME_GIANTS_MASK: + case MAGIC_STATE_CONSUME_GIANTS_MASK: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { @@ -3523,17 +3520,17 @@ void Magic_UpdateBar(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateBarBorderColor(); + Magic_UpdateMeterBorderColor(); } break; default: - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_IDLE; + gSaveContext.magicState = MAGIC_STATE_IDLE; break; } } -void Magic_DrawBar(GlobalContext* globalCtx) { +void Magic_DrawMeter(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; s16 magicBarY; @@ -3550,16 +3547,16 @@ void Magic_DrawBar(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); - OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicBarEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, + OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); OVERLAY_DISP = - func_8010CFBC(OVERLAY_DISP, gMagicBarMidTex, 24, 16, 26, magicBarY, - ((void)0, gSaveContext.magicCapacityDrawn), 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, - sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); + func_8010CFBC(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, ((void)0, gSaveContext.magicCapacity), + 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, + sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); OVERLAY_DISP = - func_8010D480(OVERLAY_DISP, gMagicBarEndTex, 8, 16, ((void)0, gSaveContext.magicCapacityDrawn) + 26, - magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, + func_8010D480(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, ((void)0, gSaveContext.magicCapacity) + 26, magicBarY, + 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); gDPPipeSync(OVERLAY_DISP++); @@ -3567,16 +3564,16 @@ void Magic_DrawBar(GlobalContext* globalCtx) { ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); - if (gSaveContext.magicBarAction == MAGIC_BAR_ACTION_BORDER_CHANGE_2) { - // Yellow part of the bar indicating the amount of magic to be subtracted + if (gSaveContext.magicState == MAGIC_STATE_METER_FLASH_2) { + // Yellow part of the meter indicating the amount of magic to be subtracted gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 250, 0, interfaceCtx->magicAlpha); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - // Fill the rest of the bar with the normal magic color + // Fill the rest of the meter with the normal magic color gDPPipeSync(OVERLAY_DISP++); if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); @@ -3589,14 +3586,14 @@ void Magic_DrawBar(GlobalContext* globalCtx) { ((((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume)) + 26) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { - // Fill the whole bar with the normal magic color + // Fill the whole meter with the normal magic color if (gSaveContext.save.weekEventReg[14] & 8) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); } - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicBarFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, 104, (magicBarY + 3) << 2, (((void)0, gSaveContext.save.playerData.magic) + 26) << 2, (magicBarY + 10) << 2, @@ -6031,7 +6028,7 @@ void Interface_Draw(GlobalContext* globalCtx) { 1 << 10); } - Magic_DrawBar(globalCtx); + Magic_DrawMeter(globalCtx); func_8010A54C(globalCtx); if ((SREG(94) != 2) && (SREG(94) != 3)) { @@ -6523,7 +6520,7 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.save.playerData.isMagicAcquired = true; } gSaveContext.save.playerData.isDoubleMagicAcquired = true; - gSaveContext.save.playerData.magic = MAGIC_FULL_BAR; + gSaveContext.save.playerData.magic = MAGIC_DOUBLE_METER; gSaveContext.save.playerData.magicLevel = 0; XREG(4) = 0; } else if (XREG(4) == -1) { @@ -6531,23 +6528,21 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.save.playerData.isMagicAcquired = true; } gSaveContext.save.playerData.isDoubleMagicAcquired = false; - gSaveContext.save.playerData.magic = MAGIC_HALF_BAR; + gSaveContext.save.playerData.magic = MAGIC_NORMAL_METER; gSaveContext.save.playerData.magicLevel = 0; XREG(4) = 0; } - if (gSaveContext.save.playerData.isMagicAcquired) { - if (gSaveContext.save.playerData.magicLevel == 0) { - gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1; - gSaveContext.magicCapacity = gSaveContext.save.playerData.magic; - gSaveContext.save.playerData.magic = 0; - gSaveContext.magicBarAction = MAGIC_BAR_ACTION_GROW_WIDE; - BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT; - } + if ((gSaveContext.save.playerData.isMagicAcquired) && (gSaveContext.save.playerData.magicLevel == 0)) { + gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1; + gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic; + gSaveContext.save.playerData.magic = 0; + gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY; + BUTTON_ITEM_EQUIP(PLAYER_FORM_DEKU, EQUIP_SLOT_B) = ITEM_NUT; } - Magic_UpdateBar(globalCtx); - Magic_UpdateAdd(); + Magic_Update(globalCtx); + Magic_UpdateAddRequest(); } if (gSaveContext.unk_3DD0[5] == 0) { diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 8ba19a473..335e865e6 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -576,7 +576,7 @@ SavePlayerData sSaveDefaultPlayerData = { 0x30, // healthCapacity 0x30, // health 0, // magicLevel - MAGIC_HALF_BAR, // magic + MAGIC_NORMAL_METER, // magic 0, // rupees 0, // swordHealth 0, // tatlTimer @@ -674,7 +674,7 @@ SavePlayerData sSaveDebugPlayerData = { 0x80, // healthCapacity 0x80, // health 0, // magicLevel - MAGIC_HALF_BAR, // magic + MAGIC_NORMAL_METER, // magic 50, // rupees 100, // swordHealth 0, // tatlTimer diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c index 18c26d62f..5d25c01ca 100644 --- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c +++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c @@ -81,7 +81,7 @@ void ArrowFire_Init(Actor* thisx, GlobalContext* globalCtx) { void ArrowFire_Destroy(Actor* thisx, GlobalContext* globalCtx) { ArrowFire* this = THIS; - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); Collider_DestroyQuad(globalCtx, &this->collider1); Collider_DestroyQuad(globalCtx, &this->collider2); } diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index f2a1a6712..1cb0e411c 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -57,7 +57,7 @@ void ArrowIce_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowIce_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c index 0c1689837..122de61e8 100644 --- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c +++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c @@ -56,7 +56,7 @@ void ArrowLight_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowLight_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index 6547673a1..f645f62ec 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -139,7 +139,7 @@ void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx) { } if ((this->actor.params >= ENARROW_3) && (this->actor.params < ENARROW_6) && (this->actor.child == NULL)) { - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } } @@ -162,13 +162,13 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_148++; if (this->bubble.unk_148 > 20) { this->actionFunc = func_8088ACE0; - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } } } else { if ((this->actor.params != ENARROW_8) && (player->unk_D57 == 0)) { if (this->actor.params == ENARROW_7) { - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } Actor_MarkForDeath(&this->actor); return; @@ -202,7 +202,7 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_144 = CLAMP_MIN(this->bubble.unk_144, 3.5f); func_8088A514(this); this->unk_260 = 99; - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } else if (this->actor.params >= ENARROW_6) { if ((this->actor.params == ENARROW_8) && (this->actor.world.rot.x < 0)) { Actor_SetScale(&this->actor, 0.009f); @@ -311,7 +311,7 @@ void func_8088AA98(EnArrow* this, GlobalContext* globalCtx) { return; } - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); } } } diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 5903ce55d..9b7a92b28 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -675,8 +675,8 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { !func_8088C804(&this->actor.world.pos, &refActor->actor.world.pos, 10.0f)) { Health_ChangeBy(globalCtx, 0x80); if (this->fairyFlags & 0x200) { - Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + - (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicFillTarget) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER); } gSaveContext.jinxTimer = 0; this->unk_254 = 50.0f; diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index a0ff9cc96..4ab1a8aa5 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -478,8 +478,8 @@ void func_80A3A610(EnElfgrp* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->unk_144 == 60) { - Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + - (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicFillTarget) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER); gSaveContext.healthAccumulator = 320; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 96022e0ac..1057b6f8a 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -652,8 +652,8 @@ void func_80962A10(EnFu* this, GlobalContext* globalCtx) { } if ((gSaveContext.save.playerForm == PLAYER_FORM_DEKU) && gSaveContext.save.playerData.isMagicAcquired) { - Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + - (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicFillTarget) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER); } func_80962F10(this); diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 60bf9aa60..6981c8874 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -727,8 +727,9 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) { globalCtx->sceneLoadFlag = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; - Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + - (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); + Magic_Add(globalCtx, + ((void)0, gSaveContext.magicFillTarget) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER); } else { this->actionFunc = func_80B51760; } diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 31ff3015d..2d1dcc4ad 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -433,8 +433,8 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) { gSaveContext.nextTransition = 2; func_801477B4(globalCtx); func_800B7298(globalCtx, &this->actor, 7); - Magic_Add(globalCtx, ((void)0, gSaveContext.magicCapacity) + - (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_HALF_BAR); + Magic_Add(globalCtx, ((void)0, gSaveContext.magicFillTarget) + + (gSaveContext.save.playerData.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER); gSaveContext.eventInf[1] &= (u8)~1; gSaveContext.eventInf[1] &= (u8)~2; diff --git a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c index 1944ba739..e4b2cdabb 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c +++ b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c @@ -38,7 +38,7 @@ void OceffWipe6_Init(Actor* thisx, GlobalContext* globalCtx) { } void OceffWipe6_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_ResetBar(&globalCtx->state); + Magic_Reset(&globalCtx->state); globalCtx->msgCtx.unk120B0 = 0; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 26186ce34..4871b9c5a 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2135,12 +2135,12 @@ 0x801159EC:("Rupees_ChangeBy",), 0x80115A14:("Inventory_ChangeAmmo",), 0x80115D14:("Magic_Add",), - 0x80115D5C:("Magic_ResetBar",), + 0x80115D5C:("Magic_Reset",), 0x80115DB4:("Magic_Consume",), - 0x80116088:("Magic_UpdateAdd",), - 0x80116114:("Magic_UpdateBarBorderColor",), - 0x80116348:("Magic_UpdateBar",), - 0x80116918:("Magic_DrawBar",), + 0x80116088:("Magic_UpdateAddRequest",), + 0x80116114:("Magic_UpdateMeterBorderColor",), + 0x80116348:("Magic_Update",), + 0x80116918:("Magic_DrawMeter",), 0x80116FD8:("func_80116FD8",), 0x801170B8:("func_801170B8",), 0x80117100:("Interface_DrawItemButtons",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index f22dd6cf4..23627d0c3 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1649,12 +1649,12 @@ asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x80115 asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA asm/non_matchings/code/z_parameter/Inventory_ChangeAmmo.s,Inventory_ChangeAmmo,0x80115A14,0xC0 asm/non_matchings/code/z_parameter/Magic_Add.s,Magic_Add,0x80115D14,0x12 -asm/non_matchings/code/z_parameter/Magic_ResetBar.s,Magic_ResetBar,0x80115D5C,0x16 +asm/non_matchings/code/z_parameter/Magic_Reset.s,Magic_Reset,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/Magic_Consume.s,Magic_Consume,0x80115DB4,0xB5 -asm/non_matchings/code/z_parameter/Magic_UpdateAdd.s,Magic_UpdateAdd,0x80116088,0x23 -asm/non_matchings/code/z_parameter/Magic_UpdateBarBorderColor.s,Magic_UpdateBarBorderColor,0x80116114,0x8D -asm/non_matchings/code/z_parameter/Magic_UpdateBar.s,Magic_UpdateBar,0x80116348,0x174 -asm/non_matchings/code/z_parameter/Magic_DrawBar.s,Magic_DrawBar,0x80116918,0x1B0 +asm/non_matchings/code/z_parameter/Magic_UpdateAddRequest.s,Magic_UpdateAddRequest,0x80116088,0x23 +asm/non_matchings/code/z_parameter/Magic_UpdateMeterBorderColor.s,Magic_UpdateMeterBorderColor,0x80116114,0x8D +asm/non_matchings/code/z_parameter/Magic_Update.s,Magic_Update,0x80116348,0x174 +asm/non_matchings/code/z_parameter/Magic_DrawMeter.s,Magic_DrawMeter,0x80116918,0x1B0 asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 From 2fe641ed5c804e4ecace51b5655a1203d1f483fd Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 17:56:34 +1000 Subject: [PATCH 114/160] More docs --- include/z64.h | 2 +- src/code/z_demo.c | 41 +++---- src/code/z_kaleido_setup.c | 2 +- src/code/z_parameter.c | 111 ++++++++++-------- src/code/z_play.c | 4 +- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 2 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 2 +- src/overlays/actors/ovl_Door_Ana/z_door_ana.c | 2 +- .../actors/ovl_Door_Warp1/z_door_warp1.c | 18 +-- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 4 +- src/overlays/actors/ovl_En_Baba/z_en_baba.c | 2 +- .../ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c | 2 +- .../actors/ovl_En_Bomjima/z_en_bomjima.c | 2 +- .../actors/ovl_En_Bomjimb/z_en_bomjimb.c | 4 +- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 2 +- src/overlays/actors/ovl_En_Fall/z_en_fall.c | 2 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 4 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 2 +- src/overlays/actors/ovl_En_Holl/z_en_holl.c | 6 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 2 +- .../z_en_horse_game_check.c | 2 +- src/overlays/actors/ovl_En_Hs/z_en_hs.c | 2 +- src/overlays/actors/ovl_En_In/z_en_in.c | 4 +- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 6 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 2 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 2 +- .../actors/ovl_En_Look_Nuts/z_en_look_nuts.c | 2 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 6 +- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.c | 2 +- src/overlays/actors/ovl_En_Mag/z_en_mag.c | 4 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- .../actors/ovl_En_Pamera/z_en_pamera.c | 2 +- src/overlays/actors/ovl_En_Shn/z_en_shn.c | 2 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 2 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 2 +- src/overlays/actors/ovl_En_Test6/z_en_test6.c | 4 +- src/overlays/actors/ovl_En_Test7/z_en_test7.c | 2 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 2 +- .../actors/ovl_En_Tru_Mt/z_en_tru_mt.c | 2 +- .../actors/ovl_En_Warp_tag/z_en_warp_tag.c | 2 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 3 +- src/overlays/actors/ovl_En_Zov/z_en_zov.c | 2 +- .../actors/ovl_Obj_Nozoki/z_obj_nozoki.c | 2 +- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c | 2 +- .../actors/ovl_Obj_Wturn/z_obj_wturn.c | 2 +- 45 files changed, 146 insertions(+), 137 deletions(-) diff --git a/include/z64.h b/include/z64.h index 9578aedb3..8702b0a4c 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1404,7 +1404,7 @@ struct GlobalContext { /* 0x1886C */ AnimatedMaterial* sceneMaterialAnims; /* 0x18870 */ void* specialEffects; /* 0x18874 */ u8 skyboxId; - /* 0x18875 */ s8 sceneLoadFlag; // "fade_direction" + /* 0x18875 */ s8 transitionTrigger; // "fade_direction" /* 0x18876 */ s16 unk_18876; /* 0x18878 */ s16 bgCoverAlpha; /* 0x1887A */ u16 nextEntranceIndex; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 01ed87e70..d4c9ad97a 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -81,7 +81,7 @@ CutsceneStateHandler sCsStateHandlers2[] = { }; void Cutscene_Update2(GlobalContext* globalCtx, CutsceneContext* csCtx) { - if ((gSaveContext.cutsceneTrigger != 0) && (globalCtx->sceneLoadFlag == 0x14)) { + if ((gSaveContext.cutsceneTrigger != 0) && (globalCtx->transitionTrigger == 0x14)) { gSaveContext.cutsceneTrigger = 0; } @@ -292,7 +292,7 @@ void Cutscene_Command_Misc(GlobalContext* globalCtx2, CutsceneContext* csCtx, Cs if (isStartFrame) { globalCtx->nextEntranceIndex = 0x1C00; gSaveContext.nextCutsceneIndex = 0xFFF8; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } break; @@ -571,7 +571,7 @@ void Cutscene_TerminatorImpl(GlobalContext* globalCtx, CutsceneContext* csCtx, C if (cmd->base == 1) { globalCtx->nextEntranceIndex = globalCtx->csCtx.sceneCsList[globalCtx->csCtx.currentCsIndex].nextEntranceIndex; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; if (gSaveContext.gameMode != 1) { Scene_SetExitFade(globalCtx); } else { @@ -604,12 +604,12 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt case 0x1F: if (gSaveContext.save.weekEventReg[20] & 2) { globalCtx->nextEntranceIndex = 0x3010; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } else { globalCtx->nextEntranceIndex = 0x8600; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } break; @@ -617,12 +617,12 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt case 0x44: if (gSaveContext.save.weekEventReg[33] & 0x80) { globalCtx->nextEntranceIndex = 0xAE70; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } else { globalCtx->nextEntranceIndex = 0xAE00; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } break; @@ -631,7 +631,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt gSaveContext.save.weekEventReg[55] |= 0x80; globalCtx->nextEntranceIndex = 0x6A80; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; break; @@ -639,7 +639,7 @@ void Cutscene_Command_Terminator(GlobalContext* globalCtx, CutsceneContext* csCt gSaveContext.save.weekEventReg[52] |= 0x20; globalCtx->nextEntranceIndex = 0x2000; gSaveContext.nextCutsceneIndex = 0xFFF1; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; break; } @@ -666,7 +666,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C00; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 3: @@ -679,7 +679,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C10; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 4: @@ -692,7 +692,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C20; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 5: @@ -705,7 +705,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C30; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 6: @@ -718,7 +718,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C50; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 7: @@ -731,14 +731,14 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C60; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 8: // Ikana canyon globalCtx->nextEntranceIndex = 0x2000; gSaveContext.nextCutsceneIndex = 0xFFF3; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 9: @@ -751,7 +751,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C70; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 10: @@ -764,7 +764,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C40; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; case 11: @@ -777,7 +777,7 @@ void Cutscene_Command_ChooseCreditsScenes(GlobalContext* globalCtx, CutsceneCont globalCtx->nextEntranceIndex = 0x1C80; gSaveContext.nextCutsceneIndex = 0xFFF9; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; break; } } @@ -1175,7 +1175,8 @@ void Cutscene_ProcessCommands(GlobalContext* globalCtx, CutsceneContext* csCtx, bcopy(cutscenePtr, &cutsceneEndFrame, sizeof(s32)); cutscenePtr += sizeof(s32); - if (((u16)cutsceneEndFrame < csCtx->frames) && (globalCtx->sceneLoadFlag != 0x14) && (csCtx->state != CS_STATE_4)) { + if (((u16)cutsceneEndFrame < csCtx->frames) && (globalCtx->transitionTrigger != 0x14) && + (csCtx->state != CS_STATE_4)) { csCtx->state = CS_STATE_3; return; } diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 78f05903d..3c9db3638 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -70,7 +70,7 @@ void KaleidoSetup_Update(GlobalContext* globalCtx) { } if ((pauseCtx->state == 0) && (pauseCtx->debugState == 0) && (globalCtx->gameOverCtx.state == GAMEOVER_INACTIVE)) { - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { + if ((globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(globalCtx) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { if ((globalCtx->unk_1887C < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 03c7c7209..fa4117d49 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -148,9 +148,9 @@ u16 sMinigameScoreDigits[] = { 0, 0, 0, 0 }; u16 sCUpInvisible = 0; u16 sCUpTimer = 0; -s16 sMagicBarOutlinePrimRed = 255; -s16 sMagicBarOutlinePrimGreen = 255; -s16 sMagicBarOutlinePrimBlue = 255; +s16 sMagicMeterOutlinePrimRed = 255; +s16 sMagicMeterOutlinePrimGreen = 255; +s16 sMagicMeterOutlinePrimBlue = 255; s16 sMagicBorderRatio = 2; s16 sMagicBorderStep = 1; @@ -1638,7 +1638,7 @@ void func_80110038(GlobalContext* globalCtx) { gSaveContext.unk_3F22 = 0; } - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { + if ((globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { if (ActorCutscene_GetCurrentIndex() == -1) { Interface_ChangeAlpha(50); } @@ -1898,7 +1898,7 @@ void func_80110038(GlobalContext* globalCtx) { } } - if (phi_t3 && (globalCtx->activeCamera == 0) && (globalCtx->sceneLoadFlag == 0) && + if (phi_t3 && (globalCtx->activeCamera == 0) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { gSaveContext.unk_3F22 = 0; Interface_ChangeAlpha(50); @@ -1982,7 +1982,7 @@ void func_80111CB4(GlobalContext* globalCtx) { if (globalCtx->transitionMode != 0) { Interface_ChangeAlpha(1); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && - (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { + (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->transitionTrigger == 0)) { Interface_ChangeAlpha(12); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.eventInf[3] & 0x20)) { Interface_ChangeAlpha(17); @@ -2040,7 +2040,7 @@ void func_80111CB4(GlobalContext* globalCtx) { if (globalCtx->transitionMode != 0) { Interface_ChangeAlpha(1); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && - (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->sceneLoadFlag == 0)) { + (Cutscene_GetSceneSetupIndex(globalCtx) != 0) && (globalCtx->transitionTrigger == 0)) { Interface_ChangeAlpha(12); } else if (gSaveContext.minigameState == 1) { Interface_ChangeAlpha(8); @@ -2108,12 +2108,12 @@ void func_80111CB4(GlobalContext* globalCtx) { } } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x8E10) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { + (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_ChangeAlpha(12); - } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->sceneLoadFlag == 0) && + } else if ((gSaveContext.save.entranceIndex == 0xD010) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; @@ -2136,7 +2136,7 @@ void func_80111CB4(GlobalContext* globalCtx) { } if (sp28) { gSaveContext.unk_3F22 = 0; - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0)) { + if ((globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { Interface_ChangeAlpha(50); } } @@ -3170,12 +3170,12 @@ void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd) { void Magic_Reset(GameState* gamestate) { if ((gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; gSaveContext.magicState = MAGIC_STATE_IDLE; } } -s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) { +s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; if (!gSaveContext.save.playerData.isMagicAcquired) { @@ -3189,9 +3189,10 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - switch (consumeType) { - case MAGIC_BAR_CONSUME_NOW: // Deku Bubble + switch (type) { + case MAGIC_BAR_CONSUME_NOW: case MAGIC_BAR_CONSUME_NOW_ALT: + // Deku Bubble if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3225,7 +3226,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_LENS: // Lens + case MAGIC_BAR_CONSUME_LENS: if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 80; @@ -3240,7 +3241,8 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_WAIT_PREVIEW: // Spin Attack + case MAGIC_BAR_CONSUME_WAIT_PREVIEW: + // Spin Attack if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3254,7 +3256,8 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_GORON_ZORA: // Zora Shock, Goron Spike Roll + case MAGIC_BAR_CONSUME_GORON_ZORA: + // Zora Shock, Goron Spike Roll if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 10; gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA_SETUP; @@ -3263,7 +3266,8 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_GIANTS_MASK: // Giants Mask + case MAGIC_BAR_CONSUME_GIANTS_MASK: + // Wearing Giants Mask if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANT; @@ -3279,7 +3283,9 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) return false; } - case MAGIC_BAR_CONSUME_DEITY_BEAM: // Fierce Deity Beam + case MAGIC_BAR_CONSUME_DEITY_BEAM: + // Using Fierce Deity Beam + // Consumes magic immediately if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3294,10 +3300,9 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 consumeType) play_sound(NA_SE_SY_ERROR); return false; } - - default: - return false; } + + return false; } void Magic_UpdateAddRequest(void) { @@ -3331,33 +3336,33 @@ void Magic_UpdateMeterBorderColor(void) { s16 borderChangeB; s16 index = sMagicBorderIndices[sMagicBorderStep]; - borderChangeR = ABS_ALT(sMagicBarOutlinePrimRed - sMagicBorderColors[index][0]) / sMagicBorderRatio; - borderChangeG = ABS_ALT(sMagicBarOutlinePrimGreen - sMagicBorderColors[index][1]) / sMagicBorderRatio; - borderChangeB = ABS_ALT(sMagicBarOutlinePrimBlue - sMagicBorderColors[index][2]) / sMagicBorderRatio; + borderChangeR = ABS_ALT(sMagicMeterOutlinePrimRed - sMagicBorderColors[index][0]) / sMagicBorderRatio; + borderChangeG = ABS_ALT(sMagicMeterOutlinePrimGreen - sMagicBorderColors[index][1]) / sMagicBorderRatio; + borderChangeB = ABS_ALT(sMagicMeterOutlinePrimBlue - sMagicBorderColors[index][2]) / sMagicBorderRatio; - if (sMagicBarOutlinePrimRed >= sMagicBorderColors[index][0]) { - sMagicBarOutlinePrimRed -= borderChangeR; + if (sMagicMeterOutlinePrimRed >= sMagicBorderColors[index][0]) { + sMagicMeterOutlinePrimRed -= borderChangeR; } else { - sMagicBarOutlinePrimRed += borderChangeR; + sMagicMeterOutlinePrimRed += borderChangeR; } - if (sMagicBarOutlinePrimGreen >= sMagicBorderColors[index][1]) { - sMagicBarOutlinePrimGreen -= borderChangeG; + if (sMagicMeterOutlinePrimGreen >= sMagicBorderColors[index][1]) { + sMagicMeterOutlinePrimGreen -= borderChangeG; } else { - sMagicBarOutlinePrimGreen += borderChangeG; + sMagicMeterOutlinePrimGreen += borderChangeG; } - if (sMagicBarOutlinePrimBlue >= sMagicBorderColors[index][2]) { - sMagicBarOutlinePrimBlue -= borderChangeB; + if (sMagicMeterOutlinePrimBlue >= sMagicBorderColors[index][2]) { + sMagicMeterOutlinePrimBlue -= borderChangeB; } else { - sMagicBarOutlinePrimBlue += borderChangeB; + sMagicMeterOutlinePrimBlue += borderChangeB; } sMagicBorderRatio--; if (sMagicBorderRatio == 0) { - sMagicBarOutlinePrimRed = sMagicBorderColors[index][0]; - sMagicBarOutlinePrimGreen = sMagicBorderColors[index][1]; - sMagicBarOutlinePrimBlue = sMagicBorderColors[index][2]; + sMagicMeterOutlinePrimRed = sMagicBorderColors[index][0]; + sMagicMeterOutlinePrimGreen = sMagicBorderColors[index][1]; + sMagicMeterOutlinePrimBlue = sMagicBorderColors[index][2]; sMagicBorderRatio = sMagicBorderColorTimerIndex[sMagicBorderStep]; @@ -3423,7 +3428,7 @@ void Magic_Update(GlobalContext* globalCtx) { gSaveContext.save.playerData.magic = 0; } gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; } // fallthrough @@ -3436,13 +3441,14 @@ void Magic_Update(GlobalContext* globalCtx) { break; case MAGIC_STATE_RESET: - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; gSaveContext.magicState = MAGIC_STATE_IDLE; break; case MAGIC_STATE_CONSUME_LENS: + // Slowly consume magic while lens is on if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { if ((gSaveContext.save.playerData.magic == 0) || @@ -3451,10 +3457,11 @@ void Magic_Update(GlobalContext* globalCtx) { (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || !globalCtx->actorCtx.lensActive) { + // Force lens off and set magic meter state to idle globalCtx->actorCtx.lensActive = false; play_sound(NA_SE_SY_GLASSMODE_OFF); gSaveContext.magicState = MAGIC_STATE_IDLE; - sMagicBarOutlinePrimRed = sMagicBarOutlinePrimGreen = sMagicBarOutlinePrimBlue = 255; + sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; break; } @@ -3482,7 +3489,7 @@ void Magic_Update(GlobalContext* globalCtx) { // fallthrough case MAGIC_STATE_CONSUME_GORON_ZORA: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->magicConsumptionTimer--; @@ -3504,7 +3511,7 @@ void Magic_Update(GlobalContext* globalCtx) { case MAGIC_STATE_CONSUME_GIANTS_MASK: if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) && (msgCtx->msgMode == 0) && - (globalCtx->gameOverCtx.state == 0) && (globalCtx->sceneLoadFlag == 0) && + (globalCtx->gameOverCtx.state == 0) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0)) { if (!Play_InCsMode(globalCtx)) { interfaceCtx->magicConsumptionTimer--; @@ -3548,16 +3555,16 @@ void Magic_DrawMeter(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, - sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, sMagicBarOutlinePrimBlue, + sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, ((void)0, gSaveContext.magicCapacity), - 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, - sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha); + 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, + sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); OVERLAY_DISP = func_8010D480(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, ((void)0, gSaveContext.magicCapacity) + 26, magicBarY, - 8, 16, 1 << 10, 1 << 10, sMagicBarOutlinePrimRed, sMagicBarOutlinePrimGreen, - sMagicBarOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); + 8, 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, + sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE, @@ -5114,7 +5121,7 @@ void func_8011C808(GlobalContext* globalCtx) { gSaveContext.save.time = 0x400A; globalCtx->nextEntranceIndex = 0x54C0; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; } @@ -5173,7 +5180,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { (globalCtx->gameOverCtx.state == 0) && ((msgCtx->msgMode == 0) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && - !(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && + !(player->stateFlags1 & 0x200) && (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { if (D_801BF968) { @@ -5353,7 +5360,7 @@ void Interface_DrawTimers(GlobalContext* globalCtx) { if ((globalCtx->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { globalCtx->nextEntranceIndex = 0x5410; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } else { func_8011C808(globalCtx); } @@ -5601,7 +5608,7 @@ void Interface_UpdateTimers(GlobalContext* globalCtx) { (globalCtx->gameOverCtx.state == 0) && ((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || ((msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && - (globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { + (globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0) && !Play_InCsMode(globalCtx)) { if (D_801BF96C) { var3 = osGetTime(); diff --git a/src/code/z_play.c b/src/code/z_play.c index aa360934e..6227eb3bd 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -215,7 +215,7 @@ void func_80169EFC(GameState* gameState) { globalCtx->nextEntranceIndex = gSaveContext.respawn[RESTART_MODE_DOWN].entranceIndex; gSaveContext.respawnFlag = 1; func_80169ECC(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; } @@ -227,7 +227,7 @@ void func_80169F78(GameState* gameState) { globalCtx->nextEntranceIndex = gSaveContext.respawn[RESTART_MODE_TOP].entranceIndex; gSaveContext.respawnFlag = -1; func_80169ECC(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; } diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 973760773..0e68e6d93 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -249,7 +249,7 @@ void func_809542A0(BgIngate* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0xA810; } gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; this->actionFunc = func_80953F8C; diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index b778f3fcc..1d4ca29bd 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1566,7 +1566,7 @@ void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) { if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.currentTextId == 0x5E6) && !FrameAdvance_IsEnabled(&globalCtx->state) && - (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && + (globalCtx->transitionTrigger == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); if (REG(15) != 0) { diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index c20f17cce..bfb9d222a 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -129,7 +129,7 @@ void DoorAna_WaitOpen(DoorAna* this, GlobalContext* globalCtx) { s32 grottoType = DOORANA_GET_TYPE(&this->actor); if (Math_StepToF(&this->actor.scale.x, 0.01f, 0.001f)) { - if (this->actor.targetMode != 0 && globalCtx->sceneLoadFlag == 0 && globalCtx->transitionMode == 0 && + if (this->actor.targetMode != 0 && globalCtx->transitionTrigger == 0 && globalCtx->transitionMode == 0 && (player->stateFlags1 & 0x80000000) && player->unk_AE7 == 0) { if (grottoType == DOORANA_TYPE_VISIBLE_SCENE_EXIT) { diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index dd41ac015..c7f013570 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -486,7 +486,7 @@ void func_808B98A8(DoorWarp1* this, GlobalContext* globalCtx) { if (DOORWARP1_GET_FF00_1(&this->dyna.actor) != 0xFF) { globalCtx->nextEntranceIndex = globalCtx->setupExitList[DOORWARP1_GET_FF00_3(&this->dyna.actor)]; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } else { func_80169FDC(&globalCtx->state); } @@ -704,7 +704,7 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { gSaveContext.nextCutsceneIndex = phi_v0_3 + 0xFFF0; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } else { @@ -713,13 +713,13 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { if (gSaveContext.save.weekEventReg[20] & 2) { gSaveContext.save.weekEventReg[7] |= 0x80; globalCtx->nextEntranceIndex = 0x3010; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } else { globalCtx->nextEntranceIndex = 0x8600; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } @@ -728,7 +728,7 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { case 1: gSaveContext.save.weekEventReg[33] |= 0x80; globalCtx->nextEntranceIndex = 0xAE70; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; break; @@ -737,14 +737,14 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { if (gSaveContext.save.weekEventReg[55] & 0x80) { globalCtx->nextEntranceIndex = 0x6A90; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } else { gSaveContext.save.weekEventReg[55] |= 0x80; globalCtx->nextEntranceIndex = 0x6A80; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } @@ -754,7 +754,7 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { gSaveContext.save.weekEventReg[52] |= 0x20; globalCtx->nextEntranceIndex = 0x20F0; gSaveContext.nextCutsceneIndex = 0xFFF2; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; break; @@ -766,7 +766,7 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { } globalCtx->nextEntranceIndex = globalCtx->setupExitList[DOORWARP1_GET_FF00_3(&this->dyna.actor)]; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } else { func_80169FDC(&globalCtx->state); } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 89f949a9d..4138fa060 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -421,7 +421,7 @@ void func_809C1C9C(EnAob01* this, GlobalContext* globalCtx) { gSaveContext.nextTransition = 0x40; gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & (u8)~7) | 2; gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & 7) | (this->unk_432 * 8); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } @@ -671,7 +671,7 @@ void func_809C2788(EnAob01* this, GlobalContext* globalCtx) { gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & (u8)~7) | 3; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 3; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } } diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index 4d9c7bad3..67c4e68de 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -255,7 +255,7 @@ void func_80BA8C4C(GlobalContext* globalCtx, u16 nextEntrance) { globalCtx->nextEntranceIndex = nextEntrance; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 0x40; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } void func_80BA8C90(EnBaba* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 4270ae46f..534c143df 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -335,7 +335,7 @@ void func_809C51B4(EnBomBowlMan* this, GlobalContext* globalCtx) { ((globalCtx->msgCtx.msgMode == 0) || (Message_GetState(&globalCtx->msgCtx) == 6))) { globalCtx->nextEntranceIndex = Entrance_CreateIndexFromSpawn(6); gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x56; gSaveContext.nextTransition = 3; gSaveContext.save.weekEventReg[75] &= (u8)~0x40; diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 300679a4e..12fd9d2cb 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -759,7 +759,7 @@ void func_80BFFBC4(EnBomjima* this, GlobalContext* globalCtx) { func_801477B4(globalCtx); globalCtx->nextEntranceIndex = Entrance_CreateIndexFromSpawn(6); gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 20; + globalCtx->transitionTrigger = 20; globalCtx->unk_1887F = 0x56; gSaveContext.nextTransition = 3; ActorCutscene_Stop(this->unk_2D4[1]); diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index a0392018a..7caf48737 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -789,11 +789,11 @@ void func_80C02CA4(EnBomjimb* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = globalCtx->setupExitList[this->unk_2B2]; gSaveContext.nextCutsceneIndex = 0; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } else { globalCtx->nextEntranceIndex = Entrance_CreateIndexFromSpawn(5); gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x56; gSaveContext.nextTransition = 3; } diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 6b7943504..728294b79 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -442,7 +442,7 @@ void func_8092D330(EnDns* this, GlobalContext* globalCtx) { this->unk_2C6 &= ~0x100; globalCtx->nextEntranceIndex = 0x5010; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; } diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.c b/src/overlays/actors/ovl_En_Fall/z_en_fall.c index dabd62e0f..242527739 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.c +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.c @@ -342,7 +342,7 @@ void EnFall_CrashingMoon_HandleGiantsCutscene(EnFall* this, GlobalContext* globa } else if (globalCtx->csCtx.frames > 1600) { globalCtx->nextEntranceIndex = 0x2C00; gSaveContext.nextCutsceneIndex = 0xFFF2; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; gSaveContext.nextTransition = 2; sGiantsCutsceneState = 9; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 51508fc20..4d94023c1 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -359,14 +359,14 @@ void func_80B0FE18(GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x9C10; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 0x40; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } void func_80B0FE7C(GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x9C20; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 0x40; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } void func_80B0FEBC(EnGb2* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 6981c8874..9449762ab 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -724,7 +724,7 @@ void func_80B51B40(EnGk* this, GlobalContext* globalCtx) { if (this->unk_31C == 0xE8F) { globalCtx->nextEntranceIndex = 0xD010; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; Magic_Add(globalCtx, diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.c b/src/overlays/actors/ovl_En_Holl/z_en_holl.c index 7e54332a1..fd981483d 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.c +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.c @@ -162,7 +162,7 @@ void EnHoll_VisibleIdle(EnHoll* this, GlobalContext* globalCtx) { func_800B9010(&this->actor, NA_SE_EV_INVISIBLE_MONKEY - SFX_FLAG); } } - if ((globalCtx->sceneLoadFlag != 0) || (globalCtx->transitionMode != 0)) { + if ((globalCtx->transitionTrigger != 0) || (globalCtx->transitionMode != 0)) { this->alpha = 255; } else { f32 enHollBottom = EN_HOLL_BOTTOM_DEFAULT; @@ -191,7 +191,7 @@ void EnHoll_VisibleIdle(EnHoll* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = globalCtx->setupExitList[EN_HOLL_GET_EXIT_LIST_INDEX(this)]; gSaveContext.unk_3DBB = 1; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1878C(globalCtx); } else { this->actor.room = globalCtx->doorCtx.transitionActorList[enHollId].sides[this->playerSide ^ 1].room; @@ -309,7 +309,7 @@ void EnHoll_Update(Actor* thisx, GlobalContext* globalCtx) { EnHoll* this = THIS; Player* player = GET_PLAYER(globalCtx); - if ((globalCtx->sceneLoadFlag == 0) && (globalCtx->transitionMode == 0) && !(player->stateFlags1 & 0x200)) { + if ((globalCtx->transitionTrigger == 0) && (globalCtx->transitionMode == 0) && !(player->stateFlags1 & 0x200)) { this->actionFunc(this, globalCtx); } } diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 75ef98bf9..02cb8ba0b 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -2917,7 +2917,7 @@ void EnHorse_UpdateHorsebackArchery(EnHorse* this, GlobalContext* globalCtx) { if (((this->hbaFlags & 1) || (this->hbaTimer > 45)) && (sp28 != 1) && (gSaveContext.minigameState != 3)) { gSaveContext.save.cutscene = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x40; } diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 7b9fa684e..1a5f33f45 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -173,7 +173,7 @@ s32 func_808F8EB0(EnHorseGameCheck* this, GlobalContext* globalCtx) { D_801BDAA0 = 1; } globalCtx->nextEntranceIndex = 0xCE20; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; return false; } diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c index e15e3adb3..dba5f9f16 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -215,7 +215,7 @@ void func_809532C0(EnHs* this, GlobalContext* globalCtx) { void func_809532D0(EnHs* this, GlobalContext* globalCtx) { if (DECR(this->unk_2A2) == 0) { globalCtx->nextEntranceIndex = globalCtx->setupExitList[ENHS_GET_F(&this->actor)]; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; gSaveContext.save.weekEventReg[25] |= 8; this->actionFunc = func_809532C0; } diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 31bd34cc6..6ea4e07c9 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -820,7 +820,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_800FD750(NA_BGM_HORSE); globalCtx->nextEntranceIndex = 0xCE50; globalCtx->unk_1887F = 5; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; gSaveContext.save.weekEventReg[57] |= 1; break; case 0x3478: @@ -1067,7 +1067,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_800FD750(NA_BGM_HORSE); globalCtx->nextEntranceIndex = 0xCE50; globalCtx->unk_1887F = 5; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; gSaveContext.save.weekEventReg[57] |= 1; break; case 0x349D: diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index 557b96b31..3f26aee78 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -1998,7 +1998,7 @@ void func_80B47108(EnInvadepoh* this, GlobalContext* globalCtx) { if (this->actionTimer <= 0) { globalCtx->nextEntranceIndex = 0x6460; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x49; gSaveContext.nextTransition = 0x48; D_801BDAA0 = 1; @@ -2016,7 +2016,7 @@ void func_80B471E0(EnInvadepoh* this, GlobalContext* globalCtx) { if (D_80B4E998) { globalCtx->nextEntranceIndex = 0x6470; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x48; gSaveContext.nextTransition = 0x48; func_80B47248(this); @@ -2039,7 +2039,7 @@ void func_80B47278(EnInvadepoh* this) { void func_80B47298(EnInvadepoh* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x6400; gSaveContext.nextCutsceneIndex = 0xFFF3; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x48; gSaveContext.nextTransition = 0x48; gSaveContext.save.weekEventReg[89] |= 0x10; diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index a3878d9f2..3f62b864f 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -368,7 +368,7 @@ void func_80C144E4(EnJgameTsn* this) { void func_80C144F8(EnJgameTsn* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x68D0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x50; gSaveContext.nextTransition = 3; } diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 9a6ffeffd..d9781972c 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -515,7 +515,7 @@ void func_80B41A48(EnKgy* this, GlobalContext* globalCtx) { this->unk_2E4--; } else { globalCtx->nextEntranceIndex = globalCtx->setupExitList[ENKGY_GET_1F(&this->actor)]; - globalCtx->sceneLoadFlag = 20; + globalCtx->transitionTrigger = 20; } } diff --git a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c index 73a559a70..7e2937507 100644 --- a/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c +++ b/src/overlays/actors/ovl_En_Look_Nuts/z_en_look_nuts.c @@ -298,7 +298,7 @@ void EnLookNuts_SendPlayerToSpawn(EnLookNuts* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = Entrance_CreateIndexFromSpawn(this->spawnIndex); gSaveContext.nextCutsceneIndex = 0; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; gSaveContext.save.weekEventReg[17] |= 4; } } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 4d96184be..089d63907 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -668,7 +668,7 @@ void EnMa4_SetupBeginHorsebackGame(EnMa4* this) { void EnMa4_BeginHorsebackGame(EnMa4* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x6400; gSaveContext.nextCutsceneIndex = 0xFFF0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x50; gSaveContext.nextTransition = 3; } @@ -760,7 +760,7 @@ void EnMa4_HorsebackGameEnd(EnMa4* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x6410; gSaveContext.nextCutsceneIndex = 0; sFrameCounter = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; if (this->poppedBalloonCounter == 10) { globalCtx->unk_1887F = 0x50; @@ -865,7 +865,7 @@ void EnMa4_SetupBeginDescribeThemCs(EnMa4* this) { void EnMa4_BeginDescribeThemCs(EnMa4* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x6400; gSaveContext.nextCutsceneIndex = 0xFFF5; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 2; } diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index 5847aa897..5577b5aad 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -1088,7 +1088,7 @@ void EnMaYto_PostMilkRunEnd(EnMaYto* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x6480; } gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x50; gSaveContext.nextTransition = 3; } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 907ba619b..621b4fc27 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -381,7 +381,7 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) { if (CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_START) || CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_A) || CHECK_BTN_ALL(CONTROLLER1(globalCtx)->press.button, BTN_B)) { - if (globalCtx->sceneLoadFlag != 0x14) { + if (globalCtx->transitionTrigger != 0x14) { Audio_SetCutsceneFlag(false); D_801BB12C++; if (D_801BB12C >= 2) { @@ -389,7 +389,7 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) { } play_sound(NA_SE_SY_PIECE_OF_HEART); gSaveContext.gameMode = 2; // Go to FileChoose - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; globalCtx->nextEntranceIndex = 0x1C00; gSaveContext.save.cutscene = 0; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 2d1dcc4ad..39c9b28a0 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -242,7 +242,7 @@ s32 EnMttag_ExitRace(GlobalContext* globalCtx, s32 arg1, s32 nextTransition) { gSaveContext.nextCutsceneIndex = 0; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = arg1; gSaveContext.nextTransition = nextTransition; func_801477B4(globalCtx); @@ -428,7 +428,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, GlobalContext* globalCtx) { gSaveContext.nextCutsceneIndex = 0; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; gSaveContext.nextTransition = 2; func_801477B4(globalCtx); diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 06cf9b22d..cd8afbd71 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -684,7 +684,7 @@ void func_80BD9B4C(EnPamera* this, GlobalContext* globalCtx) { void func_80BD9C70(EnPamera* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0x2020; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 0x46; gSaveContext.nextTransition = 2; } diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index bc5f24ee2..5a0ea95f3 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -260,7 +260,7 @@ s32 func_80AE6704(EnShn* thisx, GlobalContext* globalCtx) { func_800B7298(globalCtx, &this->actor, 7); globalCtx->nextEntranceIndex = 0x8460; gSaveContext.nextCutsceneIndex = 0; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 7; this->unk_2C6++; diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 613e6d6c7..f27ff6ec8 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -223,7 +223,7 @@ void EnSuttari_SetNextEntrance(GlobalContext* globalCtx, u16 nextEntranceIndex) globalCtx->nextEntranceIndex = nextEntranceIndex; globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 0x40; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } void EnSuttari_UpdateTime(void) { diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index fc3b5182b..4f11d5ae2 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -457,7 +457,7 @@ void func_80A42AB8(EnTest4* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0xD800; } gSaveContext.nextCutsceneIndex = 0xFFF1; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; player->stateFlags1 |= 0x200; Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/actors/ovl_En_Test6/z_en_test6.c b/src/overlays/actors/ovl_En_Test6/z_en_test6.c index de1a18241..7d04f6fdd 100644 --- a/src/overlays/actors/ovl_En_Test6/z_en_test6.c +++ b/src/overlays/actors/ovl_En_Test6/z_en_test6.c @@ -979,7 +979,7 @@ void func_80A92950(EnTest6* this, GlobalContext* globalCtx) { Play_SetRespawnData(&globalCtx->state, 1, ((void)0, gSaveContext.save.entranceIndex & 0xFFFF), player->unk_3CE, 0xBFF, &player->unk_3C0, player->unk_3CC); this->unk_276 = 99; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->nextEntranceIndex = gSaveContext.respawn[RESTART_MODE_RETURN].entranceIndex; globalCtx->unk_1887F = 2; if ((gSaveContext.save.time > CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 0))) { @@ -1060,7 +1060,7 @@ void func_80A92950(EnTest6* this, GlobalContext* globalCtx) { Play_SetRespawnData(&globalCtx->state, 1, ((void)0, gSaveContext.save.entranceIndex & 0xFFFF), player->unk_3CE, 0xBFF, &player->unk_3C0, player->unk_3CC); this->unk_276 = 99; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->nextEntranceIndex = gSaveContext.respawn[RESTART_MODE_RETURN].entranceIndex; globalCtx->unk_1887F = 2; gSaveContext.respawnFlag = 2; diff --git a/src/overlays/actors/ovl_En_Test7/z_en_test7.c b/src/overlays/actors/ovl_En_Test7/z_en_test7.c index c5fda21f0..1c536952c 100644 --- a/src/overlays/actors/ovl_En_Test7/z_en_test7.c +++ b/src/overlays/actors/ovl_En_Test7/z_en_test7.c @@ -669,7 +669,7 @@ void func_80AF2350(EnTest7* this, GlobalContext* globalCtx) { } } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->unk_1887F = 2; gSaveContext.seqIndex = 0xFF; gSaveContext.nightSeqIndex = 0xFF; diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 4499948dc..0ffd73efd 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -1040,7 +1040,7 @@ void EnTrt_ShopkeeperGone(EnTrt* this, GlobalContext* globalCtx) { } globalCtx->unk_1887F = 0x40; gSaveContext.nextTransition = 0x40; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index e191cc3cd..ce4f92f1b 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -376,7 +376,7 @@ void func_80B76BB8(EnTruMt* this, GlobalContext* globalCtx) { globalCtx->nextEntranceIndex = 0xA810; globalCtx->unk_1887F = 3; gSaveContext.nextTransition = 3; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } } diff --git a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c index 5759b0a9b..754f96240 100644 --- a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c +++ b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c @@ -243,7 +243,7 @@ void EnWarpTag_GrottoReturn(EnWarptag* this, GlobalContext* globalCtx) { if (this->grottoExitDelay++ == 10) { globalCtx->nextEntranceIndex = globalCtx->setupExitList[GET_WARPTAG_EXIT_INDEX(&this->dyna.actor)]; Scene_SetExitFade(globalCtx); - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; func_8019F128(NA_SE_OC_SECRET_HOLE_OUT); func_801A4058(5); if (1) {} diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 3d6023616..5eea78fec 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -486,7 +486,8 @@ void EnWeatherTag_Update(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.currentTextId == 0x5E6) && (!FrameAdvance_IsEnabled(&globalCtx->state)) && - (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { + (globalCtx->transitionTrigger == 0) && (ActorCutscene_GetCurrentIndex() == -1) && + (globalCtx->csCtx.state == 0)) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(0xF); if (REG(0xF) != 0) { diff --git a/src/overlays/actors/ovl_En_Zov/z_en_zov.c b/src/overlays/actors/ovl_En_Zov/z_en_zov.c index f593709cf..9bb9cb976 100644 --- a/src/overlays/actors/ovl_En_Zov/z_en_zov.c +++ b/src/overlays/actors/ovl_En_Zov/z_en_zov.c @@ -425,7 +425,7 @@ void func_80BD1DB8(EnZov* this, GlobalContext* globalCtx) { case 0x1039: globalCtx->nextEntranceIndex = globalCtx->setupExitList[ENZOV_GET_FE00(&this->actor)]; globalCtx->unk_1887F = 5; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; gSaveContext.save.weekEventReg[78] |= 1; this->actionFunc = func_80BD1D94; globalCtx->msgCtx.unk11F10 = 0; diff --git a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c index 2ff0e093e..56c839ed8 100644 --- a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c +++ b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c @@ -443,7 +443,7 @@ void func_80BA3344(ObjNozoki* this, GlobalContext* globalCtx) { } } else if ((this->dyna.actor.textId == 0) || Actor_TextboxIsClosing(&this->dyna.actor, globalCtx)) { globalCtx->nextEntranceIndex = 0xE20; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index 95f0eb3a8..7d647b919 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -457,7 +457,7 @@ void ObjTokeidai_TowerOpening_EndCutscene(ObjTokeidai* this, GlobalContext* glob gSaveContext.save.cutscene = 0; gSaveContext.nextCutsceneIndex = 0; gSaveContext.respawnFlag = 2; - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; globalCtx->nextEntranceIndex = gSaveContext.respawn[RESTART_MODE_RETURN].entranceIndex; globalCtx->unk_1887F = 2; if (gSaveContext.respawn[RESTART_MODE_RETURN].playerParams == 0xCFF) { diff --git a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c index 34d82523f..6dd29c77a 100644 --- a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c +++ b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c @@ -117,7 +117,7 @@ void func_808A7C78(ObjWturn* this, GlobalContext* globalCtx) { } else { globalCtx->nextEntranceIndex = 0xAA10; } - globalCtx->sceneLoadFlag = 0x14; + globalCtx->transitionTrigger = 0x14; } } From 18555bcbd1baaf7bb41affcd96fcf93796d8a6b4 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 18:19:12 +1000 Subject: [PATCH 115/160] More magic docs --- include/functions.h | 2 +- include/regs.h | 4 --- include/z64save.h | 16 ++++----- src/code/z_parameter.c | 62 +++++++++++++++++++++++----------- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 6 files changed, 53 insertions(+), 35 deletions(-) diff --git a/include/functions.h b/include/functions.h index 8b5b286d3..d25499512 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1938,7 +1938,7 @@ void Magic_Add(GlobalContext* globalCtx, s16 arg1); void Magic_Reset(GameState* gamestate); // void Magic_Consume(void); // void Magic_UpdateAddRequest(void); -// void Magic_UpdateMeterBorderColor(void); +// void Magic_FlashMeterBorder(void); // void Magic_Update(void); // void Magic_DrawMeter(void); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); diff --git a/include/regs.h b/include/regs.h index 67f7c322b..38d69d768 100644 --- a/include/regs.h +++ b/include/regs.h @@ -71,10 +71,6 @@ #define R_A_ICON_X XREG(20) #define R_A_BTN_COLOR(i) XREG(22 + i) #define R_MAGIC_CONSUME_TIMER_GIANT XREG(41) -#define R_MAGIC_BAR_SMALL_Y XREG(48) -#define R_MAGIC_BAR_X XREG(49) -#define R_MAGIC_BAR_LARGE_Y XREG(50) -#define R_MAGIC_FILL_X XREG(51) #define R_B_LABEL_DD WREG(0) #define R_OW_MINIMAP_X WREG(29) #define R_OW_MINIMAP_Y WREG(30) diff --git a/include/z64save.h b/include/z64save.h index d55cbe90a..d225d0218 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -41,14 +41,14 @@ typedef enum { } MagicState; typedef enum { - /* 0 */ MAGIC_BAR_CONSUME_NOW, // Consume Magic immediately without preview - /* 1 */ MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused - /* 2 */ MAGIC_BAR_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_BAR_CONSUME_NOW. Unused - /* 3 */ MAGIC_BAR_CONSUME_LENS, // Lens consumption - /* 4 */ MAGIC_BAR_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption - /* 5 */ MAGIC_BAR_CONSUME_GORON_ZORA, // Zora shock and Goron Spike Roll slow consumption - /* 6 */ MAGIC_BAR_CONSUME_GIANTS_MASK, // Giants Mask Slow consumption - /* 7 */ MAGIC_BAR_CONSUME_DEITY_BEAM // Fierce Deity Beam consumption, consumed magic now and not via request + /* 0 */ MAGIC_CONSUME_NOW, // Consume Magic immediately without preview + /* 1 */ MAGIC_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused + /* 2 */ MAGIC_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_CONSUME_NOW. Unused + /* 3 */ MAGIC_CONSUME_LENS, // Lens consumption + /* 4 */ MAGIC_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption + /* 5 */ MAGIC_CONSUME_GORON_ZORA, // Zora shock and Goron Spike Roll slow consumption + /* 6 */ MAGIC_CONSUME_GIANTS_MASK, // Giants Mask Slow consumption + /* 7 */ MAGIC_CONSUME_DEITY_BEAM // Fierce Deity Beam consumption, consumed magic now and not via request } MagicChangeType; #define MAGIC_NORMAL_METER 0x30 diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index fa4117d49..8f38dd618 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3071,7 +3071,7 @@ void func_80115844(GlobalContext* globalCtx, s16 arg1) { } /** - * Returns true if player still has health left. Otherwise, return false. + * @return false if player is out of health */ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange) { if (healthChange > 0) { @@ -3175,13 +3175,21 @@ void Magic_Reset(GameState* gamestate) { } } +/** + * Request to consume magic. + * @param amount the positive-valued amount to decrease magic by + * @param type how the magic is consumed. + * @return false if the request failed + */ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; + // Magic is not acquired yet if (!gSaveContext.save.playerData.isMagicAcquired) { return false; } + // Not enough magic available to consume if ((gSaveContext.save.playerData.magic - magicToConsume) < 0) { if (gSaveContext.magicCapacity != 0) { play_sound(NA_SE_SY_ERROR); @@ -3190,9 +3198,10 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { } switch (type) { - case MAGIC_BAR_CONSUME_NOW: - case MAGIC_BAR_CONSUME_NOW_ALT: - // Deku Bubble + case MAGIC_CONSUME_NOW: + case MAGIC_CONSUME_NOW_ALT: + // Consume magic immediately + // Ex. Deku Bubble if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3209,7 +3218,9 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_WAIT_NO_PREVIEW: + case MAGIC_CONSUME_WAIT_NO_PREVIEW: + // Sets consume target but waits to consume. + // No yellow magic to preview target consumption. if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3226,7 +3237,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_LENS: + case MAGIC_CONSUME_LENS: if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 80; @@ -3241,8 +3252,10 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_WAIT_PREVIEW: - // Spin Attack + case MAGIC_CONSUME_WAIT_PREVIEW: + // Sets consume target but waits to consume. + // Preview consumption with a yellow bar + // Ex. Spin Attack if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3256,7 +3269,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_GORON_ZORA: + case MAGIC_CONSUME_GORON_ZORA: // Zora Shock, Goron Spike Roll if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 10; @@ -3266,7 +3279,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_GIANTS_MASK: + case MAGIC_CONSUME_GIANTS_MASK: // Wearing Giants Mask if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { @@ -3283,7 +3296,7 @@ s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type) { return false; } - case MAGIC_BAR_CONSUME_DEITY_BEAM: + case MAGIC_CONSUME_DEITY_BEAM: // Using Fierce Deity Beam // Consumes magic immediately if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || @@ -3330,7 +3343,7 @@ s16 sMagicBorderColors[][3] = { }; s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; -void Magic_UpdateMeterBorderColor(void) { +void Magic_FlashMeterBorder(void) { s16 borderChangeR; s16 borderChangeG; s16 borderChangeB; @@ -3379,11 +3392,13 @@ void Magic_Update(GlobalContext* globalCtx) { s16 magicCapacityTarget; if (gSaveContext.save.weekEventReg[14] & 8) { - Magic_UpdateMeterBorderColor(); + Magic_FlashMeterBorder(); } switch (gSaveContext.magicState) { case MAGIC_STATE_STEP_CAPACITY: + // Step magicCapacity to the capacity determined by magicLevel + // This changes the width of the magic meter drawn magicCapacityTarget = gSaveContext.save.playerData.magicLevel * MAGIC_NORMAL_METER; if (gSaveContext.magicCapacity != magicCapacityTarget) { if (gSaveContext.magicCapacity < magicCapacityTarget) { @@ -3398,11 +3413,14 @@ void Magic_Update(GlobalContext* globalCtx) { } } } else { + // Once the capacity has reached its target, + // follow up by filling magic to magicFillTarget gSaveContext.magicState = MAGIC_STATE_FILL; } break; case MAGIC_STATE_FILL: + // Add magic until magicFillTarget is reached gSaveContext.save.playerData.magic += 0x10; if ((gSaveContext.gameMode == 0) && (gSaveContext.sceneSetupIndex < 4)) { @@ -3416,11 +3434,13 @@ void Magic_Update(GlobalContext* globalCtx) { break; case MAGIC_STATE_CONSUME_SETUP: + // Sets the speed at which magic border flashes sMagicBorderRatio = 2; gSaveContext.magicState = MAGIC_STATE_CONSUME; break; case MAGIC_STATE_CONSUME: + // Consume magic until target is reached or no more magic is available if (!(gSaveContext.save.weekEventReg[14] & 8)) { gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); @@ -3430,13 +3450,12 @@ void Magic_Update(GlobalContext* globalCtx) { gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1; sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; } - // fallthrough - + // fallthrough (flash border while magic is being consumed) case MAGIC_STATE_METER_FLASH_1: case MAGIC_STATE_METER_FLASH_2: case MAGIC_STATE_METER_FLASH_3: if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateMeterBorderColor(); + Magic_FlashMeterBorder(); } break; @@ -3457,7 +3476,7 @@ void Magic_Update(GlobalContext* globalCtx) { (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || !globalCtx->actorCtx.lensActive) { - // Force lens off and set magic meter state to idle + // Force lens off and set magic state to idle globalCtx->actorCtx.lensActive = false; play_sound(NA_SE_SY_GLASSMODE_OFF); gSaveContext.magicState = MAGIC_STATE_IDLE; @@ -3474,7 +3493,7 @@ void Magic_Update(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateMeterBorderColor(); + Magic_FlashMeterBorder(); } break; @@ -3505,7 +3524,7 @@ void Magic_Update(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateMeterBorderColor(); + Magic_FlashMeterBorder(); } break; @@ -3527,7 +3546,7 @@ void Magic_Update(GlobalContext* globalCtx) { } } if (!(gSaveContext.save.weekEventReg[14] & 8)) { - Magic_UpdateMeterBorderColor(); + Magic_FlashMeterBorder(); } break; @@ -6523,6 +6542,7 @@ void Interface_Update(GlobalContext* globalCtx) { // Update Magic if (!(player->stateFlags1 & 0x200)) { if (XREG(4) == 1) { + // Upgrade to double magic if (!gSaveContext.save.playerData.isMagicAcquired) { gSaveContext.save.playerData.isMagicAcquired = true; } @@ -6531,6 +6551,7 @@ void Interface_Update(GlobalContext* globalCtx) { gSaveContext.save.playerData.magicLevel = 0; XREG(4) = 0; } else if (XREG(4) == -1) { + // Upgrade to normal magic if (!gSaveContext.save.playerData.isMagicAcquired) { gSaveContext.save.playerData.isMagicAcquired = true; } @@ -6541,6 +6562,7 @@ void Interface_Update(GlobalContext* globalCtx) { } if ((gSaveContext.save.playerData.isMagicAcquired) && (gSaveContext.save.playerData.magicLevel == 0)) { + // Prepare to step `magicCapacity` to full capacity gSaveContext.save.playerData.magicLevel = gSaveContext.save.playerData.isDoubleMagicAcquired + 1; gSaveContext.magicFillTarget = gSaveContext.save.playerData.magic; gSaveContext.save.playerData.magic = 0; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 4871b9c5a..beca55894 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2138,7 +2138,7 @@ 0x80115D5C:("Magic_Reset",), 0x80115DB4:("Magic_Consume",), 0x80116088:("Magic_UpdateAddRequest",), - 0x80116114:("Magic_UpdateMeterBorderColor",), + 0x80116114:("Magic_FlashMeterBorder",), 0x80116348:("Magic_Update",), 0x80116918:("Magic_DrawMeter",), 0x80116FD8:("func_80116FD8",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 23627d0c3..6f28220d2 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1652,7 +1652,7 @@ asm/non_matchings/code/z_parameter/Magic_Add.s,Magic_Add,0x80115D14,0x12 asm/non_matchings/code/z_parameter/Magic_Reset.s,Magic_Reset,0x80115D5C,0x16 asm/non_matchings/code/z_parameter/Magic_Consume.s,Magic_Consume,0x80115DB4,0xB5 asm/non_matchings/code/z_parameter/Magic_UpdateAddRequest.s,Magic_UpdateAddRequest,0x80116088,0x23 -asm/non_matchings/code/z_parameter/Magic_UpdateMeterBorderColor.s,Magic_UpdateMeterBorderColor,0x80116114,0x8D +asm/non_matchings/code/z_parameter/Magic_FlashMeterBorder.s,Magic_FlashMeterBorder,0x80116114,0x8D asm/non_matchings/code/z_parameter/Magic_Update.s,Magic_Update,0x80116348,0x174 asm/non_matchings/code/z_parameter/Magic_DrawMeter.s,Magic_DrawMeter,0x80116918,0x1B0 asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 From 1e5043b940e7b7eac05ec8050610570d4f42ea92 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 18:23:14 +1000 Subject: [PATCH 116/160] function declarations --- include/functions.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/include/functions.h b/include/functions.h index d25499512..8fea94015 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1934,13 +1934,9 @@ s32 Health_ChangeBy(GlobalContext* globalCtx, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); void Inventory_ChangeAmmo(s16 item, s16 ammoChange); -void Magic_Add(GlobalContext* globalCtx, s16 arg1); +void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd); void Magic_Reset(GameState* gamestate); -// void Magic_Consume(void); -// void Magic_UpdateAddRequest(void); -// void Magic_FlashMeterBorder(void); -// void Magic_Update(void); -// void Magic_DrawMeter(void); +s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); // void Interface_DrawItemButtons(void); From c9c932a5fe3d6f6a238fdb70ab5217a37b2fdddb Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 18:39:26 +1000 Subject: [PATCH 117/160] More docs --- include/functions.h | 3 +- include/z64.h | 78 +++++++++++++++++++++--------------------- src/code/z_message.c | 4 +-- src/code/z_parameter.c | 25 +++++++++----- 4 files changed, 59 insertions(+), 51 deletions(-) diff --git a/include/functions.h b/include/functions.h index 8fea94015..84d1c49be 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1925,8 +1925,7 @@ void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 btn); s32 Inventory_ConsumeFairy(GlobalContext* globalCtx); void Inventory_UpdateItem(GlobalContext* globalCtx, s16 slot, s16 item); // void func_801153C8(void); -// void Interface_LoadActionLabel(void); -void Interface_SetDoAction(GlobalContext* globalCtx, u16 arg1); +void Interface_SetDoAction(GlobalContext* globalCtx, u16 action); // void func_801155B4(void); // void Interface_SetNaviCall(void); void func_80115844(GlobalContext* globalCtx, s16 param_2); diff --git a/include/z64.h b/include/z64.h index 8702b0a4c..0cd2a969a 100644 --- a/include/z64.h +++ b/include/z64.h @@ -574,48 +574,48 @@ typedef struct { } PauseContext; // size = 0x2D0 typedef enum { - /* 0x00 */ DO_ACTION_UNK00, - /* 0x01 */ DO_ACTION_UNK01, - /* 0x02 */ DO_ACTION_UNK02, - /* 0x03 */ DO_ACTION_UNK03, - /* 0x04 */ DO_ACTION_UNK04, - /* 0x05 */ DO_ACTION_UNK05, + /* 0x00 */ DO_ACTION_ATTACK, + /* 0x01 */ DO_ACTION_CHECK, + /* 0x02 */ DO_ACTION_ENTER, + /* 0x03 */ DO_ACTION_RETURN, + /* 0x04 */ DO_ACTION_OPEN, + /* 0x05 */ DO_ACTION_JUMP, /* 0x06 */ DO_ACTION_DECIDE, - /* 0x07 */ DO_ACTION_UNK07, - /* 0x08 */ DO_ACTION_UNK08, - /* 0x09 */ DO_ACTION_UNK09, + /* 0x07 */ DO_ACTION_DIVE, + /* 0x08 */ DO_ACTION_FASTER, + /* 0x09 */ DO_ACTION_THROW, /* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value - /* 0x0B */ DO_ACTION_UNK0B, - /* 0x0C */ DO_ACTION_UNK0C, - /* 0x0D */ DO_ACTION_UNK0D, - /* 0x0E */ DO_ACTION_UNK0E, - /* 0x0F */ DO_ACTION_UNK0F, + /* 0x0B */ DO_ACTION_CLIMB, + /* 0x0C */ DO_ACTION_DROP, + /* 0x0D */ DO_ACTION_DOWN, + /* 0x0E */ DO_ACTION_QUIT, + /* 0x0F */ DO_ACTION_SPEAK, /* 0x10 */ DO_ACTION_NEXT, - /* 0x11 */ DO_ACTION_UNK11, - /* 0x12 */ DO_ACTION_UNK12, - /* 0x13 */ DO_ACTION_UNK13, - /* 0x14 */ DO_ACTION_UNK14, - /* 0x15 */ DO_ACTION_UNK15, - /* 0x16 */ DO_ACTION_UNK16, - /* 0x17 */ DO_ACTION_UNK17, - /* 0x18 */ DO_ACTION_UNK18, - /* 0x19 */ DO_ACTION_UNK19, - /* 0x1A */ DO_ACTION_UNK1A, - /* 0x1B */ DO_ACTION_UNK1B, - /* 0x1C */ DO_ACTION_UNK1C, - /* 0x1D */ DO_ACTION_UNK1D, - /* 0x1E */ DO_ACTION_UNK1E, - /* 0x1F */ DO_ACTION_UNK1F, - /* 0x20 */ DO_ACTION_UNK20, - /* 0x21 */ DO_ACTION_UNK21, - /* 0x22 */ DO_ACTION_UNK22, - /* 0x23 */ DO_ACTION_UNK23, - /* 0x24 */ DO_ACTION_UNK24, - /* 0x25 */ DO_ACTION_UNK25, - /* 0x26 */ DO_ACTION_UNK26, - /* 0x27 */ DO_ACTION_UNK27, - /* 0x28 */ DO_ACTION_UNK28, - /* 0x29 */ DO_ACTION_UNK29, + /* 0x11 */ DO_ACTION_GRAB, + /* 0x12 */ DO_ACTION_STOP, + /* 0x13 */ DO_ACTION_PUTAWAY, + /* 0x14 */ DO_ACTION_REEL, + /* 0x15 */ DO_ACTION_INFO, + /* 0x16 */ DO_ACTION_WARP, + /* 0x17 */ DO_ACTION_SNAP, + /* 0x18 */ DO_ACTION_EXPLODE, + /* 0x19 */ DO_ACTION_DANCE, + /* 0x1A */ DO_ACTION_MARCH, + /* 0x1B */ DO_ACTION_1, + /* 0x1C */ DO_ACTION_2, + /* 0x1D */ DO_ACTION_3, + /* 0x1E */ DO_ACTION_4, + /* 0x1F */ DO_ACTION_5, + /* 0x20 */ DO_ACTION_6, + /* 0x21 */ DO_ACTION_7, + /* 0x22 */ DO_ACTION_8, + /* 0x23 */ DO_ACTION_CURL, + /* 0x24 */ DO_ACTION_SURFACE, + /* 0x25 */ DO_ACTION_SWIM, + /* 0x26 */ DO_ACTION_PUNCH, + /* 0x27 */ DO_ACTION_POUND, + /* 0x28 */ DO_ACTION_HOOK, + /* 0x29 */ DO_ACTION_SHOOT, /* 0x2A */ DO_ACTION_MAX } DoAction; diff --git a/src/code/z_message.c b/src/code/z_message.c index 68634e1a3..784c97977 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -343,9 +343,9 @@ void func_80151938(GlobalContext* globalCtx, u16 textId) { if (interfaceCtx->unk_222 == 0) { if (textId != 0x1B93) { - Interface_SetDoAction(globalCtx, 0x10); + Interface_SetDoAction(globalCtx, DO_ACTION_NEXT); } else if (textId != 0xF8) { - Interface_SetDoAction(globalCtx, 6); + Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); } } msgCtx->unk1203C = msgCtx->unk1203A; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 8f38dd618..3d47f35e8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -13,6 +13,11 @@ void func_801663C4(u8* arg0, u8* arg1, u32 arg2); extern Gfx D_0E0001C8[]; // Display List extern Gfx D_0E0002E0[]; // Display List +// TODO extract this information from the texture definitions themselves +#define DO_ACTION_TEX_WIDTH 48 +#define DO_ACTION_TEX_HEIGHT 16 +#define DO_ACTION_TEX_SIZE ((DO_ACTION_TEX_WIDTH * DO_ACTION_TEX_HEIGHT) / 2) // (sizeof(gCheckDoActionENGTex)) + typedef struct { /* 0x00 */ u8 scene; /* 0x01 */ u8 flags1; @@ -2981,9 +2986,10 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l if (action != DO_ACTION_NONE) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, (u32)interfaceCtx->doActionSegment + (loadOffset * 0x180), - (u32)SEGMENT_ROM_START(do_action_static) + (action * 0x180), 0x180, 0, - &interfaceCtx->loadQueue, 0); + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, + (u32)interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE), + (u32)SEGMENT_ROM_START(do_action_static) + (action * DO_ACTION_TEX_SIZE), + DO_ACTION_TEX_SIZE, 0, &interfaceCtx->loadQueue, 0); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); return; } @@ -3708,9 +3714,9 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + 0x300, G_IM_FMT_IA, 48, 16, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE * 2, G_IM_FMT_IA, + DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, 0x01F8, 0x0054, 0x02D4, 0x009C, G_TX_RENDERTILE, 0, 0, 0x04A6, 0x04A6); } } @@ -4028,10 +4034,13 @@ void func_80118BA4(GlobalContext* globalCtx) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[8], 4, 0); + // Draw Action Label if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, 0x30, 0x10, 0); + OVERLAY_DISP = + func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); } else { - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x180, 3, 0x30, 0x10, 0); + OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, 3, + DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); } CLOSE_DISPS(globalCtx->state.gfxCtx); From a225c26dacda14a22b3aa856e7bb3ddc20c8428f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 23 May 2022 19:02:21 +1000 Subject: [PATCH 118/160] More magic touchups --- include/z64.h | 2 +- src/code/z_parameter.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/z64.h b/include/z64.h index 0cd2a969a..17d2c060f 100644 --- a/include/z64.h +++ b/include/z64.h @@ -658,7 +658,7 @@ typedef struct { /* 0x252 */ s16 lifeSizeChange; /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing /* 0x256 */ s16 unk_256; - /* 0x258 */ s16 magicConsumptionTimer; + /* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0 /* 0x25A */ u8 numHorseBoosts; /* 0x25C */ u16 unk_25C; /* 0x25E */ u16 unk_25E; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3d47f35e8..797fef990 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3183,7 +3183,7 @@ void Magic_Reset(GameState* gamestate) { /** * Request to consume magic. - * @param amount the positive-valued amount to decrease magic by + * @param magicToConsume the positive-valued amount to decrease magic by * @param type how the magic is consumed. * @return false if the request failed */ From 611fb1afd136bab0515f06b65e70af352e382496 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 26 May 2022 14:30:12 +1000 Subject: [PATCH 119/160] Change `Magic_Reset` --- include/functions.h | 2 +- src/code/z_actor.c | 2 +- src/code/z_parameter.c | 2 +- src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c | 2 +- src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c | 2 +- src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c | 2 +- src/overlays/actors/ovl_En_Arrow/z_en_arrow.c | 10 +++++----- src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/functions.h b/include/functions.h index b9976ca3c..8e0e493c2 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1934,7 +1934,7 @@ void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd); -void Magic_Reset(GameState* gamestate); +void Magic_Reset(GlobalContext* globalCtx); s32 Magic_Consume(GlobalContext* globalCtx, s16 magicToConsume, s16 type); // void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_801170B8(void); diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 7b87ac47f..d933843c5 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -2218,7 +2218,7 @@ s32 func_800B90AC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* polygon void Actor_DisableLens(GlobalContext* globalCtx) { if (globalCtx->actorCtx.lensActive) { globalCtx->actorCtx.lensActive = false; - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 873eb9112..263961f42 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3174,7 +3174,7 @@ void Magic_Add(GlobalContext* globalCtx, s16 magicToAdd) { } } -void Magic_Reset(GameState* gamestate) { +void Magic_Reset(GlobalContext* globalCtx) { if ((gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { sMagicMeterOutlinePrimRed = sMagicMeterOutlinePrimGreen = sMagicMeterOutlinePrimBlue = 255; gSaveContext.magicState = MAGIC_STATE_IDLE; diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c index ce671a03c..3739af3de 100644 --- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c +++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c @@ -81,7 +81,7 @@ void ArrowFire_Init(Actor* thisx, GlobalContext* globalCtx) { void ArrowFire_Destroy(Actor* thisx, GlobalContext* globalCtx) { ArrowFire* this = THIS; - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); Collider_DestroyQuad(globalCtx, &this->collider1); Collider_DestroyQuad(globalCtx, &this->collider2); } diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index 83f34f8d7..2b492f2dc 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -57,7 +57,7 @@ void ArrowIce_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowIce_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c index bb9ec4878..9f84bd0ef 100644 --- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c +++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c @@ -56,7 +56,7 @@ void ArrowLight_Init(Actor* thisx, GlobalContext* globalCtx) { } void ArrowLight_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); (void)"消滅"; // Unreferenced in retail, means "Disappearance" } diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index a88170bd6..1bfb0e071 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -139,7 +139,7 @@ void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx) { } if ((this->actor.params >= ENARROW_3) && (this->actor.params < ENARROW_6) && (this->actor.child == NULL)) { - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } } @@ -162,13 +162,13 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_148++; if (this->bubble.unk_148 > 20) { this->actionFunc = func_8088ACE0; - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } } } else { if ((this->actor.params != ENARROW_8) && (player->unk_D57 == 0)) { if (this->actor.params == ENARROW_7) { - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } Actor_MarkForDeath(&this->actor); return; @@ -202,7 +202,7 @@ void func_8088A594(EnArrow* this, GlobalContext* globalCtx) { this->bubble.unk_144 = CLAMP_MIN(this->bubble.unk_144, 3.5f); func_8088A514(this); this->unk_260 = 99; - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } else if (this->actor.params >= ENARROW_6) { if ((this->actor.params == ENARROW_8) && (this->actor.world.rot.x < 0)) { Actor_SetScale(&this->actor, 0.009f); @@ -311,7 +311,7 @@ void func_8088AA98(EnArrow* this, GlobalContext* globalCtx) { return; } - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); } } } diff --git a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c index ef986e2be..c07600c7c 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c +++ b/src/overlays/actors/ovl_Oceff_Wipe6/z_oceff_wipe6.c @@ -38,7 +38,7 @@ void OceffWipe6_Init(Actor* thisx, GlobalContext* globalCtx) { } void OceffWipe6_Destroy(Actor* thisx, GlobalContext* globalCtx) { - Magic_Reset(&globalCtx->state); + Magic_Reset(globalCtx); globalCtx->msgCtx.unk120B0 = 0; } From 8df8271d6c84a235d91758d4a25bebd95ccb3c21 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 26 May 2022 14:45:48 +1000 Subject: [PATCH 120/160] More magic --- src/code/z_parameter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 263961f42..2dc2b15c6 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2529,7 +2529,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_SMALL) { - Magic_Add(globalCtx, 0x18); + Magic_Add(globalCtx, MAGIC_NORMAL_METER / 2); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; @@ -2537,7 +2537,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return item; } else if (item == ITEM_MAGIC_LARGE) { - Magic_Add(globalCtx, 0x30); + Magic_Add(globalCtx, MAGIC_NORMAL_METER); if (!(gSaveContext.save.weekEventReg[12] & 0x80)) { gSaveContext.save.weekEventReg[12] |= 0x80; return ITEM_NONE; From 2af30485fd81fdf78ea3d58af9fa4667f18a7f79 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 20 Jun 2022 22:53:22 +1000 Subject: [PATCH 121/160] Fix merge --- include/PR/gbi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/PR/gbi.h b/include/PR/gbi.h index f7b249af8..48b50acd1 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -3879,7 +3879,7 @@ _DW({ \ #define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \ pal, cms, cmt, masks, maskt, shifts, shiftt) \ -_DW({ \ +{ \ gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ cmt, maskt, shiftt, cms, masks, shifts); \ @@ -3894,7 +3894,7 @@ _DW({ \ gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ ((height)-1) << G_TEXTURE_IMAGE_FRAC); \ -}) +} /* Load fix rww 27jun95 */ /* The S at the end means odd lines are already word Swapped */ From bea9c0341e028befbac7cb97f0f8be8393557310 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 21 Jun 2022 03:08:57 +1000 Subject: [PATCH 122/160] Restore DW with a match --- include/PR/gbi.h | 4 ++-- src/code/z_parameter.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 48b50acd1..f7b249af8 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -3879,7 +3879,7 @@ _DW({ \ #define gDPLoadTextureBlock_4b(pkt, timg, fmt, width, height, \ pal, cms, cmt, masks, maskt, shifts, shiftt) \ -{ \ +_DW({ \ gDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg); \ gDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, \ cmt, maskt, shiftt, cms, masks, shifts); \ @@ -3894,7 +3894,7 @@ _DW({ \ gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, \ ((width)-1) << G_TEXTURE_IMAGE_FRAC, \ ((height)-1) << G_TEXTURE_IMAGE_FRAC); \ -} +}) /* Load fix rww 27jun95 */ /* The S at the end means odd lines are already word Swapped */ diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d673ed714..f48e3f63e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -6156,13 +6156,12 @@ void Interface_Draw(GlobalContext* globalCtx) { gSPTextureRectangle(OVERLAY_DISP++, YREG(40) * 4, YREG(41) * 4, (YREG(40) + 0x20) * 4, (YREG(41) + 0x10) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - if (1) {} - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusTextTex, G_IM_FMT_I, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) + 0x20) * 4, (YREG(43) + 0x8) * 4, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + if (1) {} } if (D_801BF884 >= 2) { From d1947c0f1bdfcc4a78520bb0e7a6aaba55112347 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 28 Jun 2022 09:48:27 +1000 Subject: [PATCH 123/160] cleanup --- include/z64save.h | 5 +++-- src/code/z_lifemeter.c | 2 +- src/code/z_sram_NES.c | 20 +++++++++++-------- .../actors/ovl_Door_Shutter/z_door_shutter.c | 2 +- src/overlays/actors/ovl_En_Door/z_en_door.c | 4 ++-- 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index cf9f0718d..7f1c62b09 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -78,8 +78,9 @@ typedef struct Inventory { /* 0x30 */ s8 ammo[24]; // "item_count" /* 0x48 */ u32 upgrades; // "non_equip_register" some bits are wallet upgrades /* 0x4C */ u32 questItems; // "collect_register" - /* 0x50 */ u8 dungeonItems[10]; // "key_compass_map" - /* 0x5A */ s8 dungeonKeys[10]; // "key_register" + /* 0x50 */ u8 dungeonItems[10]; // "key_compass_map" + /* 0x5A */ s8 dungeonKeys[9]; // "key_register" + /* 0x59 */ s8 defenseHearts; /* 0x64 */ s8 strayFairies[10]; // "orange_fairy" /* 0x6E */ char dekuPlaygroundPlayerName[3][8]; // "degnuts_memory_name" Stores playerName (8 char) over (3 days) when getting a new high score } Inventory; // size = 0x88 diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index cd069da56..167b36cf7 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -223,7 +223,7 @@ void LifeMeter_Draw(PlayState* play) { f32 lifesize = interfaceCtx->lifeSizeChange * 0.1f; u32 curCombineModeSet = 0; TexturePtr temp = NULL; - s32 ddCount = gSaveContext.save.inventory.dungeonKeys[9] - 1; + s32 ddCount = gSaveContext.save.inventory.defenseHearts - 1; OPEN_DISPS(gfxCtx); diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 26e3e2a26..b9101c289 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -434,7 +434,7 @@ void Sram_SaveEndOfCycle(PlayState* play) { for (i = 0; i < 8; i++) { gSaveContext.save.inventory.dungeonItems[i] &= (u8)~1; - gSaveContext.save.inventory.dungeonKeys[i] = 0; + DUNGEON_KEY_COUNT(i) = 0; gSaveContext.save.inventory.strayFairies[i] = 0; } @@ -624,7 +624,9 @@ Inventory sSaveDefaultInventory = { // dungeonItems { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonKeys - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + // defenseHearts + 0, // strayFairies { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dekuPlaygroundPlayerName @@ -768,7 +770,9 @@ Inventory sSaveDebugInventory = { // dungeonItems { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }, // dungeonKeys - { 8, 8, 8, 8, 8, 8, 8, 8, 8, 0 }, + { 8, 8, 8, 8, 8, 8, 8, 8, 8 }, + // defenseHearts + 0, // strayFairies { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dekuPlaygroundPlayerName @@ -1142,7 +1146,7 @@ void func_801457CC(FileChooseContext* fileChooseCtx2, SramContext* sramCtx) { fileChooseCtx->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity; fileChooseCtx->health[sp76] = gSaveContext.save.playerData.health; - fileChooseCtx->unk_24454[sp76] = gSaveContext.save.inventory.dungeonKeys[9]; + fileChooseCtx->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts; fileChooseCtx->unk_24444[sp76] = gSaveContext.save.inventory.questItems; fileChooseCtx->unk_24458[sp76] = gSaveContext.save.time; fileChooseCtx->unk_24460[sp76] = gSaveContext.save.day; @@ -1237,7 +1241,7 @@ void func_801457CC(FileChooseContext* fileChooseCtx2, SramContext* sramCtx) { fileChooseCtx->healthCapacity[sp76] = gSaveContext.save.playerData.healthCapacity; fileChooseCtx->health[sp76] = gSaveContext.save.playerData.health; - fileChooseCtx->unk_24454[sp76] = gSaveContext.save.inventory.dungeonKeys[9]; + fileChooseCtx->unk_24454[sp76] = gSaveContext.save.inventory.defenseHearts; fileChooseCtx->unk_24444[sp76] = gSaveContext.save.inventory.questItems; fileChooseCtx->unk_24458[sp76] = gSaveContext.save.time; fileChooseCtx->unk_24460[sp76] = gSaveContext.save.day; @@ -1350,7 +1354,7 @@ void func_80146628(FileChooseContext* fileChooseCtx2, SramContext* sramCtx) { fileChooseCtx->unk_24438[fileChooseCtx->fileNum] = gSaveContext.save.playerData.healthCapacity; fileChooseCtx->unk_24440[fileChooseCtx->fileNum] = gSaveContext.save.playerData.health; - fileChooseCtx->unk_24456[fileChooseCtx->fileNum] = gSaveContext.save.inventory.dungeonKeys[9]; + fileChooseCtx->unk_24456[fileChooseCtx->fileNum] = gSaveContext.save.inventory.defenseHearts; fileChooseCtx->unk_2444C[fileChooseCtx->fileNum] = gSaveContext.save.inventory.questItems; fileChooseCtx->unk_2445C[fileChooseCtx->fileNum] = gSaveContext.save.time; fileChooseCtx->unk_24464[fileChooseCtx->fileNum] = gSaveContext.save.day; @@ -1393,7 +1397,7 @@ void func_80146628(FileChooseContext* fileChooseCtx2, SramContext* sramCtx) { fileChooseCtx->healthCapacity[fileChooseCtx->fileNum] = gSaveContext.save.playerData.healthCapacity; fileChooseCtx->health[fileChooseCtx->fileNum] = gSaveContext.save.playerData.health; - fileChooseCtx->unk_24454[fileChooseCtx->fileNum] = gSaveContext.save.inventory.dungeonKeys[9]; + fileChooseCtx->unk_24454[fileChooseCtx->fileNum] = gSaveContext.save.inventory.defenseHearts; fileChooseCtx->unk_24444[fileChooseCtx->fileNum] = gSaveContext.save.inventory.questItems; fileChooseCtx->unk_24458[fileChooseCtx->fileNum] = gSaveContext.save.time; fileChooseCtx->unk_24460[fileChooseCtx->fileNum] = gSaveContext.save.day; @@ -1462,7 +1466,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx2, SramContext* sramCtx) { fileChooseCtx->healthCapacity[fileChooseCtx->unk_24480] = gSaveContext.save.playerData.healthCapacity; fileChooseCtx->health[fileChooseCtx->unk_24480] = gSaveContext.save.playerData.health; - fileChooseCtx->unk_24454[fileChooseCtx->unk_24480] = gSaveContext.save.inventory.dungeonKeys[9]; + fileChooseCtx->unk_24454[fileChooseCtx->unk_24480] = gSaveContext.save.inventory.defenseHearts; fileChooseCtx->unk_24444[fileChooseCtx->unk_24480] = gSaveContext.save.inventory.questItems; fileChooseCtx->unk_24458[fileChooseCtx->unk_24480] = gSaveContext.save.time; fileChooseCtx->unk_24460[fileChooseCtx->unk_24480] = gSaveContext.save.day; diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 8601a4bfb..94d1d66bc 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -343,7 +343,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) { if (this->unk_166 != 0) { Flags_SetSwitch(play, DOORSHUTTER_GET_7F(&this->actor)); if (this->doorType != 5) { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--; + DUNGEON_KEY_COUNT(gSaveContext.mapIndex) = DUNGEON_KEY_COUNT(gSaveContext.mapIndex) - 1; Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK); } else { Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK_B); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index e938706f0..462497d26 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -482,7 +482,7 @@ void func_80866B20(EnDoor* this, PlayState* play) { Animation_PlayOnceSetSpeed(&this->skelAnime, sAnimations[this->animIndex], (player->stateFlags1 & 0x8000000) ? 0.75f : 1.5f); if (this->unk_1A6 != 0) { - gSaveContext.save.inventory.dungeonKeys[gSaveContext.mapIndex]--; + DUNGEON_KEY_COUNT(gSaveContext.mapIndex) = DUNGEON_KEY_COUNT(gSaveContext.mapIndex) - 1; Flags_SetSwitch(play, this->switchFlag); Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_EV_CHAIN_KEY_UNLOCK); } @@ -502,7 +502,7 @@ void func_80866B20(EnDoor* this, PlayState* play) { player->doorDirection = playerPosRelToDoor.z >= 0.0f ? 1.0f : -1.0f; player->doorActor = &this->dyna.actor; if (this->unk_1A6 != 0) { - if (gSaveContext.save.inventory.dungeonKeys[((void)0, gSaveContext.mapIndex)] <= 0) { + if (DUNGEON_KEY_COUNT(gSaveContext.mapIndex) <= 0) { player->doorType = -1; this->dyna.actor.textId = 0x1802; } else { From a565bcf522c06c738cb9da7c76a7aa1c6c5ee0ce Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 13 Jul 2022 01:22:22 +1000 Subject: [PATCH 124/160] merge prep --- include/z64item.h | 2 +- src/code/z_parameter.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/z64item.h b/include/z64item.h index ac4fab02d..2f50c4046 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -27,7 +27,7 @@ typedef enum { /* 1 */ EQUIP_VALUE_SHIELD_HERO, /* 2 */ EQUIP_VALUE_SHIELD_MIRROR, /* 3 */ EQUIP_VALUE_SHIELD_MAX -} EquipValueShield; +} EquipValueShield; typedef enum { /* 0 */ EQUIP_VALUE_TUNIC_NONE, diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 0214ed6ee..a65cbc826 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -394,6 +394,7 @@ s16 D_801BFA64[] = { s16 D_801BFA74[] = { 1, -70, -99, -70, 71, 101, 72, 1, }; + void Interface_InitVertices(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; @@ -2232,6 +2233,7 @@ s16 sAmmoRefillCounts[] = { 5, 10, 20, 30 }; // Sticks, nuts, bombs s16 sArrowRefillCounts[] = { 10, 30, 40, 50 }; s16 sBombchuRefillCounts[] = { 20, 10, 1, 5 }; s16 sRupeeRefillCounts[] = { 1, 5, 10, 20, 50, 100, 200 }; + u8 Item_Give(PlayState* play, u8 item) { Player* player = GET_PLAYER(play); u8 i; @@ -3346,6 +3348,7 @@ s16 sMagicBorderColors[][3] = { }; s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; s16 sMagicBorderColorTimerIndex[] = { 2, 1, 2, 1 }; + void Magic_FlashMeterBorder(void) { s16 borderChangeR; s16 borderChangeG; @@ -3790,6 +3793,7 @@ void Interface_DrawItemIconTexture(PlayState* play, void* texture, s16 button) { s16 D_801BFB04[] = { 0xA2, 0xE4, 0xFA, 0x110 }; s16 D_801BFB0C[] = { 0x23, 0x23, 0x33, 0x23 }; + void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { u8 i; u16 ammo; @@ -4045,6 +4049,7 @@ extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex s16 D_801BFB14[] = { 255, 100, 255, 0 }; // magicArrowEffectsR s16 D_801BFB1C[] = { 0, 100, 255, 0 }; // magicArrowEffectsG s16 D_801BFB24[] = { 0, 255, 100, 0 }; // magicArrowEffectsB + void func_80119030(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; PauseContext* pauseCtx = &play->pauseCtx; @@ -4826,6 +4831,7 @@ s16 D_801BFC8C[2][3] = { { 0xFF, 0xFF, 0xFF }, { 0xFF, 0xA5, 0x37 }, }; + void func_8011B9E0(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; @@ -4960,6 +4966,7 @@ s16 D_801BFCB8[2][3] = { { 0xFF, 0xFF, 0xFF }, { 0xFF, 0xA5, 0x37 }, }; + void func_8011BF70(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; @@ -5830,6 +5837,7 @@ u32 D_801BFD8C[] = { gStoryMaskFestivalTLUT, gStoryGiantsLeavingTLUT, }; + void Interface_Draw(PlayState* play) { s32 pad; InterfaceContext* interfaceCtx = &play->interfaceCtx; From 3a27f65cddf4eef5092169c0a8ccb6e56c7a6df9 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Jul 2022 05:29:39 +1000 Subject: [PATCH 125/160] Document hud mode --- include/functions.h | 5 +- include/z64.h | 28 + include/z64save.h | 10 +- src/boot_O2_g3/z_std_dma.c | 1 + src/code/z_common_data.c | 2 +- src/code/z_demo.c | 10 +- src/code/z_game_over.c | 8 +- src/code/z_kaleido_setup.c | 2 +- src/code/z_message.c | 2 +- src/code/z_parameter.c | 811 +++++++++--------- src/code/z_player_lib.c | 12 +- .../ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c | 1 + .../actors/ovl_Door_Warp1/z_door_warp1.c | 2 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 2 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- src/overlays/actors/ovl_En_Mag/z_en_mag.c | 4 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 4 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 4 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 4 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 4 +- src/overlays/gamestates/ovl_select/z_select.c | 8 +- tools/disasm/functions.txt | 8 +- tools/sizes/code_functions.csv | 8 +- 24 files changed, 501 insertions(+), 445 deletions(-) diff --git a/include/functions.h b/include/functions.h index ba75633e6..6e61dc816 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1873,10 +1873,7 @@ void func_8010EA9C(s16 timeLimit, s16 arg1); // void func_8010EBA0(void); // void func_8010EC54(void); void Interface_NewDay(PlayState* play, s32 day); -void Interface_ChangeAlpha(u16 param_1); -// void func_8010EF9C(void); -// void func_8010F0D4(void); -// void func_8010F1A8(void); +void Interface_ChangeHudMode(u16 hudMode); // void func_80110038(void); // void func_80111CB4(void); // void Interface_SetSceneRestrictions(void); diff --git a/include/z64.h b/include/z64.h index e1a5caa14..bfd4dc59b 100644 --- a/include/z64.h +++ b/include/z64.h @@ -582,6 +582,34 @@ typedef enum { /* 0x2A */ DO_ACTION_MAX } DoAction; +typedef enum { + /* 0 */ HUD_MODE_IDLE, + /* 1 */ HUD_MODE_OFF, + /* 2 */ HUD_MODE_OFF_ALT, // Identical to HUD_MODE_OFF + /* 3 */ HUD_MODE_HEARTS_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 4 */ HUD_MODE_A, + /* 5 */ HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 6 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 7 */ HUD_MODE_ALL_NO_MINIMAP_W_DISABLED, // Only raises button alphas if not disabled + /* 8 */ HUD_MODE_B_FAST, // reaches target twice as fast + /* 9 */ HUD_MODE_HEARTS_MAGIC, + /* 10 */ HUD_MODE_B, + /* 11 */ HUD_MODE_HEARTS, + /* 12 */ HUD_MODE_A_B_MINIMAP, + /* 13 */ HUD_MODE_HEARTS_MAGIC_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 14 */ HUD_MODE_HEARTS_MAGIC_C, + /* 15 */ HUD_MODE_ALL_NO_MINIMAP, + /* 16 */ HUD_MODE_A_B_C, + /* 17 */ HUD_MODE_B_MINIMAP, + /* 18 */ HUD_MODE_HEARTS_MAGIC_MINIMAP, + /* 19 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP, + /* 20 */ HUD_MODE_B_MAGIC, + /* 21 */ HUD_MODE_A_B, + /* 22 */ HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP, + /* 50 */ HUD_MODE_ALL = 50, + /* 52 */ HUD_MODE_OFF_NOW = 52 +} HudMode; + typedef struct { /* 0x000 */ View view; /* 0x168 */ Vtx* actionVtx; diff --git a/include/z64save.h b/include/z64save.h index b97da76fa..8565daf2b 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -251,11 +251,11 @@ typedef struct SaveContext { /* 0x3F16 */ u8 seqIndex; // "old_bgm" /* 0x3F17 */ u8 nightSeqIndex; // "old_env" /* 0x3F18 */ u8 buttonStatus[6]; // "button_item" - /* 0x3F1E */ u8 unk_3F1E; // "ck_fg" - /* 0x3F20 */ u16 unk_3F20; // "alpha_type" - /* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type" - /* 0x3F24 */ u16 unk_3F24; // "alpha_count" - /* 0x3F26 */ u16 unk_3F26; // "last_time_type" + /* 0x3F1E */ u8 hudModeDimOnlyDisabledButtons; // if the buttons are requested to dim, only dim disabled buttons "ck_fg" + /* 0x3F20 */ u16 requestHudMode; // triggers the hud to change modes to the requested value. Reset to 0 when target is reached "alpha_type" + /* 0x3F22 */ u16 curHudMode; // current hud mode "prev_alpha_type" + /* 0x3F24 */ u16 hudModeCounter; // number of frames in the transition to a new hud display. Used to step alpha "alpha_count" + /* 0x3F26 */ u16 prevHudMode; // used to store and recover hud display for pause menu and text boxes "last_time_type" /* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag" /* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag" /* 0x3F2C */ s16 magicUnusedFlag; // Set to 0 in func_80812D94, otherwise unused "keep_magic_flag" diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index d9c7fb221..10d84dcb0 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u32 sDmaMgrDmaBuffSize = 0x2000; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 54ba92f6b..1ca8e6d95 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -16,7 +16,7 @@ void SaveContext_Init(void) { gSaveContext.environmentTime = 0; gSaveContext.dogIsLost = true; gSaveContext.nextTransition = 0xFF; - gSaveContext.unk_3F26 = 50; + gSaveContext.prevHudMode = HUD_MODE_ALL; gSaveContext.options.language = 1; gSaveContext.options.audioSetting = 0; gSaveContext.options.zTargetSetting = 0; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 1601a0b2b..7370c0445 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -105,7 +105,7 @@ s32 func_800EA220(PlayState* play, CutsceneContext* csCtx, f32 target) { } void func_800EA258(PlayState* play, CutsceneContext* csCtx) { - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); ShrinkWindow_SetLetterboxTarget(32); if (func_800EA220(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(true); @@ -115,7 +115,7 @@ void func_800EA258(PlayState* play, CutsceneContext* csCtx) { void func_800EA2B8(PlayState* play, CutsceneContext* csCtx) { func_800ED980(play, csCtx); - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); ShrinkWindow_SetLetterboxTarget(32); if (func_800EA220(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(true); @@ -565,7 +565,7 @@ void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase* gSaveContext.unk_3F48 = 1; if ((gSaveContext.gameMode != 0) && (csCtx->frames != cmd->startFrame)) { - gSaveContext.unk_3F1E = 1; + gSaveContext.hudModeDimOnlyDisabledButtons = true; } gSaveContext.save.cutscene = 0; @@ -1100,7 +1100,7 @@ void Cutscene_Command_Textbox(PlayState* play, CutsceneContext* csCtx, CsCmdText } if (originalCsFrames == csCtx->frames) { - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); D_801BB124 = 0; D_801BB128 = 0; func_80161C0C(); @@ -1479,7 +1479,7 @@ void func_800EDA84(PlayState* play, CutsceneContext* csCtx) { csCtx->unk_18 = 0xFFFF; if (gSaveContext.cutsceneTrigger == 0) { - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); ShrinkWindow_SetLetterboxTarget(32); ShrinkWindow_SetLetterboxMagnitude(0x20); csCtx->state++; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 1375d1a4a..613517b62 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -57,10 +57,10 @@ void GameOver_Update(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; - gSaveContext.unk_3F1E = 0; - gSaveContext.unk_3F20 = 0; - gSaveContext.unk_3F22 = 0; - gSaveContext.unk_3F24 = 0; + gSaveContext.hudModeDimOnlyDisabledButtons = false; + gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.hudModeCounter = 0; Kankyo_InitGameOverLights(play); sGameOverTimer = 20; Rumble_Request(0.0f, 126, 124, 63); diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index ea1ef803a..39ab17ca4 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -79,7 +79,7 @@ void KaleidoSetup_Update(PlayState* play) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(play->actorCtx.unk5 & 2) && !(play->actorCtx.unk5 & 4)) { if ((play->actorCtx.unk268 == 0) && CHECK_BTN_ALL(input->press.button, BTN_START)) { - gSaveContext.unk_3F26 = gSaveContext.unk_3F22; + gSaveContext.prevHudMode = gSaveContext.curHudMode; pauseCtx->unk_2B9 = 0; pauseCtx->state = 1; func_800F4A10(play); diff --git a/src/code/z_message.c b/src/code/z_message.c index 1eca00f83..650287b45 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -382,7 +382,7 @@ void func_80151A68(PlayState* play, u16 textId) { XREG(77) = 0x3C; XREG(76) = 0x1C; msgCtx->unk11F1A[0] = msgCtx->unk11F1A[1] = msgCtx->unk11F1A[2] = 0; - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); } } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e5d3c6ae9..20b7cbff0 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -707,27 +707,27 @@ void Interface_NewDay(PlayState* play, s32 day) { } } -void Interface_ChangeAlpha(u16 alphaType) { - if (gSaveContext.unk_3F22 != alphaType) { - gSaveContext.unk_3F22 = alphaType; - gSaveContext.unk_3F20 = alphaType; - gSaveContext.unk_3F24 = 1; +void Interface_ChangeHudMode(u16 hudMode) { + if (gSaveContext.curHudMode != hudMode) { + gSaveContext.curHudMode = hudMode; + gSaveContext.requestHudMode = hudMode; + gSaveContext.hudModeCounter = 1; } } /** - * Nearly identical to func_80082644 from OoT + * Slowly restore buttons to the hud unless a button is disabled */ -void func_8010EF9C(PlayState* play, s16 alpha) { +void Interface_RaiseNonDisabledButtonAlphas(PlayState* play, s16 risingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == ITEM_NONE)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } } else { if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } } @@ -737,7 +737,7 @@ void func_8010EF9C(PlayState* play, s16 alpha) { } } else { if (interfaceCtx->cLeftAlpha != 255) { - interfaceCtx->cLeftAlpha = alpha; + interfaceCtx->cLeftAlpha = risingAlpha; } } @@ -747,7 +747,7 @@ void func_8010EF9C(PlayState* play, s16 alpha) { } } else { if (interfaceCtx->cDownAlpha != 255) { - interfaceCtx->cDownAlpha = alpha; + interfaceCtx->cDownAlpha = risingAlpha; } } @@ -757,7 +757,7 @@ void func_8010EF9C(PlayState* play, s16 alpha) { } } else { if (interfaceCtx->cRightAlpha != 255) { - interfaceCtx->cRightAlpha = alpha; + interfaceCtx->cRightAlpha = risingAlpha; } } @@ -767,676 +767,701 @@ void func_8010EF9C(PlayState* play, s16 alpha) { } } else { if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } } } /** - * Identical to func_8008277C from OoT + * Slowly diminish button alphas on the hud + * If (gSaveContext.hudModeDimOnlyDisabledButtons), then only dim disabled buttons, + * and raise active button alphas instead */ -void func_8010F0D4(PlayState* play, s16 maxAlpha, s16 alpha) { +void Interface_DimButtonAlphas(PlayState* play, s16 dimmingAlpha, s16 risingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if (gSaveContext.unk_3F1E != 0) { - func_8010EF9C(play, alpha); + if (gSaveContext.hudModeDimOnlyDisabledButtons) { + Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); return; } - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } } -void func_8010F1A8(PlayState* play, s16 maxAlpha) { +void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - s16 alpha = 255 - maxAlpha; + s16 risingAlpha = 255 - dimmingAlpha; - switch (gSaveContext.unk_3F20) { - case 1: - case 2: - case 8: - if (gSaveContext.unk_3F20 == 8) { + switch (gSaveContext.requestHudMode) { + case HUD_MODE_OFF: + case HUD_MODE_OFF_ALT: + case HUD_MODE_B_FAST: + if (gSaveContext.requestHudMode == HUD_MODE_B_FAST) { if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } } else { - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } break; - case 3: - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + + case HUD_MODE_HEARTS_W_OVERWRITE: + // aAlpha is immediately overwritten in Interface_DimButtonAlphas + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - func_8010F0D4(play, maxAlpha, alpha + 0); + Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha + 0); - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 4: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_A: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + // aAlpha is immediately overwritten below + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } break; - case 5: - func_8010F0D4(play, maxAlpha, alpha); - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + case HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE: + Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } + // aAlpha overwrites the value set in Interface_DimButtonAlphas if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } break; - case 6: - func_8010F0D4(play, maxAlpha, alpha); + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE: + Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + + // aAlpha overwrites the value set in Interface_DimButtonAlphas if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (play->sceneNum == SCENE_SPOT00) { if (interfaceCtx->minimapAlpha < 170) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } else { interfaceCtx->minimapAlpha = 170; } } else if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } break; - case 7: - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + + case HUD_MODE_ALL_NO_MINIMAP_W_DISABLED: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - func_8010EF9C(play, alpha); + Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } break; - case 9: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_HEARTS_MAGIC: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 10: - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + + case HUD_MODE_B: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } break; - case 11: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_HEARTS: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 12: + + case HUD_MODE_A_B_MINIMAP: if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } - if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == 0xFF)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == ITEM_NONE)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } } else { if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } } if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } break; - case 13: - func_8010F0D4(play, maxAlpha, alpha); - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + case HUD_MODE_HEARTS_MAGIC_W_OVERWRITE: + Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + // aAlpha overwrites the value set in Interface_DimButtonAlphas + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 14: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_HEARTS_MAGIC_C: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->cLeftAlpha != 255) { - interfaceCtx->cLeftAlpha = alpha; + interfaceCtx->cLeftAlpha = risingAlpha; } if (interfaceCtx->cDownAlpha != 255) { - interfaceCtx->cDownAlpha = alpha; + interfaceCtx->cDownAlpha = risingAlpha; } if (interfaceCtx->cRightAlpha != 255) { - interfaceCtx->cRightAlpha = alpha; + interfaceCtx->cRightAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 15: - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + + case HUD_MODE_ALL_NO_MINIMAP: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->cLeftAlpha != 255) { - interfaceCtx->cLeftAlpha = alpha; + interfaceCtx->cLeftAlpha = risingAlpha; } if (interfaceCtx->cDownAlpha != 255) { - interfaceCtx->cDownAlpha = alpha; + interfaceCtx->cDownAlpha = risingAlpha; } if (interfaceCtx->cRightAlpha != 255) { - interfaceCtx->cRightAlpha = alpha; + interfaceCtx->cRightAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 16: - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + case HUD_MODE_A_B_C: + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->cLeftAlpha != 255) { - interfaceCtx->cLeftAlpha = alpha; + interfaceCtx->cLeftAlpha = risingAlpha; } if (interfaceCtx->cDownAlpha != 255) { - interfaceCtx->cDownAlpha = alpha; + interfaceCtx->cDownAlpha = risingAlpha; } if (interfaceCtx->cRightAlpha != 255) { - interfaceCtx->cRightAlpha = alpha; + interfaceCtx->cRightAlpha = risingAlpha; } break; - case 17: - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + + case HUD_MODE_B_MINIMAP: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } break; - case 18: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_HEARTS_MAGIC_MINIMAP: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } break; - case 19: - if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > maxAlpha)) { - interfaceCtx->bAlpha = maxAlpha; + + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP: + if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { + interfaceCtx->bAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; - case 20: - if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > maxAlpha)) { - interfaceCtx->aAlpha = maxAlpha; + + case HUD_MODE_B_MAGIC: + if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { + interfaceCtx->aAlpha = dimmingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } break; - case 21: + + case HUD_MODE_A_B: if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } - if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > maxAlpha)) { - interfaceCtx->minimapAlpha = maxAlpha; + if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { + interfaceCtx->minimapAlpha = dimmingAlpha; } - if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > maxAlpha)) { - interfaceCtx->magicAlpha = maxAlpha; + if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { + interfaceCtx->magicAlpha = dimmingAlpha; } - if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > maxAlpha)) { - interfaceCtx->healthAlpha = maxAlpha; + if ((interfaceCtx->healthAlpha != 0) && (interfaceCtx->healthAlpha > dimmingAlpha)) { + interfaceCtx->healthAlpha = dimmingAlpha; } break; - case 22: - if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > maxAlpha)) { - interfaceCtx->cLeftAlpha = maxAlpha; + + case HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP: + if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { + interfaceCtx->cLeftAlpha = dimmingAlpha; } - if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > maxAlpha)) { - interfaceCtx->cDownAlpha = maxAlpha; + if ((interfaceCtx->cDownAlpha != 0) && (interfaceCtx->cDownAlpha > dimmingAlpha)) { + interfaceCtx->cDownAlpha = dimmingAlpha; } - if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > maxAlpha)) { - interfaceCtx->cRightAlpha = maxAlpha; + if ((interfaceCtx->cRightAlpha != 0) && (interfaceCtx->cRightAlpha > dimmingAlpha)) { + interfaceCtx->cRightAlpha = dimmingAlpha; } if (interfaceCtx->bAlpha != 255) { - interfaceCtx->bAlpha = alpha; + interfaceCtx->bAlpha = risingAlpha; } if (interfaceCtx->aAlpha != 255) { - interfaceCtx->aAlpha = alpha; + interfaceCtx->aAlpha = risingAlpha; } if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha; + interfaceCtx->minimapAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha; + interfaceCtx->magicAlpha = risingAlpha; } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha; + interfaceCtx->healthAlpha = risingAlpha; } break; @@ -1489,7 +1514,7 @@ void func_80110038(PlayState* play) { } } - Interface_ChangeAlpha(8); + Interface_ChangeHudMode(HUD_MODE_B_FAST); } else if (gSaveContext.save.weekEventReg[82] & 8) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1497,7 +1522,7 @@ void func_80110038(PlayState* play) { } } - Interface_ChangeAlpha(22); + Interface_ChangeHudMode(HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP); } else if (gSaveContext.save.weekEventReg[84] & 0x20) { if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { @@ -1559,9 +1584,9 @@ void func_80110038(PlayState* play) { } } - if (phi_t3 || (gSaveContext.unk_3F22 != 0xC)) { - gSaveContext.unk_3F22 = 0; - Interface_ChangeAlpha(12); + if (phi_t3 || (gSaveContext.curHudMode != HUD_MODE_A_B_MINIMAP)) { + gSaveContext.curHudMode = HUD_MODE_IDLE; + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); phi_t3 = false; } } else if (player->stateFlags3 & 0x1000000) { @@ -1641,12 +1666,12 @@ void func_80110038(PlayState* play) { } if (phi_t3) { - gSaveContext.unk_3F22 = 0; + gSaveContext.curHudMode = HUD_MODE_IDLE; } if ((play->transitionTrigger == 0) && (play->transitionMode == 0)) { if (ActorCutscene_GetCurrentIndex() == -1) { - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); } } } else { @@ -1676,7 +1701,7 @@ void func_80110038(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; phi_t3 = true; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); } } else { if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && @@ -1904,8 +1929,8 @@ void func_80110038(PlayState* play) { } if (phi_t3 && (play->activeCamId == CAM_ID_MAIN) && (play->transitionTrigger == 0) && (play->transitionMode == 0)) { - gSaveContext.unk_3F22 = 0; - Interface_ChangeAlpha(50); + gSaveContext.curHudMode = HUD_MODE_IDLE; + Interface_ChangeHudMode(HUD_MODE_ALL); } } @@ -1917,7 +1942,7 @@ void func_80111CB4(PlayState* play) { sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { - gSaveContext.unk_3F1E = 0; + gSaveContext.hudModeDimOnlyDisabledButtons = 0; if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { if ((player->stateFlags1 & 0x800000) && (player->currentMask == PLAYER_MASK_BLAST) && @@ -1928,7 +1953,7 @@ void func_80111CB4(PlayState* play) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { - gSaveContext.unk_3F1E = 1; + gSaveContext.hudModeDimOnlyDisabledButtons = true; if (play->sceneNum == SCENE_BOWLING) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; @@ -1943,12 +1968,12 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } - Interface_ChangeAlpha(20); + Interface_ChangeHudMode(HUD_MODE_B_MAGIC); } else { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOW) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU)) { - gSaveContext.unk_3F1E = 1; + gSaveContext.hudModeDimOnlyDisabledButtons = true; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; @@ -1979,33 +2004,33 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(6); + Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE); } } if (play->transitionMode != 0) { - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == 0)) { - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.eventInf[3] & 0x20)) { - Interface_ChangeAlpha(17); + Interface_ChangeHudMode(HUD_MODE_B_MINIMAP); } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && (gSaveContext.minigameState == 1)) { - Interface_ChangeAlpha(8); + Interface_ChangeHudMode(HUD_MODE_B_FAST); } else if (play->unk_1887C >= 2) { - Interface_ChangeAlpha(8); + Interface_ChangeHudMode(HUD_MODE_B_FAST); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } else if (player->stateFlags1 & 0x800000) { - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } } } else { if (player->stateFlags1 & 0x800000) { - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } if (play->sceneNum == SCENE_BOWLING) { @@ -2039,24 +2064,24 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(6); + Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE); if (play->transitionMode != 0) { - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == 0)) { - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } else if (gSaveContext.minigameState == 1) { - Interface_ChangeAlpha(8); + Interface_ChangeHudMode(HUD_MODE_B_FAST); } else if (play->unk_1887C >= 2) { - Interface_ChangeAlpha(8); + Interface_ChangeHudMode(HUD_MODE_B_FAST); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } else if (player->stateFlags1 & 0x800000) { - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } } } else if (D_801BF884 != 0) { @@ -2091,14 +2116,14 @@ void func_80111CB4(PlayState* play) { if (play->msgCtx.choiceIndex != 0) { func_8019F230(); func_80115844(play, 0x12); - Interface_ChangeAlpha(21); + Interface_ChangeHudMode(HUD_MODE_A_B); D_801BF884 = 1; REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { func_8019F208(); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; sp28 = true; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); D_801BF884 = 0; if (D_801BF888) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, @@ -2115,17 +2140,17 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); } else if ((gSaveContext.save.entranceIndex == 0xD010) && (play->transitionTrigger == 0) && (play->transitionMode == 0)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeAlpha(22); + Interface_ChangeHudMode(HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP); } else if (play->actorCtx.unk5 & 4) { if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { func_80115844(play, 0x12); - Interface_ChangeAlpha(21); + Interface_ChangeHudMode(HUD_MODE_A_B); D_801BF884 = 1; } else { func_80166644((u8*)((void)0, gSaveContext.pictoPhoto), @@ -2138,9 +2163,9 @@ void func_80111CB4(PlayState* play) { } } if (sp28) { - gSaveContext.unk_3F22 = 0; + gSaveContext.curHudMode = HUD_MODE_IDLE; if ((play->transitionTrigger == 0) && (play->transitionMode == 0)) { - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); } } } @@ -2221,7 +2246,7 @@ void func_80112C0C(PlayState* play, u16 flag) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - Interface_ChangeAlpha(7); + Interface_ChangeHudMode(HUD_MODE_ALL_NO_MINIMAP_W_DISABLED); } else { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; @@ -3725,8 +3750,8 @@ void Interface_DrawItemButtons(PlayState* play) { // C-Up Button Texture, Color & Label (Tatl Text) gDPPipeSync(OVERLAY_DISP++); - if ((gSaveContext.unk_3F22 == 1) || (gSaveContext.unk_3F22 == 2) || (gSaveContext.unk_3F22 == 5) || - (msgCtx->msgMode != 0)) { + if ((gSaveContext.curHudMode == HUD_MODE_OFF) || (gSaveContext.curHudMode == HUD_MODE_OFF_ALT) || + (gSaveContext.curHudMode == HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE) || (msgCtx->msgMode != 0)) { temp = 0; } else if (player->stateFlags1 & 0x200000) { temp = 70; @@ -4197,7 +4222,7 @@ void Interface_DrawClock(PlayState* play) { /** * Changes Clock's transparancy depending if Player is moving or not and possibly other things */ - if (((void)0, gSaveContext.unk_3F22) == 50) { + if (((void)0, gSaveContext.curHudMode) == HUD_MODE_ALL) { if (func_801234D4(play) != 0) { D_801BFB2C = 80; D_801BFB30 = 5; @@ -6168,8 +6193,8 @@ void Interface_Draw(PlayState* play) { interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; D_801BF884 = 0; - gSaveContext.unk_3F22 = 0; - Interface_ChangeAlpha(50); + gSaveContext.curHudMode = HUD_MODE_IDLE; + Interface_ChangeHudMode(HUD_MODE_ALL); } else { s16 phi_a2; @@ -6177,7 +6202,7 @@ void Interface_Draw(PlayState* play) { if (D_801BF884 == 2) { D_801BF884 = 3; Message_StartTextbox(play, 0xF8, NULL); - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); player->stateFlags1 |= 0x200; } @@ -6257,8 +6282,8 @@ void Interface_Update(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; MessageContext* msgCtx = &play->msgCtx; Player* player = GET_PLAYER(play); - s16 alpha; - s16 alpha1; + s16 dimmingAlpha; + s16 risingAlpha; u16 action; if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) { @@ -6267,65 +6292,66 @@ void Interface_Update(PlayState* play) { } } - switch (gSaveContext.unk_3F20) { - case 0x1: - case 0x2: - case 0x8: - alpha = 255 - (gSaveContext.unk_3F24 << 5); - if (alpha < 0) { - alpha = 0; + // Update hud mode + switch (gSaveContext.requestHudMode) { + case HUD_MODE_OFF: + case HUD_MODE_OFF_ALT: + case HUD_MODE_B_FAST: + dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + if (dimmingAlpha < 0) { + dimmingAlpha = 0; } - func_8010F1A8(play, alpha); - gSaveContext.unk_3F24 += 2; - if (alpha == 0) { - gSaveContext.unk_3F20 = 0; + Interface_UpdateHudAlphas(play, dimmingAlpha); + gSaveContext.hudModeCounter += 2; + if (dimmingAlpha == 0) { + gSaveContext.requestHudMode = HUD_MODE_IDLE; } break; - case 0x3: - case 0x4: - case 0x5: - case 0x6: - case 0x7: - case 0x9: - case 0xA: - case 0xB: - case 0xC: - case 0xD: - case 0xE: - case 0xF: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - alpha = 255 - (gSaveContext.unk_3F24 << 5); - if (alpha < 0) { - alpha = 0; + case HUD_MODE_HEARTS_W_OVERWRITE: + case HUD_MODE_A: + case HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE: + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE: + case HUD_MODE_ALL_NO_MINIMAP_W_DISABLED: + case HUD_MODE_HEARTS_MAGIC: + case HUD_MODE_B: + case HUD_MODE_HEARTS: + case HUD_MODE_A_B_MINIMAP: + case HUD_MODE_HEARTS_MAGIC_W_OVERWRITE: + case HUD_MODE_HEARTS_MAGIC_C: + case HUD_MODE_ALL_NO_MINIMAP: + case HUD_MODE_A_B_C: + case HUD_MODE_B_MINIMAP: + case HUD_MODE_HEARTS_MAGIC_MINIMAP: + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP: + case HUD_MODE_B_MAGIC: + case HUD_MODE_A_B: + case HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP: + dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + if (dimmingAlpha < 0) { + dimmingAlpha = 0; } - func_8010F1A8(play, alpha); - gSaveContext.unk_3F24++; - if (alpha == 0) { - gSaveContext.unk_3F20 = 0; + Interface_UpdateHudAlphas(play, dimmingAlpha); + gSaveContext.hudModeCounter++; + if (dimmingAlpha == 0) { + gSaveContext.requestHudMode = HUD_MODE_IDLE; } break; - case 0x32: - alpha = 255 - (gSaveContext.unk_3F24 << 5); - if (alpha < 0) { - alpha = 0; + case HUD_MODE_ALL: + dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + if (dimmingAlpha < 0) { + dimmingAlpha = 0; } - alpha1 = 255 - alpha; - if (alpha1 >= 255) { - alpha1 = 255; + risingAlpha = 255 - dimmingAlpha; + if (risingAlpha >= 255) { + risingAlpha = 255; } - func_8010EF9C(play, alpha1); + Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); if (gSaveContext.buttonStatus[5] == BTN_DISABLED) { if (interfaceCtx->startAlpha != 70) { @@ -6333,41 +6359,42 @@ void Interface_Update(PlayState* play) { } } else { if (interfaceCtx->startAlpha != 255) { - interfaceCtx->startAlpha = alpha1; + interfaceCtx->startAlpha = risingAlpha; } } if (interfaceCtx->healthAlpha != 255) { - interfaceCtx->healthAlpha = alpha1; + interfaceCtx->healthAlpha = risingAlpha; } if (interfaceCtx->magicAlpha != 255) { - interfaceCtx->magicAlpha = alpha1; + interfaceCtx->magicAlpha = risingAlpha; } if (play->sceneNum == SCENE_SPOT00) { if (interfaceCtx->minimapAlpha < 170) { - interfaceCtx->minimapAlpha = alpha1; + interfaceCtx->minimapAlpha = risingAlpha; } else { interfaceCtx->minimapAlpha = 170; } } else if (interfaceCtx->minimapAlpha != 255) { - interfaceCtx->minimapAlpha = alpha1; + interfaceCtx->minimapAlpha = risingAlpha; } - gSaveContext.unk_3F24++; + gSaveContext.hudModeCounter++; - if (alpha1 == 255) { - gSaveContext.unk_3F20 = 0; + if (risingAlpha == 255) { + gSaveContext.requestHudMode = HUD_MODE_IDLE; } + break; - case 0x34: - gSaveContext.unk_3F20 = 1; - func_8010F1A8(play, 0); - gSaveContext.unk_3F20 = 0; + case HUD_MODE_OFF_NOW: + // Turn off all Hud immediately + gSaveContext.requestHudMode = HUD_MODE_OFF; + Interface_UpdateHudAlphas(play, 0); + gSaveContext.requestHudMode = HUD_MODE_IDLE; // fallthrough - default: break; } @@ -6721,8 +6748,8 @@ void Interface_Init(PlayState* play) { bzero(interfaceCtx, sizeof(InterfaceContext)); gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - gSaveContext.unk_3F20 = 0; - gSaveContext.unk_3F22 = 0; + gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.curHudMode = HUD_MODE_IDLE; View_Init(&interfaceCtx->view, play->state.gfxCtx); diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index c5a063f89..36227cd16 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -508,19 +508,21 @@ s32 func_8012364C(PlayState* play, Player* player, s32 arg2) { if (arg2 == 1) { return (gSaveContext.buttonStatus[1] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_LEFT] - : (gSaveContext.unk_3F22 == 0x10) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_LEFT] - : ITEM_NONE; + : (gSaveContext.curHudMode == HUD_MODE_A_B_C) + ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_LEFT] + : ITEM_NONE; } if (arg2 == 2) { return (gSaveContext.buttonStatus[2] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_DOWN] - : (gSaveContext.unk_3F22 == 0x10) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_DOWN] - : ITEM_NONE; + : (gSaveContext.curHudMode == HUD_MODE_A_B_C) + ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_DOWN] + : ITEM_NONE; } return (gSaveContext.buttonStatus[3] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] - : (gSaveContext.unk_3F22 == 0x10) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] + : (gSaveContext.curHudMode == HUD_MODE_A_B_C) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] : ITEM_NONE; } diff --git a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c index 89c1be29c..2bd5d103a 100644 --- a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c +++ b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c @@ -4,6 +4,7 @@ * Description: Great Bay Temple - Waterwheels and push switches */ +#include "prevent_bss_reordering.h" #include "z_bg_dblue_movebg.h" #include "objects/object_dblue_object/object_dblue_object.h" #include "overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h" diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 66b5ec233..7507a4467 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -597,7 +597,7 @@ void func_808B9F10(DoorWarp1* this, PlayState* play) { if ((this->unk_203 == 0) && func_808B866C(this, play) && !Play_InCsMode(play) && (this->unk_203 == 0)) { Player* player = GET_PLAYER(play); - Interface_ChangeAlpha(1); + Interface_ChangeHudMode(HUD_MODE_OFF); func_800B7298(play, &this->dyna.actor, 9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 9bea16e4a..99f3adb8b 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -5163,7 +5163,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sCameraAt.y = camera->at.y; sCameraAt.z = camera->at.z; D_8090CD4C = 2; - Interface_ChangeAlpha(12); + Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); D_80911F4C = 0.0f; // fallthrough diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index c958a54cc..650acd53a 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -393,7 +393,7 @@ void EnFsn_EndInteraction(EnFsn* this, PlayState* play) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -1161,7 +1161,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, PlayState* play) { Actor_PickUp(&this->actor, play, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->shopItemSelectedTween = 0.0f; item = this->items[this->cursorIdx]; diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 6ba0eecc9..a6d5b8ab6 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -821,7 +821,7 @@ void func_8096326C(EnFu* this, PlayState* play) { void func_809632D0(EnFu* this) { if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); } gSaveContext.save.weekEventReg[8] &= (u8)~1; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 9d8ceb496..0581bab41 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -135,7 +135,7 @@ void EnMag_Init(Actor* thisx, PlayState* play) { this->unk11F02 = 30; this->unk11F00 = this->state = MAG_STATE_INITIAL; - if (gSaveContext.unk_3F1E != 0) { + if (gSaveContext.hudModeDimOnlyDisabledButtons) { this->mainTitleAlpha = 210; this->unk11F32 = 255; this->copyrightAlpha = 255; @@ -158,7 +158,7 @@ void EnMag_Init(Actor* thisx, PlayState* play) { this->displayEffectEnvColor[1] = 255; this->displayEffectEnvColor[2] = 155; - gSaveContext.unk_3F1E = 0; + gSaveContext.hudModeDimOnlyDisabledButtons = false; this->state = MAG_STATE_FADE_IN_MASK; sInputDelayTimer = 20; gSaveContext.fadeDuration = 1; diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index b7204f685..68a097ea9 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -302,7 +302,7 @@ void EnOssan_EndInteraction(PlayState* play, EnOssan* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -985,7 +985,7 @@ void EnOssan_SetupBuyItemWithFanfare(PlayState* play, EnOssan* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; EnOssan_SetupAction(this, EnOssan_BuyItemWithFanfare); } diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index 802fb5794..2d0f3d95b 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -442,7 +442,7 @@ void EnSob1_EndInteraction(PlayState* play, EnSob1* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -932,7 +932,7 @@ void EnSob1_SetupBuyItemWithFanfare(PlayState* play, EnSob1* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; EnSob1_SetupAction(this, EnSob1_BuyItemWithFanfare); } diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 011e1619f..f558c8811 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -509,9 +509,9 @@ void func_80A42F20(EnTest4* this, PlayState* play) { if (sCurrentCs >= 0) { ActorCutscene_Stop(sCurrentCs); } - gSaveContext.unk_3F22 = 0; + gSaveContext.curHudMode = HUD_MODE_IDLE; gSaveContext.eventInf[1] &= (u8)~0x80; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); } } diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 8eee72bcc..e6a2da91b 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -206,7 +206,7 @@ void EnTrt_EndInteraction(PlayState* play, EnTrt* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -640,7 +640,7 @@ void EnTrt_SetupBuyItemWithFanfare(PlayState* play, EnTrt* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeAlpha(50); + Interface_ChangeHudMode(HUD_MODE_ALL); this->drawCursor = 0; this->actionFunc = EnTrt_BuyItemWithFanfare; } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 4a62de6a2..413cc4b66 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -27,10 +27,10 @@ void Select_LoadGame(SelectContext* this, u32 entranceIndex, s32 opt) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; - gSaveContext.unk_3F1E = 0; - gSaveContext.unk_3F20 = 0; - gSaveContext.unk_3F22 = 0; - gSaveContext.unk_3F24 = 0; + gSaveContext.hudModeDimOnlyDisabledButtons = false; + gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.hudModeCounter = 0; Audio_QueueSeqCmd(NA_BGM_STOP); gSaveContext.save.entranceIndex = entranceIndex; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 9ccb20788..9c225a650 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2100,10 +2100,10 @@ 0x8010EBA0:("func_8010EBA0",), 0x8010EC54:("func_8010EC54",), 0x8010EE74:("Interface_NewDay",), - 0x8010EF68:("Interface_ChangeAlpha",), - 0x8010EF9C:("func_8010EF9C",), - 0x8010F0D4:("func_8010F0D4",), - 0x8010F1A8:("func_8010F1A8",), + 0x8010EF68:("Interface_ChangeHudMode",), + 0x8010EF9C:("Interface_RaiseNonDisabledButtonAlphas",), + 0x8010F0D4:("Interface_DimButtonAlphas",), + 0x8010F1A8:("Interface_UpdateHudAlphas",), 0x80110038:("func_80110038",), 0x80111CB4:("func_80111CB4",), 0x801129E4:("Interface_SetSceneRestrictions",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 3f42e9f47..fcb340f87 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1614,10 +1614,10 @@ asm/non_matchings/code/z_parameter/func_8010EB50.s,func_8010EB50,0x8010EB50,0x14 asm/non_matchings/code/z_parameter/func_8010EBA0.s,func_8010EBA0,0x8010EBA0,0x2D asm/non_matchings/code/z_parameter/func_8010EC54.s,func_8010EC54,0x8010EC54,0x88 asm/non_matchings/code/z_parameter/Interface_NewDay.s,Interface_NewDay,0x8010EE74,0x3D -asm/non_matchings/code/z_parameter/Interface_ChangeAlpha.s,Interface_ChangeAlpha,0x8010EF68,0xD -asm/non_matchings/code/z_parameter/func_8010EF9C.s,func_8010EF9C,0x8010EF9C,0x4E -asm/non_matchings/code/z_parameter/func_8010F0D4.s,func_8010F0D4,0x8010F0D4,0x35 -asm/non_matchings/code/z_parameter/func_8010F1A8.s,func_8010F1A8,0x8010F1A8,0x3A4 +asm/non_matchings/code/z_parameter/Interface_ChangeHudMode.s,Interface_ChangeHudMode,0x8010EF68,0xD +asm/non_matchings/code/z_parameter/Interface_RaiseNonDisabledButtonAlphas.s,Interface_RaiseNonDisabledButtonAlphas,0x8010EF9C,0x4E +asm/non_matchings/code/z_parameter/Interface_DimButtonAlphas.s,Interface_DimButtonAlphas,0x8010F0D4,0x35 +asm/non_matchings/code/z_parameter/Interface_UpdateHudAlphas.s,Interface_UpdateHudAlphas,0x8010F1A8,0x3A4 asm/non_matchings/code/z_parameter/func_80110038.s,func_80110038,0x80110038,0x71F asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34C asm/non_matchings/code/z_parameter/Interface_SetSceneRestrictions.s,Interface_SetSceneRestrictions,0x801129E4,0x44 From 74de44b35759e4b02743e119cdc37d04256f1a45 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Jul 2022 05:45:55 +1000 Subject: [PATCH 126/160] Small update --- include/z64.h | 8 ++++---- src/code/z_parameter.c | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/z64.h b/include/z64.h index bfd4dc59b..6fdff9951 100644 --- a/include/z64.h +++ b/include/z64.h @@ -586,17 +586,17 @@ typedef enum { /* 0 */ HUD_MODE_IDLE, /* 1 */ HUD_MODE_OFF, /* 2 */ HUD_MODE_OFF_ALT, // Identical to HUD_MODE_OFF - /* 3 */ HUD_MODE_HEARTS_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 3 */ HUD_MODE_HEARTS_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons /* 4 */ HUD_MODE_A, - /* 5 */ HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite - /* 6 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 5 */ HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons + /* 6 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons /* 7 */ HUD_MODE_ALL_NO_MINIMAP_W_DISABLED, // Only raises button alphas if not disabled /* 8 */ HUD_MODE_B_FAST, // reaches target twice as fast /* 9 */ HUD_MODE_HEARTS_MAGIC, /* 10 */ HUD_MODE_B, /* 11 */ HUD_MODE_HEARTS, /* 12 */ HUD_MODE_A_B_MINIMAP, - /* 13 */ HUD_MODE_HEARTS_MAGIC_W_OVERWRITE, // Uses Interface_DimButtonAlphas so gives the opportunity to overwrite + /* 13 */ HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons /* 14 */ HUD_MODE_HEARTS_MAGIC_C, /* 15 */ HUD_MODE_ALL_NO_MINIMAP, /* 16 */ HUD_MODE_A_B_C, diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 20b7cbff0..7be34d362 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -854,7 +854,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_W_OVERWRITE: + case HUD_MODE_HEARTS_WITH_DIM_BTN: // aAlpha is immediately overwritten in Interface_DimButtonAlphas if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; @@ -916,7 +916,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE: + case HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN: Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { @@ -938,7 +938,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE: + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); // aAlpha overwrites the value set in Interface_DimButtonAlphas @@ -1129,7 +1129,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_MAGIC_W_OVERWRITE: + case HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN: Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { @@ -2004,7 +2004,7 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE); + Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); } } @@ -2064,7 +2064,7 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE); + Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); if (play->transitionMode != 0) { Interface_ChangeHudMode(HUD_MODE_OFF); @@ -3751,7 +3751,7 @@ void Interface_DrawItemButtons(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); if ((gSaveContext.curHudMode == HUD_MODE_OFF) || (gSaveContext.curHudMode == HUD_MODE_OFF_ALT) || - (gSaveContext.curHudMode == HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE) || (msgCtx->msgMode != 0)) { + (gSaveContext.curHudMode == HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN) || (msgCtx->msgMode != 0)) { temp = 0; } else if (player->stateFlags1 & 0x200000) { temp = 70; @@ -6309,16 +6309,16 @@ void Interface_Update(PlayState* play) { } break; - case HUD_MODE_HEARTS_W_OVERWRITE: + case HUD_MODE_HEARTS_WITH_DIM_BTN: case HUD_MODE_A: - case HUD_MODE_A_HEARTS_MAGIC_W_OVERWRITE: - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_W_OVERWRITE: + case HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN: + case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: case HUD_MODE_ALL_NO_MINIMAP_W_DISABLED: case HUD_MODE_HEARTS_MAGIC: case HUD_MODE_B: case HUD_MODE_HEARTS: case HUD_MODE_A_B_MINIMAP: - case HUD_MODE_HEARTS_MAGIC_W_OVERWRITE: + case HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN: case HUD_MODE_HEARTS_MAGIC_C: case HUD_MODE_ALL_NO_MINIMAP: case HUD_MODE_A_B_C: From a3f265559484fe80dcde0bcd471a41ccfac793ca Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 14 Jul 2022 13:12:03 +1000 Subject: [PATCH 127/160] Begin timer docs --- include/functions.h | 6 +- include/variables.h | 2 +- include/z64save.h | 56 ++- src/code/code_8012EC80.c | 2 +- src/code/z_game_over.c | 6 +- src/code/z_parameter.c | 450 +++++++++--------- src/code/z_sram_NES.c | 28 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 8 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 24 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 10 +- .../z_en_horse_game_check.c | 14 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 8 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 20 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 29 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 14 +- .../z_en_syateki_dekunuts.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 36 +- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 4 +- .../ovl_Obj_Roomtimer/z_obj_roomtimer.c | 10 +- src/overlays/gamestates/ovl_select/z_select.c | 14 +- tools/disasm/functions.txt | 4 +- tools/disasm/variables.txt | 2 +- tools/sizes/code_functions.csv | 4 +- 24 files changed, 399 insertions(+), 358 deletions(-) diff --git a/include/functions.h b/include/functions.h index 6e61dc816..94f977dfa 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1866,8 +1866,8 @@ void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); // void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); // void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); // void Interface_InitVertices(void); -// void func_8010E968(void); -void func_8010E9F0(s16 arg0, s16 arg1); +// void Interface_TimerCallback(void); +void func_8010E9F0(s16 timerId, s16 timeLimit); void func_8010EA9C(s16 timeLimit, s16 arg1); // void func_8010EB50(void); // void func_8010EBA0(void); @@ -1929,7 +1929,7 @@ void func_8011C808(PlayState* play); // void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); // void Interface_AllocStory(void); // void Interface_Update(void); -// void func_80121F94(void); +// void Interface_Destroy(void); void Interface_Init(PlayState* play); Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); diff --git a/include/variables.h b/include/variables.h index e45076e78..5547f2eb0 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1048,7 +1048,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BF96A; // extern UNK_TYPE1 D_801BF96C; // extern UNK_TYPE1 D_801BF96E; -// extern UNK_TYPE2 D_801BF970; +// extern UNK_TYPE2 sTimerId; // extern UNK_TYPE1 D_801BF972; // extern UNK_TYPE2 D_801BF974; // extern UNK_TYPE2 D_801BF978; diff --git a/include/z64save.h b/include/z64save.h index 8565daf2b..8339e6ce1 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -54,6 +54,38 @@ typedef enum { #define MAGIC_NORMAL_METER 0x30 #define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER) +typedef enum { + /* 0 */ TIMER_STATE_OFF, + /* 1 */ TIMER_STATE_1, + /* 2 */ TIMER_STATE_2, + /* 3 */ TIMER_STATE_3, + /* 4 */ TIMER_STATE_4, + /* 5 */ TIMER_STATE_5, + /* 6 */ TIMER_STATE_6, + /* 7 */ TIMER_STATE_7, + /* 8 */ TIMER_STATE_8, + /* 9 */ TIMER_STATE_9, + /* 10 */ TIMER_STATE_10, + /* 11 */ TIMER_STATE_11, + /* 12 */ TIMER_STATE_12, + /* 13 */ TIMER_STATE_13, + /* 14 */ TIMER_STATE_14, + /* 15 */ TIMER_STATE_15, + /* 16 */ TIMER_STATE_16 +} TimerState; + +typedef enum { + /* 0 */ TIMER_ID_0, + /* 1 */ TIMER_ID_1, + /* 2 */ TIMER_ID_2, + /* 3 */ TIMER_ID_3, // countdown until mooncrash + /* 4 */ TIMER_ID_4, + /* 5 */ TIMER_ID_5, + /* 6 */ TIMER_ID_6, + /* 7 */ TIMER_ID_MAX, + /* 99 */ TIMER_ID_NONE = 99, +} TimerId; + typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -214,11 +246,11 @@ typedef struct SaveContext { /* 0x1015 */ u8 unk_1015; /* 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 - /* 0x1050 */ OSTime unk_1050[6]; // "bottle_sub", one entry for each bottle - /* 0x1080 */ OSTime unk_1080[6]; // "bottle_time", one entry for each bottle - /* 0x10B0 */ OSTime unk_10B0[6]; // "bottle_stop_time", one entry for each bottle + /* 0x101A */ u8 bottleStatus[6]; // "bottle_status", one entry for each bottle + /* 0x1020 */ OSTime bottleTimer1Value[6]; // "bottle_ostime", one entry for each bottle + /* 0x1050 */ OSTime bottleTimer2Value[6]; // "bottle_sub", one entry for each bottle + /* 0x1080 */ OSTime bottleTimer3Value[6]; // "bottle_time", one entry for each bottle + /* 0x10B0 */ OSTime bottleTimer4Value[6]; // "bottle_stop_time", one entry for each bottle /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" @@ -237,14 +269,14 @@ typedef struct SaveContext { /* 0x3DBF */ u8 showTitleCard; // "name_display" /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" - /* 0x3DC8 */ OSTime unk_3DC8; // "get_time" - /* 0x3DD0 */ u8 unk_3DD0[7]; // "event_fg" + /* 0x3DC8 */ OSTime timerOsTime; // "get_time" + /* 0x3DD0 */ u8 timerState[7]; // "event_fg" /* 0x3DD7 */ u8 timersNoTimeLimit[7]; // "calc_flag" - /* 0x3DE0 */ OSTime unk_3DE0[7]; // "event_ostime" - /* 0x3E18 */ OSTime unk_3E18[7]; // "event_sub" - /* 0x3E50 */ OSTime unk_3E50[7]; // "func_time" - /* 0x3E88 */ OSTime unk_3E88[7]; // "func_end_time" - /* 0x3EC0 */ OSTime unk_3EC0[7]; // "func_stop_time" + /* 0x3DE0 */ OSTime eventTimer1Value[7]; // "event_ostime" + /* 0x3E18 */ OSTime eventTimer2Value[7]; // "event_sub" + /* 0x3E50 */ OSTime funcTimer1Value[7]; // "func_time" + /* 0x3E88 */ OSTime funcTimer2Value[7]; // "func_end_time" + /* 0x3EC0 */ OSTime funcTimer3Value[7]; // "func_stop_time" /* 0x3EF8 */ s16 timerX[7]; // "event_xp" /* 0x3F06 */ s16 timerY[7]; // "event_yp" /* 0x3F14 */ s16 unk_3F14; // "character_change" diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index fa30c5f37..afb377943 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -688,7 +688,7 @@ void Inventory_SetMapVisibility(s16 tingleIndex) { void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) { s16 i; - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.unk_3DE0[timerId]; + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.eventTimer1Value[timerId]; for (i = 0; i < 8; i++) { gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 613517b62..946fb0faf 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -18,14 +18,14 @@ static s16 sGameOverTimer = 0; void GameOver_Update(PlayState* play) { GameOverContext* gameOverCtx = &play->gameOverCtx; - s16 i; + s16 timerId; switch (gameOverCtx->state) { case GAMEOVER_DEATH_START: func_801477B4(play); - for (i = 0; i < ARRAY_COUNT(gSaveContext.unk_3DD0); i++) { - gSaveContext.unk_3DD0[i] = 0; + for (timerId = 0; timerId < TIMER_ID_MAX; timerId++) { + gSaveContext.timerState[timerId] = TIMER_STATE_OFF; } gSaveContext.eventInf[1] &= ~1; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 7be34d362..7041c5d63 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -196,7 +196,7 @@ OSTime D_801BF930[] = { u8 D_801BF968 = false; u8 D_801BF96C = false; -s16 D_801BF970 = 99; +s16 sTimerId = TIMER_ID_NONE; s16 D_801BF974 = 0; s16 D_801BF978 = 10; s16 D_801BF97C = 255; @@ -580,14 +580,14 @@ void Interface_InitVertices(PlayState* play) { } s32 D_801BFA84 = 0; -void func_8010E968(s32 arg0) { +void Interface_TimerCallback(s32 arg0) { s32 btnAPressed; func_80175E68(&D_801F5850[0], 0); btnAPressed = CHECK_BTN_ALL(D_801F5850[0].cur.button, BTN_A); if ((btnAPressed != D_801BFA84) && btnAPressed) { - gSaveContext.unk_3DC8 = osGetTime(); - gSaveContext.unk_3DD0[0] = 15; + gSaveContext.timerOsTime = osGetTime(); + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_15; } D_801BFA84 = btnAPressed; @@ -599,55 +599,55 @@ void func_8010E9F0(s16 timerId, s16 timeLimit) { D_801BF8E0 = 0; - gSaveContext.unk_3DE0[timerId] = timeLimit * 100; - gSaveContext.unk_3E18[timerId] = gSaveContext.unk_3DE0[timerId]; + gSaveContext.eventTimer1Value[timerId] = timeLimit * 100; + gSaveContext.eventTimer2Value[timerId] = gSaveContext.eventTimer1Value[timerId]; - if (gSaveContext.unk_3DE0[timerId] != 0) { + if (gSaveContext.eventTimer1Value[timerId] != 0) { gSaveContext.timersNoTimeLimit[timerId] = false; } else { gSaveContext.timersNoTimeLimit[timerId] = true; } - gSaveContext.unk_3DD0[timerId] = 1; + gSaveContext.timerState[timerId] = TIMER_STATE_1; } void func_8010EA9C(s16 timeLimit, s16 arg1) { - gSaveContext.timerX[0] = 115; - gSaveContext.timerY[0] = 80; + gSaveContext.timerX[TIMER_ID_0] = 115; + gSaveContext.timerY[TIMER_ID_0] = 80; D_801BF8E4 = arg1; - gSaveContext.unk_3DE0[0] = timeLimit * 100; - gSaveContext.unk_3E18[0] = gSaveContext.unk_3DE0[0]; + gSaveContext.eventTimer1Value[TIMER_ID_0] = timeLimit * 100; + gSaveContext.eventTimer2Value[TIMER_ID_0] = gSaveContext.eventTimer1Value[TIMER_ID_0]; - if (gSaveContext.unk_3DE0[0] != 0) { - gSaveContext.timersNoTimeLimit[0] = false; + if (gSaveContext.eventTimer1Value[TIMER_ID_0] != 0) { + gSaveContext.timersNoTimeLimit[TIMER_ID_0] = false; } else { - gSaveContext.timersNoTimeLimit[0] = true; + gSaveContext.timersNoTimeLimit[TIMER_ID_0] = true; } - gSaveContext.unk_3DD0[0] = 13; + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_13; - gSaveContext.unk_3E88[0] = 0; - gSaveContext.unk_3EC0[0] = 0; + gSaveContext.funcTimer2Value[TIMER_ID_0] = 0; + gSaveContext.funcTimer3Value[TIMER_ID_0] = 0; } void func_8010EB50(s32 arg0) { - if (gSaveContext.unk_3DD0[6] != 0) { + if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { // Goron race started if (gSaveContext.eventInf[1] & 1) { - gSaveContext.unk_3DE0[6] = 239; + gSaveContext.eventTimer1Value[TIMER_ID_6] = 239; } else { - gSaveContext.unk_3DE0[6] = 1; + gSaveContext.eventTimer1Value[TIMER_ID_6] = 1; } } } void func_8010EBA0(s16 timer, s16 timerId) { - gSaveContext.unk_101A[timerId] = 1; - gSaveContext.unk_1080[timerId] = timer * 100; - gSaveContext.unk_1050[timerId] = gSaveContext.unk_1080[timerId]; - gSaveContext.unk_1020[timerId] = osGetTime(); - gSaveContext.unk_10B0[timerId] = 0; + gSaveContext.bottleStatus[timerId] = 1; + gSaveContext.bottleTimer3Value[timerId] = timer * 100; + gSaveContext.bottleTimer2Value[timerId] = gSaveContext.bottleTimer3Value[timerId]; + gSaveContext.bottleTimer1Value[timerId] = osGetTime(); + gSaveContext.bottleTimer4Value[timerId] = 0; D_801BF8F0 = 0; } @@ -655,7 +655,7 @@ s32 func_8010EC54(s16 timerId) { u64 time; s16 timerArr[6]; - time = gSaveContext.unk_3DE0[timerId]; + time = gSaveContext.eventTimer1Value[timerId]; // hours timerArr[0] = time / 36000; @@ -5238,175 +5238,175 @@ void Interface_DrawTimers(PlayState* play) { spD0 = osGetTime(); for (j = 0; j < 7; j++) { - if (gSaveContext.unk_3DD0[j] == 4) { - gSaveContext.unk_3EC0[j] += spD0 - D_801BF8E8; + if (gSaveContext.timerState[j] == TIMER_STATE_4) { + gSaveContext.funcTimer3Value[j] += spD0 - D_801BF8E8; } } D_801BF968 = false; } - D_801BF970 = 99; + sTimerId = TIMER_ID_NONE; for (i = 0; i < 7; i++) { - if (gSaveContext.unk_3DD0[i] != 0) { - D_801BF970 = i; - if (D_801BF970 == 0) { - switch (gSaveContext.unk_3DD0[0]) { - case 13: - if (gSaveContext.timersNoTimeLimit[0]) { - gSaveContext.unk_3E50[0] = osGetTime(); + if (gSaveContext.timerState[i] != TIMER_STATE_OFF) { + sTimerId = i; + if (sTimerId == TIMER_ID_0) { + switch (gSaveContext.timerState[TIMER_ID_0]) { + case TIMER_STATE_13: + if (gSaveContext.timerState[TIMER_ID_0]) { + gSaveContext.funcTimer1Value[TIMER_ID_0] = osGetTime(); } - gSaveContext.unk_3DD0[0] = 14; + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_14; D_801BFA84 = 1; - func_80174F7C(func_8010E968, NULL); + func_80174F7C(Interface_TimerCallback, NULL); break; - case 15: - spCC = gSaveContext.unk_3DC8; - gSaveContext.unk_3DE0[0] = - (spCC - ((void)0, gSaveContext.unk_3E50[0]) - ((void)0, gSaveContext.unk_3EC0[0])) * + case TIMER_STATE_15: + spCC = gSaveContext.timerOsTime; + gSaveContext.eventTimer1Value[TIMER_ID_0] = + (spCC - ((void)0, gSaveContext.funcTimer1Value[TIMER_ID_0]) - + ((void)0, gSaveContext.funcTimer3Value[TIMER_ID_0])) * 64 / 3000 / 10000; - gSaveContext.unk_3DD0[0] = 16; + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_16; - func_80174F9C(func_8010E968, NULL); + func_80174F9C(Interface_TimerCallback, NULL); break; - case 14: - case 16: + case TIMER_STATE_14: + case TIMER_STATE_16: break; } break; } else { - switch (gSaveContext.unk_3DD0[D_801BF970]) { - case 1: - case 9: + switch (gSaveContext.timerState[sTimerId]) { + case TIMER_STATE_1: + case TIMER_STATE_9: D_801BFCE4 = 20; if (interfaceCtx->unk_280 != 0) { - gSaveContext.timerX[D_801BF970] = 26; + gSaveContext.timerX[sTimerId] = 26; if (interfaceCtx->magicAlpha != 255) { - gSaveContext.timerY[D_801BF970] = 22; + gSaveContext.timerY[sTimerId] = 22; } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[D_801BF970] = 54; + gSaveContext.timerY[sTimerId] = 54; } else { - gSaveContext.timerY[D_801BF970] = 46; + gSaveContext.timerY[sTimerId] = 46; } if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) { - if (gSaveContext.unk_3DD0[D_801BF970] == 1) { - gSaveContext.unk_3DD0[D_801BF970] = 4; + if (gSaveContext.timerState[sTimerId] == TIMER_STATE_1) { + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; } else { - gSaveContext.unk_3DD0[D_801BF970] = 11; - D_801BF8F8[D_801BF970] = osGetTime(); - D_801BF930[D_801BF970] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_11; + D_801BF8F8[sTimerId] = osGetTime(); + D_801BF930[sTimerId] = 0; } - gSaveContext.unk_3E50[D_801BF970] = osGetTime(); - gSaveContext.unk_3E88[D_801BF970] = 0; - gSaveContext.unk_3EC0[D_801BF970] = 0; + gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); + gSaveContext.funcTimer2Value[sTimerId] = 0; + gSaveContext.funcTimer3Value[sTimerId] = 0; } } else { - gSaveContext.unk_3DD0[D_801BF970] = 2; + gSaveContext.timerState[sTimerId] = TIMER_STATE_2; } break; - case 2: + case TIMER_STATE_2: D_801BFCE4--; if (D_801BFCE4 == 0) { D_801BFCE4 = 20; - gSaveContext.unk_3DD0[D_801BF970] = 3; + gSaveContext.timerState[sTimerId] = TIMER_STATE_3; } break; - case 3: - if (D_801BF970 == 3) { + case TIMER_STATE_3: + if (sTimerId == TIMER_ID_3) { // TODO: s16 casts - timerTemp = ((((void)0, gSaveContext.timerX[D_801BF970]) - XREG(81)) / D_801BFCE4); - gSaveContext.timerX[D_801BF970] -= timerTemp; - timerTemp = ((((void)0, gSaveContext.timerY[D_801BF970]) - XREG(80)) / D_801BFCE4); + timerTemp = ((((void)0, gSaveContext.timerX[sTimerId]) - XREG(81)) / D_801BFCE4); + gSaveContext.timerX[sTimerId] -= timerTemp; + timerTemp = ((((void)0, gSaveContext.timerY[sTimerId]) - XREG(80)) / D_801BFCE4); dummy:; // TODO: Needed? - gSaveContext.timerY[D_801BF970] -= timerTemp; + gSaveContext.timerY[sTimerId] -= timerTemp; } else { - timerTemp = ((((void)0, gSaveContext.timerX[D_801BF970]) - 26) / D_801BFCE4); - gSaveContext.timerX[D_801BF970] -= timerTemp; + timerTemp = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / D_801BFCE4); + gSaveContext.timerX[sTimerId] -= timerTemp; timerTemp = (gSaveContext.save.playerData.healthCapacity > 0xA0) - ? ((((void)0, gSaveContext.timerY[D_801BF970]) - 54) / D_801BFCE4) - : ((((void)0, gSaveContext.timerY[D_801BF970]) - 46) / D_801BFCE4); - gSaveContext.timerY[D_801BF970] -= timerTemp; + ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / D_801BFCE4) + : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / D_801BFCE4); + gSaveContext.timerY[sTimerId] -= timerTemp; } D_801BFCE4--; if (D_801BFCE4 == 0) { D_801BFCE4 = 20; - if (D_801BF970 == 3) { - gSaveContext.timerY[D_801BF970] = XREG(80); + if (sTimerId == TIMER_ID_3) { + gSaveContext.timerY[sTimerId] = XREG(80); } else { - gSaveContext.timerX[D_801BF970] = 26; + gSaveContext.timerX[sTimerId] = 26; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[D_801BF970] = 54; + gSaveContext.timerY[sTimerId] = 54; } else { - gSaveContext.timerY[D_801BF970] = 46; + gSaveContext.timerY[sTimerId] = 46; } } - gSaveContext.unk_3DD0[D_801BF970] = 4; - gSaveContext.unk_3E50[D_801BF970] = osGetTime(); - gSaveContext.unk_3E88[D_801BF970] = 0; - gSaveContext.unk_3EC0[D_801BF970] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); + gSaveContext.funcTimer2Value[sTimerId] = 0; + gSaveContext.funcTimer3Value[sTimerId] = 0; } // fallthrough - - case 4: - if ((gSaveContext.unk_3DD0[D_801BF970] == 4) && (D_801BF970 == 3)) { - gSaveContext.timerX[3] = XREG(81); + case TIMER_STATE_4: + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_3)) { + gSaveContext.timerX[TIMER_ID_3] = XREG(81); if (1) {} if (1) {} if (1) {} if (1) {} // TODO: Needed? - gSaveContext.timerY[3] = XREG(80); + gSaveContext.timerY[TIMER_ID_3] = XREG(80); } break; - case 10: - D_801BF8F8[D_801BF970] = osGetTime(); - D_801BF930[D_801BF970] = 0; - gSaveContext.unk_3DD0[D_801BF970] = 11; + case TIMER_STATE_10: + D_801BF8F8[sTimerId] = osGetTime(); + D_801BF930[sTimerId] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_11; // fallthrough - - case 11: - D_801BF930[D_801BF970] = osGetTime() - D_801BF8F8[D_801BF970]; + case TIMER_STATE_11: + D_801BF930[sTimerId] = osGetTime() - D_801BF8F8[sTimerId]; break; - case 12: + case TIMER_STATE_12: spD0 = osGetTime(); - gSaveContext.unk_3EC0[D_801BF970] = - gSaveContext.unk_3EC0[D_801BF970] + spD0 - D_801BF8F8[D_801BF970]; - D_801BF930[D_801BF970] = 0; - gSaveContext.unk_3DD0[D_801BF970] = 4; + gSaveContext.funcTimer3Value[sTimerId] = + gSaveContext.funcTimer3Value[sTimerId] + spD0 - D_801BF8F8[sTimerId]; + D_801BF930[sTimerId] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; break; - case 8: - gSaveContext.unk_3DE0[D_801BF970] = (gSaveContext.save.playerData.health >> 1) * 100; - gSaveContext.timersNoTimeLimit[D_801BF970] = false; - gSaveContext.unk_3E18[D_801BF970] = gSaveContext.unk_3DE0[D_801BF970]; + case TIMER_STATE_8: + gSaveContext.eventTimer1Value[sTimerId] = (gSaveContext.save.playerData.health >> 1) * 100; + gSaveContext.timersNoTimeLimit[sTimerId] = false; + gSaveContext.eventTimer2Value[sTimerId] = gSaveContext.eventTimer1Value[sTimerId]; D_801BFCE4 = 20; - gSaveContext.unk_3DD0[D_801BF970] = 3; + gSaveContext.timerState[sTimerId] = TIMER_STATE_3; break; - case 5: + case TIMER_STATE_5: spD0 = osGetTime(); - gSaveContext.unk_3E88[D_801BF970] = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - - ((void)0, gSaveContext.unk_3EC0[D_801BF970])) * - 64 / 3000 / 10000; + gSaveContext.funcTimer2Value[sTimerId] = + (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - + ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * + 64 / 3000 / 10000; - gSaveContext.unk_3DD0[D_801BF970] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; - if (D_801BF970 == 3) { + if (sTimerId == TIMER_ID_3) { gSaveContext.save.day = 4; if ((play->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { play->nextEntranceIndex = 0x5410; @@ -5415,40 +5415,41 @@ void Interface_DrawTimers(PlayState* play) { } else { func_8011C808(play); } - } else if (gSaveContext.unk_3DD0[6] != 0) { - gSaveContext.timerX[6] = 115; - gSaveContext.timerY[6] = 80; - if (gSaveContext.unk_3DD0[6] < 0xB) { - gSaveContext.unk_3DD0[6] = 3; + } else if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_6] = 115; + gSaveContext.timerY[TIMER_ID_6] = 80; + if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; } } break; - case 6: + case TIMER_STATE_6: spD0 = osGetTime(); - gSaveContext.unk_3E88[D_801BF970] = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - - ((void)0, gSaveContext.unk_3EC0[D_801BF970])) * - 64 / 3000 / 10000; + gSaveContext.funcTimer2Value[sTimerId] = + (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - + ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * + 64 / 3000 / 10000; if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { - if (gSaveContext.unk_3E88[D_801BF970] >= 12000) { - gSaveContext.unk_3E88[D_801BF970] = 12000; - gSaveContext.unk_3DE0[D_801BF970] = 12000; + if (gSaveContext.funcTimer2Value[sTimerId] >= 12000) { + gSaveContext.funcTimer2Value[sTimerId] = 12000; + gSaveContext.eventTimer1Value[sTimerId] = 12000; } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && - (gSaveContext.unk_3E88[D_801BF970] >= 12000)) { - gSaveContext.unk_3DE0[D_801BF970] = 12000; + (gSaveContext.funcTimer2Value[sTimerId] >= 12000)) { + gSaveContext.eventTimer1Value[sTimerId] = 12000; } - gSaveContext.unk_3DD0[D_801BF970] = 7; + gSaveContext.timerState[sTimerId] = TIMER_STATE_7; - if (gSaveContext.unk_3DD0[6] != 0) { - gSaveContext.timerX[6] = 115; - gSaveContext.timerY[6] = 80; - if (gSaveContext.unk_3DD0[6] < 11) { - gSaveContext.unk_3DD0[6] = 3; + if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_6] = 115; + gSaveContext.timerY[TIMER_ID_6] = 80; + if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; } - gSaveContext.unk_3DD0[D_801BF970] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; } break; } @@ -5457,35 +5458,37 @@ void Interface_DrawTimers(PlayState* play) { } } - if ((D_801BF970 != 99) && gSaveContext.unk_3DD0[D_801BF970]) { // TODO: No != 0 - if (!gSaveContext.timersNoTimeLimit[D_801BF970]) { + if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerState[sTimerId]) { // TODO: No != 0 + if (!gSaveContext.timersNoTimeLimit[sTimerId]) { D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; - if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) || - (gSaveContext.unk_3DD0[D_801BF970] == 11) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_10) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_11) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_14)) { spD0 = osGetTime(); - spD0 = (spD0 - ((void)0, gSaveContext.unk_3EC0[D_801BF970]) - D_801BF930[D_801BF970] - - ((void)0, gSaveContext.unk_3E50[D_801BF970])) * + spD0 = (spD0 - ((void)0, gSaveContext.funcTimer3Value[sTimerId]) - D_801BF930[sTimerId] - + ((void)0, gSaveContext.funcTimer1Value[sTimerId])) * 64 / 3000 / 10000; } else { - if (gSaveContext.unk_3DD0[D_801BF970] == 7) { - spD0 = gSaveContext.unk_3E88[D_801BF970]; + if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { + spD0 = gSaveContext.funcTimer2Value[sTimerId]; } else { spD0 = 0; } } if (spD0 == 0) { - gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; - } else if (gSaveContext.unk_3E18[D_801BF970] >= spD0) { - if (gSaveContext.unk_3E18[D_801BF970] <= spD0) { - gSaveContext.unk_3DE0[D_801BF970] = 0; + gSaveContext.eventTimer1Value[sTimerId] = gSaveContext.eventTimer2Value[sTimerId] - spD0; + } else if (gSaveContext.eventTimer2Value[sTimerId] >= spD0) { + if (gSaveContext.eventTimer2Value[sTimerId] <= spD0) { + gSaveContext.eventTimer1Value[sTimerId] = 0; } else { - gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0; + gSaveContext.eventTimer1Value[sTimerId] = gSaveContext.eventTimer2Value[sTimerId] - spD0; } } else { - gSaveContext.unk_3DE0[D_801BF970] = 0; - gSaveContext.unk_3DD0[D_801BF970] = 5; + gSaveContext.eventTimer1Value[sTimerId] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_5; if (D_801BF8E0 != 0) { gSaveContext.save.playerData.health = 0; play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 2)); @@ -5493,14 +5496,14 @@ void Interface_DrawTimers(PlayState* play) { D_801BF8E0 = 0; } - func_8011C898(((void)0, gSaveContext.unk_3DE0[D_801BF970]), D_801BFCE8); + func_8011C898(((void)0, gSaveContext.eventTimer1Value[sTimerId]), D_801BFCE8); - if (gSaveContext.unk_3DE0[D_801BF970] > 6000) { + if (gSaveContext.eventTimer1Value[sTimerId] > 6000) { if ((D_801BFCF8 != D_801BFCE8[4]) && (D_801BFCE8[4] == 1)) { play_sound(NA_SE_SY_MESSAGE_WOMAN); D_801BFCF8 = D_801BFCE8[4]; } - } else if (gSaveContext.unk_3DE0[D_801BF970] > 1000) { + } else if (gSaveContext.eventTimer1Value[sTimerId] > 1000) { if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] % 2) != 0)) { play_sound(NA_SE_SY_WARNING_COUNT_N); D_801BFCF8 = D_801BFCE8[4]; @@ -5513,15 +5516,16 @@ void Interface_DrawTimers(PlayState* play) { D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; - if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) { + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_14)) { spD0 = osGetTime(); - spD0 = (spD0 - ((void)0, gSaveContext.unk_3E50[D_801BF970]) - - ((void)0, gSaveContext.unk_3EC0[D_801BF970]) - D_801BF930[D_801BF970]) * + spD0 = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - + ((void)0, gSaveContext.funcTimer3Value[sTimerId]) - D_801BF930[sTimerId]) * 64 / 3000 / 10000; - } else if (gSaveContext.unk_3DD0[D_801BF970] == 7) { - spD0 = gSaveContext.unk_3E88[D_801BF970]; - } else if (D_801BF970 == 0) { - spD0 = gSaveContext.unk_3DE0[D_801BF970]; + } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { + spD0 = gSaveContext.funcTimer2Value[sTimerId]; + } else if (sTimerId == TIMER_ID_0) { + spD0 = gSaveContext.eventTimer1Value[sTimerId]; } else { spD0 = 0; } @@ -5534,16 +5538,16 @@ void Interface_DrawTimers(PlayState* play) { spD0 = 12000; } - gSaveContext.unk_3DE0[D_801BF970] = spD0; + gSaveContext.eventTimer1Value[sTimerId] = spD0; func_8011C898(spD0, D_801BFCE8); if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { - if ((gSaveContext.unk_3DE0[D_801BF970] > 11000) && (D_801BFCF8 != D_801BFCE8[4])) { + if ((gSaveContext.eventTimer1Value[sTimerId] > 11000) && (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); D_801BFCF8 = D_801BFCE8[4]; } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if ((((void)0, gSaveContext.unk_3DE0[D_801BF970]) > + if ((((void)0, gSaveContext.eventTimer1Value[sTimerId]) > (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -5556,69 +5560,70 @@ void Interface_DrawTimers(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); OVERLAY_DISP = - Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[D_801BF970]), - ((void)0, gSaveContext.timerY[D_801BF970]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); + Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[sTimerId]), + ((void)0, gSaveContext.timerY[sTimerId]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - if (((D_801BF970 == 0) && (gSaveContext.unk_3DD0[0] == 14) && (D_801BF8E4 == 0) && - (gSaveContext.unk_3DE0[0] < 300)) || - (D_801BF8E4 == 2) || (gSaveContext.unk_3DD0[D_801BF970] < 13)) { - if (gSaveContext.unk_3DD0[D_801BF970]) { // TODO: No != 0 - if (D_801BF970 == 2) { - if ((gSaveContext.unk_3DE0[D_801BF970] == 0) || (gSaveContext.unk_3DD0[D_801BF970] == 4)) { + if (((sTimerId == TIMER_ID_0) && (gSaveContext.timerState[TIMER_ID_0] == TIMER_STATE_14) && + (D_801BF8E4 == 0) && (gSaveContext.eventTimer1Value[TIMER_ID_0] < 300)) || + (D_801BF8E4 == 2) || (gSaveContext.timerState[sTimerId] <= TIMER_STATE_12)) { + if (gSaveContext.timerState[sTimerId]) { // TODO: No != 0 + if (sTimerId == TIMER_ID_2) { + if ((gSaveContext.eventTimer1Value[sTimerId] == 0) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_4)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { - if (gSaveContext.unk_3DE0[D_801BF970] >= 11000) { + if (gSaveContext.eventTimer1Value[sTimerId] >= 11000) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if (((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= + if (((void)0, gSaveContext.eventTimer1Value[sTimerId]) >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (((void)0, gSaveContext.unk_3DE0[D_801BF970]) >= + } else if (((void)0, gSaveContext.eventTimer1Value[sTimerId]) >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && - !gSaveContext.timersNoTimeLimit[D_801BF970] && - (gSaveContext.unk_3DD0[D_801BF970] != 11)) { + } else if ((gSaveContext.eventTimer1Value[sTimerId] < 1000) && + !gSaveContext.timersNoTimeLimit[sTimerId] && + (gSaveContext.timerState[sTimerId] != TIMER_STATE_11)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } - if (D_801BF970 == 0) { + if (sTimerId == TIMER_ID_0) { if (D_801BF8E4 == 2) { for (j = 0; j < 4; j++) { OVERLAY_DISP = Gfx_TextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, - ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } else { for (j = 0; j < 5; j++) { OVERLAY_DISP = Gfx_TextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, - ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } else { for (j = 0; j < 8; j++) { - OVERLAY_DISP = Gfx_TextureI8( - OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, - ((void)0, gSaveContext.timerX[D_801BF970]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[D_801BF970]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + OVERLAY_DISP = + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, + ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], + ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } @@ -5663,38 +5668,40 @@ void Interface_UpdateTimers(PlayState* play) { var3 = osGetTime(); for (j = BOTTLE_FIRST; j < BOTTLE_MAX; j++) { - if (gSaveContext.unk_101A[j] == 1) { - gSaveContext.unk_10B0[j] += var3 - D_801BF8F0; + if (gSaveContext.bottleStatus[j] == 1) { + gSaveContext.bottleTimer4Value[j] += var3 - D_801BF8F0; } } D_801BF96C = false; } - D_801BF970 = 99; + sTimerId = TIMER_ID_NONE; for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.unk_101A[i] == 1) { + if (gSaveContext.bottleStatus[i] == 1) { var3 = osGetTime(); - var3 = (((var3 - ((void)0, gSaveContext.unk_10B0[i]) - ((void)0, gSaveContext.unk_1020[i])) / 10000) * + var3 = (((var3 - ((void)0, gSaveContext.bottleTimer4Value[i]) - + ((void)0, gSaveContext.bottleTimer1Value[i])) / + 10000) * 64) / 3000; if (var3 == 0) { - gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; - } else if (gSaveContext.unk_1050[i] >= var3) { - if (gSaveContext.unk_1050[i] <= var3) { - gSaveContext.unk_1080[i] = 0; + gSaveContext.bottleTimer3Value[i] = gSaveContext.bottleTimer2Value[i] - var3; + } else if (gSaveContext.bottleTimer2Value[i] >= var3) { + if (gSaveContext.bottleTimer2Value[i] <= var3) { + gSaveContext.bottleTimer3Value[i] = 0; } else { - gSaveContext.unk_1080[i] = gSaveContext.unk_1050[i] - var3; + gSaveContext.bottleTimer3Value[i] = gSaveContext.bottleTimer2Value[i] - var3; } } else { - gSaveContext.unk_1080[i] = 0; + gSaveContext.bottleTimer3Value[i] = 0; if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(play, 0xFA, NULL); } - gSaveContext.unk_101A[i] = 0; + gSaveContext.bottleStatus[i] = 0; } } } @@ -6605,23 +6612,23 @@ void Interface_Update(PlayState* play) { Magic_UpdateAddRequest(); } - if (gSaveContext.unk_3DD0[5] == 0) { + if (gSaveContext.timerState[TIMER_ID_5] == TIMER_STATE_OFF) { if ((D_801BF8DC == 1) || (D_801BF8DC == 4)) { if (CUR_FORM != PLAYER_FORM_ZORA) { if (play->gameOverCtx.state == 0) { if ((gSaveContext.save.playerData.health >> 1) != 0) { - gSaveContext.unk_3DD0[5] = 8; - gSaveContext.timerX[5] = 115; - gSaveContext.timerY[5] = 80; + gSaveContext.timerState[TIMER_ID_5] = TIMER_STATE_8; + gSaveContext.timerX[TIMER_ID_5] = 115; + gSaveContext.timerY[TIMER_ID_5] = 80; D_801BF8E0 = 1; - gSaveContext.timersNoTimeLimit[5] = false; + gSaveContext.timersNoTimeLimit[TIMER_ID_5] = false; } } } } } else { - if (((D_801BF8DC == 0) || (D_801BF8DC == 3)) && (gSaveContext.unk_3DD0[5] < 5)) { - gSaveContext.unk_3DD0[5] = 0; + if (((D_801BF8DC == 0) || (D_801BF8DC == 3)) && (gSaveContext.timerState[TIMER_ID_5] <= TIMER_STATE_4)) { + gSaveContext.timerState[TIMER_ID_5] = TIMER_STATE_OFF; } } @@ -6733,12 +6740,11 @@ void Interface_Update(PlayState* play) { } } -void func_80121F94(void) { +void Interface_Destroy(void) { Map_Destroy(); - func_80174F9C(func_8010E968, NULL); + func_80174F9C(Interface_TimerCallback, NULL); } -// OoT func_801109B0 (from z_construct.c) void Interface_Init(PlayState* play) { s32 pad; InterfaceContext* interfaceCtx = &play->interfaceCtx; @@ -6787,11 +6793,13 @@ void Interface_Init(PlayState* play) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_RIGHT); } - if (((gSaveContext.unk_3DD0[4] == 4) || (gSaveContext.unk_3DD0[6] == 4)) && - ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && (gSaveContext.unk_3DD0[4] == 4)) { - gSaveContext.unk_3DD0[4] = 1; - gSaveContext.timerX[4] = 115; - gSaveContext.timerY[4] = 80; + if (((gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4) || + (gSaveContext.timerState[TIMER_ID_6] == TIMER_STATE_4)) && + ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && + (gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4)) { + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_1; + gSaveContext.timerX[TIMER_ID_4] = 115; + gSaveContext.timerY[TIMER_ID_4] = 80; } LifeMeter_Init(play); @@ -6804,19 +6812,19 @@ void Interface_Init(PlayState* play) { if (gSaveContext.eventInf[3] & 0x10) { gSaveContext.eventInf[3] &= (u8)~0x10; - gSaveContext.unk_3DD0[4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; } - gSaveContext.unk_3DD0[1] = 0; - gSaveContext.unk_3DE0[1] = 0; - gSaveContext.unk_3E18[1] = 0; - gSaveContext.unk_3E50[1] = 0; - gSaveContext.unk_3E88[1] = 0; - gSaveContext.unk_3EC0[1] = 0; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_OFF; + gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; + gSaveContext.eventTimer2Value[TIMER_ID_1] = 0; + gSaveContext.funcTimer1Value[TIMER_ID_1] = 0; + gSaveContext.funcTimer2Value[TIMER_ID_1] = 0; + gSaveContext.funcTimer3Value[TIMER_ID_1] = 0; for (i = 0; i < 7; i++) { - if (gSaveContext.unk_3DD0[i] == 7) { - gSaveContext.unk_3DD0[i] = 0; + if (gSaveContext.timerState[i] == TIMER_STATE_7) { + gSaveContext.timerState[i] = TIMER_STATE_OFF; } } diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index da7d9248d..dfe5b2bd5 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -873,13 +873,13 @@ void func_80144A94(SramContext* sramCtx) { gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible; } - for (i = 0; i < ARRAY_COUNT(gSaveContext.unk_3DD0); i++) { - gSaveContext.unk_3DD0[i] = 0; - gSaveContext.unk_3DE0[i] = 0; - gSaveContext.unk_3E18[i] = 0; - gSaveContext.unk_3E50[i] = 0; - gSaveContext.unk_3E88[i] = 0; - gSaveContext.unk_3EC0[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { + gSaveContext.timerState[i] = TIMER_STATE_OFF; + gSaveContext.eventTimer1Value[i] = 0; + gSaveContext.eventTimer2Value[i] = 0; + gSaveContext.funcTimer1Value[i] = 0; + gSaveContext.funcTimer2Value[i] = 0; + gSaveContext.funcTimer3Value[i] = 0; } D_801BDAA0 = 1; @@ -944,13 +944,13 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible; } - for (i = 0; i < ARRAY_COUNT(gSaveContext.unk_3DD0); i++) { - gSaveContext.unk_3DD0[i] = 0; - gSaveContext.unk_3DE0[i] = 0; - gSaveContext.unk_3E18[i] = 0; - gSaveContext.unk_3E50[i] = 0; - gSaveContext.unk_3E88[i] = 0; - gSaveContext.unk_3EC0[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { + gSaveContext.timerState[i] = TIMER_STATE_OFF; + gSaveContext.eventTimer1Value[i] = 0; + gSaveContext.eventTimer2Value[i] = 0; + gSaveContext.funcTimer1Value[i] = 0; + gSaveContext.funcTimer2Value[i] = 0; + gSaveContext.funcTimer3Value[i] = 0; } if (gSaveContext.save.isFirstCycle) { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 0c3f69c51..88439c993 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1046,9 +1046,9 @@ void DmStk_Init(Actor* thisx, PlayState* play) { if (gSaveContext.save.entranceIndex == 0x2C00) { if (gSaveContext.sceneSetupIndex == 0) { - if (gSaveContext.unk_3DD0[3] == 0) { + if (gSaveContext.timerState[TIMER_ID_3] == TIMER_STATE_OFF) { // Starts a 5 minute (300 second) timer until the moon falls. - func_8010E9F0(3, 300); + func_8010E9F0(TIMER_ID_3, 300); XREG(80) = 200; XREG(81) = 115; } @@ -1063,10 +1063,10 @@ void DmStk_Init(Actor* thisx, PlayState* play) { } else if (gSaveContext.sceneSetupIndex == 3) { this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED; - if (gSaveContext.unk_3DD0[3] == 0) { + if (gSaveContext.timerState[TIMER_ID_3] == TIMER_STATE_OFF) { // This code is called when the Giants fail to stop the moon. // Starts a 1 minute (60 second) timer until the moon falls. - func_8010E9F0(3, 60); + func_8010E9F0(TIMER_ID_3, 60); XREG(80) = 200; XREG(81) = 115; } diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index e2e8e4145..cbe44d834 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -216,7 +216,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 14, &this->unk_32C); thisx->room = -1; - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); this->unk_3B0 |= 1; this->actionFunc = func_80A72438; @@ -817,7 +817,7 @@ void func_80A73244(EnDno* this, PlayState* play) { this->unk_328 = 2; this->actor.speedXZ = 0.0f; Flags_UnsetSwitch(play, ENDNO_GET_3F80(&this->actor)); - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; this->unk_44E = 0; this->actionFunc = func_80A732C8; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index a6d5b8ab6..04e498715 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -401,7 +401,7 @@ void func_80962340(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x287E, &this->actor); this->unk_552 = 0x287E; } - } else if ((gSaveContext.unk_3DE0[4] == 0) && (this->unk_552 != 0x2888)) { + } else if ((gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) && (this->unk_552 != 0x2888)) { Message_StartTextbox(play, 0x2886, &this->actor); this->unk_552 = 0x2886; } else { @@ -644,7 +644,7 @@ void func_80962A10(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; - func_8010E9F0(4, 60); + func_8010E9F0(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); } else { @@ -682,7 +682,7 @@ void func_80962BCC(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - func_8010E9F0(4, 60); + func_8010E9F0(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -713,7 +713,7 @@ void func_80962D60(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - func_8010E9F0(4, 60); + func_8010E9F0(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -761,11 +761,11 @@ void func_80962F4C(EnFu* this, PlayState* play) { break; } - if (gSaveContext.unk_3DE0[4] < 2000) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] < 2000) { s16 val = D_80964B00[this->unk_542] + 200; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); - } else if (gSaveContext.unk_3DE0[4] < 4000) { + } else if (gSaveContext.eventTimer1Value[TIMER_ID_4] < 4000) { s16 val = D_80964B00[this->unk_542] + 100; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); @@ -777,12 +777,12 @@ void func_80962F4C(EnFu* this, PlayState* play) { if ((!DynaPolyActor_IsInRidingRotatingState((DynaPolyActor*)this->actor.child) && (player->actor.bgCheckFlags & 1)) || - (gSaveContext.unk_3DE0[4] < 1) || (this->unk_548 == this->unk_54C)) { + (gSaveContext.eventTimer1Value[TIMER_ID_4] < 1) || (this->unk_548 == this->unk_54C)) { player->stateFlags3 &= ~0x400000; func_80961E88(play); player->stateFlags1 |= 0x20; if (this->unk_548 < this->unk_54C) { - if (gSaveContext.unk_3DE0[4] == 0) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) { Message_StartTextbox(play, 0x2885, &this->actor); this->unk_552 = 0x2885; } else { @@ -790,15 +790,15 @@ void func_80962F4C(EnFu* this, PlayState* play) { this->unk_552 = 0x2888; } func_801A2C20(); - gSaveContext.unk_3DE0[4] = 0; - gSaveContext.unk_3DD0[4] = 5; + gSaveContext.eventTimer1Value[TIMER_ID_4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; this->unk_548 = 0; func_809632D0(this); } else { this->unk_548 = 0; func_801A2C20(); - gSaveContext.unk_3DE0[4] = 0; - gSaveContext.unk_3DD0[4] = 5; + gSaveContext.eventTimer1Value[TIMER_ID_4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; func_801A3098(NA_BGM_GET_ITEM | 0x900); Interface_SetPerfectMinigame(play, 1); this->unk_54A = 3; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 92b727838..12104c324 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -459,7 +459,7 @@ void func_80B10240(EnGb2* this, PlayState* play) { D_80B119B0[this->unk_280].unk_04.y, D_80B119B0[this->unk_280].unk_04.z, 0, 0, 0, this->unk_27E); if (this->unk_280 == 0) { - func_8010E9F0(1, 180); + func_8010E9F0(TIMER_ID_1, 180); } this->actionFunc = func_80B10344; } else { @@ -487,7 +487,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (this->unk_26C & 0x200) { if (this->unk_280 == 3) { this->unk_26C &= ~0x200; - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; func_800FE498(); gSaveContext.eventInf[4] |= 0x40; func_80B0FE7C(play); @@ -506,7 +506,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { } if (gSaveContext.save.playerData.health < 49) { - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x20; @@ -519,8 +519,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { } func_80B0FE7C(play); - } else if (gSaveContext.unk_3DE0[1] == 0) { - gSaveContext.unk_3DD0[1] = 5; + } else if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x10; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 90c67839c..1cd96bd32 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -121,7 +121,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { return false; } - func_8010E9F0(4, 0); + func_8010E9F0(TIMER_ID_4, 0); play->interfaceCtx.unk_280 = 1; this->horse1 = @@ -145,7 +145,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { } s32 func_808F8E94(EnHorseGameCheck* this, PlayState* play) { - gSaveContext.unk_3DD0[4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; return true; } @@ -247,11 +247,11 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { return true; } - if (gSaveContext.unk_3DE0[4] >= 0x4650) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 0x4650) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_4); this->unk_174 = 60; } @@ -284,7 +284,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -317,7 +317,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x02000000; - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -346,7 +346,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x800; - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_2); this->unk_174 = 60; } diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index ef99496be..57da759e1 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -155,7 +155,7 @@ void func_80C13BB8(EnJgameTsn* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (this->actor.flags & ACTOR_FLAG_10000) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.unk_3DE0[4] > 0) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] > 0) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 1); Message_StartTextbox(play, 0x10A2, &this->actor); this->unk_300 = 0x10A2; @@ -287,7 +287,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { play->interfaceCtx.unk_280 = 1; Interface_InitMinigame(play); gSaveContext.save.weekEventReg[90] |= 0x20; - func_8010E9F0(4, 0x78); + func_8010E9F0(TIMER_ID_4, 120); this->actionFunc = func_80C1418C; } @@ -352,7 +352,7 @@ void func_80C14230(EnJgameTsn* this, PlayState* play) { func_80C14030(this); } - if (gSaveContext.unk_3DE0[4] == 0) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) { Message_StartTextbox(play, 0x10A1, &this->actor); this->unk_300 = 0x10A1; player->stateFlags1 |= 0x20; @@ -479,7 +479,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { case 0x10A1: func_801477B4(play); gSaveContext.minigameState = 3; - gSaveContext.unk_3DD0[4] = 5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; gSaveContext.save.weekEventReg[90] &= (u8)~0x20; func_80C144E4(this); break; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 1d40d36a9..51131b05e 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -678,7 +678,7 @@ void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { // "You're feeling confident" Message_StartTextbox(play, 0x336E, &this->actor); this->actionFunc = EnMa4_HorsebackGameTalking; - } else if ((gSaveContext.unk_3DE0[4] < 115 * 100)) { // timer < 115 seconds + } else if ((gSaveContext.eventTimer1Value[TIMER_ID_4] < 115 * 100)) { // timer < 115 seconds func_800B8614(&this->actor, play, 100.0f); } } @@ -693,7 +693,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); play->interfaceCtx.unk_280 = 1; - func_8010E9F0(4, 0); + func_8010E9F0(TIMER_ID_4, 0); gSaveContext.save.weekEventReg[8] |= 1; Interface_InitMinigame(play); player->stateFlags1 |= 0x20; @@ -721,9 +721,9 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { play->interfaceCtx.unk_25C = 1; } - if ((gSaveContext.unk_3DE0[4] >= 2 * 60 * 100) // timer >= 2 minutes + if ((gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) // timer >= 2 minutes || (this->poppedBalloonCounter == 10)) { - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; EnMa4_SetupHorsebackGameEnd(this, play); D_80AC0258 = 0; } @@ -902,13 +902,13 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { gSaveContext.save.weekEventReg[21] |= 0x40; } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.unk_3DE0[4] >= 2 * 60 * 100) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { // "Too bad Grasshopper" EnMa4_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x336D, &this->actor); this->textId = 0x336D; } else { - time = gSaveContext.unk_3DE0[4]; + time = gSaveContext.eventTimer1Value[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // [Score] New record! gSaveContext.save.horseBackBalloonHighScore = time; @@ -947,12 +947,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3354, &this->actor); this->textId = 0x3354; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.unk_3DE0[4] >= 2 * 60 * 100) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.unk_3DE0[4]; + time = gSaveContext.eventTimer1Value[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); @@ -974,12 +974,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3358, &this->actor); this->textId = 0x3358; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.unk_3DE0[4] >= 2 * 60 * 100) { + if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.unk_3DE0[4]; + time = gSaveContext.eventTimer1Value[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // New record gSaveContext.save.horseBackBalloonHighScore = time; diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 4e182dfb6..553e216ba 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -245,13 +245,14 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { break; case 0x2791: - if (gSaveContext.unk_3DE0[0] == 1000) { + if (gSaveContext.eventTimer1Value[TIMER_ID_0] == 1000) { Message_StartTextbox(play, 0x2792, &this->actor); this->unk_2B4 = 0x2792; - } else if ((gSaveContext.unk_3DE0[0] >= 1500)) { + } else if ((gSaveContext.eventTimer1Value[TIMER_ID_0] >= 1500)) { Message_StartTextbox(play, 0x2797, &this->actor); this->unk_2B4 = 0x2797; - } else if ((gSaveContext.unk_3DE0[0] <= 1050) && (gSaveContext.unk_3DE0[0] >= 950)) { + } else if ((gSaveContext.eventTimer1Value[TIMER_ID_0] <= 1050) && + (gSaveContext.eventTimer1Value[TIMER_ID_0] >= 950)) { Message_StartTextbox(play, 0x2795, &this->actor); this->unk_2B4 = 0x2795; } else { @@ -297,7 +298,7 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { } else if ((this->unk_2AC > 0) && (this->unk_2B4 == 0x2791)) { this->unk_2AC--; if (this->unk_2AC == 0) { - if (gSaveContext.unk_3DE0[0] == 1000) { + if (gSaveContext.eventTimer1Value[TIMER_ID_0] == 1000) { func_801A3098(0x922); } else { play_sound(NA_SE_SY_ERROR); @@ -376,18 +377,18 @@ void func_80A6FBA0(EnMm3* this) { void func_80A6FBFC(EnMm3* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (gSaveContext.unk_3DD0[0] == 0x10) { + if (gSaveContext.timerState[TIMER_ID_0] == TIMER_STATE_16) { player->stateFlags1 &= ~0x20; this->actor.flags |= ACTOR_FLAG_10000; - if (gSaveContext.unk_3DE0[0] > 1500) { - gSaveContext.unk_3DE0[0] = 1500; - } else if ((((void)0, gSaveContext.unk_3DE0[0]) >= (OSTime)(995 - XREG(16))) && - (((void)0, gSaveContext.unk_3DE0[0]) <= (OSTime)(1005 + XREG(17)))) { - gSaveContext.unk_3DE0[0] = 1000; + if (gSaveContext.eventTimer1Value[TIMER_ID_0] > 1500) { + gSaveContext.eventTimer1Value[TIMER_ID_0] = 1500; + } else if ((((void)0, gSaveContext.eventTimer1Value[TIMER_ID_0]) >= (OSTime)(995 - XREG(16))) && + (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_0]) <= (OSTime)(1005 + XREG(17)))) { + gSaveContext.eventTimer1Value[TIMER_ID_0] = 1000; } - } else if (gSaveContext.unk_3DE0[0] > 1500) { - gSaveContext.unk_3DD0[0] = 15; - gSaveContext.unk_3DC8 = osGetTime(); + } else if (gSaveContext.eventTimer1Value[TIMER_ID_0] > 1500) { + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_15; + gSaveContext.timerOsTime = osGetTime(); } if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -396,7 +397,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) { Message_StartTextbox(play, 0x2791, &this->actor); this->unk_2B4 = 0x2791; this->unk_2AC = 7; - gSaveContext.unk_3DD0[0] = 0; + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_OFF; this->actor.flags &= ~ACTOR_FLAG_10000; play_sound(NA_SE_SY_START_SHOT); func_80A6F9C8(this); diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index abd820d4d..7de90998b 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -253,7 +253,7 @@ s32 EnMttag_ExitRace(PlayState* play, s32 arg1, s32 nextTransition) { * Displays the text which says that the player has made a false start. */ void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { - gSaveContext.unk_3DD0[4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; Message_StartTextbox(play, 0xE95, NULL); // An entrant made a false start func_800B7298(play, &this->actor, 7); Audio_QueueSeqCmd(0x101400FF); @@ -314,7 +314,7 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { gSaveContext.eventInf[1] |= 8; } else { if (DECR(this->timer) == 60) { - func_8010E9F0(4, 0); + func_8010E9F0(TIMER_ID_4, 0); play->interfaceCtx.unk_280 = 1; Audio_QueueSeqCmd(NA_BGM_GORON_RACE | 0x8000); play->envCtx.unk_E4 = 0xFE; @@ -359,14 +359,14 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { s32 playerCheatStatus; if (EnMttag_IsInFinishLine(playerPos)) { - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; gSaveContext.eventInf[1] |= 2; this->actionFunc = EnMttag_RaceFinish; } else if (EnMttag_IsAnyRaceGoronOverFinishLine(this)) { - gSaveContext.unk_3DD0[4] = 6; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; @@ -457,7 +457,7 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { if (play->msgCtx.choiceIndex != 0) { // Exit the race func_8019F230(); - gSaveContext.unk_3DD0[4] = 0; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; EnMttag_ExitRace(play, 2, 2); gSaveContext.eventInf[1] &= (u8)~8; gSaveContext.eventInf[1] |= 4; @@ -503,8 +503,8 @@ void EnMttag_Init(Actor* thisx, PlayState* play) { void EnMttag_Destroy(Actor* thisx, PlayState* play) { EnMttag* this = THIS; - if (gSaveContext.unk_3DD0[4] != 6) { - gSaveContext.unk_3DD0[4] = 5; + if (gSaveContext.timerState[TIMER_ID_4] != TIMER_STATE_6) { + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; } } diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c index f0f0a225b..43d191c45 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c @@ -270,7 +270,7 @@ void func_80A2C2E0(EnSyatekiDekunuts* this, PlayState* play) { void func_80A2C33C(EnSyatekiDekunuts* this, PlayState* play) { EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent; - if ((gSaveContext.unk_3DE0[1] <= 0) || (syatekiMan->unk_26A != 1)) { + if ((gSaveContext.eventTimer1Value[TIMER_ID_1] <= 0) || (syatekiMan->unk_26A != 1)) { func_80A2C3AC(this); } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 35595fca0..0229e0807 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -894,7 +894,7 @@ void func_809C80C0(EnSyatekiMan* this, PlayState* play) { this->unk_27A = 0; this->unk_27C = 0; this->unk_26E = 0; - func_8010E9F0(1, 100); + func_8010E9F0(TIMER_ID_1, 100); this->actor.draw = NULL; this->actionFunc = func_809C81D0; } @@ -937,9 +937,9 @@ void func_809C81D0(EnSyatekiMan* this, PlayState* play) { } this->unk_26C++; - if (gSaveContext.unk_3DE0[1] == 0) { - gSaveContext.unk_3DE0[1] = 0; - gSaveContext.unk_3DD0[1] = 5; + if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { + gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; this->actor.draw = EnSyatekiMan_Draw; this->unk_27E = 0; this->unk_27C = 0; @@ -957,10 +957,10 @@ void func_809C81D0(EnSyatekiMan* this, PlayState* play) { this->unk_26A = 5; if (this->unk_280 == 0x848) { Interface_SetPerfectMinigame(play, 2); - gSaveContext.unk_3DD0[1] = 6; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_6; this->actionFunc = func_809C8610; } else { - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; this->actionFunc = func_809C8488; } } @@ -1016,15 +1016,15 @@ void func_809C8610(EnSyatekiMan* this, PlayState* play) { player->stateFlags1 |= 0x20; if (!play->interfaceCtx.isMinigamePerfect) { - if (gSaveContext.unk_3DE0[1] == 0) { - gSaveContext.unk_3DE0[1] = 0; - gSaveContext.unk_3DD0[1] = 5; + if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { + gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; this->unk_27E = 0; this->unk_27C = 0; this->actionFunc = func_809C8488; D_809C94A0 = 0; } else if (D_809C94A0 > 10) { - gSaveContext.unk_3E88[1] += 100; + gSaveContext.funcTimer2Value[TIMER_ID_1] += 100; play->interfaceCtx.unk_25C += 10; this->unk_280 += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); @@ -1084,7 +1084,7 @@ void func_809C8808(EnSyatekiMan* this, PlayState* play) { this->unk_26C = 70; this->unk_26E = 0; D_809C94A4 = 30; - func_8010E9F0(1, 75); + func_8010E9F0(TIMER_ID_1, 75); this->actor.draw = NULL; this->actionFunc = func_809C898C; } @@ -1097,15 +1097,15 @@ void func_809C898C(EnSyatekiMan* this, PlayState* play) { }; static s32 D_809C94A8 = 0; Player* player = GET_PLAYER(play); - s32 sp30 = (((void)0, gSaveContext.unk_3DE0[1]) * 0.1f) + 1.0f; + s32 sp30 = (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) * 0.1f) + 1.0f; if (sp30 < 0x2EF) { s32 temp; if (D_809C94A8 == 0) { - temp = ((void)0, gSaveContext.unk_3DE0[1]) % 500; + temp = ((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) % 500; } else { - temp = (((void)0, gSaveContext.unk_3DE0[1]) + 250) % 500; + temp = (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) + 250) % 500; } if (temp < 100) { @@ -1114,7 +1114,7 @@ void func_809C898C(EnSyatekiMan* this, PlayState* play) { if (this->unk_26E != 0) { if (this->unk_26E == 2) { - gSaveContext.unk_3E18[1] -= 250; + gSaveContext.eventTimer2Value[TIMER_ID_1] -= 250; D_809C94A8 = (D_809C94A8 + 25) % 50; } this->unk_26E = 0; @@ -1132,11 +1132,11 @@ void func_809C898C(EnSyatekiMan* this, PlayState* play) { } } - if (gSaveContext.unk_3DE0[1] == 0) { + if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { this->unk_27E = 0; this->unk_26C = 80; - gSaveContext.unk_3DE0[1] = 0; - gSaveContext.unk_3DD0[1] = 5; + gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; player->stateFlags1 |= 0x20; D_809C94A8 = 0; this->actor.draw = EnSyatekiMan_Draw; diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index 62634561d..2ed585d04 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -90,7 +90,7 @@ void func_80AC9FE4(EnTimeTag* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); this->actionFunc = func_80AC9FD4; - gSaveContext.unk_3DD0[3] = 0; + gSaveContext.timerState[TIMER_ID_3] = TIMER_STATE_OFF; if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOWLA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { gSaveContext.save.weekEventReg[25] |= 2; @@ -107,7 +107,7 @@ void func_80ACA0A8(EnTimeTag* this, PlayState* play) { if (this->actor.cutscene != -1) { this->actionFunc = func_80AC9FE4; ActorCutscene_SetIntentToPlay(this2->actor.cutscene); - gSaveContext.unk_3DD0[3] = 0; + gSaveContext.timerState[TIMER_ID_3] = TIMER_STATE_OFF; } play->msgCtx.ocarinaMode = 4; } diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index b39187c75..d9f1aea5d 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -45,14 +45,14 @@ void ObjRoomtimer_Init(Actor* thisx, PlayState* play) { void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { ObjRoomtimer* this = THIS; - if (this->actor.params != 0x1FF && gSaveContext.unk_3DD0[4] > 0) { - gSaveContext.unk_3DD0[4] = 5; + if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_4] >= TIMER_STATE_1) { + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; } } void func_80973CD8(ObjRoomtimer* this, PlayState* play) { if (this->actor.params != 0x1FF) { - func_8010E9F0(4, this->actor.params); + func_8010E9F0(TIMER_ID_4, this->actor.params); } func_800BC154(play, &play->actorCtx, &this->actor, ACTORCAT_PROP); @@ -62,11 +62,11 @@ void func_80973CD8(ObjRoomtimer* this, PlayState* play) { void func_80973D3C(ObjRoomtimer* this, PlayState* play) { if (Flags_GetClearTemp(play, this->actor.room)) { if (this->actor.params != 0x1FF) { - gSaveContext.unk_3DD0[4] = 5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; } ActorCutscene_SetIntentToPlay(this->actor.cutscene); this->actionFunc = func_80973DE0; - } else if (this->actor.params != 0x1FF && gSaveContext.unk_3DD0[4] == 0) { + } else if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_OFF) { play_sound(NA_SE_OC_ABYSS); func_80169EFC(&play->state); Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 413cc4b66..c0252c57b 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -365,13 +365,13 @@ void Select_UpdateMenu(SelectContext* this) { if (this->verticalInputAccumulator == 0) { if (CHECK_BTN_ALL(controller1->press.button, BTN_A) || CHECK_BTN_ALL(controller1->press.button, BTN_START)) { - for (i = 0; i < ARRAY_COUNT(gSaveContext.unk_3EC0); i++) { - gSaveContext.unk_3DD0[i] = 0; - gSaveContext.unk_3DE0[i] = 0; - gSaveContext.unk_3E18[i] = 0; - gSaveContext.unk_3E50[i] = 0; - gSaveContext.unk_3E88[i] = 0; - gSaveContext.unk_3EC0[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.funcTimer3Value); i++) { + gSaveContext.timerState[i] = TIMER_STATE_OFF; + gSaveContext.eventTimer1Value[i] = 0; + gSaveContext.eventTimer2Value[i] = 0; + gSaveContext.funcTimer1Value[i] = 0; + gSaveContext.funcTimer2Value[i] = 0; + gSaveContext.funcTimer3Value[i] = 0; } gSaveContext.minigameState = 0; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 9c225a650..8ea00efde 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2093,7 +2093,7 @@ 0x8010DC58:("func_8010DC58",), 0x8010DE38:("func_8010DE38",), 0x8010E028:("Interface_InitVertices",), - 0x8010E968:("func_8010E968",), + 0x8010E968:("Interface_TimerCallback",), 0x8010E9F0:("func_8010E9F0",), 0x8010EA9C:("func_8010EA9C",), 0x8010EB50:("func_8010EB50",), @@ -2165,7 +2165,7 @@ 0x80120F90:("Interface_LoadStory",), 0x80121064:("Interface_AllocStory",), 0x801210E0:("Interface_Update",), - 0x80121F94:("func_80121F94",), + 0x80121F94:("Interface_Destroy",), 0x80121FC4:("Interface_Init",), 0x801224E0:("Path_GetByIndex",), 0x80122524:("Path_OrientAndGetDistSq",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 800913461..f1ce9f834 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1083,7 +1083,7 @@ 0x801BF930:("D_801BF930","u64","[7]",0x38), 0x801BF968:("D_801BF968","UNK_TYPE4","",0x4), 0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4), - 0x801BF970:("D_801BF970","UNK_TYPE4","",0x4), + 0x801BF970:("sTimerId","UNK_TYPE4","",0x4), 0x801BF974:("D_801BF974","UNK_TYPE4","",0x4), 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), 0x801BF97C:("D_801BF97C","UNK_TYPE4","",0x4), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index fcb340f87..582a2355d 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1607,7 +1607,7 @@ asm/non_matchings/code/z_parameter/func_8010D9F4.s,func_8010D9F4,0x8010D9F4,0x99 asm/non_matchings/code/z_parameter/func_8010DC58.s,func_8010DC58,0x8010DC58,0x78 asm/non_matchings/code/z_parameter/func_8010DE38.s,func_8010DE38,0x8010DE38,0x7C asm/non_matchings/code/z_parameter/Interface_InitVertices.s,Interface_InitVertices,0x8010E028,0x250 -asm/non_matchings/code/z_parameter/func_8010E968.s,func_8010E968,0x8010E968,0x22 +asm/non_matchings/code/z_parameter/Interface_TimerCallback.s,Interface_TimerCallback,0x8010E968,0x22 asm/non_matchings/code/z_parameter/func_8010E9F0.s,func_8010E9F0,0x8010E9F0,0x2B asm/non_matchings/code/z_parameter/func_8010EA9C.s,func_8010EA9C,0x8010EA9C,0x2D asm/non_matchings/code/z_parameter/func_8010EB50.s,func_8010EB50,0x8010EB50,0x14 @@ -1679,7 +1679,7 @@ asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x80120F90,0x35 asm/non_matchings/code/z_parameter/Interface_AllocStory.s,Interface_AllocStory,0x80121064,0x1F asm/non_matchings/code/z_parameter/Interface_Update.s,Interface_Update,0x801210E0,0x3AD -asm/non_matchings/code/z_parameter/func_80121F94.s,func_80121F94,0x80121F94,0xC +asm/non_matchings/code/z_parameter/Interface_Destroy.s,Interface_Destroy,0x80121F94,0xC asm/non_matchings/code/z_parameter/Interface_Init.s,Interface_Init,0x80121FC4,0x147 asm/non_matchings/code/z_path/func_801224E0.s,func_801224E0,0x801224E0,0x11 asm/non_matchings/code/z_path/func_80122524.s,func_80122524,0x80122524,0x2A From 7cc7f8bf6e677515b44b0eebb12d1be8a0b3c402 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 19 Jul 2022 04:10:02 +1000 Subject: [PATCH 128/160] some three day clock docs --- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 25 +++++++++++-------- tools/disasm/variables.txt | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index f558c8811..a19c04b80 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -1,7 +1,7 @@ /* * File: z_en_test4.c * Overlay: ovl_En_Test4 - * Description: Three-Day Timer + * Description: Three-Day Clock */ #include "z_en_test4.h" @@ -28,9 +28,14 @@ const ActorInit En_Test4_InitVars = { (ActorFunc)EnTest4_Init, (ActorFunc)EnTest4_Destroy, (ActorFunc)EnTest4_Update, - (ActorFunc)NULL, + (ActorFunc)NULL, // Interface_DrawClock }; +typedef enum { + /* 0 */ TIME_DAY, + /* 1 */ TIME_NIGHT, +} NightFlag; + static s32 sIsLoaded = false; // "Night of ..." static s16 sNightMessages1[] = { 0x1BB4, 0x1BB5, 0x1BB6 }; @@ -40,7 +45,7 @@ static s16 sDayMessages1[] = { 0x1BB2, 0x1BB2, 0x1BB3 }; static s16 sNightMessages2[] = { 0x1BB4, 0x1BB5, 0x1BB6 }; // "Dawn of ..." (Note: first two message are the same) static s16 sDayMessages2[] = { 0x1BB2, 0x1BB2, 0x1BB3 }; -static u16 D_80A43364[] = { CLOCK_TIME(6, 0), CLOCK_TIME(18, 0) }; +static u16 sDayNightTransitionTimes[] = { CLOCK_TIME(6, 0), CLOCK_TIME(18, 0) }; static s16 sCutscenes[2]; static s16 sCurrentCs; @@ -48,7 +53,7 @@ static s16 sCurrentCs; void func_80A41D70(EnTest4* this, PlayState* play) { if (this->unk_144 != 0) { func_80151A68(play, sNightMessages1[CURRENT_DAY - 1]); - } else if ((sCutscenes[this->unk_144] < 0) || ((play->actorCtx.unk5 & 2) != 0)) { + } else if ((sCutscenes[this->unk_144] < 0) || (play->actorCtx.unk5 & 2)) { if (play->actorCtx.unk5 & 2) { Sram_IncrementDay(); gSaveContext.save.time = CLOCK_TIME(6, 0); @@ -91,7 +96,7 @@ void func_80A41D70(EnTest4* this, PlayState* play) { void func_80A41FA4(EnTest4* this, PlayState* play) { if (this->unk_144 != 0) { func_80151A68(play, sNightMessages2[CURRENT_DAY - 1]); - } else if ((sCutscenes[this->unk_144] < 0) || ((play->actorCtx.unk5 & 2) != 0)) { + } else if ((sCutscenes[this->unk_144] < 0) || (play->actorCtx.unk5 & 2)) { Sram_IncrementDay(); gSaveContext.save.time = CLOCK_TIME(6, 0); Interface_NewDay(play, CURRENT_DAY); @@ -103,7 +108,7 @@ void func_80A41FA4(EnTest4* this, PlayState* play) { } if (gSaveContext.cutsceneTrigger == 0) { - if ((sCutscenes[this->unk_144] >= 0) && ((play->actorCtx.unk5 & 2) == 0)) { + if ((sCutscenes[this->unk_144] >= 0) && !(play->actorCtx.unk5 & 2)) { this->actionFunc = func_80A42F20; sCurrentCs = sCutscenes[this->unk_144]; this->transitionCsTimer = 0; @@ -277,7 +282,7 @@ void func_80A425E4(EnTest4* this, PlayState* play) { this->nextBellTime = CLOCK_TIME(17, 30); } - if ((sCutscenes[this->unk_144] < 0) || ((play->actorCtx.unk5 & 2) != 0) || (CURRENT_DAY == 3) || + if ((sCutscenes[this->unk_144] < 0) || (play->actorCtx.unk5 & 2) || (CURRENT_DAY == 3) || (gSaveContext.save.time >= CLOCK_TIME(17, 0))) { gSaveContext.screenScale = 1000.0f; } @@ -371,7 +376,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { if ((play->transitionMode == 0) && !Play_InCsMode(play) && (play->numSetupActors <= 0) && (play->roomCtx.unk31 == 0) && !Play_IsDebugCamEnabled()) { s16 temp_a2; - u16 temp_a0 = D_80A43364[this->unk_144]; + u16 temp_a0 = sDayNightTransitionTimes[this->unk_144]; s16 temp_a3; s16 bellDiff; s16 new_var; @@ -419,7 +424,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { } } - if ((sCutscenes[this->unk_144] >= 0) && ((play->actorCtx.unk5 & 2) == 0)) { + if ((sCutscenes[this->unk_144] >= 0) && !(play->actorCtx.unk5 & 2)) { player->stateFlags1 |= 0x200; this->unk_146 = gSaveContext.save.time; } else { @@ -442,7 +447,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { s32 playerParams; u32 entranceIndex = gSaveContext.save.entranceIndex; - if ((play->actorCtx.unk5 & 2)) { + if (play->actorCtx.unk5 & 2) { playerParams = 0xCFF; } else { playerParams = 0xBFF; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index f1ce9f834..b7a103687 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -11492,7 +11492,7 @@ 0x80A4334A:("sDayMessages1","s16","[3]",0x6), 0x80A43352:("sNightMessages2","s16","[3]",0x6), 0x80A4335A:("sDayMessages2","s16","[3]",0x6), - 0x80A43364:("D_80A43364","u16","[2]",0x4), + 0x80A43364:("sDayNightTransitionTimes","u16","[2]",0x4), 0x80A434D0:("sCutscenes","s16","[2]",0x4), 0x80A434D4:("sCurrentCs","s16","",0x2), 0x80A449E0:("En_Bat_InitVars","UNK_TYPE1","",0x1), From c3ac3fc4b827370dd7581209f19f875abec3f1b5 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 11 Aug 2022 20:52:33 -0400 Subject: [PATCH 129/160] match Interface_DrawTimers --- src/code/z_parameter.c | 418 ++++++++++++++++++++--------------------- 1 file changed, 199 insertions(+), 219 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 30ecfa94d..d7a05a5cf 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3,6 +3,7 @@ #include "interface/do_action_static/do_action_static.h" #include "misc/story_static/story_static.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +#include "z64snap.h" u8 func_800FE4A8(); s32 func_801234D4(PlayState* play); @@ -5209,7 +5210,6 @@ void func_8011C898(u64 timer, s16* timerArr) { timerArr[7] = time; } -#ifdef NON_MATCHING void Interface_DrawTimers(PlayState* play) { static s16 D_801BFCE4 = 0; static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -5227,9 +5227,8 @@ void Interface_DrawTimers(PlayState* play) { Player* player = GET_PLAYER(play); OSTime spD0; OSTime spCC; - s16 timerTemp; - s16 i; // spC6 s16 j; + s16 i; OPEN_DISPS(play->state.gfxCtx); @@ -5245,7 +5244,7 @@ void Interface_DrawTimers(PlayState* play) { for (j = 0; j < 7; j++) { if (gSaveContext.timerState[j] == TIMER_STATE_4) { - gSaveContext.funcTimer3Value[j] += spD0 - D_801BF8E8; + gSaveContext.funcTimer3Value[j] = gSaveContext.funcTimer3Value[j] + (spD0 - D_801BF8E8); } } @@ -5255,216 +5254,211 @@ void Interface_DrawTimers(PlayState* play) { sTimerId = TIMER_ID_NONE; for (i = 0; i < 7; i++) { - if (gSaveContext.timerState[i] != TIMER_STATE_OFF) { - sTimerId = i; - if (sTimerId == TIMER_ID_0) { - switch (gSaveContext.timerState[TIMER_ID_0]) { - case TIMER_STATE_13: - if (gSaveContext.timerState[TIMER_ID_0]) { - gSaveContext.funcTimer1Value[TIMER_ID_0] = osGetTime(); - } - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_14; - D_801BFA84 = 1; - func_80174F7C(Interface_TimerCallback, NULL); - break; + if (gSaveContext.timerState[i] == TIMER_STATE_OFF) { + continue; + } - case TIMER_STATE_15: - spCC = gSaveContext.timerOsTime; - gSaveContext.eventTimer1Value[TIMER_ID_0] = - (spCC - ((void)0, gSaveContext.funcTimer1Value[TIMER_ID_0]) - - ((void)0, gSaveContext.funcTimer3Value[TIMER_ID_0])) * - 64 / 3000 / 10000; - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_16; + sTimerId = i; - func_80174F9C(Interface_TimerCallback, NULL); - break; + if (sTimerId == TIMER_ID_0) { + switch (gSaveContext.timerState[TIMER_ID_0]) { + case TIMER_STATE_13: + if (gSaveContext.timersNoTimeLimit[TIMER_ID_0]) { + gSaveContext.funcTimer1Value[TIMER_ID_0] = osGetTime(); + } + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_14; + D_801BFA84 = 1; + func_80174F7C(Interface_TimerCallback, NULL); + break; - case TIMER_STATE_14: - case TIMER_STATE_16: - break; - } + case TIMER_STATE_15: + spCC = gSaveContext.timerOsTime; + gSaveContext.eventTimer1Value[TIMER_ID_0] = + (spCC - ((void)0, gSaveContext.funcTimer1Value[TIMER_ID_0]) - + ((void)0, gSaveContext.funcTimer3Value[TIMER_ID_0])) * + 64 / 3000 / 10000; + gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_16; - break; - } else { - switch (gSaveContext.timerState[sTimerId]) { - case TIMER_STATE_1: - case TIMER_STATE_9: - D_801BFCE4 = 20; - if (interfaceCtx->unk_280 != 0) { - gSaveContext.timerX[sTimerId] = 26; + func_80174F9C(Interface_TimerCallback, NULL); + break; - if (interfaceCtx->magicAlpha != 255) { - gSaveContext.timerY[sTimerId] = 22; - } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[sTimerId] = 54; - } else { - gSaveContext.timerY[sTimerId] = 46; - } - - if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) { - if (gSaveContext.timerState[sTimerId] == TIMER_STATE_1) { - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; - } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_11; - D_801BF8F8[sTimerId] = osGetTime(); - D_801BF930[sTimerId] = 0; - } - - gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = 0; - gSaveContext.funcTimer3Value[sTimerId] = 0; - } - } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_2; - } - break; - - case TIMER_STATE_2: - D_801BFCE4--; - if (D_801BFCE4 == 0) { - D_801BFCE4 = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_3; - } - break; - - case TIMER_STATE_3: - if (sTimerId == TIMER_ID_3) { - // TODO: s16 casts - timerTemp = ((((void)0, gSaveContext.timerX[sTimerId]) - XREG(81)) / D_801BFCE4); - gSaveContext.timerX[sTimerId] -= timerTemp; - timerTemp = ((((void)0, gSaveContext.timerY[sTimerId]) - XREG(80)) / D_801BFCE4); - dummy:; // TODO: Needed? - gSaveContext.timerY[sTimerId] -= timerTemp; - } else { - timerTemp = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / D_801BFCE4); - gSaveContext.timerX[sTimerId] -= timerTemp; - - timerTemp = (gSaveContext.save.playerData.healthCapacity > 0xA0) - ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / D_801BFCE4) - : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / D_801BFCE4); - gSaveContext.timerY[sTimerId] -= timerTemp; - } - - D_801BFCE4--; - if (D_801BFCE4 == 0) { - D_801BFCE4 = 20; - - if (sTimerId == TIMER_ID_3) { - gSaveContext.timerY[sTimerId] = XREG(80); - } else { - gSaveContext.timerX[sTimerId] = 26; - if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[sTimerId] = 54; - } else { - gSaveContext.timerY[sTimerId] = 46; - } - } - - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; - gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = 0; - gSaveContext.funcTimer3Value[sTimerId] = 0; - } - // fallthrough - case TIMER_STATE_4: - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_3)) { - gSaveContext.timerX[TIMER_ID_3] = XREG(81); - if (1) {} - if (1) {} - if (1) {} - if (1) {} // TODO: Needed? - gSaveContext.timerY[TIMER_ID_3] = XREG(80); - } - break; - - case TIMER_STATE_10: - D_801BF8F8[sTimerId] = osGetTime(); - D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_11; - // fallthrough - case TIMER_STATE_11: - D_801BF930[sTimerId] = osGetTime() - D_801BF8F8[sTimerId]; - break; - - case TIMER_STATE_12: - spD0 = osGetTime(); - gSaveContext.funcTimer3Value[sTimerId] = - gSaveContext.funcTimer3Value[sTimerId] + spD0 - D_801BF8F8[sTimerId]; - D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; - break; - - case TIMER_STATE_8: - gSaveContext.eventTimer1Value[sTimerId] = (gSaveContext.save.playerData.health >> 1) * 100; - gSaveContext.timersNoTimeLimit[sTimerId] = false; - gSaveContext.eventTimer2Value[sTimerId] = gSaveContext.eventTimer1Value[sTimerId]; - D_801BFCE4 = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_3; - break; - - case TIMER_STATE_5: - spD0 = osGetTime(); - - gSaveContext.funcTimer2Value[sTimerId] = - (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - - ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * - 64 / 3000 / 10000; - - gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; - - if (sTimerId == TIMER_ID_3) { - gSaveContext.save.day = 4; - if ((play->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { - play->nextEntranceIndex = 0x5410; - gSaveContext.nextCutsceneIndex = 0xFFF0; - play->transitionTrigger = TRANS_TRIGGER_START; - } else { - func_8011C808(play); - } - } else if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { - gSaveContext.timerX[TIMER_ID_6] = 115; - gSaveContext.timerY[TIMER_ID_6] = 80; - if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; - } - } - break; - - case TIMER_STATE_6: - spD0 = osGetTime(); - - gSaveContext.funcTimer2Value[sTimerId] = - (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - - ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * - 64 / 3000 / 10000; - - if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { - if (gSaveContext.funcTimer2Value[sTimerId] >= 12000) { - gSaveContext.funcTimer2Value[sTimerId] = 12000; - gSaveContext.eventTimer1Value[sTimerId] = 12000; - } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && - (gSaveContext.funcTimer2Value[sTimerId] >= 12000)) { - gSaveContext.eventTimer1Value[sTimerId] = 12000; - } - gSaveContext.timerState[sTimerId] = TIMER_STATE_7; - - if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { - gSaveContext.timerX[TIMER_ID_6] = 115; - gSaveContext.timerY[TIMER_ID_6] = 80; - if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; - } - gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; - } - break; - } + case TIMER_STATE_14: + case TIMER_STATE_16: + break; } break; } + + switch (gSaveContext.timerState[sTimerId]) { + case TIMER_STATE_1: + case TIMER_STATE_9: + D_801BFCE4 = 20; + if (interfaceCtx->unk_280 != 0) { + gSaveContext.timerX[sTimerId] = 26; + + if (interfaceCtx->magicAlpha != 255) { + gSaveContext.timerY[sTimerId] = 22; + } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + gSaveContext.timerY[sTimerId] = 54; + } else { + gSaveContext.timerY[sTimerId] = 46; + } + + if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) { + if (gSaveContext.timerState[sTimerId] == TIMER_STATE_1) { + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + } else { + gSaveContext.timerState[sTimerId] = TIMER_STATE_11; + D_801BF8F8[sTimerId] = osGetTime(); + D_801BF930[sTimerId] = 0; + } + + gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); + gSaveContext.funcTimer2Value[sTimerId] = 0; + gSaveContext.funcTimer3Value[sTimerId] = 0; + } + } else { + gSaveContext.timerState[sTimerId] = TIMER_STATE_2; + } + break; + + case TIMER_STATE_2: + D_801BFCE4--; + if (D_801BFCE4 == 0) { + D_801BFCE4 = 20; + gSaveContext.timerState[sTimerId] = TIMER_STATE_3; + } + break; + + case TIMER_STATE_3: + if (sTimerId == TIMER_ID_3) { + j = ((((void)0, gSaveContext.timerX[sTimerId]) - XREG(81)) / D_801BFCE4); + gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; + j = ((((void)0, gSaveContext.timerY[sTimerId]) - XREG(80)) / D_801BFCE4); + gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; + } else { + j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / D_801BFCE4); + gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; + + j = (gSaveContext.save.playerData.healthCapacity > 0xA0) + ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / D_801BFCE4) + : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / D_801BFCE4); + gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; + } + + D_801BFCE4--; + if (D_801BFCE4 == 0) { + D_801BFCE4 = 20; + + if (sTimerId == TIMER_ID_3) { + gSaveContext.timerY[sTimerId] = XREG(80); + } else { + gSaveContext.timerX[sTimerId] = 26; + if (gSaveContext.save.playerData.healthCapacity > 0xA0) { + gSaveContext.timerY[sTimerId] = 54; + } else { + gSaveContext.timerY[sTimerId] = 46; + } + } + + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); + gSaveContext.funcTimer2Value[sTimerId] = 0; + gSaveContext.funcTimer3Value[sTimerId] = 0; + } + // fallthrough + case TIMER_STATE_4: + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_3)) { + gSaveContext.timerX[TIMER_ID_3] = XREG(81); + gSaveContext.timerY[TIMER_ID_3] = XREG(80); + } + break; + + case TIMER_STATE_10: + D_801BF8F8[sTimerId] = osGetTime(); + D_801BF930[sTimerId] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_11; + // fallthrough + case TIMER_STATE_11: + D_801BF930[sTimerId] = osGetTime() - D_801BF8F8[sTimerId]; + break; + + case TIMER_STATE_12: + spD0 = osGetTime(); + + gSaveContext.funcTimer3Value[sTimerId] = + gSaveContext.funcTimer3Value[sTimerId] + spD0 - D_801BF8F8[sTimerId]; + D_801BF930[sTimerId] = 0; + gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + break; + + case TIMER_STATE_8: + gSaveContext.eventTimer1Value[sTimerId] = (gSaveContext.save.playerData.health >> 1) * 100; + gSaveContext.timersNoTimeLimit[sTimerId] = false; + gSaveContext.eventTimer2Value[sTimerId] = gSaveContext.eventTimer1Value[sTimerId]; + D_801BFCE4 = 20; + gSaveContext.timerState[sTimerId] = TIMER_STATE_3; + break; + + case TIMER_STATE_5: + spD0 = osGetTime(); + + gSaveContext.funcTimer2Value[sTimerId] = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - + ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * + 64 / 3000 / 10000; + + gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; + + if (sTimerId == TIMER_ID_3) { + gSaveContext.save.day = 4; + if ((play->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { + play->nextEntranceIndex = 0x5410; + gSaveContext.nextCutsceneIndex = 0xFFF0; + play->transitionTrigger = TRANS_TRIGGER_START; + } else { + func_8011C808(play); + } + } else if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_6] = 115; + gSaveContext.timerY[TIMER_ID_6] = 80; + if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; + } + } + break; + + case TIMER_STATE_6: + spD0 = osGetTime(); + + gSaveContext.funcTimer2Value[sTimerId] = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - + ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * + 64 / 3000 / 10000; + + if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { + if (gSaveContext.funcTimer2Value[sTimerId] >= 12000) { + gSaveContext.funcTimer2Value[sTimerId] = 12000; + gSaveContext.eventTimer1Value[sTimerId] = 12000; + } + } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && + (gSaveContext.funcTimer2Value[sTimerId] >= 12000)) { + gSaveContext.eventTimer1Value[sTimerId] = 12000; + } + gSaveContext.timerState[sTimerId] = TIMER_STATE_7; + + if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_6] = 115; + gSaveContext.timerY[TIMER_ID_6] = 80; + if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; + } + gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; + } + break; + } + break; } - if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerState[sTimerId]) { // TODO: No != 0 + if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF if (!gSaveContext.timersNoTimeLimit[sTimerId]) { D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; D_801BFCE8[2] = D_801BFCE8[5] = 10; @@ -5545,6 +5539,7 @@ void Interface_DrawTimers(PlayState* play) { } gSaveContext.eventTimer1Value[sTimerId] = spD0; + func_8011C898(spD0, D_801BFCE8); if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) { @@ -5642,21 +5637,6 @@ void Interface_DrawTimers(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -#else -static s16 D_801BFCE4 = 0; -static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -static s16 D_801BFCF8 = 99; -static s16 D_801BFCFC[] = { - // timer digit width - 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, -}; -static s16 D_801BFD0C[] = { - // digit width - 9, 9, 8, 9, 9, 8, 9, 9, -}; -void Interface_DrawTimers(PlayState* play); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s") -#endif void Interface_UpdateTimers(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; From 48e1537905a9c2a23a3d9c6f0931d8b3e602bad8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 11 Aug 2022 21:16:56 -0400 Subject: [PATCH 130/160] docs and cleanup --- include/functions.h | 2 +- include/z64.h | 41 +-- include/z64save.h | 37 +- src/code/z_common_data.c | 2 +- src/code/z_demo.c | 10 +- src/code/z_game_over.c | 8 +- src/code/z_kaleido_setup.c | 2 +- src/code/z_message.c | 2 +- src/code/z_parameter.c | 316 +++++++++--------- src/code/z_player_lib.c | 9 +- .../actors/ovl_Door_Warp1/z_door_warp1.c | 2 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 2 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- .../z_en_horse_game_check.c | 6 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 4 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 4 +- src/overlays/actors/ovl_En_Mag/z_en_mag.c | 4 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 4 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 4 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 4 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 4 +- src/overlays/gamestates/ovl_select/z_select.c | 8 +- tools/disasm/functions.txt | 6 +- tools/sizes/code_functions.csv | 6 +- 26 files changed, 261 insertions(+), 236 deletions(-) diff --git a/include/functions.h b/include/functions.h index 0e27f262b..58bb7a3d3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1855,7 +1855,7 @@ void func_8010EA9C(s16 timeLimit, s16 arg1); // void func_8010EBA0(void); // void func_8010EC54(void); void Interface_NewDay(PlayState* play, s32 day); -void Interface_ChangeHudMode(u16 hudMode); +void Interface_SetHudVisibility(u16 hudVisibility); // void func_80110038(void); // void func_80111CB4(void); // void Interface_SetSceneRestrictions(void); diff --git a/include/z64.h b/include/z64.h index b0cb217da..06ccc6631 100644 --- a/include/z64.h +++ b/include/z64.h @@ -531,32 +531,19 @@ typedef enum { } DoAction; typedef enum { - /* 0 */ HUD_MODE_IDLE, - /* 1 */ HUD_MODE_OFF, - /* 2 */ HUD_MODE_OFF_ALT, // Identical to HUD_MODE_OFF - /* 3 */ HUD_MODE_HEARTS_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons - /* 4 */ HUD_MODE_A, - /* 5 */ HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons - /* 6 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons - /* 7 */ HUD_MODE_ALL_NO_MINIMAP_W_DISABLED, // Only raises button alphas if not disabled - /* 8 */ HUD_MODE_B_FAST, // reaches target twice as fast - /* 9 */ HUD_MODE_HEARTS_MAGIC, - /* 10 */ HUD_MODE_B, - /* 11 */ HUD_MODE_HEARTS, - /* 12 */ HUD_MODE_A_B_MINIMAP, - /* 13 */ HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_DimButtonAlphas so gives the opportunity to dim only disabled buttons - /* 14 */ HUD_MODE_HEARTS_MAGIC_C, - /* 15 */ HUD_MODE_ALL_NO_MINIMAP, - /* 16 */ HUD_MODE_A_B_C, - /* 17 */ HUD_MODE_B_MINIMAP, - /* 18 */ HUD_MODE_HEARTS_MAGIC_MINIMAP, - /* 19 */ HUD_MODE_A_HEARTS_MAGIC_MINIMAP, - /* 20 */ HUD_MODE_B_MAGIC, - /* 21 */ HUD_MODE_A_B, - /* 22 */ HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP, - /* 50 */ HUD_MODE_ALL = 50, - /* 52 */ HUD_MODE_OFF_NOW = 52 -} HudMode; + /* 0 */ MINIGAME_STATE_NONE, + /* 1 */ MINIGAME_STATE_COUNTDOWN_START_3, + /* 2 */ MINIGAME_STATE_COUNTDOWN_3, + /* 3 */ MINIGAME_STATE_COUNTDOWN_START_2, + /* 4 */ MINIGAME_STATE_COUNTDOWN_2, + /* 5 */ MINIGAME_STATE_COUNTDOWN_START_1, + /* 6 */ MINIGAME_STATE_COUNTDOWN_1, + /* 7 */ MINIGAME_STATE_COUNTDOWN_START_GO, + /* 8 */ MINIGAME_STATE_COUNTDOWN_GO, + /* 20 */ MINIGAME_STATE_20 = 20, + /* 21 */ MINIGAME_STATE_21, + /* 30 */ MINIGAME_STATE_30 = 30 +} MinigameState; typedef struct { /* 0x000 */ View view; @@ -618,7 +605,7 @@ typedef struct { /* 0x27C */ s16 mapRoomNum; /* 0x27E */ u8 unk_27E; /* 0x27F */ u8 unk_27F; - /* 0x280 */ u8 unk_280; + /* 0x280 */ u8 minigameState; /* 0x282 */ s16 unk_282; /* 0x284 */ s16 unk_284; /* 0x286 */ s16 isMinigamePerfect; diff --git a/include/z64save.h b/include/z64save.h index 7661a7abd..65ee77e6e 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -86,6 +86,33 @@ typedef enum { /* 99 */ TIMER_ID_NONE = 99, } TimerId; +typedef enum { + /* 0 */ HUD_VISIBILITY_IDLE, + /* 1 */ HUD_VISIBILITY_OFF, + /* 2 */ HUD_VISIBILITY_OFF_ALT, // Identical to HUD_VISIBILITY_OFF + /* 3 */ HUD_VISIBILITY_HEARTS_WITH_DIM_BTN, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons + /* 4 */ HUD_VISIBILITY_A, + /* 5 */ HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons + /* 6 */ HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons + /* 7 */ HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED, // Only raises button alphas if not disabled + /* 8 */ HUD_VISIBILITY_B_FAST, // reaches target twice as fast + /* 9 */ HUD_VISIBILITY_HEARTS_MAGIC, + /* 10 */ HUD_VISIBILITY_B, + /* 11 */ HUD_VISIBILITY_HEARTS, + /* 12 */ HUD_VISIBILITY_A_B_MINIMAP, + /* 13 */ HUD_VISIBILITY_HEARTS_MAGIC_WITH_DIM_BTN, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons + /* 14 */ HUD_VISIBILITY_HEARTS_MAGIC_C, + /* 15 */ HUD_VISIBILITY_ALL_NO_MINIMAP, + /* 16 */ HUD_VISIBILITY_A_B_C, + /* 17 */ HUD_VISIBILITY_B_MINIMAP, + /* 18 */ HUD_VISIBILITY_HEARTS_MAGIC_MINIMAP, + /* 19 */ HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP, + /* 20 */ HUD_VISIBILITY_B_MAGIC, + /* 21 */ HUD_VISIBILITY_A_B, + /* 22 */ HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP, + /* 50 */ HUD_VISIBILITY_ALL = 50, + /* 52 */ HUD_VISIBILITY_OFF_NOW = 52 +} HudVisibility; typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -283,11 +310,11 @@ typedef struct SaveContext { /* 0x3F16 */ u8 seqIndex; // "old_bgm" /* 0x3F17 */ u8 nightSeqIndex; // "old_env" /* 0x3F18 */ u8 buttonStatus[6]; // "button_item" - /* 0x3F1E */ u8 hudModeDimOnlyDisabledButtons; // if the buttons are requested to dim, only dim disabled buttons "ck_fg" - /* 0x3F20 */ u16 requestHudMode; // triggers the hud to change modes to the requested value. Reset to 0 when target is reached "alpha_type" - /* 0x3F22 */ u16 curHudMode; // current hud mode "prev_alpha_type" - /* 0x3F24 */ u16 hudModeCounter; // number of frames in the transition to a new hud display. Used to step alpha "alpha_count" - /* 0x3F26 */ u16 prevHudMode; // used to store and recover hud display for pause menu and text boxes "last_time_type" + /* 0x3F1E */ u8 hudVisibilityForceButtonAlphasByStatus; // if btn alphas are updated through Interface_UpdateButtonAlphas, instead update them through Interface_UpdateButtonAlphasByStatus "ck_fg" + /* 0x3F20 */ u16 nextHudVisibility; // triggers the hud to change visibility to the requested value. Reset to HUD_VISIBILITY_IDLE when target is reached "alpha_type" + /* 0x3F22 */ u16 hudVisibility; // current hud visibility "prev_alpha_type" + /* 0x3F24 */ u16 hudVisibilityTimer; // number of frames in the transition to a new hud visibility. Used to step alpha "alpha_count" + /* 0x3F26 */ u16 prevHudVisibility; // used to store and recover hud visibility for pause menu and text boxes "last_time_type" /* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag" /* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag" /* 0x3F2C */ s16 magicUnusedFlag; // Set to 0 in func_80812D94, otherwise unused "keep_magic_flag" diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 7adb24bdd..c970282a8 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -16,7 +16,7 @@ void SaveContext_Init(void) { gSaveContext.skyboxTime = 0; gSaveContext.dogIsLost = true; gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; - gSaveContext.prevHudMode = HUD_MODE_ALL; + gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL; gSaveContext.options.language = 1; gSaveContext.options.audioSetting = 0; diff --git a/src/code/z_demo.c b/src/code/z_demo.c index dd94daf19..4e22370db 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -105,7 +105,7 @@ s32 func_800EA220(PlayState* play, CutsceneContext* csCtx, f32 target) { } void func_800EA258(PlayState* play, CutsceneContext* csCtx) { - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); ShrinkWindow_SetLetterboxTarget(32); if (func_800EA220(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(true); @@ -115,7 +115,7 @@ void func_800EA258(PlayState* play, CutsceneContext* csCtx) { void func_800EA2B8(PlayState* play, CutsceneContext* csCtx) { func_800ED980(play, csCtx); - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); ShrinkWindow_SetLetterboxTarget(32); if (func_800EA220(play, csCtx, 1.0f)) { Audio_SetCutsceneFlag(true); @@ -564,7 +564,7 @@ void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase* gSaveContext.cutsceneTransitionControl = 1; if ((gSaveContext.gameMode != 0) && (csCtx->frames != cmd->startFrame)) { - gSaveContext.hudModeDimOnlyDisabledButtons = true; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; } gSaveContext.save.cutscene = 0; @@ -1100,7 +1100,7 @@ void Cutscene_Command_Textbox(PlayState* play, CutsceneContext* csCtx, CsCmdText } if (originalCsFrames == csCtx->frames) { - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); D_801BB124 = 0; D_801BB128 = 0; func_80161C0C(); @@ -1480,7 +1480,7 @@ void func_800EDA84(PlayState* play, CutsceneContext* csCtx) { csCtx->unk_18 = 0xFFFF; if (gSaveContext.cutsceneTrigger == 0) { - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); ShrinkWindow_SetLetterboxTarget(32); ShrinkWindow_SetLetterboxMagnitude(0x20); csCtx->state++; diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 50705f6f3..9b93910fb 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -57,10 +57,10 @@ void GameOver_Update(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; - gSaveContext.hudModeDimOnlyDisabledButtons = false; - gSaveContext.requestHudMode = HUD_MODE_IDLE; - gSaveContext.curHudMode = HUD_MODE_IDLE; - gSaveContext.hudModeCounter = 0; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibilityTimer = 0; Kankyo_InitGameOverLights(play); sGameOverTimer = 20; Rumble_Request(0.0f, 126, 124, 63); diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 9b8aaac36..44c6c9ba1 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -80,7 +80,7 @@ void KaleidoSetup_Update(PlayState* play) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(play->actorCtx.unk5 & 2) && !(play->actorCtx.unk5 & 4)) { if ((play->actorCtx.unk268 == 0) && CHECK_BTN_ALL(input->press.button, BTN_START)) { - gSaveContext.prevHudMode = gSaveContext.curHudMode; + gSaveContext.prevHudVisibility = gSaveContext.hudVisibility; pauseCtx->unk_2B9 = 0; pauseCtx->state = 1; func_800F4A10(play); diff --git a/src/code/z_message.c b/src/code/z_message.c index 8fac7223e..607132514 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -383,7 +383,7 @@ void func_80151A68(PlayState* play, u16 textId) { XREG(77) = 0x3C; XREG(76) = 0x1C; msgCtx->unk11F1A[0] = msgCtx->unk11F1A[1] = msgCtx->unk11F1A[2] = 0; - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); } } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index d7a05a5cf..9bc72e546 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -708,18 +708,18 @@ void Interface_NewDay(PlayState* play, s32 day) { } } -void Interface_ChangeHudMode(u16 hudMode) { - if (gSaveContext.curHudMode != hudMode) { - gSaveContext.curHudMode = hudMode; - gSaveContext.requestHudMode = hudMode; - gSaveContext.hudModeCounter = 1; +void Interface_SetHudVisibility(u16 hudVisibility) { + if (gSaveContext.hudVisibility != hudVisibility) { + gSaveContext.hudVisibility = hudVisibility; + gSaveContext.nextHudVisibility = hudVisibility; + gSaveContext.hudVisibilityTimer = 1; } } /** - * Slowly restore buttons to the hud unless a button is disabled + * Sets the button alphas to be dimmed for disabled buttons, or to the requested alpha for non-disabled buttons */ -void Interface_RaiseNonDisabledButtonAlphas(PlayState* play, s16 risingAlpha) { +void Interface_UpdateButtonAlphasByStatus(PlayState* play, s16 risingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == ITEM_NONE)) { @@ -774,15 +774,15 @@ void Interface_RaiseNonDisabledButtonAlphas(PlayState* play, s16 risingAlpha) { } /** - * Slowly diminish button alphas on the hud - * If (gSaveContext.hudModeDimOnlyDisabledButtons), then only dim disabled buttons, - * and raise active button alphas instead + * Lower button alphas on the HUD to the requested value + * If (gSaveContext.hudVisibilityForceButtonAlphasByStatus), then instead update button alphas + * depending on button status */ -void Interface_DimButtonAlphas(PlayState* play, s16 dimmingAlpha, s16 risingAlpha) { +void Interface_UpdateButtonAlphas(PlayState* play, s16 dimmingAlpha, s16 risingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if (gSaveContext.hudModeDimOnlyDisabledButtons) { - Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); + if (gSaveContext.hudVisibilityForceButtonAlphasByStatus) { + Interface_UpdateButtonAlphasByStatus(play, risingAlpha); return; } @@ -811,11 +811,11 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 risingAlpha = 255 - dimmingAlpha; - switch (gSaveContext.requestHudMode) { - case HUD_MODE_OFF: - case HUD_MODE_OFF_ALT: - case HUD_MODE_B_FAST: - if (gSaveContext.requestHudMode == HUD_MODE_B_FAST) { + switch (gSaveContext.nextHudVisibility) { + case HUD_VISIBILITY_OFF: + case HUD_VISIBILITY_OFF_ALT: + case HUD_VISIBILITY_B_FAST: + if (gSaveContext.nextHudVisibility == HUD_VISIBILITY_B_FAST) { if (interfaceCtx->bAlpha != 255) { interfaceCtx->bAlpha = risingAlpha; } @@ -855,13 +855,13 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_WITH_DIM_BTN: - // aAlpha is immediately overwritten in Interface_DimButtonAlphas + case HUD_VISIBILITY_HEARTS_WITH_DIM_BTN: + // aAlpha is immediately overwritten in Interface_UpdateButtonAlphas if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; } - Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha + 0); + Interface_UpdateButtonAlphas(play, dimmingAlpha, risingAlpha + 0); if ((interfaceCtx->magicAlpha != 0) && (interfaceCtx->magicAlpha > dimmingAlpha)) { interfaceCtx->magicAlpha = dimmingAlpha; @@ -877,7 +877,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A: + case HUD_VISIBILITY_A: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -917,14 +917,14 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN: - Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + case HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_DIM_BTN: + Interface_UpdateButtonAlphas(play, dimmingAlpha, risingAlpha); if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { interfaceCtx->minimapAlpha = dimmingAlpha; } - // aAlpha overwrites the value set in Interface_DimButtonAlphas + // aAlpha overwrites the value set in Interface_UpdateButtonAlphas if (interfaceCtx->aAlpha != 255) { interfaceCtx->aAlpha = risingAlpha; } @@ -939,10 +939,10 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: - Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: + Interface_UpdateButtonAlphas(play, dimmingAlpha, risingAlpha); - // aAlpha overwrites the value set in Interface_DimButtonAlphas + // aAlpha overwrites the value set in Interface_UpdateButtonAlphas if (interfaceCtx->aAlpha != 255) { interfaceCtx->aAlpha = risingAlpha; } @@ -967,12 +967,12 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_ALL_NO_MINIMAP_W_DISABLED: + case HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED: if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { interfaceCtx->minimapAlpha = dimmingAlpha; } - Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); + Interface_UpdateButtonAlphasByStatus(play, risingAlpha); if (interfaceCtx->healthAlpha != 255) { interfaceCtx->healthAlpha = risingAlpha; @@ -984,7 +984,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_MAGIC: + case HUD_VISIBILITY_HEARTS_MAGIC: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -1019,7 +1019,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_B: + case HUD_VISIBILITY_B: if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; } @@ -1054,7 +1054,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS: + case HUD_VISIBILITY_HEARTS: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -1089,7 +1089,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_B_MINIMAP: + case HUD_VISIBILITY_A_B_MINIMAP: if (interfaceCtx->aAlpha != 255) { interfaceCtx->aAlpha = risingAlpha; } @@ -1130,14 +1130,14 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN: - Interface_DimButtonAlphas(play, dimmingAlpha, risingAlpha); + case HUD_VISIBILITY_HEARTS_MAGIC_WITH_DIM_BTN: + Interface_UpdateButtonAlphas(play, dimmingAlpha, risingAlpha); if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { interfaceCtx->minimapAlpha = dimmingAlpha; } - // aAlpha overwrites the value set in Interface_DimButtonAlphas + // aAlpha overwrites the value set in Interface_UpdateButtonAlphas if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; } @@ -1152,7 +1152,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_MAGIC_C: + case HUD_VISIBILITY_HEARTS_MAGIC_C: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -1187,7 +1187,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_ALL_NO_MINIMAP: + case HUD_VISIBILITY_ALL_NO_MINIMAP: if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { interfaceCtx->minimapAlpha = dimmingAlpha; } @@ -1222,7 +1222,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_B_C: + case HUD_VISIBILITY_A_B_C: if ((interfaceCtx->minimapAlpha != 0) && (interfaceCtx->minimapAlpha > dimmingAlpha)) { interfaceCtx->minimapAlpha = dimmingAlpha; } @@ -1257,7 +1257,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_B_MINIMAP: + case HUD_VISIBILITY_B_MINIMAP: if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; } @@ -1292,7 +1292,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_HEARTS_MAGIC_MINIMAP: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -1327,7 +1327,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP: if ((interfaceCtx->bAlpha != 0) && (interfaceCtx->bAlpha > dimmingAlpha)) { interfaceCtx->bAlpha = dimmingAlpha; } @@ -1362,7 +1362,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_B_MAGIC: + case HUD_VISIBILITY_B_MAGIC: if ((interfaceCtx->aAlpha != 0) && (interfaceCtx->aAlpha > dimmingAlpha)) { interfaceCtx->aAlpha = dimmingAlpha; } @@ -1397,7 +1397,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_B: + case HUD_VISIBILITY_A_B: if (interfaceCtx->aAlpha != 255) { interfaceCtx->aAlpha = risingAlpha; } @@ -1432,7 +1432,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { break; - case HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP: if ((interfaceCtx->cLeftAlpha != 0) && (interfaceCtx->cLeftAlpha > dimmingAlpha)) { interfaceCtx->cLeftAlpha = dimmingAlpha; } @@ -1515,7 +1515,7 @@ void func_80110038(PlayState* play) { } } - Interface_ChangeHudMode(HUD_MODE_B_FAST); + Interface_SetHudVisibility(HUD_VISIBILITY_B_FAST); } else if (gSaveContext.save.weekEventReg[82] & 8) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1523,7 +1523,7 @@ void func_80110038(PlayState* play) { } } - Interface_ChangeHudMode(HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); } else if (gSaveContext.save.weekEventReg[84] & 0x20) { if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { @@ -1585,9 +1585,9 @@ void func_80110038(PlayState* play) { } } - if (phi_t3 || (gSaveContext.curHudMode != HUD_MODE_A_B_MINIMAP)) { - gSaveContext.curHudMode = HUD_MODE_IDLE; - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + if (phi_t3 || (gSaveContext.hudVisibility != HUD_VISIBILITY_A_B_MINIMAP)) { + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); phi_t3 = false; } } else if (player->stateFlags3 & 0x1000000) { @@ -1667,12 +1667,12 @@ void func_80110038(PlayState* play) { } if (phi_t3) { - gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; } if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { if (ActorCutscene_GetCurrentIndex() == -1) { - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } } else { @@ -1702,7 +1702,7 @@ void func_80110038(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; phi_t3 = true; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } else { if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && @@ -1931,8 +1931,8 @@ void func_80110038(PlayState* play) { if (phi_t3 && (play->activeCamId == CAM_ID_MAIN) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { - gSaveContext.curHudMode = HUD_MODE_IDLE; - Interface_ChangeHudMode(HUD_MODE_ALL); + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } @@ -1944,7 +1944,7 @@ void func_80111CB4(PlayState* play) { sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { - gSaveContext.hudModeDimOnlyDisabledButtons = 0; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = 0; if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { if ((player->stateFlags1 & 0x800000) && (player->currentMask == PLAYER_MASK_BLAST) && @@ -1955,7 +1955,7 @@ void func_80111CB4(PlayState* play) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { - gSaveContext.hudModeDimOnlyDisabledButtons = true; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; if (play->sceneNum == SCENE_BOWLING) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; @@ -1970,12 +1970,12 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; } - Interface_ChangeHudMode(HUD_MODE_B_MAGIC); + Interface_SetHudVisibility(HUD_VISIBILITY_B_MAGIC); } else { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOW) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU)) { - gSaveContext.hudModeDimOnlyDisabledButtons = true; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; @@ -2006,34 +2006,34 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); + Interface_SetHudVisibility(HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); } } if (play->transitionMode != TRANS_MODE_OFF) { - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.eventInf[3] & 0x20)) { - Interface_ChangeHudMode(HUD_MODE_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_B_MINIMAP); } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && (gSaveContext.minigameState == 1)) { - Interface_ChangeHudMode(HUD_MODE_B_FAST); + Interface_SetHudVisibility(HUD_VISIBILITY_B_FAST); } else if (play->unk_1887C >= 2) { - Interface_ChangeHudMode(HUD_MODE_B_FAST); + Interface_SetHudVisibility(HUD_VISIBILITY_B_FAST); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (player->stateFlags1 & 0x800000) { - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } } } else { if (player->stateFlags1 & 0x800000) { - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } if (play->sceneNum == SCENE_BOWLING) { @@ -2067,24 +2067,24 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); + Interface_SetHudVisibility(HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN); if (play->transitionMode != TRANS_MODE_OFF) { - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (gSaveContext.minigameState == 1) { - Interface_ChangeHudMode(HUD_MODE_B_FAST); + Interface_SetHudVisibility(HUD_VISIBILITY_B_FAST); } else if (play->unk_1887C >= 2) { - Interface_ChangeHudMode(HUD_MODE_B_FAST); + Interface_SetHudVisibility(HUD_VISIBILITY_B_FAST); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (player->stateFlags1 & 0x800000) { - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } } } else if (D_801BF884 != 0) { @@ -2119,14 +2119,14 @@ void func_80111CB4(PlayState* play) { if (play->msgCtx.choiceIndex != 0) { func_8019F230(); func_80115844(play, 0x12); - Interface_ChangeHudMode(HUD_MODE_A_B); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B); D_801BF884 = 1; REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { func_8019F208(); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; sp28 = true; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); D_801BF884 = 0; if (D_801BF888) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, @@ -2143,17 +2143,17 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if ((gSaveContext.save.entranceIndex == 0xD010) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - Interface_ChangeHudMode(HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); } else if (play->actorCtx.unk5 & 4) { if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { func_80115844(play, 0x12); - Interface_ChangeHudMode(HUD_MODE_A_B); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B); D_801BF884 = 1; } else { func_80166644((u8*)((void)0, gSaveContext.pictoPhoto), @@ -2166,9 +2166,9 @@ void func_80111CB4(PlayState* play) { } } if (sp28) { - gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } } @@ -2249,7 +2249,7 @@ void func_80112C0C(PlayState* play, u16 flag) { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - Interface_ChangeHudMode(HUD_MODE_ALL_NO_MINIMAP_W_DISABLED); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED); } else { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; @@ -3756,8 +3756,9 @@ void Interface_DrawItemButtons(PlayState* play) { // C-Up Button Texture, Color & Label (Tatl Text) gDPPipeSync(OVERLAY_DISP++); - if ((gSaveContext.curHudMode == HUD_MODE_OFF) || (gSaveContext.curHudMode == HUD_MODE_OFF_ALT) || - (gSaveContext.curHudMode == HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN) || (msgCtx->msgMode != 0)) { + if ((gSaveContext.hudVisibility == HUD_VISIBILITY_OFF) || + (gSaveContext.hudVisibility == HUD_VISIBILITY_OFF_ALT) || + (gSaveContext.hudVisibility == HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_DIM_BTN) || (msgCtx->msgMode != 0)) { temp = 0; } else if (player->stateFlags1 & 0x200000) { temp = 70; @@ -4228,7 +4229,7 @@ void Interface_DrawClock(PlayState* play) { /** * Changes Clock's transparancy depending if Player is moving or not and possibly other things */ - if (((void)0, gSaveContext.curHudMode) == HUD_MODE_ALL) { + if (((void)0, gSaveContext.hudVisibility) == HUD_VISIBILITY_ALL) { if (func_801234D4(play) != 0) { D_801BFB2C = 80; D_801BFB30 = 5; @@ -5293,7 +5294,7 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_1: case TIMER_STATE_9: D_801BFCE4 = 20; - if (interfaceCtx->unk_280 != 0) { + if (interfaceCtx->minigameState != MINIGAME_STATE_NONE) { gSaveContext.timerX[sTimerId] = 26; if (interfaceCtx->magicAlpha != 255) { @@ -5304,7 +5305,8 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerY[sTimerId] = 46; } - if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) { + if ((interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) || + (interfaceCtx->minigameState == MINIGAME_STATE_30)) { if (gSaveContext.timerState[sTimerId] == TIMER_STATE_1) { gSaveContext.timerState[sTimerId] = TIMER_STATE_4; } else { @@ -5721,7 +5723,7 @@ void Interface_DrawMinigameIcons(PlayState* play) { G_TX_NOLOD, G_TX_NOLOD); sp3E = 110; - sp3C = (interfaceCtx->unk_280 != 0) ? 200 : 56; + sp3C = (interfaceCtx->minigameState != MINIGAME_STATE_NONE) ? 200 : 56; // Draw 6 carrots for (sp42 = 1; sp42 < 7; sp42++, sp3E += 16) { @@ -6100,11 +6102,12 @@ void Interface_Draw(PlayState* play) { func_80119030(play); if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { - if ((interfaceCtx->unk_280 != 0) && (interfaceCtx->unk_280 < 20)) { + if ((interfaceCtx->minigameState != MINIGAME_STATE_NONE) && + (interfaceCtx->minigameState < MINIGAME_STATE_20)) { // Minigame Countdown - if (((u32)interfaceCtx->unk_280 % 2) == 0) { + if (((u32)interfaceCtx->minigameState % 2) == 0) { - sp2CE = (interfaceCtx->unk_280 >> 1) - 1; + sp2CE = (interfaceCtx->minigameState >> 1) - 1; sp2C0 = interfaceCtx->unk_284 / 100.0f; if (sp2CE == 3) { @@ -6188,8 +6191,8 @@ void Interface_Draw(PlayState* play) { interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; D_801BF884 = 0; - gSaveContext.curHudMode = HUD_MODE_IDLE; - Interface_ChangeHudMode(HUD_MODE_ALL); + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } else { s16 phi_a2; @@ -6197,7 +6200,7 @@ void Interface_Draw(PlayState* play) { if (D_801BF884 == 2) { D_801BF884 = 3; Message_StartTextbox(play, 0xF8, NULL); - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); player->stateFlags1 |= 0x200; } @@ -6288,55 +6291,55 @@ void Interface_Update(PlayState* play) { } // Update hud mode - switch (gSaveContext.requestHudMode) { - case HUD_MODE_OFF: - case HUD_MODE_OFF_ALT: - case HUD_MODE_B_FAST: - dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + switch (gSaveContext.nextHudVisibility) { + case HUD_VISIBILITY_OFF: + case HUD_VISIBILITY_OFF_ALT: + case HUD_VISIBILITY_B_FAST: + dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5); if (dimmingAlpha < 0) { dimmingAlpha = 0; } Interface_UpdateHudAlphas(play, dimmingAlpha); - gSaveContext.hudModeCounter += 2; + gSaveContext.hudVisibilityTimer += 2; if (dimmingAlpha == 0) { - gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; } break; - case HUD_MODE_HEARTS_WITH_DIM_BTN: - case HUD_MODE_A: - case HUD_MODE_A_HEARTS_MAGIC_WITH_DIM_BTN: - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: - case HUD_MODE_ALL_NO_MINIMAP_W_DISABLED: - case HUD_MODE_HEARTS_MAGIC: - case HUD_MODE_B: - case HUD_MODE_HEARTS: - case HUD_MODE_A_B_MINIMAP: - case HUD_MODE_HEARTS_MAGIC_WITH_DIM_BTN: - case HUD_MODE_HEARTS_MAGIC_C: - case HUD_MODE_ALL_NO_MINIMAP: - case HUD_MODE_A_B_C: - case HUD_MODE_B_MINIMAP: - case HUD_MODE_HEARTS_MAGIC_MINIMAP: - case HUD_MODE_A_HEARTS_MAGIC_MINIMAP: - case HUD_MODE_B_MAGIC: - case HUD_MODE_A_B: - case HUD_MODE_A_B_HEARTS_MAGIC_MINIMAP: - dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + case HUD_VISIBILITY_HEARTS_WITH_DIM_BTN: + case HUD_VISIBILITY_A: + case HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_DIM_BTN: + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_DIM_BTN: + case HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED: + case HUD_VISIBILITY_HEARTS_MAGIC: + case HUD_VISIBILITY_B: + case HUD_VISIBILITY_HEARTS: + case HUD_VISIBILITY_A_B_MINIMAP: + case HUD_VISIBILITY_HEARTS_MAGIC_WITH_DIM_BTN: + case HUD_VISIBILITY_HEARTS_MAGIC_C: + case HUD_VISIBILITY_ALL_NO_MINIMAP: + case HUD_VISIBILITY_A_B_C: + case HUD_VISIBILITY_B_MINIMAP: + case HUD_VISIBILITY_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP: + case HUD_VISIBILITY_B_MAGIC: + case HUD_VISIBILITY_A_B: + case HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP: + dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5); if (dimmingAlpha < 0) { dimmingAlpha = 0; } Interface_UpdateHudAlphas(play, dimmingAlpha); - gSaveContext.hudModeCounter++; + gSaveContext.hudVisibilityTimer++; if (dimmingAlpha == 0) { - gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; } break; - case HUD_MODE_ALL: - dimmingAlpha = 255 - (gSaveContext.hudModeCounter << 5); + case HUD_VISIBILITY_ALL: + dimmingAlpha = 255 - (gSaveContext.hudVisibilityTimer << 5); if (dimmingAlpha < 0) { dimmingAlpha = 0; } @@ -6346,7 +6349,7 @@ void Interface_Update(PlayState* play) { risingAlpha = 255; } - Interface_RaiseNonDisabledButtonAlphas(play, risingAlpha); + Interface_UpdateButtonAlphasByStatus(play, risingAlpha); if (gSaveContext.buttonStatus[5] == BTN_DISABLED) { if (interfaceCtx->startAlpha != 70) { @@ -6376,19 +6379,19 @@ void Interface_Update(PlayState* play) { interfaceCtx->minimapAlpha = risingAlpha; } - gSaveContext.hudModeCounter++; + gSaveContext.hudVisibilityTimer++; if (risingAlpha == 255) { - gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; } break; - case HUD_MODE_OFF_NOW: + case HUD_VISIBILITY_OFF_NOW: // Turn off all Hud immediately - gSaveContext.requestHudMode = HUD_MODE_OFF; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_OFF; Interface_UpdateHudAlphas(play, 0); - gSaveContext.requestHudMode = HUD_MODE_IDLE; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; // fallthrough default: break; @@ -6469,45 +6472,49 @@ void Interface_Update(PlayState* play) { // Update Minigame State if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { - if (interfaceCtx->unk_280) { - switch (interfaceCtx->unk_280) { - case 1: // minigame countdown 3 - case 3: // minigame countdown 2 - case 5: // minigame countdown 1 - case 7: // minigame countdown Go! + if (interfaceCtx->minigameState) { // != MINIGAME_STATE_NONE + switch (interfaceCtx->minigameState) { + case MINIGAME_STATE_COUNTDOWN_START_3: // minigame countdown 3 + case MINIGAME_STATE_COUNTDOWN_START_2: // minigame countdown 2 + case MINIGAME_STATE_COUNTDOWN_START_1: // minigame countdown 1 + case MINIGAME_STATE_COUNTDOWN_START_GO: // minigame countdown Go! interfaceCtx->unk_282 = 255; interfaceCtx->unk_284 = 100; - interfaceCtx->unk_280++; - if (interfaceCtx->unk_280 == 8) { + interfaceCtx->minigameState++; + if (interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) { interfaceCtx->unk_284 = 160; play_sound(NA_SE_SY_START_SHOT); } else { play_sound(NA_SE_SY_WARNING_COUNT_E); } break; - case 2: - case 4: - case 6: + + case MINIGAME_STATE_COUNTDOWN_3: + case MINIGAME_STATE_COUNTDOWN_2: + case MINIGAME_STATE_COUNTDOWN_1: interfaceCtx->unk_282 -= 10; interfaceCtx->unk_284 += 3; if (interfaceCtx->unk_282 < 22) { - interfaceCtx->unk_280++; + interfaceCtx->minigameState++; } break; - case 8: + + case MINIGAME_STATE_COUNTDOWN_GO: interfaceCtx->unk_282 -= 10; if (interfaceCtx->unk_282 <= 150) { - interfaceCtx->unk_280 = 0x1E; + interfaceCtx->minigameState = MINIGAME_STATE_30; } break; - case 20: + + case MINIGAME_STATE_20: interfaceCtx->unk_282 = 0; - interfaceCtx->unk_280++; + interfaceCtx->minigameState++; break; - case 21: + + case MINIGAME_STATE_21: interfaceCtx->unk_282++; if (interfaceCtx->unk_282 >= 18) { - interfaceCtx->unk_280 = 30; + interfaceCtx->minigameState = MINIGAME_STATE_30; } break; } @@ -6529,6 +6536,7 @@ void Interface_Update(PlayState* play) { } } break; + case 2: interfaceCtx->unk_218 += 10466.667f; if (interfaceCtx->unk_218 >= 0.0f) { @@ -6542,6 +6550,7 @@ void Interface_Update(PlayState* play) { Interface_LoadActionLabel(&play->interfaceCtx, action, 0); } break; + case 3: interfaceCtx->unk_218 += 10466.667f; if (interfaceCtx->unk_218 >= 15700.0f) { @@ -6549,6 +6558,7 @@ void Interface_Update(PlayState* play) { interfaceCtx->unk_210 = 2; } break; + case 4: interfaceCtx->unk_218 += 10466.667f; if (interfaceCtx->unk_218 >= 0.0f) { @@ -6742,8 +6752,8 @@ void Interface_Init(PlayState* play) { bzero(interfaceCtx, sizeof(InterfaceContext)); gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - gSaveContext.requestHudMode = HUD_MODE_IDLE; - gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; View_Init(&interfaceCtx->view, play->state.gfxCtx); diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 43892dac8..4b2166421 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -508,7 +508,7 @@ s32 func_8012364C(PlayState* play, Player* player, s32 arg2) { if (arg2 == 1) { return (gSaveContext.buttonStatus[1] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_LEFT] - : (gSaveContext.curHudMode == HUD_MODE_A_B_C) + : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_LEFT] : ITEM_NONE; } @@ -516,14 +516,15 @@ s32 func_8012364C(PlayState* play, Player* player, s32 arg2) { if (arg2 == 2) { return (gSaveContext.buttonStatus[2] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_DOWN] - : (gSaveContext.curHudMode == HUD_MODE_A_B_C) + : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_DOWN] : ITEM_NONE; } return (gSaveContext.buttonStatus[3] != BTN_DISABLED) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] - : (gSaveContext.curHudMode == HUD_MODE_A_B_C) ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] - : ITEM_NONE; + : (gSaveContext.hudVisibility == HUD_VISIBILITY_A_B_C) + ? gSaveContext.save.equips.buttonItems[0][EQUIP_SLOT_C_RIGHT] + : ITEM_NONE; } #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123810.s") diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index 0ea451143..16f89b4d7 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -598,7 +598,7 @@ void func_808B9F10(DoorWarp1* this, PlayState* play) { if ((this->unk_203 == 0) && func_808B866C(this, play) && !Play_InCsMode(play) && (this->unk_203 == 0)) { Player* player = GET_PLAYER(play); - Interface_ChangeHudMode(HUD_MODE_OFF); + Interface_SetHudVisibility(HUD_VISIBILITY_OFF); func_800B7298(play, &this->dyna.actor, 9); player->unk_3A0.x = this->dyna.actor.world.pos.x; player->unk_3A0.z = this->dyna.actor.world.pos.z; diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 169f7025b..40c75c954 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -5166,7 +5166,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { sSubCamAt.y = mainCam->at.y; sSubCamAt.z = mainCam->at.z; D_8090CD4C = 2; - Interface_ChangeHudMode(HUD_MODE_A_B_MINIMAP); + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); sSubCamVelFactor = 0.0f; // fallthrough case 2: diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index ff9315a54..96aebb8cf 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -393,7 +393,7 @@ void EnFsn_EndInteraction(EnFsn* this, PlayState* play) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -1161,7 +1161,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, PlayState* play) { Actor_PickUp(&this->actor, play, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->shopItemSelectedTween = 0.0f; item = this->items[this->cursorIdx]; diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 65ccb7177..93550ef4d 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -821,7 +821,7 @@ void func_8096326C(EnFu* this, PlayState* play) { void func_809632D0(EnFu* this) { if (gSaveContext.save.playerForm == PLAYER_FORM_DEKU) { - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } gSaveContext.save.weekEventReg[8] &= (u8)~1; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index de20a27ff..83cf73e9e 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -122,7 +122,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { } func_8010E9F0(TIMER_ID_4, 0); - play->interfaceCtx.unk_280 = 1; + play->interfaceCtx.minigameState = 1; this->horse1 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1149.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, ENHORSE_PARAMS(ENHORSE_PARAM_BANDIT, ENHORSE_4)); @@ -212,10 +212,10 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { if ((this->unk_168 > 50) && !(this->unk_164 & 2)) { this->unk_164 |= 2; - } else if ((play->interfaceCtx.unk_280 >= 8) && !(this->unk_164 & 1)) { + } else if ((play->interfaceCtx.minigameState >= 8) && !(this->unk_164 & 1)) { this->unk_164 |= 1; horse->inRace = true; - } else if ((play->interfaceCtx.unk_280 >= 8) && !(this->unk_164 & 8)) { + } else if ((play->interfaceCtx.minigameState >= 8) && !(this->unk_164 & 8)) { EnHorse* horse = this->horse1; horse->inRace = true; diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 8b5292692..24f9e202f 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -284,7 +284,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { player->stateFlags1 |= 0x20; func_801A2BB8(0x25); - play->interfaceCtx.unk_280 = 1; + play->interfaceCtx.minigameState = 1; Interface_InitMinigame(play); gSaveContext.save.weekEventReg[90] |= 0x20; func_8010E9F0(TIMER_ID_4, 120); @@ -294,7 +294,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { void func_80C1418C(EnJgameTsn* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (play->interfaceCtx.unk_280 == 8) { + if (play->interfaceCtx.minigameState == 8) { func_80C141DC(this); player->stateFlags1 &= ~0x20; } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 9cbd090fa..eb0300a0a 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -688,7 +688,7 @@ void EnMa4_HorsebackGameTalking(EnMa4* this, PlayState* play) { void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); - play->interfaceCtx.unk_280 = 1; + play->interfaceCtx.minigameState = 1; func_8010E9F0(TIMER_ID_4, 0); gSaveContext.save.weekEventReg[8] |= 1; Interface_InitMinigame(play); @@ -699,7 +699,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { void EnMa4_SetupHorsebackGameWait(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (play->interfaceCtx.unk_280 == 8) { + if (play->interfaceCtx.minigameState == 8) { this->actionFunc = EnMa4_HorsebackGameWait; player->stateFlags1 &= ~0x20; } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 0e1323e27..cee1132a4 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -135,7 +135,7 @@ void EnMag_Init(Actor* thisx, PlayState* play) { this->unk11F02 = 30; this->unk11F00 = this->state = MAG_STATE_INITIAL; - if (gSaveContext.hudModeDimOnlyDisabledButtons) { + if (gSaveContext.hudVisibilityForceButtonAlphasByStatus) { this->mainTitleAlpha = 210; this->unk11F32 = 255; this->copyrightAlpha = 255; @@ -158,7 +158,7 @@ void EnMag_Init(Actor* thisx, PlayState* play) { this->displayEffectEnvColor[1] = 255; this->displayEffectEnvColor[2] = 155; - gSaveContext.hudModeDimOnlyDisabledButtons = false; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; this->state = MAG_STATE_FADE_IN_MASK; sInputDelayTimer = 20; gSaveContext.transFadeDuration = 1; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index c7731230a..454f7e963 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -315,11 +315,11 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { } else { if (DECR(this->timer) == 60) { func_8010E9F0(TIMER_ID_4, 0); - play->interfaceCtx.unk_280 = 1; + play->interfaceCtx.minigameState = 1; Audio_QueueSeqCmd(NA_BGM_GORON_RACE | 0x8000); play->envCtx.unk_E4 = 0xFE; player->stateFlags1 &= ~0x20; - } else if ((this->timer < 60) && (play->interfaceCtx.unk_280 == 8)) { + } else if ((this->timer < 60) && (play->interfaceCtx.minigameState == 8)) { this->timer = 0; gSaveContext.eventInf[1] |= 1; this->actionFunc = EnMttag_Race; diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 2c7e4f06a..d704630ce 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -302,7 +302,7 @@ void EnOssan_EndInteraction(PlayState* play, EnOssan* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -985,7 +985,7 @@ void EnOssan_SetupBuyItemWithFanfare(PlayState* play, EnOssan* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; EnOssan_SetupAction(this, EnOssan_BuyItemWithFanfare); } diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index 627250635..b5386bdb0 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -442,7 +442,7 @@ void EnSob1_EndInteraction(PlayState* play, EnSob1* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -932,7 +932,7 @@ void EnSob1_SetupBuyItemWithFanfare(PlayState* play, EnSob1* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; EnSob1_SetupAction(this, EnSob1_BuyItemWithFanfare); } diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index d782881b0..9b2907023 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -514,9 +514,9 @@ void func_80A42F20(EnTest4* this, PlayState* play) { if (sCurrentCs >= 0) { ActorCutscene_Stop(sCurrentCs); } - gSaveContext.curHudMode = HUD_MODE_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; gSaveContext.eventInf[1] &= (u8)~0x80; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 01cf781b6..3685d24a2 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -206,7 +206,7 @@ void EnTrt_EndInteraction(PlayState* play, EnTrt* this) { Actor_ProcessTalkRequest(&this->actor, &play->state); play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; @@ -640,7 +640,7 @@ void EnTrt_SetupBuyItemWithFanfare(PlayState* play, EnTrt* this) { play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->stateFlags2 &= ~0x20000000; - Interface_ChangeHudMode(HUD_MODE_ALL); + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); this->drawCursor = 0; this->actionFunc = EnTrt_BuyItemWithFanfare; } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 2f0ffdd4a..ccc30f79e 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -27,10 +27,10 @@ void MapSelect_LoadGame(MapSelectState* this, u32 entranceIndex, s32 opt) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; - gSaveContext.hudModeDimOnlyDisabledButtons = false; - gSaveContext.requestHudMode = HUD_MODE_IDLE; - gSaveContext.curHudMode = HUD_MODE_IDLE; - gSaveContext.hudModeCounter = 0; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibilityTimer = 0; Audio_QueueSeqCmd(NA_BGM_STOP); gSaveContext.save.entranceIndex = entranceIndex; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index c28376fd1..f39c5b276 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2100,9 +2100,9 @@ 0x8010EBA0:("func_8010EBA0",), 0x8010EC54:("func_8010EC54",), 0x8010EE74:("Interface_NewDay",), - 0x8010EF68:("Interface_ChangeHudMode",), - 0x8010EF9C:("Interface_RaiseNonDisabledButtonAlphas",), - 0x8010F0D4:("Interface_DimButtonAlphas",), + 0x8010EF68:("Interface_SetHudVisibility",), + 0x8010EF9C:("Interface_UpdateButtonAlphasByStatus",), + 0x8010F0D4:("Interface_UpdateButtonAlphas",), 0x8010F1A8:("Interface_UpdateHudAlphas",), 0x80110038:("func_80110038",), 0x80111CB4:("func_80111CB4",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index cf5cf6639..76ba70d03 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1614,9 +1614,9 @@ asm/non_matchings/code/z_parameter/func_8010EB50.s,func_8010EB50,0x8010EB50,0x14 asm/non_matchings/code/z_parameter/func_8010EBA0.s,func_8010EBA0,0x8010EBA0,0x2D asm/non_matchings/code/z_parameter/func_8010EC54.s,func_8010EC54,0x8010EC54,0x88 asm/non_matchings/code/z_parameter/Interface_NewDay.s,Interface_NewDay,0x8010EE74,0x3D -asm/non_matchings/code/z_parameter/Interface_ChangeHudMode.s,Interface_ChangeHudMode,0x8010EF68,0xD -asm/non_matchings/code/z_parameter/Interface_RaiseNonDisabledButtonAlphas.s,Interface_RaiseNonDisabledButtonAlphas,0x8010EF9C,0x4E -asm/non_matchings/code/z_parameter/Interface_DimButtonAlphas.s,Interface_DimButtonAlphas,0x8010F0D4,0x35 +asm/non_matchings/code/z_parameter/Interface_SetHudVisibility.s,Interface_SetHudVisibility,0x8010EF68,0xD +asm/non_matchings/code/z_parameter/Interface_UpdateButtonAlphasByStatus.s,Interface_UpdateButtonAlphasByStatus,0x8010EF9C,0x4E +asm/non_matchings/code/z_parameter/Interface_UpdateButtonAlphas.s,Interface_UpdateButtonAlphas,0x8010F0D4,0x35 asm/non_matchings/code/z_parameter/Interface_UpdateHudAlphas.s,Interface_UpdateHudAlphas,0x8010F1A8,0x3A4 asm/non_matchings/code/z_parameter/func_80110038.s,func_80110038,0x80110038,0x71F asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34C From 8615f46250c98896631a94245407f2e7342644d1 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 15 Aug 2022 23:25:25 -0400 Subject: [PATCH 131/160] lots of timer docs --- include/functions.h | 20 +- include/regs.h | 2 + include/variables.h | 24 +- include/z64item.h | 3 - include/z64player.h | 8 + include/z64save.h | 95 ++- src/boot_O2_g3/idle.c | 1 - src/code/code_8012EC80.c | 2 +- src/code/z_bgcheck.c | 1 + src/code/z_parameter.c | 669 +++++++++--------- src/code/z_player_lib.c | 23 +- src/code/z_sram_NES.c | 28 +- src/overlays/actors/ovl_Boss_03/z_boss_03.c | 1 + src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 16 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 24 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 10 +- .../z_en_horse_game_check.c | 4 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 8 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 19 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 34 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.h | 5 + .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- .../z_en_syateki_dekunuts.c | 3 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 35 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 2 +- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 4 +- .../ovl_Obj_Roomtimer/z_obj_roomtimer.c | 6 +- src/overlays/gamestates/ovl_select/z_select.c | 12 +- tools/disasm/functions.txt | 20 +- tools/disasm/variables.txt | 24 +- tools/sizes/code_functions.csv | 20 +- 32 files changed, 599 insertions(+), 532 deletions(-) diff --git a/include/functions.h b/include/functions.h index c6a8a0c09..f590371c1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1816,12 +1816,12 @@ void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); // void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); // void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); // void Interface_InitVertices(void); -// void Interface_TimerCallback(void); -void func_8010E9F0(s16 timerId, s16 timeLimit); -void func_8010EA9C(s16 timeLimit, s16 arg1); -// void func_8010EB50(void); -// void func_8010EBA0(void); -// void func_8010EC54(void); +// void Interface_PostmanTimerCallback(void); +void Interface_StartTimer(s16 timerId, s16 timeLimit); +void Interface_StartPostmanTimer(s16 timeLimit, s16 bunnyHoodState); +// void Interface_StartGoronRaceTimer(void); +// void Interface_StartBottleTimer(void); +// void Interface_GetCompressedTimerDigits(void); void Interface_NewDay(PlayState* play, s32 day); void Interface_SetHudVisibility(u16 hudVisibility); // void func_80110038(void); @@ -1869,10 +1869,10 @@ void Interface_SetPerfectMinigame(PlayState* play, s16 rewardType); // void func_8011B9E0(void); // void func_8011BF70(void); // void Interface_DrawMinigamePerfect(void); -void func_8011C808(PlayState* play); -// void func_8011C898(void); +void Interface_StartMoonCrash(PlayState* play); +// void Interface_GetTimerDigits(void); // void Interface_DrawTimers(void); -// void Interface_UpdateTimers(void); +// void Interface_UpdateBottleTimers(void); // void Interface_DrawMinigameIcons(void); // void Interface_Draw(UNK_TYPE4 ctxt); // void Interface_LoadStory(void); @@ -1946,7 +1946,7 @@ s32 Player_ActionToExplosive(Player* player, s32 actionParam); s32 Player_GetExplosiveHeld(Player* player); s32 func_80124278(Actor* actor, s32 arg1); s32 func_801242B4(Player* player); -s32 func_801242DC(PlayState* play); +s32 Player_GetEnvTimerType(PlayState* play); void func_80124420(Player* player); void func_80124618(struct_80124618 arg0[], f32 curFrame, Vec3f* arg2); void func_801246F4(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic, s32 boots, s32 face, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor); diff --git a/include/regs.h b/include/regs.h index 9e7e99ace..1bd8e4b90 100644 --- a/include/regs.h +++ b/include/regs.h @@ -71,6 +71,8 @@ #define R_A_ICON_X XREG(20) #define R_A_BTN_COLOR(i) XREG(22 + i) #define R_MAGIC_CONSUME_TIMER_GIANT XREG(41) +#define R_FINAL_HOURS_TIMER_Y XREG(80) +#define R_FINAL_HOURS_TIMER_X XREG(81) #define R_MINIMAP_DISABLED XREG(95) #define R_B_LABEL_DD WREG(0) #define R_OW_MINIMAP_X WREG(29) diff --git a/include/variables.h b/include/variables.h index bde090b70..263ee8cfe 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1033,19 +1033,19 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sMagicBarOutlinePrimBlue; // extern UNK_TYPE2 sMagicBorderRatio; // extern UNK_TYPE2 sMagicBorderStep; -// extern UNK_TYPE2 D_801BF8DC; -// extern UNK_TYPE2 D_801BF8E0; -// extern UNK_TYPE2 D_801BF8E4; -// extern UNK_TYPE4 D_801BF8E8; -// extern UNK_TYPE4 D_801BF8F0; +// extern UNK_TYPE2 sEnvTimerType; +// extern UNK_TYPE2 sEnvTimerActive; +// extern UNK_TYPE2 sPostmanBunnyHoodState; +// extern UNK_TYPE4 sTimerPausedOsTime; +// extern UNK_TYPE4 sBottleTimerPausedOsTime; // extern UNK_TYPE4 D_801BF8F4; // extern UNK_TYPE4 D_801BF8F8; // extern UNK_TYPE4 D_801BF8FC; // extern UNK_TYPE4 D_801BF930; // extern UNK_TYPE4 D_801BF934; -// extern UNK_TYPE1 D_801BF968; +// extern UNK_TYPE1 sIsTimerPaused; // extern UNK_TYPE1 D_801BF96A; -// extern UNK_TYPE1 D_801BF96C; +// extern UNK_TYPE1 sIsBottleTimerPaused; // extern UNK_TYPE1 D_801BF96E; // extern UNK_TYPE2 sTimerId; // extern UNK_TYPE1 D_801BF972; @@ -1085,7 +1085,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BFA4C; // extern UNK_TYPE2 D_801BFA64; // extern UNK_TYPE2 D_801BFA74; -// extern UNK_TYPE4 D_801BFA84; +// extern UNK_TYPE4 sPostmanTimerInputBtnAPressed; // extern UNK_TYPE1 sDoActionTextures; // extern UNK_TYPE1 D_801BFAB8; // extern UNK_TYPE1 D_801BFAC4; @@ -1137,15 +1137,15 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BFCA8; // extern UNK_TYPE1 D_801BFCB8; // extern UNK_TYPE4 D_801BFCC4; -// extern UNK_TYPE2 D_801BFCE4; -// extern UNK_TYPE2 D_801BFCE8; +// extern UNK_TYPE2 sTimerStateTimer; +// extern UNK_TYPE2 sTimerDigits; // extern UNK_TYPE2 D_801BFCEA; // extern UNK_TYPE2 D_801BFCEC; // extern UNK_TYPE2 D_801BFCEE; // extern UNK_TYPE2 D_801BFCF0; // extern UNK_TYPE2 D_801BFCF2; // extern UNK_TYPE2 D_801BFCF4; -// extern UNK_TYPE2 D_801BFCF8; +// extern UNK_TYPE2 sTimerBeepSfxSeconds; // extern UNK_TYPE2 D_801BFCFC; // extern UNK_TYPE2 D_801BFD0C; // extern UNK_TYPE1 D_801BFD1C; @@ -3153,7 +3153,7 @@ extern s16 D_801F4E7A; // extern UNK_TYPE1 D_801F57B4; // extern UNK_TYPE1 D_801F5834; // extern NmiBuff* gNMIBuffer; -// extern UNK_TYPE1 D_801F5850; +// extern UNK_TYPE1 sPostmanTimerInput; // extern UNK_TYPE1 D_801F58B0; // extern UNK_TYPE1 D_801F59AC; // extern UNK_TYPE1 D_801F59B0; diff --git a/include/z64item.h b/include/z64item.h index 49c49a441..6ee7e96ec 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -299,9 +299,6 @@ typedef enum { #define BOTTLE_FIRST 0 #define BOTTLE_MAX 6 -#define BOTTLE_FIRST 0 -#define BOTTLE_MAX 6 - typedef enum { /* 0x00 */ GI_NONE, /* 0x01 */ GI_RUPEE_GREEN, diff --git a/include/z64player.h b/include/z64player.h index f49f30688..4aa40aedd 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -70,6 +70,14 @@ typedef enum { /* 0x19 */ PLAYER_MASK_MAX } PlayerMask; +typedef enum { + /* 0 */ PLAYER_ENV_TIMER_NONE, + /* 1 */ PLAYER_ENV_TIMER_HOTROOM, + /* 2 */ PLAYER_ENV_TIMER_UNDERWATER_FLOOR, + /* 3 */ PLAYER_ENV_TIMER_SWIMMING, + /* 4 */ PLAYER_ENV_TIMER_UNDERWATER_FREE +} PlayerEnvTimer; + typedef enum PlayerActionParam { /* -1 */ PLAYER_AP_MINUS1 = -1, /* 0x00 */ PLAYER_AP_NONE, diff --git a/include/z64save.h b/include/z64save.h index b918bd21a..cfaf07e5a 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "z64math.h" +#include "z64item.h" #include "os.h" struct GameState; @@ -54,37 +55,52 @@ typedef enum { #define MAGIC_NORMAL_METER 0x30 #define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER) +#define SECONDS_TO_TIMER(seconds) ((seconds) * 100) + +// 1 centiSecond = 10 milliSeconds = 1/100 seconds +#define SECONDS_TO_TIMER_PRECISE(seconds, centiSeconds) ((seconds) * 100 + (centiSeconds)) + typedef enum { - /* 0 */ TIMER_STATE_OFF, - /* 1 */ TIMER_STATE_1, - /* 2 */ TIMER_STATE_2, - /* 3 */ TIMER_STATE_3, - /* 4 */ TIMER_STATE_4, - /* 5 */ TIMER_STATE_5, - /* 6 */ TIMER_STATE_6, - /* 7 */ TIMER_STATE_7, - /* 8 */ TIMER_STATE_8, - /* 9 */ TIMER_STATE_9, + /* 0 */ TIMER_ID_POSTMAN, // postman's counting minigame + /* 1 */ TIMER_ID_1, // minigame timer + /* 2 */ TIMER_ID_2, + /* 3 */ TIMER_ID_FINAL_HOURS, // countdown until mooncrash + /* 4 */ TIMER_ID_4, + /* 5 */ TIMER_ID_ENV, // environmental timer (underwater or hot room) + /* 6 */ TIMER_ID_GORON_RACE_UNUSED, + /* 7 */ TIMER_ID_MAX, + /* 99 */ TIMER_ID_NONE = 99, +} TimerId; + +typedef enum { + /* 0 */ TIMER_COUNT_DOWN, + /* 1 */ TIMER_COUNT_UP +} TimerDirection; + +typedef enum { + /* 0 */ TIMER_STATE_OFF, + /* 1 */ TIMER_STATE_1, + /* 2 */ TIMER_STATE_2, + /* 3 */ TIMER_STATE_MOVING_TIMER, + /* 4 */ TIMER_STATE_4, + /* 5 */ TIMER_STATE_STOP, + /* 6 */ TIMER_STATE_6, + /* 7 */ TIMER_STATE_7, + /* 8 */ TIMER_STATE_ENV_START, + /* 9 */ TIMER_STATE_9, /* 10 */ TIMER_STATE_10, /* 11 */ TIMER_STATE_11, /* 12 */ TIMER_STATE_12, - /* 13 */ TIMER_STATE_13, - /* 14 */ TIMER_STATE_14, - /* 15 */ TIMER_STATE_15, - /* 16 */ TIMER_STATE_16 + /* 13 */ TIMER_STATE_POSTMAN_START, + /* 14 */ TIMER_STATE_POSTMAN_COUNTING, + /* 15 */ TIMER_STATE_POSTMAN_STOP, + /* 16 */ TIMER_STATE_POSTMAN_END } TimerState; typedef enum { - /* 0 */ TIMER_ID_0, - /* 1 */ TIMER_ID_1, // minigame timer - /* 2 */ TIMER_ID_2, - /* 3 */ TIMER_ID_3, // countdown until mooncrash - /* 4 */ TIMER_ID_4, - /* 5 */ TIMER_ID_5, - /* 6 */ TIMER_ID_6, - /* 7 */ TIMER_ID_MAX, - /* 99 */ TIMER_ID_NONE = 99, -} TimerId; + /* 0 */ BOTTLE_TIMER_STATE_OFF, + /* 1 */ BOTTLE_TIMER_STATE_COUNTING +} BottleTimerState; typedef enum { /* 0 */ HUD_VISIBILITY_IDLE, @@ -113,6 +129,7 @@ typedef enum { /* 50 */ HUD_VISIBILITY_ALL = 50, /* 52 */ HUD_VISIBILITY_OFF_NOW = 52 } HudVisibility; + typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -273,11 +290,11 @@ typedef struct SaveContext { /* 0x1015 */ u8 unk_1015; /* 0x1016 */ u16 jinxTimer; /* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct" - /* 0x101A */ u8 bottleStatus[6]; // "bottle_status", one entry for each bottle - /* 0x1020 */ OSTime bottleTimer1Value[6]; // "bottle_ostime", one entry for each bottle - /* 0x1050 */ OSTime bottleTimer2Value[6]; // "bottle_sub", one entry for each bottle - /* 0x1080 */ OSTime bottleTimer3Value[6]; // "bottle_time", one entry for each bottle - /* 0x10B0 */ OSTime bottleTimer4Value[6]; // "bottle_stop_time", one entry for each bottle + /* 0x101A */ u8 bottleTimerState[BOTTLE_MAX]; // "bottle_status", one entry for each bottle + /* 0x1020 */ OSTime bottleTimerStartOsTime[BOTTLE_MAX]; // "bottle_ostime", one entry for each bottle + /* 0x1050 */ u64 bottleTimerCurSubTime[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle + /* 0x1080 */ u64 bottleTimerCurTime[BOTTLE_MAX]; // "bottle_time", one entry for each bottle + /* 0x10B0 */ OSTime bottleTimerPausedOsTime[BOTTLE_MAX]; // "bottle_stop_time", one entry for each bottle /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" @@ -296,16 +313,16 @@ typedef struct SaveContext { /* 0x3DBF */ u8 showTitleCard; // "name_display" /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" - /* 0x3DC8 */ OSTime timerOsTime; // "get_time" - /* 0x3DD0 */ u8 timerState[7]; // "event_fg" - /* 0x3DD7 */ u8 timersNoTimeLimit[7]; // "calc_flag" - /* 0x3DE0 */ OSTime eventTimer1Value[7]; // "event_ostime" - /* 0x3E18 */ OSTime eventTimer2Value[7]; // "event_sub" - /* 0x3E50 */ OSTime funcTimer1Value[7]; // "func_time" - /* 0x3E88 */ OSTime funcTimer2Value[7]; // "func_end_time" - /* 0x3EC0 */ OSTime funcTimer3Value[7]; // "func_stop_time" - /* 0x3EF8 */ s16 timerX[7]; // "event_xp" - /* 0x3F06 */ s16 timerY[7]; // "event_yp" + /* 0x3DC8 */ OSTime timerOsTime; // "get_time" + /* 0x3DD0 */ u8 timerState[TIMER_ID_MAX]; // "event_fg" + /* 0x3DD7 */ u8 timerDirection[TIMER_ID_MAX]; // "calc_flag" + /* 0x3DE0 */ u64 timerCurTime[TIMER_ID_MAX]; // "event_ostime" + /* 0x3E18 */ u64 timerCurSubTime[TIMER_ID_MAX]; // "event_sub" + /* 0x3E50 */ OSTime timerStartOsTime[TIMER_ID_MAX]; // "func_time" + /* 0x3E88 */ OSTime timerEndOsTime[TIMER_ID_MAX]; // "func_end_time" + /* 0x3EC0 */ OSTime timerPausedOsTime[TIMER_ID_MAX]; // "func_stop_time" + /* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp" + /* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp" /* 0x3F14 */ s16 unk_3F14; // "character_change" /* 0x3F16 */ u8 seqIndex; // "old_bgm" /* 0x3F17 */ u8 nightSeqIndex; // "old_env" diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c index da93f13fd..942435fa7 100644 --- a/src/boot_O2_g3/idle.c +++ b/src/boot_O2_g3/idle.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" u8 D_80096B20 = 1; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 4ff98b3a4..650bc1167 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -688,7 +688,7 @@ void Inventory_SetMapVisibility(s16 tingleIndex) { void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) { s16 i; - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.eventTimer1Value[timerId]; + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTime[timerId]; for (i = 0; i < 8; i++) { gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index e73dd7f6e..4b7c1d893 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "vt.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 2f17832bb..cd848a957 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,13 +1,15 @@ #include "global.h" +#include "z64snap.h" + #include "interface/parameter_static/parameter_static.h" #include "interface/do_action_static/do_action_static.h" #include "misc/story_static/story_static.h" + #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" -#include "z64snap.h" +#include "overlays/actors/ovl_En_Mm3/z_en_mm3.h" u8 func_800FE4A8(); s32 func_801234D4(PlayState* play); -// s16 func_801242DC(PlayState*); // s32 func_8008F2F8 (OoT) void func_801663C4(u8* arg0, u8* arg1, u32 arg2); extern Gfx D_0E0001C8[]; // Display List @@ -25,7 +27,7 @@ typedef struct { /* 0x03 */ u8 flags3; } RestrictionFlags; -Input D_801F5850[4]; +Input sPostmanTimerInput[4]; RestrictionFlags sRestrictionFlags[] = { { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, @@ -181,12 +183,12 @@ s16 sExtraItemBases[] = { ITEM_NUT, // ITEM_NUT_UPGRADE_30 }; -s16 D_801BF8DC = 0; -s16 D_801BF8E0 = 0; -s16 D_801BF8E4 = 0; +s16 sEnvTimerType = PLAYER_ENV_TIMER_NONE; +s16 sEnvTimerActive = false; +s16 sPostmanBunnyHoodState = 0; -OSTime D_801BF8E8 = 0; -OSTime D_801BF8F0 = 0; +OSTime sTimerPausedOsTime = 0; +OSTime sBottleTimerPausedOsTime = 0; OSTime D_801BF8F8[] = { 0, 0, 0, 0, 0, 0, 0, }; @@ -194,8 +196,8 @@ OSTime D_801BF930[] = { 0, 0, 0, 0, 0, 0, 0, }; -u8 D_801BF968 = false; -u8 D_801BF96C = false; +u8 sIsTimerPaused = false; +u8 sIsBottleTimerPaused = false; s16 sTimerId = TIMER_ID_NONE; s16 D_801BF974 = 0; @@ -580,105 +582,106 @@ void Interface_InitVertices(PlayState* play) { // clang-format on } -s32 D_801BFA84 = 0; -void Interface_TimerCallback(s32 arg0) { +s32 sPostmanTimerInputBtnAPressed = false; +void Interface_PostmanTimerCallback(s32 arg0) { s32 btnAPressed; - func_80175E68(&D_801F5850[0], 0); - btnAPressed = CHECK_BTN_ALL(D_801F5850[0].cur.button, BTN_A); - if ((btnAPressed != D_801BFA84) && btnAPressed) { + func_80175E68(&sPostmanTimerInput[0], 0); + btnAPressed = CHECK_BTN_ALL(sPostmanTimerInput[0].cur.button, BTN_A); + if ((btnAPressed != sPostmanTimerInputBtnAPressed) && btnAPressed) { gSaveContext.timerOsTime = osGetTime(); - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_15; + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; } - D_801BFA84 = btnAPressed; + sPostmanTimerInputBtnAPressed = btnAPressed; } -void func_8010E9F0(s16 timerId, s16 timeLimit) { +void Interface_StartTimer(s16 timerId, s16 seconds) { gSaveContext.timerX[timerId] = 115; gSaveContext.timerY[timerId] = 80; - D_801BF8E0 = 0; + sEnvTimerActive = false; - gSaveContext.eventTimer1Value[timerId] = timeLimit * 100; - gSaveContext.eventTimer2Value[timerId] = gSaveContext.eventTimer1Value[timerId]; + gSaveContext.timerCurTime[timerId] = SECONDS_TO_TIMER(seconds); + gSaveContext.timerCurSubTime[timerId] = gSaveContext.timerCurTime[timerId]; - if (gSaveContext.eventTimer1Value[timerId] != 0) { - gSaveContext.timersNoTimeLimit[timerId] = false; + if (gSaveContext.timerCurTime[timerId] != SECONDS_TO_TIMER(0)) { + gSaveContext.timerDirection[timerId] = TIMER_COUNT_DOWN; } else { - gSaveContext.timersNoTimeLimit[timerId] = true; + gSaveContext.timerDirection[timerId] = TIMER_COUNT_UP; } gSaveContext.timerState[timerId] = TIMER_STATE_1; } -void func_8010EA9C(s16 timeLimit, s16 arg1) { - gSaveContext.timerX[TIMER_ID_0] = 115; - gSaveContext.timerY[TIMER_ID_0] = 80; +void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { + gSaveContext.timerX[TIMER_ID_POSTMAN] = 115; + gSaveContext.timerY[TIMER_ID_POSTMAN] = 80; - D_801BF8E4 = arg1; + sPostmanBunnyHoodState = bunnyHoodState; - gSaveContext.eventTimer1Value[TIMER_ID_0] = timeLimit * 100; - gSaveContext.eventTimer2Value[TIMER_ID_0] = gSaveContext.eventTimer1Value[TIMER_ID_0]; + gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(seconds); + gSaveContext.timerCurSubTime[TIMER_ID_POSTMAN] = gSaveContext.timerCurTime[TIMER_ID_POSTMAN]; - if (gSaveContext.eventTimer1Value[TIMER_ID_0] != 0) { - gSaveContext.timersNoTimeLimit[TIMER_ID_0] = false; + if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] != SECONDS_TO_TIMER(0)) { + gSaveContext.timerDirection[TIMER_ID_POSTMAN] = TIMER_COUNT_DOWN; } else { - gSaveContext.timersNoTimeLimit[TIMER_ID_0] = true; + gSaveContext.timerDirection[TIMER_ID_POSTMAN] = TIMER_COUNT_UP; } - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_13; + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; - gSaveContext.funcTimer2Value[TIMER_ID_0] = 0; - gSaveContext.funcTimer3Value[TIMER_ID_0] = 0; + gSaveContext.timerEndOsTime[TIMER_ID_POSTMAN] = 0; + gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN] = 0; } -void func_8010EB50(s32 arg0) { - if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { +// Unused, goron race actually uses TIMER_ID_4 +void Interface_StartGoronRaceTimer(s32 arg0) { + if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { // Goron race started if (gSaveContext.eventInf[1] & 1) { - gSaveContext.eventTimer1Value[TIMER_ID_6] = 239; + gSaveContext.timerCurTime[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(2, 39); } else { - gSaveContext.eventTimer1Value[TIMER_ID_6] = 1; + gSaveContext.timerCurTime[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(0, 1); } } } -void func_8010EBA0(s16 timer, s16 timerId) { - gSaveContext.bottleStatus[timerId] = 1; - gSaveContext.bottleTimer3Value[timerId] = timer * 100; - gSaveContext.bottleTimer2Value[timerId] = gSaveContext.bottleTimer3Value[timerId]; - gSaveContext.bottleTimer1Value[timerId] = osGetTime(); - gSaveContext.bottleTimer4Value[timerId] = 0; - D_801BF8F0 = 0; +void Interface_StartBottleTimer(s16 seconds, s16 timerId) { + gSaveContext.bottleTimerState[timerId] = BOTTLE_TIMER_STATE_COUNTING; + gSaveContext.bottleTimerCurTime[timerId] = seconds * 100; + gSaveContext.bottleTimerCurSubTime[timerId] = gSaveContext.bottleTimerCurTime[timerId]; + gSaveContext.bottleTimerStartOsTime[timerId] = osGetTime(); + gSaveContext.bottleTimerPausedOsTime[timerId] = 0; + sBottleTimerPausedOsTime = 0; } -s32 func_8010EC54(s16 timerId) { +u32 Interface_GetCompressedTimerDigits(s16 timerId) { u64 time; s16 timerArr[6]; - time = gSaveContext.eventTimer1Value[timerId]; + time = gSaveContext.timerCurTime[timerId]; - // hours - timerArr[0] = time / 36000; - time -= timerArr[0] * 36000; + // 6 minutes + timerArr[0] = time / SECONDS_TO_TIMER(360); + time -= timerArr[0] * SECONDS_TO_TIMER(360); // minutes - timerArr[1] = time / 6000; - time -= timerArr[1] * 6000; + timerArr[1] = time / SECONDS_TO_TIMER(60); + time -= timerArr[1] * SECONDS_TO_TIMER(60); + + // 10 seconds + timerArr[2] = time / SECONDS_TO_TIMER(10); + time -= timerArr[2] * SECONDS_TO_TIMER(10); // seconds - timerArr[2] = time / 1000; - time -= timerArr[2] * 1000; + timerArr[3] = time / SECONDS_TO_TIMER(1); + time -= timerArr[3] * SECONDS_TO_TIMER(1); // 100 milliseconds - timerArr[3] = time / 100; - time -= timerArr[3] * 100; + timerArr[4] = time / SECONDS_TO_TIMER_PRECISE(0, 10); + time -= timerArr[4] * SECONDS_TO_TIMER_PRECISE(0, 10); // 10 milliseconds - timerArr[4] = time / 10; - time -= timerArr[4] * 10; - - // milliseconds timerArr[5] = time; return (timerArr[0] << 0x14) | (timerArr[1] << 0x10) | (timerArr[2] << 0xC) | (timerArr[3] << 8) | @@ -690,7 +693,7 @@ void Interface_NewDay(PlayState* play, s32 day) { s16 i = day - 1; // i is used to store dayMinusOne - if (i < 0 || i >= 3) { + if ((i < 0) || (i >= 3)) { i = 0; } @@ -1563,7 +1566,7 @@ void func_80110038(PlayState* play) { gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (gSaveContext.eventInf[3] & 0x10) { - if (player->stateFlags3 & 0x1000000) { + if (player->stateFlags3 & PLAYER_STATE3_1000000) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); @@ -1590,7 +1593,7 @@ void func_80110038(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); phi_t3 = false; } - } else if (player->stateFlags3 & 0x1000000) { + } else if (player->stateFlags3 & PLAYER_STATE3_1000000) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; @@ -1613,7 +1616,8 @@ void func_80110038(PlayState* play) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { - if ((func_801242DC(play) >= 2) && (func_801242DC(play) < 5)) { + if ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && + (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { if ((player->currentMask == PLAYER_MASK_BLAST) && (player->unk_B60 == 0)) { if (gSaveContext.unk_1015 == 0xFF) { @@ -1641,9 +1645,9 @@ void func_80110038(PlayState* play) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { - if (func_801242DC(play) == 2) { - if ((GET_CUR_FORM_BTN_ITEM(i) < ITEM_BOTTLE) || - (GET_CUR_FORM_BTN_ITEM(i) > ITEM_OBABA_DRINK)) { + if (Player_GetEnvTimerType(play) == PLAYER_ENV_TIMER_UNDERWATER_FLOOR) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { phi_t3 = true; } @@ -1676,7 +1680,7 @@ void func_80110038(PlayState* play) { } } } else { - if (player->stateFlags1 & 0x200000) { + if (player->stateFlags1 & PLAYER_STATE1_200000) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1695,7 +1699,7 @@ void func_80110038(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; phi_t3 = true; } - } else if (player->stateFlags1 & 0x2000) { + } else if (player->stateFlags1 & PLAYER_STATE1_2000) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; @@ -1945,9 +1949,9 @@ void func_80111CB4(PlayState* play) { sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = 0; - if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || + if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { - if ((player->stateFlags1 & 0x800000) && (player->currentMask == PLAYER_MASK_BLAST) && + if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && (gSaveContext.unk_1015 == 0xFF)) { sp28 = true; gSaveContext.unk_1015 = 0; @@ -2028,12 +2032,12 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); - } else if (player->stateFlags1 & 0x800000) { + } else if (player->stateFlags1 & PLAYER_STATE1_800000) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } } } else { - if (player->stateFlags1 & 0x800000) { + if (player->stateFlags1 & PLAYER_STATE1_800000) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } @@ -2085,7 +2089,7 @@ void func_80111CB4(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); - } else if (player->stateFlags1 & 0x800000) { + } else if (player->stateFlags1 & PLAYER_STATE1_800000) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } } @@ -2116,7 +2120,7 @@ void func_80111CB4(PlayState* play) { } } else if ((D_801BF884 >= 2) && (Message_GetState(&play->msgCtx) == 4) && Message_ShouldAdvance(play)) { play->unk_18845 = 0; - player->stateFlags1 &= ~0x200; + player->stateFlags1 &= ~PLAYER_STATE1_200; func_801477B4(play); if (play->msgCtx.choiceIndex != 0) { func_8019F230(); @@ -2637,7 +2641,7 @@ u8 Item_Give(PlayState* play, u8 item) { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.save.inventory.items[slot + i] == ITEM_BOTTLE) { if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(60, i); + Interface_StartBottleTimer(60, i); } if ((slot + i) == C_SLOT_EQUIP(0, EQUIP_SLOT_C_LEFT)) { @@ -2951,7 +2955,7 @@ void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn) { gSaveContext.buttonStatus[btn] = BTN_ENABLED; if (item == ITEM_HOT_SPRING_WATER) { - func_8010EBA0(60, GET_CUR_FORM_BTN_SLOT(btn) - SLOT_BOTTLE_1); + Interface_StartBottleTimer(60, GET_CUR_FORM_BTN_SLOT(btn) - SLOT_BOTTLE_1); } } @@ -3508,7 +3512,8 @@ void Magic_Update(PlayState* play) { !Play_InCsMode(play)) { if ((gSaveContext.save.playerData.magic == 0) || - ((func_801242DC(play) >= 2) && (func_801242DC(play) < 5)) || + ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && + (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) || ((BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || @@ -3762,7 +3767,7 @@ void Interface_DrawItemButtons(PlayState* play) { (gSaveContext.hudVisibility == HUD_VISIBILITY_OFF_ALT) || (gSaveContext.hudVisibility == HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_DIM_BTN) || (msgCtx->msgMode != 0)) { temp = 0; - } else if (player->stateFlags1 & 0x200000) { + } else if (player->stateFlags1 & PLAYER_STATE1_200000) { temp = 70; } else { temp = interfaceCtx->aAlpha; @@ -3900,7 +3905,7 @@ void func_80118084(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & 0x1000000)) { + if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & PLAYER_STATE3_1000000)) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, 0); gDPPipeSync(OVERLAY_DISP++); @@ -3918,7 +3923,7 @@ void func_80118084(PlayState* play) { if ((player->transformation == PLAYER_FORM_FIERCE_DEITY) || (player->transformation == PLAYER_FORM_HUMAN)) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, 0); - if ((player->stateFlags1 & 0x800000) || (gSaveContext.save.weekEventReg[8] & 1) || + if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || (play->unk_1887C >= 2)) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, @@ -5173,51 +5178,60 @@ void Interface_DrawMinigamePerfect(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void func_8011C808(PlayState* play) { +void Interface_StartMoonCrash(PlayState* play) { if (play->actorCtx.unk5 & 2) { Audio_QueueSeqCmd(0xE0000100); } gSaveContext.save.day = 4; gSaveContext.save.daysElapsed = 4; - gSaveContext.save.time = 0x400A; + gSaveContext.save.time = CLOCK_TIME(6, 0) + 10; play->nextEntrance = ENTRANCE(TERMINA_FIELD, 12); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_03; } -void func_8011C898(u64 timer, s16* timerArr) { +void Interface_GetTimerDigits(u64 timer, s16* timerArr) { u64 time = timer; - // hours - timerArr[0] = time / 36000; - time -= timerArr[0] * 36000; + // 6 minutes + timerArr[0] = time / SECONDS_TO_TIMER(360); + time -= timerArr[0] * SECONDS_TO_TIMER(360); // minutes - timerArr[1] = time / 6000; - time -= timerArr[1] * 6000; + timerArr[1] = time / SECONDS_TO_TIMER(60); + time -= timerArr[1] * SECONDS_TO_TIMER(60); + + // 10 seconds + timerArr[3] = time / SECONDS_TO_TIMER(10); + time -= timerArr[3] * SECONDS_TO_TIMER(10); // seconds - timerArr[3] = time / 1000; - time -= timerArr[3] * 1000; + timerArr[4] = time / SECONDS_TO_TIMER(1); + time -= timerArr[4] * SECONDS_TO_TIMER(1); // 100 milliseconds - timerArr[4] = time / 100; - time -= timerArr[4] * 100; + timerArr[6] = time / SECONDS_TO_TIMER_PRECISE(0, 10); + time -= timerArr[6] * SECONDS_TO_TIMER_PRECISE(0, 10); // 10 milliseconds - timerArr[6] = time / 10; - time -= timerArr[6] * 10; - - // milliseconds timerArr[7] = time; } +#define IS_POSTMAN_TIMER_DRAWN \ + (((sTimerId == TIMER_ID_POSTMAN) && (gSaveContext.timerState[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_COUNTING) && \ + (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_OFF) && \ + (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] < SECONDS_TO_TIMER(3))) || \ + (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON)) + +/** + * Update and draw the timers + */ void Interface_DrawTimers(PlayState* play) { - static s16 D_801BFCE4 = 0; - static s16 D_801BFCE8[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - static s16 D_801BFCF8 = 0x63; + static s16 sTimerStateTimer = 0; + static s16 sTimerDigits[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + static s16 sTimerBeepSfxSeconds = 99; static s16 D_801BFCFC[] = { // timer digit width 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, @@ -5229,74 +5243,78 @@ void Interface_DrawTimers(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; MessageContext* msgCtx = &play->msgCtx; Player* player = GET_PLAYER(play); - OSTime spD0; - OSTime spCC; + OSTime osTime; + OSTime timerOsTime; s16 j; s16 i; OPEN_DISPS(play->state.gfxCtx); + // Not satisfying any of these conditions will pause the timer if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && ((msgCtx->msgMode == 0) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) && (msgCtx->currentTextId <= 0x1BB6))) && - !(player->stateFlags1 & 0x200) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && + !(player->stateFlags1 & PLAYER_STATE1_200) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { - if (D_801BF968) { - spD0 = osGetTime(); + // Account for osTime when the timer is paused + if (sIsTimerPaused) { + osTime = osGetTime(); - for (j = 0; j < 7; j++) { + for (j = 0; j < TIMER_ID_MAX; j++) { if (gSaveContext.timerState[j] == TIMER_STATE_4) { - gSaveContext.funcTimer3Value[j] = gSaveContext.funcTimer3Value[j] + (spD0 - D_801BF8E8); + gSaveContext.timerPausedOsTime[j] = + gSaveContext.timerPausedOsTime[j] + (osTime - sTimerPausedOsTime); } } - - D_801BF968 = false; + sIsTimerPaused = false; } sTimerId = TIMER_ID_NONE; - for (i = 0; i < 7; i++) { + // Process all active timers + for (i = 0; i < TIMER_ID_MAX; i++) { if (gSaveContext.timerState[i] == TIMER_STATE_OFF) { continue; } sTimerId = i; - if (sTimerId == TIMER_ID_0) { - switch (gSaveContext.timerState[TIMER_ID_0]) { - case TIMER_STATE_13: - if (gSaveContext.timersNoTimeLimit[TIMER_ID_0]) { - gSaveContext.funcTimer1Value[TIMER_ID_0] = osGetTime(); + // Process the timer for the postman counting minigame + if (sTimerId == TIMER_ID_POSTMAN) { + switch (gSaveContext.timerState[TIMER_ID_POSTMAN]) { + case TIMER_STATE_POSTMAN_START: + if (gSaveContext.timerDirection[TIMER_ID_POSTMAN] != TIMER_COUNT_DOWN) { + gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN] = osGetTime(); } - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_14; - D_801BFA84 = 1; - func_80174F7C(Interface_TimerCallback, NULL); + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_COUNTING; + sPostmanTimerInputBtnAPressed = true; + func_80174F7C(Interface_PostmanTimerCallback, NULL); break; - case TIMER_STATE_15: - spCC = gSaveContext.timerOsTime; - gSaveContext.eventTimer1Value[TIMER_ID_0] = - (spCC - ((void)0, gSaveContext.funcTimer1Value[TIMER_ID_0]) - - ((void)0, gSaveContext.funcTimer3Value[TIMER_ID_0])) * + case TIMER_STATE_POSTMAN_STOP: + timerOsTime = gSaveContext.timerOsTime; + gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = + (timerOsTime - ((void)0, gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN]) - + ((void)0, gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN])) * 64 / 3000 / 10000; - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_16; - - func_80174F9C(Interface_TimerCallback, NULL); + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_END; + func_80174F9C(Interface_PostmanTimerCallback, NULL); break; - case TIMER_STATE_14: - case TIMER_STATE_16: + case TIMER_STATE_POSTMAN_COUNTING: + case TIMER_STATE_POSTMAN_END: break; } break; } + // process the remaining timers switch (gSaveContext.timerState[sTimerId]) { case TIMER_STATE_1: case TIMER_STATE_9: - D_801BFCE4 = 20; + sTimerStateTimer = 20; if (interfaceCtx->minigameState != MINIGAME_STATE_NONE) { gSaveContext.timerX[sTimerId] = 26; @@ -5318,9 +5336,9 @@ void Interface_DrawTimers(PlayState* play) { D_801BF930[sTimerId] = 0; } - gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = 0; - gSaveContext.funcTimer3Value[sTimerId] = 0; + gSaveContext.timerStartOsTime[sTimerId] = osGetTime(); + gSaveContext.timerEndOsTime[sTimerId] = 0; + gSaveContext.timerPausedOsTime[sTimerId] = 0; } } else { gSaveContext.timerState[sTimerId] = TIMER_STATE_2; @@ -5328,35 +5346,35 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_2: - D_801BFCE4--; - if (D_801BFCE4 == 0) { - D_801BFCE4 = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_3; + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; + gSaveContext.timerState[sTimerId] = TIMER_STATE_MOVING_TIMER; } break; - case TIMER_STATE_3: - if (sTimerId == TIMER_ID_3) { - j = ((((void)0, gSaveContext.timerX[sTimerId]) - XREG(81)) / D_801BFCE4); + case TIMER_STATE_MOVING_TIMER: + if (sTimerId == TIMER_ID_FINAL_HOURS) { + j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_FINAL_HOURS_TIMER_X) / sTimerStateTimer); gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; - j = ((((void)0, gSaveContext.timerY[sTimerId]) - XREG(80)) / D_801BFCE4); + j = ((((void)0, gSaveContext.timerY[sTimerId]) - R_FINAL_HOURS_TIMER_Y) / sTimerStateTimer); gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; } else { - j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / D_801BFCE4); + j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer); gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; j = (gSaveContext.save.playerData.healthCapacity > 0xA0) - ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / D_801BFCE4) - : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / D_801BFCE4); + ? ((((void)0, gSaveContext.timerY[sTimerId]) - 54) / sTimerStateTimer) + : ((((void)0, gSaveContext.timerY[sTimerId]) - 46) / sTimerStateTimer); gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; } - D_801BFCE4--; - if (D_801BFCE4 == 0) { - D_801BFCE4 = 20; + sTimerStateTimer--; + if (sTimerStateTimer == 0) { + sTimerStateTimer = 20; - if (sTimerId == TIMER_ID_3) { - gSaveContext.timerY[sTimerId] = XREG(80); + if (sTimerId == TIMER_ID_FINAL_HOURS) { + gSaveContext.timerY[sTimerId] = R_FINAL_HOURS_TIMER_Y; } else { gSaveContext.timerX[sTimerId] = 26; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { @@ -5367,15 +5385,15 @@ void Interface_DrawTimers(PlayState* play) { } gSaveContext.timerState[sTimerId] = TIMER_STATE_4; - gSaveContext.funcTimer1Value[sTimerId] = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = 0; - gSaveContext.funcTimer3Value[sTimerId] = 0; + gSaveContext.timerStartOsTime[sTimerId] = osGetTime(); + gSaveContext.timerEndOsTime[sTimerId] = 0; + gSaveContext.timerPausedOsTime[sTimerId] = 0; } // fallthrough case TIMER_STATE_4: - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_3)) { - gSaveContext.timerX[TIMER_ID_3] = XREG(81); - gSaveContext.timerY[TIMER_ID_3] = XREG(80); + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_FINAL_HOURS)) { + gSaveContext.timerX[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_X; + gSaveContext.timerY[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_Y; } break; @@ -5389,73 +5407,75 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_12: - spD0 = osGetTime(); + osTime = osGetTime(); - gSaveContext.funcTimer3Value[sTimerId] = - gSaveContext.funcTimer3Value[sTimerId] + spD0 - D_801BF8F8[sTimerId]; + gSaveContext.timerPausedOsTime[sTimerId] = + gSaveContext.timerPausedOsTime[sTimerId] + osTime - D_801BF8F8[sTimerId]; D_801BF930[sTimerId] = 0; gSaveContext.timerState[sTimerId] = TIMER_STATE_4; break; - case TIMER_STATE_8: - gSaveContext.eventTimer1Value[sTimerId] = (gSaveContext.save.playerData.health >> 1) * 100; - gSaveContext.timersNoTimeLimit[sTimerId] = false; - gSaveContext.eventTimer2Value[sTimerId] = gSaveContext.eventTimer1Value[sTimerId]; - D_801BFCE4 = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_3; + case TIMER_STATE_ENV_START: + gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1); + gSaveContext.timerDirection[sTimerId] = TIMER_COUNT_DOWN; + gSaveContext.timerCurSubTime[sTimerId] = gSaveContext.timerCurTime[sTimerId]; + sTimerStateTimer = 20; + gSaveContext.timerState[sTimerId] = TIMER_STATE_MOVING_TIMER; break; - case TIMER_STATE_5: - spD0 = osGetTime(); + case TIMER_STATE_STOP: + osTime = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - - ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * - 64 / 3000 / 10000; + gSaveContext.timerEndOsTime[sTimerId] = + (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId])) * + 64 / 3000 / 10000; gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; - if (sTimerId == TIMER_ID_3) { + if (sTimerId == TIMER_ID_FINAL_HOURS) { gSaveContext.save.day = 4; if ((play->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { play->nextEntrance = ENTRANCE(TERMINA_FIELD, 1); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; } else { - func_8011C808(play); + Interface_StartMoonCrash(play); } - } else if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { - gSaveContext.timerX[TIMER_ID_6] = 115; - gSaveContext.timerY[TIMER_ID_6] = 80; - if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; + } else if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_GORON_RACE_UNUSED] = 115; + gSaveContext.timerY[TIMER_ID_GORON_RACE_UNUSED] = 80; + if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; } } break; case TIMER_STATE_6: - spD0 = osGetTime(); + osTime = osGetTime(); - gSaveContext.funcTimer2Value[sTimerId] = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - - ((void)0, gSaveContext.funcTimer3Value[sTimerId])) * - 64 / 3000 / 10000; + gSaveContext.timerEndOsTime[sTimerId] = + (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId])) * + 64 / 3000 / 10000; if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (gSaveContext.funcTimer2Value[sTimerId] >= 12000) { - gSaveContext.funcTimer2Value[sTimerId] = 12000; - gSaveContext.eventTimer1Value[sTimerId] = 12000; + if (gSaveContext.timerEndOsTime[sTimerId] >= SECONDS_TO_TIMER(120)) { + gSaveContext.timerEndOsTime[sTimerId] = SECONDS_TO_TIMER(120); + gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(120); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && - (gSaveContext.funcTimer2Value[sTimerId] >= 12000)) { - gSaveContext.eventTimer1Value[sTimerId] = 12000; + (gSaveContext.timerEndOsTime[sTimerId] >= SECONDS_TO_TIMER(120))) { + gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(120); } gSaveContext.timerState[sTimerId] = TIMER_STATE_7; - if (gSaveContext.timerState[TIMER_ID_6] != TIMER_STATE_OFF) { - gSaveContext.timerX[TIMER_ID_6] = 115; - gSaveContext.timerY[TIMER_ID_6] = 80; - if (gSaveContext.timerState[TIMER_ID_6] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_6] = TIMER_STATE_3; + if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { + gSaveContext.timerX[TIMER_ID_GORON_RACE_UNUSED] = 115; + gSaveContext.timerY[TIMER_ID_GORON_RACE_UNUSED] = 80; + if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { + gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; } gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; } @@ -5465,100 +5485,106 @@ void Interface_DrawTimers(PlayState* play) { } if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF - if (!gSaveContext.timersNoTimeLimit[sTimerId]) { - D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; - D_801BFCE8[2] = D_801BFCE8[5] = 10; + if (gSaveContext.timerDirection[sTimerId] == TIMER_COUNT_DOWN) { + sTimerDigits[0] = sTimerDigits[1] = sTimerDigits[3] = sTimerDigits[4] = sTimerDigits[6] = 0; + + // used to index the counter colon + sTimerDigits[2] = sTimerDigits[5] = 10; + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_10) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_11) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_14)) { - spD0 = osGetTime(); - spD0 = (spD0 - ((void)0, gSaveContext.funcTimer3Value[sTimerId]) - D_801BF930[sTimerId] - - ((void)0, gSaveContext.funcTimer1Value[sTimerId])) * - 64 / 3000 / 10000; + (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { + osTime = osGetTime(); + osTime = (osTime - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId] - + ((void)0, gSaveContext.timerStartOsTime[sTimerId])) * + 64 / 3000 / 10000; + } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { + osTime = gSaveContext.timerEndOsTime[sTimerId]; } else { - if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { - spD0 = gSaveContext.funcTimer2Value[sTimerId]; - } else { - spD0 = 0; - } + osTime = 0; } - if (spD0 == 0) { - gSaveContext.eventTimer1Value[sTimerId] = gSaveContext.eventTimer2Value[sTimerId] - spD0; - } else if (gSaveContext.eventTimer2Value[sTimerId] >= spD0) { - if (gSaveContext.eventTimer2Value[sTimerId] <= spD0) { - gSaveContext.eventTimer1Value[sTimerId] = 0; + if (osTime == 0) { + gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerCurSubTime[sTimerId] - osTime; + } else if (gSaveContext.timerCurSubTime[sTimerId] >= osTime) { + if (gSaveContext.timerCurSubTime[sTimerId] <= osTime) { + gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); } else { - gSaveContext.eventTimer1Value[sTimerId] = gSaveContext.eventTimer2Value[sTimerId] - spD0; + gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerCurSubTime[sTimerId] - osTime; } } else { - gSaveContext.eventTimer1Value[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_5; - if (D_801BF8E0 != 0) { + gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[sTimerId] = TIMER_STATE_STOP; + if (sEnvTimerActive) { gSaveContext.save.playerData.health = 0; play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 2)); } - D_801BF8E0 = 0; + sEnvTimerActive = false; } - func_8011C898(((void)0, gSaveContext.eventTimer1Value[sTimerId]), D_801BFCE8); + Interface_GetTimerDigits(((void)0, gSaveContext.timerCurTime[sTimerId]), sTimerDigits); - if (gSaveContext.eventTimer1Value[sTimerId] > 6000) { - if ((D_801BFCF8 != D_801BFCE8[4]) && (D_801BFCE8[4] == 1)) { + // Use seconds to determine when to beep + if (gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(60)) { + if ((sTimerBeepSfxSeconds != sTimerDigits[4]) && (sTimerDigits[4] == 1)) { play_sound(NA_SE_SY_MESSAGE_WOMAN); - D_801BFCF8 = D_801BFCE8[4]; + sTimerBeepSfxSeconds = sTimerDigits[4]; } - } else if (gSaveContext.eventTimer1Value[sTimerId] > 1000) { - if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] % 2) != 0)) { + } else if (gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(10)) { + if ((sTimerBeepSfxSeconds != sTimerDigits[4]) && ((sTimerDigits[4] % 2) != 0)) { play_sound(NA_SE_SY_WARNING_COUNT_N); - D_801BFCF8 = D_801BFCE8[4]; + sTimerBeepSfxSeconds = sTimerDigits[4]; } - } else if (D_801BFCF8 != D_801BFCE8[4]) { + } else if (sTimerBeepSfxSeconds != sTimerDigits[4]) { play_sound(NA_SE_SY_WARNING_COUNT_E); - D_801BFCF8 = D_801BFCE8[4]; + sTimerBeepSfxSeconds = sTimerDigits[4]; } - } else { - D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0; - D_801BFCE8[2] = D_801BFCE8[5] = 10; + } else { // TIMER_COUNT_UP + sTimerDigits[0] = sTimerDigits[1] = sTimerDigits[3] = sTimerDigits[4] = sTimerDigits[6] = 0; + + // used to index the counter colon + sTimerDigits[2] = sTimerDigits[5] = 10; if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_14)) { - spD0 = osGetTime(); - spD0 = (spD0 - ((void)0, gSaveContext.funcTimer1Value[sTimerId]) - - ((void)0, gSaveContext.funcTimer3Value[sTimerId]) - D_801BF930[sTimerId]) * - 64 / 3000 / 10000; + (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { + osTime = osGetTime(); + osTime = (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId]) * + 64 / 3000 / 10000; } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { - spD0 = gSaveContext.funcTimer2Value[sTimerId]; - } else if (sTimerId == TIMER_ID_0) { - spD0 = gSaveContext.eventTimer1Value[sTimerId]; + osTime = gSaveContext.timerEndOsTime[sTimerId]; + } else if (sTimerId == TIMER_ID_POSTMAN) { + osTime = gSaveContext.timerCurTime[sTimerId]; } else { - spD0 = 0; + osTime = SECONDS_TO_TIMER(0); } if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (spD0 >= 12000) { - spD0 = 12000; + if (osTime >= SECONDS_TO_TIMER(120)) { + osTime = SECONDS_TO_TIMER(120); } - } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && (spD0 >= 12000)) { - spD0 = 12000; + } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && + (osTime >= SECONDS_TO_TIMER(120))) { + osTime = SECONDS_TO_TIMER(120); } - gSaveContext.eventTimer1Value[sTimerId] = spD0; + gSaveContext.timerCurTime[sTimerId] = osTime; - func_8011C898(spD0, D_801BFCE8); + Interface_GetTimerDigits(osTime, sTimerDigits); + // Use seconds to determine when to beep if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if ((gSaveContext.eventTimer1Value[sTimerId] > 11000) && (D_801BFCF8 != D_801BFCE8[4])) { + if ((gSaveContext.timerCurTime[sTimerId] > 11000) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); - D_801BFCF8 = D_801BFCE8[4]; + sTimerBeepSfxSeconds = sTimerDigits[4]; } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if ((((void)0, gSaveContext.eventTimer1Value[sTimerId]) > - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) && - (D_801BFCF8 != D_801BFCE8[4])) { + if ((((void)0, gSaveContext.timerCurTime[sTimerId]) > + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) && + (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); - D_801BFCF8 = D_801BFCE8[4]; + sTimerBeepSfxSeconds = sTimerDigits[4]; } } } @@ -5573,12 +5599,11 @@ void Interface_DrawTimers(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - if (((sTimerId == TIMER_ID_0) && (gSaveContext.timerState[TIMER_ID_0] == TIMER_STATE_14) && - (D_801BF8E4 == 0) && (gSaveContext.eventTimer1Value[TIMER_ID_0] < 300)) || - (D_801BF8E4 == 2) || (gSaveContext.timerState[sTimerId] <= TIMER_STATE_12)) { - if (gSaveContext.timerState[sTimerId]) { // TODO: No != 0 + // Set the timer color + if (IS_POSTMAN_TIMER_DRAWN || (gSaveContext.timerState[sTimerId] <= TIMER_STATE_12)) { + if (gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF if (sTimerId == TIMER_ID_2) { - if ((gSaveContext.eventTimer1Value[sTimerId] == 0) || + if ((gSaveContext.timerCurTime[sTimerId] == SECONDS_TO_TIMER(0)) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_4)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { @@ -5586,23 +5611,24 @@ void Interface_DrawTimers(PlayState* play) { } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (gSaveContext.eventTimer1Value[sTimerId] >= 11000) { + if (gSaveContext.timerCurTime[sTimerId] >= SECONDS_TO_TIMER(110)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if (((void)0, gSaveContext.eventTimer1Value[sTimerId]) >= + if (((void)0, gSaveContext.timerCurTime[sTimerId]) >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (((void)0, gSaveContext.eventTimer1Value[sTimerId]) >= - (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - 900)) { + } else if (((void)0, gSaveContext.timerCurTime[sTimerId]) >= + (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - + SECONDS_TO_TIMER(9))) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.eventTimer1Value[sTimerId] < 1000) && - !gSaveContext.timersNoTimeLimit[sTimerId] && + } else if ((gSaveContext.timerCurTime[sTimerId] < SECONDS_TO_TIMER(10)) && + (gSaveContext.timerDirection[sTimerId] == TIMER_COUNT_DOWN) && (gSaveContext.timerState[sTimerId] != TIMER_STATE_11)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { @@ -5610,26 +5636,30 @@ void Interface_DrawTimers(PlayState* play) { } } - if (sTimerId == TIMER_ID_0) { - if (D_801BF8E4 == 2) { + // Draw the timer + if (sTimerId == TIMER_ID_POSTMAN) { + if (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON) { + // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[6] (100s of milliseconds) for (j = 0; j < 4; j++) { OVERLAY_DISP = Gfx_TextureI8( - OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } else { + // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 5; j++) { OVERLAY_DISP = Gfx_TextureI8( - OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j + 3])), 8, 0x10, + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } } } else { + // draw sTimerDigits[3] (6s of minutes) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 8; j++) { OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[j])), 8, 0x10, + Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); } @@ -5637,21 +5667,22 @@ void Interface_DrawTimers(PlayState* play) { } } - } else if (!D_801BF968) { - D_801BF8E8 = osGetTime(); - D_801BF968 = true; + } else if (!sIsTimerPaused) { + sTimerPausedOsTime = osGetTime(); + sIsTimerPaused = true; } CLOSE_DISPS(play->state.gfxCtx); } -void Interface_UpdateTimers(PlayState* play) { +void Interface_UpdateBottleTimers(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; s16 i; s16 j; - u64 var3; + u64 osTime; s32 pad[2]; + // Not satisfying any of these conditions will pause the bottle timer if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) && ((msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || @@ -5659,50 +5690,51 @@ void Interface_UpdateTimers(PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF) && !Play_InCsMode(play)) { - if (D_801BF96C) { - var3 = osGetTime(); + // Account for osTime when the timer is paused + if (sIsBottleTimerPaused) { + osTime = osGetTime(); for (j = BOTTLE_FIRST; j < BOTTLE_MAX; j++) { - if (gSaveContext.bottleStatus[j] == 1) { - gSaveContext.bottleTimer4Value[j] += var3 - D_801BF8F0; + if (gSaveContext.bottleTimerState[j] == BOTTLE_TIMER_STATE_COUNTING) { + gSaveContext.bottleTimerPausedOsTime[j] += osTime - sBottleTimerPausedOsTime; } } - D_801BF96C = false; + sIsBottleTimerPaused = false; } sTimerId = TIMER_ID_NONE; for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.bottleStatus[i] == 1) { - var3 = osGetTime(); - var3 = (((var3 - ((void)0, gSaveContext.bottleTimer4Value[i]) - - ((void)0, gSaveContext.bottleTimer1Value[i])) / - 10000) * - 64) / - 3000; - if (var3 == 0) { - gSaveContext.bottleTimer3Value[i] = gSaveContext.bottleTimer2Value[i] - var3; - } else if (gSaveContext.bottleTimer2Value[i] >= var3) { - if (gSaveContext.bottleTimer2Value[i] <= var3) { - gSaveContext.bottleTimer3Value[i] = 0; + if (gSaveContext.bottleTimerState[i] == BOTTLE_TIMER_STATE_COUNTING) { + osTime = osGetTime(); + osTime = (((osTime - ((void)0, gSaveContext.bottleTimerPausedOsTime[i]) - + ((void)0, gSaveContext.bottleTimerStartOsTime[i])) / + 10000) * + 64) / + 3000; + if (osTime == 0) { + gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurSubTime[i] - osTime; + } else if (gSaveContext.bottleTimerCurSubTime[i] >= osTime) { + if (gSaveContext.bottleTimerCurSubTime[i] <= osTime) { + gSaveContext.bottleTimerCurTime[i] = 0; } else { - gSaveContext.bottleTimer3Value[i] = gSaveContext.bottleTimer2Value[i] - var3; + gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurSubTime[i] - osTime; } } else { - gSaveContext.bottleTimer3Value[i] = 0; + gSaveContext.bottleTimerCurTime[i] = 0; if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(play, 0xFA, NULL); } - gSaveContext.bottleStatus[i] = 0; + gSaveContext.bottleTimerState[i] = BOTTLE_TIMER_STATE_OFF; } } } - } else if (!D_801BF96C) { - D_801BF8F0 = osGetTime(); - D_801BF96C = true; + } else if (!sIsBottleTimerPaused) { + sBottleTimerPausedOsTime = osGetTime(); + sIsBottleTimerPaused = true; } } @@ -6206,7 +6238,7 @@ void Interface_Draw(PlayState* play) { D_801BF884 = 3; Message_StartTextbox(play, 0xF8, NULL); Interface_SetHudVisibility(HUD_VISIBILITY_OFF); - player->stateFlags1 |= 0x200; + player->stateFlags1 |= PLAYER_STATE1_200; } gDPPipeSync(OVERLAY_DISP++); @@ -6419,15 +6451,16 @@ void Interface_Update(PlayState* play) { } LifeMeter_UpdateSizeAndBeep(play); - D_801BF8DC = func_801242DC(play); + sEnvTimerType = Player_GetEnvTimerType(play); - if (D_801BF8DC == 1) { + if (sEnvTimerType == PLAYER_ENV_TIMER_HOTROOM) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_GORON) { - D_801BF8DC = 0; + sEnvTimerType = PLAYER_ENV_TIMER_NONE; } - } else if ((func_801242DC(play) >= 2) && (func_801242DC(play) < 5)) { + } else if ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && + (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_ZORA) { - D_801BF8DC = 0; + sEnvTimerType = PLAYER_ENV_TIMER_NONE; } } @@ -6581,7 +6614,7 @@ void Interface_Update(PlayState* play) { } // Update Magic - if (!(player->stateFlags1 & 0x200)) { + if (!(player->stateFlags1 & PLAYER_STATE1_200)) { if (XREG(4) == 1) { // Upgrade to double magic if (!gSaveContext.save.playerData.isMagicAcquired) { @@ -6615,24 +6648,24 @@ void Interface_Update(PlayState* play) { Magic_UpdateAddRequest(); } - if (gSaveContext.timerState[TIMER_ID_5] == TIMER_STATE_OFF) { - if ((D_801BF8DC == 1) || (D_801BF8DC == 4)) { + // Update Env Timer + if (gSaveContext.timerState[TIMER_ID_ENV] == TIMER_STATE_OFF) { + if ((sEnvTimerType == PLAYER_ENV_TIMER_HOTROOM) || (sEnvTimerType == PLAYER_ENV_TIMER_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { if ((gSaveContext.save.playerData.health >> 1) != 0) { - gSaveContext.timerState[TIMER_ID_5] = TIMER_STATE_8; - gSaveContext.timerX[TIMER_ID_5] = 115; - gSaveContext.timerY[TIMER_ID_5] = 80; - D_801BF8E0 = 1; - gSaveContext.timersNoTimeLimit[TIMER_ID_5] = false; + gSaveContext.timerState[TIMER_ID_ENV] = TIMER_STATE_ENV_START; + gSaveContext.timerX[TIMER_ID_ENV] = 115; + gSaveContext.timerY[TIMER_ID_ENV] = 80; + sEnvTimerActive = true; + gSaveContext.timerDirection[TIMER_ID_ENV] = TIMER_COUNT_DOWN; } } } } - } else { - if (((D_801BF8DC == 0) || (D_801BF8DC == 3)) && (gSaveContext.timerState[TIMER_ID_5] <= TIMER_STATE_4)) { - gSaveContext.timerState[TIMER_ID_5] = TIMER_STATE_OFF; - } + } else if (((sEnvTimerType == PLAYER_ENV_TIMER_NONE) || (sEnvTimerType == PLAYER_ENV_TIMER_SWIMMING)) && + (gSaveContext.timerState[TIMER_ID_ENV] <= TIMER_STATE_4)) { + gSaveContext.timerState[TIMER_ID_ENV] = TIMER_STATE_OFF; } // Update Minigame @@ -6706,7 +6739,7 @@ void Interface_Update(PlayState* play) { } } - Interface_UpdateTimers(play); + Interface_UpdateBottleTimers(play); // Update Grandma's Story if (interfaceCtx->unk_31A != 0) { @@ -6745,7 +6778,7 @@ void Interface_Update(PlayState* play) { void Interface_Destroy(void) { Map_Destroy(); - func_80174F9C(Interface_TimerCallback, NULL); + func_80174F9C(Interface_PostmanTimerCallback, NULL); } void Interface_Init(PlayState* play) { @@ -6797,7 +6830,7 @@ void Interface_Init(PlayState* play) { } if (((gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4) || - (gSaveContext.timerState[TIMER_ID_6] == TIMER_STATE_4)) && + (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] == TIMER_STATE_4)) && ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && (gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4)) { gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_1; @@ -6819,13 +6852,13 @@ void Interface_Init(PlayState* play) { } gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_OFF; - gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; - gSaveContext.eventTimer2Value[TIMER_ID_1] = 0; - gSaveContext.funcTimer1Value[TIMER_ID_1] = 0; - gSaveContext.funcTimer2Value[TIMER_ID_1] = 0; - gSaveContext.funcTimer3Value[TIMER_ID_1] = 0; + gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerCurSubTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTime[TIMER_ID_1] = 0; + gSaveContext.timerEndOsTime[TIMER_ID_1] = 0; + gSaveContext.timerPausedOsTime[TIMER_ID_1] = 0; - for (i = 0; i < 7; i++) { + for (i = 0; i < TIMER_ID_MAX; i++) { if (gSaveContext.timerState[i] == TIMER_STATE_7) { gSaveContext.timerState[i] = TIMER_STATE_OFF; } diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 14f0d2fd6..24c7ce5d6 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -860,39 +860,40 @@ s32 func_80124278(Actor* actor, s32 actionParam) { } s32 func_801242B4(Player* player) { - return (player->stateFlags1 & PLAYER_STATE1_8000000) && player->currentBoots < PLAYER_BOOTS_ZORA_UNDERWATER; + return (player->stateFlags1 & PLAYER_STATE1_8000000) && (player->currentBoots < PLAYER_BOOTS_ZORA_UNDERWATER); } -s32 func_801242DC(PlayState* play) { +s32 Player_GetEnvTimerType(PlayState* play) { Player* player = GET_PLAYER(play); TextTriggerEntry* triggerEntry; - s32 envIndex; + s32 envTimerType; if (play->roomCtx.currRoom.unk2 == 3) { // Room is hot - envIndex = 0; + envTimerType = PLAYER_ENV_TIMER_HOTROOM - 1; } else if ((player->transformation != PLAYER_FORM_ZORA) && (player->unk_AD8 > 80)) { - envIndex = 3; + envTimerType = PLAYER_ENV_TIMER_UNDERWATER_FREE - 1; } else if (player->stateFlags1 & PLAYER_STATE1_8000000) { if ((player->transformation == PLAYER_FORM_ZORA) && (player->currentBoots >= PLAYER_BOOTS_ZORA_UNDERWATER) && (player->actor.bgCheckFlags & 1)) { - envIndex = 1; + envTimerType = PLAYER_ENV_TIMER_UNDERWATER_FLOOR - 1; } else { - envIndex = 2; + envTimerType = PLAYER_ENV_TIMER_SWIMMING - 1; } } else { - return 0; + return PLAYER_ENV_TIMER_NONE; } // Trigger general textboxes under certain conditions, like "It's so hot in here!". Unused in MM - triggerEntry = &sEnvironmentTextTriggers[envIndex]; + triggerEntry = &sEnvironmentTextTriggers[envTimerType]; if (!Player_InCsMode(play)) { - if ((triggerEntry->flag) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) && (envIndex == 0)) { + if ((triggerEntry->flag) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) && + (envTimerType == (PLAYER_ENV_TIMER_HOTROOM - 1))) { Message_StartTextbox(play, triggerEntry->textId, NULL); gSaveContext.textTriggerFlags |= triggerEntry->flag; } } - return envIndex + 1; + return envTimerType + 1; } #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80124420.s") diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 787a654fe..09c20d507 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -219,13 +219,13 @@ void Sram_ActivateOwl(u8 owlId) { void Sram_ClearHighscores(void) { gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF) | 0x130000; gSaveContext.save.unk_EE8 = (gSaveContext.save.unk_EE8 & 0xFFFF0000) | 0xA; - gSaveContext.save.horseBackBalloonHighScore = 6000; // 60 seconds + gSaveContext.save.horseBackBalloonHighScore = SECONDS_TO_TIMER(60); SET_TOWN_SHOOTING_GALLERY_HIGH_SCORE(39); SET_SWAMP_SHOOTING_GALLERY_HIGH_SCORE(10); - gSaveContext.save.dekuPlaygroundHighScores[0] = 7500; // 75 seconds - gSaveContext.save.dekuPlaygroundHighScores[1] = 7500; // 75 seconds - gSaveContext.save.dekuPlaygroundHighScores[2] = 7600; // 76 seconds + gSaveContext.save.dekuPlaygroundHighScores[0] = SECONDS_TO_TIMER(75); + gSaveContext.save.dekuPlaygroundHighScores[1] = SECONDS_TO_TIMER(75); + gSaveContext.save.dekuPlaygroundHighScores[2] = SECONDS_TO_TIMER(76); } /** @@ -896,11 +896,11 @@ void func_80144A94(SramContext* sramCtx) { for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.eventTimer1Value[i] = 0; - gSaveContext.eventTimer2Value[i] = 0; - gSaveContext.funcTimer1Value[i] = 0; - gSaveContext.funcTimer2Value[i] = 0; - gSaveContext.funcTimer3Value[i] = 0; + gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTime[i] = 0; + gSaveContext.timerEndOsTime[i] = 0; + gSaveContext.timerPausedOsTime[i] = 0; } D_801BDAA0 = 1; @@ -971,11 +971,11 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.eventTimer1Value[i] = 0; - gSaveContext.eventTimer2Value[i] = 0; - gSaveContext.funcTimer1Value[i] = 0; - gSaveContext.funcTimer2Value[i] = 0; - gSaveContext.funcTimer3Value[i] = 0; + gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTime[i] = 0; + gSaveContext.timerEndOsTime[i] = 0; + gSaveContext.timerPausedOsTime[i] = 0; } if (gSaveContext.save.isFirstCycle) { diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index 75378de78..43cce6afa 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -53,6 +53,7 @@ * - Seaweed */ +#include "prevent_bss_reordering.h" #include "z_boss_03.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h" diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 256e0f33a..f2d114586 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1045,11 +1045,11 @@ void DmStk_Init(Actor* thisx, PlayState* play) { if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_ROOFTOP, 0)) { if (gSaveContext.sceneSetupIndex == 0) { - if (gSaveContext.timerState[TIMER_ID_3] == TIMER_STATE_OFF) { + if (gSaveContext.timerState[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { // Starts a 5 minute (300 second) timer until the moon falls. - func_8010E9F0(TIMER_ID_3, 300); - XREG(80) = 200; - XREG(81) = 115; + Interface_StartTimer(TIMER_ID_FINAL_HOURS, 300); + R_FINAL_HOURS_TIMER_Y = 200; + R_FINAL_HOURS_TIMER_X = 115; } if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { @@ -1062,12 +1062,12 @@ void DmStk_Init(Actor* thisx, PlayState* play) { } else if (gSaveContext.sceneSetupIndex == 3) { this->animIndex = SK_ANIM_FLOATING_ARMS_CROSSED; - if (gSaveContext.timerState[TIMER_ID_3] == TIMER_STATE_OFF) { + if (gSaveContext.timerState[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { // This code is called when the Giants fail to stop the moon. // Starts a 1 minute (60 second) timer until the moon falls. - func_8010E9F0(TIMER_ID_3, 60); - XREG(80) = 200; - XREG(81) = 115; + Interface_StartTimer(TIMER_ID_FINAL_HOURS, 60); + R_FINAL_HOURS_TIMER_Y = 200; + R_FINAL_HOURS_TIMER_X = 115; } this->actor.world.pos.y = 120.0f; diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index 3c872c0e8..69f5082ae 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -216,7 +216,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 14, &this->unk_32C); thisx->room = -1; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); this->unk_3B0 |= 1; this->actionFunc = func_80A72438; @@ -817,7 +817,7 @@ void func_80A73244(EnDno* this, PlayState* play) { this->unk_328 = 2; this->actor.speedXZ = 0.0f; Flags_UnsetSwitch(play, ENDNO_GET_3F80(&this->actor)); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; this->unk_44E = 0; this->actionFunc = func_80A732C8; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 1b5f8e085..92126dfdf 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -401,7 +401,7 @@ void func_80962340(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x287E, &this->actor); this->unk_552 = 0x287E; } - } else if ((gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) && (this->unk_552 != 0x2888)) { + } else if ((gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) && (this->unk_552 != 0x2888)) { Message_StartTextbox(play, 0x2886, &this->actor); this->unk_552 = 0x2886; } else { @@ -644,7 +644,7 @@ void func_80962A10(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; - func_8010E9F0(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); } else { @@ -682,7 +682,7 @@ void func_80962BCC(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - func_8010E9F0(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -713,7 +713,7 @@ void func_80962D60(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - func_8010E9F0(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_4, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -761,11 +761,11 @@ void func_80962F4C(EnFu* this, PlayState* play) { break; } - if (gSaveContext.eventTimer1Value[TIMER_ID_4] < 2000) { + if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(20)) { s16 val = D_80964B00[this->unk_542] + 200; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); - } else if (gSaveContext.eventTimer1Value[TIMER_ID_4] < 4000) { + } else if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(40)) { s16 val = D_80964B00[this->unk_542] + 100; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); @@ -777,12 +777,12 @@ void func_80962F4C(EnFu* this, PlayState* play) { if ((!DynaPolyActor_IsInRidingRotatingState((DynaPolyActor*)this->actor.child) && (player->actor.bgCheckFlags & 1)) || - (gSaveContext.eventTimer1Value[TIMER_ID_4] < 1) || (this->unk_548 == this->unk_54C)) { + (gSaveContext.timerCurTime[TIMER_ID_4] <= SECONDS_TO_TIMER(0)) || (this->unk_548 == this->unk_54C)) { player->stateFlags3 &= ~0x400000; func_80961E88(play); player->stateFlags1 |= 0x20; if (this->unk_548 < this->unk_54C) { - if (gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) { + if (gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x2885, &this->actor); this->unk_552 = 0x2885; } else { @@ -790,15 +790,15 @@ void func_80962F4C(EnFu* this, PlayState* play) { this->unk_552 = 0x2888; } func_801A2C20(); - gSaveContext.eventTimer1Value[TIMER_ID_4] = 0; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerCurTime[TIMER_ID_4] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; this->unk_548 = 0; func_809632D0(this); } else { this->unk_548 = 0; func_801A2C20(); - gSaveContext.eventTimer1Value[TIMER_ID_4] = 0; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerCurTime[TIMER_ID_4] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; func_801A3098(NA_BGM_GET_ITEM | 0x900); Interface_SetPerfectMinigame(play, 1); this->unk_54A = 3; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index a945011a8..8c9956ca9 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -459,7 +459,7 @@ void func_80B10240(EnGb2* this, PlayState* play) { D_80B119B0[this->unk_280].unk_04.y, D_80B119B0[this->unk_280].unk_04.z, 0, 0, 0, this->unk_27E); if (this->unk_280 == 0) { - func_8010E9F0(TIMER_ID_1, 180); + Interface_StartTimer(TIMER_ID_1, 180); } this->actionFunc = func_80B10344; } else { @@ -487,7 +487,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (this->unk_26C & 0x200) { if (this->unk_280 == 3) { this->unk_26C &= ~0x200; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; func_800FE498(); gSaveContext.eventInf[4] |= 0x40; func_80B0FE7C(play); @@ -506,7 +506,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { } if (gSaveContext.save.playerData.health < 49) { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x20; @@ -519,8 +519,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { } func_80B0FE7C(play); - } else if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + } else if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x10; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index de5a68613..129595b28 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -121,7 +121,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { return false; } - func_8010E9F0(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_4, 0); play->interfaceCtx.minigameState = 1; this->horse1 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1149.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, @@ -247,7 +247,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { return true; } - if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 0x4650) { + if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(180)) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 206e9e5e5..9eef37c08 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -155,7 +155,7 @@ void func_80C13BB8(EnJgameTsn* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (this->actor.flags & ACTOR_FLAG_10000) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.eventTimer1Value[TIMER_ID_4] > 0) { + if (gSaveContext.timerCurTime[TIMER_ID_4] > SECONDS_TO_TIMER(0)) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1); Message_StartTextbox(play, 0x10A2, &this->actor); this->unk_300 = 0x10A2; @@ -287,7 +287,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { play->interfaceCtx.minigameState = 1; Interface_InitMinigame(play); gSaveContext.save.weekEventReg[90] |= 0x20; - func_8010E9F0(TIMER_ID_4, 120); + Interface_StartTimer(TIMER_ID_4, 120); this->actionFunc = func_80C1418C; } @@ -352,7 +352,7 @@ void func_80C14230(EnJgameTsn* this, PlayState* play) { func_80C14030(this); } - if (gSaveContext.eventTimer1Value[TIMER_ID_4] == 0) { + if (gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x10A1, &this->actor); this->unk_300 = 0x10A1; player->stateFlags1 |= 0x20; @@ -479,7 +479,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { case 0x10A1: func_801477B4(play); gSaveContext.minigameState = 3; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; gSaveContext.save.weekEventReg[90] &= (u8)~0x20; func_80C144E4(this); break; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 17fd7d32d..abb37120b 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -674,7 +674,7 @@ void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { // "You're feeling confident" Message_StartTextbox(play, 0x336E, &this->actor); this->actionFunc = EnMa4_HorsebackGameTalking; - } else if ((gSaveContext.eventTimer1Value[TIMER_ID_4] < 115 * 100)) { // timer < 115 seconds + } else if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(115)) { func_800B8614(&this->actor, play, 100.0f); } } @@ -689,7 +689,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); play->interfaceCtx.minigameState = 1; - func_8010E9F0(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_4, 0); gSaveContext.save.weekEventReg[8] |= 1; Interface_InitMinigame(play); player->stateFlags1 |= 0x20; @@ -717,8 +717,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { play->interfaceCtx.unk_25C = 1; } - if ((gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) // timer >= 2 minutes - || (this->poppedBalloonCounter == 10)) { + if ((gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) || (this->poppedBalloonCounter == 10)) { gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; EnMa4_SetupHorsebackGameEnd(this, play); D_80AC0258 = 0; @@ -898,13 +897,13 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { gSaveContext.save.weekEventReg[21] |= 0x40; } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { + if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { // "Too bad Grasshopper" EnMa4_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x336D, &this->actor); this->textId = 0x336D; } else { - time = gSaveContext.eventTimer1Value[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // [Score] New record! gSaveContext.save.horseBackBalloonHighScore = time; @@ -943,12 +942,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3354, &this->actor); this->textId = 0x3354; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { + if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.eventTimer1Value[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); @@ -970,12 +969,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3358, &this->actor); this->textId = 0x3358; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.eventTimer1Value[TIMER_ID_4] >= 2 * 60 * 100) { + if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.eventTimer1Value[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_4]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // New record gSaveContext.save.horseBackBalloonHighScore = time; diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 994adef6f..4a89bbb00 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -249,14 +249,14 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { break; case 0x2791: - if (gSaveContext.eventTimer1Value[TIMER_ID_0] == 1000) { + if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { Message_StartTextbox(play, 0x2792, &this->actor); this->unk_2B4 = 0x2792; - } else if ((gSaveContext.eventTimer1Value[TIMER_ID_0] >= 1500)) { + } else if ((gSaveContext.timerCurTime[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER(15))) { Message_StartTextbox(play, 0x2797, &this->actor); this->unk_2B4 = 0x2797; - } else if ((gSaveContext.eventTimer1Value[TIMER_ID_0] <= 1050) && - (gSaveContext.eventTimer1Value[TIMER_ID_0] >= 950)) { + } else if ((gSaveContext.timerCurTime[TIMER_ID_POSTMAN] <= SECONDS_TO_TIMER_PRECISE(10, 50)) && + (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER_PRECISE(9, 50))) { Message_StartTextbox(play, 0x2795, &this->actor); this->unk_2B4 = 0x2795; } else { @@ -302,7 +302,7 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { } else if ((this->unk_2AC > 0) && (this->unk_2B4 == 0x2791)) { this->unk_2AC--; if (this->unk_2AC == 0) { - if (gSaveContext.eventTimer1Value[TIMER_ID_0] == 1000) { + if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { func_801A3098(0x922); } else { play_sound(NA_SE_SY_ERROR); @@ -343,9 +343,9 @@ void func_80A6F9DC(EnMm3* this, PlayState* play) { player->stateFlags1 |= 0x20; if (Player_GetMask(play) == PLAYER_MASK_BUNNY) { - func_8010EA9C(0, 2); + Interface_StartPostmanTimer(0, POSTMAN_MINIGAME_BUNNY_HOOD_ON); } else { - func_8010EA9C(0, 0); + Interface_StartPostmanTimer(0, POSTMAN_MINIGAME_BUNNY_HOOD_OFF); } func_801477B4(play); play_sound(NA_SE_SY_START_SHOT); @@ -382,17 +382,19 @@ void func_80A6FBA0(EnMm3* this) { void func_80A6FBFC(EnMm3* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (gSaveContext.timerState[TIMER_ID_0] == TIMER_STATE_16) { + if (gSaveContext.timerState[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_END) { player->stateFlags1 &= ~0x20; this->actor.flags |= ACTOR_FLAG_10000; - if (gSaveContext.eventTimer1Value[TIMER_ID_0] > 1500) { - gSaveContext.eventTimer1Value[TIMER_ID_0] = 1500; - } else if ((((void)0, gSaveContext.eventTimer1Value[TIMER_ID_0]) >= (OSTime)(995 - XREG(16))) && - (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_0]) <= (OSTime)(1005 + XREG(17)))) { - gSaveContext.eventTimer1Value[TIMER_ID_0] = 1000; + if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { + gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(15); + } else if ((((void)0, gSaveContext.timerCurTime[TIMER_ID_POSTMAN]) >= + (OSTime)(SECONDS_TO_TIMER_PRECISE(10, -5) - XREG(16))) && + (((void)0, gSaveContext.timerCurTime[TIMER_ID_POSTMAN]) <= + (OSTime)(SECONDS_TO_TIMER_PRECISE(10, 5) + XREG(17)))) { + gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(10); } - } else if (gSaveContext.eventTimer1Value[TIMER_ID_0] > 1500) { - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_15; + } else if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; gSaveContext.timerOsTime = osGetTime(); } @@ -402,7 +404,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) { Message_StartTextbox(play, 0x2791, &this->actor); this->unk_2B4 = 0x2791; this->unk_2AC = 7; - gSaveContext.timerState[TIMER_ID_0] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_OFF; this->actor.flags &= ~ACTOR_FLAG_10000; play_sound(NA_SE_SY_START_SHOT); func_80A6F9C8(this); diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.h b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.h index b6f653935..1cc1946f5 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.h +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.h @@ -7,6 +7,11 @@ struct EnMm3; typedef void (*EnMm3ActionFunc)(struct EnMm3*, PlayState*); +typedef enum { + /* 0 */ POSTMAN_MINIGAME_BUNNY_HOOD_OFF, + /* 2 */ POSTMAN_MINIGAME_BUNNY_HOOD_ON = 2 +} PostmanMinigameBunnyHoodState; + typedef struct EnMm3 { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index 4db6992f7..d81e74836 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -314,7 +314,7 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { gSaveContext.eventInf[1] |= 8; } else { if (DECR(this->timer) == 60) { - func_8010E9F0(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_4, 0); play->interfaceCtx.minigameState = 1; Audio_QueueSeqCmd(NA_BGM_GORON_RACE | 0x8000); play->envCtx.unk_E4 = 0xFE; @@ -504,7 +504,7 @@ void EnMttag_Init(Actor* thisx, PlayState* play) { void EnMttag_Destroy(Actor* thisx, PlayState* play) { EnMttag* this = THIS; if (gSaveContext.timerState[TIMER_ID_4] != TIMER_STATE_6) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; } } diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c index cebaafb44..65200e44e 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c @@ -271,7 +271,8 @@ void func_80A2C2E0(EnSyatekiDekunuts* this, PlayState* play) { void func_80A2C33C(EnSyatekiDekunuts* this, PlayState* play) { EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent; - if ((gSaveContext.eventTimer1Value[TIMER_ID_1] <= 0) || (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING)) { + if ((gSaveContext.timerCurTime[TIMER_ID_1] <= SECONDS_TO_TIMER(0)) || + (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING)) { func_80A2C3AC(this); } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 9b6cc24d3..05471caef 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1012,7 +1012,7 @@ void EnSyatekiMan_Swamp_StartGame(EnSyatekiMan* this, PlayState* play) { this->guayHitCounter = 0; this->currentWave = 0; this->perGameVar2.bonusDekuScrubHitCounter = 0; - func_8010E9F0(TIMER_ID_1, 100); + Interface_StartTimer(TIMER_ID_1, 100); this->actor.draw = NULL; this->actionFunc = EnSyatekiMan_Swamp_RunGame; } @@ -1061,9 +1061,9 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { this->perGameVar1.guaySpawnTimer++; - if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { - gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; this->actor.draw = EnSyatekiMan_Draw; this->flagsIndex = 0; this->currentWave = 0; @@ -1085,7 +1085,7 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_6; this->actionFunc = EnSyatekiMan_Swamp_AddBonusPoints; } else { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; this->actionFunc = EnSyatekiMan_Swamp_EndGame; } } @@ -1148,15 +1148,15 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { player->stateFlags1 |= 0x20; if (!play->interfaceCtx.isMinigamePerfect) { - if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { - gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; this->flagsIndex = 0; this->currentWave = 0; this->actionFunc = EnSyatekiMan_Swamp_EndGame; sBonusTimer = 0; } else if (sBonusTimer > 10) { - gSaveContext.funcTimer2Value[TIMER_ID_1] += 100; + gSaveContext.timerEndOsTime[TIMER_ID_1] += 100; play->interfaceCtx.unk_25C += 10; this->score += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); @@ -1220,7 +1220,7 @@ void EnSyatekiMan_Town_StartGame(EnSyatekiMan* this, PlayState* play) { this->perGameVar1.octorokState = SG_OCTO_STATE_INITIAL; this->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_NONE; sGameStartTimer = 30; - func_8010E9F0(TIMER_ID_1, 75); + Interface_StartTimer(TIMER_ID_1, 75); this->actor.draw = NULL; this->actionFunc = EnSyatekiMan_Town_RunGame; } @@ -1292,7 +1292,7 @@ static const s32 sOctorokFlagsPerWave[] = { void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { static s32 sModFromLosingTime = 0; Player* player = GET_PLAYER(play); - s32 timer = (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) * 0.1f) + 1.0f; // unit is tenths of a second + s32 timer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) * 0.1f) + 1.0f; // unit is tenths of a second if (timer <= 750) { s32 waveTimer; // unit is hundredths of a second @@ -1302,9 +1302,10 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { // begin hiding. This code will ultimately correct waveTimer such that its value is not affected by // hitting Blue Octoroks. if (sModFromLosingTime == 0) { - waveTimer = ((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) % 500; + waveTimer = ((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) % SECONDS_TO_TIMER(5); } else { - waveTimer = (((void)0, gSaveContext.eventTimer1Value[TIMER_ID_1]) + 250) % 500; + waveTimer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) + SECONDS_TO_TIMER_PRECISE(2, 50)) % + SECONDS_TO_TIMER(5); } // Octoroks begin hiding four seconds after a wave begins. @@ -1314,7 +1315,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { if (this->perGameVar2.octorokHitType != SG_OCTO_HIT_TYPE_NONE) { if (this->perGameVar2.octorokHitType == SG_OCTO_HIT_TYPE_BLUE) { - gSaveContext.eventTimer2Value[TIMER_ID_1] -= 250; + gSaveContext.timerCurSubTime[TIMER_ID_1] -= SECONDS_TO_TIMER_PRECISE(2, 50); sModFromLosingTime = (sModFromLosingTime + 25) % 50; } @@ -1336,11 +1337,11 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { } } - if (gSaveContext.eventTimer1Value[TIMER_ID_1] == 0) { + if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { this->flagsIndex = 0; this->perGameVar1.octorokState = SG_OCTO_STATE_HIDING; - gSaveContext.eventTimer1Value[TIMER_ID_1] = 0; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_5; + gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; player->stateFlags1 |= 0x20; sModFromLosingTime = 0; this->actor.draw = EnSyatekiMan_Draw; diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 03b836815..2e7162aa1 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -396,7 +396,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { func_80A41FA4(this, play); } else if (temp_a0 == CLOCK_TIME(6, 0)) { if (CURRENT_DAY == 3) { - func_8011C808(play); + Interface_StartMoonCrash(play); Actor_MarkForDeath(&this->actor); gSaveContext.eventInf[1] |= 0x80; } else if (((sCutscenes[this->unk_144] < 0) || (play->actorCtx.unk5 & 2)) && CURRENT_DAY != 3) { diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index c660772f7..201534dc4 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -90,7 +90,7 @@ void func_80AC9FE4(EnTimeTag* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); this->actionFunc = func_80AC9FD4; - gSaveContext.timerState[TIMER_ID_3] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOWLA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { gSaveContext.save.weekEventReg[25] |= 2; @@ -107,7 +107,7 @@ void func_80ACA0A8(EnTimeTag* this, PlayState* play) { if (this->actor.cutscene != -1) { this->actionFunc = func_80AC9FE4; ActorCutscene_SetIntentToPlay(this2->actor.cutscene); - gSaveContext.timerState[TIMER_ID_3] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; } play->msgCtx.ocarinaMode = 4; } diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index d9f1aea5d..59696baec 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -46,13 +46,13 @@ void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { ObjRoomtimer* this = THIS; if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_4] >= TIMER_STATE_1) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; } } void func_80973CD8(ObjRoomtimer* this, PlayState* play) { if (this->actor.params != 0x1FF) { - func_8010E9F0(TIMER_ID_4, this->actor.params); + Interface_StartTimer(TIMER_ID_4, this->actor.params); } func_800BC154(play, &play->actorCtx, &this->actor, ACTORCAT_PROP); @@ -62,7 +62,7 @@ void func_80973CD8(ObjRoomtimer* this, PlayState* play) { void func_80973D3C(ObjRoomtimer* this, PlayState* play) { if (Flags_GetClearTemp(play, this->actor.room)) { if (this->actor.params != 0x1FF) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_5; + gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; } ActorCutscene_SetIntentToPlay(this->actor.cutscene); this->actionFunc = func_80973DE0; diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 76a9931d4..6653daacd 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -514,13 +514,13 @@ void MapSelect_UpdateMenu(MapSelectState* this) { if (this->verticalInputAccumulator == 0) { if (CHECK_BTN_ALL(controller1->press.button, BTN_A) || CHECK_BTN_ALL(controller1->press.button, BTN_START)) { - for (i = 0; i < ARRAY_COUNT(gSaveContext.funcTimer3Value); i++) { + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerPausedOsTime); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.eventTimer1Value[i] = 0; - gSaveContext.eventTimer2Value[i] = 0; - gSaveContext.funcTimer1Value[i] = 0; - gSaveContext.funcTimer2Value[i] = 0; - gSaveContext.funcTimer3Value[i] = 0; + gSaveContext.timerCurTime[i] = 0; + gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTime[i] = 0; + gSaveContext.timerEndOsTime[i] = 0; + gSaveContext.timerPausedOsTime[i] = 0; } gSaveContext.minigameState = 0; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index fb40a8575..90f05eff2 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2093,12 +2093,12 @@ 0x8010DC58:("func_8010DC58",), 0x8010DE38:("func_8010DE38",), 0x8010E028:("Interface_InitVertices",), - 0x8010E968:("Interface_TimerCallback",), - 0x8010E9F0:("func_8010E9F0",), - 0x8010EA9C:("func_8010EA9C",), - 0x8010EB50:("func_8010EB50",), - 0x8010EBA0:("func_8010EBA0",), - 0x8010EC54:("func_8010EC54",), + 0x8010E968:("Interface_PostmanTimerCallback",), + 0x8010E9F0:("Interface_StartTimer",), + 0x8010EA9C:("Interface_StartPostmanTimer",), + 0x8010EB50:("Interface_StartGoronRaceTimer",), + 0x8010EBA0:("Interface_StartBottleTimer",), + 0x8010EC54:("Interface_GetCompressedTimerDigits",), 0x8010EE74:("Interface_NewDay",), 0x8010EF68:("Interface_SetHudVisibility",), 0x8010EF9C:("Interface_UpdateButtonAlphasByStatus",), @@ -2156,10 +2156,10 @@ 0x8011B9E0:("func_8011B9E0",), 0x8011BF70:("func_8011BF70",), 0x8011C4C4:("Interface_DrawMinigamePerfect",), - 0x8011C808:("func_8011C808",), - 0x8011C898:("func_8011C898",), + 0x8011C808:("Interface_StartMoonCrash",), + 0x8011C898:("Interface_GetTimerDigits",), 0x8011CA64:("Interface_DrawTimers",), - 0x8011E3B4:("Interface_UpdateTimers",), + 0x8011E3B4:("Interface_UpdateBottleTimers",), 0x8011E730:("Interface_DrawMinigameIcons",), 0x8011F0E0:("Interface_Draw",), 0x80120F90:("Interface_LoadStory",), @@ -2232,7 +2232,7 @@ 0x80124258:("Player_GetExplosiveHeld",), 0x80124278:("func_80124278",), 0x801242B4:("func_801242B4",), - 0x801242DC:("func_801242DC",), + 0x801242DC:("Player_GetEnvTimerType",), 0x80124420:("func_80124420",), 0x80124618:("func_80124618",), 0x801246F4:("func_801246F4",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index fc9c3950b..c8e1781ae 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1074,15 +1074,15 @@ 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), 0x801BF8AC:("sMagicBorderRatio","UNK_TYPE2","",0x2), 0x801BF8B0:("sMagicBorderStep","UNK_TYPE2","",0x2), - 0x801BF8DC:("D_801BF8DC","UNK_TYPE2","",0x2), - 0x801BF8E0:("D_801BF8E0","UNK_TYPE2","",0x2), - 0x801BF8E4:("D_801BF8E4","UNK_TYPE2","",0x2), - 0x801BF8E8:("D_801BF8E8","UNK_TYPE4","",0x4), - 0x801BF8F0:("D_801BF8F0","u64","",0x8), + 0x801BF8DC:("sEnvTimerType","UNK_TYPE2","",0x2), + 0x801BF8E0:("sEnvTimerActive","UNK_TYPE2","",0x2), + 0x801BF8E4:("sPostmanBunnyHoodState","UNK_TYPE2","",0x2), + 0x801BF8E8:("sTimerPausedOsTime","UNK_TYPE4","",0x4), + 0x801BF8F0:("sBottleTimerPausedOsTime","u64","",0x8), 0x801BF8F8:("D_801BF8F8","u64","[7]",0x38), 0x801BF930:("D_801BF930","u64","[7]",0x38), - 0x801BF968:("D_801BF968","UNK_TYPE4","",0x4), - 0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4), + 0x801BF968:("sIsTimerPaused","UNK_TYPE4","",0x4), + 0x801BF96C:("sIsBottleTimerPaused","UNK_TYPE4","",0x4), 0x801BF970:("sTimerId","UNK_TYPE4","",0x4), 0x801BF974:("D_801BF974","UNK_TYPE4","",0x4), 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), @@ -1113,7 +1113,7 @@ 0x801BFA4C:("D_801BFA4C","UNK_TYPE2","",0x2), 0x801BFA64:("D_801BFA64","UNK_TYPE2","",0x2), 0x801BFA74:("D_801BFA74","UNK_TYPE2","",0x2), - 0x801BFA84:("D_801BFA84","UNK_TYPE4","",0x4), + 0x801BFA84:("sPostmanTimerInputBtnAPressed","UNK_TYPE4","",0x4), 0x801BFAB0:("sDoActionTextures","UNK_TYPE1","",0x1), 0x801BFAB8:("magicBorderColors","UNK_TYPE1","",0x1), 0x801BFAC4:("magicBorderIndices","UNK_TYPE1","",0x1), @@ -1161,9 +1161,9 @@ 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), 0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1), 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), - 0x801BFCE4:("D_801BFCE4","UNK_TYPE4","",0x4), - 0x801BFCE8:("D_801BFCE8","u16","[8]",0x10), - 0x801BFCF8:("D_801BFCF8","UNK_TYPE4","",0x4), + 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), + 0x801BFCE8:("sTimerDigits","u16","[8]",0x10), + 0x801BFCF8:("sTimerBeepSfxSeconds","UNK_TYPE4","",0x4), 0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4), 0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4), 0x801BFD1C:("D_801BFD1C","UNK_TYPE1","",0x1), @@ -4002,7 +4002,7 @@ 0x801F57B4:("D_801F57B4","UNK_TYPE1","",0x1), 0x801F5834:("D_801F5834","UNK_TYPE1","",0x1), 0x801F5840:("gNMIBuffer","s32*","",0x4), - 0x801F5850:("D_801F5850","UNK_TYPE1","",0x1), + 0x801F5850:("sPostmanTimerInput","UNK_TYPE1","",0x1), 0x801F58B0:("D_801F58B0","UNK_TYPE1","",0x1), 0x801F59AC:("D_801F59AC","UNK_TYPE1","",0x1), 0x801F59B0:("D_801F59B0","UNK_TYPE1","",0x1), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index d9be06fcf..127780c0f 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1607,12 +1607,12 @@ asm/non_matchings/code/z_parameter/func_8010D9F4.s,func_8010D9F4,0x8010D9F4,0x99 asm/non_matchings/code/z_parameter/func_8010DC58.s,func_8010DC58,0x8010DC58,0x78 asm/non_matchings/code/z_parameter/func_8010DE38.s,func_8010DE38,0x8010DE38,0x7C asm/non_matchings/code/z_parameter/Interface_InitVertices.s,Interface_InitVertices,0x8010E028,0x250 -asm/non_matchings/code/z_parameter/Interface_TimerCallback.s,Interface_TimerCallback,0x8010E968,0x22 -asm/non_matchings/code/z_parameter/func_8010E9F0.s,func_8010E9F0,0x8010E9F0,0x2B -asm/non_matchings/code/z_parameter/func_8010EA9C.s,func_8010EA9C,0x8010EA9C,0x2D -asm/non_matchings/code/z_parameter/func_8010EB50.s,func_8010EB50,0x8010EB50,0x14 -asm/non_matchings/code/z_parameter/func_8010EBA0.s,func_8010EBA0,0x8010EBA0,0x2D -asm/non_matchings/code/z_parameter/func_8010EC54.s,func_8010EC54,0x8010EC54,0x88 +asm/non_matchings/code/z_parameter/Interface_PostmanTimerCallback.s,Interface_PostmanTimerCallback,0x8010E968,0x22 +asm/non_matchings/code/z_parameter/Interface_StartTimer.s,Interface_StartTimer,0x8010E9F0,0x2B +asm/non_matchings/code/z_parameter/Interface_StartPostmanTimer.s,Interface_StartPostmanTimer,0x8010EA9C,0x2D +asm/non_matchings/code/z_parameter/Interface_StartGoronRaceTimer.s,Interface_StartGoronRaceTimer,0x8010EB50,0x14 +asm/non_matchings/code/z_parameter/Interface_StartBottleTimer.s,Interface_StartBottleTimer,0x8010EBA0,0x2D +asm/non_matchings/code/z_parameter/Interface_GetCompressedTimerDigits.s,Interface_GetCompressedTimerDigits,0x8010EC54,0x88 asm/non_matchings/code/z_parameter/Interface_NewDay.s,Interface_NewDay,0x8010EE74,0x3D asm/non_matchings/code/z_parameter/Interface_SetHudVisibility.s,Interface_SetHudVisibility,0x8010EF68,0xD asm/non_matchings/code/z_parameter/Interface_UpdateButtonAlphasByStatus.s,Interface_UpdateButtonAlphasByStatus,0x8010EF9C,0x4E @@ -1670,10 +1670,10 @@ asm/non_matchings/code/z_parameter/func_8011B5C0.s,func_8011B5C0,0x8011B5C0,0x10 asm/non_matchings/code/z_parameter/func_8011B9E0.s,func_8011B9E0,0x8011B9E0,0x164 asm/non_matchings/code/z_parameter/func_8011BF70.s,func_8011BF70,0x8011BF70,0x155 asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_DrawMinigamePerfect,0x8011C4C4,0xD1 -asm/non_matchings/code/z_parameter/func_8011C808.s,func_8011C808,0x8011C808,0x24 -asm/non_matchings/code/z_parameter/func_8011C898.s,func_8011C898,0x8011C898,0x73 +asm/non_matchings/code/z_parameter/Interface_StartMoonCrash.s,Interface_StartMoonCrash,0x8011C808,0x24 +asm/non_matchings/code/z_parameter/Interface_GetTimerDigits.s,Interface_GetTimerDigits,0x8011C898,0x73 asm/non_matchings/code/z_parameter/Interface_DrawTimers.s,Interface_DrawTimers,0x8011CA64,0x654 -asm/non_matchings/code/z_parameter/Interface_UpdateTimers.s,Interface_UpdateTimers,0x8011E3B4,0xDF +asm/non_matchings/code/z_parameter/Interface_UpdateBottleTimers.s,Interface_UpdateBottleTimers,0x8011E3B4,0xDF asm/non_matchings/code/z_parameter/Interface_DrawMinigameIcons.s,Interface_DrawMinigameIcons,0x8011E730,0x26C asm/non_matchings/code/z_parameter/Interface_Draw.s,Interface_Draw,0x8011F0E0,0x7AC asm/non_matchings/code/z_parameter/Interface_LoadStory.s,Interface_LoadStory,0x80120F90,0x35 @@ -1746,7 +1746,7 @@ asm/non_matchings/code/z_player_lib/Player_ActionToExplosive.s,Player_ActionToEx asm/non_matchings/code/z_player_lib/Player_GetExplosiveHeld.s,Player_GetExplosiveHeld,0x80124258,0x8 asm/non_matchings/code/z_player_lib/func_80124278.s,func_80124278,0x80124278,0xF asm/non_matchings/code/z_player_lib/func_801242B4.s,func_801242B4,0x801242B4,0xA -asm/non_matchings/code/z_player_lib/func_801242DC.s,func_801242DC,0x801242DC,0x51 +asm/non_matchings/code/z_player_lib/Player_GetEnvTimerType.s,Player_GetEnvTimerType,0x801242DC,0x51 asm/non_matchings/code/z_player_lib/func_80124420.s,func_80124420,0x80124420,0x7E asm/non_matchings/code/z_player_lib/func_80124618.s,func_80124618,0x80124618,0x37 asm/non_matchings/code/z_player_lib/func_801246F4.s,func_801246F4,0x801246F4,0x5F From e78bbc6566817e3519762800404aaa7277f55b1f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 16 Aug 2022 00:31:08 -0400 Subject: [PATCH 132/160] more timer docs --- include/variables.h | 4 +- include/z64save.h | 31 ++-- src/code/z_parameter.c | 161 +++++++++--------- src/code/z_sram_NES.c | 8 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 25 +-- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 10 +- .../z_en_horse_game_check.c | 14 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 8 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 21 +-- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 14 +- .../z_en_syateki_dekunuts.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 36 ++-- .../ovl_Obj_Roomtimer/z_obj_roomtimer.c | 10 +- src/overlays/gamestates/ovl_select/z_select.c | 2 +- tools/disasm/variables.txt | 4 +- 16 files changed, 175 insertions(+), 179 deletions(-) diff --git a/include/variables.h b/include/variables.h index 263ee8cfe..6438a9d49 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1146,8 +1146,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BFCF2; // extern UNK_TYPE2 D_801BFCF4; // extern UNK_TYPE2 sTimerBeepSfxSeconds; -// extern UNK_TYPE2 D_801BFCFC; -// extern UNK_TYPE2 D_801BFD0C; +// extern UNK_TYPE2 sTimerDigitsOffsetX; +// extern UNK_TYPE2 sTimerDigitsWidth; // extern UNK_TYPE1 D_801BFD1C; // extern UNK_TYPE1 D_801BFD24; // extern UNK_TYPE1 D_801BFD2C; diff --git a/include/z64save.h b/include/z64save.h index cfaf07e5a..a76b11339 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -57,15 +57,18 @@ typedef enum { #define SECONDS_TO_TIMER(seconds) ((seconds) * 100) +#define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000) +#define OSTIME_TO_TIMER_ALT(osTime) ((osTime) / 10000 * 64 / 3000) + // 1 centiSecond = 10 milliSeconds = 1/100 seconds #define SECONDS_TO_TIMER_PRECISE(seconds, centiSeconds) ((seconds) * 100 + (centiSeconds)) typedef enum { /* 0 */ TIMER_ID_POSTMAN, // postman's counting minigame - /* 1 */ TIMER_ID_1, // minigame timer + /* 1 */ TIMER_ID_MINIGAME_1, // minigame timer /* 2 */ TIMER_ID_2, /* 3 */ TIMER_ID_FINAL_HOURS, // countdown until mooncrash - /* 4 */ TIMER_ID_4, + /* 4 */ TIMER_ID_MINIGAME_2, // minigame timer /* 5 */ TIMER_ID_ENV, // environmental timer (underwater or hot room) /* 6 */ TIMER_ID_GORON_RACE_UNUSED, /* 7 */ TIMER_ID_MAX, @@ -79,18 +82,18 @@ typedef enum { typedef enum { /* 0 */ TIMER_STATE_OFF, - /* 1 */ TIMER_STATE_1, - /* 2 */ TIMER_STATE_2, - /* 3 */ TIMER_STATE_MOVING_TIMER, - /* 4 */ TIMER_STATE_4, + /* 1 */ TIMER_STATE_START, + /* 2 */ TIMER_STATE_HOLD_TIMER, // Hold timer frozen at the screen center + /* 3 */ TIMER_STATE_MOVING_TIMER, // Move timer to a target location + /* 4 */ TIMER_STATE_COUNTING, /* 5 */ TIMER_STATE_STOP, - /* 6 */ TIMER_STATE_6, - /* 7 */ TIMER_STATE_7, + /* 6 */ TIMER_STATE_6, // like `TIMER_STATE_STOP` but with extra minigame checks + /* 7 */ TIMER_STATE_7, // stopped but still update `timerCurTime` /* 8 */ TIMER_STATE_ENV_START, - /* 9 */ TIMER_STATE_9, - /* 10 */ TIMER_STATE_10, - /* 11 */ TIMER_STATE_11, - /* 12 */ TIMER_STATE_12, + /* 9 */ TIMER_STATE_ALT_START, + /* 10 */ TIMER_STATE_10, // precursor to `TIMER_STATE_ALT_COUNTING` + /* 11 */ TIMER_STATE_ALT_COUNTING, + /* 12 */ TIMER_STATE_12, // Updated paused time? /* 13 */ TIMER_STATE_POSTMAN_START, /* 14 */ TIMER_STATE_POSTMAN_COUNTING, /* 15 */ TIMER_STATE_POSTMAN_STOP, @@ -292,7 +295,7 @@ typedef struct SaveContext { /* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct" /* 0x101A */ u8 bottleTimerState[BOTTLE_MAX]; // "bottle_status", one entry for each bottle /* 0x1020 */ OSTime bottleTimerStartOsTime[BOTTLE_MAX]; // "bottle_ostime", one entry for each bottle - /* 0x1050 */ u64 bottleTimerCurSubTime[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle + /* 0x1050 */ u64 bottleTimerCurTimeLimit[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle /* 0x1080 */ u64 bottleTimerCurTime[BOTTLE_MAX]; // "bottle_time", one entry for each bottle /* 0x10B0 */ OSTime bottleTimerPausedOsTime[BOTTLE_MAX]; // "bottle_stop_time", one entry for each bottle /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo @@ -317,7 +320,7 @@ typedef struct SaveContext { /* 0x3DD0 */ u8 timerState[TIMER_ID_MAX]; // "event_fg" /* 0x3DD7 */ u8 timerDirection[TIMER_ID_MAX]; // "calc_flag" /* 0x3DE0 */ u64 timerCurTime[TIMER_ID_MAX]; // "event_ostime" - /* 0x3E18 */ u64 timerCurSubTime[TIMER_ID_MAX]; // "event_sub" + /* 0x3E18 */ u64 timerTimeLimit[TIMER_ID_MAX]; // "event_sub" /* 0x3E50 */ OSTime timerStartOsTime[TIMER_ID_MAX]; // "func_time" /* 0x3E88 */ OSTime timerEndOsTime[TIMER_ID_MAX]; // "func_end_time" /* 0x3EC0 */ OSTime timerPausedOsTime[TIMER_ID_MAX]; // "func_stop_time" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index cd848a957..eea8fc922 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -186,7 +186,6 @@ s16 sExtraItemBases[] = { s16 sEnvTimerType = PLAYER_ENV_TIMER_NONE; s16 sEnvTimerActive = false; s16 sPostmanBunnyHoodState = 0; - OSTime sTimerPausedOsTime = 0; OSTime sBottleTimerPausedOsTime = 0; OSTime D_801BF8F8[] = { @@ -195,11 +194,10 @@ OSTime D_801BF8F8[] = { OSTime D_801BF930[] = { 0, 0, 0, 0, 0, 0, 0, }; - u8 sIsTimerPaused = false; u8 sIsBottleTimerPaused = false; - s16 sTimerId = TIMER_ID_NONE; + s16 D_801BF974 = 0; s16 D_801BF978 = 10; s16 D_801BF97C = 255; @@ -603,7 +601,7 @@ void Interface_StartTimer(s16 timerId, s16 seconds) { sEnvTimerActive = false; gSaveContext.timerCurTime[timerId] = SECONDS_TO_TIMER(seconds); - gSaveContext.timerCurSubTime[timerId] = gSaveContext.timerCurTime[timerId]; + gSaveContext.timerTimeLimit[timerId] = gSaveContext.timerCurTime[timerId]; if (gSaveContext.timerCurTime[timerId] != SECONDS_TO_TIMER(0)) { gSaveContext.timerDirection[timerId] = TIMER_COUNT_DOWN; @@ -611,7 +609,7 @@ void Interface_StartTimer(s16 timerId, s16 seconds) { gSaveContext.timerDirection[timerId] = TIMER_COUNT_UP; } - gSaveContext.timerState[timerId] = TIMER_STATE_1; + gSaveContext.timerState[timerId] = TIMER_STATE_START; } void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { @@ -621,7 +619,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { sPostmanBunnyHoodState = bunnyHoodState; gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(seconds); - gSaveContext.timerCurSubTime[TIMER_ID_POSTMAN] = gSaveContext.timerCurTime[TIMER_ID_POSTMAN]; + gSaveContext.timerTimeLimit[TIMER_ID_POSTMAN] = gSaveContext.timerCurTime[TIMER_ID_POSTMAN]; if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] != SECONDS_TO_TIMER(0)) { gSaveContext.timerDirection[TIMER_ID_POSTMAN] = TIMER_COUNT_DOWN; @@ -634,7 +632,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN] = 0; } -// Unused, goron race actually uses TIMER_ID_4 +// Unused, goron race actually uses TIMER_ID_MINIGAME_2 void Interface_StartGoronRaceTimer(s32 arg0) { if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { // Goron race started @@ -648,8 +646,8 @@ void Interface_StartGoronRaceTimer(s32 arg0) { void Interface_StartBottleTimer(s16 seconds, s16 timerId) { gSaveContext.bottleTimerState[timerId] = BOTTLE_TIMER_STATE_COUNTING; - gSaveContext.bottleTimerCurTime[timerId] = seconds * 100; - gSaveContext.bottleTimerCurSubTime[timerId] = gSaveContext.bottleTimerCurTime[timerId]; + gSaveContext.bottleTimerCurTime[timerId] = SECONDS_TO_TIMER(seconds); + gSaveContext.bottleTimerCurTimeLimit[timerId] = gSaveContext.bottleTimerCurTime[timerId]; gSaveContext.bottleTimerStartOsTime[timerId] = osGetTime(); gSaveContext.bottleTimerPausedOsTime[timerId] = 0; sBottleTimerPausedOsTime = 0; @@ -5232,12 +5230,10 @@ void Interface_DrawTimers(PlayState* play) { static s16 sTimerStateTimer = 0; static s16 sTimerDigits[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; static s16 sTimerBeepSfxSeconds = 99; - static s16 D_801BFCFC[] = { - // timer digit width - 0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D, + static s16 sTimerDigitsOffsetX[] = { + 16, 25, 34, 42, 51, 60, 68, 77, }; - static s16 D_801BFD0C[] = { - // digit width + static s16 sTimerDigitsWidth[] = { 9, 9, 8, 9, 9, 8, 9, 9, }; InterfaceContext* interfaceCtx = &play->interfaceCtx; @@ -5263,7 +5259,7 @@ void Interface_DrawTimers(PlayState* play) { osTime = osGetTime(); for (j = 0; j < TIMER_ID_MAX; j++) { - if (gSaveContext.timerState[j] == TIMER_STATE_4) { + if (gSaveContext.timerState[j] == TIMER_STATE_COUNTING) { gSaveContext.timerPausedOsTime[j] = gSaveContext.timerPausedOsTime[j] + (osTime - sTimerPausedOsTime); } @@ -5296,9 +5292,8 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_POSTMAN_STOP: timerOsTime = gSaveContext.timerOsTime; gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = - (timerOsTime - ((void)0, gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN]) - - ((void)0, gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN])) * - 64 / 3000 / 10000; + OSTIME_TO_TIMER(timerOsTime - ((void)0, gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN]) - + ((void)0, gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN])); gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_END; func_80174F9C(Interface_PostmanTimerCallback, NULL); break; @@ -5312,8 +5307,8 @@ void Interface_DrawTimers(PlayState* play) { // process the remaining timers switch (gSaveContext.timerState[sTimerId]) { - case TIMER_STATE_1: - case TIMER_STATE_9: + case TIMER_STATE_START: + case TIMER_STATE_ALT_START: sTimerStateTimer = 20; if (interfaceCtx->minigameState != MINIGAME_STATE_NONE) { gSaveContext.timerX[sTimerId] = 26; @@ -5328,10 +5323,10 @@ void Interface_DrawTimers(PlayState* play) { if ((interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) || (interfaceCtx->minigameState == MINIGAME_STATE_30)) { - if (gSaveContext.timerState[sTimerId] == TIMER_STATE_1) { - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + if (gSaveContext.timerState[sTimerId] == TIMER_STATE_START) { + gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_11; + gSaveContext.timerState[sTimerId] = TIMER_STATE_ALT_COUNTING; D_801BF8F8[sTimerId] = osGetTime(); D_801BF930[sTimerId] = 0; } @@ -5341,11 +5336,11 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerPausedOsTime[sTimerId] = 0; } } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_2; + gSaveContext.timerState[sTimerId] = TIMER_STATE_HOLD_TIMER; } break; - case TIMER_STATE_2: + case TIMER_STATE_HOLD_TIMER: sTimerStateTimer--; if (sTimerStateTimer == 0) { sTimerStateTimer = 20; @@ -5384,14 +5379,15 @@ void Interface_DrawTimers(PlayState* play) { } } - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; gSaveContext.timerStartOsTime[sTimerId] = osGetTime(); gSaveContext.timerEndOsTime[sTimerId] = 0; gSaveContext.timerPausedOsTime[sTimerId] = 0; } // fallthrough - case TIMER_STATE_4: - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) && (sTimerId == TIMER_ID_FINAL_HOURS)) { + case TIMER_STATE_COUNTING: + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) && + (sTimerId == TIMER_ID_FINAL_HOURS)) { gSaveContext.timerX[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_X; gSaveContext.timerY[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_Y; } @@ -5400,9 +5396,9 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_10: D_801BF8F8[sTimerId] = osGetTime(); D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_11; + gSaveContext.timerState[sTimerId] = TIMER_STATE_ALT_COUNTING; // fallthrough - case TIMER_STATE_11: + case TIMER_STATE_ALT_COUNTING: D_801BF930[sTimerId] = osGetTime() - D_801BF8F8[sTimerId]; break; @@ -5412,13 +5408,13 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerPausedOsTime[sTimerId] = gSaveContext.timerPausedOsTime[sTimerId] + osTime - D_801BF8F8[sTimerId]; D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_4; + gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; break; case TIMER_STATE_ENV_START: gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1); gSaveContext.timerDirection[sTimerId] = TIMER_COUNT_DOWN; - gSaveContext.timerCurSubTime[sTimerId] = gSaveContext.timerCurTime[sTimerId]; + gSaveContext.timerTimeLimit[sTimerId] = gSaveContext.timerCurTime[sTimerId]; sTimerStateTimer = 20; gSaveContext.timerState[sTimerId] = TIMER_STATE_MOVING_TIMER; break; @@ -5427,9 +5423,8 @@ void Interface_DrawTimers(PlayState* play) { osTime = osGetTime(); gSaveContext.timerEndOsTime[sTimerId] = - (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId])) * - 64 / 3000 / 10000; + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId])); gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; @@ -5455,9 +5450,8 @@ void Interface_DrawTimers(PlayState* play) { osTime = osGetTime(); gSaveContext.timerEndOsTime[sTimerId] = - (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId])) * - 64 / 3000 / 10000; + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId])); if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { @@ -5491,14 +5485,13 @@ void Interface_DrawTimers(PlayState* play) { // used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_10) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_11) || + (gSaveContext.timerState[sTimerId] == TIMER_STATE_ALT_COUNTING) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); - osTime = (osTime - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId] - - ((void)0, gSaveContext.timerStartOsTime[sTimerId])) * - 64 / 3000 / 10000; + osTime = OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - + D_801BF930[sTimerId] - ((void)0, gSaveContext.timerStartOsTime[sTimerId])); } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { osTime = gSaveContext.timerEndOsTime[sTimerId]; } else { @@ -5506,12 +5499,12 @@ void Interface_DrawTimers(PlayState* play) { } if (osTime == 0) { - gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerCurSubTime[sTimerId] - osTime; - } else if (gSaveContext.timerCurSubTime[sTimerId] >= osTime) { - if (gSaveContext.timerCurSubTime[sTimerId] <= osTime) { + gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerTimeLimit[sTimerId] - osTime; + } else if (osTime <= gSaveContext.timerTimeLimit[sTimerId]) { + if (osTime >= gSaveContext.timerTimeLimit[sTimerId]) { gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); } else { - gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerCurSubTime[sTimerId] - osTime; + gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerTimeLimit[sTimerId] - osTime; } } else { gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); @@ -5546,12 +5539,12 @@ void Interface_DrawTimers(PlayState* play) { // used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_4) || + if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) || (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); - osTime = (osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId]) * - 64 / 3000 / 10000; + osTime = + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId]); } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { osTime = gSaveContext.timerEndOsTime[sTimerId]; } else if (sTimerId == TIMER_ID_POSTMAN) { @@ -5575,7 +5568,8 @@ void Interface_DrawTimers(PlayState* play) { // Use seconds to determine when to beep if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if ((gSaveContext.timerCurTime[sTimerId] > 11000) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { + if ((gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(110)) && + (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); sTimerBeepSfxSeconds = sTimerDigits[4]; } @@ -5604,7 +5598,7 @@ void Interface_DrawTimers(PlayState* play) { if (gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF if (sTimerId == TIMER_ID_2) { if ((gSaveContext.timerCurTime[sTimerId] == SECONDS_TO_TIMER(0)) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_4)) { + (gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); @@ -5629,7 +5623,7 @@ void Interface_DrawTimers(PlayState* play) { } } else if ((gSaveContext.timerCurTime[sTimerId] < SECONDS_TO_TIMER(10)) && (gSaveContext.timerDirection[sTimerId] == TIMER_COUNT_DOWN) && - (gSaveContext.timerState[sTimerId] != TIMER_STATE_11)) { + (gSaveContext.timerState[sTimerId] != TIMER_STATE_ALT_COUNTING)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); @@ -5643,25 +5637,25 @@ void Interface_DrawTimers(PlayState* play) { for (j = 0; j < 4; j++) { OVERLAY_DISP = Gfx_TextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, - ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], + ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); } } else { // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 5; j++) { OVERLAY_DISP = Gfx_TextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, - ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], + ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); } } } else { // draw sTimerDigits[3] (6s of minutes) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 8; j++) { - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j])), 8, 0x10, - ((void)0, gSaveContext.timerX[sTimerId]) + D_801BFCFC[j], - ((void)0, gSaveContext.timerY[sTimerId]), D_801BFD0C[j], 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j])), 8, 0x10, + ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], + ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); } } } @@ -5708,18 +5702,15 @@ void Interface_UpdateBottleTimers(PlayState* play) { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.bottleTimerState[i] == BOTTLE_TIMER_STATE_COUNTING) { osTime = osGetTime(); - osTime = (((osTime - ((void)0, gSaveContext.bottleTimerPausedOsTime[i]) - - ((void)0, gSaveContext.bottleTimerStartOsTime[i])) / - 10000) * - 64) / - 3000; + osTime = OSTIME_TO_TIMER_ALT(osTime - ((void)0, gSaveContext.bottleTimerPausedOsTime[i]) - + ((void)0, gSaveContext.bottleTimerStartOsTime[i])); if (osTime == 0) { - gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurSubTime[i] - osTime; - } else if (gSaveContext.bottleTimerCurSubTime[i] >= osTime) { - if (gSaveContext.bottleTimerCurSubTime[i] <= osTime) { + gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurTimeLimit[i] - osTime; + } else if (osTime <= gSaveContext.bottleTimerCurTimeLimit[i]) { + if (osTime >= gSaveContext.bottleTimerCurTimeLimit[i]) { gSaveContext.bottleTimerCurTime[i] = 0; } else { - gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurSubTime[i] - osTime; + gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurTimeLimit[i] - osTime; } } else { gSaveContext.bottleTimerCurTime[i] = 0; @@ -6664,7 +6655,7 @@ void Interface_Update(PlayState* play) { } } } else if (((sEnvTimerType == PLAYER_ENV_TIMER_NONE) || (sEnvTimerType == PLAYER_ENV_TIMER_SWIMMING)) && - (gSaveContext.timerState[TIMER_ID_ENV] <= TIMER_STATE_4)) { + (gSaveContext.timerState[TIMER_ID_ENV] <= TIMER_STATE_COUNTING)) { gSaveContext.timerState[TIMER_ID_ENV] = TIMER_STATE_OFF; } @@ -6829,13 +6820,13 @@ void Interface_Init(PlayState* play) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_RIGHT); } - if (((gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4) || - (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] == TIMER_STATE_4)) && + if (((gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING) || + (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] == TIMER_STATE_COUNTING)) && ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && - (gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_4)) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_1; - gSaveContext.timerX[TIMER_ID_4] = 115; - gSaveContext.timerY[TIMER_ID_4] = 80; + (gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING)) { + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_START; + gSaveContext.timerX[TIMER_ID_MINIGAME_2] = 115; + gSaveContext.timerY[TIMER_ID_MINIGAME_2] = 80; } LifeMeter_Init(play); @@ -6848,15 +6839,15 @@ void Interface_Init(PlayState* play) { if (gSaveContext.eventInf[3] & 0x10) { gSaveContext.eventInf[3] &= (u8)~0x10; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; } - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_OFF; - gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerCurSubTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerStartOsTime[TIMER_ID_1] = 0; - gSaveContext.timerEndOsTime[TIMER_ID_1] = 0; - gSaveContext.timerPausedOsTime[TIMER_ID_1] = 0; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_OFF; + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimit[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTime[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerEndOsTime[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerPausedOsTime[TIMER_ID_MINIGAME_1] = 0; for (i = 0; i < TIMER_ID_MAX; i++) { if (gSaveContext.timerState[i] == TIMER_STATE_7) { diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 09c20d507..61167cb7e 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -897,7 +897,7 @@ void func_80144A94(SramContext* sramCtx) { for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTime[i] = 0; gSaveContext.timerEndOsTime[i] = 0; gSaveContext.timerPausedOsTime[i] = 0; @@ -972,7 +972,7 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTime[i] = 0; gSaveContext.timerEndOsTime[i] = 0; gSaveContext.timerPausedOsTime[i] = 0; @@ -1602,7 +1602,7 @@ void func_80147068(SramContext* sramCtx) { sramCtx->status = 4; } } - } else if (((osGetTime() - sramCtx->unk_18) * 0x40) / 3000 / 10000 >= 200) { + } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->unk_18) >= SECONDS_TO_TIMER(2)) { sramCtx->status = 0; } } @@ -1639,7 +1639,7 @@ void func_80147198(SramContext* sramCtx) { sramCtx->status = 4; } } - } else if (((osGetTime() - sramCtx->unk_18) * 0x40) / 3000 / 10000 >= 200) { + } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->unk_18) >= SECONDS_TO_TIMER(2)) { sramCtx->status = 0; bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); gSaveContext.save.isOwlSave = false; diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index 69f5082ae..babc32728 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -216,7 +216,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 14, &this->unk_32C); thisx->room = -1; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); this->unk_3B0 |= 1; this->actionFunc = func_80A72438; @@ -817,7 +817,7 @@ void func_80A73244(EnDno* this, PlayState* play) { this->unk_328 = 2; this->actor.speedXZ = 0.0f; Flags_UnsetSwitch(play, ENDNO_GET_3F80(&this->actor)); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->unk_44E = 0; this->actionFunc = func_80A732C8; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 92126dfdf..eae76da51 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -401,7 +401,8 @@ void func_80962340(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x287E, &this->actor); this->unk_552 = 0x287E; } - } else if ((gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) && (this->unk_552 != 0x2888)) { + } else if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) && + (this->unk_552 != 0x2888)) { Message_StartTextbox(play, 0x2886, &this->actor); this->unk_552 = 0x2886; } else { @@ -644,7 +645,7 @@ void func_80962A10(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; - Interface_StartTimer(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 60); if (this->unk_546 == 1) { func_809616E0(this, play); } else { @@ -682,7 +683,7 @@ void func_80962BCC(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - Interface_StartTimer(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -713,7 +714,7 @@ void func_80962D60(EnFu* this, PlayState* play) { play_sound(NA_SE_SY_FOUND); player->stateFlags1 &= ~0x20; player->stateFlags3 |= 0x400000; - Interface_StartTimer(TIMER_ID_4, 60); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 60); if (this->unk_546 == 1) { func_809616E0(this, play); @@ -761,11 +762,11 @@ void func_80962F4C(EnFu* this, PlayState* play) { break; } - if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(20)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(20)) { s16 val = D_80964B00[this->unk_542] + 200; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); - } else if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(40)) { + } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(40)) { s16 val = D_80964B00[this->unk_542] + 100; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); @@ -777,12 +778,12 @@ void func_80962F4C(EnFu* this, PlayState* play) { if ((!DynaPolyActor_IsInRidingRotatingState((DynaPolyActor*)this->actor.child) && (player->actor.bgCheckFlags & 1)) || - (gSaveContext.timerCurTime[TIMER_ID_4] <= SECONDS_TO_TIMER(0)) || (this->unk_548 == this->unk_54C)) { + (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] <= SECONDS_TO_TIMER(0)) || (this->unk_548 == this->unk_54C)) { player->stateFlags3 &= ~0x400000; func_80961E88(play); player->stateFlags1 |= 0x20; if (this->unk_548 < this->unk_54C) { - if (gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x2885, &this->actor); this->unk_552 = 0x2885; } else { @@ -790,15 +791,15 @@ void func_80962F4C(EnFu* this, PlayState* play) { this->unk_552 = 0x2888; } func_801A2C20(); - gSaveContext.timerCurTime[TIMER_ID_4] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; this->unk_548 = 0; func_809632D0(this); } else { this->unk_548 = 0; func_801A2C20(); - gSaveContext.timerCurTime[TIMER_ID_4] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; func_801A3098(NA_BGM_GET_ITEM | 0x900); Interface_SetPerfectMinigame(play, 1); this->unk_54A = 3; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 8c9956ca9..f489f766a 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -459,7 +459,7 @@ void func_80B10240(EnGb2* this, PlayState* play) { D_80B119B0[this->unk_280].unk_04.y, D_80B119B0[this->unk_280].unk_04.z, 0, 0, 0, this->unk_27E); if (this->unk_280 == 0) { - Interface_StartTimer(TIMER_ID_1, 180); + Interface_StartTimer(TIMER_ID_MINIGAME_1, 180); } this->actionFunc = func_80B10344; } else { @@ -487,7 +487,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (this->unk_26C & 0x200) { if (this->unk_280 == 3) { this->unk_26C &= ~0x200; - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; func_800FE498(); gSaveContext.eventInf[4] |= 0x40; func_80B0FE7C(play); @@ -506,7 +506,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { } if (gSaveContext.save.playerData.health < 49) { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x20; @@ -519,8 +519,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { } func_80B0FE7C(play); - } else if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x10; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 129595b28..50da9c4db 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -121,7 +121,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { return false; } - Interface_StartTimer(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); play->interfaceCtx.minigameState = 1; this->horse1 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1149.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, @@ -145,7 +145,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { } s32 func_808F8E94(EnHorseGameCheck* this, PlayState* play) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; return true; } @@ -247,11 +247,11 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { return true; } - if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(180)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(180)) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_4); this->unk_174 = 60; } @@ -284,7 +284,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -317,7 +317,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x02000000; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -346,7 +346,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x800; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_2); this->unk_174 = 60; } diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 9eef37c08..c24c03360 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -155,7 +155,7 @@ void func_80C13BB8(EnJgameTsn* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (this->actor.flags & ACTOR_FLAG_10000) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.timerCurTime[TIMER_ID_4] > SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] > SECONDS_TO_TIMER(0)) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1); Message_StartTextbox(play, 0x10A2, &this->actor); this->unk_300 = 0x10A2; @@ -287,7 +287,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { play->interfaceCtx.minigameState = 1; Interface_InitMinigame(play); gSaveContext.save.weekEventReg[90] |= 0x20; - Interface_StartTimer(TIMER_ID_4, 120); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 120); this->actionFunc = func_80C1418C; } @@ -352,7 +352,7 @@ void func_80C14230(EnJgameTsn* this, PlayState* play) { func_80C14030(this); } - if (gSaveContext.timerCurTime[TIMER_ID_4] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x10A1, &this->actor); this->unk_300 = 0x10A1; player->stateFlags1 |= 0x20; @@ -479,7 +479,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { case 0x10A1: func_801477B4(play); gSaveContext.minigameState = 3; - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; gSaveContext.save.weekEventReg[90] &= (u8)~0x20; func_80C144E4(this); break; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index abb37120b..687d3ca50 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -674,7 +674,7 @@ void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { // "You're feeling confident" Message_StartTextbox(play, 0x336E, &this->actor); this->actionFunc = EnMa4_HorsebackGameTalking; - } else if (gSaveContext.timerCurTime[TIMER_ID_4] < SECONDS_TO_TIMER(115)) { + } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(115)) { func_800B8614(&this->actor, play, 100.0f); } } @@ -689,7 +689,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); play->interfaceCtx.minigameState = 1; - Interface_StartTimer(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); gSaveContext.save.weekEventReg[8] |= 1; Interface_InitMinigame(play); player->stateFlags1 |= 0x20; @@ -717,8 +717,9 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { play->interfaceCtx.unk_25C = 1; } - if ((gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) || (this->poppedBalloonCounter == 10)) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) || + (this->poppedBalloonCounter == 10)) { + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; EnMa4_SetupHorsebackGameEnd(this, play); D_80AC0258 = 0; } @@ -897,13 +898,13 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { gSaveContext.save.weekEventReg[21] |= 0x40; } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Too bad Grasshopper" EnMa4_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x336D, &this->actor); this->textId = 0x336D; } else { - time = gSaveContext.timerCurTime[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // [Score] New record! gSaveContext.save.horseBackBalloonHighScore = time; @@ -942,12 +943,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3354, &this->actor); this->textId = 0x3354; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.timerCurTime[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); @@ -969,12 +970,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3358, &this->actor); this->textId = 0x3358; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_4] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.timerCurTime[TIMER_ID_4]; + time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // New record gSaveContext.save.horseBackBalloonHighScore = time; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index d81e74836..a7313f808 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -253,7 +253,7 @@ s32 EnMttag_ExitRace(PlayState* play, s32 transitionType, s32 nextTransitionType * Displays the text which says that the player has made a false start. */ void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; Message_StartTextbox(play, 0xE95, NULL); // An entrant made a false start func_800B7298(play, &this->actor, 7); Audio_QueueSeqCmd(0x101400FF); @@ -314,7 +314,7 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { gSaveContext.eventInf[1] |= 8; } else { if (DECR(this->timer) == 60) { - Interface_StartTimer(TIMER_ID_4, 0); + Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); play->interfaceCtx.minigameState = 1; Audio_QueueSeqCmd(NA_BGM_GORON_RACE | 0x8000); play->envCtx.unk_E4 = 0xFE; @@ -359,14 +359,14 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { s32 playerCheatStatus; if (EnMttag_IsInFinishLine(playerPos)) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; gSaveContext.eventInf[1] |= 2; this->actionFunc = EnMttag_RaceFinish; } else if (EnMttag_IsAnyRaceGoronOverFinishLine(this)) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; @@ -457,7 +457,7 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { if (play->msgCtx.choiceIndex != 0) { // Exit the race func_8019F230(); - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_OFF; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); gSaveContext.eventInf[1] &= (u8)~8; gSaveContext.eventInf[1] |= 4; @@ -503,8 +503,8 @@ void EnMttag_Init(Actor* thisx, PlayState* play) { void EnMttag_Destroy(Actor* thisx, PlayState* play) { EnMttag* this = THIS; - if (gSaveContext.timerState[TIMER_ID_4] != TIMER_STATE_6) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + if (gSaveContext.timerState[TIMER_ID_MINIGAME_2] != TIMER_STATE_6) { + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } } diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c index 65200e44e..b87244aaf 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c @@ -271,7 +271,7 @@ void func_80A2C2E0(EnSyatekiDekunuts* this, PlayState* play) { void func_80A2C33C(EnSyatekiDekunuts* this, PlayState* play) { EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent; - if ((gSaveContext.timerCurTime[TIMER_ID_1] <= SECONDS_TO_TIMER(0)) || + if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] <= SECONDS_TO_TIMER(0)) || (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING)) { func_80A2C3AC(this); } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 05471caef..85ebfb3a4 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1012,7 +1012,7 @@ void EnSyatekiMan_Swamp_StartGame(EnSyatekiMan* this, PlayState* play) { this->guayHitCounter = 0; this->currentWave = 0; this->perGameVar2.bonusDekuScrubHitCounter = 0; - Interface_StartTimer(TIMER_ID_1, 100); + Interface_StartTimer(TIMER_ID_MINIGAME_1, 100); this->actor.draw = NULL; this->actionFunc = EnSyatekiMan_Swamp_RunGame; } @@ -1061,9 +1061,9 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { this->perGameVar1.guaySpawnTimer++; - if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->actor.draw = EnSyatekiMan_Draw; this->flagsIndex = 0; this->currentWave = 0; @@ -1082,10 +1082,10 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_GIVING_BONUS; if (this->score == 2120) { Interface_SetPerfectMinigame(play, 2); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_6; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_6; this->actionFunc = EnSyatekiMan_Swamp_AddBonusPoints; } else { - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->actionFunc = EnSyatekiMan_Swamp_EndGame; } } @@ -1148,15 +1148,15 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { player->stateFlags1 |= 0x20; if (!play->interfaceCtx.isMinigamePerfect) { - if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->flagsIndex = 0; this->currentWave = 0; this->actionFunc = EnSyatekiMan_Swamp_EndGame; sBonusTimer = 0; } else if (sBonusTimer > 10) { - gSaveContext.timerEndOsTime[TIMER_ID_1] += 100; + gSaveContext.timerEndOsTime[TIMER_ID_MINIGAME_1] += 100; play->interfaceCtx.unk_25C += 10; this->score += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); @@ -1220,7 +1220,7 @@ void EnSyatekiMan_Town_StartGame(EnSyatekiMan* this, PlayState* play) { this->perGameVar1.octorokState = SG_OCTO_STATE_INITIAL; this->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_NONE; sGameStartTimer = 30; - Interface_StartTimer(TIMER_ID_1, 75); + Interface_StartTimer(TIMER_ID_MINIGAME_1, 75); this->actor.draw = NULL; this->actionFunc = EnSyatekiMan_Town_RunGame; } @@ -1292,7 +1292,7 @@ static const s32 sOctorokFlagsPerWave[] = { void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { static s32 sModFromLosingTime = 0; Player* player = GET_PLAYER(play); - s32 timer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) * 0.1f) + 1.0f; // unit is tenths of a second + s32 timer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) * 0.1f) + 1.0f; // unit is tenths of a second if (timer <= 750) { s32 waveTimer; // unit is hundredths of a second @@ -1302,9 +1302,9 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { // begin hiding. This code will ultimately correct waveTimer such that its value is not affected by // hitting Blue Octoroks. if (sModFromLosingTime == 0) { - waveTimer = ((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) % SECONDS_TO_TIMER(5); + waveTimer = ((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) % SECONDS_TO_TIMER(5); } else { - waveTimer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_1]) + SECONDS_TO_TIMER_PRECISE(2, 50)) % + waveTimer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) + SECONDS_TO_TIMER_PRECISE(2, 50)) % SECONDS_TO_TIMER(5); } @@ -1315,7 +1315,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { if (this->perGameVar2.octorokHitType != SG_OCTO_HIT_TYPE_NONE) { if (this->perGameVar2.octorokHitType == SG_OCTO_HIT_TYPE_BLUE) { - gSaveContext.timerCurSubTime[TIMER_ID_1] -= SECONDS_TO_TIMER_PRECISE(2, 50); + gSaveContext.timerTimeLimit[TIMER_ID_MINIGAME_1] -= SECONDS_TO_TIMER_PRECISE(2, 50); sModFromLosingTime = (sModFromLosingTime + 25) % 50; } @@ -1337,11 +1337,11 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { } } - if (gSaveContext.timerCurTime[TIMER_ID_1] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { this->flagsIndex = 0; this->perGameVar1.octorokState = SG_OCTO_STATE_HIDING; - gSaveContext.timerCurTime[TIMER_ID_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_1] = TIMER_STATE_STOP; + gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; player->stateFlags1 |= 0x20; sModFromLosingTime = 0; this->actor.draw = EnSyatekiMan_Draw; diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index 59696baec..8c1e953c6 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -45,14 +45,14 @@ void ObjRoomtimer_Init(Actor* thisx, PlayState* play) { void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { ObjRoomtimer* this = THIS; - if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_4] >= TIMER_STATE_1) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_MINIGAME_2] >= TIMER_STATE_START) { + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } } void func_80973CD8(ObjRoomtimer* this, PlayState* play) { if (this->actor.params != 0x1FF) { - Interface_StartTimer(TIMER_ID_4, this->actor.params); + Interface_StartTimer(TIMER_ID_MINIGAME_2, this->actor.params); } func_800BC154(play, &play->actorCtx, &this->actor, ACTORCAT_PROP); @@ -62,11 +62,11 @@ void func_80973CD8(ObjRoomtimer* this, PlayState* play) { void func_80973D3C(ObjRoomtimer* this, PlayState* play) { if (Flags_GetClearTemp(play, this->actor.room)) { if (this->actor.params != 0x1FF) { - gSaveContext.timerState[TIMER_ID_4] = TIMER_STATE_STOP; + gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } ActorCutscene_SetIntentToPlay(this->actor.cutscene); this->actionFunc = func_80973DE0; - } else if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_4] == TIMER_STATE_OFF) { + } else if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_OFF) { play_sound(NA_SE_OC_ABYSS); func_80169EFC(&play->state); Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 6653daacd..7daf61521 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -517,7 +517,7 @@ void MapSelect_UpdateMenu(MapSelectState* this) { for (i = 0; i < ARRAY_COUNT(gSaveContext.timerPausedOsTime); i++) { gSaveContext.timerState[i] = TIMER_STATE_OFF; gSaveContext.timerCurTime[i] = 0; - gSaveContext.timerCurSubTime[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTime[i] = 0; gSaveContext.timerEndOsTime[i] = 0; gSaveContext.timerPausedOsTime[i] = 0; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index c8e1781ae..4a8f47044 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1164,8 +1164,8 @@ 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), 0x801BFCE8:("sTimerDigits","u16","[8]",0x10), 0x801BFCF8:("sTimerBeepSfxSeconds","UNK_TYPE4","",0x4), - 0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4), - 0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4), + 0x801BFCFC:("sTimerDigitsOffsetX","UNK_TYPE4","",0x4), + 0x801BFD0C:("sTimerDigitsWidth","UNK_TYPE4","",0x4), 0x801BFD1C:("D_801BFD1C","UNK_TYPE1","",0x1), 0x801BFD24:("D_801BFD24","UNK_TYPE1","",0x1), 0x801BFD2C:("D_801BFD2C","UNK_TYPE1","",0x1), From 85df65eb17d00df185a3a53d59e58c12cbc8630e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 22 Aug 2022 12:45:23 -0400 Subject: [PATCH 133/160] fix bss --- src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c | 1 - src/overlays/actors/ovl_En_Kusa/z_en_kusa.c | 1 - 2 files changed, 2 deletions(-) diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index c351f83c6..2ac167235 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -4,7 +4,6 @@ * Description: Ranch nighttime actors */ -#include "prevent_bss_reordering.h" #include "z_en_invadepoh.h" #include "overlays/actors/ovl_En_Door/z_en_door.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index dc3ecc56c..caba3b8a7 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -4,7 +4,6 @@ * Description: Grass / Bush */ -#include "prevent_bss_reordering.h" #include "z_en_kusa.h" #include "objects/object_kusa/object_kusa.h" #include "objects/gameplay_keep/gameplay_keep.h" From c3d51994b39b26a4551f36c4835f8f6d2ca49e95 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 22 Aug 2022 12:53:04 -0400 Subject: [PATCH 134/160] gfx functions first attempt --- include/functions.h | 18 +-- src/code/z_parameter.c | 197 ++++++++++++++++++--------------- tools/disasm/functions.txt | 18 +-- tools/sizes/code_functions.csv | 18 +-- 4 files changed, 132 insertions(+), 119 deletions(-) diff --git a/include/functions.h b/include/functions.h index f590371c1..aeb3b3b4f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1806,15 +1806,15 @@ Vec3f* OLib_Vec3fDiffDegF(Vec3f* dest, Vec3f* a, Vec3f* b); Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b); void OLib_DbCameraVec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); -// void Gfx_TextureRGBA16(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void Gfx_TextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void func_8010CFBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); -// void func_8010D2D4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11); -// void func_8010D480(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16); -// void Gfx_TextureI8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void func_8010D9F4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); -// void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); -// void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); +// void Gfx_DrawRectTextureRGBA16(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_DrawRectTextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_DrawRectTextureIA8_DropShadow(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); +// void Gfx_DrawRect_DropShadow(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11); +// void Gfx_DrawRectTextureIA8_DropShadowOffset(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16); +// void Gfx_DrawRectTextureI8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); +// void Gfx_DrawRectTexture(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); +// void Gfx_DrawQuadTextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); +// void Gfx_DrawQuadTexture(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); // void Interface_InitVertices(void); // void Interface_PostmanTimerCallback(void); void Interface_StartTimer(s16 timerId, s16 timeLimit); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index eea8fc922..0dc27d931 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -235,8 +235,8 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -247,8 +247,8 @@ Gfx* Gfx_TextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s1 return displayListHead; } -Gfx* Gfx_TextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -259,8 +259,9 @@ Gfx* Gfx_TextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 t return displayListHead; } -Gfx* func_8010CFBC(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { +Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, + s16 r, s16 g, s16 b, s16 a) { s16 temp_var = a; if (a > 100) { @@ -286,8 +287,8 @@ Gfx* func_8010CFBC(Gfx* displayListHead, void* texture, s16 textureWidth, s16 te return displayListHead; } -Gfx* func_8010D2D4(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, - s16 r, s16 g, s16 b, s16 a) { +Gfx* Gfx_DrawRect_DropShadow(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, + u16 dtdy, s16 r, s16 g, s16 b, s16 a) { s16 temp_var = a; if (a > 100) { @@ -308,8 +309,9 @@ Gfx* func_8010D2D4(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidt return displayListHead; } -Gfx* func_8010D480(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 argE, s32 argF) { +Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, + u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 argE, s32 argF) { s16 temp_var = a; if (a > 100) { @@ -334,8 +336,8 @@ Gfx* func_8010D480(Gfx* displayListHead, void* texture, s16 textureWidth, s16 te return displayListHead; } -Gfx* Gfx_TextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -346,8 +348,9 @@ Gfx* Gfx_TextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 te return displayListHead; } -Gfx* func_8010D9F4(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, + u16 dtdy) { gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, cms, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -357,7 +360,7 @@ Gfx* func_8010D9F4(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidt return displayListHead; } -Gfx* func_8010DC58(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 i) { +Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 i) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -367,7 +370,7 @@ Gfx* func_8010DC58(Gfx* displayListHead, void* texture, s16 textureWidth, s16 te return displayListHead; } -Gfx* func_8010DE38(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 i) { +Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 i) { gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -3613,17 +3616,17 @@ void Magic_DrawMeter(PlayState* play) { gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); - OVERLAY_DISP = func_8010CFBC(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, - sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, - interfaceCtx->magicAlpha); - OVERLAY_DISP = - func_8010CFBC(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, ((void)0, gSaveContext.magicCapacity), - 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, - sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); - OVERLAY_DISP = - func_8010D480(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, ((void)0, gSaveContext.magicCapacity) + 26, magicBarY, - 8, 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, - sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); + OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow( + OVERLAY_DISP, gMagicMeterEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, + sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); + OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, + ((void)0, gSaveContext.magicCapacity), 16, 1 << 10, 1 << 10, + sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, + sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); + OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadowOffset( + OVERLAY_DISP, gMagicMeterEndTex, 8, 16, ((void)0, gSaveContext.magicCapacity) + 26, magicBarY, 8, 16, + 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, + interfaceCtx->magicAlpha, 3, 0x100); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE, PRIMITIVE, @@ -3722,26 +3725,29 @@ void Interface_DrawItemButtons(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); // B Button Color & Texture - OVERLAY_DISP = - func_8010CFBC(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], D_801BF9DC[0], D_801BFAF4[0], - D_801BFAF4[0], D_801BF9E4[0] * 2, D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); + OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], + D_801BF9DC[0], D_801BFAF4[0], D_801BFAF4[0], D_801BF9E4[0] * 2, + D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); if (1) {} gDPPipeSync(OVERLAY_DISP++); // C-Left Button Color & Texture - OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D4[1], D_801BF9DC[1], D_801BFAF4[1], D_801BFAF4[1], - D_801BF9E4[1] * 2, D_801BF9E4[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cLeftAlpha); + OVERLAY_DISP = + Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D4[1], D_801BF9DC[1], D_801BFAF4[1], D_801BFAF4[1], + D_801BF9E4[1] * 2, D_801BF9E4[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cLeftAlpha); // C-Down Button Color & Texture - OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D8[0], D_801BF9E0[0], D_801BFAF8[0], D_801BFAF8[0], - D_801BF9E8[0] * 2, D_801BF9E8[0] * 2, 0xFF, 0xF0, 0, interfaceCtx->cDownAlpha); + OVERLAY_DISP = + Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[0], D_801BF9E0[0], D_801BFAF8[0], D_801BFAF8[0], + D_801BF9E8[0] * 2, D_801BF9E8[0] * 2, 0xFF, 0xF0, 0, interfaceCtx->cDownAlpha); // C-Right Button Color & Texture - OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, D_801BF9D8[1], D_801BF9E0[1], D_801BFAF8[1], D_801BFAF8[1], - D_801BF9E8[1] * 2, D_801BF9E8[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cRightAlpha); + OVERLAY_DISP = + Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[1], D_801BF9E0[1], D_801BFAF8[1], D_801BFAF8[1], + D_801BF9E8[1] * 2, D_801BF9E8[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cRightAlpha); if ((pauseCtx->state < 8) || (pauseCtx->state >= 19)) { if ((play->pauseCtx.state != 0) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { - OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, 0x88, 0x11, 0x16, 0x16, 0x5B6, 0x5B6, 0xFF, 0x82, 0x3C, - interfaceCtx->startAlpha); + OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, 0x88, 0x11, 0x16, 0x16, 0x5B6, 0x5B6, 0xFF, 0x82, 0x3C, + interfaceCtx->startAlpha); // Start Button Texture, Color & Label gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha); @@ -3771,7 +3777,8 @@ void Interface_DrawItemButtons(PlayState* play) { temp = interfaceCtx->aAlpha; } - OVERLAY_DISP = func_8010D2D4(OVERLAY_DISP, 0xFE, 0x10, 0x10, 0x10, 0x800, 0x800, 0xFF, 0xF0, 0, temp); + OVERLAY_DISP = + Gfx_DrawRect_DropShadow(OVERLAY_DISP, 0xFE, 0x10, 0x10, 0x10, 0x800, 0x800, 0xFF, 0xF0, 0, temp); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, temp); @@ -3804,9 +3811,9 @@ void Interface_DrawItemButtons(PlayState* play) { } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cRightAlpha); } - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), 0x20, - 0x20, D_801BF9D4[temp], D_801BF9DC[temp], D_801BFAF4[temp], D_801BFAF4[temp], - D_801BF9E4[temp] * 2, D_801BF9E4[temp] * 2); + OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), + 0x20, 0x20, D_801BF9D4[temp], D_801BF9DC[temp], D_801BFAF4[temp], + D_801BFAF4[temp], D_801BF9E4[temp] * 2, D_801BF9E4[temp] * 2); } } @@ -3882,12 +3889,12 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { } if (i) { - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, D_801BFB04[button], - D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, + D_801BFB04[button], D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, - D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, + D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } CLOSE_DISPS(play->state.gfxCtx); @@ -4049,7 +4056,7 @@ void func_80118BA4(PlayState* play) { gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, aAlpha); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); + OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); func_80116FD8(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); @@ -4073,11 +4080,11 @@ void func_80118BA4(PlayState* play) { // Draw Action Label if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { - OVERLAY_DISP = - func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, + DO_ACTION_TEX_HEIGHT, 0); } else { - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, 3, - DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, 3, + DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); } CLOSE_DISPS(play->state.gfxCtx); @@ -4282,8 +4289,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, 180, - 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, + 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); /** * Draw Clock's Border @@ -4297,8 +4304,8 @@ void Interface_DrawClock(PlayState* play) { //! resulting in this reading into the next texture. This results in a white //! dot in the bottom center of the clock. For the three-day clock, this is //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, - 50, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, + 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && @@ -4380,8 +4387,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, 190, - 40, 32, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, + 140, 190, 40, 32, 1 << 10, 1 << 10); /** * Draw Three-Day Clock's Day-Number over Diamond @@ -4389,8 +4396,9 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, - 27, 137, 192, 48, 27, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, + 137, 192, 48, 27, 1 << 10, 1 << 10); /** * Draw Three-Day Clock's Star for the Minute Tracker @@ -4472,7 +4480,7 @@ void Interface_DrawClock(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); + OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); /** * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker @@ -4490,7 +4498,7 @@ void Interface_DrawClock(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); + OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); /** * Cuts off Three-Day Clock's Hour Digits when they dip below the clock @@ -4517,7 +4525,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); @@ -4541,7 +4549,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); @@ -4625,8 +4633,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, sFinalHoursClockFrameEnvGreen, sFinalHoursClockFrameEnvBlue, 0); - OVERLAY_DISP = func_8010D9F4(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, - 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, + 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); finalHoursClockSlots[0] = 0; @@ -4679,8 +4687,9 @@ void Interface_DrawClock(PlayState* play) { for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { index = D_801BFC40[sp1C6]; - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], - 8, 8, index, 205, 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, + 8, index, 205, 8, 8, 1 << 10, 1 << 10); } } } @@ -5157,7 +5166,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x2C, 4, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->unk_2FC[0], interfaceCtx->unk_2FC[1], @@ -5169,7 +5178,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x4C, 4, 0); - OVERLAY_DISP = func_8010DE38(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); } } @@ -5586,9 +5595,9 @@ void Interface_DrawTimers(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); - OVERLAY_DISP = - Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[sTimerId]), - ((void)0, gSaveContext.timerY[sTimerId]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureIA8( + OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[sTimerId]), + ((void)0, gSaveContext.timerY[sTimerId]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -5635,7 +5644,7 @@ void Interface_DrawTimers(PlayState* play) { if (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON) { // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[6] (100s of milliseconds) for (j = 0; j < 4; j++) { - OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP = Gfx_DrawRectTextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -5643,7 +5652,7 @@ void Interface_DrawTimers(PlayState* play) { } else { // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 5; j++) { - OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP = Gfx_DrawRectTextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -5652,7 +5661,7 @@ void Interface_DrawTimers(PlayState* play) { } else { // draw sTimerDigits[3] (6s of minutes) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 8; j++) { - OVERLAY_DISP = Gfx_TextureI8( + OVERLAY_DISP = Gfx_DrawRectTextureI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -5829,9 +5838,9 @@ void Interface_DrawMinigameIcons(PlayState* play) { for (sp42 = sp40 = 0; sp42 < 4; sp42++) { if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) { - OVERLAY_DISP = - Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8, - 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_DrawRectTextureI8( + OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8, 0x10, sp3E, + sp3C - 2, 9, 0xFA, 0x370, 0x370); sp3E += 9; sp40++; } @@ -5944,7 +5953,8 @@ void Interface_Draw(PlayState* play) { D_801BFD2C[CUR_UPG_VALUE(4)].b, interfaceCtx->magicAlpha); gDPSetEnvColor(OVERLAY_DISP++, D_801BFD40[CUR_UPG_VALUE(4)].r, D_801BFD40[CUR_UPG_VALUE(4)].g, D_801BFD40[CUR_UPG_VALUE(4)].b, 255); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); switch (play->sceneNum) { case SCENE_INISIE_N: @@ -5957,8 +5967,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255); - OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, 16, - 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, + 16, 1 << 10, 1 << 10); // Small Key Counter gDPPipeSync(OVERLAY_DISP++); @@ -5979,8 +5989,9 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), - 8, 16, 43, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, + 16, 43, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -5993,8 +6004,9 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, - 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, 16, + sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6033,8 +6045,9 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, - 16, 43, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = + Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, 16, + 43, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6046,8 +6059,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, 16, - sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), + 8, 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6093,8 +6106,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sp4C); - OVERLAY_DISP = Gfx_TextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), 8, 16, - sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), + 8, 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -6161,7 +6174,7 @@ void Interface_Draw(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x28], 4, 0); - OVERLAY_DISP = func_8010DC58(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); + OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); } } else { Interface_DrawClock(play); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 90f05eff2..877ea0869 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2083,15 +2083,15 @@ 0x8010C930:("OLib_Vec3fDiffBinAng",), 0x8010C9C8:("OLib_DbCameraVec3fDiff",), 0x8010CAA0:("OLib_DbCameraVec3fSum",), - 0x8010CB80:("Gfx_TextureRGBA16",), - 0x8010CD98:("Gfx_TextureIA8",), - 0x8010CFBC:("func_8010CFBC",), - 0x8010D2D4:("func_8010D2D4",), - 0x8010D480:("func_8010D480",), - 0x8010D7D0:("Gfx_TextureI8",), - 0x8010D9F4:("func_8010D9F4",), - 0x8010DC58:("func_8010DC58",), - 0x8010DE38:("func_8010DE38",), + 0x8010CB80:("Gfx_DrawRectTextureRGBA16",), + 0x8010CD98:("Gfx_DrawRectTextureIA8",), + 0x8010CFBC:("Gfx_DrawRectTextureIA8_DropShadow",), + 0x8010D2D4:("Gfx_DrawRect_DropShadow",), + 0x8010D480:("Gfx_DrawRectTextureIA8_DropShadowOffset",), + 0x8010D7D0:("Gfx_DrawRectTextureI8",), + 0x8010D9F4:("Gfx_DrawRectTexture",), + 0x8010DC58:("Gfx_DrawQuadTextureIA8",), + 0x8010DE38:("Gfx_DrawQuadTexture",), 0x8010E028:("Interface_InitVertices",), 0x8010E968:("Interface_PostmanTimerCallback",), 0x8010E9F0:("Interface_StartTimer",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 127780c0f..d12ed4e38 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1597,15 +1597,15 @@ asm/non_matchings/code/z_olib/OLib_Vec3fDiffDegF.s,OLib_Vec3fDiffDegF,0x8010C8C8 asm/non_matchings/code/z_olib/OLib_Vec3fDiffBinAng.s,OLib_Vec3fDiffBinAng,0x8010C930,0x26 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fDiff.s,OLib_DbCameraVec3fDiff,0x8010C9C8,0x36 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fSum.s,OLib_DbCameraVec3fSum,0x8010CAA0,0x34 -asm/non_matchings/code/z_parameter/Gfx_TextureRGBA16.s,Gfx_TextureRGBA16,0x8010CB80,0x86 -asm/non_matchings/code/z_parameter/Gfx_TextureIA8.s,Gfx_TextureIA8,0x8010CD98,0x89 -asm/non_matchings/code/z_parameter/func_8010CFBC.s,func_8010CFBC,0x8010CFBC,0xC6 -asm/non_matchings/code/z_parameter/func_8010D2D4.s,func_8010D2D4,0x8010D2D4,0x6B -asm/non_matchings/code/z_parameter/func_8010D480.s,func_8010D480,0x8010D480,0xD4 -asm/non_matchings/code/z_parameter/Gfx_TextureI8.s,Gfx_TextureI8,0x8010D7D0,0x89 -asm/non_matchings/code/z_parameter/func_8010D9F4.s,func_8010D9F4,0x8010D9F4,0x99 -asm/non_matchings/code/z_parameter/func_8010DC58.s,func_8010DC58,0x8010DC58,0x78 -asm/non_matchings/code/z_parameter/func_8010DE38.s,func_8010DE38,0x8010DE38,0x7C +asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureRGBA16.s,Gfx_DrawRectTextureRGBA16,0x8010CB80,0x86 +asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8.s,Gfx_DrawRectTextureIA8,0x8010CD98,0x89 +asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8_DropShadow.s,Gfx_DrawRectTextureIA8_DropShadow,0x8010CFBC,0xC6 +asm/non_matchings/code/z_parameter/Gfx_DrawRect_DropShadow.s,Gfx_DrawRect_DropShadow,0x8010D2D4,0x6B +asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8_DropShadowOffset.s,Gfx_DrawRectTextureIA8_DropShadowOffset,0x8010D480,0xD4 +asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureI8.s,Gfx_DrawRectTextureI8,0x8010D7D0,0x89 +asm/non_matchings/code/z_parameter/Gfx_DrawRectTexture.s,Gfx_DrawRectTexture,0x8010D9F4,0x99 +asm/non_matchings/code/z_parameter/Gfx_DrawQuadTextureIA8.s,Gfx_DrawQuadTextureIA8,0x8010DC58,0x78 +asm/non_matchings/code/z_parameter/Gfx_DrawQuadTexture.s,Gfx_DrawQuadTexture,0x8010DE38,0x7C asm/non_matchings/code/z_parameter/Interface_InitVertices.s,Interface_InitVertices,0x8010E028,0x250 asm/non_matchings/code/z_parameter/Interface_PostmanTimerCallback.s,Interface_PostmanTimerCallback,0x8010E968,0x22 asm/non_matchings/code/z_parameter/Interface_StartTimer.s,Interface_StartTimer,0x8010E9F0,0x2B From dc7c5ec6344a97ca4bfc4f7b1384ebf48f05b9e2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 22 Aug 2022 13:16:32 -0400 Subject: [PATCH 135/160] more docs --- include/functions.h | 4 +- src/code/z_parameter.c | 89 ++++++++++++++++------------------ tools/disasm/functions.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 4 files changed, 49 insertions(+), 52 deletions(-) diff --git a/include/functions.h b/include/functions.h index aeb3b3b4f..0d1ec6962 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1854,8 +1854,8 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(PlayState* play, s16 magicToAdd); void Magic_Reset(PlayState* play); s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type); -// void func_80116FD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void func_801170B8(void); +// void Interface_SetView1(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); +// void Interface_SetView2(void); // void Interface_DrawItemButtons(void); // void Interface_DrawItemIconTexture(void); // void Interface_DrawAmmoCount(void); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 0dc27d931..9dcd87e20 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -262,14 +262,14 @@ Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidt Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { - s16 temp_var = a; + s16 dropShadowAlpha = a; if (a > 100) { - temp_var = 100; + dropShadowAlpha = 100; } gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -289,14 +289,14 @@ Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, void* texture, s16 Gfx* Gfx_DrawRect_DropShadow(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { - s16 temp_var = a; + s16 dropShadowAlpha = a; if (a > 100) { - temp_var = 100; + dropShadowAlpha = 100; } gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); @@ -311,27 +311,27 @@ Gfx* Gfx_DrawRect_DropShadow(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s1 Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, - u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 argE, s32 argF) { - s16 temp_var = a; + u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { + s16 dropShadowAlpha = a; if (a > 100) { - temp_var = 100; + dropShadowAlpha = 100; } gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, temp_var); + gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, - G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, argE, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, - (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, argF, 0, dsdx, dtdy); + (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); gDPPipeSync(displayListHead++); gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, argF, 0, dsdx, dtdy); + (rectTop + rectHeight) * 4, G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); return displayListHead; } @@ -360,21 +360,21 @@ Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textu return displayListHead; } -Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 i) { +Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSP1Quadrangle(displayListHead++, i, i + 2, i + 3, i + 1, 0); + gSP1Quadrangle(displayListHead++, point, point + 2, point + 3, point + 1, 0); return displayListHead; } -Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 i) { +Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSP1Quadrangle(displayListHead++, i, i + 2, i + 3, i + 1, 0); + gSP1Quadrangle(displayListHead++, point, point + 2, point + 3, point + 1, 0); return displayListHead; } @@ -383,13 +383,13 @@ s16 D_801BFA04[] = { -14, -14, -24, -8, -12, -12, -7, -8, -7, -8, -12, 0, }; s16 D_801BFA1C[] = { - 0x1C, 0x1C, 0x30, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x18, 0, + 28, 28, 48, 16, 24, 24, 16, 16, 16, 16, 24, 0, }; s16 D_801BFA34[] = { 14, 14, 8, 24, -82, -82, 58, 59, 58, 59, 32, 0, }; s16 D_801BFA4C[] = { - 0x1C, 0x1C, 0x10, 0x10, 0x18, 0x18, 0xB, 0xB, 0xB, 0xB, 0x20, 0, + 28, 28, 16, 16, 24, 24, 11, 11, 11, 11, 32, 0, }; s16 D_801BFA64[] = { -61, -45, 29, 104, -117, -42, 32, 55, @@ -397,7 +397,6 @@ s16 D_801BFA64[] = { s16 D_801BFA74[] = { 1, -70, -99, -70, 71, 101, 72, 1, }; - void Interface_InitVertices(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; @@ -1767,26 +1766,24 @@ void func_80110038(PlayState* play) { } } } - } else { - if (interfaceCtx->restrictions.bButton != 0) { - if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } - - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; - - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - } - phi_t3 = true; - } - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + } else if (interfaceCtx->restrictions.bButton != 0) { + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - phi_t3 = true; } + + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); + } + phi_t3 = true; + } + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + phi_t3 = true; } } } @@ -1949,7 +1946,7 @@ void func_80111CB4(PlayState* play) { sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { - gSaveContext.hudVisibilityForceButtonAlphasByStatus = 0; + gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && @@ -3673,7 +3670,7 @@ void Magic_DrawMeter(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void func_80116FD8(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { +void Interface_SetView1(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Vec3f eye; Vec3f lookAt; @@ -3697,7 +3694,7 @@ void func_80116FD8(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 rightX func_8013FD74(&interfaceCtx->view); } -void func_801170B8(InterfaceContext* interfaceCtx) { +void Interface_SetView2(InterfaceContext* interfaceCtx) { SET_FULLSCREEN_VIEWPORT(&interfaceCtx->view); func_8013FBC8(&interfaceCtx->view); } @@ -4041,7 +4038,7 @@ void func_80118BA4(PlayState* play) { func_8012C8D4(play->state.gfxCtx); - func_80116FD8(play, XREG(31) + 0x19, XREG(31) + 0x46, 192, 237); + Interface_SetView1(play, XREG(31) + 0x19, XREG(31) + 0x46, 192, 237); gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -4059,13 +4056,13 @@ void func_80118BA4(PlayState* play) { OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); - func_80116FD8(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); + Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); gDPPipeSync(OVERLAY_DISP++); - func_80116FD8(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); + Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -4104,7 +4101,7 @@ void func_80119030(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); - func_801170B8(interfaceCtx); + Interface_SetView2(interfaceCtx); if (pauseCtx->state == 6) { if ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF)) { @@ -5920,7 +5917,7 @@ void Interface_Draw(PlayState* play) { if (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) { Interface_InitVertices(play); - func_801170B8(interfaceCtx); + Interface_SetView2(interfaceCtx); if (interfaceCtx->storyState == 2) { gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->storySegment); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 877ea0869..09f07e809 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2141,8 +2141,8 @@ 0x80116114:("Magic_FlashMeterBorder",), 0x80116348:("Magic_Update",), 0x80116918:("Magic_DrawMeter",), - 0x80116FD8:("func_80116FD8",), - 0x801170B8:("func_801170B8",), + 0x80116FD8:("Interface_SetView1",), + 0x801170B8:("Interface_SetView2",), 0x80117100:("Interface_DrawItemButtons",), 0x80117A20:("Interface_DrawItemIconTexture",), 0x80117BD0:("Interface_DrawAmmoCount",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index d12ed4e38..139cf0bb3 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1655,8 +1655,8 @@ asm/non_matchings/code/z_parameter/Magic_UpdateAddRequest.s,Magic_UpdateAddReque asm/non_matchings/code/z_parameter/Magic_FlashMeterBorder.s,Magic_FlashMeterBorder,0x80116114,0x8D asm/non_matchings/code/z_parameter/Magic_Update.s,Magic_Update,0x80116348,0x174 asm/non_matchings/code/z_parameter/Magic_DrawMeter.s,Magic_DrawMeter,0x80116918,0x1B0 -asm/non_matchings/code/z_parameter/func_80116FD8.s,func_80116FD8,0x80116FD8,0x38 -asm/non_matchings/code/z_parameter/func_801170B8.s,func_801170B8,0x801170B8,0x12 +asm/non_matchings/code/z_parameter/Interface_SetView1.s,Interface_SetView1,0x80116FD8,0x38 +asm/non_matchings/code/z_parameter/Interface_SetView2.s,Interface_SetView2,0x801170B8,0x12 asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 asm/non_matchings/code/z_parameter/Interface_DrawItemIconTexture.s,Interface_DrawItemIconTexture,0x80117A20,0x6C asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s,Interface_DrawAmmoCount,0x80117BD0,0x12D From c330a7e0156a9468fda039bd971e1e521750bf1f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Fri, 26 Aug 2022 13:04:45 -0400 Subject: [PATCH 136/160] sync with timers PR --- include/z64save.h | 24 +- src/code/code_8012EC80.c | 2 +- src/code/z_game_over.c | 2 +- src/code/z_parameter.c | 298 +++++++++--------- src/code/z_sram_NES.c | 28 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 4 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 18 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 8 +- .../z_en_horse_game_check.c | 12 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 6 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 18 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 28 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 12 +- .../z_en_syateki_dekunuts.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 33 +- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 4 +- .../ovl_Obj_Roomtimer/z_obj_roomtimer.c | 8 +- src/overlays/gamestates/ovl_select/z_select.c | 14 +- 19 files changed, 264 insertions(+), 261 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index a76b11339..ef3dec683 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -88,7 +88,7 @@ typedef enum { /* 4 */ TIMER_STATE_COUNTING, /* 5 */ TIMER_STATE_STOP, /* 6 */ TIMER_STATE_6, // like `TIMER_STATE_STOP` but with extra minigame checks - /* 7 */ TIMER_STATE_7, // stopped but still update `timerCurTime` + /* 7 */ TIMER_STATE_7, // stopped but still update `timerCurTimes` /* 8 */ TIMER_STATE_ENV_START, /* 9 */ TIMER_STATE_ALT_START, /* 10 */ TIMER_STATE_10, // precursor to `TIMER_STATE_ALT_COUNTING` @@ -294,10 +294,10 @@ typedef struct SaveContext { /* 0x1016 */ u16 jinxTimer; /* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct" /* 0x101A */ u8 bottleTimerState[BOTTLE_MAX]; // "bottle_status", one entry for each bottle - /* 0x1020 */ OSTime bottleTimerStartOsTime[BOTTLE_MAX]; // "bottle_ostime", one entry for each bottle - /* 0x1050 */ u64 bottleTimerCurTimeLimit[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle - /* 0x1080 */ u64 bottleTimerCurTime[BOTTLE_MAX]; // "bottle_time", one entry for each bottle - /* 0x10B0 */ OSTime bottleTimerPausedOsTime[BOTTLE_MAX]; // "bottle_stop_time", one entry for each bottle + /* 0x1020 */ OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // "bottle_ostime", one entry for each bottle + /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle + /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // "bottle_time", one entry for each bottle + /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // "bottle_stop_time", one entry for each bottle /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" @@ -317,13 +317,13 @@ typedef struct SaveContext { /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" /* 0x3DC8 */ OSTime timerOsTime; // "get_time" - /* 0x3DD0 */ u8 timerState[TIMER_ID_MAX]; // "event_fg" - /* 0x3DD7 */ u8 timerDirection[TIMER_ID_MAX]; // "calc_flag" - /* 0x3DE0 */ u64 timerCurTime[TIMER_ID_MAX]; // "event_ostime" - /* 0x3E18 */ u64 timerTimeLimit[TIMER_ID_MAX]; // "event_sub" - /* 0x3E50 */ OSTime timerStartOsTime[TIMER_ID_MAX]; // "func_time" - /* 0x3E88 */ OSTime timerEndOsTime[TIMER_ID_MAX]; // "func_end_time" - /* 0x3EC0 */ OSTime timerPausedOsTime[TIMER_ID_MAX]; // "func_stop_time" + /* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // "event_fg" + /* 0x3DD7 */ u8 timerDirections[TIMER_ID_MAX]; // "calc_flag" + /* 0x3DE0 */ u64 timerCurTimes[TIMER_ID_MAX]; // "event_ostime" + /* 0x3E18 */ u64 timerTimeLimits[TIMER_ID_MAX]; // "event_sub" + /* 0x3E50 */ OSTime timerStartOsTimes[TIMER_ID_MAX]; // "func_time" + /* 0x3E88 */ OSTime timerEndOsTimes[TIMER_ID_MAX]; // "func_end_time" + /* 0x3EC0 */ OSTime timerPausedOsTimes[TIMER_ID_MAX]; // "func_stop_time" /* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp" /* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp" /* 0x3F14 */ s16 unk_3F14; // "character_change" diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 650bc1167..9e821b59c 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -688,7 +688,7 @@ void Inventory_SetMapVisibility(s16 tingleIndex) { void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) { s16 i; - gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTime[timerId]; + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.timerCurTimes[timerId]; for (i = 0; i < 8; i++) { gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 9b93910fb..9fc3dee25 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -25,7 +25,7 @@ void GameOver_Update(PlayState* play) { func_801477B4(play); for (timerId = 0; timerId < TIMER_ID_MAX; timerId++) { - gSaveContext.timerState[timerId] = TIMER_STATE_OFF; + gSaveContext.timerStates[timerId] = TIMER_STATE_OFF; } gSaveContext.eventInf[1] &= ~1; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9dcd87e20..e8afdfad9 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -590,7 +590,7 @@ void Interface_PostmanTimerCallback(s32 arg0) { btnAPressed = CHECK_BTN_ALL(sPostmanTimerInput[0].cur.button, BTN_A); if ((btnAPressed != sPostmanTimerInputBtnAPressed) && btnAPressed) { gSaveContext.timerOsTime = osGetTime(); - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; } sPostmanTimerInputBtnAPressed = btnAPressed; @@ -602,16 +602,16 @@ void Interface_StartTimer(s16 timerId, s16 seconds) { sEnvTimerActive = false; - gSaveContext.timerCurTime[timerId] = SECONDS_TO_TIMER(seconds); - gSaveContext.timerTimeLimit[timerId] = gSaveContext.timerCurTime[timerId]; + gSaveContext.timerCurTimes[timerId] = SECONDS_TO_TIMER(seconds); + gSaveContext.timerTimeLimits[timerId] = gSaveContext.timerCurTimes[timerId]; - if (gSaveContext.timerCurTime[timerId] != SECONDS_TO_TIMER(0)) { - gSaveContext.timerDirection[timerId] = TIMER_COUNT_DOWN; + if (gSaveContext.timerCurTimes[timerId] != SECONDS_TO_TIMER(0)) { + gSaveContext.timerDirections[timerId] = TIMER_COUNT_DOWN; } else { - gSaveContext.timerDirection[timerId] = TIMER_COUNT_UP; + gSaveContext.timerDirections[timerId] = TIMER_COUNT_UP; } - gSaveContext.timerState[timerId] = TIMER_STATE_START; + gSaveContext.timerStates[timerId] = TIMER_STATE_START; } void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { @@ -620,38 +620,38 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { sPostmanBunnyHoodState = bunnyHoodState; - gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(seconds); - gSaveContext.timerTimeLimit[TIMER_ID_POSTMAN] = gSaveContext.timerCurTime[TIMER_ID_POSTMAN]; + gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(seconds); + gSaveContext.timerTimeLimits[TIMER_ID_POSTMAN] = gSaveContext.timerCurTimes[TIMER_ID_POSTMAN]; - if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] != SECONDS_TO_TIMER(0)) { - gSaveContext.timerDirection[TIMER_ID_POSTMAN] = TIMER_COUNT_DOWN; + if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] != SECONDS_TO_TIMER(0)) { + gSaveContext.timerDirections[TIMER_ID_POSTMAN] = TIMER_COUNT_DOWN; } else { - gSaveContext.timerDirection[TIMER_ID_POSTMAN] = TIMER_COUNT_UP; + gSaveContext.timerDirections[TIMER_ID_POSTMAN] = TIMER_COUNT_UP; } - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; - gSaveContext.timerEndOsTime[TIMER_ID_POSTMAN] = 0; - gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN] = 0; + gSaveContext.timerEndOsTimes[TIMER_ID_POSTMAN] = 0; + gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN] = 0; } // Unused, goron race actually uses TIMER_ID_MINIGAME_2 void Interface_StartGoronRaceTimer(s32 arg0) { - if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { // Goron race started if (gSaveContext.eventInf[1] & 1) { - gSaveContext.timerCurTime[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(2, 39); + gSaveContext.timerCurTimes[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(2, 39); } else { - gSaveContext.timerCurTime[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(0, 1); + gSaveContext.timerCurTimes[TIMER_ID_GORON_RACE_UNUSED] = SECONDS_TO_TIMER_PRECISE(0, 1); } } } void Interface_StartBottleTimer(s16 seconds, s16 timerId) { gSaveContext.bottleTimerState[timerId] = BOTTLE_TIMER_STATE_COUNTING; - gSaveContext.bottleTimerCurTime[timerId] = SECONDS_TO_TIMER(seconds); - gSaveContext.bottleTimerCurTimeLimit[timerId] = gSaveContext.bottleTimerCurTime[timerId]; - gSaveContext.bottleTimerStartOsTime[timerId] = osGetTime(); - gSaveContext.bottleTimerPausedOsTime[timerId] = 0; + gSaveContext.bottleTimerCurTimes[timerId] = SECONDS_TO_TIMER(seconds); + gSaveContext.bottleTimerTimeLimits[timerId] = gSaveContext.bottleTimerCurTimes[timerId]; + gSaveContext.bottleTimerStartOsTimes[timerId] = osGetTime(); + gSaveContext.bottleTimerPausedOsTimes[timerId] = 0; sBottleTimerPausedOsTime = 0; } @@ -659,7 +659,7 @@ u32 Interface_GetCompressedTimerDigits(s16 timerId) { u64 time; s16 timerArr[6]; - time = gSaveContext.timerCurTime[timerId]; + time = gSaveContext.timerCurTimes[timerId]; // 6 minutes timerArr[0] = time / SECONDS_TO_TIMER(360); @@ -5223,10 +5223,11 @@ void Interface_GetTimerDigits(u64 timer, s16* timerArr) { timerArr[7] = time; } -#define IS_POSTMAN_TIMER_DRAWN \ - (((sTimerId == TIMER_ID_POSTMAN) && (gSaveContext.timerState[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_COUNTING) && \ - (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_OFF) && \ - (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] < SECONDS_TO_TIMER(3))) || \ +#define IS_POSTMAN_TIMER_DRAWN \ + (((sTimerId == TIMER_ID_POSTMAN) && \ + (gSaveContext.timerStates[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_COUNTING) && \ + (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_OFF) && \ + (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] < SECONDS_TO_TIMER(3))) || \ (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON)) /** @@ -5265,9 +5266,9 @@ void Interface_DrawTimers(PlayState* play) { osTime = osGetTime(); for (j = 0; j < TIMER_ID_MAX; j++) { - if (gSaveContext.timerState[j] == TIMER_STATE_COUNTING) { - gSaveContext.timerPausedOsTime[j] = - gSaveContext.timerPausedOsTime[j] + (osTime - sTimerPausedOsTime); + if (gSaveContext.timerStates[j] == TIMER_STATE_COUNTING) { + gSaveContext.timerPausedOsTimes[j] = + gSaveContext.timerPausedOsTimes[j] + (osTime - sTimerPausedOsTime); } } sIsTimerPaused = false; @@ -5277,7 +5278,7 @@ void Interface_DrawTimers(PlayState* play) { // Process all active timers for (i = 0; i < TIMER_ID_MAX; i++) { - if (gSaveContext.timerState[i] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[i] == TIMER_STATE_OFF) { continue; } @@ -5285,22 +5286,22 @@ void Interface_DrawTimers(PlayState* play) { // Process the timer for the postman counting minigame if (sTimerId == TIMER_ID_POSTMAN) { - switch (gSaveContext.timerState[TIMER_ID_POSTMAN]) { + switch (gSaveContext.timerStates[TIMER_ID_POSTMAN]) { case TIMER_STATE_POSTMAN_START: - if (gSaveContext.timerDirection[TIMER_ID_POSTMAN] != TIMER_COUNT_DOWN) { - gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN] = osGetTime(); + if (gSaveContext.timerDirections[TIMER_ID_POSTMAN] != TIMER_COUNT_DOWN) { + gSaveContext.timerStartOsTimes[TIMER_ID_POSTMAN] = osGetTime(); } - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_COUNTING; + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_COUNTING; sPostmanTimerInputBtnAPressed = true; func_80174F7C(Interface_PostmanTimerCallback, NULL); break; case TIMER_STATE_POSTMAN_STOP: timerOsTime = gSaveContext.timerOsTime; - gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = - OSTIME_TO_TIMER(timerOsTime - ((void)0, gSaveContext.timerStartOsTime[TIMER_ID_POSTMAN]) - - ((void)0, gSaveContext.timerPausedOsTime[TIMER_ID_POSTMAN])); - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_END; + gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = + OSTIME_TO_TIMER(timerOsTime - ((void)0, gSaveContext.timerStartOsTimes[TIMER_ID_POSTMAN]) - + ((void)0, gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN])); + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_END; func_80174F9C(Interface_PostmanTimerCallback, NULL); break; @@ -5312,7 +5313,7 @@ void Interface_DrawTimers(PlayState* play) { } // process the remaining timers - switch (gSaveContext.timerState[sTimerId]) { + switch (gSaveContext.timerStates[sTimerId]) { case TIMER_STATE_START: case TIMER_STATE_ALT_START: sTimerStateTimer = 20; @@ -5329,20 +5330,20 @@ void Interface_DrawTimers(PlayState* play) { if ((interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) || (interfaceCtx->minigameState == MINIGAME_STATE_30)) { - if (gSaveContext.timerState[sTimerId] == TIMER_STATE_START) { - gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; + if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_START) { + gSaveContext.timerStates[sTimerId] = TIMER_STATE_COUNTING; } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_ALT_COUNTING; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_ALT_COUNTING; D_801BF8F8[sTimerId] = osGetTime(); D_801BF930[sTimerId] = 0; } - gSaveContext.timerStartOsTime[sTimerId] = osGetTime(); - gSaveContext.timerEndOsTime[sTimerId] = 0; - gSaveContext.timerPausedOsTime[sTimerId] = 0; + gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); + gSaveContext.timerEndOsTimes[sTimerId] = 0; + gSaveContext.timerPausedOsTimes[sTimerId] = 0; } } else { - gSaveContext.timerState[sTimerId] = TIMER_STATE_HOLD_TIMER; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_HOLD_TIMER; } break; @@ -5350,7 +5351,7 @@ void Interface_DrawTimers(PlayState* play) { sTimerStateTimer--; if (sTimerStateTimer == 0) { sTimerStateTimer = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_MOVING_TIMER; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_MOVING_TIMER; } break; @@ -5385,14 +5386,14 @@ void Interface_DrawTimers(PlayState* play) { } } - gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; - gSaveContext.timerStartOsTime[sTimerId] = osGetTime(); - gSaveContext.timerEndOsTime[sTimerId] = 0; - gSaveContext.timerPausedOsTime[sTimerId] = 0; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_COUNTING; + gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); + gSaveContext.timerEndOsTimes[sTimerId] = 0; + gSaveContext.timerPausedOsTimes[sTimerId] = 0; } // fallthrough case TIMER_STATE_COUNTING: - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) && + if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) && (sTimerId == TIMER_ID_FINAL_HOURS)) { gSaveContext.timerX[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_X; gSaveContext.timerY[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_Y; @@ -5402,7 +5403,7 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_10: D_801BF8F8[sTimerId] = osGetTime(); D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_ALT_COUNTING; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_ALT_COUNTING; // fallthrough case TIMER_STATE_ALT_COUNTING: D_801BF930[sTimerId] = osGetTime() - D_801BF8F8[sTimerId]; @@ -5411,28 +5412,28 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_12: osTime = osGetTime(); - gSaveContext.timerPausedOsTime[sTimerId] = - gSaveContext.timerPausedOsTime[sTimerId] + osTime - D_801BF8F8[sTimerId]; + gSaveContext.timerPausedOsTimes[sTimerId] = + gSaveContext.timerPausedOsTimes[sTimerId] + osTime - D_801BF8F8[sTimerId]; D_801BF930[sTimerId] = 0; - gSaveContext.timerState[sTimerId] = TIMER_STATE_COUNTING; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_COUNTING; break; case TIMER_STATE_ENV_START: - gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1); - gSaveContext.timerDirection[sTimerId] = TIMER_COUNT_DOWN; - gSaveContext.timerTimeLimit[sTimerId] = gSaveContext.timerCurTime[sTimerId]; + gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(gSaveContext.save.playerData.health >> 1); + gSaveContext.timerDirections[sTimerId] = TIMER_COUNT_DOWN; + gSaveContext.timerTimeLimits[sTimerId] = gSaveContext.timerCurTimes[sTimerId]; sTimerStateTimer = 20; - gSaveContext.timerState[sTimerId] = TIMER_STATE_MOVING_TIMER; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_MOVING_TIMER; break; case TIMER_STATE_STOP: osTime = osGetTime(); - gSaveContext.timerEndOsTime[sTimerId] = - OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId])); + gSaveContext.timerEndOsTimes[sTimerId] = + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTimes[sTimerId])); - gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_OFF; if (sTimerId == TIMER_ID_FINAL_HOURS) { gSaveContext.save.day = 4; @@ -5443,11 +5444,11 @@ void Interface_DrawTimers(PlayState* play) { } else { Interface_StartMoonCrash(play); } - } else if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { + } else if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { gSaveContext.timerX[TIMER_ID_GORON_RACE_UNUSED] = 115; gSaveContext.timerY[TIMER_ID_GORON_RACE_UNUSED] = 80; - if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; + if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { + gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; } } break; @@ -5455,66 +5456,67 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_6: osTime = osGetTime(); - gSaveContext.timerEndOsTime[sTimerId] = - OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId])); + gSaveContext.timerEndOsTimes[sTimerId] = + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTimes[sTimerId])); if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (gSaveContext.timerEndOsTime[sTimerId] >= SECONDS_TO_TIMER(120)) { - gSaveContext.timerEndOsTime[sTimerId] = SECONDS_TO_TIMER(120); - gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(120); + if (gSaveContext.timerEndOsTimes[sTimerId] >= SECONDS_TO_TIMER(120)) { + gSaveContext.timerEndOsTimes[sTimerId] = SECONDS_TO_TIMER(120); + gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && - (gSaveContext.timerEndOsTime[sTimerId] >= SECONDS_TO_TIMER(120))) { - gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(120); + (gSaveContext.timerEndOsTimes[sTimerId] >= SECONDS_TO_TIMER(120))) { + gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } - gSaveContext.timerState[sTimerId] = TIMER_STATE_7; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_7; - if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] != TIMER_STATE_OFF) { gSaveContext.timerX[TIMER_ID_GORON_RACE_UNUSED] = 115; gSaveContext.timerY[TIMER_ID_GORON_RACE_UNUSED] = 80; - if (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { - gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; + if (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] <= TIMER_STATE_10) { + gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] = TIMER_STATE_MOVING_TIMER; } - gSaveContext.timerState[sTimerId] = TIMER_STATE_OFF; + gSaveContext.timerStates[sTimerId] = TIMER_STATE_OFF; } break; } break; } - if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF - if (gSaveContext.timerDirection[sTimerId] == TIMER_COUNT_DOWN) { + if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerStates[sTimerId]) { // != TIMER_STATE_OFF + if (gSaveContext.timerDirections[sTimerId] == TIMER_COUNT_DOWN) { sTimerDigits[0] = sTimerDigits[1] = sTimerDigits[3] = sTimerDigits[4] = sTimerDigits[6] = 0; // used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_10) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_ALT_COUNTING) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { + if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) || + (gSaveContext.timerStates[sTimerId] == TIMER_STATE_10) || + (gSaveContext.timerStates[sTimerId] == TIMER_STATE_ALT_COUNTING) || + (gSaveContext.timerStates[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); - osTime = OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - - D_801BF930[sTimerId] - ((void)0, gSaveContext.timerStartOsTime[sTimerId])); - } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { - osTime = gSaveContext.timerEndOsTime[sTimerId]; + osTime = + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId]) - + D_801BF930[sTimerId] - ((void)0, gSaveContext.timerStartOsTimes[sTimerId])); + } else if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_7) { + osTime = gSaveContext.timerEndOsTimes[sTimerId]; } else { osTime = 0; } if (osTime == 0) { - gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerTimeLimit[sTimerId] - osTime; - } else if (osTime <= gSaveContext.timerTimeLimit[sTimerId]) { - if (osTime >= gSaveContext.timerTimeLimit[sTimerId]) { - gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); + gSaveContext.timerCurTimes[sTimerId] = gSaveContext.timerTimeLimits[sTimerId] - osTime; + } else if (osTime <= gSaveContext.timerTimeLimits[sTimerId]) { + if (osTime >= gSaveContext.timerTimeLimits[sTimerId]) { + gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0); } else { - gSaveContext.timerCurTime[sTimerId] = gSaveContext.timerTimeLimit[sTimerId] - osTime; + gSaveContext.timerCurTimes[sTimerId] = gSaveContext.timerTimeLimits[sTimerId] - osTime; } } else { - gSaveContext.timerCurTime[sTimerId] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[sTimerId] = TIMER_STATE_STOP; + gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[sTimerId] = TIMER_STATE_STOP; if (sEnvTimerActive) { gSaveContext.save.playerData.health = 0; play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 2)); @@ -5522,15 +5524,15 @@ void Interface_DrawTimers(PlayState* play) { sEnvTimerActive = false; } - Interface_GetTimerDigits(((void)0, gSaveContext.timerCurTime[sTimerId]), sTimerDigits); + Interface_GetTimerDigits(((void)0, gSaveContext.timerCurTimes[sTimerId]), sTimerDigits); // Use seconds to determine when to beep - if (gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(60)) { + if (gSaveContext.timerCurTimes[sTimerId] > SECONDS_TO_TIMER(60)) { if ((sTimerBeepSfxSeconds != sTimerDigits[4]) && (sTimerDigits[4] == 1)) { play_sound(NA_SE_SY_MESSAGE_WOMAN); sTimerBeepSfxSeconds = sTimerDigits[4]; } - } else if (gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(10)) { + } else if (gSaveContext.timerCurTimes[sTimerId] > SECONDS_TO_TIMER(10)) { if ((sTimerBeepSfxSeconds != sTimerDigits[4]) && ((sTimerDigits[4] % 2) != 0)) { play_sound(NA_SE_SY_WARNING_COUNT_N); sTimerBeepSfxSeconds = sTimerDigits[4]; @@ -5545,16 +5547,16 @@ void Interface_DrawTimers(PlayState* play) { // used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; - if ((gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { + if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) || + (gSaveContext.timerStates[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); osTime = - OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTime[sTimerId]) - - ((void)0, gSaveContext.timerPausedOsTime[sTimerId]) - D_801BF930[sTimerId]); - } else if (gSaveContext.timerState[sTimerId] == TIMER_STATE_7) { - osTime = gSaveContext.timerEndOsTime[sTimerId]; + OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - + ((void)0, gSaveContext.timerPausedOsTimes[sTimerId]) - D_801BF930[sTimerId]); + } else if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_7) { + osTime = gSaveContext.timerEndOsTimes[sTimerId]; } else if (sTimerId == TIMER_ID_POSTMAN) { - osTime = gSaveContext.timerCurTime[sTimerId]; + osTime = gSaveContext.timerCurTimes[sTimerId]; } else { osTime = SECONDS_TO_TIMER(0); } @@ -5568,19 +5570,19 @@ void Interface_DrawTimers(PlayState* play) { osTime = SECONDS_TO_TIMER(120); } - gSaveContext.timerCurTime[sTimerId] = osTime; + gSaveContext.timerCurTimes[sTimerId] = osTime; Interface_GetTimerDigits(osTime, sTimerDigits); // Use seconds to determine when to beep if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if ((gSaveContext.timerCurTime[sTimerId] > SECONDS_TO_TIMER(110)) && + if ((gSaveContext.timerCurTimes[sTimerId] > SECONDS_TO_TIMER(110)) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); sTimerBeepSfxSeconds = sTimerDigits[4]; } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if ((((void)0, gSaveContext.timerCurTime[sTimerId]) > + if ((((void)0, gSaveContext.timerCurTimes[sTimerId]) > (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -5600,36 +5602,36 @@ void Interface_DrawTimers(PlayState* play) { 0, PRIMITIVE, 0); // Set the timer color - if (IS_POSTMAN_TIMER_DRAWN || (gSaveContext.timerState[sTimerId] <= TIMER_STATE_12)) { - if (gSaveContext.timerState[sTimerId]) { // != TIMER_STATE_OFF + if (IS_POSTMAN_TIMER_DRAWN || (gSaveContext.timerStates[sTimerId] <= TIMER_STATE_12)) { + if (gSaveContext.timerStates[sTimerId]) { // != TIMER_STATE_OFF if (sTimerId == TIMER_ID_2) { - if ((gSaveContext.timerCurTime[sTimerId] == SECONDS_TO_TIMER(0)) || - (gSaveContext.timerState[sTimerId] == TIMER_STATE_COUNTING)) { + if ((gSaveContext.timerCurTimes[sTimerId] == SECONDS_TO_TIMER(0)) || + (gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (gSaveContext.timerCurTime[sTimerId] >= SECONDS_TO_TIMER(110)) { + if (gSaveContext.timerCurTimes[sTimerId] >= SECONDS_TO_TIMER(110)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES)) { - if (((void)0, gSaveContext.timerCurTime[sTimerId]) >= + if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1]) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); - } else if (((void)0, gSaveContext.timerCurTime[sTimerId]) >= + } else if (((void)0, gSaveContext.timerCurTimes[sTimerId]) >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] - SECONDS_TO_TIMER(9))) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.timerCurTime[sTimerId] < SECONDS_TO_TIMER(10)) && - (gSaveContext.timerDirection[sTimerId] == TIMER_COUNT_DOWN) && - (gSaveContext.timerState[sTimerId] != TIMER_STATE_ALT_COUNTING)) { + } else if ((gSaveContext.timerCurTimes[sTimerId] < SECONDS_TO_TIMER(10)) && + (gSaveContext.timerDirections[sTimerId] == TIMER_COUNT_DOWN) && + (gSaveContext.timerStates[sTimerId] != TIMER_STATE_ALT_COUNTING)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); @@ -5696,7 +5698,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { for (j = BOTTLE_FIRST; j < BOTTLE_MAX; j++) { if (gSaveContext.bottleTimerState[j] == BOTTLE_TIMER_STATE_COUNTING) { - gSaveContext.bottleTimerPausedOsTime[j] += osTime - sBottleTimerPausedOsTime; + gSaveContext.bottleTimerPausedOsTimes[j] += osTime - sBottleTimerPausedOsTime; } } @@ -5708,18 +5710,18 @@ void Interface_UpdateBottleTimers(PlayState* play) { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.bottleTimerState[i] == BOTTLE_TIMER_STATE_COUNTING) { osTime = osGetTime(); - osTime = OSTIME_TO_TIMER_ALT(osTime - ((void)0, gSaveContext.bottleTimerPausedOsTime[i]) - - ((void)0, gSaveContext.bottleTimerStartOsTime[i])); + osTime = OSTIME_TO_TIMER_ALT(osTime - ((void)0, gSaveContext.bottleTimerPausedOsTimes[i]) - + ((void)0, gSaveContext.bottleTimerStartOsTimes[i])); if (osTime == 0) { - gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurTimeLimit[i] - osTime; - } else if (osTime <= gSaveContext.bottleTimerCurTimeLimit[i]) { - if (osTime >= gSaveContext.bottleTimerCurTimeLimit[i]) { - gSaveContext.bottleTimerCurTime[i] = 0; + gSaveContext.bottleTimerCurTimes[i] = gSaveContext.bottleTimerTimeLimits[i] - osTime; + } else if (osTime <= gSaveContext.bottleTimerTimeLimits[i]) { + if (osTime >= gSaveContext.bottleTimerTimeLimits[i]) { + gSaveContext.bottleTimerCurTimes[i] = 0; } else { - gSaveContext.bottleTimerCurTime[i] = gSaveContext.bottleTimerCurTimeLimit[i] - osTime; + gSaveContext.bottleTimerCurTimes[i] = gSaveContext.bottleTimerTimeLimits[i] - osTime; } } else { - gSaveContext.bottleTimerCurTime[i] = 0; + gSaveContext.bottleTimerCurTimes[i] = 0; if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); @@ -6650,23 +6652,23 @@ void Interface_Update(PlayState* play) { } // Update Env Timer - if (gSaveContext.timerState[TIMER_ID_ENV] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_ENV] == TIMER_STATE_OFF) { if ((sEnvTimerType == PLAYER_ENV_TIMER_HOTROOM) || (sEnvTimerType == PLAYER_ENV_TIMER_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { if ((gSaveContext.save.playerData.health >> 1) != 0) { - gSaveContext.timerState[TIMER_ID_ENV] = TIMER_STATE_ENV_START; + gSaveContext.timerStates[TIMER_ID_ENV] = TIMER_STATE_ENV_START; gSaveContext.timerX[TIMER_ID_ENV] = 115; gSaveContext.timerY[TIMER_ID_ENV] = 80; sEnvTimerActive = true; - gSaveContext.timerDirection[TIMER_ID_ENV] = TIMER_COUNT_DOWN; + gSaveContext.timerDirections[TIMER_ID_ENV] = TIMER_COUNT_DOWN; } } } } } else if (((sEnvTimerType == PLAYER_ENV_TIMER_NONE) || (sEnvTimerType == PLAYER_ENV_TIMER_SWIMMING)) && - (gSaveContext.timerState[TIMER_ID_ENV] <= TIMER_STATE_COUNTING)) { - gSaveContext.timerState[TIMER_ID_ENV] = TIMER_STATE_OFF; + (gSaveContext.timerStates[TIMER_ID_ENV] <= TIMER_STATE_COUNTING)) { + gSaveContext.timerStates[TIMER_ID_ENV] = TIMER_STATE_OFF; } // Update Minigame @@ -6830,11 +6832,11 @@ void Interface_Init(PlayState* play) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_C_RIGHT); } - if (((gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING) || - (gSaveContext.timerState[TIMER_ID_GORON_RACE_UNUSED] == TIMER_STATE_COUNTING)) && + if (((gSaveContext.timerStates[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING) || + (gSaveContext.timerStates[TIMER_ID_GORON_RACE_UNUSED] == TIMER_STATE_COUNTING)) && ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) && - (gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING)) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_START; + (gSaveContext.timerStates[TIMER_ID_MINIGAME_2] == TIMER_STATE_COUNTING)) { + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_START; gSaveContext.timerX[TIMER_ID_MINIGAME_2] = 115; gSaveContext.timerY[TIMER_ID_MINIGAME_2] = 80; } @@ -6849,19 +6851,19 @@ void Interface_Init(PlayState* play) { if (gSaveContext.eventInf[3] & 0x10) { gSaveContext.eventInf[3] &= (u8)~0x10; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; } - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_OFF; - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerTimeLimit[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerStartOsTime[TIMER_ID_MINIGAME_1] = 0; - gSaveContext.timerEndOsTime[TIMER_ID_MINIGAME_1] = 0; - gSaveContext.timerPausedOsTime[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_OFF; + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimits[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTimes[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerEndOsTimes[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerPausedOsTimes[TIMER_ID_MINIGAME_1] = 0; for (i = 0; i < TIMER_ID_MAX; i++) { - if (gSaveContext.timerState[i] == TIMER_STATE_7) { - gSaveContext.timerState[i] = TIMER_STATE_OFF; + if (gSaveContext.timerStates[i] == TIMER_STATE_7) { + gSaveContext.timerStates[i] = TIMER_STATE_OFF; } } diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 61167cb7e..222b6c690 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -894,13 +894,13 @@ void func_80144A94(SramContext* sramCtx) { gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible; } - for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { - gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerStartOsTime[i] = 0; - gSaveContext.timerEndOsTime[i] = 0; - gSaveContext.timerPausedOsTime[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerStates); i++) { + gSaveContext.timerStates[i] = TIMER_STATE_OFF; + gSaveContext.timerCurTimes[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTimes[i] = 0; + gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerPausedOsTimes[i] = 0; } D_801BDAA0 = 1; @@ -969,13 +969,13 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.save.permanentSceneFlags[i].collectible; } - for (i = 0; i < ARRAY_COUNT(gSaveContext.timerState); i++) { - gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.timerCurTime[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerStartOsTime[i] = 0; - gSaveContext.timerEndOsTime[i] = 0; - gSaveContext.timerPausedOsTime[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerStates); i++) { + gSaveContext.timerStates[i] = TIMER_STATE_OFF; + gSaveContext.timerCurTimes[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTimes[i] = 0; + gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerPausedOsTimes[i] = 0; } if (gSaveContext.save.isFirstCycle) { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index f2d114586..eaad41770 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1045,7 +1045,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) { if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_ROOFTOP, 0)) { if (gSaveContext.sceneSetupIndex == 0) { - if (gSaveContext.timerState[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { // Starts a 5 minute (300 second) timer until the moon falls. Interface_StartTimer(TIMER_ID_FINAL_HOURS, 300); R_FINAL_HOURS_TIMER_Y = 200; @@ -1062,7 +1062,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) { } else if (gSaveContext.sceneSetupIndex == 3) { this->animIndex = SK_ANIM_FLOATING_ARMS_CROSSED; - if (gSaveContext.timerState[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { // This code is called when the Giants fail to stop the moon. // Starts a 1 minute (60 second) timer until the moon falls. Interface_StartTimer(TIMER_ID_FINAL_HOURS, 60); diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index babc32728..1d721cb96 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -216,7 +216,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) { } else { SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 14, &this->unk_32C); thisx->room = -1; - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); this->unk_3B0 |= 1; this->actionFunc = func_80A72438; @@ -817,7 +817,7 @@ void func_80A73244(EnDno* this, PlayState* play) { this->unk_328 = 2; this->actor.speedXZ = 0.0f; Flags_UnsetSwitch(play, ENDNO_GET_3F80(&this->actor)); - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->unk_44E = 0; this->actionFunc = func_80A732C8; } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index eae76da51..977bd9985 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -401,7 +401,7 @@ void func_80962340(EnFu* this, PlayState* play) { Message_StartTextbox(play, 0x287E, &this->actor); this->unk_552 = 0x287E; } - } else if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) && + } else if ((gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) && (this->unk_552 != 0x2888)) { Message_StartTextbox(play, 0x2886, &this->actor); this->unk_552 = 0x2886; @@ -762,11 +762,11 @@ void func_80962F4C(EnFu* this, PlayState* play) { break; } - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(20)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(20)) { s16 val = D_80964B00[this->unk_542] + 200; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); - } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(40)) { + } else if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(40)) { s16 val = D_80964B00[this->unk_542] + 100; Math_SmoothStepToS(&fuKaiten->rotationSpeed, val, 10, 5, 5); @@ -778,12 +778,12 @@ void func_80962F4C(EnFu* this, PlayState* play) { if ((!DynaPolyActor_IsInRidingRotatingState((DynaPolyActor*)this->actor.child) && (player->actor.bgCheckFlags & 1)) || - (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] <= SECONDS_TO_TIMER(0)) || (this->unk_548 == this->unk_54C)) { + (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] <= SECONDS_TO_TIMER(0)) || (this->unk_548 == this->unk_54C)) { player->stateFlags3 &= ~0x400000; func_80961E88(play); player->stateFlags1 |= 0x20; if (this->unk_548 < this->unk_54C) { - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x2885, &this->actor); this->unk_552 = 0x2885; } else { @@ -791,15 +791,15 @@ void func_80962F4C(EnFu* this, PlayState* play) { this->unk_552 = 0x2888; } func_801A2C20(); - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; this->unk_548 = 0; func_809632D0(this); } else { this->unk_548 = 0; func_801A2C20(); - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; func_801A3098(NA_BGM_GET_ITEM | 0x900); Interface_SetPerfectMinigame(play, 1); this->unk_54A = 3; diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index f489f766a..df5dd028b 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -487,7 +487,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (this->unk_26C & 0x200) { if (this->unk_280 == 3) { this->unk_26C &= ~0x200; - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; func_800FE498(); gSaveContext.eventInf[4] |= 0x40; func_80B0FE7C(play); @@ -506,7 +506,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { } if (gSaveContext.save.playerData.health < 49) { - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x20; @@ -519,8 +519,8 @@ void func_80B10344(EnGb2* this, PlayState* play) { } func_80B0FE7C(play); - } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + } else if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; gSaveContext.eventInf[4] |= 0x40; gSaveContext.eventInf[4] |= 0x10; diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 50da9c4db..1cce146eb 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -145,7 +145,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { } s32 func_808F8E94(EnHorseGameCheck* this, PlayState* play) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; return true; } @@ -247,11 +247,11 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { return true; } - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(180)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(180)) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_4); this->unk_174 = 60; } @@ -284,7 +284,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x40000; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -317,7 +317,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x02000000; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_3); this->unk_174 = 60; } @@ -346,7 +346,7 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { Audio_QueueSeqCmd(0x8041); play_sound(NA_SE_SY_START_SHOT); this->unk_164 |= 0x800; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; SET_RACE_FLAGS(RACE_FLAG_2); this->unk_174 = 60; } diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index c24c03360..73c79f02e 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -155,7 +155,7 @@ void func_80C13BB8(EnJgameTsn* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { if (this->actor.flags & ACTOR_FLAG_10000) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] > SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] > SECONDS_TO_TIMER(0)) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1); Message_StartTextbox(play, 0x10A2, &this->actor); this->unk_300 = 0x10A2; @@ -352,7 +352,7 @@ void func_80C14230(EnJgameTsn* this, PlayState* play) { func_80C14030(this); } - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] == SECONDS_TO_TIMER(0)) { Message_StartTextbox(play, 0x10A1, &this->actor); this->unk_300 = 0x10A1; player->stateFlags1 |= 0x20; @@ -479,7 +479,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { case 0x10A1: func_801477B4(play); gSaveContext.minigameState = 3; - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; gSaveContext.save.weekEventReg[90] &= (u8)~0x20; func_80C144E4(this); break; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 687d3ca50..2bf81fa36 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -674,7 +674,7 @@ void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { // "You're feeling confident" Message_StartTextbox(play, 0x336E, &this->actor); this->actionFunc = EnMa4_HorsebackGameTalking; - } else if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(115)) { + } else if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(115)) { func_800B8614(&this->actor, play, 100.0f); } } @@ -717,9 +717,9 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { play->interfaceCtx.unk_25C = 1; } - if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) || + if ((gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) || (this->poppedBalloonCounter == 10)) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; EnMa4_SetupHorsebackGameEnd(this, play); D_80AC0258 = 0; } @@ -898,13 +898,13 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { gSaveContext.save.weekEventReg[21] |= 0x40; } } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Too bad Grasshopper" EnMa4_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x336D, &this->actor); this->textId = 0x336D; } else { - time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; + time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // [Score] New record! gSaveContext.save.horseBackBalloonHighScore = time; @@ -943,12 +943,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3354, &this->actor); this->textId = 0x3354; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; + time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); @@ -970,12 +970,12 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3358, &this->actor); this->textId = 0x3358; } else if (this->state == MA4_STATE_AFTERHORSEBACKGAME) { - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) { // "Try again?" Message_StartTextbox(play, 0x3356, &this->actor); this->textId = 0x3356; } else { - time = gSaveContext.timerCurTime[TIMER_ID_MINIGAME_2]; + time = gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2]; if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // New record gSaveContext.save.horseBackBalloonHighScore = time; diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 4a89bbb00..99521dc45 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -249,14 +249,14 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { break; case 0x2791: - if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { + if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { Message_StartTextbox(play, 0x2792, &this->actor); this->unk_2B4 = 0x2792; - } else if ((gSaveContext.timerCurTime[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER(15))) { + } else if ((gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER(15))) { Message_StartTextbox(play, 0x2797, &this->actor); this->unk_2B4 = 0x2797; - } else if ((gSaveContext.timerCurTime[TIMER_ID_POSTMAN] <= SECONDS_TO_TIMER_PRECISE(10, 50)) && - (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER_PRECISE(9, 50))) { + } else if ((gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] <= SECONDS_TO_TIMER_PRECISE(10, 50)) && + (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] >= SECONDS_TO_TIMER_PRECISE(9, 50))) { Message_StartTextbox(play, 0x2795, &this->actor); this->unk_2B4 = 0x2795; } else { @@ -302,7 +302,7 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { } else if ((this->unk_2AC > 0) && (this->unk_2B4 == 0x2791)) { this->unk_2AC--; if (this->unk_2AC == 0) { - if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { + if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] == SECONDS_TO_TIMER(10)) { func_801A3098(0x922); } else { play_sound(NA_SE_SY_ERROR); @@ -382,19 +382,19 @@ void func_80A6FBA0(EnMm3* this) { void func_80A6FBFC(EnMm3* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (gSaveContext.timerState[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_END) { + if (gSaveContext.timerStates[TIMER_ID_POSTMAN] == TIMER_STATE_POSTMAN_END) { player->stateFlags1 &= ~0x20; this->actor.flags |= ACTOR_FLAG_10000; - if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { - gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(15); - } else if ((((void)0, gSaveContext.timerCurTime[TIMER_ID_POSTMAN]) >= + if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { + gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(15); + } else if ((((void)0, gSaveContext.timerCurTimes[TIMER_ID_POSTMAN]) >= (OSTime)(SECONDS_TO_TIMER_PRECISE(10, -5) - XREG(16))) && - (((void)0, gSaveContext.timerCurTime[TIMER_ID_POSTMAN]) <= + (((void)0, gSaveContext.timerCurTimes[TIMER_ID_POSTMAN]) <= (OSTime)(SECONDS_TO_TIMER_PRECISE(10, 5) + XREG(17)))) { - gSaveContext.timerCurTime[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(10); + gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(10); } - } else if (gSaveContext.timerCurTime[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; + } else if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; gSaveContext.timerOsTime = osGetTime(); } @@ -404,7 +404,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) { Message_StartTextbox(play, 0x2791, &this->actor); this->unk_2B4 = 0x2791; this->unk_2AC = 7; - gSaveContext.timerState[TIMER_ID_POSTMAN] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_OFF; this->actor.flags &= ~ACTOR_FLAG_10000; play_sound(NA_SE_SY_START_SHOT); func_80A6F9C8(this); diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index a7313f808..d07d70cd4 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -253,7 +253,7 @@ s32 EnMttag_ExitRace(PlayState* play, s32 transitionType, s32 nextTransitionType * Displays the text which says that the player has made a false start. */ void EnMttag_ShowFalseStartMessage(EnMttag* this, PlayState* play) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; Message_StartTextbox(play, 0xE95, NULL); // An entrant made a false start func_800B7298(play, &this->actor, 7); Audio_QueueSeqCmd(0x101400FF); @@ -359,14 +359,14 @@ void EnMttag_Race(EnMttag* this, PlayState* play) { s32 playerCheatStatus; if (EnMttag_IsInFinishLine(playerPos)) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; gSaveContext.eventInf[1] |= 2; this->actionFunc = EnMttag_RaceFinish; } else if (EnMttag_IsAnyRaceGoronOverFinishLine(this)) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_6; play_sound(NA_SE_SY_START_SHOT); Audio_QueueSeqCmd(NA_BGM_GORON_GOAL | 0x8000); this->timer = 55; @@ -457,7 +457,7 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { if (play->msgCtx.choiceIndex != 0) { // Exit the race func_8019F230(); - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); gSaveContext.eventInf[1] &= (u8)~8; gSaveContext.eventInf[1] |= 4; @@ -503,8 +503,8 @@ void EnMttag_Init(Actor* thisx, PlayState* play) { void EnMttag_Destroy(Actor* thisx, PlayState* play) { EnMttag* this = THIS; - if (gSaveContext.timerState[TIMER_ID_MINIGAME_2] != TIMER_STATE_6) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + if (gSaveContext.timerStates[TIMER_ID_MINIGAME_2] != TIMER_STATE_6) { + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } } diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c index b87244aaf..6e0620b47 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c @@ -271,7 +271,7 @@ void func_80A2C2E0(EnSyatekiDekunuts* this, PlayState* play) { void func_80A2C33C(EnSyatekiDekunuts* this, PlayState* play) { EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent; - if ((gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] <= SECONDS_TO_TIMER(0)) || + if ((gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] <= SECONDS_TO_TIMER(0)) || (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING)) { func_80A2C3AC(this); } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 85ebfb3a4..50da0eb3b 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1061,9 +1061,9 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { this->perGameVar1.guaySpawnTimer++; - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->actor.draw = EnSyatekiMan_Draw; this->flagsIndex = 0; this->currentWave = 0; @@ -1082,10 +1082,10 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_GIVING_BONUS; if (this->score == 2120) { Interface_SetPerfectMinigame(play, 2); - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_6; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_6; this->actionFunc = EnSyatekiMan_Swamp_AddBonusPoints; } else { - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->actionFunc = EnSyatekiMan_Swamp_EndGame; } } @@ -1148,15 +1148,15 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { player->stateFlags1 |= 0x20; if (!play->interfaceCtx.isMinigamePerfect) { - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; this->flagsIndex = 0; this->currentWave = 0; this->actionFunc = EnSyatekiMan_Swamp_EndGame; sBonusTimer = 0; } else if (sBonusTimer > 10) { - gSaveContext.timerEndOsTime[TIMER_ID_MINIGAME_1] += 100; + gSaveContext.timerEndOsTimes[TIMER_ID_MINIGAME_1] += 100; play->interfaceCtx.unk_25C += 10; this->score += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); @@ -1292,7 +1292,8 @@ static const s32 sOctorokFlagsPerWave[] = { void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { static s32 sModFromLosingTime = 0; Player* player = GET_PLAYER(play); - s32 timer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) * 0.1f) + 1.0f; // unit is tenths of a second + s32 timer = + (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1]) * 0.1f) + 1.0f; // unit is tenths of a second if (timer <= 750) { s32 waveTimer; // unit is hundredths of a second @@ -1302,9 +1303,9 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { // begin hiding. This code will ultimately correct waveTimer such that its value is not affected by // hitting Blue Octoroks. if (sModFromLosingTime == 0) { - waveTimer = ((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) % SECONDS_TO_TIMER(5); + waveTimer = ((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1]) % SECONDS_TO_TIMER(5); } else { - waveTimer = (((void)0, gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1]) + SECONDS_TO_TIMER_PRECISE(2, 50)) % + waveTimer = (((void)0, gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1]) + SECONDS_TO_TIMER_PRECISE(2, 50)) % SECONDS_TO_TIMER(5); } @@ -1315,7 +1316,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { if (this->perGameVar2.octorokHitType != SG_OCTO_HIT_TYPE_NONE) { if (this->perGameVar2.octorokHitType == SG_OCTO_HIT_TYPE_BLUE) { - gSaveContext.timerTimeLimit[TIMER_ID_MINIGAME_1] -= SECONDS_TO_TIMER_PRECISE(2, 50); + gSaveContext.timerTimeLimits[TIMER_ID_MINIGAME_1] -= SECONDS_TO_TIMER_PRECISE(2, 50); sModFromLosingTime = (sModFromLosingTime + 25) % 50; } @@ -1337,11 +1338,11 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { } } - if (gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { + if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { this->flagsIndex = 0; this->perGameVar1.octorokState = SG_OCTO_STATE_HIDING; - gSaveContext.timerCurTime[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); - gSaveContext.timerState[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; + gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); + gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; player->stateFlags1 |= 0x20; sModFromLosingTime = 0; this->actor.draw = EnSyatekiMan_Draw; diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index 201534dc4..c937f2d2d 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -90,7 +90,7 @@ void func_80AC9FE4(EnTimeTag* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); this->actionFunc = func_80AC9FD4; - gSaveContext.timerState[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOWLA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { gSaveContext.save.weekEventReg[25] |= 2; @@ -107,7 +107,7 @@ void func_80ACA0A8(EnTimeTag* this, PlayState* play) { if (this->actor.cutscene != -1) { this->actionFunc = func_80AC9FE4; ActorCutscene_SetIntentToPlay(this2->actor.cutscene); - gSaveContext.timerState[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; } play->msgCtx.ocarinaMode = 4; } diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index 8c1e953c6..b287539b7 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -45,8 +45,8 @@ void ObjRoomtimer_Init(Actor* thisx, PlayState* play) { void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { ObjRoomtimer* this = THIS; - if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_MINIGAME_2] >= TIMER_STATE_START) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + if (this->actor.params != 0x1FF && gSaveContext.timerStates[TIMER_ID_MINIGAME_2] >= TIMER_STATE_START) { + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } } @@ -62,11 +62,11 @@ void func_80973CD8(ObjRoomtimer* this, PlayState* play) { void func_80973D3C(ObjRoomtimer* this, PlayState* play) { if (Flags_GetClearTemp(play, this->actor.room)) { if (this->actor.params != 0x1FF) { - gSaveContext.timerState[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; + gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; } ActorCutscene_SetIntentToPlay(this->actor.cutscene); this->actionFunc = func_80973DE0; - } else if (this->actor.params != 0x1FF && gSaveContext.timerState[TIMER_ID_MINIGAME_2] == TIMER_STATE_OFF) { + } else if (this->actor.params != 0x1FF && gSaveContext.timerStates[TIMER_ID_MINIGAME_2] == TIMER_STATE_OFF) { play_sound(NA_SE_OC_ABYSS); func_80169EFC(&play->state); Actor_MarkForDeath(&this->actor); diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 7daf61521..415c33f0e 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -514,13 +514,13 @@ void MapSelect_UpdateMenu(MapSelectState* this) { if (this->verticalInputAccumulator == 0) { if (CHECK_BTN_ALL(controller1->press.button, BTN_A) || CHECK_BTN_ALL(controller1->press.button, BTN_START)) { - for (i = 0; i < ARRAY_COUNT(gSaveContext.timerPausedOsTime); i++) { - gSaveContext.timerState[i] = TIMER_STATE_OFF; - gSaveContext.timerCurTime[i] = 0; - gSaveContext.timerTimeLimit[i] = SECONDS_TO_TIMER(0); - gSaveContext.timerStartOsTime[i] = 0; - gSaveContext.timerEndOsTime[i] = 0; - gSaveContext.timerPausedOsTime[i] = 0; + for (i = 0; i < ARRAY_COUNT(gSaveContext.timerPausedOsTimes); i++) { + gSaveContext.timerStates[i] = TIMER_STATE_OFF; + gSaveContext.timerCurTimes[i] = 0; + gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); + gSaveContext.timerStartOsTimes[i] = 0; + gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerPausedOsTimes[i] = 0; } gSaveContext.minigameState = 0; From 0ed70ec465036569025a78ddd7f951e9076abeff Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 31 Aug 2022 12:18:14 -0400 Subject: [PATCH 137/160] restrictions --- src/code/z_parameter.c | 248 +++++++++++++++++++++-------------------- 1 file changed, 128 insertions(+), 120 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e8afdfad9..73794755d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -8,7 +8,7 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #include "overlays/actors/ovl_En_Mm3/z_en_mm3.h" -u8 func_800FE4A8(); +u8 func_800FE4A8(void); s32 func_801234D4(PlayState* play); void func_801663C4(u8* arg0, u8* arg1, u32 arg2); @@ -29,120 +29,127 @@ typedef struct { Input sPostmanTimerInput[4]; +// TODO: Better way to do this? +#define SET_RESTRICTIONS(hGauge, bButton, aButton, tradeItems, unk_312, unk_313, unk_314, songOfSoaring, songOfStorms, \ + unk_317, pictoBox, all) \ + ((((hGauge)&3) << 6) | (((bButton)&3) << 4) | (((aButton)&3) << 2) | (((tradeItems)&3) << 0)), \ + ((((unk_312)&3) << 6) | (((unk_313)&3) << 4) | (((unk_314)&3) << 2) | (((songOfSoaring)&3) << 0)), \ + ((((songOfStorms)&3) << 6) | (((unk_317)&3) << 4) | (((pictoBox)&3) << 2) | (((all)&3) << 0)) + RestrictionFlags sRestrictionFlags[] = { - { SCENE_20SICHITAI2, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_1, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_2, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_3, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_4, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_5, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_6, 0x00, 0x00, 0x00 }, - { SCENE_KAKUSIANA, 0x00, 0x00, 0x00 }, - { SCENE_SPOT00, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_9, 0x00, 0x00, 0x00 }, - { SCENE_WITCH_SHOP, 0x10, 0x30, 0xC1 }, - { SCENE_LAST_BS, 0x00, 0x3F, 0x00 }, - { SCENE_HAKASHITA, 0x00, 0x00, 0x00 }, - { SCENE_AYASHIISHOP, 0x10, 0x30, 0xC1 }, - { SCENE_UNSET_E, 0x00, 0x00, 0x00 }, - { SCENE_UNSET_F, 0x00, 0x00, 0x00 }, - { SCENE_OMOYA, 0x00, 0x33, 0x00 }, - { SCENE_BOWLING, 0x10, 0x30, 0xC1 }, - { SCENE_SONCHONOIE, 0x10, 0x30, 0xC1 }, - { SCENE_IKANA, 0x00, 0x00, 0x00 }, - { SCENE_KAIZOKU, 0x00, 0x00, 0x00 }, - { SCENE_MILK_BAR, 0x10, 0x30, 0xC1 }, - { SCENE_INISIE_N, 0x00, 0x00, 0x00 }, - { SCENE_TAKARAYA, 0x10, 0x30, 0xC1 }, - { SCENE_INISIE_R, 0x00, 0x00, 0x00 }, - { SCENE_OKUJOU, 0x00, 0x3F, 0xF0 }, - { SCENE_OPENINGDAN, 0x00, 0x00, 0x00 }, - { SCENE_MITURIN, 0x00, 0x00, 0x00 }, - { SCENE_13HUBUKINOMITI, 0x00, 0x00, 0x00 }, - { SCENE_CASTLE, 0x00, 0x00, 0x00 }, - { SCENE_DEKUTES, 0x10, 0x30, 0x01 }, - { SCENE_MITURIN_BS, 0x00, 0x00, 0x00 }, - { SCENE_SYATEKI_MIZU, 0x10, 0x30, 0xC1 }, - { SCENE_HAKUGIN, 0x00, 0x00, 0x00 }, - { SCENE_ROMANYMAE, 0x00, 0x00, 0x00 }, - { SCENE_PIRATE, 0x00, 0x00, 0x00 }, - { SCENE_SYATEKI_MORI, 0x10, 0x30, 0xC1 }, - { SCENE_SINKAI, 0x00, 0x00, 0x00 }, - { SCENE_YOUSEI_IZUMI, 0x00, 0x00, 0x00 }, - { SCENE_KINSTA1, 0x00, 0x30, 0x00 }, - { SCENE_KINDAN2, 0x00, 0x30, 0x00 }, - { SCENE_TENMON_DAI, 0x00, 0x03, 0xC0 }, - { SCENE_LAST_DEKU, 0x00, 0x3F, 0x00 }, - { SCENE_22DEKUCITY, 0x00, 0x00, 0x00 }, - { SCENE_KAJIYA, 0x00, 0x30, 0xC0 }, - { SCENE_00KEIKOKU, 0x00, 0x00, 0x00 }, - { SCENE_POSTHOUSE, 0x00, 0x30, 0xC1 }, - { SCENE_LABO, 0x00, 0x30, 0xC1 }, - { SCENE_DANPEI2TEST, 0x00, 0x30, 0x00 }, - { SCENE_UNSET_31, 0x00, 0x00, 0x00 }, - { SCENE_16GORON_HOUSE, 0x00, 0x00, 0x00 }, - { SCENE_33ZORACITY, 0x00, 0x00, 0xC0 }, - { SCENE_8ITEMSHOP, 0x00, 0x30, 0xC1 }, - { SCENE_F01, 0x00, 0x00, 0x00 }, - { SCENE_INISIE_BS, 0x00, 0x00, 0x00 }, - { SCENE_30GYOSON, 0x00, 0x00, 0x00 }, - { SCENE_31MISAKI, 0x00, 0x00, 0x00 }, - { SCENE_TAKARAKUJI, 0x00, 0x30, 0xC1 }, - { SCENE_UNSET_3A, 0x00, 0x00, 0x00 }, - { SCENE_TORIDE, 0x00, 0x00, 0x00 }, - { SCENE_FISHERMAN, 0x00, 0x30, 0xC1 }, - { SCENE_GORONSHOP, 0x10, 0x30, 0xC1 }, - { SCENE_DEKU_KING, 0x00, 0x30, 0xC0 }, - { SCENE_LAST_GORON, 0x00, 0x3F, 0x00 }, - { SCENE_24KEMONOMITI, 0x00, 0x00, 0x00 }, - { SCENE_F01_B, 0x00, 0x30, 0x00 }, - { SCENE_F01C, 0x00, 0x30, 0x00 }, - { SCENE_BOTI, 0x00, 0x00, 0x00 }, - { SCENE_HAKUGIN_BS, 0x00, 0x00, 0x00 }, - { SCENE_20SICHITAI, 0x00, 0x00, 0x00 }, - { SCENE_21MITURINMAE, 0x00, 0x00, 0x00 }, - { SCENE_LAST_ZORA, 0x00, 0x3F, 0x00 }, - { SCENE_11GORONNOSATO2, 0x00, 0x00, 0x00 }, - { SCENE_SEA, 0x00, 0x00, 0x00 }, - { SCENE_35TAKI, 0x00, 0x00, 0x00 }, - { SCENE_REDEAD, 0x00, 0x00, 0x00 }, - { SCENE_BANDROOM, 0x00, 0x30, 0xC0 }, - { SCENE_11GORONNOSATO, 0x00, 0x00, 0x00 }, - { SCENE_GORON_HAKA, 0x00, 0x00, 0x00 }, - { SCENE_SECOM, 0x00, 0x3C, 0xC0 }, - { SCENE_10YUKIYAMANOMURA, 0x00, 0x00, 0x00 }, - { SCENE_TOUGITES, 0x00, 0x3F, 0xF0 }, - { SCENE_DANPEI, 0x00, 0x30, 0x00 }, - { SCENE_IKANAMAE, 0x00, 0x00, 0x00 }, - { SCENE_DOUJOU, 0x00, 0x30, 0xC1 }, - { SCENE_MUSICHOUSE, 0x00, 0x30, 0xC0 }, - { SCENE_IKNINSIDE, 0x00, 0x3F, 0xC0 }, - { SCENE_MAP_SHOP, 0x10, 0x30, 0xC1 }, - { SCENE_F40, 0x00, 0x00, 0x00 }, - { SCENE_F41, 0x00, 0x00, 0x00 }, - { SCENE_10YUKIYAMANOMURA2, 0x00, 0x00, 0x00 }, - { SCENE_14YUKIDAMANOMITI, 0x00, 0x00, 0x00 }, - { SCENE_12HAKUGINMAE, 0x00, 0x00, 0x00 }, - { SCENE_17SETUGEN, 0x00, 0x00, 0x00 }, - { SCENE_17SETUGEN2, 0x00, 0x00, 0x00 }, - { SCENE_SEA_BS, 0x00, 0x00, 0x00 }, - { SCENE_RANDOM, 0x00, 0x00, 0x00 }, - { SCENE_YADOYA, 0x10, 0x30, 0xC1 }, - { SCENE_KONPEKI_ENT, 0x00, 0x00, 0x00 }, - { SCENE_INSIDETOWER, 0x00, 0xFF, 0xC0 }, - { SCENE_26SARUNOMORI, 0x00, 0x30, 0x00 }, - { SCENE_LOST_WOODS, 0x00, 0x00, 0x00 }, - { SCENE_LAST_LINK, 0x00, 0x3F, 0x00 }, - { SCENE_SOUGEN, 0x00, 0x3F, 0x00 }, - { SCENE_BOMYA, 0x10, 0x30, 0xC1 }, - { SCENE_KYOJINNOMA, 0x00, 0x00, 0x00 }, - { SCENE_KOEPONARACE, 0x00, 0x30, 0x00 }, - { SCENE_GORONRACE, 0x00, 0x00, 0x00 }, - { SCENE_TOWN, 0x00, 0x00, 0x00 }, - { SCENE_ICHIBA, 0x00, 0x00, 0x00 }, - { SCENE_BACKTOWN, 0x00, 0x00, 0x00 }, - { SCENE_CLOCKTOWER, 0x00, 0x00, 0x00 }, - { SCENE_ALLEY, 0x00, 0x00, 0x00 }, + { SCENE_20SICHITAI2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_1, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_3, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_4, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_5, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_6, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_KAKUSIANA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SPOT00, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_9, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_WITCH_SHOP, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_LAST_BS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_HAKASHITA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_AYASHIISHOP, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_UNSET_E, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_F, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_OMOYA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0) }, + { SCENE_BOWLING, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_SONCHONOIE, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_IKANA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_KAIZOKU, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_MILK_BAR, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_INISIE_N, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_TAKARAYA, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_INISIE_R, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_OKUJOU, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0) }, + { SCENE_OPENINGDAN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_MITURIN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_13HUBUKINOMITI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_CASTLE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_DEKUTES, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1) }, + { SCENE_MITURIN_BS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SYATEKI_MIZU, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_HAKUGIN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_ROMANYMAE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_PIRATE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SYATEKI_MORI, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_SINKAI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_YOUSEI_IZUMI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_KINSTA1, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_KINDAN2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_TENMON_DAI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0) }, + { SCENE_LAST_DEKU, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_22DEKUCITY, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_KAJIYA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) }, + { SCENE_00KEIKOKU, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_POSTHOUSE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_LABO, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_DANPEI2TEST, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_UNSET_31, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_16GORON_HOUSE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_33ZORACITY, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0) }, + { SCENE_8ITEMSHOP, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_F01, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_INISIE_BS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_30GYOSON, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_31MISAKI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_TAKARAKUJI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_UNSET_3A, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_TORIDE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_FISHERMAN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_GORONSHOP, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_DEKU_KING, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) }, + { SCENE_LAST_GORON, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_24KEMONOMITI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_F01_B, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_F01C, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_BOTI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_HAKUGIN_BS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_20SICHITAI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_21MITURINMAE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_LAST_ZORA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_11GORONNOSATO2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SEA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_35TAKI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_REDEAD, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_BANDROOM, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) }, + { SCENE_11GORONNOSATO, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_GORON_HAKA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SECOM, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0) }, + { SCENE_10YUKIYAMANOMURA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_TOUGITES, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0) }, + { SCENE_DANPEI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_IKANAMAE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_DOUJOU, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_MUSICHOUSE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0) }, + { SCENE_IKNINSIDE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0) }, + { SCENE_MAP_SHOP, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_F40, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_F41, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_10YUKIYAMANOMURA2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_14YUKIDAMANOMITI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_12HAKUGINMAE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_17SETUGEN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_17SETUGEN2, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_SEA_BS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_RANDOM, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_YADOYA, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_KONPEKI_ENT, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_INSIDETOWER, SET_RESTRICTIONS(0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0) }, + { SCENE_26SARUNOMORI, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_LOST_WOODS, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_LAST_LINK, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_SOUGEN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0) }, + { SCENE_BOMYA, SET_RESTRICTIONS(0, 1, 0, 0, 0, 3, 0, 0, 3, 0, 0, 1) }, + { SCENE_KYOJINNOMA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_KOEPONARACE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0) }, + { SCENE_GORONRACE, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_TOWN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_ICHIBA, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_BACKTOWN, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_CLOCKTOWER, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, + { SCENE_ALLEY, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, }; s16 D_801BF884 = 0; // pictoBox related @@ -4214,7 +4221,7 @@ void Interface_DrawClock(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; s16 sp1E6; f32 temp_f14; - u32 dayTime; + u32 timeBeforeMoonCrash; f32 sp1D8; f32 timeInMinutes; f32 sp1D0; @@ -4635,10 +4642,10 @@ void Interface_DrawClock(PlayState* play) { finalHoursClockSlots[0] = 0; - dayTime = (4 << 16) - (CURRENT_DAY << 16) - - (u16)(-0x4000 + ((void)0, gSaveContext.save.time)); + timeBeforeMoonCrash = (4 - CURRENT_DAY) * DAY_LENGTH - + (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)); - timeInMinutes = TIME_TO_MINUTES_F(dayTime); + timeInMinutes = TIME_TO_MINUTES_F(timeBeforeMoonCrash); finalHoursClockSlots[1] = timeInMinutes / 60.0f; finalHoursClockSlots[2] = timeInMinutes / 60.0f; @@ -4662,8 +4669,9 @@ void Interface_DrawClock(PlayState* play) { finalHoursClockSlots[6] = 0; finalHoursClockSlots[7] = - dayTime - (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 (ft1 - e6c4) - (((void)0, temp) * 45.511112f)); // 2^13 / 3 / 60 (ft0 - e758) + timeBeforeMoonCrash - + (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 (ft1 - e6c4) + (((void)0, temp) * 45.511112f)); // 2^13 / 3 / 60 (ft0 - e758) // digits for seconds while (finalHoursClockSlots[7] >= 10) { From 35c4f2ee6521c3461ab0f42e84f0fddbf7eadbf8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 14 Sep 2022 18:45:43 -0400 Subject: [PATCH 138/160] cleanup --- include/functions.h | 68 ++++++------------- include/z64.h | 2 +- src/code/z_map_exp.c | 4 +- src/code/z_message.c | 4 +- src/code/z_parameter.c | 58 ++++++++-------- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 14 ++-- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 20 +++--- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 14 ++-- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 20 +++--- tools/disasm/functions.txt | 6 +- tools/sizes/code_functions.csv | 6 +- 11 files changed, 94 insertions(+), 122 deletions(-) diff --git a/include/functions.h b/include/functions.h index c960f0128..50e91a3a4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1651,7 +1651,7 @@ s16 func_80105318(void); void func_8010549C(PlayState* play, void* segmentAddress); void func_8010565C(PlayState* play, u8 num, void* segmentAddress); void func_80105818(PlayState* play, u32 uParm2, TransitionActorEntry* puParm3); -void func_80105A40(void); +void func_80105A40(PlayState* play); void func_80105B34(PlayState* play); void func_80105C40(s16 arg0); // void func_80105FE0(void); @@ -1728,7 +1728,7 @@ s32 func_8010A0A4(PlayState* play); // void func_8010A2AC(PlayState* play); void Minimap_SavePlayerRoomInitInfo(PlayState* play); void Map_InitRoomData(PlayState* play, s16 room); -void Map_Destroy(void); +void Map_Destroy(PlayState* play); void Map_Init(PlayState* play); void Minimap_Draw(PlayState* play); void Map_Update(PlayState* play); @@ -1806,31 +1806,23 @@ Vec3f* OLib_Vec3fDiffDegF(Vec3f* dest, Vec3f* a, Vec3f* b); Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b); void OLib_DbCameraVec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); -// void Gfx_DrawRectTextureRGBA16(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void Gfx_DrawRectTextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void Gfx_DrawRectTextureIA8_DropShadow(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); -// void Gfx_DrawRect_DropShadow(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11); -// void Gfx_DrawRectTextureIA8_DropShadowOffset(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16); -// void Gfx_DrawRectTextureI8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10); -// void Gfx_DrawRectTexture(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14); -// void Gfx_DrawQuadTextureIA8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); -// void Gfx_DrawQuadTexture(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6); -// void Interface_InitVertices(void); -// void Interface_PostmanTimerCallback(void); + +Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point); +Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point); + void Interface_StartTimer(s16 timerId, s16 timeLimit); void Interface_StartPostmanTimer(s16 timeLimit, s16 bunnyHoodState); -// void Interface_StartGoronRaceTimer(void); -// void Interface_StartBottleTimer(void); -// void Interface_GetCompressedTimerDigits(void); void Interface_NewDay(PlayState* play, s32 day); void Interface_SetHudVisibility(u16 hudVisibility); -// void func_80110038(void); -// void func_80111CB4(void); -// void Interface_SetSceneRestrictions(void); +void func_80110038(PlayState* play); +void Interface_SetSceneRestrictions(PlayState* play); void Interface_InitMinigame(PlayState* play); void Interface_LoadItemIconImpl(PlayState* play, u8 btn); void Interface_LoadItemIcon(PlayState* play, u8 btn); -// void func_80112C0C(void); +void func_80112C0C(PlayState* play, u16 flag); u8 Item_Give(PlayState* play, u8 item); u8 Item_CheckObtainability(u8 item); void Inventory_DeleteItem(s16 item, s16 slot); @@ -1842,11 +1834,10 @@ s32 Inventory_HasItemInBottle(u8 item); void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn); s32 Inventory_ConsumeFairy(PlayState* play); void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item); -// void func_801153C8(void); -void Interface_SetDoAction(PlayState* play, u16 action); -// void func_801155B4(void); -// void Interface_SetNaviCall(void); -void func_80115844(PlayState* play, s16 param_2); +void Interface_SetAButtonDoAction(PlayState* play, u16 action); +void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction); +void Interface_SetTatlCall(PlayState* play, u16 tatlCallState); +void func_80115844(PlayState* play, s16 arg1); s32 Health_ChangeBy(PlayState* play, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); @@ -1854,32 +1845,11 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(PlayState* play, s16 magicToAdd); void Magic_Reset(PlayState* play); s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type); -// void Interface_SetView1(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void Interface_SetView2(void); -// void Interface_DrawItemButtons(void); -// void Interface_DrawItemIconTexture(void); -// void Interface_DrawAmmoCount(void); -// void func_80118084(void); -// void func_80118890(void); -// void func_80118BA4(void); -// void func_80119030(void); -// void Interface_DrawClock(void); void Interface_SetPerfectMinigame(PlayState* play, s16 rewardType); -// void func_8011B5C0(void); -// void func_8011B9E0(void); -// void func_8011BF70(void); -// void Interface_DrawMinigamePerfect(void); void Interface_StartMoonCrash(PlayState* play); -// void Interface_GetTimerDigits(void); -// void Interface_DrawTimers(void); -// void Interface_UpdateBottleTimers(void); -// void Interface_DrawMinigameIcons(void); -// void Interface_Draw(UNK_TYPE4 ctxt); -// void Interface_LoadStory(void); -// void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14); -// void Interface_AllocStory(void); -// void Interface_Update(void); -// void Interface_Destroy(void); +void Interface_Draw(PlayState* play); +void Interface_Update(PlayState* play); +void Interface_Destroy(PlayState* play); void Interface_Init(PlayState* play); Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); diff --git a/include/z64.h b/include/z64.h index aa588a568..3a79b368b 100644 --- a/include/z64.h +++ b/include/z64.h @@ -566,7 +566,7 @@ typedef struct { /* 0x218 */ f32 unk_218; /* 0x21C */ s16 unk_21C; /* 0x21E */ s16 bButtonDoAction; - /* 0x220 */ s16 naviCalling; // tatlCalling? + /* 0x220 */ s16 tatlCalling; /* 0x222 */ s16 unk_222; /* 0x224 */ s16 unk_224; /* 0x226 */ s16 lifeColorChange; diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 5135a3c41..d681f2e95 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -169,8 +169,8 @@ void Map_InitRoomData(PlayState* play, s16 room) { } } -void Map_Destroy(void) { - func_80105A40(); +void Map_Destroy(PlayState* play) { + func_80105A40(play); } void Map_Init(PlayState* play) { diff --git a/src/code/z_message.c b/src/code/z_message.c index 6be722308..c145b0a17 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -321,9 +321,9 @@ void func_80151938(PlayState* play, u16 textId) { if (interfaceCtx->unk_222 == 0) { if (textId != 0x1B93) { - Interface_SetDoAction(play, DO_ACTION_NEXT); + Interface_SetAButtonDoAction(play, DO_ACTION_NEXT); } else if (textId != 0xF8) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); } } msgCtx->unk1203C = msgCtx->unk1203A; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index fb672d949..f6590a9e4 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -242,8 +242,8 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -254,7 +254,7 @@ Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, void* texture, s16 textureW return displayListHead; } -Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, +Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -266,7 +266,7 @@ Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidt return displayListHead; } -Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, +Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a) { s16 dropShadowAlpha = a; @@ -316,9 +316,10 @@ Gfx* Gfx_DrawRect_DropShadow(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s1 return displayListHead; } -Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, - s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, - u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { +Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, + s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, + s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, + s32 rectS) { s16 dropShadowAlpha = a; if (a > 100) { @@ -343,7 +344,7 @@ Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, void* texture return displayListHead; } -Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, +Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -355,7 +356,7 @@ Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, void* texture, s16 textureWidth return displayListHead; } -Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, +Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, cms, @@ -367,7 +368,7 @@ Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textu return displayListHead; } -Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 point) { +Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -377,7 +378,8 @@ Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, void* texture, s16 textureWidt return displayListHead; } -Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, void* texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { +Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, + u16 point) { gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -3036,22 +3038,22 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l func_801153C8(Lib_SegmentedToVirtual(sDoActionTextures[loadOffset]), 0x60); } -void Interface_SetDoAction(PlayState* play, u16 action) { +void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction) { InterfaceContext* interfaceCtx = &play->interfaceCtx; PauseContext* pauseCtx = &play->pauseCtx; - if (interfaceCtx->unk_214 != action) { - interfaceCtx->unk_214 = action; + if (interfaceCtx->unk_214 != aButtonDoAction) { + interfaceCtx->unk_214 = aButtonDoAction; interfaceCtx->unk_210 = 1; interfaceCtx->unk_218 = 0.0f; - Interface_LoadActionLabel(interfaceCtx, action, 1); + Interface_LoadActionLabel(interfaceCtx, aButtonDoAction, 1); if (pauseCtx->state != 0) { interfaceCtx->unk_210 = 3; } } } -void func_801155B4(PlayState* play, s16 bButtonDoAction) { +void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction) { InterfaceContext* interfaceCtx = &play->interfaceCtx; if (((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) >= ITEM_SWORD_KOKIRI) && @@ -3078,23 +3080,23 @@ void func_801155B4(PlayState* play, s16 bButtonDoAction) { } } -void Interface_SetNaviCall(PlayState* play, u16 naviCallState) { +void Interface_SetTatlCall(PlayState* play, u16 tatlCallState) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if (((naviCallState == 0x2A) || (naviCallState == 0x2B)) && !interfaceCtx->naviCalling && + if (((tatlCallState == 0x2A) || (tatlCallState == 0x2B)) && !interfaceCtx->tatlCalling && (play->csCtx.state == 0)) { - if (naviCallState == 0x2B) { + if (tatlCallState == 0x2B) { play_sound(NA_SE_VO_NAVY_CALL); } - if (naviCallState == 0x2A) { + if (tatlCallState == 0x2A) { func_8019FDC8(&gSfxDefaultPos, NA_SE_VO_NA_HELLO_2, 0x20); } - interfaceCtx->naviCalling = true; + interfaceCtx->tatlCalling = true; sCUpInvisible = 0; sCUpTimer = 10; - } else if (naviCallState == 0x2C) { - if (interfaceCtx->naviCalling) { - interfaceCtx->naviCalling = false; + } else if (tatlCallState == 0x2C) { + if (interfaceCtx->tatlCalling) { + interfaceCtx->tatlCalling = false; } } } @@ -3765,7 +3767,7 @@ void Interface_DrawItemButtons(PlayState* play) { } } - if (interfaceCtx->naviCalling && (play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && + if (interfaceCtx->tatlCalling && (play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && (play->csCtx.state == 0) && (D_801BF884 == 0)) { if (sCUpInvisible == 0) { // C-Up Button Texture, Color & Label (Tatl Text) @@ -3824,7 +3826,7 @@ void Interface_DrawItemButtons(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void Interface_DrawItemIconTexture(PlayState* play, void* texture, s16 button) { +void Interface_DrawItemIconTexture(PlayState* play, TexturePtr texture, s16 button) { static s16 D_801BFAFC[] = { 30, 24, 24, 24 }; OPEN_DISPS(play->state.gfxCtx); @@ -6787,8 +6789,8 @@ void Interface_Update(PlayState* play) { } } -void Interface_Destroy(void) { - Map_Destroy(); +void Interface_Destroy(PlayState* play) { + Map_Destroy(play); func_80174F9C(Interface_PostmanTimerCallback, NULL); } diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 50ec744ba..69f81e56a 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -801,7 +801,7 @@ void EnFsn_BeginInteraction(EnFsn* this, PlayState* play) { ActorCutscene_StartAndSetFlag(this->cutscene, &this->actor); this->cutsceneState = ENFSN_CUTSCENESTATE_PLAYING; if (Player_GetMask(play) == PLAYER_MASK_NONE) { - Interface_SetDoAction(play, DO_ACTION_NEXT); + Interface_SetAButtonDoAction(play, DO_ACTION_NEXT); if (EnFsn_HasItemsToSell()) { this->actionFunc = EnFsn_AskBuyOrSell; } else { @@ -881,7 +881,7 @@ void EnFsn_AskBuyOrSell(EnFsn* this, PlayState* play) { } } } else if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnFsn_TestEndInteraction(this, play, CONTROLLER1(&play->state)) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: @@ -1056,7 +1056,7 @@ void EnFsn_ResumeShoppingInteraction(EnFsn* this, PlayState* play) { } else if (this->actor.textId != 0x29D6) { this->actionFunc = EnFsn_AskCanBuyAterRunningOutOfItems; } else { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnFsn_FaceShopkeeperSelling; @@ -1107,7 +1107,7 @@ void EnFsn_BrowseShelf(EnFsn* this, PlayState* play) { this->stickLeftPrompt.isEnabled = true; EnFsn_UpdateCursorPos(this, play); if (talkstate == TEXT_STATE_5) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnFsn_HasPlayerSelectedItem(this, play, CONTROLLER1(&play->state))) { EnFsn_CursorLeftRight(this); if (this->cursorIdx != prevCursorIdx) { @@ -1209,7 +1209,7 @@ void EnFsn_SelectItem(EnFsn* this, PlayState* play) { u8 talkState = Message_GetState(&play->msgCtx); if (EnFsn_TakeItemOffShelf(this) && talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnFsn_TestCancelOption(this, play, CONTROLLER1(&play->state)) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: @@ -1329,7 +1329,7 @@ void EnFsn_FaceShopkeeperSelling(EnFsn* this, PlayState* play) { u8 cursorIdx; if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnFsn_TestEndInteraction(this, play, CONTROLLER1(&play->state)) && (!Message_ShouldAdvance(play) || !EnFsn_FacingShopkeeperDialogResult(this, play)) && this->stickAccumX > 0) { @@ -1337,7 +1337,7 @@ void EnFsn_FaceShopkeeperSelling(EnFsn* this, PlayState* play) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; this->actionFunc = EnFsn_LookToShelf; - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 8b5a5e2e5..e21555163 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -339,7 +339,7 @@ s32 EnOssan_TestCancelOption(EnOssan* this, PlayState* play, Input* input) { } void EnOssan_SetupStartShopping(PlayState* play, EnOssan* this, u8 skipHello) { - Interface_SetDoAction(play, DO_ACTION_NEXT); + Interface_SetAButtonDoAction(play, DO_ACTION_NEXT); if (!skipHello) { EnOssan_SetupAction(this, EnOssan_Hello); } else { @@ -350,7 +350,7 @@ void EnOssan_SetupStartShopping(PlayState* play, EnOssan* this, u8 skipHello) { void EnOssan_StartShopping(PlayState* play, EnOssan* this) { EnOssan_SetupAction(this, EnOssan_FaceShopkeeper); func_80151938(play, 0x640); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = true; this->stickLeftPrompt.isEnabled = true; } @@ -603,7 +603,7 @@ s32 EnOssan_FacingShopkeeperDialogResult(EnOssan* this, PlayState* play) { } EnOssan_SetupAction(this, EnOssan_TalkToShopkeeper); func_80151938(play, sTalkOptionTextIds[this->actor.params]); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; return true; @@ -630,7 +630,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, PlayState* play) { this->cutsceneState = ENOSSAN_CUTSCENESTATE_WAITING; } else { if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnOssan_TestEndInteraction(this, play, CONTROLLER1(&play->state)) && (!Message_ShouldAdvance(play) || !EnOssan_FacingShopkeeperDialogResult(this, play))) { if (this->stickAccumX < 0) { @@ -638,7 +638,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, PlayState* play) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; EnOssan_SetupAction(this, EnOssan_LookToLeftShelf); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -647,7 +647,7 @@ void EnOssan_FaceShopkeeper(EnOssan* this, PlayState* play) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; EnOssan_SetupAction(this, EnOssan_LookToRightShelf); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -853,7 +853,7 @@ void EnOssan_BrowseLeftShelf(EnOssan* this, PlayState* play) { this->stickRightPrompt.isEnabled = true; EnOssan_UpdateCursorPos(play, this); if (talkState == TEXT_STATE_5) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnOssan_HasPlayerSelectedItem(play, this, CONTROLLER1(&play->state))) { if (this->moveHorizontal) { if (this->stickAccumX > 0) { @@ -911,7 +911,7 @@ void EnOssan_BrowseRightShelf(EnOssan* this, PlayState* play) { this->stickLeftPrompt.isEnabled = true; EnOssan_UpdateCursorPos(play, this); if (talkState == TEXT_STATE_5) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnOssan_HasPlayerSelectedItem(play, this, CONTROLLER1(&play->state))) { if (this->moveHorizontal != 0) { if (this->stickAccumX < 0) { @@ -1052,7 +1052,7 @@ void EnOssan_SelectItem(EnOssan* this, PlayState* play) { u8 talkState = Message_GetState(&play->msgCtx); if (EnOssan_TakeItemOffShelf(this) && (talkState == TEXT_STATE_CHOICE)) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnOssan_TestCancelOption(this, play, CONTROLLER1(&play->state)) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: @@ -1119,7 +1119,7 @@ void EnOssan_ContinueShopping(EnOssan* this, PlayState* play) { EnGirlA* item; if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (Message_ShouldAdvance(play)) { EnOssan_ResetItemPosition(this); item = this->items[this->cursorIdx]; diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index 5fa0a362c..d024fa087 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -474,7 +474,7 @@ s32 EnSob1_TestCancelOption(EnSob1* this, PlayState* play, Input* input) { } void EnSob1_SetupStartShopping(PlayState* play, EnSob1* this, u8 skipHello) { - Interface_SetDoAction(play, DO_ACTION_NEXT); + Interface_SetAButtonDoAction(play, DO_ACTION_NEXT); if (!skipHello) { EnSob1_SetupAction(this, EnSob1_Hello); } else { @@ -485,7 +485,7 @@ void EnSob1_SetupStartShopping(PlayState* play, EnSob1* this, u8 skipHello) { void EnSob1_StartShopping(PlayState* play, EnSob1* this) { EnSob1_SetupAction(this, EnSob1_FaceShopkeeper); func_80151938(play, sFacingShopkeeperTextIds[this->shopType]); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; } @@ -494,7 +494,7 @@ void EnSob1_TalkToShopkeeper(PlayState* play, EnSob1* this) { EnSob1_SetupAction(this, EnSob1_TalkingToShopkeeper); this->talkOptionTextId = EnSob1_GetTalkOption(this, play); func_80151938(play, this->talkOptionTextId); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; } @@ -660,7 +660,7 @@ void EnSob1_FaceShopkeeper(EnSob1* this, PlayState* play) { this->cutsceneState = ENSOB1_CUTSCENESTATE_WAITING; } else { if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnSob1_TestEndInteraction(this, play, CONTROLLER1(&play->state))) { if (!Message_ShouldAdvance(play) || !EnSob1_FacingShopkeeperDialogResult(this, play)) { if (this->stickAccumX > 0) { @@ -668,7 +668,7 @@ void EnSob1_FaceShopkeeper(EnSob1* this, PlayState* play) { if (cursorIndex != CURSOR_INVALID) { this->cursorIndex = cursorIndex; EnSob1_SetupAction(this, EnSob1_LookToShelf); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -913,7 +913,7 @@ void EnSob1_BrowseShelf(EnSob1* this, PlayState* play) { this->stickLeftPrompt.isEnabled = true; EnSob1_UpdateCursorPos(play, this); if (talkState == TEXT_STATE_5) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnSob1_HasPlayerSelectedItem(play, this, CONTROLLER1(&play->state))) { EnSob1_CursorLeftRight(play, this); cursorIndex = this->cursorIndex; @@ -1021,7 +1021,7 @@ void EnSob1_SelectItem(EnSob1* this, PlayState* play) { u8 talkState = Message_GetState(&play->msgCtx); if (EnSob1_TakeItemOffShelf(this) && (talkState == TEXT_STATE_CHOICE)) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnSob1_TestCancelOption(this, play, CONTROLLER1(&play->state)) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 50126d97e..cd19adb9e 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -240,7 +240,7 @@ s32 EnTrt_TestCancelOption(EnTrt* this, PlayState* play, Input* input) { } void EnTrt_SetupStartShopping(PlayState* play, EnTrt* this, u8 skipHello) { - Interface_SetDoAction(play, DO_ACTION_NEXT); + Interface_SetAButtonDoAction(play, DO_ACTION_NEXT); if (!skipHello) { this->actionFunc = EnTrt_Hello; } else { @@ -250,7 +250,7 @@ void EnTrt_SetupStartShopping(PlayState* play, EnTrt* this, u8 skipHello) { void EnTrt_StartShopping(PlayState* play, EnTrt* this) { func_80151938(play, 0x83E); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_FaceShopkeeper; @@ -519,7 +519,7 @@ void EnTrt_FaceShopkeeper(EnTrt* this, PlayState* play) { ActorCutscene_SetIntentToPlay(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_WAITING; } else if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnTrt_TestEndInteraction(this, play, CONTROLLER1(&play->state))) { if ((!Message_ShouldAdvance(play) || !EnTrt_FacingShopkeeperDialogResult(this, play)) && (this->stickAccumX > 0)) { @@ -527,7 +527,7 @@ void EnTrt_FaceShopkeeper(EnTrt* this, PlayState* play) { if (cursorIdx != CURSOR_INVALID) { this->cursorIdx = cursorIdx; this->actionFunc = EnTrt_LookToShelf; - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickRightPrompt.isEnabled = false; play_sound(NA_SE_SY_CURSOR); } @@ -621,7 +621,7 @@ void EnTrt_BrowseShelf(EnTrt* this, PlayState* play) { this->stickLeftPrompt.isEnabled = true; EnTrt_UpdateCursorPos(play, this); if (talkState == TEXT_STATE_5) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnTrt_HasPlayerSelectedItem(play, this, CONTROLLER1(&play->state))) { EnTrt_CursorLeftRight(play, this); if (this->cursorIdx != prevCursorIdx) { @@ -706,7 +706,7 @@ void EnTrt_SelectItem(EnTrt* this, PlayState* play) { if (EnTrt_TakeItemOffShelf(this)) { if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (!EnTrt_TestCancelOption(this, play, CONTROLLER1(&play->state)) && Message_ShouldAdvance(play)) { switch (play->msgCtx.choiceIndex) { case 0: @@ -875,7 +875,7 @@ void EnTrt_BeginInteraction(EnTrt* this, PlayState* play) { case 0x834: if (!(gSaveContext.save.weekEventReg[12] & 8) && !(gSaveContext.save.weekEventReg[84] & 0x40) && !(gSaveContext.save.weekEventReg[16] & 0x10) && !(gSaveContext.save.weekEventReg[17] & 1)) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_Hello; @@ -884,7 +884,7 @@ void EnTrt_BeginInteraction(EnTrt* this, PlayState* play) { } break; case 0x83E: - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = true; this->actionFunc = EnTrt_FaceShopkeeper; @@ -1093,7 +1093,7 @@ void EnTrt_ContinueShopping(EnTrt* this, PlayState* play) { EnGirlA* item; if (talkState == TEXT_STATE_CHOICE) { - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); if (Message_ShouldAdvance(play)) { EnTrt_ResetItemPosition(this); item = this->items[this->cursorIdx]; @@ -1406,7 +1406,7 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, PlayState* play) { void EnTrt_SetupTalkToShopkeeper(PlayState* play, EnTrt* this) { this->actionFunc = EnTrt_TalkToShopkeeper; func_80151938(play, this->talkOptionTextId); - Interface_SetDoAction(play, DO_ACTION_DECIDE); + Interface_SetAButtonDoAction(play, DO_ACTION_DECIDE); this->stickLeftPrompt.isEnabled = false; this->stickRightPrompt.isEnabled = false; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index ccf104868..9f02ee601 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2126,9 +2126,9 @@ 0x801152B8:("Inventory_UpdateItem",), 0x801153C8:("func_801153C8",), 0x80115428:("Interface_LoadActionLabel",), - 0x8011552C:("Interface_SetDoAction",), - 0x801155B4:("func_801155B4",), - 0x80115764:("Interface_SetNaviCall",), + 0x8011552C:("Interface_SetAButtonDoAction",), + 0x801155B4:("Interface_SetBButtonDoAction",), + 0x80115764:("Interface_SetTatlCall",), 0x80115844:("func_80115844",), 0x80115908:("Health_ChangeBy",), 0x801159C0:("Health_GiveHearts",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index a70828b17..00ef41f88 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1640,9 +1640,9 @@ asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s,Inventory_ConsumeFai asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s,Inventory_UpdateItem,0x801152B8,0x44 asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 -asm/non_matchings/code/z_parameter/Interface_SetDoAction.s,Interface_SetDoAction,0x8011552C,0x22 -asm/non_matchings/code/z_parameter/func_801155B4.s,func_801155B4,0x801155B4,0x6C -asm/non_matchings/code/z_parameter/Interface_SetNaviCall.s,Interface_SetNaviCall,0x80115764,0x38 +asm/non_matchings/code/z_parameter/Interface_SetAButtonDoAction.s,Interface_SetAButtonDoAction,0x8011552C,0x22 +asm/non_matchings/code/z_parameter/Interface_SetBButtonDoAction.s,Interface_SetBButtonDoAction,0x801155B4,0x6C +asm/non_matchings/code/z_parameter/Interface_SetTatlCall.s,Interface_SetTatlCall,0x80115764,0x38 asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908,0x2E asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB From 29693f68a1b46b5c804eb9b86c86a096da22f445 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 14 Sep 2022 18:55:27 -0400 Subject: [PATCH 139/160] more cleanup and sync --- include/functions.h | 1 + include/regs.h | 98 +++++++++---------- include/z64player.h | 2 +- include/z64save.h | 28 +++--- src/code/z_parameter.c | 60 ++++++------ src/code/z_player_lib.c | 2 +- src/code/z_sram_NES.c | 4 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 16 +-- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 2 +- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 4 +- src/overlays/gamestates/ovl_select/z_select.c | 2 +- 12 files changed, 111 insertions(+), 110 deletions(-) diff --git a/include/functions.h b/include/functions.h index 50e91a3a4..19c0f6ece 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1851,6 +1851,7 @@ void Interface_Draw(PlayState* play); void Interface_Update(PlayState* play); void Interface_Destroy(PlayState* play); void Interface_Init(PlayState* play); + Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); void Path_CopyLastPoint(Path* path, Vec3f* dest); diff --git a/include/regs.h b/include/regs.h index fccddd2c2..cf15b236a 100644 --- a/include/regs.h +++ b/include/regs.h @@ -43,56 +43,56 @@ #define bREG(r) BASE_REG(28, r) /* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */ -#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT -#define R_RUN_SPEED_LIMIT REG(45) -#define R_UPDATE_RATE SREG(30) -#define R_PAUSE_MENU_MODE SREG(94) -#define R_C_UP_ICON_X YREG(88) -#define R_C_UP_ICON_Y YREG(89) -#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i) -#define R_C_BTN_COLOR(i) ZREG(39 + i) -#define R_B_BTN_COLOR(i) ZREG(43 + i) -#define R_START_LABEL_DD(i) ZREG(48 + i) -#define R_START_LABEL_Y(i) ZREG(51 + i) -#define R_START_LABEL_X(i) ZREG(54 + i) -#define R_C_UP_BTN_X ZREG(62) -#define R_C_UP_BTN_Y ZREG(63) -#define R_START_BTN_X ZREG(68) -#define R_START_BTN_Y ZREG(69) -#define R_ITEM_BTN_X(i) ZREG(70 + i) -#define R_ITEM_BTN_Y(i) ZREG(74 + i) -#define R_ITEM_BTN_DD(i) ZREG(78 + i) -#define R_ITEM_ICON_X(i) ZREG(82 + i) -#define R_ITEM_ICON_Y(i) ZREG(86 + i) -#define R_ITEM_ICON_DD(i) ZREG(90 + i) -#define R_A_BTN_Y XREG(16) -#define R_A_BTN_X XREG(17) -#define R_A_ICON_Y XREG(19) -#define R_A_ICON_X XREG(20) -#define R_A_BTN_COLOR(i) XREG(22 + i) +#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT +#define R_RUN_SPEED_LIMIT REG(45) +#define R_UPDATE_RATE SREG(30) +#define R_PAUSE_MENU_MODE SREG(94) +#define R_C_UP_ICON_X YREG(88) +#define R_C_UP_ICON_Y YREG(89) +#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i) +#define R_C_BTN_COLOR(i) ZREG(39 + i) +#define R_B_BTN_COLOR(i) ZREG(43 + i) +#define R_START_LABEL_DD(i) ZREG(48 + i) +#define R_START_LABEL_Y(i) ZREG(51 + i) +#define R_START_LABEL_X(i) ZREG(54 + i) +#define R_C_UP_BTN_X ZREG(62) +#define R_C_UP_BTN_Y ZREG(63) +#define R_START_BTN_X ZREG(68) +#define R_START_BTN_Y ZREG(69) +#define R_ITEM_BTN_X(i) ZREG(70 + i) +#define R_ITEM_BTN_Y(i) ZREG(74 + i) +#define R_ITEM_BTN_DD(i) ZREG(78 + i) +#define R_ITEM_ICON_X(i) ZREG(82 + i) +#define R_ITEM_ICON_Y(i) ZREG(86 + i) +#define R_ITEM_ICON_DD(i) ZREG(90 + i) +#define R_A_BTN_Y XREG(16) +#define R_A_BTN_X XREG(17) +#define R_A_ICON_Y XREG(19) +#define R_A_ICON_X XREG(20) +#define R_A_BTN_COLOR(i) XREG(22 + i) #define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41) -#define R_FINAL_HOURS_TIMER_Y XREG(80) -#define R_FINAL_HOURS_TIMER_X XREG(81) -#define R_MINIMAP_DISABLED XREG(95) -#define R_B_LABEL_DD WREG(0) -#define R_OW_MINIMAP_X WREG(29) -#define R_OW_MINIMAP_Y WREG(30) -#define R_B_LABEL_X(i) WREG(40 + i) -#define R_B_LABEL_Y(i) WREG(43 + i) -#define R_DGN_MINIMAP_X WREG(68) -#define R_DGN_MINIMAP_Y WREG(69) -#define R_MAP_INDEX VREG(11) -#define R_MAP_TEX_INDEX_BASE VREG(12) -#define R_MAP_TEX_INDEX VREG(13) -#define R_COMPASS_SCALE_X VREG(14) -#define R_COMPASS_SCALE_Y VREG(15) -#define R_COMPASS_OFFSET_X VREG(16) -#define R_COMPASS_OFFSET_Y VREG(17) -#define R_MINIMAP_COLOR(i) VREG(18 + i) -#define R_ITEM_AMMO_X(i) VREG(64 + i) -#define R_ITEM_AMMO_Y(i) VREG(68 + i) -#define R_ITEM_ICON_WIDTH(i) VREG(76 + i) -#define R_ITEM_BTN_WIDTH(i) VREG(80 + i) +#define R_MOON_CRASH_TIMER_Y XREG(80) +#define R_MOON_CRASH_TIMER_X XREG(81) +#define R_MINIMAP_DISABLED XREG(95) +#define R_B_LABEL_DD WREG(0) +#define R_OW_MINIMAP_X WREG(29) +#define R_OW_MINIMAP_Y WREG(30) +#define R_B_LABEL_X(i) WREG(40 + i) +#define R_B_LABEL_Y(i) WREG(43 + i) +#define R_DGN_MINIMAP_X WREG(68) +#define R_DGN_MINIMAP_Y WREG(69) +#define R_MAP_INDEX VREG(11) +#define R_MAP_TEX_INDEX_BASE VREG(12) +#define R_MAP_TEX_INDEX VREG(13) +#define R_COMPASS_SCALE_X VREG(14) +#define R_COMPASS_SCALE_Y VREG(15) +#define R_COMPASS_OFFSET_X VREG(16) +#define R_COMPASS_OFFSET_Y VREG(17) +#define R_MINIMAP_COLOR(i) VREG(18 + i) +#define R_ITEM_AMMO_X(i) VREG(64 + i) +#define R_ITEM_AMMO_Y(i) VREG(68 + i) +#define R_ITEM_ICON_WIDTH(i) VREG(76 + i) +#define R_ITEM_BTN_WIDTH(i) VREG(80 + i) #define R_FB_FILTER_TYPE SREG(80) #define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c) diff --git a/include/z64player.h b/include/z64player.h index 4aa40aedd..6cf7296b8 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -602,7 +602,7 @@ typedef struct Player { /* 0xAD0 */ f32 linearVelocity; /* 0xAD4 */ s16 currentYaw; /* 0xAD6 */ s16 targetYaw; - /* 0xAD8 */ u16 unk_AD8; + /* 0xAD8 */ u16 underwaterTimer; /* 0xADA */ s8 meleeWeaponAnimation; /* 0xADB */ s8 meleeWeaponState; /* 0xADC */ s8 unk_ADC; diff --git a/include/z64save.h b/include/z64save.h index c4d0d34b3..a8ccbdaa4 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -67,7 +67,7 @@ typedef enum { /* 0 */ TIMER_ID_POSTMAN, // postman's counting minigame /* 1 */ TIMER_ID_MINIGAME_1, // minigame timer /* 2 */ TIMER_ID_2, - /* 3 */ TIMER_ID_FINAL_HOURS, // countdown until mooncrash + /* 3 */ TIMER_ID_MOON_CRASH, // timer used for mooncrash on the clocktower roof /* 4 */ TIMER_ID_MINIGAME_2, // minigame timer /* 5 */ TIMER_ID_ENV, // environmental timer (underwater or hot room) /* 6 */ TIMER_ID_GORON_RACE_UNUSED, @@ -293,11 +293,11 @@ typedef struct SaveContext { /* 0x1015 */ u8 unk_1015; /* 0x1016 */ u16 jinxTimer; /* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct" - /* 0x101A */ u8 bottleTimerState[BOTTLE_MAX]; // "bottle_status", one entry for each bottle - /* 0x1020 */ OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // "bottle_ostime", one entry for each bottle - /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // "bottle_sub", one entry for each bottle - /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // "bottle_time", one entry for each bottle - /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // "bottle_stop_time", one entry for each bottle + /* 0x101A */ u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status" + /* 0x1020 */ OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // The osTime when the timer starts. "bottle_ostime" + /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub" + /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time" + /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time" /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" @@ -316,14 +316,14 @@ typedef struct SaveContext { /* 0x3DBF */ u8 showTitleCard; // "name_display" /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" - /* 0x3DC8 */ OSTime timerOsTime; // "get_time" - /* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // "event_fg" - /* 0x3DD7 */ u8 timerDirections[TIMER_ID_MAX]; // "calc_flag" - /* 0x3DE0 */ u64 timerCurTimes[TIMER_ID_MAX]; // "event_ostime" - /* 0x3E18 */ u64 timerTimeLimits[TIMER_ID_MAX]; // "event_sub" - /* 0x3E50 */ OSTime timerStartOsTimes[TIMER_ID_MAX]; // "func_time" - /* 0x3E88 */ OSTime timerEndOsTimes[TIMER_ID_MAX]; // "func_end_time" - /* 0x3EC0 */ OSTime timerPausedOsTimes[TIMER_ID_MAX]; // "func_stop_time" + /* 0x3DC8 */ OSTime postmanTimerStopOsTime; // The osTime when the timer stops for the postman minigame. "get_time" + /* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg" + /* 0x3DD7 */ u8 timerDirections[TIMER_ID_MAX]; // See the `TimerDirection` enum. "calc_flag" + /* 0x3DE0 */ u64 timerCurTimes[TIMER_ID_MAX]; // For countdown, the remaining time left. For countup, the time since the start. In centiseconds (1/100th sec). "event_ostime" + /* 0x3E18 */ u64 timerTimeLimits[TIMER_ID_MAX]; // The original total time given for the timer to count from, in centiseconds (1/100th sec). "event_sub" + /* 0x3E50 */ OSTime timerStartOsTimes[TIMER_ID_MAX]; // The osTime when the timer starts. "func_time" + /* 0x3E88 */ u64 timerStopTimes[TIMER_ID_MAX]; // The total amount of time taken between the start and end of the timer, in centiseconds (1/100th sec). "func_end_time" + /* 0x3EC0 */ OSTime timerPausedOsTimes[TIMER_ID_MAX]; // The cumulative osTime spent with the timer paused. "func_stop_time" /* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp" /* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp" /* 0x3F14 */ s16 unk_3F14; // "character_change" diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f6590a9e4..83df398b6 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -598,7 +598,7 @@ void Interface_PostmanTimerCallback(s32 arg0) { func_80175E68(&sPostmanTimerInput[0], 0); btnAPressed = CHECK_BTN_ALL(sPostmanTimerInput[0].cur.button, BTN_A); if ((btnAPressed != sPostmanTimerInputBtnAPressed) && btnAPressed) { - gSaveContext.timerOsTime = osGetTime(); + gSaveContext.postmanTimerStopOsTime = osGetTime(); gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; } @@ -639,7 +639,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { } gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; - gSaveContext.timerEndOsTimes[TIMER_ID_POSTMAN] = 0; + gSaveContext.timerStopTimes[TIMER_ID_POSTMAN] = 0; gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN] = 0; } @@ -656,7 +656,7 @@ void Interface_StartGoronRaceTimer(s32 arg0) { } void Interface_StartBottleTimer(s16 seconds, s16 timerId) { - gSaveContext.bottleTimerState[timerId] = BOTTLE_TIMER_STATE_COUNTING; + gSaveContext.bottleTimerStates[timerId] = BOTTLE_TIMER_STATE_COUNTING; gSaveContext.bottleTimerCurTimes[timerId] = SECONDS_TO_TIMER(seconds); gSaveContext.bottleTimerTimeLimits[timerId] = gSaveContext.bottleTimerCurTimes[timerId]; gSaveContext.bottleTimerStartOsTimes[timerId] = osGetTime(); @@ -5257,7 +5257,7 @@ void Interface_DrawTimers(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; Player* player = GET_PLAYER(play); OSTime osTime; - OSTime timerOsTime; + OSTime postmanTimerStopOsTime; s16 j; s16 i; @@ -5307,10 +5307,10 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_POSTMAN_STOP: - timerOsTime = gSaveContext.timerOsTime; - gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = - OSTIME_TO_TIMER(timerOsTime - ((void)0, gSaveContext.timerStartOsTimes[TIMER_ID_POSTMAN]) - - ((void)0, gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN])); + postmanTimerStopOsTime = gSaveContext.postmanTimerStopOsTime; + gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] = OSTIME_TO_TIMER( + postmanTimerStopOsTime - ((void)0, gSaveContext.timerStartOsTimes[TIMER_ID_POSTMAN]) - + ((void)0, gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN])); gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_END; func_80174F9C(Interface_PostmanTimerCallback, NULL); break; @@ -5349,7 +5349,7 @@ void Interface_DrawTimers(PlayState* play) { } gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); - gSaveContext.timerEndOsTimes[sTimerId] = 0; + gSaveContext.timerStopTimes[sTimerId] = 0; gSaveContext.timerPausedOsTimes[sTimerId] = 0; } } else { @@ -5366,10 +5366,10 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_MOVING_TIMER: - if (sTimerId == TIMER_ID_FINAL_HOURS) { - j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_FINAL_HOURS_TIMER_X) / sTimerStateTimer); + if (sTimerId == TIMER_ID_MOON_CRASH) { + j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_MOON_CRASH_TIMER_X) / sTimerStateTimer); gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; - j = ((((void)0, gSaveContext.timerY[sTimerId]) - R_FINAL_HOURS_TIMER_Y) / sTimerStateTimer); + j = ((((void)0, gSaveContext.timerY[sTimerId]) - R_MOON_CRASH_TIMER_Y) / sTimerStateTimer); gSaveContext.timerY[sTimerId] = ((void)0, gSaveContext.timerY[sTimerId]) - j; } else { j = ((((void)0, gSaveContext.timerX[sTimerId]) - 26) / sTimerStateTimer); @@ -5385,8 +5385,8 @@ void Interface_DrawTimers(PlayState* play) { if (sTimerStateTimer == 0) { sTimerStateTimer = 20; - if (sTimerId == TIMER_ID_FINAL_HOURS) { - gSaveContext.timerY[sTimerId] = R_FINAL_HOURS_TIMER_Y; + if (sTimerId == TIMER_ID_MOON_CRASH) { + gSaveContext.timerY[sTimerId] = R_MOON_CRASH_TIMER_Y; } else { gSaveContext.timerX[sTimerId] = 26; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { @@ -5398,15 +5398,15 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerStates[sTimerId] = TIMER_STATE_COUNTING; gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); - gSaveContext.timerEndOsTimes[sTimerId] = 0; + gSaveContext.timerStopTimes[sTimerId] = 0; gSaveContext.timerPausedOsTimes[sTimerId] = 0; } // fallthrough case TIMER_STATE_COUNTING: if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) && - (sTimerId == TIMER_ID_FINAL_HOURS)) { - gSaveContext.timerX[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_X; - gSaveContext.timerY[TIMER_ID_FINAL_HOURS] = R_FINAL_HOURS_TIMER_Y; + (sTimerId == TIMER_ID_MOON_CRASH)) { + gSaveContext.timerX[TIMER_ID_MOON_CRASH] = R_MOON_CRASH_TIMER_X; + gSaveContext.timerY[TIMER_ID_MOON_CRASH] = R_MOON_CRASH_TIMER_Y; } break; @@ -5439,13 +5439,13 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_STOP: osTime = osGetTime(); - gSaveContext.timerEndOsTimes[sTimerId] = + gSaveContext.timerStopTimes[sTimerId] = OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId])); gSaveContext.timerStates[sTimerId] = TIMER_STATE_OFF; - if (sTimerId == TIMER_ID_FINAL_HOURS) { + if (sTimerId == TIMER_ID_MOON_CRASH) { gSaveContext.save.day = 4; if ((play->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) { play->nextEntrance = ENTRANCE(TERMINA_FIELD, 1); @@ -5466,18 +5466,18 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_6: osTime = osGetTime(); - gSaveContext.timerEndOsTimes[sTimerId] = + gSaveContext.timerStopTimes[sTimerId] = OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId])); if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { - if (gSaveContext.timerEndOsTimes[sTimerId] >= SECONDS_TO_TIMER(120)) { - gSaveContext.timerEndOsTimes[sTimerId] = SECONDS_TO_TIMER(120); + if (gSaveContext.timerStopTimes[sTimerId] >= SECONDS_TO_TIMER(120)) { + gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(120); gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } } else if ((gSaveContext.eventInf[3] & 0x10) && (play->sceneNum == SCENE_DEKUTES) && - (gSaveContext.timerEndOsTimes[sTimerId] >= SECONDS_TO_TIMER(120))) { + (gSaveContext.timerStopTimes[sTimerId] >= SECONDS_TO_TIMER(120))) { gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(120); } gSaveContext.timerStates[sTimerId] = TIMER_STATE_7; @@ -5511,7 +5511,7 @@ void Interface_DrawTimers(PlayState* play) { OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId]) - D_801BF930[sTimerId] - ((void)0, gSaveContext.timerStartOsTimes[sTimerId])); } else if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_7) { - osTime = gSaveContext.timerEndOsTimes[sTimerId]; + osTime = gSaveContext.timerStopTimes[sTimerId]; } else { osTime = 0; } @@ -5564,7 +5564,7 @@ void Interface_DrawTimers(PlayState* play) { OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId]) - D_801BF930[sTimerId]); } else if (gSaveContext.timerStates[sTimerId] == TIMER_STATE_7) { - osTime = gSaveContext.timerEndOsTimes[sTimerId]; + osTime = gSaveContext.timerStopTimes[sTimerId]; } else if (sTimerId == TIMER_ID_POSTMAN) { osTime = gSaveContext.timerCurTimes[sTimerId]; } else { @@ -5707,7 +5707,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { osTime = osGetTime(); for (j = BOTTLE_FIRST; j < BOTTLE_MAX; j++) { - if (gSaveContext.bottleTimerState[j] == BOTTLE_TIMER_STATE_COUNTING) { + if (gSaveContext.bottleTimerStates[j] == BOTTLE_TIMER_STATE_COUNTING) { gSaveContext.bottleTimerPausedOsTimes[j] += osTime - sBottleTimerPausedOsTime; } } @@ -5718,7 +5718,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { sTimerId = TIMER_ID_NONE; for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { - if (gSaveContext.bottleTimerState[i] == BOTTLE_TIMER_STATE_COUNTING) { + if (gSaveContext.bottleTimerStates[i] == BOTTLE_TIMER_STATE_COUNTING) { osTime = osGetTime(); osTime = OSTIME_TO_TIMER_ALT(osTime - ((void)0, gSaveContext.bottleTimerPausedOsTimes[i]) - ((void)0, gSaveContext.bottleTimerStartOsTimes[i])); @@ -5737,7 +5737,7 @@ void Interface_UpdateBottleTimers(PlayState* play) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); Message_StartTextbox(play, 0xFA, NULL); } - gSaveContext.bottleTimerState[i] = BOTTLE_TIMER_STATE_OFF; + gSaveContext.bottleTimerStates[i] = BOTTLE_TIMER_STATE_OFF; } } } @@ -6868,7 +6868,7 @@ void Interface_Init(PlayState* play) { gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); gSaveContext.timerTimeLimits[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTimes[TIMER_ID_MINIGAME_1] = 0; - gSaveContext.timerEndOsTimes[TIMER_ID_MINIGAME_1] = 0; + gSaveContext.timerStopTimes[TIMER_ID_MINIGAME_1] = 0; gSaveContext.timerPausedOsTimes[TIMER_ID_MINIGAME_1] = 0; for (i = 0; i < TIMER_ID_MAX; i++) { diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 24c7ce5d6..37f1c1aa0 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -870,7 +870,7 @@ s32 Player_GetEnvTimerType(PlayState* play) { if (play->roomCtx.currRoom.unk2 == 3) { // Room is hot envTimerType = PLAYER_ENV_TIMER_HOTROOM - 1; - } else if ((player->transformation != PLAYER_FORM_ZORA) && (player->unk_AD8 > 80)) { + } else if ((player->transformation != PLAYER_FORM_ZORA) && (player->underwaterTimer > 80)) { envTimerType = PLAYER_ENV_TIMER_UNDERWATER_FREE - 1; } else if (player->stateFlags1 & PLAYER_STATE1_8000000) { if ((player->transformation == PLAYER_FORM_ZORA) && (player->currentBoots >= PLAYER_BOOTS_ZORA_UNDERWATER) && diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 222b6c690..018cf12d7 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -899,7 +899,7 @@ void func_80144A94(SramContext* sramCtx) { gSaveContext.timerCurTimes[i] = SECONDS_TO_TIMER(0); gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTimes[i] = 0; - gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerStopTimes[i] = 0; gSaveContext.timerPausedOsTimes[i] = 0; } @@ -974,7 +974,7 @@ void Sram_OpenSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { gSaveContext.timerCurTimes[i] = SECONDS_TO_TIMER(0); gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTimes[i] = 0; - gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerStopTimes[i] = 0; gSaveContext.timerPausedOsTimes[i] = 0; } diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index eaad41770..5d0a74e08 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1045,11 +1045,11 @@ void DmStk_Init(Actor* thisx, PlayState* play) { if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_ROOFTOP, 0)) { if (gSaveContext.sceneSetupIndex == 0) { - if (gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_MOON_CRASH] == TIMER_STATE_OFF) { // Starts a 5 minute (300 second) timer until the moon falls. - Interface_StartTimer(TIMER_ID_FINAL_HOURS, 300); - R_FINAL_HOURS_TIMER_Y = 200; - R_FINAL_HOURS_TIMER_X = 115; + Interface_StartTimer(TIMER_ID_MOON_CRASH, 300); + R_MOON_CRASH_TIMER_Y = 200; + R_MOON_CRASH_TIMER_X = 115; } if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) { @@ -1062,12 +1062,12 @@ void DmStk_Init(Actor* thisx, PlayState* play) { } else if (gSaveContext.sceneSetupIndex == 3) { this->animIndex = SK_ANIM_FLOATING_ARMS_CROSSED; - if (gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] == TIMER_STATE_OFF) { + if (gSaveContext.timerStates[TIMER_ID_MOON_CRASH] == TIMER_STATE_OFF) { // This code is called when the Giants fail to stop the moon. // Starts a 1 minute (60 second) timer until the moon falls. - Interface_StartTimer(TIMER_ID_FINAL_HOURS, 60); - R_FINAL_HOURS_TIMER_Y = 200; - R_FINAL_HOURS_TIMER_X = 115; + Interface_StartTimer(TIMER_ID_MOON_CRASH, 60); + R_MOON_CRASH_TIMER_Y = 200; + R_MOON_CRASH_TIMER_X = 115; } this->actor.world.pos.y = 120.0f; diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index 99521dc45..6909183f3 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -395,7 +395,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) { } } else if (gSaveContext.timerCurTimes[TIMER_ID_POSTMAN] > SECONDS_TO_TIMER(15)) { gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_STOP; - gSaveContext.timerOsTime = osGetTime(); + gSaveContext.postmanTimerStopOsTime = osGetTime(); } if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 50da0eb3b..852316b9b 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1156,7 +1156,7 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { this->actionFunc = EnSyatekiMan_Swamp_EndGame; sBonusTimer = 0; } else if (sBonusTimer > 10) { - gSaveContext.timerEndOsTimes[TIMER_ID_MINIGAME_1] += 100; + gSaveContext.timerStopTimes[TIMER_ID_MINIGAME_1] += 100; play->interfaceCtx.unk_25C += 10; this->score += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index c937f2d2d..0a013410b 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -90,7 +90,7 @@ void func_80AC9FE4(EnTimeTag* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); this->actionFunc = func_80AC9FD4; - gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MOON_CRASH] = TIMER_STATE_OFF; if (CHECK_QUEST_ITEM(QUEST_REMAINS_ODOWLA) && CHECK_QUEST_ITEM(QUEST_REMAINS_GOHT) && CHECK_QUEST_ITEM(QUEST_REMAINS_GYORG) && CHECK_QUEST_ITEM(QUEST_REMAINS_TWINMOLD)) { gSaveContext.save.weekEventReg[25] |= 2; @@ -107,7 +107,7 @@ void func_80ACA0A8(EnTimeTag* this, PlayState* play) { if (this->actor.cutscene != -1) { this->actionFunc = func_80AC9FE4; ActorCutscene_SetIntentToPlay(this2->actor.cutscene); - gSaveContext.timerStates[TIMER_ID_FINAL_HOURS] = TIMER_STATE_OFF; + gSaveContext.timerStates[TIMER_ID_MOON_CRASH] = TIMER_STATE_OFF; } play->msgCtx.ocarinaMode = 4; } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 415c33f0e..e68e487aa 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -519,7 +519,7 @@ void MapSelect_UpdateMenu(MapSelectState* this) { gSaveContext.timerCurTimes[i] = 0; gSaveContext.timerTimeLimits[i] = SECONDS_TO_TIMER(0); gSaveContext.timerStartOsTimes[i] = 0; - gSaveContext.timerEndOsTimes[i] = 0; + gSaveContext.timerStopTimes[i] = 0; gSaveContext.timerPausedOsTimes[i] = 0; } gSaveContext.minigameState = 0; From b029ad4a452f0723f92e6cc4896a00e060713fea Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 29 Sep 2022 08:58:29 -0400 Subject: [PATCH 140/160] comment --- include/z64save.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/z64save.h b/include/z64save.h index 3437e2226..b557f4306 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -60,7 +60,7 @@ typedef enum { #define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000) #define OSTIME_TO_TIMER_ALT(osTime) ((osTime) / 10000 * 64 / 3000) -// 1 centiSecond = 10 milliSeconds = 1/100 seconds +// 1 centisecond = 10 milliseconds = 1/100 seconds #define SECONDS_TO_TIMER_PRECISE(seconds, centiSeconds) ((seconds) * 100 + (centiSeconds)) typedef enum { From 615d945bf94bd29e5ba43b067f1cc3d64b7972c2 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 29 Sep 2022 15:11:03 -0400 Subject: [PATCH 141/160] minigame docs --- include/functions.h | 4 +- include/variables.h | 14 +- include/z64.h | 59 +- include/z64save.h | 10 +- src/code/code_8012EC80.c | 2 +- src/code/z_parameter.c | 880 ++++++++++-------- src/overlays/actors/ovl_En_Az/z_en_az.c | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 2 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 9 +- .../z_en_horse_game_check.c | 6 +- .../actors/ovl_En_Jc_Mato/z_en_jc_mato.c | 2 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 10 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 10 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 6 +- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 4 +- src/overlays/actors/ovl_En_Ot/z_en_ot.c | 7 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 24 +- .../ovl_En_Syateki_Okuta/z_en_syateki_okuta.c | 2 +- .../actors/ovl_En_Tru_Mt/z_en_tru_mt.c | 4 +- src/overlays/actors/ovl_En_Twig/z_en_twig.c | 2 +- .../ovl_Effect_Ss_Extra/z_eff_ss_extra.c | 2 +- src/overlays/gamestates/ovl_select/z_select.c | 2 +- tools/disasm/functions.txt | 10 +- tools/disasm/variables.txt | 14 +- tools/sizes/code_functions.csv | 10 +- 25 files changed, 587 insertions(+), 512 deletions(-) diff --git a/include/functions.h b/include/functions.h index 74ecd75cf..e44e818ad 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1834,7 +1834,7 @@ s32 Inventory_HasItemInBottle(u8 item); void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn); s32 Inventory_ConsumeFairy(PlayState* play); void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item); -void Interface_SetAButtonDoAction(PlayState* play, u16 action); +void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction); void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction); void Interface_SetTatlCall(PlayState* play, u16 tatlCallState); void func_80115844(PlayState* play, s16 arg1); @@ -1845,7 +1845,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(PlayState* play, s16 magicToAdd); void Magic_Reset(PlayState* play); s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type); -void Interface_SetPerfectMinigame(PlayState* play, s16 rewardType); +void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType); void Interface_StartMoonCrash(PlayState* play); void Interface_Draw(PlayState* play); void Interface_Update(PlayState* play); diff --git a/include/variables.h b/include/variables.h index 09bbcfba4..abb01f23a 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1051,7 +1051,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BF978; // extern UNK_TYPE2 D_801BF97C; // extern UNK_TYPE4 D_801BF980; -// extern UNK_TYPE1 D_801BF988; +// extern UNK_TYPE1 gScreenFillSetupDL; // extern UNK_TYPE1 D_801BF998; // extern UNK_TYPE2 D_801BF9B0; // extern UNK_TYPE1 D_801BF9B4; @@ -1125,15 +1125,15 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFC14; // extern UNK_TYPE1 D_801BFC40; // extern UNK_TYPE2 D_801BFC50; -// extern UNK_TYPE2 D_801BFC60; +// extern UNK_TYPE2 sMinigamePerfectType1PrimColorTargets; // extern UNK_TYPE2 D_801BFC62; // extern UNK_TYPE2 D_801BFC64; // extern UNK_TYPE2 D_801BFC6C; // extern UNK_TYPE2 D_801BFC7C; -// extern UNK_TYPE1 D_801BFC8C; +// extern UNK_TYPE1 sMinigamePerfectType2PrimColorTargets; // extern UNK_TYPE2 D_801BFC98; // extern UNK_TYPE2 D_801BFCA8; -// extern UNK_TYPE1 D_801BFCB8; +// extern UNK_TYPE1 sMinigamePerfectType3PrimColorTargets; // extern UNK_TYPE4 D_801BFCC4; // extern UNK_TYPE2 sTimerStateTimer; // extern UNK_TYPE2 sTimerDigits; @@ -1150,9 +1150,9 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFD24; // extern UNK_TYPE1 D_801BFD2C; // extern UNK_TYPE1 D_801BFD40; -// extern UNK_TYPE1 D_801BFD54; -// extern UNK_TYPE1 D_801BFD64; -// extern UNK_TYPE2 D_801BFD6C; +// extern UNK_TYPE1 sMinigameCountdownTextures; +// extern UNK_TYPE1 sMinigameCountdownTexWidths; +// extern UNK_TYPE2 sMinigameCountdownPrimColors; // extern UNK_TYPE1 D_801BFD84; // extern UNK_TYPE1 D_801BFD8C; // extern UNK_TYPE1 D_801BFD94; diff --git a/include/z64.h b/include/z64.h index 3b7ea09e4..421725167 100644 --- a/include/z64.h +++ b/include/z64.h @@ -545,9 +545,26 @@ typedef enum { /* 30 */ MINIGAME_STATE_30 = 30 } MinigameState; +typedef enum { + /* 0 */ MINIGAME_PERFECT_TYPE_OFF, + /* 1 */ MINIGAME_PERFECT_TYPE_1, + /* 2 */ MINIGAME_PERFECT_TYPE_2, + /* 3 */ MINIGAME_PERFECT_TYPE_3 +} MinigamePerfectType; + +typedef enum { + /* 0 */ MINIGAME_PERFECT_STATE_0, + /* 1 */ MINIGAME_PERFECT_STATE_1, + /* 2 */ MINIGAME_PERFECT_STATE_2, + /* 3 */ MINIGAME_PERFECT_STATE_3, + /* 4 */ MINIGAME_PERFECT_STATE_4, + /* 5 */ MINIGAME_PERFECT_STATE_5, + /* 6 */ MINIGAME_PERFECT_STATE_6 +} MinigamePerfectState; + typedef struct { /* 0x000 */ View view; - /* 0x168 */ Vtx* actionVtx; + /* 0x168 */ Vtx* aButtonVtx; /* 0x16C */ Vtx* beatingHeartVtx; /* 0x170 */ u8* parameterSegment; /* 0x174 */ u8* doActionSegment; @@ -564,7 +581,7 @@ typedef struct { /* 0x212 */ u16 unk_212; /* 0x214 */ u16 unk_214; /* 0x218 */ f32 unk_218; - /* 0x21C */ s16 unk_21C; + /* 0x21C */ s16 bButtonDoActionActive; /* 0x21E */ s16 bButtonDoAction; /* 0x220 */ s16 tatlCalling; /* 0x222 */ s16 unk_222; @@ -586,11 +603,11 @@ typedef struct { /* 0x256 */ s16 unk_256; /* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0 /* 0x25A */ u8 numHorseBoosts; - /* 0x25C */ u16 unk_25C; - /* 0x25E */ u16 unk_25E; - /* 0x260 */ u16 hbaAmmo; - /* 0x262 */ u16 unk_262; - /* 0x264 */ s16 unk_264; + /* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame. + /* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame. + /* 0x260 */ u16 minigameAmmo; + /* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused + /* 0x264 */ s16 screenFillAlpha; /* 0x266 */ s16 aAlpha; /* 0x268 */ s16 bAlpha; /* 0x26A */ s16 cLeftAlpha; @@ -606,21 +623,21 @@ typedef struct { /* 0x27E */ u8 unk_27E; /* 0x27F */ u8 unk_27F; /* 0x280 */ u8 minigameState; - /* 0x282 */ s16 unk_282; - /* 0x284 */ s16 unk_284; + /* 0x282 */ s16 minigameCountdownAlpha; + /* 0x284 */ s16 minigameCountdownScale; /* 0x286 */ s16 isMinigamePerfect; - /* 0x288 */ s16 minigameRewardType; - /* 0x28A */ s16 unk_28A[8]; - /* 0x29A */ u16 unk_29A[8]; - /* 0x2AA */ s16 unk_2AA[8]; - /* 0x2BC */ f32 unk_2BC[8]; - /* 0x2DC */ f32 unk_2DC[8]; - /* 0x2FC */ s16 unk_2FC[4]; - /* 0x304 */ s16 unk_304; - /* 0x306 */ s16 unk_306; - /* 0x308 */ s16 unk_308; - /* 0x30A */ s16 unk_30A; - /* 0x30C */ s16 unk_30C; + /* 0x288 */ s16 minigamePerfectType; + /* 0x28A */ s16 minigamePerfectState[8]; + /* 0x29A */ u16 minigamePerfectLetterDirection[8]; + /* 0x2AA */ s16 minigamePerfectVtxOffset[8]; + /* 0x2BC */ f32 minigamePerfectLetterPosX[8]; + /* 0x2DC */ f32 minigamePerfectLetterPosY[8]; + /* 0x2FC */ s16 minigamePerfectPrimColor[4]; + /* 0x304 */ s16 minigamePerfectLetterCount; + /* 0x306 */ s16 minigamePerfectUnused; + /* 0x308 */ s16 minigamePerfectColorTargetIndex; + /* 0x30A */ s16 minigamePerfectColorTimer; + /* 0x30C */ s16 minigamePerfectTimer; struct { /* 0x30E */ u8 hGauge; /* 0x30F */ u8 bButton; diff --git a/include/z64save.h b/include/z64save.h index f5b3bb93c..73c1eefe7 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -106,6 +106,12 @@ typedef enum { /* 1 */ BOTTLE_TIMER_STATE_COUNTING } BottleTimerState; +typedef enum { + /* 0 */ MINIGAME_STATUS_INACTIVE, + /* 1 */ MINIGAME_STATUS_ACTIVE, + /* 3 */ MINIGAME_STATUS_DONE = 3 +} MinigameStatus; + typedef enum { /* 0 */ HUD_VISIBILITY_IDLE, /* 1 */ HUD_VISIBILITY_NONE, @@ -344,9 +350,9 @@ typedef struct SaveContext { /* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used" /* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery" /* 0x3F36 */ u16 mapIndex; // "scene_ID" - /* 0x3F38 */ u16 minigameState; // "yabusame_mode" + /* 0x3F38 */ u16 minigameStatus; // "yabusame_mode" /* 0x3F3A */ u16 minigameScore; // "yabusame_total" - /* 0x3F3C */ u16 unk_3F3C; // "yabusame_out_ct" + /* 0x3F3C */ u16 minigameHiddenScore; // "yabusame_out_ct" /* 0x3F3E */ u8 unk_3F3E; // "no_save" /* 0x3F3F */ u8 unk_3F3F; // "flash_flag" /* 0x3F40 */ SaveOptions options; diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index 9e821b59c..c16d0a723 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -480,7 +480,7 @@ s32 Inventory_GetBtnBItem(PlayState* play) { } else if (gSaveContext.unk_1015 == ITEM_NONE) { return ITEM_NONE; } else if (CUR_FORM_EQUIP(EQUIP_SLOT_B) == ITEM_NONE) { - if (play->interfaceCtx.unk_21C != 0) { + if (play->interfaceCtx.bButtonDoActionActive) { if (play->interfaceCtx.bButtonDoAction != DO_ACTION_ATTACK) { return play->interfaceCtx.bButtonDoAction; } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 8d2c3a075..c4b67e10f 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -13,7 +13,7 @@ s32 func_801234D4(PlayState* play); void func_801663C4(u8* arg0, u8* arg1, u32 arg2); extern Gfx D_0E0001C8[]; // Display List -extern Gfx D_0E0002E0[]; // Display List +extern Gfx D_0E0002E0[]; // gScreenFillDL // TODO extract this information from the texture definitions themselves #define DO_ACTION_TEX_WIDTH 48 @@ -211,7 +211,7 @@ s16 D_801BF97C = 255; f32 D_801BF980 = 1.0f; s32 D_801BF984 = 0; -Gfx D_801BF988[] = { +Gfx gScreenFillSetupDL[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), @@ -413,152 +413,152 @@ void Interface_InitVertices(PlayState* play) { s16 k; s16 offset; - play->interfaceCtx.actionVtx = GRAPH_ALLOC(play->state.gfxCtx, 108 * sizeof(Vtx)); + play->interfaceCtx.aButtonVtx = GRAPH_ALLOC(play->state.gfxCtx, 108 * sizeof(Vtx)); // clang-format off for (k = 0, i = 0; i < 44; i += 4, k++) { - interfaceCtx->actionVtx[i].v.ob[0] = - interfaceCtx->actionVtx[i + 2].v.ob[0] = D_801BFA04[k]; + interfaceCtx->aButtonVtx[i].v.ob[0] = + interfaceCtx->aButtonVtx[i + 2].v.ob[0] = D_801BFA04[k]; - interfaceCtx->actionVtx[i + 1].v.ob[0] = - interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + D_801BFA1C[k]; + interfaceCtx->aButtonVtx[i + 1].v.ob[0] = + interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + D_801BFA1C[k]; - interfaceCtx->actionVtx[i].v.ob[1] = - interfaceCtx->actionVtx[i + 1].v.ob[1] = D_801BFA34[k]; + interfaceCtx->aButtonVtx[i].v.ob[1] = + interfaceCtx->aButtonVtx[i + 1].v.ob[1] = D_801BFA34[k]; - interfaceCtx->actionVtx[i + 2].v.ob[1] = - interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - D_801BFA4C[k]; + interfaceCtx->aButtonVtx[i + 2].v.ob[1] = + interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - D_801BFA4C[k]; - interfaceCtx->actionVtx[i].v.ob[2] = - interfaceCtx->actionVtx[i + 1].v.ob[2] = - interfaceCtx->actionVtx[i + 2].v.ob[2] = - interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; + interfaceCtx->aButtonVtx[i].v.ob[2] = + interfaceCtx->aButtonVtx[i + 1].v.ob[2] = + interfaceCtx->aButtonVtx[i + 2].v.ob[2] = + interfaceCtx->aButtonVtx[i + 3].v.ob[2] = 0; - interfaceCtx->actionVtx[i].v.flag = - interfaceCtx->actionVtx[i + 1].v.flag = - interfaceCtx->actionVtx[i + 2].v.flag = - interfaceCtx->actionVtx[i + 3].v.flag = 0; + interfaceCtx->aButtonVtx[i].v.flag = + interfaceCtx->aButtonVtx[i + 1].v.flag = + interfaceCtx->aButtonVtx[i + 2].v.flag = + interfaceCtx->aButtonVtx[i + 3].v.flag = 0; - interfaceCtx->actionVtx[i].v.tc[0] = - interfaceCtx->actionVtx[i].v.tc[1] = - interfaceCtx->actionVtx[i + 1].v.tc[1] = - interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; + interfaceCtx->aButtonVtx[i].v.tc[0] = + interfaceCtx->aButtonVtx[i].v.tc[1] = + interfaceCtx->aButtonVtx[i + 1].v.tc[1] = + interfaceCtx->aButtonVtx[i + 2].v.tc[0] = 0; - interfaceCtx->actionVtx[i + 1].v.tc[0] = - interfaceCtx->actionVtx[i + 3].v.tc[0] = D_801BFA1C[k] << 5; + interfaceCtx->aButtonVtx[i + 1].v.tc[0] = + interfaceCtx->aButtonVtx[i + 3].v.tc[0] = D_801BFA1C[k] << 5; - interfaceCtx->actionVtx[i + 2].v.tc[1] = - interfaceCtx->actionVtx[i + 3].v.tc[1] = D_801BFA4C[k] << 5; + interfaceCtx->aButtonVtx[i + 2].v.tc[1] = + interfaceCtx->aButtonVtx[i + 3].v.tc[1] = D_801BFA4C[k] << 5; - interfaceCtx->actionVtx[i].v.cn[0] = - interfaceCtx->actionVtx[i + 1].v.cn[0] = - interfaceCtx->actionVtx[i + 2].v.cn[0] = - interfaceCtx->actionVtx[i + 3].v.cn[0] = - interfaceCtx->actionVtx[i].v.cn[1] = - interfaceCtx->actionVtx[i + 1].v.cn[1] = - interfaceCtx->actionVtx[i + 2].v.cn[1] = - interfaceCtx->actionVtx[i + 3].v.cn[1] = - interfaceCtx->actionVtx[i].v.cn[2] = - interfaceCtx->actionVtx[i + 1].v.cn[2] = - interfaceCtx->actionVtx[i + 2].v.cn[2] = - interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; + interfaceCtx->aButtonVtx[i].v.cn[0] = + interfaceCtx->aButtonVtx[i + 1].v.cn[0] = + interfaceCtx->aButtonVtx[i + 2].v.cn[0] = + interfaceCtx->aButtonVtx[i + 3].v.cn[0] = + interfaceCtx->aButtonVtx[i].v.cn[1] = + interfaceCtx->aButtonVtx[i + 1].v.cn[1] = + interfaceCtx->aButtonVtx[i + 2].v.cn[1] = + interfaceCtx->aButtonVtx[i + 3].v.cn[1] = + interfaceCtx->aButtonVtx[i].v.cn[2] = + interfaceCtx->aButtonVtx[i + 1].v.cn[2] = + interfaceCtx->aButtonVtx[i + 2].v.cn[2] = + interfaceCtx->aButtonVtx[i + 3].v.cn[2] = 255; - interfaceCtx->actionVtx[i].v.cn[3] = - interfaceCtx->actionVtx[i + 1].v.cn[3] = - interfaceCtx->actionVtx[i + 2].v.cn[3] = - interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; + interfaceCtx->aButtonVtx[i].v.cn[3] = + interfaceCtx->aButtonVtx[i + 1].v.cn[3] = + interfaceCtx->aButtonVtx[i + 2].v.cn[3] = + interfaceCtx->aButtonVtx[i + 3].v.cn[3] = 255; } - interfaceCtx->actionVtx[1].v.tc[0] = - interfaceCtx->actionVtx[3].v.tc[0] = - interfaceCtx->actionVtx[2].v.tc[1] = - interfaceCtx->actionVtx[3].v.tc[1] = 0x400; + interfaceCtx->aButtonVtx[1].v.tc[0] = + interfaceCtx->aButtonVtx[3].v.tc[0] = + interfaceCtx->aButtonVtx[2].v.tc[1] = + interfaceCtx->aButtonVtx[3].v.tc[1] = 0x400; - interfaceCtx->actionVtx[5].v.tc[0] = - interfaceCtx->actionVtx[7].v.tc[0] = - interfaceCtx->actionVtx[6].v.tc[1] = - interfaceCtx->actionVtx[7].v.tc[1] = 0x400; + interfaceCtx->aButtonVtx[5].v.tc[0] = + interfaceCtx->aButtonVtx[7].v.tc[0] = + interfaceCtx->aButtonVtx[6].v.tc[1] = + interfaceCtx->aButtonVtx[7].v.tc[1] = 0x400; for (j = 0, offset = 2; j < 2; j++, offset -= 2) { for (k = 0; k < 8; k++, i += 4) { - if ((interfaceCtx->minigameRewardType == 1) || ((interfaceCtx->minigameRewardType == 3) && (interfaceCtx->unk_28A[0] == 6))) { - interfaceCtx->actionVtx[i].v.ob[0] = - interfaceCtx->actionVtx[i + 2].v.ob[0] = -((D_801BFA64[k] - offset) + 0x10); + if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) || ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) && (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6))) { + interfaceCtx->aButtonVtx[i].v.ob[0] = + interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -((D_801BFA64[k] - offset) + 0x10); - interfaceCtx->actionVtx[i + 1].v.ob[0] = - interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + interfaceCtx->aButtonVtx[i + 1].v.ob[0] = + interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; - interfaceCtx->actionVtx[i].v.ob[1] = - interfaceCtx->actionVtx[i + 1].v.ob[1] = (D_801BFA74[k] - offset) + 0x10; + interfaceCtx->aButtonVtx[i].v.ob[1] = + interfaceCtx->aButtonVtx[i + 1].v.ob[1] = (D_801BFA74[k] - offset) + 0x10; - interfaceCtx->actionVtx[i + 2].v.ob[1] = - interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + interfaceCtx->aButtonVtx[i + 2].v.ob[1] = + interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; - } else if ((interfaceCtx->minigameRewardType == 2) || (interfaceCtx->minigameRewardType == 3)) { - interfaceCtx->actionVtx[i].v.ob[0] = - interfaceCtx->actionVtx[i + 2].v.ob[0] = -(interfaceCtx->unk_2AA[k] - offset + 0x10); + } else if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) || (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3)) { + interfaceCtx->aButtonVtx[i].v.ob[0] = + interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -(interfaceCtx->minigamePerfectVtxOffset[k] - offset + 0x10); - interfaceCtx->actionVtx[i + 1].v.ob[0] = - interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + interfaceCtx->aButtonVtx[i + 1].v.ob[0] = + interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; - interfaceCtx->actionVtx[i].v.ob[1] = - interfaceCtx->actionVtx[i + 1].v.ob[1] = 0x10 - offset; + interfaceCtx->aButtonVtx[i].v.ob[1] = + interfaceCtx->aButtonVtx[i + 1].v.ob[1] = 0x10 - offset; - interfaceCtx->actionVtx[i + 2].v.ob[1] = - interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + interfaceCtx->aButtonVtx[i + 2].v.ob[1] = + interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; } else { - interfaceCtx->actionVtx[i].v.ob[0] = - interfaceCtx->actionVtx[i + 2].v.ob[0] = -(0xD8 - offset); + interfaceCtx->aButtonVtx[i].v.ob[0] = + interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -(0xD8 - offset); - interfaceCtx->actionVtx[i + 1].v.ob[0] = - interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + 0x20; + interfaceCtx->aButtonVtx[i + 1].v.ob[0] = + interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; - interfaceCtx->actionVtx[i].v.ob[1] = - interfaceCtx->actionVtx[i + 1].v.ob[1] = 0x18 - offset; + interfaceCtx->aButtonVtx[i].v.ob[1] = + interfaceCtx->aButtonVtx[i + 1].v.ob[1] = 0x18 - offset; - interfaceCtx->actionVtx[i + 2].v.ob[1] = - interfaceCtx->actionVtx[i + 3].v.ob[1] = interfaceCtx->actionVtx[i].v.ob[1] - 0x21; + interfaceCtx->aButtonVtx[i + 2].v.ob[1] = + interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; } - interfaceCtx->actionVtx[i].v.ob[2] = - interfaceCtx->actionVtx[i + 1].v.ob[2] = - interfaceCtx->actionVtx[i + 2].v.ob[2] = - interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; + interfaceCtx->aButtonVtx[i].v.ob[2] = + interfaceCtx->aButtonVtx[i + 1].v.ob[2] = + interfaceCtx->aButtonVtx[i + 2].v.ob[2] = + interfaceCtx->aButtonVtx[i + 3].v.ob[2] = 0; - interfaceCtx->actionVtx[i].v.flag = - interfaceCtx->actionVtx[i + 1].v.flag = - interfaceCtx->actionVtx[i + 2].v.flag = - interfaceCtx->actionVtx[i + 3].v.flag = 0; + interfaceCtx->aButtonVtx[i].v.flag = + interfaceCtx->aButtonVtx[i + 1].v.flag = + interfaceCtx->aButtonVtx[i + 2].v.flag = + interfaceCtx->aButtonVtx[i + 3].v.flag = 0; - interfaceCtx->actionVtx[i].v.tc[0] = - interfaceCtx->actionVtx[i].v.tc[1] = - interfaceCtx->actionVtx[i + 1].v.tc[1] = - interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; + interfaceCtx->aButtonVtx[i].v.tc[0] = + interfaceCtx->aButtonVtx[i].v.tc[1] = + interfaceCtx->aButtonVtx[i + 1].v.tc[1] = + interfaceCtx->aButtonVtx[i + 2].v.tc[0] = 0; - interfaceCtx->actionVtx[i + 1].v.tc[0] = - interfaceCtx->actionVtx[i + 3].v.tc[0] = 0x400; + interfaceCtx->aButtonVtx[i + 1].v.tc[0] = + interfaceCtx->aButtonVtx[i + 3].v.tc[0] = 0x400; - interfaceCtx->actionVtx[i + 2].v.tc[1] = - interfaceCtx->actionVtx[i + 3].v.tc[1] = 0x420; + interfaceCtx->aButtonVtx[i + 2].v.tc[1] = + interfaceCtx->aButtonVtx[i + 3].v.tc[1] = 0x420; - interfaceCtx->actionVtx[i].v.cn[0] = - interfaceCtx->actionVtx[i + 1].v.cn[0] = - interfaceCtx->actionVtx[i + 2].v.cn[0] = - interfaceCtx->actionVtx[i + 3].v.cn[0] = - interfaceCtx->actionVtx[i].v.cn[1] = - interfaceCtx->actionVtx[i + 1].v.cn[1] = - interfaceCtx->actionVtx[i + 2].v.cn[1] = - interfaceCtx->actionVtx[i + 3].v.cn[1] = - interfaceCtx->actionVtx[i].v.cn[2] = - interfaceCtx->actionVtx[i + 1].v.cn[2] = - interfaceCtx->actionVtx[i + 2].v.cn[2] = - interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; + interfaceCtx->aButtonVtx[i].v.cn[0] = + interfaceCtx->aButtonVtx[i + 1].v.cn[0] = + interfaceCtx->aButtonVtx[i + 2].v.cn[0] = + interfaceCtx->aButtonVtx[i + 3].v.cn[0] = + interfaceCtx->aButtonVtx[i].v.cn[1] = + interfaceCtx->aButtonVtx[i + 1].v.cn[1] = + interfaceCtx->aButtonVtx[i + 2].v.cn[1] = + interfaceCtx->aButtonVtx[i + 3].v.cn[1] = + interfaceCtx->aButtonVtx[i].v.cn[2] = + interfaceCtx->aButtonVtx[i + 1].v.cn[2] = + interfaceCtx->aButtonVtx[i + 2].v.cn[2] = + interfaceCtx->aButtonVtx[i + 3].v.cn[2] = 255; - interfaceCtx->actionVtx[i].v.cn[3] = - interfaceCtx->actionVtx[i + 1].v.cn[3] = - interfaceCtx->actionVtx[i + 2].v.cn[3] = - interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; + interfaceCtx->aButtonVtx[i].v.cn[3] = + interfaceCtx->aButtonVtx[i + 1].v.cn[3] = + interfaceCtx->aButtonVtx[i + 2].v.cn[3] = + interfaceCtx->aButtonVtx[i + 3].v.cn[3] = 255; } } @@ -2023,14 +2023,16 @@ void func_80111CB4(PlayState* play) { if (play->transitionMode != TRANS_MODE_OFF) { Interface_SetHudVisibility(HUD_VISIBILITY_NONE); - } else if ((gSaveContext.minigameState == 1) && + } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0)) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); - } else if ((gSaveContext.minigameState == 1) && (gSaveContext.eventInf[3] & 0x20)) { + } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && + (gSaveContext.eventInf[3] & 0x20)) { Interface_SetHudVisibility(HUD_VISIBILITY_B_MINIMAP); - } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && (gSaveContext.minigameState == 1)) { + } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && + (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (play->unk_1887C >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); @@ -2083,11 +2085,11 @@ void func_80111CB4(PlayState* play) { if (play->transitionMode != TRANS_MODE_OFF) { Interface_SetHudVisibility(HUD_VISIBILITY_NONE); - } else if ((gSaveContext.minigameState == 1) && + } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0)) && (Cutscene_GetSceneSetupIndex(play) != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); - } else if (gSaveContext.minigameState == 1) { + } else if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (play->unk_1887C >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); @@ -2151,7 +2153,8 @@ void func_80111CB4(PlayState* play) { D_801BF888 = false; } } - } else if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) && + } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && + (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; @@ -2212,20 +2215,20 @@ void Interface_SetSceneRestrictions(PlayState* play) { } while (sRestrictionFlags[i].scene != 0xFF); } -void func_80112AF4(void) { +void Interface_Noop(void) { } void Interface_InitMinigame(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - gSaveContext.minigameState = 1; + gSaveContext.minigameStatus = MINIGAME_STATUS_ACTIVE; gSaveContext.minigameScore = 0; - gSaveContext.unk_3F3C = 0; + gSaveContext.minigameHiddenScore = 0; sHBAScoreTier = 0; - interfaceCtx->unk_25C = interfaceCtx->unk_25E = interfaceCtx->unk_262 = 0; + interfaceCtx->minigamePoints = interfaceCtx->minigameHiddenPoints = interfaceCtx->minigameUnusedPoints = 0; - interfaceCtx->hbaAmmo = 20; + interfaceCtx->minigameAmmo = 20; } void Interface_LoadItemIconImpl(PlayState* play, u8 btn) { @@ -2905,7 +2908,7 @@ void Inventory_UpdateDeitySwordEquip(PlayState* play) { u8 btn; if (CUR_FORM == PLAYER_FORM_FIERCE_DEITY) { - interfaceCtx->unk_21C = 0; + interfaceCtx->bButtonDoActionActive = false; interfaceCtx->bButtonDoAction = 0; // Is simply checking if (gSaveContext.save.playerForm == PLAYER_FORM_FIERCE_DEITY) @@ -3072,10 +3075,10 @@ void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction) { osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); } - interfaceCtx->unk_21C = 1; + interfaceCtx->bButtonDoActionActive = true; } } else { - interfaceCtx->unk_21C = 0; + interfaceCtx->bButtonDoActionActive = false; interfaceCtx->bButtonDoAction = 0; } } @@ -3873,8 +3876,8 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { gDPPipeSync(OVERLAY_DISP++); - if ((button == 0) && (gSaveContext.minigameState == 1)) { - ammo = play->interfaceCtx.hbaAmmo; + if ((button == 0) && (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { + ammo = play->interfaceCtx.minigameAmmo; } else if ((button == 0) && (play->unk_1887C > 1)) { ammo = play->unk_1887C - 1; } else if (((i == ITEM_BOW) && (AMMO(i) == CUR_CAPACITY(UPG_QUIVER))) || @@ -3926,8 +3929,8 @@ void func_80118084(PlayState* play) { Interface_DrawAmmoCount(play, 0, interfaceCtx->bAlpha); } - } else if (((interfaceCtx->unk_21C == 0) && (interfaceCtx->unk_222 == 0)) || - (((interfaceCtx->unk_21C != 0) && + } else if ((!interfaceCtx->bButtonDoActionActive && (interfaceCtx->unk_222 == 0)) || + ((interfaceCtx->bButtonDoActionActive && ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED)) && BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) && @@ -3943,9 +3946,10 @@ void func_80118084(PlayState* play) { if ((play->sceneNum != SCENE_SYATEKI_MIZU) && (play->sceneNum != SCENE_SYATEKI_MORI) && (play->sceneNum != SCENE_BOWLING) && - ((gSaveContext.minigameState != 1) || + ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || (gSaveContext.save.entrance != ENTRANCE(ROMANI_RANCH, 0))) && - ((gSaveContext.minigameState != 1) || !(gSaveContext.eventInf[3] & 0x20)) && + ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || + !(gSaveContext.eventInf[3] & 0x20)) && (!(gSaveContext.save.weekEventReg[31] & 0x80) || (play->unk_1887C != 0x64))) { Interface_DrawAmmoCount(play, 0, interfaceCtx->bAlpha); } @@ -4060,14 +4064,14 @@ void func_80118BA4(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPPipeSync(OVERLAY_DISP++); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[4], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, aAlpha); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[0], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); @@ -4083,7 +4087,7 @@ void func_80118BA4(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateXFApply(interfaceCtx->unk_218 / 10000.0f); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[8], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[8], 4, 0); // Draw Action Label if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { @@ -4450,7 +4454,7 @@ void Interface_DrawClock(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[12], 4, 0); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayClockStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -4486,7 +4490,7 @@ void Interface_DrawClock(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[16], 4, 0); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); @@ -4504,7 +4508,7 @@ void Interface_DrawClock(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[20], 4, 0); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); @@ -4531,7 +4535,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[24], 8, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); @@ -4555,7 +4559,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[32], 8, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); @@ -4758,43 +4762,46 @@ void Interface_DrawClock(PlayState* play); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawClock.s") #endif -void Interface_SetPerfectMinigame(PlayState* play, s16 rewardType) { +void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; interfaceCtx->isMinigamePerfect = true; - interfaceCtx->minigameRewardType = rewardType; - interfaceCtx->unk_2FC[0] = 255; - interfaceCtx->unk_2FC[1] = 165; - interfaceCtx->unk_2FC[2] = 55; - interfaceCtx->unk_2FC[3] = 255; - interfaceCtx->unk_30A = 20; - interfaceCtx->unk_308 = 0; - interfaceCtx->unk_304 = 1; - interfaceCtx->unk_30C = 0; + interfaceCtx->minigamePerfectType = minigamePerfectType; + + interfaceCtx->minigamePerfectPrimColor[0] = 255; + interfaceCtx->minigamePerfectPrimColor[1] = 165; + interfaceCtx->minigamePerfectPrimColor[2] = 55; + interfaceCtx->minigamePerfectPrimColor[3] = 255; + interfaceCtx->minigamePerfectColorTimer = 20; + + interfaceCtx->minigamePerfectColorTargetIndex = 0; + interfaceCtx->minigamePerfectLetterCount = 1; + interfaceCtx->minigamePerfectTimer = 0; for (i = 0; i < 8; i++) { - interfaceCtx->unk_2AA[i] = 0; - interfaceCtx->unk_29A[i] = 0; - interfaceCtx->unk_28A[i] = interfaceCtx->unk_2AA[i]; - if (interfaceCtx->minigameRewardType == 1) { - interfaceCtx->unk_2BC[i] = 140.0f; - interfaceCtx->unk_2DC[i] = 100.0f; + interfaceCtx->minigamePerfectLetterDirection[i] = 0; + interfaceCtx->minigamePerfectState[i] = interfaceCtx->minigamePerfectVtxOffset[i] = 0; + if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { + interfaceCtx->minigamePerfectLetterPosX[i] = 140.0f; + interfaceCtx->minigamePerfectLetterPosY[i] = 100.0f; } else { - interfaceCtx->unk_2DC[i] = 200.0f; - interfaceCtx->unk_2BC[i] = 200.0f; + interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; + interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; } } - interfaceCtx->unk_28A[0] = 1; + interfaceCtx->minigamePerfectState[0] = MINIGAME_PERFECT_STATE_1; } -void func_8011B5C0(PlayState* play) { - static u16 D_801BFC50[] = { - 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, - }; - static s16 D_801BFC60[][3] = { - 255, 255, 255, 255, 165, 55, - }; +u16 D_801BFC50[] = { + 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, +}; +s16 sMinigamePerfectType1PrimColorTargets[2][3] = { + { 255, 255, 255 }, + { 255, 165, 55 }, +}; + +void Interface_UpdateMinigamePerfectType1(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; s16 count; @@ -4802,72 +4809,84 @@ void func_8011B5C0(PlayState* play) { s16 colorStepG; s16 colorStepB; - for (count = 0, i = 0; i < interfaceCtx->unk_304; i++, count += 4) { - if (interfaceCtx->unk_28A[i] == 1) { - interfaceCtx->unk_29A[i] = D_801BFC50[i] + 0xA000; - interfaceCtx->unk_28A[i] = 2; - } else if (interfaceCtx->unk_28A[i] == 2) { - interfaceCtx->unk_29A[i] -= 0x800; - if (interfaceCtx->unk_29A[i] == D_801BFC50[i]) { - interfaceCtx->unk_28A[i] = 3; + for (count = 0, i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, count += 4) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + interfaceCtx->minigamePerfectLetterDirection[i] = D_801BFC50[i] + 0xA000; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterDirection[i] == D_801BFC50[i]) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; } - } else if (interfaceCtx->unk_28A[i] == 4) { - interfaceCtx->unk_29A[i] -= 0x800; - if (interfaceCtx->unk_29A[i] == (u16)(D_801BFC50[i] - 0x8000)) { - interfaceCtx->unk_28A[i] = 0; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { + interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFC50[i] - 0x8000)) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; } } } - if ((interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) && (interfaceCtx->unk_304 < 8)) { - interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; - interfaceCtx->unk_2BC[interfaceCtx->unk_304] = 140.0f; - interfaceCtx->unk_2DC[interfaceCtx->unk_304] = 100.0f; - interfaceCtx->unk_29A[interfaceCtx->unk_304] = D_801BFC50[interfaceCtx->unk_304] + 0xA000; - interfaceCtx->unk_304++; + if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) && + (interfaceCtx->minigamePerfectLetterCount < 8)) { + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectLetterPosX[interfaceCtx->minigamePerfectLetterCount] = 140.0f; + interfaceCtx->minigamePerfectLetterPosY[interfaceCtx->minigamePerfectLetterCount] = 100.0f; + interfaceCtx->minigamePerfectLetterDirection[interfaceCtx->minigamePerfectLetterCount] = + D_801BFC50[interfaceCtx->minigamePerfectLetterCount] + 0xA000; + interfaceCtx->minigamePerfectLetterCount++; } - if ((interfaceCtx->unk_304 == 8) && (interfaceCtx->unk_28A[7] == 3)) { + if ((interfaceCtx->minigamePerfectLetterCount == 8) && + (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_3)) { - colorStepR = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFC60[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; - colorStepG = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFC60[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; - colorStepB = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFC60[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / + interfaceCtx->minigamePerfectColorTimer; + colorStepG = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / + interfaceCtx->minigamePerfectColorTimer; + colorStepB = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / + interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->unk_2FC[0] >= D_801BFC60[interfaceCtx->unk_308][0]) { - interfaceCtx->unk_2FC[0] -= colorStepR; + if (interfaceCtx->minigamePerfectPrimColor[0] >= + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { + interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; } else { - interfaceCtx->unk_2FC[0] += colorStepR; + interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; } - if (interfaceCtx->unk_2FC[1] >= D_801BFC60[interfaceCtx->unk_308][1]) { - interfaceCtx->unk_2FC[1] -= colorStepG; + if (interfaceCtx->minigamePerfectPrimColor[1] >= + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { + interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; } else { - interfaceCtx->unk_2FC[1] += colorStepG; + interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; } - if (interfaceCtx->unk_2FC[2] >= D_801BFC60[interfaceCtx->unk_308][2]) { - interfaceCtx->unk_2FC[2] -= colorStepB; + if (interfaceCtx->minigamePerfectPrimColor[2] >= + sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { + interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; } else { - interfaceCtx->unk_2FC[2] += colorStepB; + interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; } - interfaceCtx->unk_30A--; + interfaceCtx->minigamePerfectColorTimer--; - if (interfaceCtx->unk_30A == 0) { - interfaceCtx->unk_30A = 20; - interfaceCtx->unk_308 ^= 1; - interfaceCtx->unk_30C++; + if (interfaceCtx->minigamePerfectColorTimer == 0) { + interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->minigamePerfectColorTargetIndex ^= 1; + interfaceCtx->minigamePerfectTimer++; - if (interfaceCtx->unk_30C == 6) { + if (interfaceCtx->minigamePerfectTimer == 6) { for (i = 0; i < 8; i++) { - interfaceCtx->unk_28A[i] = 4; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_4; } } } } for (count = 0, i = 0; i < 8; i++) { - if (interfaceCtx->unk_28A[i] == 0) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_0) { count++; } } @@ -4883,12 +4902,12 @@ s16 D_801BFC6C[] = { s16 D_801BFC7C[] = { 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; -s16 D_801BFC8C[2][3] = { - { 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xA5, 0x37 }, +s16 sMinigamePerfectType2PrimColorTargets[2][3] = { + { 255, 255, 255 }, + { 255, 165, 55 }, }; -void func_8011B9E0(PlayState* play) { +void Interface_UpdateMinigamePerfectType2(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 stepVar1; @@ -4897,115 +4916,130 @@ void func_8011B9E0(PlayState* play) { s16 new_var; s16 j = 0; // unused incrementer - for (i = 0; i < interfaceCtx->unk_304; i++, j += 4) { - if (interfaceCtx->unk_28A[i] == 1) { - interfaceCtx->unk_29A[i] = i << 0xD; - interfaceCtx->unk_2BC[i] = 200.0f; - interfaceCtx->unk_2DC[i] = 200.0f; - interfaceCtx->unk_2AA[i] = 0; - interfaceCtx->unk_28A[i] = 2; - } else if (interfaceCtx->unk_28A[i] == 2) { - interfaceCtx->unk_29A[i] -= 0x800; - interfaceCtx->unk_2BC[i] -= 8.0f; - interfaceCtx->unk_2DC[i] -= 8.0f; - if (interfaceCtx->unk_2BC[i] <= 0.0f) { - interfaceCtx->unk_2DC[i] = 0.0f; - interfaceCtx->unk_2BC[i] = 0.0f; - interfaceCtx->unk_28A[i] = 3; + for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; + interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; + interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; + interfaceCtx->minigamePerfectVtxOffset[i] = 0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; + interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; + interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; + if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { + interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; + interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; if (i == 7) { - interfaceCtx->unk_30A = 5; - interfaceCtx->unk_28A[7] = 4; - interfaceCtx->unk_28A[6] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[5] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[4] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[3] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[2] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[1] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[0] = interfaceCtx->unk_28A[7]; + interfaceCtx->minigamePerfectColorTimer = 5; + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_4; + interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[3] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[2] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[1] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->unk_28A[i] == 4) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { - stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC6C[i]) / interfaceCtx->unk_30A; - if (interfaceCtx->unk_2AA[i] >= D_801BFC6C[i]) { - interfaceCtx->unk_2AA[i] -= stepVar1; + stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC6C[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC6C[i]) { + interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; } else { - interfaceCtx->unk_2AA[i] += stepVar1; + interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; } - } else if (interfaceCtx->unk_28A[i] == 6) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_6) { - stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC7C[i]) / interfaceCtx->unk_30A; - if (interfaceCtx->unk_2AA[i] >= D_801BFC7C[i]) { - interfaceCtx->unk_2AA[i] -= stepVar1; + stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC7C[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC7C[i]) { + interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; } else { - interfaceCtx->unk_2AA[i] += stepVar1; + interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; } } } - if ((interfaceCtx->unk_28A[0] == 4) || (interfaceCtx->unk_28A[0] == 6)) { - if (interfaceCtx->unk_28A[0] == 6) { - new_var = interfaceCtx->unk_2FC[3] / interfaceCtx->unk_30A; - interfaceCtx->unk_2FC[3] -= new_var; + if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) || + (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6)) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6) { + new_var = interfaceCtx->minigamePerfectPrimColor[3] / interfaceCtx->minigamePerfectColorTimer; + interfaceCtx->minigamePerfectPrimColor[3] -= new_var; } - interfaceCtx->unk_30A--; - if (interfaceCtx->unk_30A == 0) { + interfaceCtx->minigamePerfectColorTimer--; + if (interfaceCtx->minigamePerfectColorTimer == 0) { - if (interfaceCtx->unk_28A[0] == 4) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) { for (i = 0; i < 8; i++) { - interfaceCtx->unk_28A[i] = 5; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_5; } - interfaceCtx->unk_30A = 20; + interfaceCtx->minigamePerfectColorTimer = 20; } else { for (i = 0; i < 8; i++) { - interfaceCtx->unk_28A[i] = 0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; } - interfaceCtx->isMinigamePerfect = 0; + interfaceCtx->isMinigamePerfect = false; } } } - if (interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) { - if (interfaceCtx->unk_304 < 8) { - interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; - interfaceCtx->unk_304++; + if (interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) { + if (interfaceCtx->minigamePerfectLetterCount < 8) { + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectLetterCount++; } } - if (interfaceCtx->unk_304 == 8) { - if (interfaceCtx->unk_28A[7] == 5) { + if (interfaceCtx->minigamePerfectLetterCount == 8) { + if (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_5) { - stepVar1 = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFC8C[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; - stepVar2 = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFC8C[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; - stepVar3 = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFC8C[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + stepVar1 = + ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / + interfaceCtx->minigamePerfectColorTimer; + stepVar2 = + ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / + interfaceCtx->minigamePerfectColorTimer; + stepVar3 = + ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / + interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->unk_2FC[0] >= D_801BFC8C[interfaceCtx->unk_308][0]) { - interfaceCtx->unk_2FC[0] -= stepVar1; + if (interfaceCtx->minigamePerfectPrimColor[0] >= + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { + interfaceCtx->minigamePerfectPrimColor[0] -= stepVar1; } else { - interfaceCtx->unk_2FC[0] += stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] += stepVar1; } - if (interfaceCtx->unk_2FC[1] >= D_801BFC8C[interfaceCtx->unk_308][1]) { - interfaceCtx->unk_2FC[1] -= stepVar2; + if (interfaceCtx->minigamePerfectPrimColor[1] >= + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { + interfaceCtx->minigamePerfectPrimColor[1] -= stepVar2; } else { - interfaceCtx->unk_2FC[1] += stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] += stepVar2; } - if (interfaceCtx->unk_2FC[2] >= D_801BFC8C[interfaceCtx->unk_308][2]) { - interfaceCtx->unk_2FC[2] -= stepVar3; + if (interfaceCtx->minigamePerfectPrimColor[2] >= + sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { + interfaceCtx->minigamePerfectPrimColor[2] -= stepVar3; } else { - interfaceCtx->unk_2FC[2] += stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] += stepVar3; } - interfaceCtx->unk_30A--; - if (interfaceCtx->unk_30A == 0) { - interfaceCtx->unk_30A = 20; - interfaceCtx->unk_308 ^= 1; - interfaceCtx->unk_30C++; - if (interfaceCtx->unk_30C == 6) { + interfaceCtx->minigamePerfectColorTimer--; + if (interfaceCtx->minigamePerfectColorTimer == 0) { + interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->minigamePerfectColorTargetIndex ^= 1; + interfaceCtx->minigamePerfectTimer++; + if (interfaceCtx->minigamePerfectTimer == 6) { for (i = 0; i < 8; i++) { - interfaceCtx->unk_28A[i] = 6; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_6; } - interfaceCtx->unk_30A = 5; + interfaceCtx->minigamePerfectColorTimer = 5; } } } @@ -5018,12 +5052,12 @@ s16 D_801BFC98[] = { u16 D_801BFCA8[] = { 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, }; -s16 D_801BFCB8[2][3] = { - { 0xFF, 0xFF, 0xFF }, - { 0xFF, 0xA5, 0x37 }, +s16 sMinigamePerfectType3PrimColorTargets[2][3] = { + { 255, 255, 255 }, + { 255, 165, 55 }, }; -void func_8011BF70(PlayState* play) { +void Interface_UpdateMinigamePerfectType3(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 stepVar1; @@ -5032,113 +5066,125 @@ void func_8011BF70(PlayState* play) { s16 stepVar4; s16 j = 0; - for (i = 0; i < interfaceCtx->unk_304; i++, j += 4) { - if (interfaceCtx->unk_28A[i] == 1) { - interfaceCtx->unk_29A[i] = i << 0xD; - interfaceCtx->unk_2BC[i] = 200.0f; - interfaceCtx->unk_2DC[i] = 200.0f; - interfaceCtx->unk_2AA[i] = 0; - interfaceCtx->unk_28A[i] = 2; - } else if (interfaceCtx->unk_28A[i] == 2) { - interfaceCtx->unk_29A[i] -= 0x800; - interfaceCtx->unk_2BC[i] -= 8.0f; - interfaceCtx->unk_2DC[i] -= 8.0f; - if (interfaceCtx->unk_2BC[i] <= 0.0f) { - interfaceCtx->unk_2DC[i] = 0.0f; - interfaceCtx->unk_2BC[i] = 0.0f; - interfaceCtx->unk_28A[i] = 3; + for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; + interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; + interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; + interfaceCtx->minigamePerfectVtxOffset[i] = 0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; + interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; + interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; + if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { + interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; + interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; if (i == 7) { - interfaceCtx->unk_28A[7] = 4; - interfaceCtx->unk_30A = 5; - interfaceCtx->unk_28A[6] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[5] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[4] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[3] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[2] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[1] = interfaceCtx->unk_28A[7]; - interfaceCtx->unk_28A[0] = interfaceCtx->unk_28A[7]; + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_4; + interfaceCtx->minigamePerfectColorTimer = 5; + interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[3] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[2] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[1] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->unk_28A[i] == 4) { - stepVar1 = ABS_ALT(interfaceCtx->unk_2AA[i] - D_801BFC98[i]) / interfaceCtx->unk_30A; - if (interfaceCtx->unk_2AA[i] >= D_801BFC98[i]) { - interfaceCtx->unk_2AA[i] -= stepVar1; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { + stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC98[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC98[i]) { + interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; } else { - interfaceCtx->unk_2AA[i] += stepVar1; + interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; } - } else if (interfaceCtx->unk_28A[i] == 6) { - interfaceCtx->unk_29A[i] -= 0x800; - if (interfaceCtx->unk_29A[i] == (u16)(D_801BFCA8[i] - 0x8000)) { - interfaceCtx->unk_28A[i] = 0; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_6) { + interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFCA8[i] - 0x8000)) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; } } } - if (interfaceCtx->unk_28A[0] == 4) { - interfaceCtx->unk_30A--; - if (interfaceCtx->unk_30A == 0) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) { + interfaceCtx->minigamePerfectColorTimer--; + if (interfaceCtx->minigamePerfectColorTimer == 0) { for (i = 0; i < 8; i++) { - interfaceCtx->unk_28A[i] = 5; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_5; } - interfaceCtx->unk_30A = 20; + interfaceCtx->minigamePerfectColorTimer = 20; } } - if ((interfaceCtx->unk_28A[interfaceCtx->unk_304] == 0) && (interfaceCtx->unk_304 < 8)) { - interfaceCtx->unk_28A[interfaceCtx->unk_304] = 1; - interfaceCtx->unk_304++; + if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) && + (interfaceCtx->minigamePerfectLetterCount < 8)) { + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectLetterCount++; } - if ((interfaceCtx->unk_304 == 8) && (interfaceCtx->unk_28A[7] == 5)) { + if ((interfaceCtx->minigamePerfectLetterCount == 8) && + (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_5)) { - stepVar1 = ABS_ALT(interfaceCtx->unk_2FC[0] - D_801BFCB8[interfaceCtx->unk_308][0]) / interfaceCtx->unk_30A; - stepVar2 = ABS_ALT(interfaceCtx->unk_2FC[1] - D_801BFCB8[interfaceCtx->unk_308][1]) / interfaceCtx->unk_30A; - stepVar3 = ABS_ALT(interfaceCtx->unk_2FC[2] - D_801BFCB8[interfaceCtx->unk_308][2]) / interfaceCtx->unk_30A; + stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / + interfaceCtx->minigamePerfectColorTimer; + stepVar2 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / + interfaceCtx->minigamePerfectColorTimer; + stepVar3 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / + interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->unk_2FC[0] >= D_801BFCB8[interfaceCtx->unk_308][0]) { - interfaceCtx->unk_2FC[0] -= stepVar1; + if (interfaceCtx->minigamePerfectPrimColor[0] >= + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { + interfaceCtx->minigamePerfectPrimColor[0] -= stepVar1; } else { - interfaceCtx->unk_2FC[0] += stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] += stepVar1; } - if (interfaceCtx->unk_2FC[1] >= D_801BFCB8[interfaceCtx->unk_308][1]) { - interfaceCtx->unk_2FC[1] -= stepVar2; + if (interfaceCtx->minigamePerfectPrimColor[1] >= + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { + interfaceCtx->minigamePerfectPrimColor[1] -= stepVar2; } else { - interfaceCtx->unk_2FC[1] += stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] += stepVar2; } - if (interfaceCtx->unk_2FC[2] >= D_801BFCB8[interfaceCtx->unk_308][2]) { - interfaceCtx->unk_2FC[2] -= stepVar3; + if (interfaceCtx->minigamePerfectPrimColor[2] >= + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { + interfaceCtx->minigamePerfectPrimColor[2] -= stepVar3; } else { - interfaceCtx->unk_2FC[2] += stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] += stepVar3; } - interfaceCtx->unk_30A--; - if (interfaceCtx->unk_30A == 0) { - interfaceCtx->unk_30A = 20; - interfaceCtx->unk_308 ^= 1; - interfaceCtx->unk_30C++; - if (interfaceCtx->unk_30C == 6) { + interfaceCtx->minigamePerfectColorTimer--; + if (interfaceCtx->minigamePerfectColorTimer == 0) { + interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->minigamePerfectColorTargetIndex ^= 1; + interfaceCtx->minigamePerfectTimer++; + if (interfaceCtx->minigamePerfectTimer == 6) { for (i = 0; i < 8; i++) { - interfaceCtx->unk_2BC[i] = 140.0f; - interfaceCtx->unk_2DC[i] = 100.0f; - interfaceCtx->unk_29A[i] = D_801BFCA8[i]; - interfaceCtx->unk_28A[i] = 6; + interfaceCtx->minigamePerfectLetterPosX[i] = 140.0f; + interfaceCtx->minigamePerfectLetterPosY[i] = 100.0f; + interfaceCtx->minigamePerfectLetterDirection[i] = D_801BFCA8[i]; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_6; } - interfaceCtx->unk_30A = 5; + interfaceCtx->minigamePerfectColorTimer = 5; } } } j = 0; for (i = 0; i < 8; i++) { - if (interfaceCtx->unk_28A[i] == 0) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_0) { j++; } } if (j == 8) { - interfaceCtx->isMinigamePerfect = 0; + interfaceCtx->isMinigamePerfect = false; } } @@ -5148,10 +5194,10 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, }; InterfaceContext* interfaceCtx = &play->interfaceCtx; - f32 temp_f22; - f32 temp_f24; + f32 letterX; + f32 letterY; s16 i; - s16 phi_s7; + s16 vtxOffset; OPEN_DISPS(play->state.gfxCtx); @@ -5161,31 +5207,34 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - for (phi_s7 = 0, i = 0; i < 8; phi_s7 += 4, i++) { - if (interfaceCtx->unk_28A[i] != 0) { - temp_f24 = Math_SinS(interfaceCtx->unk_29A[i]) * interfaceCtx->unk_2BC[i]; - temp_f22 = Math_CosS(interfaceCtx->unk_29A[i]) * interfaceCtx->unk_2DC[i]; + for (vtxOffset = 0, i = 0; i < 8; vtxOffset += 4, i++) { + if (interfaceCtx->minigamePerfectState[i] != MINIGAME_PERFECT_STATE_0) { + letterX = + Math_SinS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosX[i]; + letterY = + Math_CosS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosY[i]; gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->unk_2FC[3]); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->minigamePerfectPrimColor[3]); - Matrix_Translate(temp_f24, temp_f22, 0.0f, MTXMODE_NEW); + Matrix_Translate(letterX, letterY, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x2C, 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[vtxOffset] + 0x2C, 4, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->unk_2FC[0], interfaceCtx->unk_2FC[1], - interfaceCtx->unk_2FC[2], interfaceCtx->unk_2FC[3]); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->minigamePerfectPrimColor[0], + interfaceCtx->minigamePerfectPrimColor[1], interfaceCtx->minigamePerfectPrimColor[2], + interfaceCtx->minigamePerfectPrimColor[3]); - Matrix_Translate(temp_f24, temp_f22, 0.0f, MTXMODE_NEW); + Matrix_Translate(letterX, letterY, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[phi_s7] + 0x4C, 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[vtxOffset] + 0x4C, 4, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); } @@ -5472,7 +5521,7 @@ void Interface_DrawTimers(PlayState* play) { OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerStartOsTimes[sTimerId]) - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId])); - if ((gSaveContext.minigameState == 1) && + if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { if (gSaveContext.timerStopTimes[sTimerId] >= SECONDS_TO_TIMER(120)) { gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(120); @@ -5573,7 +5622,8 @@ void Interface_DrawTimers(PlayState* play) { osTime = SECONDS_TO_TIMER(0); } - if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { + if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && + (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { if (osTime >= SECONDS_TO_TIMER(120)) { osTime = SECONDS_TO_TIMER(120); } @@ -5587,7 +5637,8 @@ void Interface_DrawTimers(PlayState* play) { Interface_GetTimerDigits(osTime, sTimerDigits); // Use seconds to determine when to beep - if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { + if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && + (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { if ((gSaveContext.timerCurTimes[sTimerId] > SECONDS_TO_TIMER(110)) && (sTimerBeepSfxSeconds != sTimerDigits[4])) { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -5623,7 +5674,7 @@ void Interface_DrawTimers(PlayState* play) { } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); } - } else if ((gSaveContext.minigameState == 1) && + } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 0))) { if (gSaveContext.timerCurTimes[sTimerId] >= SECONDS_TO_TIMER(110)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255); @@ -5787,7 +5838,7 @@ void Interface_DrawMinigameIcons(PlayState* play) { } } - if (gSaveContext.minigameState == 1) { + if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -5881,17 +5932,14 @@ Color_RGB16 D_801BFD40[] = { { 10, 10, 80 }, { 40, 10, 0 }, }; -// minigameCountdownTexs -TexturePtr D_801BFD54[] = { +TexturePtr sMinigameCountdownTextures[] = { gMinigameCountdown3Tex, gMinigameCountdown2Tex, gMinigameCountdown1Tex, gMinigameCountdownGoTex, }; -// minigameCountdownTexHeights -s16 D_801BFD64[] = { 24, 24, 24, 40 }; -// minigameCountdownPrimColor -Color_RGB16 D_801BFD6C[] = { +s16 sMinigameCountdownTexWidths[] = { 24, 24, 24, 40 }; +Color_RGB16 sMinigameCountdownPrimColors[] = { { 100, 255, 100 }, { 255, 255, 60 }, { 255, 100, 0 }, @@ -6160,39 +6208,41 @@ void Interface_Draw(PlayState* play) { if (((u32)interfaceCtx->minigameState % 2) == 0) { sp2CE = (interfaceCtx->minigameState >> 1) - 1; - sp2C0 = interfaceCtx->unk_284 / 100.0f; + sp2C0 = interfaceCtx->minigameCountdownScale / 100.0f; if (sp2CE == 3) { - interfaceCtx->actionVtx[40].v.ob[0] = interfaceCtx->actionVtx[42].v.ob[0] = -20; - interfaceCtx->actionVtx[41].v.ob[0] = interfaceCtx->actionVtx[43].v.ob[0] = - interfaceCtx->actionVtx[40].v.ob[0] + 40; - interfaceCtx->actionVtx[41].v.tc[0] = interfaceCtx->actionVtx[43].v.tc[0] = 0x500; + interfaceCtx->aButtonVtx[40].v.ob[0] = interfaceCtx->aButtonVtx[42].v.ob[0] = -20; + interfaceCtx->aButtonVtx[41].v.ob[0] = interfaceCtx->aButtonVtx[43].v.ob[0] = + interfaceCtx->aButtonVtx[40].v.ob[0] + 40; + interfaceCtx->aButtonVtx[41].v.tc[0] = interfaceCtx->aButtonVtx[43].v.tc[0] = 0x500; } - interfaceCtx->actionVtx[42].v.tc[1] = interfaceCtx->actionVtx[43].v.tc[1] = 0x400; + interfaceCtx->aButtonVtx[42].v.tc[1] = interfaceCtx->aButtonVtx[43].v.tc[1] = 0x400; func_8012C8D4(play->state.gfxCtx); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFD6C[sp2CE].r, D_801BFD6C[sp2CE].g, D_801BFD6C[sp2CE].b, - interfaceCtx->unk_282); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMinigameCountdownPrimColors[sp2CE].r, + sMinigameCountdownPrimColors[sp2CE].g, sMinigameCountdownPrimColors[sp2CE].b, + interfaceCtx->minigameCountdownAlpha); Matrix_Translate(0.0f, -40.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0x28], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[0x28], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, D_801BFD54[sp2CE], D_801BFD64[sp2CE], 32, 0); + OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, sMinigameCountdownTextures[sp2CE], + sMinigameCountdownTexWidths[sp2CE], 32, 0); } } else { Interface_DrawClock(play); } } - if (interfaceCtx->isMinigamePerfect != 0) { + if (interfaceCtx->isMinigamePerfect) { Interface_DrawMinigamePerfect(play); } @@ -6281,10 +6331,10 @@ void Interface_Draw(PlayState* play) { } } - if (interfaceCtx->unk_264 != 0) { + if (interfaceCtx->screenFillAlpha != 0) { gDPPipeSync(OVERLAY_DISP++); - gSPDisplayList(OVERLAY_DISP++, D_801BF988); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->unk_264); + gSPDisplayList(OVERLAY_DISP++, gScreenFillSetupDL); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->screenFillAlpha); gSPDisplayList(OVERLAY_DISP++, D_0E0002E0); } @@ -6513,12 +6563,12 @@ void Interface_Update(PlayState* play) { if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->isMinigamePerfect) { - if (interfaceCtx->minigameRewardType == 1) { - func_8011B5C0(play); - } else if (interfaceCtx->minigameRewardType == 2) { - func_8011B9E0(play); - } else if (interfaceCtx->minigameRewardType == 3) { - func_8011BF70(play); + if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { + Interface_UpdateMinigamePerfectType1(play); + } else if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) { + Interface_UpdateMinigamePerfectType2(play); + } else if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) { + Interface_UpdateMinigamePerfectType3(play); } } } @@ -6531,11 +6581,11 @@ void Interface_Update(PlayState* play) { case MINIGAME_STATE_COUNTDOWN_START_2: // minigame countdown 2 case MINIGAME_STATE_COUNTDOWN_START_1: // minigame countdown 1 case MINIGAME_STATE_COUNTDOWN_START_GO: // minigame countdown Go! - interfaceCtx->unk_282 = 255; - interfaceCtx->unk_284 = 100; + interfaceCtx->minigameCountdownAlpha = 255; + interfaceCtx->minigameCountdownScale = 100; interfaceCtx->minigameState++; if (interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) { - interfaceCtx->unk_284 = 160; + interfaceCtx->minigameCountdownScale = 160; play_sound(NA_SE_SY_START_SHOT); } else { play_sound(NA_SE_SY_WARNING_COUNT_E); @@ -6545,28 +6595,28 @@ void Interface_Update(PlayState* play) { case MINIGAME_STATE_COUNTDOWN_3: case MINIGAME_STATE_COUNTDOWN_2: case MINIGAME_STATE_COUNTDOWN_1: - interfaceCtx->unk_282 -= 10; - interfaceCtx->unk_284 += 3; - if (interfaceCtx->unk_282 < 22) { + interfaceCtx->minigameCountdownAlpha -= 10; + interfaceCtx->minigameCountdownScale += 3; + if (interfaceCtx->minigameCountdownAlpha < 22) { interfaceCtx->minigameState++; } break; case MINIGAME_STATE_COUNTDOWN_GO: - interfaceCtx->unk_282 -= 10; - if (interfaceCtx->unk_282 <= 150) { + interfaceCtx->minigameCountdownAlpha -= 10; + if (interfaceCtx->minigameCountdownAlpha <= 150) { interfaceCtx->minigameState = MINIGAME_STATE_30; } break; case MINIGAME_STATE_20: - interfaceCtx->unk_282 = 0; + interfaceCtx->minigameCountdownAlpha = 0; interfaceCtx->minigameState++; break; case MINIGAME_STATE_21: - interfaceCtx->unk_282++; - if (interfaceCtx->unk_282 >= 18) { + interfaceCtx->minigameCountdownAlpha++; + if (interfaceCtx->minigameCountdownAlpha >= 18) { interfaceCtx->minigameState = MINIGAME_STATE_30; } break; @@ -6683,13 +6733,14 @@ void Interface_Update(PlayState* play) { gSaveContext.timerStates[TIMER_ID_ENV] = TIMER_STATE_OFF; } - // Update Minigame - if (gSaveContext.minigameState == 1) { - gSaveContext.minigameScore += interfaceCtx->unk_25C; - gSaveContext.unk_3F3C += interfaceCtx->unk_25E; - interfaceCtx->unk_25C = 0; - interfaceCtx->unk_25E = 0; + // Update minigame + if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { + gSaveContext.minigameScore += interfaceCtx->minigamePoints; + gSaveContext.minigameHiddenScore += interfaceCtx->minigameHiddenPoints; + interfaceCtx->minigamePoints = 0; + interfaceCtx->minigameHiddenPoints = 0; + // Update horseback archery tier, unused remnant of OoT. if (sHBAScoreTier == 0) { if (gSaveContext.minigameScore >= 1000) { sHBAScoreTier++; @@ -6700,6 +6751,7 @@ void Interface_Update(PlayState* play) { } } + // Get minigame digits sMinigameScoreDigits[0] = sMinigameScoreDigits[1] = 0; sMinigameScoreDigits[2] = 0; sMinigameScoreDigits[3] = gSaveContext.minigameScore; @@ -6856,10 +6908,10 @@ void Interface_Init(PlayState* play) { LifeMeter_Init(play); Map_Init(play); - gSaveContext.minigameState = 3; - interfaceCtx->unk_2FC[0] = 255; - interfaceCtx->unk_2FC[1] = 165; - interfaceCtx->unk_2FC[2] = 55; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; + interfaceCtx->minigamePerfectPrimColor[0] = 255; + interfaceCtx->minigamePerfectPrimColor[1] = 165; + interfaceCtx->minigamePerfectPrimColor[2] = 55; if (gSaveContext.eventInf[3] & 0x10) { gSaveContext.eventInf[3] &= (u8)~0x10; diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index c96f0532f..07692dc77 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -1484,7 +1484,7 @@ void func_80A97D5C(EnAz* this, PlayState* play) { player->stateFlags1 |= PLAYER_STATE1_20; Interface_InitMinigame(play); gSaveContext.minigameScore = (this->unk_374 & 2) ? 25 : 20; - play->interfaceCtx.minigameState = 1; + play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_START_3; if ((this->unk_2FA == 1) || (this->unk_2FA == 3)) { Interface_StartTimer(TIMER_ID_MINIGAME_2, 120); } else if (gSaveContext.save.weekEventReg[25] & 1) { @@ -1498,7 +1498,7 @@ void func_80A97D5C(EnAz* this, PlayState* play) { void func_80A97E48(EnAz* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (play->interfaceCtx.minigameState >= 8) { + if (play->interfaceCtx.minigameState >= MINIGAME_STATE_COUNTDOWN_GO) { player->stateFlags1 &= ~PLAYER_STATE1_20; func_80A97EAC(this, play); } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 83c2db438..17d15d4e6 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -800,7 +800,7 @@ void func_80962F4C(EnFu* this, PlayState* play) { gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; func_801A3098(NA_BGM_GET_ITEM | 0x900); - Interface_SetPerfectMinigame(play, 1); + Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_1); this->unk_54A = 3; func_809632D0(this); } diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index b2b67b106..e89834c30 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -2916,22 +2916,23 @@ void EnHorse_UpdateHorsebackArchery(EnHorse* this, PlayState* play) { EnHorse_PlayWalkingSound(this); } - if (play->interfaceCtx.hbaAmmo == 0) { + if (play->interfaceCtx.minigameAmmo == 0) { this->hbaTimer++; } sp28 = Audio_IsSequencePlaying(0x41); EnHorse_UpdateHbaRaceInfo(this, play, &sHbaInfo); - if (((this->hbaFlags & 1) || (this->hbaTimer > 45)) && (sp28 != 1) && (gSaveContext.minigameState != 3)) { + if (((this->hbaFlags & 1) || (this->hbaTimer > 45)) && (sp28 != 1) && + (gSaveContext.minigameStatus != MINIGAME_STATUS_DONE)) { gSaveContext.save.cutscene = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_64; } - if (play->interfaceCtx.hbaAmmo) {} + if (play->interfaceCtx.minigameAmmo) {} - if (((play->interfaceCtx.hbaAmmo == 0) || (this->hbaFlags & 2)) && (this->hbaFlags & 4)) { + if (((play->interfaceCtx.minigameAmmo == 0) || (this->hbaFlags & 2)) && (this->hbaFlags & 4)) { this->hbaFlags &= ~4; Audio_QueueSeqCmd(0x8041); } diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 1cce146eb..4c7eb48d6 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -122,7 +122,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { } Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); - play->interfaceCtx.minigameState = 1; + play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_START_3; this->horse1 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1149.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, ENHORSE_PARAMS(ENHORSE_PARAM_BANDIT, ENHORSE_4)); @@ -212,10 +212,10 @@ s32 func_808F8FAC(EnHorseGameCheck* this, PlayState* play) { if ((this->unk_168 > 50) && !(this->unk_164 & 2)) { this->unk_164 |= 2; - } else if ((play->interfaceCtx.minigameState >= 8) && !(this->unk_164 & 1)) { + } else if ((play->interfaceCtx.minigameState >= MINIGAME_STATE_COUNTDOWN_GO) && !(this->unk_164 & 1)) { this->unk_164 |= 1; horse->inRace = true; - } else if ((play->interfaceCtx.minigameState >= 8) && !(this->unk_164 & 8)) { + } else if ((play->interfaceCtx.minigameState >= MINIGAME_STATE_COUNTDOWN_GO) && !(this->unk_164 & 8)) { EnHorse* horse = this->horse1; horse->inRace = true; diff --git a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c index 99c17772c..fd671c66b 100644 --- a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c +++ b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c @@ -94,7 +94,7 @@ s32 EnJcMato_CheckForHit(EnJcMato* this, PlayState* play) { if ((this->collider.base.acFlags & AC_HIT) && !this->hitFlag && (this->actor.colChkInfo.damageEffect == 0xF)) { this->collider.base.acFlags &= ~AC_HIT; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); - play->interfaceCtx.unk_25C = 1; + play->interfaceCtx.minigamePoints = 1; this->hitFlag = true; return 1; } else { diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 73c79f02e..50b7afa2e 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -284,7 +284,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { player->stateFlags1 |= 0x20; func_801A2BB8(0x25); - play->interfaceCtx.minigameState = 1; + play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_START_3; Interface_InitMinigame(play); gSaveContext.save.weekEventReg[90] |= 0x20; Interface_StartTimer(TIMER_ID_MINIGAME_2, 120); @@ -294,7 +294,7 @@ void func_80C1410C(EnJgameTsn* this, PlayState* play) { void func_80C1418C(EnJgameTsn* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (play->interfaceCtx.minigameState == 8) { + if (play->interfaceCtx.minigameState == MINIGAME_STATE_COUNTDOWN_GO) { func_80C141DC(this); player->stateFlags1 &= ~0x20; } @@ -478,7 +478,7 @@ void func_80C147B4(EnJgameTsn* this, PlayState* play) { case 0x10A0: case 0x10A1: func_801477B4(play); - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; gSaveContext.save.weekEventReg[90] &= (u8)~0x20; func_80C144E4(this); @@ -563,14 +563,14 @@ s32 func_80C14BCC(EnJgameTsn* this, PlayState* play) { if (phi_s3 == this->unk_218) { Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); *this->unk_208[phi_s3] |= OBJLUPYGAMELIFT_DISPLAY_CORRECT; - play->interfaceCtx.unk_25C = 1; + play->interfaceCtx.minigamePoints = 1; return true; } if (*this->unk_208[phi_s3] & OBJLUPYGAMELIFT_IGNITE_FIRE) { Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); *this->unk_208[phi_s3] |= OBJLUPYGAMELIFT_DISPLAY_CORRECT; - play->interfaceCtx.unk_25C = 1; + play->interfaceCtx.minigamePoints = 1; } else { *this->unk_208[phi_s3] |= OBJLUPYGAMELIFT_DISPLAY_INCORRECT; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_ERROR); diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index ab2bf49cc..6b95a5aee 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -304,7 +304,7 @@ void func_80B269A4(EnKendoJs* this, PlayState* play) { case 0x272D: func_801477B4(play); - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; func_80B276C4(this); func_80B276D8(this, play); break; @@ -334,7 +334,7 @@ void func_80B26AFC(EnKendoJs* this, PlayState* play) { } if ((this->unk_288 == 0x272E) || (this->unk_288 == 0x272F) || (this->unk_288 == 0x2730)) { - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; } player->stateFlags1 &= ~0x20; @@ -621,14 +621,14 @@ void func_80B274BC(EnKendoJs* this, PlayState* play) { if (this->unk_28E == 1) { if ((player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_START) || (player->meleeWeaponAnimation == PLAYER_MWA_JUMPSLASH_FINISH)) { - play->interfaceCtx.unk_25C = 3; + play->interfaceCtx.minigamePoints = 3; if (gSaveContext.minigameScore >= 27) { player->stateFlags1 |= 0x20; } } else if (player->meleeWeaponAnimation == PLAYER_MWA_STAB_1H) { - play->interfaceCtx.unk_25C = 2; + play->interfaceCtx.minigamePoints = 2; } else { - play->interfaceCtx.unk_25C = 1; + play->interfaceCtx.minigamePoints = 1; } Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); this->unk_28E = 0; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 2bf81fa36..510c7242d 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -688,7 +688,7 @@ void EnMa4_HorsebackGameTalking(EnMa4* this, PlayState* play) { void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); - play->interfaceCtx.minigameState = 1; + play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_START_3; Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); gSaveContext.save.weekEventReg[8] |= 1; Interface_InitMinigame(play); @@ -699,7 +699,7 @@ void EnMa4_InitHorsebackGame(EnMa4* this, PlayState* play) { void EnMa4_SetupHorsebackGameWait(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (play->interfaceCtx.minigameState == 8) { + if (play->interfaceCtx.minigameState == MINIGAME_STATE_COUNTDOWN_GO) { this->actionFunc = EnMa4_HorsebackGameWait; player->stateFlags1 &= ~0x20; } @@ -714,7 +714,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) { if (this->poppedBalloonCounter != D_80AC0258) { D_80AC0258 = this->poppedBalloonCounter; - play->interfaceCtx.unk_25C = 1; + play->interfaceCtx.minigamePoints = 1; } if ((gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] >= SECONDS_TO_TIMER(120)) || diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index b90cc04bb..a556c689c 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -315,11 +315,11 @@ void EnMttag_RaceStart(EnMttag* this, PlayState* play) { } else { if (DECR(this->timer) == 60) { Interface_StartTimer(TIMER_ID_MINIGAME_2, 0); - play->interfaceCtx.minigameState = 1; + play->interfaceCtx.minigameState = MINIGAME_STATE_COUNTDOWN_START_3; Audio_QueueSeqCmd(NA_BGM_GORON_RACE | 0x8000); play->envCtx.unk_E4 = 0xFE; player->stateFlags1 &= ~0x20; - } else if ((this->timer < 60) && (play->interfaceCtx.minigameState == 8)) { + } else if ((this->timer < 60) && (play->interfaceCtx.minigameState == MINIGAME_STATE_COUNTDOWN_GO)) { this->timer = 0; gSaveContext.eventInf[1] |= 1; this->actionFunc = EnMttag_Race; diff --git a/src/overlays/actors/ovl_En_Ot/z_en_ot.c b/src/overlays/actors/ovl_En_Ot/z_en_ot.c index bf93b729f..3ffb69b28 100644 --- a/src/overlays/actors/ovl_En_Ot/z_en_ot.c +++ b/src/overlays/actors/ovl_En_Ot/z_en_ot.c @@ -5,7 +5,6 @@ */ #include "z_en_ot.h" -#include "prevent_bss_reordering.h" #include "objects/object_ot/object_ot.h" #include "objects/gameplay_keep/gameplay_keep.h" @@ -59,9 +58,9 @@ EnOtUnkStruct* func_80B5DF58(EnOtUnkStruct* arg0, u8 arg1, Vec3f* arg2, Vec3s* a void func_80B5E078(PlayState* play, EnOtUnkStruct* arg1, s32 arg2); void func_80B5E1D8(PlayState* play, EnOtUnkStruct* arg1, s32 arg2); -static EnOt* D_80B5E880; -static EnOt* D_80B5E884; -static EnOt* D_80B5E888; +EnOt* D_80B5E880; +EnOt* D_80B5E884; +EnOt* D_80B5E888; const ActorInit En_Ot_InitVars = { ACTOR_EN_OT, diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index b59a2ba33..b47067bed 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -325,7 +325,7 @@ void EnSyatekiMan_Swamp_HandleChoice(EnSyatekiMan* this, PlayState* play) { Message_StartTextbox(play, 0xA31, &this->actor); this->prevTextId = 0xA31; if (this->shootingGameState == SG_GAME_STATE_ONE_MORE_GAME) { - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; } this->shootingGameState = SG_GAME_STATE_NOT_PLAYING; @@ -364,7 +364,7 @@ void EnSyatekiMan_Swamp_HandleChoice(EnSyatekiMan* this, PlayState* play) { } if (this->shootingGameState == SG_GAME_STATE_ONE_MORE_GAME) { - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; } this->shootingGameState = SG_GAME_STATE_NOT_PLAYING; @@ -391,7 +391,7 @@ void EnSyatekiMan_Swamp_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) play->msgCtx.stateTimer = 4; player->actor.freezeTimer = 0; Interface_InitMinigame(play); - play->interfaceCtx.hbaAmmo = 80; + play->interfaceCtx.minigameAmmo = 80; func_80123F2C(play, 80); this->shootingGameState = SG_GAME_STATE_RUNNING; this->actionFunc = EnSyatekiMan_Swamp_StartGame; @@ -405,7 +405,7 @@ void EnSyatekiMan_Swamp_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) gSaveContext.save.weekEventReg[63] &= (u8)~1; gSaveContext.save.weekEventReg[63] &= (u8)~2; this->actionFunc = EnSyatekiMan_Swamp_Idle; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; this->shootingGameState = SG_GAME_STATE_NONE; } else { // Wanna play again? @@ -425,7 +425,7 @@ void EnSyatekiMan_Swamp_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->actor.freezeTimer = 0; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; player->stateFlags1 |= 0x20; this->actionFunc = EnSyatekiMan_Swamp_SetupGiveReward; EnSyatekiMan_Swamp_SetupGiveReward(this, play); @@ -632,7 +632,7 @@ void EnSyatekiMan_Town_HandleChoice(EnSyatekiMan* this, PlayState* play) { if (this->shootingGameState == SG_GAME_STATE_ONE_MORE_GAME) { player->stateFlags3 &= ~0x400; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; } this->shootingGameState = SG_GAME_STATE_NOT_PLAYING; @@ -668,7 +668,7 @@ void EnSyatekiMan_Town_HandleChoice(EnSyatekiMan* this, PlayState* play) { if (this->shootingGameState == SG_GAME_STATE_ONE_MORE_GAME) { player->stateFlags3 &= ~0x400; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; } this->shootingGameState = SG_GAME_STATE_NOT_PLAYING; @@ -799,7 +799,7 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) play->msgCtx.msgMode = 0x43; play->msgCtx.stateTimer = 4; player->actor.freezeTimer = 0; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; this->actionFunc = EnSyatekiMan_Town_SetupGiveReward; EnSyatekiMan_Town_SetupGiveReward(this, play); break; @@ -1081,7 +1081,7 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { func_801A2C20(); this->shootingGameState = SG_GAME_STATE_GIVING_BONUS; if (this->score == 2120) { - Interface_SetPerfectMinigame(play, 2); + Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_2); gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_6; this->actionFunc = EnSyatekiMan_Swamp_AddBonusPoints; } else { @@ -1113,7 +1113,7 @@ void EnSyatekiMan_Swamp_EndGame(EnSyatekiMan* this, PlayState* play) { gSaveContext.save.weekEventReg[63] &= (u8)~1; gSaveContext.save.weekEventReg[63] &= (u8)~2; this->shootingGameState = SG_GAME_STATE_NONE; - gSaveContext.minigameState = 3; + gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; this->actionFunc = EnSyatekiMan_Swamp_Idle; return; } @@ -1157,7 +1157,7 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { sBonusTimer = 0; } else if (sBonusTimer > 10) { gSaveContext.timerStopTimes[TIMER_ID_MINIGAME_1] += SECONDS_TO_TIMER(1); - play->interfaceCtx.unk_25C += 10; + play->interfaceCtx.minigamePoints += 10; this->score += 10; Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); sBonusTimer = 0; @@ -1350,7 +1350,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { this->actionFunc = EnSyatekiMan_Town_EndGame; if (this->score == 50) { func_801A3098(NA_BGM_GET_ITEM | 0x900); - Interface_SetPerfectMinigame(play, 1); + Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_1); } } } diff --git a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c index d9059577c..3f6fa6224 100644 --- a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c +++ b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c @@ -370,7 +370,7 @@ void EnSyatekiOkuta_Update(Actor* thisx, PlayState* play) { syatekiMan = (EnSyatekiMan*)this->actor.parent; if (this->unk_2A6 == 1) { Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); - play->interfaceCtx.unk_25C++; + play->interfaceCtx.minigamePoints++; syatekiMan->score++; syatekiMan->perGameVar2.octorokHitType = SG_OCTO_HIT_TYPE_RED; } else { diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index ac772a940..aab26a226 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -165,7 +165,7 @@ s32 func_80B761FC(EnTruMt* this, PlayState* play) { this->unk_3A4 = 0; Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOUME_DAMAGE2); } - play->interfaceCtx.unk_25E = 1; + play->interfaceCtx.minigameHiddenPoints = 1; Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 25); return true; } @@ -322,7 +322,7 @@ void func_80B76924(EnTruMt* this) { void func_80B76980(EnTruMt* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (gSaveContext.unk_3F3C >= 10) { + if (gSaveContext.minigameHiddenScore >= 10) { Message_StartTextbox(play, 0x87F, &this->actor); gSaveContext.eventInf[3] |= 0x40; gSaveContext.eventInf[4] |= 1; diff --git a/src/overlays/actors/ovl_En_Twig/z_en_twig.c b/src/overlays/actors/ovl_En_Twig/z_en_twig.c index 5df9cee3c..5d0e014ae 100644 --- a/src/overlays/actors/ovl_En_Twig/z_en_twig.c +++ b/src/overlays/actors/ovl_En_Twig/z_en_twig.c @@ -198,7 +198,7 @@ void func_80AC0D2C(EnTwig* this, PlayState* play) { (s32)(Rand_ZeroOne() * 10.0f) + 20); } play_sound(NA_SE_SY_GET_ITEM); - play->interfaceCtx.unk_25C--; + play->interfaceCtx.minigamePoints--; sRingNotCollected[RACERING_GET_PARAM_FE0(&this->dyna.actor)] = true; if (sCurrentRing == RACERING_GET_PARAM_FE0(&this->dyna.actor)) { s32 i; diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c index e33b486f4..a88801f7c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c @@ -92,6 +92,6 @@ void EffectSsExtra_Update(PlayState* play, u32 index, EffectSs* this) { } if (this->rTimer == 1) { - play->interfaceCtx.unk_25C = sScores[this->rScoreIndex]; + play->interfaceCtx.minigamePoints = sScores[this->rScoreIndex]; } } diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 5d418c0fc..69eb3dc98 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -515,7 +515,7 @@ void MapSelect_UpdateMenu(MapSelectState* this) { gSaveContext.timerStopTimes[i] = SECONDS_TO_TIMER(0); gSaveContext.timerPausedOsTimes[i] = 0; } - gSaveContext.minigameState = 0; + gSaveContext.minigameStatus = MINIGAME_STATUS_INACTIVE; if (this->scenes[this->currentScene].loadFunc != NULL) { this->scenes[this->currentScene].loadFunc(this, this->scenes[this->currentScene].entrance, this->opt); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 9a930c6a8..5211784fd 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2107,7 +2107,7 @@ 0x80110038:("func_80110038",), 0x80111CB4:("func_80111CB4",), 0x801129E4:("Interface_SetSceneRestrictions",), - 0x80112AF4:("func_80112AF4",), + 0x80112AF4:("Interface_Noop",), 0x80112AFC:("Interface_InitMinigame",), 0x80112B40:("Interface_LoadItemIconImpl",), 0x80112BE4:("Interface_LoadItemIcon",), @@ -2151,10 +2151,10 @@ 0x80118BA4:("func_80118BA4",), 0x80119030:("func_80119030",), 0x80119610:("Interface_DrawClock",), - 0x8011B4E0:("Interface_SetPerfectMinigame",), - 0x8011B5C0:("func_8011B5C0",), - 0x8011B9E0:("func_8011B9E0",), - 0x8011BF70:("func_8011BF70",), + 0x8011B4E0:("Interface_SetMinigamePerfect",), + 0x8011B5C0:("Interface_UpdateMinigamePerfectType1",), + 0x8011B9E0:("Interface_UpdateMinigamePerfectType2",), + 0x8011BF70:("Interface_UpdateMinigamePerfectType3",), 0x8011C4C4:("Interface_DrawMinigamePerfect",), 0x8011C808:("Interface_StartMoonCrash",), 0x8011C898:("Interface_GetTimerDigits",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 958b202c9..dbfd4e89b 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1088,7 +1088,7 @@ 0x801BF978:("D_801BF978","UNK_TYPE4","",0x4), 0x801BF97C:("D_801BF97C","UNK_TYPE4","",0x4), 0x801BF980:("D_801BF980","UNK_TYPE4","",0x4), - 0x801BF988:("D_801BF988","Gfx","[5]",0x28), + 0x801BF988:("gScreenFillSetupDL","Gfx","[5]",0x28), 0x801BF9B0:("D_801BF9B0","UNK_TYPE2","",0x2), 0x801BF9B4:("D_801BF9B4","UNK_TYPE1","",0x1), 0x801BF9BC:("D_801BF9BC","UNK_TYPE1","",0x1), @@ -1153,13 +1153,13 @@ 0x801BFC14:("D_801BFC14","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), 0x801BFC50:("D_801BFC50","UNK_TYPE2","",0x2), - 0x801BFC60:("D_801BFC60","s16","[6]",0xC), + 0x801BFC60:("sMinigamePerfectType1PrimColorTargets","s16","[6]",0xC), 0x801BFC6C:("D_801BFC6C","UNK_TYPE4","",0x4), 0x801BFC7C:("D_801BFC7C","UNK_TYPE2","",0x2), - 0x801BFC8C:("D_801BFC8C","UNK_TYPE1","",0x1), + 0x801BFC8C:("sMinigamePerfectType2PrimColorTargets","UNK_TYPE1","",0x1), 0x801BFC98:("D_801BFC98","UNK_TYPE2","",0x2), 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), - 0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1), + 0x801BFCB8:("sMinigamePerfectType3PrimColorTargets","UNK_TYPE1","",0x1), 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), 0x801BFCE8:("sTimerDigits","u16","[8]",0x10), @@ -1170,9 +1170,9 @@ 0x801BFD24:("D_801BFD24","UNK_TYPE1","",0x1), 0x801BFD2C:("D_801BFD2C","UNK_TYPE1","",0x1), 0x801BFD40:("D_801BFD40","UNK_TYPE1","",0x1), - 0x801BFD54:("D_801BFD54","UNK_TYPE1","",0x1), - 0x801BFD64:("D_801BFD64","UNK_TYPE1","",0x1), - 0x801BFD6C:("D_801BFD6C","UNK_TYPE2","",0x2), + 0x801BFD54:("sMinigameCountdownTextures","UNK_TYPE1","",0x1), + 0x801BFD64:("sMinigameCountdownTexWidths","UNK_TYPE1","",0x1), + 0x801BFD6C:("sMinigameCountdownPrimColors","UNK_TYPE2","",0x2), 0x801BFD84:("D_801BFD84","UNK_TYPE1","",0x1), 0x801BFD8C:("D_801BFD8C","UNK_TYPE1","",0x1), 0x801BFD94:("D_801BFD94","UNK_TYPE4","",0x4), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index cab10fda9..b4f269d36 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1621,7 +1621,7 @@ asm/non_matchings/code/z_parameter/Interface_UpdateHudAlphas.s,Interface_UpdateH asm/non_matchings/code/z_parameter/func_80110038.s,func_80110038,0x80110038,0x71F asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34C asm/non_matchings/code/z_parameter/Interface_SetSceneRestrictions.s,Interface_SetSceneRestrictions,0x801129E4,0x44 -asm/non_matchings/code/z_parameter/func_80112AF4.s,func_80112AF4,0x80112AF4,0x2 +asm/non_matchings/code/z_parameter/Interface_Noop.s,Interface_Noop,0x80112AF4,0x2 asm/non_matchings/code/z_parameter/Interface_InitMinigame.s,Interface_InitMinigame,0x80112AFC,0x11 asm/non_matchings/code/z_parameter/Interface_LoadItemIconImpl.s,Interface_LoadItemIconImpl,0x80112B40,0x29 asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112BE4,0xA @@ -1665,10 +1665,10 @@ asm/non_matchings/code/z_parameter/func_80118890.s,func_80118890,0x80118890,0xC5 asm/non_matchings/code/z_parameter/func_80118BA4.s,func_80118BA4,0x80118BA4,0x123 asm/non_matchings/code/z_parameter/func_80119030.s,func_80119030,0x80119030,0x178 asm/non_matchings/code/z_parameter/Interface_DrawClock.s,Interface_DrawClock,0x80119610,0x7B4 -asm/non_matchings/code/z_parameter/Interface_SetPerfectMinigame.s,Interface_SetPerfectMinigame,0x8011B4E0,0x38 -asm/non_matchings/code/z_parameter/func_8011B5C0.s,func_8011B5C0,0x8011B5C0,0x108 -asm/non_matchings/code/z_parameter/func_8011B9E0.s,func_8011B9E0,0x8011B9E0,0x164 -asm/non_matchings/code/z_parameter/func_8011BF70.s,func_8011BF70,0x8011BF70,0x155 +asm/non_matchings/code/z_parameter/Interface_SetMinigamePerfect.s,Interface_SetMinigamePerfect,0x8011B4E0,0x38 +asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType1.s,Interface_UpdateMinigamePerfectType1,0x8011B5C0,0x108 +asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType2.s,Interface_UpdateMinigamePerfectType2,0x8011B9E0,0x164 +asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType3.s,Interface_UpdateMinigamePerfectType3,0x8011BF70,0x155 asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_DrawMinigamePerfect,0x8011C4C4,0xD1 asm/non_matchings/code/z_parameter/Interface_StartMoonCrash.s,Interface_StartMoonCrash,0x8011C808,0x24 asm/non_matchings/code/z_parameter/Interface_GetTimerDigits.s,Interface_GetTimerDigits,0x8011C898,0x73 From 9bf6bedd756ecbdbd72dd93ef5869004e8f6a1e9 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 29 Sep 2022 21:13:54 -0400 Subject: [PATCH 142/160] misc docs --- include/functions.h | 2 +- include/variables.h | 4 +- include/z64.h | 2 +- include/z64actor.h | 2 +- include/z64player.h | 2 +- include/z64save.h | 2 +- src/code/code_8012EC80.c | 2 +- src/code/z_demo.c | 4 +- src/code/z_kaleido_setup.c | 2 +- src/code/z_parameter.c | 843 +++++++++--------- .../ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c | 2 +- .../z_bg_ikana_rotaryroom.c | 2 +- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 2 +- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 2 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 4 +- tools/disasm/functions.txt | 4 +- tools/disasm/variables.txt | 4 +- tools/sizes/code_functions.csv | 4 +- 18 files changed, 448 insertions(+), 441 deletions(-) diff --git a/include/functions.h b/include/functions.h index e44e818ad..97b78dada 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1817,7 +1817,7 @@ void Interface_StartTimer(s16 timerId, s16 timeLimit); void Interface_StartPostmanTimer(s16 timeLimit, s16 bunnyHoodState); void Interface_NewDay(PlayState* play, s32 day); void Interface_SetHudVisibility(u16 hudVisibility); -void func_80110038(PlayState* play); +void Interface_UpdateButtonsPart2(PlayState* play); void Interface_SetSceneRestrictions(PlayState* play); void Interface_InitMinigame(PlayState* play); void Interface_LoadItemIconImpl(PlayState* play, u8 btn); diff --git a/include/variables.h b/include/variables.h index abb01f23a..4fbdccd9b 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1020,8 +1020,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BF68C; // extern UNK_TYPE1 D_801BF6C0; // extern UNK_TYPE1 D_801BF79E; -// extern UNK_TYPE2 D_801BF884; -// extern UNK_TYPE2 D_801BF888; +// extern UNK_TYPE2 sPictographState; +// extern UNK_TYPE2 sPictographPhotoBeingTaken; // extern UNK_TYPE2 sHBAScoreTier; // extern UNK_TYPE2 sMinigameScoreDigits; // extern UNK_TYPE2 sCUpInvisible; diff --git a/include/z64.h b/include/z64.h index 421725167..9e619ba60 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1212,7 +1212,7 @@ struct PlayState { /* 0x1883C */ Mtx* billboardMtx; /* 0x18840 */ u32 gameplayFrames; /* 0x18844 */ u8 unk_18844; - /* 0x18845 */ u8 unk_18845; + /* 0x18845 */ u8 haltAllActors; /* 0x18846 */ s16 numSetupActors; /* 0x18848 */ u8 numRooms; /* 0x1884C */ RomFile* roomList; diff --git a/include/z64actor.h b/include/z64actor.h index b11078316..4b2f9e7c4 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -309,7 +309,7 @@ typedef enum { #define ACTORCTX_FLAG_0 (1 << 0) #define ACTORCTX_FLAG_1 (1 << 1) -#define ACTORCTX_FLAG_2 (1 << 2) +#define ACTORCTX_FLAG_PICTOGRAPH_ON (1 << 2) #define ACTORCTX_FLAG_3 (1 << 3) #define ACTORCTX_FLAG_4 (1 << 4) #define ACTORCTX_FLAG_5 (1 << 5) diff --git a/include/z64player.h b/include/z64player.h index 2f101b558..0c1c36c3c 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -636,7 +636,7 @@ typedef struct Player { /* 0xB5D */ u8 unk_B5D; /* 0xB5E */ u8 unk_B5E; /* 0xB5F */ u8 unk_B5F; - /* 0xB60 */ u16 unk_B60; // blast mask timer? + /* 0xB60 */ u16 blastMaskTimer; /* 0xB62 */ s16 unk_B62; /* 0xB64 */ u8 unk_B64; /* 0xB65 */ u8 unk_B65; diff --git a/include/z64save.h b/include/z64save.h index 73c1eefe7..2cbd88c39 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -297,7 +297,7 @@ typedef struct SaveContext { /* 0x0000 */ Save save; /* 0x100C */ u8 eventInf[8]; // "event_inf" /* 0x1014 */ u8 unk_1014; // "stone_set_flag" - /* 0x1015 */ u8 unk_1015; + /* 0x1015 */ u8 bButtonStatus; /* 0x1016 */ u16 jinxTimer; /* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct" /* 0x101A */ u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status" diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index c16d0a723..a572e61ee 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -477,7 +477,7 @@ u16 gScenesPerRegion[11][27] = { s32 Inventory_GetBtnBItem(PlayState* play) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { return ITEM_NONE; - } else if (gSaveContext.unk_1015 == ITEM_NONE) { + } else if (gSaveContext.bButtonStatus == BTN_DISABLED) { return ITEM_NONE; } else if (CUR_FORM_EQUIP(EQUIP_SLOT_B) == ITEM_NONE) { if (play->interfaceCtx.bButtonDoActionActive) { diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 4453bd674..69b015ff3 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -233,10 +233,10 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c } break; case 0xE: - play->unk_18845 = 1; + play->haltAllActors = true; break; case 0xF: - play->unk_18845 = 0; + play->haltAllActors = false; break; case 0x10: if (isStartFrame) { diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index 1135f2de9..d1f4d0ca2 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -79,7 +79,7 @@ void KaleidoSetup_Update(PlayState* play) { (gSaveContext.magicState != MAGIC_STATE_FILL)) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_1) && - !(play->actorCtx.flags & ACTORCTX_FLAG_2)) { + !(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { if ((play->actorCtx.unk268 == 0) && CHECK_BTN_ALL(input->press.button, BTN_START)) { gSaveContext.prevHudVisibility = gSaveContext.hudVisibility; pauseCtx->itemDescriptionOn = false; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c4b67e10f..c2fd698f3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -15,6 +15,13 @@ void func_801663C4(u8* arg0, u8* arg1, u32 arg2); extern Gfx D_0E0001C8[]; // Display List extern Gfx D_0E0002E0[]; // gScreenFillDL +typedef enum { + /* 0 */ PICTOGRAPH_STATE_OFF, // Not using the pictograph + /* 1 */ PICTOGRAPH_STATE_LENS, // Looking through the lens of the pictograph + /* 2 */ PICTOGRAPH_STATE_SETUP_PHOTO, // Looking at the photo currently taken + /* 3 */ PICTOGRAPH_STATE_PHOTO +} PictographState; + // TODO extract this information from the texture definitions themselves #define DO_ACTION_TEX_WIDTH 48 #define DO_ACTION_TEX_HEIGHT 16 @@ -152,8 +159,8 @@ RestrictionFlags sRestrictionFlags[] = { { SCENE_ALLEY, SET_RESTRICTIONS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }, }; -s16 D_801BF884 = 0; // pictoBox related -s16 D_801BF888 = false; // pictoBox related +s16 sPictographState = PICTOGRAPH_STATE_OFF; +s16 sPictographPhotoBeingTaken = false; // pictoBox related s16 sHBAScoreTier = 0; // Remnant of OoT, non-functional @@ -734,7 +741,7 @@ void Interface_SetHudVisibility(u16 hudVisibility) { void Interface_UpdateButtonAlphasByStatus(PlayState* play, s16 risingAlpha) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == ITEM_NONE)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.bButtonStatus == BTN_DISABLED)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } @@ -1106,7 +1113,8 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { interfaceCtx->aAlpha = risingAlpha; } - if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || (gSaveContext.unk_1015 == ITEM_NONE)) { + if ((gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) || + (gSaveContext.bButtonStatus == BTN_DISABLED)) { if (interfaceCtx->bAlpha != 70) { interfaceCtx->bAlpha = 70; } @@ -1485,453 +1493,442 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { } } -void func_80110038(PlayState* play) { +void Interface_UpdateButtonsPart2(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); s16 i; - s16 phi_t3 = false; + s16 restoreHudVisibility = false; if (gSaveContext.eventInf[4] & 2) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) || (msgCtx->msgMode != 0)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_ENABLED; } } - if (D_801BF884 == 0) { + if (sPictographState == PICTOGRAPH_STATE_OFF) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - } else { - if (gSaveContext.save.weekEventReg[90] & 0x20) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } + } else if (gSaveContext.save.weekEventReg[90] & 0x20) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; } + } - Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (gSaveContext.save.weekEventReg[82] & 8) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } + Interface_SetHudVisibility(HUD_VISIBILITY_B); + } else if (gSaveContext.save.weekEventReg[82] & 8) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; } + } - Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); - } else if (gSaveContext.save.weekEventReg[84] & 0x20) { - if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || - ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } else { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); + } else if (gSaveContext.save.weekEventReg[84] & 0x20) { + if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; } } + } + } else { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_ZORA)) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + } + } else if ((play->sceneNum == SCENE_SPOT00) && (gSaveContext.sceneSetupIndex == 6)) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (gSaveContext.eventInf[3] & 0x10) { + if (player->stateFlags3 & PLAYER_STATE3_1000000) { + if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; + Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_ZORA)) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - phi_t3 = true; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + restoreHudVisibility = true; + } + + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + + if (restoreHudVisibility || (gSaveContext.hudVisibility != HUD_VISIBILITY_A_B_MINIMAP)) { + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); + restoreHudVisibility = false; + } + } else if (player->stateFlags3 & PLAYER_STATE3_1000000) { + if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; + Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + restoreHudVisibility = true; + } + } else if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + restoreHudVisibility = true; + } + + if (restoreHudVisibility) { + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; + } + } else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + } else if ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && + (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) { + if (CUR_FORM != PLAYER_FORM_ZORA) { + if ((player->currentMask == PLAYER_MASK_BLAST) && (player->blastMaskTimer == 0)) { + if (gSaveContext.bButtonStatus == BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.bButtonStatus = BTN_ENABLED; + } else if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && + (player->currentMask == PLAYER_MASK_BLAST)) { + if (gSaveContext.bButtonStatus != BTN_DISABLED) { + gSaveContext.bButtonStatus = BTN_DISABLED; + restoreHudVisibility = true; + } + } else { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + } + } else { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + } + + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { + if (Player_GetEnvTimerType(play) == PLAYER_ENV_TIMER_UNDERWATER_FLOOR) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_ENABLED; } - } - } - } else if ((play->sceneNum == SCENE_SPOT00) && (gSaveContext.sceneSetupIndex == 6)) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } else if (gSaveContext.eventInf[3] & 0x10) { - if (player->stateFlags3 & PLAYER_STATE3_1000000) { - if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; - Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - phi_t3 = true; - } - } else { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - phi_t3 = true; - } - - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_DISABLED; } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_ENABLED; + restoreHudVisibility = true; } + } - if (phi_t3 || (gSaveContext.hudVisibility != HUD_VISIBILITY_A_B_MINIMAP)) { - gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; - Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); - phi_t3 = false; + if (restoreHudVisibility) { + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + } + + if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { + if (ActorCutscene_GetCurrentIndex() == -1) { + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } - } else if (player->stateFlags3 & PLAYER_STATE3_1000000) { - if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; - Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - phi_t3 = true; + } + } else if (player->stateFlags1 & PLAYER_STATE1_200000) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + restoreHudVisibility = true; } - } else if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - phi_t3 = true; + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } else { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } + + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (player->stateFlags1 & PLAYER_STATE1_2000) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; + restoreHudVisibility = true; + Interface_SetHudVisibility(HUD_VISIBILITY_ALL); + } + } else { + if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && (player->currentMask == PLAYER_MASK_BLAST) && + (player->blastMaskTimer != 0)) { + if (gSaveContext.bButtonStatus != BTN_DISABLED) { + gSaveContext.bButtonStatus = BTN_DISABLED; + restoreHudVisibility = true; + } + } else { + if (gSaveContext.bButtonStatus == BTN_DISABLED) { + gSaveContext.bButtonStatus = BTN_ENABLED; + restoreHudVisibility = true; } - if (phi_t3) { - gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - } - } else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } else { - if ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && - (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) { - if (CUR_FORM != PLAYER_FORM_ZORA) { - if ((player->currentMask == PLAYER_MASK_BLAST) && (player->unk_B60 == 0)) { - if (gSaveContext.unk_1015 == 0xFF) { - phi_t3 = true; - } - gSaveContext.unk_1015 = 0; - } else if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && - (player->currentMask == PLAYER_MASK_BLAST)) { - if (gSaveContext.unk_1015 != 0xFF) { - gSaveContext.unk_1015 = 0xFF; - phi_t3 = true; + if (interfaceCtx->restrictions.bButton == 0) { + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + } + + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = + ITEM_SWORD_KOKIRI + GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) - EQUIP_VALUE_SWORD_KOKIRI; + } + + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); + } + restoreHudVisibility = true; + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { + if (interfaceCtx->bButtonDoAction != 0) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } + } + } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + restoreHudVisibility = true; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } else { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } + } else if (interfaceCtx->restrictions.bButton != 0) { + if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || + (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { + if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + } - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { - if (Player_GetEnvTimerType(play) == PLAYER_ENV_TIMER_UNDERWATER_FLOOR) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } else { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } else { + BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; + + if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { + Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); + } + restoreHudVisibility = true; + } + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; + restoreHudVisibility = true; + } + } + } + + if (gSaveContext.save.playerForm == player->transformation) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (player->actor.id != ACTOR_PLAYER) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (player->currentMask == PLAYER_MASK_GIANT) { + if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_GIANT) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_GIANT) { + if (play->sceneNum != SCENE_INISIE_BS) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) { + if ((play->sceneNum != SCENE_MITURIN_BS) && (play->sceneNum != SCENE_HAKUGIN_BS) && + (play->sceneNum != SCENE_SEA_BS) && (play->sceneNum != SCENE_INISIE_BS) && + (play->sceneNum != SCENE_LAST_BS)) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; + restoreHudVisibility = true; + } + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } else { + if (interfaceCtx->restrictions.tradeItems != 0) { + if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || + (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_DISABLED; } - } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_ENABLED; - phi_t3 = true; - } - } - - if (phi_t3) { - gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; - } - - if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { - if (ActorCutscene_GetCurrentIndex() == -1) { - Interface_SetHudVisibility(HUD_VISIBILITY_ALL); - } - } - } else { - if (player->stateFlags1 & PLAYER_STATE1_200000) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } else { + } else if (interfaceCtx->restrictions.tradeItems == 0) { + if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) || + ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || + (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[i] = BTN_ENABLED; } } - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - phi_t3 = true; - } - } else if (player->stateFlags1 & PLAYER_STATE1_2000) { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; - gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; - phi_t3 = true; - Interface_SetHudVisibility(HUD_VISIBILITY_ALL); - } - } else { - if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && - (player->currentMask == PLAYER_MASK_BLAST) && (player->unk_B60 != 0)) { - if (gSaveContext.unk_1015 != 0xFF) { - gSaveContext.unk_1015 = 0xFF; - phi_t3 = true; + if (interfaceCtx->restrictions.unk_317 != 0) { + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; } - } else { - if (gSaveContext.unk_1015 == 0xFF) { - gSaveContext.unk_1015 = 0; - phi_t3 = true; - } - - if (interfaceCtx->restrictions.bButton == 0) { - if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } - - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = ITEM_SWORD_KOKIRI + - GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) - - EQUIP_VALUE_SWORD_KOKIRI; - } - - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; - - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - } - phi_t3 = true; - } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { - if (interfaceCtx->bButtonDoAction != 0) { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - } - } else { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } - } - } else { - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } - } else { - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - } - } - } - } else if (interfaceCtx->restrictions.bButton != 0) { - if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || - (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMBCHU)) { - if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_SWORD) == EQUIP_VALUE_SWORD_NONE) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - } - - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = gSaveContext.buttonStatus[EQUIP_SLOT_B]; - - if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - } - phi_t3 = true; - } - if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; - phi_t3 = true; + } else if (interfaceCtx->restrictions.unk_317 == 0) { + if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; } + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } - if (gSaveContext.save.playerForm == player->transformation) { - for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { - if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } - } else if (player->actor.id != 0) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } - } else if (player->currentMask == PLAYER_MASK_GIANT) { + if (interfaceCtx->restrictions.pictographBox != 0) { + if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } else if (interfaceCtx->restrictions.pictographBox == 0) { + if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + restoreHudVisibility = true; + } + gSaveContext.buttonStatus[i] = BTN_ENABLED; + } + } - if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_GIANT) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } - } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_GIANT) { - if (play->sceneNum != SCENE_INISIE_BS) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } - } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) { - if ((play->sceneNum != SCENE_MITURIN_BS) && (play->sceneNum != SCENE_HAKUGIN_BS) && - (play->sceneNum != SCENE_SEA_BS) && (play->sceneNum != SCENE_INISIE_BS) && - (play->sceneNum != SCENE_LAST_BS)) { - if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { - gSaveContext.buttonStatus[i] = BTN_DISABLED; - phi_t3 = true; - } - } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } else { - if (interfaceCtx->restrictions.tradeItems != 0) { - if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) || - ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || - (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { - if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } else if (interfaceCtx->restrictions.tradeItems == 0) { - if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) || - ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) || - (GET_CUR_FORM_BTN_ITEM(i) == ITEM_OCARINA)) { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } + if (interfaceCtx->restrictions.all != 0) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { - if (interfaceCtx->restrictions.unk_317 != 0) { - if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { - if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } else if (interfaceCtx->restrictions.unk_317 == 0) { - if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } + if ((gSaveContext.buttonStatus[i] == BTN_ENABLED)) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_DISABLED; + } + } + } else if (interfaceCtx->restrictions.all == 0) { + if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && + !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && + (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && + (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { - if (interfaceCtx->restrictions.pictographBox != 0) { - if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { - if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } else if (interfaceCtx->restrictions.pictographBox == 0) { - if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTO_BOX) { - if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { - phi_t3 = true; - } - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } - - if (interfaceCtx->restrictions.all != 0) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) && - !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && - (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && - !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && - (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { - - if ((gSaveContext.buttonStatus[i] == BTN_ENABLED)) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_DISABLED; - } - } - } else if (interfaceCtx->restrictions.all == 0) { - if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) && - !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK)) && - (GET_CUR_FORM_BTN_ITEM(i) != ITEM_OCARINA) && - !((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && - (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && - (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX)) { - - if ((gSaveContext.buttonStatus[i] == BTN_DISABLED)) { - phi_t3 = true; - gSaveContext.buttonStatus[i] = BTN_ENABLED; - } - } - } + if ((gSaveContext.buttonStatus[i] == BTN_DISABLED)) { + restoreHudVisibility = true; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } } @@ -1940,28 +1937,28 @@ void func_80110038(PlayState* play) { } } - if (phi_t3 && (play->activeCamId == CAM_ID_MAIN) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && + if (restoreHudVisibility && (play->activeCamId == CAM_ID_MAIN) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } -void func_80111CB4(PlayState* play) { +void Interface_UpdateButtonsPart1(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); s32 pad; - s32 sp28; + s32 restoreHudVisibility = false; - sp28 = false; if (gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { + // Update specific minigames? if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && - (gSaveContext.unk_1015 == 0xFF)) { - sp28 = true; - gSaveContext.unk_1015 = 0; + (gSaveContext.bButtonStatus == BTN_DISABLED)) { + restoreHudVisibility = true; + gSaveContext.bButtonStatus = BTN_ENABLED; } if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { @@ -2075,7 +2072,7 @@ void func_80111CB4(PlayState* play) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - sp28 = true; + restoreHudVisibility = true; } gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; @@ -2102,86 +2099,93 @@ void func_80111CB4(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } } - } else if (D_801BF884 != 0) { - if (D_801BF884 == 1) { - if (!(play->actorCtx.flags & ACTORCTX_FLAG_2)) { + } else if (sPictographState != PICTOGRAPH_STATE_OFF) { + // Update pictograph + if (sPictographState == PICTOGRAPH_STATE_LENS) { + if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; - sp28 = true; - D_801BF884 = 0; + restoreHudVisibility = true; + sPictographState = PICTOGRAPH_STATE_OFF; } else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B)) { - play->actorCtx.flags &= ~ACTORCTX_FLAG_2; + play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; interfaceCtx->unk_224 = 0; interfaceCtx->unk_222 = interfaceCtx->unk_224; - sp28 = true; - D_801BF884 = 0; + restoreHudVisibility = true; + sPictographState = PICTOGRAPH_STATE_OFF; } else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) || (func_801A5100() == 1)) { if (!(gSaveContext.eventInf[4] & 2) || ((gSaveContext.eventInf[4] & 2) && (ActorCutscene_GetCurrentIndex() == -1))) { play_sound(NA_SE_SY_CAMERA_SHUTTER); SREG(89) = 1; - play->unk_18845 = 1; - D_801BF884 = 2; - D_801BF888 = true; + play->haltAllActors = true; + sPictographState = PICTOGRAPH_STATE_SETUP_PHOTO; + sPictographPhotoBeingTaken = true; } } - } else if ((D_801BF884 >= 2) && (Message_GetState(&play->msgCtx) == 4) && Message_ShouldAdvance(play)) { - play->unk_18845 = 0; + } else if ((sPictographState >= PICTOGRAPH_STATE_SETUP_PHOTO) && (Message_GetState(&play->msgCtx) == 4) && + Message_ShouldAdvance(play)) { + play->haltAllActors = false; player->stateFlags1 &= ~PLAYER_STATE1_200; func_801477B4(play); if (play->msgCtx.choiceIndex != 0) { func_8019F230(); func_80115844(play, 0x12); Interface_SetHudVisibility(HUD_VISIBILITY_A_B); - D_801BF884 = 1; + sPictographState = PICTOGRAPH_STATE_LENS; REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); } else { func_8019F208(); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; - sp28 = true; + restoreHudVisibility = true; Interface_SetHudVisibility(HUD_VISIBILITY_ALL); - D_801BF884 = 0; - if (D_801BF888) { + sPictographState = PICTOGRAPH_STATE_OFF; + if (sPictographPhotoBeingTaken) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); Snap_RecordPictographedActors(play); } - play->actorCtx.flags &= ~ACTORCTX_FLAG_2; + play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; SET_QUEST_ITEM(QUEST_PICTOGRAPH); - D_801BF888 = false; + sPictographPhotoBeingTaken = false; } } } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { + // Update beaver race minigame gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if ((gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { + // Update goron race minigame gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); - } else if (play->actorCtx.flags & ACTORCTX_FLAG_2) { + } else if (play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON) { + // Update pictograph if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { func_80115844(play, 0x12); Interface_SetHudVisibility(HUD_VISIBILITY_A_B); - D_801BF884 = 1; + sPictographState = PICTOGRAPH_STATE_LENS; } else { func_80166644((u8*)((void)0, gSaveContext.pictoPhoto), (play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, 0x4600); - play->unk_18845 = 1; - D_801BF884 = 2; + play->haltAllActors = true; + sPictographState = PICTOGRAPH_STATE_SETUP_PHOTO; } } else { - func_80110038(play); + // Update remaining cases + Interface_UpdateButtonsPart2(play); } } - if (sp28) { + + if (restoreHudVisibility) { gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); @@ -2269,7 +2273,7 @@ void func_80112C0C(PlayState* play, u16 flag) { } else { gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; - func_80111CB4(play); + Interface_UpdateButtonsPart1(play); } } @@ -3771,7 +3775,7 @@ void Interface_DrawItemButtons(PlayState* play) { } if (interfaceCtx->tatlCalling && (play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE) && - (play->csCtx.state == 0) && (D_801BF884 == 0)) { + (play->csCtx.state == 0) && (sPictographState == PICTOGRAPH_STATE_OFF)) { if (sCUpInvisible == 0) { // C-Up Button Texture, Color & Label (Tatl Text) gDPPipeSync(OVERLAY_DISP++); @@ -6250,8 +6254,8 @@ void Interface_Draw(PlayState* play) { Interface_DrawTimers(play); } - // PictoBox - if (D_801BF884 == 1) { + // Draw pictograph focus icons + if (sPictographState == PICTOGRAPH_STATE_LENS) { func_8012C654(play->state.gfxCtx); @@ -6285,22 +6289,22 @@ void Interface_Draw(PlayState* play) { if (1) {} } - if (D_801BF884 >= 2) { - if (!(play->actorCtx.flags & ACTORCTX_FLAG_2)) { + // Draw pictograph photo + if (sPictographState >= PICTOGRAPH_STATE_SETUP_PHOTO) { + if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, (u8*)gSaveContext.pictoPhoto, 0x4600); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; - D_801BF884 = 0; + sPictographState = PICTOGRAPH_STATE_OFF; gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; Interface_SetHudVisibility(HUD_VISIBILITY_ALL); - } else { s16 phi_a2; - if (D_801BF884 == 2) { - D_801BF884 = 3; + if (sPictographState == PICTOGRAPH_STATE_SETUP_PHOTO) { + sPictographState = PICTOGRAPH_STATE_PHOTO; Message_StartTextbox(play, 0xF8, NULL); Interface_SetHudVisibility(HUD_VISIBILITY_NONE); player->stateFlags1 |= PLAYER_STATE1_200; @@ -6331,6 +6335,7 @@ void Interface_Draw(PlayState* play) { } } + // Draw over the entire screen (used in gameover) if (interfaceCtx->screenFillAlpha != 0) { gDPPipeSync(OVERLAY_DISP++); gSPDisplayList(OVERLAY_DISP++, gScreenFillSetupDL); @@ -6354,12 +6359,14 @@ void Interface_LoadStory(PlayState* play, s32 block) { interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); interfaceCtx->storyState = 1; // fallthrough - case 1: if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, block) == 0) { interfaceCtx->storyState = 2; } break; + + default: + break; } } @@ -6388,7 +6395,7 @@ void Interface_Update(PlayState* play) { if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { - func_80111CB4(play); + Interface_UpdateButtonsPart1(play); } } @@ -6931,8 +6938,8 @@ void Interface_Init(PlayState* play) { } } - D_801BF884 = 0; - D_801BF888 = false; + sPictographState = PICTOGRAPH_STATE_OFF; + sPictographPhotoBeingTaken = false; if ((play->sceneNum != SCENE_MITURIN_BS) && (play->sceneNum != SCENE_HAKUGIN_BS) && (play->sceneNum != SCENE_SEA_BS) && (play->sceneNum != SCENE_INISIE_BS) && (play->sceneNum != SCENE_LAST_BS) && diff --git a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c index 1a0cb5058..45286fccb 100644 --- a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c +++ b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c @@ -273,7 +273,7 @@ void func_80A70F2C(BgCraceMovebg* this, PlayState* play) { func_80A70C04(this, play); if (Math_StepToF(&this->unk160, 0.0f, 1.0f)) { if (!(this->unk170 & 2) && !Flags_GetSwitch(play, BGCRACEMOVEBG_GET_7F0(&this->dyna.actor) + 1)) { - play->unk_18845 = 1; + play->haltAllActors = true; func_80169FDC(&play->state); play_sound(NA_SE_OC_ABYSS); } diff --git a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c index 77bf92531..902b52776 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c @@ -650,7 +650,7 @@ void func_80B814B8(BgIkanaRotaryroom* this, PlayState* play) { func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->unk_92); func_80169EFC(&play->state); func_800B8E58(player, NA_SE_VO_LI_TAKEN_AWAY + player->ageProperties->unk_92); - play->unk_18845 = 1; + play->haltAllActors = true; play_sound(NA_SE_OC_ABYSS); this->actionFunc = NULL; } diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 386996325..0efed2253 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -216,7 +216,7 @@ void func_80953F9C(BgIngate* this, PlayState* play) { if (ActorCutscene_GetCurrentIndex() != -1) { Camera_ChangeSetting(mainCam, CAM_SET_NORMAL0); player->stateFlags1 |= 0x20; - play->actorCtx.flags &= ~ACTORCTX_FLAG_2; + play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; } else { Camera_ChangeSetting(mainCam, CAM_SET_BOAT_CRUISE); player->stateFlags1 &= ~0x20; diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 6d7cc29ea..c000db32b 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -346,7 +346,7 @@ void EnKakasi_IdleStanding(EnKakasi* this, PlayState* play) { EnKakasi_SetupDialogue(this); return; } - if (play->actorCtx.flags & ACTORCTX_FLAG_2) { + if (play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON) { Actor_GetScreenPos(play, &this->picto.actor, &x, &y); if (this->picto.actor.projectedPos.z > -20.0f && x > 0 && x < SCREEN_WIDTH && y > 0 && y < SCREEN_HEIGHT && this->animIndex != ENKAKASI_ANIM_SIDEWAYS_SHAKING) { diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 8be05703f..40883d8dd 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -385,8 +385,8 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { if ((temp_a3 * temp_a2) <= 0) { gSaveContext.unk_3CA7 = 1; - if (play->actorCtx.flags & ACTORCTX_FLAG_2) { - play->actorCtx.flags &= ~ACTORCTX_FLAG_2; + if (play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON) { + play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; } if (temp_a0 != CLOCK_TIME(6, 0)) { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 5211784fd..18dd408a3 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2104,8 +2104,8 @@ 0x8010EF9C:("Interface_UpdateButtonAlphasByStatus",), 0x8010F0D4:("Interface_UpdateButtonAlphas",), 0x8010F1A8:("Interface_UpdateHudAlphas",), - 0x80110038:("func_80110038",), - 0x80111CB4:("func_80111CB4",), + 0x80110038:("Interface_UpdateButtonsPart2",), + 0x80111CB4:("Interface_UpdateButtonsPart1",), 0x801129E4:("Interface_SetSceneRestrictions",), 0x80112AF4:("Interface_Noop",), 0x80112AFC:("Interface_InitMinigame",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index dbfd4e89b..2d78a2d17 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1063,8 +1063,8 @@ 0x801BF5C0:("D_801BF5C0","UNK_PTR","",0x4), 0x801BF68C:("D_801BF68C","UNK_TYPE1","",0x1), 0x801BF6C0:("sRestrictionFlags","RestrictionFlags","[113]",0x1c4), - 0x801BF884:("D_801BF884","UNK_TYPE2","",0x2), - 0x801BF888:("D_801BF888","UNK_TYPE2","",0x2), + 0x801BF884:("sPictographState","UNK_TYPE2","",0x2), + 0x801BF888:("sPictographPhotoBeingTaken","UNK_TYPE2","",0x2), 0x801BF88C:("sHBAScoreTier","UNK_TYPE2","",0x2), 0x801BF890:("sMinigameScoreDigits","UNK_TYPE2","",0x2), 0x801BF898:("sCUpInvisible","UNK_TYPE2","",0x2), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index b4f269d36..9e1257230 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1618,8 +1618,8 @@ asm/non_matchings/code/z_parameter/Interface_SetHudVisibility.s,Interface_SetHud asm/non_matchings/code/z_parameter/Interface_UpdateButtonAlphasByStatus.s,Interface_UpdateButtonAlphasByStatus,0x8010EF9C,0x4E asm/non_matchings/code/z_parameter/Interface_UpdateButtonAlphas.s,Interface_UpdateButtonAlphas,0x8010F0D4,0x35 asm/non_matchings/code/z_parameter/Interface_UpdateHudAlphas.s,Interface_UpdateHudAlphas,0x8010F1A8,0x3A4 -asm/non_matchings/code/z_parameter/func_80110038.s,func_80110038,0x80110038,0x71F -asm/non_matchings/code/z_parameter/func_80111CB4.s,func_80111CB4,0x80111CB4,0x34C +asm/non_matchings/code/z_parameter/Interface_UpdateButtonsPart2.s,Interface_UpdateButtonsPart2,0x80110038,0x71F +asm/non_matchings/code/z_parameter/Interface_UpdateButtonsPart1.s,Interface_UpdateButtonsPart1,0x80111CB4,0x34C asm/non_matchings/code/z_parameter/Interface_SetSceneRestrictions.s,Interface_SetSceneRestrictions,0x801129E4,0x44 asm/non_matchings/code/z_parameter/Interface_Noop.s,Interface_Noop,0x80112AF4,0x2 asm/non_matchings/code/z_parameter/Interface_InitMinigame.s,Interface_InitMinigame,0x80112AFC,0x11 From dcf8af218e03034e7a7425d04b74dc56cda01925 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 29 Sep 2022 21:32:11 -0400 Subject: [PATCH 143/160] add comment --- src/code/z_parameter.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c2fd698f3..e7a2c3526 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1493,6 +1493,9 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { } } +/** + * A continuation of the if-else chain from Interface_UpdateButtonsPart1 + */ void Interface_UpdateButtonsPart2(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; From 2ce9ebdd5df36aa063d6381b349358b5dd621e46 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 29 Sep 2022 22:25:24 -0400 Subject: [PATCH 144/160] small docs --- include/functions.h | 2 +- src/code/z_parameter.c | 6 +++++- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/functions.h b/include/functions.h index 97b78dada..755e9a367 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1822,7 +1822,7 @@ void Interface_SetSceneRestrictions(PlayState* play); void Interface_InitMinigame(PlayState* play); void Interface_LoadItemIconImpl(PlayState* play, u8 btn); void Interface_LoadItemIcon(PlayState* play, u8 btn); -void func_80112C0C(PlayState* play, u16 flag); +void Interface_UpdateButtonsAlt(PlayState* play, u16 flag); u8 Item_Give(PlayState* play, u8 item); u8 Item_CheckObtainability(u8 item); void Inventory_DeleteItem(s16 item, s16 slot); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index e7a2c3526..449576e73 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2249,7 +2249,11 @@ void Interface_LoadItemIcon(PlayState* play, u8 btn) { Interface_LoadItemIconImpl(play, btn); } -void func_80112C0C(PlayState* play, u16 flag) { +/** + * @param play PlayState + * @param flag 0 for default update, 1 for simplified update + */ +void Interface_UpdateButtonsAlt(PlayState* play, u16 flag) { if (flag) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 18dd408a3..c2e925a78 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2111,7 +2111,7 @@ 0x80112AFC:("Interface_InitMinigame",), 0x80112B40:("Interface_LoadItemIconImpl",), 0x80112BE4:("Interface_LoadItemIcon",), - 0x80112C0C:("func_80112C0C",), + 0x80112C0C:("Interface_UpdateButtonsAlt",), 0x80112E80:("Item_Give",), 0x801143CC:("Item_CheckObtainabilityImpl",), 0x80114978:("Item_CheckObtainability",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 9e1257230..883b80691 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1625,7 +1625,7 @@ asm/non_matchings/code/z_parameter/Interface_Noop.s,Interface_Noop,0x80112AF4,0x asm/non_matchings/code/z_parameter/Interface_InitMinigame.s,Interface_InitMinigame,0x80112AFC,0x11 asm/non_matchings/code/z_parameter/Interface_LoadItemIconImpl.s,Interface_LoadItemIconImpl,0x80112B40,0x29 asm/non_matchings/code/z_parameter/Interface_LoadItemIcon.s,Interface_LoadItemIcon,0x80112BE4,0xA -asm/non_matchings/code/z_parameter/func_80112C0C.s,func_80112C0C,0x80112C0C,0x9D +asm/non_matchings/code/z_parameter/Interface_UpdateButtonsAlt.s,Interface_UpdateButtonsAlt,0x80112C0C,0x9D asm/non_matchings/code/z_parameter/Item_Give.s,Item_Give,0x80112E80,0x553 asm/non_matchings/code/z_parameter/Item_CheckObtainabilityImpl.s,Item_CheckObtainabilityImpl,0x801143CC,0x16B asm/non_matchings/code/z_parameter/Item_CheckObtainability.s,Item_CheckObtainability,0x80114978,0xA From 8e65c2904083d9cc8dec29dc8bf81173eacdeba8 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 1 Oct 2022 11:50:19 -0400 Subject: [PATCH 145/160] z64interface.h, cleanup --- include/z64.h | 200 +-------------------------------------- include/z64interface.h | 206 +++++++++++++++++++++++++++++++++++++++++ src/code/z_parameter.c | 7 +- 3 files changed, 212 insertions(+), 201 deletions(-) create mode 100644 include/z64interface.h diff --git a/include/z64.h b/include/z64.h index 53f70c497..6c8d26de7 100644 --- a/include/z64.h +++ b/include/z64.h @@ -35,6 +35,7 @@ #include "z64cutscene.h" #include "z64dma.h" #include "z64effect.h" +#include "z64interface.h" #include "z64item.h" #include "z64light.h" #include "z64map.h" @@ -483,205 +484,6 @@ typedef struct { /* 0x2CA */ s16 unk_2CA; } PauseContext; // size = 0x2D0 -typedef enum { - /* 0x00 */ DO_ACTION_ATTACK, - /* 0x01 */ DO_ACTION_CHECK, - /* 0x02 */ DO_ACTION_ENTER, - /* 0x03 */ DO_ACTION_RETURN, - /* 0x04 */ DO_ACTION_OPEN, - /* 0x05 */ DO_ACTION_JUMP, - /* 0x06 */ DO_ACTION_DECIDE, - /* 0x07 */ DO_ACTION_DIVE, - /* 0x08 */ DO_ACTION_FASTER, - /* 0x09 */ DO_ACTION_THROW, - /* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value - /* 0x0B */ DO_ACTION_CLIMB, - /* 0x0C */ DO_ACTION_DROP, - /* 0x0D */ DO_ACTION_DOWN, - /* 0x0E */ DO_ACTION_QUIT, - /* 0x0F */ DO_ACTION_SPEAK, - /* 0x10 */ DO_ACTION_NEXT, - /* 0x11 */ DO_ACTION_GRAB, - /* 0x12 */ DO_ACTION_STOP, - /* 0x13 */ DO_ACTION_PUTAWAY, - /* 0x14 */ DO_ACTION_REEL, - /* 0x15 */ DO_ACTION_INFO, - /* 0x16 */ DO_ACTION_WARP, - /* 0x17 */ DO_ACTION_SNAP, - /* 0x18 */ DO_ACTION_EXPLODE, - /* 0x19 */ DO_ACTION_DANCE, - /* 0x1A */ DO_ACTION_MARCH, - /* 0x1B */ DO_ACTION_1, - /* 0x1C */ DO_ACTION_2, - /* 0x1D */ DO_ACTION_3, - /* 0x1E */ DO_ACTION_4, - /* 0x1F */ DO_ACTION_5, - /* 0x20 */ DO_ACTION_6, - /* 0x21 */ DO_ACTION_7, - /* 0x22 */ DO_ACTION_8, - /* 0x23 */ DO_ACTION_CURL, - /* 0x24 */ DO_ACTION_SURFACE, - /* 0x25 */ DO_ACTION_SWIM, - /* 0x26 */ DO_ACTION_PUNCH, - /* 0x27 */ DO_ACTION_POUND, - /* 0x28 */ DO_ACTION_HOOK, - /* 0x29 */ DO_ACTION_SHOOT, - /* 0x2A */ DO_ACTION_MAX -} DoAction; - -typedef enum { - /* 0 */ MINIGAME_STATE_NONE, - /* 1 */ MINIGAME_STATE_COUNTDOWN_SETUP_3, - /* 2 */ MINIGAME_STATE_COUNTDOWN_3, - /* 3 */ MINIGAME_STATE_COUNTDOWN_SETUP_2, - /* 4 */ MINIGAME_STATE_COUNTDOWN_2, - /* 5 */ MINIGAME_STATE_COUNTDOWN_SETUP_1, - /* 6 */ MINIGAME_STATE_COUNTDOWN_1, - /* 7 */ MINIGAME_STATE_COUNTDOWN_SETUP_GO, - /* 8 */ MINIGAME_STATE_COUNTDOWN_GO, - /* 20 */ MINIGAME_STATE_NO_COUNTDOWN_SETUP = 20, - /* 21 */ MINIGAME_STATE_NO_COUNTDOWN, - /* 30 */ MINIGAME_STATE_PLAYING = 30 -} MinigameState; - -typedef enum { - /* 0 */ MINIGAME_PERFECT_TYPE_OFF, - /* 1 */ MINIGAME_PERFECT_TYPE_1, - /* 2 */ MINIGAME_PERFECT_TYPE_2, - /* 3 */ MINIGAME_PERFECT_TYPE_3 -} MinigamePerfectType; - -typedef enum { - /* 0 */ MINIGAME_PERFECT_STATE_0, - /* 1 */ MINIGAME_PERFECT_STATE_1, - /* 2 */ MINIGAME_PERFECT_STATE_2, - /* 3 */ MINIGAME_PERFECT_STATE_3, - /* 4 */ MINIGAME_PERFECT_STATE_4, - /* 5 */ MINIGAME_PERFECT_STATE_5, - /* 6 */ MINIGAME_PERFECT_STATE_6 -} MinigamePerfectState; - -typedef enum { - /* 0 */ STORY_LOAD_STATUS_REQUESTED, - /* 1 */ STORY_LOAD_STATUS_WAITING, - /* 2 */ STORY_LOAD_STATUS_FINISHED -} StoryLoadStatus; - -typedef enum { - /* 0 */ STORY_STATE_OFF, - /* 1 */ STORY_STATE_INIT, - /* 2 */ STORY_STATE_IDLE, - /* 3 */ STORY_STATE_DESTROY, - /* 4 */ STORY_STATE_SETUP_IDLE, - /* 5 */ STORY_STATE_FADE_OUT, - /* 6 */ STORY_STATE_FADE_IN -} StoryState; - -typedef enum { - /* 0 */ STORY_TYPE_MASK_FESTIVAL, - /* 1 */ STORY_TYPE_GIANTS_LEAVING -} StoryType; - -typedef struct { - /* 0x000 */ View view; - /* 0x168 */ Vtx* aButtonVtx; - /* 0x16C */ Vtx* beatingHeartVtx; - /* 0x170 */ u8* parameterSegment; - /* 0x174 */ u8* doActionSegment; - /* 0x178 */ u8* iconItemSegment; - /* 0x17C */ u8* mapSegment; - /* 0x180 */ u8* unk_180; - /* 0x184 */ DmaRequest dmaRequest_184; - /* 0x1A4 */ DmaRequest dmaRequest_1A4; - /* 0x1C4 */ DmaRequest dmaRequest_1C4; - /* 0x1E4 */ OSMesgQueue loadQueue; - /* 0x1FC */ OSMesg loadMsg; - /* 0x200 */ Viewport viewport; - /* 0x210 */ s16 unk_210; - /* 0x212 */ u16 unk_212; - /* 0x214 */ u16 unk_214; - /* 0x218 */ f32 unk_218; - /* 0x21C */ s16 bButtonDoActionActive; - /* 0x21E */ s16 bButtonDoAction; - /* 0x220 */ s16 tatlCalling; - /* 0x222 */ s16 unk_222; - /* 0x224 */ s16 unk_224; - /* 0x226 */ s16 lifeColorChange; - /* 0x228 */ s16 lifeColorChangeDirection; - /* 0x22A */ s16 beatingHeartPrim[3]; - /* 0x230 */ s16 beatingHeartEnv[3]; - /* 0x236 */ s16 heartsPrimR[2]; - /* 0x23A */ s16 heartsPrimG[2]; - /* 0x23E */ s16 heartsPrimB[2]; - /* 0x242 */ s16 heartsEnvR[2]; - /* 0x246 */ s16 heartsEnvG[2]; - /* 0x24A */ s16 heartsEnvB[2]; - /* 0x24E */ s16 health; - /* 0x250 */ s16 unkTimer; - /* 0x252 */ s16 lifeSizeChange; - /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing - /* 0x256 */ s16 unk_256; - /* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0 - /* 0x25A */ u8 numHorseBoosts; - /* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame. - /* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame. - /* 0x260 */ u16 minigameAmmo; - /* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused - /* 0x264 */ s16 screenFillAlpha; - /* 0x266 */ s16 aAlpha; - /* 0x268 */ s16 bAlpha; - /* 0x26A */ s16 cLeftAlpha; - /* 0x26C */ s16 cDownAlpha; - /* 0x26E */ s16 cRightAlpha; - /* 0x270 */ s16 healthAlpha; - /* 0x272 */ s16 magicAlpha; - /* 0x274 */ s16 minimapAlpha; - /* 0x276 */ s16 startAlpha; - /* 0x278 */ s16 unk_278; - /* 0x27A */ s16 dungeonOrBossAreaMapIndex; - /* 0x27C */ s16 mapRoomNum; - /* 0x27E */ u8 unk_27E; - /* 0x27F */ u8 unk_27F; - /* 0x280 */ u8 minigameState; - /* 0x282 */ s16 minigameCountdownAlpha; - /* 0x284 */ s16 minigameCountdownScale; - /* 0x286 */ s16 isMinigamePerfect; - /* 0x288 */ s16 minigamePerfectType; - /* 0x28A */ s16 minigamePerfectState[8]; - /* 0x29A */ u16 minigamePerfectLetterDirection[8]; - /* 0x2AA */ s16 minigamePerfectVtxOffset[8]; - /* 0x2BC */ f32 minigamePerfectLetterPosX[8]; - /* 0x2DC */ f32 minigamePerfectLetterPosY[8]; - /* 0x2FC */ s16 minigamePerfectPrimColor[4]; - /* 0x304 */ s16 minigamePerfectLetterCount; - /* 0x306 */ s16 minigamePerfectUnused; - /* 0x308 */ s16 minigamePerfectColorTargetIndex; - /* 0x30A */ s16 minigamePerfectColorTimer; - /* 0x30C */ s16 minigamePerfectTimer; - struct { - /* 0x30E */ u8 hGauge; - /* 0x30F */ u8 bButton; - /* 0x310 */ u8 aButton; - /* 0x311 */ u8 tradeItems; - /* 0x312 */ u8 unk_312; - /* 0x313 */ u8 unk_313; - /* 0x314 */ u8 unk_314; - /* 0x315 */ u8 songOfSoaring; - /* 0x316 */ u8 songOfStorms; - /* 0x317 */ u8 unk_317; - /* 0x318 */ u8 pictographBox; - /* 0x319 */ u8 all; // "another"; enables all item restrictions - } restrictions; // size = 0xC - /* 0x31A */ u8 storyState; - /* 0x31B */ u8 storyType; - /* 0x31C */ u8 storyLoadStatus; - /* 0x320 */ OSMesgQueue storyMsgQueue; - /* 0x338 */ OSMesg storyMsgBuf; - /* 0x33C */ u8* storySegment; - /* 0x340 */ uintptr_t storyAddr; - /* 0x344 */ size_t storySize; -} InterfaceContext; // size = 0x348 - typedef struct { /* 0x00 */ void* loadedRamAddr; /* 0x04 */ uintptr_t vromStart; diff --git a/include/z64interface.h b/include/z64interface.h new file mode 100644 index 000000000..cffa34a2a --- /dev/null +++ b/include/z64interface.h @@ -0,0 +1,206 @@ +#ifndef Z64INTERFACE_H +#define Z64INTERFACE_H + +#include "ultra64.h" +#include "z64view.h" + +typedef enum { + /* 0x00 */ DO_ACTION_ATTACK, + /* 0x01 */ DO_ACTION_CHECK, + /* 0x02 */ DO_ACTION_ENTER, + /* 0x03 */ DO_ACTION_RETURN, + /* 0x04 */ DO_ACTION_OPEN, + /* 0x05 */ DO_ACTION_JUMP, + /* 0x06 */ DO_ACTION_DECIDE, + /* 0x07 */ DO_ACTION_DIVE, + /* 0x08 */ DO_ACTION_FASTER, + /* 0x09 */ DO_ACTION_THROW, + /* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value + /* 0x0B */ DO_ACTION_CLIMB, + /* 0x0C */ DO_ACTION_DROP, + /* 0x0D */ DO_ACTION_DOWN, + /* 0x0E */ DO_ACTION_QUIT, + /* 0x0F */ DO_ACTION_SPEAK, + /* 0x10 */ DO_ACTION_NEXT, + /* 0x11 */ DO_ACTION_GRAB, + /* 0x12 */ DO_ACTION_STOP, + /* 0x13 */ DO_ACTION_PUTAWAY, + /* 0x14 */ DO_ACTION_REEL, + /* 0x15 */ DO_ACTION_INFO, + /* 0x16 */ DO_ACTION_WARP, + /* 0x17 */ DO_ACTION_SNAP, + /* 0x18 */ DO_ACTION_EXPLODE, + /* 0x19 */ DO_ACTION_DANCE, + /* 0x1A */ DO_ACTION_MARCH, + /* 0x1B */ DO_ACTION_1, + /* 0x1C */ DO_ACTION_2, + /* 0x1D */ DO_ACTION_3, + /* 0x1E */ DO_ACTION_4, + /* 0x1F */ DO_ACTION_5, + /* 0x20 */ DO_ACTION_6, + /* 0x21 */ DO_ACTION_7, + /* 0x22 */ DO_ACTION_8, + /* 0x23 */ DO_ACTION_CURL, + /* 0x24 */ DO_ACTION_SURFACE, + /* 0x25 */ DO_ACTION_SWIM, + /* 0x26 */ DO_ACTION_PUNCH, + /* 0x27 */ DO_ACTION_POUND, + /* 0x28 */ DO_ACTION_HOOK, + /* 0x29 */ DO_ACTION_SHOOT, + /* 0x2A */ DO_ACTION_MAX +} DoAction; + +typedef enum { + /* 0 */ MINIGAME_STATE_NONE, + /* 1 */ MINIGAME_STATE_COUNTDOWN_SETUP_3, + /* 2 */ MINIGAME_STATE_COUNTDOWN_3, + /* 3 */ MINIGAME_STATE_COUNTDOWN_SETUP_2, + /* 4 */ MINIGAME_STATE_COUNTDOWN_2, + /* 5 */ MINIGAME_STATE_COUNTDOWN_SETUP_1, + /* 6 */ MINIGAME_STATE_COUNTDOWN_1, + /* 7 */ MINIGAME_STATE_COUNTDOWN_SETUP_GO, + /* 8 */ MINIGAME_STATE_COUNTDOWN_GO, + /* 20 */ MINIGAME_STATE_NO_COUNTDOWN_SETUP = 20, + /* 21 */ MINIGAME_STATE_NO_COUNTDOWN, + /* 30 */ MINIGAME_STATE_PLAYING = 30 +} MinigameState; + +typedef enum { + /* 0 */ MINIGAME_PERFECT_TYPE_OFF, + /* 1 */ MINIGAME_PERFECT_TYPE_1, + /* 2 */ MINIGAME_PERFECT_TYPE_2, + /* 3 */ MINIGAME_PERFECT_TYPE_3 +} MinigamePerfectType; + +typedef enum { + /* 0 */ MINIGAME_PERFECT_STATE_0, + /* 1 */ MINIGAME_PERFECT_STATE_1, + /* 2 */ MINIGAME_PERFECT_STATE_2, + /* 3 */ MINIGAME_PERFECT_STATE_3, + /* 4 */ MINIGAME_PERFECT_STATE_4, + /* 5 */ MINIGAME_PERFECT_STATE_5, + /* 6 */ MINIGAME_PERFECT_STATE_6 +} MinigamePerfectState; + +typedef enum { + /* 0 */ STORY_LOAD_STATUS_REQUESTED, + /* 1 */ STORY_LOAD_STATUS_WAITING, + /* 2 */ STORY_LOAD_STATUS_FINISHED +} StoryLoadStatus; + +typedef enum { + /* 0 */ STORY_STATE_OFF, + /* 1 */ STORY_STATE_INIT, + /* 2 */ STORY_STATE_IDLE, + /* 3 */ STORY_STATE_DESTROY, + /* 4 */ STORY_STATE_SETUP_IDLE, + /* 5 */ STORY_STATE_FADE_OUT, + /* 6 */ STORY_STATE_FADE_IN +} StoryState; + +typedef enum { + /* 0 */ STORY_TYPE_MASK_FESTIVAL, + /* 1 */ STORY_TYPE_GIANTS_LEAVING +} StoryType; + +typedef struct { + /* 0x000 */ View view; + /* 0x168 */ Vtx* aButtonVtx; + /* 0x16C */ Vtx* beatingHeartVtx; + /* 0x170 */ u8* parameterSegment; + /* 0x174 */ u8* doActionSegment; + /* 0x178 */ u8* iconItemSegment; + /* 0x17C */ u8* mapSegment; + /* 0x180 */ u8* unk_180; + /* 0x184 */ DmaRequest dmaRequest_184; + /* 0x1A4 */ DmaRequest dmaRequest_1A4; + /* 0x1C4 */ DmaRequest dmaRequest_1C4; + /* 0x1E4 */ OSMesgQueue loadQueue; + /* 0x1FC */ OSMesg loadMsg; + /* 0x200 */ Viewport viewport; + /* 0x210 */ s16 unk_210; + /* 0x212 */ u16 unk_212; + /* 0x214 */ u16 unk_214; + /* 0x218 */ f32 unk_218; + /* 0x21C */ s16 bButtonDoActionActive; + /* 0x21E */ s16 bButtonDoAction; + /* 0x220 */ s16 tatlCalling; + /* 0x222 */ s16 unk_222; + /* 0x224 */ s16 unk_224; + /* 0x226 */ s16 lifeColorChange; + /* 0x228 */ s16 lifeColorChangeDirection; + /* 0x22A */ s16 beatingHeartPrim[3]; + /* 0x230 */ s16 beatingHeartEnv[3]; + /* 0x236 */ s16 heartsPrimR[2]; + /* 0x23A */ s16 heartsPrimG[2]; + /* 0x23E */ s16 heartsPrimB[2]; + /* 0x242 */ s16 heartsEnvR[2]; + /* 0x246 */ s16 heartsEnvG[2]; + /* 0x24A */ s16 heartsEnvB[2]; + /* 0x24E */ s16 health; + /* 0x250 */ s16 unkTimer; + /* 0x252 */ s16 lifeSizeChange; + /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing + /* 0x256 */ s16 unk_256; + /* 0x258 */ s16 magicConsumptionTimer; // For certain magic states, 1 unit of magic is consumed every time the timer reaches 0 + /* 0x25A */ u8 numHorseBoosts; + /* 0x25C */ u16 minigamePoints; // Points to add to the minigame score. Reset to 0 every frame. + /* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame. + /* 0x260 */ u16 minigameAmmo; + /* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused + /* 0x264 */ s16 screenFillAlpha; + /* 0x266 */ s16 aAlpha; + /* 0x268 */ s16 bAlpha; + /* 0x26A */ s16 cLeftAlpha; + /* 0x26C */ s16 cDownAlpha; + /* 0x26E */ s16 cRightAlpha; + /* 0x270 */ s16 healthAlpha; + /* 0x272 */ s16 magicAlpha; + /* 0x274 */ s16 minimapAlpha; + /* 0x276 */ s16 startAlpha; + /* 0x278 */ s16 unk_278; + /* 0x27A */ s16 dungeonOrBossAreaMapIndex; + /* 0x27C */ s16 mapRoomNum; + /* 0x27E */ u8 unk_27E; + /* 0x27F */ u8 unk_27F; + /* 0x280 */ u8 minigameState; + /* 0x282 */ s16 minigameCountdownAlpha; + /* 0x284 */ s16 minigameCountdownScale; + /* 0x286 */ s16 isMinigamePerfect; + /* 0x288 */ s16 minigamePerfectType; + /* 0x28A */ s16 minigamePerfectState[8]; + /* 0x29A */ u16 minigamePerfectLetterDirection[8]; + /* 0x2AA */ s16 minigamePerfectVtxOffset[8]; + /* 0x2BC */ f32 minigamePerfectLetterPosX[8]; + /* 0x2DC */ f32 minigamePerfectLetterPosY[8]; + /* 0x2FC */ s16 minigamePerfectPrimColor[4]; + /* 0x304 */ s16 minigamePerfectLetterCount; + /* 0x306 */ s16 minigamePerfectUnused; + /* 0x308 */ s16 minigamePerfectColorTargetIndex; + /* 0x30A */ s16 minigamePerfectColorTimer; + /* 0x30C */ s16 minigamePerfectTimer; + struct { + /* 0x30E */ u8 hGauge; + /* 0x30F */ u8 bButton; + /* 0x310 */ u8 aButton; + /* 0x311 */ u8 tradeItems; + /* 0x312 */ u8 unk_312; + /* 0x313 */ u8 unk_313; + /* 0x314 */ u8 unk_314; + /* 0x315 */ u8 songOfSoaring; + /* 0x316 */ u8 songOfStorms; + /* 0x317 */ u8 unk_317; + /* 0x318 */ u8 pictographBox; + /* 0x319 */ u8 all; // "another"; enables all item restrictions + } restrictions; // size = 0xC + /* 0x31A */ u8 storyState; + /* 0x31B */ u8 storyType; + /* 0x31C */ u8 storyLoadStatus; + /* 0x320 */ OSMesgQueue storyMsgQueue; + /* 0x338 */ OSMesg storyMsgBuf; + /* 0x33C */ u8* storySegment; + /* 0x340 */ uintptr_t storyAddr; + /* 0x344 */ size_t storySize; +} InterfaceContext; // size = 0x348 + +#endif diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 70cf0732d..6200e2401 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -6085,6 +6085,7 @@ void Interface_Draw(PlayState* play) { 1 << 10, 1 << 10); } break; + case SCENE_KINSTA1: case SCENE_KINDAN2: // Gold Skulltula Icon @@ -6137,8 +6138,8 @@ void Interface_Draw(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); gSPTextureRectangle(OVERLAY_DISP++, sp2CA * 4, 760, (sp2CA * 4) + 0x20, 824, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - break; + default: break; } @@ -6213,6 +6214,7 @@ void Interface_Draw(PlayState* play) { func_80118BA4(play); func_80119030(play); + // Draw either the minigame countdown or the three-day clock if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if ((interfaceCtx->minigameState != MINIGAME_STATE_NONE) && (interfaceCtx->minigameState < MINIGAME_STATE_NO_COUNTDOWN_SETUP)) { @@ -6254,6 +6256,7 @@ void Interface_Draw(PlayState* play) { } } + // Draw the letters of minigame perfect if (interfaceCtx->isMinigamePerfect) { Interface_DrawMinigamePerfect(play); } @@ -6387,7 +6390,7 @@ void Interface_AllocStory(PlayState* play) { if (interfaceCtx->storySegment == NULL) { interfaceCtx->storySegment = ZeldaArena_Malloc(interfaceCtx->storySize); } - Interface_LoadStory(play, 0); + Interface_LoadStory(play, OS_MESG_NOBLOCK); } void Interface_Update(PlayState* play) { From 049559804af200f252586451b66480f92050ccbb Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 1 Oct 2022 14:33:12 -0400 Subject: [PATCH 146/160] begin vtx docs --- include/variables.h | 14 +- include/z64interface.h | 12 +- src/code/z_parameter.c | 568 ++++++++++++++++++++++--------------- tools/disasm/variables.txt | 14 +- 4 files changed, 352 insertions(+), 256 deletions(-) diff --git a/include/variables.h b/include/variables.h index e31025743..f5644fe5e 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1077,12 +1077,12 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sFinalHoursClockFrameEnvBlue; // extern UNK_TYPE2 sFinalHoursClockColorTimer; // extern UNK_TYPE2 sFinalHoursClockColorTargetIndex; -// extern UNK_TYPE2 D_801BFA04; -// extern UNK_TYPE2 D_801BFA1C; -// extern UNK_TYPE2 D_801BFA34; -// extern UNK_TYPE2 D_801BFA4C; -// extern UNK_TYPE2 D_801BFA64; -// extern UNK_TYPE2 D_801BFA74; +// extern UNK_TYPE2 sActionVtxPosX; +// extern UNK_TYPE2 sActionVtxWidths; +// extern UNK_TYPE2 sActionVtxPosY; +// extern UNK_TYPE2 sActionVtxHeights; +// extern UNK_TYPE2 sMinigamePerfectVtxPosX; +// extern UNK_TYPE2 sMinigamePerfectVtxPosY; // extern UNK_TYPE4 sPostmanTimerInputBtnAPressed; // extern UNK_TYPE1 sDoActionTextures; // extern UNK_TYPE1 D_801BFAB8; @@ -1134,7 +1134,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 D_801BFC98; // extern UNK_TYPE2 D_801BFCA8; // extern UNK_TYPE1 sMinigamePerfectType3PrimColorTargets; -// extern UNK_TYPE4 D_801BFCC4; +// extern UNK_TYPE4 sMinigamePerfectTextures; // extern UNK_TYPE2 sTimerStateTimer; // extern UNK_TYPE2 sTimerDigits; // extern UNK_TYPE2 D_801BFCEA; diff --git a/include/z64interface.h b/include/z64interface.h index cffa34a2a..70fba3cd3 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -83,9 +83,9 @@ typedef enum { } MinigamePerfectState; typedef enum { - /* 0 */ STORY_LOAD_STATUS_REQUESTED, - /* 1 */ STORY_LOAD_STATUS_WAITING, - /* 2 */ STORY_LOAD_STATUS_FINISHED + /* 0 */ STORY_DMA_IDLE, + /* 1 */ STORY_DMA_LOADING, + /* 2 */ STORY_DMA_DONE } StoryLoadStatus; typedef enum { @@ -105,13 +105,13 @@ typedef enum { typedef struct { /* 0x000 */ View view; - /* 0x168 */ Vtx* aButtonVtx; + /* 0x168 */ Vtx* actionVtx; /* 0x16C */ Vtx* beatingHeartVtx; /* 0x170 */ u8* parameterSegment; /* 0x174 */ u8* doActionSegment; /* 0x178 */ u8* iconItemSegment; /* 0x17C */ u8* mapSegment; - /* 0x180 */ u8* unk_180; + /* 0x180 */ u8* unk_180; // unused segment? /* 0x184 */ DmaRequest dmaRequest_184; /* 0x1A4 */ DmaRequest dmaRequest_1A4; /* 0x1C4 */ DmaRequest dmaRequest_1C4; @@ -195,7 +195,7 @@ typedef struct { } restrictions; // size = 0xC /* 0x31A */ u8 storyState; /* 0x31B */ u8 storyType; - /* 0x31C */ u8 storyLoadStatus; + /* 0x31C */ u8 storyDmaStatus; /* 0x320 */ OSMesgQueue storyMsgQueue; /* 0x338 */ OSMesg storyMsgBuf; /* 0x33C */ u8* storySegment; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6200e2401..2001b41d7 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -249,353 +249,447 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -Gfx* Gfx_DrawRectTextureRGBA16(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, - s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, +Gfx* Gfx_DrawRectTextureRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRectTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, +Gfx* Gfx_DrawRectTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, - s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, - s16 r, s16 g, s16 b, s16 a) { +Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, + s16 b, s16 a) { s16 dropShadowAlpha = a; if (a > 100) { dropShadowAlpha = 100; } - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, dropShadowAlpha); - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + gSPTextureRectangle(gfx++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, r, g, b, a); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRect_DropShadow(Gfx* displayListHead, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, - u16 dtdy, s16 r, s16 g, s16 b, s16 a) { +Gfx* Gfx_DrawRect_DropShadow(Gfx* gfx, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, + s16 r, s16 g, s16 b, s16 a) { s16 dropShadowAlpha = a; if (a > 100) { dropShadowAlpha = 100; } - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); - gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, dropShadowAlpha); + gSPTextureRectangle(gfx++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, r, g, b, a); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, - s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, - s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, - s32 rectS) { +Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, + u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { s16 dropShadowAlpha = a; if (a > 100) { dropShadowAlpha = 100; } - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, 0, 0, 0, dropShadowAlpha); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, dropShadowAlpha); - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, + gSPTextureRectangle(gfx++, (rectLeft + 2) * 4, (rectTop + 2) * 4, (rectLeft + rectWidth + 2) * 4, (rectTop + rectHeight + 2) * 4, G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); - gDPPipeSync(displayListHead++); - gDPSetPrimColor(displayListHead++, 0, 0, r, g, b, a); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, r, g, b, a); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, rectS, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRectTextureI8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, +Gfx* Gfx_DrawRectTextureI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, 0, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, 0, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawRectTexture(Gfx* displayListHead, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, - s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, - u16 dtdy) { - gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, cms, - G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); +Gfx* Gfx_DrawRectTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { + gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, cms, G_TX_NOMIRROR | G_TX_WRAP, masks, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(displayListHead++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, - (rectTop + rectHeight) * 4, G_TX_RENDERTILE, s, 0, dsdx, dtdy); + gSPTextureRectangle(gfx++, rectLeft * 4, rectTop * 4, (rectLeft + rectWidth) * 4, (rectTop + rectHeight) * 4, + G_TX_RENDERTILE, s, 0, dsdx, dtdy); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawQuadTextureIA8(Gfx* displayListHead, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { - gDPLoadTextureBlock(displayListHead++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, +Gfx* Gfx_DrawQuadTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSP1Quadrangle(displayListHead++, point, point + 2, point + 3, point + 1, 0); + gSP1Quadrangle(gfx++, point, point + 2, point + 3, point + 1, 0); - return displayListHead; + return gfx; } -Gfx* Gfx_DrawQuadTexture(Gfx* displayListHead, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, - u16 point) { - gDPLoadTextureBlock_4b(displayListHead++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, +Gfx* Gfx_DrawQuadTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { + gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSP1Quadrangle(displayListHead++, point, point + 2, point + 3, point + 1, 0); + gSP1Quadrangle(gfx++, point, point + 2, point + 3, point + 1, 0); - return displayListHead; + return gfx; } -s16 D_801BFA04[] = { - -14, -14, -24, -8, -12, -12, -7, -8, -7, -8, -12, 0, +s16 sActionVtxPosX[] = { + -14, // A Button + -14, // A Button Background + -24, // A Button Do-Action + -8, // Three-Day Clock's Star (for the Minute Tracker) + -12, // Three-Day Clock's Sun (for the Day-Time Hours Tracker) + -12, // Three-Day Clock's Moon (for the Night-Time Hours Tracker) + -7, // Three-Day Clock's Hour Digit Above the Sun + -8, // Three-Day Clock's Hour Digit Above the Sun + -7, // Three-Day Clock's Hour Digit Above the Moon + -8, // Three-Day Clock's Hour Digit Above the Moon + -12, // Minigame Countdown Textures }; -s16 D_801BFA1C[] = { - 28, 28, 48, 16, 24, 24, 16, 16, 16, 16, 24, 0, +s16 sActionVtxWidths[] = { + 28, // A Button + 28, // A Button Background + 48, // A Button Do-Action + 16, // Three-Day Clock's Star (for the Minute Tracker) + 24, // Three-Day Clock's Sun (for the Day-Time Hours Tracker) + 24, // Three-Day Clock's Moon (for the Night-Time Hours Tracker) + 16, // Three-Day Clock's Hour Digit Above the Sun + 16, // Three-Day Clock's Hour Digit Above the Sun + 16, // Three-Day Clock's Hour Digit Above the Moon + 16, // Three-Day Clock's Hour Digit Above the Moon + 24, // Minigame Countdown Textures }; -s16 D_801BFA34[] = { - 14, 14, 8, 24, -82, -82, 58, 59, 58, 59, 32, 0, +s16 sActionVtxPosY[] = { + 14, // A Button + 14, // A Button Background + 8, // A Button Do-Action + 24, // Three-Day Clock's Star (for the Minute Tracker) + -82, // Three-Day Clock's Sun (for the Day-Time Hours Tracker) + -82, // Three-Day Clock's Moon (for the Night-Time Hours Tracker) + 58, // Three-Day Clock's Hour Digit Above the Sun + 59, // Three-Day Clock's Hour Digit Above the Sun + 58, // Three-Day Clock's Hour Digit Above the Moon + 59, // Three-Day Clock's Hour Digit Above the Moon + 32, // Minigame Countdown Textures }; -s16 D_801BFA4C[] = { - 28, 28, 16, 16, 24, 24, 11, 11, 11, 11, 32, 0, +s16 sActionVtxHeights[] = { + 28, // A Button + 28, // A Button Background + 16, // A Button Do-Action + 16, // Three-Day Clock's Star (for the Minute Tracker) + 24, // Three-Day Clock's Sun (for the Day-Time Hours Tracker) + 24, // Three-Day Clock's Moon (for the Night-Time Hours Tracker) + 11, // Three-Day Clock's Hour Digit Above the Sun + 11, // Three-Day Clock's Hour Digit Above the Sun + 11, // Three-Day Clock's Hour Digit Above the Moon + 11, // Three-Day Clock's Hour Digit Above the Moon + 32, // Minigame Countdown Textures }; -s16 D_801BFA64[] = { + +#define MINIGAME_PERFECT_VTX_WIDTH 32 +#define MINIGAME_PERFECT_VTX_HEIGHT 33 + +// Both minigame-perfect vtx data indexed as the 8 letters of: +// 'p', 'e', 'r', 'f', 'e', 'c', 't', '!' +s16 sMinigamePerfectVtxPosX[] = { -61, -45, 29, 104, -117, -42, 32, 55, }; -s16 D_801BFA74[] = { +s16 sMinigamePerfectVtxPosY[] = { 1, -70, -99, -70, 71, 101, 72, 1, }; + +/** + * interfaceCtx->actionVtx[0] -> A Button + * interfaceCtx->actionVtx[4] -> A Button Background + * interfaceCtx->actionVtx[8] -> A Button Do-Action + * interfaceCtx->actionVtx[12] -> Three-Day Clock's Star (for the Minute Tracker) + * interfaceCtx->actionVtx[16] -> Three-Day Clock's Sun (for the Day-Time Hours Tracker) + * interfaceCtx->actionVtx[20] -> Three-Day Clock's Moon (for the Night-Time Hours Tracker) + * interfaceCtx->actionVtx[24] -> Three-Day Clock's Hour Digit Above the Sun (uses 8 vertices) + * interfaceCtx->actionVtx[32] -> Three-Day Clock's Hour Digit Above the Moon (uses 8 vertices) + * interfaceCtx->actionVtx[40] -> Minigame Countdown Textures + * interfaceCtx->actionVtx[44] -> Minigame Perfect Letter P Shadow + * interfaceCtx->actionVtx[48] -> Minigame Perfect Letter E Shadow + * interfaceCtx->actionVtx[52] -> Minigame Perfect Letter R Shadow + * interfaceCtx->actionVtx[56] -> Minigame Perfect Letter F Shadow + * interfaceCtx->actionVtx[60] -> Minigame Perfect Letter E Shadow + * interfaceCtx->actionVtx[64] -> Minigame Perfect Letter C Shadow + * interfaceCtx->actionVtx[68] -> Minigame Perfect Letter T Shadow + * interfaceCtx->actionVtx[72] -> Minigame Perfect Letter ! Shadow + * interfaceCtx->actionVtx[76] -> Minigame Perfect Letter P Colored + * interfaceCtx->actionVtx[80] -> Minigame Perfect Letter E Colored + * interfaceCtx->actionVtx[84] -> Minigame Perfect Letter R Colored + * interfaceCtx->actionVtx[88] -> Minigame Perfect Letter F Colored + * interfaceCtx->actionVtx[92] -> Minigame Perfect Letter E Colored + * interfaceCtx->actionVtx[96] -> Minigame Perfect Letter C Colored + * interfaceCtx->actionVtx[100] -> Minigame Perfect Letter T Colored + * interfaceCtx->actionVtx[104] -> Minigame Perfect Letter ! Colored + */ + +// TODO: Mess with macros +#define MINIGAME_PERFECT_VTX_SHADOW(index) (interfaceCtx->actionVtx[44 + index]) +#define MINIGAME_PERFECT_VTX_COLOR(index) (interfaceCtx->actionVtx[76 + index]) + +#define BEATING_HEART_VTX_X -8 +#define BEATING_HEART_VTX_Y -8 +#define BEATING_HEART_VTX_WIDTH 16 + void Interface_InitVertices(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; s16 j; s16 k; - s16 offset; + s16 letteroffset; - play->interfaceCtx.aButtonVtx = GRAPH_ALLOC(play->state.gfxCtx, 108 * sizeof(Vtx)); + // 108 = 11 + (2 * 8 minigame perfect)) * 4 vertices per quad + play->interfaceCtx.actionVtx = GRAPH_ALLOC(play->state.gfxCtx, 108 * sizeof(Vtx)); - // clang-format off + // Loop over all non-minigame perfect vertices for (k = 0, i = 0; i < 44; i += 4, k++) { - interfaceCtx->aButtonVtx[i].v.ob[0] = - interfaceCtx->aButtonVtx[i + 2].v.ob[0] = D_801BFA04[k]; + // Left vertices x Pos + interfaceCtx->actionVtx[i + 0].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = sActionVtxPosX[k]; - interfaceCtx->aButtonVtx[i + 1].v.ob[0] = - interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + D_801BFA1C[k]; - - interfaceCtx->aButtonVtx[i].v.ob[1] = - interfaceCtx->aButtonVtx[i + 1].v.ob[1] = D_801BFA34[k]; + // Right vertices x Pos + interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = + interfaceCtx->actionVtx[i].v.ob[0] + sActionVtxWidths[k]; - interfaceCtx->aButtonVtx[i + 2].v.ob[1] = - interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - D_801BFA4C[k]; + // Top vertices y Pos + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = sActionVtxPosY[k]; - interfaceCtx->aButtonVtx[i].v.ob[2] = - interfaceCtx->aButtonVtx[i + 1].v.ob[2] = - interfaceCtx->aButtonVtx[i + 2].v.ob[2] = - interfaceCtx->aButtonVtx[i + 3].v.ob[2] = 0; + // Bottom vertices y Pos + interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = + interfaceCtx->actionVtx[i].v.ob[1] - sActionVtxHeights[k]; - interfaceCtx->aButtonVtx[i].v.flag = - interfaceCtx->aButtonVtx[i + 1].v.flag = - interfaceCtx->aButtonVtx[i + 2].v.flag = - interfaceCtx->aButtonVtx[i + 3].v.flag = 0; + // All vertices z Pos + interfaceCtx->actionVtx[i + 0].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = + interfaceCtx->actionVtx[i + 2].v.ob[2] = interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; - interfaceCtx->aButtonVtx[i].v.tc[0] = - interfaceCtx->aButtonVtx[i].v.tc[1] = - interfaceCtx->aButtonVtx[i + 1].v.tc[1] = - interfaceCtx->aButtonVtx[i + 2].v.tc[0] = 0; + // Unused flag + interfaceCtx->actionVtx[i + 0].v.flag = interfaceCtx->actionVtx[i + 1].v.flag = + interfaceCtx->actionVtx[i + 2].v.flag = interfaceCtx->actionVtx[i + 3].v.flag = 0; - interfaceCtx->aButtonVtx[i + 1].v.tc[0] = - interfaceCtx->aButtonVtx[i + 3].v.tc[0] = D_801BFA1C[k] << 5; + // Left and Top texture coordinates + interfaceCtx->actionVtx[i + 0].v.tc[0] = interfaceCtx->actionVtx[i + 0].v.tc[1] = + interfaceCtx->actionVtx[i + 1].v.tc[1] = interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; - interfaceCtx->aButtonVtx[i + 2].v.tc[1] = - interfaceCtx->aButtonVtx[i + 3].v.tc[1] = D_801BFA4C[k] << 5; + // Right vertices texture coordinates + interfaceCtx->actionVtx[i + 1].v.tc[0] = interfaceCtx->actionVtx[i + 3].v.tc[0] = sActionVtxWidths[k] << 5; - interfaceCtx->aButtonVtx[i].v.cn[0] = - interfaceCtx->aButtonVtx[i + 1].v.cn[0] = - interfaceCtx->aButtonVtx[i + 2].v.cn[0] = - interfaceCtx->aButtonVtx[i + 3].v.cn[0] = - interfaceCtx->aButtonVtx[i].v.cn[1] = - interfaceCtx->aButtonVtx[i + 1].v.cn[1] = - interfaceCtx->aButtonVtx[i + 2].v.cn[1] = - interfaceCtx->aButtonVtx[i + 3].v.cn[1] = - interfaceCtx->aButtonVtx[i].v.cn[2] = - interfaceCtx->aButtonVtx[i + 1].v.cn[2] = - interfaceCtx->aButtonVtx[i + 2].v.cn[2] = - interfaceCtx->aButtonVtx[i + 3].v.cn[2] = 255; + // Bottom vertices texture coordinates + interfaceCtx->actionVtx[i + 2].v.tc[1] = interfaceCtx->actionVtx[i + 3].v.tc[1] = sActionVtxHeights[k] << 5; - interfaceCtx->aButtonVtx[i].v.cn[3] = - interfaceCtx->aButtonVtx[i + 1].v.cn[3] = - interfaceCtx->aButtonVtx[i + 2].v.cn[3] = - interfaceCtx->aButtonVtx[i + 3].v.cn[3] = 255; + // Set color + interfaceCtx->actionVtx[i + 0].v.cn[0] = interfaceCtx->actionVtx[i + 1].v.cn[0] = + interfaceCtx->actionVtx[i + 2].v.cn[0] = interfaceCtx->actionVtx[i + 3].v.cn[0] = + interfaceCtx->actionVtx[i + 0].v.cn[1] = interfaceCtx->actionVtx[i + 1].v.cn[1] = + interfaceCtx->actionVtx[i + 2].v.cn[1] = interfaceCtx->actionVtx[i + 3].v.cn[1] = + interfaceCtx->actionVtx[i + 0].v.cn[2] = interfaceCtx->actionVtx[i + 1].v.cn[2] = + interfaceCtx->actionVtx[i + 2].v.cn[2] = interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; + + // Set alpha + interfaceCtx->actionVtx[i + 0].v.cn[3] = interfaceCtx->actionVtx[i + 1].v.cn[3] = + interfaceCtx->actionVtx[i + 2].v.cn[3] = interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; } - interfaceCtx->aButtonVtx[1].v.tc[0] = - interfaceCtx->aButtonVtx[3].v.tc[0] = - interfaceCtx->aButtonVtx[2].v.tc[1] = - interfaceCtx->aButtonVtx[3].v.tc[1] = 0x400; + // A button right and top texture coordinates + interfaceCtx->actionVtx[1].v.tc[0] = interfaceCtx->actionVtx[3].v.tc[0] = interfaceCtx->actionVtx[2].v.tc[1] = + interfaceCtx->actionVtx[3].v.tc[1] = 32 << 5; - interfaceCtx->aButtonVtx[5].v.tc[0] = - interfaceCtx->aButtonVtx[7].v.tc[0] = - interfaceCtx->aButtonVtx[6].v.tc[1] = - interfaceCtx->aButtonVtx[7].v.tc[1] = 0x400; + // A button background right and top texture coordinates + interfaceCtx->actionVtx[5].v.tc[0] = interfaceCtx->actionVtx[7].v.tc[0] = interfaceCtx->actionVtx[6].v.tc[1] = + interfaceCtx->actionVtx[7].v.tc[1] = 32 << 5; - for (j = 0, offset = 2; j < 2; j++, offset -= 2) { + // Loop over vertices for the minigame-perfect letters + // Outer loop is to loop over 2 sets of letters: shadowed letters and colored letters + for (j = 0, letteroffset = 2; j < 2; j++, letteroffset -= 2) { for (k = 0; k < 8; k++, i += 4) { - if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) || ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) && (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6))) { - interfaceCtx->aButtonVtx[i].v.ob[0] = - interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -((D_801BFA64[k] - offset) + 0x10); + if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) || + ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) && + (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6))) { + // Left vertices x Pos + interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = + -((sMinigamePerfectVtxPosX[k] - letteroffset) + 16); - interfaceCtx->aButtonVtx[i + 1].v.ob[0] = - interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; + // Right vertices x Pos + interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = + interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; - interfaceCtx->aButtonVtx[i].v.ob[1] = - interfaceCtx->aButtonVtx[i + 1].v.ob[1] = (D_801BFA74[k] - offset) + 0x10; + // Top vertices y Pos + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = + (sMinigamePerfectVtxPosY[k] - letteroffset) + 16; - interfaceCtx->aButtonVtx[i + 2].v.ob[1] = - interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; + // Bottom vertices y Pos + interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = + interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; - } else if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) || (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3)) { - interfaceCtx->aButtonVtx[i].v.ob[0] = - interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -(interfaceCtx->minigamePerfectVtxOffset[k] - offset + 0x10); + } else if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) || + (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3)) { + // Left vertices x Pos + interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = + -(interfaceCtx->minigamePerfectVtxOffset[k] - letteroffset + 16); - interfaceCtx->aButtonVtx[i + 1].v.ob[0] = - interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; + // Right vertices x Pos + interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = + interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; - interfaceCtx->aButtonVtx[i].v.ob[1] = - interfaceCtx->aButtonVtx[i + 1].v.ob[1] = 0x10 - offset; + // Top vertices y Pos + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 16 - letteroffset; - interfaceCtx->aButtonVtx[i + 2].v.ob[1] = - interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; + // Bottom vertices y Pos + interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = + interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; } else { - interfaceCtx->aButtonVtx[i].v.ob[0] = - interfaceCtx->aButtonVtx[i + 2].v.ob[0] = -(0xD8 - offset); + // Left vertices x Pos + interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = -(216 - letteroffset); - interfaceCtx->aButtonVtx[i + 1].v.ob[0] = - interfaceCtx->aButtonVtx[i + 3].v.ob[0] = interfaceCtx->aButtonVtx[i].v.ob[0] + 0x20; + // Right vertices x Pos + interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = + interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; - interfaceCtx->aButtonVtx[i].v.ob[1] = - interfaceCtx->aButtonVtx[i + 1].v.ob[1] = 0x18 - offset; + // Top vertices y Pos + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 24 - letteroffset; - interfaceCtx->aButtonVtx[i + 2].v.ob[1] = - interfaceCtx->aButtonVtx[i + 3].v.ob[1] = interfaceCtx->aButtonVtx[i].v.ob[1] - 0x21; + // Bottom vertices y Pos + interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = + interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; } - interfaceCtx->aButtonVtx[i].v.ob[2] = - interfaceCtx->aButtonVtx[i + 1].v.ob[2] = - interfaceCtx->aButtonVtx[i + 2].v.ob[2] = - interfaceCtx->aButtonVtx[i + 3].v.ob[2] = 0; + // All vertices z Pos + interfaceCtx->actionVtx[i].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = + interfaceCtx->actionVtx[i + 2].v.ob[2] = interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; - interfaceCtx->aButtonVtx[i].v.flag = - interfaceCtx->aButtonVtx[i + 1].v.flag = - interfaceCtx->aButtonVtx[i + 2].v.flag = - interfaceCtx->aButtonVtx[i + 3].v.flag = 0; + // Unused flag + interfaceCtx->actionVtx[i].v.flag = interfaceCtx->actionVtx[i + 1].v.flag = + interfaceCtx->actionVtx[i + 2].v.flag = interfaceCtx->actionVtx[i + 3].v.flag = 0; - interfaceCtx->aButtonVtx[i].v.tc[0] = - interfaceCtx->aButtonVtx[i].v.tc[1] = - interfaceCtx->aButtonVtx[i + 1].v.tc[1] = - interfaceCtx->aButtonVtx[i + 2].v.tc[0] = 0; + // Left and Top texture coordinates + interfaceCtx->actionVtx[i].v.tc[0] = interfaceCtx->actionVtx[i].v.tc[1] = + interfaceCtx->actionVtx[i + 1].v.tc[1] = interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; - interfaceCtx->aButtonVtx[i + 1].v.tc[0] = - interfaceCtx->aButtonVtx[i + 3].v.tc[0] = 0x400; + // Right vertices texture coordinates + interfaceCtx->actionVtx[i + 1].v.tc[0] = interfaceCtx->actionVtx[i + 3].v.tc[0] = MINIGAME_PERFECT_VTX_WIDTH + << 5; - interfaceCtx->aButtonVtx[i + 2].v.tc[1] = - interfaceCtx->aButtonVtx[i + 3].v.tc[1] = 0x420; + // Bottom vertices texture coordinates + interfaceCtx->actionVtx[i + 2].v.tc[1] = interfaceCtx->actionVtx[i + 3].v.tc[1] = + MINIGAME_PERFECT_VTX_HEIGHT << 5; - interfaceCtx->aButtonVtx[i].v.cn[0] = - interfaceCtx->aButtonVtx[i + 1].v.cn[0] = - interfaceCtx->aButtonVtx[i + 2].v.cn[0] = - interfaceCtx->aButtonVtx[i + 3].v.cn[0] = - interfaceCtx->aButtonVtx[i].v.cn[1] = - interfaceCtx->aButtonVtx[i + 1].v.cn[1] = - interfaceCtx->aButtonVtx[i + 2].v.cn[1] = - interfaceCtx->aButtonVtx[i + 3].v.cn[1] = - interfaceCtx->aButtonVtx[i].v.cn[2] = - interfaceCtx->aButtonVtx[i + 1].v.cn[2] = - interfaceCtx->aButtonVtx[i + 2].v.cn[2] = - interfaceCtx->aButtonVtx[i + 3].v.cn[2] = 255; + // Set color + interfaceCtx->actionVtx[i].v.cn[0] = interfaceCtx->actionVtx[i + 1].v.cn[0] = + interfaceCtx->actionVtx[i + 2].v.cn[0] = interfaceCtx->actionVtx[i + 3].v.cn[0] = + interfaceCtx->actionVtx[i].v.cn[1] = interfaceCtx->actionVtx[i + 1].v.cn[1] = + interfaceCtx->actionVtx[i + 2].v.cn[1] = interfaceCtx->actionVtx[i + 3].v.cn[1] = + interfaceCtx->actionVtx[i].v.cn[2] = interfaceCtx->actionVtx[i + 1].v.cn[2] = + interfaceCtx->actionVtx[i + 2].v.cn[2] = interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; - interfaceCtx->aButtonVtx[i].v.cn[3] = - interfaceCtx->aButtonVtx[i + 1].v.cn[3] = - interfaceCtx->aButtonVtx[i + 2].v.cn[3] = - interfaceCtx->aButtonVtx[i + 3].v.cn[3] = 255; + // Set alpha + interfaceCtx->actionVtx[i].v.cn[3] = interfaceCtx->actionVtx[i + 1].v.cn[3] = + interfaceCtx->actionVtx[i + 2].v.cn[3] = interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; } } + // Beating Hearts Vertices interfaceCtx->beatingHeartVtx = GRAPH_ALLOC(play->state.gfxCtx, 4 * sizeof(Vtx)); - interfaceCtx->beatingHeartVtx[0].v.ob[0] = interfaceCtx->beatingHeartVtx[2].v.ob[0] = -8; - interfaceCtx->beatingHeartVtx[1].v.ob[0] = interfaceCtx->beatingHeartVtx[3].v.ob[0] = 8; - interfaceCtx->beatingHeartVtx[0].v.ob[1] = interfaceCtx->beatingHeartVtx[1].v.ob[1] = 8; - interfaceCtx->beatingHeartVtx[2].v.ob[1] = interfaceCtx->beatingHeartVtx[3].v.ob[1] = -8; + // Left vertices x Pos + interfaceCtx->beatingHeartVtx[0].v.ob[0] = interfaceCtx->beatingHeartVtx[2].v.ob[0] = BEATING_HEART_VTX_X; + // Right vertices x Pos + interfaceCtx->beatingHeartVtx[1].v.ob[0] = interfaceCtx->beatingHeartVtx[3].v.ob[0] = + BEATING_HEART_VTX_X + BEATING_HEART_VTX_WIDTH; + + // Top vertices y Pos + interfaceCtx->beatingHeartVtx[0].v.ob[1] = interfaceCtx->beatingHeartVtx[1].v.ob[1] = + BEATING_HEART_VTX_Y + BEATING_HEART_VTX_WIDTH; + + // Bottom vertices y Pos + interfaceCtx->beatingHeartVtx[2].v.ob[1] = interfaceCtx->beatingHeartVtx[3].v.ob[1] = BEATING_HEART_VTX_Y; + + // All vertices z Pos interfaceCtx->beatingHeartVtx[0].v.ob[2] = interfaceCtx->beatingHeartVtx[1].v.ob[2] = - interfaceCtx->beatingHeartVtx[2].v.ob[2] = interfaceCtx->beatingHeartVtx[3].v.ob[2] = 0; + interfaceCtx->beatingHeartVtx[2].v.ob[2] = interfaceCtx->beatingHeartVtx[3].v.ob[2] = 0; + // unused flag interfaceCtx->beatingHeartVtx[0].v.flag = interfaceCtx->beatingHeartVtx[1].v.flag = - interfaceCtx->beatingHeartVtx[2].v.flag = interfaceCtx->beatingHeartVtx[3].v.flag = 0; + interfaceCtx->beatingHeartVtx[2].v.flag = interfaceCtx->beatingHeartVtx[3].v.flag = 0; + // Texture Coordinates interfaceCtx->beatingHeartVtx[0].v.tc[0] = interfaceCtx->beatingHeartVtx[0].v.tc[1] = - interfaceCtx->beatingHeartVtx[1].v.tc[1] = interfaceCtx->beatingHeartVtx[2].v.tc[0] = 0; + interfaceCtx->beatingHeartVtx[1].v.tc[1] = interfaceCtx->beatingHeartVtx[2].v.tc[0] = 0; interfaceCtx->beatingHeartVtx[1].v.tc[0] = interfaceCtx->beatingHeartVtx[2].v.tc[1] = - interfaceCtx->beatingHeartVtx[3].v.tc[0] = interfaceCtx->beatingHeartVtx[3].v.tc[1] = 512; + interfaceCtx->beatingHeartVtx[3].v.tc[0] = interfaceCtx->beatingHeartVtx[3].v.tc[1] = + BEATING_HEART_VTX_WIDTH << 5; + // Set color interfaceCtx->beatingHeartVtx[0].v.cn[0] = interfaceCtx->beatingHeartVtx[1].v.cn[0] = - interfaceCtx->beatingHeartVtx[2].v.cn[0] = interfaceCtx->beatingHeartVtx[3].v.cn[0] = - interfaceCtx->beatingHeartVtx[0].v.cn[1] = interfaceCtx->beatingHeartVtx[1].v.cn[1] = - interfaceCtx->beatingHeartVtx[2].v.cn[1] = interfaceCtx->beatingHeartVtx[3].v.cn[1] = - interfaceCtx->beatingHeartVtx[0].v.cn[2] = interfaceCtx->beatingHeartVtx[1].v.cn[2] = - interfaceCtx->beatingHeartVtx[2].v.cn[2] = interfaceCtx->beatingHeartVtx[3].v.cn[2] = - interfaceCtx->beatingHeartVtx[0].v.cn[3] = interfaceCtx->beatingHeartVtx[1].v.cn[3] = - interfaceCtx->beatingHeartVtx[2].v.cn[3] = interfaceCtx->beatingHeartVtx[3].v.cn[3] = 255; - // clang-format on + interfaceCtx->beatingHeartVtx[2].v.cn[0] = interfaceCtx->beatingHeartVtx[3].v.cn[0] = + interfaceCtx->beatingHeartVtx[0].v.cn[1] = interfaceCtx->beatingHeartVtx[1].v.cn[1] = + interfaceCtx->beatingHeartVtx[2].v.cn[1] = interfaceCtx->beatingHeartVtx[3].v.cn[1] = + interfaceCtx->beatingHeartVtx[0].v.cn[2] = interfaceCtx->beatingHeartVtx[1].v.cn[2] = + interfaceCtx->beatingHeartVtx[2].v.cn[2] = interfaceCtx->beatingHeartVtx[3].v.cn[2] = + interfaceCtx->beatingHeartVtx[0].v.cn[3] = interfaceCtx->beatingHeartVtx[1].v.cn[3] = + interfaceCtx->beatingHeartVtx[2].v.cn[3] = interfaceCtx->beatingHeartVtx[3].v.cn[3] = + 255; } s32 sPostmanTimerInputBtnAPressed = false; @@ -4074,14 +4168,14 @@ void func_80118BA4(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPPipeSync(OVERLAY_DISP++); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[4], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, aAlpha); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[0], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); @@ -4097,7 +4191,7 @@ void func_80118BA4(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateXFApply(interfaceCtx->unk_218 / 10000.0f); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[8], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[8], 4, 0); // Draw Action Label if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { @@ -4423,7 +4517,7 @@ void Interface_DrawClock(PlayState* play) { 137, 192, 48, 27, 1 << 10, 1 << 10); /** - * Draw Three-Day Clock's Star for the Minute Tracker + * Draw Three-Day Clock's Star (for the Minute Tracker) */ gDPPipeSync(OVERLAY_DISP++); @@ -4464,7 +4558,7 @@ void Interface_DrawClock(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[12], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayClockStarMinuteTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -4485,7 +4579,7 @@ void Interface_DrawClock(PlayState* play) { } /** - * Draw Three-Day Clock's Sun for the Day-Time Hours Tracker + * Draw Three-Day Clock's Sun (for the Day-Time Hours Tracker) */ time = gSaveContext.save.time; sp1D8 = Math_SinS(time) * -40.0f; @@ -4500,12 +4594,12 @@ void Interface_DrawClock(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[16], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); /** - * Draw Three-Day Clock's Moon for the Night-Time Hours Tracker + * Draw Three-Day Clock's Moon (for the Night-Time Hours Tracker) */ sp1D8 = Math_SinS(time) * 40.0f; temp_f14 = Math_CosS(time) * 34.0f; @@ -4518,7 +4612,7 @@ void Interface_DrawClock(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[20], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); @@ -4545,7 +4639,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[24], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); @@ -4569,7 +4663,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[32], 8, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); @@ -5199,7 +5293,7 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { } void Interface_DrawMinigamePerfect(PlayState* play) { - static TexturePtr D_801BFCC4[] = { + static TexturePtr sMinigamePerfectTextures[] = { gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, }; @@ -5224,6 +5318,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { letterY = Math_CosS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosY[i]; + // Draw Minigame Perfect Shadows gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->minigamePerfectPrimColor[3]); @@ -5231,10 +5326,11 @@ void Interface_DrawMinigamePerfect(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[vtxOffset] + 0x2C, 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[44 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); + // Draw Minigame Perfect Colored Letters gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->minigamePerfectPrimColor[0], interfaceCtx->minigamePerfectPrimColor[1], interfaceCtx->minigamePerfectPrimColor[2], @@ -5244,9 +5340,9 @@ void Interface_DrawMinigamePerfect(PlayState* play) { Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[vtxOffset] + 0x4C, 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[76 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFCC4[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); } } @@ -5989,7 +6085,7 @@ void Interface_Draw(PlayState* play) { Interface_SetView2(interfaceCtx); // Draw Grandma's Story - if (interfaceCtx->storyLoadStatus == STORY_LOAD_STATUS_FINISHED) { + if (interfaceCtx->storyDmaStatus == STORY_DMA_DONE) { gSPSegment(OVERLAY_DISP++, 0x07, interfaceCtx->storySegment); func_8012C628(play->state.gfxCtx); @@ -6225,13 +6321,13 @@ void Interface_Draw(PlayState* play) { sp2C0 = interfaceCtx->minigameCountdownScale / 100.0f; if (sp2CE == 3) { - interfaceCtx->aButtonVtx[40].v.ob[0] = interfaceCtx->aButtonVtx[42].v.ob[0] = -20; - interfaceCtx->aButtonVtx[41].v.ob[0] = interfaceCtx->aButtonVtx[43].v.ob[0] = - interfaceCtx->aButtonVtx[40].v.ob[0] + 40; - interfaceCtx->aButtonVtx[41].v.tc[0] = interfaceCtx->aButtonVtx[43].v.tc[0] = 0x500; + interfaceCtx->actionVtx[40 + 0].v.ob[0] = interfaceCtx->actionVtx[40 + 2].v.ob[0] = -20; + interfaceCtx->actionVtx[40 + 1].v.ob[0] = interfaceCtx->actionVtx[40 + 3].v.ob[0] = + interfaceCtx->actionVtx[40 + 0].v.ob[0] + 40; + interfaceCtx->actionVtx[40 + 1].v.tc[0] = interfaceCtx->actionVtx[40 + 3].v.tc[0] = 40 << 5; } - interfaceCtx->aButtonVtx[42].v.tc[1] = interfaceCtx->aButtonVtx[43].v.tc[1] = 0x400; + interfaceCtx->actionVtx[40 + 2].v.tc[1] = interfaceCtx->actionVtx[40 + 3].v.tc[1] = 32 << 5; func_8012C8D4(play->state.gfxCtx); @@ -6246,7 +6342,7 @@ void Interface_Draw(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->aButtonVtx[0x28], 4, 0); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[40], 4, 0); OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, sMinigameCountdownTextures[sp2CE], sMinigameCountdownTexWidths[sp2CE], 32, 0); @@ -6360,19 +6456,19 @@ void Interface_Draw(PlayState* play) { void Interface_LoadStory(PlayState* play, s32 block) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - switch (interfaceCtx->storyLoadStatus) { - case STORY_LOAD_STATUS_REQUESTED: + switch (interfaceCtx->storyDmaStatus) { + case STORY_DMA_IDLE: if (interfaceCtx->storySegment == NULL) { break; } osCreateMesgQueue(&interfaceCtx->storyMsgQueue, &interfaceCtx->storyMsgBuf, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->storySegment, interfaceCtx->storyAddr, interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); - interfaceCtx->storyLoadStatus = STORY_LOAD_STATUS_WAITING; + interfaceCtx->storyDmaStatus = STORY_DMA_LOADING; // fallthrough - case STORY_LOAD_STATUS_WAITING: + case STORY_DMA_LOADING: if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, block) == 0) { - interfaceCtx->storyLoadStatus = STORY_LOAD_STATUS_FINISHED; + interfaceCtx->storyDmaStatus = STORY_DMA_DONE; } break; @@ -6829,7 +6925,7 @@ void Interface_Update(PlayState* play) { // Update Grandma's Story if (interfaceCtx->storyState != STORY_STATE_OFF) { if (interfaceCtx->storyState == STORY_STATE_INIT) { - interfaceCtx->storyLoadStatus = STORY_LOAD_STATUS_REQUESTED; + interfaceCtx->storyDmaStatus = STORY_DMA_IDLE; interfaceCtx->storyState = STORY_STATE_IDLE; R_STORY_FILL_SCREEN_ALPHA = 0; } @@ -6838,7 +6934,7 @@ void Interface_Update(PlayState* play) { if (interfaceCtx->storyState == STORY_STATE_DESTROY) { interfaceCtx->storyState = STORY_STATE_OFF; - interfaceCtx->storyLoadStatus = STORY_LOAD_STATUS_REQUESTED; + interfaceCtx->storyDmaStatus = STORY_DMA_IDLE; if (interfaceCtx->storySegment != NULL) { ZeldaArena_Free(interfaceCtx->storySegment); interfaceCtx->storySegment = NULL; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 0a50098ea..adc4a9c08 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1107,12 +1107,12 @@ 0x801BF9F8:("sFinalHoursClockFrameEnvBlue","UNK_TYPE2","",0x2), 0x801BF9FC:("sFinalHoursClockColorTimer","UNK_TYPE2","",0x2), 0x801BFA00:("sFinalHoursClockColorTargetIndex","UNK_TYPE2","",0x2), - 0x801BFA04:("D_801BFA04","UNK_TYPE2","",0x2), - 0x801BFA1C:("D_801BFA1C","UNK_TYPE2","",0x2), - 0x801BFA34:("D_801BFA34","UNK_TYPE2","",0x2), - 0x801BFA4C:("D_801BFA4C","UNK_TYPE2","",0x2), - 0x801BFA64:("D_801BFA64","UNK_TYPE2","",0x2), - 0x801BFA74:("D_801BFA74","UNK_TYPE2","",0x2), + 0x801BFA04:("sActionVtxPosX","UNK_TYPE2","",0x2), + 0x801BFA1C:("sActionVtxWidths","UNK_TYPE2","",0x2), + 0x801BFA34:("sActionVtxPosY","UNK_TYPE2","",0x2), + 0x801BFA4C:("sActionVtxHeights","UNK_TYPE2","",0x2), + 0x801BFA64:("sMinigamePerfectVtxPosX","UNK_TYPE2","",0x2), + 0x801BFA74:("sMinigamePerfectVtxPosY","UNK_TYPE2","",0x2), 0x801BFA84:("sPostmanTimerInputBtnAPressed","UNK_TYPE4","",0x4), 0x801BFAB0:("sDoActionTextures","UNK_TYPE1","",0x1), 0x801BFAB8:("magicBorderColors","UNK_TYPE1","",0x1), @@ -1160,7 +1160,7 @@ 0x801BFC98:("D_801BFC98","UNK_TYPE2","",0x2), 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), 0x801BFCB8:("sMinigamePerfectType3PrimColorTargets","UNK_TYPE1","",0x1), - 0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4), + 0x801BFCC4:("sMinigamePerfectTextures","UNK_TYPE4","",0x4), 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), 0x801BFCE8:("sTimerDigits","u16","[8]",0x10), 0x801BFCF8:("sTimerBeepSfxSeconds","UNK_TYPE4","",0x4), From 78ec6752b8dd6607be87e444aeed47a558062c26 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 1 Oct 2022 15:12:49 -0400 Subject: [PATCH 147/160] update button comments --- src/code/z_parameter.c | 39 ++++++++++++++++--- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 2 +- src/overlays/actors/ovl_Obj_Um/z_obj_um.c | 2 +- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 2001b41d7..3cf84e917 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1598,6 +1598,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { s16 restoreHudVisibility = false; if (gSaveContext.eventInf[4] & 2) { + // Related to swamp boat (non-minigame)? for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) || (msgCtx->msgMode != 0)) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1624,6 +1625,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else if (gSaveContext.save.weekEventReg[90] & 0x20) { + // Fishermans's jumping minigame for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1632,6 +1634,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (gSaveContext.save.weekEventReg[82] & 8) { + // Swordsman's log minigame for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1640,6 +1643,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); } else if (gSaveContext.save.weekEventReg[84] & 0x20) { + // Related to moon child if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) || @@ -1671,6 +1675,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } } else if ((play->sceneId == SCENE_SPOT00) && (gSaveContext.sceneLayer == 6)) { + // Unknown cutscene for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; @@ -1678,6 +1683,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (gSaveContext.eventInf[3] & 0x10) { + // Deku playground minigame if (player->stateFlags3 & PLAYER_STATE3_1000000) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; @@ -1706,6 +1712,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { restoreHudVisibility = false; } } else if (player->stateFlags3 & PLAYER_STATE3_1000000) { + // Nuts on B (from flying as Deku Link) if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NUT; @@ -1725,10 +1732,12 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } else if (!gSaveContext.save.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NUT)) { + // Nuts on B (as Deku Link) BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else if ((Player_GetEnvTimerType(play) >= PLAYER_ENV_TIMER_UNDERWATER_FLOOR) && (Player_GetEnvTimerType(play) <= PLAYER_ENV_TIMER_UNDERWATER_FREE)) { + // Swimming underwater if (CUR_FORM != PLAYER_FORM_ZORA) { if ((player->currentMask == PLAYER_MASK_BLAST) && (player->blastMaskTimer == 0)) { if (gSaveContext.bButtonStatus == BTN_DISABLED) { @@ -1791,6 +1800,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } } else if (player->stateFlags1 & PLAYER_STATE1_200000) { + // First person view for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1810,6 +1820,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { restoreHudVisibility = true; } } else if (player->stateFlags1 & PLAYER_STATE1_2000) { + // Hanging from a ledge if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; @@ -1819,18 +1830,24 @@ void Interface_UpdateButtonsPart2(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } } else { + // End of special event cases + + // B button if ((interfaceCtx->bButtonDoAction == DO_ACTION_EXPLODE) && (player->currentMask == PLAYER_MASK_BLAST) && (player->blastMaskTimer != 0)) { + // Cooldown period for blast mask if (gSaveContext.bButtonStatus != BTN_DISABLED) { gSaveContext.bButtonStatus = BTN_DISABLED; restoreHudVisibility = true; } } else { + // default to enabled if (gSaveContext.bButtonStatus == BTN_DISABLED) { gSaveContext.bButtonStatus = BTN_ENABLED; restoreHudVisibility = true; } + // Apply B button restriction if (interfaceCtx->restrictions.bButton == 0) { if ((BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) || (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOMB) || @@ -1895,19 +1912,24 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } } + // C buttons if (gSaveContext.save.playerForm == player->transformation) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + // Individual C button if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { + // Item not usable in current playerForm if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } } else if (player->actor.id != ACTOR_PLAYER) { + // Currently not playing as the main player if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } } else if (player->currentMask == PLAYER_MASK_GIANT) { + // Currently wearing Giant's Mask if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_GIANT) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1918,6 +1940,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_GIANT) { + // Giant's Mask is equipped if (play->sceneId != SCENE_INISIE_BS) { if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -1928,6 +1951,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) { + // Fierce Deity's Mask is equipped if ((play->sceneId != SCENE_MITURIN_BS) && (play->sceneId != SCENE_HAKUGIN_BS) && (play->sceneId != SCENE_SEA_BS) && (play->sceneId != SCENE_INISIE_BS) && (play->sceneId != SCENE_LAST_BS)) { @@ -1940,6 +1964,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else { + // End of special item cases. Apply restrictions to buttons if (interfaceCtx->restrictions.tradeItems != 0) { if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOON_TEAR) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_PENDANT_OF_MEMORIES)) || @@ -2051,9 +2076,11 @@ void Interface_UpdateButtonsPart1(PlayState* play) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { - // Update specific minigames? + // Riding Epona OR Honey & Darling minigame OR Horseback balloon minigame OR related to swamp boat + // (non-minigame?) if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && (gSaveContext.bButtonStatus == BTN_DISABLED)) { + // Riding Epona with blast mask restoreHudVisibility = true; gSaveContext.bButtonStatus = BTN_ENABLED; } @@ -2196,7 +2223,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } } } else if (sPictographState != PICTOGRAPH_STATE_OFF) { - // Update pictograph + // Related to pictograph if (sPictographState == PICTOGRAPH_STATE_LENS) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, @@ -2251,20 +2278,20 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { - // Update beaver race minigame + // Beaver race minigame gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if ((gSaveContext.save.entrance == ENTRANCE(GORON_RACETRACK, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { - // Update goron race minigame + // Goron race minigame gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); } else if (play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON) { - // Update pictograph + // Related to pictograph if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { func_80115844(play, 0x12); Interface_SetHudVisibility(HUD_VISIBILITY_A_B); @@ -2276,7 +2303,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { sPictographState = PICTOGRAPH_STATE_SETUP_PHOTO; } } else { - // Update remaining cases + // Continue processing the remaining cases Interface_UpdateButtonsPart2(play); } } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index ffd41671a..d671ca4e6 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -760,7 +760,7 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) player->actor.freezeTimer = 0; this->flagsIndex = 0; Interface_InitMinigame(play); - func_80123F2C(play, 0x63); + func_80123F2C(play, 99); this->shootingGameState = SG_GAME_STATE_RUNNING; func_801A2BB8(NA_BGM_TIMED_MINI_GAME); this->actionFunc = EnSyatekiMan_Town_StartGame; diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index 7cb4f310f..36a284188 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -1722,7 +1722,7 @@ void ObjUm_Update(Actor* thisx, PlayState* play) { } if (this->flags & OBJ_UM_FLAG_0010) { - func_80123F2C(play, 0x63); + func_80123F2C(play, 99); this->flags &= ~OBJ_UM_FLAG_0010; } else if (this->flags & OBJ_UM_FLAG_0004) { func_80123F2C(play, -3); From c0b227ff1765e987bac07e6184d66e74f0b5ab2e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 1 Oct 2022 15:29:45 -0400 Subject: [PATCH 148/160] more docs --- include/functions.h | 2 +- include/z64.h | 2 +- src/code/z_kaleido_setup.c | 2 +- src/code/z_parameter.c | 50 ++++++++++--------- src/code/z_player_lib.c | 4 +- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 4 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 8 +-- src/overlays/actors/ovl_Obj_Um/z_obj_um.c | 4 +- tools/disasm/functions.txt | 2 +- tools/sizes/code_functions.csv | 2 +- 10 files changed, 41 insertions(+), 39 deletions(-) diff --git a/include/functions.h b/include/functions.h index bee8e6a5c..57bfbb4a7 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1897,7 +1897,7 @@ void func_80123D50(PlayState* play, Player* player, s32 itemId, s32 actionParam) void func_80123DA4(Player* player); void func_80123DC0(Player* player); void func_80123E90(PlayState* play, Actor* actor); -s32 func_80123F2C(PlayState* play, s32 ammo); +s32 Player_SetBButtonAmmo(PlayState* play, s32 ammo); s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 yRange); u8 Player_GetStrength(void); u8 Player_GetMask(PlayState* play); diff --git a/include/z64.h b/include/z64.h index 6c8d26de7..d5e1207e7 100644 --- a/include/z64.h +++ b/include/z64.h @@ -994,7 +994,7 @@ struct PlayState { /* 0x18876 */ s16 unk_18876; /* 0x18878 */ s16 bgCoverAlpha; /* 0x1887A */ u16 nextEntrance; - /* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus? + /* 0x1887C */ s8 bButtonAmmoPlusOne; /* 0x1887D */ s8 unk_1887D; /* 0x1887E */ s8 unk_1887E; /* 0x1887F */ u8 transitionType; // fadeTransition diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index d1f4d0ca2..ad24321c7 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -75,7 +75,7 @@ void KaleidoSetup_Update(PlayState* play) { if ((play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { if ((gSaveContext.save.cutscene < 0xFFF0) && (gSaveContext.nextCutsceneIndex < 0xFFF0)) { if (!Play_InCsMode(play) || ((msgCtx->msgMode != 0) && (msgCtx->currentTextId == 0xFF))) { - if ((play->unk_1887C < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && + if ((play->bButtonAmmoPlusOne < 2) && (gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { if (!(gSaveContext.eventInf[1] & 0x80) && !(player->stateFlags1 & 0x20)) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_1) && diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3cf84e917..1bab6ebdc 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2075,7 +2075,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || - (!(gSaveContext.eventInf[4] & 2) && (play->unk_1887C >= 2))) { + (!(gSaveContext.eventInf[4] & 2) && (play->bButtonAmmoPlusOne >= 2))) { // Riding Epona OR Honey & Darling minigame OR Horseback balloon minigame OR related to swamp boat // (non-minigame?) if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && @@ -2127,7 +2127,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; - if (play->unk_1887C >= 2) { + if (play->bButtonAmmoPlusOne >= 2) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; @@ -2154,7 +2154,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (play->unk_1887C >= 2) { + } else if (play->bButtonAmmoPlusOne >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; @@ -2185,7 +2185,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } - if (play->unk_1887C >= 2) { + if (play->bButtonAmmoPlusOne >= 2) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else if (gSaveContext.save.inventory.items[SLOT_BOW] == ITEM_NONE) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; @@ -2211,7 +2211,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (play->unk_1887C >= 2) { + } else if (play->bButtonAmmoPlusOne >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (gSaveContext.save.weekEventReg[8] & 1) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; @@ -2336,7 +2336,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { interfaceCtx->restrictions.unk_317 = (sRestrictionFlags[i].flags3 & 0x30) >> 4; interfaceCtx->restrictions.pictographBox = (sRestrictionFlags[i].flags3 & 0x0C) >> 2; interfaceCtx->restrictions.all = (sRestrictionFlags[i].flags3 & 0x03) >> 0; - return; + break; } i++; } while (sRestrictionFlags[i].scene != 0xFF); @@ -3945,11 +3945,11 @@ void Interface_DrawItemButtons(PlayState* play) { // Empty C Button Arrows for (temp = EQUIP_SLOT_C_LEFT; temp <= EQUIP_SLOT_C_RIGHT; temp++) { if (GET_CUR_FORM_BTN_ITEM(temp) > 0xF0) { - if (temp == 1) { + if (temp == EQUIP_SLOT_C_LEFT) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cLeftAlpha); - } else if (temp == 2) { + } else if (temp == EQUIP_SLOT_C_DOWN) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cDownAlpha); - } else { + } else { // EQUIP_SLOT_C_RIGHT gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cRightAlpha); } OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), @@ -4007,10 +4007,10 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { gDPPipeSync(OVERLAY_DISP++); - if ((button == 0) && (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { + if ((button == EQUIP_SLOT_B) && (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { ammo = play->interfaceCtx.minigameAmmo; - } else if ((button == 0) && (play->unk_1887C > 1)) { - ammo = play->unk_1887C - 1; + } else if ((button == EQUIP_SLOT_B) && (play->bButtonAmmoPlusOne > 1)) { + ammo = play->bButtonAmmoPlusOne - 1; } else if (((i == ITEM_BOW) && (AMMO(i) == CUR_CAPACITY(UPG_QUIVER))) || ((i == ITEM_BOMB) && (AMMO(i) == CUR_CAPACITY(UPG_BOMB_BAG))) || ((i == ITEM_STICK) && (AMMO(i) == CUR_CAPACITY(UPG_STICKS))) || @@ -4029,11 +4029,13 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { ammo -= 10; } + // Draw upper digit (tens) if (i) { OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, D_801BFB04[button], D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } + // Draw lower digit (ones) OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } @@ -4053,12 +4055,12 @@ void func_80118084(PlayState* play) { if ((interfaceCtx->unk_222 == 0) && (player->stateFlags3 & PLAYER_STATE3_1000000)) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { - Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, 0); + Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, EQUIP_SLOT_B); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - Interface_DrawAmmoCount(play, 0, interfaceCtx->bAlpha); + Interface_DrawAmmoCount(play, EQUIP_SLOT_B, interfaceCtx->bAlpha); } } else if ((!interfaceCtx->bButtonDoActionActive && (interfaceCtx->unk_222 == 0)) || ((interfaceCtx->bButtonDoActionActive && @@ -4068,9 +4070,9 @@ void func_80118084(PlayState* play) { (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NUT))) { if ((player->transformation == PLAYER_FORM_FIERCE_DEITY) || (player->transformation == PLAYER_FORM_HUMAN)) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, 0); + Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, EQUIP_SLOT_B); if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || - (play->unk_1887C >= 2)) { + (play->bButtonAmmoPlusOne >= 2)) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -4081,8 +4083,8 @@ void func_80118084(PlayState* play) { (gSaveContext.save.entrance != ENTRANCE(ROMANI_RANCH, 0))) && ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || !(gSaveContext.eventInf[3] & 0x20)) && - (!(gSaveContext.save.weekEventReg[31] & 0x80) || (play->unk_1887C != 0x64))) { - Interface_DrawAmmoCount(play, 0, interfaceCtx->bAlpha); + (!(gSaveContext.save.weekEventReg[31] & 0x80) || (play->bButtonAmmoPlusOne != 100))) { + Interface_DrawAmmoCount(play, EQUIP_SLOT_B, interfaceCtx->bAlpha); } } } @@ -4133,11 +4135,11 @@ void func_80118890(PlayState* play) { if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_LEFT) < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cLeftAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x1000, 1); + Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x1000, EQUIP_SLOT_C_LEFT); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - Interface_DrawAmmoCount(play, 1, interfaceCtx->cLeftAlpha); + Interface_DrawAmmoCount(play, EQUIP_SLOT_C_LEFT, interfaceCtx->cLeftAlpha); } gDPPipeSync(OVERLAY_DISP++); @@ -4146,11 +4148,11 @@ void func_80118890(PlayState* play) { if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cDownAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x2000, 2); + Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x2000, EQUIP_SLOT_C_DOWN); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - Interface_DrawAmmoCount(play, 2, interfaceCtx->cDownAlpha); + Interface_DrawAmmoCount(play, EQUIP_SLOT_C_DOWN, interfaceCtx->cDownAlpha); } gDPPipeSync(OVERLAY_DISP++); @@ -4159,11 +4161,11 @@ void func_80118890(PlayState* play) { if (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) < 0xF0) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->cRightAlpha); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x3000, 3); + Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment + 0x3000, EQUIP_SLOT_C_RIGHT); gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - Interface_DrawAmmoCount(play, 3, interfaceCtx->cRightAlpha); + Interface_DrawAmmoCount(play, EQUIP_SLOT_C_RIGHT, interfaceCtx->cRightAlpha); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index e0a73cafb..fb39b0fe9 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -719,8 +719,8 @@ s32 func_80123F14(PlayState* play) { return player->stateFlags1 & PLAYER_STATE1_800000; } -s32 func_80123F2C(PlayState* play, s32 ammo) { - play->unk_1887C = ammo + 1; +s32 Player_SetBButtonAmmo(PlayState* play, s32 ammo) { + play->bButtonAmmoPlusOne = ammo + 1; return 1; } diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 0efed2253..daddd5e93 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -131,7 +131,7 @@ s32 func_80953DA8(BgIngate* this, PlayState* play) { gSaveContext.eventInf[4] |= 2; } Camera_ChangeSetting(mainCam, CAM_SET_BOAT_CRUISE); - play->unk_1887C = 0x63; + play->bButtonAmmoPlusOne = 99; return false; } @@ -143,7 +143,7 @@ void func_80953E38(PlayState* play) { gSaveContext.eventInf[4] &= (u8)~2; } - play->unk_1887C = -1; + play->bButtonAmmoPlusOne = -1; } void func_80953EA4(BgIngate* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index d671ca4e6..64b754b1f 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -401,7 +401,7 @@ void EnSyatekiMan_Swamp_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) player->actor.freezeTimer = 0; Interface_InitMinigame(play); play->interfaceCtx.minigameAmmo = 80; - func_80123F2C(play, 80); + Player_SetBButtonAmmo(play, 80); this->shootingGameState = SG_GAME_STATE_RUNNING; this->actionFunc = EnSyatekiMan_Swamp_StartGame; func_801A2BB8(NA_BGM_TIMED_MINI_GAME); @@ -760,7 +760,7 @@ void EnSyatekiMan_Town_HandleNormalMessage(EnSyatekiMan* this, PlayState* play) player->actor.freezeTimer = 0; this->flagsIndex = 0; Interface_InitMinigame(play); - func_80123F2C(play, 99); + Player_SetBButtonAmmo(play, 99); this->shootingGameState = SG_GAME_STATE_RUNNING; func_801A2BB8(NA_BGM_TIMED_MINI_GAME); this->actionFunc = EnSyatekiMan_Town_StartGame; @@ -1147,7 +1147,7 @@ void EnSyatekiMan_Swamp_EndGame(EnSyatekiMan* this, PlayState* play) { } if (this->talkWaitTimer < 5) { - play->unk_1887C = -10; + play->bButtonAmmoPlusOne = -10; } } @@ -1415,7 +1415,7 @@ void EnSyatekiMan_Town_EndGame(EnSyatekiMan* this, PlayState* play) { } if (this->talkWaitTimer < 5) { - play->unk_1887C = -10; + play->bButtonAmmoPlusOne = -10; } } diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index 36a284188..25a5eb86c 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -1722,10 +1722,10 @@ void ObjUm_Update(Actor* thisx, PlayState* play) { } if (this->flags & OBJ_UM_FLAG_0010) { - func_80123F2C(play, 99); + Player_SetBButtonAmmo(play, 99); this->flags &= ~OBJ_UM_FLAG_0010; } else if (this->flags & OBJ_UM_FLAG_0004) { - func_80123F2C(play, -3); + Player_SetBButtonAmmo(play, -3); this->flags &= ~OBJ_UM_FLAG_0004; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 76441bc78..cdf43ad3f 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2212,7 +2212,7 @@ 0x80123DC0:("func_80123DC0",), 0x80123E90:("func_80123E90",), 0x80123F14:("func_80123F14",), - 0x80123F2C:("func_80123F2C",), + 0x80123F2C:("Player_SetBButtonAmmo",), 0x80123F48:("Player_IsBurningStickInRange",), 0x80124020:("Player_GetStrength",), 0x8012403C:("Player_GetMask",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 2f11d532e..62ab2c9ec 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1726,7 +1726,7 @@ asm/non_matchings/code/z_player_lib/func_80123DA4.s,func_80123DA4,0x80123DA4,0x7 asm/non_matchings/code/z_player_lib/func_80123DC0.s,func_80123DC0,0x80123DC0,0x34 asm/non_matchings/code/z_player_lib/func_80123E90.s,func_80123E90,0x80123E90,0x21 asm/non_matchings/code/z_player_lib/func_80123F14.s,func_80123F14,0x80123F14,0x6 -asm/non_matchings/code/z_player_lib/func_80123F2C.s,func_80123F2C,0x80123F2C,0x7 +asm/non_matchings/code/z_player_lib/Player_SetBButtonAmmo.s,Player_SetBButtonAmmo,0x80123F2C,0x7 asm/non_matchings/code/z_player_lib/Player_IsBurningStickInRange.s,Player_IsBurningStickInRange,0x80123F48,0x36 asm/non_matchings/code/z_player_lib/Player_GetStrength.s,Player_GetStrength,0x80124020,0x7 asm/non_matchings/code/z_player_lib/Player_GetMask.s,Player_GetMask,0x8012403C,0x4 From cd05be704983a8d0452d19624ca1244b10dbcb43 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 2 Oct 2022 09:18:23 -0400 Subject: [PATCH 149/160] some docs --- include/functions.h | 10 +- include/z64interface.h | 10 +- src/code/z_parameter.c | 237 +++++++++--------- .../ovl_kaleido_scope/z_kaleido_item.c | 10 +- .../ovl_kaleido_scope/z_kaleido_mask.c | 2 +- tools/disasm/functions.txt | 18 +- tools/sizes/code_functions.csv | 18 +- 7 files changed, 153 insertions(+), 152 deletions(-) diff --git a/include/functions.h b/include/functions.h index 57bfbb4a7..bbc7471c1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1807,11 +1807,11 @@ Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b); void OLib_DbCameraVec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode); -Gfx* Gfx_DrawRectTextureRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); -Gfx* Gfx_DrawRectTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); -Gfx* Gfx_DrawRectTextureI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); -Gfx* Gfx_DrawQuadTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point); -Gfx* Gfx_DrawQuadTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point); +Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy); +Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point); +Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point); void Interface_StartTimer(s16 timerId, s16 timeLimit); void Interface_StartPostmanTimer(s16 timeLimit, s16 bunnyHoodState); diff --git a/include/z64interface.h b/include/z64interface.h index 70fba3cd3..28ba7d4a5 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -73,11 +73,11 @@ typedef enum { } MinigamePerfectType; typedef enum { - /* 0 */ MINIGAME_PERFECT_STATE_0, - /* 1 */ MINIGAME_PERFECT_STATE_1, - /* 2 */ MINIGAME_PERFECT_STATE_2, - /* 3 */ MINIGAME_PERFECT_STATE_3, - /* 4 */ MINIGAME_PERFECT_STATE_4, + /* 0 */ MINIGAME_PERFECT_STATE_OFF, + /* 1 */ MINIGAME_PERFECT_STATE_INIT, + /* 2 */ MINIGAME_PERFECT_STATE_SWIRL_IN, + /* 3 */ MINIGAME_PERFECT_STATE_STATIONARY, + /* 4 */ MINIGAME_PERFECT_STATE_SWIRL_OUT, /* 5 */ MINIGAME_PERFECT_STATE_5, /* 6 */ MINIGAME_PERFECT_STATE_6 } MinigamePerfectState; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 1bab6ebdc..cf7716c9f 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -249,8 +249,8 @@ s16 sFinalHoursClockFrameEnvBlue = 0; s16 sFinalHoursClockColorTimer = 15; s16 sFinalHoursClockColorTargetIndex = 0; -Gfx* Gfx_DrawRectTextureRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawTexRectRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -261,8 +261,8 @@ Gfx* Gfx_DrawRectTextureRGBA16(Gfx* gfx, TexturePtr texture, s16 textureWidth, s return gfx; } -Gfx* Gfx_DrawRectTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawTexRectIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -273,9 +273,9 @@ Gfx* Gfx_DrawRectTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 return gfx; } -Gfx* Gfx_DrawRectTextureIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, - s16 b, s16 a) { +Gfx* Gfx_DrawTexRectIA8_DropShadow(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, s16 r, s16 g, s16 b, + s16 a) { s16 dropShadowAlpha = a; if (a > 100) { @@ -323,9 +323,9 @@ Gfx* Gfx_DrawRect_DropShadow(Gfx* gfx, s16 rectLeft, s16 rectTop, s16 rectWidth, return gfx; } -Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, - s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, - u16 dtdy, s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { +Gfx* Gfx_DrawTexRectIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, + s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, + s16 r, s16 g, s16 b, s16 a, s32 masks, s32 rectS) { s16 dropShadowAlpha = a; if (a > 100) { @@ -350,8 +350,8 @@ Gfx* Gfx_DrawRectTextureIA8_DropShadowOffset(Gfx* gfx, TexturePtr texture, s16 t return gfx; } -Gfx* Gfx_DrawRectTextureI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_I, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -362,8 +362,8 @@ Gfx* Gfx_DrawRectTextureI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 t return gfx; } -Gfx* Gfx_DrawRectTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, - s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { +Gfx* Gfx_DrawTexRect4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, s16 rectLeft, + s16 rectTop, s16 rectWidth, s16 rectHeight, s32 cms, s32 masks, s32 s, u16 dsdx, u16 dtdy) { gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, cms, G_TX_NOMIRROR | G_TX_WRAP, masks, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -373,7 +373,7 @@ Gfx* Gfx_DrawRectTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth return gfx; } -Gfx* Gfx_DrawQuadTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { +Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -383,7 +383,7 @@ Gfx* Gfx_DrawQuadTextureIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 return gfx; } -Gfx* Gfx_DrawQuadTexture(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { +Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point) { gDPLoadTextureBlock_4b(gfx++, texture, fmt, textureWidth, textureHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); @@ -493,7 +493,7 @@ s16 sMinigamePerfectVtxPosY[] = { #define BEATING_HEART_VTX_Y -8 #define BEATING_HEART_VTX_WIDTH 16 -void Interface_InitVertices(PlayState* play) { +void Interface_SetVertices(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; s16 j; @@ -3756,14 +3756,14 @@ void Magic_DrawMeter(PlayState* play) { gDPSetEnvColor(OVERLAY_DISP++, 100, 50, 50, 255); - OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow( + OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow( OVERLAY_DISP, gMagicMeterEndTex, 8, 16, 18, magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, - ((void)0, gSaveContext.magicCapacity), 16, 1 << 10, 1 << 10, - sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, - sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadowOffset( + OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, 26, magicBarY, + ((void)0, gSaveContext.magicCapacity), 16, 1 << 10, 1 << 10, + sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, + sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha); + OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadowOffset( OVERLAY_DISP, gMagicMeterEndTex, 8, 16, ((void)0, gSaveContext.magicCapacity) + 26, magicBarY, 8, 16, 1 << 10, 1 << 10, sMagicMeterOutlinePrimRed, sMagicMeterOutlinePrimGreen, sMagicMeterOutlinePrimBlue, interfaceCtx->magicAlpha, 3, 0x100); @@ -3865,9 +3865,9 @@ void Interface_DrawItemButtons(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); // B Button Color & Texture - OVERLAY_DISP = Gfx_DrawRectTextureIA8_DropShadow(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], - D_801BF9DC[0], D_801BFAF4[0], D_801BFAF4[0], D_801BF9E4[0] * 2, - D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); + OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], + D_801BF9DC[0], D_801BFAF4[0], D_801BFAF4[0], D_801BF9E4[0] * 2, + D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); if (1) {} gDPPipeSync(OVERLAY_DISP++); @@ -3952,9 +3952,9 @@ void Interface_DrawItemButtons(PlayState* play) { } else { // EQUIP_SLOT_C_RIGHT gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 240, 0, interfaceCtx->cRightAlpha); } - OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), - 0x20, 0x20, D_801BF9D4[temp], D_801BF9DC[temp], D_801BFAF4[temp], - D_801BFAF4[temp], D_801BF9E4[temp] * 2, D_801BF9E4[temp] * 2); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, ((u8*)gButtonBackgroundTex + ((32 * 32) * (temp + 1))), + 0x20, 0x20, D_801BF9D4[temp], D_801BF9DC[temp], D_801BFAF4[temp], + D_801BFAF4[temp], D_801BF9E4[temp] * 2, D_801BF9E4[temp] * 2); } } @@ -4031,13 +4031,13 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { // Draw upper digit (tens) if (i) { - OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, - D_801BFB04[button], D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * i)), 8, 8, + D_801BFB04[button], D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } // Draw lower digit (ones) - OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, - D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, ((u8*)gAmmoDigit0Tex + ((8 * 8) * ammo)), 8, 8, + D_801BFB04[button] + 6, D_801BFB0C[button], 8, 8, 1 << 10, 1 << 10); } CLOSE_DISPS(play->state.gfxCtx); @@ -4200,7 +4200,7 @@ void func_80118BA4(PlayState* play) { gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, aAlpha); - OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); gDPPipeSync(OVERLAY_DISP++); Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); @@ -4224,11 +4224,11 @@ void func_80118BA4(PlayState* play) { // Draw Action Label if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, - DO_ACTION_TEX_HEIGHT, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, + DO_ACTION_TEX_HEIGHT, 0); } else { - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, 3, - DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE, 3, + DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); } CLOSE_DISPS(play->state.gfxCtx); @@ -4434,8 +4434,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, - 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, + 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); /** * Draw Clock's Border @@ -4449,8 +4449,8 @@ void Interface_DrawClock(PlayState* play) { //! resulting in this reading into the next texture. This results in a white //! dot in the bottom center of the clock. For the three-day clock, this is //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, - 168, 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, + 128, 50, 1, 6, 0, 1 << 10, 1 << 10); if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && @@ -4532,8 +4532,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); } - OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, - 140, 190, 40, 32, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, + 190, 40, 32, 1 << 10, 1 << 10); /** * Draw Three-Day Clock's Day-Number over Diamond @@ -4541,9 +4541,8 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); - OVERLAY_DISP = - Gfx_DrawRectTextureIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, - 137, 192, 48, 27, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, + 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); /** * Draw Three-Day Clock's Star (for the Minute Tracker) @@ -4625,7 +4624,7 @@ void Interface_DrawClock(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); /** * Draw Three-Day Clock's Moon (for the Night-Time Hours Tracker) @@ -4643,7 +4642,7 @@ void Interface_DrawClock(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); /** * Cuts off Three-Day Clock's Hour Digits when they dip below the clock @@ -4670,7 +4669,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); @@ -4694,7 +4693,7 @@ void Interface_DrawClock(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); @@ -4778,8 +4777,8 @@ void Interface_DrawClock(PlayState* play) { gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, sFinalHoursClockFrameEnvGreen, sFinalHoursClockFrameEnvBlue, 0); - OVERLAY_DISP = Gfx_DrawRectTexture(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, - 119, 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, + 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); finalHoursClockSlots[0] = 0; @@ -4834,8 +4833,8 @@ void Interface_DrawClock(PlayState* play) { index = D_801BFC40[sp1C6]; OVERLAY_DISP = - Gfx_DrawRectTextureI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, - 8, index, 205, 8, 8, 1 << 10, 1 << 10); + Gfx_DrawTexRectI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, 8, + index, 205, 8, 8, 1 << 10, 1 << 10); } } } @@ -4923,7 +4922,7 @@ void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType) { interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; } } - interfaceCtx->minigamePerfectState[0] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectState[0] = MINIGAME_PERFECT_STATE_INIT; } u16 D_801BFC50[] = { @@ -4943,25 +4942,28 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { s16 colorStepB; for (count = 0, i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, count += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { + // Swirl interfaceCtx->minigamePerfectLetterDirection[i] = D_801BFC50[i] + 0xA000; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; if (interfaceCtx->minigamePerfectLetterDirection[i] == D_801BFC50[i]) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFC50[i] - 0x8000)) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } } } - if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) && + // Initialize the next letter in the list + // TODO: if `minigamePerfectLetterCount == 8`, then isn't minigamePerfectState[] accessed OoB? + if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && (interfaceCtx->minigamePerfectLetterCount < 8)) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; interfaceCtx->minigamePerfectLetterPosX[interfaceCtx->minigamePerfectLetterCount] = 140.0f; interfaceCtx->minigamePerfectLetterPosY[interfaceCtx->minigamePerfectLetterCount] = 100.0f; interfaceCtx->minigamePerfectLetterDirection[interfaceCtx->minigamePerfectLetterCount] = @@ -4970,7 +4972,7 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { } if ((interfaceCtx->minigamePerfectLetterCount == 8) && - (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_3)) { + (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_STATIONARY)) { colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / @@ -5012,14 +5014,14 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { if (interfaceCtx->minigamePerfectTimer == 6) { for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_4; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_OUT; } } } } for (count = 0, i = 0; i < 8; i++) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_0) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { count++; } } @@ -5050,23 +5052,23 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { s16 j = 0; // unused incrementer for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; interfaceCtx->minigamePerfectVtxOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; if (i == 7) { interfaceCtx->minigamePerfectColorTimer = 5; - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_4; + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SWIRL_OUT; interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; @@ -5076,7 +5078,7 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC6C[i]) / interfaceCtx->minigamePerfectColorTimer; @@ -5097,7 +5099,7 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { } } - if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) || + if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) || (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6)) { if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6) { new_var = interfaceCtx->minigamePerfectPrimColor[3] / interfaceCtx->minigamePerfectColorTimer; @@ -5106,23 +5108,23 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { interfaceCtx->minigamePerfectColorTimer--; if (interfaceCtx->minigamePerfectColorTimer == 0) { - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { for (i = 0; i < 8; i++) { interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_5; } interfaceCtx->minigamePerfectColorTimer = 20; } else { for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } interfaceCtx->isMinigamePerfect = false; } } } - if (interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) { + if (interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) { if (interfaceCtx->minigamePerfectLetterCount < 8) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; interfaceCtx->minigamePerfectLetterCount++; } } @@ -5200,22 +5202,22 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { s16 j = 0; for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_1) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; interfaceCtx->minigamePerfectVtxOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_2; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_2) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_3; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; if (i == 7) { - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_4; + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SWIRL_OUT; interfaceCtx->minigamePerfectColorTimer = 5; interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; @@ -5226,7 +5228,7 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_4) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC98[i]) / interfaceCtx->minigamePerfectColorTimer; if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC98[i]) { @@ -5237,12 +5239,12 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_6) { interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFCA8[i] - 0x8000)) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } } } - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_4) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { interfaceCtx->minigamePerfectColorTimer--; if (interfaceCtx->minigamePerfectColorTimer == 0) { for (i = 0; i < 8; i++) { @@ -5252,9 +5254,9 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { } } - if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_0) && + if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && (interfaceCtx->minigamePerfectLetterCount < 8)) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_1; + interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; interfaceCtx->minigamePerfectLetterCount++; } @@ -5311,7 +5313,7 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { j = 0; for (i = 0; i < 8; i++) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_0) { + if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { j++; } } @@ -5341,7 +5343,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { PRIMITIVE, 0); for (vtxOffset = 0, i = 0; i < 8; vtxOffset += 4, i++) { - if (interfaceCtx->minigamePerfectState[i] != MINIGAME_PERFECT_STATE_0) { + if (interfaceCtx->minigamePerfectState[i] != MINIGAME_PERFECT_STATE_OFF) { letterX = Math_SinS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosX[i]; letterY = @@ -5357,7 +5359,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[44 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); // Draw Minigame Perfect Colored Letters gDPPipeSync(OVERLAY_DISP++); @@ -5371,7 +5373,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[76 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTexture(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); } } @@ -5792,7 +5794,7 @@ void Interface_DrawTimers(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); - OVERLAY_DISP = Gfx_DrawRectTextureIA8( + OVERLAY_DISP = Gfx_DrawTexRectIA8( OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, ((void)0, gSaveContext.timerX[sTimerId]), ((void)0, gSaveContext.timerY[sTimerId]) + 2, 0x10, 0x10, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -5841,7 +5843,7 @@ void Interface_DrawTimers(PlayState* play) { if (sPostmanBunnyHoodState == POSTMAN_MINIGAME_BUNNY_HOOD_ON) { // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[6] (100s of milliseconds) for (j = 0; j < 4; j++) { - OVERLAY_DISP = Gfx_DrawRectTextureI8( + OVERLAY_DISP = Gfx_DrawTexRectI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -5849,7 +5851,7 @@ void Interface_DrawTimers(PlayState* play) { } else { // draw sTimerDigits[3] (10s of seconds) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 5; j++) { - OVERLAY_DISP = Gfx_DrawRectTextureI8( + OVERLAY_DISP = Gfx_DrawTexRectI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j + 3])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -5858,7 +5860,7 @@ void Interface_DrawTimers(PlayState* play) { } else { // draw sTimerDigits[3] (6s of minutes) to sTimerDigits[7] (10s of milliseconds) for (j = 0; j < 8; j++) { - OVERLAY_DISP = Gfx_DrawRectTextureI8( + OVERLAY_DISP = Gfx_DrawTexRectI8( OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sTimerDigits[j])), 8, 0x10, ((void)0, gSaveContext.timerX[sTimerId]) + sTimerDigitsOffsetX[j], ((void)0, gSaveContext.timerY[sTimerId]), sTimerDigitsWidth[j], 0xFA, 0x370, 0x370); @@ -6035,9 +6037,9 @@ void Interface_DrawMinigameIcons(PlayState* play) { for (sp42 = sp40 = 0; sp42 < 4; sp42++) { if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) { - OVERLAY_DISP = Gfx_DrawRectTextureI8( - OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), 8, 0x10, sp3E, - sp3C - 2, 9, 0xFA, 0x370, 0x370); + OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, + ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), + 8, 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370); sp3E += 9; sp40++; } @@ -6110,7 +6112,7 @@ void Interface_Draw(PlayState* play) { gSPSegment(OVERLAY_DISP++, 0x0B, interfaceCtx->mapSegment); if (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) { - Interface_InitVertices(play); + Interface_SetVertices(play); Interface_SetView2(interfaceCtx); // Draw Grandma's Story @@ -6150,7 +6152,7 @@ void Interface_Draw(PlayState* play) { sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].g, sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].b, 255); OVERLAY_DISP = - Gfx_DrawRectTextureIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); + Gfx_DrawTexRectIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); switch (play->sceneId) { case SCENE_INISIE_N: @@ -6163,8 +6165,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 20, 255); - OVERLAY_DISP = Gfx_DrawRectTextureIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, - 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gSmallKeyCounterIconTex, 16, 16, 26, 190, 16, 16, + 1 << 10, 1 << 10); // Small Key Counter gDPPipeSync(OVERLAY_DISP++); @@ -6186,8 +6188,8 @@ void Interface_Draw(PlayState* play) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); OVERLAY_DISP = - Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, - 16, 43, 191, 8, 16, 1 << 10, 1 << 10); + Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, 16, + 43, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6200,9 +6202,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = - Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, 16, - sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), + 8, 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6242,9 +6243,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = - Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), 8, 16, - 43, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[2]), + 8, 16, 43, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6256,8 +6256,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->magicAlpha); - OVERLAY_DISP = Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), - 8, 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[3]), 8, + 16, sp2CA + 1, 191, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->magicAlpha); @@ -6303,8 +6303,8 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sp4C); - OVERLAY_DISP = Gfx_DrawRectTextureI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), - 8, 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), 8, + 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -6373,8 +6373,8 @@ void Interface_Draw(PlayState* play) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[40], 4, 0); - OVERLAY_DISP = Gfx_DrawQuadTextureIA8(OVERLAY_DISP, sMinigameCountdownTextures[sp2CE], - sMinigameCountdownTexWidths[sp2CE], 32, 0); + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, sMinigameCountdownTextures[sp2CE], + sMinigameCountdownTexWidths[sp2CE], 32, 0); } } else { Interface_DrawClock(play); @@ -6529,13 +6529,14 @@ void Interface_Update(PlayState* play) { s16 risingAlpha; u16 action; + // Update buttons if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (play->gameOverCtx.state == GAMEOVER_INACTIVE) { Interface_UpdateButtonsPart1(play); } } - // Update hud mode + // Update hud visibility switch (gSaveContext.nextHudVisibility) { case HUD_VISIBILITY_NONE: case HUD_VISIBILITY_NONE_ALT: diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c index c8b714e09..3d73b4fef 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c @@ -224,14 +224,14 @@ void KaleidoScope_DrawAmmoCount(PauseContext* pauseCtx, GraphicsContext* gfxCtx, // Draw upper digit if (ammoUpperDigit != 0) { POLY_OPA_DISP = - Gfx_DrawRectTextureIA8(POLY_OPA_DISP, ((u8*)gAmmoDigit0Tex + (8 * 8 * ammoUpperDigit)), 8, 8, - sAmmoRectLeft[ammoIndex], sAmmoRectHeight[ammoIndex], 8, 8, 1 << 10, 1 << 10); + Gfx_DrawTexRectIA8(POLY_OPA_DISP, ((u8*)gAmmoDigit0Tex + (8 * 8 * ammoUpperDigit)), 8, 8, + sAmmoRectLeft[ammoIndex], sAmmoRectHeight[ammoIndex], 8, 8, 1 << 10, 1 << 10); } // Draw lower digit POLY_OPA_DISP = - Gfx_DrawRectTextureIA8(POLY_OPA_DISP, ((u8*)gAmmoDigit0Tex + (8 * 8 * ammo)), 8, 8, - sAmmoRectLeft[ammoIndex] + 6, sAmmoRectHeight[ammoIndex], 8, 8, 1 << 10, 1 << 10); + Gfx_DrawTexRectIA8(POLY_OPA_DISP, ((u8*)gAmmoDigit0Tex + (8 * 8 * ammo)), 8, 8, sAmmoRectLeft[ammoIndex] + 6, + sAmmoRectHeight[ammoIndex], 8, 8, 1 << 10, 1 << 10); CLOSE_DISPS(gfxCtx); } @@ -262,7 +262,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) { if (GET_CUR_FORM_BTN_ITEM(i + 1) != ITEM_NONE) { if (GET_CUR_FORM_BTN_SLOT(i + 1) < 24) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->itemVtx[j], 4, 0); - POLY_OPA_DISP = Gfx_DrawQuadTextureIA8(POLY_OPA_DISP, gEquippedItemOutlineTex, 32, 32, 0); + POLY_OPA_DISP = Gfx_DrawTexQuadIA8(POLY_OPA_DISP, gEquippedItemOutlineTex, 32, 32, 0); } } } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c index fd7efcdb0..c45680e1c 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c @@ -208,7 +208,7 @@ void KaleidoScope_DrawMaskSelect(PlayState* play) { if (GET_CUR_FORM_BTN_ITEM(i + 1) != ITEM_NONE) { if (GET_CUR_FORM_BTN_SLOT(i + 1) >= NUM_ITEM_SLOTS) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->maskVtx[j], 4, 0); - POLY_OPA_DISP = Gfx_DrawQuadTextureIA8(POLY_OPA_DISP, gEquippedItemOutlineTex, 32, 32, 0); + POLY_OPA_DISP = Gfx_DrawTexQuadIA8(POLY_OPA_DISP, gEquippedItemOutlineTex, 32, 32, 0); } } } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index cdf43ad3f..887c94afd 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2083,16 +2083,16 @@ 0x8010C930:("OLib_Vec3fDiffBinAng",), 0x8010C9C8:("OLib_DbCameraVec3fDiff",), 0x8010CAA0:("OLib_DbCameraVec3fSum",), - 0x8010CB80:("Gfx_DrawRectTextureRGBA16",), - 0x8010CD98:("Gfx_DrawRectTextureIA8",), - 0x8010CFBC:("Gfx_DrawRectTextureIA8_DropShadow",), + 0x8010CB80:("Gfx_DrawTexRectRGBA16",), + 0x8010CD98:("Gfx_DrawTexRectIA8",), + 0x8010CFBC:("Gfx_DrawTexRectIA8_DropShadow",), 0x8010D2D4:("Gfx_DrawRect_DropShadow",), - 0x8010D480:("Gfx_DrawRectTextureIA8_DropShadowOffset",), - 0x8010D7D0:("Gfx_DrawRectTextureI8",), - 0x8010D9F4:("Gfx_DrawRectTexture",), - 0x8010DC58:("Gfx_DrawQuadTextureIA8",), - 0x8010DE38:("Gfx_DrawQuadTexture",), - 0x8010E028:("Interface_InitVertices",), + 0x8010D480:("Gfx_DrawTexRectIA8_DropShadowOffset",), + 0x8010D7D0:("Gfx_DrawTexRectI8",), + 0x8010D9F4:("Gfx_DrawTexRect4b",), + 0x8010DC58:("Gfx_DrawTexQuadIA8",), + 0x8010DE38:("Gfx_DrawTexQuad4b",), + 0x8010E028:("Interface_SetVertices",), 0x8010E968:("Interface_PostmanTimerCallback",), 0x8010E9F0:("Interface_StartTimer",), 0x8010EA9C:("Interface_StartPostmanTimer",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 62ab2c9ec..be788a794 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1597,16 +1597,16 @@ asm/non_matchings/code/z_olib/OLib_Vec3fDiffDegF.s,OLib_Vec3fDiffDegF,0x8010C8C8 asm/non_matchings/code/z_olib/OLib_Vec3fDiffBinAng.s,OLib_Vec3fDiffBinAng,0x8010C930,0x26 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fDiff.s,OLib_DbCameraVec3fDiff,0x8010C9C8,0x36 asm/non_matchings/code/z_olib/OLib_DbCameraVec3fSum.s,OLib_DbCameraVec3fSum,0x8010CAA0,0x34 -asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureRGBA16.s,Gfx_DrawRectTextureRGBA16,0x8010CB80,0x86 -asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8.s,Gfx_DrawRectTextureIA8,0x8010CD98,0x89 -asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8_DropShadow.s,Gfx_DrawRectTextureIA8_DropShadow,0x8010CFBC,0xC6 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRectRGBA16.s,Gfx_DrawTexRectRGBA16,0x8010CB80,0x86 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRectIA8.s,Gfx_DrawTexRectIA8,0x8010CD98,0x89 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRectIA8_DropShadow.s,Gfx_DrawTexRectIA8_DropShadow,0x8010CFBC,0xC6 asm/non_matchings/code/z_parameter/Gfx_DrawRect_DropShadow.s,Gfx_DrawRect_DropShadow,0x8010D2D4,0x6B -asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureIA8_DropShadowOffset.s,Gfx_DrawRectTextureIA8_DropShadowOffset,0x8010D480,0xD4 -asm/non_matchings/code/z_parameter/Gfx_DrawRectTextureI8.s,Gfx_DrawRectTextureI8,0x8010D7D0,0x89 -asm/non_matchings/code/z_parameter/Gfx_DrawRectTexture.s,Gfx_DrawRectTexture,0x8010D9F4,0x99 -asm/non_matchings/code/z_parameter/Gfx_DrawQuadTextureIA8.s,Gfx_DrawQuadTextureIA8,0x8010DC58,0x78 -asm/non_matchings/code/z_parameter/Gfx_DrawQuadTexture.s,Gfx_DrawQuadTexture,0x8010DE38,0x7C -asm/non_matchings/code/z_parameter/Interface_InitVertices.s,Interface_InitVertices,0x8010E028,0x250 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRectIA8_DropShadowOffset.s,Gfx_DrawTexRectIA8_DropShadowOffset,0x8010D480,0xD4 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRectI8.s,Gfx_DrawTexRectI8,0x8010D7D0,0x89 +asm/non_matchings/code/z_parameter/Gfx_DrawTexRect4b.s,Gfx_DrawTexRect4b,0x8010D9F4,0x99 +asm/non_matchings/code/z_parameter/Gfx_DrawTexQuadIA8.s,Gfx_DrawTexQuadIA8,0x8010DC58,0x78 +asm/non_matchings/code/z_parameter/Gfx_DrawTexQuad4b.s,Gfx_DrawTexQuad4b,0x8010DE38,0x7C +asm/non_matchings/code/z_parameter/Interface_SetVertices.s,Interface_SetVertices,0x8010E028,0x250 asm/non_matchings/code/z_parameter/Interface_PostmanTimerCallback.s,Interface_PostmanTimerCallback,0x8010E968,0x22 asm/non_matchings/code/z_parameter/Interface_StartTimer.s,Interface_StartTimer,0x8010E9F0,0x2B asm/non_matchings/code/z_parameter/Interface_StartPostmanTimer.s,Interface_StartPostmanTimer,0x8010EA9C,0x2D From bdb2001b05430744f77af68ebbad32073f91f969 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 2 Oct 2022 22:29:01 -0400 Subject: [PATCH 150/160] time, button, misc docs --- include/functions.h | 2 +- include/regs.h | 5 +- include/variables.h | 12 +- include/z64.h | 2 +- include/z64interface.h | 18 +- include/z64save.h | 5 + include/z64scene.h | 2 +- src/code/z_demo.c | 8 +- src/code/z_lifemeter.c | 25 +- src/code/z_parameter.c | 400 +++++++++--------- src/code/z_scene.c | 14 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 4 +- src/overlays/actors/ovl_En_Al/z_en_al.c | 2 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 2 +- src/overlays/actors/ovl_En_Baba/z_en_baba.c | 2 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 2 +- src/overlays/actors/ovl_En_Gm/z_en_gm.c | 2 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 6 +- src/overlays/actors/ovl_En_Ig/z_en_ig.c | 2 +- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 4 +- src/overlays/actors/ovl_En_Ja/z_en_ja.c | 2 +- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 2 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 10 +- src/overlays/actors/ovl_En_Tab/z_en_tab.c | 2 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 10 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 4 +- .../actors/ovl_Oceff_Spot/z_oceff_spot.c | 2 +- tools/disasm/functions.txt | 18 +- tools/disasm/variables.txt | 12 +- tools/sizes/code_functions.csv | 18 +- 30 files changed, 316 insertions(+), 283 deletions(-) diff --git a/include/functions.h b/include/functions.h index 406bdc410..9e9c85838 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1837,7 +1837,7 @@ void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item); void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction); void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction); void Interface_SetTatlCall(PlayState* play, u16 tatlCallState); -void func_80115844(PlayState* play, s16 arg1); +void Interface_LoadBButtonDoActionLabel(PlayState* play, s16 bButtonDoAction); s32 Health_ChangeBy(PlayState* play, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); diff --git a/include/regs.h b/include/regs.h index 592d2089a..097ece8ce 100644 --- a/include/regs.h +++ b/include/regs.h @@ -43,8 +43,9 @@ #define bREG(r) BASE_REG(28, r) /* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */ -#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT +#define R_TIME_SPEED REG(15) #define R_RUN_SPEED_LIMIT REG(45) +#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT #define R_UPDATE_RATE SREG(30) #define R_PAUSE_MENU_MODE SREG(94) #define R_C_UP_ICON_X YREG(88) @@ -65,11 +66,13 @@ #define R_ITEM_ICON_X(i) ZREG(82 + i) #define R_ITEM_ICON_Y(i) ZREG(86 + i) #define R_ITEM_ICON_DD(i) ZREG(90 + i) +#define R_MAGIC_DBG_SET_UPGRADE XREG(4) #define R_A_BTN_Y XREG(16) #define R_A_BTN_X XREG(17) #define R_A_ICON_Y XREG(19) #define R_A_ICON_X XREG(20) #define R_A_BTN_COLOR(i) XREG(22 + i) +#define R_A_BTN_Y_OFFSET XREG(31) #define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41) #define R_MOON_CRASH_TIMER_Y XREG(80) #define R_MOON_CRASH_TIMER_X XREG(81) diff --git a/include/variables.h b/include/variables.h index 70508d72b..c723e92c0 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1099,11 +1099,11 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFB14; // extern UNK_TYPE1 D_801BFB1C; // extern UNK_TYPE1 D_801BFB24; -// extern UNK_TYPE2 D_801BFB2C; +// extern UNK_TYPE2 sThreeDayClockAlpha; // extern UNK_TYPE2 D_801BFB30; // extern UNK_TYPE2 D_801BFB34; -// extern UNK_TYPE1 D_801BFB38; -// extern UNK_TYPE1 D_801BFB6C; +// extern UNK_TYPE1 sThreeDayClockHours; +// extern UNK_TYPE1 sThreeDayClockHourTextures; // extern UNK_TYPE2 D_801BFBCC; // extern UNK_TYPE2 D_801BFBD0; // extern UNK_TYPE2 D_801BFBD4; @@ -1122,7 +1122,7 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFC08; // extern UNK_TYPE1 D_801BFC0C; // extern UNK_TYPE1 D_801BFC10; -// extern UNK_TYPE1 D_801BFC14; +// extern UNK_TYPE1 sFinalHoursDigitTextures; // extern UNK_TYPE1 D_801BFC40; // extern UNK_TYPE2 D_801BFC50; // extern UNK_TYPE2 sMinigamePerfectType1PrimColorTargets; @@ -1155,8 +1155,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sMinigameCountdownPrimColors; // extern UNK_TYPE1 gStoryTextures; // extern UNK_TYPE1 gStoryTLUTs; -// extern UNK_TYPE1 D_801BFD94; -// extern UNK_TYPE2 D_801BFD98; +// extern UNK_TYPE1 sIsSunsPlayedAtDay; +// extern UNK_TYPE2 sPrevTimeSpeed; // extern UNK_TYPE1 D_801BFDD0; // extern UNK_TYPE1 D_801BFE00; diff --git a/include/z64.h b/include/z64.h index 61323e9ae..a34e0b3ab 100644 --- a/include/z64.h +++ b/include/z64.h @@ -495,7 +495,7 @@ typedef enum { typedef struct { /* 0x00 */ u16 unk_0; - /* 0x02 */ u16 timeIncrement; + /* 0x02 */ u16 sceneTimeSpeed; // time speed value from the scene file /* 0x04 */ f32 unk_4; /* 0x08 */ f32 unk_8; /* 0x0C */ f32 unk_C; diff --git a/include/z64interface.h b/include/z64interface.h index 28ba7d4a5..3c3396ed1 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -4,6 +4,14 @@ #include "ultra64.h" #include "z64view.h" +typedef enum { + /* 0 */ A_BTN_STATE_0, + /* 1 */ A_BTN_STATE_1, + /* 2 */ A_BTN_STATE_2, + /* 3 */ A_BTN_STATE_3, + /* 4 */ A_BTN_STATE_4 +} AButtonState; + typedef enum { /* 0x00 */ DO_ACTION_ATTACK, /* 0x01 */ DO_ACTION_CHECK, @@ -118,10 +126,10 @@ typedef struct { /* 0x1E4 */ OSMesgQueue loadQueue; /* 0x1FC */ OSMesg loadMsg; /* 0x200 */ Viewport viewport; - /* 0x210 */ s16 unk_210; - /* 0x212 */ u16 unk_212; - /* 0x214 */ u16 unk_214; - /* 0x218 */ f32 unk_218; + /* 0x210 */ s16 aButtonState; + /* 0x212 */ u16 aButtonHorseDoAction; // TODO: Confirm. Only seems to be used for Epona and "DO_ACTION_FASTER" + /* 0x214 */ u16 aButtonDoAction; + /* 0x218 */ f32 aButtonRoll; /* 0x21C */ s16 bButtonDoActionActive; /* 0x21E */ s16 bButtonDoAction; /* 0x220 */ s16 tatlCalling; @@ -138,7 +146,7 @@ typedef struct { /* 0x246 */ s16 heartsEnvG[2]; /* 0x24A */ s16 heartsEnvB[2]; /* 0x24E */ s16 health; - /* 0x250 */ s16 unkTimer; + /* 0x250 */ s16 healthTimer; /* 0x252 */ s16 lifeSizeChange; /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing /* 0x256 */ s16 unk_256; diff --git a/include/z64save.h b/include/z64save.h index c73a5cb94..2fb7831cd 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -56,6 +56,11 @@ typedef enum { #define MAGIC_NORMAL_METER 0x30 #define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER) +// See `R_MAGIC_DBG_SET_UPGRADE` +#define MAGIC_DBG_SET_UPGRADE_NO_ACTION 0 +#define MAGIC_DBG_SET_UPGRADE_NORMAL_METER -1 +#define MAGIC_DBG_SET_UPGRADE_DOUBLE_METER 1 + #define SECONDS_TO_TIMER(seconds) ((seconds) * 100) #define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000) diff --git a/include/z64scene.h b/include/z64scene.h index 9658c4f4d..7550d69e2 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -119,7 +119,7 @@ typedef struct { /* 0x2 */ UNK_TYPE1 pad2[2]; /* 0x4 */ u8 hour; /* 0x5 */ u8 min; - /* 0x6 */ u8 unk6; + /* 0x6 */ u8 timeSpeed; } SCmdTimeSettings; // size = 0x7 typedef struct { diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 79d6d05ff..e1df23c77 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -251,9 +251,9 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c break; case 0x12: if (!gSaveContext.save.isNight) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)R_TIME_SPEED; } else { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * REG(15)); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) - (u16)(2 * R_TIME_SPEED); } break; case 0x13: @@ -325,8 +325,8 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c if (csCtx->frames != D_801BB15C) { D_801BB15C = csCtx->frames; - if (REG(15) != 0) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + if (R_TIME_SPEED != 0) { + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index d2a3a254c..a6989f23e 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -36,7 +36,7 @@ TexturePtr HeartDDTextures[] = { void LifeMeter_Init(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - interfaceCtx->unkTimer = 320; + interfaceCtx->healthTimer = 320; interfaceCtx->health = gSaveContext.save.playerData.health; @@ -167,39 +167,44 @@ void LifeMeter_UpdateColors(PlayState* play) { sBeatingHeartsDDEnv[2] = (u8)(bFactor + 0) & 0xFF; } +// Unused s32 LifeMeter_SaveInterfaceHealth(PlayState* play) { - gSaveContext.save.playerData.health = play->interfaceCtx.health; + InterfaceContext* interfaceCtx = &play->interfaceCtx; + + gSaveContext.save.playerData.health = interfaceCtx->health; return 1; } +// Unused s32 LifeMeter_IncreaseInterfaceHealth(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - interfaceCtx->unkTimer = 320; + interfaceCtx->healthTimer = 320; interfaceCtx->health += 0x10; if (play->interfaceCtx.health >= gSaveContext.save.playerData.health) { play->interfaceCtx.health = gSaveContext.save.playerData.health; - return 1; + return true; } - return 0; + return false; } +// Unused s32 LifeMeter_DecreaseInterfaceHealth(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - if (interfaceCtx->unkTimer != 0) { - interfaceCtx->unkTimer--; + if (interfaceCtx->healthTimer != 0) { + interfaceCtx->healthTimer--; } else { - interfaceCtx->unkTimer = 320; + interfaceCtx->healthTimer = 320; interfaceCtx->health -= 0x10; if (interfaceCtx->health <= 0) { interfaceCtx->health = 0; play->damagePlayer(play, -(((void)0, gSaveContext.save.playerData.health) + 1)); - return 1; + return true; } } - return 0; + return false; } void LifeMeter_Draw(PlayState* play) { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 5bcd47e15..322e1882e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -239,8 +239,7 @@ s16 D_801BF9D4[] = { 0xA7, 0xE3 }; s16 D_801BF9D8[] = { 0xF9, 0x10F }; s16 D_801BF9DC[] = { 0x11, 0x12 }; s16 D_801BF9E0[] = { 0x22, 0x12 }; -s16 D_801BF9E4[] = { 0x23F, 0x26C }; -s16 D_801BF9E8[] = { 0x26C, 0x26C }; +s16 D_801BF9E4[] = { 0x23F, 0x26C, 0x26C, 0x26C }; s16 sFinalHoursClockDigitsRed = 0; s16 sFinalHoursClockFrameEnvRed = 0; @@ -459,7 +458,7 @@ s16 sMinigamePerfectVtxPosY[] = { /** * interfaceCtx->actionVtx[0] -> A Button - * interfaceCtx->actionVtx[4] -> A Button Background + * interfaceCtx->actionVtx[4] -> A Button Shadow * interfaceCtx->actionVtx[8] -> A Button Do-Action * interfaceCtx->actionVtx[12] -> Three-Day Clock's Star (for the Minute Tracker) * interfaceCtx->actionVtx[16] -> Three-Day Clock's Sun (for the Day-Time Hours Tracker) @@ -1589,6 +1588,7 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { /** * A continuation of the if-else chain from Interface_UpdateButtonsPart1 + * Also used directly when opening the pause menu i.e. skips part 1 */ void Interface_UpdateButtonsPart2(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; @@ -2228,14 +2228,12 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; + interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; restoreHudVisibility = true; sPictographState = PICTOGRAPH_STATE_OFF; } else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_B)) { play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; - interfaceCtx->unk_224 = 0; - interfaceCtx->unk_222 = interfaceCtx->unk_224; + interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; restoreHudVisibility = true; sPictographState = PICTOGRAPH_STATE_OFF; } else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) || (func_801A5100() == 1)) { @@ -2255,7 +2253,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { func_801477B4(play); if (play->msgCtx.choiceIndex != 0) { func_8019F230(); - func_80115844(play, 0x12); + Interface_LoadBButtonDoActionLabel(play, DO_ACTION_STOP); Interface_SetHudVisibility(HUD_VISIBILITY_A_B); sPictographState = PICTOGRAPH_STATE_LENS; REMOVE_QUEST_ITEM(QUEST_PICTOGRAPH); @@ -2293,7 +2291,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } else if (play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON) { // Related to pictograph if (!CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { - func_80115844(play, 0x12); + Interface_LoadBButtonDoActionLabel(play, DO_ACTION_STOP); Interface_SetHudVisibility(HUD_VISIBILITY_A_B); sPictographState = PICTOGRAPH_STATE_LENS; } else { @@ -3140,15 +3138,15 @@ void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item) { } } -void func_801153C8(s32* buf, s32 size) { +void Interface_MemSetZeroed(u32* buf, s32 count) { s32 i; - for (i = 0; i != size; i++) { + for (i = 0; i != count; i++) { buf[i] = 0; } } -void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 loadOffset) { +void Interface_LoadAButtonDoActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 loadOffset) { static TexturePtr sDoActionTextures[] = { gDoActionAttackENGTex, gDoActionCheckENGTex, @@ -3165,24 +3163,23 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l (u32)SEGMENT_ROM_START(do_action_static) + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, 0, &interfaceCtx->loadQueue, 0); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); - return; + } else { + gSegments[0x09] = PHYSICAL_TO_VIRTUAL(interfaceCtx->doActionSegment); + Interface_MemSetZeroed(Lib_SegmentedToVirtual(sDoActionTextures[loadOffset]), 0x60); } - - gSegments[0x09] = PHYSICAL_TO_VIRTUAL(interfaceCtx->doActionSegment); - func_801153C8(Lib_SegmentedToVirtual(sDoActionTextures[loadOffset]), 0x60); } void Interface_SetAButtonDoAction(PlayState* play, u16 aButtonDoAction) { InterfaceContext* interfaceCtx = &play->interfaceCtx; PauseContext* pauseCtx = &play->pauseCtx; - if (interfaceCtx->unk_214 != aButtonDoAction) { - interfaceCtx->unk_214 = aButtonDoAction; - interfaceCtx->unk_210 = 1; - interfaceCtx->unk_218 = 0.0f; - Interface_LoadActionLabel(interfaceCtx, aButtonDoAction, 1); + if (interfaceCtx->aButtonDoAction != aButtonDoAction) { + interfaceCtx->aButtonDoAction = aButtonDoAction; + interfaceCtx->aButtonState = A_BTN_STATE_1; + interfaceCtx->aButtonRoll = 0.0f; + Interface_LoadAButtonDoActionLabel(interfaceCtx, aButtonDoAction, 1); if (pauseCtx->state != 0) { - interfaceCtx->unk_210 = 3; + interfaceCtx->aButtonState = A_BTN_STATE_3; } } } @@ -3235,16 +3232,15 @@ void Interface_SetTatlCall(PlayState* play, u16 tatlCallState) { } } -// Interface_LoadActionLabelB? -void func_80115844(PlayState* play, s16 arg1) { +void Interface_LoadBButtonDoActionLabel(PlayState* play, s16 bButtonDoAction) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - interfaceCtx->unk_224 = arg1; + interfaceCtx->unk_224 = bButtonDoAction; osCreateMesgQueue(&play->interfaceCtx.loadQueue, &play->interfaceCtx.loadMsg, 1); DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x480, - (arg1 * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, - NULL); + (bButtonDoAction * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, + &interfaceCtx->loadQueue, NULL); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); interfaceCtx->unk_222 = 1; @@ -3813,7 +3809,7 @@ void Magic_DrawMeter(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void Interface_SetView1(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { +void Interface_SetPerspectiveView(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 rightX) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Vec3f eye; Vec3f lookAt; @@ -3837,7 +3833,7 @@ void Interface_SetView1(PlayState* play, s32 topY, s32 bottomY, s32 leftX, s32 r View_ApplyPerspectiveToOverlay(&interfaceCtx->view); } -void Interface_SetView2(InterfaceContext* interfaceCtx) { +void Interface_SetOrthoView(InterfaceContext* interfaceCtx) { SET_FULLSCREEN_VIEWPORT(&interfaceCtx->view); View_ApplyOrthoToOverlay(&interfaceCtx->view); } @@ -3867,22 +3863,20 @@ void Interface_DrawItemButtons(PlayState* play) { // B Button Color & Texture OVERLAY_DISP = Gfx_DrawTexRectIA8_DropShadow(OVERLAY_DISP, gButtonBackgroundTex, 0x20, 0x20, D_801BF9D4[0], D_801BF9DC[0], D_801BFAF4[0], D_801BFAF4[0], D_801BF9E4[0] * 2, - D_801BF9E4[0] * 2, 0x64, 0xFF, 0x78, interfaceCtx->bAlpha); + D_801BF9E4[0] * 2, 100, 255, 120, interfaceCtx->bAlpha); if (1) {} gDPPipeSync(OVERLAY_DISP++); // C-Left Button Color & Texture - OVERLAY_DISP = - Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D4[1], D_801BF9DC[1], D_801BFAF4[1], D_801BFAF4[1], - D_801BF9E4[1] * 2, D_801BF9E4[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cLeftAlpha); + OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D4[1], D_801BF9DC[1], D_801BFAF4[1], D_801BFAF4[1], + D_801BF9E4[1] * 2, D_801BF9E4[1] * 2, 255, 240, 0, interfaceCtx->cLeftAlpha); // C-Down Button Color & Texture - OVERLAY_DISP = - Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[0], D_801BF9E0[0], D_801BFAF8[0], D_801BFAF8[0], - D_801BF9E8[0] * 2, D_801BF9E8[0] * 2, 0xFF, 0xF0, 0, interfaceCtx->cDownAlpha); + OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[0], D_801BF9E0[0], D_801BFAF8[0], D_801BFAF8[0], + D_801BF9E4[2] * 2, D_801BF9E4[2] * 2, 255, 240, 0, interfaceCtx->cDownAlpha); // C-Right Button Color & Texture OVERLAY_DISP = Gfx_DrawRect_DropShadow(OVERLAY_DISP, D_801BF9D8[1], D_801BF9E0[1], D_801BFAF8[1], D_801BFAF8[1], - D_801BF9E8[1] * 2, D_801BF9E8[1] * 2, 0xFF, 0xF0, 0, interfaceCtx->cRightAlpha); + D_801BF9E4[3] * 2, D_801BF9E4[3] * 2, 255, 240, 0, interfaceCtx->cRightAlpha); if ((pauseCtx->state < 8) || (pauseCtx->state >= 19)) { if ((play->pauseCtx.state != 0) || (play->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { @@ -4043,7 +4037,7 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { CLOSE_DISPS(play->state.gfxCtx); } -void func_80118084(PlayState* play) { +void Interface_DrawBButtonIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); @@ -4124,7 +4118,10 @@ void func_80118084(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void func_80118890(PlayState* play) { +/** + * Draws the icons and ammo for each of the C buttons + */ +void Interface_DrawCButtonIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; OPEN_DISPS(play->state.gfxCtx); @@ -4171,7 +4168,7 @@ void func_80118890(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void func_80118BA4(PlayState* play) { +void Interface_DrawAButton(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 aAlpha; @@ -4185,7 +4182,7 @@ void func_80118BA4(PlayState* play) { func_8012C8D4(play->state.gfxCtx); - Interface_SetView1(play, XREG(31) + 0x19, XREG(31) + 0x46, 192, 237); + Interface_SetPerspectiveView(play, 25 + R_A_BTN_Y_OFFSET, 70 + R_A_BTN_Y_OFFSET, 192, 237); gSPClearGeometryMode(OVERLAY_DISP++, G_CULL_BOTH); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); @@ -4193,8 +4190,9 @@ void func_80118BA4(PlayState* play) { Matrix_Translate(0.0f, 0.0f, -38.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - Matrix_RotateXFApply(interfaceCtx->unk_218 / 10000.0f); + Matrix_RotateXFApply(interfaceCtx->aButtonRoll / 10000.0f); + // Draw A button Shadow gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPPipeSync(OVERLAY_DISP++); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[4], 4, 0); @@ -4202,14 +4200,16 @@ void func_80118BA4(PlayState* play) { OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gButtonBackgroundTex, 32, 32, 0); + // Draw A Button Colored gDPPipeSync(OVERLAY_DISP++); - Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); + Interface_SetPerspectiveView(play, 23 + R_A_BTN_Y_OFFSET, 68 + R_A_BTN_Y_OFFSET, 190, 235); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[0], 4, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 200, 255, interfaceCtx->aAlpha); gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + // Draw A Button Do-Action gDPPipeSync(OVERLAY_DISP++); - Interface_SetView1(play, XREG(31) + 0x17, XREG(31) + 0x44, 190, 235); + Interface_SetPerspectiveView(play, 23 + R_A_BTN_Y_OFFSET, 68 + R_A_BTN_Y_OFFSET, 190, 235); gSPSetGeometryMode(OVERLAY_DISP++, G_CULL_BACK); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); @@ -4218,12 +4218,12 @@ void func_80118BA4(PlayState* play) { Matrix_Translate(0.0f, 0.0f, D_801BF9CC[gSaveContext.options.language] / 10.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - Matrix_RotateXFApply(interfaceCtx->unk_218 / 10000.0f); + Matrix_RotateXFApply(interfaceCtx->aButtonRoll / 10000.0f); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[8], 4, 0); // Draw Action Label - if (((interfaceCtx->unk_210 < 2) || (interfaceCtx->unk_210 == 3))) { + if (((interfaceCtx->aButtonState <= A_BTN_STATE_1) || (interfaceCtx->aButtonState == A_BTN_STATE_3))) { OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, interfaceCtx->doActionSegment, 3, DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0); } else { @@ -4239,7 +4239,7 @@ s16 D_801BFB14[] = { 255, 100, 255, 0 }; // magicArrowEffectsR s16 D_801BFB1C[] = { 0, 100, 255, 0 }; // magicArrowEffectsG s16 D_801BFB24[] = { 0, 255, 100, 0 }; // magicArrowEffectsB -void func_80119030(PlayState* play) { +void Interface_DrawPauseMenuEquippingIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; PauseContext* pauseCtx = &play->pauseCtx; s16 temp; @@ -4248,7 +4248,7 @@ void func_80119030(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); - Interface_SetView2(interfaceCtx); + Interface_SetOrthoView(interfaceCtx); if (pauseCtx->state == 6) { if ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF)) { @@ -4309,19 +4309,17 @@ void func_80119030(PlayState* play) { */ #ifdef NON_MATCHING void Interface_DrawClock(PlayState* play) { - static s16 D_801BFB2C = 255; // clockAlpha - static s16 D_801BFB30 = 0; // clockAlphaTimer1 - static s16 D_801BFB34 = 0; // clockAlphaTimer2 - // clockHours - static u16 D_801BFB38[] = { + static s16 sThreeDayClockAlpha = 255; + static s16 D_801BFB30 = 0; // clockAlphaTimer1 + static s16 D_801BFB34 = 0; // clockAlphaTimer2 + static u16 sThreeDayClockHours[] = { CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; - // threeDayTimerHourTexs - static TexturePtr D_801BFB6C[] = { + static TexturePtr sThreeDayClockHourTextures[] = { gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, @@ -4347,8 +4345,7 @@ void Interface_DrawClock(PlayState* play) { static s16 D_801BFC08[] = { 100, 0 }; // finalHoursClockFrameEnvRedTargets static s16 D_801BFC0C[] = { 30, 0 }; // finalHoursClockFrameEnvGreenTargets static s16 D_801BFC10[] = { 100, 0 }; // finalHoursClockFrameEnvBlueTargets - // finalHoursCounterDigitTex - static TexturePtr D_801BFC14[] = { + static TexturePtr sFinalHoursDigitTextures[] = { gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, @@ -4377,7 +4374,7 @@ void Interface_DrawClock(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - if (REG(15) != 0) { + if (R_TIME_SPEED != 0) { if ((msgCtx->msgMode == 0) || ((play->actorCtx.flags & ACTORCTX_FLAG_1) && !Play_InCsMode(play)) || (msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || (gSaveContext.gameMode == 3)) { @@ -4389,33 +4386,33 @@ void Interface_DrawClock(PlayState* play) { */ if (((void)0, gSaveContext.hudVisibility) == HUD_VISIBILITY_ALL) { if (func_801234D4(play) != 0) { - D_801BFB2C = 80; + sThreeDayClockAlpha = 80; D_801BFB30 = 5; D_801BFB34 = 20; } else if (D_801BFB34 != 0) { D_801BFB34--; } else if (D_801BFB30 != 0) { - colorStep = ABS_ALT(D_801BFB2C - 255) / D_801BFB30; - D_801BFB2C += colorStep; + colorStep = ABS_ALT(sThreeDayClockAlpha - 255) / D_801BFB30; + sThreeDayClockAlpha += colorStep; - if (D_801BFB2C >= 255) { - D_801BFB2C = 255; + if (sThreeDayClockAlpha >= 255) { + sThreeDayClockAlpha = 255; D_801BFB30 = 0; } } else { if (play->actorCtx.flags & ACTORCTX_FLAG_1) { - D_801BFB2C = 255; + sThreeDayClockAlpha = 255; } else { - D_801BFB2C = interfaceCtx->bAlpha; + sThreeDayClockAlpha = interfaceCtx->bAlpha; } D_801BFB34 = 0; D_801BFB30 = 0; } } else { if (play->actorCtx.flags & ACTORCTX_FLAG_1) { - D_801BFB2C = 255; + sThreeDayClockAlpha = 255; } else { - D_801BFB2C = interfaceCtx->bAlpha; + sThreeDayClockAlpha = interfaceCtx->bAlpha; } D_801BFB34 = 0; D_801BFB30 = 0; @@ -4430,7 +4427,7 @@ void Interface_DrawClock(PlayState* play) { */ gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, sThreeDayClockAlpha); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -4441,7 +4438,7 @@ void Interface_DrawClock(PlayState* play) { * Draw Clock's Border */ gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, sThreeDayClockAlpha); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -4524,12 +4521,13 @@ void Interface_DrawClock(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, + sThreeDayClockAlpha); gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); } else { // Clock diamond is green for regular daySpeed gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, sThreeDayClockAlpha); } OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, @@ -4539,7 +4537,7 @@ void Interface_DrawClock(PlayState* play) { * Draw Three-Day Clock's Day-Number over Diamond */ gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); @@ -4570,8 +4568,8 @@ void Interface_DrawClock(PlayState* play) { gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - if (D_801BFB2C != 255) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BFB2C); + if (sThreeDayClockAlpha != 255) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, sThreeDayClockAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BF97C); } @@ -4601,7 +4599,7 @@ void Interface_DrawClock(PlayState* play) { // determines the current hour for (sp1C6 = 0; sp1C6 <= 24; sp1C6++) { - if (((void)0, gSaveContext.save.time) < D_801BFB38[sp1C6 + 1]) { + if (((void)0, gSaveContext.save.time) < sThreeDayClockHours[sp1C6 + 1]) { break; } } @@ -4615,7 +4613,7 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 110, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 110, sThreeDayClockAlpha); Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); @@ -4634,7 +4632,7 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 55, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 55, sThreeDayClockAlpha); Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); @@ -4666,14 +4664,15 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); - OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = + Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Sun gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); /** @@ -4690,14 +4689,15 @@ void Interface_DrawClock(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, D_801BFB6C[sp1C6], 4, 16, 11, 0); + OVERLAY_DISP = + Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); // Colours the Three-Day Clocks's Hour Digit Above the Moon gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, D_801BFB2C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); // Unknown @@ -4757,7 +4757,7 @@ void Interface_DrawClock(PlayState* play) { } } - sp1E6 = D_801BFB2C; + sp1E6 = sThreeDayClockAlpha; if (sp1E6 != 0) { sp1E6 = 255; } @@ -4832,9 +4832,9 @@ void Interface_DrawClock(PlayState* play) { for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { index = D_801BFC40[sp1C6]; - OVERLAY_DISP = - Gfx_DrawTexRectI8(OVERLAY_DISP, D_801BFC14[finalHoursClockSlots[sp1C6]], 8, 8, - index, 205, 8, 8, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRectI8( + OVERLAY_DISP, sFinalHoursDigitTextures[finalHoursClockSlots[sp1C6]], 8, 8, + index, 205, 8, 8, 1 << 10, 1 << 10); } } } @@ -4846,17 +4846,17 @@ void Interface_DrawClock(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } #else -s16 D_801BFB2C = 255; +s16 sThreeDayClockAlpha = 255; s16 D_801BFB30 = 0; s16 D_801BFB34 = 0; -u16 D_801BFB38[] = { +u16 sThreeDayClockHours[] = { CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), CLOCK_TIME(10, 0), CLOCK_TIME(11, 0), CLOCK_TIME(12, 0), CLOCK_TIME(13, 0), CLOCK_TIME(14, 0), CLOCK_TIME(15, 0), CLOCK_TIME(16, 0), CLOCK_TIME(17, 0), CLOCK_TIME(18, 0), CLOCK_TIME(19, 0), CLOCK_TIME(20, 0), CLOCK_TIME(21, 0), CLOCK_TIME(22, 0), CLOCK_TIME(23, 0), CLOCK_TIME(24, 0) - 1, }; -TexturePtr D_801BFB6C[] = { +TexturePtr sThreeDayClockHourTextures[] = { gThreeDayClockHour12Tex, gThreeDayClockHour1Tex, gThreeDayClockHour2Tex, gThreeDayClockHour3Tex, gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, @@ -4882,7 +4882,7 @@ s16 D_801BFC04[] = { 255, 0 }; s16 D_801BFC08[] = { 100, 0 }; s16 D_801BFC0C[] = { 30, 0 }; s16 D_801BFC10[] = { 100, 0 }; -TexturePtr D_801BFC14[] = { +TexturePtr sFinalHoursDigitTextures[] = { gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, @@ -5032,10 +5032,10 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { } s16 D_801BFC6C[] = { - 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, + 78, 54, 29, 5, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, }; s16 D_801BFC7C[] = { - 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, + 180, 180, 180, 180, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, }; s16 sMinigamePerfectType2PrimColorTargets[2][3] = { { 255, 255, 255 }, @@ -5182,7 +5182,7 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { } s16 D_801BFC98[] = { - 0x004E, 0x0036, 0x001D, 0x0005, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, + 78, 54, 29, 5, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, }; u16 D_801BFCA8[] = { 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, @@ -5521,9 +5521,9 @@ void Interface_DrawTimers(PlayState* play) { if (interfaceCtx->magicAlpha != 255) { gSaveContext.timerY[sTimerId] = 22; } else if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[sTimerId] = 54; + gSaveContext.timerY[sTimerId] = 54; // two rows of hearts } else { - gSaveContext.timerY[sTimerId] = 46; + gSaveContext.timerY[sTimerId] = 46; // one row of hearts } if ((interfaceCtx->minigameState == MINIGAME_STATE_COUNTDOWN_GO) || @@ -5578,9 +5578,9 @@ void Interface_DrawTimers(PlayState* play) { } else { gSaveContext.timerX[sTimerId] = 26; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - gSaveContext.timerY[sTimerId] = 54; + gSaveContext.timerY[sTimerId] = 54; // two rows of hearts } else { - gSaveContext.timerY[sTimerId] = 46; + gSaveContext.timerY[sTimerId] = 46; // one row of hearts } } @@ -5939,12 +5939,12 @@ void Interface_UpdateBottleTimers(PlayState* play) { void Interface_DrawMinigameIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; - s16 sp42; - s16 sp40; - s16 sp3E; - s16 sp3C; - s16 phi_a0; - s16 phi_a1; + s16 i; + s16 numDigitsDrawn; + s16 rectX; + s16 rectY; + s16 width; + s16 height; OPEN_DISPS(play->state.gfxCtx); @@ -5952,25 +5952,25 @@ void Interface_DrawMinigameIcons(PlayState* play) { if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { // Carrots rendering if the action corresponds to riding a horse - if (interfaceCtx->unk_212 == 8) { + if (interfaceCtx->aButtonHorseDoAction == DO_ACTION_FASTER) { // Load Carrot Icon gDPLoadTextureBlock(OVERLAY_DISP++, gCarrotIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - sp3E = 110; - sp3C = (interfaceCtx->minigameState != MINIGAME_STATE_NONE) ? 200 : 56; + rectX = 110; + rectY = (interfaceCtx->minigameState != MINIGAME_STATE_NONE) ? 200 : 56; // Draw 6 carrots - for (sp42 = 1; sp42 < 7; sp42++, sp3E += 16) { + for (i = 1; i < 7; i++, rectX += 16) { // Carrot Color (based on availability) - if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < sp42)) { + if ((interfaceCtx->numHorseBoosts == 0) || (interfaceCtx->numHorseBoosts < i)) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 150, 255, interfaceCtx->aAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha); } - gSPTextureRectangle(OVERLAY_DISP++, sp3E << 2, sp3C << 2, (sp3E + 16) << 2, (sp3C + 16) << 2, + gSPTextureRectangle(OVERLAY_DISP++, rectX << 2, rectY << 2, (rectX + 16) << 2, (rectY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -5979,13 +5979,13 @@ void Interface_DrawMinigameIcons(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - phi_a0 = 0x18; - phi_a1 = 0x10; - sp3E = 0x14; + width = 24; + height = 16; + rectX = 20; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - sp3C = 0x4B; + rectY = 75; // two rows of hearts } else { - sp3C = 0x43; + rectY = 67; // one row of hearts } if (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) { @@ -6001,9 +6001,9 @@ void Interface_DrawMinigameIcons(PlayState* play) { G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } else if (play->sceneId == SCENE_30GYOSON) { - phi_a0 = 0x10; - phi_a1 = 0x1E; - sp3E = 0x18; + width = 16; + height = 30; + rectX = 24; gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 75, interfaceCtx->bAlpha); gDPSetEnvColor(OVERLAY_DISP++, 55, 55, 0, 255); gDPLoadTextureBlock(OVERLAY_DISP++, gFishermanMinigameTorchIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 30, 0, @@ -6017,31 +6017,31 @@ void Interface_DrawMinigameIcons(PlayState* play) { G_TX_NOLOD, G_TX_NOLOD); } - gSPTextureRectangle(OVERLAY_DISP++, (sp3E << 2), (sp3C << 2), ((sp3E + phi_a0) << 2), - ((sp3C + phi_a1) << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, (rectX << 2), (rectY << 2), ((rectX + width) << 2), + ((rectY + height) << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->bAlpha); gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); if (play->sceneId == SCENE_30GYOSON) { - sp3E += 0x14; + rectX += 20; if (gSaveContext.save.playerData.healthCapacity > 0xA0) { - sp3C = 0x57; + rectY = 87; // two rows of hearts } else { - sp3C = 0x4F; + rectY = 79; // one row of hearts } } else { - sp3E += 0x1A; + rectX += 26; } - for (sp42 = sp40 = 0; sp42 < 4; sp42++) { - if ((sMinigameScoreDigits[sp42] != 0) || (sp40 != 0) || (sp42 >= 3)) { - OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, - ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[sp42])), - 8, 0x10, sp3E, sp3C - 2, 9, 0xFA, 0x370, 0x370); - sp3E += 9; - sp40++; + for (i = 0, numDigitsDrawn = 0; i < 4; i++) { + if ((sMinigameScoreDigits[i] != 0) || (numDigitsDrawn != 0) || (i >= 3)) { + OVERLAY_DISP = + Gfx_DrawTexRectI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * sMinigameScoreDigits[i])), + 8, 0x10, rectX, rectY - 2, 9, 0xFA, 0x370, 0x370); + rectX += 9; + numDigitsDrawn++; } } @@ -6113,7 +6113,7 @@ void Interface_Draw(PlayState* play) { if (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) { Interface_SetVertices(play); - Interface_SetView2(interfaceCtx); + Interface_SetOrthoView(interfaceCtx); // Draw Grandma's Story if (interfaceCtx->storyDmaStatus == STORY_DMA_DONE) { @@ -6332,12 +6332,13 @@ void Interface_Draw(PlayState* play) { Interface_DrawItemButtons(play); if (player->transformation == ((void)0, gSaveContext.save.playerForm)) { - func_80118084(play); + Interface_DrawBButtonIcons(play); } + Interface_DrawCButtonIcons(play); - func_80118890(play); - func_80118BA4(play); - func_80119030(play); + Interface_DrawAButton(play); + + Interface_DrawPauseMenuEquippingIcons(play); // Draw either the minigame countdown or the three-day clock if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { @@ -6519,15 +6520,14 @@ void Interface_AllocStory(PlayState* play) { } void Interface_Update(PlayState* play) { - static u8 D_801BFD94 = 0; - static s16 D_801BFD98 = 0; - static s16 D_801BFD9C = 0; + static u8 sIsSunsPlayedAtDay = false; + static s16 sPrevTimeSpeed = 0; InterfaceContext* interfaceCtx = &play->interfaceCtx; MessageContext* msgCtx = &play->msgCtx; Player* player = GET_PLAYER(play); s16 dimmingAlpha; s16 risingAlpha; - u16 action; + u16 aButtonDoAction; // Update buttons if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { @@ -6645,6 +6645,7 @@ void Interface_Update(PlayState* play) { Map_Update(play); + // Update health if (gSaveContext.healthAccumulator != 0) { gSaveContext.healthAccumulator -= 4; gSaveContext.save.playerData.health += 4; @@ -6660,8 +6661,9 @@ void Interface_Update(PlayState* play) { } LifeMeter_UpdateSizeAndBeep(play); - sEnvTimerType = Player_GetEnvTimerType(play); + // Update Env Timer Part 1 + sEnvTimerType = Player_GetEnvTimerType(play); if (sEnvTimerType == PLAYER_ENV_TIMER_HOTROOM) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_GORON) { sEnvTimerType = PLAYER_ENV_TIMER_NONE; @@ -6675,7 +6677,7 @@ void Interface_Update(PlayState* play) { LifeMeter_UpdateColors(play); - // Update Rupees + // Update rupees if (gSaveContext.rupeeAccumulator != 0) { if (gSaveContext.rupeeAccumulator > 0) { if (gSaveContext.save.playerData.rupees < CUR_CAPACITY(UPG_WALLET)) { @@ -6705,6 +6707,7 @@ void Interface_Update(PlayState* play) { } } + // Update minigame perfect if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->isMinigamePerfect) { if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { @@ -6717,7 +6720,7 @@ void Interface_Update(PlayState* play) { } } - // Update Minigame State + // Update minigame State if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->minigameState) { // != MINIGAME_STATE_NONE switch (interfaceCtx->minigameState) { @@ -6768,13 +6771,13 @@ void Interface_Update(PlayState* play) { } } - // Update Do-Actions - switch (interfaceCtx->unk_210) { - case 1: - interfaceCtx->unk_218 += 10466.667f; - if (interfaceCtx->unk_218 >= 15700.0f) { - interfaceCtx->unk_218 = -15700.0f; - interfaceCtx->unk_210 = 2; + // Update A Button + switch (interfaceCtx->aButtonState) { + case A_BTN_STATE_1: + interfaceCtx->aButtonRoll += 10466.667f; + if (interfaceCtx->aButtonRoll >= 15700.0f) { + interfaceCtx->aButtonRoll = -15700.0f; + interfaceCtx->aButtonState = A_BTN_STATE_2; if ((msgCtx->msgMode != 0) && (msgCtx->unk12006 == 0x26)) { XREG(31) = -14; @@ -6784,47 +6787,50 @@ void Interface_Update(PlayState* play) { } break; - case 2: - interfaceCtx->unk_218 += 10466.667f; - if (interfaceCtx->unk_218 >= 0.0f) { - interfaceCtx->unk_218 = 0.0f; - interfaceCtx->unk_210 = 0; - interfaceCtx->unk_212 = interfaceCtx->unk_214; - action = interfaceCtx->unk_212; - if ((action == DO_ACTION_MAX) || (action == DO_ACTION_MAX + 1)) { - action = DO_ACTION_NONE; + case A_BTN_STATE_2: + interfaceCtx->aButtonRoll += 10466.667f; + if (interfaceCtx->aButtonRoll >= 0.0f) { + interfaceCtx->aButtonRoll = 0.0f; + interfaceCtx->aButtonState = A_BTN_STATE_0; + interfaceCtx->aButtonHorseDoAction = interfaceCtx->aButtonDoAction; + aButtonDoAction = interfaceCtx->aButtonHorseDoAction; + if ((aButtonDoAction == DO_ACTION_MAX) || (aButtonDoAction == DO_ACTION_MAX + 1)) { + aButtonDoAction = DO_ACTION_NONE; } - Interface_LoadActionLabel(&play->interfaceCtx, action, 0); + Interface_LoadAButtonDoActionLabel(&play->interfaceCtx, aButtonDoAction, 0); } break; - case 3: - interfaceCtx->unk_218 += 10466.667f; - if (interfaceCtx->unk_218 >= 15700.0f) { - interfaceCtx->unk_218 = -15700.0f; - interfaceCtx->unk_210 = 2; + case A_BTN_STATE_3: + interfaceCtx->aButtonRoll += 10466.667f; + if (interfaceCtx->aButtonRoll >= 15700.0f) { + interfaceCtx->aButtonRoll = -15700.0f; + interfaceCtx->aButtonState = A_BTN_STATE_2; } break; - case 4: - interfaceCtx->unk_218 += 10466.667f; - if (interfaceCtx->unk_218 >= 0.0f) { - interfaceCtx->unk_218 = 0.0f; - interfaceCtx->unk_210 = 0; - interfaceCtx->unk_212 = interfaceCtx->unk_214; - action = interfaceCtx->unk_212; - if ((action == DO_ACTION_MAX) || (action == DO_ACTION_MAX + 1)) { - action = DO_ACTION_NONE; + case A_BTN_STATE_4: + interfaceCtx->aButtonRoll += 10466.667f; + if (interfaceCtx->aButtonRoll >= 0.0f) { + interfaceCtx->aButtonRoll = 0.0f; + interfaceCtx->aButtonState = A_BTN_STATE_0; + interfaceCtx->aButtonHorseDoAction = interfaceCtx->aButtonDoAction; + aButtonDoAction = interfaceCtx->aButtonHorseDoAction; + if ((aButtonDoAction == DO_ACTION_MAX) || (aButtonDoAction == DO_ACTION_MAX + 1)) { + aButtonDoAction = DO_ACTION_NONE; } - Interface_LoadActionLabel(&play->interfaceCtx, action, 0); + Interface_LoadAButtonDoActionLabel(&play->interfaceCtx, aButtonDoAction, 0); } break; + + default: // A_BTN_STATE_0 + break; } // Update Magic if (!(player->stateFlags1 & PLAYER_STATE1_200)) { - if (XREG(4) == 1) { + if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_DOUBLE_METER) { // Upgrade to double magic if (!gSaveContext.save.playerData.isMagicAcquired) { gSaveContext.save.playerData.isMagicAcquired = true; @@ -6832,8 +6838,8 @@ void Interface_Update(PlayState* play) { gSaveContext.save.playerData.isDoubleMagicAcquired = true; gSaveContext.save.playerData.magic = MAGIC_DOUBLE_METER; gSaveContext.save.playerData.magicLevel = 0; - XREG(4) = 0; - } else if (XREG(4) == -1) { + R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION; + } else if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_NORMAL_METER) { // Upgrade to normal magic if (!gSaveContext.save.playerData.isMagicAcquired) { gSaveContext.save.playerData.isMagicAcquired = true; @@ -6841,7 +6847,7 @@ void Interface_Update(PlayState* play) { gSaveContext.save.playerData.isDoubleMagicAcquired = false; gSaveContext.save.playerData.magic = MAGIC_NORMAL_METER; gSaveContext.save.playerData.magicLevel = 0; - XREG(4) = 0; + R_MAGIC_DBG_SET_UPGRADE = MAGIC_DBG_SET_UPGRADE_NO_ACTION; } if ((gSaveContext.save.playerData.isMagicAcquired) && (gSaveContext.save.playerData.magicLevel == 0)) { @@ -6857,7 +6863,7 @@ void Interface_Update(PlayState* play) { Magic_UpdateAddRequest(); } - // Update Env Timer + // Update Env Timer Part 2 if (gSaveContext.timerStates[TIMER_ID_ENV] == TIMER_STATE_OFF) { if ((sEnvTimerType == PLAYER_ENV_TIMER_HOTROOM) || (sEnvTimerType == PLAYER_ENV_TIMER_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { @@ -6877,7 +6883,7 @@ void Interface_Update(PlayState* play) { gSaveContext.timerStates[TIMER_ID_ENV] = TIMER_STATE_OFF; } - // Update minigame + // Update Minigame if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { gSaveContext.minigameScore += interfaceCtx->minigamePoints; gSaveContext.minigameHiddenScore += interfaceCtx->minigameHiddenPoints; @@ -6916,7 +6922,7 @@ void Interface_Update(PlayState* play) { } } - // Update sun song + // Update Sun Song if (gSaveContext.sunsSongState != SUNSSONG_INACTIVE) { // exit out of ocarina mode after suns song finishes playing if ((msgCtx->ocarinaAction != 0x39) && (gSaveContext.sunsSongState == SUNSSONG_START)) { @@ -6924,26 +6930,32 @@ void Interface_Update(PlayState* play) { } // handle suns song in areas where time moves - if (play->envCtx.timeIncrement != 0) { + if (play->envCtx.sceneTimeSpeed != 0) { if (gSaveContext.sunsSongState != SUNSSONG_SPEED_TIME) { - D_801BFD94 = false; + sIsSunsPlayedAtDay = false; if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { - D_801BFD94 = true; + sIsSunsPlayedAtDay = true; } gSaveContext.sunsSongState = SUNSSONG_SPEED_TIME; - D_801BFD98 = REG(15); - REG(15) = 400; - } else if (!D_801BFD94) { + sPrevTimeSpeed = R_TIME_SPEED; + R_TIME_SPEED = 400; + } else if (!sIsSunsPlayedAtDay) { + // Nighttime if ((gSaveContext.save.time >= CLOCK_TIME(6, 0)) && (gSaveContext.save.time <= CLOCK_TIME(18, 0))) { + // Daytime has been reached. End suns song effect gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - REG(15) = D_801BFD98; + R_TIME_SPEED = sPrevTimeSpeed; + play->msgCtx.ocarinaMode = 4; + } + } else { + // Daytime + if (gSaveContext.save.time > CLOCK_TIME(18, 0)) { + // Nighttime has been reached. End suns song effect + gSaveContext.sunsSongState = SUNSSONG_INACTIVE; + R_TIME_SPEED = sPrevTimeSpeed; play->msgCtx.ocarinaMode = 4; } - } else if (gSaveContext.save.time > CLOCK_TIME(18, 0)) { - gSaveContext.sunsSongState = SUNSSONG_INACTIVE; - REG(15) = D_801BFD98; - play->msgCtx.ocarinaMode = 4; } } else { gSaveContext.sunsSongState = SUNSSONG_SPECIAL; @@ -7007,7 +7019,7 @@ void Interface_Init(PlayState* play) { View_Init(&interfaceCtx->view, play->state.gfxCtx); interfaceCtx->magicConsumptionTimer = 16; - interfaceCtx->unkTimer = 200; + interfaceCtx->healthTimer = 200; parameterStaticSize = SEGMENT_ROM_SIZE(parameter_static); interfaceCtx->parameterSegment = THA_AllocEndAlign16(&play->state.heap, parameterStaticSize); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 7b88d4520..2c9edb6aa 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -380,25 +380,25 @@ void Scene_HeaderCmdTimeSettings(PlayState* play, SceneCmd* cmd) { (u16)(((cmd->timeSettings.hour + (cmd->timeSettings.min / 60.0f)) * 60.0f) / 0.021972656f); } - if (cmd->timeSettings.unk6 != 0xFF) { - play->envCtx.timeIncrement = cmd->timeSettings.unk6; + if (cmd->timeSettings.timeSpeed != 0xFF) { + play->envCtx.sceneTimeSpeed = cmd->timeSettings.timeSpeed; } else { - play->envCtx.timeIncrement = 0; + play->envCtx.sceneTimeSpeed = 0; } - if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.timeIncrement != 0)) { - play->envCtx.timeIncrement = 5; + if ((gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) && (play->envCtx.sceneTimeSpeed != 0)) { + play->envCtx.sceneTimeSpeed = 5; } if (gSaveContext.sunsSongState == SUNSSONG_INACTIVE) { - REG(15) = play->envCtx.timeIncrement; + R_TIME_SPEED = play->envCtx.sceneTimeSpeed; } play->envCtx.unk_4 = -(Math_SinS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f; play->envCtx.unk_8 = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 120.0f) * 25.0f; play->envCtx.unk_C = (Math_CosS(((void)0, gSaveContext.save.time) - 0x8000) * 20.0f) * 25.0f; - if ((play->envCtx.timeIncrement == 0) && (gSaveContext.save.cutscene < 0xFFF0)) { + if ((play->envCtx.sceneTimeSpeed == 0) && (gSaveContext.save.cutscene < 0xFFF0)) { gSaveContext.skyboxTime = gSaveContext.save.time; if ((gSaveContext.skyboxTime >= CLOCK_TIME(4, 0)) && (gSaveContext.skyboxTime < CLOCK_TIME(6, 30))) { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 2be56dda3..eb387b372 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1816,8 +1816,8 @@ void DmStk_Update(Actor* thisx, PlayState* play) { (play->msgCtx.currentTextId == 0x5E6) && !FrameAdvance_IsEnabled(&play->state) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (ActorCutscene_GetCurrentIndex() == -1) && (play->csCtx.state == 0)) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); - if (REG(15) != 0) { + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; + if (R_TIME_SPEED != 0) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } } diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c index 8792f8038..c97438dee 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -748,7 +748,7 @@ void func_80BDF578(EnAl* this, PlayState* play) { void func_80BDF5E8(EnAl* this, PlayState* play) { ScheduleOutput sp20; - this->unk_4E0 = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->unk_4E0 = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BDFC70, &sp20) || ((this->unk_35C != sp20.result) && !func_80BDF390(this, play, &sp20))) { this->actor.shape.shadowDraw = NULL; diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 575cf2d35..9658aed3c 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -100,7 +100,7 @@ void func_809C10B0(EnAob01* this, s32 arg1) { } void func_809C1124(void) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index dcbbee65d..9403b4c4c 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -654,7 +654,7 @@ void EnBaba_GaveBlastMask(EnBaba* this, PlayState* play) { void EnBaba_FollowSchedule(EnBaba* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, sSchedule, &scheduleOutput) || ((this->scheduleResult != scheduleOutput.result) && diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index baa65bfa3..09a9ea49d 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -846,7 +846,7 @@ void EnFishing_Init(Actor* thisx, PlayState* play2) { D_8090CD04 = 20; play->specialEffects = sFishingEffects; - REG(15) = 1; // gTimeIncrement in OoT + R_TIME_SPEED = 1; D_809171FC = 0; D_809171F6 = 10; diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index c85815ee7..bbb88044a 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -1582,7 +1582,7 @@ void func_80950C24(EnGm* this, PlayState* play) { void func_80950CDC(EnGm* this, PlayState* play) { ScheduleOutput sp20; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80951820, &sp20) || ((this->unk_258 != sp20.result) && !func_80950280(this, play, &sp20))) { diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index e58ea297e..49c4fd0a9 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -3993,9 +3993,9 @@ void func_80886C00(EnHorse* this, PlayState* play) { if (((this->action == ENHORSE_ACTION_MOUNTED_WALK) || (this->action == ENHORSE_ACTION_MOUNTED_TROT) || (this->action == ENHORSE_ACTION_MOUNTED_GALLOP)) && - (CHECK_BTN_ALL(input->press.button, BTN_A) || (func_801A5100() == 5)) && (play->interfaceCtx.unk_212 == 8) && - !(this->stateFlags & ENHORSE_BOOST) && !(this->stateFlags & ENHORSE_FLAG_8) && - !(this->stateFlags & ENHORSE_FLAG_9)) { + (CHECK_BTN_ALL(input->press.button, BTN_A) || (func_801A5100() == 5)) && + (play->interfaceCtx.aButtonHorseDoAction == DO_ACTION_FASTER) && !(this->stateFlags & ENHORSE_BOOST) && + !(this->stateFlags & ENHORSE_FLAG_8) && !(this->stateFlags & ENHORSE_FLAG_9)) { if (this->numBoosts > 0) { Rumble_Request(0.0f, 180, 20, 100); this->stateFlags |= ENHORSE_BOOST; diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c index bc1ca559b..83319c2d4 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -876,7 +876,7 @@ void func_80BF2A50(EnIg* this, PlayState* play) { void func_80BF2AF8(EnIg* this, PlayState* play) { ScheduleOutput sp20; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BF3260, &sp20) || ((this->scheduleResult != sp20.result) && !func_80BF2368(this, play, &sp20))) { diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index 2050c7316..b18b4203f 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -3015,7 +3015,7 @@ void func_80B49C38(EnInvadepoh* this, PlayState* play) { if (this->unk378 == 0) { temp_v0_2 = func_800FE620(play); if (temp_v0_2 > 0) { - temp_v0_2 = (REG(15) * -16.0f / temp_v0_2) - 0.5f; + temp_v0_2 = (R_TIME_SPEED * -16.0f / temp_v0_2) - 0.5f; this->unk378 = func_80B45550(this, play, SQ(80.0f), temp_v0_2); } } @@ -3967,7 +3967,7 @@ void func_80B4C730(EnInvadepoh* this, PlayState* play) { if (this->unk378 == 0) { temp_v0_2 = func_800FE620(play); if (temp_v0_2 > 0) { - temp_v0_2 = (REG(15) * -23.0f / temp_v0_2) - 0.5f; + temp_v0_2 = (R_TIME_SPEED * -23.0f / temp_v0_2) - 0.5f; this->unk378 = func_80B45550(this, play, SQ(80.0f), temp_v0_2); } } diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c index f615c05fe..ef662bb68 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -301,7 +301,7 @@ void func_80BC2150(EnJa* this, PlayState* play) { void func_80BC21A8(EnJa* this, PlayState* play) { ScheduleOutput sp18; - this->unk_35C = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->unk_35C = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BC35F0, &sp18) || ((this->unk_1D8.unk_00 != sp18.result) && !func_80BC20D0(this, play, &sp18))) { this->actor.shape.shadowDraw = NULL; diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 1f5aebe64..0da6a331f 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -1991,7 +1991,7 @@ void func_80AFA4D0(EnPm* this, PlayState* play) { u16 sp3C = 0; ScheduleOutput sp2C; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (this->unk_38C != 0) { time = gSaveContext.save.time - D_801F4E78; sp3C = gSaveContext.save.time; diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index 4f3882aa7..12459bfa4 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -231,7 +231,7 @@ void EnSuttari_TriggerTransition(PlayState* play, u16 entrance) { } void EnSuttari_UpdateTime(void) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } @@ -1104,7 +1104,7 @@ void func_80BACE4C(EnSuttari* this, PlayState* play) { void func_80BACEE0(EnSuttari* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1128,7 +1128,7 @@ void func_80BACEE0(EnSuttari* this, PlayState* play) { void func_80BAD004(EnSuttari* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1255,7 +1255,7 @@ void func_80BAD5F8(EnSuttari* this, PlayState* play) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1293,7 +1293,7 @@ void func_80BAD7F8(EnSuttari* this, PlayState* play) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c index ffa557746..fb4370f69 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -474,7 +474,7 @@ void func_80BE1224(EnTab* this, PlayState* play) { void func_80BE127C(EnTab* this, PlayState* play) { ScheduleOutput sp18; - this->unk_31A = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->unk_31A = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); if (!Schedule_RunScript(play, D_80BE18D0, &sp18) || ((this->unk_1D8 != sp18.result) && !func_80BE1060(this, play, &sp18))) { diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 60c4b4dd0..b7c17a1c8 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -323,8 +323,8 @@ void func_80AECB6C(EnTk* this, PlayState* play) { return; } - if (REG(15) != 0.0f) { - this->skelAnime.playSpeed = (f32)func_800FE620(play) / REG(15); + if (R_TIME_SPEED != 0.0f) { + this->skelAnime.playSpeed = (f32)func_800FE620(play) / R_TIME_SPEED; } else { this->skelAnime.playSpeed = 0.0f; } @@ -337,14 +337,14 @@ void func_80AECB6C(EnTk* this, PlayState* play) { func_80AEC658(&this->skelAnime, this->unk_320, 1.0f, &sp48, &sp44); } - temp2 = REG(15) * sp44; + temp2 = R_TIME_SPEED * sp44; temp_f0 = temp2; - this->unk_2DC += (REG(15) * sp44) - temp2; + this->unk_2DC += (R_TIME_SPEED * sp44) - temp2; temp3 = this->unk_2DC; this->timePathTimeSpeed = temp2 + temp3; this->unk_2DC -= temp3; - this->unk_2E0 += REG(15); + this->unk_2E0 += R_TIME_SPEED; if (Schedule_RunScript(play, D_80AEF800, &sp34)) { if ((this->unk_3CC != sp34.result) && !func_80AED354(this, play, &sp34)) { diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index ec6f12aeb..dc81d94ea 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -486,8 +486,8 @@ void EnWeatherTag_Update(Actor* thisx, PlayState* play) { (play->transitionTrigger == TRANS_TRIGGER_OFF) && (ActorCutscene_GetCurrentIndex() == -1) && (play->csCtx.state == 0)) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)REG(15); - if (REG(15) != 0) { + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; + if (R_TIME_SPEED != 0) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); } } diff --git a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c index 7eaf78c20..7dabab2e7 100644 --- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c +++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c @@ -80,7 +80,7 @@ void OceffSpot_End(OceffSpot* this, PlayState* play) { this->unk16C -= 0.05f; } else { Actor_MarkForDeath(&this->actor); - if ((REG(15) != 0x190) && (play->msgCtx.unk12046 == 0)) { + if ((R_TIME_SPEED != 400) && (play->msgCtx.unk12046 == 0)) { if ((play->msgCtx.ocarinaAction != 0x39) || (play->msgCtx.ocarinaMode != 0xA)) { gSaveContext.sunsSongState = SUNSSONG_START; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index cf2f9676b..e7629ae5c 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2124,12 +2124,12 @@ 0x80114FD0:("Inventory_UpdateBottleItem",), 0x80115130:("Inventory_ConsumeFairy",), 0x801152B8:("Inventory_UpdateItem",), - 0x801153C8:("func_801153C8",), - 0x80115428:("Interface_LoadActionLabel",), + 0x801153C8:("Interface_MemSetZeroed",), + 0x80115428:("Interface_LoadAButtonDoActionLabel",), 0x8011552C:("Interface_SetAButtonDoAction",), 0x801155B4:("Interface_SetBButtonDoAction",), 0x80115764:("Interface_SetTatlCall",), - 0x80115844:("func_80115844",), + 0x80115844:("Interface_LoadBButtonDoActionLabel",), 0x80115908:("Health_ChangeBy",), 0x801159C0:("Health_GiveHearts",), 0x801159EC:("Rupees_ChangeBy",), @@ -2141,15 +2141,15 @@ 0x80116114:("Magic_FlashMeterBorder",), 0x80116348:("Magic_Update",), 0x80116918:("Magic_DrawMeter",), - 0x80116FD8:("Interface_SetView1",), - 0x801170B8:("Interface_SetView2",), + 0x80116FD8:("Interface_SetPerspectiveView",), + 0x801170B8:("Interface_SetOrthoView",), 0x80117100:("Interface_DrawItemButtons",), 0x80117A20:("Interface_DrawItemIconTexture",), 0x80117BD0:("Interface_DrawAmmoCount",), - 0x80118084:("func_80118084",), - 0x80118890:("func_80118890",), - 0x80118BA4:("func_80118BA4",), - 0x80119030:("func_80119030",), + 0x80118084:("Interface_DrawBButtonIcons",), + 0x80118890:("Interface_DrawCButtonIcons",), + 0x80118BA4:("Interface_DrawAButton",), + 0x80119030:("Interface_DrawPauseMenuEquippingIcons",), 0x80119610:("Interface_DrawClock",), 0x8011B4E0:("Interface_SetMinigamePerfect",), 0x8011B5C0:("Interface_UpdateMinigamePerfectType1",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index c48de3cc9..a246b56c4 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1127,11 +1127,11 @@ 0x801BFB14:("D_801BFB14","UNK_TYPE1","",0x1), 0x801BFB1C:("D_801BFB1C","UNK_TYPE1","",0x1), 0x801BFB24:("D_801BFB24","UNK_TYPE1","",0x1), - 0x801BFB2C:("D_801BFB2C","UNK_TYPE2","",0x2), + 0x801BFB2C:("sThreeDayClockAlpha","UNK_TYPE2","",0x2), 0x801BFB30:("D_801BFB30","UNK_TYPE2","",0x2), 0x801BFB34:("D_801BFB34","UNK_TYPE2","",0x2), - 0x801BFB38:("D_801BFB38","UNK_TYPE1","",0x1), - 0x801BFB6C:("D_801BFB6C","UNK_TYPE1","",0x1), + 0x801BFB38:("sThreeDayClockHours","UNK_TYPE1","",0x1), + 0x801BFB6C:("sThreeDayClockHourTextures","UNK_TYPE1","",0x1), 0x801BFBCC:("D_801BFBCC","UNK_TYPE2","",0x2), 0x801BFBD0:("D_801BFBD0","UNK_TYPE2","",0x2), 0x801BFBD4:("D_801BFBD4","UNK_TYPE2","",0x2), @@ -1150,7 +1150,7 @@ 0x801BFC08:("D_801BFC08","UNK_TYPE1","",0x1), 0x801BFC0C:("D_801BFC0C","UNK_TYPE1","",0x1), 0x801BFC10:("D_801BFC10","UNK_TYPE1","",0x1), - 0x801BFC14:("D_801BFC14","UNK_TYPE1","",0x1), + 0x801BFC14:("sFinalHoursDigitTextures","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), 0x801BFC50:("D_801BFC50","UNK_TYPE2","",0x2), 0x801BFC60:("sMinigamePerfectType1PrimColorTargets","s16","[6]",0xC), @@ -1175,8 +1175,8 @@ 0x801BFD6C:("sMinigameCountdownPrimColors","UNK_TYPE2","",0x2), 0x801BFD84:("gStoryTextures","UNK_TYPE1","",0x1), 0x801BFD8C:("gStoryTLUTs","UNK_TYPE1","",0x1), - 0x801BFD94:("D_801BFD94","UNK_TYPE4","",0x4), - 0x801BFD98:("D_801BFD98","UNK_TYPE4","[2]",0x8), + 0x801BFD94:("sIsSunsPlayedAtDay","UNK_TYPE4","",0x4), + 0x801BFD98:("sPrevTimeSpeed","UNK_TYPE4","[2]",0x8), 0x801BFDA0:("sMaskObjectIds","s16","[24]",0x30), 0x801BFDD0:("D_801BFDD0","UNK_TYPE1","",0x1), 0x801BFDE8:("sMaskItemIds","UNK_TYPE1","",0x1), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index b807a0e24..7426fac19 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1638,12 +1638,12 @@ asm/non_matchings/code/z_parameter/Inventory_HasItemInBottle.s,Inventory_HasItem asm/non_matchings/code/z_parameter/Inventory_UpdateBottleItem.s,Inventory_UpdateBottleItem,0x80114FD0,0x58 asm/non_matchings/code/z_parameter/Inventory_ConsumeFairy.s,Inventory_ConsumeFairy,0x80115130,0x62 asm/non_matchings/code/z_parameter/Inventory_UpdateItem.s,Inventory_UpdateItem,0x801152B8,0x44 -asm/non_matchings/code/z_parameter/func_801153C8.s,func_801153C8,0x801153C8,0x18 -asm/non_matchings/code/z_parameter/Interface_LoadActionLabel.s,Interface_LoadActionLabel,0x80115428,0x41 +asm/non_matchings/code/z_parameter/Interface_MemSetZeroed.s,Interface_MemSetZeroed,0x801153C8,0x18 +asm/non_matchings/code/z_parameter/Interface_LoadAButtonDoActionLabel.s,Interface_LoadAButtonDoActionLabel,0x80115428,0x41 asm/non_matchings/code/z_parameter/Interface_SetAButtonDoAction.s,Interface_SetAButtonDoAction,0x8011552C,0x22 asm/non_matchings/code/z_parameter/Interface_SetBButtonDoAction.s,Interface_SetBButtonDoAction,0x801155B4,0x6C asm/non_matchings/code/z_parameter/Interface_SetTatlCall.s,Interface_SetTatlCall,0x80115764,0x38 -asm/non_matchings/code/z_parameter/func_80115844.s,func_80115844,0x80115844,0x31 +asm/non_matchings/code/z_parameter/Interface_LoadBButtonDoActionLabel.s,Interface_LoadBButtonDoActionLabel,0x80115844,0x31 asm/non_matchings/code/z_parameter/Health_ChangeBy.s,Health_ChangeBy,0x80115908,0x2E asm/non_matchings/code/z_parameter/Health_GiveHearts.s,Health_GiveHearts,0x801159C0,0xB asm/non_matchings/code/z_parameter/Rupees_ChangeBy.s,Rupees_ChangeBy,0x801159EC,0xA @@ -1655,15 +1655,15 @@ asm/non_matchings/code/z_parameter/Magic_UpdateAddRequest.s,Magic_UpdateAddReque asm/non_matchings/code/z_parameter/Magic_FlashMeterBorder.s,Magic_FlashMeterBorder,0x80116114,0x8D asm/non_matchings/code/z_parameter/Magic_Update.s,Magic_Update,0x80116348,0x174 asm/non_matchings/code/z_parameter/Magic_DrawMeter.s,Magic_DrawMeter,0x80116918,0x1B0 -asm/non_matchings/code/z_parameter/Interface_SetView1.s,Interface_SetView1,0x80116FD8,0x38 -asm/non_matchings/code/z_parameter/Interface_SetView2.s,Interface_SetView2,0x801170B8,0x12 +asm/non_matchings/code/z_parameter/Interface_SetPerspectiveView.s,Interface_SetPerspectiveView,0x80116FD8,0x38 +asm/non_matchings/code/z_parameter/Interface_SetOrthoView.s,Interface_SetOrthoView,0x801170B8,0x12 asm/non_matchings/code/z_parameter/Interface_DrawItemButtons.s,Interface_DrawItemButtons,0x80117100,0x248 asm/non_matchings/code/z_parameter/Interface_DrawItemIconTexture.s,Interface_DrawItemIconTexture,0x80117A20,0x6C asm/non_matchings/code/z_parameter/Interface_DrawAmmoCount.s,Interface_DrawAmmoCount,0x80117BD0,0x12D -asm/non_matchings/code/z_parameter/func_80118084.s,func_80118084,0x80118084,0x203 -asm/non_matchings/code/z_parameter/func_80118890.s,func_80118890,0x80118890,0xC5 -asm/non_matchings/code/z_parameter/func_80118BA4.s,func_80118BA4,0x80118BA4,0x123 -asm/non_matchings/code/z_parameter/func_80119030.s,func_80119030,0x80119030,0x178 +asm/non_matchings/code/z_parameter/Interface_DrawBButtonIcons.s,Interface_DrawBButtonIcons,0x80118084,0x203 +asm/non_matchings/code/z_parameter/Interface_DrawCButtonIcons.s,Interface_DrawCButtonIcons,0x80118890,0xC5 +asm/non_matchings/code/z_parameter/Interface_DrawAButton.s,Interface_DrawAButton,0x80118BA4,0x123 +asm/non_matchings/code/z_parameter/Interface_DrawPauseMenuEquippingIcons.s,Interface_DrawPauseMenuEquippingIcons,0x80119030,0x178 asm/non_matchings/code/z_parameter/Interface_DrawClock.s,Interface_DrawClock,0x80119610,0x7B4 asm/non_matchings/code/z_parameter/Interface_SetMinigamePerfect.s,Interface_SetMinigamePerfect,0x8011B4E0,0x38 asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType1.s,Interface_UpdateMinigamePerfectType1,0x8011B5C0,0x108 From f85afc978f48f9a31253dd6be9c7817f02b1826c Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 3 Oct 2022 09:37:48 -0400 Subject: [PATCH 151/160] more docs --- include/functions.h | 4 +- include/variables.h | 8 +- src/code/z_parameter.c | 106 +++++++++--------- .../ovl_kaleido_scope/z_kaleido_item.c | 6 +- tools/disasm/variables.txt | 8 +- 5 files changed, 64 insertions(+), 68 deletions(-) diff --git a/include/functions.h b/include/functions.h index 9e9c85838..7aa608b45 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1493,7 +1493,7 @@ void func_800FD928(s32 param_1); // void func_800FE3E0(void); void func_800FE484(void); void func_800FE498(void); -// void func_800FE4A8(void); +u8 func_800FE4A8(void); u32 func_800FE4B8(PlayState* play); // void func_800FE590(void); // void func_800FE5D0(void); @@ -2428,7 +2428,7 @@ void func_80165690(void); // void func_80166060(void); Gfx* func_801660B8(PlayState* play, Gfx* gfx); void Play_Destroy(GameState* thisx); -// void func_801663C4(void); +void func_801663C4(u8* arg0, u8* arg1, u32 arg2); void func_80166644(u8* arg0, u8* arg1, s32 arg2); // void func_801668B4(void); void func_80166968(PlayState* play, Camera* camera); diff --git a/include/variables.h b/include/variables.h index c723e92c0..c707cd1ee 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1096,9 +1096,9 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFAFC; // extern UNK_TYPE1 D_801BFB04; // extern UNK_TYPE1 D_801BFB0C; -// extern UNK_TYPE1 D_801BFB14; -// extern UNK_TYPE1 D_801BFB1C; -// extern UNK_TYPE1 D_801BFB24; +// extern UNK_TYPE1 sMagicArrowEffectsR; +// extern UNK_TYPE1 sMagicArrowEffectsG; +// extern UNK_TYPE1 sMagicArrowEffectsB; // extern UNK_TYPE2 sThreeDayClockAlpha; // extern UNK_TYPE2 D_801BFB30; // extern UNK_TYPE2 D_801BFB34; @@ -1313,7 +1313,7 @@ extern void* gItemIcons[]; extern u8 gItemSlots[]; extern s16 gItemPrices[]; extern u16 gSceneIdsPerRegion[11][27]; -extern u8 D_801C2410[5][114]; +extern u8 gPlayerFormItemRestrictions[5][114]; extern s16 gPlayerFormObjectIndices[8]; extern RomFile gObjectTable[643]; extern SceneTableEntry gSceneTable[]; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 322e1882e..dc90b540e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -8,12 +8,9 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #include "overlays/actors/ovl_En_Mm3/z_en_mm3.h" -u8 func_800FE4A8(void); -s32 func_801234D4(PlayState* play); -void func_801663C4(u8* arg0, u8* arg1, u32 arg2); - -extern Gfx D_0E0001C8[]; // Display List -extern Gfx D_0E0002E0[]; // gScreenFillDL +extern Gfx D_0E0001C8[]; // Display List +extern Gfx D_0E0002E0[]; // gScreenFillDL +extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex typedef enum { /* 0 */ PICTOGRAPH_STATE_OFF, // Not using the pictograph @@ -1916,7 +1913,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { if (gSaveContext.save.playerForm == player->transformation) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { // Individual C button - if (!D_801C2410[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { + if (!gPlayerFormItemRestrictions[(void)0, gSaveContext.save.playerForm][GET_CUR_FORM_BTN_ITEM(i)]) { // Item not usable in current playerForm if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { gSaveContext.buttonStatus[i] = BTN_DISABLED; @@ -2080,7 +2077,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { // (non-minigame?) if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && (gSaveContext.bButtonStatus == BTN_DISABLED)) { - // Riding Epona with blast mask + // Riding Epona with blast mask? restoreHudVisibility = true; gSaveContext.bButtonStatus = BTN_ENABLED; } @@ -4234,10 +4231,9 @@ void Interface_DrawAButton(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex -s16 D_801BFB14[] = { 255, 100, 255, 0 }; // magicArrowEffectsR -s16 D_801BFB1C[] = { 0, 100, 255, 0 }; // magicArrowEffectsG -s16 D_801BFB24[] = { 0, 255, 100, 0 }; // magicArrowEffectsB +static s16 sMagicArrowEffectsR[] = { 255, 100, 255 }; // magicArrowEffectsR +static s16 sMagicArrowEffectsG[] = { 0, 100, 255 }; // magicArrowEffectsG +static s16 sMagicArrowEffectsB[] = { 0, 255, 100 }; // magicArrowEffectsB void Interface_DrawPauseMenuEquippingIcons(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; @@ -4248,57 +4244,57 @@ void Interface_DrawPauseMenuEquippingIcons(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); + // This is needed as `Interface_DrawPauseMenuEquippingIcons` is call immediately + // after `Interface_DrawAButton`, which sets the view to perspective mode Interface_SetOrthoView(interfaceCtx); - if (pauseCtx->state == 6) { - if ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF)) { - // Inventory Equip Effects - gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); - func_8012C8D4(play->state.gfxCtx); - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if ((pauseCtx->state == 6) && ((pauseCtx->unk_200 == 3) || (pauseCtx->unk_200 == 0xF))) { + // Inventory Equip Effects + gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); + func_8012C8D4(play->state.gfxCtx); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = pauseCtx->equipAnimX / 10; - pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = - pauseCtx->cursorVtx[16].v.ob[0] + (pauseCtx->equipAnimScale / 10); - pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = pauseCtx->equipAnimY / 10; - pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = - pauseCtx->cursorVtx[16].v.ob[1] - (pauseCtx->equipAnimScale / 10); + pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = pauseCtx->equipAnimX / 10; + pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] + (pauseCtx->equipAnimScale / 10); + pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = pauseCtx->equipAnimY / 10; + pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] - (pauseCtx->equipAnimScale / 10); - if (pauseCtx->equipTargetItem < 0xB5) { - // Normal Equip (icon goes from the inventory slot to the C button when equipping it) - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, pauseCtx->equipAnimAlpha); - gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); - gDPLoadTextureBlock(OVERLAY_DISP++, gItemIcons[pauseCtx->equipTargetItem], G_IM_FMT_RGBA, G_IM_SIZ_32b, - 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, - G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - } else { - // Magic Arrow Equip Effect - temp = pauseCtx->equipTargetItem - 0xB5; - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFB14[temp], D_801BFB1C[temp], D_801BFB24[temp], - pauseCtx->equipAnimAlpha); + if (pauseCtx->equipTargetItem < 0xB5) { + // Normal Equip (icon goes from the inventory slot to the C button when equipping it) + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, pauseCtx->equipAnimAlpha); + gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); + gDPLoadTextureBlock(OVERLAY_DISP++, gItemIcons[pauseCtx->equipTargetItem], G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, + 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + } else { + // Magic Arrow Equip Effect + temp = pauseCtx->equipTargetItem - 0xB5; + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sMagicArrowEffectsR[temp], sMagicArrowEffectsG[temp], + sMagicArrowEffectsB[temp], pauseCtx->equipAnimAlpha); - if ((pauseCtx->equipAnimAlpha > 0) && (pauseCtx->equipAnimAlpha < 255)) { - temp = (pauseCtx->equipAnimAlpha / 8) / 2; - pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = - pauseCtx->cursorVtx[16].v.ob[0] - temp; - pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = - pauseCtx->cursorVtx[16].v.ob[0] + temp * 2 + 32; - pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = - pauseCtx->cursorVtx[16].v.ob[1] + temp; - pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = - pauseCtx->cursorVtx[16].v.ob[1] - temp * 2 - 32; - } - - gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); - gDPLoadTextureBlock(OVERLAY_DISP++, &D_08095AC0, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, - G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, - G_TX_NOLOD, G_TX_NOLOD); + if ((pauseCtx->equipAnimAlpha > 0) && (pauseCtx->equipAnimAlpha < 255)) { + temp = (pauseCtx->equipAnimAlpha / 8) / 2; + pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] - temp; + pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = + pauseCtx->cursorVtx[16].v.ob[0] + temp * 2 + 32; + pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] + temp; + pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = + pauseCtx->cursorVtx[16].v.ob[1] - temp * 2 - 32; } - gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[16], 4, 0); + gDPLoadTextureBlock(OVERLAY_DISP++, &D_08095AC0, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); } + + gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c index 3d73b4fef..677ea29c3 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_item.c @@ -241,9 +241,9 @@ void KaleidoScope_SetCursorVtx(PauseContext* pauseCtx, u16 index, Vtx* vtx) { pauseCtx->cursorVtx[0].v.ob[1] = vtx[index].v.ob[1]; } -s16 sMagicArrowEffectsR[] = { 255, 100, 255 }; -s16 sMagicArrowEffectsG[] = { 0, 100, 255 }; -s16 sMagicArrowEffectsB[] = { 0, 255, 100 }; +static s16 sMagicArrowEffectsR[] = { 255, 100, 255 }; +static s16 sMagicArrowEffectsG[] = { 0, 100, 255 }; +static s16 sMagicArrowEffectsB[] = { 0, 255, 100 }; void KaleidoScope_DrawItemSelect(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index a246b56c4..d189c59a8 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1124,9 +1124,9 @@ 0x801BFAFC:("D_801BFAFC","UNK_TYPE4","",0x4), 0x801BFB04:("D_801BFB04","UNK_TYPE1","",0x1), 0x801BFB0C:("D_801BFB0C","UNK_TYPE1","",0x1), - 0x801BFB14:("D_801BFB14","UNK_TYPE1","",0x1), - 0x801BFB1C:("D_801BFB1C","UNK_TYPE1","",0x1), - 0x801BFB24:("D_801BFB24","UNK_TYPE1","",0x1), + 0x801BFB14:("sMagicArrowEffectsR","UNK_TYPE1","",0x1), + 0x801BFB1C:("sMagicArrowEffectsG","UNK_TYPE1","",0x1), + 0x801BFB24:("sMagicArrowEffectsB","UNK_TYPE1","",0x1), 0x801BFB2C:("sThreeDayClockAlpha","UNK_TYPE2","",0x2), 0x801BFB30:("D_801BFB30","UNK_TYPE2","",0x2), 0x801BFB34:("D_801BFB34","UNK_TYPE2","",0x2), @@ -1344,7 +1344,7 @@ 0x801C20C8:("gItemPrices","UNK_TYPE1","",0x1), 0x801C212C:("gSceneIdsPerRegion","SceneIdList","[]",0x252), 0x801C2380:("sSceneIdsPerTingleMap","u16","[]",0x90), - 0x801C2410:("D_801C2410","UNK_TYPE1","",0x1), + 0x801C2410:("gPlayerFormItemRestrictions","UNK_TYPE1","",0x1), 0x801C2650:("tatlMessageFiles","RomFile","[2]",0x10), 0x801C2660:("sceneTextureFiles","RomFile","[9]",0x48), 0x801C26A8:("sceneHeaderFuncTable","scene_header_func","[31]",0x7c), From 2d64b28e8ef3892f6ebe327d60b83441cb05d084 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Thu, 6 Oct 2022 15:07:26 -0400 Subject: [PATCH 152/160] pictograph docs --- include/functions.h | 4 +-- include/variables.h | 2 +- include/z64.h | 2 +- include/z64save.h | 9 +++++- include/z64snap.h | 10 +++--- src/code/z_parameter.c | 57 ++++++++++++++++++---------------- src/code/z_play.c | 4 +-- src/code/z_snap.c | 2 +- tools/disasm/functions.txt | 4 +-- tools/disasm/variables.txt | 2 +- tools/sizes/code_functions.csv | 4 +-- 11 files changed, 56 insertions(+), 44 deletions(-) diff --git a/include/functions.h b/include/functions.h index 3495c3fbd..395c99985 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2430,8 +2430,8 @@ void func_80165690(void); // void func_80166060(void); Gfx* func_801660B8(PlayState* play, Gfx* gfx); void Play_Destroy(GameState* thisx); -void func_801663C4(u8* arg0, u8* arg1, u32 arg2); -void func_80166644(u8* arg0, u8* arg1, s32 arg2); +void Play_CompressI8ToI5(u8* arg0, u8* arg1, u32 arg2); +void Play_DecompressI5ToI8(u8* arg0, u8* arg1, s32 arg2); // void func_801668B4(void); void func_80166968(PlayState* play, Camera* camera); void func_80166B30(PlayState* play); diff --git a/include/variables.h b/include/variables.h index 59ae77433..244fe2e21 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3479,7 +3479,7 @@ extern GfxPool gGfxPools[2]; extern u8 gAudioHeap[0x138000]; extern u8 gSystemHeap[UNK_SIZE]; -extern u8 D_80780000[0x4600]; +extern u8 gPictoPhotoI8[]; // PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y extern u8 D_80784600[0x56200]; extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH]; diff --git a/include/z64.h b/include/z64.h index 13e5e83c7..f6dbe3b4e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1001,7 +1001,7 @@ struct PlayState { /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; /* 0x18E58 */ char unk_18E58[0x4]; - /* 0x18E5C */ u8* unk_18E5C; + /* 0x18E5C */ u8* pictoPhotoI8; /* 0x18E60 */ char unk_18E60[0x8]; /* 0x18E68 */ s32 unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; diff --git a/include/z64save.h b/include/z64save.h index ec0e3ee43..0d836c6f6 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -145,6 +145,13 @@ typedef enum { /* 52 */ HUD_VISIBILITY_NONE_INSTANT = 52 } HudVisibility; +#define PICTO_RESOLUTION_X 160 +#define PICTO_RESOLUTION_Y 112 + +#define PICTO_POS_X ((void)0, ((SCREEN_WIDTH - PICTO_RESOLUTION_X) / 2)) +// Picture is offset up by 33 pixels to give room for the message box at the bottom +#define PICTO_POS_Y (((void)0, ((SCREEN_HEIGHT - PICTO_RESOLUTION_Y) / 2)) - 33) + typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -310,7 +317,7 @@ typedef struct SaveContext { /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub" /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time" /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time" - /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo + /* 0x10E0 */ u8 pictoPhotoI5[PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y * 5 / 8]; // buffer containing the pictograph photo /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" /* 0x3CA6 */ u8 unk_3CA6; diff --git a/include/z64snap.h b/include/z64snap.h index fb3f86186..237245470 100644 --- a/include/z64snap.h +++ b/include/z64snap.h @@ -36,11 +36,11 @@ typedef enum { /* 0x3F */ PICTOGRAPH_BAD_DISTANCE } PictographFlag; -// The following macros are subject to renaming once the capture system is better understood -#define PICTO_RESOLUTION_HORIZONTAL 150 -#define PICTO_RESOLUTION_VERTICAL 105 -#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_HORIZONTAL) / 2) -#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_RESOLUTION_VERTICAL) / 2) +// The subregion of the picto photo that will set the flag for an actor being in the photo +#define PICTO_CAPTURE_REGION_HORIZONTAL 150 +#define PICTO_CAPTURE_REGION_VERTICAL 105 +#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_CAPTURE_REGION_HORIZONTAL) / 2) +#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_CAPTURE_REGION_VERTICAL) / 2) s32 Snap_RecordPictographedActors(PlayState* play); void Snap_SetFlag(s32 flag); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 87f94c3ff..268d42c45 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2223,8 +2223,9 @@ void Interface_UpdateButtonsPart1(PlayState* play) { // Related to pictograph if (sPictographState == PICTOGRAPH_STATE_LENS) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { - func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, - (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); + Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, + (u8*)((void)0, gSaveContext.pictoPhotoI5), + PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; restoreHudVisibility = true; sPictographState = PICTOGRAPH_STATE_OFF; @@ -2261,8 +2262,9 @@ void Interface_UpdateButtonsPart1(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); sPictographState = PICTOGRAPH_STATE_OFF; if (sPictographPhotoBeingTaken) { - func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, - (u8*)((void)0, gSaveContext.pictoPhoto), 0x4600); + Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, + (u8*)((void)0, gSaveContext.pictoPhotoI5), + PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); Snap_RecordPictographedActors(play); } play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; @@ -2292,8 +2294,9 @@ void Interface_UpdateButtonsPart1(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B); sPictographState = PICTOGRAPH_STATE_LENS; } else { - func_80166644((u8*)((void)0, gSaveContext.pictoPhoto), - (play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, 0x4600); + Play_DecompressI5ToI8((u8*)((void)0, gSaveContext.pictoPhotoI5), + (play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, + PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); play->haltAllActors = true; sPictographState = PICTOGRAPH_STATE_SETUP_PHOTO; } @@ -6399,33 +6402,33 @@ void Interface_Draw(PlayState* play) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusBorderTex, G_IM_FMT_IA, 16, 16, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(32) * 4, YREG(33) * 4, (YREG(32) + 0x10) * 4, (YREG(33) + 0x10) * 4, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(34) * 4, YREG(35) * 4, (YREG(34) + 0x10) * 4, (YREG(35) + 0x10) * 4, - G_TX_RENDERTILE, 512, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(36) * 4, YREG(37) * 4, (YREG(36) + 0x10) * 4, (YREG(37) + 0x10) * 4, - G_TX_RENDERTILE, 0, 512, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(38) * 4, YREG(39) * 4, (YREG(38) + 0x10) * 4, (YREG(39) + 0x10) * 4, - G_TX_RENDERTILE, 512, 512, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(32) << 2, YREG(33) << 2, (YREG(32) << 2) + (16 << 2), + (YREG(33) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(34) << 2, YREG(35) << 2, (YREG(34) << 2) + (16 << 2), + (YREG(35) << 2) + (16 << 2), G_TX_RENDERTILE, 512, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(36) << 2, YREG(37) << 2, (YREG(36) << 2) + (16 << 2), + (YREG(37) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 512, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(38) << 2, YREG(39) << 2, (YREG(38) << 2) + (16 << 2), + (YREG(39) << 2) + (16 << 2), G_TX_RENDERTILE, 512, 512, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusIconTex, G_IM_FMT_I, 32, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(40) * 4, YREG(41) * 4, (YREG(40) + 0x20) * 4, (YREG(41) + 0x10) * 4, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(40) << 2, YREG(41) << 2, (YREG(40) << 2) + 0x80, + (YREG(41) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusTextTex, G_IM_FMT_I, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(42) * 4, YREG(43) * 4, (YREG(42) + 0x20) * 4, (YREG(43) + 0x8) * 4, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, YREG(42) << 2, YREG(43) << 2, (YREG(42) << 2) + 0x80, + (YREG(43) << 2) + 0x20, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } // Draw pictograph photo if (sPictographState >= PICTOGRAPH_STATE_SETUP_PHOTO) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { - func_801663C4((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90, (u8*)gSaveContext.pictoPhoto, - 0x4600); + Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, + (u8*)gSaveContext.pictoPhotoI5, PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; @@ -6433,7 +6436,7 @@ void Interface_Draw(PlayState* play) { gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } else { - s16 phi_a2; + s16 pictoRectTop; if (sPictographState == PICTOGRAPH_STATE_SETUP_PHOTO) { sPictographState = PICTOGRAPH_STATE_PHOTO; @@ -6454,14 +6457,16 @@ void Interface_Draw(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); - phi_a2 = 0x1F; - for (sp2CC = 0; sp2CC < 14; sp2CC++, phi_a2 += 8) { + pictoRectTop = PICTO_POS_Y; + for (sp2CC = 0; sp2CC < (PICTO_RESOLUTION_Y / 8); sp2CC++, pictoRectTop += 8) { gDPLoadTextureBlock(OVERLAY_DISP++, - (u8*)((play->unk_18E5C != NULL) ? play->unk_18E5C : D_801FBB90) + (0x500 * sp2CC), - G_IM_FMT_I, G_IM_SIZ_8b, 160, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, + (u8*)((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90) + + (0x500 * sp2CC), + G_IM_FMT_I, G_IM_SIZ_8b, PICTO_RESOLUTION_X, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, ((void)0, 320), phi_a2 * 4, ((void)0, 960), (phi_a2 + 8) * 4, + gSPTextureRectangle(OVERLAY_DISP++, PICTO_POS_X << 2, pictoRectTop << 2, + (PICTO_POS_X + PICTO_RESOLUTION_X) << 2, (pictoRectTop << 2) + (8 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } diff --git a/src/code/z_play.c b/src/code/z_play.c index 47bb97a60..35d43d996 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -39,9 +39,9 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Destroy.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801663C4.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_CompressI8ToI5.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80166644.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_DecompressI5ToI8.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801668B4.s") diff --git a/src/code/z_snap.c b/src/code/z_snap.c index 5d37e3eac..5e9ced024 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -174,7 +174,7 @@ s32 Snap_ValidatePictograph(PlayState* play, Actor* actor, s32 flag, Vec3f* pos, y = (s16)PROJECTED_TO_SCREEN_Y(projectedPos, distance) - PICTO_CAPTURE_REGION_TOPLEFT_Y; // checks if the coordinates are within the capture region - if ((x < 0) || (x > PICTO_RESOLUTION_HORIZONTAL) || (y < 0) || (y > PICTO_RESOLUTION_VERTICAL)) { + if ((x < 0) || (x > PICTO_CAPTURE_REGION_HORIZONTAL) || (y < 0) || (y > PICTO_CAPTURE_REGION_VERTICAL)) { Snap_SetFlag(PICTOGRAPH_NOT_IN_VIEW); ret |= PICTOGRAPH_NOT_IN_VIEW; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 1b2e6d3f2..9552c0287 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2987,8 +2987,8 @@ 0x80166060:("func_80166060",), 0x801660B8:("func_801660B8",), 0x8016613C:("Play_Destroy",), - 0x801663C4:("func_801663C4",), - 0x80166644:("func_80166644",), + 0x801663C4:("Play_CompressI8ToI5",), + 0x80166644:("Play_DecompressI5ToI8",), 0x801668B4:("func_801668B4",), 0x80166968:("func_80166968",), 0x80166B30:("func_80166B30",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index c18d517e5..dc951261b 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -4368,7 +4368,7 @@ 0x80209EA0:("gGfxPools","GfxPool","[2]",0x40620), 0x8024A4C0:("gAudioHeap","u8","[0x138000]",0x138000), 0x803824C0:("gSystemHeap","u8","[UNK_SIZE]",0x3fdb40), - 0x80780000:("D_80780000","u8","[0x4600]",0x4600), + 0x80780000:("gPictoPhotoI8","u8","[0x4600]",0x4600), 0x80784600:("D_80784600","u8","[0x56200]",0x56200), 0x807DA800:("gFramebuffer0","u16","[SCREEN_HEIGHT][SCREEN_WIDTH]",0x25800), 0x80800860:("titleRotation","s16","",0x2), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 2ed37c8f0..477fc0d2b 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -2501,8 +2501,8 @@ asm/non_matchings/code/z_play/func_80165EC0.s,func_80165EC0,0x80165EC0,0x68 asm/non_matchings/code/z_play/func_80166060.s,func_80166060,0x80166060,0x16 asm/non_matchings/code/z_play/func_801660B8.s,func_801660B8,0x801660B8,0x21 asm/non_matchings/code/z_play/Play_Destroy.s,Play_Destroy,0x8016613C,0xA2 -asm/non_matchings/code/z_play/func_801663C4.s,func_801663C4,0x801663C4,0xA0 -asm/non_matchings/code/z_play/func_80166644.s,func_80166644,0x80166644,0x9C +asm/non_matchings/code/z_play/Play_CompressI8ToI5.s,Play_CompressI8ToI5,0x801663C4,0xA0 +asm/non_matchings/code/z_play/Play_DecompressI5ToI8.s,Play_DecompressI5ToI8,0x80166644,0x9C asm/non_matchings/code/z_play/func_801668B4.s,func_801668B4,0x801668B4,0x2D asm/non_matchings/code/z_play/func_80166968.s,func_80166968,0x80166968,0x72 asm/non_matchings/code/z_play/func_80166B30.s,func_80166B30,0x80166B30,0x339 From 612819cbbc26692863bded3cad386abca55ee03e Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sat, 8 Oct 2022 14:06:57 -0400 Subject: [PATCH 153/160] regs, cleanup --- include/regs.h | 60 ++++++++++++++++++++++----------- include/z64save.h | 4 +-- src/code/title_setup.c | 34 ++++++++++--------- src/code/z_parameter.c | 75 +++++++++++++++++++++++++----------------- 4 files changed, 104 insertions(+), 69 deletions(-) diff --git a/include/regs.h b/include/regs.h index f48011ea3..9c12fce7b 100644 --- a/include/regs.h +++ b/include/regs.h @@ -45,12 +45,27 @@ /* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */ #define R_TIME_SPEED REG(15) #define R_RUN_SPEED_LIMIT REG(45) + #define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT #define R_UPDATE_RATE SREG(30) #define R_PAUSE_MENU_MODE SREG(94) -#define R_PAUSE_WORLD_MAP_YAW YREG(24) -#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25) -#define R_PAUSE_WORLD_MAP_DEPTH YREG(26) + +#define R_PAUSE_WORLD_MAP_YAW YREG(24) +#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25) +#define R_PAUSE_WORLD_MAP_DEPTH YREG(26) +#define R_PICTO_FOCUS_BORDER_TOPLEFT_X YREG(32) +#define R_PICTO_FOCUS_BORDER_TOPLEFT_Y YREG(33) +#define R_PICTO_FOCUS_BORDER_TOPRIGHT_X YREG(34) +#define R_PICTO_FOCUS_BORDER_TOPRIGHT_Y YREG(35) +#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X YREG(36) +#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y YREG(37) +#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X YREG(38) +#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y YREG(39) +#define R_PICTO_FOCUS_ICON_X YREG(40) +#define R_PICTO_FOCUS_ICON_Y YREG(41) +#define R_PICTO_FOCUS_TEXT_X YREG(42) +#define R_PICTO_FOCUS_TEXT_Y YREG(43) + #define R_MAGIC_FILL_COLOR(i) ZREG(0 + i) #define R_C_BTN_COLOR(i) ZREG(39 + i) #define R_B_BTN_COLOR(i) ZREG(43 + i) @@ -67,23 +82,28 @@ #define R_ITEM_ICON_X(i) ZREG(82 + i) #define R_ITEM_ICON_Y(i) ZREG(86 + i) #define R_ITEM_ICON_DD(i) ZREG(90 + i) -#define R_MAGIC_DBG_SET_UPGRADE XREG(4) -#define R_A_BTN_Y XREG(16) -#define R_A_BTN_X XREG(17) -#define R_A_ICON_Y XREG(19) -#define R_A_ICON_X XREG(20) -#define R_A_BTN_COLOR(i) XREG(22 + i) -#define R_A_BTN_Y_OFFSET XREG(31) -#define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41) -#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50) -#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52) -#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53) -#define R_MOON_CRASH_TIMER_Y XREG(80) -#define R_MOON_CRASH_TIMER_X XREG(81) -#define R_PAUSE_OWLWARP_ALPHA XREG(87) -#define R_STORY_FILL_SCREEN_ALPHA XREG(91) -#define R_REVERSE_FLOOR_INDEX XREG(94) -#define R_MINIMAP_DISABLED XREG(95) + +#define R_MAGIC_DBG_SET_UPGRADE XREG(4) +#define R_A_BTN_Y XREG(16) +#define R_A_BTN_X XREG(17) +#define R_A_ICON_Y XREG(19) +#define R_A_ICON_X XREG(20) +#define R_A_BTN_COLOR(i) XREG(22 + i) +#define R_A_BTN_Y_OFFSET XREG(31) +#define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41) +#define R_THREE_DAY_CLOCK_Y_POS XREG(43) // TODO: Test +#define R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF XREG(44) +#define R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF XREG(45) +#define R_PAUSE_DBG_MAP_CLOUD_ON XREG(50) +#define R_PAUSE_DBG_MAP_CLOUD_X XREG(52) +#define R_PAUSE_DBG_MAP_CLOUD_Y XREG(53) +#define R_MOON_CRASH_TIMER_Y XREG(80) +#define R_MOON_CRASH_TIMER_X XREG(81) +#define R_PAUSE_OWLWARP_ALPHA XREG(87) +#define R_STORY_FILL_SCREEN_ALPHA XREG(91) +#define R_REVERSE_FLOOR_INDEX XREG(94) +#define R_MINIMAP_DISABLED XREG(95) + #define R_B_LABEL_DD WREG(0) #define R_OW_MINIMAP_X WREG(29) #define R_OW_MINIMAP_Y WREG(30) diff --git a/include/z64save.h b/include/z64save.h index 0d836c6f6..0a4c6d448 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -148,9 +148,9 @@ typedef enum { #define PICTO_RESOLUTION_X 160 #define PICTO_RESOLUTION_Y 112 -#define PICTO_POS_X ((void)0, ((SCREEN_WIDTH - PICTO_RESOLUTION_X) / 2)) +#define PICTO_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_X) / 2) // Picture is offset up by 33 pixels to give room for the message box at the bottom -#define PICTO_POS_Y (((void)0, ((SCREEN_HEIGHT - PICTO_RESOLUTION_Y) / 2)) - 33) +#define PICTO_TOPLEFT_Y (((SCREEN_HEIGHT - PICTO_RESOLUTION_Y) / 2) - 33) typedef struct SramContext { /* 0x00 */ u8* readBuff; diff --git a/src/code/title_setup.c b/src/code/title_setup.c index 8cebfe554..84ae58c07 100644 --- a/src/code/title_setup.c +++ b/src/code/title_setup.c @@ -7,12 +7,13 @@ void Setup_SetRegs(void) { XREG(11) = 20; XREG(12) = 14; XREG(13) = 0; - XREG(31) = 0; + R_A_BTN_Y_OFFSET = 0; R_MAGIC_CONSUME_TIMER_GIANTS_MASK = 80; - XREG(43) = 0xFC54; - XREG(44) = 0xD7; - XREG(45) = 0xDA; + R_THREE_DAY_CLOCK_Y_POS = 64596; + R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF = 215; + R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF = 218; + XREG(68) = 0x61; XREG(69) = 0x93; XREG(70) = 0x28; @@ -27,22 +28,23 @@ void Setup_SetRegs(void) { XREG(88) = 0x56; XREG(89) = 0x258; XREG(90) = 0x1C2; + R_STORY_FILL_SCREEN_ALPHA = 0; R_REVERSE_FLOOR_INDEX = 0; R_MINIMAP_DISABLED = false; - YREG(32) = 0x50; - YREG(33) = 0x3C; - YREG(34) = 0xDC; - YREG(35) = 0x3C; - YREG(36) = 0x50; - YREG(37) = 0xA0; - YREG(38) = 0xDC; - YREG(39) = 0xA0; - YREG(40) = 0x8E; - YREG(41) = 0x6C; - YREG(42) = 0xCC; - YREG(43) = 0xB1; + R_PICTO_FOCUS_BORDER_TOPLEFT_X = 80; + R_PICTO_FOCUS_BORDER_TOPLEFT_Y = 60; + R_PICTO_FOCUS_BORDER_TOPRIGHT_X = 220; + R_PICTO_FOCUS_BORDER_TOPRIGHT_Y = 60; + R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X = 80; + R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y = 160; + R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X = 220; + R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y = 160; + R_PICTO_FOCUS_ICON_X = 142; + R_PICTO_FOCUS_ICON_Y = 108; + R_PICTO_FOCUS_TEXT_X = 204; + R_PICTO_FOCUS_TEXT_Y = 177; } void Setup_InitImpl(SetupState* this) { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 268d42c45..2dfb3f173 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4594,7 +4594,8 @@ void Interface_DrawClock(PlayState* play) { * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock */ gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, XREG(44) * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF * 4.0f); // determines the current hour for (sp1C6 = 0; sp1C6 <= 24; sp1C6++) { @@ -4645,7 +4646,8 @@ void Interface_DrawClock(PlayState* play) { * Cuts off Three-Day Clock's Hour Digits when they dip below the clock */ gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, XREG(45) * 4.0f); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF * 4.0f); /** * Draws Three-Day Clock's Hour Digit Above the Sun @@ -4653,7 +4655,7 @@ void Interface_DrawClock(PlayState* play) { sp1CC = gSaveContext.save.time * 0.000096131f; // Rotates Three-Day Clock's Hour Digit To Above the Sun - Matrix_Translate(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateZF(-(sp1CC - 3.15f), MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), @@ -4678,7 +4680,7 @@ void Interface_DrawClock(PlayState* play) { * Draws Three-Day Clock's Hour Digit Above the Moon */ // Rotates Three-Day Clock's Hour Digit To Above the Moon - Matrix_Translate(0.0f, XREG(43) / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateZF(-sp1CC, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), @@ -6099,9 +6101,9 @@ void Interface_Draw(PlayState* play) { s16 sp2CA; s16 sp2C8; PauseContext* pauseCtx = &play->pauseCtx; - f32 sp2C0; - s16 counterDigits[4]; // sp2B8 - s16 sp4C; + f32 minigameCountdownScale; + s16 counterDigits[4]; + s16 magicAlpha; OPEN_DISPS(play->state.gfxCtx); @@ -6293,14 +6295,14 @@ void Interface_Draw(PlayState* play) { sp2CC = sRupeeDigitsFirst[CUR_UPG_VALUE(UPG_WALLET)]; sp2C8 = sRupeeDigitsCount[CUR_UPG_VALUE(UPG_WALLET)]; - sp4C = interfaceCtx->magicAlpha; - if (sp4C > 180) { - sp4C = 180; + magicAlpha = interfaceCtx->magicAlpha; + if (magicAlpha > 180) { + magicAlpha = 180; } for (sp2CE = 0, sp2CA = 42; sp2CE < sp2C8; sp2CE++, sp2CC++, sp2CA += 8) { gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sp4C); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, magicAlpha); OVERLAY_DISP = Gfx_DrawTexRectI8(OVERLAY_DISP, (u8*)gCounterDigit0Tex + (8 * 16 * counterDigits[sp2CC]), 8, 16, sp2CA + 1, 207, 8, 16, 1 << 10, 1 << 10); @@ -6322,7 +6324,7 @@ void Interface_Draw(PlayState* play) { Magic_DrawMeter(play); Minimap_Draw(play); - if ((SREG(94) != 2) && (SREG(94) != 3)) { + if ((R_PAUSE_MENU_MODE != 2) && (R_PAUSE_MENU_MODE != 3)) { Actor_DrawZTarget(&play->actorCtx.targetContext, play); } @@ -6347,7 +6349,7 @@ void Interface_Draw(PlayState* play) { if (((u32)interfaceCtx->minigameState % 2) == 0) { sp2CE = (interfaceCtx->minigameState >> 1) - 1; - sp2C0 = interfaceCtx->minigameCountdownScale / 100.0f; + minigameCountdownScale = interfaceCtx->minigameCountdownScale / 100.0f; if (sp2CE == 3) { interfaceCtx->actionVtx[40 + 0].v.ob[0] = interfaceCtx->actionVtx[40 + 2].v.ob[0] = -20; @@ -6367,7 +6369,7 @@ void Interface_Draw(PlayState* play) { interfaceCtx->minigameCountdownAlpha); Matrix_Translate(0.0f, -40.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(sp2C0, sp2C0, 0.0f, MTXMODE_APPLY); + Matrix_Scale(minigameCountdownScale, minigameCountdownScale, 0.0f, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -6402,26 +6404,35 @@ void Interface_Draw(PlayState* play) { gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusBorderTex, G_IM_FMT_IA, 16, 16, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(32) << 2, YREG(33) << 2, (YREG(32) << 2) + (16 << 2), - (YREG(33) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(34) << 2, YREG(35) << 2, (YREG(34) << 2) + (16 << 2), - (YREG(35) << 2) + (16 << 2), G_TX_RENDERTILE, 512, 0, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(36) << 2, YREG(37) << 2, (YREG(36) << 2) + (16 << 2), - (YREG(37) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 512, 1 << 10, 1 << 10); - gSPTextureRectangle(OVERLAY_DISP++, YREG(38) << 2, YREG(39) << 2, (YREG(38) << 2) + (16 << 2), - (YREG(39) << 2) + (16 << 2), G_TX_RENDERTILE, 512, 512, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, R_PICTO_FOCUS_BORDER_TOPLEFT_X << 2, R_PICTO_FOCUS_BORDER_TOPLEFT_Y << 2, + (R_PICTO_FOCUS_BORDER_TOPLEFT_X << 2) + (16 << 2), + (R_PICTO_FOCUS_BORDER_TOPLEFT_Y << 2) + (16 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, R_PICTO_FOCUS_BORDER_TOPRIGHT_X << 2, R_PICTO_FOCUS_BORDER_TOPRIGHT_Y << 2, + (R_PICTO_FOCUS_BORDER_TOPRIGHT_X << 2) + (16 << 2), + (R_PICTO_FOCUS_BORDER_TOPRIGHT_Y << 2) + (16 << 2), G_TX_RENDERTILE, 512, 0, 1 << 10, + 1 << 10); + gSPTextureRectangle( + OVERLAY_DISP++, R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X << 2, R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y << 2, + (R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X << 2) + (16 << 2), (R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y << 2) + (16 << 2), + G_TX_RENDERTILE, 0, 512, 1 << 10, 1 << 10); + gSPTextureRectangle( + OVERLAY_DISP++, R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X << 2, R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y << 2, + (R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X << 2) + (16 << 2), + (R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y << 2) + (16 << 2), G_TX_RENDERTILE, 512, 512, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusIconTex, G_IM_FMT_I, 32, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(40) << 2, YREG(41) << 2, (YREG(40) << 2) + 0x80, - (YREG(41) << 2) + (16 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, R_PICTO_FOCUS_ICON_X << 2, R_PICTO_FOCUS_ICON_Y << 2, + (R_PICTO_FOCUS_ICON_X << 2) + 0x80, (R_PICTO_FOCUS_ICON_Y << 2) + (16 << 2), + G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(OVERLAY_DISP++, gPictoBoxFocusTextTex, G_IM_FMT_I, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, YREG(42) << 2, YREG(43) << 2, (YREG(42) << 2) + 0x80, - (YREG(43) << 2) + 0x20, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, R_PICTO_FOCUS_TEXT_X << 2, R_PICTO_FOCUS_TEXT_Y << 2, + (R_PICTO_FOCUS_TEXT_X << 2) + 0x80, (R_PICTO_FOCUS_TEXT_Y << 2) + 0x20, G_TX_RENDERTILE, 0, + 0, 1 << 10, 1 << 10); } // Draw pictograph photo @@ -6437,6 +6448,7 @@ void Interface_Draw(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } else { s16 pictoRectTop; + s16 pictoRectLeft; if (sPictographState == PICTOGRAPH_STATE_SETUP_PHOTO) { sPictographState = PICTOGRAPH_STATE_PHOTO; @@ -6457,16 +6469,17 @@ void Interface_Draw(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); - pictoRectTop = PICTO_POS_Y; + pictoRectTop = PICTO_TOPLEFT_Y; for (sp2CC = 0; sp2CC < (PICTO_RESOLUTION_Y / 8); sp2CC++, pictoRectTop += 8) { + pictoRectLeft = PICTO_TOPLEFT_X; gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90) + (0x500 * sp2CC), G_IM_FMT_I, G_IM_SIZ_8b, PICTO_RESOLUTION_X, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, PICTO_POS_X << 2, pictoRectTop << 2, - (PICTO_POS_X + PICTO_RESOLUTION_X) << 2, (pictoRectTop << 2) + (8 << 2), + gSPTextureRectangle(OVERLAY_DISP++, pictoRectLeft << 2, pictoRectTop << 2, + (pictoRectLeft + PICTO_RESOLUTION_X) << 2, (pictoRectTop << 2) + (8 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } @@ -6780,9 +6793,9 @@ void Interface_Update(PlayState* play) { interfaceCtx->aButtonState = A_BTN_STATE_2; if ((msgCtx->msgMode != 0) && (msgCtx->unk12006 == 0x26)) { - XREG(31) = -14; + R_A_BTN_Y_OFFSET = -14; } else { - XREG(31) = 0; + R_A_BTN_Y_OFFSET = 0; } } break; From 58e89b37692c1871568b2a596d03663069670054 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 18 Oct 2022 16:47:12 -0400 Subject: [PATCH 154/160] minigame docs --- include/functions.h | 4 +- include/variables.h | 14 +- include/z64interface.h | 23 +- src/code/z_parameter.c | 442 ++++++++++++++++++++++--------------- tools/disasm/variables.txt | 14 +- 5 files changed, 297 insertions(+), 200 deletions(-) diff --git a/include/functions.h b/include/functions.h index e3e025821..3de4ec538 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1705,8 +1705,8 @@ Gfx* Gfx_DrawTexRectI8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textu Gfx* Gfx_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 textureWidth, s16 textureHeight, u16 point); Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, s16 textureHeight, u16 point); -void Interface_StartTimer(s16 timerId, s16 timeLimit); -void Interface_StartPostmanTimer(s16 timeLimit, s16 bunnyHoodState); +void Interface_StartTimer(s16 timerId, s16 seconds); +void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState); void Interface_NewDay(PlayState* play, s32 day); void Interface_SetHudVisibility(u16 hudVisibility); void Interface_UpdateButtonsPart2(PlayState* play); diff --git a/include/variables.h b/include/variables.h index fa8aa2468..1b806703a 100644 --- a/include/variables.h +++ b/include/variables.h @@ -695,8 +695,8 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sActionVtxWidths; // extern UNK_TYPE2 sActionVtxPosY; // extern UNK_TYPE2 sActionVtxHeights; -// extern UNK_TYPE2 sMinigamePerfectVtxPosX; -// extern UNK_TYPE2 sMinigamePerfectVtxPosY; +// extern UNK_TYPE2 sMinigamePerfectLetterEllipseCenterX; +// extern UNK_TYPE2 sMinigamePerfectLetterEllipseCenterY; // extern UNK_TYPE4 sPostmanTimerInputBtnAPressed; // extern UNK_TYPE1 sDoActionTextures; // extern UNK_TYPE1 D_801BFAB8; @@ -738,15 +738,15 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFC10; // extern UNK_TYPE1 sFinalHoursDigitTextures; // extern UNK_TYPE1 D_801BFC40; -// extern UNK_TYPE2 D_801BFC50; +// extern UNK_TYPE2 sMinigamePerfectType1AngleOffScreenTargets; // extern UNK_TYPE2 sMinigamePerfectType1PrimColorTargets; // extern UNK_TYPE2 D_801BFC62; // extern UNK_TYPE2 D_801BFC64; -// extern UNK_TYPE2 D_801BFC6C; -// extern UNK_TYPE2 D_801BFC7C; +// extern UNK_TYPE2 sMinigamePerfectType2LetterXOffsetSpellingTargets; +// extern UNK_TYPE2 sMinigamePerfectType2LetterXOffsetOffScreenTargets; // extern UNK_TYPE1 sMinigamePerfectType2PrimColorTargets; -// extern UNK_TYPE2 D_801BFC98; -// extern UNK_TYPE2 D_801BFCA8; +// extern UNK_TYPE2 sMinigamePerfectType3LetterXOffsetSpellingTargets; +// extern UNK_TYPE2 sMinigamePerfectType3AngleOffScreenTargets; // extern UNK_TYPE1 sMinigamePerfectType3PrimColorTargets; // extern UNK_TYPE4 sMinigamePerfectTextures; // extern UNK_TYPE2 sTimerStateTimer; diff --git a/include/z64interface.h b/include/z64interface.h index 3c3396ed1..7dcbf0fcb 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -83,13 +83,16 @@ typedef enum { typedef enum { /* 0 */ MINIGAME_PERFECT_STATE_OFF, /* 1 */ MINIGAME_PERFECT_STATE_INIT, - /* 2 */ MINIGAME_PERFECT_STATE_SWIRL_IN, - /* 3 */ MINIGAME_PERFECT_STATE_STATIONARY, - /* 4 */ MINIGAME_PERFECT_STATE_SWIRL_OUT, - /* 5 */ MINIGAME_PERFECT_STATE_5, - /* 6 */ MINIGAME_PERFECT_STATE_6 + /* 2 */ MINIGAME_PERFECT_STATE_ENTER, + /* 3 */ MINIGAME_PERFECT_STATE_STATIONARY, // Display for type 1 + /* 4 */ MINIGAME_PERFECT_STATE_SPREAD, // Exit for type 1 + /* 5 */ MINIGAME_PERFECT_STATE_DISPLAY, + /* 6 */ MINIGAME_PERFECT_STATE_EXIT } MinigamePerfectState; +#define MINIGAME_PERFECT_NUM_LETTERS 8 +#define MINIGAME_PERFECT_ANGLE_PER_LETTER (0x10000 / MINIGAME_PERFECT_NUM_LETTERS) + typedef enum { /* 0 */ STORY_DMA_IDLE, /* 1 */ STORY_DMA_LOADING, @@ -176,11 +179,11 @@ typedef struct { /* 0x284 */ s16 minigameCountdownScale; /* 0x286 */ s16 isMinigamePerfect; /* 0x288 */ s16 minigamePerfectType; - /* 0x28A */ s16 minigamePerfectState[8]; - /* 0x29A */ u16 minigamePerfectLetterDirection[8]; - /* 0x2AA */ s16 minigamePerfectVtxOffset[8]; - /* 0x2BC */ f32 minigamePerfectLetterPosX[8]; - /* 0x2DC */ f32 minigamePerfectLetterPosY[8]; + /* 0x28A */ s16 minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS]; + /* 0x29A */ u16 minigamePerfectLetterEllipseAngle[MINIGAME_PERFECT_NUM_LETTERS]; + /* 0x2AA */ s16 minigamePerfectLetterXOffset[MINIGAME_PERFECT_NUM_LETTERS]; + /* 0x2BC */ f32 minigamePerfectLetterEllipseRadiusX[MINIGAME_PERFECT_NUM_LETTERS]; + /* 0x2DC */ f32 minigamePerfectLetterEllipseRadiusY[MINIGAME_PERFECT_NUM_LETTERS]; /* 0x2FC */ s16 minigamePerfectPrimColor[4]; /* 0x304 */ s16 minigamePerfectLetterCount; /* 0x306 */ s16 minigamePerfectUnused; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c48e6a636..646523203 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -444,13 +444,27 @@ s16 sActionVtxHeights[] = { #define MINIGAME_PERFECT_VTX_WIDTH 32 #define MINIGAME_PERFECT_VTX_HEIGHT 33 -// Both minigame-perfect vtx data indexed as the 8 letters of: -// 'p', 'e', 'r', 'f', 'e', 'c', 't', '!' -s16 sMinigamePerfectVtxPosX[] = { - -61, -45, 29, 104, -117, -42, 32, 55, +// Used for MINIGAME_PERFECT_TYPE_1 and only part of MINIGAME_PERFECT_TYPE_3 +// Both MINIGAME_PERFECT_TYPE_2 and MINIGAME_PERFECT_TYPE_2 have (0, 0) as the center for all letters +s16 sMinigamePerfectLetterEllipseCenterX[MINIGAME_PERFECT_NUM_LETTERS] = { + -61, // P + -45, // E + 29, // R + 104, // F + -117, // E + -42, // C + 32, // T + 55, // ! }; -s16 sMinigamePerfectVtxPosY[] = { - 1, -70, -99, -70, 71, 101, 72, 1, +s16 sMinigamePerfectLetterEllipseCenterY[MINIGAME_PERFECT_NUM_LETTERS] = { + 1, // P + -70, // E + -99, // R + -70, // F + 71, // E + 101, // C + 72, // T + 1, // ! }; /** @@ -494,10 +508,11 @@ void Interface_SetVertices(PlayState* play) { s16 i; s16 j; s16 k; - s16 letteroffset; + s16 shadowOffset; // 108 = 11 + (2 * 8 minigame perfect)) * 4 vertices per quad - play->interfaceCtx.actionVtx = GRAPH_ALLOC(play->state.gfxCtx, 108 * sizeof(Vtx)); + play->interfaceCtx.actionVtx = + GRAPH_ALLOC(play->state.gfxCtx, (11 + (2 * MINIGAME_PERFECT_NUM_LETTERS)) * 4 * sizeof(Vtx)); // Loop over all non-minigame perfect vertices for (k = 0, i = 0; i < 44; i += 4, k++) { @@ -556,14 +571,14 @@ void Interface_SetVertices(PlayState* play) { // Loop over vertices for the minigame-perfect letters // Outer loop is to loop over 2 sets of letters: shadowed letters and colored letters - for (j = 0, letteroffset = 2; j < 2; j++, letteroffset -= 2) { - for (k = 0; k < 8; k++, i += 4) { + for (j = 0, shadowOffset = 2; j < 2; j++, shadowOffset -= 2) { + for (k = 0; k < MINIGAME_PERFECT_NUM_LETTERS; k++, i += 4) { if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) || ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) && - (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6))) { + (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT))) { // Left vertices x Pos interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = - -((sMinigamePerfectVtxPosX[k] - letteroffset) + 16); + -((sMinigamePerfectLetterEllipseCenterX[k] - shadowOffset) + 16); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = @@ -571,7 +586,7 @@ void Interface_SetVertices(PlayState* play) { // Top vertices y Pos interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = - (sMinigamePerfectVtxPosY[k] - letteroffset) + 16; + (sMinigamePerfectLetterEllipseCenterY[k] - shadowOffset) + 16; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = @@ -581,14 +596,14 @@ void Interface_SetVertices(PlayState* play) { (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3)) { // Left vertices x Pos interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = - -(interfaceCtx->minigamePerfectVtxOffset[k] - letteroffset + 16); + -(interfaceCtx->minigamePerfectLetterXOffset[k] - shadowOffset + 16); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 16 - letteroffset; + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 16 - shadowOffset; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = @@ -596,14 +611,14 @@ void Interface_SetVertices(PlayState* play) { } else { // Left vertices x Pos - interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = -(216 - letteroffset); + interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = -(216 - shadowOffset); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 24 - letteroffset; + interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 24 - shadowOffset; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = @@ -4914,22 +4929,29 @@ void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType) { interfaceCtx->minigamePerfectLetterCount = 1; interfaceCtx->minigamePerfectTimer = 0; - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectLetterDirection[i] = 0; - interfaceCtx->minigamePerfectState[i] = interfaceCtx->minigamePerfectVtxOffset[i] = 0; + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectLetterEllipseAngle[i] = 0; + interfaceCtx->minigamePerfectState[i] = interfaceCtx->minigamePerfectLetterXOffset[i] = 0; if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { - interfaceCtx->minigamePerfectLetterPosX[i] = 140.0f; - interfaceCtx->minigamePerfectLetterPosY[i] = 100.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 140.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 100.0f; } else { - interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; - interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; } } interfaceCtx->minigamePerfectState[0] = MINIGAME_PERFECT_STATE_INIT; } -u16 D_801BFC50[] = { - 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, +u16 sMinigamePerfectType1AngleOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { + 6 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // P + 7 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E + 0 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // R + 1 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // F + 5 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E + 4 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // C + 3 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // T + 2 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // ! }; s16 sMinigamePerfectType1PrimColorTargets[2][3] = { { 255, 255, 255 }, @@ -4944,38 +4966,46 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { s16 colorStepG; s16 colorStepB; + // Update letter positions for (count = 0, i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, count += 4) { if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - // Swirl - interfaceCtx->minigamePerfectLetterDirection[i] = D_801BFC50[i] + 0xA000; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { - interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterDirection[i] == D_801BFC50[i]) { + // Initialize letter positions along the parameteric ellipse curve + interfaceCtx->minigamePerfectLetterEllipseAngle[i] = sMinigamePerfectType1AngleOffScreenTargets[i] + 0xA000; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { + // Swirl inwards along a swirlic parametric ellipse equation to the spelt-out word + interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == sMinigamePerfectType1AngleOffScreenTargets[i]) { interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { - interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFC50[i] - 0x8000)) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { + // Swirl outwards along a swirlic parametric ellipse equation offscreen + interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == + (u16)(sMinigamePerfectType1AngleOffScreenTargets[i] - 0x8000)) { interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } } } // Initialize the next letter in the list - // TODO: if `minigamePerfectLetterCount == 8`, then isn't minigamePerfectState[] accessed OoB? + // if `minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS`, + // then minigamePerfectState[] is accessed if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && - (interfaceCtx->minigamePerfectLetterCount < 8)) { + (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS)) { interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; - interfaceCtx->minigamePerfectLetterPosX[interfaceCtx->minigamePerfectLetterCount] = 140.0f; - interfaceCtx->minigamePerfectLetterPosY[interfaceCtx->minigamePerfectLetterCount] = 100.0f; - interfaceCtx->minigamePerfectLetterDirection[interfaceCtx->minigamePerfectLetterCount] = - D_801BFC50[interfaceCtx->minigamePerfectLetterCount] + 0xA000; + + interfaceCtx->minigamePerfectLetterEllipseRadiusX[interfaceCtx->minigamePerfectLetterCount] = 140.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[interfaceCtx->minigamePerfectLetterCount] = 100.0f; + interfaceCtx->minigamePerfectLetterEllipseAngle[interfaceCtx->minigamePerfectLetterCount] = + sMinigamePerfectType1AngleOffScreenTargets[interfaceCtx->minigamePerfectLetterCount] + 0xA000; + interfaceCtx->minigamePerfectLetterCount++; } - if ((interfaceCtx->minigamePerfectLetterCount == 8) && - (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_STATIONARY)) { + // Update letter colors + if ((interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) && + (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_STATIONARY)) { colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / @@ -5016,30 +5046,48 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { interfaceCtx->minigamePerfectTimer++; if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_OUT; + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SPREAD; } } } } - for (count = 0, i = 0; i < 8; i++) { + for (count = 0, i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { count++; } } - if (count == 8) { + if (count == MINIGAME_PERFECT_NUM_LETTERS) { interfaceCtx->isMinigamePerfect = false; } } -s16 D_801BFC6C[] = { - 78, 54, 29, 5, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, +// Targets to offset each letter to properly spell "PERFECT!" +s16 sMinigamePerfectType2LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTERS] = { + 78, // P + 54, // E + 29, // R + 5, // F + -18, // E + -42, // C + -67, // T + -85, // ! }; -s16 D_801BFC7C[] = { - 180, 180, 180, 180, 0xFF4C, 0xFF4C, 0xFF4C, 0xFF4C, + +// Targets to offset each letter to sweep horizontally offscreen +s16 sMinigamePerfectType2LetterXOffsetOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { + 180, // P (offscreen left) + 180, // E (offscreen left) + 180, // R (offscreen left) + 180, // F (offscreen left) + -180, // E (offscreen right) + -180, // C (offscreen right) + -180, // T (offscreen right) + -180, // ! (offscreen right) }; + s16 sMinigamePerfectType2PrimColorTargets[2][3] = { { 255, 255, 255 }, { 255, 165, 55 }, @@ -5048,30 +5096,38 @@ s16 sMinigamePerfectType2PrimColorTargets[2][3] = { void Interface_UpdateMinigamePerfectType2(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; - s16 stepVar1; - s16 stepVar2; - s16 stepVar3; - s16 new_var; + s16 colorStepR; + s16 colorStepG; + s16 colorStepB; + s16 colorStepA; s16 j = 0; // unused incrementer + // Update letter positions for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; - interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; - interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; - interfaceCtx->minigamePerfectVtxOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { - interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; - interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; - interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; - if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { - interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; - interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; + // Initialize letter positions along the parameteric ellipse curve + interfaceCtx->minigamePerfectLetterEllipseAngle[i] = i * (0x10000 / MINIGAME_PERFECT_NUM_LETTERS); + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; + + interfaceCtx->minigamePerfectLetterXOffset[i] = 0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { + // Swirl inwards to the center of the screen + interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] -= 8.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] -= 8.0f; + + if (interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] <= 0.0f) { + // The letter has reached the center of the screen + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 0.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 0.0f; interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; - if (i == 7) { + + if (i == (MINIGAME_PERFECT_NUM_LETTERS - 1)) { + // The last letter has reached the center of the screen interfaceCtx->minigamePerfectColorTimer = 5; - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SWIRL_OUT; + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SPREAD; interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; @@ -5081,43 +5137,46 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { - - stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC6C[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC6C[i]) { - interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { + // Spread out the letters horizontally from the center to the spelt-out word + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - + sMinigamePerfectType2LetterXOffsetSpellingTargets[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectLetterXOffset[i] >= sMinigamePerfectType2LetterXOffsetSpellingTargets[i]) { + interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; + interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_6) { - - stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC7C[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC7C[i]) { - interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_EXIT) { + // Spread out the letters horizontally from the spelt-out world to offscreen + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - + sMinigamePerfectType2LetterXOffsetOffScreenTargets[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectLetterXOffset[i] >= + sMinigamePerfectType2LetterXOffsetOffScreenTargets[i]) { + interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; + interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; } } } - if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) || - (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6)) { - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_6) { - new_var = interfaceCtx->minigamePerfectPrimColor[3] / interfaceCtx->minigamePerfectColorTimer; - interfaceCtx->minigamePerfectPrimColor[3] -= new_var; + if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) || + (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT)) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT) { + colorStepA = interfaceCtx->minigamePerfectPrimColor[3] / interfaceCtx->minigamePerfectColorTimer; + interfaceCtx->minigamePerfectPrimColor[3] -= colorStepA; } interfaceCtx->minigamePerfectColorTimer--; if (interfaceCtx->minigamePerfectColorTimer == 0) { - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_5; + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) { + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_DISPLAY; } interfaceCtx->minigamePerfectColorTimer = 20; } else { - for (i = 0; i < 8; i++) { + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } interfaceCtx->isMinigamePerfect = false; @@ -5125,47 +5184,50 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { } } + // Initialize the next letter in the list if (interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) { - if (interfaceCtx->minigamePerfectLetterCount < 8) { + if (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS) { interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; interfaceCtx->minigamePerfectLetterCount++; } } - if (interfaceCtx->minigamePerfectLetterCount == 8) { - if (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_5) { - stepVar1 = + // Update letter colors + if (interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) { + if (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_DISPLAY) { + + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / interfaceCtx->minigamePerfectColorTimer; - stepVar2 = + colorStepG = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / interfaceCtx->minigamePerfectColorTimer; - stepVar3 = + colorStepB = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / interfaceCtx->minigamePerfectColorTimer; if (interfaceCtx->minigamePerfectPrimColor[0] >= sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { - interfaceCtx->minigamePerfectPrimColor[0] -= stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; } else { - interfaceCtx->minigamePerfectPrimColor[0] += stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; } if (interfaceCtx->minigamePerfectPrimColor[1] >= sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { - interfaceCtx->minigamePerfectPrimColor[1] -= stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; } else { - interfaceCtx->minigamePerfectPrimColor[1] += stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; } if (interfaceCtx->minigamePerfectPrimColor[2] >= sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { - interfaceCtx->minigamePerfectPrimColor[2] -= stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; } else { - interfaceCtx->minigamePerfectPrimColor[2] += stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; } interfaceCtx->minigamePerfectColorTimer--; @@ -5174,8 +5236,8 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { interfaceCtx->minigamePerfectColorTargetIndex ^= 1; interfaceCtx->minigamePerfectTimer++; if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_6; + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_EXIT; } interfaceCtx->minigamePerfectColorTimer = 5; } @@ -5184,11 +5246,27 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { } } -s16 D_801BFC98[] = { - 78, 54, 29, 5, 0xFFEE, 0xFFD6, 0xFFBD, 0xFFAB, +// Targets to offset each letter to properly spell "PERFECT!" +s16 sMinigamePerfectType3LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTERS] = { + 78, // P + 54, // E + 29, // R + 5, // F + -18, // E + -42, // C + -67, // T + -85, // ! }; -u16 D_801BFCA8[] = { - 0xC000, 0xE000, 0x0000, 0x2000, 0xA000, 0x8000, 0x6000, 0x4000, +// Targets to sweep each letter's angle along an parametric ellipse equation offscreen +u16 sMinigamePerfectType3AngleOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { + 6 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // P + 7 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E + 0 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // R + 1 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // F + 5 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E + 4 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // C + 3 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // T + 2 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // ! }; s16 sMinigamePerfectType3PrimColorTargets[2][3] = { { 255, 255, 255 }, @@ -5198,29 +5276,36 @@ s16 sMinigamePerfectType3PrimColorTargets[2][3] = { void Interface_UpdateMinigamePerfectType3(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; - s16 stepVar1; - s16 stepVar2; - s16 stepVar3; - s16 stepVar4; + s16 colorStepR; + s16 colorStepG; + s16 colorStepB; s16 j = 0; + // Update letter positions for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - interfaceCtx->minigamePerfectLetterDirection[i] = i << 0xD; - interfaceCtx->minigamePerfectLetterPosX[i] = 200.0f; - interfaceCtx->minigamePerfectLetterPosY[i] = 200.0f; - interfaceCtx->minigamePerfectVtxOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SWIRL_IN; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_IN) { - interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; - interfaceCtx->minigamePerfectLetterPosX[i] -= 8.0f; - interfaceCtx->minigamePerfectLetterPosY[i] -= 8.0f; - if (interfaceCtx->minigamePerfectLetterPosX[i] <= 0.0f) { - interfaceCtx->minigamePerfectLetterPosY[i] = 0.0f; - interfaceCtx->minigamePerfectLetterPosX[i] = 0.0f; + // Initialize letter positions along the parameteric ellipse curve + interfaceCtx->minigamePerfectLetterEllipseAngle[i] = i * (0x10000 / MINIGAME_PERFECT_NUM_LETTERS); + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; + + interfaceCtx->minigamePerfectLetterXOffset[i] = 0; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { + // Swirl inwards along a swirlic parametric ellipse equation to the center of the screen + interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] -= 8.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] -= 8.0f; + + if (interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] <= 0.0f) { + // The letter has reached the center of the screen + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 0.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 0.0f; interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; - if (i == 7) { - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SWIRL_OUT; + + if (i == (MINIGAME_PERFECT_NUM_LETTERS - 1)) { + // The last letter has reached the center of the screen + interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SPREAD; interfaceCtx->minigamePerfectColorTimer = 5; interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; @@ -5231,70 +5316,76 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { - stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectVtxOffset[i] - D_801BFC98[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectVtxOffset[i] >= D_801BFC98[i]) { - interfaceCtx->minigamePerfectVtxOffset[i] -= stepVar1; + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { + // Spread out the letters horizontally from the center to the spelt-out word + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - + sMinigamePerfectType3LetterXOffsetSpellingTargets[i]) / + interfaceCtx->minigamePerfectColorTimer; + if (interfaceCtx->minigamePerfectLetterXOffset[i] >= sMinigamePerfectType3LetterXOffsetSpellingTargets[i]) { + interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectVtxOffset[i] += stepVar1; + interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_6) { - interfaceCtx->minigamePerfectLetterDirection[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterDirection[i] == (u16)(D_801BFCA8[i] - 0x8000)) { + } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_EXIT) { + // Swirl outwards along a swirlic parametric ellipse equation offscreen + interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; + if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == + (u16)(sMinigamePerfectType3AngleOffScreenTargets[i] - 0x8000)) { interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; } } } - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SWIRL_OUT) { + if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) { interfaceCtx->minigamePerfectColorTimer--; if (interfaceCtx->minigamePerfectColorTimer == 0) { - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_5; + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_DISPLAY; } interfaceCtx->minigamePerfectColorTimer = 20; } } + // Initialize the next letter in the list if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && - (interfaceCtx->minigamePerfectLetterCount < 8)) { + (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS)) { interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; interfaceCtx->minigamePerfectLetterCount++; } - if ((interfaceCtx->minigamePerfectLetterCount == 8) && - (interfaceCtx->minigamePerfectState[7] == MINIGAME_PERFECT_STATE_5)) { + // Update letter colors + if ((interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) && + (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_DISPLAY)) { - stepVar1 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / - interfaceCtx->minigamePerfectColorTimer; - stepVar2 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / - interfaceCtx->minigamePerfectColorTimer; - stepVar3 = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / - interfaceCtx->minigamePerfectColorTimer; + colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / + interfaceCtx->minigamePerfectColorTimer; + colorStepG = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / + interfaceCtx->minigamePerfectColorTimer; + colorStepB = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - + sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / + interfaceCtx->minigamePerfectColorTimer; if (interfaceCtx->minigamePerfectPrimColor[0] >= sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { - interfaceCtx->minigamePerfectPrimColor[0] -= stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; } else { - interfaceCtx->minigamePerfectPrimColor[0] += stepVar1; + interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; } if (interfaceCtx->minigamePerfectPrimColor[1] >= sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { - interfaceCtx->minigamePerfectPrimColor[1] -= stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; } else { - interfaceCtx->minigamePerfectPrimColor[1] += stepVar2; + interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; } if (interfaceCtx->minigamePerfectPrimColor[2] >= sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { - interfaceCtx->minigamePerfectPrimColor[2] -= stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; } else { - interfaceCtx->minigamePerfectPrimColor[2] += stepVar3; + interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; } interfaceCtx->minigamePerfectColorTimer--; @@ -5303,11 +5394,11 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { interfaceCtx->minigamePerfectColorTargetIndex ^= 1; interfaceCtx->minigamePerfectTimer++; if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < 8; i++) { - interfaceCtx->minigamePerfectLetterPosX[i] = 140.0f; - interfaceCtx->minigamePerfectLetterPosY[i] = 100.0f; - interfaceCtx->minigamePerfectLetterDirection[i] = D_801BFCA8[i]; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_6; + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 140.0f; + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 100.0f; + interfaceCtx->minigamePerfectLetterEllipseAngle[i] = sMinigamePerfectType3AngleOffScreenTargets[i]; + interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_EXIT; } interfaceCtx->minigamePerfectColorTimer = 5; } @@ -5315,22 +5406,23 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { } j = 0; - for (i = 0; i < 8; i++) { + for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { j++; } } - if (j == 8) { + if (j == MINIGAME_PERFECT_NUM_LETTERS) { interfaceCtx->isMinigamePerfect = false; } } +TexturePtr sMinigamePerfectTextures[MINIGAME_PERFECT_NUM_LETTERS] = { + gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, + gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, +}; + void Interface_DrawMinigamePerfect(PlayState* play) { - static TexturePtr sMinigamePerfectTextures[] = { - gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, - gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, - }; InterfaceContext* interfaceCtx = &play->interfaceCtx; f32 letterX; f32 letterY; @@ -5345,12 +5437,14 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - for (vtxOffset = 0, i = 0; i < 8; vtxOffset += 4, i++) { + for (vtxOffset = 0, i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; vtxOffset += 4, i++) { if (interfaceCtx->minigamePerfectState[i] != MINIGAME_PERFECT_STATE_OFF) { - letterX = - Math_SinS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosX[i]; - letterY = - Math_CosS(interfaceCtx->minigamePerfectLetterDirection[i]) * interfaceCtx->minigamePerfectLetterPosY[i]; + + // The positions follow the path of a parametric ellipse equation + letterX = Math_SinS(interfaceCtx->minigamePerfectLetterEllipseAngle[i]) * + interfaceCtx->minigamePerfectLetterEllipseRadiusX[i]; + letterY = Math_CosS(interfaceCtx->minigamePerfectLetterEllipseAngle[i]) * + interfaceCtx->minigamePerfectLetterEllipseRadiusY[i]; // Draw Minigame Perfect Shadows gDPPipeSync(OVERLAY_DISP++); diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index dccbc0667..5ecc035ec 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1123,8 +1123,8 @@ 0x801BFA1C:("sActionVtxWidths","UNK_TYPE2","",0x2), 0x801BFA34:("sActionVtxPosY","UNK_TYPE2","",0x2), 0x801BFA4C:("sActionVtxHeights","UNK_TYPE2","",0x2), - 0x801BFA64:("sMinigamePerfectVtxPosX","UNK_TYPE2","",0x2), - 0x801BFA74:("sMinigamePerfectVtxPosY","UNK_TYPE2","",0x2), + 0x801BFA64:("sMinigamePerfectLetterEllipseCenterX","UNK_TYPE2","",0x2), + 0x801BFA74:("sMinigamePerfectLetterEllipseCenterY","UNK_TYPE2","",0x2), 0x801BFA84:("sPostmanTimerInputBtnAPressed","UNK_TYPE4","",0x4), 0x801BFAB0:("sDoActionTextures","UNK_TYPE1","",0x1), 0x801BFAB8:("magicBorderColors","UNK_TYPE1","",0x1), @@ -1164,13 +1164,13 @@ 0x801BFC10:("D_801BFC10","UNK_TYPE1","",0x1), 0x801BFC14:("sFinalHoursDigitTextures","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), - 0x801BFC50:("D_801BFC50","UNK_TYPE2","",0x2), + 0x801BFC50:("sMinigamePerfectType1AngleOffScreenTargets","UNK_TYPE2","",0x2), 0x801BFC60:("sMinigamePerfectType1PrimColorTargets","s16","[6]",0xC), - 0x801BFC6C:("D_801BFC6C","UNK_TYPE4","",0x4), - 0x801BFC7C:("D_801BFC7C","UNK_TYPE2","",0x2), + 0x801BFC6C:("sMinigamePerfectType2LetterXOffsetSpellingTargets","UNK_TYPE4","",0x4), + 0x801BFC7C:("sMinigamePerfectType2LetterXOffsetOffScreenTargets","UNK_TYPE2","",0x2), 0x801BFC8C:("sMinigamePerfectType2PrimColorTargets","UNK_TYPE1","",0x1), - 0x801BFC98:("D_801BFC98","UNK_TYPE2","",0x2), - 0x801BFCA8:("D_801BFCA8","UNK_TYPE2","",0x2), + 0x801BFC98:("sMinigamePerfectType3LetterXOffsetSpellingTargets","UNK_TYPE2","",0x2), + 0x801BFCA8:("sMinigamePerfectType3AngleOffScreenTargets","UNK_TYPE2","",0x2), 0x801BFCB8:("sMinigamePerfectType3PrimColorTargets","UNK_TYPE1","",0x1), 0x801BFCC4:("sMinigamePerfectTextures","UNK_TYPE4","",0x4), 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), From c74e89857db2863a125dd16d4a7a88c5556f08ce Mon Sep 17 00:00:00 2001 From: engineer124 Date: Mon, 14 Nov 2022 14:38:30 -0500 Subject: [PATCH 155/160] cleanup --- include/z64save.h | 2 +- src/code/z_parameter.c | 95 +++++++++---------- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 2 +- tools/weekeventregconvert.py | 2 +- 4 files changed, 48 insertions(+), 53 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index 85ad8d88f..aad3cfcc4 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -615,7 +615,7 @@ typedef enum SunsSongState { #define WEEKEVENTREG_14_02 PACK_WEEKEVENTREG_FLAG(14, 0x02) #define WEEKEVENTREG_14_04 PACK_WEEKEVENTREG_FLAG(14, 0x04) -#define WEEKEVENTREG_14_08 PACK_WEEKEVENTREG_FLAG(14, 0x08) +#define WEEKEVENTREG_DRANK_CHATEUR_ROMANI PACK_WEEKEVENTREG_FLAG(14, 0x08) #define WEEKEVENTREG_14_10 PACK_WEEKEVENTREG_FLAG(14, 0x10) #define WEEKEVENTREG_14_20 PACK_WEEKEVENTREG_FLAG(14, 0x20) #define WEEKEVENTREG_14_40 PACK_WEEKEVENTREG_FLAG(14, 0x40) diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index b3310c01b..f7baa99c4 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1750,7 +1750,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { s16 i; s16 restoreHudVisibility = false; - if (gSaveContext.eventInf[4] & 2) { + if (CHECK_EVENTINF(EVENTINF_41)) { // Related to swamp boat (non-minigame)? for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTO_BOX) || (msgCtx->msgMode != 0)) { @@ -1777,7 +1777,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - } else if (gSaveContext.save.weekEventReg[90] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_20)) { // Fishermans's jumping minigame for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1786,7 +1786,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (gSaveContext.save.weekEventReg[82] & 8) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_08)) { // Swordsman's log minigame for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { @@ -1795,7 +1795,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); - } else if (gSaveContext.save.weekEventReg[84] & 0x20) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_20)) { // Related to moon child if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { @@ -1835,7 +1835,7 @@ void Interface_UpdateButtonsPart2(PlayState* play) { } gSaveContext.buttonStatus[i] = BTN_DISABLED; } - } else if (gSaveContext.eventInf[3] & 0x10) { + } else if (CHECK_EVENTINF(EVENTINF_34)) { // Deku playground minigame if (player->stateFlags3 & PLAYER_STATE3_1000000) { if (gSaveContext.save.inventory.items[SLOT_NUT] == ITEM_NUT) { @@ -2227,8 +2227,8 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; - if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || - (!(gSaveContext.eventInf[4] & 2) && (play->bButtonAmmoPlusOne >= 2))) { + if ((player->stateFlags1 & PLAYER_STATE1_800000) || CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01) || + (!(CHECK_EVENTINF(EVENTINF_41)) && (play->bButtonAmmoPlusOne >= 2))) { // Riding Epona OR Honey & Darling minigame OR Horseback balloon minigame OR related to swamp boat // (non-minigame?) if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) && @@ -2239,7 +2239,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { - if ((player->transformation == PLAYER_FORM_DEKU) && (gSaveContext.save.weekEventReg[8] & 1)) { + if ((player->transformation == PLAYER_FORM_DEKU) && CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; if (play->sceneId == SCENE_BOWLING) { if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { @@ -2302,14 +2302,14 @@ void Interface_UpdateButtonsPart1(PlayState* play) { (Cutscene_GetSceneLayer(play) != 0) && (play->transitionTrigger == TRANS_TRIGGER_OFF)) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if ((gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) && - (gSaveContext.eventInf[3] & 0x20)) { + (CHECK_EVENTINF(EVENTINF_35))) { Interface_SetHudVisibility(HUD_VISIBILITY_B_MINIMAP); - } else if (!(gSaveContext.save.weekEventReg[0x52] & 8) && + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_82_08) && (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE)) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (play->bButtonAmmoPlusOne >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (gSaveContext.save.weekEventReg[8] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; @@ -2366,7 +2366,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (play->bButtonAmmoPlusOne >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); - } else if (gSaveContext.save.weekEventReg[8] & 1) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_DISABLED; gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_DISABLED; @@ -2391,8 +2391,8 @@ void Interface_UpdateButtonsPart1(PlayState* play) { restoreHudVisibility = true; sPictographState = PICTOGRAPH_STATE_OFF; } else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) || (func_801A5100() == 1)) { - if (!(gSaveContext.eventInf[4] & 2) || - ((gSaveContext.eventInf[4] & 2) && (ActorCutscene_GetCurrentIndex() == -1))) { + if (!(CHECK_EVENTINF(EVENTINF_41)) || + ((CHECK_EVENTINF(EVENTINF_41)) && (ActorCutscene_GetCurrentIndex() == -1))) { play_sound(NA_SE_SY_CAMERA_SHUTTER); SREG(89) = 1; play->haltAllActors = true; @@ -3541,8 +3541,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Drank Chateau Romani + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; @@ -3561,8 +3560,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Drank Chateau Romani + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { magicToConsume = 0; } gSaveContext.magicToConsume = magicToConsume; @@ -3640,8 +3638,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { play->actorCtx.lensActive = false; } - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Drank Chateau Romani + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { magicToConsume = 0; } gSaveContext.save.playerData.magic -= magicToConsume; @@ -3729,8 +3726,7 @@ void Magic_Update(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 magicCapacityTarget; - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Drank Chateau Romani + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { Magic_FlashMeterBorder(); } @@ -3780,7 +3776,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_CONSUME: // Consume magic until target is reached or no more magic is available - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { gSaveContext.save.playerData.magic = ((void)0, gSaveContext.save.playerData.magic) - ((void)0, gSaveContext.magicToConsume); if (gSaveContext.save.playerData.magic <= 0) { @@ -3793,7 +3789,7 @@ void Magic_Update(PlayState* play) { case MAGIC_STATE_METER_FLASH_1: case MAGIC_STATE_METER_FLASH_2: case MAGIC_STATE_METER_FLASH_3: - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { Magic_FlashMeterBorder(); } break; @@ -3827,19 +3823,19 @@ void Magic_Update(PlayState* play) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { gSaveContext.save.playerData.magic--; } interfaceCtx->magicConsumptionTimer = 80; } } - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { Magic_FlashMeterBorder(); } break; case MAGIC_STATE_CONSUME_GORON_ZORA_SETUP: - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { gSaveContext.save.playerData.magic -= 2; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3854,7 +3850,7 @@ void Magic_Update(PlayState* play) { if (!Play_InCsMode(play)) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3864,7 +3860,7 @@ void Magic_Update(PlayState* play) { } } } - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { Magic_FlashMeterBorder(); } break; @@ -3876,7 +3872,7 @@ void Magic_Update(PlayState* play) { if (!Play_InCsMode(play)) { interfaceCtx->magicConsumptionTimer--; if (interfaceCtx->magicConsumptionTimer == 0) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { gSaveContext.save.playerData.magic--; } if (gSaveContext.save.playerData.magic <= 0) { @@ -3886,7 +3882,7 @@ void Magic_Update(PlayState* play) { } } } - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { Magic_FlashMeterBorder(); } break; @@ -3942,8 +3938,8 @@ void Magic_DrawMeter(PlayState* play) { // Fill the rest of the meter with the normal magic color gDPPipeSync(OVERLAY_DISP++); - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Blue magic (drank Chateau Romani) + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { + // Blue magic gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -3955,8 +3951,8 @@ void Magic_DrawMeter(PlayState* play) { (magicBarY + 10) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } else { // Fill the whole meter with the normal magic color - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_08)) { - // Blue magic (drank Chateau Romani) + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DRANK_CHATEUR_ROMANI)) { + // Blue magic gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); @@ -4230,7 +4226,7 @@ void Interface_DrawBButtonIcons(PlayState* play) { if ((player->transformation == PLAYER_FORM_FIERCE_DEITY) || (player->transformation == PLAYER_FORM_HUMAN)) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_NONE) { Interface_DrawItemIconTexture(play, interfaceCtx->iconItemSegment, EQUIP_SLOT_B); - if ((player->stateFlags1 & PLAYER_STATE1_800000) || (gSaveContext.save.weekEventReg[8] & 1) || + if ((player->stateFlags1 & PLAYER_STATE1_800000) || CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01) || (play->bButtonAmmoPlusOne >= 2)) { gDPPipeSync(OVERLAY_DISP++); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, @@ -4240,9 +4236,8 @@ void Interface_DrawBButtonIcons(PlayState* play) { (play->sceneId != SCENE_BOWLING) && ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || (gSaveContext.save.entrance != ENTRANCE(ROMANI_RANCH, 0))) && - ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || - !(gSaveContext.eventInf[3] & 0x20)) && - (!(gSaveContext.save.weekEventReg[31] & 0x80) || (play->bButtonAmmoPlusOne != 100))) { + ((gSaveContext.minigameStatus != MINIGAME_STATUS_ACTIVE) || !(CHECK_EVENTINF(EVENTINF_35))) && + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80) || (play->bButtonAmmoPlusOne != 100))) { Interface_DrawAmmoCount(play, EQUIP_SLOT_B, interfaceCtx->bAlpha); } } @@ -7328,8 +7323,8 @@ void Interface_Init(PlayState* play) { interfaceCtx->minigamePerfectPrimColor[1] = 165; interfaceCtx->minigamePerfectPrimColor[2] = 55; - if (gSaveContext.eventInf[3] & 0x10) { - gSaveContext.eventInf[3] &= (u8)~0x10; + if (CHECK_EVENTINF(EVENTINF_34)) { + CLEAR_EVENTINF(EVENTINF_34); gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; } @@ -7356,15 +7351,15 @@ void Interface_Init(PlayState* play) { (play->sceneId != SCENE_LAST_GORON) && (play->sceneId != SCENE_LAST_ZORA) && (play->sceneId != SCENE_LAST_LINK)) { - gSaveContext.eventInf[5] &= (u8)~0x8; - gSaveContext.eventInf[5] &= (u8)~0x10; - gSaveContext.eventInf[5] &= (u8)~0x20; - gSaveContext.eventInf[5] &= (u8)~0x40; - gSaveContext.eventInf[5] &= (u8)~0x80; - gSaveContext.eventInf[6] &= (u8)~0x1; - gSaveContext.eventInf[6] &= (u8)~0x2; - gSaveContext.eventInf[6] &= (u8)~0x4; - gSaveContext.eventInf[6] &= (u8)~0x8; + CLEAR_EVENTINF(EVENTINF_53); + CLEAR_EVENTINF(EVENTINF_54); + CLEAR_EVENTINF(EVENTINF_55); + CLEAR_EVENTINF(EVENTINF_56); + CLEAR_EVENTINF(EVENTINF_57); + CLEAR_EVENTINF(EVENTINF_60); + CLEAR_EVENTINF(EVENTINF_61); + CLEAR_EVENTINF(EVENTINF_62); + CLEAR_EVENTINF(EVENTINF_63); } sFinalHoursClockDigitsRed = sFinalHoursClockFrameEnvRed = sFinalHoursClockFrameEnvGreen = diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 1edf1ccf0..9b33866e2 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -259,7 +259,7 @@ void func_809542A0(BgIngate* this, PlayState* play) { } void func_80954340(BgIngate* this, PlayState* play) { - if (!DECR(this->unk16A)) { + if (DECR(this->unk16A) == 0) { if (this->timePath != NULL) { func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->timePath = &play->setupPathList[this->timePath->unk1]; diff --git a/tools/weekeventregconvert.py b/tools/weekeventregconvert.py index 4e8ca1311..c4ed7dc7c 100755 --- a/tools/weekeventregconvert.py +++ b/tools/weekeventregconvert.py @@ -119,7 +119,7 @@ weekEventReg = { (14 << 8) | 0x01: "WEEKEVENTREG_14_01", (14 << 8) | 0x02: "WEEKEVENTREG_14_02", (14 << 8) | 0x04: "WEEKEVENTREG_14_04", - (14 << 8) | 0x08: "WEEKEVENTREG_14_08", + (14 << 8) | 0x08: "WEEKEVENTREG_DRANK_CHATEUR_ROMANI", (14 << 8) | 0x10: "WEEKEVENTREG_14_10", (14 << 8) | 0x20: "WEEKEVENTREG_14_20", (14 << 8) | 0x40: "WEEKEVENTREG_14_40", From 10b075567664b09b8524fd9f634a771e9b02448f Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 20 Nov 2022 13:35:22 -0500 Subject: [PATCH 156/160] sync to PRs --- assets/xml/interface/parameter_static.xml | 14 +- include/functions.h | 8 +- include/macros.h | 7 +- include/variables.h | 18 +- include/z64interface.h | 52 +- include/z64save.h | 7 +- src/code/z_demo.c | 2 +- src/code/z_kankyo.c | 6 +- src/code/z_parameter.c | 1644 ++++++++--------- src/code/z_sram_NES.c | 4 +- .../actors/ovl_Bg_Ingate/z_bg_ingate.c | 8 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 7 +- .../actors/ovl_Door_Warp1/z_door_warp1.c | 2 +- src/overlays/actors/ovl_En_Al/z_en_al.c | 2 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 2 +- src/overlays/actors/ovl_En_Baba/z_en_baba.c | 2 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 4 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 4 +- src/overlays/actors/ovl_En_Gm/z_en_gm.c | 2 +- .../z_en_horse_game_check.c | 2 +- src/overlays/actors/ovl_En_Ig/z_en_ig.c | 2 +- src/overlays/actors/ovl_En_Ja/z_en_ja.c | 2 +- src/overlays/actors/ovl_En_Nb/z_en_nb.c | 2 +- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 2 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 10 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 8 +- src/overlays/actors/ovl_En_Tab/z_en_tab.c | 2 +- src/overlays/actors/ovl_En_Test3/z_en_test3.c | 8 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 3 +- src/overlays/actors/ovl_Obj_Um/z_obj_um.c | 8 +- tools/disasm/functions.txt | 16 +- tools/disasm/variables.txt | 18 +- tools/namefixer.py | 2 +- tools/sizes/code_functions.csv | 16 +- 34 files changed, 942 insertions(+), 954 deletions(-) diff --git a/assets/xml/interface/parameter_static.xml b/assets/xml/interface/parameter_static.xml index e5e0808c0..a2ab9e0c5 100644 --- a/assets/xml/interface/parameter_static.xml +++ b/assets/xml/interface/parameter_static.xml @@ -119,13 +119,13 @@ - - - - - - - + + + + + + + diff --git a/include/functions.h b/include/functions.h index 888303d2d..2806bb55e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1383,9 +1383,9 @@ void func_800FD928(s32 param_1); // void func_800FDC94(void); // void func_800FE390(void); // void func_800FE3E0(void); -void func_800FE484(void); -void func_800FE498(void); -u8 func_800FE4A8(void); +void Environment_StopTime(void); +void Environment_StartTime(void); +u8 Environment_IsTimeStopped(void); u32 func_800FE4B8(PlayState* play); // void func_800FE590(void); // void func_800FE5D0(void); @@ -1737,7 +1737,7 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange); void Magic_Add(PlayState* play, s16 magicToAdd); void Magic_Reset(PlayState* play); s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type); -void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType); +void Interface_SetPerfectLetters(PlayState* play, s16 perfectLettersType); void Interface_StartMoonCrash(PlayState* play); void Interface_Draw(PlayState* play); void Interface_Update(PlayState* play); diff --git a/include/macros.h b/include/macros.h index f5638199e..913ccac4a 100644 --- a/include/macros.h +++ b/include/macros.h @@ -48,10 +48,13 @@ #define DAY_LENGTH (CLOCK_TIME(24, 0)) #define TIME_TO_MINUTES_F(time) ((time) * ((24.0f * 60.0f) / 0x10000)) // 0.021972656f -#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f))) - #define TIME_TO_MINUTES_ALT_F(time) ((time) / (0x10000 / (24.0f * 60.0f))) + +#define TIME_TO_SECONDS_F(time) ((time) * ((24.0f * 60.0f * 60.0f) / 0x10000)) + +#define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f))) #define CLOCK_TIME_ALT_F(hr, min) (((hr) * 60.0f + (min)) / (24.0f * 60.0f / 0x10000)) +#define CLOCK_TIME_ALT2_F(hr, min) ((((hr) + (min) / 60.0f) * 60.0f) / (24.0f * 60.0f / 0x10000)) #define CAPACITY(upg, value) gUpgradeCapacities[upg][value] #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) diff --git a/include/variables.h b/include/variables.h index 2d80ceabf..500d35af2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -737,17 +737,17 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BFC10; // extern UNK_TYPE1 sFinalHoursDigitTextures; // extern UNK_TYPE1 D_801BFC40; -// extern UNK_TYPE2 sMinigamePerfectType1AngleOffScreenTargets; -// extern UNK_TYPE2 sMinigamePerfectType1PrimColorTargets; +// extern UNK_TYPE2 sPerfectLettersType1OffScreenAngles; +// extern UNK_TYPE2 sPerfectLettersType1PrimColorTargets; // extern UNK_TYPE2 D_801BFC62; // extern UNK_TYPE2 D_801BFC64; -// extern UNK_TYPE2 sMinigamePerfectType2LetterXOffsetSpellingTargets; -// extern UNK_TYPE2 sMinigamePerfectType2LetterXOffsetOffScreenTargets; -// extern UNK_TYPE1 sMinigamePerfectType2PrimColorTargets; -// extern UNK_TYPE2 sMinigamePerfectType3LetterXOffsetSpellingTargets; -// extern UNK_TYPE2 sMinigamePerfectType3AngleOffScreenTargets; -// extern UNK_TYPE1 sMinigamePerfectType3PrimColorTargets; -// extern UNK_TYPE4 sMinigamePerfectTextures; +// extern UNK_TYPE2 sPerfectLettersType2SpellingOffsetsX; +// extern UNK_TYPE2 sPerfectLettersType2OffScreenOffsetsX; +// extern UNK_TYPE1 sPerfectLettersType2PrimColorTargets; +// extern UNK_TYPE2 sPerfectLettersType3SpellingOffsetsX; +// extern UNK_TYPE2 sPerfectLettersType3OffScreenAngles; +// extern UNK_TYPE1 sPerfectLettersType3PrimColorTargets; +// extern UNK_TYPE4 sPerfectLettersTextures; // extern UNK_TYPE2 sTimerStateTimer; // extern UNK_TYPE2 sTimerDigits; // extern UNK_TYPE2 D_801BFCEA; diff --git a/include/z64interface.h b/include/z64interface.h index 7dcbf0fcb..be2249710 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -74,24 +74,24 @@ typedef enum { } MinigameState; typedef enum { - /* 0 */ MINIGAME_PERFECT_TYPE_OFF, - /* 1 */ MINIGAME_PERFECT_TYPE_1, - /* 2 */ MINIGAME_PERFECT_TYPE_2, - /* 3 */ MINIGAME_PERFECT_TYPE_3 + /* 0 */ PERFECT_LETTERS_TYPE_OFF, + /* 1 */ PERFECT_LETTERS_TYPE_1, + /* 2 */ PERFECT_LETTERS_TYPE_2, + /* 3 */ PERFECT_LETTERS_TYPE_3 } MinigamePerfectType; typedef enum { - /* 0 */ MINIGAME_PERFECT_STATE_OFF, - /* 1 */ MINIGAME_PERFECT_STATE_INIT, - /* 2 */ MINIGAME_PERFECT_STATE_ENTER, - /* 3 */ MINIGAME_PERFECT_STATE_STATIONARY, // Display for type 1 - /* 4 */ MINIGAME_PERFECT_STATE_SPREAD, // Exit for type 1 - /* 5 */ MINIGAME_PERFECT_STATE_DISPLAY, - /* 6 */ MINIGAME_PERFECT_STATE_EXIT + /* 0 */ PERFECT_LETTERS_STATE_OFF, + /* 1 */ PERFECT_LETTERS_STATE_INIT, + /* 2 */ PERFECT_LETTERS_STATE_ENTER, + /* 3 */ PERFECT_LETTERS_STATE_STATIONARY, // Display for type 1 + /* 4 */ PERFECT_LETTERS_STATE_SPREAD, // Exit for type 1 + /* 5 */ PERFECT_LETTERS_STATE_DISPLAY, + /* 6 */ PERFECT_LETTERS_STATE_EXIT } MinigamePerfectState; -#define MINIGAME_PERFECT_NUM_LETTERS 8 -#define MINIGAME_PERFECT_ANGLE_PER_LETTER (0x10000 / MINIGAME_PERFECT_NUM_LETTERS) +#define PERFECT_LETTERS_NUM_LETTERS 8 +#define PERFECT_LETTERS_ANGLE_PER_LETTER (0x10000 / PERFECT_LETTERS_NUM_LETTERS) typedef enum { /* 0 */ STORY_DMA_IDLE, @@ -177,19 +177,19 @@ typedef struct { /* 0x280 */ u8 minigameState; /* 0x282 */ s16 minigameCountdownAlpha; /* 0x284 */ s16 minigameCountdownScale; - /* 0x286 */ s16 isMinigamePerfect; - /* 0x288 */ s16 minigamePerfectType; - /* 0x28A */ s16 minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS]; - /* 0x29A */ u16 minigamePerfectLetterEllipseAngle[MINIGAME_PERFECT_NUM_LETTERS]; - /* 0x2AA */ s16 minigamePerfectLetterXOffset[MINIGAME_PERFECT_NUM_LETTERS]; - /* 0x2BC */ f32 minigamePerfectLetterEllipseRadiusX[MINIGAME_PERFECT_NUM_LETTERS]; - /* 0x2DC */ f32 minigamePerfectLetterEllipseRadiusY[MINIGAME_PERFECT_NUM_LETTERS]; - /* 0x2FC */ s16 minigamePerfectPrimColor[4]; - /* 0x304 */ s16 minigamePerfectLetterCount; - /* 0x306 */ s16 minigamePerfectUnused; - /* 0x308 */ s16 minigamePerfectColorTargetIndex; - /* 0x30A */ s16 minigamePerfectColorTimer; - /* 0x30C */ s16 minigamePerfectTimer; + /* 0x286 */ s16 perfectLettersOn; + /* 0x288 */ s16 perfectLettersType; + /* 0x28A */ s16 perfectLettersState[PERFECT_LETTERS_NUM_LETTERS]; + /* 0x29A */ u16 perfectLettersAngles[PERFECT_LETTERS_NUM_LETTERS]; // Angle that follows the projectory of an ellipse + /* 0x2AA */ s16 perfectLettersOffsetX[PERFECT_LETTERS_NUM_LETTERS]; + /* 0x2BC */ f32 perfectLettersSemiAxisX[PERFECT_LETTERS_NUM_LETTERS]; + /* 0x2DC */ f32 perfectLettersSemiAxisY[PERFECT_LETTERS_NUM_LETTERS]; + /* 0x2FC */ s16 perfectLettersPrimColor[4]; + /* 0x304 */ s16 perfectLettersCount; + /* 0x306 */ s16 perfectLettersUnused; + /* 0x308 */ s16 perfectLettersColorIndex; + /* 0x30A */ s16 perfectLettersColorTimer; + /* 0x30C */ s16 perfectLettersTimer; struct { /* 0x30E */ u8 hGauge; /* 0x30F */ u8 bButton; diff --git a/include/z64save.h b/include/z64save.h index aad3cfcc4..52afb3bf8 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -258,7 +258,7 @@ typedef struct Save { /* 0x000C */ u16 time; // "zelda_time" /* 0x000E */ u16 owlSaveLocation; /* 0x0010 */ s32 isNight; // "asahiru_fg" - /* 0x0014 */ s32 daySpeed; // "change_zelda_time" + /* 0x0014 */ s32 timeSpeedOffset; // "change_zelda_time" /* 0x0018 */ s32 day; // "totalday" /* 0x001C */ s32 daysElapsed; // "eventday" /* 0x0020 */ u8 playerForm; // "player_character" @@ -409,6 +409,11 @@ typedef enum SunsSongState { #define CURRENT_DAY (((void)0, gSaveContext.save.day) % 5) +// The day begins at CLOCK_TIME(6, 0) so it must be offset. +#define TIME_UNTIL_MOON_CRASH \ + ((4 - CURRENT_DAY) * DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0))); +#define TIME_UNTIL_NEW_DAY (DAY_LENGTH - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0))); + #define GET_PLAYER_FORM ((void)0, gSaveContext.save.playerForm) #define SLOT(item) gItemSlots[item] diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 5f6ebc7e1..7e12bcece 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -329,7 +329,7 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c if (R_TIME_SPEED != 0) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; gSaveContext.save.time = - ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); + ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset); } } break; diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index ad66fe4a1..919abbb1d 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -124,11 +124,11 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE3E0.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE484.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StopTime.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE498.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_StartTime.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4A8.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_IsTimeStopped.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FE4B8.s") diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f7baa99c4..4eaab27f7 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -529,7 +529,10 @@ Gfx* Gfx_DrawTexQuad4b(Gfx* gfx, TexturePtr texture, s32 fmt, s16 textureWidth, return gfx; } -s16 sActionVtxPosX[] = { +// Total number of non-minigame-perfect action quads +#define ACTION_QUAD_BASE_COUNT 11 + +s16 sActionVtxPosX[ACTION_QUAD_BASE_COUNT] = { -14, // A Button -14, // A Button Background -24, // A Button Do-Action @@ -542,7 +545,8 @@ s16 sActionVtxPosX[] = { -8, // Three-Day Clock's Hour Digit Above the Moon -12, // Minigame Countdown Textures }; -s16 sActionVtxWidths[] = { + +s16 sActionVtxWidths[ACTION_QUAD_BASE_COUNT] = { 28, // A Button 28, // A Button Background 48, // A Button Do-Action @@ -555,7 +559,8 @@ s16 sActionVtxWidths[] = { 16, // Three-Day Clock's Hour Digit Above the Moon 24, // Minigame Countdown Textures }; -s16 sActionVtxPosY[] = { + +s16 sActionVtxPosY[ACTION_QUAD_BASE_COUNT] = { 14, // A Button 14, // A Button Background 8, // A Button Do-Action @@ -568,7 +573,8 @@ s16 sActionVtxPosY[] = { 59, // Three-Day Clock's Hour Digit Above the Moon 32, // Minigame Countdown Textures }; -s16 sActionVtxHeights[] = { + +s16 sActionVtxHeights[ACTION_QUAD_BASE_COUNT] = { 28, // A Button 28, // A Button Background 16, // A Button Do-Action @@ -582,12 +588,12 @@ s16 sActionVtxHeights[] = { 32, // Minigame Countdown Textures }; -#define MINIGAME_PERFECT_VTX_WIDTH 32 -#define MINIGAME_PERFECT_VTX_HEIGHT 33 +#define PERFECT_LETTERS_VTX_WIDTH 32 +#define PERFECT_LETTERS_VTX_HEIGHT 33 -// Used for MINIGAME_PERFECT_TYPE_1 and only part of MINIGAME_PERFECT_TYPE_3 -// Both MINIGAME_PERFECT_TYPE_2 and MINIGAME_PERFECT_TYPE_2 have (0, 0) as the center for all letters -s16 sMinigamePerfectLetterEllipseCenterX[MINIGAME_PERFECT_NUM_LETTERS] = { +// Used for PERFECT_LETTERS_TYPE_1 and only part of PERFECT_LETTERS_TYPE_3 +// Both PERFECT_LETTERS_TYPE_2 and PERFECT_LETTERS_TYPE_2 have (0, 0) as the center for all letters +s16 sPerfectLettersCenterX[PERFECT_LETTERS_NUM_LETTERS] = { -61, // P -45, // E 29, // R @@ -597,7 +603,8 @@ s16 sMinigamePerfectLetterEllipseCenterX[MINIGAME_PERFECT_NUM_LETTERS] = { 32, // T 55, // ! }; -s16 sMinigamePerfectLetterEllipseCenterY[MINIGAME_PERFECT_NUM_LETTERS] = { + +s16 sPerfectLettersCenterY[PERFECT_LETTERS_NUM_LETTERS] = { 1, // P -70, // E -99, // R @@ -613,8 +620,8 @@ s16 sMinigamePerfectLetterEllipseCenterY[MINIGAME_PERFECT_NUM_LETTERS] = { * interfaceCtx->actionVtx[4] -> A Button Shadow * interfaceCtx->actionVtx[8] -> A Button Do-Action * interfaceCtx->actionVtx[12] -> Three-Day Clock's Star (for the Minute Tracker) - * interfaceCtx->actionVtx[16] -> Three-Day Clock's Sun (for the Day-Time Hours Tracker) - * interfaceCtx->actionVtx[20] -> Three-Day Clock's Moon (for the Night-Time Hours Tracker) + * interfaceCtx->actionVtx[16] -> Three-Day Clock's Sun (for the Day Hours Tracker) + * interfaceCtx->actionVtx[20] -> Three-Day Clock's Moon (for the Night Hours Tracker) * interfaceCtx->actionVtx[24] -> Three-Day Clock's Hour Digit Above the Sun (uses 8 vertices) * interfaceCtx->actionVtx[32] -> Three-Day Clock's Hour Digit Above the Moon (uses 8 vertices) * interfaceCtx->actionVtx[40] -> Minigame Countdown Textures @@ -636,10 +643,6 @@ s16 sMinigamePerfectLetterEllipseCenterY[MINIGAME_PERFECT_NUM_LETTERS] = { * interfaceCtx->actionVtx[104] -> Minigame Perfect Letter ! Colored */ -// TODO: Mess with macros -#define MINIGAME_PERFECT_VTX_SHADOW(index) (interfaceCtx->actionVtx[44 + index]) -#define MINIGAME_PERFECT_VTX_COLOR(index) (interfaceCtx->actionVtx[76 + index]) - #define BEATING_HEART_VTX_X -8 #define BEATING_HEART_VTX_Y -8 #define BEATING_HEART_VTX_WIDTH 16 @@ -651,25 +654,25 @@ void Interface_SetVertices(PlayState* play) { s16 k; s16 shadowOffset; - // 108 = 11 + (2 * 8 minigame perfect)) * 4 vertices per quad play->interfaceCtx.actionVtx = - GRAPH_ALLOC(play->state.gfxCtx, (11 + (2 * MINIGAME_PERFECT_NUM_LETTERS)) * 4 * sizeof(Vtx)); + GRAPH_ALLOC(play->state.gfxCtx, (ACTION_QUAD_BASE_COUNT + (2 * PERFECT_LETTERS_NUM_LETTERS)) * 4 * sizeof(Vtx)); // Loop over all non-minigame perfect vertices - for (k = 0, i = 0; i < 44; i += 4, k++) { + // where (i) is the actionVtx index, (k) is the iterator + for (k = 0, i = 0; i < (ACTION_QUAD_BASE_COUNT * 4); i += 4, k++) { // Left vertices x Pos interfaceCtx->actionVtx[i + 0].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = sActionVtxPosX[k]; // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = - interfaceCtx->actionVtx[i].v.ob[0] + sActionVtxWidths[k]; + interfaceCtx->actionVtx[i + 0].v.ob[0] + sActionVtxWidths[k]; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = sActionVtxPosY[k]; + interfaceCtx->actionVtx[i + 0].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = sActionVtxPosY[k]; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = - interfaceCtx->actionVtx[i].v.ob[1] - sActionVtxHeights[k]; + interfaceCtx->actionVtx[i + 0].v.ob[1] - sActionVtxHeights[k]; // All vertices z Pos interfaceCtx->actionVtx[i + 0].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = @@ -711,91 +714,92 @@ void Interface_SetVertices(PlayState* play) { interfaceCtx->actionVtx[7].v.tc[1] = 32 << 5; // Loop over vertices for the minigame-perfect letters - // Outer loop is to loop over 2 sets of letters: shadowed letters and colored letters + // Outer loop is to loop over 2 sets of letters: shadowed letters (j = 0) and colored letters (j = 1) for (j = 0, shadowOffset = 2; j < 2; j++, shadowOffset -= 2) { - for (k = 0; k < MINIGAME_PERFECT_NUM_LETTERS; k++, i += 4) { - if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) || - ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) && - (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT))) { + // Inner loop is to loop over letters (k) and actionVtx index (i) + for (k = 0; k < PERFECT_LETTERS_NUM_LETTERS; k++, i += 4) { + if ((interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_1) || + ((interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_3) && + (interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_EXIT))) { // Left vertices x Pos - interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = - -((sMinigamePerfectLetterEllipseCenterX[k] - shadowOffset) + 16); + interfaceCtx->actionVtx[i + 0].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = + -((sPerfectLettersCenterX[k] - shadowOffset) + 16); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = - interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; + interfaceCtx->actionVtx[i + 0].v.ob[0] + PERFECT_LETTERS_VTX_WIDTH; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = - (sMinigamePerfectLetterEllipseCenterY[k] - shadowOffset) + 16; + interfaceCtx->actionVtx[i + 0].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = + (sPerfectLettersCenterY[k] - shadowOffset) + 16; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = - interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; + interfaceCtx->actionVtx[i + 0].v.ob[1] - PERFECT_LETTERS_VTX_HEIGHT; - } else if ((interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) || - (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3)) { + } else if ((interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_2) || + (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_3)) { // Left vertices x Pos - interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = - -(interfaceCtx->minigamePerfectLetterXOffset[k] - shadowOffset + 16); + interfaceCtx->actionVtx[i + 0].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = + -(interfaceCtx->perfectLettersOffsetX[k] - shadowOffset + 16); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = - interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; + interfaceCtx->actionVtx[i + 0].v.ob[0] + PERFECT_LETTERS_VTX_WIDTH; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 16 - shadowOffset; + interfaceCtx->actionVtx[i + 0].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 16 - shadowOffset; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = - interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; + interfaceCtx->actionVtx[i + 0].v.ob[1] - PERFECT_LETTERS_VTX_HEIGHT; } else { // Left vertices x Pos - interfaceCtx->actionVtx[i].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = -(216 - shadowOffset); + interfaceCtx->actionVtx[i + 0].v.ob[0] = interfaceCtx->actionVtx[i + 2].v.ob[0] = -(216 - shadowOffset); // Right vertices x Pos interfaceCtx->actionVtx[i + 1].v.ob[0] = interfaceCtx->actionVtx[i + 3].v.ob[0] = - interfaceCtx->actionVtx[i].v.ob[0] + MINIGAME_PERFECT_VTX_WIDTH; + interfaceCtx->actionVtx[i + 0].v.ob[0] + PERFECT_LETTERS_VTX_WIDTH; // Top vertices y Pos - interfaceCtx->actionVtx[i].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 24 - shadowOffset; + interfaceCtx->actionVtx[i + 0].v.ob[1] = interfaceCtx->actionVtx[i + 1].v.ob[1] = 24 - shadowOffset; // Bottom vertices y Pos interfaceCtx->actionVtx[i + 2].v.ob[1] = interfaceCtx->actionVtx[i + 3].v.ob[1] = - interfaceCtx->actionVtx[i].v.ob[1] - MINIGAME_PERFECT_VTX_HEIGHT; + interfaceCtx->actionVtx[i + 0].v.ob[1] - PERFECT_LETTERS_VTX_HEIGHT; } // All vertices z Pos - interfaceCtx->actionVtx[i].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = + interfaceCtx->actionVtx[i + 0].v.ob[2] = interfaceCtx->actionVtx[i + 1].v.ob[2] = interfaceCtx->actionVtx[i + 2].v.ob[2] = interfaceCtx->actionVtx[i + 3].v.ob[2] = 0; // Unused flag - interfaceCtx->actionVtx[i].v.flag = interfaceCtx->actionVtx[i + 1].v.flag = + interfaceCtx->actionVtx[i + 0].v.flag = interfaceCtx->actionVtx[i + 1].v.flag = interfaceCtx->actionVtx[i + 2].v.flag = interfaceCtx->actionVtx[i + 3].v.flag = 0; // Left and Top texture coordinates - interfaceCtx->actionVtx[i].v.tc[0] = interfaceCtx->actionVtx[i].v.tc[1] = + interfaceCtx->actionVtx[i + 0].v.tc[0] = interfaceCtx->actionVtx[i + 0].v.tc[1] = interfaceCtx->actionVtx[i + 1].v.tc[1] = interfaceCtx->actionVtx[i + 2].v.tc[0] = 0; // Right vertices texture coordinates - interfaceCtx->actionVtx[i + 1].v.tc[0] = interfaceCtx->actionVtx[i + 3].v.tc[0] = MINIGAME_PERFECT_VTX_WIDTH + interfaceCtx->actionVtx[i + 1].v.tc[0] = interfaceCtx->actionVtx[i + 3].v.tc[0] = PERFECT_LETTERS_VTX_WIDTH << 5; // Bottom vertices texture coordinates - interfaceCtx->actionVtx[i + 2].v.tc[1] = interfaceCtx->actionVtx[i + 3].v.tc[1] = - MINIGAME_PERFECT_VTX_HEIGHT << 5; + interfaceCtx->actionVtx[i + 2].v.tc[1] = interfaceCtx->actionVtx[i + 3].v.tc[1] = PERFECT_LETTERS_VTX_HEIGHT + << 5; // Set color - interfaceCtx->actionVtx[i].v.cn[0] = interfaceCtx->actionVtx[i + 1].v.cn[0] = + interfaceCtx->actionVtx[i + 0].v.cn[0] = interfaceCtx->actionVtx[i + 1].v.cn[0] = interfaceCtx->actionVtx[i + 2].v.cn[0] = interfaceCtx->actionVtx[i + 3].v.cn[0] = - interfaceCtx->actionVtx[i].v.cn[1] = interfaceCtx->actionVtx[i + 1].v.cn[1] = + interfaceCtx->actionVtx[i + 0].v.cn[1] = interfaceCtx->actionVtx[i + 1].v.cn[1] = interfaceCtx->actionVtx[i + 2].v.cn[1] = interfaceCtx->actionVtx[i + 3].v.cn[1] = - interfaceCtx->actionVtx[i].v.cn[2] = interfaceCtx->actionVtx[i + 1].v.cn[2] = + interfaceCtx->actionVtx[i + 0].v.cn[2] = interfaceCtx->actionVtx[i + 1].v.cn[2] = interfaceCtx->actionVtx[i + 2].v.cn[2] = interfaceCtx->actionVtx[i + 3].v.cn[2] = 255; // Set alpha - interfaceCtx->actionVtx[i].v.cn[3] = interfaceCtx->actionVtx[i + 1].v.cn[3] = + interfaceCtx->actionVtx[i + 0].v.cn[3] = interfaceCtx->actionVtx[i + 1].v.cn[3] = interfaceCtx->actionVtx[i + 2].v.cn[3] = interfaceCtx->actionVtx[i + 3].v.cn[3] = 255; } } @@ -964,7 +968,7 @@ void Interface_NewDay(PlayState* play, s32 day) { (u32)SEGMENT_ROM_START(week_static) + i * 0x510, 0x510); // i is used to store sceneId - for (i = 0; i < 120; i++) { + for (i = 0; i < ARRAY_COUNT(gSaveContext.save.permanentSceneFlags); i++) { gSaveContext.save.permanentSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest; gSaveContext.save.permanentSceneFlags[i].switch0 = gSaveContext.cycleSceneFlags[i].switch0; gSaveContext.save.permanentSceneFlags[i].switch1 = gSaveContext.cycleSceneFlags[i].switch1; @@ -4470,8 +4474,8 @@ void Interface_DrawPauseMenuEquippingIcons(PlayState* play) { #ifdef NON_MATCHING void Interface_DrawClock(PlayState* play) { static s16 sThreeDayClockAlpha = 255; - static s16 D_801BFB30 = 0; // clockAlphaTimer1 - static s16 D_801BFB34 = 0; // clockAlphaTimer2 + static s16 D_801BFB30 = 0; // sClockAlphaTimer1 + static s16 D_801BFB34 = 0; // sClockAlphaTimer2 static u16 sThreeDayClockHours[] = { CLOCK_TIME(0, 0), CLOCK_TIME(1, 0), CLOCK_TIME(2, 0), CLOCK_TIME(3, 0), CLOCK_TIME(4, 0), CLOCK_TIME(5, 0), CLOCK_TIME(6, 0), CLOCK_TIME(7, 0), CLOCK_TIME(8, 0), CLOCK_TIME(9, 0), @@ -4487,30 +4491,30 @@ void Interface_DrawClock(PlayState* play) { gThreeDayClockHour4Tex, gThreeDayClockHour5Tex, gThreeDayClockHour6Tex, gThreeDayClockHour7Tex, gThreeDayClockHour8Tex, gThreeDayClockHour9Tex, gThreeDayClockHour10Tex, gThreeDayClockHour11Tex, }; - static s16 D_801BFBCC = 0; // clockInvDiamondPrimRed - static s16 D_801BFBD0 = 0; // clockInvDiamondPrimGreen - static s16 D_801BFBD4 = 255; // clockInvDiamondPrimBlue - static s16 D_801BFBD8 = 0; // clockInvDiamondEnvRed - static s16 D_801BFBDC = 0; // clockInvDiamondEnvGreen - static s16 D_801BFBE0 = 0; // clockInvDiamondEnvBlue - static s16 D_801BFBE4 = 15; // clockInvDiamondTimer - static s16 D_801BFBE8 = 0; // clockInvDiamondTargetIndex - static s16 D_801BFBEC[] = { 100, 0 }; // clockInvDiamondPrimRedTargets - static s16 D_801BFBF0[] = { 205, 155 }; // clockInvDiamondPrimGreenTargets - static s16 D_801BFBF4[] = { 255, 255 }; // clockInvDiamondPrimBlueTargets - static s16 D_801BFBF8[] = { 30, 0 }; // clockInvDiamondEnvRedTargets - static s16 D_801BFBFC[] = { 30, 0 }; // clockInvDiamondEnvGreenTargets - static s16 D_801BFC00[] = { 100, 0 }; // clockInvDiamondEnvBlueTargets - static s16 D_801BFC04[] = { 255, 0 }; // finalHoursClockDigitsRed - static s16 D_801BFC08[] = { 100, 0 }; // finalHoursClockFrameEnvRedTargets - static s16 D_801BFC0C[] = { 30, 0 }; // finalHoursClockFrameEnvGreenTargets - static s16 D_801BFC10[] = { 100, 0 }; // finalHoursClockFrameEnvBlueTargets + static s16 D_801BFBCC = 0; // sClockInvDiamondPrimRed + static s16 D_801BFBD0 = 0; // sClockInvDiamondPrimGreen + static s16 D_801BFBD4 = 255; // sClockInvDiamondPrimBlue + static s16 D_801BFBD8 = 0; // sClockInvDiamondEnvRed + static s16 D_801BFBDC = 0; // sClockInvDiamondEnvGreen + static s16 D_801BFBE0 = 0; // sClockInvDiamondEnvBlue + static s16 D_801BFBE4 = 15; // sClockInvDiamondTimer + static s16 D_801BFBE8 = 0; // sClockInvDiamondTargetIndex + static s16 D_801BFBEC[] = { 100, 0 }; // sClockInvDiamondPrimRedTargets + static s16 D_801BFBF0[] = { 205, 155 }; // sClockInvDiamondPrimGreenTargets + static s16 D_801BFBF4[] = { 255, 255 }; // sClockInvDiamondPrimBlueTargets + static s16 D_801BFBF8[] = { 30, 0 }; // sClockInvDiamondEnvRedTargets + static s16 D_801BFBFC[] = { 30, 0 }; // sClockInvDiamondEnvGreenTargets + static s16 D_801BFC00[] = { 100, 0 }; // sClockInvDiamondEnvBlueTargets + static s16 D_801BFC04[] = { 255, 0 }; // sFinalHoursClockDigitsRed + static s16 D_801BFC08[] = { 100, 0 }; // sFinalHoursClockFrameEnvRedTargets + static s16 D_801BFC0C[] = { 30, 0 }; // sFinalHoursClockFrameEnvGreenTargets + static s16 D_801BFC10[] = { 100, 0 }; // sFinalHoursClockFrameEnvBlueTargets static TexturePtr sFinalHoursDigitTextures[] = { gFinalHoursClockDigit0Tex, gFinalHoursClockDigit1Tex, gFinalHoursClockDigit2Tex, gFinalHoursClockDigit3Tex, gFinalHoursClockDigit4Tex, gFinalHoursClockDigit5Tex, gFinalHoursClockDigit6Tex, gFinalHoursClockDigit7Tex, gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, }; - // finalHoursDigitSlotPosXOffset + // sFinalHoursDigitSlotPosXOffset static s16 D_801BFC40[] = { 127, 136, 144, 151, 160, 168, 175, 184, }; @@ -4518,10 +4522,10 @@ void Interface_DrawClock(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; s16 sp1E6; f32 temp_f14; - u32 timeBeforeMoonCrash; + u32 timeUntilMoonCrash; f32 sp1D8; f32 timeInMinutes; - f32 sp1D0; + f32 timeInSeconds; f32 sp1CC; s32 new_var; s16 sp1C6; @@ -4538,468 +4542,456 @@ void Interface_DrawClock(PlayState* play) { if ((msgCtx->msgMode == 0) || ((play->actorCtx.flags & ACTORCTX_FLAG_1) && !Play_InCsMode(play)) || (msgCtx->msgMode == 0) || ((msgCtx->currentTextId >= 0x100) && (msgCtx->currentTextId <= 0x200)) || (gSaveContext.gameMode == 3)) { - if (!FrameAdvance_IsEnabled(&play->state)) { - if (func_800FE4A8() == 0) { - if (((void)0, gSaveContext.save.day) < 4) { - /** - * Changes Clock's transparancy depending if Player is moving or not and possibly other things - */ - if (((void)0, gSaveContext.hudVisibility) == HUD_VISIBILITY_ALL) { - if (func_801234D4(play) != 0) { - sThreeDayClockAlpha = 80; - D_801BFB30 = 5; - D_801BFB34 = 20; - } else if (D_801BFB34 != 0) { - D_801BFB34--; - } else if (D_801BFB30 != 0) { - colorStep = ABS_ALT(sThreeDayClockAlpha - 255) / D_801BFB30; - sThreeDayClockAlpha += colorStep; + if (!FrameAdvance_IsEnabled(&play->state) && !Environment_IsTimeStopped() && (gSaveContext.save.day < 4)) { + /** + * Changes Clock's transparancy depending if Player is moving or not and possibly other things + */ + if (gSaveContext.hudVisibility == HUD_VISIBILITY_ALL) { + if (func_801234D4(play)) { + sThreeDayClockAlpha = 80; + D_801BFB30 = 5; + D_801BFB34 = 20; + } else if (D_801BFB34 != 0) { + D_801BFB34--; + } else if (D_801BFB30 != 0) { + colorStep = ABS_ALT(sThreeDayClockAlpha - 255) / D_801BFB30; + sThreeDayClockAlpha += colorStep; - if (sThreeDayClockAlpha >= 255) { - sThreeDayClockAlpha = 255; - D_801BFB30 = 0; - } - } else { - if (play->actorCtx.flags & ACTORCTX_FLAG_1) { - sThreeDayClockAlpha = 255; - } else { - sThreeDayClockAlpha = interfaceCtx->bAlpha; - } - D_801BFB34 = 0; - D_801BFB30 = 0; - } - } else { - if (play->actorCtx.flags & ACTORCTX_FLAG_1) { - sThreeDayClockAlpha = 255; - } else { - sThreeDayClockAlpha = interfaceCtx->bAlpha; - } - D_801BFB34 = 0; + if (sThreeDayClockAlpha >= 255) { + sThreeDayClockAlpha = 255; D_801BFB30 = 0; } + } else { + if (play->actorCtx.flags & ACTORCTX_FLAG_1) { + sThreeDayClockAlpha = 255; + } else { + sThreeDayClockAlpha = interfaceCtx->bAlpha; + } + D_801BFB34 = 0; + D_801BFB30 = 0; + } + } else { + if (play->actorCtx.flags & ACTORCTX_FLAG_1) { + sThreeDayClockAlpha = 255; + } else { + sThreeDayClockAlpha = interfaceCtx->bAlpha; + } + D_801BFB34 = 0; + D_801BFB30 = 0; + } - if ((play->pauseCtx.state == PAUSE_STATE_OFF) && - (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { + if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { - func_8012C654(play->state.gfxCtx); + func_8012C654(play->state.gfxCtx); - /** - * Draw Clock's Hour Lines - */ - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, sThreeDayClockAlpha); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, - PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + /** + * Draw Clock's Hour Lines + */ + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 130, 130, 130, sThreeDayClockAlpha); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); - OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, - 180, 128, 35, 1, 6, 0, 1 << 10, 1 << 10); + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockHourLinesTex, 4, 64, 35, 96, 180, 128, + 35, 1, 6, 0, 1 << 10, 1 << 10); - /** - * Draw Clock's Border - */ - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, sThreeDayClockAlpha); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, - PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); + /** + * Draw Clock's Border + */ + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, sThreeDayClockAlpha); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); - //! @bug A texture height of 50 is given below. The texture is only 48 units height - //! resulting in this reading into the next texture. This results in a white - //! dot in the bottom center of the clock. For the three-day clock, this is - //! covered by the diamond. However, it can be seen by the final-hours clock. - OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, - 128, 50, 1, 6, 0, 1 << 10, 1 << 10); + //! @bug A texture height of 50 is given below. The texture is only 48 units height + //! resulting in this reading into the next texture. This results in a white + //! dot in the bottom center of the clock. For the three-day clock, this is + //! covered by the diamond. However, it can be seen by the final-hours clock. + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gThreeDayClockBorderTex, 4, 64, 50, 96, 168, 128, 50, + 1, 6, 0, 1 << 10, 1 << 10); - if (((CURRENT_DAY >= 4) || - ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && - (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { - func_8012C8D4(play->state.gfxCtx); - gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if (((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && + (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0))))) { + func_8012C8D4(play->state.gfxCtx); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + } else { + /** + * Draw Three-Day Clock's Diamond + */ + gDPPipeSync(OVERLAY_DISP++); + + // Time is slowed down to half speed with inverted song of time + if (gSaveContext.save.timeSpeedOffset == -2) { + // Clock diamond is blue and flashes white + colorStep = ABS_ALT(D_801BFBCC - D_801BFBEC[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBCC >= D_801BFBEC[D_801BFBE8]) { + D_801BFBCC -= colorStep; } else { - /** - * Draw Three-Day Clock's Diamond - */ - gDPPipeSync(OVERLAY_DISP++); - - // Time is slowed down to half speed with inverted song of time - if (gSaveContext.save.daySpeed == -2) { - // Clock diamond is blue and flashes white - colorStep = ABS_ALT(D_801BFBCC - D_801BFBEC[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBCC >= D_801BFBEC[D_801BFBE8]) { - D_801BFBCC -= colorStep; - } else { - D_801BFBCC += colorStep; - } - - colorStep = ABS_ALT(D_801BFBD0 - D_801BFBF0[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBD0 >= D_801BFBF0[D_801BFBE8]) { - D_801BFBD0 -= colorStep; - } else { - D_801BFBD0 += colorStep; - } - - colorStep = ABS_ALT(D_801BFBD4 - D_801BFBF4[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBD4 >= D_801BFBF4[D_801BFBE8]) { - D_801BFBD4 -= colorStep; - } else { - D_801BFBD4 += colorStep; - } - - colorStep = ABS_ALT(D_801BFBD8 - D_801BFBF8[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBD8 >= D_801BFBF8[D_801BFBE8]) { - D_801BFBD8 -= colorStep; - } else { - D_801BFBD8 += colorStep; - } - - colorStep = ABS_ALT(D_801BFBDC - D_801BFBFC[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBDC >= D_801BFBFC[D_801BFBE8]) { - D_801BFBDC -= colorStep; - } else { - D_801BFBDC += colorStep; - } - - colorStep = ABS_ALT(D_801BFBE0 - D_801BFC00[D_801BFBE8]) / D_801BFBE4; - if (D_801BFBE0 >= D_801BFC00[D_801BFBE8]) { - D_801BFBE0 -= colorStep; - } else { - D_801BFBE0 += colorStep; - } - - D_801BFBE4--; - - if (D_801BFBE4 == 0) { - D_801BFBCC = D_801BFBEC[D_801BFBE8]; - D_801BFBD0 = D_801BFBF0[D_801BFBE8]; - D_801BFBD4 = D_801BFBF4[D_801BFBE8]; - D_801BFBD8 = D_801BFBF8[D_801BFBE8]; - D_801BFBDC = D_801BFBFC[D_801BFBE8]; - D_801BFBE0 = D_801BFC00[D_801BFBE8]; - D_801BFBE4 = 15; - D_801BFBE8 ^= 1; - } - - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, - TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, - ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, - sThreeDayClockAlpha); - gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); - } else { - // Clock diamond is green for regular daySpeed - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, sThreeDayClockAlpha); - } - - OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, - 190, 40, 32, 1 << 10, 1 << 10); - - /** - * Draw Three-Day Clock's Day-Number over Diamond - */ - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); - - OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, - 48, 27, 137, 192, 48, 27, 1 << 10, 1 << 10); - - /** - * Draw Three-Day Clock's Star (for the Minute Tracker) - */ - gDPPipeSync(OVERLAY_DISP++); - - if (D_801BF974 != 0) { - D_801BF980 += 0.02f; - D_801BF97C += 11; - } else { - D_801BF980 -= 0.02f; - D_801BF97C -= 11; - } - - D_801BF978--; - if (D_801BF978 == 0) { - D_801BF978 = 10; - D_801BF974 ^= 1; - } - - sp1D0 = gSaveContext.save.time * 1.3183594f; - sp1D0 -= ((s16)(sp1D0 / 3600.0f)) * 3600.0f; - - func_8012C8D4(play->state.gfxCtx); - - gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - if (sThreeDayClockAlpha != 255) { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, sThreeDayClockAlpha); - } else { - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BF97C); - } - - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - - Matrix_Translate(0.0f, -86.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(1.0f, 1.0f, D_801BF980, MTXMODE_APPLY); - Matrix_RotateZF(-(sp1D0 * 0.0175f) / 10.0f, MTXMODE_APPLY); - - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayClockStarMinuteTex, G_IM_FMT_I, 16, 16, - 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, - G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + D_801BFBCC += colorStep; } - /** - * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock - */ - gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF * 4.0f); - - // determines the current hour - for (sp1C6 = 0; sp1C6 <= 24; sp1C6++) { - if (((void)0, gSaveContext.save.time) < sThreeDayClockHours[sp1C6 + 1]) { - break; - } + colorStep = ABS_ALT(D_801BFBD0 - D_801BFBF0[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD0 >= D_801BFBF0[D_801BFBE8]) { + D_801BFBD0 -= colorStep; + } else { + D_801BFBD0 += colorStep; } - /** - * Draw Three-Day Clock's Sun (for the Day-Time Hours Tracker) - */ - time = gSaveContext.save.time; - sp1D8 = Math_SinS(time) * -40.0f; - temp_f14 = Math_CosS(time) * -34.0f; + colorStep = ABS_ALT(D_801BFBD4 - D_801BFBF4[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD4 >= D_801BFBF4[D_801BFBE8]) { + D_801BFBD4 -= colorStep; + } else { + D_801BFBD4 += colorStep; + } - gDPPipeSync(OVERLAY_DISP++); + colorStep = ABS_ALT(D_801BFBD8 - D_801BFBF8[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBD8 >= D_801BFBF8[D_801BFBE8]) { + D_801BFBD8 -= colorStep; + } else { + D_801BFBD8 += colorStep; + } + + colorStep = ABS_ALT(D_801BFBDC - D_801BFBFC[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBDC >= D_801BFBFC[D_801BFBE8]) { + D_801BFBDC -= colorStep; + } else { + D_801BFBDC += colorStep; + } + + colorStep = ABS_ALT(D_801BFBE0 - D_801BFC00[D_801BFBE8]) / D_801BFBE4; + if (D_801BFBE0 >= D_801BFC00[D_801BFBE8]) { + D_801BFBE0 -= colorStep; + } else { + D_801BFBE0 += colorStep; + } + + D_801BFBE4--; + + if (D_801BFBE4 == 0) { + D_801BFBCC = D_801BFBEC[D_801BFBE8]; + D_801BFBD0 = D_801BFBF0[D_801BFBE8]; + D_801BFBD4 = D_801BFBF4[D_801BFBE8]; + D_801BFBD8 = D_801BFBF8[D_801BFBE8]; + D_801BFBDC = D_801BFBFC[D_801BFBE8]; + D_801BFBE0 = D_801BFC00[D_801BFBE8]; + D_801BFBE4 = 15; + D_801BFBE8 ^= 1; + } + + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, + PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, + PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BFBCC, D_801BFBD0, 255, sThreeDayClockAlpha); + gDPSetEnvColor(OVERLAY_DISP++, D_801BFBD8, D_801BFBDC, D_801BFBE0, 0); + } else { + // Clock diamond is green for regular timeSpeedOffset gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 110, sThreeDayClockAlpha); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 170, 100, sThreeDayClockAlpha); + } - Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); - Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gThreeDayClockDiamondTex, 40, 32, 140, 190, 40, + 32, 1 << 10, 1 << 10); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); + /** + * Draw Three-Day Clock's Day-Number over Diamond + */ + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); - OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); + OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, interfaceCtx->doActionSegment + 0x780, 48, 27, + 137, 192, 48, 27, 1 << 10, 1 << 10); - /** - * Draw Three-Day Clock's Moon (for the Night-Time Hours Tracker) - */ - sp1D8 = Math_SinS(time) * 40.0f; - temp_f14 = Math_CosS(time) * 34.0f; + /** + * Draw Three-Day Clock's Star (for the Minute Tracker) + */ + gDPPipeSync(OVERLAY_DISP++); - gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 55, sThreeDayClockAlpha); + if (D_801BF974 != 0) { + D_801BF980 += 0.02f; + D_801BF97C += 11; + } else { + D_801BF980 -= 0.02f; + D_801BF97C -= 11; + } - Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); - Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); + D_801BF978--; + if (D_801BF978 == 0) { + D_801BF978 = 10; + D_801BF974 ^= 1; + } - OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); + timeInSeconds = TIME_TO_SECONDS_F(gSaveContext.save.time); + timeInSeconds -= ((s16)(timeInSeconds / 3600.0f)) * 3600.0f; - /** - * Cuts off Three-Day Clock's Hour Digits when they dip below the clock - */ - gDPPipeSync(OVERLAY_DISP++); - gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, - R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF * 4.0f); + func_8012C8D4(play->state.gfxCtx); - /** - * Draws Three-Day Clock's Hour Digit Above the Sun - */ - sp1CC = gSaveContext.save.time * 0.000096131f; + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - // Rotates Three-Day Clock's Hour Digit To Above the Sun - Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - Matrix_RotateZF(-(sp1CC - 3.15f), MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if (sThreeDayClockAlpha != 255) { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, sThreeDayClockAlpha); + } else { + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 110, D_801BF97C); + } - // Draws Three-Day Clock's Hour Digit Above the Sun - gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, - PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + + Matrix_Translate(0.0f, -86.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, D_801BF980, MTXMODE_APPLY); + Matrix_RotateZF(-(timeInSeconds * 0.0175f) / 10.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[12], 4, 0); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, gThreeDayClockStarMinuteTex, G_IM_FMT_I, 16, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0); + } + + /** + * Cuts off Three-Day Clock's Sun and Moon when they dip below the clock + */ + gDPPipeSync(OVERLAY_DISP++); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF * 4.0f); + + // determines the current hour + for (sp1C6 = 0; sp1C6 <= 24; sp1C6++) { + if (((void)0, gSaveContext.save.time) < sThreeDayClockHours[sp1C6 + 1]) { + break; + } + } + + /** + * Draw Three-Day Clock's Sun (for the Day-Time Hours Tracker) + */ + time = gSaveContext.save.time; + sp1D8 = Math_SinS(time) * -40.0f; + temp_f14 = Math_CosS(time) * -34.0f; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 100, 110, sThreeDayClockAlpha); + + Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[16], 4, 0); + + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockSunHourTex, 24, 24, 0); + + /** + * Draw Three-Day Clock's Moon (for the Night-Time Hours Tracker) + */ + sp1D8 = Math_SinS(time) * 40.0f; + temp_f14 = Math_CosS(time) * 34.0f; + + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 55, sThreeDayClockAlpha); + + Matrix_Translate(sp1D8, temp_f14, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[20], 4, 0); + + OVERLAY_DISP = Gfx_DrawTexQuadIA8(OVERLAY_DISP, gThreeDayClockMoonHourTex, 24, 24, 0); + + /** + * Cuts off Three-Day Clock's Hour Digits when they dip below the clock + */ + gDPPipeSync(OVERLAY_DISP++); + gDPSetScissorFrac(OVERLAY_DISP++, G_SC_NON_INTERLACE, 400, 620, 880, + R_THREE_DAY_CLOCK_HOUR_DIGIT_CUTOFF * 4.0f); + + /** + * Draws Three-Day Clock's Hour Digit Above the Sun + */ + sp1CC = gSaveContext.save.time * 0.000096131f; + + // Rotates Three-Day Clock's Hour Digit To Above the Sun + Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_RotateZF(-(sp1CC - 3.15f), MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + // Draws Three-Day Clock's Hour Digit Above the Sun + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[24], 8, 0); + + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); + + // Colours the Three-Day Clocks's Hour Digit Above the Sun + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); + gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + + /** + * Draws Three-Day Clock's Hour Digit Above the Moon + */ + // Rotates Three-Day Clock's Hour Digit To Above the Moon + Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); + Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); + Matrix_RotateZF(-sp1CC, MTXMODE_APPLY); + gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + // Draws Three-Day Clock's Hour Digit Above the Moon + gDPPipeSync(OVERLAY_DISP++); + gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, + TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); + gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); + + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); + + // Colours the Three-Day Clocks's Hour Digit Above the Moon + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); + gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); + + gSPDisplayList(OVERLAY_DISP++, D_0E000000.setScissor); + + // Final Hours + if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && + (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) { + if (((void)0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { + // The Final Hours clock will flash red + + colorStep = + ABS_ALT(sFinalHoursClockDigitsRed - D_801BFC04[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockDigitsRed >= D_801BFC04[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockDigitsRed -= colorStep; + } else { + sFinalHoursClockDigitsRed += colorStep; + } + + colorStep = + ABS_ALT(sFinalHoursClockFrameEnvRed - D_801BFC08[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvRed >= D_801BFC08[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvRed -= colorStep; + } else { + sFinalHoursClockFrameEnvRed += colorStep; + } + + colorStep = + ABS_ALT(sFinalHoursClockFrameEnvGreen - D_801BFC0C[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvGreen >= D_801BFC0C[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvGreen -= colorStep; + } else { + sFinalHoursClockFrameEnvGreen += colorStep; + } + + colorStep = + ABS_ALT(sFinalHoursClockFrameEnvBlue - D_801BFC10[sFinalHoursClockColorTargetIndex]) / + sFinalHoursClockColorTimer; + if (sFinalHoursClockFrameEnvBlue >= D_801BFC10[sFinalHoursClockColorTargetIndex]) { + sFinalHoursClockFrameEnvBlue -= colorStep; + } else { + sFinalHoursClockFrameEnvBlue += colorStep; + } + + sFinalHoursClockColorTimer--; + + if (sFinalHoursClockColorTimer == 0) { + sFinalHoursClockDigitsRed = D_801BFC04[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvRed = D_801BFC08[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvGreen = D_801BFC0C[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockFrameEnvBlue = D_801BFC10[sFinalHoursClockColorTargetIndex]; + sFinalHoursClockColorTimer = 6; + sFinalHoursClockColorTargetIndex ^= 1; + } + } + + sp1E6 = sThreeDayClockAlpha; + if (sp1E6 != 0) { + sp1E6 = 255; + } + + func_8012C654(play->state.gfxCtx); + + /** + * Draws Final-Hours Clock's Frame + */ + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); + gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, + PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, + PRIMITIVE, 0); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 195, sp1E6); + gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, sFinalHoursClockFrameEnvGreen, + sFinalHoursClockFrameEnvBlue, 0); + + OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, 202, + 80, 13, 0, 0, 0, 1 << 10, 1 << 10); + + finalHoursClockSlots[0] = 0; + + timeUntilMoonCrash = TIME_UNTIL_MOON_CRASH; + + timeInMinutes = TIME_TO_MINUTES_F(timeUntilMoonCrash); + + // digits for hours + finalHoursClockSlots[1] = timeInMinutes / 60.0f; + finalHoursClockSlots[2] = timeInMinutes / 60.0f; + + temp = (s32)timeInMinutes % 60; + + while (finalHoursClockSlots[1] >= 10) { + finalHoursClockSlots[0]++; + finalHoursClockSlots[1] -= 10; + } + + // digits for minutes + finalHoursClockSlots[3] = 0; + finalHoursClockSlots[4] = temp; + + while (finalHoursClockSlots[4] >= 10) { + finalHoursClockSlots[3]++; + finalHoursClockSlots[4] -= 10; + } + + // digits for seconds + finalHoursClockSlots[6] = 0; + finalHoursClockSlots[7] = + timeUntilMoonCrash - (u32)((finalHoursClockSlots[2] * ((f32)0x10000 / 24)) + + (((void)0, temp) * ((f32)0x10000 / (24 * 60)))); + + while (finalHoursClockSlots[7] >= 10) { + finalHoursClockSlots[6]++; + finalHoursClockSlots[7] -= 10; + } + + // Colon separating hours from minutes and minutes from seconds + finalHoursClockSlots[2] = finalHoursClockSlots[5] = 10; + + /** + * Draws Final-Hours Clock's Digits + */ + gDPPipeSync(OVERLAY_DISP++); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sFinalHoursClockDigitsRed, 0, 0, sp1E6); + gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockDigitsRed, 0, 0, 0); + + for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { + index = D_801BFC40[sp1C6]; OVERLAY_DISP = - Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); - - // Colours the Three-Day Clocks's Hour Digit Above the Sun - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); - gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); - - /** - * Draws Three-Day Clock's Hour Digit Above the Moon - */ - // Rotates Three-Day Clock's Hour Digit To Above the Moon - Matrix_Translate(0.0f, R_THREE_DAY_CLOCK_Y_POS / 10.0f, 0.0f, MTXMODE_NEW); - Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - Matrix_RotateZF(-sp1CC, MTXMODE_APPLY); - gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - // Draws Three-Day Clock's Hour Digit Above the Moon - gDPPipeSync(OVERLAY_DISP++); - gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, - PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, sThreeDayClockAlpha); - gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[32], 8, 0); - - OVERLAY_DISP = - Gfx_DrawTexQuad4b(OVERLAY_DISP, sThreeDayClockHourTextures[sp1C6], 4, 16, 11, 0); - - // Colours the Three-Day Clocks's Hour Digit Above the Moon - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 155, sThreeDayClockAlpha); - gSP1Quadrangle(OVERLAY_DISP++, 4, 6, 7, 5, 0); - - // Unknown - gSPDisplayList(OVERLAY_DISP++, D_0E0001C8); - - // Final Hours - if ((CURRENT_DAY >= 4) || ((CURRENT_DAY == 3) && (((void)0, gSaveContext.save.time) >= 5) && - (((void)0, gSaveContext.save.time) < CLOCK_TIME(6, 0)))) { - if (((void)0, gSaveContext.save.time) >= CLOCK_TIME(5, 0)) { - // The Final Hours clock will flash red - - colorStep = ABS_ALT(sFinalHoursClockDigitsRed - - D_801BFC04[sFinalHoursClockColorTargetIndex]) / - sFinalHoursClockColorTimer; - if (sFinalHoursClockDigitsRed >= D_801BFC04[sFinalHoursClockColorTargetIndex]) { - sFinalHoursClockDigitsRed -= colorStep; - } else { - sFinalHoursClockDigitsRed += colorStep; - } - - colorStep = ABS_ALT(sFinalHoursClockFrameEnvRed - - D_801BFC08[sFinalHoursClockColorTargetIndex]) / - sFinalHoursClockColorTimer; - if (sFinalHoursClockFrameEnvRed >= D_801BFC08[sFinalHoursClockColorTargetIndex]) { - sFinalHoursClockFrameEnvRed -= colorStep; - } else { - sFinalHoursClockFrameEnvRed += colorStep; - } - - colorStep = ABS_ALT(sFinalHoursClockFrameEnvGreen - - D_801BFC0C[sFinalHoursClockColorTargetIndex]) / - sFinalHoursClockColorTimer; - if (sFinalHoursClockFrameEnvGreen >= D_801BFC0C[sFinalHoursClockColorTargetIndex]) { - sFinalHoursClockFrameEnvGreen -= colorStep; - } else { - sFinalHoursClockFrameEnvGreen += colorStep; - } - - colorStep = ABS_ALT(sFinalHoursClockFrameEnvBlue - - D_801BFC10[sFinalHoursClockColorTargetIndex]) / - sFinalHoursClockColorTimer; - if (sFinalHoursClockFrameEnvBlue >= D_801BFC10[sFinalHoursClockColorTargetIndex]) { - sFinalHoursClockFrameEnvBlue -= colorStep; - } else { - sFinalHoursClockFrameEnvBlue += colorStep; - } - - sFinalHoursClockColorTimer--; - - if (sFinalHoursClockColorTimer == 0) { - sFinalHoursClockDigitsRed = D_801BFC04[sFinalHoursClockColorTargetIndex]; - sFinalHoursClockFrameEnvRed = D_801BFC08[sFinalHoursClockColorTargetIndex]; - sFinalHoursClockFrameEnvGreen = D_801BFC0C[sFinalHoursClockColorTargetIndex]; - sFinalHoursClockFrameEnvBlue = D_801BFC10[sFinalHoursClockColorTargetIndex]; - sFinalHoursClockColorTimer = 6; - sFinalHoursClockColorTargetIndex ^= 1; - } - } - - sp1E6 = sThreeDayClockAlpha; - if (sp1E6 != 0) { - sp1E6 = 255; - } - - func_8012C654(play->state.gfxCtx); - - /** - * Draws Final-Hours Clock's Frame - */ - gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gDPSetAlphaCompare(OVERLAY_DISP++, G_AC_THRESHOLD); - gDPSetRenderMode(OVERLAY_DISP++, G_RM_XLU_SURF, G_RM_XLU_SURF2); - gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, - 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, - 0, PRIMITIVE, 0); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 195, sp1E6); - gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockFrameEnvRed, - sFinalHoursClockFrameEnvGreen, sFinalHoursClockFrameEnvBlue, 0); - - OVERLAY_DISP = Gfx_DrawTexRect4b(OVERLAY_DISP, gFinalHoursClockFrameTex, 3, 80, 13, 119, - 202, 80, 13, 0, 0, 0, 1 << 10, 1 << 10); - - finalHoursClockSlots[0] = 0; - - timeBeforeMoonCrash = (4 - CURRENT_DAY) * DAY_LENGTH - - (u16)(((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)); - - timeInMinutes = TIME_TO_MINUTES_F(timeBeforeMoonCrash); - - finalHoursClockSlots[1] = timeInMinutes / 60.0f; - finalHoursClockSlots[2] = timeInMinutes / 60.0f; - - temp = (s32)timeInMinutes % 60; - - // digits for hours - while (finalHoursClockSlots[1] >= 10) { - finalHoursClockSlots[0]++; - finalHoursClockSlots[1] -= 10; - } - - finalHoursClockSlots[3] = 0; - finalHoursClockSlots[4] = temp; - - // digits for minutes - while (finalHoursClockSlots[4] >= 10) { - finalHoursClockSlots[3]++; - finalHoursClockSlots[4] -= 10; - } - - finalHoursClockSlots[6] = 0; - finalHoursClockSlots[7] = - timeBeforeMoonCrash - - (u32)((finalHoursClockSlots[2] * 2730.6667f) + // 2^13 / 3 (ft1 - e6c4) - (((void)0, temp) * 45.511112f)); // 2^13 / 3 / 60 (ft0 - e758) - - // digits for seconds - while (finalHoursClockSlots[7] >= 10) { - finalHoursClockSlots[6]++; - finalHoursClockSlots[7] -= 10; - } - - // Colon separating hours from minutes and minutes from seconds - finalHoursClockSlots[2] = finalHoursClockSlots[5] = 10; - - /** - * Draws Final-Hours Clock's Digits - */ - gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sFinalHoursClockDigitsRed, 0, 0, sp1E6); - gDPSetEnvColor(OVERLAY_DISP++, sFinalHoursClockDigitsRed, 0, 0, 0); - - for (sp1C6 = 0; sp1C6 < 8; sp1C6++) { - index = D_801BFC40[sp1C6]; - - OVERLAY_DISP = Gfx_DrawTexRectI8( - OVERLAY_DISP, sFinalHoursDigitTextures[finalHoursClockSlots[sp1C6]], 8, 8, - index, 205, 8, 8, 1 << 10, 1 << 10); - } - } + Gfx_DrawTexRectI8(OVERLAY_DISP, sFinalHoursDigitTextures[finalHoursClockSlots[sp1C6]], + 8, 8, index, 205, 8, 8, 1 << 10, 1 << 10); } } } @@ -5051,59 +5043,60 @@ TexturePtr sFinalHoursDigitTextures[] = { gFinalHoursClockDigit8Tex, gFinalHoursClockDigit9Tex, gFinalHoursClockColonTex, }; s16 D_801BFC40[] = { - 0x007F, 0x0088, 0x0090, 0x0097, 0x00A0, 0x00A8, 0x00AF, 0x00B8, + 127, 136, 144, 151, 160, 168, 175, 184, }; void Interface_DrawClock(PlayState* play); #pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawClock.s") #endif -void Interface_SetMinigamePerfect(PlayState* play, s16 minigamePerfectType) { +void Interface_SetPerfectLetters(PlayState* play, s16 perfectLettersType) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; - interfaceCtx->isMinigamePerfect = true; - interfaceCtx->minigamePerfectType = minigamePerfectType; + interfaceCtx->perfectLettersOn = true; + interfaceCtx->perfectLettersType = perfectLettersType; - interfaceCtx->minigamePerfectPrimColor[0] = 255; - interfaceCtx->minigamePerfectPrimColor[1] = 165; - interfaceCtx->minigamePerfectPrimColor[2] = 55; - interfaceCtx->minigamePerfectPrimColor[3] = 255; - interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->perfectLettersPrimColor[0] = 255; + interfaceCtx->perfectLettersPrimColor[1] = 165; + interfaceCtx->perfectLettersPrimColor[2] = 55; + interfaceCtx->perfectLettersPrimColor[3] = 255; + interfaceCtx->perfectLettersColorTimer = 20; - interfaceCtx->minigamePerfectColorTargetIndex = 0; - interfaceCtx->minigamePerfectLetterCount = 1; - interfaceCtx->minigamePerfectTimer = 0; + interfaceCtx->perfectLettersColorIndex = 0; + interfaceCtx->perfectLettersCount = 1; + interfaceCtx->perfectLettersTimer = 0; - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectLetterEllipseAngle[i] = 0; - interfaceCtx->minigamePerfectState[i] = interfaceCtx->minigamePerfectLetterXOffset[i] = 0; - if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 140.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 100.0f; + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersAngles[i] = 0; + interfaceCtx->perfectLettersState[i] = interfaceCtx->perfectLettersOffsetX[i] = 0; + if (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_1) { + interfaceCtx->perfectLettersSemiAxisX[i] = 140.0f; + interfaceCtx->perfectLettersSemiAxisY[i] = 100.0f; } else { - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; + interfaceCtx->perfectLettersSemiAxisY[i] = 200.0f; + interfaceCtx->perfectLettersSemiAxisX[i] = 200.0f; } } - interfaceCtx->minigamePerfectState[0] = MINIGAME_PERFECT_STATE_INIT; + interfaceCtx->perfectLettersState[0] = PERFECT_LETTERS_STATE_INIT; } -u16 sMinigamePerfectType1AngleOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { - 6 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // P - 7 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E - 0 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // R - 1 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // F - 5 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E - 4 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // C - 3 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // T - 2 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // ! +u16 sPerfectLettersType1OffScreenAngles[PERFECT_LETTERS_NUM_LETTERS] = { + 6 * PERFECT_LETTERS_ANGLE_PER_LETTER, // P + 7 * PERFECT_LETTERS_ANGLE_PER_LETTER, // E + 0 * PERFECT_LETTERS_ANGLE_PER_LETTER, // R + 1 * PERFECT_LETTERS_ANGLE_PER_LETTER, // F + 5 * PERFECT_LETTERS_ANGLE_PER_LETTER, // E + 4 * PERFECT_LETTERS_ANGLE_PER_LETTER, // C + 3 * PERFECT_LETTERS_ANGLE_PER_LETTER, // T + 2 * PERFECT_LETTERS_ANGLE_PER_LETTER, // ! }; -s16 sMinigamePerfectType1PrimColorTargets[2][3] = { + +s16 sPerfectLettersType1PrimColorTargets[2][3] = { { 255, 255, 255 }, { 255, 165, 55 }, }; -void Interface_UpdateMinigamePerfectType1(PlayState* play) { +void Interface_UpdatePerfectLettersType1(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i; s16 count; @@ -5112,105 +5105,104 @@ void Interface_UpdateMinigamePerfectType1(PlayState* play) { s16 colorStepB; // Update letter positions - for (count = 0, i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, count += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - // Initialize letter positions along the parameteric ellipse curve - interfaceCtx->minigamePerfectLetterEllipseAngle[i] = sMinigamePerfectType1AngleOffScreenTargets[i] + 0xA000; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { - // Swirl inwards along a swirlic parametric ellipse equation to the spelt-out word - interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == sMinigamePerfectType1AngleOffScreenTargets[i]) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; + for (count = 0, i = 0; i < interfaceCtx->perfectLettersCount; i++, count += 4) { + if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_INIT) { + // Initialize letter positions along the elliptical spirals + interfaceCtx->perfectLettersAngles[i] = sPerfectLettersType1OffScreenAngles[i] + 0xA000; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_ENTER; + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_ENTER) { + // Swirl inwards along elliptical spirals to form the spelt-out word + interfaceCtx->perfectLettersAngles[i] -= 0x800; + if (interfaceCtx->perfectLettersAngles[i] == sPerfectLettersType1OffScreenAngles[i]) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_STATIONARY; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { - // Swirl outwards along a swirlic parametric ellipse equation offscreen - interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == - (u16)(sMinigamePerfectType1AngleOffScreenTargets[i] - 0x8000)) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_SPREAD) { + // Swirl outwards along elliptical spirals offscreen + interfaceCtx->perfectLettersAngles[i] -= 0x800; + if (interfaceCtx->perfectLettersAngles[i] == (u16)(sPerfectLettersType1OffScreenAngles[i] - 0x8000)) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_OFF; } } } // Initialize the next letter in the list - // if `minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS`, - // then minigamePerfectState[] is accessed - if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && - (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS)) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; + // if `perfectLettersCount == PERFECT_LETTERS_NUM_LETTERS`, + // then perfectLettersState[] is accessed + if ((interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] == PERFECT_LETTERS_STATE_OFF) && + (interfaceCtx->perfectLettersCount < PERFECT_LETTERS_NUM_LETTERS)) { + interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] = PERFECT_LETTERS_STATE_INIT; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[interfaceCtx->minigamePerfectLetterCount] = 140.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[interfaceCtx->minigamePerfectLetterCount] = 100.0f; - interfaceCtx->minigamePerfectLetterEllipseAngle[interfaceCtx->minigamePerfectLetterCount] = - sMinigamePerfectType1AngleOffScreenTargets[interfaceCtx->minigamePerfectLetterCount] + 0xA000; + interfaceCtx->perfectLettersSemiAxisX[interfaceCtx->perfectLettersCount] = 140.0f; + interfaceCtx->perfectLettersSemiAxisY[interfaceCtx->perfectLettersCount] = 100.0f; + interfaceCtx->perfectLettersAngles[interfaceCtx->perfectLettersCount] = + sPerfectLettersType1OffScreenAngles[interfaceCtx->perfectLettersCount] + 0xA000; - interfaceCtx->minigamePerfectLetterCount++; + interfaceCtx->perfectLettersCount++; } // Update letter colors - if ((interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) && - (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_STATIONARY)) { + if ((interfaceCtx->perfectLettersCount == PERFECT_LETTERS_NUM_LETTERS) && + (interfaceCtx->perfectLettersState[PERFECT_LETTERS_NUM_LETTERS - 1] == PERFECT_LETTERS_STATE_STATIONARY)) { - colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepG = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepB = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / - interfaceCtx->minigamePerfectColorTimer; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersPrimColor[0] - + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) / + interfaceCtx->perfectLettersColorTimer; + colorStepG = ABS_ALT(interfaceCtx->perfectLettersPrimColor[1] - + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) / + interfaceCtx->perfectLettersColorTimer; + colorStepB = ABS_ALT(interfaceCtx->perfectLettersPrimColor[2] - + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) / + interfaceCtx->perfectLettersColorTimer; - if (interfaceCtx->minigamePerfectPrimColor[0] >= - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { - interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; + if (interfaceCtx->perfectLettersPrimColor[0] >= + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) { + interfaceCtx->perfectLettersPrimColor[0] -= colorStepR; } else { - interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; + interfaceCtx->perfectLettersPrimColor[0] += colorStepR; } - if (interfaceCtx->minigamePerfectPrimColor[1] >= - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { - interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; + if (interfaceCtx->perfectLettersPrimColor[1] >= + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) { + interfaceCtx->perfectLettersPrimColor[1] -= colorStepG; } else { - interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; + interfaceCtx->perfectLettersPrimColor[1] += colorStepG; } - if (interfaceCtx->minigamePerfectPrimColor[2] >= - sMinigamePerfectType1PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { - interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; + if (interfaceCtx->perfectLettersPrimColor[2] >= + sPerfectLettersType1PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) { + interfaceCtx->perfectLettersPrimColor[2] -= colorStepB; } else { - interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; + interfaceCtx->perfectLettersPrimColor[2] += colorStepB; } - interfaceCtx->minigamePerfectColorTimer--; + interfaceCtx->perfectLettersColorTimer--; - if (interfaceCtx->minigamePerfectColorTimer == 0) { - interfaceCtx->minigamePerfectColorTimer = 20; - interfaceCtx->minigamePerfectColorTargetIndex ^= 1; - interfaceCtx->minigamePerfectTimer++; + if (interfaceCtx->perfectLettersColorTimer == 0) { + interfaceCtx->perfectLettersColorTimer = 20; + interfaceCtx->perfectLettersColorIndex ^= 1; + interfaceCtx->perfectLettersTimer++; - if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_SPREAD; + if (interfaceCtx->perfectLettersTimer == 6) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_SPREAD; } } } } - for (count = 0, i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { + for (count = 0, i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_OFF) { count++; } } - if (count == MINIGAME_PERFECT_NUM_LETTERS) { - interfaceCtx->isMinigamePerfect = false; + if (count == PERFECT_LETTERS_NUM_LETTERS) { + interfaceCtx->perfectLettersOn = false; } } // Targets to offset each letter to properly spell "PERFECT!" -s16 sMinigamePerfectType2LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTERS] = { +s16 sPerfectLettersType2SpellingOffsetsX[PERFECT_LETTERS_NUM_LETTERS] = { 78, // P 54, // E 29, // R @@ -5222,7 +5214,7 @@ s16 sMinigamePerfectType2LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTE }; // Targets to offset each letter to sweep horizontally offscreen -s16 sMinigamePerfectType2LetterXOffsetOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { +s16 sPerfectLettersType2OffScreenOffsetsX[PERFECT_LETTERS_NUM_LETTERS] = { 180, // P (offscreen left) 180, // E (offscreen left) 180, // R (offscreen left) @@ -5233,12 +5225,12 @@ s16 sMinigamePerfectType2LetterXOffsetOffScreenTargets[MINIGAME_PERFECT_NUM_LETT -180, // ! (offscreen right) }; -s16 sMinigamePerfectType2PrimColorTargets[2][3] = { +s16 sPerfectLettersType2PrimColorTargets[2][3] = { { 255, 255, 255 }, { 255, 165, 55 }, }; -void Interface_UpdateMinigamePerfectType2(PlayState* play) { +void Interface_UpdatePerfectLettersType2(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 colorStepR; @@ -5248,143 +5240,134 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { s16 j = 0; // unused incrementer // Update letter positions - for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - // Initialize letter positions along the parameteric ellipse curve - interfaceCtx->minigamePerfectLetterEllipseAngle[i] = i * (0x10000 / MINIGAME_PERFECT_NUM_LETTERS); - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; + for (i = 0; i < interfaceCtx->perfectLettersCount; i++, j += 4) { + if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_INIT) { + // Initialize letter positions along the elliptical spirals + interfaceCtx->perfectLettersAngles[i] = i * (0x10000 / PERFECT_LETTERS_NUM_LETTERS); + interfaceCtx->perfectLettersSemiAxisX[i] = 200.0f; + interfaceCtx->perfectLettersSemiAxisY[i] = 200.0f; - interfaceCtx->minigamePerfectLetterXOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { - // Swirl inwards to the center of the screen - interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] -= 8.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] -= 8.0f; + interfaceCtx->perfectLettersOffsetX[i] = 0; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_ENTER; + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_ENTER) { + // Swirl inwards along elliptical spirals to the center of the screen + interfaceCtx->perfectLettersAngles[i] -= 0x800; + interfaceCtx->perfectLettersSemiAxisX[i] -= 8.0f; + interfaceCtx->perfectLettersSemiAxisY[i] -= 8.0f; - if (interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] <= 0.0f) { + if (interfaceCtx->perfectLettersSemiAxisX[i] <= 0.0f) { // The letter has reached the center of the screen - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 0.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 0.0f; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; + interfaceCtx->perfectLettersSemiAxisY[i] = 0.0f; + interfaceCtx->perfectLettersSemiAxisX[i] = 0.0f; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_STATIONARY; - if (i == (MINIGAME_PERFECT_NUM_LETTERS - 1)) { + if (i == (PERFECT_LETTERS_NUM_LETTERS - 1)) { // The last letter has reached the center of the screen - interfaceCtx->minigamePerfectColorTimer = 5; - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SPREAD; - interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[3] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[2] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[1] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->perfectLettersColorTimer = 5; + interfaceCtx->perfectLettersState[0] = interfaceCtx->perfectLettersState[1] = + interfaceCtx->perfectLettersState[2] = interfaceCtx->perfectLettersState[3] = + interfaceCtx->perfectLettersState[4] = interfaceCtx->perfectLettersState[5] = + interfaceCtx->perfectLettersState[6] = interfaceCtx->perfectLettersState[7] = + PERFECT_LETTERS_STATE_SPREAD; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_SPREAD) { // Spread out the letters horizontally from the center to the spelt-out word - colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - - sMinigamePerfectType2LetterXOffsetSpellingTargets[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectLetterXOffset[i] >= sMinigamePerfectType2LetterXOffsetSpellingTargets[i]) { - interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersOffsetX[i] - sPerfectLettersType2SpellingOffsetsX[i]) / + interfaceCtx->perfectLettersColorTimer; + if (interfaceCtx->perfectLettersOffsetX[i] >= sPerfectLettersType2SpellingOffsetsX[i]) { + interfaceCtx->perfectLettersOffsetX[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; + interfaceCtx->perfectLettersOffsetX[i] += colorStepR; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_EXIT) { + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_EXIT) { // Spread out the letters horizontally from the spelt-out world to offscreen - colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - - sMinigamePerfectType2LetterXOffsetOffScreenTargets[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectLetterXOffset[i] >= - sMinigamePerfectType2LetterXOffsetOffScreenTargets[i]) { - interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersOffsetX[i] - sPerfectLettersType2OffScreenOffsetsX[i]) / + interfaceCtx->perfectLettersColorTimer; + if (interfaceCtx->perfectLettersOffsetX[i] >= sPerfectLettersType2OffScreenOffsetsX[i]) { + interfaceCtx->perfectLettersOffsetX[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; + interfaceCtx->perfectLettersOffsetX[i] += colorStepR; } } } - if ((interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) || - (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT)) { - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_EXIT) { - colorStepA = interfaceCtx->minigamePerfectPrimColor[3] / interfaceCtx->minigamePerfectColorTimer; - interfaceCtx->minigamePerfectPrimColor[3] -= colorStepA; + if ((interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_SPREAD) || + (interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_EXIT)) { + if (interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_EXIT) { + colorStepA = interfaceCtx->perfectLettersPrimColor[3] / interfaceCtx->perfectLettersColorTimer; + interfaceCtx->perfectLettersPrimColor[3] -= colorStepA; } - interfaceCtx->minigamePerfectColorTimer--; - if (interfaceCtx->minigamePerfectColorTimer == 0) { + interfaceCtx->perfectLettersColorTimer--; + if (interfaceCtx->perfectLettersColorTimer == 0) { - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_DISPLAY; + if (interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_SPREAD) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_DISPLAY; } - interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->perfectLettersColorTimer = 20; } else { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_OFF; } - interfaceCtx->isMinigamePerfect = false; + interfaceCtx->perfectLettersOn = false; } } } // Initialize the next letter in the list - if (interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) { - if (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; - interfaceCtx->minigamePerfectLetterCount++; + if (interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] == PERFECT_LETTERS_STATE_OFF) { + if (interfaceCtx->perfectLettersCount < PERFECT_LETTERS_NUM_LETTERS) { + interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] = PERFECT_LETTERS_STATE_INIT; + interfaceCtx->perfectLettersCount++; } } // Update letter colors - if (interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) { - if (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_DISPLAY) { + if (interfaceCtx->perfectLettersCount == PERFECT_LETTERS_NUM_LETTERS) { + if (interfaceCtx->perfectLettersState[PERFECT_LETTERS_NUM_LETTERS - 1] == PERFECT_LETTERS_STATE_DISPLAY) { - colorStepR = - ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepG = - ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepB = - ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / - interfaceCtx->minigamePerfectColorTimer; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersPrimColor[0] - + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) / + interfaceCtx->perfectLettersColorTimer; + colorStepG = ABS_ALT(interfaceCtx->perfectLettersPrimColor[1] - + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) / + interfaceCtx->perfectLettersColorTimer; + colorStepB = ABS_ALT(interfaceCtx->perfectLettersPrimColor[2] - + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) / + interfaceCtx->perfectLettersColorTimer; - if (interfaceCtx->minigamePerfectPrimColor[0] >= - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { - interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; + if (interfaceCtx->perfectLettersPrimColor[0] >= + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) { + interfaceCtx->perfectLettersPrimColor[0] -= colorStepR; } else { - interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; + interfaceCtx->perfectLettersPrimColor[0] += colorStepR; } - if (interfaceCtx->minigamePerfectPrimColor[1] >= - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { - interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; + if (interfaceCtx->perfectLettersPrimColor[1] >= + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) { + interfaceCtx->perfectLettersPrimColor[1] -= colorStepG; } else { - interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; + interfaceCtx->perfectLettersPrimColor[1] += colorStepG; } - if (interfaceCtx->minigamePerfectPrimColor[2] >= - sMinigamePerfectType2PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { - interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; + if (interfaceCtx->perfectLettersPrimColor[2] >= + sPerfectLettersType2PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) { + interfaceCtx->perfectLettersPrimColor[2] -= colorStepB; } else { - interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; + interfaceCtx->perfectLettersPrimColor[2] += colorStepB; } - interfaceCtx->minigamePerfectColorTimer--; - if (interfaceCtx->minigamePerfectColorTimer == 0) { - interfaceCtx->minigamePerfectColorTimer = 20; - interfaceCtx->minigamePerfectColorTargetIndex ^= 1; - interfaceCtx->minigamePerfectTimer++; - if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_EXIT; + interfaceCtx->perfectLettersColorTimer--; + if (interfaceCtx->perfectLettersColorTimer == 0) { + interfaceCtx->perfectLettersColorTimer = 20; + interfaceCtx->perfectLettersColorIndex ^= 1; + interfaceCtx->perfectLettersTimer++; + if (interfaceCtx->perfectLettersTimer == 6) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_EXIT; } - interfaceCtx->minigamePerfectColorTimer = 5; + interfaceCtx->perfectLettersColorTimer = 5; } } } @@ -5392,7 +5375,7 @@ void Interface_UpdateMinigamePerfectType2(PlayState* play) { } // Targets to offset each letter to properly spell "PERFECT!" -s16 sMinigamePerfectType3LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTERS] = { +s16 sPerfectLettersType3SpellingOffsetsX[PERFECT_LETTERS_NUM_LETTERS] = { 78, // P 54, // E 29, // R @@ -5402,23 +5385,25 @@ s16 sMinigamePerfectType3LetterXOffsetSpellingTargets[MINIGAME_PERFECT_NUM_LETTE -67, // T -85, // ! }; -// Targets to sweep each letter's angle along an parametric ellipse equation offscreen -u16 sMinigamePerfectType3AngleOffScreenTargets[MINIGAME_PERFECT_NUM_LETTERS] = { - 6 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // P - 7 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E - 0 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // R - 1 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // F - 5 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // E - 4 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // C - 3 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // T - 2 * MINIGAME_PERFECT_ANGLE_PER_LETTER, // ! + +// Targets to sweep each letter's angle along an elliptical spiral offscreen +u16 sPerfectLettersType3OffScreenAngles[PERFECT_LETTERS_NUM_LETTERS] = { + 6 * PERFECT_LETTERS_ANGLE_PER_LETTER, // P + 7 * PERFECT_LETTERS_ANGLE_PER_LETTER, // E + 0 * PERFECT_LETTERS_ANGLE_PER_LETTER, // R + 1 * PERFECT_LETTERS_ANGLE_PER_LETTER, // F + 5 * PERFECT_LETTERS_ANGLE_PER_LETTER, // E + 4 * PERFECT_LETTERS_ANGLE_PER_LETTER, // C + 3 * PERFECT_LETTERS_ANGLE_PER_LETTER, // T + 2 * PERFECT_LETTERS_ANGLE_PER_LETTER, // ! }; -s16 sMinigamePerfectType3PrimColorTargets[2][3] = { + +s16 sPerfectLettersType3PrimColorTargets[2][3] = { { 255, 255, 255 }, { 255, 165, 55 }, }; -void Interface_UpdateMinigamePerfectType3(PlayState* play) { +void Interface_UpdatePerfectLettersType3(PlayState* play) { s16 i; InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 colorStepR; @@ -5427,147 +5412,142 @@ void Interface_UpdateMinigamePerfectType3(PlayState* play) { s16 j = 0; // Update letter positions - for (i = 0; i < interfaceCtx->minigamePerfectLetterCount; i++, j += 4) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_INIT) { - // Initialize letter positions along the parameteric ellipse curve - interfaceCtx->minigamePerfectLetterEllipseAngle[i] = i * (0x10000 / MINIGAME_PERFECT_NUM_LETTERS); - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 200.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 200.0f; + for (i = 0; i < interfaceCtx->perfectLettersCount; i++, j += 4) { + if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_INIT) { + // Initialize letter positions along the elliptical spirals + interfaceCtx->perfectLettersAngles[i] = i * (0x10000 / PERFECT_LETTERS_NUM_LETTERS); + interfaceCtx->perfectLettersSemiAxisX[i] = 200.0f; + interfaceCtx->perfectLettersSemiAxisY[i] = 200.0f; - interfaceCtx->minigamePerfectLetterXOffset[i] = 0; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_ENTER; - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_ENTER) { - // Swirl inwards along a swirlic parametric ellipse equation to the center of the screen - interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] -= 8.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] -= 8.0f; + interfaceCtx->perfectLettersOffsetX[i] = 0; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_ENTER; + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_ENTER) { + // Swirl inwards along elliptical spirals to the center of the screen + interfaceCtx->perfectLettersAngles[i] -= 0x800; + interfaceCtx->perfectLettersSemiAxisX[i] -= 8.0f; + interfaceCtx->perfectLettersSemiAxisY[i] -= 8.0f; - if (interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] <= 0.0f) { + if (interfaceCtx->perfectLettersSemiAxisX[i] <= 0.0f) { // The letter has reached the center of the screen - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 0.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 0.0f; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_STATIONARY; + interfaceCtx->perfectLettersSemiAxisY[i] = 0.0f; + interfaceCtx->perfectLettersSemiAxisX[i] = 0.0f; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_STATIONARY; - if (i == (MINIGAME_PERFECT_NUM_LETTERS - 1)) { + if (i == (PERFECT_LETTERS_NUM_LETTERS - 1)) { // The last letter has reached the center of the screen - interfaceCtx->minigamePerfectState[7] = MINIGAME_PERFECT_STATE_SPREAD; - interfaceCtx->minigamePerfectColorTimer = 5; - interfaceCtx->minigamePerfectState[6] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[5] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[4] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[3] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[2] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[1] = interfaceCtx->minigamePerfectState[7]; - interfaceCtx->minigamePerfectState[0] = interfaceCtx->minigamePerfectState[7]; + interfaceCtx->perfectLettersColorTimer = 5; + interfaceCtx->perfectLettersState[0] = interfaceCtx->perfectLettersState[1] = + interfaceCtx->perfectLettersState[2] = interfaceCtx->perfectLettersState[3] = + interfaceCtx->perfectLettersState[4] = interfaceCtx->perfectLettersState[5] = + interfaceCtx->perfectLettersState[6] = interfaceCtx->perfectLettersState[7] = + PERFECT_LETTERS_STATE_SPREAD; } } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_SPREAD) { + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_SPREAD) { // Spread out the letters horizontally from the center to the spelt-out word - colorStepR = ABS_ALT(interfaceCtx->minigamePerfectLetterXOffset[i] - - sMinigamePerfectType3LetterXOffsetSpellingTargets[i]) / - interfaceCtx->minigamePerfectColorTimer; - if (interfaceCtx->minigamePerfectLetterXOffset[i] >= sMinigamePerfectType3LetterXOffsetSpellingTargets[i]) { - interfaceCtx->minigamePerfectLetterXOffset[i] -= colorStepR; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersOffsetX[i] - sPerfectLettersType3SpellingOffsetsX[i]) / + interfaceCtx->perfectLettersColorTimer; + if (interfaceCtx->perfectLettersOffsetX[i] >= sPerfectLettersType3SpellingOffsetsX[i]) { + interfaceCtx->perfectLettersOffsetX[i] -= colorStepR; } else { - interfaceCtx->minigamePerfectLetterXOffset[i] += colorStepR; + interfaceCtx->perfectLettersOffsetX[i] += colorStepR; } - } else if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_EXIT) { - // Swirl outwards along a swirlic parametric ellipse equation offscreen - interfaceCtx->minigamePerfectLetterEllipseAngle[i] -= 0x800; - if (interfaceCtx->minigamePerfectLetterEllipseAngle[i] == - (u16)(sMinigamePerfectType3AngleOffScreenTargets[i] - 0x8000)) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_OFF; + } else if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_EXIT) { + // Swirl outwards along elliptical spirals offscreen + interfaceCtx->perfectLettersAngles[i] -= 0x800; + if (interfaceCtx->perfectLettersAngles[i] == (u16)(sPerfectLettersType3OffScreenAngles[i] - 0x8000)) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_OFF; } } } - if (interfaceCtx->minigamePerfectState[0] == MINIGAME_PERFECT_STATE_SPREAD) { - interfaceCtx->minigamePerfectColorTimer--; - if (interfaceCtx->minigamePerfectColorTimer == 0) { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_DISPLAY; + if (interfaceCtx->perfectLettersState[0] == PERFECT_LETTERS_STATE_SPREAD) { + interfaceCtx->perfectLettersColorTimer--; + if (interfaceCtx->perfectLettersColorTimer == 0) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_DISPLAY; } - interfaceCtx->minigamePerfectColorTimer = 20; + interfaceCtx->perfectLettersColorTimer = 20; } } // Initialize the next letter in the list - if ((interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] == MINIGAME_PERFECT_STATE_OFF) && - (interfaceCtx->minigamePerfectLetterCount < MINIGAME_PERFECT_NUM_LETTERS)) { - interfaceCtx->minigamePerfectState[interfaceCtx->minigamePerfectLetterCount] = MINIGAME_PERFECT_STATE_INIT; - interfaceCtx->minigamePerfectLetterCount++; + if ((interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] == PERFECT_LETTERS_STATE_OFF) && + (interfaceCtx->perfectLettersCount < PERFECT_LETTERS_NUM_LETTERS)) { + interfaceCtx->perfectLettersState[interfaceCtx->perfectLettersCount] = PERFECT_LETTERS_STATE_INIT; + interfaceCtx->perfectLettersCount++; } // Update letter colors - if ((interfaceCtx->minigamePerfectLetterCount == MINIGAME_PERFECT_NUM_LETTERS) && - (interfaceCtx->minigamePerfectState[MINIGAME_PERFECT_NUM_LETTERS - 1] == MINIGAME_PERFECT_STATE_DISPLAY)) { + if ((interfaceCtx->perfectLettersCount == PERFECT_LETTERS_NUM_LETTERS) && + (interfaceCtx->perfectLettersState[PERFECT_LETTERS_NUM_LETTERS - 1] == PERFECT_LETTERS_STATE_DISPLAY)) { - colorStepR = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[0] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepG = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[1] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) / - interfaceCtx->minigamePerfectColorTimer; - colorStepB = ABS_ALT(interfaceCtx->minigamePerfectPrimColor[2] - - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) / - interfaceCtx->minigamePerfectColorTimer; + colorStepR = ABS_ALT(interfaceCtx->perfectLettersPrimColor[0] - + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) / + interfaceCtx->perfectLettersColorTimer; + colorStepG = ABS_ALT(interfaceCtx->perfectLettersPrimColor[1] - + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) / + interfaceCtx->perfectLettersColorTimer; + colorStepB = ABS_ALT(interfaceCtx->perfectLettersPrimColor[2] - + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) / + interfaceCtx->perfectLettersColorTimer; - if (interfaceCtx->minigamePerfectPrimColor[0] >= - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][0]) { - interfaceCtx->minigamePerfectPrimColor[0] -= colorStepR; + if (interfaceCtx->perfectLettersPrimColor[0] >= + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][0]) { + interfaceCtx->perfectLettersPrimColor[0] -= colorStepR; } else { - interfaceCtx->minigamePerfectPrimColor[0] += colorStepR; + interfaceCtx->perfectLettersPrimColor[0] += colorStepR; } - if (interfaceCtx->minigamePerfectPrimColor[1] >= - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][1]) { - interfaceCtx->minigamePerfectPrimColor[1] -= colorStepG; + if (interfaceCtx->perfectLettersPrimColor[1] >= + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][1]) { + interfaceCtx->perfectLettersPrimColor[1] -= colorStepG; } else { - interfaceCtx->minigamePerfectPrimColor[1] += colorStepG; + interfaceCtx->perfectLettersPrimColor[1] += colorStepG; } - if (interfaceCtx->minigamePerfectPrimColor[2] >= - sMinigamePerfectType3PrimColorTargets[interfaceCtx->minigamePerfectColorTargetIndex][2]) { - interfaceCtx->minigamePerfectPrimColor[2] -= colorStepB; + if (interfaceCtx->perfectLettersPrimColor[2] >= + sPerfectLettersType3PrimColorTargets[interfaceCtx->perfectLettersColorIndex][2]) { + interfaceCtx->perfectLettersPrimColor[2] -= colorStepB; } else { - interfaceCtx->minigamePerfectPrimColor[2] += colorStepB; + interfaceCtx->perfectLettersPrimColor[2] += colorStepB; } - interfaceCtx->minigamePerfectColorTimer--; - if (interfaceCtx->minigamePerfectColorTimer == 0) { - interfaceCtx->minigamePerfectColorTimer = 20; - interfaceCtx->minigamePerfectColorTargetIndex ^= 1; - interfaceCtx->minigamePerfectTimer++; - if (interfaceCtx->minigamePerfectTimer == 6) { - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i] = 140.0f; - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i] = 100.0f; - interfaceCtx->minigamePerfectLetterEllipseAngle[i] = sMinigamePerfectType3AngleOffScreenTargets[i]; - interfaceCtx->minigamePerfectState[i] = MINIGAME_PERFECT_STATE_EXIT; + interfaceCtx->perfectLettersColorTimer--; + if (interfaceCtx->perfectLettersColorTimer == 0) { + interfaceCtx->perfectLettersColorTimer = 20; + interfaceCtx->perfectLettersColorIndex ^= 1; + interfaceCtx->perfectLettersTimer++; + if (interfaceCtx->perfectLettersTimer == 6) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + interfaceCtx->perfectLettersSemiAxisX[i] = 140.0f; + interfaceCtx->perfectLettersSemiAxisY[i] = 100.0f; + interfaceCtx->perfectLettersAngles[i] = sPerfectLettersType3OffScreenAngles[i]; + interfaceCtx->perfectLettersState[i] = PERFECT_LETTERS_STATE_EXIT; } - interfaceCtx->minigamePerfectColorTimer = 5; + interfaceCtx->perfectLettersColorTimer = 5; } } } j = 0; - for (i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; i++) { - if (interfaceCtx->minigamePerfectState[i] == MINIGAME_PERFECT_STATE_OFF) { + for (i = 0; i < PERFECT_LETTERS_NUM_LETTERS; i++) { + if (interfaceCtx->perfectLettersState[i] == PERFECT_LETTERS_STATE_OFF) { j++; } } - if (j == MINIGAME_PERFECT_NUM_LETTERS) { - interfaceCtx->isMinigamePerfect = false; + if (j == PERFECT_LETTERS_NUM_LETTERS) { + interfaceCtx->perfectLettersOn = false; } } -TexturePtr sMinigamePerfectTextures[MINIGAME_PERFECT_NUM_LETTERS] = { - gMinigameLetterPTex, gMinigameLetterETex, gMinigameLetterRTex, gMinigameLetterFTex, - gMinigameLetterETex, gMinigameLetterCTex, gMinigameLetterTTex, gMinigameExclamationTex, +TexturePtr sPerfectLettersTextures[PERFECT_LETTERS_NUM_LETTERS] = { + gPerfectLetterPTex, gPerfectLetterETex, gPerfectLetterRTex, gPerfectLetterFTex, + gPerfectLetterETex, gPerfectLetterCTex, gPerfectLetterTTex, gPerfectLetterExclamationTex, }; -void Interface_DrawMinigamePerfect(PlayState* play) { +void Interface_DrawPerfectLetters(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; f32 letterX; f32 letterY; @@ -5582,18 +5562,16 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - for (vtxOffset = 0, i = 0; i < MINIGAME_PERFECT_NUM_LETTERS; vtxOffset += 4, i++) { - if (interfaceCtx->minigamePerfectState[i] != MINIGAME_PERFECT_STATE_OFF) { + for (vtxOffset = 0, i = 0; i < PERFECT_LETTERS_NUM_LETTERS; vtxOffset += 4, i++) { + if (interfaceCtx->perfectLettersState[i] != PERFECT_LETTERS_STATE_OFF) { - // The positions follow the path of a parametric ellipse equation - letterX = Math_SinS(interfaceCtx->minigamePerfectLetterEllipseAngle[i]) * - interfaceCtx->minigamePerfectLetterEllipseRadiusX[i]; - letterY = Math_CosS(interfaceCtx->minigamePerfectLetterEllipseAngle[i]) * - interfaceCtx->minigamePerfectLetterEllipseRadiusY[i]; + // The positions follow the path of an elliptical spiral + letterX = Math_SinS(interfaceCtx->perfectLettersAngles[i]) * interfaceCtx->perfectLettersSemiAxisX[i]; + letterY = Math_CosS(interfaceCtx->perfectLettersAngles[i]) * interfaceCtx->perfectLettersSemiAxisY[i]; // Draw Minigame Perfect Shadows gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->minigamePerfectPrimColor[3]); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->perfectLettersPrimColor[3]); Matrix_Translate(letterX, letterY, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); @@ -5601,13 +5579,13 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[44 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sPerfectLettersTextures[i], 4, 32, 33, 0); // Draw Minigame Perfect Colored Letters gDPPipeSync(OVERLAY_DISP++); - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->minigamePerfectPrimColor[0], - interfaceCtx->minigamePerfectPrimColor[1], interfaceCtx->minigamePerfectPrimColor[2], - interfaceCtx->minigamePerfectPrimColor[3]); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, interfaceCtx->perfectLettersPrimColor[0], + interfaceCtx->perfectLettersPrimColor[1], interfaceCtx->perfectLettersPrimColor[2], + interfaceCtx->perfectLettersPrimColor[3]); Matrix_Translate(letterX, letterY, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); @@ -5615,7 +5593,7 @@ void Interface_DrawMinigamePerfect(PlayState* play) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(OVERLAY_DISP++, &interfaceCtx->actionVtx[76 + vtxOffset], 4, 0); - OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sMinigamePerfectTextures[i], 4, 32, 33, 0); + OVERLAY_DISP = Gfx_DrawTexQuad4b(OVERLAY_DISP, sPerfectLettersTextures[i], 4, 32, 33, 0); } } @@ -6625,8 +6603,8 @@ void Interface_Draw(PlayState* play) { } // Draw the letters of minigame perfect - if (interfaceCtx->isMinigamePerfect) { - Interface_DrawMinigamePerfect(play); + if (interfaceCtx->perfectLettersOn) { + Interface_DrawPerfectLetters(play); } Interface_DrawMinigameIcons(play); @@ -6963,13 +6941,13 @@ void Interface_Update(PlayState* play) { // Update minigame perfect if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { - if (interfaceCtx->isMinigamePerfect) { - if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_1) { - Interface_UpdateMinigamePerfectType1(play); - } else if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_2) { - Interface_UpdateMinigamePerfectType2(play); - } else if (interfaceCtx->minigamePerfectType == MINIGAME_PERFECT_TYPE_3) { - Interface_UpdateMinigamePerfectType3(play); + if (interfaceCtx->perfectLettersOn) { + if (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_1) { + Interface_UpdatePerfectLettersType1(play); + } else if (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_2) { + Interface_UpdatePerfectLettersType2(play); + } else if (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_3) { + Interface_UpdatePerfectLettersType3(play); } } } @@ -7319,9 +7297,9 @@ void Interface_Init(PlayState* play) { Map_Init(play); gSaveContext.minigameStatus = MINIGAME_STATUS_DONE; - interfaceCtx->minigamePerfectPrimColor[0] = 255; - interfaceCtx->minigamePerfectPrimColor[1] = 165; - interfaceCtx->minigamePerfectPrimColor[2] = 55; + interfaceCtx->perfectLettersPrimColor[0] = 255; + interfaceCtx->perfectLettersPrimColor[1] = 165; + interfaceCtx->perfectLettersPrimColor[2] = 55; if (CHECK_EVENTINF(EVENTINF_34)) { CLEAR_EVENTINF(EVENTINF_34); diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index b3d335afb..6a4210df7 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -342,7 +342,7 @@ void Sram_SaveEndOfCycle(PlayState* play) { u8 slot; u8 item; - gSaveContext.save.daySpeed = 0; + gSaveContext.save.timeSpeedOffset = 0; gSaveContext.save.daysElapsed = 0; gSaveContext.save.day = 0; gSaveContext.save.time = CLOCK_TIME(6, 0) - 1; @@ -593,7 +593,7 @@ void Sram_ResetSave(void) { gSaveContext.save.unk_06 = 0; gSaveContext.save.linkAge = 0; gSaveContext.save.isNight = false; - gSaveContext.save.daySpeed = 0; + gSaveContext.save.timeSpeedOffset = 0; gSaveContext.save.snowheadCleared = 0; gSaveContext.save.hasTatl = false; gSaveContext.save.isOwlSave = false; diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 9b33866e2..740d23259 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -255,7 +255,7 @@ void func_809542A0(BgIngate* this, PlayState* play) { gSaveContext.nextTransitionType = TRANS_TYPE_03; this->actionFunc = func_80953F8C; CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); - func_800FE498(); + Environment_StartTime(); } void func_80954340(BgIngate* this, PlayState* play) { @@ -264,7 +264,7 @@ void func_80954340(BgIngate* this, PlayState* play) { func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->timePath = &play->setupPathList[this->timePath->unk1]; func_80953F14(this, play); - func_800FE484(); + Environment_StopTime(); } } } @@ -283,7 +283,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; - func_800FE498(); + Environment_StartTime(); func_8019F208(); } else { if (this->timePath != NULL) { @@ -304,7 +304,7 @@ void func_809543D4(BgIngate* this, PlayState* play) { func_800B7298(play, &this->dyna.actor, PLAYER_CSMODE_6); this->unk160 &= ~0x4; this->actionFunc = func_809541B8; - func_800FE498(); + Environment_StartTime(); func_8019F230(); } func_801477B4(play); diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index cd494f6fa..4f9d7d702 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1154,7 +1154,7 @@ void DmStk_WaitForTelescope(DmStk* this, PlayState* play) { if (play->view.fovy < 25.0f) { if ((screenPos.x >= 70.0f) && (screenPos.x < (SCREEN_WIDTH - 70.0f)) && (screenPos.y >= 30.0f) && (screenPos.y < (SCREEN_HEIGHT - 30.0f))) { - func_800FE484(); + Environment_StopTime(); this->actionFunc = DmStk_StartTelescopeCutscene; } } @@ -1181,7 +1181,7 @@ void DmStk_StartTelescopeCutscene(DmStk* this, PlayState* play) { if (ActorCutscene_GetCanPlayNext(cutscene)) { ActorCutscene_Start(cutscene, &this->actor); - func_800FE498(); + Environment_StartTime(); this->actionFunc = DmStk_DoNothing; } else { ActorCutscene_SetIntentToPlay(cutscene); @@ -1818,7 +1818,8 @@ void DmStk_Update(Actor* thisx, PlayState* play) { (play->csCtx.state == 0)) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; if (R_TIME_SPEED != 0) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); + gSaveContext.save.time = + ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset); } } } diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index bf31f039c..3487d95c6 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -163,7 +163,7 @@ void DoorWarp1_Init(Actor* thisx, PlayState* play) { if ((play->sceneId == SCENE_MITURIN_BS) || (play->sceneId == SCENE_HAKUGIN_BS) || (play->sceneId == SCENE_INISIE_BS) || (play->sceneId == SCENE_SEA_BS)) { - func_800FE484(); + Environment_StopTime(); play->interfaceCtx.restrictions.unk_312 = 1; play->interfaceCtx.restrictions.songOfSoaring = 1; } diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c index 4dae6d577..da1cc7d7e 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -748,7 +748,7 @@ void func_80BDF578(EnAl* this, PlayState* play) { void func_80BDF5E8(EnAl* this, PlayState* play) { ScheduleOutput sp20; - this->unk_4E0 = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->unk_4E0 = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BDFC70, &sp20) || ((this->unk_35C != sp20.result) && !func_80BDF390(this, play, &sp20))) { this->actor.shape.shadowDraw = NULL; diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index b07a11520..a6624dc38 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -103,7 +103,7 @@ void func_809C10B0(EnAob01* this, s32 arg1) { void func_809C1124(void) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset); } void func_809C1158(EnAob01* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index 584c51f4e..6040076f4 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -654,7 +654,7 @@ void EnBaba_GaveBlastMask(EnBaba* this, PlayState* play) { void EnBaba_FollowSchedule(EnBaba* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, sSchedule, &scheduleOutput) || ((this->scheduleResult != scheduleOutput.result) && diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 159bd7981..041cadaa7 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -800,7 +800,7 @@ void func_80962F4C(EnFu* this, PlayState* play) { gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] = SECONDS_TO_TIMER(0); gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_STOP; Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900); - Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_1); + Interface_SetPerfectLetters(play, PERFECT_LETTERS_TYPE_1); this->unk_54A = 3; func_809632D0(this); } @@ -848,7 +848,7 @@ void func_80963350(EnFu* this, PlayState* play) { D_80964C24 = 1; } - if ((this->unk_54A == 3) && !play->interfaceCtx.isMinigamePerfect) { + if ((this->unk_54A == 3) && !play->interfaceCtx.perfectLettersOn) { this->unk_54A = 2; D_80964C24 = 1; } diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 38c484cc6..d56882b1c 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -488,7 +488,7 @@ void func_80B10344(EnGb2* this, PlayState* play) { if (this->unk_280 == 3) { this->unk_26C &= ~0x200; gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; - func_800FE498(); + Environment_StartTime(); SET_EVENTINF(EVENTINF_46); func_80B0FE7C(play); } else if (this->unk_280 == 2) { @@ -892,7 +892,7 @@ void EnGb2_Init(Actor* thisx, PlayState* play) { } if (gSaveContext.save.entrance == ENTRANCE(GHOST_HUT, 1)) { - func_800FE484(); + Environment_StopTime(); this->actionFunc = func_80B10240; break; } diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index 232e3ae79..01146c0cf 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -1582,7 +1582,7 @@ void func_80950C24(EnGm* this, PlayState* play) { void func_80950CDC(EnGm* this, PlayState* play) { ScheduleOutput sp20; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80951820, &sp20) || ((this->unk_258 != sp20.result) && !func_80950280(this, play, &sp20))) { diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 5299dbaa1..e97deee04 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -140,7 +140,7 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_FREE0); Play_SetCameraAtEye(play, CAM_ID_MAIN, &mainCamAt, &mainCamEye); Play_SetCameraFov(play, CAM_ID_MAIN, 45.0f); - func_800FE484(); + Environment_StopTime(); return false; } diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c index 4244c705d..2468e5961 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -876,7 +876,7 @@ void func_80BF2A50(EnIg* this, PlayState* play) { void func_80BF2AF8(EnIg* this, PlayState* play) { ScheduleOutput sp20; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BF3260, &sp20) || ((this->scheduleResult != sp20.result) && !func_80BF2368(this, play, &sp20))) { diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c index 84857fdfe..39a28c4bd 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -301,7 +301,7 @@ void func_80BC2150(EnJa* this, PlayState* play) { void func_80BC21A8(EnJa* this, PlayState* play) { ScheduleOutput sp18; - this->unk_35C = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->unk_35C = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BC35F0, &sp18) || ((this->unk_1D8.unk_00 != sp18.result) && !func_80BC20D0(this, play, &sp18))) { this->actor.shape.shadowDraw = NULL; diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 572364bbd..70208c942 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -638,7 +638,7 @@ void EnNb_HandleSchedule(EnNb* this, PlayState* play) { void EnNb_FollowSchedule(EnNb* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = REG(15) + ((void)0, gSaveContext.save.timeSpeedOffset); if (gSaveContext.eventInf[4] & 8) { scheduleOutput.result = EN_NB_SCH_1; diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index c4d1184bf..c2846a26b 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -1987,7 +1987,7 @@ void func_80AFA4D0(EnPm* this, PlayState* play) { u16 sp3C = 0; ScheduleOutput sp2C; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (this->unk_38C != 0) { time = gSaveContext.save.time - D_801F4E78; sp3C = gSaveContext.save.time; diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index e8a445433..93c93eef9 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -232,7 +232,7 @@ void EnSuttari_TriggerTransition(PlayState* play, u16 entrance) { void EnSuttari_UpdateTime(void) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); + gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset); } s32 func_80BAA904(EnSuttari* this, PlayState* play) { @@ -1104,7 +1104,7 @@ void func_80BACE4C(EnSuttari* this, PlayState* play) { void func_80BACEE0(EnSuttari* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1128,7 +1128,7 @@ void func_80BACEE0(EnSuttari* this, PlayState* play) { void func_80BAD004(EnSuttari* this, PlayState* play) { ScheduleOutput scheduleOutput; - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1255,7 +1255,7 @@ void func_80BAD5F8(EnSuttari* this, PlayState* play) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; @@ -1293,7 +1293,7 @@ void func_80BAD7F8(EnSuttari* this, PlayState* play) { this->animIndex = 2; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex); } - this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BAE820, &scheduleOutput) || ((this->unk428 != scheduleOutput.result) && !func_80BABF64(this, play, &scheduleOutput))) { this->actor.flags &= ~ACTOR_FLAG_1; diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index b8121acf4..717d19917 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -1090,7 +1090,7 @@ void EnSyatekiMan_Swamp_RunGame(EnSyatekiMan* this, PlayState* play) { func_801A2C20(); this->shootingGameState = SG_GAME_STATE_GIVING_BONUS; if (this->score == 2120) { - Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_2); + Interface_SetPerfectLetters(play, PERFECT_LETTERS_TYPE_2); gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_6; this->actionFunc = EnSyatekiMan_Swamp_AddBonusPoints; } else { @@ -1156,7 +1156,7 @@ void EnSyatekiMan_Swamp_AddBonusPoints(EnSyatekiMan* this, PlayState* play) { Player* player = GET_PLAYER(play); player->stateFlags1 |= PLAYER_STATE1_20; - if (!play->interfaceCtx.isMinigamePerfect) { + if (!play->interfaceCtx.perfectLettersOn) { if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] == SECONDS_TO_TIMER(0)) { gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_1] = SECONDS_TO_TIMER(0); gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP; @@ -1359,7 +1359,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { this->actionFunc = EnSyatekiMan_Town_EndGame; if (this->score == 50) { Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900); - Interface_SetMinigamePerfect(play, MINIGAME_PERFECT_TYPE_1); + Interface_SetPerfectLetters(play, PERFECT_LETTERS_TYPE_1); } } } @@ -1368,7 +1368,7 @@ void EnSyatekiMan_Town_RunGame(EnSyatekiMan* this, PlayState* play) { void EnSyatekiMan_Town_EndGame(EnSyatekiMan* this, PlayState* play) { if (this->shootingGameState == SG_GAME_STATE_RUNNING) { this->octorokFlags = 0; - if ((this->talkWaitTimer <= 0) && !play->interfaceCtx.isMinigamePerfect) { + if ((this->talkWaitTimer <= 0) && !play->interfaceCtx.perfectLettersOn) { Flags_SetAllTreasure(play, this->score); this->talkWaitTimer = 15; if ((GET_TOWN_SHOOTING_GALLERY_HIGH_SCORE() < this->score) || (this->score == 50)) { diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c index 3159e4a18..abd7c100c 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -473,7 +473,7 @@ void func_80BE1224(EnTab* this, PlayState* play) { void func_80BE127C(EnTab* this, PlayState* play) { ScheduleOutput sp18; - this->unk_31A = R_TIME_SPEED + ((void)0, gSaveContext.save.daySpeed); + this->unk_31A = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); if (!Schedule_RunScript(play, D_80BE18D0, &sp18) || ((this->unk_1D8 != sp18.result) && !func_80BE1060(this, play, &sp18))) { diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index a459fc1d5..2dc7417e8 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -508,7 +508,7 @@ void EnTest3_Destroy(Actor* thisx, PlayState* play2) { Collider_DestroyQuad(play, &this->player.meleeWeaponQuads[1]); Collider_DestroyQuad(play, &this->player.shieldQuad); ZeldaArena_Free(this->player.maskObjectSegment); - func_800FE498(); + Environment_StartTime(); } s32 func_80A3F080(EnTest3* this, PlayState* play, struct_80A41828* arg2, ScheduleOutput* scheduleOutput) { @@ -765,7 +765,7 @@ s32 func_80A3FBE8(EnTest3* this, PlayState* play) { if (this->unk_D8D >= 0) { if (func_80A3E9DC(this, play)) { this->unk_D8D = -1; - func_800FE484(); + Environment_StopTime(); } } else if ((play->actorCtx.flags & ACTORCTX_FLAG_6) || (play->actorCtx.flags & ACTORCTX_FLAG_5)) { this->unk_D8D = ActorCutscene_GetAdditionalCutscene(this->player.actor.cutscene); @@ -780,7 +780,7 @@ s32 func_80A3FBE8(EnTest3* this, PlayState* play) { } } else if ((D_80A41D20 == 2) && func_80A3E9DC(this, play)) { ActorCutscene_SetReturnCamera(CAM_ID_MAIN); - func_800FE498(); + Environment_StartTime(); if (((void)0, gSaveContext.save.time) > CLOCK_TIME(6, 0)) { func_800FE658(TIME_TO_MINUTES_ALT_F(fabsf((s16) - ((void)0, gSaveContext.save.time)))); } @@ -968,7 +968,7 @@ void func_80A40678(EnTest3* this, PlayState* play) { this->unk_D80 = ((this->unk_D88 == 20) || (this->unk_D88 == 10) || (this->unk_D88 == 9)) ? 3 : Play_InCsMode(play) ? 0 - : REG(15) + ((void)0, gSaveContext.save.daySpeed); + : REG(15) + ((void)0, gSaveContext.save.timeSpeedOffset); if (Schedule_RunScript(play, sScheduleScript, &scheduleOutput)) { if (this->unk_D88 != scheduleOutput.result) { diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 32e3e3437..7ddd539e7 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -488,7 +488,8 @@ void EnWeatherTag_Update(Actor* thisx, PlayState* play) { gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)R_TIME_SPEED; if (R_TIME_SPEED != 0) { - gSaveContext.save.time = ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.daySpeed); + gSaveContext.save.time = + ((void)0, gSaveContext.save.time) + (u16)((void)0, gSaveContext.save.timeSpeedOffset); } } } diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index 0309a511a..fbdc8b398 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -698,7 +698,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { sp54 = false; this->flags |= OBJ_UM_FLAG_0100; ObjUm_SetupAction(this, func_80B7A144); - func_800FE484(); + Environment_StopTime(); } else { // Waiting for player @@ -722,7 +722,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { this->pathIndex = this->initialPathIndex; sp54 = false; - func_800FE484(); + Environment_StopTime(); ObjUm_SetupAction(this, ObjUm_PreMilkRunStartCs); this->unk_354 = 0; ObjUm_RotatePlayer(this, play, 0); @@ -735,7 +735,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->pathIndex = this->initialPathIndex; sp54 = false; - func_800FE484(); + Environment_StopTime(); ObjUm_SetupAction(this, ObjUm_StartCs); this->unk_354 = 0; ObjUm_RotatePlayer(this, play, 0); @@ -747,7 +747,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->pathIndex = this->initialPathIndex; sp54 = false; - func_800FE484(); + Environment_StopTime(); ObjUm_SetupAction(this, ObjUm_PostMilkRunStartCs); this->unk_354 = 0; ObjUm_RotatePlayer(this, play, 0); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 56c0cb28d..bd23a330d 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -1768,9 +1768,9 @@ 0x800FDC94:("func_800FDC94",), 0x800FE390:("func_800FE390",), 0x800FE3E0:("func_800FE3E0",), - 0x800FE484:("func_800FE484",), - 0x800FE498:("func_800FE498",), - 0x800FE4A8:("func_800FE4A8",), + 0x800FE484:("Environment_StopTime",), + 0x800FE498:("Environment_StartTime",), + 0x800FE4A8:("Environment_IsTimeStopped",), 0x800FE4B8:("func_800FE4B8",), 0x800FE590:("func_800FE590",), 0x800FE5D0:("func_800FE5D0",), @@ -2151,11 +2151,11 @@ 0x80118BA4:("Interface_DrawAButton",), 0x80119030:("Interface_DrawPauseMenuEquippingIcons",), 0x80119610:("Interface_DrawClock",), - 0x8011B4E0:("Interface_SetMinigamePerfect",), - 0x8011B5C0:("Interface_UpdateMinigamePerfectType1",), - 0x8011B9E0:("Interface_UpdateMinigamePerfectType2",), - 0x8011BF70:("Interface_UpdateMinigamePerfectType3",), - 0x8011C4C4:("Interface_DrawMinigamePerfect",), + 0x8011B4E0:("Interface_SetPerfectLetters",), + 0x8011B5C0:("Interface_UpdatePerfectLettersType1",), + 0x8011B9E0:("Interface_UpdatePerfectLettersType2",), + 0x8011BF70:("Interface_UpdatePerfectLettersType3",), + 0x8011C4C4:("Interface_DrawPerfectLetters",), 0x8011C808:("Interface_StartMoonCrash",), 0x8011C898:("Interface_GetTimerDigits",), 0x8011CA64:("Interface_DrawTimers",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index d96397e5f..18a8c44e6 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1164,15 +1164,15 @@ 0x801BFC10:("D_801BFC10","UNK_TYPE1","",0x1), 0x801BFC14:("sFinalHoursDigitTextures","UNK_TYPE1","",0x1), 0x801BFC40:("D_801BFC40","UNK_TYPE1","",0x1), - 0x801BFC50:("sMinigamePerfectType1AngleOffScreenTargets","UNK_TYPE2","",0x2), - 0x801BFC60:("sMinigamePerfectType1PrimColorTargets","s16","[6]",0xC), - 0x801BFC6C:("sMinigamePerfectType2LetterXOffsetSpellingTargets","UNK_TYPE4","",0x4), - 0x801BFC7C:("sMinigamePerfectType2LetterXOffsetOffScreenTargets","UNK_TYPE2","",0x2), - 0x801BFC8C:("sMinigamePerfectType2PrimColorTargets","UNK_TYPE1","",0x1), - 0x801BFC98:("sMinigamePerfectType3LetterXOffsetSpellingTargets","UNK_TYPE2","",0x2), - 0x801BFCA8:("sMinigamePerfectType3AngleOffScreenTargets","UNK_TYPE2","",0x2), - 0x801BFCB8:("sMinigamePerfectType3PrimColorTargets","UNK_TYPE1","",0x1), - 0x801BFCC4:("sMinigamePerfectTextures","UNK_TYPE4","",0x4), + 0x801BFC50:("sPerfectLettersType1OffScreenAngles","UNK_TYPE2","",0x2), + 0x801BFC60:("sPerfectLettersType1PrimColorTargets","s16","[6]",0xC), + 0x801BFC6C:("sPerfectLettersType2SpellingOffsetsX","UNK_TYPE4","",0x4), + 0x801BFC7C:("sPerfectLettersType2OffScreenOffsetsX","UNK_TYPE2","",0x2), + 0x801BFC8C:("sPerfectLettersType2PrimColorTargets","UNK_TYPE1","",0x1), + 0x801BFC98:("sPerfectLettersType3SpellingOffsetsX","UNK_TYPE2","",0x2), + 0x801BFCA8:("sPerfectLettersType3OffScreenAngles","UNK_TYPE2","",0x2), + 0x801BFCB8:("sPerfectLettersType3PrimColorTargets","UNK_TYPE1","",0x1), + 0x801BFCC4:("sPerfectLettersTextures","UNK_TYPE4","",0x4), 0x801BFCE4:("sTimerStateTimer","UNK_TYPE4","",0x4), 0x801BFCE8:("sTimerDigits","u16","[8]",0x10), 0x801BFCF8:("sTimerBeepSfxSeconds","UNK_TYPE4","",0x4), diff --git a/tools/namefixer.py b/tools/namefixer.py index b58693986..c28311683 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -694,7 +694,7 @@ wordReplace = { "gSaveContext.equippedMask": "gSaveContext.save.equippedMask", "gSaveContext.entranceIndex": "gSaveContext.save.entrance", "gSaveContext.time": "gSaveContext.save.time", - "gSaveContext.unk_14": "gSaveContext.save.daySpeed", + "gSaveContext.unk_14": "gSaveContext.save.timeSpeedOffset", "gSaveContext.unk_FE6": "gSaveContext.save.bombersCaughtNum", "gSaveContext.unk_FE7": "gSaveContext.save.bombersCaughtOrder", "gSaveContext.linkAge": "gSaveContext.save.linkAge", diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 1bbca17ce..c57c29cbc 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1282,9 +1282,9 @@ asm/non_matchings/code/z_kankyo/func_800FDAF8.s,func_800FDAF8,0x800FDAF8,0x67 asm/non_matchings/code/z_kankyo/func_800FDC94.s,func_800FDC94,0x800FDC94,0x1BF asm/non_matchings/code/z_kankyo/func_800FE390.s,func_800FE390,0x800FE390,0x14 asm/non_matchings/code/z_kankyo/func_800FE3E0.s,func_800FE3E0,0x800FE3E0,0x29 -asm/non_matchings/code/z_kankyo/func_800FE484.s,func_800FE484,0x800FE484,0x5 -asm/non_matchings/code/z_kankyo/func_800FE498.s,func_800FE498,0x800FE498,0x4 -asm/non_matchings/code/z_kankyo/func_800FE4A8.s,func_800FE4A8,0x800FE4A8,0x4 +asm/non_matchings/code/z_kankyo/Environment_StopTime.s,Environment_StopTime,0x800FE484,0x5 +asm/non_matchings/code/z_kankyo/Environment_StartTime.s,Environment_StartTime,0x800FE498,0x4 +asm/non_matchings/code/z_kankyo/Environment_IsTimeStopped.s,Environment_IsTimeStopped,0x800FE4A8,0x4 asm/non_matchings/code/z_kankyo/func_800FE4B8.s,func_800FE4B8,0x800FE4B8,0x36 asm/non_matchings/code/z_kankyo/func_800FE590.s,func_800FE590,0x800FE590,0x10 asm/non_matchings/code/z_kankyo/func_800FE5D0.s,func_800FE5D0,0x800FE5D0,0x10 @@ -1665,11 +1665,11 @@ asm/non_matchings/code/z_parameter/Interface_DrawCButtonIcons.s,Interface_DrawCB asm/non_matchings/code/z_parameter/Interface_DrawAButton.s,Interface_DrawAButton,0x80118BA4,0x123 asm/non_matchings/code/z_parameter/Interface_DrawPauseMenuEquippingIcons.s,Interface_DrawPauseMenuEquippingIcons,0x80119030,0x178 asm/non_matchings/code/z_parameter/Interface_DrawClock.s,Interface_DrawClock,0x80119610,0x7B4 -asm/non_matchings/code/z_parameter/Interface_SetMinigamePerfect.s,Interface_SetMinigamePerfect,0x8011B4E0,0x38 -asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType1.s,Interface_UpdateMinigamePerfectType1,0x8011B5C0,0x108 -asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType2.s,Interface_UpdateMinigamePerfectType2,0x8011B9E0,0x164 -asm/non_matchings/code/z_parameter/Interface_UpdateMinigamePerfectType3.s,Interface_UpdateMinigamePerfectType3,0x8011BF70,0x155 -asm/non_matchings/code/z_parameter/Interface_DrawMinigamePerfect.s,Interface_DrawMinigamePerfect,0x8011C4C4,0xD1 +asm/non_matchings/code/z_parameter/Interface_SetPerfectLetters.s,Interface_SetPerfectLetters,0x8011B4E0,0x38 +asm/non_matchings/code/z_parameter/Interface_UpdatePerfectLettersType1.s,Interface_UpdatePerfectLettersType1,0x8011B5C0,0x108 +asm/non_matchings/code/z_parameter/Interface_UpdatePerfectLettersType2.s,Interface_UpdatePerfectLettersType2,0x8011B9E0,0x164 +asm/non_matchings/code/z_parameter/Interface_UpdatePerfectLettersType3.s,Interface_UpdatePerfectLettersType3,0x8011BF70,0x155 +asm/non_matchings/code/z_parameter/Interface_DrawPerfectLetters.s,Interface_DrawPerfectLetters,0x8011C4C4,0xD1 asm/non_matchings/code/z_parameter/Interface_StartMoonCrash.s,Interface_StartMoonCrash,0x8011C808,0x24 asm/non_matchings/code/z_parameter/Interface_GetTimerDigits.s,Interface_GetTimerDigits,0x8011C898,0x73 asm/non_matchings/code/z_parameter/Interface_DrawTimers.s,Interface_DrawTimers,0x8011CA64,0x654 From 5dc523d8af43ef7e2afb59af7100fece7f8c9b93 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 20 Nov 2022 19:15:48 -0500 Subject: [PATCH 157/160] cleanup --- include/variables.h | 6 +- src/code/z_parameter.c | 64 ++++++++++++------- src/overlays/actors/ovl_En_Muto/z_en_muto.c | 2 +- .../actors/ovl_En_Ruppecrow/z_en_ruppecrow.c | 2 +- tools/disasm/variables.txt | 6 +- tools/namefixer.py | 5 -- 6 files changed, 49 insertions(+), 36 deletions(-) diff --git a/include/variables.h b/include/variables.h index 1a4850815..805a14ea2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -639,9 +639,9 @@ extern UNK_PTR D_801BF5C0; // extern UNK_TYPE2 sMinigameScoreDigits; // extern UNK_TYPE2 sCUpInvisible; // extern UNK_TYPE2 sCUpTimer; -// extern UNK_TYPE2 sMagicBarOutlinePrimRed; -// extern UNK_TYPE2 sMagicBarOutlinePrimGreen; -// extern UNK_TYPE2 sMagicBarOutlinePrimBlue; +// extern UNK_TYPE2 sMagicMeterOutlinePrimRed; +// extern UNK_TYPE2 sMagicMeterOutlinePrimGreen; +// extern UNK_TYPE2 sMagicMeterOutlinePrimBlue; // extern UNK_TYPE2 sMagicBorderRatio; // extern UNK_TYPE2 sMagicBorderStep; // extern UNK_TYPE2 sEnvTimerType; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 18961e259..c850d866d 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -849,6 +849,7 @@ void Interface_SetVertices(PlayState* play) { } s32 sPostmanTimerInputBtnAPressed = false; + void Interface_PostmanTimerCallback(s32 arg0) { s32 btnAPressed; @@ -894,8 +895,8 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { } else { gSaveContext.timerDirections[TIMER_ID_POSTMAN] = TIMER_COUNT_UP; } - gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; + gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; gSaveContext.timerStopTimes[TIMER_ID_POSTMAN] = 0; gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN] = 0; } @@ -2593,9 +2594,9 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { - gSaveContext.save.inventory.questItems += (1 << QUEST_HEART_PIECE_COUNT); - if ((gSaveContext.save.inventory.questItems & 0xF0000000) == (4 << QUEST_HEART_PIECE_COUNT)) { - gSaveContext.save.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT); + INCREMENT_QUEST_HEART_PIECE_COUNT; + if (EQ_MAX_QUEST_HEART_PIECE_COUNT) { + RESET_HEART_PIECE_COUNT; gSaveContext.save.playerData.healthCapacity += 0x10; gSaveContext.save.playerData.health += 0x10; } @@ -3515,6 +3516,7 @@ void Magic_Reset(PlayState* play) { /** * Request to consume magic. + * * @param magicToConsume the positive-valued amount to decrease magic by * @param type how the magic is consumed. * @return false if the request failed @@ -3538,8 +3540,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { switch (type) { case MAGIC_CONSUME_NOW: case MAGIC_CONSUME_NOW_ALT: - // Consume magic immediately - // Ex. Deku Bubble + // Drain magic immediately e.g. Deku Bubble if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3592,8 +3593,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { case MAGIC_CONSUME_WAIT_PREVIEW: // Sets consume target but waits to consume. - // Preview consumption with a yellow bar - // Ex. Spin Attack + // Preview consumption with a yellow bar. e.g. Spin Attack if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) { @@ -3608,7 +3608,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { } case MAGIC_CONSUME_GORON_ZORA: - // Zora Shock, Goron Spike Roll + // Goron spiked rolling or Zora electric barrier if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = 10; gSaveContext.magicState = MAGIC_STATE_CONSUME_GORON_ZORA_SETUP; @@ -3618,7 +3618,7 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { } case MAGIC_CONSUME_GIANTS_MASK: - // Wearing Giants Mask + // Wearing Giant's Mask if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.playerData.magic != 0) { interfaceCtx->magicConsumptionTimer = R_MAGIC_CONSUME_TIMER_GIANTS_MASK; @@ -3635,7 +3635,6 @@ s32 Magic_Consume(PlayState* play, s16 magicToConsume, s16 type) { } case MAGIC_CONSUME_DEITY_BEAM: - // Using Fierce Deity Beam // Consumes magic immediately if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) { @@ -3817,7 +3816,7 @@ void Magic_Update(PlayState* play) { (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_DOWN) != ITEM_LENS) && (BUTTON_ITEM_EQUIP(0, EQUIP_SLOT_C_RIGHT) != ITEM_LENS)) || !play->actorCtx.lensActive) { - // Force lens off and set magic state to idle + // Deactivate Lens of Truth and set magic state to idle play->actorCtx.lensActive = false; play_sound(NA_SE_SY_GLASSMODE_OFF); gSaveContext.magicState = MAGIC_STATE_IDLE; @@ -5694,7 +5693,7 @@ void Interface_DrawTimers(PlayState* play) { sTimerId = TIMER_ID_NONE; - // Process all active timers + // Update all timer states for (i = 0; i < TIMER_ID_MAX; i++) { if (gSaveContext.timerStates[i] == TIMER_STATE_OFF) { continue; @@ -5736,6 +5735,8 @@ void Interface_DrawTimers(PlayState* play) { case TIMER_STATE_ALT_START: sTimerStateTimer = 20; if (interfaceCtx->minigameState != MINIGAME_STATE_NONE) { + + // Set the timer position gSaveContext.timerX[sTimerId] = 26; if (interfaceCtx->magicAlpha != 255) { @@ -5757,7 +5758,7 @@ void Interface_DrawTimers(PlayState* play) { } gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); - gSaveContext.timerStopTimes[sTimerId] = 0; + gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(0); gSaveContext.timerPausedOsTimes[sTimerId] = 0; } } else { @@ -5806,7 +5807,7 @@ void Interface_DrawTimers(PlayState* play) { gSaveContext.timerStates[sTimerId] = TIMER_STATE_COUNTING; gSaveContext.timerStartOsTimes[sTimerId] = osGetTime(); - gSaveContext.timerStopTimes[sTimerId] = 0; + gSaveContext.timerStopTimes[sTimerId] = SECONDS_TO_TIMER(0); gSaveContext.timerPausedOsTimes[sTimerId] = 0; } // fallthrough @@ -5903,18 +5904,21 @@ void Interface_DrawTimers(PlayState* play) { break; } + // Update timer counting if ((sTimerId != TIMER_ID_NONE) && gSaveContext.timerStates[sTimerId]) { // != TIMER_STATE_OFF if (gSaveContext.timerDirections[sTimerId] == TIMER_COUNT_DOWN) { sTimerDigits[0] = sTimerDigits[1] = sTimerDigits[3] = sTimerDigits[4] = sTimerDigits[6] = 0; - // used to index the counter colon + // Used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; + // Get the total amount of unpaused time since the start of the timer, centiseconds (1/100th sec). if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) || (gSaveContext.timerStates[sTimerId] == TIMER_STATE_10) || (gSaveContext.timerStates[sTimerId] == TIMER_STATE_ALT_COUNTING) || (gSaveContext.timerStates[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); + osTime = OSTIME_TO_TIMER(osTime - ((void)0, gSaveContext.timerPausedOsTimes[sTimerId]) - D_801BF930[sTimerId] - ((void)0, gSaveContext.timerStartOsTimes[sTimerId])); @@ -5924,15 +5928,21 @@ void Interface_DrawTimers(PlayState* play) { osTime = 0; } + // Check how much unpaused time has passed if (osTime == 0) { + // No unpaused time has passed since the start of the timer. gSaveContext.timerCurTimes[sTimerId] = gSaveContext.timerTimeLimits[sTimerId] - osTime; } else if (osTime <= gSaveContext.timerTimeLimits[sTimerId]) { + // Time has passed, but the time limit has not been exceeded if (osTime >= gSaveContext.timerTimeLimits[sTimerId]) { + // The time is exactly at the time limit. No time remaining. gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0); } else { + // Update the time remaining gSaveContext.timerCurTimes[sTimerId] = gSaveContext.timerTimeLimits[sTimerId] - osTime; } } else { + // Time has passed, and the time limit has been exceeded. gSaveContext.timerCurTimes[sTimerId] = SECONDS_TO_TIMER(0); gSaveContext.timerStates[sTimerId] = TIMER_STATE_STOP; if (sEnvTimerActive) { @@ -5962,9 +5972,10 @@ void Interface_DrawTimers(PlayState* play) { } else { // TIMER_COUNT_UP sTimerDigits[0] = sTimerDigits[1] = sTimerDigits[3] = sTimerDigits[4] = sTimerDigits[6] = 0; - // used to index the counter colon + // Used to index the counter colon sTimerDigits[2] = sTimerDigits[5] = 10; + // Get the total amount of unpaused time since the start of the timer, centiseconds (1/100th sec). if ((gSaveContext.timerStates[sTimerId] == TIMER_STATE_COUNTING) || (gSaveContext.timerStates[sTimerId] == TIMER_STATE_POSTMAN_COUNTING)) { osTime = osGetTime(); @@ -5989,6 +6000,7 @@ void Interface_DrawTimers(PlayState* play) { osTime = SECONDS_TO_TIMER(120); } + // Update the time remaining with the total amount of time since the start of the timer, gSaveContext.timerCurTimes[sTimerId] = osTime; Interface_GetTimerDigits(osTime, sTimerDigits); @@ -6011,6 +6023,7 @@ void Interface_DrawTimers(PlayState* play) { } } + // Draw timer gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); @@ -6021,8 +6034,8 @@ void Interface_DrawTimers(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - // Set the timer color if (IS_POSTMAN_TIMER_DRAWN || (gSaveContext.timerStates[sTimerId] <= TIMER_STATE_12)) { + // Set the timer color if (gSaveContext.timerStates[sTimerId]) { // != TIMER_STATE_OFF if (sTimerId == TIMER_ID_2) { if ((gSaveContext.timerCurTimes[sTimerId] == SECONDS_TO_TIMER(0)) || @@ -6130,18 +6143,26 @@ void Interface_UpdateBottleTimers(PlayState* play) { for (i = BOTTLE_FIRST; i < BOTTLE_MAX; i++) { if (gSaveContext.bottleTimerStates[i] == BOTTLE_TIMER_STATE_COUNTING) { osTime = osGetTime(); + + // Get the total amount of unpaused time since the start of the timer, centiseconds (1/100th sec). osTime = OSTIME_TO_TIMER_ALT(osTime - ((void)0, gSaveContext.bottleTimerPausedOsTimes[i]) - ((void)0, gSaveContext.bottleTimerStartOsTimes[i])); + if (osTime == 0) { + // No unpaused time has passed since the start of the timer. gSaveContext.bottleTimerCurTimes[i] = gSaveContext.bottleTimerTimeLimits[i] - osTime; } else if (osTime <= gSaveContext.bottleTimerTimeLimits[i]) { + // Time has passed, but the time limit has not been exceeded if (osTime >= gSaveContext.bottleTimerTimeLimits[i]) { - gSaveContext.bottleTimerCurTimes[i] = 0; + // The time is exactly at the time limit. No time remaining. + gSaveContext.bottleTimerCurTimes[i] = SECONDS_TO_TIMER(0); } else { + // Update the time remaining gSaveContext.bottleTimerCurTimes[i] = gSaveContext.bottleTimerTimeLimits[i] - osTime; } } else { - gSaveContext.bottleTimerCurTimes[i] = 0; + // Time has passed, and the time limit has been exceeded. + gSaveContext.bottleTimerCurTimes[i] = SECONDS_TO_TIMER(0); if (gSaveContext.save.inventory.items[i + SLOT_BOTTLE_1] == ITEM_HOT_SPRING_WATER) { Inventory_UpdateItem(play, i + SLOT_BOTTLE_1, ITEM_SPRING_WATER); @@ -6307,9 +6328,6 @@ TexturePtr gStoryTLUTs[] = { gStoryGiantsLeavingTLUT, }; -// TODO: ucode.h? (see OoT) -#define SP_UCODE_DATA_SIZE 0x800 - void Interface_Draw(PlayState* play) { s32 pad; InterfaceContext* interfaceCtx = &play->interfaceCtx; diff --git a/src/overlays/actors/ovl_En_Muto/z_en_muto.c b/src/overlays/actors/ovl_En_Muto/z_en_muto.c index 35040c606..f9d17ca96 100644 --- a/src/overlays/actors/ovl_En_Muto/z_en_muto.c +++ b/src/overlays/actors/ovl_En_Muto/z_en_muto.c @@ -144,7 +144,7 @@ void EnMuto_Idle(EnMuto* this, PlayState* play) { } } - if (1) {} // Needed match + if (1) {} // Needed to match if (!this->isInMayorsRoom && Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK) { this->actor.textId = 0x2363; diff --git a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c index 13a431383..f77993e5d 100644 --- a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c +++ b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c @@ -367,7 +367,7 @@ void EnRuppecrow_UpdatePosition(EnRuppecrow* this, PlayState* play) { s32 EnRuppecrow_CheckPlayedMatchingSong(PlayState* play) { Player* player = GET_PLAYER(play); - if (play->msgCtx.ocarinaMode == 3) { + if (play->msgCtx.ocarinaMode == 0x3) { switch (player->transformation) { case PLAYER_FORM_DEKU: if (play->msgCtx.lastPlayedSong == OCARINA_SONG_SONATA) { diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index f2cb657c8..17e03630e 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1081,9 +1081,9 @@ 0x801BF890:("sMinigameScoreDigits","UNK_TYPE2","",0x2), 0x801BF898:("sCUpInvisible","UNK_TYPE2","",0x2), 0x801BF89C:("sCUpTimer","UNK_TYPE2","",0x2), - 0x801BF8A0:("sMagicBarOutlinePrimRed","UNK_TYPE2","",0x2), - 0x801BF8A4:("sMagicBarOutlinePrimGreen","UNK_TYPE2","",0x2), - 0x801BF8A8:("sMagicBarOutlinePrimBlue","UNK_TYPE2","",0x2), + 0x801BF8A0:("sMagicMeterOutlinePrimRed","UNK_TYPE2","",0x2), + 0x801BF8A4:("sMagicMeterOutlinePrimGreen","UNK_TYPE2","",0x2), + 0x801BF8A8:("sMagicMeterOutlinePrimBlue","UNK_TYPE2","",0x2), 0x801BF8AC:("sMagicBorderRatio","UNK_TYPE2","",0x2), 0x801BF8B0:("sMagicBorderStep","UNK_TYPE2","",0x2), 0x801BF8DC:("sEnvTimerType","UNK_TYPE2","",0x2), diff --git a/tools/namefixer.py b/tools/namefixer.py index bc290c02a..796e1869e 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -548,11 +548,6 @@ wordReplace = { "Cutscene_GetSceneSetupIndex": "Cutscene_GetSceneLayer", "func_801343C0": "SkelAnime_DrawTransformFlexOpa", "func_80134148": "SkelAnime_DrawTransformFlexLimbOpa", - "func_8013AB00": "SubS_DrawTransformFlex", - "func_8013A860": "SubS_DrawTransformFlexLimb", - "func_8013BC6C": "SubS_ChangeAnimationByInfoS", - "func_8013E1C8": "SubS_ChangeAnimationBySpeedInfo", - "func_8013D9C8": "SubS_FillLimbRotTables", "func_80114E90": "Interface_HasEmptyBottle", "func_80114F2C": "Interface_HasItemInBottle", "func_80123C90": "Player_SetEquipmentData", From ea32607658cda3e93d4258e388fde189b2d7e6fd Mon Sep 17 00:00:00 2001 From: engineer124 Date: Sun, 20 Nov 2022 20:59:01 -0500 Subject: [PATCH 158/160] cleanup --- include/z64interface.h | 5 ++--- src/code/z_parameter.c | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/include/z64interface.h b/include/z64interface.h index b93a9cc9f..39b7b213a 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -123,9 +123,8 @@ typedef struct { /* 0x178 */ u8* iconItemSegment; /* 0x17C */ u8* mapSegment; /* 0x180 */ u8* unk_180; // unused segment? - /* 0x184 */ DmaRequest dmaRequest_184; - /* 0x1A4 */ DmaRequest dmaRequest_1A4; - /* 0x1C4 */ DmaRequest dmaRequest_1C4; + /* 0x184 */ DmaRequest dmaRequest; + /* 0x1A4 */ UNK_TYPE1 unk_1A4[0x40]; // likely 2 DmaRequest /* 0x1E4 */ OSMesgQueue loadQueue; /* 0x1FC */ OSMesg loadMsg; /* 0x200 */ Viewport viewport; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index c850d866d..3cfc9b3ef 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -3321,7 +3321,7 @@ void Interface_LoadAButtonDoActionLabel(InterfaceContext* interfaceCtx, u16 acti if (action != DO_ACTION_NONE) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest, (u32)interfaceCtx->doActionSegment + (loadOffset * DO_ACTION_TEX_SIZE), (u32)SEGMENT_ROM_START(do_action_static) + (action * DO_ACTION_TEX_SIZE), DO_ACTION_TEX_SIZE, 0, &interfaceCtx->loadQueue, 0); @@ -3360,7 +3360,7 @@ void Interface_SetBButtonDoAction(PlayState* play, s16 bButtonDoAction) { interfaceCtx->bButtonDoAction = bButtonDoAction; if (interfaceCtx->bButtonDoAction != DO_ACTION_NONE) { osCreateMesgQueue(&interfaceCtx->loadQueue, &interfaceCtx->loadMsg, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x600, + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest, interfaceCtx->doActionSegment + 0x600, (bButtonDoAction * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, NULL); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); @@ -3401,7 +3401,7 @@ void Interface_LoadBButtonDoActionLabel(PlayState* play, s16 bButtonDoAction) { interfaceCtx->unk_224 = bButtonDoAction; osCreateMesgQueue(&play->interfaceCtx.loadQueue, &play->interfaceCtx.loadMsg, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->doActionSegment + 0x480, + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest, interfaceCtx->doActionSegment + 0x480, (bButtonDoAction * 0x180) + SEGMENT_ROM_START(do_action_static), 0x180, 0, &interfaceCtx->loadQueue, NULL); osRecvMesg(&interfaceCtx->loadQueue, NULL, OS_MESG_BLOCK); @@ -6733,7 +6733,7 @@ void Interface_Draw(PlayState* play) { CLOSE_DISPS(play->state.gfxCtx); } -void Interface_LoadStory(PlayState* play, s32 block) { +void Interface_LoadStory(PlayState* play, s32 osMesgFlag) { InterfaceContext* interfaceCtx = &play->interfaceCtx; switch (interfaceCtx->storyDmaStatus) { @@ -6742,17 +6742,17 @@ void Interface_LoadStory(PlayState* play, s32 block) { break; } osCreateMesgQueue(&interfaceCtx->storyMsgQueue, &interfaceCtx->storyMsgBuf, 1); - DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest_184, interfaceCtx->storySegment, interfaceCtx->storyAddr, + DmaMgr_SendRequestImpl(&interfaceCtx->dmaRequest, interfaceCtx->storySegment, interfaceCtx->storyAddr, interfaceCtx->storySize, 0, &interfaceCtx->storyMsgQueue, NULL); interfaceCtx->storyDmaStatus = STORY_DMA_LOADING; // fallthrough case STORY_DMA_LOADING: - if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, block) == 0) { + if (osRecvMesg(&interfaceCtx->storyMsgQueue, NULL, osMesgFlag) == 0) { interfaceCtx->storyDmaStatus = STORY_DMA_DONE; } break; - default: + default: // STORY_DMA_DONE break; } } @@ -7347,15 +7347,15 @@ void Interface_Init(PlayState* play) { (play->sceneId != SCENE_LAST_GORON) && (play->sceneId != SCENE_LAST_ZORA) && (play->sceneId != SCENE_LAST_LINK)) { - CLEAR_EVENTINF(EVENTINF_53); - CLEAR_EVENTINF(EVENTINF_54); - CLEAR_EVENTINF(EVENTINF_55); - CLEAR_EVENTINF(EVENTINF_56); - CLEAR_EVENTINF(EVENTINF_57); - CLEAR_EVENTINF(EVENTINF_60); - CLEAR_EVENTINF(EVENTINF_61); - CLEAR_EVENTINF(EVENTINF_62); - CLEAR_EVENTINF(EVENTINF_63); + CLEAR_EVENTINF(EVENTINF_53); // Goht intro cutscene watched + CLEAR_EVENTINF(EVENTINF_54); // Odolwa intro cutscene watched + CLEAR_EVENTINF(EVENTINF_55); // Twinmold intro cutscene watched? + CLEAR_EVENTINF(EVENTINF_56); // Gyorg intro cutscene watched + CLEAR_EVENTINF(EVENTINF_57); // Igos du Ikana intro cutscene watched? + CLEAR_EVENTINF(EVENTINF_60); // Wart intro cutscene watched + CLEAR_EVENTINF(EVENTINF_61); // Majoras intro cutscene watched + CLEAR_EVENTINF(EVENTINF_62); // + CLEAR_EVENTINF(EVENTINF_63); // Gomess intro cutscene watched } sFinalHoursClockDigitsRed = sFinalHoursClockFrameEnvRed = sFinalHoursClockFrameEnvGreen = From 43e9eb2c4e01903f4abac182ead6cfabb219acf6 Mon Sep 17 00:00:00 2001 From: engineer124 Date: Wed, 23 Nov 2022 11:57:49 -0500 Subject: [PATCH 159/160] cleanup picto, sync with play --- include/variables.h | 2 +- include/z64.h | 2 +- include/z64save.h | 14 ++++++++------ include/z64snap.h | 10 +++++----- src/code/z_parameter.c | 19 ++++++++++--------- src/code/z_snap.c | 2 +- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/include/variables.h b/include/variables.h index 805a14ea2..c4c8334e1 100644 --- a/include/variables.h +++ b/include/variables.h @@ -2919,7 +2919,7 @@ extern GfxPool gGfxPools[2]; extern u8 gAudioHeap[0x138000]; extern u8 gSystemHeap[UNK_SIZE]; -extern u8 gPictoPhotoI8[]; // PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y +extern u8 gPictoPhotoI8[PICTO_PHOTO_SIZE]; extern u8 D_80784600[0x56200]; extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH]; diff --git a/include/z64.h b/include/z64.h index 34c7c4627..f2cfc7d0f 100644 --- a/include/z64.h +++ b/include/z64.h @@ -988,7 +988,7 @@ struct PlayState { /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; /* 0x18E58 */ char unk_18E58[0x4]; - /* 0x18E5C */ u8* pictoPhotoI8; + /* 0x18E5C */ TexturePtr pictoPhotoI8; /* 0x18E60 */ char unk_18E60[0x8]; /* 0x18E68 */ void* unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; diff --git a/include/z64save.h b/include/z64save.h index 521d70d89..ff56e9d64 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -145,12 +145,14 @@ typedef enum { /* 52 */ HUD_VISIBILITY_NONE_INSTANT = 52 } HudVisibility; -#define PICTO_RESOLUTION_X 160 -#define PICTO_RESOLUTION_Y 112 +#define PICTO_PHOTO_WIDTH 160 +#define PICTO_PHOTO_HEIGHT 112 -#define PICTO_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_X) / 2) -// Picture is offset up by 33 pixels to give room for the message box at the bottom -#define PICTO_TOPLEFT_Y (((SCREEN_HEIGHT - PICTO_RESOLUTION_Y) / 2) - 33) +#define PICTO_PHOTO_TOPLEFT_X ((SCREEN_WIDTH - PICTO_PHOTO_WIDTH) / 2) +#define PICTO_PHOTO_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_PHOTO_HEIGHT) / 2) + +#define PICTO_PHOTO_SIZE (PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT) +#define PICTO_PHOTO_COMPRESSED_SIZE (PICTO_PHOTO_SIZE * 5 / 8) typedef struct SramContext { /* 0x00 */ u8* readBuff; @@ -317,7 +319,7 @@ typedef struct SaveContext { /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub" /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time" /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time" - /* 0x10E0 */ u8 pictoPhotoI5[PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y * 5 / 8]; // buffer containing the pictograph photo + /* 0x10E0 */ u8 pictoPhotoI5[PICTO_PHOTO_COMPRESSED_SIZE]; // buffer containing the pictograph photo, compressed to I5 from I8 /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" /* 0x3CA6 */ u8 unk_3CA6; diff --git a/include/z64snap.h b/include/z64snap.h index 237245470..fb3f86186 100644 --- a/include/z64snap.h +++ b/include/z64snap.h @@ -36,11 +36,11 @@ typedef enum { /* 0x3F */ PICTOGRAPH_BAD_DISTANCE } PictographFlag; -// The subregion of the picto photo that will set the flag for an actor being in the photo -#define PICTO_CAPTURE_REGION_HORIZONTAL 150 -#define PICTO_CAPTURE_REGION_VERTICAL 105 -#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_CAPTURE_REGION_HORIZONTAL) / 2) -#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_CAPTURE_REGION_VERTICAL) / 2) +// The following macros are subject to renaming once the capture system is better understood +#define PICTO_RESOLUTION_HORIZONTAL 150 +#define PICTO_RESOLUTION_VERTICAL 105 +#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_HORIZONTAL) / 2) +#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_RESOLUTION_VERTICAL) / 2) s32 Snap_RecordPictographedActors(PlayState* play); void Snap_SetFlag(s32 flag); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 3cfc9b3ef..9ac439817 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -2386,7 +2386,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, (u8*)((void)0, gSaveContext.pictoPhotoI5), - PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); + PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; restoreHudVisibility = true; sPictographState = PICTOGRAPH_STATE_OFF; @@ -2425,7 +2425,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { if (sPictographPhotoBeingTaken) { Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, (u8*)((void)0, gSaveContext.pictoPhotoI5), - PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); + PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT); Snap_RecordPictographedActors(play); } play->actorCtx.flags &= ~ACTORCTX_FLAG_PICTOGRAPH_ON; @@ -2457,7 +2457,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) { } else { Play_DecompressI5ToI8((u8*)((void)0, gSaveContext.pictoPhotoI5), (play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, - PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); + PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT); play->haltAllActors = true; sPictographState = PICTOGRAPH_STATE_SETUP_PHOTO; } @@ -6676,7 +6676,7 @@ void Interface_Draw(PlayState* play) { if (sPictographState >= PICTOGRAPH_STATE_SETUP_PHOTO) { if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTOGRAPH_ON)) { Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90, - (u8*)gSaveContext.pictoPhotoI5, PICTO_RESOLUTION_X * PICTO_RESOLUTION_Y); + (u8*)gSaveContext.pictoPhotoI5, PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT); interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0; @@ -6706,17 +6706,18 @@ void Interface_Draw(PlayState* play) { gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 250, 160, 160, 255); - pictoRectTop = PICTO_TOPLEFT_Y; - for (sp2CC = 0; sp2CC < (PICTO_RESOLUTION_Y / 8); sp2CC++, pictoRectTop += 8) { - pictoRectLeft = PICTO_TOPLEFT_X; + // Picture is offset up by 33 pixels to give room for the message box at the bottom + pictoRectTop = PICTO_PHOTO_TOPLEFT_Y - 33; + for (sp2CC = 0; sp2CC < (PICTO_PHOTO_HEIGHT / 8); sp2CC++, pictoRectTop += 8) { + pictoRectLeft = PICTO_PHOTO_TOPLEFT_X; gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90) + (0x500 * sp2CC), - G_IM_FMT_I, G_IM_SIZ_8b, PICTO_RESOLUTION_X, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_IM_FMT_I, G_IM_SIZ_8b, PICTO_PHOTO_WIDTH, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, pictoRectLeft << 2, pictoRectTop << 2, - (pictoRectLeft + PICTO_RESOLUTION_X) << 2, (pictoRectTop << 2) + (8 << 2), + (pictoRectLeft + PICTO_PHOTO_WIDTH) << 2, (pictoRectTop << 2) + (8 << 2), G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } } diff --git a/src/code/z_snap.c b/src/code/z_snap.c index 5e9ced024..5d37e3eac 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -174,7 +174,7 @@ s32 Snap_ValidatePictograph(PlayState* play, Actor* actor, s32 flag, Vec3f* pos, y = (s16)PROJECTED_TO_SCREEN_Y(projectedPos, distance) - PICTO_CAPTURE_REGION_TOPLEFT_Y; // checks if the coordinates are within the capture region - if ((x < 0) || (x > PICTO_CAPTURE_REGION_HORIZONTAL) || (y < 0) || (y > PICTO_CAPTURE_REGION_VERTICAL)) { + if ((x < 0) || (x > PICTO_RESOLUTION_HORIZONTAL) || (y < 0) || (y > PICTO_RESOLUTION_VERTICAL)) { Snap_SetFlag(PICTOGRAPH_NOT_IN_VIEW); ret |= PICTOGRAPH_NOT_IN_VIEW; } From 46fb761890012a19b46d43aa8ab480c0e19e2e9b Mon Sep 17 00:00:00 2001 From: engineer124 Date: Tue, 17 Jan 2023 14:26:10 -0500 Subject: [PATCH 160/160] cleanup desync --- docs/tutorial/advanced_control_flow.md | 2 ++ src/code/z_parameter.c | 40 ++++++++++++++------------ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/docs/tutorial/advanced_control_flow.md b/docs/tutorial/advanced_control_flow.md index a74718594..96ba7a43d 100644 --- a/docs/tutorial/advanced_control_flow.md +++ b/docs/tutorial/advanced_control_flow.md @@ -662,6 +662,7 @@ void func_809527F8(EnMs* this, PlayState* play) { switch (play->msgCtx.choiceIndex) { case 0: func_801477B4(play); + if (gSaveContext.save.playerData.rupees < 0xA) { play_sound(0x4806U); func_80151938(play, 0x935U); @@ -713,6 +714,7 @@ void func_809527F8(EnMs* this, PlayState* play) { switch (play->msgCtx.choiceIndex) { case 0: func_801477B4(play); + if (gSaveContext.save.playerData.rupees < 0xA) { play_sound(0x4806U); func_80151938(play, 0x935U); diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 6cbc480b4..21c8c2745 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -8,7 +8,6 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #include "overlays/actors/ovl_En_Mm3/z_en_mm3.h" -extern Gfx D_0E0002E0[]; // gScreenFillDL extern TexturePtr D_08095AC0; // gMagicArrowEquipEffectTex typedef enum { @@ -934,7 +933,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState) { } gSaveContext.timerStates[TIMER_ID_POSTMAN] = TIMER_STATE_POSTMAN_START; - gSaveContext.timerStopTimes[TIMER_ID_POSTMAN] = 0; + gSaveContext.timerStopTimes[TIMER_ID_POSTMAN] = SECONDS_TO_TIMER(0); gSaveContext.timerPausedOsTimes[TIMER_ID_POSTMAN] = 0; } @@ -3982,6 +3981,7 @@ void Magic_DrawMeter(PlayState* play) { // Blue magic gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { + // Green magic (default) gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); } @@ -3995,6 +3995,7 @@ void Magic_DrawMeter(PlayState* play) { // Blue magic gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 200, interfaceCtx->magicAlpha); } else { + // Green magic (default) gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 200, 0, interfaceCtx->magicAlpha); } @@ -5812,6 +5813,7 @@ void Interface_DrawTimers(PlayState* play) { break; case TIMER_STATE_MOVING_TIMER: + // Move the timer from the center of the screen to the timer location where it will count. if (sTimerId == TIMER_ID_MOON_CRASH) { j = ((((void)0, gSaveContext.timerX[sTimerId]) - R_MOON_CRASH_TIMER_X) / sTimerStateTimer); gSaveContext.timerX[sTimerId] = ((void)0, gSaveContext.timerX[sTimerId]) - j; @@ -6340,11 +6342,13 @@ Color_RGB16 sRupeeCounterIconPrimColors[] = { { 170, 170, 255 }, { 255, 105, 105 }, }; + Color_RGB16 sRupeeCounterIconEnvColors[] = { { 0, 80, 0 }, { 10, 10, 80 }, { 40, 10, 0 }, }; + TexturePtr sMinigameCountdownTextures[] = { gMinigameCountdown3Tex, gMinigameCountdown2Tex, @@ -6426,12 +6430,12 @@ void Interface_Draw(PlayState* play) { func_8012C654(play->state.gfxCtx); // Draw Rupee Icon - gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sRupeeCounterIconPrimColors[CUR_UPG_VALUE(4)].r, - sRupeeCounterIconPrimColors[CUR_UPG_VALUE(4)].g, - sRupeeCounterIconPrimColors[CUR_UPG_VALUE(4)].b, interfaceCtx->magicAlpha); - gDPSetEnvColor(OVERLAY_DISP++, sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].r, - sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].g, sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].b, - 255); + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].r, + sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].g, + sRupeeCounterIconPrimColors[CUR_UPG_VALUE(UPG_WALLET)].b, interfaceCtx->magicAlpha); + gDPSetEnvColor(OVERLAY_DISP++, sRupeeCounterIconEnvColors[CUR_UPG_VALUE(UPG_WALLET)].r, + sRupeeCounterIconEnvColors[CUR_UPG_VALUE(UPG_WALLET)].g, + sRupeeCounterIconEnvColors[CUR_UPG_VALUE(4)].b, 255); OVERLAY_DISP = Gfx_DrawTexRectIA8(OVERLAY_DISP, gRupeeCounterIconTex, 16, 16, 26, 206, 16, 16, 1 << 10, 1 << 10); @@ -6771,7 +6775,7 @@ void Interface_Draw(PlayState* play) { gDPPipeSync(OVERLAY_DISP++); gSPDisplayList(OVERLAY_DISP++, sScreenFillSetupDL); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 0, 0, 0, interfaceCtx->screenFillAlpha); - gSPDisplayList(OVERLAY_DISP++, D_0E0002E0); + gSPDisplayList(OVERLAY_DISP++, D_0E000000.fillRect); } CLOSE_DISPS(play->state.gfxCtx); @@ -6956,7 +6960,7 @@ void Interface_Update(PlayState* play) { LifeMeter_UpdateSizeAndBeep(play); - // Update Env Timer Part 1 + // Update environmental hazard (remnant of OoT) sEnvHazard = Player_GetEnvironmentalHazard(play); if (sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) { if (GET_CUR_EQUIP_VALUE(EQUIP_TYPE_TUNIC) == EQUIP_VALUE_TUNIC_GORON) { @@ -7001,7 +7005,7 @@ void Interface_Update(PlayState* play) { } } - // Update minigame perfect + // Update perfect letters if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->perfectLettersOn) { if (interfaceCtx->perfectLettersType == PERFECT_LETTERS_TYPE_1) { @@ -7018,10 +7022,10 @@ void Interface_Update(PlayState* play) { if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) { if (interfaceCtx->minigameState) { // != MINIGAME_STATE_NONE switch (interfaceCtx->minigameState) { - case MINIGAME_STATE_COUNTDOWN_SETUP_3: // minigame countdown 3 - case MINIGAME_STATE_COUNTDOWN_SETUP_2: // minigame countdown 2 - case MINIGAME_STATE_COUNTDOWN_SETUP_1: // minigame countdown 1 - case MINIGAME_STATE_COUNTDOWN_SETUP_GO: // minigame countdown Go! + case MINIGAME_STATE_COUNTDOWN_SETUP_3: + case MINIGAME_STATE_COUNTDOWN_SETUP_2: + case MINIGAME_STATE_COUNTDOWN_SETUP_1: + case MINIGAME_STATE_COUNTDOWN_SETUP_GO: interfaceCtx->minigameCountdownAlpha = 255; interfaceCtx->minigameCountdownScale = 100; interfaceCtx->minigameState++; @@ -7122,7 +7126,7 @@ void Interface_Update(PlayState* play) { break; } - // Update Magic + // Update magic if (!(player->stateFlags1 & PLAYER_STATE1_200)) { if (R_MAGIC_DBG_SET_UPGRADE == MAGIC_DBG_SET_UPGRADE_DOUBLE_METER) { // Upgrade to double magic @@ -7157,7 +7161,7 @@ void Interface_Update(PlayState* play) { Magic_UpdateAddRequest(); } - // Update Env Timer Part 2 + // Update environmental hazard timer if (gSaveContext.timerStates[TIMER_ID_ENV_HAZARD] == TIMER_STATE_OFF) { if ((sEnvHazard == PLAYER_ENV_HAZARD_HOTROOM) || (sEnvHazard == PLAYER_ENV_HAZARD_UNDERWATER_FREE)) { if (CUR_FORM != PLAYER_FORM_ZORA) { @@ -7177,7 +7181,7 @@ void Interface_Update(PlayState* play) { gSaveContext.timerStates[TIMER_ID_ENV_HAZARD] = TIMER_STATE_OFF; } - // Update Minigame + // Update minigame if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { gSaveContext.minigameScore += interfaceCtx->minigamePoints; gSaveContext.minigameHiddenScore += interfaceCtx->minigameHiddenPoints;