DerKoun / bsnes-hd

bsnes fork that adds HD video features
GNU General Public License v3.0
624 stars 35 forks source link

[Feature Request] Option to ignore IPS patch warning. #112

Open ValiantBlade opened 2 years ago

ValiantBlade commented 2 years ago

I use shortcuts to launch all of my BSNES games in fullscreen through a frontend, and it all works well, except for one issue. If I happen to be playing a game that has an IPS patch, I get the pop-up warning about how IPS patches are a bad patch format. Naturally, fan translations from the early 2000s and whatnot aren't likely to be updated anytime soon, getting BPS versions isn't a viable option short of making my own, and I already confirmed via checksums that my ROMs are correct for these IPS patches, so I don't really need the warning. Unfortunately, there's no way to permanently silence this warning, and it interrupts me every time I open my shortcut for Shin Megami Tensei 1, or Legend of the Rudra, etc.

It would be an improvement to have an either a "don't remind me again for this ROM" checkbox, or preferably, a settings tickbox to ignore those reminders. While I'm thinking about it, it would also be nice to save the compatibility flags that are enabled or disabled on a per-game basis, on the offchance I decide to play an old Super Mario World ROMHack or something and I need a specific flag for it, but I don't want to accidentally leave it on for when I go to play F-Zero.

DerKoun commented 2 years ago

I think I could add a setting for IPS, giving the options "ask" (default), "headered" and "unheadered". I'll look into it when I get back to work on this project.

Storing settings per ROM would be a big addition for someone with my minimal C++ skills. Maybe you should request that upstream at bsnes-emu. I could port it later. (I could add a setting override for the compatibility settings. It would not be user friendly at all, but it would do the job.)

ValiantBlade commented 2 years ago

Honestly, the only problem with what you suggest in the first paragraph is that there are actually a few ROMHacks and Fan Translations that specifically require headers to function, as in the instructions themselves tell you to add a header, I recall some old fan translations specifying needing a header, the ones that come to mind are old DeJap ones, although I don't have any to point at, other than a specific NES game, Heracles no Eikou, although SNES headers =/= NES headers. While I'm pretty sure my collection as it stands is all unheadered ROMs, I might need to add a header for a specific patch someday. There's some inherent variability. Most other emulators just don't check if there's a header/no-header mismatch and just softpatch it anyways, and the problem with that is crystal clear, but it's also something most fan translation players have LONG learned to work around by double checking every checksum involved.

I'll consider requesting it upstream, I'm just not sure how this would be received there, since this PROBABLY conflicts with the BSNES development philosophy, considering the whole purpose of that box is to basically encourage you to drop the IPS patch for a BPS patch, and Near was quite adamant about the BPS format eventually completely replacing IPS patches, the problem is that for the most part, people are usually using BPS patches going forward, rather than updating their own work, and older patches that haven't seen updates since the mid-2000s, well, haven't been updated since the mid 2000s.

I completely understand why this prompt is in the emulator, I just consider it to be a bit user-hostile, and the real fix is simply actually creating a convenient way to convert patch formats, but unfortunately it would seem the optimal way to do that is literally so patch a copy of a ROM and generate a new patch file using the original and patched versions, which is clunky and involves a lot of busy work if you, say, have about a dozen patches, like I do. Not to mention how that's kind of a crude solution and every single user who runs into this problem would need to do the same thing manually, since there's no out of the box solution.

ValiantBlade commented 2 years ago

Actually, I just had an idea, making this IPS setting for "ask", "headered", and "unheadered" into a compatibility setting, and if you do the override for compatibility settings and include this one in those overrides, making it more user-friendly can just be done later for compatibility overrides as a whole later on.

If you do precisely that, that's more than fine.

DerKoun commented 2 years ago

I'll see what I can do. It mostly depends on how complex the changes turn out to be.

I still highly recommend making this request upstream as well. There are more skilled people working there. Worst thing that can happen is that they say 'no'.