Main > Software Forum

HiToText (Version 2010.11.4).

<< < (45/117) > >>

Wob:
OK, I have done Robocop (robocop)

I noticed something in the in the hiscore.dat file it lists the clones separate despite the same memory addresses being read.  See the details cut from the file.  it is also reading address ffb523 twice on the original and the clones, robocopb reads it in 3 parts for no real reason.

So I suggest some changes to the hiscore.dat file, merge all the robocop clones with the master and modify the lines as below.

Original hiscore.dat

--- Quote ---;Robocop clones
robocopw:
robocopj:
robocopu:
robocpu0:
0:ff8ed8:a0:4d:00
0:ffb522:4:00:00
0:ffb523:1:05:05

robocop:
0:ff8ed8:a0:4d:00
0:ffb522:4:00:00
0:ffb523:1:05:05

robocopb:
0:ff8ed8:a0:4d:00
0:ffb522:1:00:00
0:ffb523:1:05:05
0:ffb524:2:00:00
--- End quote ---

Suggested Changes to hiscore.dat

--- Quote ---;*******dec0.c (robocop (world revision 4) & clones)
robocop:
robocopb:
robocopw:
robocopj:
robocopu:
robocpu0:
0:ff8ed8:a0:4d:00
0:ffb522:4:00:00
--- End quote ---

So Here is the decoding for robocop


--- Quote ---We have 10 high scores in the Table

Notes;
Maximum Valid Hiscore is (99 99 99 99) = 99,999,999
Maximum Valid Round is (99) = 99
Maximum Valid Time is (99 99) = 99:99

