mirror of
https://github.com/Zelda64Recomp/Zelda64Recomp.git
synced 2025-10-30 08:03:03 +00:00
Add event needed for dpad as mod, revert remaining changes in built-in patches for dpad
This commit is contained in:
parent
e970e85882
commit
f2901d73bc
1 changed files with 177 additions and 192 deletions
369
patches/input.c
369
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue