18 July 2025

Super Mario 64 Hacks on Apple Silicon (Native)

Update 26.7.2025: The very promising Launcher for Super Mario 64 received a nice update. See the new chapter at the bottom of this entry!

Update 18.7.2025: This time, a very welcome update of Render96ex_MacOS, including rumble and support for Retina displays. This is definitely worth the work of the manual compile. Build yourself the latest version and install Texture Pack and Dynos, it is definitely worth the effort!

Update 8.7.2025: late to the party with the latest CoopDX version 1.3.2 - https://github.com/coop-deluxe/sm64coopdx/releases/tag/v1.3.2 - another must download, hyper-polished gaming experience with the dynos mentioned below. So Coop Deluxe is the app to go.

Update 26.03.2025: another update of CoopDX with the latest and greatest version of the app and the Render96 Dynos resources, including actual github links. Good to see such great app further updated.

Update 18.11.2024: Amendments to CoopDX, which really rules. First preview of the SM_OSX launcher that already now shines.

Please allow me this major digression from Arcade gaming: I still adore Super Mario 64, and from time to time and fire up my Nintendo64 only for this game. I also like the game as ported to the Nintendo Switch, but the experience is basic.

Now, there have been exiting Super Mario 64 Mods and Hacks out for a while that deliver the goods. If you are capable of the Command Line and Homebrew, they are also available for under MacOS, in particular Silicon Macs. And with a MacOS-native launcher currently in revamp, things could get easier as well.

Here are the instructions for three solutions that worked for me. It's quite easily to loose focus with all the different repositories, so let's look into three solutions that work reliably.

1. smex: The oldest repo and manual install, but perfect for textures and rumble.

2. Render96ex: Not as impressive as under Windows with raytracing, but still powerful.

3. SM64CoopDX: Bleeding edge, a lot of mods and romhacks out there, though designed for cooperatives, you can also play it solo (host yourself). Endless gaming.

Screenshot of Render96ex with Textures and Models


Teaser: With all three solutions discussed here, you get incredible Super Mario 64 gaming experience that hugely outperforms the original game. Out of the box comes 60fps and widescreen. It is not an emulation, but a re-compiled MacOS app. With this alone, you should be interested.

MacOS-specific hint: MacOS display scaling is your enemy for all these apps! In my own case, I have to set my 4K-monitor to native resolution without scaling, while normally I use MacOS with the largest scaling. But especially with custom textures, this scaling causes a lot of jittery effects in all three solutions. So prior to using any of the following solutions, be sure to switch MacOS-scaling off. It‘s only one click, leave the window open to revert after gaming - no big hassle.

By the way: That can also be very true under Windows11 in my own experience, only that I could not find such an easy solution there as with MacOS.

Turning off scaling is a must for hi-res textures.

Requirement for all solutions: Super Mario 64 (USA).z64 rom 


Solution 1: sm64ex

p3st texture pack ... so beautiful

Solution 2: Render96ex_MacOS

See the beautifully redrawn Mario and trees

Another Render96ex screenshot, still much better in real gaming.

Solution 3: SM64 Coop Deluxe

Here everything gets really crazy ... 

A lot to tweak here, georgeous gfx, but only if you install the dynos into the app bundle


The night mode is incredible fun as well

  • Pre-compiled app: https://github.com/coop-deluxe/sm64coopdx/releases/tag/v1.2.1  (yes, nothing to compile here!) - drag and drop the rom into the window, and ready to go (in version 1.2.1 I got a "damaged" error, which I could resolve in the Terminal: xattr -cr /Applications/sm64coopdx.app, then the app launched for me.
  • Features: same as Render96ex, but again substantially expanded with a focus on coop; for the real experience, you must install the Dynos (see above sceenshot) into the MacOS app bundle
  • Render96 Dynos Packs: this is a must for the real beauty of this app 
  • Tons of Romhacks being available here: https://mods.sm64coopdx.com/mods/ - and just to name a few that work nicely: sm64land, sm74 and star-road; don't forget to use different save channels for each romhack!
  • Review: Still so much to evaluate, but a huge thing for sure. Graphics are top notch, and in hosting mode, you can also play alone for your own. The night mode is just incredible (including a different music at night), and so are the tweaking possibilities on your character. 

