Mega Man X Piracy Snafu
Sep. 27th, 2019 04:50 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I just heard about the most ridiculous anti-piracy measure gone awry. It has to do with Mega Man X on the SNES (specifically the first Japanese version of Rockman X).
Asian pirates were a problem back then and Capcom wanted to screw with them in the best way possible, by fucking up their game if you played a pirate copy. They did this because they knew how pirates worked. Many SNES games had SRAM for save data at certain registers. It was so common that pirates always included SRAM at these registers and if a game didn't use it, they just let it sit empty. This streamlined the pirating of games.
Capcom knew this and so they did a trick. The game wouldn't have SRAM at these registers, but they would still attempt to write to it at random intervals while you played. After some data was written they would attempt to read the same value back, and if it matched they would know it was a pirate copy and do all sorts of crazy shit in the game. Like making it so you couldn't shoot and slide, or making you warp to the beginning of the game after you finished a level, or having you take damage when climbing a ladder...all sorts of hilarious shit. They even put in checks to see if the code was tampered with, and if they detected it was, the results were even more punishing.
Of course since the actual game didn't have SRAM at these registers there was nowhere to write or read, so the real game wouldn't screw with you. It knew it was a legit copy.
But there was a problem, Capcom punked themselves. The game was a 12mb game. 12 isn't a power of 2 so to fill the memory of the SNES they took 4MB of data off one of the chips and mirrored it into memory to get 16mb. This was common practice to initialize memory banks back in the day.
However, doing this filled the registers normally used for SRAM. Since there was no SRAM in the game that shouldn't be a problem right? Well, not really. See, on first revision of the game in Japan, the game would try to write to these registers and fail, *however* the next step was to read that data from these registers. Because they mirrored the 4mb, there *was* data in those registers and every once in a while it just happened to have a match of data in it!
No, it wasn't as sure-fire as if it was a pirate cart, but real retail carts would sometimes trip the piracy code by chance and all sorts of shit would happen to legit customers. Hilarious.
To rectify this Capcom had to literally wire resistors and wires onto all the boards of the first rev of the game to stop it from happening. Subsequent releases of the game fixed it by only reading/writing values that they knew wouldn't be in that 4mb of mirrored memory.
Anyway, I found this fascinating and funny, and had to share.
Asian pirates were a problem back then and Capcom wanted to screw with them in the best way possible, by fucking up their game if you played a pirate copy. They did this because they knew how pirates worked. Many SNES games had SRAM for save data at certain registers. It was so common that pirates always included SRAM at these registers and if a game didn't use it, they just let it sit empty. This streamlined the pirating of games.
Capcom knew this and so they did a trick. The game wouldn't have SRAM at these registers, but they would still attempt to write to it at random intervals while you played. After some data was written they would attempt to read the same value back, and if it matched they would know it was a pirate copy and do all sorts of crazy shit in the game. Like making it so you couldn't shoot and slide, or making you warp to the beginning of the game after you finished a level, or having you take damage when climbing a ladder...all sorts of hilarious shit. They even put in checks to see if the code was tampered with, and if they detected it was, the results were even more punishing.
Of course since the actual game didn't have SRAM at these registers there was nowhere to write or read, so the real game wouldn't screw with you. It knew it was a legit copy.
But there was a problem, Capcom punked themselves. The game was a 12mb game. 12 isn't a power of 2 so to fill the memory of the SNES they took 4MB of data off one of the chips and mirrored it into memory to get 16mb. This was common practice to initialize memory banks back in the day.
However, doing this filled the registers normally used for SRAM. Since there was no SRAM in the game that shouldn't be a problem right? Well, not really. See, on first revision of the game in Japan, the game would try to write to these registers and fail, *however* the next step was to read that data from these registers. Because they mirrored the 4mb, there *was* data in those registers and every once in a while it just happened to have a match of data in it!
No, it wasn't as sure-fire as if it was a pirate cart, but real retail carts would sometimes trip the piracy code by chance and all sorts of shit would happen to legit customers. Hilarious.
To rectify this Capcom had to literally wire resistors and wires onto all the boards of the first rev of the game to stop it from happening. Subsequent releases of the game fixed it by only reading/writing values that they knew wouldn't be in that 4mb of mirrored memory.
Anyway, I found this fascinating and funny, and had to share.