Skip to content

Register

Eli edited this page Jun 17, 2026 · 9 revisions

Register (Mode 2)

Registration scans your games folder, matches each executable to the correct TeknoParrot profile, copies the profile template to UserProfiles, and sets the GamePath. TeknoParrot picks the games up on its next launch.

Use this mode when your games are already extracted. AutoSync (mode 1) runs registration automatically after extraction.


Registration outcomes

Result Meaning
Registered Profile matched and game now appears in TeknoParrot
Registered (fuzzy) Folder name matched a specific profile by similarity score -- shown in cyan, spot-check the match
Registered (dat/exact) Game folder name matched a dat entry exactly -- profile code taken from the dat
Registered (dat/fuzzy) Game folder name matched a dat entry by fuzzy similarity
Registered (code/fuzzy) Folder name matched a profile code by similarity -- used for games with empty ExecutableName
Already set A profile for this game already exists -- left exactly as-is
Register manually Executable is shared, folder name did not match confidently enough -- see ACTION REQUIRED

Existing UserProfiles are never overwritten.


Fuzzy matching

Many platforms share a single executable across all their titles (NESiCAxLive games all use game.exe). The script compares each game's folder name to every candidate profile code using a Sorensen-Dice bigram similarity score.

Thresholds:

Score Action
>= 0.72 Auto-registered, shown in cyan -- spot-check
>= 0.40 Flagged in ACTION REQUIRED with best-guess profile shown
< 0.40 Flagged in ACTION REQUIRED with full candidate list only

What is stripped before comparison:

  • Square-bracket metadata: [Sega NESiCAxLive][TP]
  • Bare 4-digit years: (2012)
  • Full ISO date strings: (2015-12-28)
  • Decimal versions without prefix: (2.10.00), (1.00.48)
  • Known region codes: (JPN), (USA), (EUR), (EXP), etc.
  • Version strings with prefix: (ver 1.1), (rev 2), (v3)
  • Parenthesised pure numbers: (2), (12)

Meaningful parenthesised names like (Special Edition) are kept -- they may be the only thing distinguishing two titles.

If a fuzzy match is wrong: delete the game's .xml from UserProfiles and add a forceArchetype entry in overrides.json to pin the correct profile:

{ "forceArchetype": { "WrongCode": "CorrectCode" } }

Registration passes

The script runs three passes to resolve every game:

  1. Exe-index pass -- matches each scanned executable filename against all GameProfile <ExecutableName> values. Handles .exe, .elf, .iso, .gcm, .gcz, .bin, .e4, .zip, .xbe (Sega Chihiro/cxbxr games such as Virtua Cop 3, OutRun 2, Ollie King), and .dll (Konami PC arcade games such as DanceDanceRevolution 2013, Steel Chronicle, Silent Scope Bone Eater, Metal Gear Arcade, Love Plus Arcade).

  2. Dat pass -- for folders that survived pass 1 without a match, normalises the folder name and looks it up in the Eggman dat. Handles ELF / pcsx2x6 games and shared executables not already resolved by fuzzy matching.

  3. Profile code pass -- for folders still unmatched after pass 2, Dice-compares the normalised folder name against every normalised GameProfile code. Resolves games whose profile has an empty <ExecutableName> (BladeStrangers, LuigisMansion, MaiMaiGreen, PokkenTournament, ProjectDiva, SonicDashExtreme, StreetFighterVTypeArcade, HydroThunder, and others).


Dat file integration

During Setup, the script offers to download or configure the Eggman/RomVault dat ZIP. When configured, the dat provides authoritative <GameProfile> codes that resolve three types of games that would otherwise require manual registration:

  1. Shared-executable games -- dat disambiguates instantly by folder name
  2. ELF / pcsx2x6 games -- a second pass looks up unmatched folders by normalised folder name
  3. Misnamed folders -- fuzzy scan of all dat entries as a final fallback

Dat setup options (prompted during Setup):

Option Description
D Download from GitHub now (~145 MB)
Z I have the ZIP already -- enter path
F I have separate .dat files -- enter paths
N Skip

The dat is read directly from inside the ZIP -- no extraction needed. The datFile key in overrides.json takes precedence over the setup-configured path.


Control propagation

Bind ONE game of each control type once; the script copies those controls to every other game of the same type.

How to use it:

  1. In TeknoParrotUI, fully bind one game of each control type you use -- every button, axis, Test, Service, Coin, Start.

    Good games to bind first:

    • Fighting/buttons: Street Fighter III, BlazBlue, Tekken 7, Dead or Alive 5
    • Driving: Daytona Championship USA, Initial D, OutRun 2 SP, F-Zero AX
    • Lightgun: House of the Dead 4, Aliens Extermination, Point Blank
    • Trackball: Golden Tee Live, Silver Strike Bowling, Target Toss Pro
  2. Re-run the script. After registration it runs propagation automatically.

  3. Launch one updated game and test it before trusting the rest.

What is safe:

  • The reference games you bound are read only and never modified
  • Games already bound are detected and left unchanged
  • A timestamped backup is taken before any change

What stays manual:

  • Game-specific controls that do not exist in the reference game
  • Games whose control type has no reference game bound yet -- listed in ACTION REQUIRED