That's how the dynos packs should land in your app bundle, a bit clumsy to install and update, but very much worth it.





sm64ex Compilation Instructions for Apple Silicon

Written instructions for this one seem to be missing (it is very similar to Render96ex, so if you manage this, you will have no issues with Render96ex):

Instructions taken from this video: https://www.youtube.com/watch?v=Z9ATIdJ0N5U (and completed with missing Homebrew packages)

1. Homebrew: Assuming that you have a working Homebrew environment - these are the officially required packages:

gcc make sdl2 audiofile pkg-config glew glfwgcc sdl2 audiofile pkg-config glew glfw mingw-w64

Note: audiofile no longer installs with me in Homebrew these days, but compilation still worked for me.

2. In the Terminal, clone the repo: git clone https://github.com/sm64pc/sm64ex

3. Put the original rom into the cloned repo and rename it to baserom.us.z64

4. Apply the 60 fps patch manually: I forgot this crucial step in my initial version of these instructions, very sorry. For this, please change directory into the cloned repo:

from within the repo directory: ./extract_assets.py us

from the same place then: ./tools/apply_patch.sh ./enhancements/60fps_ex.patch

Important: You must execute the patching from the root directory of sm64ex, otherwise it does not reckognize the files to be patched - that took me a long time to understand. You should see in the terminal that the patch has been applied to include/types.h and several files in the src folder.

5. In the Terminal, then build the game:

gmake OSX_BUILD=1 BETTERCAMERA=1 NODRAWINGINSTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1 EXTERNAL_DATA=1 -j10


6. You get the compile in the build/us_pc directory - sm64.us.f3dex2e - move the entire build/us_pc directory to a place of your liking.


7. Start the app from the Terminal from within this directory: ./sm64.us.f3dex2e - sorry, no double-click for the time being (you could help yourself with an .sh script for sure)


8. Install one texture pack: /res/gfx/


only one at a time is possible

8. Enjoy!



Comparison to Windows 11


Collector for a comparison to Windows and identified limitations


1. Overall performance: Once you get it compiled, the SM64 apps work beautifully on my M2 Pro. No performance difference so far to a quite beefy Windows 11 gaming PC. Textures also work perfectly, and so does my PS4 joypad. Nothing to complain so far.


2. Render64 has no raytracing: On Windows, it's rather breathtaking to experience Render64 with raytracing gfx. While the MacOS solutions shines enough for me, this disclaimer is needed.


3. Rumble now works for SM64ex and Render96ex on Macs.


4. Smaller graphical glitches that can be seen in some levels: But they also exist in Windows, so that's no disadvantage of MacOS.


5. SM64 Launcher now updated - grab version 1.3.8 here: 

https://github.com/EmeraldLoc/sm_osx/releases/tag/v1.3.8

While the launcher currently does not provide a lot of repositories, it is a nice start.



SM_OSX Super Mario 64 Launcher for MacOS


https://github.com/EmeraldLoc/sm_osx 


I use its current new version 1.3.8 for launching three SM64 titles:

  • Render96ex: compiled with this app as "Custom" from a special fork, as explained below
  • SM64CoopDX: pre-compiled download linked into the launcher, as explained below
  • SM64ex: compiled with this app from the standard repository


First steps with the app: After first launch, the app requests your Super Mario 64 rom. Rename it before to 
baserom.us.z64 and choose it in the app dialogue. It should be accepted.

Next is to Add a Repo

Note that the sm64ex_alo repo currently does not work.

The first two choices "render96ex" and "sm64ex" should work, provided that you have the required Homebrew packages installed. See the Homebrew requirements under the compilation instructions above. While the app itself provides an option to check the Homebrew dependencies, I would strongly recommend you to understand and install Homebrew by yourself, it's worth understanding this.

Custom Render96ex install: For the Render96ex repository metioned above that contains rumble and hires support, choose "Custom" and provide these settings:




Name: Render96ex (or whatever name you prefer)
CloneURL: https://github.com/flatmapthatshit/Render96ex_macOS.git
Branch: leave empty
Build Flags: leave empty
Custom Executable: leave empty
The OSX-BUILD=1 Build Flag is enabled by default.

Add Repo to Launcher is the right option, then start compilation.

