A technical dive (😉) into Sonic 3's water palette swapping!
Under the Surface of Classic Sonic
@classicsoniccode.bsky.social
All about programming, unused content, and more in the Classic Sonic games!
Due to the demo programs in the Japanese and PAL versions (not USA) of Sonic CD being built off of a prototype, they retain the logic for enabling debug mode by pressing start on player 2's controller. You can do this so that you don't need to enter the code in the sound test.
There exists a collision bug where the check used to prevent Sonic from clipping on top of a surface he's too far below from isn't done if he's moving horizontally in the air. This can easily be seen if you put a solid object on a top solid surface and hit it from the bottom.
Here's a silly difference between the 510 and 0.28A (512) prototypes of Sonic CD. Special stage rings always appear in 510, but never in 0.28A. 0.28A added a ring count check, but only checked the top byte. As a result, they can only appear if the player has at least 12800 rings.
Loops were planned on being implemented in Chaotix, even being present in prototypes... yeah, I can see why they were removed (footage provided by @mdtravis.bsky.social)
There's a hidden tunnel that can be found right towards the end of the 3D loop section at the beginning of Palmtree Panic act 1 that I'm not sure is even accessible via normal means. Anyone have any ideas?
The Metallic Madness act 2 demo was, indeed, rerecorded as well. The USA demo struggles while the Japanese demo gets quite a bit further ahead. Left: Japan/Europe, Right: USA
The Tidal Tempest act 3 demo was also rerecorded. What I find peculiar is how whoever recorded the USA demo slowly walked to the boss while the Japanese demo caught up. Were they trying to eyeball the Japanese demo? I dunno... Left: Japan/Europe, Right: USA
In the PAL version of Sonic CD, the physics of Sonic were modified to more closely resemble the NTSC physics while at a lower frame rate. As such, separate demo controller data had to be recorded for the special stage demos. Special Stage 1 Left: NTSC, Right: PAL
For some reason, the demo for Palmtree Panic act 1 was rerecorded for the USA release of Sonic CD. Here's a comparison showing the differences. Left: Japan/Europe, Right: USA
Thanks for the 200 followers :) Sorry that I've not been posting as much here. I admittedly don't really use Bluesky and I keep forgetting about this account. I should find the time to bring this account up to date.
A few ways to play and see it: 1. Modify the disc image to set the byte at 0x2A75353 from 1 to 0 (712 prototype only) 2. Modify RAM in an emulator to set address 0xFF1581 to 0 (works in final) 3. Use PAR code FF1581:00 or Game Genie code AAL9-8AEB in an emulator (works in final)
Thanks to c4/seafour4 on the Hidden Palace Discord server, a new prototype signpost sprite was discovered in the Palmtree Panic act 1 demo (DEMO11A.MMD) in the 712 prototype of Sonic CD, which was previously only seen in a magazine.
Additional fun fact: the sprite here was repurposed for the Backup RAM manager.
Thanks to c4/seafour4 on the Hidden Palace Discord server, a new prototype signpost sprite was discovered in the Palmtree Panic act 1 demo (DEMO11A.MMD) in the 712 prototype of Sonic CD, which was previously only seen in a magazine.
Thanks to c4/seafour4 on the Hidden Palace Discord server, a new prototype signpost sprite was discovered in the Palmtree Panic act 1 demo (DEMO11A.MMD) in the 712 prototype of Sonic CD, which was previously only seen in a magazine.
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.
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.
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.
So what happens if you remove that control lock in a faster game like Sonic 2? Yeah, not ideal...
So what happens if you remove that control lock in a faster game like Sonic 2? Yeah, not ideal...
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.
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.
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)
Ever seen this weird sprite quirk with the lava and platform in Marble Zone in Sonic 1? Here's why that happens.
Actually, here's a visible example of this behavior in this set of pulley platforms in World 3-3!
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.
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.
Ever seen this weird sprite quirk with the lava and platform in Marble Zone in Sonic 1? Here's why that happens.
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.
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.
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...
Sonic the Hedgehog (Prototype) - Unused Early HUD Remnants
YouTube video by KatKuriN
youtube.com
When a flag is set, then the camera will stop following the player for its assigned axis. Instead, the left or top boundary will be treated as a target position for the camera to slowly scroll towards, hence why this might be related to auto-scrolling. [2/2]
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]
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.
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.
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".
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