[net.micro.mac] DoD SPOILER!!!

ivancich@utah-cs.UUCP (Eric Ivancich) (11/15/85)

Because of the many requests, I'm posting this information on the format
of the Dungeon of Doom character data file.  This will allow you to
alter a character with a disk editing program such as MacTools or
Fedit.  I've done my best to make this easy to understand, but there may
be hazy areas.  Also, I do not guarantee any of this information.  I
suggest you back up your disk prior to any modifications.  For the
record, I congratulate the author of Dungeon of Doom, he did a fantastic
job.  I hope he doesn't mind this information, for some of us are just
plain lazy.  Please mail me any additions or corrections, and I'll try
to maintain this informaiton.  Have fun!

UUCP: {ihnp4, seismo, hplabs, decvax, arizona}!utah-cs!ivancich
ARPA: ivancich@utah-cs




Dungeon of Doom stores it's character data in a hidden file named
'Character Data'.  I will describe as much of the format of this file as
I've figured out. First of all, let's make sure we use the same
notation.  Any byte in a file can be described by two numbers, the block
(relative to the beginning of the file), and the byte within the block.
To notate this, I will separate the block number and byte number by a
colon, and these numbers (as will all numbers) will be in hexedecimal
notation (i.e. 02:1A3 is block 2, byte 419d). Now, let's get started.

This file is always of length 02:095.

The name of the character is stored starting as 00:008 in ascii,
terminated by a 00 (DoD was written in C).  I'm not sure what the
maximum length is.

The strength, intelligence, wisdom, dexterity, constitution, and
charisma are stored respectively in 6 consecutive bytes starting at
00:108.  These bytes may have values from 00 to 19 (25d).

The maximum hit points for the character is stored in 00:13F.  And the
hitpoints at the time of save are stored in 00:13D.  These seem to be
unsigned bytes, but because of the gap, they may be stored as words.

Now for the inventory.  This is difficult because some possesions
(potions, scrolls, wands, and rings) can give many descriptions:
    copper wand          - visual description
    wand of digging?     - guessed description (questionable)
    wand of fear         - actual description

Also, possesions can have a value:
    wand of digging? +5? - questionable object and value
    wand of fear +3      - nothing questionable

The question marks follow the parts of a description that are
questionable. You learn the actual description by observing its effects
or by using an Identify scroll.  Also, you can forget all actual
descriptions of objects by reading a scroll of Amnesia.  All items may
have a value, but I'm not sure if they make sense for some objects (i.e.
food, Orb, ...).  There is also the attribute of enchantment or
cursedness(?), which I haven't yet figured out yet, but I can probably
point you in the right direction.

Let's discuss the inventory's format.  Every item takes 8 bytes.  The
first item is stored from 00:146 to 00:14D, and the second item is
stored from 00:14E to 00:155, and so on.  I will refer to each of these
segments as records.  I'm not sure what the maximum number of allowed
items is, disregarding the constraint of weight.  The count of the
character's items is stored at 02:093.  Anything beyond that number of
records is ignored.  Every possible object is associated with a number
(see Table 1).  This number is stored in the 1st byte of the record.
The second byte holds the actual value of the object, where the fourth
byte holds the 'guessed' value of the object. While viewing the
inventory from the DoD, the computer will show the 'guessed' value
unless it is 9D (-99d) in which case it will show the actual value.  I'm
not sure of the meaning of the remaining bytes, but, I often see 01's in
the fifth through the eighth bytes, which leads me to think that they
are boolean values (enchantment or cursedness(?) possibly).  See Table 2
for a synopsis.

