Skip to content
Menu
WorkflowSkills, tmux and the daily loopToolsai-usagebarQuota and reset times for 24 AI providersghpendingEvery open PR and issue in one listtclockA terminal clock with command widgetsFrank projectsExperiments that scratch my own itchesai-memoryLong-term memory for coding agentsai-jailAn OS sandbox for AI coding agentsLearnCompetent Enough, the bookAGI, jobs and learning without fear or hypeWhy AGI doesn't matterAn opinion, with sourcesThe limits of LLMsWhat AI can copy, and what it can'tAI and studentsWhy foundations matter more than everBlog & benchmarkThe blog and the LLM benchmarkNewsletterThe M.Akita Chronicles, every MondayPodcastsLong conversations about AI, on videoGamesMy game collection as code, on OmarchySetupOmarchy, tmux, and what I set asideFollow
After hours

Not everything is work. Even I need to play.

And my idea of relaxing is, of course, turning my game collection into a software project. Steam games, emulators, PC ports, decompilations, fan games and mod packs, all installed, configured and documented by AI agents in one Ansible repository. It runs inside a container, so my Omarchy desktop never sees a single one of their dependencies. On top sits a launcher I wrote, so the whole thing feels like a console.

Fun to Drive: the new Tesla Roadster in an 80s arcade racer

A small game I vibe coded with AI agents. The newly announced Tesla Roadster, cold-air thruster and jump kick included, races down an Outrun-style road on the screen of an 80s toy dashboard, like the Playmates Fun-to-Drive and Tectoy's Turbo Video Driver.

A full playthrough, with the game's own music.
  • Pick a two, six or ten minute run and pass as much traffic as you can before time runs out. Each run starts in the season and time of day of your own clock.
  • Collect three cold-air charges to fire the thruster, and Jump Kicks to leap over traffic, unless you land on it.
  • The toy reacts on the desk: the wheel turns, the gear lever moves, and the whole dashboard jolts when you crash.
  • Clear skies, rain and snow, seasonal scenery from sakura to bare winter trees, and backdrops from Tokyo neon to Paris. Watch for the rare ones: a hurricane that lifts traffic, a UFO abduction at night and, if you hold 88 mph, a time machine.
  • Play with a keyboard, a gamepad with rumble, or touch. It runs in the browser, written in Rust with Bevy and compiled to WebAssembly.

Old racing games, playable again

Some of my favorite racing games are abandonware: no store sells them, and they won't run on a modern PC without an afternoon of hacks. So I wrote a launcher for each one, with coding agents and my reverse engineering tool, REA. The original game stays untouched. The launcher fixes what aged around it, like graphics, controls, screen and Registry, then adds what a modern PC can do.

