Object placement (SET files) and start positions
The objects of a stage (rings, springs, dash panels, enemies, checkpoints, goal rings, cameras) are not part of the landtable. They are SET items in separate files, resolved to a name through the stage’s object list, which sits in the stage module. Observed Object models are not in the data this wiki describes: SA Tools’ object definitions are keyed by PC code addresses. Sourced · SA Tools
Counts are from a recorded census of the USA disc GSNE8P (225 SET files with 58,781 placements); they cannot be re-checked now. Observed
SET file
Section titled “SET file”File names follow SALVL’s convention set{LevelID}{"",_2P,_HD}_{s,u}.bin; the level id comes from SA Tools’ sa2lvl.ini, matched to the stage by landtable file name. Sourced · SA Tools
Big-endian. Every SET file read has size == 0x20 + count × 0x20.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 4 | u32 | count | Observed | padded to 0x20 |
| 0x20 | 32 × count | item[] | items | Observed |
Big-endian.
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 2 | u16 | id | Observed | low 12 bits = object-list index, high 4 bits = clip level |
| 0x2 | 6 | u16[3] | rotation | Observed | BAMS, x y z |
| 0x8 | 12 | f32[3] | position | Observed | |
| 0x14 | 12 | f32[3] | parameters | Observed | p0, p1, p2; their meaning differs per object type and lives in each object's code |
Every SET file read has exactly the size 0x20 + count × 0x20. Observed How an object uses its rotation and the three parameters is object code and is not decoded. Unknown
Object list
Section titled “Object list”Read from the stage module with SplitTools’ ObjectList.Load. SA2 entries are 16 bytes: u8, u8, u16 flags, f32 distance, u32 code, char* name. Sourced · SA Tools
Start and end positions (main.dol)
Section titled “Start and end positions (main.dol)”One array of 0x2C-byte records sits at DOL file offset 0x18E0C8 (GSNE8P). Each follows SA2 PC’s StartPosition layout: s16 level; u16 rot1P, rotP1, rotP2; vec3 pos1P, posP1, posP2. A record
with level 91 ends a list. Lists 0 to 8 are start positions: Sonic, Shadow, Knuckles, Rouge, an empty list, the two mech lists, and two lists holding only level 66 (Final Hazard); lists 9 onward are
end positions. Observed In list 0, City Escape’s start (0, 300, 340) is the BOARD object of set0013_s.bin; in list 9 its end (3955, −22175, 16130) is that file’s GOALRING. Observed
In the SET files of the speed stages the checkpoints are SAVEPOINT objects and the dash panels KASOKU objects. Observed
They are raw in the files; each object type’s code interprets them, and the game’s object code was not read.