M4 Pro: The Emulation Beast

KingOfPain

Site Champ
Joined
Nov 10, 2021
Posts
495
I'm still at the process of testing some emulators on my new Mac mini (M4 Pro with 64 GB RAM), but from my first impressions this machine is really capable in terms of emulation (I cannot judge the basic M4, but I'm guessing if an emulator doesn't utilise more than 4 performance cores it should probably have similar performance).

I'll have to perform more testing with some of the more demanding emulators, but there are a few I won't be covering, because they already were more or less perfect on the M1. Therefore, I'll skip all 8 bitters, 16 bitters, and most 32 bitters, and even some 64 bitters (since Dreamcast and Gamecube run fine on an M1 with Flycast and Dolphin, respectively).

An honourably mention goes to the N64 emulation of ares. This was still somewhat choppy on the M1, but seems to run very smoothly on the M4 Pro even with UHD render quality enabled.
Unfortunately, my Xbox One controller isn't recognised by ares, and the primitive SNES-like controller that is recognised lacks an analog stick, which makes testing quite hard.
All other systems emulated by ares shouldn't have any problems, but with its general very low-level approach the N64 emulation is quite demanding here.

When I compiled a list of interesting emulators over 4 years ago, before I switched to the M1 MacBook Air, I was really hoping of running Windows 9x on DOSBox-X or PCem to play a few older games, in particular Jedi Knight (aka Dark Forces II). But using 3DMark2000 as a test, the Voodoo emulation in both was so atrociously slow and had graphics errors that they wouldn't be able to run any real game. Also, the Mac port of PCem was only an alpha, which never got updated, and the original maintainer of the mainline source for PCem, Sarah Walker, dropped development and it has been somewhat dormant since then, despite having a new maintainer.
Back then I didn't have 86box (a fork of PCem) on my radar, because it was Windows-only. But in a matter of three or four months it had been ported to Linux, then macOS, then native Apple Silicon.
I'm not using it to run Windows games, though, as CrossOver, Whisky, or Parallels are better candidates for this task (I actually managed to get Jedi Knight running with dgVoodoo2 on Parallels, and now it's even easier with DREAMM). And for DOS game, DOSBox-Staging is much easier to handle than real DOS on a PC emulator.
What I use 86box for is a bit of nostalgia by booting BeOS, which I used before I switched to macOS on a PowerMac G5. I configured the PC that I was using back then to run BeOS:
ASUS P2B board with 350 MHz Pentium II and a Voodoo Banshee video card. I couldn't remember which sound card I had (only that it used a Yamaha chipset), thus I simply used a Soundblaster 16 PnP for compatibility reasons. (I eventually upgraded my real PC with a 550 MHz Pentium III and an ATI Radeon card, but 86box doesn't emulate Pentium III and vanilla BeOS has no Radeon drivers).
On the M1 this setup somewhat worked, but the startup sound after reaching the desktop was a bit choppy, and IIRC the demo videos didn't play smoothly.
On the M4 Pro the startup sound is the just the way it should be, and the videos (of monitors being tossed off a roof) play smoothly. Playing both at the same time is getting choppy, though. I cannot recall if the real hardware was able to handle two videos at the same time over 20 years ago. BTW, I set the desktop resolution so high that BeOS warned me it could damage the "monitor".
Also, while playing the included demo songs, the music gets slightly interrupted when opening the photos of the composers. I'm guessing this is a timing limitation of the emulator not a performance problem with the M4. BeOS is famous for having a very quick response time and 86box might not be as precise.
Since the M4 Pro didn't seem to have any issues performance-wise, I cranked the clock of the emulated Pentium II from 350 to 450 MHz, and the emulated machine is still at 100%.
For a joke, I just installed Windows 98SE, a Voodoo Banshee driver, and DirectX 8.1 to run 3DMark2000. I was surprised to see the demo mode running smoothly and as far as I can tell without any graphics errors. The CPU utilisation ranges from slightly above 200% to occasionally close to 300% while running the demo. I suspect 86box might be able to run less demanding games even on a basic M4, but I think I'd still prefer the other options mentioned above, unless the game demands an original Windows 9x.

I almost didn't test the Xbox emulator xemu, because someone mentioned in a Youtube video that it doesn't run playable, even on the M4 (I cannot remember if it was a Pro or not). That was also my impression after testing it on the M1.
It took me a while to get it running again, because it has been a few years since my last test and it seems xemu has switched from normal ISOs to XISOs, which requires some conversion.
Surprisingly, Halo 1 runs perfectly playable for me (I completed the first two levels without any issues). On the M1 it started out OK, but had huge frame rate drops during explosions or with multiple enemies, but not so on the M4 Pro.
I also suspect there might have been large improvements in the emulator itself, since Halo 2 had big texture issues. This has been improved a lot, but I still wouldn't count it as playable (subpar frame rate, the HUD doesn't seem to work, and still some texture issues).
Riddick also has many issues (the main menu is practically all black), and Oddworld: Stranger's Wrath has the problem of textures occasionally not showing up, which makes it hard to play.
I still have to test Fable and KOTOR...
But if you want to see Halo 1 again, I can definitely recommend it. I doubled the internal resolution to make it look better. For some reason the textures don't look as dated to me as in a lot of other games, but that might just be nostalgia. But the M4 Pro is definitely getting hot here (over 100°C).

That's it for now. If you are looking for a specific emulator, I can recommend the following site:
 
