ROOM (File Format): Difference between revisions
Jump to navigation
Jump to search
>Aruki (→Layer) |
>Aruki (→Layer) |
||
| Line 309: | Line 309: | ||
| '''Generated Script Object Descriptor''' | | '''Generated Script Object Descriptor''' | ||
| Data type is <code>GSRP</code>. | | Data type is <code>GSRP</code>. | ||
|- | |||
| [[#Generated Game Object|Generated Game Object]] | |||
| Varies | |||
| '''Generated Game Objects''' | |||
| Unsure if there is a generated object count. | |||
|- | |- | ||
| [[Form Descriptor (Tropical Freeze)|Form Descriptor]] | | [[Form Descriptor (Tropical Freeze)|Form Descriptor]] | ||
| Line 319: | Line 324: | ||
| '''Components''' | | '''Components''' | ||
| Unsure if there is a layer component count. | | Unsure if there is a layer component count. | ||
|} | |||
==== Generated Game Object ==== | |||
{| class="wikitable" | |||
! Type | |||
! Count | |||
! Name | |||
! Notes | |||
|- | |||
| [[Chunk Descriptor (Tropical Freeze)|Chunk Descriptor]] | |||
| 1 | |||
| '''Generated Game Object Descriptor''' | |||
| Data type is <code>GGOB</code> | |||
|- | |||
| GUID | |||
| 1 | |||
| '''Generated Game Object ID''' | |||
| | |||
|- | |||
| u16 | |||
| 1 | |||
| {{unknown|'''Unknown'''}} | |||
| | |||
|- | |||
| [[#Game Object Component|Game Object Component]] | |||
| Varies | |||
| '''Components''' | |||
| | |||
|} | |} | ||
| Line 357: | Line 391: | ||
The remaining data seems to have two structures; one that's used by most objects and one that's specific to GameObject components. | The remaining data seems to have two structures; one that's used by most objects and one that's specific to GameObject components. | ||
''Regular structure:'' | |||
{| class="wikitable" | {| class="wikitable" | ||
| Line 386: | Line 420: | ||
|} | |} | ||
''GameObject structure:'' | |||
{| class="wikitable" | {| class="wikitable" | ||
Revision as of 15:35, 10 May 2016
The ROOM format is used to store object layout data in Tropical Freeze.
| This file format needs more research Still a lot of unknown values and a lot of things that aren't known about how objects interact with each other. |
Format
| Type | Count | Name | Notes |
|---|---|---|---|
| Form Descriptor | 1 | ROOM Form Descriptor | Data type is ROOM
|
| Header | 1 | Header | |
| Layer | Varying | Layers | Each layer is under its own form. Unsure if the format has a layer count anywhere. |
Header
| Type | Count | Name | Notes |
|---|---|---|---|
| Form Descriptor | 1 | Header Descriptor | Data type is HEAD
|
| Room Header | 1 | Room Header | |
| Performance Groups | 1 | Performance Groups | |
| Generated Object Map | 1 | Generated Object Map | |
| Load Unit | Varies | Load Units | Unsure whether there's a count of these |
Room Header
| Type | Count | Name | Notes |
|---|---|---|---|
| Chunk Descriptor | 1 | Room Header Descriptor | Data type is RMHD
|
| u16 | 1 | Unknown | Always 3? |
Performance Groups
| Type | Count | Name | Notes |
|---|---|---|---|
| Chunk Descriptor | 1 | Performance Groups Descriptor | Data type is PGRP
|
| u16 | 1 | Performance Group Count | |
| Performance Group | Performance Group Count | Performance Groups |
Performance Group
| Type | Count | Name | Notes |
|---|---|---|---|
| u32 | 1 | Name Length | |
| char | Name Length | Performance Group Name | Not zero-terminated |
| GUID | 1 | PerformanceGroupController Instance GUID | |
| bool | 1 | Unknown | |
| u16 | 1 | Layer Count | |
| GUID | Layer Count | Layer GUIDs |
Generated Object Map
| Type | Count | Name | Notes |
|---|---|---|---|
| Chunk Descriptor | 1 | Generated Object Map Descriptor | Data type is LGEN
|
| u16 | 1 | Count | |
| Generated Object | Count | Generated Object Array |
Generated Object
| Type | Count | Name | Notes |
|---|---|---|---|
| GUID | 1 | Generated Object Layer ID | |
| GUID | 1 | Layer ID | This is the ID of the layer that contains the above Generated Object Layer |
Load Unit
| Type | Count | Name | Notes |
|---|---|---|---|
| Form Descriptor | 1 | Load Unit Descriptor | Data type is LUNT
|
| Chunk Descriptor | 1 | Load Unit Header Descriptor | Data type is LUHD
|
| u32 | 1 | Name Length | |
| char | Name Length | Load Unit Name | For some reason these seem to generally have really short names (sometimes a single character). |
| GUID | 1 | Unknown | Probably the GUID for this load unit |
| u16 | 1 | Unknown | |
| Chunk Descriptor | 1 | Load Unit Resources Descriptor | Data type is LRES
|
| u32 | 1 | Resource Count | |
| GUID | Resource Count | Load Unit Resources Array | Likely a list of all resources that are used by this load unit. |
| Chunk Descriptor | 1 | Load Unit Layers Descriptor | Data type is LLYR
|
| u32 | 1 | Layer Count | |
| GUID | Layer Count | Load Unit Layers Array | Likely a list of all layers that are part of this load unit. (Note that it seems layers can be included in multiple load units.) |
Layer
| Type | Count | Name | Notes |
|---|---|---|---|
| Form Descriptor | 1 | Layer Form Descriptor | Data type is LAYR
|
| Chunk Descriptor | 1 | Layer Header Descriptor | Data type is LHED
|
| u32 | 1 | Name Length | |
| char | Name Length | Layer Name | |
| GUID | 1 | Layer ID | |
| u32 | 1 | Unknown | |
| GUID | 1 | Unknown | |
| bool | 1 | Unknown | |
| Form Descriptor | 1 | Generated Script Object Descriptor | Data type is GSRP.
|
| Generated Game Object | Varies | Generated Game Objects | Unsure if there is a generated object count. |
| Form Descriptor | 1 | Script Object Descriptor | Data type is SRIP
|
| Game Object Component | Varies | Components | Unsure if there is a layer component count. |
Generated Game Object
| Type | Count | Name | Notes |
|---|---|---|---|
| Chunk Descriptor | 1 | Generated Game Object Descriptor | Data type is GGOB
|
| GUID | 1 | Generated Game Object ID | |
| u16 | 1 | Unknown | |
| Game Object Component | Varies | Components |
Game Object Component
| Type | Count | Name | Notes |
|---|---|---|---|
| Chunk Descriptor | 1 | Component Descriptor | Data type is COMP
|
| u32 | 1 | Component Type | This appears to be a hash of the component name. |
| GUID | 1 | Instance ID | |
| u32 | 1 | Name Length | |
| char | Name Length | Instance Name |
The remaining data seems to have two structures; one that's used by most objects and one that's specific to GameObject components.
Regular structure:
| Type | Count | Name | Notes |
|---|---|---|---|
| u16 | 1 | Connection Count | |
| Connection | Connection Count | Connection Array | These establish links to other components to allow them to interact |
| u32 | 1 | Property Count | |
| Property | Property Count | Object Properties |
GameObject structure:
| Type | Count | Name | Notes |
|---|---|---|---|
| u32 | 1 | Sub-Component Count | |
| Sub-Component | Sub-Component Count | Sub-Component Array | Seems to describe other script components that are children of this one. |
| bool | 1 | Unknown | This is likely the Active flag that appears on every object in the previous games. |
| vector3 | 1 | Position | |
| vector3 | 1 | Rotation | Euler XYZ angles in degrees (presumably in ZYX order like the previous games). |
| vector3 | 1 | Scale |
Connection
| Type | Count | Name | Notes |
|---|---|---|---|
| char | 4 | Event | This is the event that causes the connection to trigger. (These are what were called States in the previous games.) |
| char | 4 | Action | Action that the connected object should execute when the connection triggers. (These are what were called Messages in the previous games.) |
| GUID | 1 | Target Instance ID | Instance ID of the target object that |
| u32 | 1 | Unknown |
Property
| Type | Count | Name | Notes |
|---|---|---|---|
| u32 | 1 | Property ID | 32-bit hash of the property name. |
| u16 | 1 | Property Size | |
| Property Data | Varies depending on the type of the property (which is hardcoded depending on the property ID). |
Sub-Component
This structure is used to define sub-components that are attached to GameObject components.
| Type | Count | Name | Notes |
|---|---|---|---|
| char | 4 | Type | Usually COMP, but sometimes other things like IL00. Not sure what it means.
|
| GUID | 1 | Component ID | |
| bool | 1 | Unknown | Might be an Active/Enabled flag. |
Component Types
| ID | Component |
|---|---|
| 0x749749F1 | GameObject |
| 0x4EC5FA3A | FakePlayerControls |
| 0x57153AA4 | StaticCollision |
| 0x41956904 | RenderWorld |
| 0xB4361E7B | ActorCollision |
| 0x2BE8BC19 | LightStatic |
| 0x9EE5541D | LightDynamic |
| 0xCD098F70 | Effect |
| 0x8FE0BFC9 | Relay |
| 0xA7DB53C1 | Counter |
| 0xADA85938 | SeaLion |
| 0xAAEBA313 | WarusKing |
| 0x05DD288E | Switch |
| 0x9E8A4940 | Timer |
| 0xD616EE8B | ControllerAction |
| 0xD898656D | Waypoint |
| 0xF0240D23 | PathControl |
| 0x4FE57689 | CameraHint |
| 0x97E65DDD | TouchableTrigger |
| 0x1A4117AB | Toucher |
| 0xC49D730E | TriggerLogic |
| 0xD47974E4 | FiniteStateMachine |
| 0x1349E5AC | CustomInterpolation |
| 0xC1F64515 | CameraTarget |
| 0xDE522669 | Generator |
| 0x1383F6D6 | GeneratorDeleter |
| 0x2C4F2D31 | SplineMotion |
| 0x1223437C | Creature |
| 0x21C57D2B | DynamicActorCollision |
| 0xDF31EC16 | Render |
| 0xAE921C3B | Player |
| 0x81A242A0 | DirectionalIrradianceMap |
| 0xBDE4AB05 | TakeDamage |
| 0x5453C979 | MasterSlave |
| 0x07E3137F | TraceObject |
| 0x046FAD23 | TimerSequence |
| 0x3175DF36 | ApplyDamage |
| 0x65E2349B | RelayRandom |
| 0xABBCFC6A | RelayConditional |
| 0xEA30E0B1 | SpawnPoint |
| 0x1FB9AF22 | ActorKeyframe |
| 0xCB6D9ACE | PlayerProxy |
| 0x6FB22081 | BarrelCannon |
| 0xF4567AD7 | RumbleEffect |
| 0x10EA9EC8 | ObjectFollow |
| 0x481EA5AF | Pickup |
| 0xBC9A60AE | CameraManager |
| 0xDB38B3FB | GroundPoundDetector |
| 0xBE82DEF3 | Projectile |
| 0x43C0D52A | ClingPathControl |
| 0xB85D6790 | ColorModifier |
| 0x021C14B0 | Explosion |
| 0x16702F15 | ReloadSetLoader |
| 0x660FC7C1 | Checkpoint |
| 0x8C2CCFAC | PlayerRespawn |
| 0xC0281AE7 | ImpulseDriver |
| 0xD4538C9B | Bouncer |
| 0x06E89BE7 | Health |
| 0xE0AFAF06 | PlayerActionHint |
| 0x1A90271D | Grabbable |
| 0x3C23783B | GrabThrow |
| 0x9373FEC0 | Respawn |
| 0xAF565E69 | SwingRope |
| 0xC7B43DA6 | ActorInteraction |
| 0xC9ED6454 | WindWaker |
| 0x78D8893A | CameraTargetPlayer |
| 0xA86E6401 | PoiObject |
| 0xFDD83489 | Sound |
| 0xCCAD4BD9 | PerformanceGroupController |
| 0x502506D6 | TouchSet |
| 0x88603CF7 | MineCartProxy |
| 0xE1E1C49C | WaterVolume |
| 0x6C5D597D | NearVisible |
| 0x3449A5DF | Swimmer |
| 0x591D8F55 | CharacterPrimitivesCollision |
| 0x90D8D3CE | RenderMethodResolver |
| 0xBD4CFA2F | TriggerForce |
| 0x3150D2F6 | FuseBomb |
| 0xAF3A06F2 | PathControlZipline |
| 0xD32870DF | PolarBear |
| 0x2131C235 | GroupSpawn |
| 0x2751EBF2 | AnimationGridController |
| 0x18B96D29 | TimerAnimationGridParamProvider |
| 0xB9F9F04C | ActionDetector |
| 0x343A47F7 | CameraShaker |
| 0x06159C2D | RespawnBalloon |
| 0x7E6063C8 | PlayerActor |
| 0x91F22DCF | Tippy |
| 0x89F426F2 | CinematicCameraShot |
| 0x1EB2749F | ConveyorModifier |
| 0x73AECD92 | FogVolume |
| 0x845E492A | Retronome |
| 0x23C5DFF4 | WaterRenderVolume |
| 0x55F80CCE | CinematicSkipHandler |
| 0xAB5C5D7B | BonusRoom |
| 0x3A3A6FAD | TireBounce |
| 0x9D25FE2D | BeatUpHandler |
| 0x9FC07D01 | Owl |
| 0xA42F7AB9 | GrabbableGenerator |
| 0xF34EDD1F | InventoryItem |
| 0x18C0AD0F | EndGame |
| 0xEBE92100 | RocketBarrelProxy |
| 0xB7ADA3EC | BurningBranch |
| 0x59AB515E | HotCoals |
| 0xE21D45CB | BarrelBalloon |
| 0x6302BBB3 | UVTransform |
| 0x5FEF037B | Baboon |
| 0x25899782 | MusicData |
| 0x1AC8C8FD | MusicStateController |
| 0x47A60DC3 | MusicSystemTransport |
| 0x5CF17BFE | AdapterManager |
| 0xCA08C6A4 | WaterRenderDecal |
| 0x7F6D1CBA | RelayAutoFire |
| 0x3DAAF68B | BaboonManager |
| 0xD745DC42 | GraphicalTransition |
| 0x0FA3899C | RetronomeDriver |
| 0x57E54B9D | EndLevel |
| 0x6780941E | SuperCombinedAbilityEmitter |
| 0xB8B6A22E | SuperCombinedAbilityResponder |
| 0x0AF8D63C | MapPlayer |
| 0x8CB5BF7D | MapPathControl |
| 0xEBE0DAEE | WaterCurrentVolume |
| 0xA7D1C922 | CausticVolume |
| 0x35D8F3F0 | PufferFish |
| 0xBA796FEF | Playlist |
| 0xC2F2282A | WindWakerImpulser |
| 0xE03DD39F | MapNode |
| 0x55AAB5F1 | RambiCrate |
| 0x24D9D323 | AudioEffect |
| 0xF7602744 | DSP |
| 0x160E9AF9 | RoomSettings |
| 0x5746A908 | DynamicActorControl |
| 0x59276E0E | HUDAnchor |
| 0xF442A668 | TimeKeyframe |
| 0xB6040870 | RelayProbabilityGameMode |
| 0xF3847DE3 | FlyingPickupEffect |
| 0x212BCDF5 | SimpleShadow |
| 0x655C5175 | AudioBusController |
| 0xF6751A5D | PlayerKeyframe |
| 0xC04DAF13 | BreathMonitor |
| 0x4C7B9FC8 | DirectionalIrradianceProbes |
| 0x0BE7FC29 | SurfaceControl |
| 0xB6EC1A51 | SimpleSound |
| 0xD2CAC9A5 | LightGroupProxy |
| 0xDFD2A23A | DialogPanel |
| 0xBCCB1B30 | MinecartPathManager |
| 0xD856F6B9 | Imposter |
| 0xBD040603 | LevelDarkener |
| 0xA72A9926 | RenderGroup |
| 0x3258FD44 | RenderToFlash |
| 0x3ABCFF68 | SkinSwap |
| 0xC532AD25 | ScreenCaptureToFlash |
| 0xB152AD59 | PlayerSound |
| 0xBFF963D2 | StreamedMovie |
| 0x7DCAF170 | BloomEffect |
| 0x1243C3E3 | ProjectedSimpleShadowReceiver |
| 0x5368FF52 | ShopData |
| 0xA04F0C68 | ShopInstance |
| 0x5B0C954B | UICameraSelector |
| 0x7CC0B7BF | Squawks |
| 0xB177FA02 | SquawksProxy |
| 0x4C53A836 | UnitController |
| 0x008E3AF5 | FlashTextureSwapper |
| 0xF5D80D1A | Extras |
| 0xBB449D71 | ExtrasType |
| 0xA98F9015 | ExtrasCategory |
| 0xEE0D6FD4 | DynamicLoadManager |
| 0xFDDB58A1 | MapManagerProxy |
| 0xA32E718F | Achievement |
| 0x62913993 | AudioBusMixer |
| 0xADCD416E | Credits |
| 0xA4E4FE1D | HUDFadeDetector |
| 0xAF9DEA76 | ProductionFrontEndProxy |