Collection of various tools for Northlight Engine used for Polish fan translation of Quantum Break!
Northlight Tools provides the following utilities:
-
Remedy Package Tools (
rmdp):
Allows you to extract, pack, and inspect Remedy package files (.bin/.rmdp).- Export: Extract all files from a package to a directory.
- Import: Pack a directory of files into a new Remedy package.
- Info: Print metadata and structure of a package.
- List-files: List all files contained in a package.
-
String Table Tools (
string-table):
Enables conversion betweenstring_table.binand editable formats (XML, JSON, CSV, PO), and re-importing translations.- Export: Convert
string_table.binto XML, JSON, CSV, or PO for translation. - Import: Generate a new
string_table.binfrom a translated file. - Flexible handling of missing translations with the
--missing-stringsoption.
- Export: Convert
-
Binary Font Tools (
binfnt):
Supports decompiling and compiling Northlight binary font files (.binfnt).- Decompile: Convert
.binfntto editable xml metadata and png bitmap(s), optionally extracting each character to seperate bitmap file. - Compile: Build a
.binfntfrom xml metadata and bitmap(s).
- Decompile: Convert
- Python 3.11+
Either use compiled portable build for Windows or Linux from Releases page or use your python package management system (like pipx or uv)
Example:
pipx install git+https://github.com/GrzybDev/NorthlightTools.git
After installing the package, you can use the tools via the northlighttools command (or python -m northlighttools for local installs).
northlighttools --helpExport a string_table.bin to XML, JSON, CSV, or PO:
northlighttools string-table export path/to/string_table.bin --output-type xml
northlighttools string-table export path/to/string_table.bin --output-type json
northlighttools string-table export path/to/string_table.bin --output-type csv
northlighttools string-table export path/to/string_table.bin --output-type poImport a translation file (XML, JSON, CSV, PO) and generate a new string_table.bin:
northlighttools string-table import path/to/translated_file.xml
northlighttools string-table import path/to/translated_file.csv --missing-strings keyOptions for --missing-strings:
key+original(default): Use both the key and the original string as the fallback, e.g.(KEY) Original text.key: Use only the key as the fallback for missing translations.original: Use only the original (source) string as the fallback.empty: Use an empty string for missing translations.remove: Remove entries with missing translations from the output file.error: Raise an error if any translation is missing (import will fail).
Show info about a package:
northlighttools rmdp info path/to/archive.rmdpList files in a package:
northlighttools rmdp list path/to/archive.rmdpExtract all files from a package:
northlighttools rmdp extract path/to/archive.rmdp path/to/output_dirPack a directory into a Remedy package:
northlighttools rmdp pack path/to/input_dir path/to/output_archive.rmdpYou can customize the package creation with these options:
--endianness: Set the byte order for the package files. Uselittle(default) for most cases, orbigif required by your target game/version.--version: Specify the package format version. Supported values:2for Alan Wake7for Alan Wake: American Nightmare8for Quantum Break (default)9for Control
Decompile a .binfnt file to editable XML and bitmap(s):
northlighttools binfnt decompile path/to/font.binfnt path/to/output_dirTo save each character as a separate image:
northlighttools binfnt decompile path/to/font.binfnt path/to/output_dir --separate-charsCompile metadata and bitmap(s) back to .binfnt:
northlighttools binfnt compile path/to/modified.xml path/to/output.binfntEach command has its own help, e.g.:
northlighttools binfnt --help
northlighttools rmdp extract --helpThanks to:
- Nostritius who created AWTools which helped with understanding rmdp and string table formats
- eprilx who created NorthlightFontMaker which helped with understanding binfnt format!
Special thanks to:
- Remedy Entertainment (for making Northlight Engine)