Wow, who are you guys and what have you done with my smwcentral?
> Hacks are far smaller than the upper data limit of IPS
Is now a bad time to unveil my 64MiB "Far East of Super Mario World" ROM?
> With BPS, Flips can apply patches to headered and unheadered ROMs alike. We get about one question per month about that.
Applying is fine; but when it comes to creating patches, I would kindly ask that you
please not allow that. Both bsnes and Snes9X will only soft-patch with unheadered ROMs. And that's very much by design.
That said, it's not *as* critical since we can at least now detect this situation and verify checksums. Much better than the 50/50 crapshoot that was IPS.
But if you make a BPS patch with your Super Wildcard DX2 headered ROM, and someone applies it to their Super UFO 8.3j headered ROM, it's gonna cause a false failure match for no reason whatsoever.
> I guess the only problem is that LM can't make BPS patches
Lunar Magic seems to hold everything back. A shame nobody has come along to make an open source replacement for it. Plus I'm sure there's gotta be at least a few Linux hackers that would like to ditch Wine.
Come on Alcaro, pretty please?
> I thought about making a little helper application that allows you to double click BPS/IPS and load it instantly in your emulator of choice but it seems you beat me to it.
Didn't Alcaro also come up with that really clever idea of caching the checksums to remember the source ROM for applying patches to?
I wish I had thought of that first. That's just genius.
> it verifies that you do it to the correct file only
Just before it gets brought up: the verification is optional. So if you are zany enough to stack patches, you absolutely can do that.
There's literally no downsides and only upsides to the BPS format. And a big part of it compared to other formats is that it's simple as pie to apply (or to create IPS-style linear patches), in only a few lines of code. Aside from a *very slightly* tricky variable-length integer encoding (keeps patches small and also avoids any size limit), it's as simple as IPS.
A lot of the other alternatives like Xdelta or bsdiff ... there are no third-party implementations, because nobody can understand how they work (myself included; I really wanted to write an O(n log n) delta patch creator, but I just can't do it. I'm not smart enough. It's possible for someone to make a BPS patch creator like this, just it's not gonna happen from me.)