Sonic Adventure 2/Object Editing
From Sonic Retro
SCHG: Sonic Adventure 2 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Dreamcast GameCube PC | ||||||||||||
|
Level layouts are stored as .bin files.
For the Dreamcast version, they are in the /SONIC2 directory of the disc.
For the GameCube version, they are in the root of the disc.
For the PC version, they are in the \resource\gd_PC subfolder of the installation directory.
Note: In the GameCube and PC versions, these files are in big endian byte order! You'll need to convert them with SETswitch if you want to edit them with a program other than a hex editor, then convert them again before putting them back in the game.
File Name layout
Level object files for levels 59 and under are always in the same format:
SETLLLL(_SS)(_D).BIN
Where LLLL is the level number, SS (optional) is the mode, and D is the definition type. See below for usable values.
Listing of levels
- 0000 - Test Level
- 0003 - Green Forest
- 0004 - White Jungle
- 0005 - Pumpkin Hill
- 0006 - Sky Rail
- 0007 - Aquatic Mine
- 0008 - Security Hall
- 0009 - Prison Lane
- 0010 - Metal Harbor
- 0011 - Iron Gate
- 0012 - Weapons Bed
- 0013 - City Escape
- 0014 - Radical Highway
- 0016 - Wild Canyon
- 0017 - Mission Street
- 0018 - Dry Lagoon
- 0021 - Sand Ocean
- 0022 - Crazy Gadget
- 0023 - Hidden Base
- 0024 - Eternal Engine
- 0025 - Death Chamber
- 0026 - Egg Quarters
- 0027 - Lost Colony
- 0028 - Pyramid Cave
- 0030 - Final Rush
- 0031 - Green Hill
- 0032 - Meteor Herd
- 0034 - Cannon's Core part 5 (Sonic)
- 0035 - Cannon's Core part 2 (Eggman)
- 0036 - Cannon's Core part 1 (Tails)
- 0037 - Cannon's Core part 3 (Rouge)
- 0038 - Cannon's Core part 4 (Knuckles)
- 0040 - Final Chase
- 0043 - Cosmic Wall
- 0044 - Mad Space
- 0045 - Sand Ocean 2P
- 0047 - Pyramid Race (SA2B 2P Only)
- 0049 - Pool Quest (SA2B 2P Only)
- 0050 - Planet Quest (SA2B 2P Only)
- 0051 - Deck Race (SA2B 2P Only)
- 0052 - Downtown Race (SA2B 2P Only)
- 0054 - Grind Race (SA2B 2P Only)
- 0070 - Route 101
- 0071 - Route 280
- 0090 - Chao World
Modes
- 2P - 2 Player
- HD - Hard Mode
Definitions
- S - Substantive Objects? (most of the objects important to the level layout are defined here)
- U - Unsubstantive Objects? (objects defined here are usually decorative, but functional objects can be defined here all the same)
There is no clear-cut evidence yet about what the S and U stand for; this is the spot in the filename that was used in SA1 and SADX to disambiguate between multiple characters that play the same levels. Since that isn't an issue in this game, you could make the case that only one object file is needed for each mode, but they made two, so we're stuck with two, both of which get loaded.
One notable difference that holds without exception is that every object definition in the S files has a 0x00 in its second byte, while every object definition in the U files has a 0x80 in that byte.
Examples
- SET0013_HD_S.BIN - City Escape Hard Mode
NOTE: If there is no file for a certain character in a level, it will load Sonic's file by default. If there is no file for Sonic, then no objects will be loaded. This can be corrected, though. Simply copy the appropriate file and rename it accordingly and the objects will appear in the level with that character.
The Object format
Header
Every file starts with a 32 byte (20 in hex) header in the following format, where red is an unsigned integer containing the total amount of objects in the level.
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
(If you ever forget the amount of objects, take the offset of the very last object, divide in hex by 20, and convert to decimal.)
Body
Objects are defined after the header in the following format:
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
- The first byte, and part of the next byte are an unsigned short for the object type. You can find what value corresponds to each object here.
- This determines the lowest clipping level the object can appear on. 0 = Low (always), 1 = Normal, 2 = High
- This unsigned short is the X rotation of the object in BAMS (Binary Angle Measurement System).
- This unsigned short is the Y rotation of the object in BAMS.
- This unsigned short is the Z rotation of the object in BAMS.
- Note: To convert from degrees to BAMS: (degrees * 65536.0 / 360.0) = BAMS.
- This float is the X position of the object.
- This float is the Y position of the object.
- This float is the Z position of the object.
- This float is the object's first property.
- This float is the object's second property.
- This float is the object's third property.
Special objects
Beetle (E KUMI)
- X Scale - Type of Beetle:
- 0 - Normal
- 1 - Follows
- 2 - Electric
- 3 - Electric
- 4 - Gun
- X Rotation - Number of bullets fired at once
- Y Scale - Speed of bullets
- 5 - Appears
- 6 - Spring
- 7 - Bomb
- X Rotation
- 4 - May spawn rings?
- Y Scale - Time (in 1/100 sec) between bombs
- X Rotation
Object lists
The following are a listing of objects available to be used in levels. The number following the level name is the level number (for example, 0013 is City Escape).
Each object is given by its ID, codename (the verbatim text string from the level file that corresponds to that slot), and where it's known, a readable description of just what that object is. Apart from the first few stages that were created (Green Forest, White Jungle, Pumpkin Hill, Sky Rail, and Aquatic Mine), the team settled into a common scheme for shared objects, so the first 50 or so object IDs will usually be the same across levels.
Note: These lists may be incomplete or inaccurate. If you notice a possible improvement, edit it in!
Green Forest (0003)
Values not on the list are untested.
- 00 - Ring
- 01 - Spring
- 02 - Spring with spike
- 03 - Dash Panel
- 04 - Checkpoint
- 05 - Switch
- 06 - Item Box
- 07 - Floating Item Box
- 08 - Rotating Spike Ball
- 09 - Unsolid Vine
- 0A - Dash Ramp
- 0B - Rocket
- 0C - GUN Beetle
- 0D - Swinging Vine
- 0E - Nothing?
- 0F - Floating Platform
- 10 - Very large weird tree thing
- 12 - Solid branch coming from the ground
- 13 - Another Swinging Vine
- 14 - Plant (Misc. setting 1 sets type)
- 0 - Buggy plant
- 1 - Large leaf plant
- 2 - Large plant with branches
- 3 - Small red spiky plant
- 4 - Floor bush
- 5 - Large wall moss
- 6 - Pretty spiky plant
- 7 - Another pretty plant
- 8 - Pretty plant with reddish leaves
- 9 - Plant with exotic flowers
- 10 - Palmtree
- 11 - Large trunk tree
- 12 - Tree that comes from the wall
- 13 - Another large trunk
- 14 - Smaller tree that comes from the wall
- 15 - Different palmtree
- 16 - Moss
- 17 - Large vines
- 18 - Similar to 8
- 15 - Weird large plant
- 16 - One-sided small rock
- 17 - One-sided small rock 2
- 18 - Large tree branch
- 19 - Nothing?
- 1A - Solid branch coming from the ground 2
- 1B - Another floating platform
- 1C - GUN car robot
- 1D - GUN humanoid robot
- 1E - Balloon
- 1F - Goal Ring
- 22 - Ring
- 23 - Ring
- 27 - Small pipe thing
- 29 - GUN Wooden Container
- 2B - Small circle of stones
- 2E - Small animal
- 33 - Shrine
- 34 - Nothing?
- 3A - Chao box
- 42 - Seems to be invisible collision object
- 43 - Seems to be invisible collision object
- 44 - Seems to be invisible collision object
- 48 - Big the Cat
- 49 - Nothing?
- 4B - Golden Beetle
- 4C - Guard rails
- 4D - Dragonfly
- 4E - Pick up mushroom
- 4F - Spazzing dragonfly
- 50 - Square floating platform
- 51 - Arrow on the floor
- 52 - Another arrow on the floor
- 54 - Nothing?
- 57 - Nothing?
City Escape (0013)
- 00 - RING: single ring
- 01 - RING_LINEAR: line of rings
- 02 - RING_CIRCLE: circle of rings
- 03 - SPRA: spring
- 04 - SPRB: another spring
- 05 - 3SPRING: set of three springs
- 06 - BIGJUMP: blast ramp
- 07 - KASOKU: dash panel
- 08 - SAVEPOINT: checkpoint
- 09 - SWITCH: ball switch
- 0A - ITEMBOX: anchored item box
- 0B - ITEMBOXAIR: floating item box
- 0C - ITEMBOXBALLOON: item balloon
- 0D - LEVUPDAI: upgrade item (Magic Hands)
- 0E - GOALRING: goal ring, back ring, lost Chao, or 1-up (depending on mission)
- 0F - EMERALD: hunting item
- 10 - UDREEL: pulley
- 11 - ORI: cage
- 12 - DYNAMITE: dynamite pack
- 13 - CONTWOOD: wooden box
- 14 - CONTIRON: metal box
- 15 - ROCKET: rocket
- 16 - ROCKETMISSSILE: missile launch pad
- 17 - SCHBOX: hint monitor
- 18 - HINTBOX: hint box from Sonic Adventure, unused
- 19 - MSGER: Omochao
- 1A - SSS: test object that can be push/pulled, unused
- 1B - SOLIDBOX: black box
- 1C - DMYOBJ: blank
- 1D - SOAP SW: invisible trigger zone. Appears to do nothing
- 1E - SKULL: skull pickup
- 1F - PSKULL: immovable skull
- 20 - CHAOPIPE: pipe with small animal
- 21 - MINIMAL: small animal
- 22 - WSMMLS: whistle area for small animals
- 23 - CONTCHAO: Chao box
- 24 - STOPLSD: invisible cube/sphere that stops somersaults
- 25 - KNUDAI: mystic shrine
- 26 - KDASIBA: shrine-activated mystic platform
- 27 - KDWARPHOLE: shrine-activated mystic warp
- 28 - KDDOOR: shrine-activated mystic door
- 29 - KDITEMBOX: shrine-activated item box
- 2A - KDDRNGL: shrine-activated line of rings
- 2B - KDDRNGC: shrine-activated circle of rings
- 2C - KDSPRING: shrine-activated spring
- 2D - KDSPRINGB: another shrine-activated spring
- 2E - SPHERE: spherical repulsive collision sector
- 2F - CCYL: cylindrical repulsive collision sector
- 30 - CCUBE: orthogonal repulsive collision sector
- 31 - CWALL: orthogonal repulsive collision polygon
- 32 - CCIRCLE: circular repulsive collision polygon
- 33 - MODMOD: shadows
- 34 - EFFOBJ0: Particle generator
- 35 - EFFLENSF: lens flare
- 36 - BUNCHIN: moving weight
- 37 - IRONBALL2: rotating spike balls
- 38 - E KUMI: beetle enemy
- 39 - E AI: hunter enemy
- 3A - LIGHT SW: area that changes object lighting when entered.
- 3B - BOARDCOL: board on/off trigger
- 3C - CARMAN: moving car
- 3D - CARKAZ: stationary car
- 3E - TJUMPDAI: trick ramp
- 3F - HAMMER: bobbing hexagon pillar
- 40 - TRUCK: truck appearance trigger
- 41 - IRONBAR: pole swing
- 42 - TREEST: tree
- 43 - SWDRNGL: switch-activated line of rings
- 44 - SWDRNGC: switch-activated circle of rings
- 45 - TREESHADOWS: trigger area to adjust player lighting when standing under trees.
- 46 - LAMP: decorative lamp
- 47 - CARMANC: moving car
- 48 - SIGNS: decorative street signs
- 49 - SIGNS_F: decorative street signs (No collision)
- 4A - SBLG: big billboard
- 4B - ROADOBJ: decorative street objects
- 4C - PALM: palm tree
- 4D - BOARD: board initial position
- 4E - CARKAZ_S: stationary car
- 4F - SLIDER: somersault barrier
- 50 - GREEN_B: green bush
- 51 - ADXCHG: music change trigger
- 52 - BAR: generator for swinging bars (Spawns above this object's location)
- 53 - FENCES: small fence
- 54 - FENCEL: large fence
- 55 - BIG THE CAT: self-explanatory
- 56 - SIGNBOARD: billboard
- 57 - POSTER: poster
- 58 - TREESTNB: tree
- 59 - POSTER3: poster
- 5A - LINKLINK: trick point delimiter
- 5B - E PATH: moving beetle enemy
- 5C - GUIDANCE: arrow guidance barrier
- 5D - E GOLD: gold beetle
- 5E - SARROW: arrows behind the invisible walls that block side streets.
- 5F - TRBACK: standalone treetops
- 60 - CARMAN_NEAR: moving car
- 61 - SE_PATCAR: police siren SE
- 62 - SE_KAZE: wind SE
- 63 - POSTERM: poster
- 64 - NOINPCOL: input-disabling sector
- 65 - PIC: stage projectile (tire)
Programs
If all that stuff above confuses you, there are two programs for editing objects.
DXEdit
- Main Article: DXEdit
This is a simple tool that allows you to edit objects in a numerical format.
SETedit
- Main Article: SETedit
This tool allows you to see names for objects, get position data from a running copy of SADXPC, and has a 3D preview window with customizable sprites.
References