[stella] copy protect idea

Subject: [stella] copy protect idea
From: "Glenn Saunders" <cybpunks@xxxxxxxxxxx>
Date: Thu, 31 Jan 2002 15:47:21 -0800
I have an idea for a piece of copy protection hardware for physical 2600 games that I'd like to get opinions on. It's just an idea. I am not a hardware guy so I couldn't build it. But it sounds like it might actually protect games from being used on emulators or cloned from EPROM to EPROM.

You'd have a special kind of memory mapper inside the cartridge. Let's say it broke the 4K of address space down into 4 slices of 1K or 16 256 byte pages. Let's say it did something useful like 16K of bankswitching in addition to its special functions so it wasn't just a copy protector.

Okay, what it's really designed to do is shuffle the physical layout of memory around in a randomized way during game execution.

Your game would have to be written in a way that it triggers the shuffling and keeps the JMP tables up to date.

You'd poll the cart to ask it where the current address of a function is, and that triggers the hardware to juggle the addresses and return a different value every single time. There would be no way to predict the value. You are reliant on the hardware to inform the program.

So the jmp to the main loop of your code might seem to the program to be going to a host of different addresses when internally it's the same block of ROM being executed, but at different access points over time. It's like the reverse of bankswitching insofar as you want the cart to move memory around when normally you wouldn't want it to, just to obscure the sourcecode.

So it's like a weird form of self-modifying code. To the 2600, the memory layout appears to be constantly juggling in a hard to predict manner.

This is similar to the DPC chip where reads to the same memory location return back different data each time as a way of fast indexing through graphics and sound data, but it would be more for the purpose of randomizing the code's execution.

I'm thinking it would be very hard for a cart-slot-based ROM reader to get an accurate read of all the data, especially if the game were greater than 4K. Even if it did, you'd still have to go through and disassemble the game and figure out where all the pieces really belong like a jigsaw puzzle.

The EPROM also would have to be stored in a somewhat scrambled state so that you couldn't just copy the EPROM and disassemble the game and replace the reliance on JMP tables with absolute JMPs. The code would be such a jumbled mess you wouldn't be able to do anything with it once it's read.


Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.

Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/

Current Thread