Back in the days when Death Rally was new I played the shareware version a lot. Eventually, after finishing the game with a Sentinel, I wanted more and started exploring the game files using an HEX-editor but didn't really succeed. Now, more than 10 years after, I'm still interested in modifying the game files and after seeing Doomfrost's savegame mod I know it can be done.

What am I trying to accomplish?


Trying to understand how the savegames are build up and structured to modify game content.

Why is this difficult?


The savegames don't use plain text and every time you save, the encoding of the savegame will be different.

How did I start?


I run Death Rally using DOSBox and started a new game, didn't sign up for a race and saved the game on the first free savegame slot. This slot will generate file DR.SG0. I downloaded 'Hex Fiend' (HEX-editor for Mac OS, but there are many others out there) and opened the DR.SG0 savegame. Then I started editting the savegame in 8 byte blocks. This way I could notice differences in the game (including lock-ups when loading the savegame) and find out which line in the savegame is used for certain things like playernames and rankings.

After fiddling around with the values I discovered the location for Jane Honda's nickname. Because the savegame is encoded I can't just write a new name but change the hexadecimal value to something else and see what happens. Starting from this I changed every single hexadecimal value to see what would be changed. Due to this I reloaded the savegame a million times, looked at the score, players and their behavior during a game after changing one value. In case I noticed a change I tried to narrow down the change to a correct value which Death Rally understands and wrote it down.

What did I gain?


