Rendered at 14:16:41 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
yjftsjthsd-h 2 days ago [-]
> It is written in Haskell and Rust and this made getting it to work nicely in the browser, interesting
I imagine. What motivated using that combination?
nyuutsu 2 days ago [-]
(author; wife posted the thread)
Haskell is cool and I wanted to play with it.
Rust is cool enough, has libraries Haskell doesn't, can be faster, and is a way to stick the unavoidably imperative parts under the bed.
Browser was not in the original vision but turned out to be surprisingly painless-ish. Haskell can compile to wasm. Avoiding C-backed crates on vibes / for no particular reason happened to be quite helpful.
gblargg 2 days ago [-]
Doesn't the undo functionality cause it to store copyrighted data from the original ROM in the patch?
nyuutsu 2 days ago [-]
(Author here, my wife posted this thread; it has no bearing on the question but I am told it is good to disclaim.)
You could quibble about what counts but the core is "yeah".
Ppf3-with-undo stores literal "hey, we expect byte n to be 'foo'. on apply, replace it with 'bar'. on undo, put 'foo' back. remember: the copyrighted byte is 'foo'". Touch every byte in some way and your undo data is the entire original.
Some patches literally touch one byte. Their undo is, indirectly or indirectly, a recipe for retrieving one byte of copyrighted data. Is that fragmentary enough that it is entirely in the clear? I have no idea.
gblargg 14 hours ago [-]
For some reason an XOR scheme escaped me. It's the perfect way, doesn't take any extra space over the size of the modified regions, and avoids even storing the copyrighted work of the ROM patch author. You could distribute the patch without anyone's permission (maybe)! Just include a strong checksum of the affected regions to be sure you're starting with the correct version, and checksums of the resulting data to give the same guarantee for reversing the process.
infinite_spin 2 days ago [-]
I think it's similar to adding a note to a book, and then removing that note, leaving you with a the original book. That scenario doesn't violate copyright law as far as I'm aware.
Dylan16807 2 days ago [-]
That's not how patching a rom works. You directly replace data and the formats that let you undo have to put a copy of the original data in the patch file. So yes it is a risk.
choo-t 2 days ago [-]
You don't need a copy of the original data, you can simply store your change as a XOR so undoing it mean XORing it again.
Retr0id 2 days ago [-]
However, if your change involves zeroing something out, you're back to storing the original data again.
Retr0id 2 days ago [-]
Slightly silly idea to solve this: Hash all non-patched areas of the file to produce a key. Use the key to encrypt your XOR value. Thus the key can only be derived by someone who has either the original file, or the patched version.
Joker_vD 2 days ago [-]
So? Since when has making backups of the copyrighted stuff that you have the right to use been made illegal?
Dylan16807 2 days ago [-]
A patch you can undo isn't a backup mechanism, it's data in the patch file when you download it. That's a big copyright risk.
You could design a system that generates undo info while you're patching. But it's easier to make a full backup copy of the original rom, and have no way to actually reverse the patching process.
SideQuark 2 days ago [-]
Employing anti-protection methods to do to has been illegal since 1996 WIPO treaties, and then much more strongly in the 2002 DMCA.
So around 30 years now.
WhiteDawn 2 days ago [-]
In fairness, games didn’t start employing encryption on the content till the 7th generation. So unless you’re applying ips patches to a 360 game you’re not breaking any DRM
Playing the title you backed up and patched is a different matter entirely
gblargg 14 hours ago [-]
A patch wouldn't need to even care about encryption, since it's just looking at the raw file data.
SideQuark 1 days ago [-]
Courts have ruled many things besides encryption count as anti-copying measures, and that the laws apply retroactively, so it’s not so clear such patches even on 360 are legal. Try selling such patches and test it.
2 days ago [-]
matheusmoreira 2 days ago [-]
> nyuu.page
Is this in any way related to byuu, the SNES emulator author?
22c 2 days ago [-]
No it's not related, sadly Byuu passed away several years ago.
2 days ago [-]
teroshan 2 days ago [-]
I recently stumbled upon https://www.hackdex.app/ which is a lovely website dedicated to Pokémon ROM hacks.
It's a really vibrant scene, with a lot of different hacks that go all the way to fully-fledged games, but because it's so rich it can be a pain to find what is available and what the latest version of a given ROM hack is.
This website has a neat feature where you upload any base Pokémon ROM file, and it filters all available ROM hacks that are compatible with it via a neat UI. And of course it offers you a one-click download (well, in-local-storage-patch) to the given ROM hack.
Quick clarification: I'm pretty sure there's no uploading at all; it uses local storage for the filtering too, which is important because uploading a ROM tends to be risky legally
teroshan 2 days ago [-]
Absolutely, I should have made it more explicit, thanks for clarifying it. That's what makes this possible and legally compliant.
saghm 23 hours ago [-]
I was pretty sure you understood based on how you described it! This stuff is very easy for people less technical to get confused about though (which is not at all their fault!), and from what I've seen in the subreddit where I found out about Hackdex, it seems like there was a lot of confusion about it early on, so I figure it's better to be on the safe side.
I imagine. What motivated using that combination?
Haskell is cool and I wanted to play with it.
Rust is cool enough, has libraries Haskell doesn't, can be faster, and is a way to stick the unavoidably imperative parts under the bed.
Browser was not in the original vision but turned out to be surprisingly painless-ish. Haskell can compile to wasm. Avoiding C-backed crates on vibes / for no particular reason happened to be quite helpful.
You could quibble about what counts but the core is "yeah".
Ppf3-with-undo stores literal "hey, we expect byte n to be 'foo'. on apply, replace it with 'bar'. on undo, put 'foo' back. remember: the copyrighted byte is 'foo'". Touch every byte in some way and your undo data is the entire original.
Some patches literally touch one byte. Their undo is, indirectly or indirectly, a recipe for retrieving one byte of copyrighted data. Is that fragmentary enough that it is entirely in the clear? I have no idea.
You could design a system that generates undo info while you're patching. But it's easier to make a full backup copy of the original rom, and have no way to actually reverse the patching process.
So around 30 years now.
Playing the title you backed up and patched is a different matter entirely
Is this in any way related to byuu, the SNES emulator author?
It's a really vibrant scene, with a lot of different hacks that go all the way to fully-fledged games, but because it's so rich it can be a pain to find what is available and what the latest version of a given ROM hack is.
This website has a neat feature where you upload any base Pokémon ROM file, and it filters all available ROM hacks that are compatible with it via a neat UI. And of course it offers you a one-click download (well, in-local-storage-patch) to the given ROM hack.
Source code: https://github.com/Hackdex-App/hackdex-website