More solid information on xemu:
Halo 1 actually only runs at 15 to 22 FPS. I guess I'm more tolerant when it comes to frame rates when it comes to emulators. Most gamers would not consider this playable.
Fable and KOTOR run much smoother, though, at 30 FPS and 30 to 50 FPS, respectively. I haven't retested the other games, since those had graphics issues anyway.

While the Playstation 2 emulator PCSX2 has a Metal backend now, it's still not Apple Silicon native and therefore has to run through Rosetta 2.
There is a native emulator called AetherSX2, but it's less compatible, closed source, and has been abandoned for a while.
On the M1 PCSX2 wasn't quite smooth, but on the M4 it seems to run everything I throw it it at full speed with 3x native resolution selected (1080p). The CPU utilisation ranges from 60% to 130%, which might explain the slight performance issues on the M1.
If your CPU is fast enough, go for PCSX2 because of the better compatibility. If speed is an issue, use AetherSX2 instead and hope that the games you are interested in are fully supported.

I wanted to also test an experimental build of the Wii U emulator Cemu with a Metal backend, but I still have some problems getting games to run.

Some eye candy of 3DMark2000 running on 86Box:
1735855790105.png
 
Quick update to solve the controller issue in ares:
Select SDL instead of Quartz as the Input Driver. (I knew I had that working before, but I thought it might have been a regression in this version.)

1738262320337.png
 
Readers with some insight might have missed a few more systems, but most of these are experimental and take more time to test.

I'v been waiting over a year for a native version of the Playstation 3 emulator RCPS3, ever since I saw LevelCap play Killzone 3 on a PC using it.
I wasn't totally sure why the Apple Silicon version took so long, even though there was a macOS version already. Since LLVM is used as the code generator of the DynaRec, this should be much easier than writing a bare-metal ARM64 code generator from scratch.
But there has been an experimental Apple Silicon build for a while:

Funnily enough, the big hurdle is not to find the PS3 BIOS, you can just download it from Sony and the update seems to be on every game disc as well.
The most problematic thing is getting the discs decoded. I ended up using a Windows tool called PS3Dec Simple GUI through Whisky, because everything else was just way too complicated.
If a game has/needs updates, there is another tool called rusty-psn, which seems to download the updates straight from the Playstation Network.

Compatibility is a bit spotty. I couldn't get some of the more interesting titles to work at all (i.e., so far I had no luck with The Last of Us or Uncharted).
Dark Souls started before I installed the game updates, but I wasn't able to leave the first room. After installing the game updates, the emulator hung during precompilation of the last code block.

If the games run properly, then performance is actually quite good.
I tried RCPS3 on my M1 MacBook Air before, and Killzone HD for the PS3 actually ran smoother than Killzone on PCSX2. But that's the big difference between a native emulator and one running through Rosetta 2.
One day I'll have see if I can test with one emulator if the a native interpreter-only version is faster or slower than a DynaRec running through Rosetta 2.

But RCPS3 is truly experimental. The build from two days ago always crashed during precompilation, while yesterday's version started working again.
 
Talking of non-native emulators, the Wii U emulator Cemu is another big one. I mostly tested it, because a colleague of mine wanted to know if I thought that it would work on the base-model Mac mini M4.
Compatibility of the standard Mac port apparently isn't that good, because like other emulators it runs into the limitations of MoltenVK.
But there is an experimental build, which adds Metal support:


The second link also mentions that an Android port of Cemu is being worked on, which means that we might actually get an ARM64 recompiler one day...
The biggest hurdle here was getting updates for games that refused to run without them. After I tried several options I had to resort to a Windows application, which recognised that it was launched under Wine but still crashed. In the end I ran it with Windows 11 on Parallels.

A few hints regarding the setup:
  • Under General settings / Graphics / Graphics API make sure that Metal is selected.
  • Under General settings / Audio / TV Device select your audio output and increase the volume. The preset is Disabled and 50%, i.e., you won't get any sound at first.
  • My Xbox Series controller did only work as a generic SDLController instead of the recognised Xbox controller, for whatever reason.
    Redefining the buttons is also non-intuitive, because the window doesn't show that you actually selected a setting to be changed. Simply single-click the setting and press the button on the controller.
    For most non-WiiU controllers I'd recommend emulating the "Wii U Pro Controller".
  • A lot more interesting bits are hidden under Options / Graphics packs, which are a lot more generic options and enhancements for specific games than the menu name suggests. But you'll have to download the latest community graphics packs first.
    E.g., for BOTW there is an option named FPS++ under Mods, which lets you increase the FPS limit way past the Wii U native 30 FPS. But 60 FPS is probably the most reasonable setting.
In terms of performance, Zelda BOTW is probably the most interesting title.
On the M4 Pro and with FPS++ enabled it rarely dips only very slightly under the 60 FPS, while Cemu eats about 400% CPU according to MenuMeters.
In this experimental build async compilation of shaders works, which means most of the time, you won't even notice that shaders have to be compiled. The only real slowdown was when one of the dormant robots woke up, fired its laser and turned the grass around Link into a sea of fire. I was busy getting out alive, but I'm pretty sure the slowdown was due to shader compilation.

The overlay output provides a bit more details on the performance:
1738502288570.png


Since it has five of the cores, which according to Activity Monitor are definitely performance cores, running at close to 66%, I'm somewhat doubtful that Zelda BOTW would run at 60 FPS on a base Mac mini M4, with only four performance cores.
The GPU also seems to be over 50%, therefore the M4 with with half the GPU cores would most likely be maxed out.
 
Last edited:
Back
Top