Jammy
An Amiga emulator able to run Workbench and many games and demos
Install / Use
/learn @jimshawx/JammyREADME
Jammy - an Amiga emulator written in C#
Jim's Amiga Emulator
This is a lockdown project I started in December 2020 with the intention of building an Amiga emulation that could interface the UI with Windows instead of Workbench. That quirky part of the project dropped away as soon as it became clear that you need to build a really good emulation first before you can run almost anything. So here is my humble attempt at an Amiga emulation.
The good stuff
-
It's written in C#
-
It runs faster than real Amigas (on my i5-8250 laptop)
-
It can emulate most Amigas to at least some level
- A1000, A500, A500+, A600, A1200, A2000, A3000, A4000, CD32
- 68000 in C#, verified against the Musashi 68000 CPU
- Other 680x0 using the Musashi CPU emulation, in C or C#
- Cycle-exact 68000/chipset using the Moira CPU emulation, in C++
- Copper, Blitter, CIA emulations
- Sprite and Playfield collision
- Sprite and Playfield priorities
- Good quality Audio
- OCS, ECS, AGA emulation
- Floppy Disks, ADF/Zipped ADF/ADZ/DMS/RP9 (read) and ATA Hard Disks (read/write)
- All kinds of RAM expansions (Chip, Trapdoor, CPU slot, Zorro II/III)
- Battery-backed clock
- VT100 Serial terminal
-
There's a debugger and disassembler of sorts
-
There's a Javascript and Lua API to enable smart code to run on breakpoints
-
There's a web API so you can write your own UIs
-
There's some automated code analysis to produce good disassemblies
-
The disassemblies can be stored in a Sqlite database
-
There's a Linux version!
-
There's now a packaged release to try
-
Completely new emulation not based on WinUAE
-
It's free! (MIT License)
The not so good stuff
- There are lot of problems with DMA timing
- More efforts need to be made to get closer to cycle exact
- CD32 CDROM and NVRAM not working
- Emulation of CPUs running faster than the standard 7MHz is poor
- There are still many pieces of software that don't work yet
- There's a broken IPF floppy disk reader
- The Linux version is missing the debugging UIs
- There's no ARM build
- The Javascript, Lua and web APIs need more work
- The database needs more work
The C# 68000 is slightly faster than the C Musashi one, not because I have made any specific efforts to optimise it, but I think mostly because thunking out of C# into C and back again isn't particularly fast. In an effort to fix this, I have ported Musashi and the Musashi CPU generator to C#, and it is significantly faster now.
The C and C# Musashi 68030/040 options support the 68881 and MMU instructions.
The audio is pretty good, if you run with it switched on it will lock the emulation performance down so the sample rate is exact. With it switched off, everything is still emulated but there's no sound output. If the emulation is too slow, the audio will be choppy. There's some high-frequency hiss I'd like to get rid of.
It's been a lot of fun writing this. In almost all cases I have worked from publicly available documents - the Hardware Reference Manual, online bits and pieces about future Amigas, the ATA mode 0 spec, the datasheets for the 68K series and the CIAs and clock chips. I don't have a real Amiga to hand, the trusty A500 my gran bought me in 1989 is trapped in storage somewhere in Australia. I booted it up a couple of years ago and it was still working then.
Anyway, Workbench is totally usable right now, and it plays a pretty mean Buggyboy and Pinball Fantasies. With a gigabyte of RAM.
Thanks to Toni Wilen and Brian King and all the other contributors for WinUAE, the most complete Amiga emulation package. What a brilliant piece of software! Also thanks to Petter Schau, Torsten Enderling and all the others for WinFellow, which I have always admired for its simplicity and ability to play games. Thanks to Karl Stenerud for the amazing Musashi CPU emulation package. Thanks to Dirk W. Hoffmann for the superb Moira CPU emulation package, and the incredibly useful vAmiga Test Suite. Thanks to Heikki Orsila and Andre Rodrigues de la Rocha for xDMS.
Contributions, PRs and comments welcome!
Cheers,
Jim
