OME
![]() |
This page is under construction Check back later for additional changes |
OME is a model format used in Yakuza, Yakuza 2, and by extension, Ryu Ga Gotoku 1 + 2 HD Edition. It was phased out and replaced with GMD.
Format Overview
A typical OME file has the following order:
1) File header data
2) Object/physics data*
3) ODBP/MDBP block
MDBP is an earlier version of OME and is not supported by the game, attempting to load one may lead to a crash.
Within ODBP:
1) ODBP File header data
2) Mesh block (pointers, material ids etc.)
3) Armature block
4) File header data
5) Material group**
6) Mesh data (vertex info and face index table)
7) End block
*Does not contain physics collision mesh(stored somewhere else) but does play some role (something physics?) in case of props, otherwise don't know what this does.
**Doesn't seem to control anything related to actual materials, here like materials are grouped together.
Technical Information
Offset | Data type | Description | Notes |
---|---|---|---|
0x00 | 4 bytes | File magic | "OME" |
0x04 | Uint32 | Version ID | Unclear if this does anything
Version ids in Y1: (4, 5, 6, 2, 1, 0) |
0x08 | Uint32 | ODBP file pointer | |
0x10 | Uint32 | Count | Count of the entries in the next block (object/physics data block) |
0x14 | Uint32 | Block size | Here, refers to the size of this struct |
0x18 | Uint32 | Model "sheen/glare" strength | Controls the "glare" of the model, which is controlled by the
model's texture alpha |
0x1c | Uint32 | Mesh flag | Unclear if this does anything |
Note: This is still WIP, more info needed on this!
Entry
(Block size: 32 bytes) | |||
---|---|---|---|
Offset | Data type | Description | Notes |
0x00 | Uint32 | Read flag | The whole entry will not be read if set to 0,
If 1, will be read. (assumption) |
0x04 | Uint32 | Pointer | Pointer to a field below the entries |
0x08 | Uint32 | Unknown | |
0x0c | Uint32 | Constant | Always FF FF FF FF |
0x10 | Uint16 | Unknown1 | |
0x12 | Uint16 | Unknown2 | |
0x14 | Uint32 | Unknown | |
Field A
(Block size: 16 bytes) | |||
Offset | Data type | Description | Notes |
0x00 | Uint32 | count1 | Unclear on how its used |
0x04 | Uint32 | pointer1 | Unclear on how its used |
0x08 | Uint32 | pointer2 | |
0x0c | Uint32 | count2 | |
Field B (based from pointer2 and count2)
(Block size: 16 bytes) | |||
Offset | Data type | Description | Notes |
0x00 | Float | X coord | |
0x04 | Float | Y coord | |
0x08 | Float | Z coord | |
0x0c | Float | Unk float | Don't know what this does so far |
Offset | Data type | Description | Notes |
---|---|---|---|
0x00 | Uint32 | File magic | |
0x04 | Uint32 | ODBP struct size | |
0x08 | Uint32 | UNK flag | Might have a hand in vertex table row size? |
0x0c | Uint32 | Filesize | From the magic till the end block, not till the actual EOF |
0x20 | Uint32 | Substruct size | |
0x24 | Uint32 | Mesh count | |
0x28 | Uint32 | Pointer to armature | |
0x2c | Uint32 | Bone count | |
0x30 | Uint32 | UNK pointer | Assumed to be a pointer |
0x48 | Uint32 | Material groups pointer | |
0x4c | Uint32 | Physics object pointer | Struct will not exist if this is 0 |
0x50 | Uint32 | Actual mat groups pointer | TODO: fix up these naming |
This block (Mesh table) is 128 bytes offset from the OBDP magic.
Offset | Data type | Description | Notes |
---|---|---|---|
0x00 | Uint32 | Vertex table pointer | |
0x04 | Uint32 | "End block" pointer | |
0x08 | Uint32 | Material ID | You will see the same ID for its TXB file.
If it doesnt exist or ID is not unique, (this) mesh will be untextured |
0x0c | Uint32 | UNK variable | |
0x10 | UNK | UNK variable | |
0x1c | UNK | UNK variable | |
0x20 | Float | "Origin" X | |
0x24 | Float | "Origin" Y | Would be Z in Blender's coordinate system |
0x28 | Float | "Origin" Z | Would be Y in Blender's coordinate system |
0x2c | Float | UNK float | |
0x30 - 0x3c | Uint32 | Padding |
Offset | Data type | Description | Notes |
---|---|---|---|
0x00 | Uint32 | "Sibling" pointer | It will be parented to the parent of the sibling bone, like siblings..... |
0x04 | Uint32 | "Parent to" pointer | Pointer to what bone this will be parent to |
0x08 | Uint32 | Bone ID | |
0x10 | Float | Pos X | |
0x14 | Float | Pos Y | Would be Z in Blender's coordinate system |
0x18 | Float | Pos Z | Would be Y in Blender's coordinate system |
0x30 | Float | UNK variable | |
0x34 | Float | UNK variable | |
0x38 | Float | UNK variable | |
0x40 | Float | UNK variable | |
0x44 - 0x4c | Uint32 | Padding |