Skip to content

A lite, heuristic tool to peek inside MechWarrior 5: Mercenaries save files (.sav) and dump a best-effort JSON view. It’s intended to help you locate values of interest in otherwise opaque binary data.

License

Notifications You must be signed in to change notification settings

SerBrynden/MW5-Save2JSON

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

MW5 Save → JSON

A lite, heuristic tool to peek inside MechWarrior 5: Mercenaries save files (.sav) and dump a best-effort JSON view. It’s intended to help you locate values of interest in otherwise opaque binary data.

Typical things you might search for in the output:

  • AvailableCBills
  • StartingDateTicks (start date of the campaign or career)
  • ExecutionDate (next payment due date, found after a path that looks like /Game/Campaign/TimelineEvents/FinanceEvent/FinanceEvent.FinanceEvent_C)
  • TotalTimeElapsed (days elapsed in the game)
  • Various flags, enums, Guids, and object paths

Note: This is not a full or authoritative parser. It trades completeness for simplicity and speed.


What it does

  • Scans the save file for recognizable UnrealEngine-ish property markers and nearby keys.
  • Heuristically decodes common scalar types (int32/int64, float/double, boolean) and string-like data (paths, quoted text).
  • Attempts to interpret .NET-style DateTime “ticks” and present a human-readable ISO timestamp where found.
  • Outputs a JSON file alongside your .sav for convenient searching and inspection.

The JSON structure is a best-effort tree of keys and values; when keys repeat, you may see lists. Some sections may appear nested (arrays/maps/struct-like blocks), but the shape is not guaranteed to mirror the exact in-game object model.


Limitations and caveats

  • This is a rough viewer: some data types may not be decoded correctly.
  • On large saves, some content may be missing in the output JSON due to recursion and list-size limits intended to prevent runaway processing.
  • Keys are discovered heuristically; names may be missing, repeated, or partially recovered.
  • Numeric fields may occasionally be misread depending on local context.
  • Arrays and maps are approximated; ordering and grouping are not guaranteed.

If you can’t find a value, try searching for multiple related keys or alternate spellings.


Requirements

  • Python 3.12+ (earlier versions may work but haven't been tested)
  • No third-party dependencies (standard library only).
  • A virtual environment is recommended for isolation but not required.

Usage

  1. Optional: create and activate a virtual environment.

    • Windows (PowerShell)
      • python -m venv .venv
      • .\.venv\Scripts\Activate.ps1
    • macOS/Linux (bash/zsh)
      • python3 -m venv .venv
      • source .venv/bin/activate
  2. Run the script and provide the path to your .sav when prompted:

    • Windows
      • python mw5_save_to_json.py
    • macOS/Linux
      • python3 mw5_save_to_json.py
  3. The tool writes a .json file next to your .sav with the same base name.

Example:

  • Input: C:\Users\You\Saved\Save_001.sav
  • Output: C:\Users\You\Saved\Save_001.json

Open the JSON in your favorite text editor and search for keys like AvailableCBills, StartingDateTicks, ExecutionDate, or TotalTimeElapsed.


Tips for searching

  • Monetary: AvailableCBills
  • Campaign start time: StartingDateTicks
  • Next payment due date: ExecutionDate, found after a path that looks like /Game/Campaign/TimelineEvents/FinanceEvent/FinanceEvent.FinanceEvent_C
  • Days elapsed in the game: TotalTimeElapsed
  • General time fields: any key with “Ticks” often indicates a .NET tick count (100 ns) since January 1, 0001

Editing your save (advanced)

If you want to make direct changes to the save file, consider using a hex editor (for example, HxD on Windows). Tips:

  • Always make a backup of your save before editing.
  • Use the JSON output to locate nearby keys/values, then search for those byte patterns in the .sav.
  • Be mindful of endianness and data sizes; modifying lengths or structure can corrupt the file.
  • Make small changes and test incrementally.
  • There is a nice video on YouTube that can show you how to edit MW5 save files with a hex editor.

Editing is entirely at your own risk.


Troubleshooting

  • JSON is missing large chunks:
    • Very large or deeply nested sections may be truncated by built-in depth and list-size limits. Try searching the original save file using a hex editor.
  • Values look wrong:
    • Heuristics can misinterpret ambiguous byte patterns. Cross-check with multiple occurrences or related fields.
  • Nothing useful appears:
    • Ensure you pointed to a valid MW5 .sav. Try a different save or search for broader keywords in the JSON.

Safety and backups

This script reads your save and writes a separate JSON file. It does not modify the original save. Still, it’s good practice to back up your saves before experimentation.

About

A lite, heuristic tool to peek inside MechWarrior 5: Mercenaries save files (.sav) and dump a best-effort JSON view. It’s intended to help you locate values of interest in otherwise opaque binary data.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages