OBD:Data types
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
DAT links
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
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)
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
4-character codes
In various BINA raw/sep parts