Announce: Lethal Enforcers High Score Save

DarrenF

Well-known member
Joined
Jan 7, 2011
Messages
5,855
Reaction score
526
Location
Florida
I like my games to save their high scores. I got a Lethal Enforcers a year or so ago, and was disappointed to learn that it didn't save high scores, even though it did save many settings. So I took matters into my own hands. A little research with MAME showed me that it was possible. Then it was just a matter of slogging through the 6309 code to make it happen.

Details can be found at http://www.finck.net/highscores/lethal.html

There you'll find a link to a friend's webstore (MilitiaMan here on KLOV) for those who just want to buy it. There's also a downloadable ROM image, for those who have their own EPROM programmer.

It has been tested on my own LE, as well one belonging to another KLOV volunteer tester. However, in the unlikely event you discover a bug, please contact me via PM.

I believe this to be the first HS save kit/mod/hack for a 1990s-era PCB. Let me know if I'm mistaken. Oh, and I've put together a top page for information on my growing list of High Score and Freeplay Hacks: http://www.finck.net/highscores/

Enjoy!
Darren
 
Last edited:
Is there a possibility that something like this can be made for operation wolf?
I'm glad its out for LE as that's a Grail game of mine, so later on I'll get the kit.
Would really love one for operation wolf. I'm not too bad at debugging and looking through code, but doing it blind is hard, any tips on what to look for in the mame roms?


EDIT: missed the part on the bottom
Of the page, gonna see if it answers some of my questions :)
 
Last edited:
I was his guinea pig for this. It works great. I've had no issues with it at all. This makes the game a bit more competitive and helps with the replay value.
 
Awesome! Thanks for making this available! Given this is a Konami game of the same era, I wonder if an X-Men HS save is possible?
 
Is there a possibility that something like this can be made for operation wolf?
Would really love one for operation wolf. I'm not too bad at debugging and looking through code, but doing it blind is hard, any tips on what to look for in the mame roms?

There is a possibility. However, it'll likely be a bit different. AFAIK, Op Wolf doesn't have any sort of non-volatile device on the board (an EEPROM, or battery/capacitor-backed low-power RAM). This means it would have to be the type of kit that involves replacing a RAM with a NVRAM chip, similar to how most of Matt's work (see scoresaves.com). Making a HSS kit of this type is essentially divided into two phases: software and hardware.

The crux of the software phase is preventing the high-score table from being destroyed by the game code. Why? Because in games not designed to save high scores, the original program usually writes to the RAM used for the HS table with the default table every time it's booted up. In addition, it often overwrites it several times before that doing a power-on RAM test of some sort, or just a "zero-out". In any case, the first thing you need to find is where, in RAM, the HS table is stored.

The easiest way to do this (or most anything), it to let someone else do it :) Seriously, no need to re-do work someone else has done. In the case of high-scores, there's a thing called "highscores.dat" http://www.mameworld.info/highscore/download.htm MAME used to support this feature, but now it's maintained by a seperate un-official build. Anyhow, in order for it to work, they've located where in RAM many HS tables are stored. Just download the .dat file and read the heading which explains the format. Then find your game in the listing. For example, for opwolf, we find:

0:100a42:75:00:54
0:100e28:3b:00:01

So I'd run it in the debugger and use the memory monitor to check out 0x100a42 and 0x100e28 and see what you find.

Once the location, in RAM, of the table is found, you'll need to set watchpoints to find any and all code the writes to those locations during boot-up. This is where a lot of the work is; finding an diverting/disabling or modifying those sections of code. Once you've done everything necessary to prevent that section of RAM from being over-written, you've done the main part of the job.

However, there's a few more niggly bits to deal with. Like how it'd be nice to actaully have that default table if there is no HS table (i.e. when the kit is first installed). And it'd be nice to have a way to reset the table to those defaults on demand. And those hacks we've been making may cause a checksum to not work. While not directly related to making it "save the high scores", these tasks are sometimes the most time consuming and difficult.

Now that you've got software that can theoretically save high scores (or, rather, not destroy the high scores on it own) you need hardware that actually DOES save them. You'll need to find which RAM (or if you're unlucky more than one) chip holds the addresses containing that HS table. If shematics are available, and you're handy with understanding address decoding, you can figure it out. If the RAMs are socketed (who ever get's that lucky? I did! For Ikari Warriors, I had already socketed most of my RAM trying to fix a problem...) you can just swap out the RAM with an NVRAM then read the contents with an EPROM programmer and see if you've got the right one.

So, that's the process in a nutshell.
 
Last edited:
Given this is a Konami game of the same era, I wonder if an X-Men HS save is possible?

I'd be very interested if this is possible for other Konami games of the same era.

Maybe. I've looked at the schematics for a X-Men and a couple other Konami gams of that era. Unfortunately, NOTHING shares the architecture of Lethal Enforcers. It was a bit of a bastard 8-bit CPU design. However, several others to use the same EEPROM chip, likely for storing settings. They use a different CPU (68000), that's both good and bad: Bad 'cause it'll certainly be different code than what I've already figured out on LE. Good 'cause it won't have the wacky ROM bank-switching going on (plenty of addressing space with a 68000).
 
Back
Top Bottom