Commit Graph

110 Commits

Author SHA1 Message Date
icex2
7840864998 chore: Remove cconfig
Finish deprecation. Everything uses the new config
abstraction layer of the bt(6) core.
2024-08-17 12:51:00 +02:00
icex2
04603a9591 feat(vigem-sdvxio): Use new config api
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
d98311762b feat(sdvxio-kfca): Use new config api
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
8a68e563e0 feat(popnhook1): Use sdk-hook and new config api
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
3008a1410d feat(jbio-h44b): Use new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
f9f930112d feat(jbhook1): Use sdk-hook and new config api
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
c03f5d3909 refact(vigem-iidxio): Use new config api
Summary:

Test Plan:
2024-08-17 12:51:00 +02:00
icex2
4c9175c697 chore: Remove now obselete tests for cconfig
Due to the deprecation of cconfig, these are no
longer needed.
2024-08-17 12:51:00 +02:00
icex2
ac302b7ddd refact(sdvxhook2-cn): Use new config api
Summary:

Test Plan:
Summary:

Test Plan:
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:15 +02:00
icex2
ee85ad4447 refact(sdvxhook2) Use new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:15 +02:00
icex2
d1c346595c refact(iidxio-bio2): Use new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:15 +02:00
icex2
6c0820ae42 refact(eamio-icca): Use new config api
Summary:

Test Plan:
2024-08-17 12:50:15 +02:00
icex2
979b6e090c refact(vigem-ddrio): Use new config api
Summary:

Test Plan:
2024-08-17 12:50:15 +02:00
icex2
8b6cd4a58e refact(iidxhook9): Use sdk-hook and support new config api
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
d578feb4f9 chore: Remove broken test
Trouble building it because of some linking issues.
Since cconfig is going to be deprecated anyway, don’t
bother fixing this anymore.
2024-08-17 12:50:14 +02:00
icex2
c5b54d4e24 refact(iidxhook8): Use sdk-hook and support new config api
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
f7d4b036f2 refact(iidxhook7): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
b4bccfbe63 refact(iidxhook6): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
a6202f4701 refact(iidxhook5-cn): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
baf3e5ff81 refact(iidxhook5): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:50:14 +02:00
icex2
4f97282d97 React(iidxhook4-cn): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-17 12:49:18 +02:00
icex2
617550b6e6 refact(iidxhook4): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-15 13:26:41 +02:00
icex2
f3deaddba1 refact(iidxhook3): Use sdk-hook and support new config api
Summary:

Test Plan:
Summary:

Test Plan:
2024-08-15 13:26:41 +02:00
icex2
95e167c01c refact(iidxhook2): Use sdk-hook and support new config api
Summary:

Test Plan:
2024-08-15 13:26:20 +02:00
icex2
f5ed7f5231 feat(iidxhook1): Switch iidx versions 10-12 to new xml config
Summary:

Test Plan:
2024-08-15 13:24:47 +02:00
icex2
14f534b993 fix: Log fatal force flush
Summary:

Test Plan:
2024-08-15 11:34:32 +02:00
icex2
45d7a29cba feat: Add mxml
I checked out the few xml implementations that
are available as pure C and this one seemed like
the best choice so far. It's fairly small regarding
foot print, similar API to the property (node) API,
and I could get it to work fairly easily with a few
sandbox examples thanks to decent documentation.

This serves as the base for a bemanitools property
(node) implementation for games that do not come
with AVS 2 and the property API.
2024-08-15 11:34:32 +02:00
icex2
57e68f928a feat: bemanitools 6 initial refactoring drop, alpha 1
**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:
2024-08-15 11:34:31 +02:00
icex2
fd9f455bf3 feat(procmon): Library to hook and monitor selected system calls
A general debugging tool. 3rd party applications such as
"procmon" (same name) provide these capabilites and even
more. But, they are more difficult to run with bemanitools
and don't provide a unified look at the output in combination
with the log output by bemanitools.

Provide an initial set of system call hooks that have already
supported debugging efforts. More can be added when needed
later.
2024-08-14 17:53:52 +02:00
icex2
4b352ed080 feat(inject): Use new exception handler with stacktraces
Adjust inject to utilize the new feature. This also
requires including the dwarfstack.dll in all distribution
packages.
2024-08-14 17:53:51 +02:00
icex2
8fde17d24a refactor(dist): Config and .bat files
Move everything to new launcher.xml configuration
files. Adjust the bootstrapping of launcher in the
.bat files. Features such as copying the default
props/ files to nvram are now handled by launcher.

Using the PATH variable, bemanitools binaries can
live in their own dedicated bemanitools/ subfolder
next to props/ and modules/ now. All original
binaries are expected to be kept in a modules/
folder like on stock data.
2024-08-14 17:53:51 +02:00
icex2
573840aba6 feat: Add core module
This module contains the "core" (API) of
bemanitools which includes an abstraction
layer for threads and logging at this time.

The threads API is very close to what
util/thread already was with some structural
enhancements which make it easier to understand
and work with the API, I hope. Some additional
helpers (*-ext module) support in doing common
tasks, e.g. setting up the thread API with other
modules.

The log(ging) part receives a major overhaul to
address known limitations and issues with the
util/log module:
- Cleaner API layer
- Separate sinks from actual logging engine
- Sinks are composable
- Improved and cleaner compatibility layer
  with AVS logging API

Additional "extensions" (*-ext modules) add
various helper functions for common tasks like
setting up the logging engine with a file and stdout
sink.

