Under the Surface of Classic Sonic
banner
classicsoniccode.bsky.social
Under the Surface of Classic Sonic
@classicsoniccode.bsky.social
All about programming, unused content, and more in the Classic Sonic games!
More Mario content? Oh no! Anyways... so, you know how in Mario 1 on the NES, you bounce downwards when you destroy a brick, but hover upwards in the SNES version? Turns out the SNES behavior was possibly the intended behavior? Here's how it works.
October 15, 2025 at 7:18 PM
Reposted by Under the Surface of Classic Sonic
Another sample.
October 12, 2025 at 3:43 AM
So, because Sonic 2 changed the ground speed cap to be more lenient, but not the air speed cap, you can actually see this issue by just running down a hill at a fast speed and then jumping. No hacks needed to see it.
October 12, 2025 at 3:31 AM
So what happens if you remove that control lock in a faster game like Sonic 2? Yeah, not ideal...
October 12, 2025 at 2:21 AM
In the Sega CD version of Sonic CD, pressing left or right while in the air applies a speed cap, but unlike Sonic 1/2/3K, the control lock for when you jump after rolling was removed. As a result, the trajectory of a rolling jump can be affected by the speed cap.
October 12, 2025 at 2:14 AM
Reposted by Under the Surface of Classic Sonic
Sprite order is what determines who's in front of what, regardless of priority.
All one needs to do is ensure the high priority sprite is bellow the low priority sprite while in front of a high priority tile layer.

Footage from "I made you a Salad" (SHC 2019)
September 19, 2025 at 7:40 PM
Actually, here's a visible example of this behavior in this set of pulley platforms in World 3-3!
September 4, 2025 at 3:18 AM
In Super Mario Bros, objects with an upwards force have a quirk with its speed cap. If their Y speed (8.8 fixed point) goes beyond max speed + 0x80, then it gets capped to max speed - 0xFF. This behavior is possibly never visible, so here's a mod to show what it looks like.
September 4, 2025 at 2:52 AM
Ever seen this weird sprite quirk with the lava and platform in Marble Zone in Sonic 1? Here's why that happens.
August 18, 2025 at 4:56 AM
In the remake of Sonic 3 & Knuckles included with Sonic Origins, there is a hidden credits cheat code in the title screen.

However, due to a very specific change in the code that handles cheat inputs, as well as a flag not being set when activated, this is impossible to see under normal play.
July 10, 2025 at 1:59 AM
In the Nick Arcade prototype of Sonic 2, there lies leftover scraps of a build process for an even earlier build. One of the things that can be found is an earlier version of Emerald Hill's boss.

It has only 2 hit points, no hitbox for the drill, and a weird bobbing animation.
January 9, 2025 at 1:34 AM
In the vertical scrolling code, it follows the top boundary + 32. I assume that this might be related to old HUD code that displayed on the top 32 pixels of the screen?

There is unused code that draws a chain of life icons, but that's on the bottom... www.youtube.com/watch?v=zkLf...
January 2, 2025 at 1:26 AM
scrh_flag and scrv_flag do function in the Sonic 1 prototype, and may be related to a potential scrapped auto-scroll function.

Each are individually set if the stage boundaries for their respective axis are the same, and change how the camera moves. [1/2]
January 2, 2025 at 1:02 AM
There's some unused variables related to camera scrolling in Sonic 1 and Sonic CD. Here are their official names, taken from Sonic Gems Collection.
January 1, 2025 at 2:06 AM
Leftover symbol data included a lot of internal names for various things.

Sonic was "play00", "play01", or "play02", depending on the game mode. Tails was "fox" in Sonic 2, but was changed to "miles" in Sonic 3. Knuckles was either "knuckles" or "nuckle". Amy was "emie".
December 31, 2024 at 5:21 AM
Sega did have their own formats. The 2 most well known ones are "Nemesis" and "Enigma". "Nemesis" was used for tile graphics and "Enigma" was used for tilemaps.

Symbol data revealed "Nemesis" to potentially be called "bitdevr", and "Enigma" to actually be called "mapdevr".
There is a compression format used in various Sega Genesis games known as "Kosinski". It is an LZSS based format used for various kinds of data in games.

Recently, it was found out that "Kosinski" was LZEXE this entire time. 🧵

bellard.org/lzexe.html
LZEXE Home Page
bellard.org
December 31, 2024 at 5:20 AM
There is a compression format used in various Sega Genesis games known as "Kosinski". It is an LZSS based format used for various kinds of data in games.

Recently, it was found out that "Kosinski" was LZEXE this entire time. 🧵

bellard.org/lzexe.html
LZEXE Home Page
bellard.org
December 31, 2024 at 5:17 AM
A breakdown of the differences in the peelout and spindash between the original and 2011 remake.

(Part 1)
December 17, 2024 at 7:23 PM
100 followers! Thanks 😊
November 29, 2024 at 9:28 PM
A brief breakdown of how the peelout and spindash are charged up in the original Sega CD version of Sonic CD.
November 26, 2024 at 12:10 AM
Wacky Workbench actually uses a duplicate file for Sonic's object code, modified to handle all the stage gimmicks.

However, some of the updates they made to the main file didn't get implemented in the duplicate file, such as changing the spindash charge speed from 50 to 75.
November 17, 2024 at 5:27 AM
So, in the 2011 remake, the time it takes to start time traveling appears to be longer than the original. However, this is false. As it turns out, in the original, the time warp timer ticks every frame, regardless of lag. The original can get laggy. For example, this section.
November 17, 2024 at 4:27 AM
When you turn in Sonic CD's special stages, Sonic's sprite tilts towards the direction he's turning, and it's gradual. Well, the developers intended to make the untilting gradual as well, but a couple of bad branches make it so that he snaps back to the normal sprite instantly.
November 17, 2024 at 4:10 AM
The time warp cutscene is not actually really much of a loading screen at all. Nothing loads in the background while it's running. It only actually starts loading the next time zone file after it ends and fades to white.
November 17, 2024 at 4:07 AM
Fun fact: the Sub CPU program file for Sonic CD's good ending is called "BADEND.BIN" (loads "GOODEND.STM") and the bad ending Sub CPU program file is called "GOODEND.BIN" (loads "BADEND.STM"). They got the file names mixed up.
November 17, 2024 at 4:03 AM