Coder Social home page Coder Social logo

arianrhodsandlot / retro-assembly Goto Github PK

View Code? Open in Web Editor NEW
85.0 4.0 12.0 52.75 MB

A personal retro game collection cabinet in your browser.

Home Page: https://retroassembly.com

License: MIT License

JavaScript 0.58% HTML 6.25% TypeScript 93.00% CSS 0.17%
emulator pwa retroarch retroarch-wasm retroarch-web retrogaming atari atari2600 gb gba

retro-assembly's Introduction

logo

RetroAssembly

Overview

A personal retro game collection cabinet in your browser.

Usage

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

  3. 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), 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 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 for details.

Development

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

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

License

MIT

retro-assembly's People

Contributors

8ua avatar arianrhodsandlot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

retro-assembly's Issues

Not loading games

Getting a issue saying could not load games when opening the site I have my drive set up like this
/
~/Roms
~~/NES

~~/SNES
~~~323 FileS
~~/PS1
```/Empty

D-Pad Mapping Issue in Frontend

Description

D-Pad configuration within the frontend (RetroAssembly) does not seem to function, but the other buttons map appropriately. I can map other buttons to the d-pad, but not the the d-pad on the controller. Nor can I map the controller d-pad to other buttons. I've tested a variety of wireless controllers in multiple different modes (2 from 8BitDo), a Switch Pro controller, and a wired USB SNES clone controller. All have more or less the same behavior. The emulator itself typically works fine, even with this issue.

Steps to reproduce the bug

  1. Connecting any controller, opening Settings menu, and selecting "Configure gamepads" and attempting to map the d-pad will present the issue.

Screenshot or screencast

Environment information

  • iOS 17.1.2 iPhone and iPad Safari
  • Linux Fedora 39 Brave and Firefox
  • Windows 10 Edge.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.