Sonic Nexus curiosities page
"Everyone's got to start somewhere"
by nextvolume

This page tries to explore an old fangame, Sonic Nexus, whose engine was being developed by Christian Whitehead a.k.a. The Taxman.
Obviously you know how this little story ends.
A recreation of Sonic CD was made with this same engine (newer versions, though) and then pitched to SEGA.
In an unexpected move for a corporate entity, they accepted to employ Whitehead's services, and to use and release his work.
It was then released as the Sonic CD remake for Android, iOS, Windows, etc.
This paved the way for more remakes, such as the ones of Sonic the Hedgehog and Sonic the Hedgehog 2.

Just like the real Sonic games, Sonic Nexus doesn't have much of a story.
You are Sonic, you are on an island on which Robotnik built a clock tower resembling him, and you need to defeat him before the clock on the tower will reach a predetermined time, on which it will probably wreak more havoc than humanely imaginable.


Sunset Shore Act 1 (Sonic Nexus)

Interestingly, Sonic Nexus was meant to look like a sequel for Sonic CD.

Only one release based on Taxman's engine reached the public - the SAGE 2008 demo.
In this demo you can play just one zone - Sunset Shore Zone.

In early 2009, Sonic Nexus was united with two other fangames, Retro-Sonic (Taxman's own) and Sonic XG; thus giving birth to Retro-Sonic Nexus.
Nothing of it was ever released to the public but some teasers - where for instance, we see Retro-Sonic Nexus in action on the iPhone.

Then, as stated above, history is history, and everything about Retro-Sonic Nexus was shelved.

... which is a sad state of affairs, actually. I have played Sonic 1, 2 and CD tons of times.
And they were re-released tons of times.

I would have preferred much more for Retro-Sonic Nexus to be finished than to get these remakes.
As you have already noticed, I have always had a thing for everything RSDK based; and I was disappointed when I heard the news that RSN was shelved, due to the Sonic CD pitch.

Huh, enough with the rant... let's get to it.

Data file (Archive file)

You really want to extract this with Retrun-Sonic, which will extract and repack the archive for you.
For information about its format, read the Retrun-Sonic source code.

Encryption

Files in the game, except for music and sound effects, are encrypted with a very simple scheme.
Every bit of the files is inverted - that is, every bit set to 0 gets set to 1, and every bit set to 1 gets set to 0.
Click here to download a very simple program called not_this - which will flip every bit in a file.
In the archive there is a Windows executable and a C source code file.
If the file was originally encrypted, you have to encrypt it back to let Sonic Nexus read it - no problem run not_this on it! Want to decrypt it again? Run not_this again. It is a reversible operation.

Graphics

Graphics are in GIF format. No need to explain this really.
The same format is used by Sonic CD and Sonic 1.

Music

Music is in OGG Vorbis format, and this doesn't need explanations either.
The same format is used by Sonic CD and Sonic 1.

Sound Effects

Sound effects use the Microsoft WAVE container format, and their data is in PCM.
Nothing to explain, again.
The same format is used by Sonic CD and Sonic 1.

Object Scripts

There is the source code for the object scripts, that gets interpreted by the Retro-Sonic Engine.
You can script most (all?) objects in the game by modifying the source code.
The scripts appear to have been written completely by Taxman and nobody else.
If you want to take a quick look at the scripts, download this archive. It contains all the scripts in the game, in plain text source code.

The scripting language is proprietary to the Retro-Sonic engine - it is a strange cross between C and Visual Basic 6.
Later iterations of the RSDK most probably also use this scripting language - but there is a compiler that compiles the script to bytecode, and the engine interprets bytecode instead of source code.
There's much evidence to this - by running the Unix string command on the files for Sonic CD and Sonic 1 one can find references to the filename of the scripts (having the .txt extensions), before they got converted to bytecode.
Other evidence is that in Sonic CD and Sonic 1's GlobalCode.bin one can find a lot of constants (in 4-byte little endian words) that are present in Sonic Nexus' Sonic.txt script.

16x16 Tiles

The graphics for them are stored in GIF files called 16x16Tiles.gif, for each zone.
The images are 16x16384, which means that there are 1024 16x16 tiles.
They are laid out the same in Sonic CD and Sonic 1.

128x128 Blocks

The 128x128 blocks are stored in files called 128x128Tiles.bin and are in a format similar to the one used by SEGA's Sonic the Hedgehog 2.
Every 128x128 block is composed by 64 16x16 tiles, and they are arranged in a grid, as shown below.

12345678
910111213141516
1718192021222324
2526272829303132
3334353637383940
4142434445464748
4950515253545556
5758596061626364
Left-to-right, top-to-bottom.

Every 16x16 block is specified by three bytes.
The first two bytes are a big endian 2-byte word.

Layout of the two byte word (bit 15 first at left, bit 0 last at right):

????YXNN NNNN NNNN

? - Unknown
Y - If set, the tile is flipped vertically
X - If set, the tile is flipped horizontally
NN NNNN NNNN - number of the 16x16 tile (10-bit - can be from 0 to 1023).

The functionality of the third byte is currently unknown.
If you want to display or rip the graphics for a 128x128 block yourself, simply ignore it.

You can click here for the complete ripped blockset from Sunshet Shore Zone.
The blocks are arranged in a grid, left-to-right, top-to-bottom.

Sonic CD and Sonic 1 use the same format, at least regarding what's important to display the blocks.

Level layouts, Backgrounds, Collision masks, other things, etc.

No information for now; it will hopefully be added in the future.

Comparison of RSDK based games

Engines

v1 = engine used by Retro-Sonic, not fully scriptable, player logic hardcoded
v2 = engine used by Sonic Nexus, Sonic 1 and Sonic CD, fully (or almost fully) scriptable

Datafile formats

v1 = used by Retro-Sonic and Sonic Nexus
v2 = used by Sonic CD
v3 = used by Sonic 1

Scripts

Retro-Sonic's scripts are in RSF format. Probably bytecode, but might be encrypted source.
Sonic Nexus uses scripts with source in plain text.
Sonic 1 and Sonic CD use scripts in bytecode. All that is known about the bytecode the scripts are in, is that the bytecode uses little-endian ordering and that is not aligned to any boundary.

Graphics

Retro-Sonic uses files with a .gfx format. The format is currently unknown.
Sonic Nexus, Sonic 1 and Sonic CD use GIF images.

Platforms

Retro-Sonic was available for x86 Windows, and Mac OS X for x86 and PowerPC Macs.
Sonic Nexus just like Retro-Sonic.
Sonic CD and Sonic 1 are available for a multitude of platforms, including Windows (via Steam), Android, iOS, Xbox Live Arcade (Xbox 360), PlayStation Network (PS3)... thus compiled for the x86, PowerPC and ARM architectures.

As an additional curiosity, the version 1.0.4 update to the Android version of Sonic 1 ships with an x86 binary, enabling devices running Android x86 to run it. The original release APK and previous updates only shipped with ARM and ARMv7 binaries.
For instance, v1.0.4 works on Android 4.3 for x86 devices.

The remake of Sonic the Hedgehog 2 was announced in October 2013. At the time of writing, it still wasn't released.

Downloads

Retro-Sonic SAGE 2007 Demo for Windows
Sonic Nexus SAGE 2008 Demo for Windows


Last updated: November 27th, 2013
Back to previous page