Updates
 
8/5/07 – Publish v1.0
8/6/07 – Publish v1.1 – P1+P2 returns to the menu
 
Overview
 
I am a big fan of multigame kits that run on original hardware.  For my Pac-man I use Mike Doyle and Dave Widel’s 96-in-1 kit 
located at http://home.everestkc.net/mdoyle/multipac.htm.  Like most collectors I come across a number of Pac-man boards 
for projects and can not afford one of these kits for each of them.  For these boards I use the free hack located at 
http://www.marvin3m.com/video/pacman.htm#hack1.  This is a great quick hack for getting more than one version of Pac-man 
on a board.  The only thing I don’t like about this hack is the use of mechanical switches.  Generally you need to run some wires 
from the Pac-man board to the coin door or some other reachable location.  My goal when starting this project was to have this 
hack menu driven and eliminate the mechanical switches.
 
 
Design
 
The first thing I needed to do was find somewhere on the Pac-man board I could control via code to replace the mechanical switches.  
Looking through the many Pac-man resources on the internet I found that the latch at 8K has three outputs which it does not use.  
The addressable latch at 8K that controls sound, flip and other things also has output for Start Lamp 1 (Pin 9), Start Lamp 2 (Pin 10) 
and Coin Lockout (Pin 11).  These pins can be turned on and off like switches and since Pac-man does not use start lamps or the coin
lock-out it is not taking anything away from the original game.
 
I realized after playing around with my theory that there was a problem.  When Pac-man starts up it clears all the pins on the latch.  
In fact it clears and sets them a few times during initialization.  So, now I needed to go and modify the Pac-man and Ms. Pac-man 
code to get rid of this step or the game will reset the first time the latch is cleared.
 
Next I needed a menu to drive the 4 games. My wife helped me design the menu (see below).  It is nothing fancy but it will get the 
job done.  I am sure I will make modification to make it more fancy in the future but this is it for now.  
 
After getting the menu written and modifying Pac-man code and changing around the hack to use the latch instead of the mechanical
switches I ran into another issue.  It appears that when the pins would turn on to change the bank on the EPROM the CPU would crash 
because it had the code pulled out from under it.  I did not realize this at first so I hacked around on the board to use transistors, 
capacitors, relays and lots of other components I did not need.  After chatting with some people who have done this before 
(see thank you section) it turns out that when the bank changes the code on the next line is different than expected so the CPU crashes.  
To do this I needed to make sure that the part of the menu code that turned the pins on the latch on and off needed to be in each bank 
of the EPROM at the same location.  To do this without removing one of the games I needed to embed some menu code into the Pac-man code. 
 
 
Modified Hack
 