- Bytes 00-07 (4D 55 52 50 48 59 20 20): Is the name of the highest score (#1) (8 characters) (In this case "MURPHY  ")
- Bytes 08-11 (00 05 00 00): Is the highest score (#1), In this case, 50,000 points.
- Byte  12 (00): Padding (Seems to have no effect on the score board)
- Byte  13 (04): The Round. In this case 04
- Bytes 14-15 (00 00): Is the Time. In this Case 00:00. Simply Read, no tricky conversions (Eg (12 34) = 12:34)

...

- Bytes 128-135 (57 4F 42 00 00 00 00 00): Is the name of the 9th score (#9) (8 characters) (In this case "WOB     ")
- Bytes 136-139 (00 03 04 00): Is the 9th score (#9), In this case, 30,400 points.
- Byte  140 (00): Padding
- Byte  141 (02): The Round. In this case 02
- Bytes 142-143 (02 37): Is the Time. In this Case 02:37

- Bytes 144-151 (4F 2E 43 2E 50 2E 20 20): Is the name of the 10th score (#10) (8 characters) (In this case "O.C.P.  ")
- Bytes 151-155 (00 03 00 00): Is the 10th score (#10), In this case, 30,000 points.
- Byte  156 (00): Padding
- Byte  157 (01): The Round. In this case 01
- Bytes 158-159 (00 00): Is the Time. In this Case 00:00

- Bytes 160-163 (00 05 00 00): Is the in game Hiscore, in this case 50,000 points.

Good old ASCII for all the Characters, including Special Characters

Space is the only special character you can select, despite the fact there are two others in the default score table, I have included them under "Non usable Special Characters" as they will still need to be read for the default scores

The characters
30: 0
31: 1
...
39: 9

41: A
42: B
...
5A: Z

Special Characters
20:   (space)

Non usable Special Characters
2D: - (dash)
2E: . (period)
--- End quote ---

Regards,
Beau

Wob:
I am also working on Rastan (rastan) but there appears to be issues with the hiscore.dat and how it reads the in game hi score, decoded it is only reading 4 digits when there should be 6.  I am going to compile a debugger version of mame and look at where it is going wrong, I have everything else decoded, the hiscore table and the encryption on the in game hi score.

Cheers,
Wob

Wob:
Ok I have worked out Rastan (rastan) and it's clones. Quite a mission, but I learnt some things :)

First this one needs some changes to the hiscore.dat

Current hiscore.dat

--- Code: ---;********rastan.c
rastan:
rastanu:
rastanu2:
rastsaga:
0:10c140:26:31:4e
0:d000b4:2:00:2b
0:d000bc:2:00:2d
0:d000c4:2:00:31
0:d000cc:2:00:2c
0:d000d4:2:00:2a
0:d000bc:2:00:2d
--- End code ---

New hiscore.dat

--- Code: ---;********rastan.c
rastan:
rastanu:
rastanu2:
rastsaga:
0:10c140:26:31:4e
0:d000b2:1:00:00
0:d000b5:1:2b:2b
0:d000ba:1:00:00
0:d000bd:1:2d:2d
0:d000c2:1:00:00
0:d000c5:1:31:31
0:d000ca:1:00:00
0:d000cd:1:2c:2c
0:d000d2:1:01:01
0:d000d5:1:2a:2a
0:d000da:1:01:01
0:d000dd:1:2a:2a
--- End code ---

the first problem was a typo in the last memory address, it read d000bc instead of d000dc. and it's related value.
These are the bytes for storing the value but there is a value stored two bytes earlier that are toggles for displaying those values.

It also reads two bytes when only 1 is needed, I have changed it to be consistent, it now reads the toggle byte followed by the value byte.

Here is the decoded hi file (to match my changes)


--- Quote ---We have 5 high scores in the game

Notes:
Maximum Score = 99,999,900
Maximum Round = 9
Name Characters = 3

- Bytes 00-03 (31 27 00): This appears to be a mirror of the #1 Score, but changing it has no effect on the scoreboard or the ingame Hi Score. I guess it awlays be the same as #1 Score.

- Bytes 03-05 (31 27 00): Is the highest (#1) score. Stored in Reverse Byte Order, two trailing 0's are added in game. In this case, 273,100 points
- Bytes 06-08 (72 25 00): Is the 2nd (#2) score. In this case, 257,200 points
- Bytes 09-11 (78 19 00): Is the 3rd (#3) score. In this case, 197,800 points
- Bytes 12-14 (54 12 00): Is the 4th (#4) score. In this case, 125,400 points
- Bytes 15-17 (20 11 00): Is the last (#5) score. In this case, 112,000 points

- Byte  18 (03): Is the highest (#1) round. In this case 3
- Byte  19 (03): Is the 2nd (#2) round. In this case 3
- Byte  20 (03): Is the 3rd (#3) round. In this case 3
- Byte  21 (02): Is the 4th (#4) round. In this case 2
- Byte  22 (02): Is the last (#5) round. In this case 2

- Bytes 23-25 (43 4F 42): Is the highest (#1) name. In this case "COB"
- Bytes 26-28 (54 48 53): Is the 2nd (#2) name. In this case "THS"
- Bytes 29-31 (59 41 47): Is the 3rd (#3) name. In this case "YAG"
- Bytes 32-34 (54 4B 47): Is the 4th (#4) name. In this case "TKG"
- Bytes 35-37 (59 54 4E): Is the last (#5) name. In this case "YTN"

- Bytes 38-49 (00 2B 00 2D 00 31 00 2C 01 2A 01 2A): In Game Hi Score. In this Case 273,100. two trailing 0's are added in game. The Values are Encrypted (Table Below)

I will split this up to address the bytes.
   -Byte 38 (00): The toggle for the next byte 00=Show 01=Hide
   -Byte 39 (2B): The Last Digit before the trailing 0's. In this Case 1
   -Byte 40 (00): The toggle for the next byte 00=Show 01=Hide
   -Byte 41 (2D): The Next Digit to the left,  In this Case 3
   -Byte 42 (00): The toggle for the next byte 00=Show 01=Hide
   -Byte 43 (31): The Next Digit to the left,  In this Case 7
   -Byte 44 (00): The toggle for the next byte 00=Show 01=Hide
   -Byte 45 (2C): The Next Digit to the left,  In this Case 2
   -Byte 46 (01): The toggle for the next byte 00=Show 01=Hide
   -Byte 47 (2A): The Next Digit to the left,  In this Case 0
   -Byte 48 (01): The toggle for the next byte 00=Show 01=Hide
   -Byte 47 (2A): The Next Digit to the left,  In this Case 0

So the Maxumum Value would be (00 33 00 33 00 33 00 33 00 33 00 33) = 99,999,900 (Note the togles for the top two digits has to be changed)


--- Code: ---Encrypted In Game Hi Score Characters:
2A: 0
2B: 1
2C: 2
2D: 3
2E: 4
2F: 5
30: 6
31: 7
32: 8
33: 9
--- End code ---

Good old ASCII for all the Characters, including the special characters.


--- Code: ---The characters
41: A
42: B
...
5A: Z

Special Characters
20:   (blank)
21: !
28: (
29: )
2D: -
2E: . (period)
3F: ?
--- End code ---

--- End quote ---

Cheers,
Wob

Cananas:

--- Quote from: Wob on May 18, 2009, 11:54:11 pm ---I am also working on Rastan (rastan) but there appears to be issues with the hiscore.dat and how it reads the in game hi score, decoded it is only reading 4 digits when there should be 6.  I am going to compile a debugger version of mame and look at where it is going wrong, I have everything else decoded, the hiscore table and the encryption on the in game hi score.

Cheers,
Wob

--- End quote ---

Don't know what mame version you are using. The lastest regular versions have the debugger included. Just use -debug.

BTW welcome, and great work.

Visitor Q:
Nevermind...  ;D

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version