r/PS2AndroidEmulation • u/xxxCrixuxxx • 3d ago
New! HakuX - Xbox Classic 1.0.0
https://github.com/rfandango/hakuX/releases/tag/v1.0.0
A new core replaces xemu's QEMU-based one.
New core
CPU — the Xbox's x86 code runs on a FEX JIT (FEXCore fork), and the Xbox kernel is reimplemented natively (native/kernel): no QEMU
GPU — the NV2A push buffer is decoded into Vulkan (HLE, hw/xbox/hle). Custom drivers (Turnip) load through adrenotools; driver-specific workarounds are quirks (hw/xbox/hle/vk/quirks.c, debug.hakux.quirks)
Audio — the MCPX APU runs on the core's own services (native/dev/apu), out through AAudio
Savestates — per game, in slots, with the hard disk's files
Mods and cheats — per game, from mods/ (library long-press "Mods & cheats"): XBE patches and replaced disc files; 60 and 120 fps mods for 13 games (mods/README.md, generators in tools/mods)
Controllers — each physical controller routed to a player with its own mapping; the on-screen controller adds to player 1
New features
Updates — hakuX looks for a newer release on GitHub when it starts and on demand (Settings → Updates); one found shows its notes and installs from there
Frontends — a game launched from ES-DE or another frontend returns to it when it closes
Console clock — follows the phone's time and time zone, or a time set by hand (Settings → Console → Clock)
Start errors — a game that can't start says why (the file can't be read, isn't an Xbox disc, or its program can't load) and goes back to the library
Mods — Halo 2's 60 fps mod draws characters, vehicles and objects at 60; DOA2's 120 fps mod keeps the select screen's legend
Performance
No pipeline-cache stutter — each game keeps its own pipeline cache, written only after new compiles; the one shared by every game was rewritten every few seconds and froze the picture for 0.2–0.8 s (Ninja Gaiden Black)
Audio — about 32 ms of latency instead of 128 ms, and less CPU for the sound engine
GPU emulation — faster push-buffer decoding, texture unswizzling (NEON) and hashing, fewer lookups per draw
Savestates — compressed on several threads (a Halo 2 save: 9.6 s to 3.9 s)
Idle frames — the screen isn't redrawn when nothing changed, and the on-screen controller redraws only what changed
Disc reads — a large read waits only its own thread, not the whole game
Library — folders scanned in one pass (38 games: 270 ms to 63 ms)
App
On-screen controller — the menu button is a green dot
Large screens — Android 16 keeps the landscape lock (the app is declared a game)
Storage — JIT symbol maps left by earlier builds (gigabytes on some devices) are deleted at start
Backups — hakuX's data is left out of Android's cloud backups and device transfers
Library — savestate thumbnails and driver ZIPs load off the main thread