Restore interface after giving Biggoron Claim Check#2578
Open
djevangelia wants to merge 3 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_IsCameraModifiedevery frame, which callsCamera_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_GetItemAnimationlike 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_Go2actor (general Goron actor) has variables for other Goron types, such asreversefor rolling direction. This fix is:EnGo2->reverseto 1 (where BGS flag would have been set, which has been removed since previously)EnGo2_Action_80A46B40(func_80A46B40) as usualEnGo2_Action_80A46B40checks in the beginning if actor is Biggoron, and ifreverseis setCamera_RequestSetting)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