Как добавить Water Skimming в Sonic 1
(Оригинальное руководство написано Vladikcomper)
Water Skimming — это способность Соника прыгать по поверхности воды, будучи свернутым в клубочек, если он развил достаточную скорость. Такая приятная способность была добавлена в восьмибитный Sonic 2, в Sonic 3 была похожая способность, но она заключалась в беге по воде.
А добавить такую способность довольно легко. Найди суброутину Obj_MdJump2, она должна выглядеть примерно так:
<asm> 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) </asm>
Дополни её следующим кодом:
<asm> move.w $10(a0),d0 cmp.w #0,d0 bgt.s Obj01_MdJump2_Abs neg.w d0
Obj01_MdJump2_Abs: cmp.w #$250,d0 ; if Sonic speed less than $250? blt.s loc_12EA6 ; if yes, branch move.w $C(a0),d0 sub.w ($FFFFF646).w,d0 cmp.w #$F,d0 bgt.s loc_12EA6 subi.w #$90,$12(a0) ; jump out of water </asm>
Теперь скомпилируй РОМ и посмотри новую способность в действии. Самое удачное место для прыжков по воде — это огромная открытая местность в LZ1, почти в самом начале уровня. С помощью прыжков по поверхности воды ты сможешь добраться до противоположной стороны и пройти уровень коротким путем. Раньше это сделать было крайне трудно.
Только чтобы заставить Соника прыгать по воде, надо, разогнавшись, свернуться в клубочек у самого обрыва перед водной поверхностью. Обычным прыжком в воду ты ничего не добьёшься.