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.
Opinions?
_________________________________________________________________
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/