A personal retro game collection cabinet in your browser.
-
Visit retroassembly.com.
-
Pick a method you prefer to provide your ROMs. For BIOS files, place them into a directory named
system
inside the directory you are picking.You can also try the public library first if you do not have one now.
-
Start to play!
-
📁 Import a directory from your local directory or cloud drive, then a game list will appear
-
🖼️ Automatically grab game boxarts.
-
🎮 Joystick friendly, no need to switch between joysticks and mouse while navigating through different games or consoles
-
💾 Save states and sync them to with different devices (if using a cloud disk we support)
-
📱 Virtual controller for mobile devices
-
⌛ Rewind with a controller button combination (select + L2)
-
🍎 Super convenient for iOS and iPadOS, no AltStore or jailbreak required. Either play directly in your browser or add it to home screen.
I love retro games and emulators. I used to be addicted to configuring my emulators on desktops, laptops, phones, and tablets...
I also spent a lot of time on flashing images for my Raspberry Pi and other hardwares. You may already hear of something like Lakka, RetroPie, Batocera.linux, EmuELEC, etc.
I loved these.
However, I faced some problems with these software and system. Although maybe some of them are not the problems with these software programs, they may be my own issues.
-
I had been spending too much time configuring these software and system, as well as much time on configuring and updating the emulators. But as comparisons, I spent only a little time on playing the games.
As I tried to update my configuations for several times, sometimes the systems would be broken by my invalid configuations and I have to reinstall them, and then my saves got lost, as a result.
-
After saving my game progress on my PC, I am unable to continue it directly on my phone. Maybe copying save files manually would work, but it could be very annoying if I had to do that every time.
Then I began searching for a software that could solve these problems, but the results were not ideal.
Some of the emulator related softwares only work on a certain platform. While some of them, like RetroArch, are cross platform applications; however, it is difficult to install them on an iPhone or iPad. Synchronizing progress is also a painful problem.
Again, I began searching for some web based projects other than native programs. I don't want to use commercial websites providing illegal ROMs because I want to use my own. Another reason for not using them is that I don't want to put my save files on their servers since they may disappear some day. I want to keep the ownership.
I found some decent projects (see Alternatives), but none of them met all my expectations. Here are some of my expectations:
- It should be web based. So I can use it on every device with a web browser: phones, tablets, even Chromebooks.
- It should be super easy to use. Give it a ROM directory, and everything else will function properly.
- It should show some boxarts instead of plain game titles. I don't want to download them manually, they should be shown automatically.
- It should help me keep my progress files synchronized.
- It should be joystick friendly. Navigating through games should be as smooth as on a video game console, and keyboards and mouses should be optional. This way, when I exit a game and start another, I can keep my hands on my controller.
- It should have touch control support. When I am outside, I can enjoy playing games on my phone using my fingers. Though it's not that efficient.
Finally, I realized that although I don't know much about emulator development, I do have some experience with web development. And I have heard that there are already Emscripten builds of RetroArch that can run within browsers. I believe I can utilize this to create my own project.
Then I began working on this project called RetroAssembly. The meaning of this project name is to assemble all my retro games here (it has nothing to do with WebAssembly though WebAssembly is used by RetroArch Emscripten builds under the hood😆). In addition to that, I have also created a JavaScript library Nostalgist.js during the development of RetroAssembly.
I've used RetroAssembly personally for months and all works well. Now, I shared it to you, and hope it can make you enjoy retro games more easily and smoothly.
We support mainstream fourth-generation and earlier consoles as well as some handhelds. The detailed list is as follows.
Firm | Platform | Extension | Emulator |
---|---|---|---|
Atari | Atari - 2600 | .a26 , .zip |
Stella
libretro core, origin |
Atari - 5200 | .a52 , .zip |
Atari800
libretro core, origin |
|
Atari - 7800 | .a78 , .zip |
ProSystem
libretro core, origin |
|
Nintendo | Nintendo Entertainment System / Famicom | .nes , .zip |
FCEUmm
libretro core, origin |
Super Nintendo Entertainment System / Super Famicom | .sfc , .smc , .zip |
Snes9x
libretro core, origin |
|
Game Boy Advanced | .gbc , .zip |
mGBA
libretro core, origin |
|
Game Boy Color | .gbc , .zip |
||
Game Boy | .gb , .zip |
||
Virtual Boy | .vb , .zip |
Mednafen VB
libretro core, origin |
|
Sega | Master System / Mark III | .sms , .zip |
Genesis Plus GX
libretro core, origin |
Genesis / Mega Drive | .md , .zip |
||
Game Gear | .gg , .zip |
||
Bandai | WonderSwan Color | .wsc , .zip |
Mednafen WonderSwan
libretro core, origin |
WonderSwan | .ws , .zip |
||
SNK | Neo Geo Pocket Color | .ngc , .zip |
Mednafen NGP
libretro core, origin |
Neo Geo Pocket | .ngp , .zip |
||
- | Arcade | .zip |
FBNeo
libretro core, origin |
Emulator are built based on RetroArch. See RetroAssembly vendors for details.
It's quite easy to develop RetroAssembly. All we need is the latest Node.js and pnpm.
Simply run pnpm install
to setup dependencies, then run pnpm dev
to launch the development server.
The cloud services are available only if related environment variables are set. For know, these keys are private and the project can only be debugged with local directories. I'm still planning to improve this...
All kinds of feedbacks and contributions are welcome. You can issue new posts on the issue page or the discussion page.