Actions

SCHG

Difference between revisions of "Sonic Heroes/Object Editing"

From Sonic Retro

m (Enemy/Special Stage List (15))
m
Line 6: Line 6:
 
The file names are stored in the following format:
 
The file names are stored in the following format:
  
s{{red|L}}_P{{green|N}}.bin<br />
+
s{{red|LL}}_{{green|NN}}.bin<br />
{{red|L}} is the level number and {{green|N}} is the player number.<br />
+
{{red|LL}} is the level number and {{green|NN}} is the player number.<br />
 
Note: Some files start with ''stg'' instead of ''s''<br />
 
Note: Some files start with ''stg'' instead of ''s''<br />
  
 
===Players===
 
===Players===
* PB - All teams
+
* DB - Decoration for all teams
 +
* PB - Objects for all teams
 
* P1 - Team Sonic
 
* P1 - Team Sonic
 
* P2 - Team Dark
 
* P2 - Team Dark
Line 18: Line 19:
 
* P5 - Super Hard
 
* P5 - Super Hard
  
All special stage and multiplayer levels have only the PB file. The team battles and Last story bosses also only have PB.<br />
+
DB files contain mostly decoration and objects that don't interact with the players, such as grass patches and the giant decoration casino chips. PB files contain normal stage objects. Both files are loaded for all teams. The object lists are the same, so there's no restriction for which objects can be placed in any of the files. There doesn't seem to be any difference in the way each of the files are loaded, so they are most likely separate for organization.<br />
Because of the player files and the PB files for each level, objects might reference each other from different files (verify)
+
All special stage and multiplayer levels have only the DB and PB files. The team battles and Last story bosses also only have DB and PB.<br />
 +
Because of the player files, DB and PB files for each level, objects might reference each other from different files (verify)
  
 
=== Levels ===
 
=== Levels ===
Line 207: Line 209:
  
 
== Object Lists ==
 
== Object Lists ==
Which list will be used is set in the byte at offset 0x28. The actual object is set in the byte at offset 0x29. Placing an object from another level in the same zone (such as an object from Seaside Hill in Ocean Palace) might work, but objects from different acts will crash the game. Which objects which are available for use in each level is probably set elsewhere.<br />
+
In the main section entry, which list will be used is set in the byte at offset 0x28. The actual object from the list is set in the byte at offset 0x29.<br />
The list IDs are mostly the same as the level ones, with some exceptions. 00 is the global objects list, 15 is the list used for enemies and special stage objects, 33 is used in all multiplayer bobsled races. Most multiplayer levels use the same list from the single player stage, same applies to Rail Canyon for Team Chaotix.<br />
+
The objects which are available for placement in each level are not defined by the list themselves; for example, although the Pulley is in the global list, placing it in Seaside Hill will crash the game. But the switch can be placed there even though it originally wasn't. And some objects from list 01, which would be the Seaside Hill list, can be placed in Ocean Palace and even in some other levels. Which objects are available for use in each level is probably set in the EXE or some other file.<br />
Note: These lists were based on tests that weren't very well done and might be incorrect or incomplete. "Crash" means the game crashes, "Test" means this object is used but was not looked into, blank means not tested
+
Note: These lists were based on tests that weren't very well done and might be incorrect or incomplete. Blank entries mean I haven't seen the object in a file or tested it and "Verify" means the object is used somewhere in the game, I just haven't looked into it yet
  
=== Global List (00)===
+
=== List 00 ===
 
*00 - Nothing
 
*00 - Nothing
 
*01 - Spring
 
*01 - Spring
*02 - Triplet Spring
+
*02 - Triple Spring
 
*03 - Ring
 
*03 - Ring
 
*04 - Hint Ring
 
*04 - Hint Ring
Line 221: Line 223:
 
*07 - Target Switch
 
*07 - Target Switch
 
*08 - Wall Push Switch
 
