All of the models use the same format, I think. Low-poly.
The format for the non-skinned meshes seem pretty straightforward but there are so many odd integers here and there. I also haven't figured out how to determine the number of meshes.
Anyways enjoy.
I've gotten some outline of the format but it's full of unk's.
Here's a cabinet (single named mesh)

EDIT: revised outline. Found that some meshes have named frames, others do not have names (maybe for single mesh models)
Ok, there appears to be some significance to the following integers: 0x66, 0x67, 0x68.
If an 0x08 follows after 0x67, you can expect to read a certain number of dwords, and then see an 0x68, then run into a string. If you see 0x66, you end up reading a matrix. Will need to get more samples to verify.
It's possible that two 0x67 0x08 appear in a row, so you would end up reading two strings before going into the vertex section.
0x66 is always followed by 0x40, which is the size of the following matrix
Code: Select all
#Star guardian DBO format
dword unk (could be length of the idstring)
char_8 idstring (MAGICDBO)
dword unk
dword null
dword null
dword unk
dword filesize - 68
dword unk
dword unk
dword unk
dword unk
dword unk
float_16 world_matrix
dword unk #67
struct mesh {
dword unk1
if unk1 == 8: #named mesh or frame
dword null
dword null
dword unk
dword unk
dword unk
dword unk
dword charLen
charLen meshName (or frameName?)
dword unk
dword unk
float_16 local_matrix
dword_2 unk
dword_5 unks
dword vertSize possibly
dword_2 unk
dword numVertices
dword_2 unks
dword_numIndices
dword_5
struct vertex {
float_8
}
dword unk
dword FaceSectionSize
struct face {
short_3 v1, v2, v3
}
#material section follows
}
#maybe more

