OBD:File types/Naming
- 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
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
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???
OSBD
looked up by name???
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)
TXMB
looked up by name???
- children
- (named) TXMP
TxtC
looked up by name???
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???
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
- (named) TXMP
- (named) ONCV
- (unnamed) ONCP
- (unnamed) ONIA
- (named) TRBS
- (named) TRMA
- (unnamed) CBPM
- (unnamed) CBPI
- (named) TRAC
- (named) TRSC
- lookups
- OSBD
ONCV
- except for the linking from ONCC, this is actually a set of "semi-orphans" ^^
looked up by name???
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???
- children
- 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???
TRBS
looked up by name???
TRGE
looked up by name???
TRIG
looked up by name???
- parent
- (named) TRIG
- children
- lookups
- OSBD
TRMA
looked up by name???
TRSC
looked up by name???
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
CBPM
CRSA
- part of (named) ONLV
ENVP
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
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
IGSt
M3GA
OBOA
- part of (named) ONLV
- link to (unnamed) M3GA
- link to (named) OBAN
- link to (unnamed) ENVP (part of (named) ONLV)
OFGA
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
ONTA
- part of (named) ONLV
- (always empty, WTF)
OTIT
OTLF
QTNA
PLEA
- parent
- (named) AKEV
- no children
PNTA
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 (filled with blanks) 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 instance name of the named TRCM 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_striker.MME corresponds to striker_10_xlow.mme, i.e., the lowest LOD of TRBSstriker_10_body_high (the ai2_chump one);
- 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.
TRCM name | L0 | L1 | L2 | L3 | L4 | L6 | L8 | L9 | L10 | L11 | L12 | L13 | L14 | L18 | L19 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bip_comguy | |||||||||||||||
bip_konoko | |||||||||||||||
bip_shinatama | |||||||||||||||
bip_striker | |||||||||||||||
bip_zombie |
TRGA
TRIA
TRTA
TSFT
TSGA
TStr
- part of (named) StNA
TXAN
TXCA
TXMA
VCRA
- part of M3GM (part of...)