diff --git a/Module.mk b/Module.mk index 2a948a8..493b380 100644 --- a/Module.mk +++ b/Module.mk @@ -100,6 +100,8 @@ include src/main/bstio/Module.mk include src/main/camhook/Module.mk include src/main/cconfig/Module.mk include src/main/config/Module.mk +include src/main/d3d9-frame-graph-hook/Module.mk +include src/main/d3d9-monitor-check/Module.mk include src/main/d3d9-util/Module.mk include src/main/d3d9exhook/Module.mk include src/main/ddrhook-util/Module.mk @@ -232,6 +234,9 @@ $(zipdir)/tools.zip: \ build/bin/indep-32/ezusb2-dbg-hook.dll \ build/bin/indep-32/ezusb2-tool.exe \ build/bin/indep-32/ezusb-tool.exe \ + build/bin/indep-32/nvgpu.exe \ + build/bin/indep-32/d3d9-frame-graph-hook.dll \ + build/bin/indep-32/d3d9-monitor-check.exe \ | $(zipdir)/ $(V)echo ... $@ $(V)zip -j $@ $^ @@ -246,6 +251,9 @@ $(zipdir)/tools-x64.zip: \ build/bin/indep-64/iidx-ezusb2-exit-hook.dll \ build/bin/indep-64/jbiotest.exe \ build/bin/indep-64/mempatch-hook.dll \ + build/bin/indep-64/nvgpu.exe \ + build/bin/indep-64/d3d9-frame-graph-hook.dll \ + build/bin/indep-64/d3d9-monitor-check.exe \ | $(zipdir)/ $(V)echo ... $@ $(V)zip -j $@ $^ diff --git a/README.md b/README.md index 6827f95..fd05d5c 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ The following games are supported with their corresponding hook-libraries. - [extiotest](doc/tools/extiotest.md) - [aciotest](doc/tools/aciotest.md): Command line tool to quickly test ACIO devices - config: UI input/output configuration tool when using the default bemanitools API (geninput) +- [d3d9-monitor-check](doc/tools/d3d9-monitor-check.md): Command line tool to check the monitor refresh rate of the + current GPU + monitor configuration - ir-beat-patch-9/10: Patch the IR beat phase on IIDX 9 and 10 - [mempatch-hook](doc/tools/mempatch-hook.md): Patch raw memory locations in the target process based on the provided configuration diff --git a/doc/tools/d3d9-monitor-check.md b/doc/tools/d3d9-monitor-check.md new file mode 100644 index 0000000..83dc92d --- /dev/null +++ b/doc/tools/d3d9-monitor-check.md @@ -0,0 +1,27 @@ +# D3D9 Monitor Check + +A separate application to run the infamous IIDX “monitor check” without having to run the actual +game. The tool can be used to test measure the current avg. monitor refresh rate or debug/check if +that value is fluctuating for some reason. + +The final avg. value that is provided at the end of the test can be used as input for other tooling +or settings (e.g. patching charts to a different refresh rate on older games with bemanitools). + +Simply run the tool without any arguments to get a full synopsis with usage instructions. + +## "Accuracy" remarks + +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 hz, this tool yields fairly accurate and stable avg. 59.902 hz. + +The monitor check of IIDX 29 shows results of 59.8981 hz to 59.8997 hz on screen. As these are the +only visible values to the user, determining a specific (avg.) value that can be used as input for +other tooling or settings (e.g. patching charts to a different refresh rate on older games with +bemanitools) is difficult. This doesn't mean that the game's monitor checks are actually +inaccurate or wrong. Modern games with a built-in monitor check (starting IIDX 20) are syncing up +fine and don't need any further patching or modifications. + +For older games, picking a value that is not as close as possible to an accurate avg. value can +easily lead to issues with sync. So it's recommended to use the d3d9-monitor-check tool to get the +most accurate value. \ No newline at end of file diff --git a/src/main/d3d9-monitor-check/Module.mk b/src/main/d3d9-monitor-check/Module.mk new file mode 100644 index 0000000..0f66079 --- /dev/null +++ b/src/main/d3d9-monitor-check/Module.mk @@ -0,0 +1,13 @@ +exes += d3d9-monitor-check \ + +ldflags_d3d9-monitor-check := \ + -ld3d9 \ + -ldwmapi \ + -lgdi32 \ + -ld3dx9 \ + +libs_d3d9-monitor-check := \ + util \ + +src_d3d9-monitor-check := \ + main.c \