Skip to content

Register

Jumpstile edited this page Jun 19, 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.

Like AutoSync, this mode offers a preview/dry-run option first -- see AutoSync#preview--dry-run-mode. Answering Y shows exactly which games would register, with zero UserProfiles XML files written.


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
Register manually (duplicate) This folder's profile code was already claimed by another folder this run (e.g. multiple ROM revisions sharing one generic exe and one profile) -- see ACTION REQUIRED

Existing UserProfiles are never overwritten.

Resolving duplicate conflicts (v0.85+): right after registration, if any "duplicate" conflicts were found, the script offers to resolve them on the spot -- for each one it shows which folder currently holds the profile and which folder is contesting it, then lets you choose [K]eep the current copy, [S]witch the profile to the other copy, or [Q]uit and leave the rest for manual handling in TeknoParrotUI. Anything not resolved this way still appears in ACTION REQUIRED.


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 add your registered games directly into LaunchBox's own library -- no import wizard needed (v0.98+):

Add your registered games to LaunchBox now? (Y/N)

Before writing anything, the script:

  • Checks LaunchBox and BigBox are both closed (refuses to write while either is running).
  • Backs up every file it's about to change into Scripts\LaunchBoxBackups\<timestamp>\. If the backup fails, nothing is written.
  • Creates the TeknoParrot emulator entry if one doesn't already exist, or reuses your existing one by name (never duplicates it on re-runs).
  • Skips any game that already has an entry in the target platform, so re-runs never duplicate games or touch favorites/play counts you've already set.

The first time you use this, you're asked how TeknoParrot games should appear in LaunchBox:

  1. Mixed into your existing Arcade platform
  2. A separate "TeknoParrot" platform
  3. A separate platform with a name you choose
  4. Both -- mixed into Arcade AND a separate TeknoParrot platform

Your choice is remembered for next time. Choosing "Both" creates two separate game records (one per platform) pointing at the same TeknoParrot profile, since LaunchBox has no concept of one game belonging to two platforms at once -- favorites and play counts are tracked separately between the two views.

New games have no box art or metadata yet. In LaunchBox, right-click a newly added game and use Edit... -> Search to fetch it, the same way you would for any manually-imported game.

If anything looks wrong afterward: use mode 9 (Restore Backup) and choose "LaunchBox library backup" to restore the exact files the script changed.

Prefer the manual import wizard instead? Answer N to the direct-integration question, then Y to the follow-up, to get a reference file (TeknoParrot-LaunchBox-Import.xml) and step-by-step wizard instructions instead -- useful if you'd rather not let the script touch LaunchBox's files directly:

  1. If TeknoParrot is not yet in LaunchBox: Tools > Manage > Emulators > Add. Name: TeknoParrot. Path: TeknoParrotUi.exe. Command-line: --profile=%romfile%.xml.
  2. Tools > Import > Emulated Games.
  3. Wizard: Emulator = TeknoParrot, Import type = ROM files, Folder = your UserProfiles folder, File types = *.xml (import the profile files themselves, not the game executables -- TeknoParrot launches by profile, so the profile XML is what LaunchBox treats as the "rom").
  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 a text file -- everything that needs attention. By default that's TeknoParrot-Manager-ActionItems.txt next to the script, but a Save dialog lets you pick a different location or file name (skipped automatically during unattended runs and preview/dry-run mode, which save to the default path with no prompt).

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, or games whose one matching profile was already claimed by another folder this run -- 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
Path too long Specific games (Raw Thrills titles, Yu-Gi-Oh! Duel Terminal 6) whose install path exceeds a hard-coded engine-specific limit -- shows the exact short folder name to use. Checked automatically every run.
File version mismatch Specific games needing an OLDER pinned version of a particular file (BlazBlue-series/iDmacDrv32.dll, Tekken Tag Tournament 2/EBOOT.BIN) -- shows the file name, current/required CRC32, and where to get it. Checked automatically every run.
GPU incompatibility Specific registered games confirmed not to work on your detected GPU vendor (AMD or Intel). Informational only -- no fix exists. Checked automatically every run; silently skipped if the vendor can't be auto-detected.
Setup notes Registered games with special setup notes in the community compatibility database (eggmansworld.github.io/TeknoParrot) -- shows the expected executable name and the full notes text, word-wrapped and separated game-by-game. Informational only; skipped silently if the live fetch fails.

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