**THIS IS A HIGHLY WORK/DEVELOPMENT IN PROGRESS VERSION**
**THINGS ARE BROKEN AND EVERYTHING IS SUBJECT TO CHANGE**
First cut after massive refactoring with most critical and fundamental changes implemented.
We need to start somewhere, and this might be as good as anything else, so we can get started
with testing, bug fixing and iterating for the next releases.
The following list is non-exhaustive, does not guarantee anything does work, yet, and is supposed
to give a high level idea of what all of this is about. Updated documentation will reflect all of
this at some later point in time in more detail.
* A common "core" now abstracts logging, thread, property and configuration infrastructure and
provides a common interface. This is used by bemanitools internally as well as all tools, hooks
and APIs provided and don't depend on the game, version of the game or AVS version available
anymore
* New bemanitools (public) API
* Versioned API allowing for handling incremental API changes as well as breaking changes by
providing a new/different version when necessary
* Unified interfaces for bemanitools core API, i.e. logging, threads, configuration
* SDK with examples (TBD)
* Dogfooding approach: Bemanitools uses its own (public) API to implement and provide fundamental
features like configurable keyboard implementations for IO or hooks for different games and
versions
* All bemanitools hooks and IO libraries have been or are about to be re-worked to use the new APIs
* New hook API allows for more fine grained runtime control when stages of the hook are to be
executed, i.e. pre AVS, before main game, iat hooking instead of relying purely on DllMain
(which is still a compatible option though)
* launcher as a replacement for bootstrap: Bring it significantly closer to the original bootstrap
by supporting completely vanilla data and bootstrap.xml configurations to run the games. Note
that bemanitools does not include any code or means to run DRM'd data, only decrypted
* inject is also being reworked to use as much of the same "infrastructure" as launcher to provide
a more seamless bootstrapping process for games that keeps pre-eapki data as vanilla as possible
Summary:
Test Plan:
Summary:
Test Plan:
Summary:
Test Plan:
Summary:
Test Plan:
12 KiB
Bemanitools 6
THIS IS A HIGHLY WORK/DEVELOPMENT IN PROGRESS VERSION
THINGS ARE BROKEN AND EVERYTHING IS SUBJECT TO CHANGE
ALL DOCUMENTATION IS CONSIDERED OUTDATED AND IS NOT NECESSARILY REVISED UNTIL FURTHER NOTICE
Version: 6.0.0-alpha.1
A collection of tools to run various Bemani arcade games.
Bemanitools 5 (BT5) is the successor to Bemanitools 4 which introduces a big code cleanup and support for newer games. BT5 uses a cleaner approach than BT4 did; specifically, all input and lighting is handled by emulating the protocols spoken by the real IO PCBs, instead of replacing chunks of game code like BT4. The benefits of this approach are a more authentic gameplay experience, and easier support for a broader range of releases from each game series.
Documentation
Browse our documentation as it might already cover various questions and concerns you are looking for or about to ask.
Contributions and bug reporting
Read the dedicated CONTRIBUTING.md documentation.
The tl;dr version and golden rules of the sections in the document:
- EVERYONE can contribute, this is NOT limited to people coding
- Open an issue on gitlab for discussions, feature requests and bug reports
- ALWAYS report bugs as issues and ALWAYS use the available bug template
- Everyone is allowed to submit changes which are not just limited to code by opening merge requests
- Documentation improvements can and even should be contributed by non developers
Supported games
The following games are supported with their corresponding hook-libraries.
- BeatStream
- BeatStream (
bst.zip): bsthook - BeatStream アニムトライヴ (
bst.zip): bsthook
- BeatStream (
- Dance Dance Revolution
- Dance Dance Revolution X (
ddr-11.zip): ddrhook1 - Dance Dance Revolution X2 (US/EU regions) (
ddr-12-us.zip): ddrhook1 - Dance Dance Revolution X2 (JP region) (
ddr-12.zip): ddrhook2 - Dance Dance Revolution X3 vs. 2ndMIX (
ddr-13.zip): ddrhook2 - Dance Dance Revolution 2013 (
ddr-14-to-18.zip): ddrhook2 - Dance Dance Revolution 2014 (
ddr-14-to-18.zip): ddrhook2 - Dance Dance Revolution A (
ddr-14-to-18.zip): ddrhook2 - Dance Dance Revolution A20 (
ddr-14-to-18.zip): ddrhook2 - Dance Dance Revolution A20+ (
ddr-14-to-18.zip): ddrhook2
- Dance Dance Revolution X (
- Beatmania IIDX
- Beatmania IIDX 9th Style (
iidx-09-to-12.zip): iidxhook1 - Beatmania IIDX 10th Style (
iidx-09-to-12.zip): iidxhook1 - Beatmania IIDX 11 IIDX RED (
iidx-09-to-12.zip): iidxhook1 - Beatmania IIDX 12 HAPPY SKY (
iidx-09-to-12.zip): iidxhook1 - Beatmania IIDX 13 DistorteD (
iidx-13.zip): iidxhook2 - Beatmania IIDX 14 GOLD (
iidx-14-to-17.zip): iidxhook3 - Beatmania IIDX 15 DJ TROOPERS (
iidx-14-to-17.zip): iidxhook3 - Beatmania IIDX 16 EMPRESS (
iidx-14-to-17.zip): iidxhook3 - Beatmania IIDX 17 SIRIUS (
iidx-14-to-17.zip): iidxhook3 - Beatmania IIDX 18 Resort Anthem (
iidx-18.zip): iidxhook4 - Beatmania IIDX 19 Lincle (
iidx-19.zip): iidxhook5 - Beatmania IIDX tricoro CN (狂热节拍 IIDX 2) (
iidx-20-cn.zip): iidxhook5-cn - Beatmania IIDX 20 Tricoro (
iidx-20.zip): iidxhook6 - Beatmania IIDX 21 SPADA (
iidx-21-to-24.zip): iidxhook7 - Beatmania IIDX 22 PENDUAL (
iidx-21-to-24.zip): iidxhook7 - Beatmania IIDX 23 copula (
iidx-21-to-24.zip): iidxhook7 - Beatmania IIDX 24 SINOBUZ (
iidx-21-to-24.zip): iidxhook7 - Beatmania IIDX 25 CANNON BALLERS (
iidx-25-to-26.zip): iidxhook8 - Beatmania IIDX 26 Rootage (
iidx-25-to-26.zip): iidxhook8 - Beatmania IIDX 27 Heroic Verse (
iidx-27-to-30.zip): iidxhook9 - Beatmania IIDX 28 BISTROVER (
iidx-27-to-30.zip): iidxhook9 - Beatmania IIDX 29 CASTHOUR (
iidx-27-to-30.zip): iidxhook9 - Beatmania IIDX 30 RESIDENT (
iidx-27-to-30.zip): iidxhook9
- Beatmania IIDX 9th Style (
- jubeat
- jubeat (
jb-01.zip): jbhook1 - jubeat ripples (
jb-02.zip): jbhook1 - jubeat knit (
jb-03.zip): jbhook2 - jubeat copious (
jb-04.zip): jbhook2 - jubeat saucer (fulfill) (
jb-05-to-07.zip): jbhook3 - jubeat prop (
jb-05-to-07.zip): jbhook3 - jubeat qubell (
jb-05-to-07.zip): jbhook3 - jubeat clan (
jb-08.zip): jbhook3 - jubeat festo (
jb-08.zip): jbhook3
- jubeat (
- pop'n music
- SOUND VOLTEX
- SOUND VOLTEX BOOTH (
sdvx-01-to-04.zip): sdvxhook - SOUND VOLTEX II -infinite infection- (
sdvx-01-to-04.zip): sdvxhook - SOUND VOLTEX III GRAVITY WARS (
sdvx-01-to-04.zip): sdvxhook - SOUND VOLTEX IV HEAVENLY HAVEN (
sdvx-01-to-04.zip): sdvxhook - SOUND VOLTEX Vivid Wave (
sdvx-05-to-06): sdvxhook2 - SOUND VOLTEX EXCEED GEAR (
sdvx-05-to-06): sdvxhook2
- SOUND VOLTEX BOOTH (
Auxiliary tooling
- Bootstrapping
- Beatmnia IIDX Ezusb IO board
- ezusb-iidx-fpga-flash: Flash a binary blob with FPGA firmware to a target ezusb FX IO board
- ezusb-iidx-sram-flash: Flash a binary blob with SRAM contents to a target ezusb FX2 IO board
- Exit hooks: Exit the game with a button combination using native cabinet inputs
- iidx-ezusb-exit-hook: For IIDX with ezusb IO
- iidx-bio2-exit-hook: For IIDX with BIO2 IO
- iidx-ezusb2-exit-hook: For IIDX with ezusb FX2 IO
- Bemanitools API testing: Tools for testing bemanitools API implementations
- ddriotest: For ddrio API
- eamiotest: For eamio API
- iidxiotest: For iidxio API
- jbiotest: For jbio API
- DDR IO testing: Tools for testing hardware of a real DDR cabinet
- aciotest: Command line tool to quickly test ACIO devices
- config: UI input/output configuration tool when using the default bemanitools API (geninput)
- ir-beat-patch-9/10: Patch the IR beat phase on IIDX 9 and 10
- mempatch-hook: Patch raw memory locations in the target process based on the provided configuration
- pcbidgen: Konami PCBID generator tool
- ViGEm clients: Expose BT5 APIs as XBOX game controllers to play any games with real cabinet hardware.
Pre-requisites
Supported platforms
Our main platforms are currently Windows XP and Windows 7 which are also the target platforms on the original hardware of those games. However, as it gets more difficult to get and maintain hardware comptible with Windows XP, this might change in the future. Many games also run on very recent Windows 10 builds but bear with us that it's hard to keep up with Windows updates breaking legacy software.
Distribution contents
Check the list of supported games to grab the right files for your game. BT5 also includes a tools subpackage (tools.zip) as well as the full source code (src.zip).
You will find *.md files in various sub-packages that give you further instructions for setup, usage, error information or FAQ. We advice you to read them as your questions and concerns might already be answered by them. If not, let us know if there is any information that you consider helpful or important to know and should be added.
Setup and dependencies
The games bemanitools support span several generations of (embedded) Windows versions: XP, 7 and 10 (IoT). With these come different generations of dependencies as requirements.
Simplified, this boils down to the following list of C++ Redistributable (vcredist) packages that are recommended to be installed without going into detail which game needs exactly which version. Keep in mind the "bitness" (32-bit vs. 64-bit) of each specific game and download the right ones accordingly.
You can use a tool like dependencywalker to figure that out if it is relevant to you.
Links/files are also provided by bemanitools-supplement
Visual C++ Redistributable Packages
- 2010
- 2013
- 2015
DirectX 9
Most/nearly all games support to this day use the DirectX 9(ex) API. Make sure to install the DirectX 9 End-User Runtimes (June 2010)
Development
Building
See the development document.
Architecture
A dedicate architecture document outlines the architecture of Bemanitools and points out the most important aspects you should know before you get started with development.
API
Please refer to the API documentation.
Release process
Please refer to the dedicated documentation.
License
Source code license is the Unlicense; you are permitted to do with this as thou wilt. For details, please refer to the LICENSE file included with the source code.