Home - thethiny/NRS-Asset-Manager GitHub Wiki
A Python toolkit for extracting and parsing game assets from NetherRealm Studios titles built on the custom UE3-based Midway engine.
| Game | Codename | Engine Ver | Compression | External Data | Status |
|---|---|---|---|---|---|
| Injustice 2 (2017) | DCF2 | 732 | Oodle v4 |
.tfc (Texture File Cache) |
Full extraction |
| Mortal Kombat 11 (2019) | MK11 | 769 | Oodle v5 |
.psf (Package Script File) |
Full extraction |
# Auto-detects game from file header and version
python main.py extract path/to/file.xxx
# Display file header (game, version, tables, compression)
python main.py header path/to/file.xxx
# List exports, imports, or names (or all three)
python main.py list path/to/file.xxx --exports
python main.py list path/to/file.xxx --imports
python main.py list path/to/file.xxx --names
# Extract a specific export by glob or regex
python main.py export path/to/file.xxx --name "*Body_Color*"
python main.py export path/to/file.xxx --name "Batman.*Texture" --regex
# Extract raw data (no handler processing)
python main.py export path/to/file.xxx --name "*.SkeletalMesh" --raw
# Create decompressed Midway UPK only
python main.py midway path/to/file.xxx --output out/
# Dump all raw exports
python main.py extract-all path/to/file.xxx
# Extract external bulk data (TFC/PSF)
python main.py bulk path/to/file.xxxSee Extraction Pipeline for the full architecture and How to Expand for adding new game support.
All NRS games follow the same three-stage pipeline:
.xxx (Compressed Archive)
β Midway Format (Decompressed UPK)
β Exports (Individual game objects)
β Handlers (DatabaseβJSON, Texture2DβDDS/PNG, etc.)
See Extraction Pipeline for details.
mk_utils/
βββ nrs/
β βββ ue3_common.py # Shared base classes (GUID, ClassHandler, FileReader)
β βββ compression/ # Oodle v4/v5 DLL wrappers
β βββ localization_parser.py # Coalesced AES decryption (shared across all games)
β βββ <game>/ # Per-game implementation (mk11/, ij2/, ...)
β βββ ue3_common.py # Structs (header, tables, archive base)
β βββ archive.py # UE3Asset (.xxx parser + midway builder)
β βββ midway.py # MidwayAsset (table parsing, export reading)
β βββ ue3_properties.py # UE3 property deserializer
β βββ enums.py # Game-specific enums
β βββ class_handlers/ # Export processors (DatabaseβJSON, Texture2DβDDS/PNG)
βββ scripts/
β βββ <game>_extractors.py # Per-game extraction entry point
βββ utils/
βββ filereader.py # Memory-mapped file I/O
βββ structs.py # ctypes binary struct wrapper
- Architecture: Extraction Pipeline Β· File Format Overview Β· How to Expand
- Game Formats: Injustice 2 Format Β· MK11 Format Β· Format Comparison
- Game Knowledge: IJ2 Inventory System Β· IJ2 Gear Randomization
- Handlers: Database Handler Β· Texture2D Handler
- Reference: UE3 Property Types Β· Enums Reference Β· Known Limitations