1
0
mirror of https://github.com/djhackersdev/bemanitools.git synced 2025-02-26 22:49:28 +01:00

688 Commits

Author SHA1 Message Date
icex2
3db8bc4898
Merge 9b5f627dd178cc9a47a504ab6078f2032273d69d into sapling-pr-archive-icex2 2025-02-08 23:02:32 +01:00
icex2
9b5f627dd1 feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
2025-02-08 23:02:27 +01:00
icex2
29f57065fe merge commit for archive created by Sapling 2025-02-08 23:01:49 +01:00
icex2
05889947fe feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
Summary:

Test Plan:
2025-02-08 23:00:58 +01:00
icex2
2a34bb19da
Merge 8b22ef1e8c53ec56dfbc45542ac89a4fe9657f66 into sapling-pr-archive-icex2 2025-02-08 22:44:01 +01:00
icex2
8b22ef1e8c feat: Add iidxio-async implementation
A shim library implementing the same concept as the already
existing ddrio-async library. The iidxio implementation takes
another iidxio library and runs it asynchronously which may
improve performance for certain iidxio implementations,
e.g. if the send and receive functions are driving actual IO
calls synchrously and are expensive.

This is not a replacement for a well engineered and proper
implementation of a iidxio library for any specific use-case.
It does not fix bad performance of existing implementations,
i.e. if the poll rate is too low because actual IO is too slow.

Use with caution and know why and when you need to use
it.
2025-02-08 22:42:52 +01:00
icex2
b2006ec9be merge commit for archive created by Sapling 2025-02-08 22:39:49 +01:00
icex2
db6e7a6ad9 feat: d3d9-monitor-check tool
A separate application to run the infamous IIDX “monitor check”.

The on-screen output has been enhanced to provide more
detailed information about the on-going process. The tool
furthermore allows basic querying of adapter and adapter
modes information from the command line. These additional
options can be useful to gather more debug information
or select correct parameters for the monitor test from actually
supported mode parameters by the adapter.

The tool has been tested on an actual cabinet with nvgpu
setting different custom timings. The accuracy seems to be
even higher than what IIDX’s monitor check is actually showing.
For example, with a custom timing of 59.900, the tool yields 59.902.
Meanwhile, the monitor check of iidx 29 59.8981 hz to 59.8997 hz
on screen.

This doesn’t mean the game’s getting inaccurate values. The game
actually syncs and plays just fine. However, the game’s monitor check
cannot be used as a reference for “getting the avg. refresh rate”
value as an input parameter for other tools, e.g. chart patching with
btools.
2025-02-08 22:39:41 +01:00
icex2
f15eec50fe
Merge 27bb8a0e2d98cfb7b96a5d6ba4f6188ce6ee18f9 into sapling-pr-archive-icex2 2025-02-08 22:17:30 +01:00
icex2
27bb8a0e2d feat: d3d9-monitor-check tool
A separate application to run the infamous IIDX “monitor check”.

The on-screen output has been enhanced to provide more
detailed information about the on-going process. The tool
furthermore allows basic querying of adapter and adapter
modes information from the command line. These additional
options can be useful to gather more debug information
or select correct parameters for the monitor test from actually
supported mode parameters by the adapter.

The tool has been tested on an actual cabinet with nvgpu
setting different custom timings. The accuracy seems to be
even higher than what IIDX’s monitor check is actually showing.
For example, with a custom timing of 59.900, the tool yields 59.902.
Meanwhile, the monitor check of iidx 30 yields ~XXX TODO.
2025-02-08 22:17:27 +01:00
icex2
e0c7141896
Merge 5f5824f9f8212c6f152ee22b0b9f0ce955317495 into sapling-pr-archive-icex2 2025-02-08 22:17:05 +01:00
icex2
5f5824f9f8 feat: d3d9-monitor-check tool
Summary:

Test Plan:
A separate application to run the infamous IIDX “monitor check”.

