Native Noita on Apple Silicon, without Wine or Rosetta. noita.exe (32-bit x86) is statically recompiled to C
and compiled for ARM64, and a native runtime (runtime/, see its README) stands in for Windows and the game's
DLLs: SDL2, OpenGL, LuaJIT and FMOD are bridged to their macOS versions.
- A Mac with Apple Silicon (M1 or later), macOS 14 or later, and a few GB of free disk space.
- Noita for Windows from GOG, the build of Jan 25 2025 (version
20250125-1640on GOG). See Supported builds. - About 15 minutes, most of it waiting for the build.
This repository contains no game code or assets, so there's no download-and-play app: you build Noita.app
yourself from your own copy of the game. The steps below take you through it. (The repository does include facts
observed in the binary: the runtime is written against addresses and data layouts in one build of noita.exe, and
tools/icall_targets.txt lists indirect call sites and the targets seen there at run time. The recompiled C is
generated on your Mac and is never committed or shipped.)
All commands go in Terminal (Applications → Utilities → Terminal).
Install Apple's command line developer tools (a dialog opens; click Install):
xcode-select --installInstall Homebrew if you don't have it (follow the instructions on its home page), then:
brew install sdl2 uvHomebrew's sdl2 is sdl2-compat, an SDL2 layer that runs on SDL3; it installs SDL3 too, and step 5 copies both into
the app.
git clone --recursive https://github.com/paulstraw/mina4mac.git
cd mina4macThe remaining commands run from this mina4mac folder. If you cloned without --recursive, run
git submodule update --init once.
You need the folder that contains noita.exe (along with data/, msvcp120.dll and the rest). There are two
ways to get it:
-
If you already play Noita through Wine (CrossOver, Whisky, Porting Kit, a Wineskin/Sikarugir wrapper): the game is already installed inside the wrapper, usually at
drive_c/GOG Games/Noita. For a wrapper app, right-click it in Finder, choose Show Package Contents, and look underContents/SharedSupport/prefix/(or similar). Leave it where it is. -
Otherwise, unpack GOG's offline installer. On gog.com, open your library, select Noita, and under the Windows downloads choose the offline backup installer (
setup_noita_….exe, plus any.binfiles listed next to it; download them all to the same folder). Then:brew install innoextract innoextract --gog -d ~/Games/Noita ~/Downloads/setup_noita_*.exe
The game folder is
~/Games/Noita, or~/Games/Noita/appif innoextract put the files in anappsubfolder: use whichever one containsnoita.exe.
Keep this folder where it is: the app runs the game from it.
Noita uses the FMOD audio engine, and FMOD's license doesn't allow redistributing it, so you download it yourself. Without it, the game runs silently. The game ships FMOD 2.01, so you need a 2.01 version (2.02 and later won't work):
-
Create a free account at fmod.com (Sign in → Register) and sign in.
-
Go to fmod.com/download and find FMOD Engine. Pick version 2.01.23 from the version list (it's an older version, so you may have to open the older versions list); any 2.01.x works, but 2.01.23 is the one that's been tested.
-
Download the Mac installer. You get
fmodstudioapi20123mac-installer.dmgin your Downloads folder. -
Back in Terminal, in the
mina4macfolder:tools/setup_fmod.sh
It looks for that file in
~/Downloads; if yours is elsewhere or a different 2.01 version, pass its path:tools/setup_fmod.sh ~/path/to/fmodstudioapi201XXmac-installer.dmg. It should finish with a line startingFMOD 0x000201.
If you skip this now, you can do it later and repeat step 5.
Pass the game folder from step 3. (Tip: type the command up to the opening quote, then drag the folder from Finder into the Terminal window to paste its path, and remove the extra quotes if it added its own.)
tools/package_app.sh "/path/to/Noita"This checks that your noita.exe is the supported build, then recompiles it for your Mac. It takes about 5 minutes
on an M1 Max, and your fans may spin up. It ends with a line like
build/Noita.app: game /path/to/Noita, FMOD yes. (FMOD no means step 4 wasn't done: the game will be silent.)
Copy the app to your Applications folder (or anywhere else) and open it. The name below keeps it from clashing
with a Wine wrapper that may already be called Noita.app:
ditto build/Noita.app ~/Applications/"Noita (mina4mac).app"
open ~/Applications/"Noita (mina4mac).app"Existing saves. mina4mac keeps its own saves, laid out like a Windows profile, in
~/Library/Application Support/mina4mac/AppData/LocalLow/Nolla_Games_Noita/. To continue a run from Windows or
Wine, open the app once so that folder exists, quit it, and copy your old Nolla_Games_Noita folder's contents
there (from %USERPROFILE%\AppData\LocalLow\ on Windows, or drive_c/users/<name>/AppData/LocalLow/ in a Wine
prefix). Back up both sides first.
Updating mina4mac. In the mina4mac folder, run git pull && git submodule update --init, then repeat steps
5 and 6. Do the same if you move the game folder.
Only the GOG build of Jan 25 2025 (listed on GOG as version 20250125-1640) is supported, and step 5 refuses any other noita.exe. The Steam version is a
different binary and doesn't work. When Noita is patched, the runtime has to be updated for the new build before it
works, so keep a copy of the supported game folder (and its installer).
Tested on an M1 Max with macOS 26.6. Other chips and macOS versions haven't been tried yet, so please include yours in bug reports.
- "… is not the supported build": your
noita.exeis a different version (or the Steam build). See Supported builds. - "no Noita install at …": the path in step 5 isn't the folder that contains
noita.exeanddata/. - No sound: step 4 wasn't done, or was done after step 5. Run
tools/setup_fmod.sh, then steps 5 and 6 again. - "Failed loading SDL3 library" (in the log, or the app quits at once): the app was built before step 5
bundled SDL3. Update mina4mac (
git pull) and run steps 5 and 6 again. - "Noita install not found" when opening the app: the game folder moved or was deleted. Run steps 5 and 6 again with its new location.
- Crashes or other bugs: open an issue with your Mac's chip
and macOS version, and attach the log,
~/Library/Logs/mina4mac.log. The previous launch's log ismina4mac.log.1, so it survives one relaunch.
docs/PLAN.md and docs/PLAN2.md describe the design and record the history. The tools work on a copy of the game in
build/game: copy the binaries there, then tools/setup_game.sh adds data/ and mods/.
uv run tools/build_all.py builds build/mina4mac with ThinLTO (about 3 minutes; --lto off skips it), and
tools/check.sh runs the verification sequence. tools/determinism.sh run checks world generation against the Wine
build without clicks. The build first runs tools/regsum.py, which proves per function which callee-saved registers
it preserves and how many argument bytes it pops, so call sites can skip reloads (cached in build/<module>/regsum.pkl;
about 2 minutes when the lifter changes). build_all.py --sync check builds a binary that verifies every skipped
reload at run time and exits 12 on a wrong summary; --sync full turns the optimization off.
Optional profile-guided build: tools/pgo.sh builds an instrumented build/mina4mac, trains it on the perfbench
scenes (tools/perfbench.sh install mina4mac first; about 10 minutes, since the instrumented game runs ~12× slower),
merges the profile into build/pgo/mina4mac.profdata, writes an order file (hottest functions first) and rebuilds
with both (tools/build_all.py --pgo use --order). The profile is derived from your own copy of the game, so it
stays in build/ and is never committed. The gain is small (see docs/PLAN3.md, Phase 10), and the default build doesn't use it.
MIT, see LICENSE. Bundled third-party code keeps its own license: LuaJIT (third_party/luajit, MIT) and the
Khronos OpenGL registry (third_party/khronos/gl.xml, Apache-2.0). SDL2 (sdl2-compat) and SDL3 (both zlib) and, if you set it up, FMOD (under
FMOD's own license) are copied into the app you build. Noita is © Nolla Games; this project isn't affiliated with them.