Personal projects

MechAssault MGF Explorer

MechAssault MGF Explorer is a GUI tool written in C++/wxWidgets which can open resource files used in MechAssault and MechAssault 2: Lone Wolf’s proprietary game engine. This is an ongoing project that will develop over time as I understand more about the file format and all of the resources within them. It has been developed with MechAssault 2 in mind, but can open archives used in the previous game as well.

This tool is heavily inspired by Adjutant, a program that can open .map files used in all the Halo games, index the files, and allow you to view textures, models, sounds, and even maps and animations. MGF Explorer can currently view textures, models, and plain text files in much the same way, though is (currently) far from the kind of feature level of Adjutant.

I also have a blog for this project, check it out!

MechAssault 2: Lone Wolf (and its predecessor) are original Xbox games published by Microsoft in the early 2000s. They were developed by Day 1 Studios, formerly known as Meyer/Glass Interactive and now owned by

The games were developed with Day 1’s proprietary engine of which there is no public/leaked information about (I still don’t even know if the engine has a name!). As such, this project has been a long-term exercise in reverse engineering/data mining to understand the engine’s inner workings and the assets used within the games.

This project has been an incredible learning experience as an aspiring game developer/software engineer; I have learned how to solve difficult problems involving undocumented raw binary data using hex editing tools, writing small CLI programs, and even learning how GUI applications are built and structured using the Model-View-Controller design pattern.

MechAssault stores its textures in a proprietary file format with the .tif extension (not the same as TIFF!). These files can store 2D textures, 3D textures, texture arrays and mip maps, and support BGRA8888, BGRA4444, BGRA5551, RGB565 and greyscale textures, as well as DXT1, 3 and 5 compression.

MGF Explorer can open and preview almost all texture files correctly – some are encoded using the morton Z-order curve and have yet to be decoded.

MGF Explorer can also preview 3D models used in the game. Models are stored in .mgmodel files, which are just simple XML documents that define the materials, meshes, and node hierarchy (using XML syntax) for the model.

After selecting an .mgmodel file from the file tree, an OpenGL viewport is revealed and the textured model will appear. This viewport also supports a flying camera, controllable by holding the right mouse button (over the viewport) and using WASD, space and ctrl. Additionally, a list of all the meshes that compose the model, along with the number of vertices, vertex stride and flags is shown. Selecting one of these meshes from the list will highlight it yellow in the viewport (helps with tracking down erroneous vertex/index buffers).