diff --git a/patches/input.c b/patches/input.c index 1235cea..f44506e 100644 --- a/patches/input.c +++ b/patches/input.c @@ -8,6 +8,7 @@ RECOMP_DECLARE_EVENT(recomp_before_first_person_aiming_update_event(PlayState* play, Player* this, bool in_free_look, RecompAimingOverideMode* recomp_aiming_override_mode)); RECOMP_DECLARE_EVENT(recomp_after_first_person_aiming_update_event(PlayState* play, Player* this, bool in_free_look)); +RECOMP_DECLARE_EVENT(recomp_set_extra_item_slot_statuses(PlayState* play, s32 enabled)); s32 func_80847190(PlayState* play, Player* this, s32 arg2); s16 func_80832754(Player* this, s32 arg1); @@ -296,13 +297,6 @@ RECOMP_PATCH void func_8083A98C(Actor* thisx, PlayState* play2) { Camera_ChangeMode(Play_GetCamera(play, CAM_ID_MAIN), camMode); } -u32 sPlayerItemButtons[] = { - BTN_B, - BTN_CLEFT, - BTN_CDOWN, - BTN_CRIGHT, -}; - bool no_bow_epona_fix = false; // @recomp_export void recomp_set_no_bow_epona_fix(bool new_val): Set whether to enable the fix for getting on Epona without a bow. @@ -328,16 +322,7 @@ u16 func_801A5100(void); #define AT_H_AND_D (play->sceneId == SCENE_BOWLING) #define H_AND_D_FIX_ACTIVE (h_and_d_no_sword_fix && AT_H_AND_D) -// TODO: These can just be reverted back to the original code. - -#define TOTAL_SLOT_COUNT 3 -#define BUTTON_STATUS(btn) gSaveContext.buttonStatus[btn] - -// Converts an ex slot index into the actual slot index. -u8 to_slot_index(u32 ex_slot) { - return ex_slot + EQUIP_SLOT_C_LEFT; -} - +// @recomp Patched to call event for extra item slot mods. RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); @@ -361,17 +346,19 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { if ((player->transformation == PLAYER_FORM_DEKU) && CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; if (play->sceneId == SCENE_BOWLING) { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); } - } else if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_ENABLED); } Interface_SetHudVisibility(HUD_VISIBILITY_B_MAGIC); @@ -380,10 +367,11 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMB) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_BOMBCHU)) { gSaveContext.hudVisibilityForceButtonAlphasByStatus = true; - BUTTON_STATUS(EQUIP_SLOT_B) = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_ENABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_ENABLED); if (play->sceneId == SCENE_BOWLING) { if (CURRENT_DAY == 1) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOMBCHU; @@ -393,15 +381,16 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); } else { // @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix. if (EPONA_FIX_ACTIVE) { if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; @@ -413,7 +402,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { // @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix. if (EPONA_FIX_ACTIVE) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } @@ -424,16 +413,17 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { // @recomp_use_export_var no_bow_epona_fix: If the B button does not contain a sword, don't disable the UI. if (!EPONA_FIX_ACTIVE || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED) { - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); Interface_SetHudVisibility(HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_OVERWRITE); } } } - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED && BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED && BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } if (play->transitionMode != TRANS_MODE_OFF) { @@ -450,9 +440,10 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { } else if (play->unk_1887C >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (ON_EPONA) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); @@ -472,17 +463,18 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; } if (h_and_d_no_sword_fix) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); } else { // @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix. if (EPONA_FIX_ACTIVE) { if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW; @@ -495,7 +487,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { // @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix. if (EPONA_FIX_ACTIVE) { gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B); - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_NONE; } @@ -503,10 +495,10 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { // @recomp_use_export_var no_bow_epona_fix: Don't enable the B button unless it is being used for the bow. if (!no_bow_epona_fix || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } // @recomp_use_export_var no_bow_epona_fix: Don't restore hud visibility from Epona without a sword. @@ -517,9 +509,10 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { // @recomp_use_export_var no_bow_epona_fix: If the B button does not contain the bow, don't disable the UI. if ((!no_bow_epona_fix || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_BOW) && !H_AND_D_FIX_ACTIVE) { - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); Interface_SetHudVisibility(HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_OVERWRITE); } @@ -534,9 +527,10 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { } else if (play->unk_1887C >= 2) { Interface_SetHudVisibility(HUD_VISIBILITY_B); } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01)) { - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); } else if (ON_EPONA) { Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP); @@ -603,16 +597,18 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) { (gSaveContext.save.entrance == ENTRANCE(WATERFALL_RAPIDS, 1)) && (play->transitionTrigger == TRANS_TRIGGER_OFF) && (play->transitionMode == TRANS_MODE_OFF)) { // Beaver race minigame - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, 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)) { // Goron race minigame - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; + recomp_set_extra_item_slot_statuses(play, BTN_DISABLED); Interface_SetHudVisibility(HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP); } else if (play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON) { // Related to pictograph @@ -657,53 +653,50 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); - s16 e; + s16 i; s16 restoreHudVisibility = false; if (CHECK_EVENTINF(EVENTINF_41)) { // Related to swamp boat (non-minigame)? - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if ((GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTOGRAPH_BOX) || (msgCtx->msgMode != MSGMODE_NONE)) { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } if (sPictoState == PICTO_BOX_STATE_OFF) { - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_20)) { // Fishermans's jumping minigame - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); - if (BUTTON_STATUS(i) == BTN_ENABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + 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 (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_08)) { // Swordsman's log minigame - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); - if (BUTTON_STATUS(i) == BTN_ENABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } @@ -711,45 +704,42 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_20)) { // Related to moon child if (player->currentMask == PLAYER_MASK_FIERCE_DEITY) { - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + 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 (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else { - if (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } } } } else { - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + 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 (BUTTON_STATUS(i) != BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } } } else if ((play->sceneId == SCENE_SPOT00) && (gSaveContext.sceneLayer == 6)) { // Unknown cutscene - for (e = 0; e < EQUIP_SLOT_C_RIGHT; e++) { - s16 i = to_slot_index(e); - if (BUTTON_STATUS(i) == BTN_ENABLED) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (CHECK_EVENTINF(EVENTINF_34)) { // Deku playground minigame @@ -758,21 +748,20 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_DEKU_NUT; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); } else { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; restoreHudVisibility = true; } } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; restoreHudVisibility = true; } - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); - if (BUTTON_STATUS(i) == BTN_ENABLED) { + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } @@ -787,24 +776,24 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) != ITEM_DEKU_NUT) { BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_DEKU_NUT; Interface_LoadItemIconImpl(play, EQUIP_SLOT_B); - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; restoreHudVisibility = true; } - } else if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_ENABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + } else if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_ENABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; restoreHudVisibility = true; } if (restoreHudVisibility) { - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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.saveInfo.playerData.isMagicAcquired && (CUR_FORM == PLAYER_FORM_DEKU) && (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_DEKU_NUT)) { // Nuts on B (as Deku Link) BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_FD; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } else if ((Player_GetEnvironmentalHazard(play) >= PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) && (Player_GetEnvironmentalHazard(play) <= PLAYER_ENV_HAZARD_UNDERWATER_FREE)) { // Swimming underwater @@ -821,42 +810,41 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { restoreHudVisibility = true; } } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_MASK_ZORA) { if (Player_GetEnvironmentalHazard(play) == PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) { if (!((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_BOTTLE) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_OBABA_DRINK))) { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } - } else if (BUTTON_STATUS(i) == BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_ENABLED; + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_ENABLED; restoreHudVisibility = true; } } @@ -872,32 +860,31 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { } } else if (player->stateFlags1 & PLAYER_STATE1_200000) { // First person view - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { if (GET_CUR_FORM_BTN_ITEM(i) != ITEM_LENS_OF_TRUTH) { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } else { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; restoreHudVisibility = true; } } else if (player->stateFlags1 & PLAYER_STATE1_2000) { // Hanging from a ledge - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED; - BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = 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; restoreHudVisibility = true; Interface_SetHudVisibility(HUD_VISIBILITY_ALL); } @@ -925,15 +912,15 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { (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) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_ENABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = + 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) = BUTTON_STATUS(EQUIP_SLOT_B); + 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); @@ -941,25 +928,25 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { restoreHudVisibility = true; } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { if (interfaceCtx->bButtonDoAction != 0) { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } } else if (BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) == ITEM_NONE) { - if (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } } else { - if (BUTTON_STATUS(EQUIP_SLOT_B) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; } } } else if (interfaceCtx->restrictions.bButton != 0) { @@ -967,18 +954,18 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { (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) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; } - BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = BUTTON_STATUS(EQUIP_SLOT_B); + 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 (BUTTON_STATUS(EQUIP_SLOT_B) != BTN_DISABLED) { - BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED; + if (gSaveContext.buttonStatus[EQUIP_SLOT_B] != BTN_DISABLED) { + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_DISABLED; restoreHudVisibility = true; } } @@ -986,56 +973,54 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { // C buttons if (GET_PLAYER_FORM == player->transformation) { - for (e = 0; e < TOTAL_SLOT_COUNT; e++) { - s16 i = to_slot_index(e); + for (i = EQUIP_SLOT_C_LEFT; i <= EQUIP_SLOT_C_RIGHT; i++) { // Individual C button if (!gPlayerFormItemRestrictions[GET_PLAYER_FORM][GET_CUR_FORM_BTN_ITEM(i)]) { // Item not usable in current playerForm - if (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + 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 (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + 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 (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } - } else if (BUTTON_STATUS(i) == BTN_DISABLED) { + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_ENABLED; + 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 (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } - } else if (BUTTON_STATUS(i) == BTN_DISABLED) { + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_MASK_FIERCE_DEITY) { // Fierce Deity's Mask is equipped - // @recomp_use_export_var fd_anywhere: Allow the player to use the Fierce Deity's Mask anywhere if mods enable it. - if (!fd_anywhere && (play->sceneId != SCENE_MITURIN_BS) && (play->sceneId != SCENE_HAKUGIN_BS) && + 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)) { - if (BUTTON_STATUS(i) != BTN_DISABLED) { - BUTTON_STATUS(i) = BTN_DISABLED; + if (gSaveContext.buttonStatus[i] != BTN_DISABLED) { + gSaveContext.buttonStatus[i] = BTN_DISABLED; restoreHudVisibility = true; } - } else if (BUTTON_STATUS(i) == BTN_DISABLED) { + } else if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } else { // End of special item cases. Apply restrictions to buttons @@ -1045,10 +1030,10 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { ((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_OF_TIME)) { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if (gSaveContext.buttonStatus[i] == BTN_ENABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (interfaceCtx->restrictions.tradeItems == 0) { if (((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MOONS_TEAR) && @@ -1056,44 +1041,44 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { ((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_OF_TIME)) { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } if (interfaceCtx->restrictions.masks != 0) { if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { - if (!BUTTON_STATUS(i)) { // == BTN_ENABLED + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (interfaceCtx->restrictions.masks == 0) { if ((GET_CUR_FORM_BTN_ITEM(i) >= ITEM_MASK_DEKU) && (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } if (interfaceCtx->restrictions.pictoBox != 0) { if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTOGRAPH_BOX) { - if (!BUTTON_STATUS(i)) { // == BTN_ENABLED + if (!gSaveContext.buttonStatus[i]) { // == BTN_ENABLED restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } else if (interfaceCtx->restrictions.pictoBox == 0) { if (GET_CUR_FORM_BTN_ITEM(i) == ITEM_PICTOGRAPH_BOX) { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if (gSaveContext.buttonStatus[i] == BTN_DISABLED) { restoreHudVisibility = true; } - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } @@ -1107,9 +1092,9 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTOGRAPH_BOX)) { - if (BUTTON_STATUS(i) == BTN_ENABLED) { + if ((gSaveContext.buttonStatus[i] == BTN_ENABLED)) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_DISABLED; + gSaveContext.buttonStatus[i] = BTN_DISABLED; } } } else if (interfaceCtx->restrictions.all == 0) { @@ -1122,9 +1107,9 @@ RECOMP_PATCH void Interface_UpdateButtonsPart2(PlayState* play) { (GET_CUR_FORM_BTN_ITEM(i) <= ITEM_MASK_GIANT)) && (GET_CUR_FORM_BTN_ITEM(i) != ITEM_PICTOGRAPH_BOX)) { - if (BUTTON_STATUS(i) == BTN_DISABLED) { + if ((gSaveContext.buttonStatus[i] == BTN_DISABLED)) { restoreHudVisibility = true; - BUTTON_STATUS(i) = BTN_ENABLED; + gSaveContext.buttonStatus[i] = BTN_ENABLED; } } }