You may be surprised to see the real names of parameter and structure members on many of the wiki pages. NEX has automatically generated the code that encodes/decodes method parameters and structures from a data definition language (DDL), and many games contain the parse tree of the DDL declarations in their data segment. It’s encoded in big-endian byte order (regardless of the platform) and looks as follows:
| Type | Description |
|---|---|
| Uint32 | Magic number (0xCD652312) |
| Uint8 | Unknown (always 0) |
| Uint32 | Major version |
| Uint32 | Minor version |
| Uint32 | Micro version |
| Uint32 | Build version |
| NameSpace | Root namespace |
NameSpace
| Type | Description |
|---|---|
| Uint32 | Number of elements (N) |
| Element (N) | Namespace elements |
Element
| Type | Description |
|---|---|
| Uint8 | Type id |
| Body |
String
| Type | Description |
|---|---|
| Uint32 | Length (N) |
| Bytes (N) | String (without null terminator) |
DeclarationUse
Only if declaration type is TemplateInstance:
| Type | Description |
|---|---|
| String | Base type name |
| Uint8 | Number of arguments (N) |
| DeclarationUse (N) | Argument declaration use |
ParseTreeItem
| Type | Description |
|---|---|
| String | Name |
NameSpaceItem
The second parse tree item is always the same as the first parse tree item. I don’t know why it’s stored twice.
| Type | Description |
|---|---|
| ParseTreeItem | Parse tree item |
| ParseTreeItem | Parse tree item |
Declaration
| Type | Description |
|---|---|
| NameSpaceItem | Namespace item |
| String | DDL unit name |
| Namespace | Properties |
DOClassDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| String | Parent class name |
| Uint32 | Class id |
| Namespace | Namespace |
DatasetDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| Namespace | Variables |
TypeDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
MethodDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| NameSpace | Parameters |
Variable
| Type | Description |
|---|---|
| NameSpaceItem | Namespace item |
| DeclarationUse | Declaration use |
| Uint32 | Array size |
RMC
| Type | Description |
|---|---|
| MethodDeclaration | Method declaration |
| NameSpace | Parameters |
Action
| Type | Description |
|---|---|
| MethodDeclaration | Method declaration |
| NameSpace | Parameters |
AdapterDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
PropertyDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| Uint32 | Category mask |
| Uint32 | Allowed target mask |
ProtocolDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| NameSpace | Methods |
Parameter
| Type | Description |
|---|---|
| Variable | Variable |
| DeclarationUse | Declaration use |
| Uint32 | Array size |
| Uint8 | Type (1=input, 2=output, 3=both) |
ReturnValue
| Type | Description |
|---|---|
| Variable | Variable |
| DeclarationUse | Declaration use |
| Uint32 | Array size |
ClassDeclaration
| Type | Description |
|---|---|
| TypeDeclaration | Type declaration |
| String | Parent class name |
| NameSpace | Class members |
TemplateDeclaration
| Type | Description |
|---|---|
| TypeDeclaration | Type declaration |
| Uint32 | Number of template arguments |
SimpleTypeDeclaration
| Type | Description |
|---|---|
| TypeDeclaration | Type declaration |
TemplateInstance
| Type | Description |
|---|---|
| TypeDeclaration | Type declaration |
| String | Base type name |
| Uint32 | Number of template arguments (N) |
| String (N) | Template arguments |
DDLUnitDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |
| String | Unit name |
| String | Unit dir |
DupSpaceDeclaration
| Type | Description |
|---|---|
| Declaration | Declaration |