Skip to content

Object placement (SET files) and start positions

SEGA Ninja (SA2)World and streamingApplies toSA2B

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

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

SET filevariableSA2B100% known

Big-endian. Every SET file read has size == 0x20 + count × 0x20.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32countObservedpadded to 0x20
0x2032 × countitem[]itemsObserved
SET item32 bytesSA2B100% known

Big-endian.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x02u16idObservedlow 12 bits = object-list index, high 4 bits = clip level
0x26u16[3]rotationObservedBAMS, x y z
0x812f32[3]positionObserved
0x1412f32[3]parametersObservedp0, 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

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

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

What do the per-object rotation and parameter fields mean?

They are raw in the files; each object type’s code interprets them, and the game’s object code was not read.