Hacker News new | ask | show | jobs
by white-flame 2981 days ago
I actually kind of liked the Gameboy approach. You needed to include a byte-for-byte image of the trademarked Nintendo logo in order for the boot ROM to run your cartridge. So there were no technical hurdles to running your code in it, but it just made it legally dangerous to distribute.
5 comments

Holy shit. Is that why when you plugged in a cartridge a little weirdly, the nintendo logo would look all weird and the game wouldn't boot? it was a simultaneous legal protection and a harware protection? that was fucking genius!
The reason for the logo looking weird is that it did load the logo from the cartridge, and if the pins aren't reading perfectly, the data comes out wrong.

One of the first pieces of code in the startup code embedded in the GB's CPU reads the logo data, doubles it vertically and horizontally, and writes it out to the graphics tile memory. It scrolls down the screen, even if it's corrupted. Then it compares the logo with one built into the CPU and puts itself into an infinite loop if they mismatch.

So, yep. It's a combined data consistency check, and an attempt to use trademark to prevent unauthorized software.

Sega tried this with the Dreamcast, and further, tried to enforce it in court.

They lost.

Indeed but since then the DMCA[0] has radically shifted to the law. Sega would win today.

[0] https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_A...

IANAL, but the two things seem related, why is GP being down voted? From just a reading of the wiki pages without much law knowledge it does seem like sega would win today? What I am getting wrong?
I don't think they would assuming that they wrote their own game and were only using of Sony's what was necessary to run their own code.

See Chamberlain v. Skylink for a post DMCA case on the matter.

https://en.m.wikipedia.org/wiki/Chamberlain_Group,_Inc._v._S....

HN's algorithm to turn a URL into a clickable link can have trouble with links that end in punctuation, and your link fell victim. Here's an attempt to make it work:

https://en.m.wikipedia.org/wiki/Chamberlain_Group,_Inc._v._S...?

That's a mobile link since yours was mobile. Here's the non-mobile version:

https://en.wikipedia.org/wiki/Chamberlain_Group,_Inc._v._Sky...?

That seems to deal with anti-circumvention provisions and not copyright provision and not with infringing on trademark/copyright as the GGGGP (white-flame) seems to be pointing to.
Chamberlain is cited as a rebuttal to the DMCA argument; the DMCA has nothing to do with trademarks, and therefore I took it's citation to be in reference to it's anti-circumvention clauses. For the trademark argument, see Sega v. Accolade's decision.
Interestingly, this could be circumvented - the boot rom does the logo scroll using data from cart, THEN, in a separate loop checks it vs local copy. If you can make the cart read different data at each stage, you are golden!

IIRC Argonaut/Jez San had a POC of this using a very simple hardware bodge, intended as a potential way of publishing Eclipse (What became X) without a Nintendo licence.

Fortunately - Nintendo were interested in the 3D rendering, and that started the SuperFX/Starfox/ARC journey.

More interesting reading on that subject: http://fuji.drillspirits.net/?post=87
> it just made it legally dangerous to distribute.

Internet and countries that don't enforce copyright exist you know? You can even get HDCP strippers on Ebay, pretty easily too. Never had any issue finding ISO and roms online, even for the Switch before this hack.

If only the legal side was a good enough security...

If you want a portable device that you can use to run your own software, then go get a tablet that run the Tegra X1, you will get the exact same thing.

Do you by any chance have a source on this? I believe you, this is just such a clever system that I want to read more about it.
In the sense of "that's how the Game Boy behaves", it's not hard to find a dump of the startup firmware (and it's just 256 bytes).

At offset 0x21 (33), it loads the offset for the bitmap data in the cartridge into one register, and the address for tile data RAM into another. Offsets 0x27-0x32 are a loop that calls out to functions at offsets 0x95-0xa7 and 0x96-0xa7 to double up the bits and scale the image to 2x its original size. After the code to scroll the logo, it plays the iconic double-ping sound.

At offset 0xE0, it loads offsets for the firmware copy of the logo and the cartridge copy of the logo. 0xe6-0xef iterate through the logo. If at any point the 2 copies don't match, there's a jump at offset 0xe9. Here's the relevant part of the loop:

LD A, (DE) ;Load a byte from the cartridge copy

INC DE ;Increment the pointer to the next byte

CP (HL) ;Compare A with the byte at (HL)

JR NZ, -2 ;If not equal, lock up by jumping back to this location

The patent actually covers this on page 7: https://patentimages.storage.googleapis.com/77/c0/90/d2c7514...

And claims 14+15 seem pertinent:

> 14. A hand-held electronic game machine in accordance with claim 9, wherein said processing means includes detecting means responsive to a connected external memory for detecting whether said connected external memory is an authorized or unauthorized memory.

> 15. A hand-held electronic game machine in accordance with claim 14 wherein the processing means includes further means responsive to said detecting means for preventing an unauthorized external memory from being used for executing a game program.

There's some good commentary on the legal situation, and its relation to Sega's similar legal theories (as regarded the Genesis/MegaDrive) on TVTropes (although it's a bit short):

http://tvtropes.org/pmwiki/pmwiki.php/CopyProtection/Nintend...