Actions

SCHG

Sonic Heroes/Object Editing

From Sonic Retro

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

The level numbers (LL) are the ones used in the File Names and Data list.

Players:

  • DB - Decoration for all teams
  • PB - Objects for all teams
  • P1 - Team Sonic: Sonic, Tails, & Knuckles; ForEdit: Espio, Charmy and Big
  • P2 - Team Dark: Shadow, Rouge & Omega
  • P3 - Team Rose: Amy, Cream, & Big
  • P4 - Team Chaotix: Espio, Charmy, & Vector
  • P5 - Super Hard: Always Team Sonic

DB files contain mostly decoration and objects that don't interact with the players, such as grass patches. 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.
Sea Gate, special stages, team battles, Last story and multiplayer levels have only the DB and PB files.

Object File layout

The files are made up by two sections: the main section and the misc. section.

  • The main section starts at offset 0x00 (the beginning of the file) and ends at offset 0x18000. Each entry is 0x30 bytes long, so the files have a maximum of 2048 objects. Each entry defines general information for the object, such as type, position and rotation. Blank entries are ignored.
  • The misc. section starts at offset 0x18000. Each entry is 0x24 bytes long. The retail files are all 0x21000 bytes long, so they all have a maximum of 1024 misc. entries for the objects. This number can be increased or decreased, however, as the file size can be changed and the game will still load it normally; the number of misc. section entries can even go past the maximum number of main section entries. The misc. section contains object-specific data.