You need your own copy of each game. No launcher ships game files.

  1. Screamer on a modern PC: a red sports car racing down a city street, with the original lap counter and speedometer.1995

    Screamer trilogy

    Before Three MS-DOS games. GOG's Screamer 2 ships a Windows Glide stub that doesn't work in DOS, and at full emulator speed the analog controls never register.

    • Real 3dfx Glide, with the emulated Voodoo drawing at twice the resolution
    • FSR upscaling, Hor+ widescreen and a longer draw distance
    • Analog controls and CD music
    • Experimental frame generation at 100 fps
  2. Colin McRae Rally from 1998 in widescreen: the blue Subaru on a dry gravel stage.1998

    Colin McRae Rally

    Before Made for Windows 95. On my machine it took Registry keys, XP compatibility mode, a screen locked at 800x600 and a keyboard bridge for the gamepad, and it still ran at 800x600 in 4:3.

    • 4K, Hor+ widescreen and 60 fps, with the original 25 Hz physics
    • HD art redrawn with AI for the HUD, menus, skies, signs and cars
    • Up to three times the draw distance
    • Triggers as pedals, and rumble
  3. Colin McRae Rally 3 in widescreen: the Ford Focus on a forest stage.2003

    Colin McRae Rally 3

    Before A washed-out picture, and an official 1.1 executable tied to disc copy protection.

    • SilentPatch widescreen at any aspect ratio, with an HD interface in 4K
    • Converts the 1.1 executable into the re-releases' DRM-free one
    • Anisotropic filtering up to 16x and an adjustable field of view
    • An optional color and gamma fix on Linux
  4. Colin McRae Rally 04 in 16:9: a Mitsubishi Lancer Evolution on a dusty hillside stage.2004

    Colin McRae Rally 04

    Before 16:9 shows no extra scenery, the graphics menu stops at 2048x1536 and crashes, and Alt+F4 does nothing.

    • 16:9 with the right geometry, through dgVoodoo
    • Picks the landscape monitor, and closing the window works
    • Analog triggers and a controller that comes configured
    • Optional fps cap and vsync
  5. Colin McRae Rally 2005 in 16:9: a blue Subaru on a forest stage.2004

    Colin McRae Rally 2005

    Made from the SDK

    Before Crashes at launch under Wine, and GOG's installer hangs there. The DVD editions use StarForce and aren't supported.

    • Installs straight from GOG's installer files
    • 16:9 with the game's own wide view
    • DXVK on Linux: a stage that ran at about 20 fps now passes 1,000
    • Saves in their own folder
  6. OutRun 2006 in 4K: a silver convertible on a coastal city highway.2006

    OutRun 2006: Coast 2 Coast

    Before The PC port needs community fixes and its disc DRM removed, and it lost the first two seconds of "Rush a Difficulty".

    • OutRun2006Tweaks installed for you, at a fixed, tested version
    • 4K, 16x anisotropic filtering and a longer draw distance
    • The full "Rush a Difficulty"
    • Optional HD textures, rumble and full triggers
  7. Colin McRae: DiRT: a rally car kicking up dust on a gravel road through the forest.2007

    Colin McRae: DiRT

    Before Crashes loading any race on a CPU with many threads, and the community fix resets every graphics setting.

    • Its own fix for the many-thread crash, with your settings kept
    • Large Address Aware, so the game can use more than 2 GB
    • Hard links instead of a second copy of 9 GB
    • The Ultra preset in 4K, and native XInput
  8. Sega Rally Revo: a red Citroën leading the pack on a muddy jungle track.2007

    Sega Rally Revo

    Before A constant microstutter from two timing bugs in patch 4.060, a black screen on PCs with two GPUs, and a settings tool that fails under Wine.

    • A clean-room stutter fix: the race clock stays within 1 ms of real time in 99.9% of frames
    • 4K, Ultra quality, 21:9 and 32:9
    • A 60 or 120 fps cap
    • Native XInput and rumble
  9. DiRT Rally in full screen: a red Mini on a rocky mountain road.2015

    DiRT Rally

    Made from the SDKLinux only

    Before Feral's 2017 Linux port crashes at launch on Ryzen 5000 and newer, needs libraries modern Linux dropped, and was pulled from sale in 2022.

    • A small Rust library fixes the crash without touching the game
    • Brings the old libraries, for the game only
    • Skips Feral's pre-launch window and opens in 4K
    • Controllers like 8BitDo's show up in the game's own list
How I fixed them, on my blog

They are experimental. I tested each one end to end on Linux, with an RTX 5090 and an Xbox-style controller. None has been tested on native Windows yet, so if you try one there, open an issue with the executable's SHA-256 and the log.

Then the recipe became an SDK

Each launcher started as a copy of the last one, and every copy drifted with its own bugs. So I did what I always tell people to do: build the apps first, then extract the framework. rea-launcher-sdk holds what the launchers share, and it is written for a coding agent to drive.

The order I followed

  1. Build several projects of the same kind, each one solving its real problem.
  2. Compare them side by side.
  3. Refactor until they all stand on the same foundation.
  4. Only then extract the common parts into a framework.
9
launchers built on it, for 11 games
1,223
tests across the SDK and the launchers, all passing
95%
line coverage of the SDK's own code, 310 tests
~4
hours for each launcher made from the SDK, against 8 to 18 before it

Counted in my post of November 2, 2026.

Make a launcher for your own game

Clone the SDK, add REA to your agent, and point it at your installed game. The agent researches the community fixes, does the reverse engineering and writes the code. It stops at four checkpoints for your decisions and publishes nothing without your approval. It works with Claude Code, Codex, opencode or Cursor.

the tools
cd ~/Projectsgit clone https://github.com/akitaonrails/rea-launcher-sdk# REA, the reverse engineering MCPnpx rea-agents setup# Claude Code onlyrea-launcher-sdk/scripts/install-skills

Create a new rea launcher for Need for Speed: Porsche Unleashed (PC, 2000) using the SDK in ~/Projects/rea-launcher-sdk. Read AGENTS.md, docs/STANDARDS.md and docs/playbooks/new-launcher.md and follow the playbook phase by phase. The game is installed in /mnt/games/NFSPU (read only, never copy it into the repo). Research community fixes first and show me what you found before writing code. Don't push or publish anything without asking me.

