ASB: Difference between revisions

919 bytes added ,  7 months ago
m
minor update
m (minor update)
 
Line 13: Line 13:
# Event Entry Offsets
# Event Entry Offsets
# Node Bodies
# Node Bodies
# 0x38 Section Indices
# Sync Data Entry Indices
# 0x38 Section
# Sync Data
# 0x2C Section
# State Transitions
# Events
# Events
# Transitions
# Transitions
# Command Groups
# Command Groups
# Local Blackboard Parameters
# AS Blackboard Parameters
# Partial Slots
# Partials
# Bone Groups
# Bone Groups
# Calculation Presets
# Calculation Presets
Line 27: Line 27:
# Expression Binary
# Expression Binary
# AS Markings
# AS Markings
# 0x68 Section (version 0x417 only)
# Material Blend Settings
# Enum Resolve Table
# Enum Resolve Table
# String Pool
# String Pool
Line 74: Line 74:
|0x04
|0x04
|u32
|u32
|Partial Slot Count
|Partial Count
|-
|-
|0x1C
|0x1C
|0x04
|0x04
|u32
|u32
|0x38 Section Entry Count
|Sync Data Entry Count
|-
|-
|0x20
|0x20
|0x04
|0x04
|u32
|u32
|Local Blackboard Parameters Offset
|AS Blackboard Parameters Offset
|-
|-
|0x24
|0x24
Line 99: Line 99:
|0x04
|0x04
|u32
|u32
|0x2C Section Offset
|State Transitions Offset
|-
|-
|0x30
|0x30
Line 109: Line 109:
|0x04
|0x04
|u32
|u32
|Partial Slots Offset
|Partials Offset
|-
|-
|0x38
|0x38
|0x04
|0x04
|u32
|u32
|0x38 Section Offset
|Sync Data Offset
|-
|-
|0x3C
|0x3C
|0x04
|0x04
|u32
|u32
|0x38 Section Indices Array Offset
|Sync Data Indices Array Offset
|-
|-
|0x40
|0x40
Line 174: Line 174:
|0x04
|0x04
|u32
|u32
|0x68 Section Offset (version 0x417 only)
|Material Blend Settings Offset (version 0x417 only)
|}
|}


Line 188: Line 188:
|0x00
|0x00
|0x04
|0x04
|s32
|u32
|Flags and Index
|Flags and Index
|-
|-
Line 197: Line 197:
|}
|}


If the parameter flags are negative, then the bottom two bytes of flag are an index value and value at 0x04 becomes the default value.
If the top bit of the flags is set, then the bottom two bytes of the flags become an index value. If it is not set, then the provided value is value of the parameter. If <code>flags & 1 << 0x18 != 0</code>, then the index is an expression index (EXB) and the normal value field becomes the input value for the expression. If <code>flags & 1 << 0x1e != 0</code>, then the index is a calculation preset index. Note, this is only applicable if the parameter is a float. Otherwise, if <code>flags & 1 << 0x19 != 0</code>, then the index specifies the command data type. 0 is the current frame normalized (i.e. <code>(current_frame - start_frame)/total_duration</code>), 1 and 2 are random float values between 0.0 and 1.0, 3 is an unknown string value, 4 is the command's fade in frame, and 6 is an unknown float value. Note, this only applies if the parameter is a float or a string. In all other cases, the index is a blackboard index and value of the parameter is the value of the corresponding blackboard parameter. For float parameters specifically, <code>flags >> 0x1a & 3</code> specifies the exact parameter source. 0 is a float blackboard parameter while 1, 2, or 3 are a vector3f blackboard parameter with 1, 2, and 3 being the x, y, and z components respectively.  
 
If <code>flags & 0x81000000 == 0</code>, the index is an EXB function index. Otherwise, if the datatype is not float or vector3f, the index is an ASB blackboard index. If the datatype is float or vector3f, then if <code>(flags >> 0xe) < 3 or (flags >> 8) & 1</code> and <code>(flag >> 9) & 1 == 0</code>, the flag is an ASB blackboard index (appears to be exceptions but they aren't well understood). Otherwise, the the index is a calculation preset index.


==== AS Commands ====
==== AS Commands ====
Line 221: Line 219:
|-
|-
|0x08
|0x08
|0x04
|u32
|Filename Offset
|-
|0x0C
|0x08
|0x08
|Parameter<float>
|Parameter<float>
|
|
|-
|-
|0x14
|0x10
|0x08
|0x08
|Parameter<s32>
|Parameter<bool>
|
|Is Ignore Same Command
|-
|-
|0x1C
|0x18
|0x04
|0x04
|u32
|u32
|
|Interpolation Type (uncertain, but 0 = unspecified, 1 = no model morph, 3 = enable local bone morph, 4 = enable inertial blend)
|-
| rowspan="5" |0x1C
| rowspan="5" |0x10
|u32
| rowspan="5" |GUID
|-
|u16
|-
|u16
|-
|u8[2]
|-
|u8[6]
|-
|-
|0x20
|0x2C
|0x02
|0x02
|u16
|u16
|Child Node Index
|Child Node Index
|-
|-
|0x22
|0x2E
|0x04
|0x02
|u16
|u16
|
|
Line 268: Line 274:
|0x01
|0x01
|u8
|u8
|0x3C Entry Count
|Sync Data Count
|-
|-
|0x03
|0x03
|0x01
|0x01
|u8
|u8
|
|Does Not Have State Transition
|-
|-
|0x04
|0x04
Line 298: Line 304:
|0x02
|0x02
|u16
|u16
|0x3C Entry Index
|Sync Data Index Array Index
|-
|-
|0x12
|0x12
Line 305: Line 311:
|AS Markings Index (-1 for index)
|AS Markings Index (-1 for index)
|-
|-
| rowspan="5" |0x04
| rowspan="5" |0x14
| rowspan="5" |0x10
| rowspan="5" |0x10
|u32
|u32
Line 314: Line 320:
|u16
|u16
|-
|-
|u16
|u8[2]
|-
|-
|u8[6]
|u8[6]
28

edits