I just don't understand why all those measures went into a NES emulator, which is basically worthless to emulate. Had those gone into a popular game like Pokémon, people would've been on their toes trying to overcome them a lot sooner, and the games couldn't be emulated for some time (probably not very long, but a while regardless).
My guess would be that developing the NES emulator turned out to be a relatively simple project and they still had left-over time/budget to experiment with copy protection mechanisms.
Loved the article as well as the previous HN discussion.
Having a bit of trouble understanding #5... I'm not very familiar with (ie: I've never written a line of) ARM asm, but with my naive understanding of the code:
06000264: E28FE008 add lr, pc, #8
..I end up with lr pointing to either 06000268 or 06000270 (depending on when the program counter gets incremented), how does the article get to 06000274?
In the old 3-stage ARM pipeline, the instruction reads pc (as with all registers) during the execute stage, which is 2 cycles after fetch. ARM froze this definition for compatibility, so it's +8 for ARM and +4 for thumb despite not using a 3-stage pipeline anymore.
The bigger piracy problem at the time was unauthorized third party flash cartridges, not emulators. I'm wondering which of these measures, if any, where targeted at making them more difficult to run from these cartridges. I know I had one and these games would not run unmodified on it.
During the time the Classic NES series was being produced, a public domain NES emulator for the GBA already existed[1], and has even been used in commercial releases[2]. There would have been no reason to go for the Classic NES games over the existing emulator.
Yeah but not everyone would be able to/interested in using a flash cart+pocket NES. Nintendo wanted a piece of the action, and probably a lot of people would be happy to buy a Nintendo approved version of those games.
Seems likely that the the save type masquerading would prevent running the game from generic mass produced cartridges which probably contains both SRAM and EEPROM.
I really don't think these are anti-emulation measures. The Classic NES Series games weren't ports of NES games, they were NES emulators packaged up with the NES ROMs running on the GBA. The "measures" detailed on that article sound more like either bugs in the GBA emulator, or tricks that Nintendo used to squeeze the most speed out of their own NES emulator.