An example prompt, adapted from the SDK's README.

AI Assisted Retro-Gaming

My games launcher on Omarchy: a fullscreen grid of 52 game covers including Banjo-Kazooie Recompiled, OutRun, the Colin McRae Rally series, Donkey Kong Country and DOOM 3, with category chips and sort buttons on top.
The launcher on my desktop: every game, port and emulator in one grid, whatever it runs on underneath.

The host stays clean

Emulators and Windows games drag in 32-bit libraries, Wine builds, AUR packages and runtime versions that fight each other. None of that touches my desktop. It all lives in one Arch Linux distrobox called gaming, Steam included, and the host keeps only what the desktop needs.

Two panels. Without a container: a Host tower buried under a tangle of library blocks with red Conflicts warnings. With distrobox: the same Host clean with a green dot, and next to it an orange gaming container holding the same blocks in tidy rows, with an Ansible recipe labelled Rebuild anytime.
  • Steam runs inside the box, with my library and its Proton prefixes on their own disk
  • The NVIDIA driver is passed through, and the one 32-bit library edge case is fixed in the launcher, never on the host
  • The box renders desktop entries; a small host script validates and installs them, and removes the ones for apps that are gone
  • Saves are mirrored to my NAS and restored on demand, so wiping the box loses nothing

Idempotent, so I can break it

Every emulator, config, patch and mod set is an Ansible role. Running the playbook a second time changes nothing, so I can experiment freely, reset a single emulator's settings, or rebuild the whole box from scratch and get the same machine back.

from the ansible/ folder
ansible-playbook site.yml                 # the whole box, from scratchansible-playbook site.yml                 # again: nothing changesansible-playbook reset-configs.yml --tags esde   # reset one frontendansible-playbook backup.yml && ansible-playbook restore.ymlansible-playbook site.yml --tags verify   # post-setup checks
96
notes in docs/, one per game, port or fix
497
commits since April 11, 2026

AI does the research, and writes it down

For every port, recompilation or stubborn Windows game, an agent researched the sources, wrote the Ansible role and left a note with where to get it, how it is set up and what did not work. Steam games have their own compatibility database under Proton, with each local fix backed by a source.

How to use it

The easiest way is to let an agent do it. Clone the repository, open Claude Code inside it, and tell it which container and games you want. The playbooks and notes are written for exactly that.

clone and open
git clone https://github.com/akitaonrails/distrobox-gamingcd distrobox-gamingclaude

Set up the gaming container with ES-DE, Dolphin and PCSX2. My ROMs and BIOS files are in /path/to/your/games.

The repository ships no games, ROMs, BIOS or other binaries. You bring your own and tell the agent where they are.

What is in the box

Emulators

ES-DE as the frontend, plus standalone shadPS4, Dolphin, PCSX2, DuckStation, Flycast, xemu, RPCS3, PPSSPP, Azahar, Eden, Cemu, Supermodel and RetroArch with its cores.

Ports, decomps and recomps

Native builds such as Ship of Harkinian, 2Ship2Harkinian, Starship, SpaghettiKart, Render96ex and Unleashed Recompiled.

Windows games

Wine-managed installs and fixes for games like the Metal Gear Master Collection. The old racing games now come in through my own launchers, above.

Mods, reproducibly

NexusMods mod sets per game, DLC and patch installers for PS3 and Switch, and per-game RPCS3 settings.

My own launcher, made for Omarchy

omarchy-games-menu is a Steam-like fullscreen launcher for Omarchy and Hyprland. It reads the desktop entries the gaming repository exports, so a new game shows up by itself, and it puts everything a keybinding away.

Three layers: a Host slab, an orange distrobox container labelled gaming holding Emulators and PC ports with an Ansible recipe, and a Launcher grid of cover art on top.
  • A Rust CLI, ogm, does the scanning, catalog and persistence; a QuickShell overlay draws the grid
  • Cover art and metadata from SteamGridDB, and new-release checks on GitHub for ports and recomps
  • Sorted by most played, name, date added or release date; type anywhere to filter
  • Scales with Hyprland's monitor setting, opens with one key such as Super+G, and games open fullscreen on a dedicated workspace
terminal
yay -S omarchy-games-menu-binogm scan && ogm refreshgames-menu   # or bind it: bind = SUPER, G, exec, games-menu

Everything here is open source

The tools, the skills and the benchmark are public repositories. Fork them and build the version that fits the way you work.