LEB: Difference between revisions

1,284 bytes added ,  2 years ago
Filled in more info
mNo edit summary
(Filled in more info)
Line 8: Line 8:
The names section contains a list of actors by name, followed by a hyphen (-), followed by a 16-digit hexadecimal number. This also includes some plaintext parameters for some objects, such as the contents of a chest (ObjTreasureBox) or the destination of a loading zone (AreaLevelOpen). Note that these do not define what actors exist, in fact it seems like the actual labels here are meaningless aside from the aforementioned parameters.
The names section contains a list of actors by name, followed by a hyphen (-), followed by a 16-digit hexadecimal number. This also includes some plaintext parameters for some objects, such as the contents of a chest (ObjTreasureBox) or the destination of a loading zone (AreaLevelOpen). Note that these do not define what actors exist, in fact it seems like the actual labels here are meaningless aside from the aforementioned parameters.


The data section contains, among other things, blocks of 0x98 bytes, one for each actor in the room. These store most of the information for the actors and are in the following format:
All labels in the names section are separated by null bytes. Of note, there are 2 null bytes separating the first and second actor labels, instead of 1.
 
 
The data section contains, among other things, blocks of 0x98 bytes, one for each actor in the room. Preceding this is a u64 which specifies the number of bytes the actor data section takes.
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 16: Line 19:
|-
|-
|0x0
|0x0
|u64
|'''Magic'''. Appears to always be 0x90, but changing it appears to not have any effect.
|-
|0x8
|u64
|u64
|'''Actor key'''. This value must match the hex value of the corresponding actor label in the names section.
|'''Actor key'''. This value must match the hex value of the corresponding actor label in the names section.
|-
|-
|0x8
|0x10
|u32
|u32
|'''Names section offset'''. This stores the offset in the names section for the start of the label that corresponds to this actor.
|'''Names section offset'''. This stores the offset in the names section for the start of the label that corresponds to this actor.
|-
|-
|0xC
|0x14
|u16
|u16
|[[Actors|'''Actor ID''']]
|[[Actors|'''Actor ID''']]
|-
|-
|0xE
|0x16
|u16
|u16
|Padding?
|Padding?
|-
|-
|0x10
|0x18
|u32
|u32
|'''Room ID'''. The actor loads when entering the specified room and unloads when leaving it.
|'''Room ID'''. The actor loads when entering the specified room and unloads when leaving it.
|-
|-
|0x14
|0x1C
|u32
|u32
|'''X coordinate'''. One “tile” is 0xC0000 units, so using the lower 2 bytes here is going to generally be pretty insignificant. Hence them usually being 0
|'''X coordinate'''. One “tile” is 0xC0000 units, so using the lower 2 bytes here is going to generally be pretty insignificant. Hence them usually being 0
|-
|-
|0x18
|0x20
|u32
|u32
|Appears to be Z coordinate (height). However it scales very strangely, maybe not linear?
|Appears to be Z coordinate (height). However it scales very strangely, maybe not linear?
|-
|-
|0x1C
|0x24
|u32
|u32
|'''Y coordinate'''. One “tile” is 0xC0000 units, so using the lower 2 bytes here is going to generally be pretty insignificant. Hence them usually being 0
|'''Y coordinate'''. One “tile” is 0xC0000 units, so using the lower 2 bytes here is going to generally be pretty insignificant. Hence them usually being 0
|-
|-
|0x20 and beyond
|0x28-0x3F
|
|Unknown.
|-
|0x40-0x7F
|u32[16]
|'''Parameters'''. This section contains multiple u32's, which appear to be grouped into pairs of [parameter, parameter type].
For any pair, the first 4 bytes make up the value of the parameter. This can be basically anything (will include some known parameters for certain actor types below).
 
The second 4 bytes indicate what the purpose of the parameter is. There are only 3 observed values so far:
 
* 0x0, which indicates the parameter is not used?
* 0x3, which indicates that the parameter is a direct parameter. e.g., the parameter 0x1 is used to indicate being able to push a block actor.
* 0x4, which indicates that the parameter is a plaintext parameter specified in the names section. The value in the previous u32 is the offset in the names section for this parameter.
 
Most actors have "blank " parameters filled in offsets to the 2nd null byte after the first label in the names section; however, this seems to be functionally equivalent to leaving the parameter as 0.
|-
|0x80-0x97
|
|
|So far unknown.
|Unknown.
|}
|}
[[Category:File formats]]
[[Category:File formats]]
39

edits