As regular readers know, I and other devs have managed to do a lot with the Apple II drivers in MESS over the past several years. This included a large selection of expansion cards, many not available in any other emulator. But there were problems lurking beneath the surface.
- The code was originally written for *very* early MESS circa 2003-2004 and kept being updated to work without any thought about if newer ways of doing things would be more correct.
- Having all the drivers from 3 distinct classes of machines (II/II+, IIe/IIc/IIc+, IIgs) shared led to some *really* ugly spaghetti, and made it difficult to maintain.
- Performance was really bad for anything doing a lot of bank switching on a 128K IIe/IIc. Airheart was not playable at 100% speed on my 4.7 GHz Core i7, which was simply not acceptable.
I don’t blame any of this on anyone; MAME/MESS has a lot of stories of drivers like this which simply needed a good rewrite, and not due to any particular malice or anything. That’s just how the project went. I am grateful to everyone who worked on the old driver, including Mike Balfour and Nathan Woods.
Anyway, as a result of all of this, I embarked on the “napple2 project” (New Apple 2). This did the following things:
– Split the Apple II/II Plus and IIe/IIc/IIc Plus into completely separate drivers with no almost no shared code except the video drawing.
– Allowed emulating the II/II Plus slot 0/language card mechanism properly. This means the II/II Plus now have period-accurate langauge card semantics, while the IIe and later behave differently just like real hardware. This also opened the door for extended language cards on the II/II Plus; the Saturn Systems 128K card is included, and this also means “freezer” cards can work now on those systems.
– Added a lot of “little things”: the REPT key on the II/II Plus causes key repeat at the same speed as real hardware, and the IIe/IIc have auto key-repeat, again with hardware-accurate initial delay and repeat speed. The IIe has the SHIFT key mod connected like on real Rev. C and later motherboards, and an optional SHIFT key mod is now available for the II and II Plus. You can configure systems to simulate color, B&W, green, or amber/orange monitors. The IIc’s 40/80 column and QWERTY/DVORAK switches exist and work properly. And so on.
– Speaking the IIc, there has never been an emulator to my knowledge that actually emulates the many unique features of the IIc. This new driver gives life to the IIc’s unique mouse port (tested in Apple II DeskTop, Mouse Calc, and more) and VBL interrupt scheme. Drivers for IIcs with the memory expansion slot now have -ramsize go from 128K to 1152K, and of course AppleWorks 2.0 and later immediately see the new memory.
– The double-lo-resolution graphics mode has always been missing from MESS. This isn’t used a lot, but it figures in several recent demos by “The French Touch” and it’s present and working now.
– All IIe and IIc models that have one (the original un-enhanced IIe doesn’t) pass their internal self-test as well as the complete set of tests on the official Apple II Diagnostics v2.1.
– The Brazilian “Microdigital TK2000” clone has a working keyboard now and should be usable. Unfortunately the tape images I’ve found for it are in a custom format that MESS doesn’t read.
Best of all, the drivers require less CPU power to run in pretty much every case than the old ones, and they’re much easier to maintain without accidentally breaking other drivers.
Note that the IIgs still runs on the old bad code, but it will get its own rewrite soon.