blini_plz

active camera GID

Jul 21st, 2021 (edited)
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. func_80048E3C (v1.0) runs every frame. It checks the value at +0x160 whatever active cam is being used and breaks if it is non zero. When it is 0 it jumps to a bunch of misc things to set camera values and returns to 80048E7C
  2.  
  3. then it checks a couple cam values. it breaks if
  4. actcam+0x162 != 0 , and if actcam+0x168 = 0
  5. idk what it does after these breaks, unimportant.
  6.  
  7. If it doesn't break for either check it ends up clearing the "freeze all actors" player state (0x20000000 at Link's instance+0x66C) and eventually sets the value at actcam+0x160 to 0xFFFF
  8.  
  9. This is why Din's Fire interrupt works. During the first actionable frame when interrupting it actcam+0x160 is set to 0 and so 80048E7C runs. Things like Nayru's Love and Farore's Wind just don't set it which is why they don't work at all. Normally with Din's Fire it sets 0 near the end of the animation. This can be used for things such as interrupting the Barinade room blue warp animation, or anything else where Link isn't required to be actionable.
  10.  
  11. This is how any currently known GID method aside from keeping an underwater player state works.
  12.  
  13. 80048E7C:
  14. https://github.com/Roman971/oot-disassembly/blob/master/system/code/camera.s#L21438
Advertisement
Add Comment
Please, Sign In to add comment