Actions

SCHG

Sonic Adventure 2/Object Editing

From Sonic Retro

Revision as of 15:12, 30 April 2020 by En Passant (talk | contribs) (Object lists: It's probably easier to link to the spreadsheet containing lists rather than try and keep this page up to date with everything. There's a lot of stuff. The page would be very, very long.)
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

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

Object lists

An ongoing documentation of object lists and the functions of objects can be accessed below:

[1]

Each object is given by its ID, codename (the verbatim text string from the level file that corresponds to that slot), and 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.

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


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