Difference between revisions of "Have a functional Eggman monitor in Sonic 1"
From Sonic Retro
(For the sake of it :U) |
(commented :)) |
||
Line 15: | Line 15: | ||
move.b $1C(a0),d0 | move.b $1C(a0),d0 | ||
cmpi.b #1,d0; does monitor contain Eggman? | cmpi.b #1,d0; does monitor contain Eggman? | ||
− | bne.s Obj2E_ChkSonic | + | bne.s Obj2E_ChkSonic ; if not, go and check for the next monitor type (1-up icon) |
− | move.l a0,a1 | + | move.l a0,a1 ; move a0 to a1, because Touch_ChkHurt wants the damaging object to be in a1 |
− | move.l a0,-(sp) | + | move.l a0,-(sp) ; push a0 on the stack, and decrement stack pointer |
− | lea ($FFFFD000).w,a0 | + | lea ($FFFFD000).w,a0 ; put Sonic's ram address in a0, because Touch_ChkHurt wants the damaged object to be in a0 |
− | jsr Touch_ChkHurt | + | jsr Touch_ChkHurt ; runs the Touch_ChkHurt routine |
− | move.l (sp)+,a0 | + | move.l (sp)+,a0 ; pops the previous value of a0 from the stack |
rts</pre>Simple, isn't it? And it's set up in a way to use the regular "Touch_ChkHurt" routine, so shields and invincibilities are already taken in account by existing code, and the Eggman monitor will damage you like every other hazard would.[[Category:SCHG How-tos|Have_a_functional_Eggman_monitor_in_Sonic_1]] | rts</pre>Simple, isn't it? And it's set up in a way to use the regular "Touch_ChkHurt" routine, so shields and invincibilities are already taken in account by existing code, and the Eggman monitor will damage you like every other hazard would.[[Category:SCHG How-tos|Have_a_functional_Eggman_monitor_in_Sonic_1]] |
Revision as of 17:28, 1 September 2010
(Original guide by nineko) This very simple guide will tell you how to get a functional Eggman monitor in Sonic 1. It targets the Hivebrain 2005 Disassembly.
Find this code:
Obj2E_ChkEggman: ; XREF: Obj2E_Move addq.b #2,$24(a0) move.w #29,$1E(a0) move.b $1C(a0),d0 cmpi.b #1,d0; does monitor contain Eggman? bne.s Obj2E_ChkSonic rts ; Eggman monitor does nothingAnd replace it with this:
Obj2E_ChkEggman: ; XREF: Obj2E_Move addq.b #2,$24(a0) move.w #29,$1E(a0) move.b $1C(a0),d0 cmpi.b #1,d0; does monitor contain Eggman? bne.s Obj2E_ChkSonic ; if not, go and check for the next monitor type (1-up icon) move.l a0,a1 ; move a0 to a1, because Touch_ChkHurt wants the damaging object to be in a1 move.l a0,-(sp) ; push a0 on the stack, and decrement stack pointer lea ($FFFFD000).w,a0 ; put Sonic's ram address in a0, because Touch_ChkHurt wants the damaged object to be in a0 jsr Touch_ChkHurt ; runs the Touch_ChkHurt routine move.l (sp)+,a0 ; pops the previous value of a0 from the stack rtsSimple, isn't it? And it's set up in a way to use the regular "Touch_ChkHurt" routine, so shields and invincibilities are already taken in account by existing code, and the Eggman monitor will damage you like every other hazard would.