djhackersdev / bemanitools

Runs recent Konami arcade games and emulates various arcade hardware.
The Unlicense
85 stars 17 forks source link

DDR hooks documentation updates - [merged] #220

Closed icex2 closed 1 year ago

icex2 commented 2 years ago

Merges ddr-doc-update -> master

Update docs by adding missing ddrhook1 and 2 docs. Consolidated information from testing and debugging sessions.

icex2 commented 2 years ago

added 1 commit

Compare with previous version

icex2 commented 2 years ago

added 2 commits

Compare with previous version

icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/README.md line 19

* [ddrhook1](ddrhook1.md): X, X2 (US/EU regions)
* [ddrhook2](ddrhook2.md): X2 (JP region), X3 vs. 2ndMIX, 2013, 2014, A
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/README.md line 29

To run your game with ddrhook, you have to use the inject tool to inject the
DLL to the game process. `dist/ddr` contains bat scripts with all the
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/README.md line 38

Add the argument *-h* when running inject with ddrhook to print help/usage
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/ddrhook1.md line 7

* Dance Dance Revolution X
* Dance Dance Revolution X2 (US/EU regions)
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/ddrhook1.md line 83

* Name your edit data file either `DDR_EDIT_J.DAT` (for JP version) or `DDR_EDIT_U.DAT`
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/ddrhook1.md line 113

This entire section is wrong.

I already explained this to you in a DM before, and also mentioned it in the PR. The game detects that IsDebuggerPresent is returning true and uses a "safe" code path that uses a .mpg video instead of the normal .m2v videos. The video codec it uses for the .mpg is also different from the .m2v file (which uses CLVSD.ax).

If you try using k-clvsd.dll with DDR X (and I think X2, at least the US/EU versions) then the game will just outright crash during boot.

Presumably the reasoning for the IsDebuggerPresent check is because the required video codecs are protected and have their own anti-debug measures, and trying to run the games in a debugger with that codec results in a bunch of exceptions. Using the .mpg videos that are played when IsDebuggerPresent returns true just uses standard system codecs which have no problems with debuggers.

There is already a fix for this issue in BT5: IsDebuggerPresent is hooked to always return false.

icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on doc/ddrhook/ddrhook2.md line 7

* Dance Dance Revolution X2 (JP region)

In general, references to the US/EU references of X2 should be removed from ddrhook2.md since X2 US/EU uses ddrhook1.dll. And with that change, none of the games using ddrhook2 use inject.exe as a result.

icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:03

Commented on README.md line 37

    * Dance Dance Revolution X2 (US/EU regions) (`ddr-12-us.zip`): [ddrhook1](doc/ddrhook/ddrhook1.md)
    * Dance Dance Revolution X2 (JP region) (`ddr-12.zip`): [ddrhook2](doc/ddrhook/ddrhook2.md)
icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 6, 2022, 01:10

Commented on doc/ddrhook/ddrhook1.md line 113

Also, I haven't personally verified it yet but an anecdote: X3 (maybe X2 too?) may have the same IsDebuggerPresent issue. When trying to help a friend debug why his games were crashing at the "start / Create Movie Work" step of boot, he found that the game would boot in a debugger but not through the launcher normally so I think there is more branched code for debugging in X2 and X3. No idea about 2014 and beyond. No idea if it changes the background videos in later DDR games though.

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

changed this line in version 4 of the diff

icex2 commented 2 years ago

added 1 commit

Compare with previous version

icex2 commented 2 years ago

changed this line in version 5 of the diff

icex2 commented 2 years ago

added 4 commits

Compare with previous version

icex2 commented 2 years ago

Sorry for the mix-up and thanks for explaining it again. Figured that these details are likely not valuable in the user-targetted documentation to begin with. Please have a look at the revised snippet.

icex2 commented 2 years ago

In GitLab by @33c17f40 on Jun 7, 2022, 08:38

Commented on doc/ddrhook/ddrhook1.md line 113

Looks good to me.

icex2 commented 2 years ago

resolved all threads

icex2 commented 2 years ago

added 6 commits

Compare with previous version