Difference between revisions of "Fix Rexon crash"
From Sonic Retro
KingofHarts (talk | contribs) (Another RHS fix. Adding to the wiki) |
KingofHarts (talk | contribs) m (Added footers) |
||
Line 50: | Line 50: | ||
Done! The rexon crash will no longer happen. | Done! The rexon crash will no longer happen. | ||
+ | |||
+ | {{S2Howtos}} | ||
+ | [[Category:SCHG How-tos|{{PAGENAME}}]] |
Revision as of 09:38, 17 June 2012
(Optimization by redhotsonic)
On Hill Top Zone, it is possible to crash the game when hitting Rexon (the plesiosaur-like badnik that sits in the lava). Conflicts in the code cause it to jump to a section of code earlier than it was meant to jump to. This results in invalid opcodes being processed and an eventual crash.
Go to "loc_37454:" and you should see this:
<asm> loc_37454:
bsr.w loc_3750C subq.b #1,objoff_2A(a0) bmi.s loc_37462 bra.w JmpTo39_MarkObjGone
</asm>
That "branch to subroutine - loc_3750C" is what is causing the problem. It's happening too early. We need to move that command down a little bit. So change it to this:
<asm> loc_37454:
subq.b #1,objoff_2A(a0) bmi.s loc_37462 bsr.w loc_3750C ; Now moved here to fix Rexon crash bra.w JmpTo39_MarkObjGone
</asm>
One more, go to "loc_37488:" and you should see this:
<asm> loc_37488:
bsr.w loc_3750C moveq #$10,d0 add.w d0,x_vel(a0) subq.b #1,objoff_2A(a0) bmi.s loc_374A0 bsr.w JmpTo26_ObjectMove bra.w JmpTo39_MarkObjGone
</asm>
Again, "branch to subroutine - loc_3750C" is too early. So change it to this:
<asm> loc_37488:
moveq #$10,d0 add.w d0,x_vel(a0) subq.b #1,objoff_2A(a0) bmi.s loc_374A0 bsr.w loc_3750C ; Now moved here to fix Rexon crash bsr.w JmpTo26_ObjectMove bra.w JmpTo39_MarkObjGone
</asm>
Done! The rexon crash will no longer happen.