Amiga 500 Emulator

Frequently Asked Questions

About the Amiga emulator

What is this?

The Amiga 500 – the most awesome computer ever made

The Amiga 500 – the most awesome computer ever made. (Photo copyright: Bill Bertram 2006 CC-BY-2.5)

The Commodore Amiga 500 was a home computer that had its heyday in the late 1980s and early 90s. For a while, at least in Europe, it was the computer for games and for demos – and for a whole generation of programmers who cut their teeth programming Motorola 680x0 assembler, AmigaBASIC, and C.

This website runs an emulator of the Amiga 500 inside of Chrome by using Portable Native Client, a way to run existing C/C++ in the browser in a safe way across operating systems and across machine architectures. On the main page you can boot the Amiga, insert floppy disks, play the games, and generally pretend it's still the late 80s. (We recommend some Enigma music or the soundtrack from the movie Top Gun in the background.)

The code was forked from PUAE, the Portable Universal Amiga Emulator, from GnoStiC's GitHub repo. A huge thank you to Bernd Schmidt, Toni Wilen, Mathias Ortmann, Richard Drummond, Mustafa Tufan (GnoStiC), and the many other developers who have contributed to the various generations of UAE over time. You guys rock!

Using the emulator

Why do I need Amiga Forever Essentials to use my own floppy disks?

Cloanto has kindly provided the Amiga Kickstart ROM for use with the Amiga Workbench 1.3 and the First Demos disks in this demo. To use other disks with the emulator, users can obtain a Kickstart ROM license by getting the Amiga Forever Essentials bundle for Chrome. If you are looking for a desktop Amiga emulator for Windows, check out Amiga Forever.

How can I use the games and apps I still own?

If you already have the disks as .adf files, just get a kickstart ROM license (see the previous question), and you should be good to go. If not, well, then it's complicated. Maybe try this search on Google.

What machines are supported?

All Chrome desktop devices, that is, any somewhat recent device running Mac OS, Microsoft Windows, Linux, or Chrome OS.

Why do the cursor keys and the space bar not work?

They do, but they are probably assigned to a joystick port. When they are assigned to a joystick port, they will not work as normal keys.

I can't use the escape key. It makes Chrome leave full-screen mode. And where is the Help key and the Amiga keys?

By design there is no way to disable Chrome's reservation of the escape key. Here are some substitute key mappings to use inside the Amiga:

Why does my favorite key in the whole world not work in the Amiga?

JavaScript does not get notifications for all keys that the Amiga knows about. This being a demo, we didn't include a "send special key to emulator" feature except from those mention above.

Why don't you support more different Amiga configurations?

We could potentially. File a request (see below).

Aargh, why can't I change from PAL (50 Hz) to NTSC (60 Hz)?

Sorries, that feature didn't make the cut in this version. If enough people want to use NTSC content, I'll add that feature. The emulator was set up in PAL mode, as that's the mode that the largest amount of Amiga content was built for.

Why does full-screen mode have a big black border? Why not stretch to fill the screen?

If full-screen mode is not actually filling up the entire screen, it's because Chrome does not support hardware accelerated graphics on your machine (or with your current driver).

Where is my favorite UAE or Amiga feature?

This port doesn't have all the features that the Universal Amiga Emulator has. For some, such as saving games and connecting cartridges, they weren't deemed important for the demo; for others such as mounting local file systems they don't work in a web context. If you want a full-features Amiga emulator, look as FS-UAE (free) or Amiga Forever.

The code, the source, the technology

Where can I find the source?


What exactly is Portable Native Client (PNaCl)?

See the official Portable Native Client developer documentation.

Can I use the AROS ROM with this demo? Why is it not compiled in?

It doesn't work terribly well, but we were able to boot a few titles with the AROS ROM. YMMV. It is not enabled in the demo because it wasn't working reliably enough with the titles we tried.

Why did you base it on PUAE? Why not FS-UAE, WinUAE or something else?

PUAE's code base seemed the most accessible one to me at the time.

Could this be made to work in other browsers?

Probably. You could try using Emscripten/asm.js. Since the Portable Native Client tools spit out LLVM bitcode, it should be possible to generate asm.js-compliant JavaScript code from that. One challenge is that the Amiga emulator is currently multi-threaded, but it can probably be made single-threaded.

How long did it take to port?

The emulator is something like 400,000 lines of C code. The original port to Native Client was done in four days. However, there was a lot of polishing afterwards, taking at least four times as long as the original port.

Why not use SDL?

Good point. In fact, an SDL port for Native Client does exist in the nacl_ports repository. At the time when the bulk of the porting work was being done, however, the NaCl SDL port didn't have performant support for both Graphics2D and Graphics3D. And, yes, I wanted an excuse to familiarize myself with the Pepper interfaces.

Can it be optimzed to run faster?

Certainly. I've left suggestions here and there in the code, so check out the code and go to town! E.g., currently, rendering happens on the emulator thread; an obvious thing to try is to render on a separate thread.

Issues – known and unknown

Bummer, it's really slow on my machine (AKA I get choppy sound or janky graphics)

Here are some things to try:

In general, look at the line of indicators at the bottom of the Amiga. The third box contains the number of frames per second. This is a PAL-mode Amiga, so your sound will be choppy if it not able to hit 50 frames per second on average. On the other hand, even if you get 50 frames per seconds perfectly, it may still look slightly uneven. This is because a modern display runs 60 Hz, so approximately every fifth frame will be doubled.

If you get stutter while choosing disks to insert, that's a known issues. We're working on it.

Uh, it seems to run 60 FPS when no audio is playing?

Yes. We'll fix it if it turns out to be a problem, but it's just so nice to have smooth scrolling when it's possible.

What's up with the gamepad support?

It sort of works. Use the dropdowns to select gamepad input, then press a few buttons on the gamepad to allow Chrome to connect it. Reset the Amiga if it doesn't work. And please report any issues.

How do I report an issue?

First check the issue list to see if it has already been reported. If it has, just add any new information you may have and star the issue to vote for it.

If it hasn't already been reported use this form. Always remember to include the five 'A's:



The small print

The emulator code is GPL2 – check out the source. The Amiga ROM, OS, and First Demos files are provided under license by Cloanto. Amiga is a trademark of Amiga Inc. The favicon is provided with permission by Cloanto.

Who are you?

Oh, hai! I work for Google. I was a member of the Chrome team, and more specifically the Native Client team, from August 2010 to June 2013. You can find me on Google+