Jump to content

OBD:BINA/OBJC/DOOR: Difference between revisions

separated header data from OSD; corrected/explained flags
m (added family to footer template call)
(separated header data from OSD; corrected/explained flags)
Line 12: Line 12:
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | object list version }}
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | object list version }}
{{OBDtr| 0x0C | int32    |00FFFF| FC 00 00 00 | 252      | size of the following element in bytes }}
{{OBDtr| 0x0C | int32    |00FFFF| FC 00 00 00 | 252      | size of the following element in bytes }}
{{OBDtrBK}}
{{OBDtrgroup}}
{{OBDtrsubgroup}}
{{OBDtr| 0x00 | char[4]  |FFC8C8| 52 4F 4F 44 | DOOR      | door }}
{{OBDtr| 0x00 | char[4]  |FFC8C8| 52 4F 4F 44 | DOOR      | door }}
{{OBDtr| 0x04 | int32    |FFFFC8| 57 12 00 00 | 6421      | object ID }}
{{OBDtr| 0x04 | int32    |FFFFC8| 57 12 00 00 | 6421      | object ID }}
Line 23: Line 24:
{{OBDtr| 0x20 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the z-axis in degrees }}
{{OBDtr| 0x20 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the z-axis in degrees }}
{{OBDtr2|0x24 | char[63] |FFC800| TCdouble                | door type name (reference to 00957-TCdouble.[[OBD:DOOR|DOOR]] of level 0) }}
{{OBDtr2|0x24 | char[63] |FFC800| TCdouble                | door type name (reference to 00957-TCdouble.[[OBD:DOOR|DOOR]] of level 0) }}
{{OBDtrsubgroup|end}}
{{OBDtr| 0x63 | int16    |C800C8| 01 00      | 1        | door ID }}
{{OBDtr| 0x63 | int16    |C800C8| 01 00      | 1        | door ID }}
{{OBDtr| 0x65 | int16    |C87C64| 00 00      | 0        | key ID }}
{{OBDtr| 0x65 | int16    |C87C64| 00 00      | 0        | key ID }}
{{OBDtr| 0x67 | bitset16 |B0C3D4| 15 00      | 21, 0    | door options; the following bits are possible:
{{OBDtr| 0x67 | bitset16 |B0C3D4| 15 00      | 21, 0    | door options; the following bits are possible, but note that the "runtime" flags are not stored in data but only used by the engine at runtime to track door states:<br>
 
:0x'''01''' 00 - initially locked (at level load or after calling [[reset_mechanics]])
:0x'''01''' 00 - "initially locked" (at level load or after calling [[reset_mechanics]])
:0x'''02''' 00 - runtime: currently locked
:0x'''02''' 00 - unknown; never used
:0x'''04''' 00 - "in door frame"; door has a frame attachment (this is the norm, see below for exceptions; the frame geometry is defined in [[AKDA]] and will be looked up from DOOR's position above, which is identical to the related AKDA quads)
:0x'''04''' 00 - unknown; probably "locked" (whatever that means)?
:0x'''10''' 00 - "manual"; require player to press action key to open door
:0x'''08''' 00 - unknown; never used
:0x'''20''' 00 - runtime: door is in process of opening/closing
:0x'''10''' 00 - require player to press '''action''' to open door
:0x'''40''' 00 - runtime: "test mode" (apparently was a test of new door code, but is now always on)
:0x'''20''' 00 - unknown; never used
:0x'''40''' 00 - unknown; never used
:0x'''80''' 00 - double door
:0x'''80''' 00 - double door
:0x00 '''01''' - "mirror door" (mirrored along door's Z axis)
:0x00 '''01''' - mirrored door (one of the double doors is flipped along Y axis relative to the other)
:0x00 '''02''' - one way door (one side locked, other side unlocked)
:0x00 '''02''' - one way door (one side is locked, other side unlocked)
:0x00 '''04''' - reverse of the one way door (now the other side is locked)
:0x00 '''04''' - one way door, reverse (now the other side is locked)
:0x00 '''08''' - unknown; never used
:0x00 '''08''' - runtime: jammed (controlled by script via [[door_jam]] and [[door_unjam]])
:0x00 '''10''' - unknown; never used
:0x00 '''10''' - "initially open" (unimplemented feature)
:0x00 '''20''' - unknown; never used
:0x00 '''20''' - runtime: "give up on collision" (unimplemented)
:0x00 '''40''' - unknown; never used
:0x00 '''80''' - unknown; never used
 
}}
}}
{{OBDtr |0x69 | float    |FFDDDD| 00 00 4F 43 | 207.000000 | x-position of the center of the door }}
{{OBDtr |0x69 | float    |FFDDDD| 00 00 4F 43 | 207.000000 | x-position of the center of the door }}
Line 54: Line 51:
{{OBDtr |0xE9 |          |8C8CCC|            |            | padding }}
{{OBDtr |0xE9 |          |8C8CCC|            |            | padding }}
|}
|}
;Instances NOT using bit 0x04 of bitset 0x67 ("locked"?)
 
:(level:door)
==Some interesting doors==
Doors below are given as "level #:door ID".
 
;Instances NOT using the "frame attachment" flag
:2:26; 3:62; 6:1,41,42,43,45,46,47,48,49; 8:73; 18:97; 19:43,44
:2:26; 3:62; 6:1,41,42,43,45,46,47,48,49; 8:73; 18:97; 19:43,44
:It's not clear what the effect of a "locked" bit would be; "initially locked" is what matters at level load and when calling [[reset_mechanics]]. Maybe "locked" was part of a runtime dump, but is ignored by the engine?
 
;Instances using bit 0x100 of bitset 0x67 ("mirror door")
;Instances using "mirrored door" flag:
:(level:door)
:1:4,6,7,9,15,16,24,25,26,27,32,33,36,37,61,68,79,92,108;
:1:4,6,7,9,15,16,24,25,26,27,32,33,36,37,61,68,79,92,108;
:3:50; 6:29,31,33,46,47; 8:14; 10:11,14,18,20; 18:14,42,70
:3:50; 6:29,31,33,46,47; 8:14; 10:11,14,18,20; 18:14,42,70