Amiga 500 Emulator

Frequently Asked Questions

About the Amiga emulator

What is this?

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?

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:

F11 → Help

F12 → Esc

Home → Left Amiga

End → Right 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.

Where can I find the source?

What exactly is Portable Native Client (PNaCl)?

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

Try going full-screen. In some cases full-screen mode is faster
because Chrome doesn't have to run the compositor.

Check out about:gpu (type it in the address bar and hit
enter). If it doesn't show that you have support for hardware
accelerated graphics in Chrome, consider upgrading the driver for
your graphics card. (Make sure you keep a backup of your existing
driver. Only do this if you know how to revert to the previous
version if something goes wrong.)

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:

about:version

about:nacl

about:gpu

All output on the JavaScript console

All output seen on stdout

Thanks!

Miscellaneous

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+