IMHO the best method for creating permanent file patches is Code Fusion, because unlike Xdelta and IPS, it includes file verification abilities. Most games require separate patches for each regional release, and games with multiple releases per region may need more than one patch, too. The basic strategy for users to apply patches is:
- Extract the game's DOL file with GCRebuilder.
- Run the patching program for your release of the game, and patch the DOL file.
- Import the patched DOL back into the ISO with GCRebuilder.
The benefit of doing it this way is that when you create the patcher for each release of the game, you can specify the size (and CRC) of the DOL file for that region, so each patcher is "keyed" to only one release. This way, inexperienced users cannot accidentally apply a patch for the wrong region/release and break their ISO. The downside is that the person creating the patching programs must have all releases of the game in order to key each patcher to a specific release.
Xdelta and IPS will get the job done, and you could even create patches that will work on the ISO itself, so that GCRebuilder isn't needed, but this method provides no verification that you're even patching the correct game, let alone the correct release, so users may end up with a corrupt ISO if they don't know what they're doing. Xdelta and IPS have cross-platform options, though, which some people may consider important.