The on-screen output has been enhanced to provide more
detailed information about the on-going process. The tool
furthermore allows basic querying of adapter and adapter
modes information from the command line. These additional
options can be useful to gather more debug information
or select correct parameters for the monitor test from actually
supported mode parameters by the adapter.

The tool has been tested on an actual cabinet with nvgpu
setting different custom timings. The accuracy seems to be
even higher than what IIDX’s monitor check is actually showing.
For example, with a custom timing of 59.900, the tool yields 59.902.
Meanwhile, the monitor check of iidx 30 yields ~XXX TODO.
2025-02-08 22:16:55 +01:00
icex2
9cf9cac4e3 merge commit for archive created by Sapling 2025-02-07 22:41:56 +01:00
icex2
a11c7a0704 feat: Add separate d3d9-frame-graph-hook
Allow this to be hooked by any application with a d3d9
render backend. This is not compatible with d3d9ex.
2025-02-07 22:41:44 +01:00
icex2
83473a83be feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
Summary:

Test Plan:
2025-02-07 22:41:44 +01:00
icex2
aa3e7d307d feat: Add frame time performance graph imgui overlay
A overlay window showing the a frame time graph with
the current frame time, ~10 seconds of history as well
as reference lines for the current avg. and a configurable
target frame time.

This is considered a debug tool to support in any efforts
that are related to understanding current frame times
of the games. More specifically this can be used to asses
impact of any bemanitools hooking to the game’s main
(render) loop.
2025-02-07 22:41:44 +01:00
icex2
1800f75f3d feat: Add bt d3d9 hook specific imgui overlay
For now, we focus on internal overlays for bemanitools
that hook into an existing d3d9 context. The current
abstraction is fairly thin and should be fine as a start.

Implementations are called “components” and hook
up with a single frame_update function to execute
and logic and drawing updates with imgui
2025-02-07 22:41:44 +01:00
icex2
c0289b14d3 fix: Add missing hook_table_revert function
The function signature was already defined in the header
but the implementation in the module missing
2025-02-07 22:41:44 +01:00
icex2
d17dcea594 feat: Integrate imgui library, squash to initial integration
Version 1.91.7 of the imgui library with the cimgui wrapper.

imgui allows us to easily create minimal and powerful UI for
use-cases like in-game overlays or separate tooling.

The additional wrappers cimgui_impl_dx9 and cimgui_impl_win32
were added to provide a full C linkage integration for the rest
of the code base.

Tweaks to the makefile were kept to a minimum but enable
compilation of C++ since imgui is C++ based.

Remark: At this point bemanitools itself is still to be kept a pure
C codebase. Due to the lack of proper module/library management
with the current build system in bemanitools 5, proper separation
of concerns and clean integration with external libraries isn’t
possible with reasonable effort.


Summary:

Test Plan:
2025-02-07 22:41:44 +01:00
icex2
002a5727ef
Merge 1e4fffb5f954359cbf9eba50b513b4b1ad91bbc5 into sapling-pr-archive-icex2 2025-02-07 16:17:23 +01:00
icex2
1e4fffb5f9 feat: Add separate d3d9-frame-graph-hook
Allow this to be hooked by any application with a d3d9
render backend. This is not compatible with d3d9ex.
2025-02-07 16:17:13 +01:00
icex2
93fe44b46e
Merge e12eb2b969fd5fe14398b100f80b5235e451ea62 into sapling-pr-archive-icex2 2025-02-07 16:15:55 +01:00
icex2
e12eb2b969 feat: Add separate d3d9-frame-graph-hook
Allow this to be hooked by any application with a d3d9
render backend. This is not compatible with d3d9ex.
2025-02-07 16:15:44 +01:00
icex2
0afadc6576
Merge 8b82b328944a98a087389f4e70b7eecc3808aa7e into sapling-pr-archive-icex2 2025-02-07 15:19:17 +01:00
icex2
8b82b32894 feat: Integrate frame time performance graph into iidxhook 1-8
Integrate the previously created frame time graph component
into iidxhook 1 to 8. iidxhook9 uses d3d9ex which still requires
a separate hook implementation for imgui.

