Back in 2022 I wrote about building Mupen64Plus natively on Apple Silicon. It worked, but only as a command-line build with a simple launcher script, and the dynamic recompiler (dynarec) wasn't usable on macOS yet. Since then I've been waiting for a proper N64 emulator with a real user interface that runs natively on my Mac.
That wait is over: Assisted by AI, I ported Rosalie's Mupen GUI (RMG) to macOS. It's a modern Qt frontend around mupen64plus with an excellent set of plugins. The result is a signed and notarized app for Apple Silicon Macs, providing premium class emulation performance and comfort, which you can download and start with a double-click.
Download
The first release, RMG for macOS 0.9.0, is available here:
github.com/estefan3112/RMG-macOS/releases
- Requires a Mac with Apple Silicon (M1 or newer) and macOS 15 Sequoia or newer
- Based on upstream RMG v0.9.0 plus all later upstream commits up to early October 2026
- Built, signed and notarized automatically by GitHub Actions, with nothing built on my own machine. Every step is visible in the public build log.
Premium features that work
- Dynarec on Apple Silicon: mupen64plus-core's ARM64 recompiler, introduced to macOS very recently, had some hangs or crashes. The cause turned out to be register x18, which Apple reserves for the operating system. The fix is submitted upstream as mupen64plus-core PR #1198. You find it in ~/Library/Application Support/RMG/Config/mupen64plus.cfg under Section [Rosalie's Mupen GUI - Audio Plugin]. Side note: If you have Logging activated, you may frequently encounter audio crackle if the application has to log a lot, so just be sure that logging is disabled by default.
- GLideN64: OpenGL video plugin with HiDPI, window resizing and fullscreen.
- ParaLLEl-RDP: the accurate, Vulkan-based video plugin, running on Metal through the bundled MoltenVK, with upscaling and without shader-compilation stutter.
- ParaLLEl-RSP: low-level RSP emulation with a JIT, plus the HLE RSP with automatic fallback and the CXD4 interpreter.
- Audio and input via SDL3, including excellent game controller support.
- Game Mode: macOS recognizes RMG as a game and switches Game Mode on in fullscreen.
Games I tested
I've tested my favorite games I still have with me from the Nintendo 64 times, including Super Mario 64, Mario Kart 64, Yoshi's Story, Conker's Bad Fur Day, Gauntlet Legends, plus some ROM hacks of SM64. RMG lets them excel in terms of performance under macOS. It's clearly an improvement of Nintendo64 emulation in macOS.
Tips and known issues
- Gauntlet Legends hangs with ParaLLEl-RSP. This is a long-standing issue that also affects other emulators using that plugin. Set the RSP plugin to "Static Interpreter" (CXD4) for this game in the per-game settings.
- Conker's Bad Fur Day needs low-level RSP emulation: use ParaLLEl-RSP, or keep HLE and let the automatic fallback take over.
- Audio crackles: For some performance heavy games, it helps to turn the audio settings down in mupen64plus.cfg of RMG. The settings PrimaryBufferTarget = 4096 (instead of 2048) and SecondaryBufferSize = 2048 (instead of 1024) helped me tremendously with no noticeable additional lag.
- Not included yet: netplay, voice recognition (VRU) and the raphnetraw adapter plugin.
- Settings and saves are kept in
~/Library/Application Support/RMG.
Hi-res textures with GLideN64
I'm still a big fan of the classic Rice-format texture packs, and they work beautifully in RMG on the Mac. Note that hi-res textures need the GLideN64 video plugin; ParaLLEl-RDP doesn't support them.
![]() |
| Super Mario 64 with a Rice-format hi-res texture pack (GLideN64) |
Setting it up
- In RMG, open Settings → Plugins → GLideN64 settings → Texture enhancement and turn on Use texture pack. Most modern packs also need Use full transparencies.
- Put the pack's PNG folder into
~/Library/Application Support/RMG/Data/hires_texture/. The folder name must match the game's internal name exactly, which you can find via right-click → ROM Information (for exampleSUPER MARIO 64). - Start the game. On the first launch, GLideN64 converts the PNGs into a single compact
.htcfile, so later starts load much faster.
Tip: the Library folder is hidden in Finder. Use Go → Go to Folder… (⇧⌘G) and type ~/Library/Application Support/RMG to get there directly.
Keep the converted textures somewhere safe
By default, the .htc file ends up in ~/Library/Caches/RMG/cache. That folder is meant to be disposable: cleanup tools may empty it, and Time Machine doesn't back it up. I recommend moving it next to the rest of RMG's data:
- Quit RMG.
- Create the folder
~/Library/Application Support/RMG/Data/hires_cache. - Move the
.htcfile(s) from~/Library/Caches/RMG/cacheinto it. - In the GLideN64 Texture enhancement settings, set the texture cache path to the new folder. If the field doesn't stick (it did with me), edit
txCachePathin the[Video-GLideN64]section of~/Library/Application Support/RMG/Config/mupen64plus.cfgwhile RMG is closed.
Once the .htc file works, you can remove the original PNG folder from hires_texture. Do keep an archived copy, for example on a NAS: if you later change GLideN64's texture options, the cache may need to be rebuilt from the original PNGs.
How it was made
Full disclosure from my end: I developed this port standalone with Claude Opus 5.5 (Anthropic) as an AI assistant, and Claude wrote most of the code changes, build scripts and the GitHub Actions workflow. My part was setting up the fork, building, feedbacking, exchanging views, and of course extensive testing of games and settings, debugging with crash logs, signing and notarization, and coordinating with upstream. It was a fascinating collaboration with a lot of happy moments (e.g. seeing Mario's face in RMG under Vulkan for the first time), and I learned a lot about Apple Silicon, JIT compilers and app bundles along the way. As a result, you receive a fully transparent macOS port of RMG that is completely built online. I am also quite proud of this achievement.
What's next
- Contacting upstream to see whether macOS support could become part of RMG itself [UPDATE ONCE THE ISSUE IS OPEN]
- Maybe a CRT shader for ParaLLEl-RDP, certainly further game testing ...
Feedback is very welcome, either in the comments below or as an issue on GitHub.
Big thanks to Rosalie for RMG and to the mupen64plus, GLideN64, ParaLLEl (Themaister) and MoltenVK developers, whose work makes all of this possible.




No comments:
Post a Comment
Comments are welcome - spam and ads will be removed! Please leave a name or a pseudonym, thanks!