Burn this ROM image onto a 2732 EPROM and replace KS14-1 with your newly burnt EPROM. Disconnect the cable running from the coin processor board to the ROM PCB and plug the cable running from the coin door to the coin processor board in it's place. You no longer need the coin processor board.

This ROM image has only been tested with the latest revision of Kram ROMs, the same set as called "Set 1" in MAME.

Use at your own risk.

For the curious, here's how it works:

The 68705 adds a mask to the values going to Port B (0x9402)

0x3C = 0011 1100

Kram's program removes this mask by EOR'ing it with

0xC3 = 1100 0011

Which is stored at location 0x8108.

The line of code that does that is at 0xAB1A.

If there is no coin processor running, the data on Port B comes in unmasked as:

Unmasked inputs on Port B

1000 0000 = 0x80 = Tilt
0100 0000 = 0x40 = Coin 3
0010 0000 = 0x20 = Coin 2
0001 0000 = 0x10 = Coin 1
0000 1000 = 0x08 = Slew Down 
0000 0100 = 0x04 = Slew Up
0000 0010 = 0x02 = Sub Test
0000 0001 = 0x01 = Adv Test

If the coin processor were running, it would send this data to Port B:

Masked inputs on Port B

1011 1100 = 0xBC = Tilt
0111 1100 = 0x7C = Coin 3
0001 1100 = 0x1C = Coin 2
0010 1100 = 0x2C = Coin 1
0011 0100 = 0x34 = Slew Down 
0011 1000 = 0x38 = Slew Up
0011 1110 = 0x3E = Sub Test
0011 1101 = 0x3D = Adv Test

The Kram program will then EOR the inputs with 0xC3. The correct, unmasked value is finally stored at location 0x83F8.

The fix:

NOP out the EOR instruction at 0xAB1A to prevent the mask from being put on Port B's data.

This, of course, changes the checksum for the ROM KS14-1. Rather than patching the new checksum into ROM KS19-1, I added a few bogus bytes into an unused portion of KS14-1 to make it match the original checksum. That way, you don't have to burn two new ROMs, just one.

Questions and comments can be directed to me at:

tim@arcadecollecting.com

