Sunday, January 6, 2008

Superboard Revisited

Recently, I decided to look at a small bug that has been bugging me (no pun intended) with the superboard version of a few games. The bug appears after you setup a superboard game for the first time via the operator screens and exit MAME. The next time you load the same game you will get a "CALL ATTENDANT" or similar message. The sub-message after that will read "CMOS DATA". Basically, this means that there is data expected in the battery-backed RAM that does not match values found in the EEPROM. This functionality works fine in the non-superboard games, so there must be a portion of either RAM or EEPROM memory that is not being saved in the *.nv files.

I first confirmed the EEPROM portion of the NVRAM file and all appeared fine. So I started to dig around the CMOS portion. Earlier on I had determined that the superboard game data ROM intersperses its data in memory at 0x1000, 0x3000, 0x5000 etc.. up to 0xf000, in blocks of 0x1000. This was nearly correct. The mistake was, that 0x1000-0x1fff is actually extended RAM for the superboard games, not game data ROM memory.

So not only do superboards contain an extra data ROM chip, they also tend to use a larger RAM chip than the normal board sets (twice as large to be exact). With this notion in hand, I updated the driver accordingly and the bug was fixed.

The new changes should be reflected in the MAME source during a future update.

2 comments:

jeff alston said...

has this driver been released on mame yet ? if not how do i get around the cmos problem .I have the regular games working using the o and k keys and they work well just cant get the others past that cmos problem . am planning a video slot machine mame using an old igt video slot as the shell should work well when completed .thanks I appreciate your hard work and effort in this project.

Stolistic said...

The game initialization methods are well documented in the mame source code.

There are 2 methods depending on the game.

http://mamedev.org/source/src/mame/drivers/peplus.c.html