Skip to main content

Scene Commands

FourCC: ORCM (0x4F52434D)

All scene commands share a common preamble: cmdId as s32. The Scene resource reads a commandCount (u32), then for each command reads the cmdId (s32), seeks back, and dispatches to the appropriate factory.


EndMarker

#FieldType
1cmdIds32

No additional fields.


SetActorList

#FieldType
1cmdIds32
2numActorsu32

Per actor (repeated numActors times):

FieldType
idu16
pos.xs16
pos.ys16
pos.zs16
rot.xs16
rot.ys16
rot.zs16
paramsu16

SetAlternateHeaders

#FieldType
1cmdIds32
2numHeadersu32
3headerNames[i]string × numHeaders

SetCameraSettings

#FieldType
1cmdIds32
2cameraMovements8
3worldMapAreas32

SetCollisionHeader

#FieldType
1cmdIds32
2fileNamestring

SetCsCamera

#FieldTypeNotes
1cmdIds32
2(unused)s8Discarded
3(unused)s32Discarded

Note: Marked as incomplete (OTRTODO: FINISH!).


SetCutscenes

#FieldType
1cmdIds32
2fileNamestring

SetEchoSettings

#FieldType
1cmdIds32
2echos8

SetEntranceList

#FieldType
1cmdIds32
2numEntrancesu32

Per entrance (repeated numEntrances times):

FieldType
spawns8
rooms8

SetExitList

#FieldType
1cmdIds32
2numExitsu32
3exits[i]u16 × numExits

SetLightingSettings

#FieldType
1cmdIds32
2counts32

Per lighting setting (repeated count times):

FieldType
ambientColor[0]s8
ambientColor[1]s8
ambientColor[2]s8
light1Dir[0]s8
light1Dir[1]s8
light1Dir[2]s8
light1Color[0]s8
light1Color[1]s8
light1Color[2]s8
light2Dir[0]s8
light2Dir[1]s8
light2Dir[2]s8
light2Color[0]s8
light2Color[1]s8
light2Color[2]s8
fogColor[0]s8
fogColor[1]s8
fogColor[2]s8
fogNears16
fogFaru16

Per entry: 22 bytes (18×s8 + s16 + u16)


SetLightList

#FieldType
1cmdIds32
2numLightsu32

Per light (repeated numLights times):

FieldType
typeu8
point.xs16
point.ys16
point.zs16
color[0]u8
color[1]u8
color[2]u8
drawGlowu8
radiuss16

Per entry: 12 bytes


SetMesh

#FieldType
1cmdIds32
2datas8
3meshHeader.base.types8

If type != 1: read polyNum as s8. If type == 1: polyNum = 1 (hardcoded).

Type 0

Per polygon (repeated polyNum times):

FieldType
polyTypes8
meshOpastring
meshXlustring

Type 1

Single polygon entry:

FieldType
formatu8
(unused string)string
(unused string)string
bgImageCountu32

Per background image (repeated bgImageCount times):

FieldType
unk_00u16
idu8
imagePathstring
unk_0Cu32
tlutu32
widthu16
heightu16
fmtu8
sizu8
mode0u16
tlutCountu16

Then the DList data:

FieldType
polyTypes8
meshOpastring
meshXlustring

Type 2

Per polygon (repeated polyNum times):

FieldType
polyTypes8
pos.xs16
pos.ys16
pos.zs16
unk_06s16
meshOpastring
meshXlustring

SetObjectList

#FieldType
1cmdIds32
2numObjectsu32
3objectIds[i]u16 × numObjects

SetPathways

#FieldType
1cmdIds32
2numPathsu32
3pathFileNames[i]string × numPaths

SetRoomBehavior

#FieldType
1cmdIds32
2gameplayFlagss8
3gameplayFlags2s32

SetRoomList

#FieldType
1cmdIds32
2numRoomss32

Per room (repeated numRooms times):

FieldType
fileNamestring
vromStarts32
vromEnds32

SetSkyboxModifier

#FieldType
1cmdIds32
2skyboxDisableds8
3sunMoonDisableds8

SetSkyboxSettings

#FieldType
1cmdIds32
2unks8
3skyboxIds8
4weathers8
5indoorss8

SetSoundSettings

#FieldType
1cmdIds32
2reverbs8
3natureAmbienceIds8
4seqIds8

SetSpecialObjects

#FieldType
1cmdIds32
2elfMessages8
3globalObjects16

SetStartPositionList

#FieldType
1cmdIds32
2numStartPositionsu32

Per start position (same as SetActorList ActorEntry):

FieldType
idu16
pos.xs16
pos.ys16
pos.zs16
rot.xs16
rot.ys16
rot.zs16
paramsu16

SetTimeSettings

#FieldType
1cmdIds32
2hours8
3minutes8
4timeIncrements8

SetTransitionActorList

#FieldType
1cmdIds32
2numTransitionActorsu32

Per transition actor (repeated numTransitionActors times):

FieldType
sides[0].roomu8
sides[0].effectsu8
sides[1].roomu8
sides[1].effectsu8
ids16
pos.xs16
pos.ys16
pos.zs16
rotYs16
paramsu16

Per entry: 16 bytes


SetWindSettings

#FieldType
1cmdIds32
2windWests8
3windVerticals8
4windSouths8
5windSpeedu8