HIRAKU
Konami BEMANI arcade games as native Linux programs: Firebeat recompiled from PowerPC, plus DJ Main, System 573, Twinkle and Python cores behind one launcher. e-AMUSEMENT and NET TAISEN included. Bring your own dumps.
| Written in | C++ |
|---|---|
| License | GPL-3.0 |
| Latest release | v0.1.4, 18 Oct 2026NEW! |
| Last updated | 18 Oct 2026 |
“HIRAKU” is all about giggles and fun. Enjoy!!
HIRAKU runs Konami's BEMANI arcade games as native programs on Linux and Windows. It covers five arcade boards, from DJ Main (1997) to Konami Python (2002–2006), all behind one launcher.
- Firebeat games are statically recompiled: HIRAKU analyses each game's PowerPC program and translates it to C, linked against a runtime that stands in for the board. The packages, which carry no game's code, run the same analysis through an executor (
hiraku-firebeat) instead, with identical results. - DJ Main, System 573, Twinkle and Python run as cores behind the same shell (
runtime/shell/core.h). Each core is an interpreter, a recompiler fed by recordings, or a hosted emulator.
HIRAKU ships no game data. You provide your own dumps: drop your MAME ROM sets and CHDs (or disc images) on the launcher, and it does the rest.
What it runs
| Board | How HIRAKU runs it | Games | Where it stands |
|---|---|---|---|
| Firebeat (PPC403) | PowerPC → C static recompilation; the SPU's 68000 is interpreted | beatmania III, APPEND CORE REMIX, 6th MIX, 7th MIX, The Final | Play, with sound, keyboard, controllers and lamps |
| ParaParaParadise, v1.1, 1st Mix Plus, ParaParaDancing | Play: song select, a stage danced on the sensor bars, results | ||
| pop'n music 4–8, Animelo 1/2, Mickey Tunes! | Boot to attract with sound; pop'n 8 tested through song select and full songs | ||
| Keyboardmania 1st/2nd/3rd Mix, Keyboardheaven | Boot to attract; the XT446 synth card (an embedded MU100B) is emulated; autoplay clears a song 135/135 GREAT | ||
| DJ Main (68EC020, 1997–2002) | Interpreted (Musashi), about 1 ms of host time a frame | 29 sets: beatmania 1st mix → THE FINAL, complete MIX 1/2, CORE REMIX, DCT, hiphopmania, beatstage, pop'n music 1–3, pop'n stage EX | All 25 sets checked match MAME clock for clock through power-on and attract; beatmania 1st MIX and pop'n music 1 through a whole game: same RAM, pixels and samples |
| System 573 (PlayStation-based) | MIPS interpreter plus C++ compiled from recorded blocks; MAME's PS1 devices | Dance Dance Revolution 2ndMIX, 3rdMIX | Play, including the first-boot flash install with the install cassette |
| DrumMania 10th Mix, GuitarFreaks 11th Mix | Further than MAME: they play, including DrumMania × GuitarFreaks session play, the e-AMUSEMENT network unit, and cards | ||
| Twinkle (beatmania IIDX) | The same PS1 core plus the 68000/RF5C400 sound board | beatmania IIDX 1st style, Substream, 2nd–8th style | Play in lockstep with MAME. Further than MAME: the background videos play, and 1st style runs (MAME stops it at E600) |
| Konami Python 1 (PS2-based) | PCSX2 Reliquary, hosted by HIRAKU's shell | pop'n music 9, 10, 11, 12 Iroha, 13 Carnival, 14 FEVER! | Play, with e-AMUSEMENT cards, the event unlocks, and NET TAISEN between cabinets |
The per-game guides are in docs/PLAY.md: which files each game needs, its first-boot steps, controls and quirks.
Highlights
- e-AMUSEMENT, brought back. HIRAKU includes its own server for Konami's long-closed network. You can register a card, save your player, and keep rankings. On pop'n music 9–14 the server runs inside the game. To share cards and rankings between PCs, run
hiraku-eamuse. DrumMania and GuitarFreaks use it through their network unit. - pop'n NET TAISEN. pop'n music 12–14's online battles work between HIRAKU cabinets, up to three to a match. Cabinets connect through a virtual LAN cable, on one PC or across a network, or online through
hiraku-eamuse, which also runs the lobby and relays the matches. - Events and unlocks. In the launcher, right-click a game > Unlocks. It sets the event phase as an operator's codes would, and shows each event's progress, such as Sugoroku de 8, HOSHI NI NEGAIO, POPN TOURIST and NINPOUCHO. It can also type the cabinet's button codes for you (Ctrl+1…9).
- Low latency. Audio is the clock, and the sound queue tunes itself to the smallest lead your PC can play without crackle. You can also send sound straight to an ALSA card with no sound server in between (
--audio-device), or on Windows have a device alone in WASAPI exclusive mode (--audio-exclusive) or play through its ASIO driver (--audio-asio). On 573 and Twinkle,--fine-soundhands the sound on every millisecond. Pictures are shown at vblank end, and frame pacing is aware of Wayland. - Efficient. HIRAKU targets N100-class mini PCs and judges its changes by their worst frames, not their average. Profile-guided builds (
tools/pgo.py) cut CPU use further: Keyboardmania −19 %, DDR −27 %. - Controls and lights. Map keyboards, IIDX/pop'n controllers and analog turntables to each cabinet's controls with click-then-press. You can drive controller LEDs from the cabinet's lamps and watch them live (docs/LIGHTS.md).
- The picture. Every game is shown at its monitor's shape: 4:3, or 16:9 for beatmania IIDX's widescreen CRT. Two CRT shaders are built in: crt-guest-advanced-fast and crt-royale. F10 cycles through them in-game.
- Checked against MAME. Every change is held to bit-identical per-frame picture and sound hashes (
tools/regress.py). New boards are brought up in lockstep against a scripted MAME oracle. - Portable.
tools/package.shbuilds a package for other Linux PCs that brings its own Qt. In a portable install, your saves and settings live in the HIRAKU folder, so the folder can go on a USB stick. The cores also build and pass the regression cases on 64-bit ARM Linux.
Download
Get the latest package from the Releases page and unpack it anywhere:
- Windows (10 or later):
hiraku-windows-x86_64.zip, then startbin\hiraku.exe. Windows may warn about an unknown publisher (the build isn't signed): More info, then Run anyway. - Linux (glibc 2.35 or later: Ubuntu 22.04, Debian 12, Fedora 36 and newer):
hiraku-linux-x86_64.tar.xz, then startbin/hiraku.
Then drop a game's files on the launcher's window, all at once: the MAME ROM set (.zip, .7z or a folder) and its CHDs (several games' files at once work too). HIRAKU recognises the game, copies what it needs into its own folder, and the game is ready to play. Nothing else needs installing: the packages carry their own Python, 7-Zip, CHD reader and libraries.
The packages run the DJ Main, System 573, Twinkle and Firebeat games, and the Konami Python games too (pop'n music 9–14, DrumMania V/V2; they need Vulkan or OpenGL drivers): add a Python game's folder together with the folders bios (the arcade BIOS) and keys (the MagicGate key files), which HIRAKU can't ship. The packages are portable: your saves and settings stay in their user folder.
Building from source
You need CMake, Ninja, clang, SDL3, zlib and zstd (to read MAME's CHDs) and, for the launcher, Qt 6. Optional: FFmpeg's libraries (IIDX background videos) and FluidSynth (Keyboardmania's stand-in synth). The Python core is built inside PCSX2 Reliquary's own source tree (see docs/PLAY.md).
cmake -S . -B build/cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
ninja -C build/cmake
build/cmake/hiraku # the launcher
To add a game, drop its files on the launcher's window: the MAME ROM set (.zip/.7z), its CHDs, or disc images (.cue/.bin, .iso, .img). You can also use File > Add game files, or tools/ingest.py FILE... from a terminal. The ingester recognises the game and what each image is. Firebeat games then run in hiraku-firebeat, which finds its way around the program by itself when it starts. For about twice the speed, a game's program can be recompiled into its own binary:
mkdir -p build/bm3final && build/cmake/hiraku-recomp --analyze dumps/bm3final/program.bin --entry 80003000 > build/bm3final/recomp.txt
cmake build/cmake && ninja -C build/cmake hiraku-bm3final
The launcher shows which games are ready, and what a game that isn't ready still needs. hiraku popn7 starts a game straight away, and build/cmake/hiraku-<game> --window runs one without the launcher. Settings live in ~/.config/hiraku/, and saves in ~/.local/share/hiraku/<game>/. In a portable install, both live in the HIRAKU folder's user/ instead.
For developers
ctest --test-dir build/cmake # instruction semantics vs QEMU
tools/regress.py record; tools/regress.py check # runs stay bit-identical (per-frame picture + sound hashes)
tools/regress.py bench # share of a core, and host work per frame (mean / p99 / worst)
tools/pgo.py # profile-guided rebuild, trained on the regress cases you have
build/cmake/hiraku-bm3final --script oracle/scripts/bm3final-practice.his --wav out/practice.wav
build/cmake/hiraku-bm3final --frames 1800 --snap-every 300 --trace # headless, PPM frames + MMIO trace
cmake -B build/arm64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/aarch64-linux-gnu.cmake && ninja -C build/arm64 -j2
HK_REGRESS_BIN=build/arm64 tools/regress.py check # the ARM build against the same baseline
- Plan, status and per-board notes: PLAN.md
- Playing, per game: docs/PLAY.md
- How Firebeat translation works: docs/RECOMP.md; the kernel: docs/KERNEL.md
- Konami Python: docs/PYTHON.md; e-AMUSEMENT and NET TAISEN: docs/EAMUSE3.md
- The MAME oracle: oracle/README.md
Licence
GPL-3.0-or-later (see LICENSE). Code taken from other projects keeps its own licence and notices. This includes MAME (BSD-3-Clause), Musashi (MIT), PCSX2 Reliquary (GPL-3.0-or-later), minimp3 (CC0), libchdr (BSD-3-Clause, with dr_flac and the LZMA SDK decoder, public domain) and libretro's slang-shaders (GPL-2.0-or-later). The full list is in the launcher's Help > About HIRAKU.
beatmania, pop'n music, Keyboardmania, ParaParaParadise, GuitarFreaks, DrumMania, Dance Dance Revolution, beatmania IIDX and e-AMUSEMENT are trademarks of Konami. HIRAKU is not affiliated with or endorsed by Konami.
This page is synced from README.md in the HIRAKU repo.