

Nintendo Open Source Software Source Code Distribution Page - pdknsk
http://www.nintendo.co.jp/support/oss/index.html#

======
pdknsk
There is nothing particularly interesting, most is just their customised
WebKit. MK8 uses a bluetooth library, only modified to compile with MSVC. DS
emulation uses Nanojit, but I couldn't figure out the snapshot they used to
run a diff against.

------
antanique
Now, I'm not a lawyer but the Mario Kart 8 package contains code that is GPL
(not LGPL) - look at the bluetooth audio codec stuff. Does this mean that
Nintendo is legally bound to release the whole source code of Mario Kart 8
now? :)

The package is here:
[http://www.nintendo.co.jp/support/oss/data/MarioKart8_OSS1.0...](http://www.nintendo.co.jp/support/oss/data/MarioKart8_OSS1.0.zip)

~~~
oddevan
IIRC, only if it's statically linked. If it's on the disc as two different
binaries that only talk to each other through the OS at runtime, then no, MK8
isn't required to be GPL.

(It's the same principle that allowed Apple to include GCC with Xcode before
LLVM came along.)

~~~
zbowling
GPL code you CANNOT link in anyway without your code being infected by the GPL
license terms, dynamically or statically. You CAN invoke tools written in GPL
just not the code (unless that GPL license has something like a classpath
exception).

The are also exceptions for libraries provided by OS. (Which is why you can
GPL code on Windows which links a proprietary libc from Microsoft).

Apple gets away with calling GCC because it's a different application being
invoked by it's natural interface in the same way that Xcode invokes git
internally. (And also why people use the libgit2 project when they need to
call git as a library which licensed under LGPL with the classpath exception).

Now LGPL is an entirely different story. LGPLv2 was intended that you be able
to replace dynamically linked libraries in an application. The changes you
made the library must be open sourced and I should be able to replace that
library as a user.

In theory you satisfy the requirements of the LGPL license if you wanted to
statically link though if provide the objects and archives of your code if you
wanted to statically link with LGPL code, but doing this was not really well
defined in the license as valid. In LGPLv3 they clarified this is totally
valid and allowed.

The interesting thing is that LGPL was a license best written for C libraries
at dynamical library level and breaks down in a few cases for different
languages. It also breaks down where you have inlining and code getting
embedded from headers that would break the ability in some cases for you to be
able to change the library and relink. Implementation details of vtables, etc
can get embedded too that would make it impossible to change the library.

This is why during the GNU Classplath project (to replace the Java Classpath
before Java went GPL anyways), they added the "classpath exception" to GPL
itself instead of using LGPL. See here for details:
[https://en.wikipedia.org/wiki/GPL_linking_exception](https://en.wikipedia.org/wiki/GPL_linking_exception)

~~~
userbinator
But what exactly is a "link"? If I write e.g. a piece of software that enables
combining and running arbitrary code from any library, GPL or otherwise (think
of something like rundll32 on Windows), and use that instead, via parameters
that the user somehow has to supply in order to get the right libraries and
symbols, does that also become GPL? I can thus use any GPL (or otherwise)
library in the same way that Xcode uses GCC.

This and other "how long is a piece of string" type of issues is why I think
licensing is overall a horrible ridiculous convoluted mess.

~~~
belorn
Linking is simply a simplification of "what defines a derivative work" that
FSF think helps developer. It is by no means final, and one can always hope
that the court system will find the definition of derivative work at some
other point.

I would however call it a bad bet to incorporate someone else code into a
proprietary product, on the off chance that the general known line of
"linking" can be invalided by the courts. The lack of case files should be a
strong hint towards that.

------
nullsoldier
As someone who's still learning about licenses. Does this mean that since they
waited so long to release their OSS that they've been violating the terms of
the licenses they've used to ship products for years (potentially)?

~~~
ig1
No, GPL only requires you to provide source-code to users on request. No
general publication requirement.

~~~
joncrocks
I think you also have to provide details of the licence/licensed components
alongside your distributed software, so that users know they can actually
request the source-code.

[http://www.gnu.org/copyleft/gpl.html](http://www.gnu.org/copyleft/gpl.html)
\- "And you must show them these terms so they know their rights"

~~~
caw
Most games have all of this info in the credits, and if you get a manual
anymore, in there.

~~~
TazeTSchnitzel
Nintendo games all have manuals, they're just not physical. For example, if
you put a 3DS Game Cart into a 3DS, there's a Manual button to bring up a nice
HTML-style manual.

------
StevenXC
Does this page leak news about Nintendo DS emulation for the Wii U Virtual
Console? Or is this a mistake/old news?

~~~
Kronopath
It might be DS emulation for 3DS. I'm pretty sure that DS games run under
software emulation on that platform, given that you can do things like hit the
"home" button to return to the 3DS's menu.

~~~
ntkachov
Nope. I think its hardware emulation. The DS games run on one of the
processors. I think its the processor that runs the system OS, which is why
you can't just back out of a DS game into the main menu, you have to quit the
game. Also the reason why you don't get street passes when you play DS games.

~~~
DSMan195276
IIRC, it can't run the System OS at the same time because the system switches
in to 'DS Mode'. The DS actually had two processors inside, and AFAIK the 3DS
under-clocks both processors to match what the DS had and runs the games that
way (And thus, while it's in 'DS Mode' the only way back to 3DS mode is via
the Home button).

~~~
Danieru
Its also interesting to note that this is how Nintendo has handled backwards
compatability for every gameboy generator. In the DS the GBA's arm was used
for sound processing. And the GBA has a GBC's z80. The GBC itself was just a
GB z80 with a higher clock and special memory space for color palettes.

~~~
duskwuff
> Its also interesting to note that this is how Nintendo has handled backwards
> compatability for every gameboy generator.

Same pattern as how they handled Game Cube compatibility on the Wii, I
believe. I wouldn't be surprised if Wii mode on the Wii U were similar, but
I'm not familiar with that.

~~~
Danieru
True, in the case of both the Wii and WiiU they are mostly higher clocked
Gamecubes. This is why Dolphin started as a Gamecube emulator and added Wii
support. About a year ago I talked with one of the Dolphin developers and he
anticipate extending to the WiiU once we have the CPU headroom.

~~~
delroth
I don't know who you talked to, but Dolphin will never have support for Wii U.
Wii U emulation requires a completely different emulator type compared to Wii
emulation.

Source: I'm a Dolphin developer.

~~~
Danieru
Sorry then I must be wrong. All I remember it from was an IRC conversation on
the PPSSPP channel.

------
thekylemontag
Hopefully there will be some classic nintendo backdoors in this code
somewhere.

~~~
erikj
There is a working exploit for the Wii U web browser:
[https://bitbucket.org/Marionumber1/wiiu-
userspace](https://bitbucket.org/Marionumber1/wiiu-userspace)

~~~
smtddr
Indeed, and for those keeping an eye on the scene... an exploit for newest
firmware 5.1.0 was just released a day ago or so.
[http://www.eurasia.nu/modules.php?name=News&file=article&sid...](http://www.eurasia.nu/modules.php?name=News&file=article&sid=3324)

Keep an eye on the work MrBean has been doing to MarioKart8 -
[http://www.youtube.com/user/MrBean35000vr](http://www.youtube.com/user/MrBean35000vr)

[http://www.youtube.com/watch?v=-S4ZhmanOeM](http://www.youtube.com/watch?v=-S4ZhmanOeM)

[http://www.youtube.com/watch?v=UVbZXqxIV7I](http://www.youtube.com/watch?v=UVbZXqxIV7I)