Guard the feature with a switch as it might have some performance
impact and it’s something that is only required to be turned on
when needed.
2025-02-07 15:19:02 +01:00
icex2
8efeb68c75 feat: Add frame time performance graph imgui overlay
A overlay window showing the a frame time graph with
the current frame time, ~10 seconds of history as well
as reference lines for the current avg. and a configurable
target frame time.

This is considered a debug tool to support in any efforts
that are related to understanding current frame times
of the games. More specifically this can be used to asses
impact of any bemanitools hooking to the game’s main
(render) loop.
2025-02-07 15:14:25 +01:00
icex2
d482acd533 feat: Add bt d3d9 hook specific imgui overlay
For now, we focus on internal overlays for bemanitools
that hook into an existing d3d9 context. The current
abstraction is fairly thin and should be fine as a start.

Implementations are called “components” and hook
up with a single frame_update function to execute
and logic and drawing updates with imgui
2025-02-07 15:12:21 +01:00
icex2
8d49bd8f40 fix: Add missing hook_table_revert function
The function signature was already defined in the header
but the implementation in the module missing
2025-02-07 15:10:31 +01:00
icex2
d977a0bf35 feat: Integrate imgui library, squash to initial integration
Version 1.91.7 of the imgui library with the cimgui wrapper.

imgui allows us to easily create minimal and powerful UI for
use-cases like in-game overlays or separate tooling.

The additional wrappers cimgui_impl_dx9 and cimgui_impl_win32
were added to provide a full C linkage integration for the rest
of the code base.

Tweaks to the makefile were kept to a minimum but enable
compilation of C++ since imgui is C++ based.

Remark: At this point bemanitools itself is still to be kept a pure
C codebase. Due to the lack of proper module/library management
with the current build system in bemanitools 5, proper separation
of concerns and clean integration with external libraries isn’t
possible with reasonable effort.


Summary:

Test Plan:
2025-02-07 15:10:31 +01:00
icex2
dab2230a1c merge commit for archive created by Sapling 2025-02-07 15:04:02 +01:00
icex2
d25d49b668 fix: Add missing hook_table_revert function
The function signature was already defined in the header
but the implementation in the module missing
2025-02-07 15:03:46 +01:00
icex2
8282a9f3f4 TODO split to two features: imgui-bt abstraction layer + first component frame graph
Summary:

Test Plan:
Summary:

Test Plan:
2025-02-07 15:02:36 +01:00
icex2
2c00da6232 feat: Integrate imgui library
Version 1.91.7 of the imgui library with the cimgui wrapper.

imgui allows us to easily create minimal and powerful UI for
use-cases like in-game overlays or separate tooling.

The additional wrappers cimgui_impl_dx9 and cimgui_impl_win32
were added to provide a full C linkage integration for the rest
of the code base.

Tweaks to the makefile were kept to a minimum but enable
compilation of C++ since imgui is C++ based.

Remark: At this point bemanitools itself is still to be kept a pure
C codebase. Due to the lack of proper module/library management
with the current build system in bemanitools 5, proper separation
of concerns and clean integration with external libraries isn’t
possible with reasonable effort.
2025-02-07 13:23:21 +01:00
icex2
cf8df078f5
Merge 4d8c9359a187c8bc231cd053662a3d34a1a0cc49 into sapling-pr-archive-icex2 2025-02-07 13:22:26 +01:00
icex2
4d8c9359a1 feat: Add warning if vsync is not enabled
Something I ran into by accident during testing and
development that I had vsync turned off by accident.
Increase visibility in the logs.
2025-02-07 13:22:11 +01:00
icex2
c33e9bb06a
Merge 77ff211c6874c0b307c2bc4326bd2ae12bcc6e03 into sapling-pr-archive-icex2 2025-02-07 13:11:56 +01:00
icex2
77ff211c68 feat: Integrate imgui library
Version 1.91.7 of the imgui library with the cimgui wrapper.

