-
-
Notifications
You must be signed in to change notification settings - Fork 0
Register
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.
| 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.
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" } }The script runs three passes to resolve every game:
-
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). -
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.
-
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).
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:
- Shared-executable games -- dat disambiguates instantly by folder name
- ELF / pcsx2x6 games -- a second pass looks up unmatched folders by normalised folder name
- 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.
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:
-
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
-
Re-run the script. After registration it runs propagation automatically.
-
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.
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.
After registration the script offers to download missing game icons:
- Connects to the TeknoParrotUIThumbnails repository
- Downloads
<ProfileCode>.pngfor 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.
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):
- If TeknoParrot is not yet in LaunchBox: Tools > Manage > Emulators > Add. Name: TeknoParrot. Path:
TeknoParrotUi.exe. Command-line:--profile="{rom}". - Tools > Import > Emulated Games.
- Wizard: Emulator = TeknoParrot, Import type = ROM files, Folder = your staging folder, File types =
*.exe. - Click Next, review matches, click Import.
Re-run the wizard any time you add more games -- LaunchBox skips games already in your library.
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.
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 |
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 |
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.
.\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:
- Run once interactively to save settings.
- Open Task Scheduler (
taskschd.msc). - Create Task (not Basic Task). General tab: name it, Run with highest privileges.
- Triggers: On a schedule -- set your preferred time.
- Actions: Start a program.
- Program:
powershell.exe - Arguments:
-ExecutionPolicy Bypass -NonInteractive -File "C:\path\to\TeknoParrot-Manager.ps1" -Unattended
- Program:
- Conditions: optionally require NAS network connection.
Check TeknoParrot-Manager.log after each scheduled run.
Getting started
Modes
- AutoSync (1)
- Register (2)
- Crosshairs (3)
- ReShade (4)
- dgVoodoo2 (5)
- GPU Fix (6)
- FFB Setup (7)
- BepInEx (8)
- Restore Backup (9)
- Postgres Setup (11)
Reference