MTM2 Localization (.LOC) Reverse Engineering

mtm2 and other sensible chat
Post Reply
User avatar
Kmaster
MTM2 Engineer
Posts: 1369
Joined: Fri Oct 10, 2003 6:19 pm
Location: Valparaíso, Chile.
Contact:

MTM2 Localization (.LOC) Reverse Engineering

Post by Kmaster »

MTM2 Localization Reverse Engineering (with AI) – Findings + Reconstructed .LOC

Spent some time digging into how Monster Truck Madness 2 handles localization, using AI to speed up the binary analysis. Sharing results here since this might be useful for modding / translations in the future, and maybe do a proper update to the Spanish-LOC project (last version was released in 2008...)

Goal
Figure out whether UI\MTM2.loc is embedded inside MONSTER.EXE (possibly inside a POD), or if it's external — and if possible, reconstruct a base LOC file directly from the EXE.

What we found
  • No embedded POD or hidden LOC inside the EXE
  • UI\MTM2.loc is just a hardcoded path string in the binary
  • The EXE contains the original English strings compiled directly into it
  • The LOC system works as a runtime override layer:

Code: Select all

@@TAG    = original English string (from EXE)
@@STRING = replacement (from LOC file)
Key insight
The EXE itself is basically the source message catalog.
The LOC file only maps/replaces those strings, it doesn’t store the originals.

What we built
  • Scanned the EXE for all relevant English UI/message strings
  • Matched them against known LOC files
  • Reconstructed a base LOC file directly from the executable
  • Added extra UI/HUD/loading strings found only in the EXE (separated with comments)
  • Included offsets for traceability/debugging
Result
A working LOC file you can use as:
  • a baseline for translations
  • a starting point for mods
  • a way to fix missing or broken localization
Why this matters
  • No need to search for hidden resources or embedded PODs
  • Full control over localization externally
  • Makes creating new language packs straightforward
If anyone wants the file or wants to expand coverage further (there are still some edge-case strings), I’m happy to share or iterate on it.

https://fromsmash.com/MTM2-BASELOC
Post Reply