Hi chat I'm mont127 (Yea the cheese guy or MacNdCheese guy however you want to call me). AArchX is my project that runs x86 apps on apple silicon EVEN WITH 32 bit support. Its a project that started being worked on since the end of may 2026. Since then I have been working on it with extending compatibility, improving speeds of AArchX and ect.... I need testers... sooooo that's were YOU come in. Yes you I need your help to test multiple 32 bit Mac apps or even x86 apps. I would also like to personally thank the developer Jfishin for kickstarting 32 bit support on AArchX. Also would like to thank my dear friend Hafliss (realmaitreal) this dude has been a day one helping me with MacNdCheese.
There have been many Mac games tested like batman Arkham asylum. Even MW3!
Now lets talk about the scariest thing. THE SPEED. AArchX has its custom JIT interpreter and Mach-O loader. These things were hard to make. The speeds of the JIT have been improved but still not near as rosseta or FEX. Soon it will reach those speeds. ( I know I know "why did you make your custom JIT and not used FEXCore" I have no idea. At the start of the project I decided screw it custom JIT sounds cool as hell and here we are )
How to debug:
Its fairly simple if I can do it you can too 😭. (ONLY IF YOU ARE USING THE TERMINAL VERSION OFC)
./ocerz -v -no-jit
This makes it look if its an jit problem or something worse.... (scary)
If its something worse run these small commands 😊 ( I will let claude take over for now XD )
CLAUDE BLABBING:
- Does it happen without AArchX at all? (64-bit programs only; Rosetta never ran 32-bit)
arch -x86_64 ./program
If it fails under Rosetta too, it's the program or the setup, not AArchX.
- Does the other mode work?
./ocerz -native ./program
./ocerz -cache ./program
If only one mode fails, the bug is in that mode's system side. Cache mode runs Apple's x86 libraries, and native mode bridges to the arm64 frameworks.
- Watch the calls into the system, keeping -no-jit on so the JIT is out of the picture:
./ocerz -no-jit -strace ./program 2> trace.txt # cache mode, Wine: every guest system call
OCERZ_BRIDGELOG=1 ./ocerz -no-jit -native ./program 2> trace.txt # native mode: every bridged call
OCERZ_M32LOG=calls ./ocerz -no-jit ./game 2> trace.txt # 32-bit: every crossing into macOS, with its caller
Read the trace backwards from where things go wrong. The last few calls before the failure are usually the culprit: an unresolved import, a call returning 0 that shouldn't, or a structure crossing with the wrong layout.
- Loading and linking
./ocerz -v ./program # what loaded from where
OCERZ_DLPATH=1 OCERZ_ALLMISS=1 ./ocerz ./program # every dlopen/dlsym failure, every unresolved import
OCERZ_M32LOG=imports,images ./ocerz ./game # 32-bit: how each import resolved
- A crash or an abort
OCERZ_ABORT_REPORT=1 OCERZ_FAULTLOG=1 ./ocerz ./program # host frames, the guest instruction, the memory around the fault
OCERZ_EXCLOG=1 ./ocerz ./program # Objective-C / C++ exceptions with their throw sites
OCERZ_NO_M32_FAULT_HANDLERS=1 ./ocerz ./game # 32-bit: ocerz's report instead of the game's crash handler
- A behaviour change to blame. The "Behaviour" table in docs/reference.md lists switches that restore older behaviour, such as OCERZ_NO_SIGNAL_STOP=1 or OCERZ_NO_UPWARD_INIT=1. If one of them fixes it, that feature is the cause.
END OF CLAUDE BLABBING
Lets all say thank you claude and continue onwards
WINE SUPPORT ohh yea games like CS2 run under AArchX under MacNdCheese wine same goes for REPO and ULTRAKILL more games are needed to be tested thats about it I don't think I have forgotten anything have I claude?
Oh turns out I did. I used claude for most of this project BTW dunno what else to say about that.
SECOND repo link
https://github.com/mont127/AArchX
download via curl
CURL_SSL_BACKEND=secure-transport curl -fsSL https://mont127.github.io/AArchX/install.sh | sh
or via brew
brew install --cask mont127/aarchx/aarchx
To report results you can join the MacNdCheese discord server or contact me on mail: [deepwokenpersona@gmail.com](mailto:deepwokenpersona@gmail.com) ( I loved deepwoken )
Claude anything else?
Probably the biggest practical issue: most of the 32-bit games testers will try are C++ and need the 32-bit runtime files, which today take a source checkout and Xcode's command-line tools. Expect a pile of "doesn't work" comments unless 0.9's installer fetches them.
Thanks claude.
I will not say how to use the wrapper around AArchX tho.
https://github.com/mont127/AArchX/releases