ROM distribution via patch?

Discussion in 'General Gaming Discussion' started by Sicklyboy, Oct 28, 2013.

  1. Sicklyboy
    OP

    Sicklyboy Resident Mechanical Keyboard Addict

    Global Moderator
    5,714
    4,679
    Jul 15, 2009
    United States
    [̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]
    So first off I'm a tiny bit inebriated as I write this, so pardon me for bringing this up as an idea as odd as it may sound.

    I remember a while back while trying (and failing) at making a ROM hack (probably when I tried (and failed) to translate MapleStory DS) that you can take the source file and the output file and make a patch containing the difference between the two files. If I remember correctly it was with xDelta but it may have been something else.

    Since we're anti-warez distribution here, I became curious if the possibility to secretly distribute a game as a patch exists? (not that I want to!) The idea is that you provide the patch maker with a source ROM (gameA) and the output file is a different ROM (gameB). Seeing the difference between the files, a patch containing all of the data for gameB is created.

    From here, the idea is to patch gameA with the patch containing all of the data for gameB, and gameA then is entirely patched into gameB, all the while looking like an innocent (and oddly large) patch file.

    Is this theoretically feasible or am I drunkenly overlooking something? Not that we get too a huge amount of fan patches here, but if it's possible it is technically something that -could- happen here.
     
  2. FAST6191

    FAST6191 Techromancer

    pip Reporter
    23,370
    9,174
    Nov 21, 2005
    Entirely possible, make a blank file of 00 and tell it to apply it to it if you want a basic proof of concept*. Indeed a lesser version of this is actually a problem when compression or encryption are used as compressed files or encrypted files often/usually appear very different to a simple binary compare (even one that can deal with files being relocated**) which the patch program will take as a user driven change and include accordingly. This is also why we do not distribute the very first cIOS from Waninkoko on the Wii (encryption of an actual IOS but slightly modded) and later Wii cIOS were distributed as installers, a lot of Wii translations/hacks need to be applied to a decrypted iso or will include decryption programs in the method, why we do not allow undub patches where the Japanese sound was injected into the game and why the whole ARM7 swap/fix business a few years back needed a donor ROM (though the other half of that was although they are different between games there were still major differences/versions and it is easier to get people to find a donor ROM than include every variation).

    *xdelta and a few better patch methods will include a check on the thing being patched to make sure it is the right version, you may have to override it. Likewise there is always the possibility if you are using a basic patch that something lines up somewhere, for instance if you made a 32 meg of 00 and then made a patch to go on top of it the file to be patched to might have a run of 00 which the patch program interprets as a match which could trouble someone if they used a random file with no runs of 00 in it.

    **for things like the DS (systems that use a filesystem -- basically everything that ever came on a piece of optical media and is the DS or newer) this is also a problem if you tear down the entire ROM and rebuild it. The game only uses the file name/location tables (give or take the fast option functions that trouble NSMB and a few other games) but a file could easily end up moving from basically one side of the ROM to the other. This is one of the reasons things like xdelta were changed to (it can handle a bit of movement) and beyond that deufeufeu made his own format for the Jump Ultimate Stars translation he led.
     
    Sicklyboy likes this.
  3. Cyan

    Cyan GBATemp's lurking knight

    Global Moderator
    18,093
    8,590
    Oct 27, 2002
    France
    Engine room, learning
    It's technically possible, but the patch size will be very big (as big as the game itself as everything is changed/replaced).
    Providing a 12KB patch is totally normal, but providing a 256MB patch size for a NDS game will make people suspicious.

    A little patch usually contains only replaced texts. it's your (or the translation team's) work, your word choices, etc.
    A bigger patch could be illegal, even if it's not the entire ROM, because it can contains more data which are not yours (such as pictures, sprites, sounds (replacing soundtrack with copyrighted and converted MP3s, for example Rhapsody patch), etc.)
     
    Sicklyboy likes this.
  4. Celice

    Celice GBAtemp Advanced Maniac

    Member
    1,916
    354
    Jan 1, 2008
    United States
    There are some interesting points which come out of a difference-based patch. I'll try to point out a few of them, using suppositions as a clear way to portray the issues.

    The main idea behind a patch(in a romhacking context) is that it allows one to distribute only the changes to an intellectual property, without having to distribute the modified item itself. However, the contents of a patch may still hold intellectual property. For example, I could create a patch which offsets all the data in a game by some arbitrary number of bytes, perhaps because this allows for easier organization during a project. The patch is a differential data, but the content therein is still part of the game-itself, and isn't really avoiding distributing copy-righted content. If we look at this in the context of, perhaps, a translation patch, we can see how rearranging data within the ROM can actually mean distributing a patch containing copy-righted data: I might relocate a large range of data so I can fit in the new text, and during this relocation, I might be lifting out some routines that deal with different text formatting, calls, and such things. I didn't create that code, however if I were to distribute this patch, that code, having been rearranged, will be necessarily included. Thus I would be technically distributing part of the copyrighted content.

    More interestingly perhaps is whether a patch can contain new data that is still copy-righted. For example, let's say that I'm going to make a hack of Super Mario Bros. in which I replace all the characters and graphics with Disney-themed icons and settings. For the sake of example, let's suppose the intellectual property is stringently reserved, or in other words, if I use Mickey Mouse's head in the game, there is no charitable defense on my part, and that I have stolen that image by using it without Disney's, the owner of this intellectual property, consent. Here there isn't really any initial data from the intellectual property that is being rearranged or sort of "fathered-in" via my patch. However, I am recreating, porting, or outright copying the content of some intellectual property (here it would be Mickey Mouse), which, though it is not part of the original content, is still subject to copyright issues.

    If we go even further, there are even the conceptual and practical problems of illegal numbers, which help to bring to the forefront some of the absurdities that come into play when arguing that one owns something abstract.
     
    Sicklyboy likes this.
  5. Sicklyboy
    OP

    Sicklyboy Resident Mechanical Keyboard Addict

    Global Moderator
    5,714
    4,679
    Jul 15, 2009
    United States
    [̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]
    Interesting posts, everyone. Thank you very much for humoring my drunken idea from last night ^_^