The retro gaming scene is bigger than it's ever been. Over a million people on RetroAchievements earning 880 million points on classic games. r/RetroGaming is one of the most active communities on Reddit. Retro arcades packed on weekends. Physical media making a comeback through indie publishers and labels. People building FPGA consoles, modding cartridges, hunting down original hardware. This is not a niche. This is a scene.

Launchers are solid too. LaunchBox is a librarian's dream with BigBox looking gorgeous. EmulationStation is familiar and battle-tested on many devices, Batocera turns any machine into a dedicated retro box, Pegasus is endlessly customizable. These are good pieces of software maintained by real communities.

So why build another one?

Because I want to build something around RetroAchievements. I want to treat achievement hunting, backlog management, and competitive play as first-class features. I want EmuSphere to feel more like a retro gaming dashboard.

EmuSphere logo
EmuSphere

What EmuSphere is

A native desktop retro game launcher and library manager built for completionists and competitive retro gamers. You point it at your ROMs folder, it scans everything using CRC32 hashes, matches against No-Intro dat files, pulls the metadata, and builds your library properly. Then you launch games with one click via RetroArch.

That's the foundation, like many other launchers. Here's what goes on top.

RetroAchievements integration built into the app. Your achievement progress, your points, your profile, live friend notifications when someone in your circle unlocks something. Backlog management so you know what you're playing, what you've finished, and what's been sitting untouched for a year. A social layer so the whole thing is connected. Leaderboards. A speedrun timer. Cover art scraped automatically from ScreenScraper.

The idea is that everything lives in one place. Not "launch game, then check RA in the browser, then check your backlog in a spreadsheet, then check what your friends are playing somewhere else."

The stack

Electron, React, TypeScript, Prisma, SQLite, Node.js. Monorepo with shared packages between the main and renderer processes.

Electron because I wanted a real desktop app. File system access, native feel, no browser sandbox. TypeScript because plain JS feels like working without a net at this point. Prisma and SQLite for the local database because it's fast, simple, and runs fully offline. The social layer will live in Supabase.

One thing I'm proud of: setup is almost fully automated. Scripts download RetroArch, pull No-Intro dat files for every platform, install the right cores, and configure everything. You run setup and you're done. No manual configuration.

What's working right now

ROM scanner with CRC32 identification across 50+ platforms. Game launcher via RetroArch. Full ARM64 Mac support. The library persists. Core install system works across platforms.

In progress: box art display, the backlog section, game detail panels, the RetroAchievements widget, basically the whole UI and some more APIs.

What building this alone feels like

Freeing, honestly. I get to learn effectively and I remember what coding felt like back in 2016, like magic. I make a decision and just do it. I've got Claude as a senior mentor to discuss architecture and decisions with, and a few senior dev friends I bounce things off. We're all backing each other up. You're never truly alone if you get yourself out there.

The hard part isn't the technical stuff. Electron IPC between main and renderer is annoying but manageable. Prisma in an Electron app has quirks around binary paths that took a day to sort out. Fine.

The hard part is scope. I have a roadmap that could keep me busy for a year and I have to actively fight the urge to build the exciting stuff before the core is solid. Speedrun timer, cloud saves, controller support, cheat codes. All coming. None of it ships before the basics are right.

The social layer problem

This is the ambitious part. The idea is that when your friend unlocks an achievement, you see it live in EmuSphere. Like a popup. Like what modern games do, but for retro.

The problem: the RA API is personal and trust-based. It can't broadcast your achievements to others in real time, and hitting it every X minutes loses the "live" feeling entirely. So I need a central server. Every user logs in, the app fetches their stats and their friends' stats, sets an online flag, and we sync through Supabase. That way the server does the broadcasting, not RA's API.

The cost concern is real though. What if this gets 10k users on day one? I've been thinking through this and my current estimate is somewhere between 0 and 20 euros a month for that scale if the architecture is right. That's manageable. The social part is ambitious but I think I'll get there.

Why bother

Because I play these games. Because RetroAchievements has over a million players and none of the major launchers put it front and center. Because the retro gaming community is thriving and deserves tools built specifically for how they actually play.

Follow the repo if you're into this. It'll be out when it's ready.