*08 - Wall Push Switch
*09 - Crash
+
*09 -  
*0A - Crash
+
*0A -  
*0B - Dash Pad
+
*0B - Dash Panel
*0C - Dash Hoop
+
*0C - Dash Ring
 
*0D - Rainbow Hoops
 
*0D - Rainbow Hoops
 
*0E - Checkpoint
 
*0E - Checkpoint
 
*0F - Dash Ramp
 
*0F - Dash Ramp
 
*10 - Cannon
 
*10 - Cannon
*11 - Crash
+
*11 -  
 
*12 -  
 
*12 -  
 
*13 -  
 
*13 -  
Line 241: Line 243:
 
*1B - Goal Ring
 
*1B - Goal Ring
 
*1C -  
 
*1C -  
*1D -  
+
*1D - Pulley
 
*1E -  
 
*1E -  
 
*1F -  
 
*1F -  
Line 263: Line 265:
 
*31 - Cage (Opened by Switch)
 
*31 - Cage (Opened by Switch)
 
*50 - Invisible push collision object
 
*50 - Invisible push collision object
*80 - Test
+
*59 - (Verify)
 +
*80 - (Verify)
  
=== Seaside Hill List (01) ===
+
=== List 01 ===
*Object 08 from this list is used in other zones
+
*08 - (Verify)
To do
+
*80 - Grass Patch
=== Enemy/Special Stage List (15) ===
+
*81 - Pole thingy with flag
 +
 
 +
=== List 05 ===
 +
*86 - Giant Casino Chip
 +
*87 - Roulette
 +
 
 +
=== List 15 ===
 
*00 - [[Egg Flapper]]
 
*00 - [[Egg Flapper]]
 
*10 - [[Egg Pawn]]
 
*10 - [[Egg Pawn]]
Line 281: Line 290:
 
== Object Specific Settings ==
 
== Object Specific Settings ==
  
These are set in the Misc. Section Entries:<br />
+
There is a lot of debug text data in the EXE which explains the misc. settings for most of the game's objects. It was probably used to aid the developers when building the level layouts, and can help us understand what each of them does too. If you search for "OBJECT" as text in the EXE in a hex editor you will find it<br />
 +
These settings are defined in the Misc. Section Entries:<br />
 
{{grey|00 00 00 00}} {{red|00 00 00 00}} {{green|00 00 00 00}} {{blue|00 00 00 00}} {{magenta|00 00 00 00}} {{yellow|00 00 00 00}} {{cyan|00 00 00 00}} {{olive|00 00 00 00}} {{orange|00 00 00 00}}
 
