I am excited to share that I have managed to implement some basic hardware 3D acceleration in SheepShaver -- the PocketShaver project specifically, since my knowledge allowed me to experiment with this and implement most easily for iOS using Metal.
Is it a Rage 128 emulator? In true SheepShaver fashion, absolutely not! Instead, we intercept RAVE calls, translate them to Metal, and composite the rendering with the SDL framebuffer. Even in debug mode with extremely verbose logging, the performance on my M4 iPad is fabulous. I do also plan to port the wrapper to SDL3-GPU to allow the other SheepShaver target platforms to take advantage of this.
As soon as I work out a couple of very silly issues (disk first aid on startup blocking RAVE, etc.) as well as implementing the rest of RAVE 1.6 (fog and more!) I will be publishing source as a branch of PocketShaver. Expect a link in the next few days -- but in the meantime, please enjoy the following video of Nanosaur running with some texture issues and with RAVE 1.6 methods still stubbed
This is awesome... part of me wonders if, once converted to SDL3, this could be further converted into a virtual graphics card that could even be used with other emulators. Sure, it's not a real ATi Rage 128 emulation, but the results should be pretty close, if RAVE is being fully implemented.
In the meantime, it seems to me the RAVE wrapper for Metal should port quite nicely to macOS SheepShaver too (and possibly to Basilisk II, although RAVE on a Mac II seems a bit... odd).
adespoton wrote: Fri Mar 13, 2026 4:09 pm
This is awesome... part of me wonders if, once converted to SDL3, this could be further converted into a virtual graphics card that could even be used with other emulators. Sure, it's not a real ATi Rage 128 emulation, but the results should be pretty close, if RAVE is being fully implemented.
In the meantime, it seems to me the RAVE wrapper for Metal should port quite nicely to macOS SheepShaver too (and possibly to Basilisk II, although RAVE on a Mac II seems a bit... odd).
The implementation is at the RAVE API level rather than hardware register emulation, so it's specifically tied to how SheepShaver's PPC emulation works! Think native opcode thunks, Mac memory address translation, CFM library registration, etc. Therefore it wouldn't plug into another emulator without significant re-engineering. A true virtual Rage 128 (register-level GPU emulation) would be more portable across emulators but is a dramatically harder project, at least for me That said, the Metal rendering core (vertex conversion, texture management, pipeline state) is fairly clean and could be extracted as a reference for anyone wanting to do something similar elsewhere, but it is unfortunately not suitable to be used as a GPU emulator.
It will, however, run very easily on macOS SheepShaver with some minor framebuffer compositing work.
I am excited to share the news that source for a branch of PocketShaver implementing hardware graphics acceleration is now available. As mentioned earlier in this thread, hardware acceleration in this case takes the form of Metal backends that intercept Mac OS graphics APIs. In addition to QuickDraw 3D (QD3D) RAVE 1.6, I have implemented hardware-accelerated Metal wrappers for OpenGL 1.2 and native 2D QuickDraw.
Running this branch with all three hardware acceleration modes enabled, lots of RAVE and OpenGL applications and games partially work, some mostly work, and others crash altogether. I am aiming for significantly improved compatibility over time as this was all implemented from QuickDraw 3D / RAVE 1.6, OpenGL 1.2, and native 2D QuickDraw specs and headers. An implementation written to spec should work perfectly with all games, right? There are also still some gaps and known limitations noted in documentation that I plan to address.
This code should be considered pre-alpha and early access. Currently, the only target supported for gfxaccel is PocketShaver for iOS/iPadOS. RAVE, OpenGL, and 2D NQD acceleration wrappers must explicitly be enabled within PocketShaver settings, on the "Advanced" tab.
Oh very very nice, what an achievement, am already longtime emaculation member, this is wow news ! I hope to find a sheepshaver macOS version soon, thx for the good work(s)
rscaboyke wrote: Mon Mar 16, 2026 7:25 pm
Oh very very nice, what an achievement, am already longtime emaculation member, this is wow news ! I hope to find a sheepshaver macOS version soon, thx for the good work(s)
Thank you for the kind words! If you are handy with Xcode, you can actually get the hardware-accelerated version of PocketShaver to build and run on macOS while we work on formalizing Mac support. Just pick "My Mac (Designed for iPad)" as the build target. You would need to pull the contents of the repo and locally merge in the three PRs I submitted today.
This is seriously excellent work, well done! I will follow your progress closely.
I wrote a 2D-only virtio-gpu driver for OS 9 a few years ago, aiming for better host integration. A guest driver for a 3D "virgl" device would need to emit a command stream closely modelled on Gallium3D. Do you have any experience with Gallium?
Plan to post a TestFlight build for PocketShaver + Sierras pre-alpha hardware acceleration soon.
Have made another branch where I mainly fixed touch input (it was a bit broken with the new render engine) as well as fixed gamepad overlay.
Ofc, these fixes are mainly interesting when running on iPhone / iPad, and I know a lot of ppl are going to just want to run it on Mac or iPad with mouse + keyboard. So I won't get too stuck on it! (Probably almost done)
The build will be on a parallell TestFlight invite link. But afaik it should be no problem to subscribe to both invite link groups.
And just to clarify: PocketShaver runs on macOS too (from build 14 and onward).
Here is a teaser screenshot of Heretic II running on PocketShaver with OpenGL engine! Got good frame rate and no glitches
Oh this would be magnificent ! Tried myself to compile sierra's pocketshaver with rave support several times but to no avail because wouldn't compile on iMac M4, waiting for years to hear any graphical acceleration in os9 emu, even if there is time limit within TestFlight even than we have the chance to try it out on Mac ourselves, after time of testing a macOS port will come available I think and of course hope so. So thx for all the fantastic work done all of you
emendelson wrote: Sat May 16, 2026 11:03 am
This is terrific. On a Mac, will it be possible to run it someday without the time limits that I think are imposed by TestFlight?
The plan (and it is my understanding that Sierra agrees with this) is that version 1.0 on AppStore would likely be one without the hardware acceleration, but that we will include it in a subsequent AppStore submission once it is stable enough
I will make sure there is always a non-expired build available in the meantime!
Please enjoy build 15 of PocketShaver (TestFlight link)
What's new:
A pre-alpha release of graphics acceleration features, which consists of
- Native QuickDraw acceleration
- RAVE acceleration
- OpenGL acceleration
- DrawSprocket acceleration
Some notes:
This TestFlight group is not the same as the one in the other thread. But you can be subscribed to both groups simultaneously.
Just be a bit aware of which builds are for which group so you are not surprised by the Graphics acceleration section disappearing and reappearing
It should be no problems switching back and forth between the graphics acceleration-builds and ordinary builds. There are at least no breaking changes in preferences between build 14 and 15.
Even when all four acceleration options are toggled off, the graphics pipeline works differently than on build 14. So if you are experiencing problems, that you did not encounter before, it could be worth switching back and forth between builds.
To get some accelerated software running it can sometimes require some of the acelleration toggles to be turned off, and only the kind of acceleration you need turned on. Experiment to check what works for any given software title!
Most devices I have tested on runs this well, and with good performance. However my two oldest test devices (iPhone 6S and iPhone SE 1st gen) could not boot. The screen simply became black.
Please let me know if any input method is not working as it should. I had to change quite a bit of the touch input logic to work with the new graphics pipeline, and I think I got it working, including two finger steering and relative mouse mode. Mouse + keyboard input worked as expected without need for changes.
All work related to graphics acceleration is 100% written by @sierra760. And if you have not checked out the code yet, I can assure you this is an incredible feat, both in scale and depth. I must say I feel personally honored to be working in the same project as her!