Skip to content
RompEmuPublic

Repository files navigation

RomP

Latest release Nightly build CI

Platforms: macOS, Windows and Linux Needs RomM 5.0 or newer License: GPL-3.0-or-later Translation progress on Crowdin

Play retro games from your RomM library, with each game running in its own sandboxed process.

rompemu.github.io

Download the latest release or the nightly build for macOS, Windows and Linux. On Linux, pick the AppImage, or the .deb (Debian, Ubuntu) or .rpm (Fedora, openSUSE) to install it with the system's other software. On a Mac you can also install it with Homebrew: brew install --cask rompemu/tap/romp. The macOS download of each release is signed and notarized by Apple. Nightly macOS builds aren't: the first time, right-click RomP and choose Open. Windows builds aren't signed yet: the first time, choose More info, then Run anyway.

The RomP library, showing Amiga games

Game page Playing Nintendo DS
A game's page with its details and cover A game running in its own window A Nintendo DS game with its two screens in separate windows

Features

  • Your RomM library: platforms, favorites, collections, recently played, now playing and backlog, with search, sorting, a Surprise me button for a random game, and box art shaped like each console's.
  • One click to play: RomP installs the right emulator and BIOS files. Downloaded games play offline.
  • Saves that follow you: in-game saves and save states sync with RomM before and after you play. If both sides changed, you choose which to keep.
  • Sandboxed emulators: emulators are native code downloaded from the internet, and games are files from anywhere. Each game runs in its own locked-down process that can only write to that game's saves and its own temporary files, so a buggy or malicious emulator or ROM can't touch your other files or take RomP down with it. xemu and RPCS3 run outside the sandbox.
  • RetroAchievements: earn achievements as you play, with popups, leaderboards, and an achievement list in the game menu and on each game's page. Hardcore mode comes once RetroAchievements approves RomP, which it considers after an emulator has been public for six months. Only the app talks to RetroAchievements, never the sandboxed emulator.
  • Many systems: from the Atari 2600 to the PS3 and original Xbox, plus arcade and home computers. See supported systems.
  • Controllers and multiplayer: gamepads join as the next player, rumble when the game does, any key or button can be remapped, and the whole app works with a controller.
  • Light guns, mice and keyboards: for the systems that use them.
  • In-game menu: pause, restart, save slots, changing discs, volume and full screen, from the Guide button or Esc.
  • Two-screen Nintendo DS: a window per screen, with the mouse as the touch pen.
  • Picks up where you left off: the last console, game and scroll position, and the size and position of every window.
  • Interface sizes: 1x, 1.5x or 2x.

Supported systems

RomP downloads the emulator for each system the first time you play one of its games.

System Emulator
Arcade, including Neo Geo and CPS 1–3 FinalBurn Neo
Amstrad CPC Caprice32
Atari 2600 Stella
Atari 5200 a5200
Atari 7800 ProSystem
Atari 8-bit computers and XEGS Atari800
Atari Jaguar and Jaguar CD Virtual Jaguar
Atari Lynx Beetle Lynx
Atari ST Hatari
Bandai WonderSwan and WonderSwan Color Beetle WonderSwan
ColecoVision Gearcoleco
Commodore 64 VICE x64sc
Commodore 128 VICE x128
Commodore VIC-20 VICE xvic
Commodore Plus/4 and 16 VICE xplus4
Commodore Amiga, Amiga CD32 and CDTV PUAE
DOS DOSBox Pure
Fairchild Channel F FreeChaF
Intellivision FreeIntv
Magnavox Odyssey 2 O2EM
Mega Duck / Cougar Boy SameDuck
MSX, MSX2 and MSX2+ blueMSX
NEC PC Engine / TurboGrafx-16 Beetle PCE Fast
NEC PC Engine CD / TurboGrafx-CD Beetle PCE
NEC SuperGrafx Beetle SuperGrafx
NEC PC-FX Beetle PC-FX
Nintendo Entertainment System, Famicom and Famicom Disk System Nestopia UE
Super Nintendo and Super Famicom Snes9x
Nintendo 64 Mupen64Plus-Next
Game Boy, Game Boy Color and Game Boy Advance mGBA
Nintendo DS melonDS DS
Nintendo GameCube and Wii Dolphin
Nintendo Virtual Boy Beetle VB
Nintendo Game & Watch Game & Watch
Nintendo Pokémon Mini PokeMini
Philips CD-i SAME CDi
3DO Opera
Sega Master System, Genesis / Mega Drive, Game Gear, Sega CD and SG-1000 Genesis Plus GX
Sega 32X PicoDrive
Sega Saturn Beetle Saturn
Sega Dreamcast Flycast
SNK Neo Geo CD NeoCD
SNK Neo Geo Pocket and Pocket Color Beetle NeoPop
Sony PlayStation Beetle PSX HW
Sony PlayStation 2 PCSX2 on Windows and Linux, ARMSX2 on macOS
Sony PlayStation 3 RPCS3
Sony PSP PPSSPP
PICO-8 FAKE-08
TIC-80 TIC-80
Vectrex Vecx
Watara Supervision Potator
Microsoft Xbox xemu
ZX Spectrum Fuse

