OBD:Data types: Difference between revisions
m (string types) |
m (more...) |
||
Line 13: | Line 13: | ||
---- | ---- | ||
==Resource links== | ==Resource links== | ||
=== | ===Level ID=== | ||
A few special mentions about the x2 thing and the IDs for _Tools files. | |||
===Resource ID=== | |||
Those should certainly be typed: a different ID for every DAT-resource type. | Those should certainly be typed: a different ID for every DAT-resource type. | ||
===RAW/SEP links=== | ===RAW/SEP links=== | ||
Line 121: | Line 123: | ||
===Axis-aligned bounding box=== | ===Axis-aligned bounding box=== | ||
2 vectors define a min corner and a max corner | 2 vectors define a min corner and a max corner | ||
:used in | |||
*[[AGQC]] | |||
*[[AKDA]]? | |||
*[[AKEV]] | |||
*[[AKVA]] | |||
*VLME (in BINA/OBJC/SNDG) | |||
*... | |||
===Plane=== | ===Plane=== | ||
4 floats define an oriented plane in 3D | 4 floats define an oriented plane in 3D | ||
Line 130: | Line 139: | ||
*3 floats define a translation | *3 floats define a translation | ||
*3 others define a rotation (Euler angles) | *3 others define a rotation (Euler angles) | ||
:used in | |||
*All [[OBJC]] | |||
===Transformation matrix=== | ===Transformation matrix=== | ||
12 floats define a 4x4 transformation matrix | 12 floats define a 4x4 transformation matrix | ||
Line 147: | Line 159: | ||
===long with high bit=== | ===long with high bit=== | ||
The lower bits are used for an ID, the high bit is a flag | The lower bits are used for an ID, the high bit is a flag | ||
: | :used in | ||
*[[ABNA]] | |||
*[[AGQC]] | |||
*[[AKBA]] | |||
*[[AKBP]] | |||
*... | |||
===long with high byte=== | ===long with high byte=== | ||
The lower bytes are used for an ID, the high byte is a group ID | The lower bytes are used for an ID, the high byte is a group ID | ||
Line 167: | Line 185: | ||
---- | ---- | ||
==Misc== | ==Misc== | ||
===32-bit color=== | |||
Always RGBA? | |||
:used in | |||
*[[AGQG]] | |||
*... | |||
*[[ONWC]] | |||
*... | |||
===4-character codes=== | ===4-character codes=== | ||
In various BINA raw/sep parts | In various BINA raw/sep parts | ||
=== | ===[[OBD:AKVA_0]]=== | ||
Pathfinding grids |
Revision as of 00:42, 22 March 2007
General notes
Struct defs
Place here suggestions for data type IDs (for new-gen struct defs).
Appearance
OUP could/should have special GUI settings for some of the types:
- Links to other resources (in the long term, also links by label and non-file ID)
- Vectors, AABBs, planes, transformation matrices, quaternions.
- Bitsets: checkboxes with labels specified in the struct def
- Same for longs with high bits/bytes and more generally, IDs.
Ideally, the labels for recurring bitsets and ID fields should be hardcoded, but it's OK to have them in struct defs ATM.
Resource links
Level ID
A few special mentions about the x2 thing and the IDs for _Tools files.
Resource ID
Those should certainly be typed: a different ID for every DAT-resource type.
RAW/SEP links
I would type those too: a different ID for every RAW/SEP-resource type.
- Note that the size of the RAW/SEP data is not always provided.
Links by label
Those are special string subtypes. I wouldn't specify them right now.
- (but you can try and draw a list of what links-by-label there are)
Links by ID
- (not to be confused with links by ID to DAT resources)
E.g., vocalization IDs, melee profile IDs, combat behaviour IDs, etc.
- In most cases, they are not links to DAT/RAW/SEP resources, but lookups to hardcoded tables (which are also part of OBD, sort of...)
Strings
checked past BINA...
16 chars
32 chars
- AGDB raw/sep parts
- AISA
- CHAR (BINA raw/sep part)
- CONS (BINA raw/sep part)
- FURN (BINA raw/sep part)
- NEUT (BINA raw/sep part)
- PATR (BINA raw/sep part)
- SNDG (BINA raw/sep part)
- TRGV (BINA raw/sep part)
- TURR (BINA raw/sep part)
- WEAP (BINA raw/sep part)
- ONIE (BINA raw/sep part)
- PAR3 (BINA raw/sep part)
- SABD (BINA raw/sep part)
- TMBD (BINA raw/sep part)
- CONS
- DOOR
- ONCC
- ONCV
- ONGS
- ONWC
- OSAm, OSGr, OSIm (OSBD raw/sep parts)
- TRAM (sound part)
- TRIG
- TURR
48 chars
63 chars
- CONS (BINA raw/sep part)
- DOOR (BINA raw/sep part)
- TRGV (BINA raw/sep part)
- TRIG (BINA raw/sep part)
- TURR (BINA raw/sep part)
64 chars
- AITR
- CHAR (BINA raw/sep part)
- CMBT (BINA raw/sep part)
- MELE (BINA raw/sep part)
- ONIE (BINA raw/sep part)
- PART (BINA raw/sep part)
- ENVP
- IGHH
- OBOA
- ONCC
- ONCP
- ONLD
- ONMA
- TRCM
- TSFL
- TURR
- WMM_
68 chars
128 chars
132 chars
160 chars
256 chars
364 chars
Floats
Float
4-byte IEEE float
- (amount, distance, angle, ...)
Vector
3 floats define a vector in 3D space
- (position, normal, ...)
Axis-aligned bounding box
2 vectors define a min corner and a max corner
- used in
Plane
4 floats define an oriented plane in 3D
- (see PLEA for algorithm)
Quaternion
4 floats define a quaternion
- (always normalized, i.e., rotation w/o scaling?)
Translation and rotation
- 3 floats define a translation
- 3 others define a rotation (Euler angles)
- used in
- All OBJC
Transformation matrix
12 floats define a 4x4 transformation matrix
- (translation, rotation, scaling, mirroring)
Integers
Mostly non-negative indices, so possibly unsigned.
- One known exception: the quantized Euler angles in TRAM
char
- ever used?
short
- everywhere...
long
- everywhere...
long with high bit
The lower bits are used for an ID, the high bit is a flag
- used in
- ...
long with high byte
The lower bytes are used for an ID, the high byte is a group ID
- (used for MELE moves)
quantized float
e.g., quantized Euler angles in TRAM_
other stuff
lots of funny stuff in PAR3, maybe...
Bitsets
1 byte
2 bytes
4 bytes
8 bytes
Misc
32-bit color
Always RGBA?
- used in
4-character codes
In various BINA raw/sep parts
OBD:AKVA_0
Pathfinding grids