- add new instructions on menus to describe each function - upgrade controller_debug.pygame file to create a controller support - update command-line interface to be more effiscient and readable
9.2 KiB
RGSX CLI — Usage Guide
This guide covers all available CLI commands with copy-ready Windows PowerShell examples.
Prerequisites
- Python installed and on PATH (the app runs in headless mode; no window will open).
- Run commands from the folder that contains
rgsx_cli.py.
Quick interactive mode (new)
You can now start an interactive shell once and issue multiple commands without retyping python rgsx_cli.py each time:
python rgsx_cli.py
You will see a prompt like:
RGSX CLI interactive mode. Type 'help' for commands, 'exit' to quit.
rgsx>
Inside this shell type subcommands exactly as you would after python rgsx_cli.py:
rgsx> platforms
rgsx> games --platform snes --search mario
rgsx> download --platform snes --game "Super Mario World (USA).zip"
rgsx> history --tail 10
rgsx> exit
Extras:
helpor?prints the global help.exitorquitleaves the shell.--verboseonce sets persistent verbose logging for the rest of the session.
Formatted table output (platforms)
The platforms command now renders a fixed-width ASCII table (unless --json is used):
+--------------------------------+-----------------+
| Platform Name | Folder |
+--------------------------------+-----------------+
| Nintendo Entertainment System | nes |
| Super Nintendo Entertainment.. | snes |
| Sega Mega Drive | megadrive |
+--------------------------------+-----------------+
Columns: 30 chars for name, 15 for folder (values longer are truncated with ...).
Aliases & option synonyms (updated)
Subcommand aliases:
platforms→pgames→gdownload→dlclear-history→clear
Option aliases (all shown forms are accepted; they are equivalent):
- Platform:
--platform,--p,-p - Game:
--game,--g,-g - Search:
--search,--s,-s - Force (download):
--force,-f - Interactive (download):
--interactive,-i
Examples with aliases:
python rgsx_cli.py dl -p snes -g "Super Mario World (USA).zip"
python rgsx_cli.py g --p snes --s mario
python rgsx_cli.py p --json
python rgsx_cli.py clear
Ambiguous download selection (new table)
When you attempt a download with a non-exact title and interactive mode is active (TTY or --interactive), matches are displayed in a table:
No exact result found for this game: mario super yoshi
Select a match to download:
+------+--------------------------------------------------------------+------------+
| # | Title | Size |
+------+--------------------------------------------------------------+------------+
| 1 | Super Mario - Yoshi Island (Japan).zip | 3.2M |
| 2 | Super Mario - Yoshi Island (Japan) (Rev 1).zip | 3.2M |
| 3 | Super Mario - Yoshi Island (Japan) (Rev 2).zip | 3.2M |
| 4 | Super Mario World 2 - Yoshi's Island (USA).zip | 3.3M |
| 5 | Super Mario - Yoshi Island (Japan) (Beta) (1995-07-10).zip | 3.1M |
+------+--------------------------------------------------------------+------------+
Enter number (or press Enter to cancel):
If you cancel or are not in interactive mode, a similar table is still shown (without the prompt) followed by a tip.
Improved fuzzy search for games (multi-token)
The --search / --s / -s option now uses the same multi-strategy ranking as the download suggestion logic:
- Substring match (position-based) — highest priority
- Ordered non-contiguous token sequence (smallest gap wins)
- All tokens present in any order (smaller token set size wins)
Duplicate titles are deduplicated by keeping the best scoring strategy. This means queries like:
python rgsx_cli.py games --p snes --s "super mario yoshi"
will surface all relevant "Super Mario World 2 - Yoshi's Island" variants even if the word order differs.
Example output:
+--------------------------------------------------------------+------------+
| Game Title | Size |
+--------------------------------------------------------------+------------+
| Super Mario World 2 - Yoshi's Island (USA).zip | 3.3M |
| Super Mario World 2 - Yoshi's Island (Europe) (En,Fr,De).zip | 3.3M |
| Super Mario - Yoshi Island (Japan).zip | 3.2M |
| Super Mario - Yoshi Island (Japan) (Rev 1).zip | 3.2M |
| Super Mario - Yoshi Island (Japan) (Rev 2).zip | 3.2M |
+--------------------------------------------------------------+------------+
If no results are found the table displays only headers followed by a message.
General syntax (non-interactive)
Global options can be placed before or after the subcommand.
-
Form 1:
python rgsx_cli.py [--verbose] [--force-update|-force-update] <command> [options] -
Form 2:
python rgsx_cli.py <command> [options] [--verbose] [--force-update|-force-update] -
--verboseenables detailed logs (DEBUG) on stderr. -
--force-update(or-force-update) purges local data and re-downloads the data pack (systems_list, games/*.json, images).
When source data is missing, the CLI will automatically download and extract the data pack (with progress).
Commands
1) platforms (platforms / p) — list platforms
- Options:
--json: JSON output (objects{ name, folder }).
Examples:
python rgsx_cli.py platforms
python rgsx_cli.py p --json
python rgsx_cli.py --verbose p
python rgsx_cli.py p --verbose
Text output: one line per platform, formatted as Name<TAB>Folder.
2) games (games / g) — list games for a platform
- Options:
--platform | --p | -p <name_or_folder>(e.g.,n64or "Nintendo 64").--search | --s | -s <text>: filter by substring in game title.
Examples:
python rgsx_cli.py games --platform n64
python rgsx_cli.py g --p "Nintendo 64" --s zelda
python rgsx_cli.py g -p n64 --verbose
Notes:
- The platform is resolved by display name (platform_name) or folder, case-insensitively.
3) download (download / dl) — download a game
- Options:
--platform | --p | -p <name_or_folder>--game | --g | -g "<exact or partial title>"--force | -f: ignore unsupported-extension warning for the platform.--interactive | -i: prompt to choose from matches when no exact title is found.
Examples:
# Exact title
python rgsx_cli.py dl --p n64 --g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip"
# Partial match (interactive numbered selection if no exact match)
python rgsx_cli.py dl -p n64 -g "Ocarina of Time (Beta)"
# Forced despite extension
python rgsx_cli.py dl -p snes -g "pack_roms.rar" -f
# Verbose after subcommand
python rgsx_cli.py dl -p n64 -g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip" --verbose
During download, progress %, size (MB) and speed (MB/s) are shown. The final result is also written to history.
Notes:
- ROMs are saved into the corresponding platform directory (e.g.,
R:\roms\n64). - If the file is an archive (zip/rar) and the platform doesn’t support that extension, a warning is shown (you can use
--force).
4) history — show history
- Options:
--tail <N>: last N entries (default: 50)--json: JSON output
Examples:
python rgsx_cli.py history
python rgsx_cli.py history --tail 20
python rgsx_cli.py history --json
5) clear-history (clear-history / clear) — clear history
Example:
python rgsx_cli.py clear
Global option: --force-update — purge + re-download data
- Removes
systems_list.json, thegames/andimages/folders, then downloads/extracts the data pack again.
Examples:
# Without subcommand: purge + re-download then exit
python rgsx_cli.py --force-update
# Placed after a subcommand (also accepted)
python rgsx_cli.py p --force-update
Behavior and tips
- Platform resolution: by display name or folder, case-insensitive. For
gamesanddownload, if no exact match is found a search-like suggestion list is shown. --verboselogs: most useful during downloads/extraction; printed at DEBUG level.- Missing data download: automatic, with consistent progress (download then extraction).
- Exit codes (indicative):
0: success1: download failure/generic error2: platform not found3: game not found4: unsupported extension (without--force)
Quick examples (copy/paste)
# Start interactive shell
python rgsx_cli.py
# List platforms (text)
python rgsx_cli.py p
# List platforms (JSON)
python rgsx_cli.py p --json
# List N64 games with filter (using alias synonyms)
python rgsx_cli.py g --p n64 --s zelda
# Download an N64 game (exact title) using aliases
python rgsx_cli.py dl --p n64 --g "Legend of Zelda, The - Ocarina of Time (USA) (Beta).zip"
# Download with approximate title (suggestions + interactive pick)
python rgsx_cli.py dl -p n64 -g "Ocarina of Time"
# View last 20 history entries
python rgsx_cli.py history --tail 20
# Purge and refresh data pack
python rgsx_cli.py --force-update