imgui allows us to easily create minimal and powerful UI for
use-cases like in-game overlays or separate tooling.

The additional wrappers cimgui_impl_dx9 and cimgui_impl_win32
were added to provide a full C linkage integration for the rest
of the code base.

Tweaks to the makefile were kept to a minimum but enable
compilation of C++ since imgui is C++ based.

Remark: At this point bemanitools itself is still to be kept a pure
C codebase. Due to the lack of proper module/library management
with the current build system in bemanitools 5, proper separation
of concerns and clean integration with external libraries isn’t
possible with reasonable effort.
2025-02-07 13:11:48 +01:00
icex2
0257ad6b42
Merge 15a176283727cc5f86d88ef8ac1ab6231ca15c0c into sapling-pr-archive-icex2 2025-02-07 13:00:37 +01:00
icex2
15a1762837 feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
2025-02-07 13:00:29 +01:00
icex2
d92987b229
Merge 5f9aaeddf93519573dea5f4374450c0879129298 into sapling-pr-archive-icex2 2025-02-07 12:59:34 +01:00
icex2
5f9aaeddf9 feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
Summary:

Test Plan:
2025-02-07 12:59:28 +01:00
icex2
4cbef617a8
Merge 218ffe72c1f3ea330053d5d64d7b67fa719a03a2 into sapling-pr-archive-icex2 2025-02-07 12:38:42 +01:00
icex2
2ca95ab6d8
Merge 61691f06a7806486bbaa9d5ef2a3e501c538f5cf into sapling-pr-archive-icex2 2025-02-07 12:38:30 +01:00
icex2
61691f06a7 feat: nvgpu tool for tweaking nvidia gpu driver settings
An open source re-implementation of the “NvDisplayConfigLDJ"
tool with additional enhancements.

This can be used to tweak your nvidia GPU driver settings to
create custom display timings to address IIDX’s requirement
if expecting proper display timings. This can also be used for
any legacy IIDX versions that even expect very specific display
timings, e.g. 59.95 or 60.05 hz.

Furthermore, creating application profiles allows further tweaks
to important GPU settings such as the current performance mode
setting. This is crucial to ensure the GPU is not going into any
kind of power saving states which results in non-smooth
scrolling during gameplay and micro stuttering that cannot
be measured on application level.
2025-02-07 12:33:16 +01:00
icex2
218ffe72c1 feat: Add iidxio-async implementation
A shim library implementing the same concept as the already
existing ddrio-async library. The iidxio implementation takes
another iidxio library and runs it asynchronously which may
improve performance for certain iidxio implementations,
e.g. if the send and receive functions are driving actual IO
calls synchrously and are expensive.

This is not a replacement for a well engineered and proper
implementation of a iidxio library for any specific use-case.
It does not fix bad performance of existing implementations,
i.e. if the poll rate is too low because actual IO is too slow.

Use with caution and know why and when you need to use
it.
2025-02-07 12:18:55 +01:00
icex2
8c5cf383b6
Merge 94aa0bdda34cd382c342458809ee16dd9bd0441b into sapling-pr-archive-icex2 2024-02-25 09:36:13 +01:00
icex2
075381481d merge commit for archive created by Sapling 2024-02-25 09:35:20 +01:00
icex2
94aa0bdda3 feat(avs-util): Add helper to translate property errors 2024-02-25 09:34:37 +01:00
icex2
70e8e2a965 fix(avs): Incorrect function signature
After getting doubts, I looked this one up again on the
assembly. The decompiled output confused me
and no actual value is being returned there.
2024-02-25 09:34:37 +01:00
icex2
d1db1d816f
Merge d3273bf1d8f4e9da6a7e8bd98e0d3c233d89ede8 into sapling-pr-archive-icex2 2024-02-25 09:33:50 +01:00