Skip to content

romi v0.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 00:56
· 45 commits to main since this release

Playing games in your terminal stops being an experiment in this release. A now plays a game inside romi by default, the DS, GameCube, Wii and PS2 join the systems that can, and you no longer need RetroArch: romi only needs the libretro core. The README lists all 25 systems and the core each one uses.

Highlights

  • More systems in romi. New since 0.4.0: DS (touch the screen with the mouse), GameCube, Wii (played with a Wii Remote and Nunchuk on your pad) and PS2.
  • PS2 through LRPS2, PCSX2's libretro core, which you add yourself. Play! is the fallback if it's all you have, but it runs far fewer games and isn't recommended. Two LRPS2 bugs still show on the nightly (Burnout 3's races and ATV Offroad Fury 2 when upscaled); fixes are written but haven't landed there yet.
  • A plays in romi. A (or Enter) plays a game in romi when it can, and Play with in the game's menu starts its emulator. Options → A plays turns that round.
  • No RetroArch needed. romi init and romi check now count a core on its own, so the libretro-* packages or libretro's nightly builds are enough. If you do have RetroArch, romi still uses its cores, BIOS folder, options and remaps, and saves carry on in either.
  • Controls. Remap a game's buttons, or its system's, from its menu. RetroArch's remaps are followed, and each controller gets a player of its own.
  • More from RetroAchievements. Progress towards achievements that count up, challenges under way, badges and rich presence all show while you play. PS2 games earn them too (.iso and .cue, not .chd yet), and unlocks the server hasn't taken are kept and sent later. GameCube and Wii discs are now matched, but an unlock hasn't been seen live on them yet. Unlocks are still softcore.
  • Your own covers. Drag an image onto the terminal from Add art… in a game's menu.
  • A better first run. romi init finds games in wrapper folders and folders with spaces in their names. Without ES-DE, it now knows NES, PSP, Lynx, Atari 7800, Game Gear, Master System and Wii.
  • Core options in romi's config. "core_options" sets them for a system or a game, without touching RetroArch's files.
  • A logo, by Andrea Reyes.

Fixes

  • bsnes-hd leaked 230 MB with each game played. It now stays loaded between games.
  • Mesen, the NES core, crashed as it started. Cores are now initialized before they're given callbacks, as RetroArch does.
  • Ape Escape gets the DualShock it needs.
  • Long system names are shortened so the game count stays visible.
  • Shared memory left behind by killed runs is swept up.

Still missing: save states, rewind, hardcore achievements and Vulkan renderers. 3D has only been tested on one laptop so far (a Radeon 890M with Mesa, and an RTX 4060 for PS2), so reports from other GPUs are welcome.

Install

New: romi is on crates.io. With Rust, a C compiler and the headers for udev and ALSA:

cargo install --locked romi

Prebuilt binaries for x86_64 and aarch64 Linux are below. They run on glibc 2.35 and newer (Ubuntu 22.04, Debian 12, Fedora 36 and later). They need libudev and ALSA's libasound, which nearly every desktop already has, and libEGL for 3D games.

tar -xzf romi-v0.5.0-x86_64-linux.tar.gz
install -Dm755 romi-v0.5.0-x86_64-linux/romi ~/.local/bin/romi

On Arch, build the package with makepkg -si in packaging/arch. There's also an edge build of main, rebuilt after every change that passes the tests.

Full changelog: v0.4.0...v0.5.0