An Emscripten port of RetroArch has existed for years, but until recently, we never had a good opportunity to launch it in a state we felt comfortable with. Well, until now that is.

Web Player

So what is RetroArch Web Player? It’s a port of RetroArch that runs inside your web browser, powered by emscripten and asm.js. Most modern browsers available today should be compatible. That being said, we strongly recommend you use Google Chrome right now for smooth v-synced gameplay with no audio crackling.

You can check it out right here!

Dropbox support may not work in this embedded-player we added to this post, we haven’t enabled SSL on our main site and Dropbox doesn’t allow any sort of wildcard or regex on web apps.

You can also click on ‘Web Player’ in the top-right corner of the libretro.com website and in our itch.io page in order to use it.

Current state of the port

  • Over 40+ libretro cores available
  • Gamepad support via SDL2
  • Hybrid filesystem including cloud syncing courtesy of BrowserFS. This filesystem stores userdata in one of two backends (browser application storage or Dropbox); assets are loaded synchronously from an online repository and cached by the browser for future usage

Known frontend issues

  • Player 1 gamepads can sometimes control both player 1 and 2 at the same time in games that support 2 players.
  • Guide button mapping is currently not available. We’re not sure if this is a limitation of the SDL2 input driver.
  • Recent History doesn’t work yet.
  • GLSL shaders don’t work (yet?).

Known core issues

  • BlueMSX (MSX) currently doesn’t work.
  • Craft core (Minecraft) currently hangs.
  • Desmume core (Nintendo DS) currently doesn’t work.
  • EasyRPG core (RPG Maker game engine) currently doesn’t work.
  • FFmpeg core (Movie/music player) currently doesn’t work.
  • Mupen64plus core (Nintendo 64) currently doesn’t work.
  • PicoDrive core (Sega Genesis/32X) currently doesn’t work.
  • QuickNES core (Nintendo NES) has slightly distorted graphics.
  • Tyrquake core (Quake 1 engine) currently hangs at startup loading screen.

Special thanks

  • Jvilk — for his excellent BrowserFS implementation and fixing a few bugs for us immediately when they were reported
  • RobLoach — for his work on the template
  • Twinaphex — for his tireless work on RetroArch and the cores
  • ToadKing — for the initial emscripten port and some fixes he sent on our way recently
  • Radius — for something? idk I did some work I think

