Williams Conversion Addendum - the Multigame Note: even after a couple of years this is incomplete, but it has a lot of info that a lot of people have asked me for. I'm posting it now, and will be fixing it up as I find time. There aren't any links in it to my pictures yet, but they are all on my page. Sean Riddle me seanriddle com http://www.seanriddle.com This article is an extension to the excellent 'Williams_Conversion' by Doug Jefferys, available from wiretap.spies.com. His article confirmed my idea about making a Multigame and gave me the courage to tear into my Joust machine. It is based on, and has the same general format as his article to make comparisons easy. Disclaimer: It worked for me. General Overview: Doug Jefferys' Williams_Conversion works. This article extends and somewhat simplifies his modifications. My Williams Multigame machine now plays 7 games: Defender, Stargate, Robotron, Joust, Bubbles, Splat and Sinistar. My version differs from Doug Jefferys' in that I burned all the games in 1 EPROM, rather than swapping for each game, and I simplified the ROM decoding to eliminate several wires and one difficult to obtain IC. I also replaced the SRAM with a large enough one to hold all of the high scores from each game. Lastly, I included all the controls needed for all the games on one console along with a switch to select the game to play. Ingredients: 1- working Joust, Robotron, Bubbles or Sinistar machine. enough joysticks and buttons to have 9 buttons and 2 4-way joysticks. Note: Joust, Defender and Stargate use 2-way joysticks. Robotron and Bubbles use 4-way joysticks. 1- 27040 EPROM 450ns or faster (for up to 8 games). 1- 27256 EPROM 450ns or faster (for up to 8 sound ROMs). 1- 7400 quad NAND IC (for ROM address decoding). 1- 32-pin socket (for CPU ROM). 1- 28-pin socket (for sound ROM). 1- 6264 SRAM or Dallas DS1225Y non-volatile SRAM some kind of game select switch- a 4 pin DIP switch or an 8 (or more) position rotary switch (mine has 12 positions) or my software ROM switcher circuit and code ...sockets, plugs, breadboard... ROM images, EPROM programmer, wire wrap tool, wire and soldering iron. Detailed Instructions: 0) Read the original Williams_Conversion file first. If you want to play Bubbles, read the Bubbles_Conversion article as well. This file adds to those files. You don't have to build everything at once; I started small and built my Multigame up from there. Follow original instructions 0 through 1.3. 1.3a) If you have an EPROM burner that can handle 27040 EPROMs, join the game files together into 1 big file. Put them into the order you want them, using 65,536 hex 0xFFs to leave blank spaces, and pad the file with hex 0xFFs until it is 524,288 bytes in size (512K). 1.4) I decided to restrap my sound board to use 2732 EPROMs, rather than 2532s. Since the 27256 that we are adding is more similar to the 2732, this simplifies the adapter that we have to build. Join the sound files together in the same order that you placed the game files. Use 4,096 hex 0xFFs to leave blank spaces, and pad the file with hex 0xFFs until it is 32,768 bytes in size (32K). 2.1) Burn the 27040 multigame EPROM. If your EPROM burner doesn't handle 27040 EPROMs but can burn 27512 EPROMs, you can easily build an adapter that will let you burn a 27040 one game at a time. ***27040/27512 hack *** 2.2) Burn the 27256 multisound EPROM. 3) Instead of looking at the 12 signals that select one of the 12 EPROMs, I look at the four signals that indicate that the EPROMs AREN'T being accessed. This eliminates soldering nine wires to the ROM board, and also gets rid of the 74133 IC. Simply checking the four non-EPROM signals coming from the 74154 is not enough to select our multi-game EPROM, though, because the '154 also has two strobes that must be low for those four signals to be meaningful. Luckily, five of the six signals we need to check meet at one gate- a four- input NOR gate with strobe (IC 2E, a 7425). We can use the output of this gate, along with one more signal and the strobe input to this gate, to generate the output enable signal (*OE) for our multigame EPROM. All we need are the 4 NAND gates from a 74LS00 IC (a very common chip, even available at Radio Shack). And all of the signals that feed into the 74LS00 except one are available at the CPU board connector, so only one wire must be soldered directly to a chip. 4.2) Restrap the sound board. ***restrap sound board hack *** 5) Build program board. I used the same basic procedure as Doug for cramming a big EPROM onto the ROM board- a couple of sockets and some perf board. My perfboard is just large enough to hold the EPROM, 27LS00 and 8 signal pins. 6) Build sound board. Pretty easy stuff- just an adaptor to fit the 27256 into the sound board, and provide 4 pins for the game select address bus. 9) Control panels- I built a single control panel with all the joysticks and buttons needed for all the games. It wasn't too difficult to fit them all on the same panel, but the circuit to enable the correct ones for each game was pretty tough. I used a bunch of 4066s to connect each switch to the correct input for the selected game. Sinistar also posed a problem in that my Joust Widget board (where the controls plug into) had several inputs tied to ground that Sinistar wanted to use. I had to cut these grounds and add some caps and resistors to enable the inputs for Sinistar. I also used Lee Crawford's Sinistar joystick hack to let me use 1 of my existing 8-way sticks in place of Sinistar's 49-way. I had to make a couple of slight changes to his hack to get it to work with my Multigame- first, I added 2 wires that are open during Sinistar play but grounded for all the other games. Second, I had to wire his hack to match the rotated monitor- Sinistar is a vertical game, and the monitor in all the other games is mounted horizontally. This doesn't really affect game-play much, since Sinistar is set in space and there is no up or down. The scores and text are rotated, but that's not too difficult to live with. Additional Notes: The game select circuitry provides several bits that control which game is selected. I'm currently using 3 bits, which translates to 8 games, but I've wired everything up for 4. I first used 3 switches to choose games, then went to a rotary switch. Now I have a software switcher that is the first 'game'. It provides the 3 game select bits from an 8-bit port that I added. The game select bus has to go to the game EPROM, sound EPROM, SRAM and control panel. I replaced the SRAM on my CPU board with a 6264 which has room for 8 games' configurations and high scores. This chip ran my batteries down in about six months, so I replaced it with a pin-compatible Dallas DS-1225Y, which has its own battery and is rated for 10 years use. Splat used a slightly different Special Chip than the other games. SC1 had a small bug that inverted data bit 2; this was fixed in SC2, so using an SC1 on Splat results in garbled graphics. This can be fixed with a software patch or hardware hack. The software patch does add some additional CPU cycles to every blit, so the hardware hack is preferable. Sinistar requires a few hacks. The D000-DFFF EPROM was replaced with an SRAM, and there is a circuit on the ROM board that cuts off the blitter to the top half of the screen (where the scanner and scores are located). I also built my own speech board, since I couldn't find one available for sale. I used Lee Crawford's joystick hack (from wiretap) so that I could use one of my 8-way joysticks to play. As for Defender, a lot of the hardware is accessed from different memory locations on the Joust CPU board. This includes the PIA and the watchdog. Also, some of the EPROMs are bank switched into the same memory location. I patched the PIA and watchdog changes, and had to decide whether to fix the bank switching in hardware or software. I decided to try first in software, so further modifications need not be made to my machine. After several attempts, I decided it would be easier to make a combination software/hardware hack. I still patched the memory address differences in the code, but added a few chips to do the bank-switching. I then created another Defender hack that eliminates nearly all of the software patches. Only 3 bits now need to be changed in the code. Cautions: While most of the chips used in these games are easily replaceable, there are a few that are difficult to find. The Special Chips are custom ICs and aren't available except on Williams ROM boards, and the decoder chips are tough to come by as well. Everything else is relatively easy to find from Jameco or Digi-Key. Be careful with static electricity. Zapping chips doesn't always destroy them- sometimes it causes oddball problems that are nearly impossible to track down. And watch out when removing chips- a desoldering iron is much better than solder wick, but you can easily pull up traces with too much heat. I've found the best way to remove a chip is to cut all the legs off, and remove them one by one. If you want to save the chip, actually adding some solder to each pin before trying to desolder it seems to help. Look for solder blobs, bridges and cold joints. These can cause all sorts of problems, from blowing fuses to intermittant glitches. Problems: There would be some problems creating a Multigame on a cocktail platform, although that format would allow for a better Sinistar (just put the Sinistar joystick and buttons on the side of the cabinet). Defender uses the watchdog location to flip the screen, which would have to be hacked in software or hardware. Since Sinistar is vertically oriented, the decoder ROMs that flip the screen contain different data than the horizontal games, and would have to be doubled in size and the correct half selected for Sinistar. Future: I looked into adapting the Multigame for the next generation Williams platform that plays Blaster, Joust 2 and Mystic Marathon, but even though the hardware is very similar and just a simple evolutionary step above the older hardware, it would require a lot of hacks. The more hacks that are added to a game, the more likely it is that they will interfere or a problem will arise that is difficult to track down due to the large number of wires and additional circuits. For this reason, I shelved the idea (for now). There are some games based on bootleg Defender hardware. I've seen Defense and Mayday. Defense appears to be identical to Defender, while Mayday is set at sea. Both will come up on my Multigame, but neither play correctly, due to a slight hardware difference. I've looked into it a bit, but haven't explored it enough to get it going yet. I've heard of some other games on Williams hardware, including a trivia game, but I've never seen the ROM code. These could have simply been conversions that were in Williams cabinets but didn't use the original boards. Moon Patrol is based on completely different hardware than the other Williams games, so it can't just be hacked into the Multigame. I am working on putting its entire boardset into my Multigame cabinet and switching audio and video between the 2 boardsets. This shouldn't be too difficult, and would add another popular Williams game to the collection. I've thought out 2 more improvements to my Multigame that I haven't started to implement yet: vastly simplifying it by using a plug-in daughter card that would be placed between the CPU and ROM boards, and would use PALs to eliminate most of the chips in my design (Paul Astrachan has built his Multigame using 2 PALs and just a handful of other ICs). I'm also improving the software to allow the Multigame to be used in an actual arcade environment. Right now, you have to select the game and then add credits. If you want to play a different game, you have to reset the machine. Some of the games remember how many credits they have when they are reset, but some do not. I'd like to rewrite my software to scan memory when reset is hit and see how many credits are remaining. These would be saved in memory and added to the next selected game. I could also accept credits before any game is selected, and transfer them to the game.