[Feature Request] Improved Storage/Support for Fan Translations (and ROM modifications) through automatic patching

Issue #5836 new
Darkshade created an issue

I'm back again with another feature suggestion,
I hope to add more if I think of anything significant as I fiddle around with LaunchBox/BigBox, so I hope I'm not annoying anyone.

As I'm sure many others have before me, I have an interest in adding fan translations (this will be the primary focus of the suggestion) for games which lack any official localized release.
One issue with this is that, hypothetically, if I wanted to add say, an English translation for every untranslated Japanese game in a particular library, I'd have to double my file-size by X fold.
This is of course no insignificant number, and additionally, if I wanted to support multiple languages that number is even higher.

So what's the solution?

Well fan translations (or mods) are all made using an the official (untranslated) release as a base.
The patches found online (in a vast majority of cases) only contain the required changes to translate it (text changes, font changes etc.) to put it simply.
This means that they're significantly smaller in file-size compared to the actual game.

This smaller filesize through the use of patches is something I think LaunchBox can utilize to its advantage (and the advantage of its users).

How?
By adding patch support to call a patching utility (such as Floating Lunar IPS) in a similar vein to adding an emulator, and being able to define command line use.
This is less complicated than it sounds, but effectively the idea is this:

  • First the user obtains any patches they wish to use.
  • The patches in some regard need to reference the game they're going to be applied to, this could be done by using the same name followed by an underscore (an example would be '001-Example_English' - with the game name being '001-Example') or by reading the game ID in the patches header (not sure if this is actually possible).
    But anyway, it needs to match in some regard that LaunchBox can understand.

After the user has done this, they will need to run a scan (via LaunchBox) on their patch list.
What do I mean by this?

Effectively, LaunchBox would utilize the patching utility mentioned earlier, alongside the respective required commands, and it would (on a one-by-one) basis, do the following:

  • Duplicate the current game in question (and extract if necessary).
  • Apply the fan patch to the copied game version.
  • Create an additional patch, which would reference the changes (in reverse) between the new patch and the original copy of the game, and make an '001-Example_English_Original' patch
  • Delete the copy of the game containing the patch.
  • In the folder there would now be:
    The original game
    The translation patch
    A patch to reverse the translation patch

And this would still be (in a lot of cases) at a significantly smaller file-size than just having an additional pre-patched game.

Users could then select the translation patch through the 'Additional Apps' menu when launching the game.
This would then automatically patch the original game file, and launch it.
Upon exiting the game, the game would be patched in reverse, to restore it to its original state.

I don't think LaunchBox currently supports knowing when an emulator is closed (or even can), so perhaps an alternative method to that is storing information as to whether a game has been patched in an XML, and the next time the user opts to launch the original version of the game or a different patch (and it's still logged as being patched, or being patched with another patch) it would then automatically patch to restore it to its original state before launching it.
Or checking/logging hashes - which is probably the most user friendly method (being that it can self-resolve even if a user patches their ROM outside of LaunchBox)

Comments (0)

  1. Log in to comment