OBD:File types/Naming

From OniGalore
Jump to navigation Jump to search
  • Except for TXMP and M3GM, files are either always named or always unnamed
  • Unnamed files are necessarily linked to by file-ID from another file
  • Named files may or may not be linked to by file-ID from another file
  • Named files are the only ones directly accessed by the engine
  • Unnamed files are the "private" data of their respective parents
    • (the fact that they can be "shared" doesn't make them "public")

Hierarchy (parents/children) is based on links-by-file-ID only.

Additional information on links-by-filename and links-by-label is provided when appropriate.




TXMP

TXMP are generally named; unnamed TXMP are always animation frames of a named TXMP.

Unnamed TXMP

parent
(unnamed) TXAN (part of (named) TXMP)
children
  • (unnamed) TXAN (optional)
  • (named) TXMP (optional)
  • .raw/.sep part



Named TXMP

parent
(named) TRMA
(unnamed) TXMA (part of (named) AKEV)
(named) ONCC
(named) ONWC
(named) ONGS
... (it's quite popular, actually ^^)
children
  • (unnamed) TXAN (optional)
  • (named) TXMP (optional)
.raw/.sep part

There are also orphan TXMPs (named TXMPs without a parent)

Orphan TXMP

  • cinematic panels (almost sure)
  • GUI elements? (not so sure)




M3GM

M3GM are generally unnamed (possible parents detailed below).

parent
(see below)
children
  • (unnamed) PNTA
  • (unnamed) VCRA x2
  • (unnamed) TXCA
  • (unnamed) IDXA x2
  • (named) TXMP (optional, see below)


Named M3GM

Named M3GM can be orphans or part of the level hierarchy (ONLV/ONOA/M3GA/M3GM)

children
  • ...
  • (named) TXMP (always provided for named M3GMs)


Level M3GM

parent
(unnamed) M3GA (child of (unnamed) ONOA (child of (named) ONLV))

Some of those have OBAN named after them (auto-assigned animations) ^^



Orphan M3GM

Here's a tentative list

These are only in level 0 except for bloodyfoot (links by name?)

  • axes (no idea when this one is used)
  • sphere (no idea when this one is used)
  • glow01
  • blast_ring1
  • blast_ring2
  • toxic_bubble
  • barab_swave
  • bloodyfoot (duplicated in a few levels)
  • notfound (no clear idea when the mesh is used)

The following are level-specific (links by name?)

  • rat1
  • rat2
  • jet
  • debris01
  • debris02
  • debris03
  • ...

The following 6 are linked by name from ONGS

  • powerup_ammo (level 0)
  • powerup_cell (level 0)
  • powerup_hypo (level 0)
  • powerup_shield (level 0)
  • powerup_invis (level 0)
  • powerup_lsi (level-specific; black sphere by default?)

The following are weapon-related; level 0 only (links by name?)

  • w3_blast1
  • w5_blast1_geo
  • w5_shot1_geo
  • w5_shot2_geo
  • w5_shot3_geo
  • opendart
  • closeddart
  • w9_warhead
  • w9_shell
  • w9_case
  • w11_grenade
  • w11_shrapnel



Unnamed M3GM

Possible parents: CONS, CONS/OFGA, DOOR/OFGA, ONWC, TRIG, TRGE, TURR, TRBS/TRCM/TRGA

depending on the parent, the TXMP child is either present or absent.
parent
(unnamed) TRGA (child of (unnamed) TRCM (child of (named) TRBS))
children
  • ...
  • (named) TXMP (optional) (textures are specified in ONCC's TRMA)
parent
(named) CONS
(unnamed) OFGA (child of (named) CONS or DOOR)
(named) ONWC
(named) TRGE
(named) TRIG
(named) TURR
children
  • ...
  • (named) TXMP (always for these parents)




Always named

Orphans

BINA

looked up by name???

no children
.raw/.sep part



CONS

looked up by name???

children
  • (unnamed) OFGA ((unnamed) M3GM children)
  • (unnamed) M3GM



DOOR

looked up by name???

children
  • (unnamed) OFGA x2 ((unnamed) M3GM children) (only one OFGA child in original Oni)
  • (named) OBAN
lookups
OSBD



DPge

looked up by name???

children
(unnamed) IGPG



FILM

looked up by name???

children
(named) TRAM x2 (optional)



HPge

looked up by name???

children
(unnamed) IGPG



IGHH

Only one IGHH, in level 0, called hud_help_info.IGHH

children
(named) TXMP



IPge

looked up by name???

children
(unnamed) IGPG



KeyI

Only one KeyI, in level 0, called keyicons.KeyI

children
(named) TXMP



ONGS

Only one ONGS, in level 0, called game_settings.ONGS

no children
lookups
OSBD
M3GM (powerups)
TXMP (powerup glow)



ONLD

One instance per level, names vary.

looked up by name???

no children



ONLV

One instance per level, names vary.

looked up by name???

children
  • (named) AKEV (... children) (environment)
  • (unnamed) OBOA (M3GA, OBAN, ENVP children) (starting objects)
  • (unnamed) ONMA (no children) ("marker node") (useless?)
  • (unnamed) ONFA (no children) ("flag node") (useless?)
  • (unnamed) ONTA (no children) ("trigger") (useless?)
  • (named) ONSK (TXMP children) (sky)
  • (named) AISA (ONCC, ONWC children) (AI spawn)
  • (named) AITR (no children) (AI triggers)
  • (named) ONSA (no children) ("spawn") (useless?)
  • (named) OBDC (OBAN children) ("door class")
  • (unnamed) ONOA (IDXA children) (env groups)
  • (unnamed) ENVP (no children) (toggleable env particles)
  • (unnamed) CRSA (ONCC children) (corpses)



ONVL

Only one ONVL, in level 0, called variant_list.ONVL

children
(named) ONCV



OPge

looked up by name???

children
(unnamed) IGPA (IGPG and subtree...)



OSBD

looked up by name???

no children
.raw/.sep part
lookups
OSBD (by name from OSAm and OSIm)
SNDD (by name from OSGr)



PSpL

Only one PSpL, in level 0, called partspec_list.PSpL

children
(named) PSpc



PSUI

looked up by name???

children
(named) PSpc



SNDD

looked up by name???

no children
.raw/.sep part



StNA

looked up by name???

children
(unnamed) TStr



SUBT

looked up by name???

no children
.raw/.sep part



TURR

looked up by name???

children
  • (unnamed) M3GM
  • OBLS (obsolete)
lookups
[[OSBD, BINA/PAR3



TXMB

looked up by name???

children
(named) TXMP



TxtC

looked up by name???

children
(unnamed) IGPA (IGPG and subtree...)



WMCL

Only one WMCL, in level 0, called cursor_list.WMCL

children
(named) PSpc



WMDD

looked up by name???

children
(named) TSFF



WPge

looked up by name???

children



Semi-orphans

Those only link to files of the same type as themselves.

Impt

looked up by name???

parent
(named) Impt (or none)
children
(named) Impt (or none)



Mtrl

looked up by name???

parent
(named) Mtrl (or none)
children
(named) Mtrl (or none)



Non-orphans

AISA

One instance per level, called level#_scripts

looked up by name???

parent
(named) ONLV
children

Although ONCC and ONWC are not really "children" here...



AITR

One instance per level, called level#_scripts
possibly obsolete (non-trivial only in level8_Final)

looked up by name???

parent
(named) ONLV
no children



AKEV

One instance per level, names vary.

looked up by name???

parent
(named) ONLV
children
  • (unnamed) PNTA (no children) (vertices)
  • (unnamed) PLEA (no children) (UVs)
  • (unnamed) TXCA (no children) (quads)
  • (unnamed) AGQG (no children) (quads too)
  • (unnamed) AGQR (no children) (quads too)
  • (unnamed) AGQC (no children) (quads too)
  • (unnamed) AGDB (.raw/.sep parts) (quads too) (absent on Mac)
  • (unnamed) TXMA (TXMP children) (textures)
  • (unnamed) AKVA (.raw/.sep parts) (pathfinding grids)
  • (unnamed) AKBA (no children) ("side array" of pathfinding grids?)
  • (unnamed) IDXA x2 (no children) ("gunk" lookup)
  • (unnamed) AKBP (no children) ("BSP node" ???)
  • (unnamed) ABNA (no children) ("BSP tree" ???)
  • (unnamed) AKOT ([[OTIT, [[OTLF, [[QTNA, [[IDXA x2) (oct tree)
  • (unnamed) AKAA (no children) ("adjacency" of pathfinding grids?)
  • (unnamed) AKDA (no children) (doorframes)



OBAN

parent
(named) OBDC
(named) DOOR
(named) TRIG
(unnamed) OBOA (child of (named) ONLV)
orphans also exist
no children



OBDC

One instance per level, called level#_scripts

looked up by name???

parent
(named) ONLV
children
(named) OBAN



ONCC

no global instance in original Oni

looked up by name???

parent
(named) AISA (part of (named) ONLV)
(unnamed) CRSA (part of (named) ONLV)
ONCC are actually standalone
children
lookups
OSBD



ONCV

except for the linking from ONCC, this is actually a set of "semi-orphans" ^^

looked up by name???

parent
(named) ONCC (in levels)
(named) ONVL (level 0) or none
children
(named) ONCV (optional)



ONSA

One instance per level, called level#_scripts

looked up by name???

parent
(named) ONLV
no children



ONSK

One instance per level, names vary.

looked up by name???

parent
(named) ONLV
children
  • (named) [[TXMP x6 (skybox)
  • (named) TXMP x8 (sun/moon/stars)
  • (named) TXMP (???)
  • (named) TXMP x5 (flares?)



ONWC

global instances only in original Oni

looked up by name???

parent
(named) WPge
(named) AISA (part of (named) ONLV)
ONWC are actually standalone
children
  • (named) TXMP x... (some optional)
  • (unnamed) M3GM
lookups
OSBD



PSpc

looked up by name???

parent
none (level 0 + 1 instance per level) (cinematic_border.PSpc of level 0 is an orphan ^^)
(named) PSpL (level 0)
(named) PSUI (level 0)
(named) WMCL (level 0)
children
(named) TXMP



TRAC

looked up by name???

parent
(named) ONCC
(named) TRAC
children
  • (named) TRAC (optional)
  • (named) TRAM



TRAM

looked up by name???

parent
(named) FILM
(named) TRAC
(named) TRAM
(named) TRAS
children
(named) TRAM x2 (optional)
.raw/.sep parts
lookups
ONCC/ONIA



TRAS

looked up by name???

parent
(named) TRSC
children
(named) TRAM



TRBS

looked up by name???

parent
(named) ONCC
children
(unnamed) TRCM



TRGE

looked up by name???

parent
(named) TRIG
children
(unnamed) M3GM



TRIG

looked up by name???

parent
(named) TRIG
children
lookups
OSBD



TRMA

looked up by name???

parent
(named) ONCC
children
(named) TXMP



TRSC

looked up by name???

parent
(named) ONCC
children
(named) TRAS



TSFF

Only one instance in original Oni, in level 0, called Tahoma.TSFF
parent
(named) WMDD
(unnamed) IGPG
... (popular ^^)
children



TSFL

Only one instance in original Oni, in level 0, called Roman.TSFL
parent
(named) TSFF
no children



WMM_

looked up by name???

parent
WMMB or none
no children



WMMB

Only one instance in original Oni, in level 0, called menubar_oniwindow.WMMB
children
(named) TSFF




Always unnamed

ABNA

part of (named) AKEV



AGDB

part of (named) AKEV
(.raw/.sep parts)



AGQC

part of (named) AKEV



AGQG

part of (named) AKEV



AGQR

part of (named) AKEV



AKAA

part of (named) AKEV



AKBA

part of (named) AKEV



AKBP

part of (named) AKEV



AKDA

part of (named) AKEV



AKOT

part of (named) AKEV
link to (unnamed) OTIT (no subtree)
link to (unnamed) OTLF (no subtree)
link to (unnamed) QTNA (no subtree)
link to (unnamed) IDXA (no subtree)
link to (unnamed) IDXA (no subtree)



AKVA

part of (named) AKEV
(.raw/.sep parts)



CBPI

part of (named) ONCC
links to (named) Impt (global)



CBPM

part of (named) ONCC
links to (named) Mtrl (global)



CRSA

part of (named) ONLV



ENVP

part of (named) ONLV
part of (unnamed) OBOA (part of (named) ONLV)



IDXA

part of (named) AKEV ("gunk" lookup)
part of M3GM (part of ...)
part of (unnamed) AKOT (part of (named) AKEV)
part of (unnamed) ONOA (part of (named) ONLV)



IGPA

part of (named) OPge or TxtC
links to (unnamed) IGPG



IGPG

part of (named) DPge or HPge or IPge or WPge
part of (unnamed) IGPA (part of (named) OPge or TxtC)
link to (named) TSFF (optional)
link to (named) PSpc/TXMP/WTF ???? (optional)
links to (unnamed) IGSA



IGSA

part of (unnamed) IGPG
links to (unnamed) IGSt



IGSt

part of (unnamed) IGSA
link to (named) TSFF (optional)



M3GA

part of (unnamed) OBOA
links to (named) M3GM



OBOA

part of (named) ONLV
link to (unnamed) M3GA
link to (named) OBAN
link to (unnamed) ENVP (part of (named) ONLV)



OFGA

part of (named) CONS
part of (named) DOOR
links to (unnamed) M3GM
links to OBLS (obsolete)



ONCP

part of (named) ONCC
links by label...



ONIA

part of (named) ONCC
links by label...



ONFA

part of (named) ONLV



ONMA

part of (named) ONLV



ONOA

part of (named) ONLV
link to (unnamed) IDXA



ONTA

part of (named) ONLV
(always empty, WTF)



OTIT

part of (unnamed) AKOT (part of (named) AKEV)



OTLF

part of (unnamed) AKOT (part of (named) AKEV)



QTNA

part of (unnamed) AKOT (part of (named) AKEV)



PLEA

parent
(named) AKEV
no children



PNTA

parent
(named) AKEV
M3GM
no children



TRCM

Unnamed TRCM (the most common in Oni) belong to a "body set" (TRBS), and specify the geometry/hierarchy of body meshes for one LOD (a TRBS has space for 5 TRCM links, but a same TRCM is often used by several LODs). An unnamed TRCM is linked only from one TRBS, and typically each TRCM has its own unique unique TRGA (geometry array), whereas the TRIA and TRTA (skeleton data) are typically shared between all of a TRBS's TRCMs.
There are five (5) named TRCM occurring in Vanilla Oni, named bip_***. They are empty except for their 8-byte header (instance ID and level ID), i.e. they do not have valid TRTA, TRIA or TRGA links, and do not hold any information except for their name. However, they are related to unnamed orphan TRCM which occur immediately after the named TRCM and elsewhere in the level file: the TRCM name is referenced in the comment field (a.k.a. "internal name") of the unnamed orphan TRCM, with the .MME suffix, e.g., in any Vanilla that has Shinatama in it, Shinatama's actual TRBS and TRCM will be preceded by TRCMbip_shinatama and by an unnamed orphan TRCM containing the string bip_shinatama.MME. The correspondence between the "internal name" of these TRCM and their geometrical properties are as follows:
  • bip_konoko.MME corresponds to Kon002_xlow.mme, i.e., the lowest LOD of TRBSkonoko_body_high (Konoko's main TCTF outfit);
  • bip_comguy.MME corresponds to comguy_3_xlow.mme, i.e., the lowest LOD of TRBScomguy_3_body_high (dark-skinned);
  • bip_shinatama.MME corresponds to SH_high.mme, i.e., the only LOD of TRBSSH_body_high (Shinatama);
  • bip_zombie.MME corresponds to Red1_high.mme, i.e., the high LOD of TRBSRed1_body_high (Fury).
The unnamed orphan TRCM are lost when unpacking instance files, and the game is not affected by their absence after repacking. Judging from their location in the Vanilla Oni .dat's, they were apparently bundled with TRACs, or rather with ONCC groups (doctors, security guards, male civilians, etc) that were added to each level (perhaps intended as dummies for animation preview).
All of the characters except Shinatama and "Zomitama" are bundled with one of the three "main" named TRCM, consistent with the constitution of their TRTA (more specifically, leg length). The most notable oddity is the high-LOD Fury mesh being used for bip_zombie, but there are a few more, like snipers being bundled with bip_striker even though they're Tanker/comguy-based.
parent
(named) TRBS
children
(unnamed) TRGA
(unnamed) TRTA
(unnamed) TRIA



TRGA

parent
(unnamed) TRCM (child of (named) TRBS)
children
(unnamed) M3GM



TRIA

parent
(unnamed) TRCM (child of (named) TRBS)



TRTA

part of (unnamed) TRCM (part of (named) TRBS)



TSFT

part of (named) TSFF
link to (unnamed) TSGA



TSGA

part of (unnamed) TSFT (part of (named) TSFF)



TStr

part of (named) StNA



TXAN

part of (named) TXMP
links to (unnamed) TXMP



TXCA

part of (named) AKEV
part of M3GM (part of ...)



TXMA

part of (named) AKEV
links to (named) TXMPs



VCRA

part of M3GM (part of...)