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.
They lost.
[0] https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_A...
See Chamberlain v. Skylink for a post DMCA case on the matter.
https://en.m.wikipedia.org/wiki/Chamberlain_Group,_Inc._v._S....
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...?
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.
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.
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...