From: dmccorm1@students.wisc.edu (Al McCormick) Subject: Repost: Williams pause hacking Date: 1996/04/08 newsgroups: rec.games.video.arcade.collecting OK Duncan, since nobody else has reposted your hack, here it comes straight from Virtu-Al's RGVAC archive... (donning a flameproof suit and a kevlar flack jacket for good measure...) Is there a similar hack for the Blaster HW? I have a working boardset and am in the process of JAMMAtizing it (hey, I don't have the cab) and was just wondering. I'm too chicken to even think of slicing a trace on this gem. Our group's Berzerker-fanatic would probably have the Unabomber send a little care package to me if I did... :) Thanks for the great hack Duncan! Virtu-Al **************************************************************************** From: brown_du@eisner.decus.org (Duncan Brown) Subject: Re: Projects for bored minds.... Date: Sun, 3 Mar 1996 03:29:24 GMT In article <1996Mar2.165753.1@eisner.decus.org>, brown_du@eisner.decus.org (Duncan Brown) writes: > This is definitely possible with the Williams 6809-based games, as I have done > it during development of Alien Arena. It requires you to disable the watchdog > circuit (this should be a funny in-joke for a few people...) but then you > basically just toggle the normally unused ~HALT line to the processor. The > video circuitry keeps cranking, so all you do is freeze the game processing, > and the last known contents of teh frame buffer stay on the screen. (This > would be significantly trickier with an Atari vector game!) A few trace cuts > on the board, use a spare gate to buffer the switch, and you're in business. Following up my own post, after some prodding by He Who Mows Lawns: These instructions are not intended for those unfamiliar with circuit board modifications/repair. If what I describe here doesn't make enough sense without additional pictures and words, you probably shouldn't be trying this anyway... These instructions cover modifying a Robotron CPU board to add a halt circuit. Games like Joust, Sinistar, Bubbles, etc. should be virtually identical to this. Stargate may well be the same; later games probably can make use of the same concept, but the chip locations all change. Stargate probably doesn't strictly speaking require this extensive a mod....it's the fact that the Special Chips (BitBlt chips doing DMA transfers instead of the processor, and therefore needing to halt it) use the ~Halt line that makes it more work for these later games. First off, you need to disable the watchdog circuit. Williams provides a handy "split pad" for just this purpose. It's located just to the right of chip 5H, connected to pin 10. Cut the skinny trace between the two halves of the circle and you have disabled the watchdog circuit. (Because of this, you may want to consider extending the ~Reset line out to another switch to go along with your halt switch...) This circuit resets the processor if it gets "off in the weeds" and doesn't reset a counter frequently enough. Halting the processor means it wouldn't reset the counter, and would thus get reset by the watchdog circuit, pretty much ruining any benefit of halting it! Next, we need to set up a circuit that will halt the processor if the Special Chips need to halt it *OR* if we want to halt it via a switch. First, sever the ~Halt line between the processor and the connector going to the ROM board. The trace for this is on the back side of the board, and leads away from pin 40 of the CPU heading towards the connector. Be sure to leave it connected both to pin 40 and the trace running the other way, because that one's a pullup resistor, which it needs. The cut should be right beside R26, but on the BACK of the board. This means the ~Halt input to the processor is now isolated. Let's hook it back up to something. Our needed spare gate is part of 6J. Pins 3, 4, 5, and 6 are what we need, but like good little engineers, Williams' designers have tied 3, 4, and 5 to ground. On the back side of the board, underneath 6J, cut the tiny traces connecting those pins to the ground bus (which runns next to the chip and down to pin 8.) Solder a piece of wirewrap wire to connect 3 and 4 together and then connect that all the way up to the FEEDTHROUGH that was taking the ~Halt line over to the ROM board connector. It's just to the connector side of the cut you made in the ~Halt trace. That gets the ~Halt signal from the ROM board into our new logic gate. Next, use a piece of wirewrap wire soldered on to pin 5 of 6J and tie that to your halt switch (more details later). That gets our user-controlled Halt request into our new logic gate. Now solder a piece of wirewrap wire on to pin 6 of 6J and solder the other end to pin 40 of the CPU socket. This is all on the BACK side of the board, of course... We have now put a NOR GATE in the circuit. If the ~Halt signal from the ROM board is low *OR* the input from our halt switch is low, then the ~Halt signal to the processor is low and it halts. Otherwise it runs freely. Meaning that if our halt switch is deactivated, the normal ~Halt signal from the ROM board controls the processor's halted state. If our switch is active, the processor stays halted completely. Bulletproof design would require a 4.7Kohm resistor between pin 5 of 6J and the 5V rail...but TTL has internal pullups on inputs, and I didn't put one in, and it worked fine. I was trying not to add parts other than wire! About hooking up a switch. Whatever works for you. Here's what I did, but it's a lot of work: Using a razor blade and a drill, or a Dremel tool, or some such, we can add a new Molex connector at location 0A or so. I used a .156 straight pin connector, you can use whatever you like. On top of the board, cut a rectangular "hole" in the ground plane ringing the board. You want it to not be broken completely, you're just trying to keep it from shorting against the pins of your connector. Mark off and drill holes through the board to mount your connector on the top side. On the bottom side, cut slots around the pin holes to electrically isolate most of them (leave at least one connected to the ground trace to allow for a ground pin for your switches.) You're trying to manufacture pads for the pins out of the existing copper clad material! Once those are all isolated, scrape the solder mask from the bottom side of the new pads (including the area where your new conector's ground pins are) and solder in your new connector. Then connect up the new conector pins to the aforementioned new halt input (pin 5 of 6J), and the reset input if so desired. Run a not-too-long wire with a mating connector, and on the far end put some switches. Momentary N.O. for reset, click-on/click-off N.O. for the halt circuit. Signal on one pin, ground on the other, for each of the switches. Looking at this board, I seem to have also wired up a one-shot circuit using a spare 7474 gate, that feeds into the ~NMI circuit. I have no recollection why, but I suspect it was to allow single-stepping the program somehow (amazing what you can forget in 10 years...) That will all be a dissertation for another day. Hope this helps someone somewhere. It's kinda fun to step through a Williams game, halting right in the middle of an exploding alien or something, to get a better look at how they do things. Duncan, hack-from-the-past