2 Screenshots

About This File

A simple CLI to easily compare KOTOR file formats.

This is a very simple CLI to PyKotor. If you find TSLPatcher isn't patching the resulting files in the way you want, you can use this tool to compare your manual changes to the resulting TSLPatcher result. You can also use it to compare entire installations, directories, or single files.

How to use:

Simply run the executable. It'll ask you for 3 paths:

PATH1                Path to the first K1/TSL install, file, or directory to diff.

PATH2                Path to the second K1/TSL install, file, or directory to diff.

OUTPUT_LOG   File name/path of the desired output logfile (defaults to log_install_differ.log in the current directory)

If you point PATH1 and PATH2 to two KOTOR installs, it will ONLY compare the Override folder, the Modules folder, the Lips folder, the rims folder (if exists), the StreamWaves/StreamVoices folder, and the dialog.tlk file. This was a design choice to improve how long the differ takes to finish. This includes any subfolders within the aforementioned folder names.

Supported filetypes/formats:

  • TalkTable files (TLK)
  • Any GFF file (DLG, UTC, etc)
  • Any capsule (ERF, MOD, etc)

Not supported: NCS, NSS

Any file format that's not supported will have its SHA256 hash compared instead.

CLI Support:

This is a very flexible tool. You can send it command line arguments if you would like to use it in a 3rd party tool. Run `kotordiff.exe --help` to get a full syntax. If there's an error, the exit code will be 1. If the two paths match, the exit code will be 0. If the two paths don't match, exit code will be 2.


Couldn't I just open my two files with Holocron Toolset/ERFEdit/K-GFF etc?

You could, but for me it became tedious to manually compare them side by side, expanding every node etc. Leave alone completely multiple files. This tool allows you to simply input two paths and have the full differences outputted and logged.

A main benefit is it'll show you the exact GFF paths that differ. Output such as `Missing struct: "EntryList\5\RepliesList\3" {contents of the struct}` has been very useful.

Why is my antivirus is flagging this?

This is a false-positive and there's nothing I can do. Python source scripts are compiled to executables using PyInstaller, but unfortunately some antivirus's have been known to flag anything compiled with PyInstaller this way. The problem is similar to why your browser may warn you about downloading any files with the .EXE extension.

This whole tool is open source, feel free to run directly from the source script: https://github.com/th3w1zard1/PyKotor/blob/master/Tools/KotorDiff/src/__main__.py

There's a well-written article explaining why the false positives happen on their issue template: https://github.com/pyinstaller/pyinstaller/blob/develop/.github/ISSUE_TEMPLATE/antivirus.md

TLDR: PyInstaller is an amazing tool, but antiviruses may flag it. This is not the fault of PyInstaller or my tool, but rather the fault of how some scummy users have chosen to use PyInstaller in the past. Please report any false positives you encounter to your antivirus's website, as reports not only improve the accuracy of everybody's AV experience overall, but also indirectly supports the PyInstaller project.


Source code:




@Cortisol for creating the PyKotor library (i.e., 90% of the code for this tool)


What's New in Version v0.6.0   See changelog


Output log tweaks

Base fixes to PyKotor's core code will result in overall better stability.

  • Like 1

User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.