der Mouse wrote:
The trick to
fighting counterfeiting [in arcade videogames] is to
make the actions that happen random when something is "incorrect".
And, to design the code so that you never do explicit tests for
"correct".
The Tempest checks - the ones I've found, at least - don't manage the
second part of that. You can NOP out the checking code just fine,
provided you also NOP out the code that watches the checking code.
(I've played the game with those checks disabled, and it is actually
far more playable; the misfires from the buggy checking code definitely
do their job in impairing playability.)
It is *very* hard to design these sorts of checks.
First, you need to make sure that they are totally
ineffectual while you are developing the "real" code.
(you don't want to waste your time tracking down a bug
that isn't really there!)
Second, you need to make them hard to detect. Simple
checksums during POST (etc.) take just a few minutes to
find and patch around. Even continuously running
checks are easy to spot unless they look like they are
doing "real work" ("Gee, why is this piece of code
just walking through memory...?")
Third, they need to be subtle in how they affect the normal
play of the game when they trigger -- if it is to noticeable,
then it is too easy to see when they have kicked in. Just
like adding arbitrary 3 second delays to failed login
attempts, you want to make the counterfeiter have to invest
a lot of time *deciding* if he has beat the check system
or not.
Fourth, when you "install them", you need to be "Ivory Soap Sure"
that they work properly -- in a legitimate game as well as in
a hacked game!
All in a machine that is a fraction of a MIPS :>
Unfortunately, there never was a good solution to this
problem. Software hacks like these are labor intensive.
And, in a market (at that time) where time to market was
*critical*, "wasting" a week writing/debugging/installing
them was expensive.
Yet, hardware protection schemes were just as easy to
beat (even easier in today's technology!). Some of the
schemes that came along were quite imaginative. But,
also quite costly to implement (for a machine that went
to the end purchaser for < ~$2000).
[IIRC, the vector engine in Tempest was pretty much
"fully disclosed" in their documentation -- this wasn't
the case in all machines (though Atari used LOTS of
"custom chips" in their machines)]