Autotracking Creation (From existing database) - jxjacob/GSTHD GitHub Wiki

Autotracking is a new feature of the DK64 edition of GSTHD that allows the status of collected items to be directly pulled from supported N64 emulators. Packaged in with the official release is compatibility with the Donkey Kong 64 Randomizer, although any game compatible with the below emulators can be setup by the user.

This page is in regards to adding autotracking compatibility to an existing layout from an existing game. If you are looking to add your own game to be autotracked, the guide you are looking for is here instead.


If you are just looking for how to connect the autotracker to your emulator, simply select your emulator from the dropdown, load your ROM into said emulator and click "Connect". It (usually) Just Works™.


The following emulators are supported:

  • Project64 v3.0.1
  • Bizhawk DK64 Version (other 64-bit Bizhawk versions will not work)
  • Rosalie's Mupen GUI

1) Understanding The .csv

Within the GSTHD_DK64 release is the Autotrackers folder, which initially only contains DK64.csv. This guide will reference DK64.csv for brevity/consistency, but the same steps apply to any other unofficial csv file formatted for GSTHD_DK64. This is the database that contains all the searchable addresses needed to autotrack DK64. Upon opening the csv (usually in a spreadsheet software like Excel) you will see a table with eight columns. Thankfully, you only need to worry about understanding three of them, and none of them need to be modified on your end:

Column Name Description
name The name of the address. Used to attach to a layout item (if there is no group).
type The kind of layout item that the tracked address will be attached to. See below table for mappings.
group The name of a collection of addresses that will be combined into a single item on the layout. Can be blank.

The game_verification and game_state rows at the top can be ignored, as they are only used for backend stuff and don't matter for layout creation.

The type column is intended to be mapped pretty straightforward-ly to json items based on their names. However, some alternate mappings exist.

csv type supported json items
item Items: 1-to-1 mapping
Medallions: Will map 1-to-1 with the image; text is unaffected
Songs: Will map 1-to-1 with the main image; sub-image is unaffected
collectable CollectedItems: 1-to-1 mapping
Item: will try to keep the mapping so long as the Item has enough images
doubleitem DoubleItems: 1-to-1 mapping

2) JSON Setup

Keeping the csv from step 1 open as a reference, make the following changes to your main layout:

  • Add a "AutotrackingGame": "DK64.csv, to the AppSize sections of the json (usually at the top of the layout).
  • For each item you wish to be automatically tracked, add a "AutoName": "xyz", to that item's section, where xyz is the name present in the csv (see exception below)
    • Exception: if the csv entry has a group, use that for xyz instead of the name.
    • Make sure the csv's type lines up properly with the json's. Check the table above for the supported mappings.

For example: if you are tracking the Total Golden Bananas, you would want to add "AutoName": "total_gbs", to an item in the CollectedItems section. If you were to "AutoName": "dk_japes_gbs", instead, the tracker item would never update, as that line in the csv does have a group.

This can be a very lengthy and monotonous process. I'm sorry. But if you've already made a new layout to add autotraking to, you're probably already used to the json-tinkering hell. Again, I'm sorry.

3) Testing & Playing the video game

Reload the layout in GST (Ctrl+R) and connect to your emulator of choice. Once in-game (not the main menu or title screen) your items should automatically be populated from your inventory.

If using Excel to view the csv, be aware that you will likely get a "File is in use by another program" error upon enabling autotracking. This is because of Excel hogging the file and is not something I can fix myself. Opening the csv in other programs will get around (such as a text editor, at the cost of visibility) will prevent this from occurring.

⚠️ **GitHub.com Fallback** ⚠️