Aleph One for old Macs
Marathon 1, 2 and Infinity on one fat binary spanning a PowerPC G3 on Mac OS X 10.3.9 to an Apple Silicon Mac, with OpenGL by default and support for your own dedicated server.
A fork of Aleph One, the open-source engine that plays Bungie's Marathon, Marathon 2 and Marathon Infinity. One Aleph One.app holds four CPU slices and macOS picks the right one at launch. The same download runs natively on a 1999 Blue and White G3 on Mac OS X 10.3.9 and on an M-series Mac on the current macOS. All three games' data ships inside the app, so there's nothing else to install.
The engine and game data are other people's work (see credits). The porting was done with AI (Claude Code) under my direction, and I tested the builds on the machines.
# Get the build
Download the .dmg from the releases page and drag Aleph One.app to Applications, or run it straight off the mounted image. The data for Marathon, Marathon 2 and Marathon Infinity is bundled in. Bungie released it for free, so there's nothing else to buy.
# Which Macs
| Slice | Minimum OS | Covers |
|---|---|---|
ppc | 10.3.9 | G3, G4, G5 (no AltiVec assumed) |
i386 | 10.4.4 | Early Intel Macs (Core Duo/Solo) through 10.14 |
x86_64 | 10.6 | Core 2 Duo and later, current macOS |
arm64 | 11.0 | Apple Silicon (M1 and later), current macOS |
Two of those floors aren't proven yet, because there's no Intel Mac on 10.4 or 10.5 to test on. The i386 slice is built for 10.4.4 but has only been run on Lion (#30). The x86_64 slice was meant to reach 10.5 but needs 10.6 as it stands (#31).
It's been tested on a G3 (10.3.9 and 10.4.11), a G4 Mac mini (10.4.11), a G5 (10.3.9, 10.4.11 and 10.5.8), Core 2 Mac minis on 10.6.8 and 10.7.5 (running i386 through arch -i386 as well as x86_64), a 2019 iMac on macOS 15 and an M5 Mac on macOS 26. I've played it by hand on the G3 and the G5.
arm64 uses the engine's current dependency versions. The other three slices use the pinned versions below.
# Graphics
OpenGL is the default renderer on every slice. The code picks between two OpenGL renderers at startup (screen.cpp):
- The shader renderer, when the driver reports the GLSL extensions.
- The classic fixed-function renderer, when it doesn't, or when the GPU name contains "Radeon 9600" or "GMA 950". Both of those report GLSL support but ran the shader renderer at 1 fps or less when measured.
If the game can't create an OpenGL window it retries in 16-bit colour, then falls back to the software renderer. The software renderer can also be picked by hand in Preferences → Graphics.
On first run the frame rate and texture filtering defaults come from what the GPU reports (apply_first_run_gl_tier). An existing preferences file is never changed.
| GPU reports | Frame rate | Anisotropic filtering |
|---|---|---|
| No framebuffer objects, or a software GL | 30 fps | Off |
| Classic renderer with framebuffer objects (the Radeon 9600) | 60 fps | Off |
| Shader renderer with framebuffer objects | 60 fps | 4x |
| As above, with a maximum texture size of 8192 or more | Display refresh rate | 16x |
The GMA 950 is still slow on the classic renderer, at about 7 fps in the Marathon 2 demo on a Core 2 Mac mini.
# Multiplayer
The client has a "Use Custom Server Address" option in the network game setup (network_dialogs.cpp). You can use it to gather a game on your own standalone_hub, Aleph One's headless server, as well as through the official public server list. It's been tested with a PowerPC Mac and an Intel Mac playing through a hub on Linux.
# Dependency pins
The ppc, i386 and x86_64 slices pin two dependencies to older versions:
| Dependency | Version | Why not latest |
|---|---|---|
| boost | 1.76.0 | 1.90 fails to build on PowerPC |
| openal-soft | 1.23.1 | 1.24+ added AltiVec SIMD that's broken on big-endian hardware |
# How it is built
The three older slices build on two Core 2 Mac minis running Lion. ppc and i386 cross-compile with pinned GCC 14 toolchains, and x86_64 builds with GCC 7.5. The i386 slice links a static SDL2 2.0.3 so it can reach 10.4. arm64 builds natively on my Apple Silicon Mac, which also fuses all four slices with lipo and packages the DMG.
Changes are made by Claude Code under my direction, then built, installed and run on the test Macs.
# Bugs found on the hardware
Every fix is logged in BUGFIXES.md. Two of them:
The PowerPC build crashed on every launch under Leopard. GCC 14 miscompiled an indirect call in boost's case-insensitive string comparison, which runs on every config file load. The build patches boost to use a plain ASCII comparison instead.
Disk images wouldn't mount on Panther, because hdiutil uses a GPT partition table by default and Panther can't read GPT. The DMG is now built with -layout SPUD, the classic Apple Partition Map.
# Credits
- The Aleph One project and everyone in its
AUTHORSfile, whose engine this builds on. - Bungie, who wrote the original Marathon trilogy and released its game data for free, which is what lets this ship complete with no separate purchase.
This is an independent fork, not affiliated with the Aleph One project. Report problems on its own issues page, not on upstream's. GPL v3, same as upstream.