Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alerts for game-breaking patches / remove obsolete patches? #340

Open
LupinThidr opened this issue Dec 17, 2023 · 5 comments
Open

Alerts for game-breaking patches / remove obsolete patches? #340

LupinThidr opened this issue Dec 17, 2023 · 5 comments

Comments

@LupinThidr
Copy link
Contributor

LupinThidr commented Dec 17, 2023

Certain patches negatively impact and/or break the game without the user knowing.

Patches that users blindly apply, from reading various communities:

  • Audio-related patches (shared mode WASAPI, "HDMI fixes")
    Running the games with HDMI audio isn't recommended due to latency, though this is fixed in tools. Enabling these patches don't necessarily break anything.
    Shared mode WASAPI also isn't recommended. "if I can hear discord then I should enable it" without considering why the game uses exclusive audio...
  • Instruction set patches
    Most are quick hacks and cause breakage. I don't know what specifically besides a game having broken videos (...with a user promptly asking why half of his screen is black)
  • DDR's "Gold cab" / "type 6" patch (each page has it under a different name)
    Forces gold assets and enables golden league while also forcing gold cab lighting and timing offsets.
    Alternative patch for only loading gold assets, Golden league seems a bit more complicated:
MDX-001-2022020200
gamemdx.dll
gold cab textures for non-gold cab
0x9572B: 0x75 -> 0x74
  • IIDX's skip monitor check patch
    The game does the monitor check for a reason. Skipping it entirely makes the game use default value 1 from a quick glance.
  • IIDX's skip monitor error patch
    Like the above, this error is displayed for a reason. The game throws this if the game is running in TDJ, and if monitor check value is outside of the 119~121 range, which will probably always will happen with the above patch (but I haven't looked at what it actually patches)
  • IIDX adjust-related patches
    This is a global offset the game typically sets based off of monitor EDID. Most people don't know what Adjust even means, the game has it hidden behind a button code in the test menu. Absolutely shouldn't be touched, unless someone really needs an offset outside of what the game's user settings provide (since it all gets added to the same value internally)
  • SDVX's undescriptive "120hz" patches
    These at least should be documented... from the name alone I can just assume it'd bring along a plethora of issues.
  • "Premium free" / "Stage freeze" patches for games that don't have it as a feature
    These are massive hacks that force the game on a single track and in some cases breaks network.

Patches that haven't been necessary for a long time (fixed in tools, since they were just string patches or skipping win32 functions) but people keep porting and adding them:

  • Drive letter fixes
  • HDMI audio
  • Power configuration
  • Volume changes

UX-wise I'm not sure how to deal with the problematic patches. Obviously you could remove them outright but that won't stop people from seeking out alternative ways.
The first idea I had when writing this was to have a confirmation dialog (not javascript alert/confirm since browsers ask if a user can block them) that require 10 seconds before passing. Something annoying that will catch a user's attention rather than a tooltip, since knowing that a patch breaks your experience is more critical than knowing what "cursor lock" does.

Also plenty of patches have various labels and descriptions. Might be a good idea to have a central area for them somewhere so there isn't 15 variations what "dark mode" is for IIDX for example.

@mon
Copy link
Owner

mon commented Dec 17, 2023

You raise some good points, UX is always tricky.

I don't think it's valid to think enabling HDMI audio / shared mode audio is an undesirable state. Often people just wanna play the game in the easiest manner, timing be damned. Lots of games have an offset, so it's not like it's the worst thing in the world.

I believe the IIDX monitor check skip patch is so you can run TDJ at 60Hz, but don't quote me on that.

If you can more clearly describe how the 120Hz SDVX patches work, best to make a PR documenting them instead of assuming I want to go to the effort of finding out for myself.

I'm not sure if you've seen, but in addition to the normal tooltips, there is an orange "danger" tooltip that already alerts people to things that might break stuff:
image

A fair number of pfree hacks already have this danger tooltip, if any are missing they should be added. I think calling them "massive hacks" is overrated, stuff like SDVX III and Museca work absolutely fine with them and it works great with their modular scene system.

Stuff like the instruction set, IIDX monitor check patches are probably worth upgrading from "tooltip" to "danger" any place they occur. But aren't the new ones able to force a specific monitor check value? If your setup is consistent, that seems valuable to me.

In addition to this, I could add a "warning" tooltip for things that people might still need, but have side-effects. This would be good for shared mode audio, DDR gold cab patches, etc.

"Not necessary" patches.... That is of course assuming that someone is using the latest spice2x, right? Does bemanitools patch all of those things for all games these days? If it takes you more than 20 seconds to look up that answer, and they don't cause any side-effects, does it really matter if people keep porting them forward?

That being said, another UI tweak that could work: patch categories. So we could group patches under "gameplay", "audio", "compatibility". Thoughts?

@LupinThidr
Copy link
Contributor Author

LupinThidr commented Dec 17, 2023

Always assume the user is a complete fool, or mindlessly following a 3 years out of date guide that probably doesn't have crucial information about what shared mode WASAPI affects, other than "enable this if you want to hear discord sounds".

Skip monitor check seems to be for development convenience over playing. 60hz TDJ should be presented with a monitor error, though the game re-runs the monitor check a couple more times if it's under the allowed range so that might have led people to believe it was necessary. Older games have a patch that shortens it rather than skipping it, which is safer, but TDJ complicated a lot of the monitor check code so it's not directly portable.
I didn't know there was a patch to force a value, I suppose that's what the poorly-named "Choose Fullscreen Monitor Check FPS Target" does. Though, I'm not skilled or knowledgeable enough to know if setting it to a flat 120.00 with a monitor check that's typically around 119.32 has any negative impact. A value input could work better instead of a dropdown, just needs a plain explanation to users. (and warn them not to lazily input 120.00)

Pfree in old SDVX games was always best done by external tools that write to memory (pfreepanic) instead of individual patches, so you don't get your game stuck in a loop and have to juggle dlls to play matching or events. I don't know about other games though, one of the key features of the spicetools patcher was being able to do this but it seems to be yet another overlooked feature (especially after SDVX officially got premium time).

I looked at the unnecessary patches and their tool support + dates:

  • power configuration:
    spicetools since first public EG build (a couple months after data was widely available mid-late 2021)
    bemanitools since first public EG build (2022/04/02 5.38)
    It was only really for early adopters.

  • pop'n E/F drive fixes:
    spicetools since 2021/03/01 (Add AVS VFS drive remapping for E: and F:)
    bemanitools since first pop'n tools release, modern games unsupported

  • pop'n HDMI audio fix:
    spicetools since 2020/04/25 (pop'n & HPM HDMI fix)
    bemanitools since first pop'n tools release, modern games unsupported

  • volume:
    spice2x since 2023/11/17
    bemanitools doesn't seem to do hook it

It seems only volume is the recent one fixed by tools, everything else has been fixed for years.
Patch categories could work. Maybe unnecessary ones could have their own category, too.

There's no risk for keeping the old patches around, but no benefit either. Other than a couple extra clicks for each new user and a little wasted time by people porting them by hand thinking they're still necessary, if they're even done by hand nowadays.

Though I still think bigger warnings should be added, a little orange tooltip is easier to ignore than a warning you're forced to read with 10 second delay.
On a popular fork, people seem to even ignore big, red, bold text at the top of the page that specifically says "do not use SDVX PLUS patch unless you have SDVX PLUS"...

Gold cab patch should never be used, but it might be best to leave that can of worms alone... A scream test could have worked (replace the "type 6" patch with one that forces theme and golden league), but I've heard of players talking about new versions or gold mode feeling "better" despite no noticable timing changes (offsets were changed a bit 2017 apparently and windows have always been the same) so that might be those offset values at play. Or placebo :P

@makoflagkk
Copy link

So HDMI audio causes the latency. I guess I can change my audio settings then.. I just was troubleshooting a way to fix input lag. If anyone has a suggestions let me know. Thank you for explaining what causes the input lag. Now I will try to play it through a different audio output.

@mon
Copy link
Owner

mon commented Dec 18, 2023

Would I be correct in thinking that most of your complaints stem from people asking for your help, only to find they have busted configurations? I wonder if there's value to a "ez troubleshooter" where someone can upload their DLLs and XMLs and it identifies common problems...

I will absolutely never implement any kind of timer delay to create a DLL. It's insulting to people who actually know wtf they're doing.

Thank you very much for investigating the versions that use HDD/audio fixes, as I'll be able to incorporate this into documentation.

Here's what I'm thinking as the actions based on this feedback:

  • Nestable sections. You can shove stuff like forced monitor check into "development", and collapse that by default
  • A tooltip-style piece of text, but always displayed. For example, under "compatibility" you can have "Fix volume" with a header of "for bemanitools, and spice before 2023/11"
  • "Warning" in addition to "danger" tooltip
  • Unsure: a confirmation dialog when creating a DLL with any patches enabled with "warning" or "danger" tooltips, that collates all the caveats and puts them in a single window before you can patch the DLL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants