Updates
 
02/20/11   – See a picture of the 4in1 mod here
01/31/11   – See a video of the mod running here
01/30/10   – Publish v2.0 Menu Code here
01/30/10   – Publish v3.0 (Legacy versions can be found here)
05/02/10   – Publish v3.1 Fixed some navigation issues with the menu
05/09/10   – Publish v3.2 Fixed the Ms. Pac start issues and fixed cocktail mode
05/14/10   – Publish v3.3 Options only visible when service switch is on and improved navigation
07/19/10   - Publish v3.3 for Ms Pac Championship/Super Zola Pac Board here
  
 
 
 
New in Version 3


1. The mod fits in a 27c512 now (27c020 image included in zip also)
2. Additional ram is required (see High Score Save section)
3. Dip switch setting can be set (on screen) in the options 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 do not want to spend the mone for one of these kits for each of them.  For these boards I use the free hack 
located at http://www.pinrepair.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.  
 

Screen Shots
 



4n1_opts
 
Screen Saver
 
At the moment there is a pretty simple screen saver in place.  After about 5 minutes of no activity it clears the screen
and shows pac-man and the ghosts bouncing around the screen.  I may add to this in the future, but it does the job.  
Any movement of the joystick or pressing of the buttons will bring you back to the menu screen.

High Score Save

Version 2.0 and up of this modification supports high score save for each game in thier own high score table.  The high score is 
saved on an nvram that is wired on to the board.  Version 3.0 and up of the mode will require additional ram to be added to the 
Pac board.  You have 3 options:


1. Buy an nvram board (contact Slava Madrit at smadrit@gmail.com or visit his KLOV profile here) you can see a picture of what 
    the board looks like here and here
2. Wire up your own nvram adapter (details can be found here)
3. Piggyback two 2114 ram chips on 4K and 4N (pull up the select pins and tie them both to 5L pin 10)


 
  
On Screen Dip Settings


Version 3.0 and up now supports on screen dip switch settings.  This means that you no longer need to go into the back of your 
game to change things like coinage, lives, bonus, etc.  These can now be changed in the options menu.


A note about alternate names:
I am not sure what the initial intent of this setting was for.  When active it changes the names of the ghosts to

-AAAAAAAA- "BBBBBBBB"
-CCCCCCCC- "DDDDDDD"

... and so on
I imagine these were a place holder that was never used.  Since there is no checksum in these roms you can use a hex editor to 
Change these names to anything you want before you burn the roms.



  
Modified Hack
 
This is a modified copy of the hack from (http://www.marvin3m.com/video/pacman.htm#hack1) that uses one of the latches at 8k 
instead of the mechanical switches.
    1. Row 6 mod.
      The
      27c512 is a 28 pin DIP. The socket I used was 6J and is 24 pins. Bend up pins 1, 2, 20, 22, 23, 26, 27 , and 28. 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 14 of the chip should go into pin 12 of the socket. If you had not bent up pins 1, 2, 27 and 28 , 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 pin 1 (A15) to 8K pin 11.
      2. Connect pin 2 (A12) to 7J pin 6.
      3. Connect pin 20 (CE\) and 22 (OE\) to 7N pin 12.
      4. Connect pin 23 (A11) to 7L pin 9.
      5. Connect pin 26 (A13) to 7N pin 14.
      6. Connect pin 27 (A14) to 6B pin 5 (test connector 8th "finger" from the bottom component side). I tapped into it at this side edge connector.
      7. Connect pin 28 (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.
 
    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 1 of the 27c512.
      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).
 
Address Mappings
 

74ls259 Pin (11) 0x8000

27c512 Address

Character Roms

Game

0

0x00000

Pac-Man

Pac-Man

1

0x08000

Ms Pac-Man

Ms. Pac-Man

 

 
Modified Eproms
 
          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.
Pac-man and Ms. Pac-man have been modified to handle fast and slow versions in the same bank that is controlled by the menu.
There was no need to take up two more banks of emprom space for a few bytes of code that were different.
 
          Download bin files:
4n1_3_3.zip
 
00000 - 00FFF Pac-Man 6e
01000 - 01FFF Pac-Man 6f
02000 - 02FFF Pac-Man 6h
03000 - 03FFF Pac-Man 6j
04000 - 04FFF empty
05000 - 05FFF empty
06000 - 06FFF helper functions
07000 - 07FFF empty
 
08000 - 08FFF Ms. Pac-Man boot1
09000 - 09FFF Ms. Pac-Man boot2
0A000 - 0AFFF Ms. Pac-Man boot3
0B000 - 0BFFF Ms. Pac-Man boot4
0C000 - 0CFFF Ms. Pac-Man boot5
0D000 - 0DFFF Ms. Pac-Man boot6
0E000 - 0EFFF helper functions
0F000 - 0FFFF empty