There is still another aspect to the objects.  For instance, once you
accurately identify an object, you will accurately identify all similar
objects, unless you read an Amnesia scroll.  This information is not
stored with your inventory, rather, it is stored in a separate table.
During any one game, visual descriptions will always correspond to an
actual description (i.e. a blue potion will always be a Healing potion),
but this changes from game to game (character to character).  The table
that has this information starts at 01:1A5, and each entry is three
bytes long.  The first entry corresponds to object 00 (Confusion
potion), the second entry to object 01 (Extra-Healing potion), and so
on.  Once again, I will refer to each entry as a record.  The first byte
in the record seems to be a boolean.  If it is true, all objects of
this type will be described by either their actual or 'guessed'
description. On the other hand, if this value is false, all objects of
that type will be described by their visual description.  The second
byte is the number corresponding to the guessed description or FF to
indicate the actual description (see Table 1).  Finally, the third byte
is the visual description of the object (see three letter codes in Table
1).  "Huhh?", you say?  See Table 3 for a synopsis.  How about some
examples:
    i   in the 46th record, the bytes are 00 FF 2F
          therefore, all Hunger rings will be described as "diamond ring"
    ii  in the 46th record, the bytes are 01 2A 2F
          therefore, all Hunger rings will be described as "Resist Fire ring?"
    iii in the 46th record, the bytes are 01 FF 2F
          therefore, all Hunger rings will be described as "Hunger ring"

Well, that's about all I've figured out.  There are some bytes that
remain a mystery to me.  If you have anything to add or correct, please
send me mail.

------------------------------------------------------------------------------
Table 1

Potions                   Scrolls                   Wands
00 Confusion         blu  11 Gain Level        kal  1F Lightning          cop
01 Extra-Healing     red  12 Identify          nau  20 Fire               sil
02 Resist Fire       whi  13 Enchant Armor     bon  21 Ice                iro
03 Healing           cle  14 Magic Mapping     pap  22 Death              ivo
04 Invisibility      swi  15 Teleport          vel  23 Striking           woo
05 Levitation        oil  16 Enchant Weapon    bal  24 Fear               bra
06 Poison            dbl  17 Protection        sha  25 Digging            tin
07 Speed             gol  18 Wishing           owe  26 Sleep              ebo
08 Muscle            glo  19 Intelligence      shl  27 Polymorph          bro
09 Resist Cold       gre  1A Wisdom            bin  28 Teleport           bam
0A Dexterity         sil  1B Remove Curse      mor  29 Invisibility       map
0B Constitution      mag  1C Amnesia           oha
0C Charisma          hot  1D Joke              anu
0D Blindness         cya  1E Words On A Scroll bog
0E Worthless         bro
0F Strength          ora
10 Life              yel

Rings                     Armor                     Weapons
2A Resist Fire       gol  31 Elven Cloak            39 Long Sword
2B Resist Cold       rub  32 Plate                  3A Two-Handed Sword
2C Regeneration      eme  33 Banded                 3B 'Death Blade'
2D Slowness          jad  34 Chain                  3C Mace
2E Hunger            pea  35 Leather                3D Dagger
2F X-ray             dia  36 Shield                 3E Leather Whip
30 Monster           opa  37 Gloves                 3F Sling
                          38 Helmet                 40 Small Rock
                                                    41 Large Rock
Food                      Treasures                 42 512K Macintosh
45 Food Ration (bad)      4A Diamond                43 Spear
46 Food Ration (good)     4B Ruby                   44 Dart
47 Fruit                  4C Emerald
48 Spider                 4D Plastic Ball
49 Lizard                 4E The Orb of Carnos

------------------------------------------------------------------------------
Table 2

========  ========  ========  ========  ========  ========  ========  ======== 
Object #  Actl Val  ????????  Gesd Val  ????????  ????????  ????????  ????????

------------------------------------------------------------------------------
Table 3

================  ================  ================
actul or dscrptv  actual or guess     descriptive
 01        00       FF       xx            xx

------------------------------------------------------------------------------
Table 4

Terms I invented for ease in explaining:
    item          - an object in the character's inventory (see object)
    item record   - 8 consecutive bytes used to describe an item
    object        - any of 4F (79d) tangible objects that the character can    
                    manipulate
    object record - 3 consecutive bytes used to describe an object

------------------------------------------------------------------------------



-- 

UUCP: {ihnp4, seismo, hplabs, decvax, arizona}!utah-cs!ivancich
ARPA: ivancich@utah-cs