Fix crash on Wii VC caused by Fado spawn hack for adult trade shuffle #2345
+35,672
−35,678
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.
The previous hack in
EnKo_CanSpawn
saved register$ra
to temp registert3
before jumping to a custom function controlling Fado's spawn behavior. While the N64 and emulators handled this without problems, Wii VC and Dolphin frequently but inconsistently crash with this code. The spawn hacks are revised to move the custom function call to the end ofEnKo_Init
afterEnKo_CanSpawn
is called, eliminating the need for caching any registers.The crash is difficult to reproduce consistently, but with these changes it hasn't happened through >100 actor spawns using the attached plando. Odd Potion is in the top left chest of Mido's House for easy tests for all of Fado's spawn conditions.
trade-quest-rework-adult-fado.txt
Thanks to RealRob, flagrama, and Retropolis for identifying the possible cause.