My primary reason for a record dump was to view the high scores of games,
without having to start the game itself. This example uses the hiscores of
Slam Tilt, a Windows pinball game. It has four tables with five scores
per table. Here are my scores for the first table ("Mean Machines"), displayed
as they are in the game:
1st JMH 7,909,991,780
2nd JMH 6,023,042,340
3rd JMH 4,364,842,450
4th JMH 3,221,071,490
5th JMH 2,270,717,380
The scores are stored as part of the configuration file. Here is what the
dump looks like:
e:/Games/Pinball/Slam Tilt/Dat>xd Slamtilt.cfg -a
000000 00 00 00 00 00 00 4e 40 00 00 00 00 00 80 51 40 ......N.......Q.
000010 00 00 00 00 00 00 4c 40 00 00 00 00 00 80 51 40 ......L.......Q.
000020 00 00 00 00 00 c0 56 40 00 00 00 00 00 c0 52 40 ......V.......R.
000030 00 00 00 00 00 c0 52 40 ec 4d 00 00 63 42 00 00 ......R..M..cB..
000040 e3 52 00 00 3a 42 00 00 f7 32 00 00 2c 3e 00 00 .R...B...2......
000050 25 3e 00 00 20 03 00 00 02 00 00 00 01 00 00 00 ................
000060 08 00 00 00 0a 00 00 00 00 79 09 99 17 80 4a 4d .........y....JM
000070 48 00 00 60 23 04 23 40 4a 4d 48 00 00 43 64 84 H.......JMH..Cd.
000080 24 50 4a 4d 48 00 00 32 21 07 14 90 4a 4d 48 00 .PJMH..2....JMH.
000090 00 22 70 71 73 80 4a 4d 48 00 00 44 47 14 54 40 ..pqs.JMH..DG.T.
0000a0 4a 4d 48 00 00 25 70 80 19 40 4a 4d 48 00 00 11 JMH...p...JMH...
0000b0 53 01 54 60 4a 4d 48 00 00 10 65 18 60 80 4a 4d S.T.JMH...e...JM
0000c0 48 00 00 10 49 50 12 30 4a 4d 48 00 00 25 22 30 H...IP.0JMH....0
0000d0 40 00 4a 4d 48 00 00 24 13 57 26 60 4a 4d 48 00 ..JMH....W..JMH.
0000e0 00 14 38 45 91 90 4d 45 52 00 00 13 86 12 61 40 ..8E..MER.....a.
0000f0 4a 4d 48 00 00 13 67 14 59 50 4a 4d 48 00 00 14 JMH...g.YPJMH...
000100 11 14 50 00 4a 4d 48 00 00 06 24 00 00 00 4a 4d ..P.JMH.......JM
000110 48 00 00 06 19 42 00 00 4a 4d 48 00 00 05 39 68 H....B..JMH...9h
000120 50 00 4a 4d 48 00 00 05 38 89 00 00 4a 4d 48 00 P.JMH...8...JMH.
000130 02 00 00 00 2a 00 00 00 36 00 00 00 1d 00 00 00 ........6.......
000140 9d 00 00 00 2c 00 00 00 35 00 00 00 ........5...
From this, you can see that all the tables' scores are stored together, with
configuration data before and after. There are seven bytes between each
three-character name. Looking at the last name suggests a zero-terminated
string, meaning each score is six bytes. The score is stored as
BCD (binary coded decimal, basically using hex as decimal).
Even though the table displays the name first, the score is stored first,
starting at position 0x68. Thus the command to display the "Mean Machines"
scores is:
e:/Games/Pinball/Slam Tilt/Dat>xd Slamtilt.cfg +0x68 -r5B+B3z =5
007909991780 "JMH"
006023042340 "JMH"
004364842450 "JMH"
003221071490 "JMH"
002270717380 "JMH"
"5B+B" is used so there is no space for the score, but there is a
space for the name.