R-Shop is a retro game manager with a console-style UI. It organizes, downloads, and manages ROM files from your own servers and network shares, with full gamepad and keyboard support.
R-Shop is not an emulator. It is a file management tool for browsing, downloading, and organizing game files. To play games, use a separate emulator such as RetroArch, Dolphin, PPSSPP, or any other emulator of your choice.
Legal Notice: R-Shop does not host, distribute, or link to copyrighted game files. Users are responsible for providing their own legally obtained files. Supported sources include personal backups of owned cartridges and discs, homebrew games, public domain ROMs, and legally purchased digital copies.
- Getting Started
- Home Screen
- Browsing Games
- Game Detail
- Library
- RetroAchievements
- Provider Setup Guide
- Downloads
- Settings Reference
- Controls Reference
- Supported Systems
- Troubleshooting & FAQ
- Legal Notice
On first launch, R-Shop walks you through a 7-step onboarding process to configure your game sources.
A greeting from the app mascot. Press A to continue.
You must acknowledge that you are responsible for owning legal copies of any game files you manage with R-Shop.
If you run a RomM server on your network, you can connect it here:
- Enter your RomM server URL (e.g.
http://192.168.1.100:8080) - Provide authentication: API key or username/password
- Press Y to test the connection
- Select which platforms to import from the server
- Choose a local folder where ROM files will be stored
If you don't use RomM, select "No" to skip this step and proceed to Local Setup instead.
If you skipped RomM, this step helps you set up local ROM folders:
- Auto-detect: R-Shop scans for existing ROM directories on your device
- Create folders: Generate a standard folder structure for all supported systems
- Pick folder: Manually select an existing folder to scan
Detected folders are automatically matched to systems. You can toggle systems on or off, and manually assign any unmatched folders.
The main configuration screen. A grid displays all supported systems. For each console you can:
- Set a target folder where ROM files will be stored
- Toggle auto-extract for archive files
- Toggle merge mode to combine results from multiple providers
- Toggle auto-sync on app launch to control whether this system syncs automatically (respects the cooldown setting) or only manually via the quick menu
- Add providers (Web, SMB, FTP, or RomM) with connection details
Press Y to add a new provider, then fill in the type-specific fields and test the connection. You can add multiple providers per console and reorder their priority.
At least one console must be configured before you can proceed.
If you have a RetroAchievements account, you can connect it to track achievement progress and verify your ROMs:
- Select "Yes, connect my account" (or "No, skip" to proceed without RA)
- Enter your RA username
- Enter your API key (found at retroachievements.org/controlpanel.php)
- Press Y to test the connection
On success, R-Shop will sync achievement data for supported systems in the background. You can always set this up later in Settings.
A summary of your configured consoles. Press Select to export your configuration as a JSON backup file, then press A to enter the app.
You can always reconfigure consoles and providers later from Settings.
The home screen displays your configured systems.
Swipe or use the D-pad to scroll through system cards. Each card shows the console name, manufacturer, and release year. Press A to enter a system.
Toggle via Settings. Systems display in a grid layout. Adjust columns with L1 (more columns) and R1 (fewer columns).
A special card appears between your systems, providing access to the cross-system Library browser.
A pulsing indicator in the top-left corner appears when downloads are active.
Press Start to open the quick menu with options for:
- Search — jump to game search
- Sync [System Name] — sync the currently selected system (shows last sync time as subtitle; only shown when a system is selected)
- Sync All — force a full sync of all configured systems regardless of cooldown (shown when multiple systems are configured)
- Settings — open app settings
- Downloads — view download queue (shown when queue has items)
Press B on the home screen to show an exit confirmation dialog.
Selecting a system from the home screen opens the game list.
Games display as a grid of cover art. Adjust columns with L1 (more, 3-8 range) and R1 (fewer). The header shows the system logo, total game count, a local-only indicator (if no remote providers), and the target folder path.
The background dynamically shows the selected game's cover art, tinted with the system's color.
Press Y to open the search overlay. Type to filter games in real time by name. Press Down or B to exit search and return to the grid.
Press X to cycle through filter options:
- Region — show only games from selected regions (OR logic)
- Language — show only games in selected languages (OR logic)
- Favorites Only — show only games you have favorited
- Local Only — show only games installed on your device
Games with no region or language metadata pass through those filters. Your filter choices are saved per system.
Games with the same name but different versions (e.g. USA, Europe, Japan) are grouped together. Selecting a group opens the Game Detail screen where you can pick a specific variant.
The detail screen shows a game's cover art, title, system badge, and — for RomM sources — rich metadata including genre, developer, release year, and summary in an "About This Game" card.
When a game has IGDB metadata (available via RomM), a glassmorphic info card displays genre pills, developer, release year, and a short summary. Open the full description from the quick menu (Start > Description).
If multiple versions of a game exist (different regions, languages, or releases), pressing A opens a variant picker overlay listing all versions with their region, language, format, and install status. Navigate with D-pad up/down, press A to download or delete a specific variant, press B to close.
If the game has a RetroAchievements match, an info section appears below the metadata showing the match type (name match or hash verified), achievement count, and your progress. Press Start and select "Achievements" from the quick menu to open the full achievements screen.
| Action | Button | Condition |
|---|---|---|
| Download | A | Single variant, not installed |
| Delete | A | Single variant, installed |
| Pick Version | A | Multiple variants |
| Favorite | Select | Toggle anytime |
| Add/Remove Shelf | Select menu or Start menu | Add to or remove from custom shelves |
| Quick Menu | Start | Tags, Description, Filename, Achievements, Download sources, Shelf management |
Pressing A on an uninstalled single-variant game adds it to the download queue. For multi-variant games, A opens the variant picker where you can download individual versions.
Pressing A on an installed single-variant game opens a confirmation dialog. The dialog defaults to Cancel to prevent accidental deletion. For multi-variant games, select a variant in the picker and press A to delete it.
The Library provides a cross-system view of all your games. Access it from the Library card on the home screen.
Switch tabs with L2 (left) and R2 (right):
| Tab | Contents |
|---|---|
| All | Every game in your database |
| Installed | Only games with local files |
| Favorites | Games you have favorited |
Press X to cycle between sort modes:
- Alphabetical — A to Z by display name
- By System — grouped by console, then alphabetical
Press Y to open the search bar. Type to filter by game name in real time.
Navigate the game grid with the D-pad. Adjust columns with L1/R1 (range: 3-8). Press A to open a game's detail screen.
R-Shop integrates with RetroAchievements to display achievement data, verify ROMs, and track your progress.
Connect your RA account during onboarding or later via Settings > RetroAchievements. You need your username and API key (found at retroachievements.org/controlpanel.php).
After connecting, R-Shop runs a background sync in three phases:
- Catalog fetch — downloads the RA game catalog for each supported system (cached for 24 hours)
- Name matching — matches your local games to RA entries by title (exact, contains, No-Intro filename, or fuzzy matching)
- Hash verification — computes ROM hashes for installed games and verifies them against the RA database
When you download a new ROM, it is automatically hashed and matched after the download completes.
Games with RA matches display a badge on their card:
| Badge Color | Meaning |
|---|---|
| Gold | Name-matched (title matched, ROM not yet hash-verified) |
| Green | Hash-verified (ROM confirmed via MD5 hash) |
| Green outline | Mastered (all achievements earned) |
The badge shows the number of achievements available for the game.
Open the achievements screen from a game's detail view via the quick menu (Start > Achievements). The screen shows:
- Game icon and title with completion percentage
- Progress bar (earned / total achievements)
- "MASTERED" label when all achievements are earned
- Full achievement list with badge icons, descriptions, point values, and earn dates
- Navigate with D-pad up/down, press B to go back
RetroAchievements data is available for: NES, SNES, N64, Game Boy, Game Boy Color, Game Boy Advance, NDS, Mega Drive, Master System, Game Gear, Sega 32X, Atari 2600, Atari 7800, and Atari Lynx.
The RA config screen (Settings > RetroAchievements) provides:
| Action | Description |
|---|---|
| Test Connection (Y) | Verify credentials against the RA API |
| Enable/Disable | Toggle RA data display on game cards |
| Refresh Database | Force a full RA catalog re-sync |
| Clear Cache | Remove all cached RA data |
| Save (Start) | Persist credential changes |
| Clear (X) | Reset all fields |
Providers are the sources R-Shop fetches game files from. Each console can have multiple providers. Configure them during onboarding or later via Settings > Edit Consoles.
An HTTP server with directory listing enabled.
Configuration:
| Field | Required | Description |
|---|---|---|
| URL | Yes | Base URL of the server |
| Path | No | Subdirectory within the URL |
| Username | No | HTTP Basic Auth username |
| Password | No | HTTP Basic Auth password |
Example: http://192.168.1.100/roms/nes/
Requirements: The server must serve an HTML page with directory listing (clickable file links). Works with nginx autoindex, Apache directory listing, and simple HTTP file servers.
A Windows or Samba file share on your local network.
Configuration:
| Field | Required | Description |
|---|---|---|
| Host | Yes | Server IP or hostname |
| Share | Yes | Share name |
| Path | No | Subdirectory within the share |
| Username | No | Defaults to guest |
| Password | No | Defaults to empty |
| Domain | No | Windows domain |
Example: Host 192.168.1.50, Share games, Path NES
Note: SMB always uses port 445. If no credentials are provided, guest access is attempted.
A standard FTP server.
Configuration:
| Field | Required | Description |
|---|---|---|
| Host | Yes | Server IP or hostname |
| Port | No | Defaults to 21 |
| Path | No | Remote directory (defaults to /) |
| Username | No | Defaults to anonymous |
| Password | No | Defaults to empty |
Example: Host 192.168.1.100, Port 21, Path /roms/snes
Note: Anonymous login is used when no credentials are provided. Connection timeout is 30 seconds. Directory listing operations allow up to 60 seconds.
Integration with a self-hosted RomM game library server.
Configuration:
| Field | Required | Description |
|---|---|---|
| Server URL | Yes | Your RomM instance URL |
| API Key | No* | Bearer token for API access |
| Username | No* | Basic auth username |
| Password | No* | Basic auth password |
*Provide either an API key or username/password for authentication.
Example: URL https://192.168.1.100:8080, API key your-api-key
Benefits: RomM provides organized metadata, cover art, and a structured library. Requires a running RomM instance on your network.
Each console can have multiple providers with a priority order (lower number = tried first).
Failover (default): Providers are tried in priority order. The first successful connection provides the game list.
Merge Mode: Results from all providers are combined and deduplicated by filename. Useful when different servers host different regions or versions.
R-Shop uses a queue system for managing file downloads.
| Property | Value |
|---|---|
| Concurrent downloads | Up to 3 (default: 2, configurable in Settings) |
| Auto-retry | Up to 3 attempts per file |
| Retry backoff | 5s, 15s, 45s (with random jitter up to 3s) |
| Non-retryable errors | 404 Not Found, SSL errors |
| Progress updates | Every 500ms with speed (KB/s) and percentage |
| Inactivity timeout | 60 seconds of no data received |
| HTTP timeouts | 30s connection, 5 min idle |
| FTP timeouts | 30s connection, 60s directory listing |
| SMB timeout | 30s connection |
The download queue survives app restarts. Active downloads resume from the queue on next launch.
ZIP files are extracted automatically when the system has auto-extract enabled. Multi-file games (e.g. PlayStation .bin/.cue pairs) are extracted into subfolders, preserving the file structure.
Multi-file games (bin/cue pairs) can also be downloaded as complete folders directly via SMB and FTP providers, without needing archives.
7z archives are moved directly without extraction.
There is no pause/resume for individual downloads. Cancelling a download means it must restart from the beginning.
A pulsing badge on the home screen indicates active downloads. The quick menu (Start) shows a Downloads option when the queue has items.
Open Settings from the quick menu (Start) on the home screen.
| Setting | Values | Default | Description |
|---|---|---|---|
| Home Screen Layout | Carousel / Grid | Carousel | Display mode for the home screen |
| Controller Layout | Nintendo / Xbox / PlayStation | Nintendo | Button label and mapping scheme |
| Haptic Feedback | On / Off | On | Vibration on button presses |
| Sound Effects | On / Off | On | Audio feedback for UI actions |
| Hide Empty Consoles | On / Off | Off | Hide systems with no games from the home screen |
| Setting | Values | Default | Description |
|---|---|---|---|
| Sync Timeout | 1 min / 2 min / 5 min / 10 min | 2 min | Maximum time to wait for a single system sync |
| Auto-Sync Cooldown | Always / 15 min / 30 min / 1 hour / 2 hours / 6 hours | 1 hour | Minimum interval between automatic re-syncs per system; "Always" syncs on every launch |
| Setting | Range | Default | Description |
|---|---|---|---|
| Background Music | 0–100% | 30% | Ambient BGM volume |
| SFX Volume | 0–100% | 70% | Interface sound effects volume |
Adjust audio sliders with left/right on the D-pad (steps of 5%).
| Setting | Range | Default | Description |
|---|---|---|---|
| Max Concurrent Downloads | 1–3 | 2 | Number of simultaneous downloads |
| Setting | Description |
|---|---|
| RomM Server | Configure global RomM server URL and authentication |
| Setting | Description |
|---|---|
| Edit Consoles | Add, remove, or reconfigure console systems and providers |
| Scan Library | Rescan all console folders to discover games |
| Search Game Covers | Batch-generate thumbnails for all games |
| RetroAchievements | Configure RA credentials, test connection, sync database, and clear cache |
| Export Error Log | Share the crash log file for bug reporting (only visible when log contains data) |
| Reset Application | Factory reset: clears all settings, database, and cache |
| Element | Description |
|---|---|
| GitHub | Opens the R-Shop GitHub repository in the browser |
| Issues | Opens the GitHub issues page to report bugs or request features |
R-Shop supports gamepad controllers and keyboard input. The controller layout can be changed in Settings.
| Button | Action |
|---|---|
| A | Confirm / Select |
| B | Back / Cancel |
| X | Info / Filters / Toggle |
| Y | Search / Tags |
| D-pad | Navigate |
| L / L1 | Zoom out (more columns) |
| R / R1 | Zoom in (fewer columns) |
| ZL / L2 | Tab left (Library) |
| ZR / R2 | Favorite (alternate) |
| Start / + | Quick Menu |
| Select / - | Favorite / Export config |
The Xbox layout swaps confirm/back and info/search compared to Nintendo:
| Button | Action |
|---|---|
| B (bottom) | Confirm / Select |
| A (right) | Back / Cancel |
| Y (top) | Info / Filters / Toggle |
| X (left) | Search / Tags |
| D-pad | Navigate |
| LB / RB | Zoom / Tab |
| LT / RT | Tab / Favorite |
| Start / + | Quick Menu |
| Select / - | Favorite / Export config |
The PlayStation layout uses symbol buttons:
| Button | Action |
|---|---|
| Circle | Confirm / Select |
| Cross | Back / Cancel |
| Triangle | Info / Filters / Toggle |
| Square | Search / Tags |
| D-pad | Navigate |
| L1 / R1 | Zoom / Tab |
| L2 / R2 | Tab / Favorite |
| Start / + | Quick Menu |
| Select / - | Favorite / Export config |
| Key | Action |
|---|---|
| Arrow Keys | Navigate |
| Enter / Space | Confirm / Select |
| Escape / Backspace | Back / Cancel |
| PageUp | Zoom out (more columns) |
| PageDown | Zoom in (fewer columns) |
| I | Search |
| F | Favorite |
| [ | Tab left |
| ] | Tab right |
Home Screen: L1/R1 adjust grid columns. Y opens Library. X opens Settings. B shows exit dialog.
Game List: Y opens search. X toggles filters. L1/R1 adjust columns.
Game Detail: A downloads, deletes, or opens variant picker (multi-version). Select favorites. Start opens quick menu with Tags, Description, Filename toggle, and Achievements.
Library: L2/R2 switch tabs. X cycles sort mode. Y opens search. L1/R1 adjust columns.
Settings: Left/right adjusts sliders and toggles. A confirms selections.
R-Shop supports 29 systems across 5 manufacturers. All systems support archive formats (.zip, .7z, .rar) in addition to their native ROM extensions.
| System | ID | Year | ROM Extensions |
|---|---|---|---|
| Nintendo Entertainment System | nes |
1983 | .nes |
| Game Boy | gb |
1989 | .gb |
| Super Nintendo | snes |
1990 | .sfc, .smc |
| Nintendo 64 | n64 |
1996 | .z64, .n64, .v64 |
| Game Boy Color | gbc |
1998 | .gbc, .gb |
| Game Boy Advance | gba |
2001 | .gba |
| Nintendo GameCube | gc |
2001 | .rvz, .iso, .gcm, .ciso |
| Nintendo DS | nds |
2004 | .nds |
| Nintendo Wii | wii |
2006 | .rvz, .wbfs, .iso, .wia, .ciso |
| Nintendo 3DS | n3ds |
2011 | .3ds, .cia |
| Nintendo Wii U | wiiu |
2012 | .wua, .wud, .wux, .rpx |
| Nintendo Switch | switch |
2017 | .nsp, .xci |
| System | ID | Year | ROM Extensions |
|---|---|---|---|
| PlayStation | psx |
1994 | .chd, .pbp, .cue, .iso, .img |
| PlayStation 2 | ps2 |
2000 | .iso, .chd, .cso |
| PlayStation Portable | psp |
2004 | .iso, .cso, .pbp, .chd |
| PlayStation 3 | ps3 |
2006 | .iso, .pkg |
| PlayStation Vita | psvita |
2011 | .vpk |
Multi-file systems: PlayStation and PlayStation 2 support .bin + .cue pairs. When downloading archives containing multiple .bin files, R-Shop extracts them into a subfolder preserving the file structure.
| System | ID | Year | ROM Extensions |
|---|---|---|---|
| Master System | mastersystem |
1985 | .sms |
| Mega Drive | megadrive |
1988 | .md, .gen, .bin, .smd |
| Game Gear | gamegear |
1990 | .gg |
| Sega CD | segacd |
1991 | .chd, .cue, .iso |
| Sega 32X | sega32x |
1994 | .32x |
| Saturn | saturn |
1994 | .chd, .cue, .iso |
| Dreamcast | dreamcast |
1998 | .chd, .cdi, .gdi |
Sega CD and Saturn also support .bin + .cue multi-file pairs.
| System | ID | Year | ROM Extensions |
|---|---|---|---|
| Atari 2600 | atari2600 |
1977 | .a26, .bin |
| Atari 5200 | atari5200 |
1982 | .a52, .bin |
| Atari 7800 | atari7800 |
1986 | .a78, .bin |
| Atari Lynx | lynx |
1989 | .lnx |
| System | ID | Year | ROM Extensions |
|---|---|---|---|
| PICO-8 | pico8 |
2015 | .p8 |
- Verify the provider URL or path is correct and accessible
- Check that the server has directory listing enabled (Web provider)
- Confirm the files have extensions matching the system (see Supported Systems)
- Check your target folder path is set correctly
- Check your network connection
- Downloads retry up to 3 times with increasing delays (5s, 15s, 45s)
- Failed URLs are cached for 5 minutes before retrying — wait or restart the app
- A download stalls after 60 seconds of no data received
- Verify the host IP, share name, and credentials
- Ensure port 445 is open and not blocked by a firewall
- Try with explicit username/password instead of guest access
- Verify the server URL is correct and reachable
- Test the connection in the provider setup (press Y)
- Check that your API key or credentials are valid
- Ensure the RomM server has platforms configured
- Check that file extensions match the system's supported formats
- Verify the target folder path is correct
- For archive files, ensure they contain files with valid ROM extensions
- Check that Sound Effects is enabled in Settings
- Verify BGM Volume and SFX Volume sliders are above 0%
- Audio initialization may fail silently on some devices — try restarting the app
Go to Settings, then select Reset Application from the System section. This clears all settings, database entries, and cached data.
During onboarding (Step 6: Complete), press Select to export your configuration as a JSON file. This backup can be used to restore settings on another device.
R-Shop does not host, distribute, or link to copyrighted game files. The application is a file management tool that connects to user-configured servers and network shares.
Users must provide their own legally obtained game files. Supported sources include:
- Personal backups of cartridges and discs you own
- Homebrew games created by independent developers
- Public domain ROMs
- Legally purchased digital copies
The developers of R-Shop are not responsible for how users choose to use this software.