Each entry in the main section may contain an ID which references one entry in the misc. section (very few objects don't).
In the original files there is usually a lot of "junk" in them (huge empty spaces with no data and lots of unreferenced misc. section entries).

Main Section entries

This array starts at the beginning of the .bin file. Each entry is 0x30 bytes long. 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 4 bytes X Rotation
0x10 4 bytes Y Rotation
0x14 4 bytes Z Rotation
0x18 2 bytes Usually 00 02
Ignored
0x1A Byte 0x00 for PB/DB
0x20 for Sonic
0x40 for Dark
0x60 for Rose
0x80 for Chaotix
0xA0 for Super Hard
Ignored, objects load regardless of this
0x1B Byte Usually 09
Must be an odd number for object to load
0x1C 4 bytes Usually 00 00 00 00
Ignored?
0x20 8 bytes Repeats the previous 8 bytes
Ignored?
0x28 Byte Object list
0x29 Byte Object type
0x2A Byte Link ID
0x2B Byte Render distance
0x2C 2 bytes Null?
0x2E 2 bytes Misc. Entry ID
  • X, Y and Z positions: location of the object in the world.
  • X, Y and Z rotations: angle of the object in the world. Each one is a signed 32 bit integer; 0x10000 = 360 degrees.
  • 16 bytes have unknown function. Most of this seems to be ignored, but one value must be an odd number for the object to load.
  • Object list: this byte sets which list the object will be chosen from.
  • Object type: this byte sets which object from the list will be loaded.
  • Link ID: this is used to link two or more objects together, such as switches and doors, triggers, frogs and plants, bingo table and numbers, enemies and cages, warp flowers and more.
  • Render distance: this multiplier sets from which distance the object starts being rendered. 0 makes the object not load.
  • Misc. Entry ID: this chooses which misc. entry array will be used by this object. This connection is made solely based on an offset. For example: if this is set to 3, it will use misc. entry number 3, located at offset 0x1806C (0x18000 + 3*0x24). This is set to 0 on some objects: those use misc. entry number 0, which must be left blank.

Retail files have an interesting organization when it comes to the order of the objects in the file: they are ordered by the misc. entry ID, which is set with regards to the offset of the entry in the file. This is actually completely unecessary, as objects can be put in any order. Multiple objects can reference the same misc. entry, which is also not done in retail files.

Misc. Section entries

This array starts at offset 0x18000 in the .bin file and each entry is 0x24 bytes long. It sets more object specific settings, such as spring strength or item box content.
Entry number 0 is left blank as it's reserved for objects that don't have any misc. settings. So the first relevant entry is entry number 1, at 0x18024.

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 Section ID

This entire first long is completely ignored, and used only to aid development, as the entry is picked based on its offset.
The rest of the entry varies from object to object, and can be multiple bytes, words, longs or floats. They're explained in the Object Specific Settings section.

Object lists

The setidtbl.bin file contains a list of all objects, along with flags setting in which level each one is available (more information in this page). List includes debug name for objects.

List 00

General list.

List 01

Seaside Hill list.

List 02

Ocean Palace list.

List 03

Grand Metropolis list.

List 04

Power Plant list.

List 05

Casino Park list.

List 06

Bingo Highway list.

List 07

Rail Canyon list.

  • 00 - Switchable Rail (TRAINCHANGERAIL)
  • 01 - Switchable Rail Switch (TRAINCHANGESWITCH)
  • 02 - Switchable Rail Arrow (TRAINCHANGEBOARD)
  • 03 - Rail Booster (RAILDASH)
  • 04 - Rail "roadblock" (CROSSING)
  • 05 - Capsule (TRAINCAPSULE)
  • 06 - Station Door (STATIONDOOR)
  • 07 - Floor Grate (DUCT)
  • 08 - Platform with 3 rails (RAILBOARD)
  • 0A - DESTRUCTRAIL
  • 1B - TRAINTRAIN
  • 2C - Tunnel (TRAINROLLTUNNEL)
  • 2D - Engine Core (TRAINCORE)
  • 3E - Cannon Interior (BIGCANNON)
  • 3F - Cannon Top (BIGCANNONTOP)
  • 40 - Trigger: Train (TRAINCOLLISION)
  • 41 - Explosion effect (IKARIBAKUHATU)
  • 42 - Eggman's Base (EGGMASO)
  • 43 - S08BOB COLLI_OBJECT
  • 80 - DFAN
  • 81 - RAILBUSH
  • 82 - RAILBURBWIRE
  • 83 - RAILCHANGERAIL
  • 85 - RAILBULLETRACK
  • 86 - RAILWATERSUPPLY
  • 87 - RAILMECHTYPEABC
  • 88 - RAILCAPEN
  • 89 - RAILCAPEX
  • 8A - RAILENDEN
  • 8B - RAILENDEX
  • 8C - RAILPOLLEX
  • 8D - RAILPOLLGOL
  • 8E - RAILPOLLGOR
  • 8F - RAILTIE
  • 90 - PROPELLER
  • 91 - PISTON
  • 92 - BARREL
  • 93 - PULLEY
  • 94 - EGGHORN
  • 95 - TRAINAPPEAR ON/OFF
  • 96 - BRIDGE
  • 97 - AUTODOOR
  • 98 - TRAINTOP

List 08

Bullet Station list.

List 09

Frog Forest list.

List 10

Lost Jungle list.

List 11

Hang Castle list.

List 12

Mystic Mansion list.

List 13

Egg Fleet list.

  • 00 - Normal Cannon (S13 HOUDAI S)
  • 01 - Large Cannon (S13 HOUDAI L)
  • 02 - Horizontal Cannon (S13 HOUDAI YOKO)
  • 03 - Moving Cannon (S13 HOUDAI FUMI MAX HEIGHT)
  • 04 - Rectangular Floating Platform (S13 SENKAN MOV)
  • 05 - Door (S13 SENKAN SHUT)
  • 06 - Square Floating Platform (S13 SENKAN YUKA)
  • 07 - Roadblock (S13 TSUITATE)
  • 08 - Conveyor Belt
  • 14 - S13 BIGMOVSHIP
  • 15 - Another Cannon (S13 HOUDAI FIX)
  • 20 - S13 KANKYOHAKAI
  • 80 - S13D BIGFAN
  • 81 - S13 MISSILEPOD
  • 82 - S13D SCREW
  • 83 - S13 DESIGN PIPE
  • 84 - S13D UFO
  • 85 - S13D BlinkLight
  • 86 - S13D ANTENNA
  • 87 - S13D SENKAN FAR
  • 88 - S13D SENKAN FAR
  • 89 - S13D SENKAN FAR
  • 8A - S13D SENKAN FAR
  • 8B - S13D SENKAN FAR
  • 8C - S13D SENKAN FAR
  • 8D - S13D SENKAN FAR
  • 8E - S13D SENKAN FAR
  • 8F - S13D SENKAN MIDDLE
  • 90 - S13D SENKAN MIDDLE
  • 91 - S13D RAIL CAP FORE
  • 92 - S13D RAIL CAP BACK
  • 93 - S13D RAIL ARROW 1
  • 94 - S13D RAIL ARROW 3
  • 95 - S13D SENKAN FAR MOVE TOP L
  • 96 - S13D SENKAN FAR MOVE TOP R
  • 97 - S13D SENKAN FAR MOVE SIDE L
  • 98 - S13D SENKAN FAR MOVE SIDE R
  • 99 - S13 CLOUD1
  • 9A - S13 Cloud2
  • 9B - S13D SENKAN FAR MOVE BIG

List 14

Final Fortress list.

  • 00 - S14 FALL ASHIBA
  • 01 - S14 HOUDAI HI
  • 02 - S14 LaserBeam
  • 03 - S14 3WAY COLLI
  • 04 - S14 LaserSign
  • 05 - S14 BombSwitch
  • 06 - S14 KOWARE
  • 0A - S14KEY OBJECT
  • 80 - S14 Thunder
  • 81 - S14 Thunder2
  • 82 - S14 THUNDER PTCL
  • 83 - S14 LaserLight
  • 84 - S14 RAILEND SIGN
  • 85 - S14 RedLight
  • 86 - S14 ROADSIDE A
  • 87 - S14 ROADLIGHT
  • 88 - S14D UFO
  • 89 - S14 RingLight
  • 8A - S14D WALL NEON
  • 8B - S14D WALLLIGHT SIDE
  • 8C - S14D WALLLIGHT FRONT
  • 8D - S14 WALL L
  • 8E - S14 WALL R
  • 8F - S14 GOAL
  • 90 - S14 HOLEA Neon
  • 91 - S14 ROADSIDE B
  • 92 - S14 HOLEB
  • 93 - S14 TowerNeon A
  • 94 - S14 TowerNeon B
  • 95 - S14D SearchLight
  • 96 - S14D EGGMAN
  • 97 - S14D Crush
  • 98 - S14 WallSide

List 15

List with general enemies and Special Stage objects.

List 16

Egg Emperor list.

  • 00 - STG26 COLLI CC
  • 01 - STG26 COLLI CP
  • 02 - KING PAWN

List 20

Egg Hawk list.

  • 80 - Road Decoration Block (S20D CurbStone)
  • 81 - Whale Statue (S20D WhaleStone)
  • 82 - Tower (S20D LightHouse)
  • 83 - S66 STAR

List 23

Egg Albatross list.

  • 00 - Trigger: Egg Albatross (S23 WARPPOS)

List 24

Metal Madness list.

  • 00 - Trigger: Metal Madness (S24 WARPPOS)

List 25

Metal Overlord List.

  • 00 - Trigger: Metal Overlord (S25 WARPPOS)

List 33

List is used mainly in the multiplayer Bobsled Races.

  • 00 - UNBR. BOBCONT. OBJECT
  • 01 - S31BOB OBJECT(DUMMY)
  • 81 - S33_DICE OBJECT
  • 82 - S33_ROULET OBJECT
  • 83 - S33_SLOT OBJECT

List FF

Unknown list.

  • F0 - SYSTEM OBJECT1
  • F1 - SYSTEM OBJECT2
  • F2 - SYSTEM OBJECT3
  • FE - SAMPLE2 OBJECT
  • FF - SAMPLE OBJECT

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.
Note: the table below is incomplete and might be incorrect.
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 Power (float; default 5.0) Control time (first word)
00 02 - Triple Spring Power (float; default 5.0) Scale Control time (first word)
Item (second word)
00 03 - Ring Type (first word)
00 - Normal
01 - Line
02 - Circle
03 - Arch
Number of rings (second word)
Lenght of line (float) Radius (float)
00 04 - Hint Ring Line to play (first word)
00 05 - Switch Has many settings
00 06 - Push/Pull Switch First byte:
00 - Push to turn on
01 - Pull to turn on
Uses Link ID for activator
00 07 - Target Switch First byte sets item type
Third byte sets link ID
Uses Link ID for activator
00 0B - Dash Panel Speed (float) Control time (first word)
00 0C - Dash Ring Speed (float) Control time (first word)
00 0D - Rainbow Hoops Type (first word):
00 - Speed
01 - Fly (1)
02 - Fly (2)
03 - Power (S)
04 - Power (L)
Additional control time (second word)
Speed (float, default 5.0) Offset (float)
00 0E - Checkpoint Priority (first word) Setting the Checkpoint priority to the same as another will allow either to take precedence. Higher numbers in this area will take precedence over lower numbers.
00 0F - Dash Ramp Speed (Horizontal) (float) Speed (Vertical) (float) Control time (first word)
00 10 - Cannon Elevation (Speed) (first word)
Azimuth (Speed) (second word)
Control time (Speed) (first word)
Power (Speed) (second word)
Elevation (Fly) (first word)
Azimuth (Fly) (second word)
Control time (Fly) (first word)
Power (Fly) (second word)
Elevation (Power) (first word)
Azimuth (Power) (second word)
Control time (Power) (first word)
Power (Power) (second word)
00 13 - Weight
00 14 - Breakable Weight
00 15 - Spike Ball Type (long)
00 - Single
01 - Double
Rotate Speed (float) Scale (float)
00 16 - Laser Fence
00 18 - Item Box Item type (first byte) Link ID can be used to place box inside stuff
00 19 - Item Balloon Item type (first byte) Scale (float)
00 1B - Goal Ring No parameters
00 1D - Pulley Elevation (float) ? (float) ? (float) Type (first word):
00 - Up
01 - Down
00 20 - Wooden Box No parameters
00 21 - Metal Box No parameters
00 22 - Steel Box No parameters
00 23 - Chao Radius (float) Angular Speed (float)
00 24 - Cage Can fly
00 25 - Formation Sign Formation (byte)
00 26 - Formation Change Gate Formation (byte) Width offset (float) Height offset (float)
00 28 - Propeller Flower
00 29 - Pole Has many settings
00 2C - Power Gong Has settings
00 2E - Fan Has many settings
00 31 - Cage Has settings
00 32 - Chaotix Warp Flower Type (first byte):
00 - Item
01 - Scaffold
02 - Warp
Scale (float) Rising Height (float) Uses Link ID for linking with another flower or item box
01 05 - Moving Ruin Platform Type (first byte):
00 - Small
01 - Normal
02 - Large
Vertical moving distance Uses Link ID for linking with trigger
05 87 - Giant Casino Chip Scale (float) Type (long) Speed (long)
07 03 - Rail Booster Speed (float)
11 00 - Teleporter switch Warp Dest. X-position (float) Warp Dest. Y-position (float) Warp Dest. Z-position (float) Teleporter state (first byte):
00 - Active (Switch Pad)
01 - Inactive
02 - Active (Switch Ball)
03 - Active (Switch Ball Symbols)
04 - Warp Effect
05-06 - Doors
07 - Platform Base
08 - Platform Base (Moving Platform)
09 - Platform Floor
0A - Cracked Wall
0B - Another Cracked Wall
0C-0D - Broken Wall Corners
0E - Broken Wall Pieces
0F - Wall Piece
10 - Another Wall Piece
Second byte:
00 - Normal
01 - Upside down

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

Egg Pawn settings

List: 15
Object: 10

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

0x04
First byte: Start Type

  • 00 - Asleep
  • 01 - Walking
  • 02 - Stopped
  • 04 - Warp
  • 06 - Searching

Second byte: Color Type

  • 00 - Red
  • 02 - Gold

Third byte: Weapon Type

  • 00 - None
  • 01 - Lance
  • 02 - Laser Cannon
  • 03 - M-Gun 90
  • 04 - M-Gun 120
  • 05 - M-Gun 150
  • 06 - M-Gun 180

Fourth Byte: Shield Type

  • 00 - None
  • 01 - Concrete Shield
  • 02 - Solid Shield
  • 03 - Spike Shield

0x08
Second byte: Distance from which robot can see you

0x0C: ?

0x10: Warp height (float)

0x14: ?

0x18: Shot speed (float)

0x1C Fourth byte: ?

References


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