With AI at our disposal anything seems possible. At least if you know what to look out for. And as a fun weekend project we decided to port something that ticks all the boxes: namely a Commodore Amiga emulator!
The Quartex Amiga Emulator (QAE)
The Commodore retro community has no shortage of emulation options these days, but for the browser there has only been two options: SAE (scripted Amiga Emulator) which is a pure JS implementation, and VAmiga which is a webassembly Amiga implementation. There is also a third alternative that just dropped, a project called Copperline which is a cycle exact rust implementation that likewise compiles to webassembly.

For our port we decided to use SAE as our initial source believing that it would be easier, but we ran into some strange inconsistencies. So after much frustration we ended up peeking at the Copperline source and found a lot of solutions there. Like all computers the Amiga had it’s fair share of quirks and unwritten rules, things that makes writing an emulator more difficult.
One benefit however, is that we were not aiming at being cycle exact or 100% true to the original hardware. SAE does a good job at playing demos and games, and while there are titles that it struggles with – it manages to play the majority of titles you throw at it.
For the fun of it
Like many other European developers we grew up with C64 and Amiga as household names, and those computers hold a special place in our hearts. Personally I own several Amiga machines, both real and later FPG implementations, and they still inspire and remind me of a time when computing was fun.

There is a lot of Amiga in Quartex Pascal. We have tried to capture that free spirit that the Amiga represented; the spirit of “it can be done” and that realizing ideas and dreams doesn’t have to be difficult. The IDE houses concepts from languages like High-Speed Pascal, BlitzBasic and Amos. These were the languages we grew up with and that inspired us to become developers in the first place.
So this port is not meant to be better or worse than the emulators already available, it is more a testament to what Object Pascal is capable of, and that you can create just as complex and interesting products as C/C++ or any other language in the same family.
The very first game
The first game I ever played on the Commodore Amiga was Defender of the crown. This was without a doubt the game that put Amiga on the map. It was so rich in color compared to the 8-bit titles we knew, so vivid and fun to play, that I remember coming home to my C64 feeling somewhat depressed.

Needless to say I began a nagging campaign towards my parents, and eventually they caved and bought me an Amiga 1000. That was pure magic to me and i spent every penny of my savings buying Defender of the crown and Rocket Ranger. This was whole new world compared to the C64. A world where we had a desktop, icons, graphics applications, music applications and software at least a decade ahead of everything else out there.
Defender of the crown was the very first game I booted on the ported emulator – and it runs surprisingly well. There are a few quirks here and there that needs to be ironed out, but sound, disk drives and graphics are all in place.
Porting and legality
We have only put a weekend into the porting, but we are roughly 70% compatible with a stock Amiga 500. The moment OCS (original chipset) is covered – we will add the emulator to our examples folder.
After that we will get ECS (enhanced chipset) working, and finally bump it up to an Amiga 1200 with a 68020 instruction set. This is the computer that most people use when emulating so it seems like a worthy goal.

It must be underlined that we cannot ship the kernel files (the rom files). These are copyright and are still sold. So you will need to provide your own rom-files.
We will however ship the Aros roms, which is an opensource and free alternative to the official Commodore rom files. Aros is usually enough to run most games and demos, but there will be titles that require the official Commodore roms (1.3, 2.x, 3.1).
On the upside, with the code ported to Quartex Pascal, making optimizations and adaptations should be easy. It is a complex piece of engineering – but the difficult part taken care of.
