Disassemblies
From Sonic Retro
Disassemblies (also called split disassemblies) are reverse-engineered deconstructions of a game's original ROM, created by translating its compiled machine code back into assembly language. In the context of Sonic the Hedgehog games on the Sega Mega Drive/Genesis and its expansions, disassemblies are community-created projects that aim to reconstruct the original game code in a readable and easily editable form. All 4th generation Sonic games use Motorola 68000 assembly.
These projects allow developers to study how the games work internally, modify their behavior, and rebuild bit-perfect ROMs from source. Over time, many disassemblies have been expanded with labels, comments, bug fixes, and optional improvements, making them a standard foundation for modern Sonic ROM hacking.
This page lists all the public disassemblies made by the Sonic hacking community. Some of these are still actively maintained on the Sonic Retro GitHub account, and they are the most up-to-date and accurate disassemblies. Other disassemblies are only listed here for historical purposes and are usually considered obsolete.
Contents
Sonic the Hedgehog (16-bit)
The main Sonic 1 disassemblies all support REV00/REV01/REVXB through the Revison assembler flag. Set to 1 by default.
- Sonic Retro's GitHub account hosts the most up-to-date version of the Sonic 1 disassembly, maintained by the community:
- AS branch - Default branch, targeting the AS Macro Assembler for cross-platform compatibility and allowing to assemble the Z80 sound driver. Originally ported by MainMemory.
- ASM68K branch - Original assembler used before the migration to AS, originally named as the "master" branch. It builds much faster than AS, but is only natively compatible with Windows and doesn't support Z80 (the sound driver is instead provided as a precompiled binary blob), as well as lacking various other features of AS.
- ProjectSonic1TwoEight branch - Special fork of the AS branch, adding MarkeyJester's Project Sonic 1: Two-Eight 128x128 chunk system. Originally ported by Clownacy.
- All branches are periodically published as stable GitHub releases.
- Hivebrain 2022 - A heavily expanded 2022 version of the classic 2005 disassembly by Hivebrain, featuring various improvements and more thorough documentation. It targets a modified version of ASM68K known as AXM68K for supporting Z80 macros.
| Historical Disassemblies |
|---|
|
GitHub
SVN
Revision 00
Revision 01
Other
|
Sonic the Hedgehog 2 (8-bit)
- Sonic 2 Master System (Split format by Glitch) (info) (1.18 MB) - A split disassembly of the Master System version of Sonic the Hedgehog 2 (8-bit), by Glitch. This disassembly has been uploaded to GitHub and is available here.
Sonic the Hedgehog 2 (16-bit)
Final
The main Sonic 2 disassemblies all support REV00/REV01/REV02 through the gameRevision assembler flag. Set to 1 by default.
- Sonic Retro's GitHub account hosts the most up-to-date version of the Sonic 2 disassembly, maintained by the community:
- Master branch - Default branch, targeting the AS Macro Assembler for cross-platform compatibility and allowing to assemble the Z80 sound driver.
- Mega Play branch - A disassembly of the Mega Play version of Sonic 2, by Clownacy.
- Sonic Classics branch - A fork of the Master branch that includes changes from the Sonic Classics/Sonic Compilation version of Sonic 2, by Clownacy.
- Beta 8 branch - A disassembly of Sonic 2 Beta 8, by Clownacy.
- Knuckles in Sonic 2 branch - A disassembly of Knuckles in Sonic 2, by Clownacy.
| Historical Disassemblies |
|---|
|
GitHub
Revision 00
Revision 01
Revision 02
|
Nick Arcade prototype
- Sonic 2 Early Prototype (Split Format by Super Egg) - A split disassembly of the Sonic the Hedgehog 2 Nick Arcade Prototype by Super Egg, targeting ASM68K.
| Historical Disassemblies |
|---|
|
Simon Wai prototype
- Sonic 2 Beta (Split Format by Alex Field) - A split disassembly of the Sonic 2 Simon Wai Prototype, by Alex Field, targeting the AS Macro Assembler for cross-platform compatibility. Based on Esrael's disassembly, it aims to be more in line with the GitHub disassembly of the final game in terms of formatting, such as using its label and variable names. It also comes pre-packaged with SonLVL project files.
| Historical Disassemblies |
|---|
|
August 21, 1992 "Alpha" prototype
- Sonic 2 August 21, 1992 prototype (Split Format by Esrael) - A split disassembly of the Sonic the Hedgehog 2 (alpha), by Esrael. It targets SNASM68k.
- Sonic 2 August 21, 1992 prototype (Split Format by Nyper Yuhgard) - A revised version of Esrael's Sonic 2 August 21 disassembly by Nyper Yuhgard, targeting ASM68k.
September 14, 1992 "Pre-Beta" prototype
- Sonic 2 September 14, 1992 prototype (Split Format by Esrael) - A split disassembly of the Sonic the Hedgehog 2 (pre-beta), by Esrael. It targets SNASM68k.
- Sonic 2 September 14, 1992 prototype (Split Format by Nyper Yuhgard) - A revised version of Esrael's Sonic 2 September 14 disassembly by Nyper Yuhgard, targeting ASM68k.
Beta 4
- Sonic 2 Beta 4 (Split format by Esrael) (info) (1.12 MB) - A split disassembly of Sonic the Hedgehog 2 Beta 4, by Esrael. It targets SNASM68k.
- Sonic 2 Beta 4 (Split format by Puto) (info) (1.12 MB) - A revised version of Esrael's Sonic 2 Beta 4 disassembly by Puto. Edits include IDA-like formatting and support for ASM68K.
Beta 8
- The GitHub version has a branch that allows for a complete building of Sonic 2 Beta 8.
Knuckles in Sonic 2
- The GitHub version has a branch that allows for a complete building of Knuckles in Sonic 2.
| Historical Disassemblies |
|---|
|
Sonic the Hedgehog CD
- The GitHub version is the most up to date version, and supports Japanese, European, and American releases. However, it currently does not support all levels.
Sonic the Hedgehog 3
Final
- The GitHub version of the Sonic & Knuckles disassembly allows building a complete version of Sonic 3, and is the most up to date version.
November 3, 1993 prototype
- Sonic 3 November 3, 1993 prototype (Split Format by Esrael) - A split disassembly of the Sonic the Hedgehog 3 (prototype; 1993-11-03), by Esrael. It targets SNASM68k.
- Sonic 3 November 3, 1993 prototype (Split Format by Nyper Yuhgard) - A revised version of Esrael's Sonic 3 November 3, 1993 prototype by Nyper Yuhgard with help from MarkeyJester, targeting ASM68k.
Sonic & Knuckles
- Sonic Retro's GitHub account hosts the most up-to-date version of the Sonic & Knuckles disassembly, maintained by the community:
- Master branch - Default branch, targeting the AS Macro Assembler for cross-platform compatibility and allowing to assemble the Z80 sound driver.
| Historical Disassemblies |
|---|
|
Sonic 3 & Knuckles
- The GitHub version of the Sonic & Knuckles disassembly allows building a complete version of Sonic 3 & Knuckles, and is the most up to date version.
| Historical Disassemblies |
|---|
|
Knuckles' Chaotix
Final
- The GitHub version is the most up to date version.
Sonic Crackers
- Sonic Crackers (Split Format by MarkeyJester) (info) (530 kB) - A split disassembly of Sonic Crackers by MarkeyJester.
- Sonic Crackers (IDB by Stealth) (info) (637 kB) - A Sonic Crackers disassembly by Stealth. This is an IDB file and can only be opened in IDA Pro.
- Sonic Crackers (Text Format by Shobiz) (info) (966 kB) - A text file exported by shobiz from Stealth's Sonic Crackers disassembly for those who do not have IDA Pro.
Sonic 3D: Flickies' Island
- Sonic 3D: Flickies' Island disassembly (IDB/Text by Sik) - Hybrid IDB and text split of the Mega Drive version of Sonic 3D: Flickies' Island by Sik. Can only be opened in IDA Pro.
Sonic Spinball
- Sonic Spinball disassembly (IDB by andlabs) - A Sonic Spinball disassembly by Andlabs. This is an IDB file and can only be opened by IDA Pro.