Author
|
Topic: Patch Format Help? (Read 2 times)
|
Gemini
Guest
|
|
« Reply #15 on: March 10, 2008, 09:06:29 am » |
|
PPF is mostly used for Playstation's. but, it won't work properly with anything besides playstation's (or ISO consoles/portables). Totally wrong. PPF can be used on ANY file, not just ISOs.
|
|
|
|
byuu
Guest
|
|
« Reply #16 on: March 10, 2008, 09:16:04 am » |
|
One of the missing pieces is having something extremely easy for others to implement Exactly. Libraries won't even help here. They're typically bound to non-commercial and/or copyleft licenses. And then you'd need one for every language imaginable. ROM hackers are extraordinarily diverse in their choice of programming languages. We have C, C++, C#, VB.NET, Java, Pascal, Delphi, PHP, etc etc. An algorithm that requires mastering a thesis to implement (xdelta, bsdiff) fails right off the bat. Nobody else can implement that. You guys have been really patient with the patching business. I pretty much put my format on hold to rewrite xkas. Now that this is finished, I'm back to just one open project, so I have room for a second. UPS is basically IPS with XOR instead of NEW byte storage, making the format two-way. It also has a simplistic packed pointer approach that allows for infinite growth, and a smarter RLE than IPS. Throw in filesizes and CRCs of the source, dest and patch file itself, and that's it. The idea would be for the patcher to enforce a rule to ignore headers that do not affect emulators, and to force headers that do. Eg SNES headers are out, NES headers are in. Supporting NES vs UNIF differences et al are beyond the scope of the patcher. When you force the patching algorithm to accommodate the infinite stream of systems out there, you'll never end up with complete implementations. Better to make a generic format and enforce rules (eg here, as well as in most patch creators, which can be changed in the future -- unlike the patch spec itself) to prevent header hell. The CRCs will greatly assist in detecting errors, and it's easy to make a patcher that auto-removes headers if you want. Of course, I've had the spec ready for a long time now. Just been really busy with a lot of stuff. I suppose I can just post the spec again if anyone really wants to kickstart the process.
|
|
|
|
Solid One
Guest
|
|
« Reply #17 on: March 10, 2008, 09:49:05 am » |
|
PPF is mostly used for Playstation's. but, it won't work properly with anything besides playstation's (or ISO consoles/portables). Totally wrong. PPF can be used on ANY file, not just ISOs. I heard that PPF can only be used for PSX, because this format includes a 50 bytes string in a sector of the ISO that, surely'll corrupt any other file besides a PSX ISO. So, at least for Nintendo DS roms, I think Playstation Patch Format won't work.
|
|
|
|
akadewboy
Guest
|
|
« Reply #18 on: March 10, 2008, 11:01:45 am » |
|
Just check out PPF Studio, you can make a "General" PPF patch with it. That can be used on any files. I just made a PPF patch of my Famicom Wars translation, and applied the PPF to a fresh Japanese rom, so I know it works.
|
|
« Last Edit: March 11, 2008, 03:55:19 am by akadewboy »
|
|
|
|
Solid One
Guest
|
|
« Reply #19 on: March 10, 2008, 12:06:51 pm » |
|
Hmm. Sounds interesting. Didn't knew about it in PPF. My mistake.
So, if you used PPF in a Nes game like Famicom Wars, probably it'll work on DS somehow. It's a good option.
PS: I'm testing PPF Studio here in a GBA game. Seems that the patch was created accordingly. But, what program do you suggest for applying PPF patches in non-ISO files?
|
|
« Last Edit: March 10, 2008, 12:29:15 pm by Solid One »
|
|
|
|
akadewboy
Guest
|
|
« Reply #20 on: March 11, 2008, 12:55:00 am » |
|
I just use PPF-O-Matic 3.0. All you have to do is change the drop down box to "All Files"
|
|
|
|
Karatorian
Guest
|
|
« Reply #21 on: March 11, 2008, 03:20:47 am » |
|
As for the issue of being not tied to a single implimentation, xdelta may be a good choice. It is actually an implimentation of the VCDIFF standard as specified in RFC 3284, which should ease development of alternative tools. Additionally, it was specifically designed to be platform independant and to allow implimentation of the decoding algorithm without being dependant on the specific implimentation of the encoder. It has the added benefit of also being a compression format. I know that sounds strange, but it's based on research that has demonstrated that compression can be implimented as a patch to be apllied to an empty file. Also, a quick google search turned up a decoder library (for C#) from a source other than the xdelta project, so there is more than one implimentation of the standard. However, the only patch formats I've ever used myself are IPS and diff (which is unsuitable for binary), so I can't really say if xdelta is as good as it sounds.
|
|
|
|
Solid One
Guest
|
|
« Reply #22 on: March 11, 2008, 06:36:22 am » |
|
great. tested PPF yesterday with a GBA game, and it seems that it worked perfectly!
but, It became bigger than IPS. PPF patch got ~700kb. IPS only 310kb.
It's a better choice for platforms that IPS system don't work. I'll test it with DS later.
|
|
|
|
Nightcrawler
Guest
|
|
« Reply #23 on: March 11, 2008, 07:47:53 am » |
|
As for the issue of being not tied to a single implimentation, xdelta may be a good choice. It is actually an implimentation of the VCDIFF standard as specified in RFC 3284, which should ease development of alternative tools. Additionally, it was specifically designed to be platform independant and to allow implimentation of the decoding algorithm without being dependant on the specific implimentation of the encoder. It has the added benefit of also being a compression format. I know that sounds strange, but it's based on research that has demonstrated that compression can be implimented as a patch to be apllied to an empty file. Also, a quick google search turned up a decoder library (for C#) from a source other than the xdelta project, so there is more than one implimentation of the standard. However, the only patch formats I've ever used myself are IPS and diff (which is unsuitable for binary), so I can't really say if xdelta is as good as it sounds. Hehe... RFC 3284compared to: IPS File FormatSee the difference? That's the kind of 'simple' that takes off easily. This is in PHP, but nonetheless it's an example of a full IPS patcher. Anybody with any experience could create their own patch creator and patcher in under an hour. It's also something a newbie to programming could probably figure out. Can you say the same about any other format? Full IPS patcher implementation (creation and patching)That's why all of these 'intelligent' patching formats don't take. You shouldn't need to study a thesis, hold a masters degree in computer science, or have to read a 20 page document for a binary patching format to use in ROM hacking. Now look at just ONE of the source files from xdelta3.. http://xdelta.googlecode.com/svn/trunk/xdelta3/xdelta3.cEnough said?
|
|
|
|
Gemini
Guest
|
|
« Reply #24 on: March 11, 2008, 07:58:35 am » |
|
That's why all of these 'intelligent' patching formats don't take. You shouldn't need to study a thesis, hold a masters degree in computer science, or have to read a 20 page document for a binary patching format to use in ROM hacking. I totally agree on that matter, especially because I'm sooo lazy. xD My custom patch format for ToP is so simple it can make any serious programmer laugh. Probably the only interesting feature is the possibility to unpack archived files, patch the segments, and rebuild the new file. And each patch segment is huffman compressed, so even if the format wastes A LOT of space (you can have 9 bytes only to patch a 1 byte sequence xD) it doesn't really matter as huffman solves the issue.
|
|
|
|
Aerdan
Guest
|
|
« Reply #25 on: March 11, 2008, 08:08:20 am » |
|
Actually, a library would work. Are people forgetting that pretty much all modern languages can work with dynamically-loaded modules?
C has dlopen/dlsym. Perl can call C functions through XS. Python has support for calling C functions natively. And so on.
|
|
|
|
BRPXQZME
Guest
|
|
« Reply #26 on: March 11, 2008, 08:15:06 am » |
|
This is off-topic, but there seems to be a little bit o’ corruption at the end of the document. Back on-topic, even simple patching formats aren’t so bad. You could easily stopgap IPS by allotting more bytes for addresses (call it, say, IPS+ or something and use IFF for silliness!). The main problem seems to be that everyone wants to roll the “latest and greatestâ€, and the additional complexity does have that fun effect of making people not work on it or use it for whatever reason. (byuu, the UPS format you mentioned has piqued my curiosity... could you post the spec, please?)
|
|
|
|
creaothceann
Guest
|
|
« Reply #27 on: March 11, 2008, 08:31:46 am » |
|
This is off-topic, but there seems to be a little bit o’ corruption at the end of the document. Yeah, I sent Neil a PM about that & some corrections... :huh:
|
|
|
|
|