[rec.games.misc] Ultima V problems

c60c-4au@web-4f.berkeley.edu (12/04/88)

I recently tried to run the game Ultima V by Electronic Arts on my (cheap)
PC clone and ran into problems.  When I start the game, it asks for the key
disk to be put into Drive A or B.  Ok fine, I do so (this is an ORIGINAL
disk, not a copy or anything).  Then, it accesses drives A and B and says,
Insert the key disk in drive A or B.  It never seems to recognize that the
key disk is in the drive.  The drive speed on my drive is correct, so that
is not a problem.  I have tried the disk on a couple of friends computers,
one with an AT and one with a true blue PC, but it works on their computers.
My computer setup is:

10 MHz IBM PC/XT clone with a V-20 chip
Hercules graphics card
640K RAM
2 disk drives

Now, since I have tried virtually everything to get it to work with no
avail, I was wondering if anyone knew how to patch the program so that it
ignores the protection.  I tried using CodeView on it, and found a call to
the protection routine, but when I tried to single step the code, CodeView
got lost, so some funny stuff is going on there, and I don't know 8088 code
well enough to figure it out.  So, if anyone has a patch for ULTIMA.EXE (the
file containing the protection check I think) to make it work without the
key disk, I would greatly appreciate it, since I have been waiting for Ultima
V for a LONG time...

--
Erik Talvola               | "It's just what we need... a colossal negative 
c60c-4au@web.berkeley.edu  | space wedgie of great power coming right at us
                           | at warp speed." -- Star Drek

mlc@csucis.UUCP (Cipalla Mike) (12/06/88)

In article <17744@agate.BERKELEY.EDU> c60c-4au@web-4f.berkeley.edu () writes:
>
>I recently tried to run the game Ultima V by Electronic Arts on my (cheap)
>PC clone and ran into problems.  When I start the game, it asks for the key
>My computer setup is:
>
>10 MHz IBM PC/XT clone with a V-20 chip
>

Your problem is with the speed your clone is running at if you somehow
change this speed to 4.77 MHz you will have no problem. I had the same
problem on my clone, and then I remembered reading that some software
must be run on the slower of the two speeds available on my computer so
I hit the switch to change the speed to 4.77 MHz while booting and I
have not had any trouble running the game. After the Ultima V title is
shown you can switch your clone back to 10 MHz for faster playing.

                                                      Mike Cipalla

jack@turnkey.TCC.COM (Jack F. Vogel) (12/10/88)

In article <17744@agate.BERKELEY.EDU> c60c-4au@web-4f.berkeley.edu () writes:
>
>I recently tried to run the game Ultima V by Electronic Arts on my (cheap)
>PC clone and ran into problems.  When I start the game, it asks for the key
>disk to be put into Drive A or B.  Ok fine, I do so (this is an ORIGINAL
>disk, not a copy or anything).  Then, it accesses drives A and B and says,
>Insert the key disk in drive A or B.  It never seems to recognize that the
>key disk is in the drive.  The drive speed on my drive is correct, so that
>is not a problem.  I have tried the disk on a couple of friends computers,
>one with an AT and one with a true blue PC, but it works on their computers.
 
I hate key disk programs! I believe someone else has responded to your posting
that the problem is with your clock speed and that may resolve the problem
for you. But for anyone out there I will explain how the protection scheme
for Ultima V works and how to defeat it. I do not do this to condone piracy
or anything, in fact playing with a copied program would be near to useless
anyway since you would be missing the map and all the documentation; rather
it is for those of us out there that hate didling with floppies.

Also note that I am not offering some nifty runnable debug script, I could
but don't have sufficient motivation, if you want it unprotected you will
have to work a little for it :-}.

OK, the protection consists of two parts: first there is an unallocated
sector on the key disk that contains some data you need to calculate a
jump address used to initiate the game. Because it is not allocated by
any file (linked in the FAT) it will not be copied using normal means.
I don't remember what sector it is but I will tell you in a moment how
to insert the data where you need it into ultima.exe. All the patching
I did was with a binary editor called Superzap, you could also use Norton
or some such thing. You will need to determine where the code segment
begins in the ultima.exe file since this is reference point 0, all other
changes will be made as offsets from that (I will refer to it as cs:0).
Search for the hex string "eb 0a 00 00 00 12", eb is cs:0.

The second part of the protection is that the routine that does an
absolute sector read on the floppy is encrypted on the disk. When the
program is executed the first thing it does is call a subroutine that
takes each byte from cs:12 to cs:1df (all numbers in hex) and XOR's them
with 53H, then it jumps to cs:12 and executes that code, this is the
code that reads in the unallocated sector from the floppy among other
things. It was in this process that you probably got lost when you
tried to use Codeview, you have to do it properly or things get messed
up. What the unprotect will do is bypass the floppy reading routines
and then also bypass the checks, remember we will insert the data
by hand. OK here goes the detail.

1: starting at cs:318 (remember you must determine this point in the
binary file on disk and do all patching there) you must write in 256
bytes of 4e's and then the sequence '22 03 2d 07 00 08 3b 1b'. This is
the data that is normally read from the unallocated sector.

2: make the following changes:
	a) cs:3a should be 27H, change it to 26H
	b) cs:6c should be ebH, change it to 90H
	c) cs:1ba should be 9eH, change it to c3H
	d) cs:1bb should be 40H, change it to c3H
	e) cs:1c0 should be 27H, change it to 26H

With these simple changes ultima.exe on your hard disk will just fire up
and never need a floppy. As I recall when I tried to run the whole thing
from a 1.2 floppy there was one more routine that needed to be changed
but I didn't write down what it was in my notes :-{ and I don't have
time to run it down now, but this should work with just drive C:.
REMEMBER, do this on a copy of ultima.exe and not the original. If anyone
has any real problems send me mail since I don't read this group, a 
friend just notified me of the posting since he knew I had unprotected
it.

					Good luck,

-- 
Jack F. Vogel
Turnkey Computer Consultants, Costa Mesa, CA
UUCP: ...{nosc|uunet}!turnkey!jack 
Internet: jack@turnkey.TCC.COM