The sinks also improved significantly with the file
sink now supporting proper appending and log rotation.
Logging to stdout/stderr supports coloring of log
messages which works across logging engines.

Overall, this refactored foundation is expected to
support future developments and removes known
limitations at the current scale of bemanitools such as:
- Reducing boiler plate code across hooks
- Interop of bemanitools and AVS (and setting the foundation
  for addressing currently missing interop, e.g. for
  dealing with property structures without AVS)
- Addressing performance issues in the logging engine
  due to incorrect interop with AVS
2024-08-14 17:52:59 +02:00
garbage
7d397dc54c iidxhook3: Add hook for ea3_boot func 2024-03-25 14:16:47 +01:00
icex2
7ee9a2e219 fix(dist): Incorrect versioning for ddr distribution packages
Apparently forgotten to get updated to reflect the
currently supported versions correctly.
2024-02-25 08:52:00 +01:00
icex2
e72e38eda2 chore: Fix ordering of files in module.mk 2024-02-03 10:28:42 +01:00
icex2
44cd2ba098 fix(dist): Incorrect versioning for ddr distribution packages
Apparently forgotten to get updated to reflect the
currently supported versions correctly.
2024-01-31 22:47:14 +01:00
icex2
f17a2d2044 feat/fix(avs/ddr): Support AVS 2.13.06
This one was missing and is the actual correct
version used for ddr-13. 2.13.04 was compatible,
thus far, but there isn't any guarantee that they
are actually 100% compatible (only konmai knows...).
2024-01-31 22:47:14 +01:00
icex2
4fedf34d6b feat: Add new module to scope avs related "utility" stuff
Use this to share helpers or other extensions to the
original avs API across modules.

Start with including error codes to readable strings
to improve velocity on AVS API error analysis.
2024-01-31 22:47:14 +01:00
icex2
9b2ed6910e feat: ddrio-async wrapper/shim driver for async IO
Wrapper/shim library to drive another ddrio in a dedicated
IO thread. Depending on the other ddrio backend used, this
can significantly improve performance while staying
compatible to the existing ddrio API interface

This turned out to be a good solution to solve performance
problems when running MAME with ddrio-p3io that is
(currently) implemented with synchronous IO calls that are
very costly: ~12 ms for a write over the ACIO protocol, ~4 ms
for a read using an IOCTL. As this already adds up to nearly
a full frame (60 fps) regarding latency, there isn't a lot
of time left to do other stuff in a synchronous update loop.
MAME's performance was unstable and dropped all the time below
100%. The result was a choppy gameplay experience.

Combining ddrio-async with ddrio-p3io, the combined backend
is able to drive inputs/outputs at a rate of ~250hz = ~4
updates per frame. This results in an average input latency
of ~4 ms which is as good as it can get with the p3io
hardware's performance limitations that I measured (see
the 4 ms for the IOCTL mentioned above).

This is more than good enough as as update frequency of
the 573 hardware is slightly less than that (I got told
something ~180 hz?).

tl;dr: Gameplay on MAME is great, smooth frame rate, IO feels
amazing and responsive.
2023-11-03 15:46:11 +01:00
icex2
e673cf694f feat(iidx): Support iidx 30 2023-10-18 01:09:45 +02:00
icex2
6be7bdc403 chore(module.mk): Add various ddr related IO tools 2023-06-25 13:24:07 +02:00
icex2
20c6e46a71 feat(ddriotest): Add driotest tool to test ddrio API implementations 2023-06-25 13:24:07 +02:00
icex2
0961bae99f feat(ddrio-p3io): Add ddrio API implementation for DDR P3IO
Also includes EXTIO. Run a SD style cabinet with bemanitools
ddrio API.
2023-06-25 13:24:07 +02:00
icex2
3a89502498 feat(p3io-ddr-tool): CLI tool to test and debug a real DDR P3IO
Extensive tool with subcommands to trigger the various
P3IO commands and run the P3IO + EXTIO DDR hardware
combo with a hardware test menu.
2023-06-25 13:24:07 +02:00
icex2
23ca366f78 chore(module.mk): Add extio related sub-projects 2023-06-25 13:24:07 +02:00
icex2
c22ec4fcff feat(p3iodrv): Add DDR compatible P3IO driver
Initial version that supports the most important
features to operate all inputs and outputs of a
DDR SD cabinet.
2023-06-25 13:24:07 +02:00
icex2
782a23db74 feat(iidx 20-26): New up-/downscaling gfx module, old one doesn't work
This replaces the scaling feature of iidxhook-util/d3d9 as the
game engine changed significantly that the old one is incompatible.

Create a new module because the logic to implement a scaling
feature is very different now. This also avoids further cluttering
the already badly overloaded old module.

The new module is light weight and "plugable" on a hooking
level. Further modules will follow to de-clutter the
iidxhook-util/d3d9 module
2023-04-15 22:37:07 +02:00
icex2
6ea099fd9e feat(d3d9-util): Add separate module for d3d9 utils/helpers
Currently includes:

* dx9 error formatting helpers. Turn error codes into readable
  text
* Vertex struct and helper function
2023-04-15 22:37:07 +02:00
din
b864c0dcfd
Feature: vigem driver for ddrio (#247)
Reads state of ddrio and updates vigem pads. Similar in vein to
viggem-sdvxio and vigem-iidxio

Useful for playing xinput related games with official hardware.
2023-04-11 18:04:36 +02:00
icex2
edd0bda3bb Update distribution files and naming to indicate support of iidx 29
No significant changes on the game's side. Tooling that works for
27 and 28 also works fine for 29
2022-10-19 00:46:47 +02:00