Difference between revisions of "DataNode"

From Milo Modding Wiki
Jump to navigation Jump to search
m (added a bit of information on different node types)
m (whoops forgot 0x06)
Line 53: Line 53:
|EMPTY
|EMPTY
|0x6
|0x6
|No value.
|No value. Equivalent to <code>kDataUnhandled</code> in DTA.
|-
|-
|IFDEF
|IFDEF

Revision as of 17:29, 15 April 2022

An object used internally by the Milo engine to represent a value of some type. Arrays of DataNodes are called DataArrays. In a DTB file, the type is explicitly stored, but in DTA files, it is guessed based on the syntax and keywords.

Structure

Name Size Function
Value 4 bytes The value of the DataNode.
Type 4 bytes The type of the DataNode.

Types

Each Milo game supports a different set of types for a DataNode. The amount of types gradually increased as Milo's scripting engine became more capable over the years.

Rock Band 3

Type Name Value Description
INT 0x0 An integer value.
FLOAT 0x1 A 32-bit floating point value.
VAR 0x2 A generic variable. Prefixed by $ in DTA.
FUNC 0x3 A function declaration.
OBJECT 0x4 A pointer to some sort of object.
SYMBOL 0x5 A pointer to a Symbol.
EMPTY 0x6 No value. Equivalent to kDataUnhandled in DTA.
IFDEF 0x7 A conditional checking for the existence of a global macro (such as _SHIP).
ELSE 0x8 The 'else' conditional.
ENDIF 0x9 The 'endif' conditional.
ARRAY 0x10 A pointer to a DataArray. Denoted by () in DTA.
COMMAND 0x11 Executable statements/DataFunc calls. Denoted by {} in DTA.
STRING 0x12 A string value. Usually delimited by single or double quotes in DTA.
OBJECT_PROP_REF 0x13 A pointer to the property of an object. Denoted by [] in DTA.
GLOB 0x14 Unknown.
DEFINE 0x20 A Macro definition.
INCLUDE 0x21 A marker indicating that another DTA/DTB should be included in the current file.
MERGE 0x22 A marker indicating that another DTA/DTB should be merged into the current file.
IFNDEF 0x23 A conditional checking for the non-existence of a global macro (such as _SHIP).
AUTORUN 0x24 Unknown.
UNDEF 0x25 Undefined value.