Classic NES Series
|Classic NES Series|
Also known as: Famicom Mini (JP), NES Classics (EU/AU)
This game has anti-piracy features.
The Classic NES Series is a series of Game Boy Advance cartridges with emulated NES ROMs slapped onto them. The carts are infamous for the fact that the games' graphics have been resized to account for the GBA's screen resolution, making the sprites look rather ugly, with the most prominent example naturally being "Hunchback Super Mario Bros."
Still, at the time, they were a decent official way to play NES games on the go (certainly less cumbersome than the e-Reader in that regard).
|This needs some investigation.|
Discuss ideas and findings on the talk page.
Specifically: Document this fully. Endrift's blogpost is a good resource. Also, doesn't the use of mirrored memory also trip up some flashcarts?
Rewrite to be more accurate to what's happening.
If the cartridge detects that it is pirated, the above error screen appears. Lower-accuracy emulators (such as VisualBoyAdvance) can also trigger this screen.
...Wait, lower-accuracy emulators? Yes, you're reading that right. Among emulator developers, the Classic NES Series is believed to be the earliest examples of measures specifically against emulation.
Save Auto-Detecting Measure
GBA cartridges can have one of three ways of storing save data: they can either have battery-backed SRAM, Flash memory, or use EEPROM. The way emulators support this is that they catch the first attempt to read or write to one of the three types of save data, and set up the appropriate areas in memory. The Classic NES Series tries to catch emulators off-guard: even though all games use EEPROM for saving, they attempt to write to SRAM anyway, which will fail on real hardware due to the obvious lack of an SRAM chip. If the write, however, succeeds (due to the emulator having caught the call and set up an appropriately sized SRAM area), the Game Pak Error screen displays.
Executing Code in VRAM
The Classic NES Series copy executable code to VRAM (video RAM) and try to execute the code directly from video RAM. The GBA's architecture allows this, but many emulators did not; if the attempt to execute code from VRAM fails, the Game Pak Error screen displays.