So here you go. Full changelog:
- spike bug fix (only affects Sonic 1, of course)
- don't game/time over any more
- restarting the level doesn't fade out and replay music (only happens when you pitfall or get crushed)
- crushing plays what was spike death sound, while pitfalling plays normal death sound (only affects Sonic 1, was too lazy to look for crushing objects in S2/S3K)
- debug mode no longer stops you getting killed from crushing or pitfalls (only affects Sonic 1)
- you no longer collect extra lives (1-up monitor does nothing)
Bugs (I.e. stuff I realize is broken, and too lazy to fix):
- Sonic 2's 2-player mode doesn't track separate counters for Tails
- S3K doesn't save the counters in the save data
- haven't tested S3K's 2-player mode at all but it's probably broken for some ridiculous reason
I was thinking of making the 1-up monitors give you 50 or 100 rings instead of doing nothing but I felt I wanted to keep everything apart from what I set out to change as close to the original games as possible, and assigning some arbitrary number doesn't really fit with that goal.
Probably took me about 4 hours yesterday to do S1 and ReadySonic, and another 4 hours today to do S2 and S3K.
ReadySonic config file I used (comments removed for brevity, download ReadySonic yourself if you don't know what they mean):
WallJumpActive: = 0 MoveLamppostVRAM: = 1 UseDMAQueue: = 1 SpinDashActive: = 1 SpinDashDustActive: = SpinDashActive*MoveLamppostVRAM*UseDMAQueue*1 SpinDashSFXActive: = SpinDashActive*1 SpinDashCancel: = SpinDashActive*1 SpinDashNoRevDown: = SpinDashActive*1 SpinDashCameraLag: = SpinDashActive*1 DashCDActive: = 0 BalanceCDActive: = 0 InstaShieldActive: = 0 SimpleCheatEntry: = 1 MonitorArtOptimise: = 1 HUDCentiseconds: = MonitorArtOptimise*1 ChunksInROM: = 0 BlocksInROM: = 0 HUDHasLeadingZeroes: = 0 TimeRingsFlashFix: = 1 TimeRingsFlashFixNotRed: = TimeRingsFlashFix*1 DynamicSpecialStageWalls: = 0 HUDInSpecialStage: = DynamicSpecialStageWalls*1 HUDInSpecialStageType: = 0 TimeLimitInSpecialStage: = HUDInSpecialStage*TimeRingsFlashFix*0 TimeLimitInSpecialStagePinch: = $00001E00 TimeLimitInSpecialStageStart: = $00010000 TitleScreenPaletteFix: = 0 SpecialStageJumpFix: = 0 WarmPaletteMod: = 0 ShieldArtMod: = 1 SonicCDRollJump: = 0 ReboundMod: = 0 EnablePSBMessage: = 1 LimitLZBlockRisingSpeed: = 1 SkipCheckSumCheck: = 1 SpeedUpScoreTally: = 1 SpikeSFXFix: = 0 RollingTurnAroundFix: = 1 ScrollDelay: = 1 ScrollDelayTime: = 30 LookShiftFix: = 1 SpikeFix: = 1 CaterkillerFix: = 1 CustomDemoDelay: = 0 CustomDemoDelayTime: = $280 OrbinautAnimationTweak: = 0 OrbinautAnimationTweakRange: = $80 OrbinautAnimationTweakSpeed: = $8 SLZOrbinautBehaviourMod: = 0 NewtronBehaviourTweak: = 0 LostRingsFlash: = 1 LostRingsFlashTime: = 80 FZBossInvulnMod: = 0 FZBossInvulnModTime: = $20 DisableSpeedCap: = 0 GiantRingArtLoadsWithEndSign: = 1 SpecialStageIndexIncreasesOnlyIfWon: = 1 SpecialStagesStillAppearWithAllEmeralds: = 0 GiantRingsInSBZ: = GiantRingArtLoadsWithEndSign*1 GiantRingsInSBZArtLoc1: = $4DA GiantRingsInSBZArtLoc2: = $568 GiantRingsInSBZArtLoc3: = $3A0 GiantRingsInSBZArtLoc4: = $4C0 PaddingActive: = 1 PaddingValue: = $FF PaddingMegs: = 1 QuarterloopFix: = 1 MagneticRings: = 1 RingsBounceAtZoneBottom: = 1
I will post source if enough people care (and diffs if moreso)