An Android port of Harvest Moon 64: Recompiled, the static recompilation of Harvest Moon 64 built on N64: Recompiled and RT64. This fork adds touch controls, an Android launcher and file picker, and a second-screen companion dashboard for dual-display handhelds such as the AYN Thor.
Requires Android 9 (API 28) or newer, arm64-v8a.
This repository and its releases do not contain game assets. You must provide your own NTSC-U copy of Harvest Moon 64.
Everything the upstream project does on desktop still works here and is unchanged — see the upstream README for the desktop feature list.
Join the N64: Recompiled Community Discord to discuss this and other N64: Recompiled projects!
- Android
- System Requirements
- Features
- FAQ
- Known Issues
- Building
- About This Fork
- Libraries Used and Projects Referenced
- Download the APK from Releases and install it. Your browser or file manager will ask you to allow installing unknown apps.
- Launch the app and tap Start Game.
- Pick your Harvest Moon 64 ROM (
.z64,.v64or.n64) in the file picker.
The ROM is copied into the app's private storage and byte-swapped if needed. No storage permissions are requested, and no game data ships with the APK.
An N64-style overlay: floating analog stick, A and B, the C-button diamond, L/R/Z and Start. The stick's origin re-centres under your thumb wherever you press, so it never drifts. Tap the toggle to hide the overlay when playing with a physical controller, or turn it off entirely in Settings → General → Touch Controls.
On a device with a second display — the AYN Thor's bottom panel, for instance — that screen becomes a live dashboard drawn with the game's own sprites: clock and calendar, money, stamina and fatigue, a farm summary, and your tools and rucksack. Tap a tool or item to equip it without pausing the game. Toggle it in Settings → General → Dual-Screen Companion.
- Android 9 (API 28) or newer, arm64-v8a
- A GPU with Vulkan 1.1 or newer (any device from the last several years)
- Your own NTSC-U copy of the game
(Desktop. For Android, see Android above.)
A GPU supporting Direct3D 12.0 (Shader Model 6), Vulkan 1.2, or Metal Argument Buffers Tier 2 support is required to run this project. The oldest GPUs that should be supported for each vendor are:
- GeForce GT 630
- Radeon HD 7750 (the one from 2012, not to be confused with the RX 7000 series) and newer
- Intel HD 510 (Skylake)
- A Mac with Apple Silicon or an Intel 7th Gen CPU with MacOS 13.0+
On x86-64 PCs, a CPU supporting the SSE4.1 instruction set is also required (Intel Core 2 Penryn series or AMD Bulldozer and newer). ARM64 builds will work on any ARM64 CPU.
If you have issues with crashes on startup, make sure your graphics drivers are fully up to date.
Simply provide your copy of the North American version of the game in the main menu and start playing! This project will automatically load assets from the provided copy, so there is no need to go through a separate extraction step or build the game yourself. Other versions of the game may be supported in the future.
Gameplay settings, graphics settings, input mappings, and audio settings can all be configured with the in-game config menu. The menus can all be used with mouse, controller, or keyboard for maximum convenience.
Play at any framerate you want thanks to functionality provided by RT64! Game objects and terrain, texture scrolling, screen effects, and most HUD elements are all rendered at high framerates. By default, this project is configured to run at your monitor's refresh rate. You can also play at the original framerate of the game if you prefer. Changing framerate has no effect on gameplay.
Note: External framerate limiters (such as the NVIDIA Control Panel) are known to potentially cause problems, so if you notice any stuttering then turn them off and use the manual framerate slider in the in-game graphics menu instead.
Any aspect ratio is supported, with most effects modded to work correctly in widescreen. The HUD can also be positioned at 16:9 when using ultrawide aspect ratios if preferred.
Install community made mods and texture packs! Mods can change any part of the game, including adding completely new features and content. You can install mods by simply dragging the mod files onto the game window before starting the game or by clicking the Install Mods button in the mod menu. Mods can be toggled in the mod menu, and some mods can be configured there as well.
Many mods are available on the project's Thunderstore page: https://thunderstore.io/c/harvest-moon-64-recompiled/. The Thunderstore mod manager/r2modman is not required or supported, so be sure to click the "Manual Download" button when downloading a mod instead of the "Install with Mod Manager" button.
If you're interested in making mods for this project, check out the mod template and the modding documentation. If you're interested in making texture packs, check out the RT64 documentation.
Saving and loading files, going from place to place, and pausing all happen in the blink of an eye thanks to the game running natively on modern hardware.
A Linux binary as well as a Flatpak is available for playing on most up-to-date distros, including on the Steam Deck.
To play on Steam Deck, extract the Linux build onto your deck. Then, in desktop mode, right click the HarvestMoon64Recompiled executable file and select "Add to Steam". From there, you can return to Gaming mode and configure the controls as needed.
Static recompilation is the process of automatically translating an application from one platform to another. For more details, check out the full description of how this project's recompilation works here: N64: Recompiled.
Unlike N64 ports in the past, this project is not based on the source code provided by a decompilation of the game. This is because static recompilation bypasses the need for decompiled source code when making a port, allowing ports to be made without source code. However, the reverse engineering work done by the decompilation team was invaluable for providing some of the enhancements featured in this project. For this reason, the project uses headers and some functions from the decompilation project in order to make modifications to the game. Many thanks to the decompilation team for all of the hard work they've done.
- Windows:
%LOCALAPPDATA%\HarvestMoon64Recompiled\saves - Linux:
~/.config/HarvestMoon64Recompiled/saves - macOS:
~/Library/Application Support/HarvestMoon64Recompiled/saves
Yes, if you place a file named portable.txt in the same folder as the executable then this project will run in portable mode. In portable mode, the save files, config files, and mods are placed in the same folder as the executable.
- Overlays such as MSI Afterburner and other software such as Wallpaper Engine can cause performance issues with this project that prevent the game from rendering correctly. Disabling such software is recommended.
Building is not required to play this project, as prebuilt binaries (which do not contain game assets) can be found in the Releases section. Full instructions live in BUILDING.md; the short version is below.
You will need a NTSC-U copy of the game as hm64.us.z64 in the repository root. No game assets are included here or in any release.
Every build starts with the same two steps. This port carries local changes to four of its submodules (rt64, plume, N64ModernRuntime, RecompFrontend). Rather than forking all four, they are kept as patches in submodule-patches/ against the exact upstream commits the submodules are pinned to, and applied by a script. Nothing builds until you run it:
git clone --recurse-submodules <this-repo>
cd <this-repo>
scripts/bootstrap-submodules.sh # applies the port's submodule patchesThe script is idempotent — re-run it any time, and after any git submodule update.
Generate the recompiled C with N64Recomp, then build:
./N64Recomp hm64.us.toml
./RSPRecomp n_aspMain.toml
cmake -S . -B build-cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
cmake --build build-cmake -j$(nproc)Run the executable from the repository root so it can find assets/.
Additionally requires the Android SDK with the NDK and CMake versions pinned in android/gradle.properties and android/app/build.gradle, plus JDK 21. Build the native prerequisites once, then the APK:
scripts/setup_android_deps.sh # builds SDL2 + FreeType for arm64-v8a
cmake --build build-cmake -j$(nproc) # generates RecompiledPatches the APK needs
scripts/build-hm64-apk.sh # assembles, zipaligns, signsbuild-hm64-apk.sh signs with the keystore at $HM64_KEYSTORE (see the script for the default) and stamps the output filename with the commit it was built from, appending -dirty if the tree has uncommitted changes.
Minimum Android 9 (API 28), arm64-v8a only. The dual-screen companion activates automatically on devices that expose a second display, such as the AYN Thor. Porting notes, including the parts of this build that are easy to break, are in docs/PORT_NOTES.md.
The Android work in this fork: the touch overlay and virtual controller, ROM import through the Storage Access Framework, Android lifecycle and Vulkan surface handling, an auxiliary render path for the second display, and the companion dashboard. Build and porting notes are in docs/PORT_NOTES.md.
Everything else — the game itself, the recompilation, the renderer, the menus — is the work of the upstream projects credited below. Licensed GPL-3.0, same as upstream.
- N64Recomp for statically recompiling the game's code to run natively
- RT64 for the project's rendering engine
- N64ModernRuntime for replacing the original N64 runtime libraries and providing mod support
- RecompFrontend for menus and input handling
- Harvest Moon 64 Decompilation for headers and some function definitions, used for making patches or some enhancements
- SDL for Android windowing, input, and audio
