Monster Hunter Freedom Unite on PC and Android: an unofficial native port through static recompilation.
Download · Getting started · Multiplayer · Building · Credits · License
Monster Hunter Freedom Unite (PSP) recompiled ahead of time from its MIPS code into C, then built as a native program for Windows and Android: no emulator runs the game. It adds what the PSP never had: online rooms anyone can join with a code, 60 FPS, widescreen, controllers, rearrangeable touch buttons and RetroAchievements.
Maintained by PateeerQ.
Important
Not affiliated with, endorsed by or sponsored by Capcom or Sony. You need your own copy of the game. No game data is included or downloaded: no disc image, EBOOT, firmware fonts, textures, audio or saves. "Monster Hunter" is a trademark of Capcom and is used here only to say which game this works with.
| Native | The EBOOT and all 298 overlays (menus, stages, monsters) recompiled to C; firmware reimplemented in the host |
| Online play | Create Server / Join Server with room codes and optional passcodes, on your Wi-Fi or over the internet relay; no port forwarding. PC and phone in the same room. Room chat and ping |
| 60 FPS (beta) | The game at 60 fps and normal speed. A room plays at its slowest player's rate |
| One app, every release | Europe, USA, Japan and the FUComplete translation from one launcher and one app, told from your disc; every release can share a room |
| Mods | Widescreen, CWCheat cheats, and built-in mods: Target Camera + Crosshair, Damage Numbers, Gathering Node Indicators |
| Texture packs | HD packs made for PPSSPP (PNG or KTX2, with their style variants), optional |
| Android | Touch buttons you can move and resize, a swipe camera, weapon buttons that change with your weapon, a save folder you choose |
| PC launcher | Profiles, upscaling, fullscreen, key bindings, controller tester, RetroAchievements, update check, log |
| Controllers | DualSense, DualShock, Xbox and more (SDL3); the right stick moves the camera |
| RetroAchievements | Sign in once; unlocks pop up in game (softcore) |
| Game | Region | ID | Status |
|---|---|---|---|
| Monster Hunter Freedom Unite | Europe | ULES01213 |
Playable: village, Gathering Hall, quests, online |
| Monster Hunter Freedom Unite | North America | ULUS10391 |
Playable: quests on PC and Android, 60 FPS, the built-in mods, online with every release |
| Monster Hunter Portable 2nd G | Japan | ULJM05500 |
Playable: quests on PC and Android, 60 FPS, the built-in mods, online with every release |
| FUComplete (MHP2G English translation) | — | ULJM05500 |
Playable: the translated .iso as it is, no EBOOT dump needed |
Get the newest build from Releases.
| Platform | File | Needs |
|---|---|---|
| Windows 10/11 x64 | FreedomUniteRecomp-v<version>-windows-x64-universal.zip |
OpenGL 3.3 GPU |
| Android 8+ arm64 | FreedomUniteRecomp-v<version>-android-arm64-universal.apk |
OpenGL ES 3.0 GPU |
Both check for updates by themselves (the launcher on PC, the app at start or from its menu).
Version 0.4.2. The game boots, plays its movies, creates and saves a character, and runs the village, the Gathering Hall and quests in 3D at its own 30 fps, or 60 in 60 FPS mode, with sound, music, keyboard, controllers and touch buttons. Quests have been played start to finish, alone and together through a room, on PC and on Android (Poco X7 Pro).
Progress by area (rough estimates, 2026-11-06)
"Recompiled" means the code builds and is switched in when the game loads it; "tested" means someone has played through it.
It is early software: expect rough edges, and please report crashes (both apps can copy their crash log for you).
You need your own copy of the game and three files made from it:
- the disc image as an
.iso: Freedom Unite Europe (ULES01213) or USA (ULUS10391), Portable 2nd G (ULJM05500), or the FUComplete translation - its decrypted EBOOT: in PPSSPP, Settings → Tools → Developer tools → "Dump decrypted EBOOT.BIN on game
boot" (gives
<game id>_EBOOT.BIN); not needed for FUComplete - the PSP's fonts: the
.pgffiles from PPSSPP'sassets/flash0/font
- Unzip
FreedomUniteRecomp-v<version>-windows-x64-universal.zip. - Put the fonts in
work\root\flash0\font. - Run
mhfu_launcher.exe, choose the ISO and the EBOOT under Advanced, then press DEPART on the Play page.
Keyboard and mouse
| Key | PSP |
|---|---|
| W / A / S / D | analog stick |
| Arrow keys | D-pad (camera) |
| K or Space / L / J / I | Cross / Circle / Square / Triangle |
| Q / E | L / R |
| Enter / V or Backspace | Start / Select |
| F3 / F4 | FPS line / 60 FPS mode |
| F5 / F6 | volume down / up |
| F7 | mouse look on/off |
| Right mouse button held | mouse camera |
| F9 | memory dump (for cheat makers) |
Keys can be rebound on the launcher's Keyboard page. The game window's Options menu sets the volume, the mouse camera's sensitivity, mouse look and mods.
- Install
FreedomUniteRecomp-v<version>-android-arm64-universal.apk(arm64, Android 8+). - Put the ISO and the EBOOT in one folder on the phone.
- Open the app and pick that folder ("Use this folder"). After that it goes straight into the game.
The fonts are taken from PPSSPP when it is installed; otherwise put the .pgf files in that folder too.
- Touch buttons: stick, D-pad, face buttons, L/R, Select/Start. In a quest with the weapon drawn they become an attack pad, Dodge, Sheathe and buttons for your weapon (guard, aim, charge, Demon Mode, Spirit). Hidden while a controller is connected.
- Camera: drag a finger anywhere away from the buttons.
- Menu: swipe in from the left edge, press Back, or tap the menu button: Multiplayer, RetroAchievements, button layout and opacity, resolution, 60 FPS, mods, cheats, save folder, crash log, updates.
- Save folder: like PPSSPP's memory stick folder. Choose a folder you can see (for example
Documents/MHFU) and your saves survive reinstalling, and saves from a PC can be brought in.
The game normally runs at the PSP's 30 fps. With 60 FPS (beta) on (the launcher's checkbox or F4 on Windows,
the menu on Android) it runs at 60 at normal game speed: the community "60 FPS" cheat for ULES01213 is built into
the recompiled code. Online, a room runs at its slowest player's rate (the chat says who).
- Widescreen: the camera's view fills a wide screen.
- Built-in mods (on by default, each can be turned off): Target Camera + Crosshair, Damage Numbers, Gathering Node Indicators.
- Cheats: CWCheat codes, as PPSSPP runs them, from
cheats/ULES01213.ini; the launcher and the app can fetch the CWCheat Database. Cheats pause in online rooms, and achievements stop unlocking while one is on.
- One player chooses Create Server (optionally with a 4-digit passcode).
- The others choose Join Server and pick the room from the list (players, lock, 30/60 FPS, ping), or type its
code, like
MH-4K7Q. - Everyone goes online in the game as usual: the Gathering Hall.
Rooms work on the same Wi-Fi or hotspot, or over the internet through the project's relay, between PCs and
phones; nobody forwards a port. On PC it is the game window's Multiplayer menu, on Android the menu's
Multiplayer. In a room, Select opens the room chat. Another relay can be set with relay=host:port in
<root>/net.cfg.
Note
The build recompiles your EBOOT. Everything made from the game (work/, build/) is gitignored and must
never be committed or shared.
Needs CMake, Visual Studio Build Tools ("Desktop development with C++") and Python 3. 7-Zip extracts the ISO if installed; otherwise Windows mounts it.
git submodule update --init --recursive
.\scripts\setup.ps1 -Iso "<your MHFU .iso>" -Eboot "<decrypted EBOOT>"
.\scripts\run.ps1 -Windowsetup.ps1 tells the region from the EBOOT, extracts the disc and all 298 overlays from DATA.BIN, recompiles
the EBOOT and the overlays, and builds the game, the launcher and the tools. It copies the fonts from PPSSPP's
install; give another folder with -Fonts <folder>. A USA EBOOT builds into work\us\ and build-us\
(run.ps1 -Region US).
Needs the Android SDK, NDK 27.0.12077973 and a JDK 17–21. FFmpeg for Android is built once with
scripts/build-ffmpeg-android.sh (Git Bash). Then, after the Windows setup has generated the C:
$env:JAVA_HOME = "$env:USERPROFILE\.jdks\jbr-21.0.11"
cd android; .\gradlew.bat assembleDebug # -Pmhfu.region=US for the USA app
adb install -r app\build\outputs\apk\debug\app-debug.apkSee android/README.md.
.\scripts\release.ps1 # -Region US for the USA buildwrites release\v<version>\: the Windows zip and the APK. The version is MHFU_VERSION in host/about.h and
versionName in android/app/build.gradle; they must match. Both packages contain code recompiled from your EBOOT
(though no game files): keep that in mind before publishing them.
Repository layout
| Path | What |
|---|---|
psprecomp/ |
the recompiler toolkit, as a git submodule |
launcher/ |
the PC launcher (mhfu_launcher.exe, Dear ImGui) |
android/ |
the Android app: SetupActivity (game folder), MhfuActivity (the game, its dialogs), RoomPicker, SaveSync, CheatsDialog, CrashLog, Updater |
host/main.c |
loads the EBOOT, sets up the boot thread, runs, reports |
host/window.c, host/window_sdl.c |
the Win32 window; the SDL3 window (Android, Linux) with touch buttons, layout editor and menu |
host/region.h |
per-region game ID and the guest addresses the host reads |
host/hle_mhfu.c |
firmware MHFU needs that psprecomp lacks (UMD, Impose, system params, VTimers) |
host/libfont.c |
sceLibFont: the PSP's PGF fonts, which MHFU draws all its text with |
host/utility.c |
savedata, message dialogs, the on-screen keyboard |
host/atrac.c, host/mpeg.c |
sceAtrac3plus and sceMpeg, decoding with FFmpeg |
host/audio.c, host/gamepad.c |
sound output and controllers, through SDL3 |
host/mods.c |
widescreen, cheats, built-in code mods |
host/achievements.c |
RetroAchievements through rcheevos |
host/lobby.c, host/chat.c, host/stats.c |
Create/Join Server, room chat, FPS and ping line |
host/adhoc.c |
sceNet, sceNetAdhoc (PDP/PTP), sceNetAdhocctl, sceWlan and Netconf over the room network |
host/net/ |
the room network: protocol (proto.h), hub, client, sockets and threads |
seeds/ |
functions only reached through a pointer built at run time (seeds/us/ for the USA build) |
tools/re/databin.py |
decrypts DATA.BIN as the game does and extracts every overlay |
tools/mhfu_ovl.c |
wraps an overlay as an ELF for allegrexrecomp |
tools/fps60_patch.py, tools/mods_patch.py |
build 60 FPS and the mods into the recompiled C |
tools/region_seeds.py |
makes the USA seeds from the European ones |
tools/mhfu_netcheck.c |
end-to-end check of the room network without the game |
tools/make_icon.py, tools/touch_icons.py |
the app icon; the touch button icons |
patches/psprecomp/ |
the changes made to psprecomp, as patches |
scripts/ |
setup.ps1, run.ps1, harvest.ps1, release.ps1 |
work/ |
everything made from the game (never committed) |
Development runs
.\scripts\run.ps1 -Window # close the window to stopThe window draws with OpenGL at -Scale times the PSP's resolution (default 2). -Renderer software uses
psprecomp's reference rasteriser instead: slow, but it is the one the GL renderer is checked against.
-Name "Hunter" answers the game's keyboard without asking. -Press "300:CROSS,420:START" presses buttons at given
game frames (500-560:UP holds a range) and -Snap 60 saves every 60th frame to work/root/frames/.
MHFU_NO_GAMEPAD=1 ignores controllers.
work/run.log ends with a report: recompiled calls, the last function reached, firmware calls not implemented
yet, GE work, and a framebuffer capture. A dispatch miss names an address that was not recompiled.
- psprecomp by sp00nznet: the static recompiler this is built on (MIT)
- PPSSPP: its source was the reference for the firmware's and the GPU's behaviour;
the save data cipher (
host/chnnlsv.c) is ported from itssceChnnlsv.cpp(GPL 2.0 or later) - libkirk (Draan and the PSP scene, from PPSSPP's
ext/libkirk, GPL 3): the PSP's KIRK crypto engine, used to read saves from a PSP or PPSSPP (third_party/libkirk) - Basis Universal (Apache 2.0): KTX2 textures in texture packs
- OceanTriRecomp: the model for the approach
- SDL3 (zlib), FFmpeg (LGPL 2.1), rcheevos (MIT), Dear ImGui (MIT), nlohmann/json (MIT), stb (MIT / public domain)
- Touch button icons by Lorc and Delapouite, game-icons.net (CC BY 3.0)
- The "60 FPS" cheat and the CWCheat Database by the PSP cheat community; the built-in code mods by the MHFU modding community
- Everyone who tested and reported bugs
Copyright (c) 2026 PateeerQ. The code in this repository is released under the GNU General Public License, version 3 (since v0.4.0; it was MIT before): it includes libkirk (GPL 3) to read saves from a PSP or PPSSPP. Third-party components keep their own licenses (see Credits). The license covers this project's code only, not Monster Hunter Freedom Unite or anything made from it.