How to add Water Skimming in Sonic 1 Water skimming was first seen in Sonic 2 for SMS, it also appeared in Sonic 3 for SMD, but worked a little different. Due to LZ levels in Sonic 1 aren't designed for fast walkthrough, 8-bit Sonic 2 Water Skimming would suit better. So it will work this way: Adding this ability is quite easy. Find Obj_MdJump2 label, so you'll see something like this: Obj01_MdJump2: ; XREF: Obj01_Modes bsr.w Sonic_JumpHeight bsr.w Sonic_ChgJumpDir bsr.w Sonic_LevelBound jsr ObjectFall btst #6,$22(a0) beq.s loc_12EA6 subi.w #$28,$12(a0) Append it with the following code: move.w $10(a0),d0 ; move Sonic's X-velocity to d0 tst.w d0 ; is his speed positive? (is he running to the right?) bpl.s Obj01_MdJump2_Abs ; if yes, branch neg.w d0 ; otherwise negate it Obj01_MdJump2_Abs: cmpi.w #$250,d0 ; if Sonic speed less than $250? blt.s loc_12EA6 ; if yes, branch move.w $C(a0),d0 ; move sonic's Y-position to d0 sub.w ($FFFFF646).w,d0 ; sub the water height from it cmpi.w #$F,d0 ; is Sonic slightly in the water? bgt.s loc_12EA6 ; if not, branch subi.w #$90,$12(a0) ; jump out of water That's all. Build your ROM and try new ability! Please correct me if you've noticed grammar or lexical mistakes in this text.