7 Screenshots

About This File

Hey everyone,

TkHashTool is a software primarily aimed to help users resolve issues with their client files. It does so by taking a 'snapshot' of the files in the Ragnarok folder and creates a scan report. This scan can then be compared with a working version of the client to identify the problems. This is the first released version, so if you find bugs don't hesitate to go forward and tell me. Your comments below (in the support forum) are greatly appreciated. This tool was a request someone [will put the name here if the person doesn't mind] suggested to me and I liked the idea. I thought I'd upload it before I forget about it .

How to install

There is no installation required. Simply run the executable within the zip file.

End-user requirements

The software was developed using .NET 3.5 SP1 Client Profile. This framework is the same one used by GRF Editor, and it's compatible with Windows XP, Windows Vista, Windows 7, WIndows 8 and later versions. However, it's NOT installed by default on Windows XP and Windows Vista. To solve this issue, I've made a wrapper in .NET 2.0 which is already installed on all common Windows versions. The wrapper checks if the framework is installed and prompts the user to download it (sends you to microsoft's webpage), otherwise it starts the application normally.

It works with UAC, but applying patches may require the application to be run with admin privileges (the user will be prompted if that's the case).

General information

The TkPath syntax is used everywhere in the software : [file name on the hard drive]?[relative path within the container]. Containers are either .grf, .gpf or .rgz files. Examples :

  • rdata.grf?data\texture\backside.bmp
  • data\texture\backside.bmp

Regular expressions are not available in the paths, but wildcards (*) are allowed. You can use paths such as *.gnd and *.grf?*.txt

Files generated are saved in the application data folder. They are usually followed by a 'bunch of numbers', which simply represent the date : year-month-day-hour-minute-second.

How to use it

Start the application with TkHashTool.exe and you should have the 'Generate hash tool' tab already selected. The available options are rather straightforward and there are tool tips if you need more information on them.

The exclusion list contains files that will be ignored (excluded files are set before anything else). For example, if you set "data\afile.txt" to scan and you put *.txt in the exclusion list, then the file won't be scanned. If you want to ignore all the map files, you could add : *.rsw, *.gnd, *.gat.

Let's say you want to hash only the lua and lub files, you can select "Hash from specific files or folders" and use :

*.lua, *.lub, *.grf?*.lua, *.grf?*.lub

Using 'Files can be hashed more than once' scans files even if they've already been processed elsewhere (from another GRF or from the data folder). This is not always a good option because the patch generator cannot know what files to replace afterwards (since it doesn't know in what order the GRFs are being loaded). It will actually replace all files it finds instead.

The third mode, 'Hash by using the configuration in data.ini' is similar to the second mode, except that files entered in the text box below will be treated as data.ini files. If you want to scan the same way the client reads the files, you could put : data, System, AI, DATA.INI.


Click on the gear or on 'Generate client hash tool' to generate a client version. The config file alongside the executable is not necessary for the application to run. It simply tells the program to use .NET 4.0 if it's available.

Reading HashObject

A HashObject is simply a scan (.tko).


All paths are saved in Unicode and casing is ignored. The scan contains information about all the paths hashed, the head directory from which the software has been launched and the settings used for the search. The partial option indicates wheter or not the scan has been completed entirely. These files are also heavily compressed.

Comparing objects

Simply open the 'Compare HashObjects' tab, drop your master .tko file in the first text box and the user one in the second. You can view the settings used for each one of them by using the 'View file headers...' option.


As for the errors, just chek the tool tip for more information. Here's a list of the errors it can detect :

HoMissingFile   This file is missing from the user directory.HoHashMatch     Both the user and the master files have the same hash.HoDuplicateFile This file has been found twice in the GRF (lower casing issue?).HoGenericError  This file couldn't be decompressed or there was an unknown error while reading the file. Or the file size is over the size limit.HoHashDifferent The user and master files are different.HoExtraFile     This file doesn't appear in the master object, only the user has it.HoPathOverride  The user data path overrides the file in the master files.

Scanning content

Scanning the files is pretty straightforward, you can cancel the scan at any time by using the X button on the progress bar. Files larger than 25 MB will not be scanned (this doesn't include containers). They will appear in the scan with the HoGenericError code.


You can change the current working directory if you're using the master version; this option lets you change the root directory of the scan.


Use this tab to apply a patch file (.tkp). These are applied to the current directory where the software has been launched from. This operation should be really quick as it doesn't repack the GRFs at all. It uses the quick merge option which will fragment the GRF, but if it gets too fragmented, then it'll get packed automatically.


What's New in Version 1.0.2   See changelog


  • [Removed] Removed the "Change directory" setting on the user mode.
  • [Fixed] Several other minor fixes and library updates.