• Redkey@programming.dev
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    8 months ago

    I watched the video that you linked to, and it was very interesting! I’d never thought about exploiting the possibility of double-dipping the logo. It simply wouldn’t have been practical back in the day. However, there are two important facts that change the situation a bit.

    (EDIT: I’ve left the following discussion of logo checksums intact, but I kept digging and found what is claimed to be a dumped and disassembled copy of the OG GameBoy boot ROM, which does include a byte-for-byte check of the logo data. Colour me surprised! I was interested in GBA homebrew back in the day and I’d swear that I saw a dumped GB boot ROM that only calculated a checksum. Also, those cartridges with the non-standard logos? I own them. Unfortunately I can’t get my hands on them right now, but I saw them with my own eyes. If it wasn’t just fooling a checksum, then I don’t know what the deal was there, especially the carts with “garbage” logos. Not to mention that as I said, I don’t think it was practical to do a bait-and-switch in a retail cartridge back in the day.)

    (EDIT 2: Yes, I’m still reading about this! It seems like the bait-and-switch was feasible back in the day. Some publishers used special mappers, while others apparently redirected address lines with carefully-chosen capacitors, which seems delightfully hackey to me.)

    First, neither the OG nor the Color GameBoy have a complete copy of the Nintendo logo stored in their boot ROM. Instead, the boot code calculates a checksum of the cartridge’s logo data, and compares that to a stored checksum of the official logo. If the checksums match, the check is passed. There are unofficial cartridges which boot just fine by having “garbage” logo data that passes the checksum test. I have even seen one company that took the time to come up with a different recognizable logo that still passed the check. The lettering looked weird, but you can read it.

    By the time the GameBoy Advance came around, ROM was cheap enough to include a complete copy of the official logo and compare it byte-for-byte, so they did.

    Second, Sega tried a similar tactic on some of their consoles: The boot rom contained a routine which would display a screen claiming that the software had been produced by or under license from Sega Enterprises. If the code on the cartridge/disc didn’t call that routine fairly early, the boot ROM would cause the console to lock up. The idea was that if software had to call that routine, Sega could sue unapproved publishers for claiming to be licensed when they weren’t.

    Unfortunately for Sega, the US courts ruled (Sega vs. Accolade, 1992) that since it was impossible to run software on the system (which the court upheld that Sega had no right to block, ah the days before DMCA) without calling this routine, that unlicensed publishers couldn’t be said to be wilfully claiming licensing rights from Sega; they were just calling a routine that was necessary to make the console work. The fact that Sega had attached this licensing screen to it was immaterial.

    No doubt Nintendo’s legal team would go after anyone who tried this on one of their systems, either under DMCA somehow, or even simply on the premise of being able to bankrupt their opponent with requests and delays before ever making it to trial. But I suspect (I am not a lawyer) that technically, anyone putting a Nintendo logo in a GB cartridge could claim the 1992 case as a precedent.