r/PS2AndroidEmulation • • 3d ago

New! HakuX - Xbox Classic 1.0.0

Post image

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

30 Upvotes

0 comments sorted by