
Classic NES Series Anti-Emulation Measures - voltagex_
https://endrift.com/mgba/2014/12/28/classic-nes/
======
beefhash
Previously on HN with some speculation about why those measures are in place
and how some could be written off as optimizations:
[https://news.ycombinator.com/item?id=8808754](https://news.ycombinator.com/item?id=8808754)

~~~
voltagex_
I searched for this! Sorry.

~~~
popey456963
Ah, don't worry about it, we all make mistakes.

------
sanqui
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).

~~~
ginko
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.

------
BruceEel
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?

~~~
brigade
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.

~~~
BruceEel
Makes sense now... Thanks!!

------
spilk
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.

~~~
sanqui
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.

[1] [http://nes.pocketheaven.com/](http://nes.pocketheaven.com/)

[2]
[https://en.wikipedia.org/wiki/PocketNES#Commercial_use](https://en.wikipedia.org/wiki/PocketNES#Commercial_use)

~~~
bananaboy
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.

~~~
sanqui
Yeah, I'm just saying that the measures against piracy were pointless, since
pirates already had an emulator they could use.

------
bananaboy
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.

