Main > Software Forum
HiToText (Version 2010.11.4).
Wob:
--- Quote from: Cananas on May 19, 2009, 09:10:07 am ---
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.
--- End quote ---
Thanks, That I did not know. I just recompiled a version with debug enabled. I am using 0.131.
Cheers,
Wob
Wob:
Here is Pacland (pacland)
Needs a small fix in the hiscore.dat, it only grabs 3 of the 4 bytes to the in game high score, missing the last byte. The only change is changing the length on the last line from 3 to 4.
Old hiscore.dat
--- Quote ---;********pacland.c
pacland:
pacland2:
pacland3:
paclandm:
0:2140:4a:00:e6
0:205d:3:00:00
--- End quote ---
New hiscore.dat
--- Quote ---;********pacland.c
pacland:
pacland2:
pacland3:
paclandm:
0:2140:4a:00:e6
0:205d:4:00:00
--- End quote ---
And the deciphering after the changes to hiscore.dat
--- Quote ---We have 5 high scores in the Table
Notes;
Maximum Valid Hiscore is (99 99 99 99) = 99,999,999
Maximum Round Value is (99) = 99
- Bytes 00-03 (00 08 00 00): Is the highest score (#1) In this case = 80,000 points.
- Byte 04 (00): Round, in this case 0
- Bytes 05-09 (E4 E5 E5 E5 E5): Is the name of the highest score (#1) (5 characters) (In this case Pacman + 4 x Ghost)
- Bytes 10-15 (00 00 00 00 00 00): Padding
- Bytes 16-19 (00 03 00 00): Is the next score (#2). In this case = 30,000 points.
- Byte 20 (00): Round, in this case 00
- Bytes 21-25 (E4 E5 E5 E5 E6): Is the name of the next score (#2) (5 characters) (In this case Pacman + 3 x Ghost + Space)
- Bytes 26-31 (00 00 00 00 00 00): Padding
...
- Bytes 64-67 (00 03 00 00): Is the last score (#2). In this case = 30,000 points.
- Byte 68 (00): Round, in this case 00
- Bytes 69-73 (E4 E6 E6 E6 E6): Is the name of the last score (#5) (5 characters) (In this case Pacman + 4 x Space)
Note: There is no padding grabbed for the last score
And Finally the In Game High Score
- Bytes 74-77 (00 80 00 00): In this case = 80,000 points.
Characters are not standard ASCII in this one.
The characters
CA: A
CB: B
...
E3: Z
Special characters
E4: (Pacman)
E5: (Ghost)
E6: (space)
E7: . (Period)
--- End quote ---
Cheers,
Wob
Wob:
Here is "The Speed Rumbler" (srumbler) and clones
This is a little on the strange side, the names and scores are stored in the table but not in order, then there are bytes referring to the names\scores and order.
To simplify the decoding of the references tables and to optimise the lines needed I firstly suggest a change to the hiscore.dat file.
Old Entry
--- Code: ---;********srumbler.c
srumbler:
srumblr2:
rushcrsh:
0:1c94:62:54:00
0:aa:4:00:00
0:1cf6:e:1c:f2
--- End code ---
New Entry
--- Code: ---;********srumbler.c
srumbler:
srumblr2:
rushcrsh:
0:1c94:70:54:f2
0:aa:4:00:00
--- End code ---
The last line just reads more bytes after the first line, so I have extended the first line to read the bytes from the last, this will help keep everything in a nice order.
So after these changes here is the decoding of the hi file.
--- Quote ---We have 7 high scores in the Table
Notes;
Maximum Valid high score is (99 99 99 99) = 99,999,999
First we have all the names (In no particular order);
- Bytes 00-07 (54 4F 4B 55 52 4F 55 20): Is first name space. In this Case "TOKUROU "
- Bytes 08-15 (59 55 4B 49 4F 20 20 20): Is Next name space. In this Case "YUKIO "
- Bytes 16-23 (4B 59 4F 4B 4F 20 20 20): Is Next name space. In this Case "KYOKO "
- Bytes 24-31 (48 41 52 55 4D 49 20 20): Is Next name space. In this Case "HARUMI "
- Bytes 32-39 (54 41 4D 41 59 4F 20 20): Is Next name space. In this Case "TAMAYO "
- Bytes 40-47 (4B 55 43 48 49 4E 4F 20): Is Next name space. In this Case "KUCHINO "
- Bytes 48-55 (41 42 5A 20 20 20 20 20): Is last name space. In this Case "ABZ "
Next is the References to the Names;
They refer to the names by starting memory location, which is fine for in game, but it doesn't mean much in our hi file. The first memory address is the first byte dumped into the hi file, so we can do some hex maths to work out the new location, (Value - 1C 94) = New Byte Reference (In Hex)
- Bytes 56-57 (1C 94): Is the Memory Location of the Top Name (#1) So (1C 94 - 1C 94) = 0 (So Byte 0 in Decimal)
- Bytes 58-59 (1C 9C): Is the Memory Location of the Next Name (#2) So (1C 9C - 1C 94) = 8 (So Byte 8 in Decimal)
- Bytes 60-61 (1C A4): Is the Memory Location of the Next Name (#3) So (1C A4 - 1C 94) = 10 (So Byte 16 in Decimal)
- Bytes 62-63 (1C AC): Is the Memory Location of the Next Name (#4) So (1C AC - 1C 94) = 18 (So Byte 24 in Decimal)
- Bytes 64-65 (1C B 4): Is the Memory Location of the Next Name (#5) So (1C B 4 - 1C 94) = 20 (So Byte 32 in Decimal)
*I had to add a space between the B and the 4 so the forum didn't change it*
- Bytes 66-67 (1C C4): Is the Memory Location of the Next Name (#6) So (1C C4 - 1C 94) = 30 (So Byte 48 in Decimal)
- Bytes 68-69 (1C BC): Is the Memory Location of the Last Name (#7) So (1C BC - 1C 94) = 28 (So Byte 40 In Decimal)
Next we have the Scores (In no particular order);
- Bytes 70-73 (00 03 50 00): Is first score space. In this Case "35,000"
- Bytes 74-77 (00 03 00 00): Is Next score space. In this Case "30,000"
- Bytes 78-81 (00 02 50 00): Is Next score space. In this Case "25,000"
- Bytes 82-85 (00 02 00 00): Is Next score space. In this Case "20,000"
- Bytes 86-89 (00 01 50 00): Is Next score space. In this Case "15,000"
- Bytes 90-93 (00 01 00 00): Is Next score space. In this Case "10,000"
- Bytes 94-97 (00 01 16 00): Is last score space. In this Case "11,600"
Next is the References to the Scores;
This works the same as the names, we can use the same maths.
- Bytes 98-99 (1C DA): Is the Memory Location of the Top Score (#1) So (1C DA - 1C 94) = 46 (So Byte 70 in Decimal)
- Bytes 100-101 (1C DE): Is the Memory Location of the Next Score (#2) So (1C DE - 1C 94) = 4A (So Byte 74 in Decimal)
- Bytes 102-103 (1C E2): Is the Memory Location of the Next Score (#3) So (1C E2 - 1C 94) = 4E (So Byte 78 in Decimal)
- Bytes 104-105 (1C E6): Is the Memory Location of the Next Score (#4) So (1C E6 - 1C 94) = 52 (So Byte 82 in Decimal)
- Bytes 106-107 (1C EA): Is the Memory Location of the Next Score (#5) So (1C EA - 1C 94) = 56 (So Byte 86 in Decimal)
- Bytes 108-109 (1C F2): Is the Memory Location of the Next Score (#6) So (1C F2 - 1C 94) = 5E (So Byte 94 in Decimal)
- Bytes 110-111 (1C EE): Is the Memory Location of the Last Score (#7) So (1C EE - 1C 94) = 5A (So Byte 90 In Decimal)
Last we have the in game Hi Score;
- Bytes 112-115 (00 03 50 00): Is the in game hi score. In this case "35,000"
Characters are standard ASCII in this one except for some strange special characters;
--- Code: ---The characters
31: 1
32: 2
...
39: 9
41: A
42: B
...
5A: Z
Special Characters (Refer to the Screenshot for some as I don't know what to call them)
20: (space)
3A: (2nd Row, 3rd Symbol)
3B: (2nd Row, 4th Symbol)
3C: (2nd Row, 5th Symbol)
3D: =
3E: (2nd Row, 7th Symbol)
3F: ?
5B: . (Period)
5C: -
5D: (6th Row, 5th Symbol)
--- End code ---
--- End quote ---
Screenshot of the result of the information above (the ABZ is the only non default entry)
Screenshot of the name entry screen showing strange special characters
Cheers,
Wob
Fyrecrypts:
--- Quote from: Wob on May 25, 2009, 01:22:03 am ---Here is "The Speed Rumbler" (srumbler) and clones
--- End quote ---
As I was reading, I was looking how it looked an awful like Ghosts N' Goblins. Not surprisingly, both games are mid 80's Capcom. Thankfully, because of that, this should take minutes instead of hours. =)
Wob:
--- Quote from: Fyrecrypts on May 25, 2009, 01:27:41 am ---As I was reading, I was looking how it looked an awful like Ghosts N' Goblins. Not surprisingly, both games are mid 80's Capcom. Thankfully, because of that, this should take minutes instead of hours. =)
--- End quote ---
Good stuff, so does ghosts n' goblins use the same system? seems likes a strange way to do it, why not just have the table in order? I am sure it made sense to someone at the time :)
The changes to the hi and not a must, but it makes more sense to have the score reference before the ingame score that after, plus it optimises the number of lines :)
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version