Before you confirm propagation (v0.76+): the script lists every reference game's carried aim-mode settings -- relative input, sensitivity, hide-cursor, "Use Keyboard/Button For Axis" -- since these copy to every other game of that type, not just the one you bound. Check them against your real hardware before answering Y.

It also auto-flags known device-mismatch patterns with a red WARNING, since they usually mean the reference game was bound with a substitute device instead of its real hardware:

  • Driving: Use Keyboard/Button For Axis = True (wheel/pedal axes would be read as digital input, not analog -- wrong if you use a real wheel)
  • Lightgun: Use Relative Input = True (gun aim would be read as relative mouse movement, not absolute screen position -- wrong for most real lightguns)
  • Any family: a carried sensitivity value of 0 (silently disables aiming/axis response)

A WARNING does not block propagation -- it is a prompt to fix the reference game in TeknoParrotUI before answering Y, then re-run.


Device survey

On first run (or on request) the script asks which controls you have: Xbox pad, arcade stick, trackball, spinner, wheel, lightgun, keyboard. It then prints a binding plan -- which game to bind with which device. It reads nothing and changes nothing; it is guidance only.


Thumbnail download

After registration the script offers to download missing game icons:

  • Connects to the TeknoParrotUIThumbnails repository
  • Downloads <ProfileCode>.png for every registered game without an icon in <TeknoParrotRoot>\Icons\
  • Never overwrites existing icons
  • Reports: fetched / already present / not in repo / failed

Custom thumbnails: create a CustomThumbnails\ folder next to the script, add ProfileCode.png files, and they are copied to the Icons folder automatically on the next thumbnail step. Files already in Icons are never overwritten. Filenames not matching any registered profile are warned and skipped.

Finding a profile code: after any run, TeknoParrot-Manager-controls.txt lists every registered game with its exact profile code.


Frontend export

LaunchBox

At the end of each run the script offers to export TeknoParrot-LaunchBox-Import.xml -- a reference file listing every registered game with title, platform, the path to TeknoParrotUi.exe, and the --profile= argument.

To add games to LaunchBox (use the built-in import wizard -- safer than writing LaunchBox's database directly):

  1. If TeknoParrot is not yet in LaunchBox: Tools > Manage > Emulators > Add. Name: TeknoParrot. Path: TeknoParrotUi.exe. Command-line: --profile="{rom}".
  2. Tools > Import > Emulated Games.
  3. Wizard: Emulator = TeknoParrot, Import type = ROM files, Folder = your staging folder, File types = *.exe.
  4. Click Next, review matches, click Import.

Re-run the wizard any time you add more games -- LaunchBox skips games already in your library.

HyperSpin 2

At the end of each run the script offers to merge registered games into HyperSpin 2's game list. TeknoParrot must already be set up as an emulator in HyperSpin 2 (title must contain "TeknoParrot"). Games are added with title only -- use HyperSpin 2's Scrape feature for art and metadata. HyperSpin 2 must not be running when you answer Y.


Game repair

After registration the script offers to repair broken game paths (empty or pointing to a missing file):

Result Meaning
Fixed Path re-pointed to correct executable
Not yet extracted Game not in staging folder -- extract it, then re-run Repair
Register manually Executable shared by multiple games -- use TeknoParrotUI to point manually

ACTION REQUIRED summary

At the end of every run the script prints (and saves to TeknoParrot-Manager-ActionItems.txt) everything that needs attention:

Section Meaning
Not in TeknoParrot Game folders with no matching profile -- informational, no action needed
Register these games Shared-exe games below auto-register threshold -- pick manually in TeknoParrotUI
Fix these game paths Broken paths the script could not auto-fix
Extract first Games with broken paths because not yet extracted
Set up controls Control types with no reference game bound yet

Controls status file

After every run the script writes TeknoParrot-Manager-controls.txt -- a snapshot of every registered game showing:

  • Control family (button, driving, lightgun, trackball, analog, spinner)
  • How many buttons are bound out of total
  • Status: REFERENCE, propagated, already bound, partial, no controls
  • Which reference game controls came from
  • Any buttons still requiring manual binding

Open this file any time a game misbehaves -- it tells you the exact propagation state without re-running the script.


Unattended / scheduled mode

.\TeknoParrot-Manager.ps1 -Unattended

What it does automatically: loads saved settings, extracts all new games, registers, repairs, propagates controls if references exist, downloads missing thumbnails, writes the controls file, logs everything.

To schedule with Windows Task Scheduler:

  1. Run once interactively to save settings.
  2. Open Task Scheduler (taskschd.msc).
  3. Create Task (not Basic Task). General tab: name it, Run with highest privileges.
  4. Triggers: On a schedule -- set your preferred time.
  5. Actions: Start a program.
    • Program: powershell.exe
    • Arguments: -ExecutionPolicy Bypass -NonInteractive -File "C:\path\to\TeknoParrot-Manager.ps1" -Unattended
  6. Conditions: optionally require NAS network connection.

Check TeknoParrot-Manager.log after each scheduled run.

TeknoParrot Manager

Home

Getting started

Modes

Reference


Releases

Clone this wiki locally