Integrate SM64CoopDX with a trick: As Super Mario 64 Coop Deluxe is provided as App bundle, you need to integrate this app into the launcher with a small trick.
  • Open the App bundle by right mouse -> Show Package Contents
  • Open the MacOS directory -> there the binary sm64coopdx is located
  • In the SM-64 Launcher, press the + button on the upper right corner and choose Add Existing Repo
  • In the Window to choose the Repo, you must now drag the sm64coopdx binary into it -> then you can choose it.
  • Then you can rename the "New Repo" to a name of your liking, and the app should start from within the launcher.
You will find the newly generated repositories in your User directory under SM64Repos. 
For the installation of custom content, please see instructions for each app above, they apply the same way. 

Enjoy the benefits of this nice launcher.

10 comments:

  1. Hi, im reading your guide on how to compile sm64ex, and i get to step 5, where on my mac i have gnumake instead of gmake. it gives me this error:
    sm64ex % gnumake OSX_BUILD=1 BETTERCAMERA=1 NODRA;2D;2CWINGINSTANCE=1 TEXTURE_FIX=1 EXT_OPTIONS_MENU=1 EXTERNAL_DATA=1 -j10
    find: /opt/homebrew/bin/gcc*: No such file or directory
    find: /opt/homebrew/bin/gcc*: No such file or directory
    find: /opt/homebrew/bin/gcc*: No such file or directory
    Makefile.split:152: build/us_pc/level_rules.mk: No such file or directory
    gnumake: pkg-config: Command not found
    cpp- -P -DVERSION_US -D_LANGUAGE_C -DNIGHTLY -DGIT_HASH="\"d7ca2c0\"" -DNON_MATCHING -DAVOID_UB -DOSX_BUILD -I . -o build/us_pc/level_rules.mk levels/level_rules.mk
    /bin/sh: cpp-: command not found
    gnumake: *** [build/us_pc/level_rules.mk] Error 127
    zsh: command not found: 2D
    zsh: command not found: 2CWINGINSTANCE=1

    i am not familiar with terminal commands at all, and i was wondering if you knew how to fix this. id appreciate some help, thank you!

    ReplyDelete
    Replies
    1. Hi, and thanks for your interest. One rule of thumb: If you deviate from compile instructions (in your case another compiler), you‘ll be always on your own. Besides that, would not be able to help quite probably. In accordance with my small updates, I can recommend coop ex, which is pre-compiled and rocks! Good luck!

      Delete
  2. Hey Estefan, thanks for mentioning the Render96ex_macOS. Fun fact, this was meant to be a temporary thing so I could fix the macOS build and contribute fixes upstream. I couldn't get my changes merged into Render96ex, and the repo ended up taking on a bit of a life of its own. I'm glad to see that people are still using it.

    I've just merged a patch that should fix rumble support (at least it worked for me with an Xbox controller). If you can test it and let me know, I'd really appreciate it. I'll also look into scaling on Retina displays, as a couple of other users have mentioned the same issue.

    ReplyDelete
    Replies
    1. Retina support added to alpha_macOS branch. Testing and feedback is appreciated.

      Delete
    2. Great! Rumble also works here on my PS4, very nice update, so many thanks! Still need to check the new branch.

      Delete
    3. PS: If I am not mistaken, I downloaded the Alpha branch as your default branch. I have no Retina display, but a 4K Dell, and it looks flawlessly at first glance. Will dig further into it and update this post. Great work!

      Delete
    4. Looks all very nice and working. Real eye candy.

      Delete
    5. Hey Estefan. Glad to hear it! Yes, the default branch is the alpha-macOS branch. And what I'm calling "Retina Display" support is actually proper scaling support. So if it works on your 4k Display without having to change the Display scaling then I guess it's working :)

      Delete
    6. Yes, it scales nicely here! The only comment I would have (I suck on Pull Requests): The url in the git clone command of the ReadMe does not work for me (failing permissions). I use the plain url instead, and it clones nicely. Cheers!

      Delete
    7. Glad to hear. Changed it to use HTTPS. SSH is more convenient overall, but requires some setup (https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). But given hat a lot of users won't necessarily be familiar with Git I think that https makes more sense for sure.

      Delete

Any comments are welcome!