I have cracked much of the object placement files in the demo. These files are found in the system directory of the demo and are named SET*.BIN
SET0100S.BIN is the object placement file for Emerald Coast. I have not investigated the other files.
Now for the format:
Offset 0 is a little endian number (not sure if it's a word or longword) storing the number of object entries in the file.
Object entries start at offset $20 and each one is $20 bytes long.
Now for the format of an entry
The first byte in each entry is the type of object.
$00 = Ring
$01 = Bumper
$02 = Different Bumper
$03 = Speed-up treadmilll thingy
$04 = Swinging spike-ball on chain
$05 = Stomping spike-ball
$06 = Retracting spikes
$07 = ???
$08 = Egg Prison
$09 = Star Button
$0A = Shrub
$0B = Big Round metalic thing
$0C = Balloon with handle on string
$0D = Invincibility power-up
$0E = Rocket platform
$0F = Rocket platform, closed
$10 = Rocket platform, rocket pointing up
$11 = Rocket platform, closed
$12 = Numbered jump pad
$13 = Checkpoint
$14 = Inivsible obstacle
$15 = Ring
$16 = Invisible obstacle
$17 = Invisible obstacle
$18 = Invsisible obstacle
$19 = Invisible obstacle (small)
$1A = Hint sparkle
$1B = ???
$1C = ???
$1D = Monkey-bot enemy
$1E = Rhino-bot enemy
$1F = Spider-bot enemy
$20 = Palm Tree
$21 = Palm tree
$22 = Palm Tree
$23 = Palm Tree
$24 = Grassy Stationary Rock
$25 = Wooden platform with thatched roof
$26 = Spike gate
$27 = Floating rock
$28 = Accelerator Ramp
I'm sure there are more, but I'm going to stop for now. If you want to investigate further, change the byte at address $360 in the file SET0100S.BIN. One of the monkeys near the beginning of the level will change into something else.
Note, these values are probably only appropriate for Emerald Coast and may be mapped to different objects in different levels
Object Rotation: These are all little endian words
Pitch: Offset $2
Direction: Offset $4
Yaw: Offset $6
Object Position: I believe these are all little-endian longwords
X: Offset $10
Y: Offset $8
Z: Offset $C
Note: The assignment of axes is pretty arbitrary since I don't know how the origin of a level is set up. Z is height, Y is in the direction Sonic is facing at the beginning of the level (at least in this level anyway), and X is left to right
There are a number of other values that seem to be object-specific. I haven't looked into them yet.
Thanks to dude2003 of Sonic Cult for discovering that the object placement was stored in these files.
SET0100S.BIN is the object placement file for Emerald Coast. I have not investigated the other files.
Now for the format:
Offset 0 is a little endian number (not sure if it's a word or longword) storing the number of object entries in the file.
Object entries start at offset $20 and each one is $20 bytes long.
Now for the format of an entry
The first byte in each entry is the type of object.
$00 = Ring
$01 = Bumper
$02 = Different Bumper
$03 = Speed-up treadmilll thingy
$04 = Swinging spike-ball on chain
$05 = Stomping spike-ball
$06 = Retracting spikes
$07 = ???
$08 = Egg Prison
$09 = Star Button
$0A = Shrub
$0B = Big Round metalic thing
$0C = Balloon with handle on string
$0D = Invincibility power-up
$0E = Rocket platform
$0F = Rocket platform, closed
$10 = Rocket platform, rocket pointing up
$11 = Rocket platform, closed
$12 = Numbered jump pad
$13 = Checkpoint
$14 = Inivsible obstacle
$15 = Ring
$16 = Invisible obstacle
$17 = Invisible obstacle
$18 = Invsisible obstacle
$19 = Invisible obstacle (small)
$1A = Hint sparkle
$1B = ???
$1C = ???
$1D = Monkey-bot enemy
$1E = Rhino-bot enemy
$1F = Spider-bot enemy
$20 = Palm Tree
$21 = Palm tree
$22 = Palm Tree
$23 = Palm Tree
$24 = Grassy Stationary Rock
$25 = Wooden platform with thatched roof
$26 = Spike gate
$27 = Floating rock
$28 = Accelerator Ramp
I'm sure there are more, but I'm going to stop for now. If you want to investigate further, change the byte at address $360 in the file SET0100S.BIN. One of the monkeys near the beginning of the level will change into something else.
Note, these values are probably only appropriate for Emerald Coast and may be mapped to different objects in different levels
Object Rotation: These are all little endian words
Pitch: Offset $2
Direction: Offset $4
Yaw: Offset $6
Object Position: I believe these are all little-endian longwords
X: Offset $10
Y: Offset $8
Z: Offset $C
Note: The assignment of axes is pretty arbitrary since I don't know how the origin of a level is set up. Z is height, Y is in the direction Sonic is facing at the beginning of the level (at least in this level anyway), and X is left to right
There are a number of other values that seem to be object-specific. I haven't looked into them yet.
Thanks to dude2003 of Sonic Cult for discovering that the object placement was stored in these files.


00