Skip to content

Restore interface after giving Biggoron Claim Check#2578

Open
djevangelia wants to merge 3 commits into
OoTRandomizer:Devfrom
djevangelia:claimcheck
Open

Restore interface after giving Biggoron Claim Check#2578
djevangelia wants to merge 3 commits into
OoTRandomizer:Devfrom
djevangelia:claimcheck

Conversation

@djevangelia
Copy link
Copy Markdown

Delay Biggoron's camera setting by one frame after giving Claim Check to let interface restore properly. Fixes #1431.

Both the message and the camera system can change the HUD visibility. When player is in range, Biggoron is running EnGo2_IsCameraModified every frame, which calls Camera_RequestSetting. If this is blocked, the interface bug doesn't occur. Furthermore, this isn't run during the get item textbox, but if it is nop:ed out during the textbox and afterwards, the bug doesn't occur either (caveat: with some other non-fixing test changes still left in). So, presumably there is some sort of conflict between message and camera interface update on closing the get item textbox. That the Biggoron camera can disturb other camera activities can be seen in the video linked.

I couldn't find what Biggoron-specific change could have led to this, nor any camera changes, so I didn't dig any further but made a fix based on the conflict. It could be get item related change, but a bit weird nothing else is bugging then. It's possible that it could be fixed by calling EnGo2_GetItemAnimation like getting Claim Check does, and if anyone is up for trying it maybe that would be a more naturalistic fix, even though it's still unclear why this even became an issue.

Anyway. The En_Go2 actor (general Goron actor) has variables for other Goron types, such as reverse for rolling direction. This fix is:

  • When Biggoron item is given, set EnGo2->reverse to 1 (where BGS flag would have been set, which has been removed since previously)
  • Change action function to EnGo2_Action_80A46B40 (func_80A46B40) as usual
  • Next frame, EnGo2_Action_80A46B40checks in the beginning if actor is Biggoron, and if reverse is set
  • If set, unset it and return without continuing function (i.e. no calling Camera_RequestSetting)
  • Next frame, everything continues as usual

This gives one frame delay which is enough to make interface restored.

Disassembly

NTSC 1.0 EnGo2_SetGetItem and EnGo2_Action_80A46B40
Decomp En_Go2

Testing

Tested on Ares recent nightly build and Project64 3.0.1
Looks like this: https://www.youtube.com/watch?v=R-yx393JUK8

@fenhl fenhl added Type: Bug Something isn't working Component: ASM/C Changes some internals of the ASM/C libraries Status: Needs Review Someone should be looking at it labels May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: ASM/C Changes some internals of the ASM/C libraries Status: Needs Review Someone should be looking at it Type: Bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HUD retains dimmed or invisible state after Biggoron and ZD Diving game

2 participants