{{grey|00 00 00 00}} {{red|00 00 00 00}} {{green|00 00 00 00}} {{blue|00 00 00 00}} {{magenta|00 00 00 00}} {{yellow|00 00 00 00}} {{cyan|00 00 00 00}} {{olive|00 00 00 00}} {{orange|00 00 00 00}}
  
 
{| class="prettytable"
 
{| class="prettytable"
!List||Object||{{red|0x04}}||{{green|0x08}}||{{blue|0x0C}}||{{magenta|0x10}}||{{yellow|0x14}}||{{cyan|0x18}}||{{olive|0x1C}}||{{orange||0x20}}
+
!List||Object||{{red|0x04}}||{{green|0x08}}||{{blue|0x0C}}||{{magenta|0x10}}||{{yellow|0x14}}||{{cyan|0x18}}||{{olive|0x1C}}||0x20||Notes
 
|-
 
|-
| 00 - General
+
| 00
 
| 01 - Spring
 
| 01 - Spring
 
| Strength (float)
 
| Strength (float)
 
| Control time (first word)
 
| Control time (first word)
 
|  
 
|  
 +
|
 
|
 
|
 
|
 
|
Line 298: Line 309:
 
|  
 
|  
 
|-
 
|-
| 00 - General
+
| 00
| 02 - Triplet Spring
+
| 02 - Triple Spring
 
| Strenght (float)
 
| Strenght (float)
|  
+
| Scale
 
| Control time (first word)<br />Item (second word)
 
| Control time (first word)<br />Item (second word)
 +
|
 
|
 
|
 
|
 
|
Line 309: Line 321:
 
|  
 
|  
 
|-
 
|-
| 00 - General
+
| 00
 
| 03 - Ring
 
| 03 - Ring
| Is a line? (first word)<br />Amount of rings on line (second word)<br />Note: if set to off, amount still works
+
| Related to placing in lines/circles<br />Will check debug data for info later
 
| Lenght of line (float)
 
| Lenght of line (float)
 
|  
 
|  
Line 319: Line 331:
 
|
 
|
 
|
 
|
 +
|
 
|-
 
|-
| 00 - General
+
| 00
 
| 04 - Hint Ring
 
| 04 - Hint Ring
 
| Line to play (first word)
 
| Line to play (first word)
 +
|
 +
|
 +
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 +
| Has setting to disappear with a switch
 +
|-
 +
| 00
 +
| 05 - Switch
 +
|
 +
|
 
|
 
|
 
|
 
|
 
|
 
|
 +
|
 +
|
 +
|
 +
| Has many settings
 
|-
 
|-
| 00 - General
+
| 00
 
| 07 - Target Switch
 
| 07 - Target Switch
 
| First byte sets item type <br />Third byte sets link ID
 
| First byte sets item type <br />Third byte sets link ID
 +
|
 
|
 
|
 
|
 
|
Line 342: Line 369:
 
|
 
|
 
|-
 
|-
| 00 - General
+
| 00
| 0B - Dash Pad
+
| 0B - Dash Panel
 
| Speed (float)
 
| Speed (float)
 
| Control time (first word)
 
| Control time (first word)
 
|  
 
|  
 +
|
 
|
 
|
 
|
 
|
Line 353: Line 381:
 
|  
 
|  
 
|-
 
|-
| 00 - General
+
| 00
| 0C - Dash Hoop
+
| 0C - Dash Ring
 
| Speed (float)
 
| Speed (float)
 
| Control time (first word)
 
| Control time (first word)
 
|  
 
|  
 +
|
 
|
 
|
 
|
 
|
Line 364: Line 393:
 
|  
 
|  
 
|-
 
|-
| 00 - General
+
| 00
| 0F - Dash Ramp
+
| 0D - Rainbow Hoops
| Speed (float)
+
|
| Pitch (float)
+
|  
| Control time (first word)
+
|  
 +
|
 +
|
 
|
 
|
 
|
 
|
 
|
 
|
 +
| Has similar settings to the dash ring, plus settings for ring position and distance
 +
|-
 +
| 00
 +
| 0E - Checkpoint
 +
|
 
|
 
|
 
|  
 
|  
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| Has settings for elevation, pitch, strength and control time for each formation
 
|-
 
|-
| 00 - General
+
| 00
 +
| 10 - Cannon
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| Has settings for priority ID
 +
|-
 +
| 00
 
| 18 - Item Box
 
| 18 - Item Box
 
| First byte sets item type
 
| First byte sets item type
 +
|
 
|
 
|
 
|
 
|
Line 386: Line 441:
 
|  
 
|  
 
|-
 
|-
| 00 - General
+
| 00
 
| 19 - Item Balloon
 
| 19 - Item Balloon
 
| First byte sets item type
 
| First byte sets item type
 
| Scale (float)
 
| Scale (float)
 +
|
 
|
 
|
 
|
 
|
Line 397: Line 453:
 
|
 
|
 
|-
 
|-
| 00 - General
+
| 00
 
| 25 - Formation Sign
 
| 25 - Formation Sign
 
| Formation (byte)
 
| Formation (byte)
 
|  
 
|  
 +
|
 
|
 
|
 
|
 
|
Line 408: Line 465:
 
|
 
|
 
|-
 
|-
| 00 - General
+
| 00
 
| 26 - Formation Change Gate
 
| 26 - Formation Change Gate
 
| Formation (byte)
 
| Formation (byte)
 
| Width (float)
 
| Width (float)
 
| Width multiplier (float) (verify)
 
| Width multiplier (float) (verify)
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| 00
 +
| 2E - Fan
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| Has settings for: fan scale, height for Triangle Dive, height for others, start on/off, wind scale, whether the fan itself is rendered
 +
|-
 +
| 00
 +
| 31 - Cage (opened by switch)
 +
| Formation (byte)
 +
| Width (float)
 +
| Width multiplier (float) (verify)
 +
|
 +
|
 +
|
 +
|
 +
|
 +
| Has settings for scale and direction
 +
|-
 +
| 05
 +
| 86 - Giant Casino Chip
 +
| Scale (float)
 +
| Type (long)
 +
| Speed (long)
 +
|
 
|
 
|
 
|
 
|

Revision as of 18:39, 20 March 2016

SCHG: Sonic Heroes
Main Article
Mechanic Editing

DOL Editing
EXE Editing
Music Pointers
Object Parameter Data
Relocatable Editing (PC)
File Offsets

Model Editing
Collision Format
Model Format
Level Editing

Camera Editing
Event Editing
ID list
Indirect Editing
Light Editing
Level List
Object Editing
Object Porting
Spline Editing
Texture Animation Editing
Visibility Editing

Particle Editing
Particle Editing
Sound Editing
Music List

Sound Editing
Voices

SCHG How-Tos

Custom Object Material Effect Tutorial
Level Editing Tutorial


In the PC version of the game, level object layouts are stored in big endian .bin files located in the /dvdroot folder.

File Name Layout

The file names are stored in the following format:

sLL_NN.bin
LL is the level number and NN is the player number.
Note: Some files start with stg instead of s

Players

  • DB - Decoration for all teams
  • PB - Objects for all teams
  • P1 - Team Sonic
  • P2 - Team Dark
  • P3 - Team Rose
  • P4 - Team Chaotix
  • P5 - Super Hard

DB files contain mostly decoration and objects that don't interact with the players, such as grass patches and the giant decoration casino chips. PB files contain normal stage objects. Both files are loaded for all teams. The object lists are the same, so there's no restriction for which objects can be placed in any of the files. There doesn't seem to be any difference in the way each of the files are loaded, so they are most likely separate for organization.
All special stage and multiplayer levels have only the DB and PB files. The team battles and Last story bosses also only have DB and PB.
Because of the player files, DB and PB files for each level, objects might reference each other from different files (verify)

Levels

  • 01 - Seaside Hill
  • 02 - Ocean Palace
  • 03 - Grand Metropolis
  • 04 - Power Plant
  • 05 - Casino Park
  • 06 - BINGO Highway
  • 07 - Rail Canyon
  • 08 - Bullet Station
  • 09 - Frog Forest
  • 10 - Lost Jungle
  • 11 - Hang Castle
  • 12 - Mystic Mansion
  • 13 - Egg Fleet
  • 14 - Final Fortress
  • 29 - Sea Gate
  • 50 - Rail Canyon (Team Chaotix)

Boss:

  • 20 – Egg Hawk
  • 21 - Team Battle 1
  • 22 - Robot Carnival
  • 23 - Egg Albatross
  • 24 - Team Battle 2
  • 25 - Robot Storm
  • 26 - Egg Emperor
  • 27 - Metal Madness
  • 28 - Metal Overlord

Bonus Stages:

  • 40 - Bonus Stage 1
  • 41 - Bonus Stage 2
  • 42 - Bonus Stage 3
  • 43 - Bonus Stage 4
  • 44 - Bonus Stage 5
  • 45 - Bonus Stage 6
  • 46 - Bonus Stage 7

Emerald Challenges:

  • 80 - Emerald Challenge 1
  • 81 - Emerald Challenge 2
  • 82 - Emerald Challenge 3
  • 83 - Emerald Challenge 4
  • 84 - Emerald Challenge 5
  • 85 - Emerald Challenge 6
  • 86 - Emerald Challenge 7

Action Race (Multiplayer):

  • 60 - Seaside Hill
  • 61 - Grand Metropolis
  • 62 - BINGO Highway

Battle (Multiplayer):

  • 63 - City Top
  • 64 - Casino Ring
  • 65 - Turtle Shell

Special Stage (Multiplayer):

  • 87 - Special Stage 1
  • 88 - Special Stage 2
  • 89 - Special Stage 3

Ring Race (Multiplayer):

  • 66 - Egg Treat
  • 67 - Pinball Match
  • 68 - Hot Elevator

Boblsed Race (Multiplayer):

  • 31 - Seaside Course
  • 32 - City Course
  • 33 - Casino Course

Quick Race (Multiplayer):

  • 69 - Road Rock
  • 70 - Mad Express
  • 71 - Terror Hall

Expert Race (Multiplayer):

  • 72 - Rail Canyon
  • 73 - Frog Forest
  • 74 - Egg Fleet

Object File Layout

The files are always 0x21000 bytes long and seem to have no header. The object list seems to be able to start at the beginning of the file, but usually starts much later, leaving a huge empty space before the list. This is most likely for one single level to load the list from multiple files.
The files are made up by two sections: one starting at the beginning, with 0x30 entries, and one starting at offset 0x18024, with 0x24 entries. Each object is defined by one array from the main section and one from the misc. section.

Main Section Entries

This array starts at the beginning of the .bin file, but retail files usually have an empty space before it. The ID (offset 0x2C) is set with regards to this space. Each entry is 0x30. This section contains most basic info for the objects.

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Offset Type Description
0x00 Float X Position
0x04 Float Y Position
0x08 Float Z Position
0x0C Long X Rotation
0x10 Long Y Rotation
0x14 Long Z Rotation
0x18 Word Usually 00 02
Unknown; related to parenting to a moving object?
0x1A Byte 0x00 for PB
0x20 for Sonic
0x40 for Dark
0x60 for Rose
0x80 for Chaotix
0xA0 for Super Hard
Seems to be ignored as objects will be loaded regardless of this
0x1B Byte Usually 09
Unknown; related to parenting to a moving object?
0x1C Long Usually 00 00 00 00
Unknown effect
0x20 Double Usually repeats the previous double
Unknown effect
0x28 Byte Object list
0x29 Byte Object type
0x2A Byte Link ID*
0x2B Byte Render distance multiplier*
0x2C Long Object ID*

Notes:

  • Link ID is used for all kinds of event activators (switches, triggers and defeating enemies)
  • Render distance multiplier sets from which distance the object starts being rendered
  • Object ID is used for matching with the Misc. Section; I don't know if these can be numbered out of order or if this number is even used at all (it might find the matching entry just from the order it appears in the file)

Misc. Section Entries

This array starts at offset 0x18024 in the .bin file and has 0x24 entries, one for each entry in the first section. It sets more object specific settings, such as spring strength or item box content.

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Offset Type Description
0x00 Word Always 01 00
0x02 Word ID used for matching with first section

The rest varies from object to object, but they're usually separated into 8 longs or floats. They're explained in the Object Specific Settings section.

Object Lists

In the main section entry, which list will be used is set in the byte at offset 0x28. The actual object from the list is set in the byte at offset 0x29.
The objects which are available for placement in each level are not defined by the list themselves; for example, although the Pulley is in the global list, placing it in Seaside Hill will crash the game. But the switch can be placed there even though it originally wasn't. And some objects from list 01, which would be the Seaside Hill list, can be placed in Ocean Palace and even in some other levels. Which objects are available for use in each level is probably set in the EXE or some other file.
Note: These lists were based on tests that weren't very well done and might be incorrect or incomplete. Blank entries mean I haven't seen the object in a file or tested it and "Verify" means the object is used somewhere in the game, I just haven't looked into it yet

List 00

  • 00 - Nothing
  • 01 - Spring
  • 02 - Triple Spring
  • 03 - Ring
  • 04 - Hint Ring
  • 05 - Switch
  • 06 -
  • 07 - Target Switch
  • 08 - Wall Push Switch
  • 09 -
  • 0A -
  • 0B - Dash Panel
  • 0C - Dash Ring
  • 0D - Rainbow Hoops
  • 0E - Checkpoint
  • 0F - Dash Ramp
  • 10 - Cannon
  • 11 -
  • 12 -
  • 13 -
  • 14 -
  • 15 - Spike Ball
  • 16 -
  • 17 -
  • 18 - Item Box
  • 19 - Item Balloon
  • 1A -
  • 1B - Goal Ring
  • 1C -
  • 1D - Pulley
  • 1E -
  • 1F -
  • 20 -
  • 21 - Metal Box
  • 22 -
  • 23 -
  • 24 - Special Stage Key Box
  • 25 - Formation Sign
  • 26 - Formation Change Gate
  • 27 -
  • 28 -
  • 29 - Pole
  • 2A -
  • 2B -
  • 2C -
  • 2D -
  • 2E - Fan
  • 2F -
  • 30 -
  • 31 - Cage (Opened by Switch)
  • 50 - Invisible push collision object
  • 59 - (Verify)
  • 80 - (Verify)

List 01

  • 08 - (Verify)
  • 80 - Grass Patch
  • 81 - Pole thingy with flag

List 05

  • 86 - Giant Casino Chip
  • 87 - Roulette

List 15

Object Specific Settings

There is a lot of debug text data in the EXE which explains the misc. settings for most of the game's objects. It was probably used to aid the developers when building the level layouts, and can help us understand what each of them does too. If you search for "OBJECT" as text in the EXE in a hex editor you will find it
These settings are defined in the Misc. Section Entries:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

List Object 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C 0x20 Notes
00 01 - Spring Strength (float) Control time (first word)
00 02 - Triple Spring Strenght (float) Scale Control time (first word)
Item (second word)
00 03 - Ring Related to placing in lines/circles
Will check debug data for info later
Lenght of line (float)
00 04 - Hint Ring Line to play (first word) Has setting to disappear with a switch
00 05 - Switch Has many settings
00 07 - Target Switch First byte sets item type
Third byte sets link ID
00 0B - Dash Panel Speed (float) Control time (first word)
00 0C - Dash Ring Speed (float) Control time (first word)
00 0D - Rainbow Hoops Has similar settings to the dash ring, plus settings for ring position and distance
00 0E - Checkpoint Has settings for elevation, pitch, strength and control time for each formation
00 10 - Cannon Has settings for priority ID
00 18 - Item Box First byte sets item type
00 19 - Item Balloon First byte sets item type Scale (float)
00 25 - Formation Sign Formation (byte)
00 26 - Formation Change Gate Formation (byte) Width (float) Width multiplier (float) (verify)
00 2E - Fan Has settings for: fan scale, height for Triangle Dive, height for others, start on/off, wind scale, whether the fan itself is rendered
00 31 - Cage (opened by switch) Formation (byte) Width (float) Width multiplier (float) (verify) Has settings for scale and direction
05 86 - Giant Casino Chip Scale (float) Type (long) Speed (long)

Item Type List

  • 00 - Nothing
  • 01 - 5 Rings
  • 02 - 10 Rings
  • 03 - 20 Rings
  • 04 - Barrier
  • 05 - 1UP
  • 06 - Speed Shoes
  • 07 - Team Blast
  • 08 - Invincible
  • 09 - Speed Level Up
  • 0A - Fly Level Up
  • 0B - Power Level Up
  • 0C - Refill Flight Gauge
Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information