Прыжок в оригинале чувствовался как-то не очень отзывчево.Надо поправить.
Откроем АСМ код.Перейдем к Obj09_InAir.
Заменим строку:

Код:
BSR . W	nullsub_2

на:

Код:
BSR . W	       Obj09_JumpHeight

Если в данный момент скомпилировать,то компилятор нам выдаст ошибку.
Потому что в коде нет Obj09_JumpHeight.
Надо найти nullsub_2.Там код примерно такой:

Код:
nullsub_2:        ; XREF: Obj09_InAir
    rts	
; End of function nullsub_2
 
; ===========================================================================
; ---------------------------------------------------------------------------
; unused subroutine to limit Sonic's upward vertical speed
; ---------------------------------------------------------------------------
    move.w	#-$400,d1
    cmp.w	$12(a0),d1
    ble.s	locret_1BBB4
    move.b	($FFFFF602).w,d0
    andi.b	#$70,d0
    bne.s	locret_1BBB4
    move.w	d1,$12(a0)
 
locret_1BBB4:
    rts

Так как у нас нет ссылки больше на эту процедуру,заменим её на:

Код:
; ===========================================================================
; ---------------------------------------------------------------------------
; Subroutine to limit Sonic's upward vertical speed
; ---------------------------------------------------------------------------
 
Obj09_JumpHeight:    	; XREF: Obj09_InAir
    move.b	($FFFFF602).w,d0	; Кнопка прыжка нажата?
    andi.b	#$70,d0
    bne.s	locret_1BBB4    ; Если нет,переходим
    btst	#7,$22(a0)    ; did Sonic jump or is he just falling or hit by a bumper?
    beq.s	locret_1BBB4    ; if not, branch to return
    move.b	($FFFFF780).w,d0	; get SS angle
    andi.b	#$FC,d0
    neg.b	d0
    subi.b	#$40,d0
    jsr	(CalcSine).l    	
    move.w	$12(a0),d2    ; Y скорость
    muls.w	d2,d0    	; multiply Y speed by sin
    asr.l	#8,d0    	; find the new Y speed
    move.w	$10(a0),d2    ; X скорость
    muls.w	d2,d1    	; multiply X speed by cos
    asr.l	#8,d1    	; find the new X speed
    add.w	d0,d1    	; combine the two speeds
    cmpi.w	#$400,d1    ; compare the combined speed with the jump release speed
    ble.s	locret_1BBB4    ; if it's less, branch to return
    move.b	($FFFFF780).w,d0
    andi.b	#$FC,d0
    neg.b	d0
    subi.b	#$40,d0
    jsr	(CalcSine).l
    muls.w	#$400,d1
    asr.l	#8,d1
    move.w	d1,$10(a0)
    muls.w	#$400,d0
    asr.l	#8,d0
    move.w	d0,$12(a0)    ; set the speed to the jump release speed
    bclr	#7,$22(a0)    ; Очистить флаг "Соник прыгнул"
 
locret_1BBB4:
    rts

Теперь подправим баги.Для этого найдем Obj09_OnWall.СРАЗУ после этой строки добавим эту:

Код:
bclr	#7,$22(a0)	; clear "Sonic has jumped" flag

Также пройдем на Obj09_Jump.Найдем строку :

Код:
bset	#1,$22(a0)

добавим после неё:

Код:
bset	#7,$22(a0)	; set "Sonic has jumped" flag

.
И наконец последнее.Перейдем на Obj09_ChkBumper.Найдем строку :

Код:
bset	#1,$22(a0)

добавим после неё:

Код:
bclr	#7,$22(a0)	; set "Sonic has jumped" flag

.
Все физика изменена.