[WIP/REQ] Battlestations Pacific .MMOD
Posted: Wed Sep 10, 2014 3:21 am
Hello! I've tried searching this topic here, but only found one thread in the wrong section with no posts.
Anyway, I'd like to ask about the .mmod model format from the PC game Battlestations Pacific.
Battlestations Pacific is an RTS game, where you can take direct control of an enormous variety of Japanese and American warships and airplanes.
The game was released in 2009, and while the texture resolution isn't that high, as you can see the models are stunningly detailed.

All game files are stored in .mpack files, which can be opened with BSPRipper.
The textures are stored in plain .dds files, but models are in this .mmod format. Lots of people have already tried to figure this out, but nobody seems to be able to.
A fellow by the name of richimoto made some decent progress on the official game forums, but he left before finishing anything.
I'll repost his work here, maybe it'll be helpful:
Anyway, I'd like to ask about the .mmod model format from the PC game Battlestations Pacific.
Battlestations Pacific is an RTS game, where you can take direct control of an enormous variety of Japanese and American warships and airplanes.
The game was released in 2009, and while the texture resolution isn't that high, as you can see the models are stunningly detailed.

All game files are stored in .mpack files, which can be opened with BSPRipper.
The textures are stored in plain .dds files, but models are in this .mmod format. Lots of people have already tried to figure this out, but nobody seems to be able to.
A fellow by the name of richimoto made some decent progress on the official game forums, but he left before finishing anything.
I'll repost his work here, maybe it'll be helpful:
Since posting links in public is apparently against the rules now, PM me for file samples.richimoto wrote:simple.mvfm geometry cracked!
In each .mmod file, you will find:
MMOD
--------BoundingSphere
--------BoundingBox
--------Resource
--------------------Mesh
---------------------------VertexStream
----------------------------------------------*.mvfm
I have not yet had any luck with BoundingSphere, so I skipped BoundingBox. VertexStream is pretty straightforward but I cracked the geometry format for simple.mvfm!
right after simple.mvfm in the file begins a list of FLOATs. in the case of simple.mvfm, they are in a sequence of x,y,z,n1,n2,n3,u,v. This sequence represents one vertex. x=position left to right, y=position down to up, z= position front to back. n1,n2,n3 combined represent a vector, the direction light reflects from the vertex, u=the vertex' position on the texture map from left to right, v=the vertex' position on the texture map from top to bottom. the next float is x of the next vertex.
after the vertex stream is the index.
---------------------------Indices
The index is a list of how the vertices are put together to make polygons. in this example, directx is calling it a "ushort"-the u for unsigned and short as 0x XX XX... (also WORD) 00 00=0, 00 01=1 etc... for example, the index contains: 0,1,2,3,4,0,5,6,3,7... this means that vertices 0,1,2 make a polygon. verts 3,4,0 make a polygon. Notice that these two polygons share vertex0.
I have attached two images showing the relevant research data for vertices and indices:
VertexStream:
http://battlestations.eu/components/com ... tream.jpeg
Indices:
http://battlestations.eu/components/com ... dices.jpeg