~Descent

Unofficial *.PLR file specs for Descent, v0.1 from Darren Lo, via 
EMail/Internet.

Well, after a little poking around in the *.PLR files, I discovered 
how to get all sorts of cool stuff... there seems to be interest, 
so I'm posting cursory offset tables. There are a couple things that 
don't seem to do anything, plus others that I haven't bothered to 
figure out yet. If you have any additions feel free to send them to 
darrenlo@umich.edu.

Each saved game begins with the game name (an ASCIIZ string). This 
is an easy way to tell which game you're messing around with. All 
offsets are in hex. All ints and long ints in the file are stored 
"back-words" in true x86 fashion.  (i.e., least significant byte 
first, most significant byte last).

You may want to back up your pilot file before mucking about in it 
with your hex editor, because I make no claims as to the accuracy of 
my typing, counting, record-keeping, or hex arithmetic. Please let 
me know if I have messed something up, or if I am just plain wrong.

`Offset:         Offset in save:      Description:
`------          ---------------      -----------
`0-13            X                    Header info?
`14-2C           0-18                 Saved game name
`2E-38           1A-24                Pilot name saved under
`4B              37                   Quad lasers if 4, no quads 
                                      for other values??
`50-51           3C-3D                Energy level when last level 
                                      was completed. This appears to 
                                      be a signed int. If it is less 
                                      than 100, you get 100 energy..
                                      max energy value is for FF 7F 
                                      in these two bytes.
`52-53           3E-3F                ???
`54-55           40-41                Shield levels. see energy notes
`56              42                   Number of lives, besides this 
                                      one (so 06 gives you five lives 
                                      spare) 
`57              43                   Last level completed???
`58              44                   Laser descriptor byte... see 
                                      table below 
`59              45                   Level at which game was started
`5C              48                   Weapon inventory bit field:
                                      00000100 = spreadfire,
                                      00000010 = Vulcan,
                                      00000001 = lasers
`5D              49                   Missile inventory bit field:
                                      00000100 = mines,
                                      00000010 = homing missiles,
                                      00000001 = concussion
`60-61           4C-4D                Vulcan ammo packs (one pack is
                                      approx. = to 25.501 rounds). I 
                                      think this is signed, so don't
                                      go overboard folks ;)
`68-69           54-55                # concussion missiles unsigned
`6A-6B           56-57                # homing missiles (unsigned)
`6C-6D           58-59                # mines (unsigned)


~smart missiles and mega missiles most likely will follow


`72-75           5E-61                Possibly score at beginning of 
                                      last level? Can anybody help ?
`76-79           62-65                Current score (signed I think)
`7A-81           66-6D                No clue...


~long stretch of ignorance... time of play must be stored somewhere


`A2              8E                   difficulty level (0=trainee,
                                      1=rookie, etc.)
`A6              92                   selected weapon (0=laser, 
                                      1=Vulcan, 2=spreadfire) Odd 
                                      things will happen if you put
                                      higher numbers here
`AA              96                   selected missile (0=concussion,
                                      1=homing, 2=mines)
`AE              9A                   Display mode
                                      0: Cockpit mode
                                      1: Weird.bitmap-type background
                                         behind a squashed screen... 
                                         looks as if video RAM isn't 
                                         cleared up or something...
                                      2: Status bar mode
                                      3: Full screen mode
                                      4: Cinematic, shaped like a 
                                         movie screen... like the 
                                         screen you get when you blow 
                                         up 
                                      5: "Weird" on bottom half, 
                                          cinematic on top... reverts 
                                          to cinematic after death
`B2-B3           9E-9F                # of pixels to display in 
                                      horizontal direction. In 
                                      conjunction with the vertical 
                                      pixel settings, you can play
                                      with some pretty weird screen 
                                      sizes. I like 320 X 23 myself 
`B6              A2                   # of pixels to display in 
                                      vertical direction. This may be 
                                      only one byte, but I'm not sure.
                                      the VR modes may require two 
                                      bytes... ???
`BA              A6                   Current level # (starts from 1)

`C2              00                   Saved game 2

`170             00                   Saved game 3


~many saved games follow...


`6E0             XX                   Taunt macro 1. A 19-byte 
                                      ASCIIZ string
`6F9             XX                   Taunt macro 2
`712             XX                   Taunt macro 3
`72B             XX                   Taunt macro 4

and some junk toward the end, probably representing controller 
configurations?


Laser Descriptor Byte table:

This byte, at offset 44 within each saved game, is IMHO the funnest 
to play with. It appears that Descent references all weapons 
internally, both of the player and the baddies, using the same 
numbering system. So after level 4 lasers, you start getting into 
some neat weapons. :) What's more, slapping on a quad will make you 
more powerful than almost anything! Each weapon, regardless of type, 
runs off your energy. It takes four shots to deplete one energy unit, 
or two shots if you have quads.

CAUTION: If you're running about with level 17 lasers (my personal 
favorite) and hit a laser powerup, your lasers will revert to 
level 4. But when you die, 16 laser powerups will still go floating 
into the room.

~Descriptor Byte Value:              Description:
~---------------------               -----------
`00                                  Level 1 lasers
`01                                  Level 2
`02                                  Level 3
`03                                  Level 4
`04                                  Big, slow, weak, blue plasma 
                                     balls... does anybody recognize 
                                     these?
`05                                  Yellow drone's fireballs (WEAK)
`06                                  Reactor's red fireballs
`07                                  Apparently nothing... I speculate
                                     that this might be the weapon of
                                     the green lifter drones... but I 
                                     don't know how to use it 
`08                                  Concussion missiles!
`09                                  Flares
`0A                                  Blue drone's lasers
`0B                                  Vulcan cannon (fires slower than 
                                     normal Vulcan)
`0C                                  Spreadfire cannon balls
`0D                                  Nothing again...
`0E                                  And again...
`0F                                  Homing missiles. Put quads on 
                                     these babies!
`10                                  Mines... Do NOT put quads on 
                                     these! %-{
`11                                  Level 7 boss's missiles... these 
                                     hit for HUGE damage and then 
                                     fragment into tons of little 
                                     green blobs that home onto 
                                     enemies.  The blobs are powerful 
                                     but slow.
`12                                  Nothing...
`13                                  Just the green blobs from the 
                                     boss missiles 
`14                                  Spreadfire cannon balls (possibly 
                                     faster or stronger than for 0C ?)
`15                                  Slow homing missiles
`16                                  Slow (?) concussion missiles
`17                                  Spreadfire cannon balls AGAIN
`18                                  Wimpy, slow red lasers
`19                                  Slow green lasers
`1A                                  Nothing AGAIN...
`1B                                  Yellow drone's fireballs... seem
                                     more powerful, and maybe faster?
`1C                                  Wimpy, FAST red lasers
`1D                                  Same lasers... possibly stronger?

`1E and above seem to have the same red lasers... I haven't checked 
    them all of course.  Increasing the difficulty of the game will 
    make some weapons faster or stronger.

Happy hacking!
