Mini Golf from the iPod, running on Android and Linux.
Pre-releaseWhat's new in 0.2.0
- Android. An APK for arm64 handhelds — Retroid, Odin, anything with a physical gamepad should work.
- Background music on Android. The
.m4atracks decode through the device's own MediaCodec, so the music plays as it does on macOS and Windows. - Linux. A native build, packaged for the first time. Not really the point of this fork but I'm including it anyway.
- The game no longer closes itself after four idle minutes. The iPod put a game away so the device could sleep, and the port was faithfully doing the same — which on a desktop or a handheld meant the window vanishing and taking an unfinished round with it. This may have been included in the 0.1.0 build but I didn't document it in that release.
Which to download
minigolf-0.2.0-android.zip |
Android 5.0+, arm64 only |
minigolf-0.2.0-linux-x86_64.zip |
needs glibc 2.38 or newer (ldd --version) |
ipod-recomps-0.2.0-source.tar.gz |
the source, see "Building" below |
Pre-reqs
You need to provide a decrypted copy of the iPod Mini Golf game files. There are two copies floating around the internet that I found — make sure to grab the decrypted one, even though there's a note in that readme telling you to get the game from a different repo.
The one you might find on a popular archive site for the Internet has a file extension of .ipg, which is really a zip. If yours starts with the four bytes eapp inside Executables/, it's the decrypted one; if it looks like random noise, it isn't and the game will tell you so rather than misbehave.
Nothing in this download contains copyrighted game data, and nothing here will work without it.
Install — Android
- Install/sideload the apk however you like, or
adb install minigolf.apk. - Rename
Mini Golf.ipgto.zipand extract it. You should have a folder calledMini Golfnow. - Copy that folder to
"/sdcard/Android/data/org.ipodrecomp.minigolf/files/Mini Golf"or the contents of it to/sdcard/Android/data/org.ipodrecomp.minigolf/files/88888. Cx File Explorer should be able to reach that folder but the default Files app on your device probably cannot.
If anything is missing you'll see an error message with the path — and if the files are there but damaged it says which one and why, rather than just "not found".
You can do all of the above on the device. If you'd rather use a computer, you can use adb to push the files:
adb push "Mini Golf" /data/local/tmp/
adb shell "mkdir -p /sdcard/Android/data/org.ipodrecomp.minigolf/files"
adb shell "cp -r '/data/local/tmp/Mini Golf' /sdcard/Android/data/org.ipodrecomp.minigolf/files/"
adb shell "rm -rf '/data/local/tmp/Mini Golf'"The detour through /data/local/tmp is because with Android 11 adb push often can't write into Android/data directly.
Android may warn you about installing this because it's signed with a debug key, which is the same warning any self-signed app gets. If you've installed an older copy signed with a different key, uninstall it first.
Install — Linux
Simpler: you don't have to rename or extract anything.
sudo dnf install SDL3 zlib-ng-compat(Fedora) orsudo apt install libsdl3-0 zlib1g(Debian/Ubuntu). The program takes these from your system rather than carrying them.chmod +x minigolf && ./minigolf- The first run asks for the game with a file browser. Rename your
.ipgto.zipso the picker will show it, and hand it over as-is — it finds the game's files inside whatever they're wrapped in and puts them where they belong.
Or skip the browser entirely, with any filename:
./minigolf --install-zip="Mini Golf.ipg"Either way the files land in ~/.local/share/ipod-mini-golf/88888, and your saves go beside them.
Controls
| Keyboard | Gamepad | |
|---|---|---|
| Turn the wheel | arrow keys | D-pad, or the left stick |
| Select | Space | A |
| Menu | Escape | B |
Fullscreen is F or F11. On a handheld the D-pad and A/B are all you need. Holding B leaves the game, as holding Menu left it on the iPod.
Use the left and right dpad buttons to navigate menus. This emulates the click wheel behavior from the iPod. We don't have up and down dpad buttons configured for menus yet.
Known limitations
- Linux and Android have no settings window. That one is a Cocoa window on macOS and a Win32 one on Windows, and nobody has written a third. The in-game Options and Cheats screens work everywhere, and so do saved settings.
- No background music on Linux. The
.m4atracks need a decoder, and unlike macOS, Windows and Android there's no obvious system one to borrow. Sound effects work though. - Android spells names on the wheel, not with the on-screen keyboard — that keyboard would cover half the game.
- Android is arm64 only. No x86 Android, no 32-bit ARM.
Building from source
The source tarball builds Mini Golf and nothing else. The other five titles in the tree compile machine-translated code that isn't in the repository and never will be — it's generated on your own machine from your own copy of each game, by tools/funcs.py and tools/emit.py. Mini Golf needs neither: its game logic is hand-written C++ all the way down.
- Linux:
cmake -B build && cmake --build build - Android:
Mini Golf/android/README.mdwalks through it from an empty machine — the NDK, the SDK's build-tools and SDL's Android release are the three downloads, and there's no Gradle and no JDK involved.
Checksums
SHA256SUMS is attached.