Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- In Zora's Domain, there are two loading panes, one that happens on your way up the stairs towards King Zora, and another on your way to King Zora from the Zora which gives you the Silver Scale as Child. When you pass through one of these loading panes, the actors for the area you're going into will load. When you're going towards King Zora, there are two important actors. King Zora himself, and red ice surrounding him. The ice is actually not an actor of this area, which will be discussed below.
- When you enter the area containing King Zora, his actor will be loaded into memory. Within his actor there are a few important functions. One (Which I'll call init) will be called once when the actor is created. Another (which I'll call main) will be executed on every in-game frame when the actor is on camera.* This is true for every** actor.
- There is a flag in event_inf for "King Zora Thawed" at 0xF1E[0] which appears to be set when you've used blue fire on King Zora melting the ice. In King Zora's init function, there is a check for this flag, and if it is NOT set, the init function will proceed to load the ice actor, when the ice actor is created, there is a variable that ties the ice actor's instance to King Zora. We'll call this variable "attachedA" which is at offset 0x118 from the King Zora actor. This will also set King Zora's "attachedB" (0x11C) to the Ice Actor.
- There is a function that is run on every in-game frame, that will run actor's main functions if they are within the camera's view.
- When the Ice's main function is called, it will check if "attachedA" is set. If it is (which in the case of Zora's fountain, it always is), then it will set a variable in King Zora called "freezeActor" to a certain value. This variable also get's set on Link's actor when he is scared by a Redead ora Gibdo. Having this value set to anything other than 0, will prevent that actor from executing it's main function.
- When King Zora's main function is called, it was always set the "King Zora Thawed" flag. When King Zora's "freezeActor" variable is set, this function will never be called, and this flag will never be set.
- In a casual playthrough you're meant to use blue fire on the red ice in order to melt the red ice. When the red ice is melted, the actor is unloaded, meaning there is no longer a main function in order to set the "freezeActor" variable on King Zora. Now King Zora's main function will execute, therefore setting the "King Zora Thawed" flag.
- When you perform the unfreeze King Zora early trick, you are not running either actor's main function because neither are on screen. When you pull a cutscene item, or read a sign you are moving the camera in a way that that King Zora's actor is on Camera, but the ice is not. Because of this King Zora's actor will execute his main function, but the ice cannot. Because the ice cannot execute it's main function which sets the "freezeActor" variable, and King Zora does get to execute his main function, the flag gets set.
- The reason why you need to leave the area, and re-enter is because the ice actor is still loaded. When you look at King Zora, the ice will load and set that "freezeActor" variable, essentially not letting King Zora do anything including talk to him. When you leave the area and re-enter, basically everything starts over from paragraph three, except now that the flag is set, the ice is never loaded.
- TL;DR
- The Ice is Tied to King Zora, when it's on camera it prevents King Zora from doing anything. Pulling a CS item, or reading a sign while both actors aren't on camera will load King Zora before the ice, letting King Zora set the "King Zora Thawed" flag. Reloading the area will allow talking to King Zora
- * The main function is run only when the actor is on camera and the freezeActor variable is not set...there may be other things, but this is all I know of for now.
- ** As far as I know every actor has an init and main function. (May not be true for all actors, but is for these two at least)
Add Comment
Please, Sign In to add comment