44 thoughts on “RetroArch Web Player

  1. awesome, but i can’t seem to get it to work, i can use the arrow keys to navigate up/down but wen i press enter/return on things like load content, there is no response, thx.

    1. Brandon Camilleri

      September 13, 2016 — 4:12 pm

      Try pressing the X key on your keyboard (and Z to go back).

  2. Pretty neat, but so far all the cores I tested only Genesis Plus GX worked

    1. Which browser?

      1. Chrome Version 53.0.2785.101 m (64-bit)

        Windows 10

        1. Which cores didn’t work for you?

          1. Snes9X, 2048, Desmume (although now I’ve seen it currently doesn’t work) and BlueMSX were the ones I tested. I don’t know what EasyRPG is but I tried loading that as well and it just stayed loading forever.

            And when I say it doesn’t work I mean I’m presented with a black screen upon loading the ROMs.

            Now I tried testing Snes9X 2010 and it works, but Snes9X still does not.

            I also disabled the uBlock and Tampermonkey Chrome Extensions just to make sure they weren’t interfering with anything and nothing changed.

          2. Libretro RetroArch

            September 13, 2016 — 2:39 pm

            2048 – just select Start Core. Works fine.

            Snes9x – just use snes9x 2010. I don’t know if mainline snes9x works yet, and even if it does, snes9x 2010 would just be faster anyway.

            BlueMSX / Desmume – I think I discussed already in the blog post they don’t work yet. I guess I didn’t mention BlueMSX yet so I will add that.

            EasyRPG – Yeah, not ready yet. Also discussed in the blog post.

  3. I wanted to know about the Dropbox sync do you need to make a rom path? Can you load roms from dropbox?

    1. just click dropbox once and load retroarch.
      Then it should create all the dirs, you can add roms directly from dosbox under RetroArch/content

      1. I thought I did something wrong because I was getting a error so I deleted access from the app in my settings and it deleted all files now I’m trying to get permission to allow dropox but I cant even get that screen anymore. that is strange.

        1. Here are my xbox findings so far:

          Start and select binding are hard coded to the edge browser I manually had to change them to the Joystick click in buttons. Trying to accomplish this on xbox, it’s more time consuming, the retro menu is a little slower.

          Accessing the emu menu when in game doesn’t always work.

          Sync with dropbox takes up to 15 minutes before launching an emulator.

          Full screen is a complicated task to engage. You need switch to browser mode, then click the icon and attempt to switch back.

          The controller is set to have the B button to confirm and the A button to go back but when in browser mode those buttons are reversed. I found myself hitting the wrong button at the wrong time and I would end up having to reload the browser all over again.(15 min sync wait).

          When switching to controller the emu frame-rate would drop and sound would Distort.

          If you want to accomplish xbox compatibility, I think it would probably need its own version with standard setting altered a little. With that said, I know that xbox is probably not a priority.

          As far as the Dropbox sync issue, I am not informed enough to know why it takes so much longer on xbox.

          Sucks, cause its almost a win.

          1. Sucks, but it was worth a shot
            Yes we want a real port, UWP but that takes time and a dedicated dev.

          2. You can count on my to test anyone is willing to throw together.

          3. My dropbox has allot of crap in it 12GIGs. I wonder if I use a fresh smaller account would it be a little faster on syncing.

  4. hmmm works for me

    1. I actually retested Gambatte GBC on another machine and it’s working there for some ungodly reason. Also Windows 10 64-bit and the same Chrome version, can’t test the other ones since I don’t have the ROMS here. Good luck figuring that one out.

  5. and fba too

  6. The download for the windows retroarch won’t work because I don’t have have dx9 nor can I install it for win10. How do I get around this?

    1. I can install dx9 in win10 just fine.

      1. What link do you use to download it from? Because the one I get from windows says that I need xp or earlier.

  7. hola oigan habra version para windows 10/xbox one? pueden utilizar la version de visual studio 2015 que tiene universal si quieren pudo ayudar?

    1. tengo la version y los sdk para compilar solo faltaria el html o codigo fuente de la version de navegador

      1. no tiene sentido hacer una versión html de la versión web. La versión web ya funciona (aunque lento) en XBONE.
        Si quieremos un port nativo UWP, cada usuario tendria que compilar pero no se ha hecho nada aún.

        1. if Nesbox got kicked back why do you think Retro would make it thru certification on xbox?

  8. Nice. But looks like you’ve got competition: https://nesbox.itch.io/x1

    1. I wonder if this is part of the reason. I wonder if Nesbox is just another RA rip off.

      1. At least I can install Nesbox on Windows Phone. RA I can’t.

        1. you don’t need to install anything…

    2. I don’t like to think of it as competition. Retro is so much more and I want it so badly to work on XBOX’s edge browser. I know it could emulate arcade games. That’s what i want Final Burn Alpha! and NeoGeo

        1. can you try increasing audio latency to 256 and see if it’s any faster then?

  9. Here it is on XboxOne’s Edge browser with dropbox support 🙂
    (setup dropbox and filled the apps/retroarchsync/content with backups manually on pc as its faster )
    average of 33.5 fps on genesis gx plus and snes9x 2010.
    can’t take native screenshots or vids as cortana doesn’t recognise edge as a game :-/

    PS: I hope that with the DesktopAppConverter released today by Microsoft we can have a native performance appx package to install in dev mode through the web remote page on XboxOne in case they refuse a Store release of RetroArch 🙂

    1. thanks for the feedback.
      I wonder why is it faster when the page is out of focus…
      Gonna add another URL for XBONE, I have an idea, hope you can test it later this weekend

      1. “Gonna add another URL for XBONE, I have an idea, hope you can test it later this weekend” Ready to test whenever needed 🙂

  10. Anyone managed to get MAME 2000 running on this yet?

  11. Hi,
    did you try for example dosbox or PSX ? Because I still have a problem to get it working. Do they need some special settings ?
    I tried for example Wolf3D, but after load EXE, I got error in console and black screen.

    Thanks for help

    1. those are not working yet.

  12. This is seriously awesome! Is there a way to host this on our own (local) webserver? How?

    I’m imagining…. a DIY NAS that hosts a couple of Windows+Linux OS Virtual Machines, plus your local LAMP server, DLNA/Plex server, and now….. this. I could be going on a trip overseas, and whenever I’m bored I could just open up chrome on my phone and go to my NAS’ ddns url and play some Final Fantasy 6 and my wife could stream some videos at the same time!

    1. Hosting the base version is rather easy.
      Everything you need is here: https://bot.libretro.com/web/embed/
      Grab a recent one, unzip in the dir and that’s it.

      If you want to host your own rawmz and add dropbox integration it’s a bit more involved but not really hard if you’re tech savy.

      I added some documentation here: https://github.com/libretro/RetroArch/blob/master/pkg/emscripten/README.md

  13. Love this project. Also love what you guys are making use of Emscripten! I’ve been scouring the internet for other projects that take advantage of it as well. If you’re looking for an overview of what Emscripten is, I explain here:

    https://www.davevoyles.com/2015/10/06/getting-started-with-emscripten/

  14. Any plans to package this for web platforms? As a browser extension, Chrome App, or maybe even an NPM package?

Comments are closed.