Rolling Jump Landing Fix - RetroKoH/S1Fixed GitHub Wiki

(Original guide by RetroKoH)
Source: See commits
Commit: 64e2316

As if the rolling jump, the one that locks your mid-air control, wasn't annoying enough, there is an odd bug that occurs with this mechanic that doesn't necessarily break anything, but it looks absolutely janky. Let's fix this.

Go into _incObj/Sonic Jump.asm, and find label loc_1341C. Just after the instruction to play the jump sound, you'll see lines meant to resize Sonic's collision box. Yeah, we're removing those!

	move.w	#sfx_Jump,d0
	jsr	(PlaySound_Special).l	; play jumping sound
-	move.b	#$13,obHeight(a0)
-	move.b	#9,obWidth(a0)
	btst	#staSpin,obStatus(a0)
	bne.s	loc_13490
	move.b	#$E,obHeight(a0)
	move.b	#7,obWidth(a0)
	move.b	#aniID_Roll,obAnim(a0) ; use "jumping" animation
	bset	#staSpin,obStatus(a0)
	addq.w	#5,obY(a0)

locret_1348E:
	rts

So what happens here is, when you jump, Sonic's height and width are set to his standing height and width. The game then checks whether Sonic is already in a ball (which is only the case if he's performing a rolling jump). If he is, the game doesn't run through the logic of giving him a smaller collision box.

This means that when performing a rolling jump, Sonic actually has a standing collision box, not a rolling collision box. That's not right. Again, remove those two lines, and the janky rolling jump should now be fixed.