This is the specifications for the archive file which is handled by the
Game Extractor plugin
Archive_BMOD_OMOD.
Endian Order: | Little Endian |
Compression: | none |
Encryption: | None |
This format is used by the following Games:
This is the format specification information:
| // HEADER
4 - Header (OMOD)
4 - File Length [+32]
2 - Unknown (13)
2 - Unknown (1)
// BLOCKS
// for each block
4 - Block Name
4 - Block Length (including these 2 header fields)
if (BlockName = DUMY){
// Dummy, can contain objects in it
4 - Object Number (incremental from 0)
4 - Name Length
X - Name
68 - Unknown
}
else if (BlockName == OBST){
// Object
4 - Object Number (incremental from 0)
4 - Name Length
X - Name
68 - Unknown
}
else if (BlockName == MESH){
// Mesh
4 - Unknown
4 - Unknown
4 - Number of Vertex Points
}
else if (BlockName == VERT){
// Vertex block, contained within a MESH
4 - Number of Vertex Points
4 - Unknown
4 - null
// for each vertex (32 bytes per entry)
4 - Vertex X
4 - Vertex Y
4 - Vertex Z
4 - Normal X
4 - Normal Y
4 - Normal Z
4 - UV X
4 - UV Y
4 - Number of Entries? (1)
// for each entry
4 - Unknown
}
else if (BlockName == ISTR){
// Face Indexs block, contained within a MESH
4 - Number of Face Indexes
// for each Face Index
2 - Face Index
}
else if (BlockName == FACE){
// Faces block, contained within a MESH
4 - Number of Faces
// for each Face
// LODP entry
}
else if (BlockName == LODP){
// Unknown block, contained within a FACE
4 - Unknown
4 - Number of FSEC Entries? (1)
// for each FSEC entry
// FSEC entry
}
else if (BlockName == FSEC){
// Face Sequence? block, contained within a LODP
2 - null
4 - Unknown (0)
4 - Unknown
4 - Number of Face Indexes
4 - Unknown (101)
4 - First Face Index Number
4 - Last Face Index Number
}
else if (BlockName == OBOX){
// Object Center Point
4 - Center Vertex X
4 - Center Vertex Y
4 - Center Vertex Z
4 - Center Normal X
4 - Center Normal Y
4 - Center Normal Z
}
else if (BlockName == MBOX){
// Unknown block
24 - Unknown
}
else if (BlockName == TEXT){
// Unknown block
4 - null
4 - String Length
X - String
}
else if (BlockName == MATE){
// Material block
4 - Material Number? (0/1)
4 - Texture Filename Length
X - Texture Filename
4 - Number of Entries
96 - Unknown
// for each entry
20 - Unknown
}
else if (BlockName == BLST){
// Unknown block
4 - null
}
else if (BlockName == ASEL){
// Unknown block
4 - Number of Strings
// for each string
4 - String ID
4 - Unknown
4 - String Length
X - String
}
else if (BlockName == ASEC){
// Unknown block
4 - null
}
else if (BlockName == TIME){
// Timestamp Block
24 - Timestamp String
} |
These are the accompanying notes and further information:
| Model
The Object Numbers are shared between blocks. For example, if the first block is DUMY, it'll have Object Number 0.
It doesn't matter what the next block is (eg DUMY, OBST, ...), it will have Object Number 1, etc. |
Game Extractor is able to read files of this type, as well as files from thousands of other games. To give it a try, download
Game Extractor (Basic Version) for
free, and see what it can do.
For further information on this format, refer to the source code on our
GitHub repository.