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.