Thursday, January 8, 2009

Wingboard Support

Its been a while since I did any major updates to the peplus driver, but recently I decided to tackle a hardware add-on for the machine.

The add-on is called a "wingboard" or daughterboard. Its purpose is to attach to a superboard pcb where you would normally place the CMOS RAM and DATA chips.

By adding this board you are then able to add a special 5-in-1 game support. With the proper PROGRAM chip installed, the machine will read all 5 DATA chips and display a special Multi-Poker menu.

This board functions similar to the 2 chip (non-wingboard) set XMP00006, but allows the user to swap out different chip sets instead of using the fixed list in the 2 chip set.

The first challenge with making the wingboard work in MAME was discovering how the board functioned. The problem lies with the small PAL chip located on the board that controls the logic of banking to the proper DATA chips. After tracing the board by hand, I figured out a basic schematic and determined that the board switches DATA chips via a CMOS DATA write to the address 0x1FFF. The value written to this address is captured by the PAL chip and used to enable the output of the appropriate DATA chip on the address and data lines.

Once I understood how the wingboard worked, I added support to the peplus driver. Basically, I swap the internal superboard DATA region when address 0x1FFF is written.

Now that I had the game mostly working, I found that not all the graphics were painting correctly. This was due to the fact that the graphics chips are twice the size of any of the games I have added in the past. But I had to find what was triggering the machine to switch to the second half of the graphics chips and color proms. After some investigation, I found that there is a jumper on the superboard pcb (E16/E17) that controls the banking. This lead me to find that a bit on PORT3 is used to signal the machine to bank to the second half of the graphics.

So after a little more cleanup, all things appear to be working fine.

Wednesday, June 11, 2008

Lots of Slots

I decided to revisit the PE+ driver specifically to find out why all the video slots did not accepts coins. I assumed the slots had some special code that maybe affected the coin-in timing, but after a lot of tracing, I couldn't find any differences. Eventually, I noticed that the last page of the operator screens was blank and the Spin button was lit. Pressing the Spin button didn't seem to do anything. Using some experience I learned from the S+ slot machine, I figured this screen was used to show the reel stops. Each time you press Spin you would see the next reel stop etc.

But the screen wasn't painting the reels and seemed to be stuck in a loop. After much tracing, I finally found that the Timer 1 interrupt at 0x001b stopped firing. Without this interrupt, the game would basically sit in an endless loop waiting for the timer bit to update.

It turns out that the split timer code in the i8051 core needed a small tweak. Once the code was fixed, the reel stops showed up in the operator screen, and the game started accepting coins.

Now that I could see the slot games play properly, I found that PS0716 was not "Quarter Mania", but rather "River Gambler".

With the video slots working, I added support for 5 new romsets to the driver:

  • (PS0014) Super Joker Slots

  • (PS0022) Red White & Blue Slots

  • (PS0043) Double Diamond Slots

  • (PS0045) Red White & Blue Slots

  • (PS0308) Double Jackpot Slots

Sunday, January 27, 2008

S-Plus Slots

I decided to mess around with another IGT machine called the "S-Plus (S+)". This machine is strictly a mechanical slot machine with no real video.

The hardware is similar to the PE+ machine but lacks video and contains optics for the reels.

There is a bunch of 7-segment display for some form of output, and interesting navigation procedures to view various operator values.

Once I got a skeleton driver working, I started to hookup the inputs and the 7-segment displays. After much work, I finally got the display to show the first error code. This is an error 61 or "Bad CMOS RAM". Sound familiar? It should, the PE+ generates this error the first time you boot the machine with empty RAM and empty EEPROM data. When I saw this error code come up, I knew I was on the right track.

The proper procedure to recover from this error is to open the door and press the Self-Test button. After doing that, the follow error code appears. This is an error 61-1 which represents "Game Data Reset". What needs to be done at this point is to close the door and turn the jackpot reset key.

Doing that produces the next error code, 65-3 which is "Game Options & Meters Not in the Most Current Format". This can be corrected with a Set Chip, or you can just turn the jackpot reset key and have it overwritten.

I chose to allow the machine to overwrite the values and turned the jackpot reset key. A new display appears with the "0" flashing as the CMOS data is reloaded. Now the next error code appears, 65-1 or "Bad EEPROM Data". Once again a error message I've seen on the PE+ machine. To resolve this you must open the door and press the self-test button.

Finally, the last screen appears which should be error free, however I get the following code, 41 which says "Reel 1 Tilt". This means the machine was unable to process the first reel properly.

So this is where I'm currently at today. From this screen I can go into all the operator self-test screens and play around with the machine settings and listen to the built-in sounds, but I get held up eventually trying to activate the reels.

Time to investigate the Reel Optics next. It should be an interesting challenge.

Monday, January 21, 2008

Hack Free

I finally found the bug that was forcing me to add memory hacks to the driver in order for it to bypass the memory tests for each game.

The I8051 core library was basically firing the timers when they were sometimes not enabled. What this did was cause the timer interrupts to modify memory while the memory check subroutine was running. The memory check routine was writing specific values into memory and verifying that they read back the same value that was written. But with the timers updating memory at the same time, the memory check would not find the values it was expecting and therefore fail.

The fix should help slightly increase the responsiveness of the game code too. I believe the I8051 core has other areas to investigate, but this fix is a huge change for the driver.

With the fix in place, all memory hacks in the driver can be removed. This means any new clones that are added in the future should drop in nicely without any special memory modifications.

I will be submitting a new driver update in the near future with all the hacks removed.

Friday, January 18, 2008

Attack of the Clones

Three new games to report on this update. The first game is Jokers Wild Poker. It plays much like other draw poker games, but includes a joker in the deck.

Next is Double Down Stud Poker. In this game you are dealt four cards and can decide to double your wager on the last card, or just play with your initial bet. After you bet or pass, the game reveals the last card and pays accordingly.

Finally is a payout percentage variation on Standard Draw Poker.

Tuesday, January 15, 2008


Not a lot of new changes to report. I added support for a new superboard romset (pexmp006) entitled "Player's Edge Plus (XMP00006) Multi-Poker".

This romset uncovered a few memory locations in the DUART space that were not accounted for in the code, so I adjusted the driver accordingly. The changes are mostly for completeness at this point, since the driver does not currently support the DUART functionality (Network Slot Accounting System).

This particular game is really 5 games in one. It has a main menu that lets the user choose which of the five games they wish to play. Once in a specific game they can return to the main menu via the fifth Hold button.

This particular game has quite a few new screens in the operator mode. I have attached a sampling of pictures throughout this post.

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.