1
0
mirror of https://github.com/djhackersdev/bemanitools.git synced 2024-11-28 00:10:51 +01:00

doc: Add info/instructions regarding ddrio-async

This commit is contained in:
icex2 2023-11-03 12:16:25 +01:00 committed by icex2
parent 9b2ed6910e
commit 9a964e6bdb
4 changed files with 44 additions and 2 deletions

View File

@ -18,7 +18,8 @@ Table of contents:
* [popnhook](popnhook/README.md): Documentation relevant to `popnhook` implementations
* [sdvxhook](sdvxhook/README.md): Documentation relevant to `sdvxhook` implementations
* Development
* [API](api.md): Available APIs for BT5 and instructions how to use them
* [API](api.md): Available APIs and IO (hardware) implementations for BT5 and instructions how
to use them
* [Architecture](architecture.md): Outline of BT5's architecture, how things are designed and why
* [Development](development.md): Development environment, building, releasing, etc.
* [Developer documentation](dev/README.md): Various lose documentation/notes by developers

View File

@ -25,6 +25,8 @@ The following implementations are already shipped with BT5.
* [ddrio-p3io.dll](ddrhook/ddrio-p3io.md): DDR P3IO (Dragon PCB) + EXTIO hardware
* ddrio-mm.dll: Minimaid hardware
* [ddrio-smx.dll](ddrhook/ddrio-smx.md): StepManiaX platforms
* [ddrio-async](ddrhook/ddrio-async.md): Wrapper/shim library to drive another ddrio in
a dedicated IO thread
* Beatmania IIDX
* iidxio.dll (default): Keyboard, joystick and mouse input
* [iidxio-bio2.dll](iidxhook/iidxio-bio2.md): BIO2 driver

View File

@ -46,7 +46,10 @@ IO hardware you want to use:
* `ddrio`: Default implementation supporting keyboard, mouse and USB
game controllers
* ddrio-mm: Support Minimaid custom interface
* [ddrio-smx](ddrhook/ddrio-smx.md): Support for StepManiaX dance platforms
* [ddrio-smx](ddrio-smx.md): Support for StepManiaX dance platforms
* [ddrio-p3io](ddrio-p3io.md): P3IO + EXTIO driver implementation
* [ddrio-async](ddrio-async.md): Wrapper/shim library to drive another ddrio in
a dedicated IO thread
## Unicorntail

View File

@ -0,0 +1,36 @@
# Asynchronous proxy wrapper for other ddrio implementations
This implementation of the Bemanitools API is not implementing support for any
specific IO hardware. It is a proxy/shim library that loads another ddrio
library, e.g. ddrio-p3io, and drives the entire backend in a dedicated IO
thread. By implementing this behind the ddrio API, it is fully transparent to
any existing application using it.
The main benefit is the improved IO polling performance depending on how
expensive the synchronous calls of the actual hardware are. For example,
*ddrio-p3io* has very expensive write calls with ~12 ms duration while read
calls take ~4 ms. Therefore, a full update cycle is already about as costly
as rendering an entire frame (at 60 fps).
## Setup
For hook libraries, i.e. ddrhookX, but likely applicable to 3rd party
applications (consolidate their manuals).
* Have `ddrio-async.dll` in the same folder as your `ddrhookX.dll`
* Rename `ddrio-async.dll` to `ddrio.dll`
* Pick another ddrio library as the backend of your choice, e.g. `ddrio-p3io.dl`
and put it next to the async `ddrio.dll`
* Rename it to `ddrio-async-child.dll`, ddrio-async is looking for that filename
in the same folder
* Ensure that your `gamestart.bat` actually injects the appropriate `ddrhook.dll`, for example:
```bat
inject ddrhook1.dll ddr.exe ...*
```
or
```bat
launcher -K ddrhook2.dll arkmdxp3.dll ...*
```