The most interesting thing to see here will be what the modding scene does once/if the project is finished. Because generally, decompiled games are a hell of a lot easier to mod in any notable way than ones where you have to code any additions in assembly language, and it gets easier still when someone ports it to PC or what not.
Just look at Super Mario 64. Since that game got decompiled and ported, we've since the number of custom elements in your average ROM hack skyrocket, and the complexity of some of the projects people have made using the engine reach ridiculous degrees. Prior to this, we mostly only saw custom powerups, enemies, bosses and objects in hacks by Kaze Emanuar. Post this happening, such things pop up in contest and game jam hacks made in a few weeks.
Same thing with Ocarina of Time, and other affected games. When people understand the source code (and then when it becomes much easier to modify), the complexity of a community's work goes up tenfold.
So yeah, it could be interesting to see whether any ambitious Twilight Princess mods start development after this, assuming it gets finished. I don't think there's much of a scene for those right now either, so this could be what kickstarts said community in general too.
Very cool! These decompilation projects are getting more and more ambitious! We’ve had androids games ported to the PS vita, Super Mario 64 running on a modded PS4, I’ve got diable 1 one my switch. It’s great!! Thanks to the hard workers!!
What was the Android game ported to PS Vita? It sounds challenging but not nearly as much given the Vita CPU is ARM and GPU supports OpebGL ES 2. Lots of the Vita components were phone components.
The ports work because the Vita has an Arm v7 processor and Android games can run on the bare metal. The developers figured out that they just needed to patch some methods (presumably IO, gpu calls, and OS methods) to work on the Vita’s OS.
I’ve been having a blast playing an online multiplayer mod of ocarina of time for the PC port that was made from a decompilation a while back. I’m excited to see the fun stuff that is made from other decompilation projects like this.
This is a fork of the Ship of Harkinian PC port for ocarina of time. If you just want to play the normal game on PC, you can go to the original repo here: https://github.com/HarbourMasters/Shipwright
> Our long-term goal is to produce a highly documented and complete C++ codebase for every version of Twilight Princess. Having clear and readable source code will aid speedrunners, glitch hunters, and modders curious about how particular parts of the game work.
> Our primary goal is a full decompilation of the GameCube USA version with appropriate documentation. After this is achieved, we plan to decompile the other versions of the game.
Many Nintendo games (including Legend of Zelda: Ocarina of Time) have been decompiled and have not been attacked by the Nintendo Ninjas: https://github.com/zeldaret/oot
The more pressing legal concern here is the use of game assets, which these decompilations work around by requiring the user to provide a ROM to extract them first.
I don't think that's a real legal defense. Code is just as subject to copyright as game assets (why wouldn't it be? it's just another kind of game asset), and the whole extracting assets thing making decompilations free from copyright infringement that gets bandied about is complete armchair lawyering. It's only by Nintendo's good graces these are still allowed to be hosted on GitHub.
> Code is just as subject to copyright as game assets
The decompiled code is not the code that Nintendo wrote. This isn't the equivalent of steeling original code but more like generating a brand new code that would compile to the same executable.
Why is it always the same on every thread of this type? Perhaps I can grab the code segments of a Windows ISO, apply a series of mechanical transformations, and proceed to call it Freedows and freely distribute it as my own? I am having trouble understanding the thought processes that lead to these conclusions. Too much ChatGPT?
By this logic copyright protection on software would be meaningless. The GPL would be meaningless. I could grab any program in the world, "translate it" to my favorite language-du-jour, and call it my own..
Goodbye viral license requirements...
These decompilation projects are not using the distributed game binary to derive the code in their ports directly. It's just used as a rubric. The source code generated from this process is not Nintendo's. That's the idea, at least. Different from taking Windows ISO and jumbling it up into a rude goldberg machine and claiming it as a new work.
They took the distributed game binary and ran it through a tool that produced an approximation of source code. At this point the decompiled code is clearly a mechanical transformation of the game binary, and so holds the same copyright status. This code is then cleaned up such that it compiles and functions and variables are given sensible names. This is, arguably, a creative endeavour, but it's also clearly a derivative work of the original binary and so is still controlled by copyright law.
The decompilation itself may or may not be a copyright violation - that's likely to vary depending on jurisdiction. If someone in a jurisdiction where it's legal were to write a description of the behaviour of the decompiled code and if someone else were to implement a codebase that happened to compile to the same original binary code then there's an argument that no infringement occurred (a functional description of the behaviour of a work is potentially not derivative of that work, and re-implementing the code based on that description is then not constrained by the original copyright), but that's not what happened here.
I don't like that this is the case, but let's take it to a logical conclusion - if I take an interpreted language with a bytecode compiler, I can typically decompile it to something almost 100% identical to the original code (I'd lose comments and maybe variable names, but that depends on the language). Does this mean I can take copyrighted Python code, run it through the interpreter, dump the state, decompile it, and have an independent work not subject to the original license?
> The object code of a program may be copyrighted as expression, 17 U.S.C. § 102(a), but it also contains ideas and performs functions that are not entitled to copyright protection. See 17 U.S.C. § 102(b).
> Object code cannot, however, be read by humans.
> The unprotected ideas and functions of the code therefore are frequently undiscoverable in the absence of investigation and translation that may require copying the copyrighted material.
> We conclude that, under the facts of this case and our precedent, Connectix's intermediate copying and use of Sony's copyrighted BIOS was a fair use for the purpose of gaining access to the unprotected elements of Sony's software.
Not only are the methods of operation which underlie the code completely unprotected, the copying of and the application of tools to the code for the purpose of exercising your right to discover those unprotected elements is fair use.
Where's the disagreement there? The court concluded that reverse engineering to gain access to the non-copyrightable elements the object code contained was legitimate. It didn't assert that decompiled code wasn't subject to copyright.
Yes. It also provides access to the copyrightable elements of the code. In this respect the decompiled code is identical to the object code, which is also made up of a mixture of copyrightable and non-copyrightable elements. Combining copyrightable and non-copyrightable elements into one thing gives you a work that copyright can be asserted over. The argument in the case you cited is that the defendant extracted the non-copyrightable elements and built their own work based on those. That's not what's happening in the case under discussion here, which is derived from the copyrightable elements as well.
> These decompilation projects are not using the distributed game binary to derive the code in their ports directly
That is the definition of decompilation. What are they using as input, if not the "distributed game binary"?
> The source code generated from this process is not Nintendo's.
This is just claiming the consequent. The output of my magical code transformation method is also not Microsoft's.
> Different from taking Windows ISO and jumbling it up into a rude goldberg machine and claiming it as a new work.
Yet that is exactly what decompilation is...
What distinction are you trying to make here? If I translate it to a different language, it is OK? That's as absurd as it gets and still basically strip all software from copyright.
> Do consumers agree to a end user agreement that specifies they cannot decompile the game?
People will de-compile proprietary software and GPL it, and others will have AI clone/port GPL code to new languages then back to the original language again to de-GPL code.
Overall this will make software copyright laws pointless, but in the end everything anyone cares about will be open source. I am here for this outcome.
Frankly I think you have a very rosy view. If this were to happen I foresee companies would immediately start treating code as if it was a private key, using ridiculous hardware protection mechanism, tivoization, SaaS, and the like as much as possible. The entire reason code is so accessible right now is because companies only care about making it "inconvenient" for home piracy, relying on the threat of legal action for everyone else. Imagine a world where if you don't do it then your competitors can legally use your software. Everyone who isn't already releasing their software under the BSD or PD would stop doing so since just about everyone else could just shamelessly rip it into their next closed as hell & secure boot'd device. Your "AI" would have zero source code to train on. Only the companies with the largest resources would be able to break the latest obfuscation mechanisms, leading to more effective imbalances in power. And on and on..
Mandating open software & open hardware is one thing, but simply removing copyright doesn't led there -- it leads to a even more dystopic world.
Show me a popular hardware platform that users get to hold in their hands whose users have not dumped the firmware, or at least the firmware decryption key as with virtually every drm solution in history.
I have multiple Samsung Qualcomm smartphones which to this day do not have an unlocked bootloader. Ironically one reason to choose the otherwise terrible Exynos.
And even on the ones which do, you lose access to some hardware features -- the very definition of tivoization...
I'm not sure why. I think most threads of any type usually feel the same as other threads of the type. As for your Windows hypothetical, not sure which Windows you're talking about, but I don't think Microsoft would really care if you did the equivalent of the projects being discussed to Windowses of approximately that age. If you do something obviously different, like freely distribute a modified Windows ISO as your own, I would expect to encounter some resistance.
> (b) In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.
The way the game works is not protected. Only Nintendo's code is.
You are doing the same mistake as the other poster: claiming the consequent. I could also say that my magical transformation process produces code which is not Microsoft's, even when it obviously ingests code that is Microsoft's. Why would your method be stripping copyright protection while mine wouldn't? What's the difference from what you are claiming?
Frankly at this point I just want to point out that if in your world view this is allowed, then _all_ software copyright is pointless, since anyone could apply the same rationale to any program in the world. What's the point of the GPL on such world?
> The object code of a program may be copyrighted as expression, 17 U.S.C. § 102(a), but it also contains ideas and performs functions that are not entitled to copyright protection. See 17 U.S.C. § 102(b).
> Object code cannot, however, be read by humans.
> The unprotected ideas and functions of the code therefore are frequently undiscoverable in the absence of investigation and translation that may require copying the copyrighted material.
> We conclude that, under the facts of this case and our precedent, Connectix's intermediate copying and use of Sony's copyrighted BIOS was a fair use for the purpose of gaining access to the unprotected elements of Sony's software.
Not only are the methods of operation which underlie the code completely unprotected, the copying of and the application of tools to the code for the purpose of exercising your right to discover those unprotected elements is fair use.
> then _all_ software copyright is pointless
It is pointless. I am a copyright abolitionist.
> What's the point of the GPL on such world?
None. The GPL was literally created in response to copyright protection being extended to software. No copyright, no point to the GPL.
So you provide one answer on my question of which thought process leads to these conclusions: wishful thinking.
Sigh.
See what I just wrote on the other comment:
> These exceptions allows you to perform RE to _understand_ the code in question for interoperability, not to strip it from copyright and start distributing it as if it was your own code. And in most jurisdictions such exception only becomes possible when it's the _only option available_ to interoperate. As this is _hardly_ the only option available to run this game on your platform (emulation, for example, is completely legal, AND you could RE this title to fix your emulator), this exception hardly applies here.
This is exactly what actually happened in the case you are quoting.
The decompiled code is a 1:1 translation, so it’s a derivative work. You can’t distribute a translated book without an agreement with the copyright owner, even if the translator contributed original creative work on top. The analogy is literally 1:1.
> This isn't the equivalent of steeling original code but more like generating a brand new code that would compile to the same executable.
That doesn't make it not copyright infringement. As long as it's based on the same executable, that's a derivative work. In the same way if I were to recreate Star Wars A New Hope with new actors and new sets. If I were to play a cover of Micheal Jackson's Thriller with new instruments and new voices.
That's why clean-room design is a thing. To recreate the same function not based off the copyrighted executable, but rather its interactions with the user, other programs, and files. Interactions that aren't copyrightable.
You could do a clean-room implementation[0] of Michael Jackson's Thriller and the rights holders could still take you to court and have a good shot at winning. You could have never heard Thriller, come up with an obvious[1] melodic phrasing that some lawyers reckon sounds close enough and still get sued.
Of course, none of that makes it copyright infringement, only the (would-be) judge does.
[0] The product of which is roughly equivalent to a cover
If I took images from the game and converted them to WebPs then distributed them, that is still copyright infringement, even though those are not the images Nintendo created. Likewise, if you do the same with machine code to reconstructed code, that's the same in principle.
Says that its totally not legal to distribute decompiled code, or indeed:
> uses the information to create a program which is substantially similar in its expression to the program decompiled or to do any act restricted by copyright.
If it was legal, there would be loads of decompiled binaries floating around for windows, Adobe, autodesk and any number of other expensive bits of software.
Decompiling object code produces an approximation of the original source code. Merely making this rough copy would usually violate the copyright holder's exclusive rights, even if the person who decompiled the code only used it as a preliminary step in making another work.
The only reason anyone believes this is fair use is because the copyright holders have chosen not to enforce it.
It is more likely to be fair use in this specific instance, as the copyrighted work to which the analysis is applied to is the whole game, not the code itself.
A big part of fair use analysis is in the effect on the market for the original work. If people have to obtain a copy to even use the project in any interactable way, the effect is either none (if we suppose every user of the project gets their original copy illegaly) or positive/benefitial to the copyright holder (if it makes those users actually buy legit copies)
The game is a copyrighted work, but so is the source code. The compiled code is a derivative work, and so is the decompiled code. Nintendo is not selling the source code, so arguing about sales in the market does not makes sense.
Decompilation might be fine, but distributing the results isn't a part of reverse-engineering.
Fair use is limited scope. One of the first criteria is use. Fair use is generally reserved for education, criticism, comment, and news. At best you could say this is education, but even then one of the other criteria for fair use is the amount of the work published. If you're teaching or criticizing this code, the whole codebase is probably too much. Some snippets would be fine like you would see in code reviews or reviews of books and such.
Reverse engineering without consent _is_ copyright infringement. As in order to obtain a copy of the software you likely signed an EULA which will likely have the standard anti-reverse engineering verbiage which you'll be violating, therefore you are copying (whether for your personal enjoyment or not) the works of the author without permission.
There are a series of well documented exceptions... normally found in copyright law. (And this most definitely does not fall into one of them).
There is no limitation in copying the work of an author for personal enjoyment without permission. If I use my neurons to read and create an exact copy I can retell to myself, or I write it on pen and paper, or I type it on a personal computer, or I read it out loud, or read it out loud and record it for myself I don’t violate anything. Otherwise one would never be able to play copyrighted sheet music on a digital piano say. Reverse engineering might violate other agreements but not copyright law.
> There is no limitation in copying the work of an author for personal enjoyment without permission.
Actually there is in many jurisdictions of the world, including mine (France). There are some exceptions enshrined in copyright law, for which we actually pay a tax.
But this is besides the point. It's not even about the personal copies you make from your legally-obtained original copy on the first place. It's about where you obtained that initial copy from. Most definitely not legally from the author, if he is not authorizing RE.
> Reverse engineering might violate other agreements but not copyright law.
What other agreements does it violate? It is copyright law the only thing that puts a restriction between you and doing whatever the fsck you want with that code. There is a reason the RE exceptions are enshrined in copyright law...
> Reverse engineering without consent _is_ copyright infringement. As in order to obtain a copy of the software you likely signed an EULA which will likely have the standard anti-reverse engineering verbiage which you'll be violating
This reasoning is only valid in the US, this kind of anti reverse engineering clause has no value in the EU, reverse engineering is a predefined exception granted to copyright which cannot be voided.
I mention in the original comment that there are several exceptions (in copyright law), but these are for specific purposes. However this is not one of them. If it was, you could literally apply the same reasoning to any piece of software in the planet.
The specific purpose usually being interopability, yes it does apply to almost any piece of software on the planet.
More specifically, it's always allowed for DRM code (because by definition their whole goal is to block interoperability), any kind of proprietary file reading and any kind of porting.
Here in the case of these games, the interoperability argument is very easy to make since they can only run on legacy hardware not even produced anymore.
_Anyone_ could get any piece of software, claim that they want to run it on their new-fangled "x85" instruction set, and, according to your rationale, you'd be able to just decompile it to a different programming language and distribute your translation as much as you want!
> More specifically, it's always allowed for DRM code (because by definition their whole goal is to block interoperability), any kind of proprietary file reading and any kind of porting.
For the record, you are completely misunderstanding the point. These exception allows you to perform RE to _understand_ the code in question for interoperability, not to strip it from copyright and start distributing it as if it was your own code. And in most jurisdictions such exception only becomes possible when it's the _only option available_ to interoperate. As this is _hardly_ the only option available to run this game on your platform (emulation, for example, is completely legal, AND you could RE this title to fix your emulator), this exception hardly applies here.
> _Anyone_ could get any piece of software, claim that they want to run it on their new-fangled "x85" instruction set, and, according to your rationale, you'd be able to just decompile it to a different programming language and distribute your translation as much as you want!
Yeah, why not? If you have to run through all of this complexity to run the software you have to run, I don't see what it would not fit as an exception.
You realize that those protections against copyright aren't granted for free right? Everybody pays absurdly high rate of copy rights on every medium they buy in the EU and that's why those exceptions are there. If there is no means to copy what you own to use it in a different configuration, those would be meaningless.
> Yeah, why not? If you have to run through all of this complexity to run the software you have to run, I don't see what it would not fit as an exception.
What complexity? Emulators are almost everywhere, and they don't require you to violate any copyright (or a significantly smaller amount), and therefore much likely to fit under one of these exceptions (they do). "But the illegal way is easier, your honor!" doesn't really get you anywhere...
This world where software copyright does not exist is not an utopia of free source code, it's a wild wild west of obfuscated and/or inaccessible software and the company with largest pockets has the monopoly since it can do whatever it wants.
> You realize that those protections against copyright aren't granted for free right?
"Protections against copyright?" You mean exceptions, right? Copyright is ironically free.
> Everybody pays absurdly high rate of copy rights on every medium they buy in the EU and that's why those exceptions are ther
Not everybody in the EU, even though in my country (France) we do. However, how is this related at all to the discussion at hand? They are not even related to software copyrights at all! (For which there is already an exception for personal copies, and for which official we pay nothing).
> Not everybody in the EU, even though in my country (France) we do. However, how is this related at all to the discussion at hand? They are not even related to software copyrights at all! (For which there is already an exception for personal copies, and for which official we pay nothing).
That's exactly where this exception is coming from. You can't make personal copies nowaydays without breaking some kind of DRM and that's why there's an interoperability exception.
France is indeed one of the worst in this racket but most of the EU has similar implementations.
> This world where software copyright does not exist is not an utopia of free source code, it's a wild wild west of obfuscated and/or inaccessible software and the company with largest pockets has the monopoly since it can do whatever it wants.
Well that's exactly where we at now, I'm writing this comment from a phone which has thousands of piles of obfuscated inaccessible and non modifiable software. Copyright is what led us there.
> That's exactly where this exception is coming from. You can't make personal copies nowaydays without breaking some kind of DRM and that's why there's an interoperability exception.
I have already addressed the interoperability exception a couple messages before. In no way it just basically makes all copyright protections pointless by allowing you to claim "OK, now I can decompile this software and distribute it as I please!".
> Well that's exactly where we at now, I'm writing this comment from a phone which has thousands of piles of obfuscated inaccessible and non modifiable software. Copyright is what led us there.
Hardly. Copyright doesn't necessarily prevent nor make tivoization easier. The GPLv3 (or some new, specific legislation to this end) are the only things that would successfully prevent tivoitzation.
> In no way it just basically makes all copyright protections pointless by allowing you to claim "OK, now I can decompile this software and distribute it as I please!".
I've never claimed that but it also goes further than the conglomerates would make you believe.
> Hardly. Copyright doesn't necessarily prevent nor make tivoization easier. The GPLv3 (or some new, specific legislation to this end) are the only things that would successfully prevent tivoitzation.
While its true that open devices and software are possible under copyright laws, it's more of a hack and clearly not the default.
I don't know how you would call a law to force opening up the sources of software but it's incompatible with the copyright concept, that's for sure.
There are fair use carveouts for reverse engineering code to, for example, make it usable on different platforms. I don’t believe this kind of decompile project has ever had its day in court and the laws are written in such a way that the outcome is at least somewhat likely to be skewed in favor of reverse engineering. Nintendo may be avoiding bringing suit because they don’t think they could win or that the judgement might make expanded rights explicit encouraging more of this kind of thing.
Those fair use exceptions only cover the process of reverse engineering specifically. From that article: "Reverse engineers execute code and/or make copies of software as part of analyzing the way the program works."
But distributing the code is not part of the reverse engineering process, so that fair use doesn't apply. Also from that article:
> It is highly risky to copy any code into a program you create as a result of reverse engineering, because that copy could infringe copyright unless it is a fair use under copyright law.
It's even possible that Nintendo evaluates the harm of these projects to be rather lower compared to distributing the complete games themselves. Even though it's not based in any legal reality, the projects' firewall of "You must provide art assets from your own copy of the game" may suffice to keep the lawyers away.
I know, Nintendo will litigate anyone for any reason, but it is possible for a company to look away when these measures are taken.
Yeah, seems most likely. In the past, they've explicitly taken down distributions of things like the SM64 PC port, but left the decompilation.
Companies don't have to C&D. If something poses very little financial danger, but taking it down presents significant risk of PR harm, it's not worth it. The C&D would cost more than it would save, so it makes no business sense.
Don't ask me why they even bothered taking down fan games, though. They seem to care a lot about art assets in particular.
> Don't ask me why they even bothered taking down fan games, though. They seem to care a lot about art assets in particular.
If talking about AM2R, it posed a rather credible threat against the success of the official Metroid 2 remake (ignoring the fact that AM2R is of much higher quality anyway). Plus it contained ripped sprites from Zero Mission, Fusion, and incorporated all of the characters and enemies that Nintendo owns.
You can't just make your own Lord of the Rings or Star Wars without infringing the copyright of the original work. Same with fan remakes.
Just look at Super Mario 64. Since that game got decompiled and ported, we've since the number of custom elements in your average ROM hack skyrocket, and the complexity of some of the projects people have made using the engine reach ridiculous degrees. Prior to this, we mostly only saw custom powerups, enemies, bosses and objects in hacks by Kaze Emanuar. Post this happening, such things pop up in contest and game jam hacks made in a few weeks.
Same thing with Ocarina of Time, and other affected games. When people understand the source code (and then when it becomes much easier to modify), the complexity of a community's work goes up tenfold.
So yeah, it could be interesting to see whether any ambitious Twilight Princess mods start development after this, assuming it gets finished. I don't think there's much of a scene for those right now either, so this could be what kickstarts said community in general too.