Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/arianrhodsandlot/retro-assembly

A personal retro game collection cabinet in your browser.
https://github.com/arianrhodsandlot/retro-assembly

atari atari2600 emulator gb gba gbc megadrive nes nintendo pwa retroarch retroarch-wasm retroarch-web retrogaming sega snes virtualboy webassembly

Last synced: 1 day ago
JSON representation

A personal retro game collection cabinet in your browser.

Awesome Lists containing this project

README

        


logo

RetroAssembly

## Overview
A personal retro game collection cabinet in your browser.



## Usage
1. Visit [retroassembly.com](https://retroassembly.com).
2. 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.
5. Start to play!

## Features
+ 📁 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.

## Motivation
### Retro games and emulators
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.

### My problems with RetroArch / Pegasus / BizHawk / RetroPie / standalone emulators etc

1. #### I spent a lot of time on configuring them
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.

2. #### I could not synchronize my progress easily
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.

### Searching for projects that can deal with my problems (but failed)
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](#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.

### Creating RetroAssembly
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](https://github.com/arianrhodsandlot/nostalgist) 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.

## Supported Consoles
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](https://github.com/arianrhodsandlot/retro-assembly-vendors) for details.

## Development
It's quite easy to develop RetroAssembly. All we need is the latest [Node.js](https://nodejs.org) and [pnpm](https://pnpm.io).

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...

## Feedbacks and contributions
All kinds of feedbacks and contributions are welcome. You can issue new posts on the issue page or the discussion page.

## Alternatives
+ [Afterplay.io](https://afterplay.io)
+ [Eclipse](https://eclipseemu.me)
+ [EmulatorJS](https://emulatorjs.org) [:octocat:](https://github.com/EmulatorJS/EmulatorJS)
+ [GamePlayColor](https://gameplaycolor.com) [:octocat:](https://github.com/gameplaycolor/gameplaycolor)
+ [RetroArch Web Player](https://web.libretro.com) [:octocat:](https://github.com/libretro/RetroArch/blob/master/pkg/emscripten/README.md)
+ [webrcade](https://www.webrcade.com) [:octocat:](https://github.com/webrcade/webrcade)
+ [webretro](https://binbashbanana.github.io/webretro/) [:octocat:](https://github.com/BinBashBanana/webretro)

## License
[MIT](license)