OBD:Data types

From OniGalore
Revision as of 20:07, 7 March 2021 by Iritscen (talk | contribs) (link fix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Click to return to the main OBD page.
Unfinished building-60px.jpg

This page is unfinished. Can you fill in any missing information?
If it is not clear which part of the page is unfinished, ask on the talk page.

Following are the formats used for the various data fields in Oni's 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.

Sorta "subtypes" for short, long, etc, depending on what function the field corresponds to (a lot of subtypes)...
No hurry for that...



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 resource type.

Abnormal resource ID

Most of them are "optional" links to a given resource type.

TXMP

Optional link to TXAN.

Mtrl, Impt, and ONCV

Those are just optional links to parents in the Mtrl/Impt/ONCV hierarchy.

Children link to parent, parent doesn't link to anything.

M3GM

Last link in file (after TXMP). Never used in Oni? "Parent M3GM"? Another TXMP?

IGPG

Link before IGSA links. Never used in Oni?

PSpL and WMCL

Always links to PSpc in Oni.

PSpc

Always link to TXMP in Oni.

TMRA

Defunct resource type. Who cares?

Abnormally normal resource ID

TRAM links in FILM and TRAM are not optional. Neither is the envmap TXMP link in TXMP.

Raw/separate file links

I would type those too: a different ID for every raw/separate file resource type.

Note that the size of the raw/separate 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 instance file resources)

E.g., vocalization IDs, melee profile IDs, combat behavior IDs, etc.

In most cases, they are not links to level file resources, but lookups to hardcoded tables (which are also part of OBD, sort of...)



Strings

checked past BINA...

16 chars

32 chars

48 chars

63 chars

64 chars

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, scaling, ...)

AABB

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?)

used in

  • OBAN (with translation vector after it)
  • OBOA (with translation vector before it)
  • TRAM (bone rotation for overlay TRAMs, without translation vector)

Translation and rotation

  • 3 floats define a translation
  • 3 others define a rotation (Euler angles)
used in

Transformation matrix

12 floats define a 4x4 transformation matrix

(translation, rotation, scaling, mirroring)

used in



Integers

Mostly non-negative indices, so possibly unsigned.

One known exception: the quantized Euler angles in TRAM

char

ever used?

short

everywhere...

short with high bit

used as a simple flag? (in a few places... not sure... ^^ ) (OFGA)

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...

funny stuff in OTLF, too...



Bitsets

1 byte

2 bytes

4 bytes

8 bytes

8-byte bitset (keypress events) only in FILM, AFAIK



Misc

32-bit color

stored as BB GG RR AA (byte swapped)

used in

4-character codes

In various BINA raw/sep parts

OBD:AKVA/0x24

Pathfinding grids