Original Roll Jump - RetroKoH/S1Fixed GitHub Wiki
(Original guide by Mercury; Additional content by RetroKoH)
Source: ReadySonic
Commit: 64e2316
This mod can be toggled in S1Fixed by setting RollJumpLockActive to 0 or 1.
Every time Sonic jumps, he's spinning. For some reason, though, if Sonic is spinning before he jumps (for instance, if you jump off of a slope while rolling down it), Sonic won't be able to control his trajectory through the air as he usually is. The Left and Right buttons will do nothing - he's in the hands of fate. It's possible they originally implemented this feature as some sort of balancing? Who knows...
With the exception of the double-jump abilities in Sonic 3 & Knuckles which allow you to regain control, Sonic CD is the only classic Sonic game to have completely done away with this feature, and the gameplay functions just fine without it. It can be frustrating to not be in control of Sonic, especially when there's no obvious reason for it, so why not remove it?
loc_13490:
- bset #staRollJump,obStatus(a0) ; set the roll jump lock flag.
rts
All we really need to do to completely disable the feature is remove this line, as it's the only instance in Sonic's code where this status bit is ever set (For users of old disassemblies, this is bit #4). If you want to remove all instructions related to it and remove it wholesale, you'll want to look for those checks and remove them.
- _incObj\47 Bumper.asm, Bump_Hit The flag is cleared when Sonic hits the bumper.
- _incObj\64 Bubbles.asm, .wobble The flag is cleared when Sonic collects air bubbles.
- _incObj\Sonic JumpDirection.asm, Sonic_JumpDirection The flag is checked, and if set, disables air control. (Mercury's original fix simply removed this check and conditional branch.)
- _incObj\Sonic ResetOnFloor.asm, Sonic_ResetOnFloor The flag is cleared when Sonic lands on the floor.
Also, if double jump abilities are implemented, they typically clear this flag upon activation.