Super Mario 64's source code has been decompiled and officially released

Discussion in 'GBAtemp & Scene News' started by Chary, Aug 26, 2019.

  1. MarkDarkness

    MarkDarkness Deliverator

    Member
    7
    GBAtemp Patron
    MarkDarkness is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Dec 17, 2009
    Poland
    Scene just keeps getting crazier.
     
    ImCarlosGG likes this.
  2. Bimmel

    Bimmel ~ Game Soundtrack Collector ~

    Member
    10
    Jan 28, 2014
    Gambia, The
    That's because.. it is soulless crap.
     
  3. 01y

    01y Member

    Newcomer
    2
    Aug 11, 2018
    Canada
    Wait... which games are those?
     
  4. Ecchi95

    Ecchi95 Advanced Member

    Newcomer
    3
    Jul 7, 2019
    United States
    The function signatures are different (because optimizations), so that would fail. I already have a working method and started on it.
     
    Last edited by Foxi4, Aug 28, 2019 - Reason: No need to be rude. Your post has been edited
  5. Joom

    Joom  ❤❤❤

    Member
    14
    Jan 8, 2016
    United States
    It's not Nintendo's code, technically.
     
    monkeyman4412 likes this.
  6. Stealphie

    Stealphie GBAtemp Regular

    Member
    3
    Mar 27, 2019
    Brazil
    Rio Grande do Sul
    YEAH WALUGI TACO STAND 2 WITH MORE TACO TYPES
     
    Missingphy likes this.
  7. FAST6191

    FAST6191 Techromancer

    pip Reporter
    23
    Nov 21, 2005
    United Kingdom
    For the purposes of most copyright courts it is.

    If the people doing this had played it, observed its behaviour, fed it a bunch of inputs and then recreated the whole thing from observed behaviours (probably also with a different team to those that did the looking just to ensure nobody accidentally saw a disassembly and used it) aka a traditional clean room reverse engineering effort then it would be their own code.

    As it stands the people doing this have all but admitted they used disassembly and decompilation* to regenerate the original source code (the whole compiles to 1:1 thing alone attesting to that, especially as this game has unused code like the trampoline stuff I was contemplating in the other thread that has comments generated upon it from this project) it falls under various things from derived works to out and out copying. How much damages Nintendo might be able to recover (or be assigned as I am assuming like most hackers the people here are broke as you like) and what sort of arguments they would make as far as it deprives them of potential revenue I don't actually know and don't know of any similar cases at this point. Historically Nintendo have not cared much either so I am not expecting too much here; we have had functional equivalents in terms of full commented disassemblies of Mario, Pokemon and more for many years now, all of which have been completely unmolested as far as I know, and observing interactions of the law and ROM hacking related fields is one of my things. Though at the same time if you and a few hundred other viewers of this cared to clone the GIT (they even have a nice download all as zip button) in an event of a keep sharing the tapes scenario then that is not a bad plan.
    If it comes to pass that someone takes the code, tweaks it such that it compiles with a modern compiler for a modern OS or other embedded device and then we can all have our own custom builds made with a current version of code:blocks, visual studio or something equally easy to use then that might be a different matter and we could be awakening a sleeping giant as it were. Definitely want some Streisand effect in that case.

    *not sure how much decompilation has been tested in court for non scripting languages (thinking stuff like python, java, autoit, C# and the like which have things that trivially spit out source code), as opposed to this sort of thing which takes a more creative toolkit (decompilation efforts for C and C++ attract some of the brightest minds in computer programming and computer science these days) and human effort to make sense of the results. However I don't expect a particular hangup here where it is all suddenly free and clear.

    I am also not entirely sure what Nintendo might be able to do with the source code as far as releasing a new version using it if they have lost their old code or find this much better than whatever they have from back in the day (when it comes to public domain books then while the content might be unable to be copyrighted then it is usually held that the font, layout, formatting and such constitutes creative work done so I might not be able to scan a shiny new book of an old story and stick it online). Similarly there is no chance of any company (even if they wanted to wade through the 1990s vintage embedded C for a new console that was unknown and hard to program for) being able to use this to generate a commercial work, compared to most open source stuff where that is eminently possible.
     
    Daniel15 and navimor like this.
  8. kikongokiller

    kikongokiller GBAtemp Advanced Fan

    Member
    9
    Jan 12, 2017
    Australia
    Do you get off on being so bitter all the time? It was a simple suggestion, and I'm sure you could have taken it without being such a sourpuss.

    All things considered, this is definitely gonna lead to some pretty nice advancements in the future and I'm looking forward to seeing what comes out of it.
     
    CrashOveride likes this.
  9. ShadowOne333

    ShadowOne333 GBAtemp Guru

    Member
    19
    Jan 17, 2013
    Mexico
    Disassembly counts as reverse engineering, just fyi, and it holds legal grounds in courts, at least in NA as far as I know. So Nintendo can't claim nothing because RE is legal.
    This is the same reason why Nintendo hasn't done jackshit to the already widely available Pokemon disassemblies, which vary from Gen 1 to Gen 3 as of this time of writing, and they've been available for years in GitHub of all places.

    I don't know in what world a sane human would try to "reverse engineer" something just from observation and tried to recreate it from scratch. That's completely stupid. It's like trying to waste 1 year of your life to recreate Mario's jump from observation 1:1, while you can very much do it by debugging the ROM and see how the game engine does it with disassembly, alongside what routines are tied to it and the exact timing ticks, gravity variables, etc.

    Disassembly is the very first step to any kind of RE, and most of the time they go hand by hand.
    From here, people adept enough in the MIPS assembly language can work wonders.
    And someone adept enough in both MIPS and C++ can start recreating the whole game in C++ from the base MIPS disassembly.

    And remember, all of this is LEGAL.
    So Nintendo can go fuck themselves with their bullshit DMCAs already and their IP copyright asshole attitude towards everything related to them.

    Glad this was done.
     
    Last edited by ShadowOne333, Aug 27, 2019
    monkeyman4412 likes this.
  10. raxadian

    raxadian GBAtemp Maniac

    Member
    5
    Nov 10, 2018
    Argentina
    Most free and open source collect a ton games in 3D cgi are more or less based on Super Mario 64. Outright clones keep getting killed by Nintendo so they never get too far.
     
  11. uludag

    uludag Advanced Member

    Newcomer
    4
    Jun 5, 2018
    Fiji
    Why do you say so?
     
  12. Bimmel

    Bimmel ~ Game Soundtrack Collector ~

    Member
    10
    Jan 28, 2014
    Gambia, The
    Sorry, I forgot the emoticon.

    Honestly, I can see the hard work that this project must have been. The reason why "soulless" comes to mind is hard to explain. Everything looks so clean und stiff, not natural at all.

    In any case, it's a great proof of what is possible.
     
  13. CrashOveride

    CrashOveride Advanced Member

    Newcomer
    1
    May 29, 2017
    United States

    lol "fuck you because you suggested something nicely, shut up"
     
  14. fudgi

    fudgi GBAtemp Regular

    Member
    2
    Apr 28, 2009
    Gambia, The
    how were those sophisticated romhacks, with new features, physics etc possible if the source hadnt been altered?
     
  15. uyjulian

    uyjulian Homebrewer

    Member
    9
    Nov 26, 2012
    United States
    United States
    It's called "code modification"
     
  16. FAST6191

    FAST6191 Techromancer

    pip Reporter
    23
    Nov 21, 2005
    United Kingdom
    Disassembly, and reverse engineering as a larger umbrella, might be legal for purposes of interoperability, accessibility, defeating anti piracy that is dead and preventing a work from being used, and all the other "substantial non infringing uses" that allow emulator projects to happen out in the open over decades but firing your decompiler or disassembler over a piece of code and releasing the result (even tarted up a bit) is hard to justify as some kind of fair use any more than me taking bitmaps of every frame of a film and releasing those as a slideshow is legal.
    I am not sure why the pokemon stuff has remained so unbothered, however everything I have seen from Nintendo other than the emulator which bundled ROMs has been more from a trademark angle from what I can see, and I don't think the disassembly terribly bothers that.

    I agree it would have been a nightmare, one you know you can end trivially with existing tools, to recreate a game even as old as this from observation -- such methods are traditionally saved for things like database formats, document formats, low level protocols and things like that to allow people to operate with them or convert between them. The method described before, generally known as clean room reverse engineering, is the traditional way you generate free and clear info for your projects that you want to interact with someone else's standard, code or similar if the have not provided the code in a manner you care to use.

    I am also happy to see such things made, and happy to skirt the edges of laws to have cool things like this. Does not change the technical reality of the law though.

    Source makes things potentially a lot easier, however it is not impossible without it.
    I am not sure how much depth is required for a reply like this but in an emulator you can watch for certain things to happen (buttons, standard cheat searches will yield character location, direction and speed, from there you can either watch things watching for the buttons or do something like that and figure out what jump routines are like) and from there figure out what code is fiddling with what. At that point you can do some fairly radical changes. Rinse and repeat for the various hats, walls/obstacles, enemies and the like.

    Prior to the N64 (and PS1) most things were written in the assembly language you will likely be getting spat back out at you from the emulator and 16 bit era games still managed a fair bit of complexity. Or if you prefer you can have a read of https://stuff.pypt.lt/ggt80x86a/asm1.htm (it is for the PC but you can see how quickly you find yourself doing useful operations).
     
  17. Daniel15

    Daniel15 Member

    Newcomer
    1
    Jan 26, 2010
    United States
    Palo Alto, CA (originally Melbourne, Australia)
    Pretty interersting! Thanks for the link.

    What does "officially" mean? It's not really official given it's not a Nintendo release, right?
     
  18. Ecchi95

    Ecchi95 Advanced Member

    Newcomer
    3
    Jul 7, 2019
    United States
    If I want suggestions, I'll ask for them. If I don't ask for them, I'm happily along with what I'm doing and don't want or need them.
     
  19. uyjulian

    uyjulian Homebrewer

    Member
    9
    Nov 26, 2012
    United States
    United States
    Because I proposed it some, You need not waste time.
     
    Last edited by uyjulian, Aug 27, 2019
  20. VzUh

    VzUh you are now reading my custom title

    Member
    2
    Feb 5, 2017
    Spain
    inside me
    guys, gals, and whatever you are: now is the time to aswer one of the greatest questions ever

    was luigi in mario64?
     
Quick Reply
Draft saved Draft deleted
Loading...