|
 |
Descent Developer Network Descent 1/2
*.SGx specs
|
|
|
This document describes the SaveGame format of all versions of Descent 1 and Descent 2.
It was written by Heiko Herrmann.
eMail author: Heiko Herrmann
(*1) Table of Selected Primary/Secondary Weapons
(*2) Table of Laser Levels
(*3) Table of Difficulty
The specs on this page are to be interpreted as this:
- BYTE 1234 means a signed or unsigned one-byte integer at file offset 1234 in the SaveGame file.
- SHORT 1234 means a signed or unsigned two-byte integer at file offset 1234 in the SaveGame file.
- INT 1234 means a signed or unsigned four-byte integer at file offset 1234 in the SaveGame file.
- FLAG 1234, Bit 3 means Bit 3 of the byte at file offset 1234 reflects the state (1=True, 0=False).
- Secondary Weapons need both the flag to be true (=1) and the number of actual missiles set in the SHORT.
- - means this item is not available in the version of Descent (e.g. Descent 1 knows no Phoenix Cannon and Descent 2 Playable Demo knows no Fusion Cannon).
- - (???) means at this time unknown information. If you have the time to find it out, please write us (eMail above).
Here are the actual specs. First some version notes:
- Descent 1 Shareware V1.0-V1.2 use an own format, which is very limited. See below for more information.
- Descent 1 Destination Saturn OEM uses the Descent 1 Full Version format.
- Descent 2 Destination Quartzon OEM uses the Descent 2 Full Version format.
In all Descent 1/2 versions except Descent 1 Shareware V1.0-V1.2 the SaveGame information is saved in *.SGx (x is the slot number from 0-9) files,
which are named like the player the SaveGame is from. E.g. the player HH-SOFT.PLR has HH-SOFT.SG0, HH-SOFT.SG1, ...
Descent 1 Shareware V1.0-V1.2 saves the information at a different place, see below for more information.
Here is the actual offset list for all items:
| Descent Versions -> |
D1
Shareware V1.0-V1.2 |
D1
Shareware V1.4 |
D1
Full |
D2
Demo |
D2
Full |
| General: |
| Internal savegame name |
STRING
O+0 |
STRING
9 |
STRING
8 |
STRING 8 |
STRING 8 |
| Mission filename |
- |
- |
STRING
5032 |
STRING 5800 |
STRING 5800 |
| Current
level: |
BYTE
O+166 |
BYTE
5032 |
BYTE
5041 |
BYTE
5041 |
BYTE 5809 |
| |
| Primary
Weapons: |
| Selected Primary
Weapon:
(*1) |
BYTE
O+146 |
BYTE
5086 |
BYTE
5169 |
BYTE 5963 |
BYTE 5963 |
| Laser Cannon |
FLAG
O+72, Bit 0 |
FLAG
5090, Bit 0 |
FLAG
5099, Bit 0 |
FLAG
5867, Bit 0 |
FLAG
5867, Bit 0 |
| Laser Level (*2) |
BYTE O+68 |
BYTE 5086 |
BYTE 5095 |
BYTE 5863 |
BYTE 5863 |
| Quad
Laser |
FLAG
O+55, Bit 1 |
FLAG
5073, Bit 2 |
FLAG
5082, Bit 2 |
FLAG 5850, Bit 2 |
FLAG 5850, Bit 2 |
| Vulcan Cannon |
FLAG
O+72, Bit 1 |
FLAG
5090, Bit 1 |
FLAG
5099, Bit 1 |
FLAG 5867, Bit 1 |
FLAG 5867, Bit 1 |
| Gauss Cannon |
- |
- |
- |
FLAG 5867, Bit 6 |
FLAG 5867, Bit 6 |
| Vulcan/Gauss Ammo: |
SHORT
O+76 |
SHORT
5094 |
SHORT
5103 |
SHORT 5873 |
SHORT 5873 |
| Spreadfire
Cannon: |
FLAG
O+72, Bit 2 |
FLAG
5090, Bit 2 |
FLAG
5099, Bit 2 |
FLAG 5867, Bit 2 |
FLAG 5867, Bit 2 |
| Helix
Cannon: |
- |
- |
- |
FLAG 5867, Bit 7 |
FLAG 5867, Bit 7 |
| Plasma
Cannon: |
- |
- |
FLAG
5099, Bit 3 |
FLAG 5867, Bit 3 |
FLAG 5867, Bit 3 |
| Phoenix
Cannon: |
- |
- |
- |
- |
FLAG 5868, Bit 0 |
| Fusion
Cannon: |
- |
- |
FLAG
5099, Bit 4 |
- |
FLAG 5867, Bit 4 |
| Omega
Cannon: |
- |
- |
- |
- |
FLAG 5868, Bit 1 |
| |
| Secondary
Weapons: |
| Selected Secondary
Weapon:
(*1) |
BYTE
O+150 |
BYTE
5161 |
BYTE
5170 |
BYTE 5964 |
BYTE
5964 |
| Concussion Missiles: |
FLAG
O+73, Bit 0
SHORT O+84 |
FLAG
5091, Bit 0
SHORT 5102 |
FLAG
5100, Bit 0
SHORT 5111 |
FLAG 5869, Bit
0
SHORT
5891 |
FLAG
5869, Bit 0
SHORT 5891 |
| Flash
Missiles: |
- |
- |
- |
FLAG 5869, Bit
5
SHORT
5901 |
FLAG
5869, Bit 5
SHORT 5901 |
| Homing Missiles |
FLAG
O+73, Bit 1
SHORT O+86 |
FLAG
5091, Bit 1
SHORT 5104 |
FLAG
5100, Bit 1
SHORT 5113 |
FLAG 5869, Bit
1
SHORT
5893 |
FLAG
5869, Bit 1
SHORT 5893 |
| Guided Missiles |
- |
- |
- |
FLAG 5869, Bit
6
SHORT
5903 |
FLAG
5869, Bit 6
SHORT 5903 |
| Proximity
Bombs: |
FLAG
O+73, Bit 2
SHORT O+88 |
FLAG
5091, Bit 2
SHORT 5106 |
FLAG
5100, Bit 2
SHORT 5115 |
FLAG 5869, Bit
2
SHORT
5895 |
FLAG
5869, Bit 2
SHORT 5895 |
| Smart Mines: |
- |
- |
- |
FLAG 5869, Bit
7
SHORT
5905 |
FLAG
5869, Bit 7
SHORT 5905 |
| Smart
Missiles: |
- |
- |
FLAG
5100, Bit 3
SHORT 5117 |
FLAG 5869, Bit
3
SHORT
5897 |
FLAG
5869, Bit 3
SHORT 5897 |
| Mercury
Missiles: |
- |
- |
- |
- |
FLAG
5870, Bit 0
SHORT 5907 |
| Mega Missiles |
- |
- |
FLAG
5100, Bit 4
SHORT 5119 |
- |
FLAG
5869, Bit 4
SHORT 5899 |
| Earthshaker
Missiles: |
- |
- |
- |
- |
FLAG
5870, Bit 1
SHORT 5909 |
| |
| Accessoires: |
| Blue Key |
- |
FLAG
5072, Bit 1 |
FLAG
5081, Bit 1 |
FLAG 5849, Bit 1 |
FLAG 5849, Bit 1 |
| Yellow Key |
- |
FLAG
5072, Bit 3 |
FLAG
5081, Bit 3 |
FLAG 5849, Bit 3 |
FLAG 5849, Bit 3 |
| Red Key |
- |
FLAG
5072, Bit 2 |
FLAG
5081, Bit 2 |
FLAG 5849, Bit 2 |
FLAG 5849, Bit 2 |
| Full Map |
- |
- |
- |
FLAG 5849, Bit 6 |
FLAG 5849, Bit 6 |
| Ammo Rack |
- |
- |
- |
FLAG 5849, Bit 7 |
FLAG 5849, Bit 7 |
| E.-S-Converter |
- |
- |
- |
FLAG 5850, Bit 0 |
FLAG 5850, Bit 0 |
| Afterburner |
- |
- |
- |
FLAG 5850, Bit 4 |
FLAG 5850, Bit 4 |
| Headlight |
- |
- |
- |
FLAG 5850, Bit 5 |
FLAG 5850, Bit 5 |
| |
| Game Status: |
| Score: |
INT
O+98 |
-
(???) |
-
(???) |
INT 5917 |
INT 5917 |
| Energy: |
SHORT
O+60 |
SHORT
5078 |
SHORT
5087 |
SHORT 5855 |
SHORT 5855 |
| Shield: |
SHORT
O+64 |
SHORT
5082 |
SHORT
5091 |
SHORT 5859 |
SHORT 5859 |
| Lives: |
BYTE
O+66 |
BYTE
5084 |
BYTE
5093 |
BYTE 5861 |
BYTE 5861 |
| Invulnerability: |
- |
FLAG
5072, Bit 0 |
FLAG
5081, Bit 0 |
FLAG 5849, Bit 0 |
FLAG 5849, Bit 0 |
| Cloaked: |
- |
FLAG
5073, Bit 3 |
FLAG
5082, Bit 3 |
FLAG 5850, Bit 3 |
FLAG 5850, Bit 3 |
| Headlight is on: |
- |
- |
- |
FLAG 5850, Bit 5 |
FLAG 5850, Bit 5 |
| Difficulty: (*3) |
BYTE
O+142 |
BYTE
5162 |
BYTE
5171 |
BYTE 5695 |
BYTE 5695 |
| Cheater: |
- |
- |
- |
FLAG 5969, Bit 0 |
FLAG 5969, Bit 0 |
| |
| Time
information (all in seconds): |
| Invulnerability
Ends At: |
- |
-
(???) |
INT
5933 |
INT 5933 |
INT 5933 |
| Cloaking Ends At: |
- |
-
(???) |
INT
5929 |
INT 5929 |
INT 5929 |
| Total Time: |
- |
-
(???) |
INT
5817 |
INT 5817 |
INT 5817 |
| Time in Level: |
- |
-
(???) |
INT
5921 |
INT 5921 |
INT 5921 |
| Time in
Game: |
- |
-
(???) |
INT
5925 |
INT 5925 |
INT 5925 |
|
Descent 1 Shareware V1.0-V1.2
|
The first Descent 1 Shareware versions' saved games are very limited in functionality.
You can only save after a level is finished. This makes of course the actual SaveGame data quite small,
because no level status (which robots are dead, where the other robots are, which items have been taken, etc.)
needs to be saved. The player however can for example not save right before the end boss of Level 7
and so always need to play the complete level 7.
You might ask yourself, why Parallax did something "stupid" like this. I *think*
it was because the level save routine was just not finished in time and Parallax wanted
to release the first Shareware now. D1 Full Version then was the first version
to support in-game-saving, and they even released a Shareware Version (V1.4) which
finally added the functionality for Shareware users.
Anywhere, lets discuss the SaveGame format on these early Descent versions, to be complete:
Unlike any later version the data was not saved in extra *.SGx files, but all
in the PLR file themselves. So the PLR looks like this:
int signature; //"RLPD"
int version; //version XX
for (i=0; i<<10; i++)
{
char savegamedata[174];
}
|
So the offset of SaveGame slot 0 is 8+0*174=8, slot 1's offset is 8+1*174=182,
slot 6 starts at 8+6*174=1052. With this formula the value O in the left column specs above can be calculated.
|
|