From: jamie@cdevil.unx.sas.com (James Cooper)
Subject: Re: Gaming on 68030+ and KS2.0+ machines.
Originator: jamie@cdevil.unx.sas.com
Date: Thu, 21 Jan 1993 15:57:21 GMT
Organization: SAS Institute Inc.


In article <bchiu.727616548@crash.cts.com>, bchiu@crash.cts.com (Bill Chiu) writes:
>So many games broke as a consequence of my new machine, Amiga 3000/25.
>
>This must have something to do with the 68030 and it's caches and privileged
>instructions.  (BTW, tell me how caches/privileged instr. break games)
>Games that wasn't designed with KS2.0+ in mind ranked high in the dead game
>list.

This one's easy.

CACHES

A lot of games have the executable encoded, with a small decoder at the
beginning.  If the cache is big enough to contain the first bit of code that the
decoding routines try to jump to, you'll see the problem.  See, the stuff will
be decoded in RAM, but the encoded image is still in the cache, and when the
jump is done, the CPU know that code is already in the cache, so it essentially
jumps to garbage -- GURU!  All they needed to do was force the cache to clear
before jumping to the just-decoded stuff, and all would be fine.  Of course,
since they only had 68000's when they did the code (it doesn't matter that the
higher processors were available and well documented), they didn't do this.

Also, simple self-modifying code has the same problem.  If the cache was cleared
after the mod was made, but before you tried to use it, everything would be fine
with these programs.

Of course, clearing the cache does take a few precious cycles...

PRIVILEDGED INSTRUCTIONS

There was an instruction on the 68000, "MOVE  <ea>,SR", which was a regular user
instruction on the 68000, but became a Priviliged instruction as of the release
of the 68010.  SR is the machine Status Register (the place where the Zero,
Carry, etc. flags are stored, and a couple of others).  Unfortunately, a lot of
the Game programmers decided they needed to directly poke these flags for
various reason, mainly because it was faster than using system calls like SetCC.
This causes machine level privilege violations if you are not in Supervisor mode
when this instruction is executed.

>Would you people share me with your experience of games that will work with
>A3000, or a list of games that won't.  I use Christ Hames' Degrader quite
>often "to get stupid programs working", and I'll include any games that can
>be revived this method as working.

Most newer games work with the A3000, and even a fair number of old ones.  It
all depends on what "tricks," copy-protection methods, etc. were used when the
game was written.  In fact, the copy-protection is the main place most of the
older programs fail.

As for a list, someone was posting one for a while, and I think there's one
floating around some of the FTP sites, but I can't remember the name of the file
you need to get.  Something like "compat.lha" or "3kcompat.lha" or something
else with the letters "compat" in it.

>One last thing.  Are there other programs that can specialize in one or
>more abilities of degrader that performs better then degrader?  One thing
>odd about degrader I found is that when I select "SelectReset" to boot off
>a Amiga DOS volumn in PAL mode, it never want to open the inital shell
>window.  This can cause problems in some diskettes.

Sure there are others, but are you using the latest degrader?  The current
version is 1.30...

-- 
---------------
Jim Cooper
(jamie@unx.sas.com)                             bix: jcooper

Any opinions expressed herein are mine (Mine, all mine!  Ha, ha, ha!),
and not necessarily those of my employer.
Newsgroups: comp.sys.amiga.games