A table with locations (in bytes), hexadecimal values, binary values, area of effect and the effect. Unfortunately I'm not sure in which way the savegame is encoded but a few interesting bits and bytes are narrowed down to something useful. This includes the 'blocks' (each is 108 bytes) for each player within the savegame, some color variations, nick names and car types. This is the table for my DR.SG0 file:
Adr. HexAdr. ByteOrg. hexNew hexOrg. dec.New dec.PlayerAoEDifference
C019233?51?2Icon?
C119323?35?2Icon?
C219465?101?2Icon?
C3195B7A71831672Score87 to 215 points
C419677?119?2Score?
C519744?68?2Score?
C619899?153?2Score?
C8200EEFE2382542Ranking2 to 16386
C920199?153?2Ranking?
CA202DD?221?2Ranking?
EB2352C3444523NameJane Honda to Zane Honda
EC236181924253NameJane Honda to Jene Honda
ED237CFD02072083NameJane Honda to Jave Honda
EB23868691041053NameJane Honda to Janu Honda
EC23993941471483NameJane Honda to Jane@Honda
ED240ABAC1711723NameJane Honda to Jane Ionda
EE241E1E22252263NameJane Honda to Jane Hqnda
EF242F4F52442453NameJane Honda to Jane Horda
F02435B5C91923NameJane Honda to Jane Honla
F12448E8F1421433NameJane Honda to Jane Hondq
118280B0A81761683ColorGrey (Greg Peck color)
118280B0A91761693ColorBlack (Invalid?)
157343444368674NameNasty Nick to Lasty Nick
173371D0C02001924CarWraith to Shrieker (Nasty Nick)
1DF479321A50265CarWraith to Dervish (Motor Mary)
24B587937B1471236CarWraith to Dervish (Mad Mac)
2B7702F4DC2442207CarWraith to Dervish (Matt Miler)
3238034E3678548CarWraith to Vagabond (Clint West)
38F911AFB71751839CarShrieker to Wraith (Lee Vice)
4D31235C3CB19520312CarSentinel to Shrieker (Iron John)
5AB1451868E13514214CarSentinel to Shrieker (Mori Sato)
68316673941576516CarDervish to Sentinel (Diesel Joe)
6EF17759A9215414617CarDervish to Vagabond (Liz Arden)
75B1883F3FB24325118CarVagabond to Dervish (Bogus Bill)
7C71986555D859319CarVagabond to Dervish (Farmer Ted)
7D82008BCB418818019ColorMint darkblue
7D82008BCC418819619ColorDark green
82A20904F4E797820UpgradeEngine (error, car can't move)
82A20904F6F7911120UpgradeNo steering, one engine == strafing
82B2091C9CA20120220UpgradeTires -1?
82B2091C9CC20120420UpgradeTires full (buggy)
82E2094817A12912220UpgradeTires (error, but works)
82F20954959738920UpgradeArmor (Sold out, error, works)
83220985C4C927620UpgradeArmor (0%, works, perhaps weaker)
8332099B6BE18219020CarVagabond to Dervish (Maxi Cosi; player)
843211540816412920ColorYellow
84421167F7912712120ColorDark green
84421167F6A12710620ColorBlue (Bogus Bill grey selectable)
84721198C9C14015620MoneyFrom 495 to 271
85021282C?44?20Icon?
85B2139CFDF20722320ScoreFrom 0 to 128
86021436B6C10710820RankingFrom 20 to 22
86421481718232420Races wonFrom 0 to 256
8672151697010511220Total racesFrom 1 to 57
8702160E3E222722620Total incomeFrom 0 to 65280
8732163C2C319419520MarketMines active and bought
87B2171F4F524424520MarketTurbo boost active, but not bought


Image
Racing against Mori Sato in a Shrieker and Diesel Joe in a Sentinel.

Do it yourself


Remember: each time you save the game the values will be different. This means that my table can't be applied onto your savegame. If you want my original savegame you can download it here: DR.SG0. You can download my slightly modified savegame in chapter 'Done it myself'. Also note that HEX-editors can vary a bit so get to know your version of your HEX-editor.

1. Download Hex Fiend (Mac OS X) or XVI32 (Windows);
2. Create a back-up of your savegame;
3. Open the savegame with your HEX-editor;
4. Go to position/byte 1986 or 0x7C7 (for player 19's car) and read the hexadecimal value (i.e. 55)(click for example);
5. Recalculate the hexadecimal value to binary (=85) and add up 8 to go from Vagabond to Dervish;
6. Revert the binary value (85+8=93) back to hexadecimal (=5D);
7. Replace the original hexadecimal value with the new one and save your file;
8. Make sure that the new file is in the root of the Death Rally directory (where is originally was);
9. Load up your game, start a race and hope that player 19 will participate.

Using my DR.SG0 file along with the example above will change Farmer Ted's Vagabond to a Dervish. As you can see there is a pattern in hexadecimal values and if you're familiar with it you won't have to use the hexidecimal/binary converter. Of course you can always try to "just fill something in and see what happens" but this is most likely to fail. Especially with the cars because these values have to be exact (with color, money, nicknames you have more 'freedom').

The trick is to find what everything means. I noticed that the savegame works in blocks of 108 bytes. See the table for example; 371 and 479 change cars for respectively player 4 and 5. This means that 479 + 108 (= 587) will change the car of player 6. Unfortunately this system is not 100% correct as there is just 103 between player 18 and 19.

Remember the following facts when changing values:
- Car values are exact. Increase the binary value by 8 to get a faster car, decrease by 8 for a slower car (Starting from Vagabond and up to Deliverator).
- Be careful when defining to much cars of the same type. You need enough cars to fill up one type of race (i.e. Easy, Normal and Hard Races) otherwise Death Rally will crash. This means it's safe to give Farmer Ted a Dervish (he can participate in Easy and Normal race) but it's dangerous to give all the Deliverator and Wraith racers a Dervish because there aren't enough players left over for the Hard Race. One more thing: you need more than 4 cars that can race with the Hard Race because sometimes a player is not selected for participation. It's safer to have at least 6 players that can participate in each type of race.
- Money and color is defined by up to 3 locations in the file. For instance byte 192, 193 and 194 are used to define the colors for player 2 and you can de/increase 192 by some value but can't do so with 193 and 194. You'll need a different one.
- There are 'weird' values like refund-value of your car. I haven't located them yet and are only interesting to fill out the gaps in the savegame. Especially for AI players because they don't care about money.

Done it myself


In case you don't want to edit yourself but just want to see a slight different game, then see this DR.SG1 (based on my DR.SG0) for a modified game. It has:
- Different player colors selectable;
- Farmer Ted's car is darker;
- Bogus Bill upgraded to Dervish;
- Diesel Joe upgraded to Sentinel;
- Iron John upgraded to Shrieker;
- Mad Mac upgraded to Deliverator.

Some images


Image Image
Modified players, ain't it nice to see a silver Dervish?

Post new reply as Anonymous user
Want your own account? Create one, it's free!
Insert reply
Your validation code is: 1337