This time the code that tries to unbunny you when leaving a dungeon.This
is needed to make ER's new cross world connects work properly.
Move the fake world fix to happen in time for this.
mixing single and multi-entrance caves.
I also added the alternate door frame table, which is needed for having
single entrance caves at
Sanctuary and Hyrule castle. (Added as a table rather than hard coding
the ids in order to be more friendly to level editors).
Updated the comments and function name to be clear that we are tracking
the overworld door
id, not the entrance id.
Remove the code that attempts to clear the entrance because the code is
broken (it lacked a needed ".w" suffix, so xkas miscompiled it) meaning
the value was never cleared, which has not caused any issues. Also
having the entrance ID around is generally useful.
Add a new rom flag to disable fake Light/Dark worlds from occurring as a
result of underworld travel. (Other methods of fake worlds like YBA Fake
Flute are not changed).
Entrance Randomizer intends to use this flag to fix the Fake Light world
from traveling though sewers when Hyrule Castle is in the dark world, as
well as to implement new shuffle modes that involve deliberate
cross-world caves without needing to grant pearl and mirror like the
current insanity mode does.
This fixes music stopping partway up GT when
the player encounters a "PsychoSoldier" (MathOnNapkin's name). Both types
of this sprite sharethe same audio code. They have code to play special
music if chasing link in Kakariko. That is fine in vanilla or item
rando, but if they try to play this music in a dungeon located in
kakariko, this will cause the music to just stop, because that song is
not avaiulable in the dungeon music bank.
This patch fixes this by adding an extra check to make sure we are in
the overworld before playing this song.
This commit fixes the wrong music when leaving certain caves bug in
Entrance Randomizer.
The vanilla games decides what music to play when re-entering the
overworld in code in `PreOverworld_LoadProperties`. One of the main
things the game uses to decide the correct music is the overworld screen
being loaded. Obviously that is ideal. But it also sometimes bases its
decision on the underworld screen you are leaving.
Why would they do that? Well some screens can be re-entered from
houses/etc that play at half volume. Nintendo did not want to have the
music restart from the begining when leaving those locations, so they
explictly coded the non-half-volume locations to set the music for that
screen, and let the half music volume cases fall though, and get handled
by a special case later in the process.
There is a better apporach though. Simply determine what music should be
playing for this overworld screen, looking only at the overwold screen
index. Then see if "half-volume music" is the last played song command.
If so, check what the actual song playing is. If it matches song for the
overworld screen we are entering, then play the full volume command.
Otherwise play the song for the screen we are entering (which by virtue
of being a new song will always play full volume).
This patch implements that better approach. It basically moves the music
selection code from `PreOverworld_LoadProperties` into the custom code
bank, removes the checks for specific underworld locations, and makes
sure the last bit of code run before actually setting the music is the
one to handle half music, as described above.