All emulators except xemu and RPCS3 are libretro cores. ARMSX2 and FAKE-08 aren't built by libretro, so RomP downloads them from RompEmu's own forks, which build them for each platform. Dolphin, PPSSPP, Flycast, Beetle PSX HW, Mupen64Plus-Next and the PS2 emulators draw through Vulkan when the computer has a working Vulkan driver, and through OpenGL otherwise. On macOS, Vulkan comes from the bundled MoltenVK. Some systems need BIOS files, which RomP takes from your RomM server's firmware. PS3 games need the PS3 system software (PS3UPDAT.PUP) in RomM's PS3 firmware, and play from a game folder or an ISO, or a zip or 7z of one.

Running

Requires rustup and CMake.

cargo build --release
./target/release/romp

make dist packages the app into dist/: RomP.app and a zip on macOS, a zip on Windows, an AppImage, a .deb, an .rpm and a tarball on Linux (Make downloads a pinned appimagetool and nfpm and checks them). On Windows, run it from Git Bash with Make and 7-Zip installed.

make check runs the same checks as CI: formatting, Clippy, tests, cargo-deny, cargo-machete, typos, actionlint and zizmor.

romp --core <core library> --rom <file> plays a file without a RomM server, which helps when testing. ROMP_PLATFORM=snes (or any RomM platform name) gives it that console's look. With --smoke <folder> it plays briefly as a check, saving a frame there, and exits with an error if the game doesn't play; the Smoke test workflow runs this on each packaged build before a release.

make update-rcheevos replaces the bundled rcheevos with its latest release, or a given one with RCHEEVOS=v12.5.0.

Enter your RomM server address (RomM 5.0 or newer). Approve RomP in RomM by scanning the code or opening the link.

Open a game from your library to download and play it. RomP installs the emulator core it needs, and fetches BIOS files from your server's firmware. Downloaded games stay playable when the server is offline.

In-game saves and save states sync with RomM before and after you play, so you can continue on another device. If a save changed in both places, RomP asks which to keep and backs up the other.

Controls

  • Gamepads are picked up automatically: the first one joins the keyboard as player 1, and each new one becomes the next player.
  • Change players or remap any key or button in Settings → Players.
  • The Guide button, or Select and Start together, opens the game menu.
  • In Amiga, DOS, C64 and ZX Spectrum games the keyboard types into the game and F12 opens the menu. Click in the game to use your mouse; F12 releases it.
  • Accessories such as the SNES Mouse, Super Scope, Zapper or GunCon are chosen per port in the game menu. A light gun aims where you point and fires with the left button; the right button reloads.

Default keyboard layout:

Key Action
Arrow keys D-pad
X, Z, S, A A, B, X, Y
Q, W, D, F L, R, L2, R2
Enter, Backspace Start, Select
F5, F7 Save, load state
F6 Next save slot
P Pause
F11 Full screen
F12 Screenshot
Esc Game menu

Every key except Esc can be changed in Settings → Players, and shortcuts can be combinations such as Ctrl+S.

Your games, saves and library cache are stored in ~/Library/Application Support/Romp on macOS, %LOCALAPPDATA%\Romp on Windows and ~/.local/share/Romp on Linux. Its logs folder holds a log of each of the last five launches; About RomP → Show log opens it.

Free, with no catches

RomP is free and always will be: no paid features, subscriptions, ads, tracking or accounts of its own. Every build has every feature. PRIVACY.md lists what RomP sends and where, and the Licenses tab under About RomP lists every emulator it downloads with its license.

Translations

RomP is translated by the people who use it, on Crowdin. You don't need to know any programming, and a free Crowdin account is enough:

  1. Open the RomP project on Crowdin and choose your language.
  2. Translate strings, or vote for the best suggestions others made.
  3. New translations reach the app within a day and ship in the next release.

RomP is being translated into French, Spanish, German and Arabic so far. To add another language, open an issue.

A few things to keep in mind:

  • Keep placeholders such as {name} or {0} exactly as they are. You can move them anywhere in the sentence.
  • Leave names as they are: RomP, RomM, RetroAchievements and console names.
  • To see your language in RomP, choose it in Settings → General → Language. RomP follows your system's language once it has translations for it.

License

RomP is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or (at your option) any later version.

Releases

Packages

Used by

Contributors

Languages