This is a modified copy of the hack from (http://www.marvin3m.com/video/pacman.htm#hack1) that uses the 3 pins at 8k 
instead of the mechanical switches.  My hack uses a 27020 instread of a 27010 which basically have the same pinout, but
The 27020 is twice as big.  This way I can add my menu and have room to expand it and add a game or two later.
 
    1. Row 6 mod.
      The
      27020 is a 32 pin DIP. The socket I used was 6J and is 24 pins. Bend up pins 1, 2, 3, 4, 22, 24, 25, 28, 29, 30,31, and 32. Place the new ROM socket in the pcb socket so that the bottom of the chip (opposite side from the notch) lines up with the bottom of the socket. This means that pin 16 of the chip should go into pin 12 of the socket. If you had not bent up pins 1 through 4 and pins 29 through 32, they'de be hanging off. The actual pcb socket you use isn't important (as long as it's not 6K or 6L). We could use 6E, 6F, or 6H, but the daughterboard in 6D gets in the way.
      1. Connect pins 24 (OE\) and 22 (CE\) to 7N pin 12.
      2. Connect pin 25 (A11) to 7L pin 9.
      3. Connect pin 28 (A13) to 7N pin 14.
      4. Connect pin 29 (A14) to 6B pin 5 (test connector 8th "finger" from the bottom component side). I tapped into it at this side edge connector.
      5. Connect pin 4 (A12) to 7J pin 6.
      6. Solder the wire between pins 1 (Vpp), 31 (PGM\), and 32 (Vcc) to +5 volts. You can tap into this in a number of places. Pin 24 of every ROM socket has 5 volts on it.
      7. NEW: Connect pin 3 (A15) to 8K pin 11.
      8. NEW: Connect pin 2 (A16) to 8K pin 10.
      9. NEW: Connect pin 30 (A17) to 8K pin 9
 
    1. Row 5 mod.
      The 27128 is a 28 pin DIP. Bend up pins 1, 2, 20, 22, 23, 26, 27, and 28 on a 28 pin socket. Put the new socket into the pcb socket at 5E or 5F. Again, it doesn't matter which.
      1. Connect pins 22 (OE\) and 20 (CE\) to GND. You can pick up GND at pin 12 of any of the ROM sockets. You can also use pin 14 of the 27128 or pin 16 of the 27010. GND is always the top right pin of the EPROM (if you are facing the component side of the pcb with the edge connector towards the ceiling).
      2. Connect pin 23 (A11) to 4F pin 1.
      3. Connect pin 26 (A13) to pin 2 of the 27010.
      4. Connect pin 2 (A12) to 5L pin 5.
      5. Connect pins 1 (Vpp), 27 (PGM\), and 28 (Vcc) to +5 volts. I just connected pin 1 to pin 28. I then globbed solder between pins 27 and 28. Then, I soldered another wire from the glob to pin 24 of another ROM position (5H).
 
Modified Eproms
 
          The row 6 27c010 EPROM needed to change a bit, but the row 5 EPROM remains unchanged.  The row 6 EPROM has 
          a new layout to include the menu and some other changes to the original Pac-man/Ms. Pac-man code.  This is very
          wasteful, but I did not want to make a bunch of changes to fit everything on the 27c010.  The 27c020 gives me more
          then enough room.
 
          Download bin files: 4n1hack.zip
 
00000 - 00FFF Menu Part 1
01000 - 01FFF Menu Part 1
02000 - 02FFF Menu Part 2
03000 - 03FFF empty
04000 - 04FFF empty
05000 - 05FFF empty
06000 - 06FFF empty
07000 - 07FFF empty
 
08000 - 08FFF Pac-Man 6e
09000 - 09FFF Pac-Man 6f speedup cheat
0A000 - 0AFFF Pac-Man 6h / Menu Part 2
0B000 - 0BFFF Pac-Man 6j 
0C000 - 0CFFF empty
0D000 - 0DFFF empty 
0E000 - 0EFFF empty 
0F000 - 0FFFF empty 
 
10000 - 10FFF Ms. Pac-Man boot1
11000 - 11FFF Ms. Pac-Man boot2
12000 - 12FFF Ms. Pac-Man boot3 cheat / Menu Part 2
13000 - 13FFF Ms. Pac-Man boot4
14000 - 14FFF Ms. Pac-Man boot5
15000 - 15FFF Ms. Pac-Man boot6
16000 - 16FFF empty
17000 - 17FFF empty
 
18000 - 18FFF Ms. Pac-Man boot1
19000 - 19FFF Ms. Pac-Man boot2 speedup cheat 
1A000 - 1AFFF Ms. Pac-Man boot3 / Menu Part 2
1B000 - 1BFFF Ms. Pac-Man boot4
1C000 - 1CFFF Ms. Pac-Man boot5
1D000 - 1DFFF Ms. Pac-Man boot6
1E000 - 1EFFF empty
1F000 - 1FFFF empty
 
20000 - 00FFF Pac-Man 6e
21000 - 01FFF Pac-Man 6f cheat
22000 - 02FFF Pac-Man 6h / Menu Part 2
23000 - 03FFF Pac-Man 6j 
24000 - 04FFF empty
25000 - 05FFF empty
26000 - 06FFF empty
27000 - 07FFF empty
 
 
  
 
Thank You
 
First of all thank you to the person or people that came up with the original hack.  I would also like to thank the people 
who helped me with all the great knowledge they have learned and shared via a website or emails with me directly.  
This would not have been possible without Rob Carroll, Sean Riddle, Scott “Jerry” Lawrence, David Caldwell and 
many others.