Okay. Sonic Racing CrossWorlds has gotten/is getting an incredible amount of support and fan-favourite content. Plus a price drop for previous releases. This is what good practice and good DLC looks like, and it deserves (heck, NEEDS) to be rewarded.
#SonicTheHedgehog #SonicRacingCrossworlds
https://youtu.be/O0TSwHOJ7Xw
#sonicthehedgehog — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #sonicthehedgehog, aggregated by home.social.
-
-
I've been wanting to start making long-form posts centered around whatever video game I'm currently poking at and researching. I guess not always long-form, but generally more in-depth dives into the material.
So, let's take a look at the concept of object subtypes in Sonic the Hedgehog (Sonic 1) on the Sega Genesis. This will be a general, high-level explanation that may be linked to for reference in future posts.
First off, what are "subtypes"?
This is a technical term that is commonly used in the Sonic game hacking community to refer to the object RAM variable at offset
$28in Sonic 1.footnote 1 It's a term that's been invented by the community.The game's source code would have called this variable
userflag(source), which… unfortunately doesn't give us any better of an understanding.An object "subtype", as best as I can describe it, is simply one way to denote variants of an object. Not all objects in the game use the subtype variable, but quite a few do.
Some basic examples
One of the robot enemies (Badniks) you will encounter early on in the game is this little chameleon fella called a Newtron. He has two variants -- a green variant clinging to the wall that shoots a projectile at you, and then vanishes, and a blue variant that detaches from the wall and turns its own body into a rocket.
![media-1] ![media-2]
Which variant of Newtron you encounter depends on the object's subtype. If a Newtron has a subtype of 0, it'll be the blue Newtron. If a Newtron has a subtype of 1, it'll be the green Newtron.footnote 2 In this case, the subtype makes a very clear difference to the appearance and the behavior of the enemy.
Let's look at another example from another enemy. The watery Labyrinth Zone features this robotic fish Badnik named Jaws. All it does is swim in a horizontal line, occasionally switching direction.
![media-3]
The subtype for this enemy determines how long it swims before it turns around. The calculation for how long until it will turn around, in frames (frames as in FPS), is
subtype * $40, orsubtype * 64. Some Jaws have a subtype of 6, some have a subtype of 8, so on and so forth.As you can see, unlike the Newtron there is no drastic difference in behavior. The subtype is simply used as an input, as a way for the level designer to set how long until this specific fish turns around. This is another common way for objects to use the subtype variable.
A sort-of counter-example
I want to put emphasis on the point that the subtype is just one way to make the appearance or behavior of an object differ, because it's not the only way that the game can vary the appearance or behavior of an object.
Let's look at the animals that pop out of the Badniks you destroy.
![media-4]
Each Zone in the game has a set of two animals associated to it. When you destroy a Badnik, the game picks one of these two animals at random to pop out from the destroyed enemy.
The animal picked at random in this case, or even the animal types that have been designated to spawn in the Zone you're currently in, are not determined using subtypes! (The type of animal picked at random is saved and referenced in a separate RAM variable this object uses, at offset
$30.)The subtype on the Animal object is actually used for a different purpose. Any animal object that spawns from a destroyed Badnik (or from a prison capsule) will not have a subtype set (subtype = 0).
The animal objects that are used in the game's ending sequence have non-zero subtypes and each subtype there determines the appearance and behavior of that specific animal. Each valid subtype is associated to an appearance and behavior hardcoded for that subtype. For example, some animals in the ending sequence hop back and forth, while others hop in place.
A more complicated example
The subtype variable is a byte in size, and a lot can be done with a byte. Take these fireball launchers for example.
![media-5]
The upper digit of the subtype is used to determine the frequency that the fireball launcher shoots a fireball, and the lower digit of the subtype is used to determine the speed of the fireball and the behavior of the fireball.
For example, a subtype of
$25on a fireball launcher specifies a fireball launcher that shoots fireballs every 1.5 seconds, and its fireballs fly downwards at 2 pixels / frame.You can do all sorts of things, even checking individual bits of the subtype value!
It's just another piece of data to use
Later on in the game, you'll encounter these Badniks given the very generic name of Bombs. When you get close to them, the fuse on top of their head will start moving downwards into their body, and eventually they will explode, scattering damaging projectiles around them.
![media-6]
This enemy uses the subtype variable, but not in the way the objects described above do. All Bombs you will encounter in the game are functionally identical.
The moving fuse they display when you get close to them is a child object created by the parent Bomb object. The projectiles that appear when the Bomb explodes are child objects of the moving fuse object.
They all have the same object ID as the parent Bomb object. But, they look and behave differently because as the child object is being created, its subtype is set to a specific value (4 for a fuse, 6 for a projectile). The code for the Bomb object then explicitly checks for those subtype values and executes a different behavior and appearance if there's a match.
It's not the only way this sort of information can be passed to a child object, but for this object, that's how it does it.
Some links and sources
Detailed information on the behavior of these objects is sourced from the Sonic 1 disassembly on GitHub by the Sonic Retro community.
I'd also recommend checking the relevant pages on the Sonic Retro wiki itself if you are interested in learning more about the internals of Sonic 1. One example page that I've referenced in creating this post is one that lists locations of variables in RAM and associated community names for those variables.
Another page of specific note is the list of Sonic 1 objects where I've been working on documenting the subtype behavior of each object on a wiki page so that the information isn't confined to reading through code on the GitHub disassembly, but it's still very heavily WIP. (I've been distracted working on other things, but I do plan to get back to updating this page. If you see this and have the know-how to chip away at it, that'd be appreciated as well!)
Footnotes
- A lot to break down here:
a. It's a bit tough to explain what "object RAM variable at offset $28" means in brief. That probably needs a whole separate post to explain. If it helps, you can think of it as just a variable on an object in the code, in the same way you can imagine a "Cat" object in a codebase having variables for fur color and size, something like that.
b. I'm currently focused on just Sonic 1, so I haven't looked into the other games that build off of the same engine (Sonic 2, Sonic 3, Sonic and Knuckles) in much detail. From a quick look at the wiki, the object subtype remains at the same offset in at least Sonic 2, and it has a similar usage there. But, my focus for the time being will just be on Sonic 1 until I move on to investigating Sonic 2 proper.
c. Whenever you see the dollar sign$in front of a number, this denotes hexadecimal notation. You'll usually see0xused elsewhere. However,$is commonly used to denote hexadecimal notation in the context of hacking / reverse-engineering Sonic 1 because this is the prefix for hexadecimal notation used by the assemblers for the Motorola 68000 instruction set. The Motorola 68000 is the main processor of the Sega Genesis. - Technically, the check is just that the subtype isn't 0. So if you were to hack in Newtrons with a subtype of 2, 3, etc, they'd be green Newtrons. But the game itself only features Newtrons with subtypes of 0 or 1 in the level layouts.
#VideoGames #ReverseEngineering #SonicTheHedgehog #Sonic1 #SegaGenesis #SegaMegaDrive #RetroGames - A lot to break down here:
-
チェイン オブ メモリーズ / LuEduar / October 11, 2026 12:18 PM
CROSSOVERS...
#ウマ娘プリティーダービー #sonicthehedgehog #ロックマン #キングダムハーツ #supermariobros #サウンズオブアース(ウマ娘) #ザキングオブファイターズ #初音ミク
https://www.pixiv.net/en/artworks/150714833
https://www.pixiv.net/en/users/58036868 -
CW: 2011X (Sonic.EXE) mod in Sonic Robo Blast 2
#MetalSonic takes a run through Foliage Furnace, but X is interfering. Obviously, Metal isn't gonna take this insult of a FAKER sitting down!
This is easily my favorite level from Sonic: After the Sequel, mostly because of the music. The #SonicRoboBlast2 adaptation of both acts is really nice, too, though in some ways, the second act is better IMO. The first act has a little bit of a navigation issue, I think; a small one, to be sure, but a navigation issue nonetheless. It certainly gets worse under pressure of a chase mod like 2011X.
Also, I meant to post this yesterday. I forgor.
#VideoGames #Platformers #Speedrun #Speedrunning #SRB2 #SonicTheHedgehog #FanGame #ModdedSRB2 #SonicExe #2011X #Halloween #Horror #HorrorMod
-
I'm back on my #BigDumbsonicRanking! I had to make a judgment call about how to handle S3/S&K/S3&K and decided to count both games separately. So Sonic & Knuckles represents only itself, not the combined game.
Its opponent is specifically the Wii/PS2 version of Sonic Unleashed; we'll get to the 360/PS3 game later.
Can un-locked-on S&K stand on its own, or will Unleashed step out of its HD sibling's shadow to take victory?
#Polls #Sonic #SonicTheHedgehog #SonicAndKnuckles #SonicUnleashed
-
Good VGM 477 - Sonic Frontiers - Ares Island (3rd Mvt.)
#SonicTheHedgehog #SonicFrontiers #Sega #VideoGameMusic #Videogames #Music #VGM #GoodVGM
-
『Sonic The Hedgehog: Memories and Beyond ~記憶の未来(さき)へ~』予告トレーラー https://drama.io/934007/ #movie #SEGA #shadowthehedgehog #Sonic #SonicTheHedgehog #エミー #ゲーム #ゲーム実況 #シャドウ #セガ #ソニック #ソニック・ザ・ヘッジホッグ #テイルズ #ナックルズ #実況 #映画 #映画公開予定
-
Of these four positively-rated 3D Sonic games, which is your favorite? :sonicdance: :sega_animated:
-
The Club Chaos livestream has now concluded. After Austin Millz's set, the feed switched over to this image here, thanking viewers. For those who stayed up to see it, or able to catch it afterward on VOD, did you enjoy all the performances featured? Which announcement got you interested in the most?
-
Sonic the Hedgehog: Memories and Beyond Final Trailer Released Ahead of November 12 Premiere
-
Watch the latest teaser for the Sonic the Hedgehog: Memories and Beyond animated short:
I have a feeling Sonic is going to win
-
Sonic Racing: CrossWorlds year 2 preview – the Fortnite of racing games
-
https://www.twitch.tv/foxwaystreams
And we are live, playing some of the awesome demos from SAGE 2026, keeping it low key this go around in The Fox Den <3
-
Sonic Club Chaos Collection Launches With Shadow Hoodie, Tee, and Mug for 35th Anniversary
https://fed.brid.gy/r/https://noisypixel.net/sonic-club-chaos-collection-shadow-hoodie-tee-mug/
-
https://www.twitch.tv/foxwaystreams
Gonna be going LIVE🔴 with some demos from this year's SAGE! Usual time of 4:30 PM EST/1:30 PM PST in The Fox Den 💜
-
Mesmeric Sage got into the Halloween spirit with an outfit nobody can look away from.
#agedup #sonicthehedgehog #sage #sagerobotnik #hypnotic #mesmerizing #hypnosis #hypnoart #hypnoartist #hypnosiskink #hypnokink #darkstalkers #morriganaensland #succubus #halloween #october #krita #art #noai #myart
-
Who wants another hedgehog poll? Too bad, here it is anyway!
Today we pit the one that started it all, the 16-bit classic Sonic 1, against a racing spinoff with one of the most iconic soundtracks in the series.
#BigDumbsonicRanking #Sonic #sonicTheHedgehog #Polls #Sonic1 #SonicR
-
new sth sona, sybil! decided to make one that's more femme-aligned than frost, subsequently drove myself into a corner trying to figure out what to do, then realised that
1. i can do whatever i want
2. dream apparitions (ariem) exist
3. stir that cauldron like a cackling witch EHEHHEEHEHEHEEEanyway she exists in the dreamscape and gives sweet dreams to those she visits
-
Truly incredible to watch 😳 Beautiful craftsmanship with porcelain and those iconic blues/reds are utterly gorgeous 😮
https://www.youtube.com/watch?v=DzCJw-H7Xfo
Quite fitting for his 35th anniversary! 🎉