A fork of SheepShaver itself, not QEMU, reaches a Mac OS 9.2 desktop on Apple Silicon through the New World path, with a native JIT.
Six weeks ago I wrote a note about going down the stack: SheepShaver booted Mac OS 9.0.4 on Apple Silicon with a native JIT, and 9.2 was the thing I still could not do. That post ended with "I think I could crack 9.2, too."
It boots.
tl;dr
- A fork of SheepShaver, not QEMU, reaches a settled Mac OS 9.2.1 Finder desktop through the genuine New World ROM boot path with the ARM64 JIT on, against one verified baseline and three accepted ROM identities
- The project has a name, NewSheep, and a launcher, SiliconSheep, that can install 9.2.2 from its own installer media and boot the result
- Boot is 28.3 seconds on the verified baseline, and sub-10 with a newer technique I am still validating; no measured comparison against UTM exists yet
- Photoshop 7.0.1, Ultra Pinball and AppleWorks are driven under automation, not just launched
- It only gets exercised on my machine and my use case, so if this is your kind of thing I would like to hear from you
New World is the boot firmware Apple shipped from 1998/9 onward. The earlier "Old World" ROM was mostly a library the operating system called into; New World expects to find a real machine underneath it, and goes looking. And as I lamented in my last post, getting New World working has been a much bigger challenge.
In the end I've made a hybrid between QEMU and SheepShaver, hopefully landing the best of both worlds and not the worst of both. I think it is a good foundation to build on.
Running Mac OS 9.2 on an Apple Silicon Mac is not itself news. UTM has done it for a while, and if you just want 9.2 today, that is still the sensible route. But QEMU underneath UTM simulates a whole Macintosh, every chip the original had, which is why it feels like a 300 MHz G3. NewSheep preserves SheepShaver's method: patch the ROM, run guest threads as host threads, treat guest memory as pointer arithmetic into the host's address space. It is much faster and much less general. NewSheep's new thing is to provide a "just enough" hardware layer.
What's done so far#
The fork has a name now, NewSheep, because at some point "the macemu JIT branch" stopped describing it. Same chain as before (cebix → kanjitalk755 → rcarmo → this).
A real install lifecycle. You can now take your New World ROM and a 9.2.2 installer ISO you own, create a virtual machine, initialize a blank disk in Drive Setup, run Install Mac OS, shut down properly from the Special menu, and boot the thing you just installed. Yay!
A launcher that behaves like a product. SiliconSheep is a desktop app, built with Tauri, that owns virtual machines as first-class objects: create, import an existing system disk, preflight, launch, and an embedded Console for the guest display rather than SheepShaver's raw window.
Testing that runs the whole operating system. An end-to-end harness drives the guest over VNC, waits for the Finder to actually settle rather than merely appear, injects input, and makes Mac OS run its own shutdown.
Real applications, driven. Three of them are exercised rather than merely launched: Photoshop 7.0.1 opens a generated TIFF and applies an Unsharp Mask; Ultra Pinball takes gameplay input in a verified game window; AppleWorks gets a turn too.
A 3D detour. (3-D-tour?) I spent two weeks on ATI Rage 128 acceleration, and it got further than I expected. Deus Ex launches, gets through its splash screen and renders actual geometry.
How fast is it, and what is still missing#
My 9.2 boots under 10 seconds. But it is not yet as quick as Old World 9.0.4 feels, and I have not really pushed the JIT optimizations. I fully expect to get this faster.
Sound, networking and printing are there, and buggy. I have not got to Final Cut Pro 3, which was the whole punchline of the last post. This is an incremental update, not an everything-has-landed post.
If this is your kind of thing#
I am one person, one machine, one way of using it. I develop on an M5 MacBook Air with 32 GB, and I test the paths I already know about. My use case is almost certainly missing something, and I have no way of finding out what from where I am sitting.
So if you have an Apple Silicon Mac, any interest in classic Mac OS, and you read the above with some enthusiasm, I would like to hear from you. (This could be made to work on ARM Linux, but I'm not ready to pivot to that yet.)
Two practical notes. You would be building from source, so this is an evening rather than a download. And a lot of this was built with AI partners, in the working pattern I wrote about earlier this year, which is not to everyone's taste and worth knowing before you spend that evening on it.
That opens a pre-filled message; fill in what you can and delete the rest. I will give you access to the pre-release GitHub repo.
Reporting what you find is the whole of it. Contributing code back is welcome and not expected.
I am going to keep pushing this forward either way. It will get further, and be better made, with other people's input.
Own work.