Lots happened this month! Let’s start at the end of last month, where right around the time MAME 0.266 was released I was finishing up an extensive rewrite of MAME’s 680×0 floating-point emulation. It now uses the currently maintained SoftFloat version 3 instead of the old version 2, and a number of bugs were found and fixed in the emulation that caused problems.
Among those problems: the Jigsaw Puzzle desk accessory that comes with System 7.5 and later didn’t work, and games using the FPU often showed garbage, like this example from Wolfenstein 3-D:

Those issues are fixed now!

Next up, I found out from schematics that the PIC1654S Apple Desktop Bus transceiver used in the Mac SE, II, IIx, IIcx, SE/30, IIci, Quadra 700, and Quadra 800 was being given the wrong clock speed and running out of spec. Fixing this also solved an issue where it wasn’t working properly with many of those machines and we were using an older high-level emulation on those systems which exhibited jerky mouse movements. That is now fixed, with the caveat that as 0.267 was frozen I found another issue with how the PIC1654S was communicating with the host Mac that caused phantom mouse clicks to occur, primarily on the Mac IIci. So just avoid that model until MAME 0.268 next month.
While in an ADB state of mind, I also got the 65C02 co-processor in the Mac IIfx to start speaking properly to the Apple Desktop Bus, bringing the keyboard and mouse online. There’s a lot more work to do on that “Wicked Fast” system before it’ll work, but this was an important step. There’s a good chance that work will actually result in the Quadra 900 and 950 being fully working sooner, since outside of the coprocessors they’re very similar to the already supported Quadra 700, so stay tuned.
The Egret and Cuda microcontrollers got a glow-up next: they’re now based upon a solid universal emulation of the Motorola 68HC05E1 microcontroller. This allowed the removal of some hackery and cleaned up Cuda’s I2C bus support. Additionally this fixed a few “invisible” issues where some versions of Cuda were not properly communicating with the Mac systems they were known to have shipped with. This includes the Color Classic using Cuda 2.35 and the Quadra 630 / LC 580 with Cuda 2.40. There should be no user-visible difference from cleaning that up, but I know it’s more true to life and that’s enough for me.
Also up for invisible improvements: the Sonora video chip found in the Mac LC III, LC 520, LC 550, and Power Macintoshes 6100, 7100, and 8100. The Power Macintosh version of the chip generates its own pixel clock based on the video mode number, while the earlier LC III and 5×0 series version had an external clock generator called Omega. The improvements to Egret and Cuda allowed those chips to speak to a newly created emulation of Omega, and now those 3 LC models have correct video timings.
Also making it into 0.266 were a couple of Github submissions from outside the team that were important. SpecLad submitted a fix to MAME’s core floppy disk emulation where it could sometimes miss the first bit (not even byte!) of a track on the disk, causing an I/O Error even though the disk was actually perfectly fine. SpecLad did it in particular to solve some issues with the Apple II, but users and developers of other computers emulated in MAME quickly discovered that the fix solved problems for them too. Well done, SpecLad!
Coming from univta0001 was a report that some versions of the Apple //c ROM’s self-test were failing in MAME due to improper read back of a couple of soft switches. Based on their excellent detailed report I was able to quickly come up with a fix, and now it’s “System OK” as far as the eye can see. Thanks, univta0001!
As always, progress doesn’t stop when the freeze for a new release happens, and just missing the cutoff for 0.267: I discovered that the Service Request timing on our Apple Desktop Bus keyboard and mouse emulation was out of spec. This didn’t bother the PIC1654S, Egret, Cuda, the 65C02 coprocessor in the IIfx, or the Mitsubishi M50740 microcontroller in the Apple IIgs. But it did very much bother the Mitsubishi M50753 microcontroller used in the Mac Portable, PowerBook 100, PowerBook 140/170, PowerBook 160/180/180c, and PowerBook 145. Bringing it down to the spec value caused the keyboard and mouse to start working properly on all of those systems, revealing in the process that they have many other problems (LOL). So those machines will be a work in progress but major improvements certainly have been made.
