Mini vMac – Macintosh Plus emulator

I received my Playdate last week, and got started straight away porting Mini vMac

home-card

It uses Mini vMac's ROM hack to have the screen the same size as the Playdate, which looks cute, but isn't very compatible. It might be a better idea to emulate the full 512×342 screen and use scrolling instead.

system6-about

It runs at about 3.5 times slower than a real Macintosh Plus, the main bottleneck is emulating the 68000 CPU, so I'm looking to replace the CPU core of Mini vMac with something more efficient (Musashi, UAE, what else is there out there?)

If I can get it to run at the correct speed, then it should be possible to enable sound without hearing horrible artefacts.

The source code is on github with a more detailed readme, and built versions in the releases page.

12 Likes

I wonder how much benefit there would be to only draw dirty rows? Probably worthwhile on desktop apps but not so much in games where more of the screen is active.

But it sounds like the same battle as other emulators, such as Game Boy. Maybe a bigger battle because M68K is more demanding than Z80.

The was an early WIP MegaDrive emulator

I messed around with this and squeezed out a few frames plus made some tweaks to clock and get around 20FPS with reasonable performance. It’s obviously not running at 8mhz. It’s funny you’re working on this as I started the same two days ago! And today, had the same idea of replacing the emulator.

This might be an idea: https://github.com/davecheney/minimacplus/tree/master/firmware/components/tme

here is another emulator geared toward speed (and c++)

Another interesting idea would be to convert the interpreter to a threaded model, which would use reduced instructions for function execution. I.e. directly in our hot path. Not a lot of interpreters do this since it’s more a feature of gcc but as luck would have it.. that’s the compiler we use!

I added it to my tamagotchi port and it worked wonders. Will look into it tomorrow and see how challenging it would be to retrofit.

1 Like