Eye of the Beholder II - The Legend of Darkmoon
Cheat Sheet
by the Silver Rainmaker (mloux@rm42.ucc.uconn.edu)
This information contained below will tell you how you can
modify your characters through the use of binary manipulation.
It will NOT tell you how to win the game, nor is it a hint file.
If hints are desired, email me at mloux@rm42.ucc.uconn.edu or buy
the hint book.
Also, take note: The details within this document have been
tested and found valid on IBM/MS-DOS compatible machines ONLY! I
cannot vouch for the validity of these notes on any other type of
machine. Those of you with other machines (Amiga, Mac, etc.) are
welcome to try it, but don't come crying to me if it doesn't
work.
Now, in Eye of the Beholder I, there was one save file and
one only. Now I am pretty sure the info contained herein WILL
work on Eye of the Beholder I save files, in fact it was another
cheat file like this one that made me try it on Eye II, but I say
again, no promises. At any rate, in Eye of the Beholder II,
there are several slots in which you can save your game, each
with so many characters in which you can give it an individual
name. At any rate, where in Eye I there was one save file, named
EOBDATA.SAV, there are several in Eye II, one for each save slot,
to be exact. These files have the names EOBDATAx.SAV, where x is
a number 0 through 6, I believe. At any rate, the number on the
end corresponds to the distance from the top slot in the game.
Therefore the highest up will be EOBDATA0.SAV, the next one
EOBDATA1.SAV, and so on, until the last one.
Therefore, you must figure out which file contains the data
you want to alter, and then make a backup copy of it. You don't
have to, but if you mess up, and there is no data to restore,
then you're stuck with it. I thought I would warn you in
advance, so you don't do anything stupid. Now, you can either
edit the backup file or the save file, it doesn't really matter.
I edit my save file directly, namely because it saves time. If
you edit the backup file, then you have to rename the original
save file to a backup, then copy the backup file to the save file
original name (Eye II WON'T know to look for BOB.SAV), then run
Eye II. It's easier to just edit the save file directly, copying
from the backup file in case you screw up. You might want to
make several backup files, at different stages of the editing
spree, in case you only want to back up one small step, rather
than start over again. But you should be able to figure out this
stuff from common sense, so I will get to the point.
Now, you will need a hex editor of some kind. I use
Diskedit myself, because it's nice and easy to use, and it
supports a mouse. Oh yes, DISKEDIT is a part of Norton
Utilities, and the version I use is 6.01. Very nice, but I am
sure PC tools has something as well, and there are probably half
a million editors out there in shareware land or by less known
companies. Any recommendations should be sent to
mloux@rm42.ucc.uconn.edu for newer versions of this text file.
OK, let's start fiddling. Execute your editor and open the
file in question. With most hex editors, there will be a series
of two-digit hex codes to the left, and the ASCII equivalent to
the right. It should look vaguely like the following:
3D 3D 3E 45 61 74 20 6D - 65 3C 3D 3D 00 00 00 00 ==}Eat me{==....
00 00 00 00 00 01 49 72 - 6F 6E 41 73 73 00 00 00 ......IronAss...
00 13 13 64 64 12 12 12 - 12 11 11 13 13 10 10 7F ...dd..........
00 7F 00 FF 00 06 00 02 - 19 35 09 00 00 C4 EF 03 ........5......
00 88 0D 01 00 88 0D 01 - 00 64 1E 87 79 00 00 00 .........d..y...
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
Now, notice that most of the characters that are represented
by hex numbers other than 00 do not show up. No need to really
worry about that. As long as they are there on the hex side,
you're ok.
First of all, notice the first line. This represents
roughly the title that appears in the save slot. This will most
likely be in all capitals (I have already done some editing with
this file, as you will see). Eye II automatically throws
everything in caps, so the only way to get them otherwise is to
do it yourself here.
I will stress now that you want to do most of your editing
on the hex side. Hopefully your editor allows you to edit in
either hex or decimal areas. For names and such you can edit on
the text side, but for the most part you want to play with the
hex numbers.
After the name, on the second line you will see the name of
your first character (that is, the character in the upper left
hand corner of your six. The next character would be in the
upper right hand corner, then the center ones, left to right, and
finally the bottom ones, left to right). This always starts with
the hex character 01, so leave the character to the left of the
name alone. Now, the name can take up 11 spaces, although I have
never tested that. It might be wise to leave a byte free between
the name and the abilities, which come next. You can type in the
name any way you want, but make sure the characters not taken up
by the name are left as 00.
Next come the abilities of your character, in the order
Strength, Percentage, Intelligence, Wisdom, Dexterity,
Constitution, and Charisma. These all take up two bytes apiece,
and I assume the first byte is current score, and the second byte
is maximum score. Whatever the case, make sure they are the
same. The numbers are in hex, so an 18 would be represented by
12, 19 by 13, and so on. Don't edit in the text side here,
because you are dealing with byte values, not actual numbers.
You won't see an 18 in the text, just the character with the
value 18d or 12h (a control character in ASCII. 19d, or 13h, is
the Carriage Return). Oh, by the way, the percentage is also in
hex, but since 2 hex digits will give you a number as large as
255, you can represent anything from 1 to 100. So, 64h is the
equivalent of 100d. Might as well jack them all of the way up if
you're going to cheat. Now, this only works for fighters. If
you do this to a mage, the game will ignore it.
The abilities all take up 14 bytes right after the name.
Next is the hit point value, also in hex, a null byte (00), and
then the hit point value again, followed by another null byte
(00). Once again, I'm guessing, but I think you have current hit
points followed by maximum hit points (for injuries and such).
Note the null byte following each. I assume so this is in case
you reach a hit point total of 256 or higher, which could be
feasable in Eye of the Beholder III. What will happen is the
second byte, now null, will be used as the higher byte, much the
way you add a 1 to the left end of a number, like when 99 goes to
100. More on this later, when we deal with the experience.
Next, there are two bytes, one that might be high up, like
FC or so, followed by one that should be null (00). I don't know
what function these perform, but they seem to be way up there for
NPC's and low for your generated characters.
Next is a series of four bytes that are useful only if you
really want to completely change your character:
The first byte is the Race and Sex, with even numbers being
male, and odd being female. Thus, 00 and 01 are human male and
human female, respectively. Likewise, the elves take up 02 and
03, the half-elves have 04 and 05, the dwarves 06 and 07, the
gnomes 08 and 09, and the halflings finish it off with 0A and 0B.
The next byte following that is pretty important. It states
the class of your character. I don't know all of them, but I
have deduced that 00 is fighter, 01 ranger, 02 paladin, 03 mage,
04 cleric, and 05 is thief. The multi-classed also have a single
digit, with 06 going to fighter/cleric, 07 fighter/thief, and so
on. I don't know all of them, but Amber, the mage/thief on the
priets level, is 0A. So you should be able to deduce the rest
through experimenting, and I will most likely have more complete
results in the next version of this file.
The next byte is the alignment of the character, with 00 as
lawful good, 01 neutral good, 02 chaotic good, and so on, ending
up with 08 as chaotic evil.
The next byte you really shouldn't tangle with unless you
want to change the character's appearance. This byte selects the
portrait used on the screen. I don't know which is which, but
each portrait probably has its own two-digit hex code. Try
different numbers and see what you come up with (hell, you might
come up with the head of a monster!). I do know that the NPC's
all have portrait numbers high up, around FE and FF or so. Most
likely the character portraits are all down in the 00 to 30
range.
The byte after that doesn't seem to do much, at least not
that I can figure out, so I leave it alone.
The next three bytes detail the character's level. You
probably don't want to toy with these, as they will only be
temporary (once the experience points reach the turning point of
a certain level, they will put the character in that level, even
if the level byte says he's three levels higher). Each byte
represents the level in hex. Most characters will only have one
of the three bytes used, unless they are multi-classed (yeah, one
for each class, as three classes is the max you can have).
Then after those three bytes is the experience for each
class, which takes up four bytes apiece. Now, this is where it
gets really tricky. The best way to compute these guys is to
have a really good knowledge of hex, or to use a calculator that
can readily convert between hex and decimal. I use an HP 28S
myself.
Now, this is tough. Take the four bytes, let's use an
example from one of my files. Calandra (not shown above in the
sample text) has an experience value here of C4 1E 05 00. Now,
the right most byte is the highest byte. To figure out the
decimal value, feed in the hex value byte by byte, starting with
the right. So, you would punch 00 05 1E C4 into your hex
calculator (in hex mode, silly) and convert to decimal. This
will result in Calandra having an experience point value of
335,556 experience points, putting her at level 9. Now, if you
want to have Calandra go up a level, the best thing to do is not
to give her enough points to make her level 10. Rather, you want
to put her at just ONE point below the next level, that way when
she kills a monster next (or anyone in the party does), she will
gain enough to go up automatically. That way her hit points are
updated, as well as the levels, in the save file. Otherwise, you
will confuse the program, and while you may have enough
experience, you will probably not get a level increase, because
the actual point boundary was never CROSSED, but avoided
entirely. I really hope I am making sense.
Now, to make Calandra 10th level, let's bump her up to one
point below 10th level boundaries, which are 500,000 for a
fighter. So, punch in 499,999 in decimal to your calculator, and
convert to hex, which should give you the value of 00 07 A1 1F.
You would then go to the hex codes (on the left side, of course)
and punch them in backwards: 1F A1 07 00. Note that you are not
punching in the ENTIRE number in reverse, just the bytes. So if
you punched in F1 1A 70 00, you would completly screw your
character up. In fact, you might find the experience point value
drastically different than what you intended. Just thought you
should know. That is what makes it so tricky. Note that the
fourth digit will probably be unused, unless you have a very high
experience level. This will most likely be used in Eye of the
Beholder III, when you will probably be level 15 or higher. Or,
because the numbers are exponential, you might not see it until
Eye IV or so (assuming they make an Eye III and IV. They
BETTER).
For those of you who do not have hex calculators, there is a
way to figure out what you want, but it's pretty tricky. Each
hex digit in a number, like a decimal number, is nothing more
than a digit from 0 to 10 (including A through F in hex)
multiplied by a power. For example, using decimal, 1 is actually
1 times 10 to the power of 0 (which is 1). 10 is actually 1
times 10 to the power of 1 (10) added to 0 times 10 to the power
of 0 (1), resulting in 10. Therefore, 15 would be 1 times 10 to
the power of 1, plus 5 times 10 to the power of 0, resulting in
10 + 5, or 15. Simple, right? One hopes so (not only will I
tell you how to cheat at your game, I will have given an
introductory course in hex math. Wild).
Now the principle is the same with hex, only you use sixteen
as the base, rather than 10. So, 01 is 1 times sixteen (or 10 in
hex) to the power of 0 (still 1), 10 is 1 times sixteen to the
power of 1 (sixteen) plus 0 times sixteen to the power of 0,
resulting in sixteen (which is hex 10). Likewise, 01 00 is two-
hundred fifty-six, 10 00 is four thousand, ninety-six, 01 00 00
is sixty-five thousand, five hundred thirty-six (I am spelling
them out so you won't get the humber systems confused), and so
on. You will notice that these numbers tend to resemble computer
values in disk or memory size. That should make sense.
At any rate, to figure out the value of Calandra's
experience, we would take the number shown in the file, C4 1E 05
00, write it backwards (sort of), 00 05 1E C4, and then convert
it. 00 can be discarded, as can the first 0 in the next byte.
That leaves us with 5 times 16 to the power of 4 (65536d), plus 1
times 16 to the power of 3 (4096d), plus E (14d) times 16 to the
power of 2 (256d), plus C (12d) times 16 to the power of 1 (16d),
plus 4, which should result in what we had up above, 335,556. It
is a hell of a lot more tedious, and converting back is an even
bigger pain, but if ya have to....
That covers the experience part. The rest iis shaky, but I
do know that there is a great deal of space between the
abilities, and the physical posessions on a character. I can
only assume that each item has it's own two-digit hex code, and
the location in the file pertains to the location on the
character's person. Now obviously there are some places that
will not accept certain items (putting boots on as armor, and the
like), so if you mess with those, you could cause certain items
to disappear. At any rate, I plan to experiment with that next,
and see what happens. What I will need to to is compile a list
of items and their respective hex codes, and then list the places
in order on the file. Most likely they progress logically in the
file, much the same as the characters do. It's easier on the
programmers to promote order, especially when it comes to
debugging.
And finally, there must be a location section, that states
where the characters are in the dungeon, what level, what square,
what doors are open, what monsters have been killed, do they have
the mark of darkmoon, do they have the pieces of talon, have they
trapped the medusas, what doors are open, etc etc etc. Because
this stuff is all incomplete, I plan to do more research at a
later date. For now, I will be content with what I have here,
and hopefully you all will too.
Any questions, comments, money (just kidding), can be sent
to mloux@rm42.ucc.uconn.edu or INFOSY11@UCONNVM (bitnet). Or you
can write me at:
Michael J. Loux, Jr.
46 Tracy Rd.
Canterbury, CT, 06331
phone number (203)-546-6395.
Work phone (203)-486-1406. You'll probably get voice mail.
That's it! I hope this helps you all out! I enjoyed
delving into the guts of this game, and will probably do so for
other games in the future, now that I know how...
-Mike
P.S. I always enjoy feedback, so email me, even if you didn't
find this useful! I'm always fond of correspondence or
conversation, or just plain hint-swapping. Like I said before, I
DO have a ton of hints, and am considering writing a hint file
for EOB II. If I get enough requests for it, I will most likely
do so.
Take care, and stay cool.