
IMPORTANT NOTE: Currently, this
modification has not been tested on real hardware, it has only been
tested in MAME. While I can't think of any reason why it shouldn't
work on the real hardware, if you decide to carry out this
modification then you do so at your own risk. That said, I would
like to hear if things work out for you, or indeed if they do not
so I may update this page accordingly. I will remove this notice
and modify the page as and when the free play mod gets tested on
each of the original hardware configurations that I have access
to.
Over
on Jamma+
recently, the question came up of how
to set Zaccaria's version of the Taito classic Space Invaders onto
"Free Play". Someone was taking a machine to a charity event and
understandably didn't fancy the idea of standing around opening up
the coin door to add credits all day long so they wanted an easier
way. Of course, as is not at all uncommon with games from the late
70's and early 80's, there's no built in provision for this with
the standard set up.
Several suggestions came up, from just adding the maximum 99
credits to modifying the machine so the coin reject becomes the
coin add button. Of course, there's nothing wrong with each of
these methods as such, but each has it's own problems. With the
easy option of just opening up the coin door once in a while and
adding 99 credits, you then loose the attract mode. The game will
just sit there all day long prompting the next player to push 1 or
2 player start, merrily burning this image onto the screen. So not
ideal.
Nothing desperately wrong with the latter idea of modifying the
coin reject system either, other than of course, you're modifying
the machine, no matter how discretely, plus I guess Joe public is
going to need to be told that is how it works, so again, not
ideal.
So someone passed the comment in my direction that it might be the
kind of thing I could sort out. I was pretty busy with other stuff
at the time, but of course I got thinking about it and fairly
quickly obliged. I consider it to be a bit of a hack as there's
nothing fancy to switch freeplay mode on or off or anything, Just
replace a ROM (or two depending on the ROM configuration in your
board) and off you go. The end result works quite well. If you want
to revert to normal, put the original ROM back in.
I guess, if you want to get clever, double up the ROM image onto a
ROM twice the size and add a toggle switch, but I'll leave that out
of this article for now. If you know how to do it, go ahead, it
really shouldn't be difficult to do.
The
Software Hack
The features of this
hack are fairly simple and straightforward:
- If you walk up to the machine and just press either the 1 or 2 player start button it will always start as thought there were enough credits in the machine to do so but providing a game is not already in play.
- If there were any credits in the machine, they will be removed at the start of each game. In the original scenario this hack was intended it would look fairly daft if the number of credits were allowed to rise and rise if people did decide to insert money (it is up to the person that owns the machine to physically disable coin entry).
- The attract screen has been fully maintained.
- The attract screen has been modified to read "FREE PLAY" instead of "INSERT COIN".
- If coin entry is not disabled then behaviour that could be considered a little odd is possible. Namely, if you insert 1 coin, the game will prompt you to press player 1 start only, yet you can start a 2 player game. If you think about this, it is correct, since freeplay is enabled. Again, really coin entry should be disabled, either physically or through the use of lockout coils if fitted.
// // Modify attract screen to read " FREE PLAY " instead of "INSERT COIN" // 0B2C 20 // Space 0B2D 46 // F 0B2E 52 // R 0B2F 45 // E 0B30 45 // E 0B31 20 // Space 0B32 50 // P 0B33 4C // L 0B34 41 // A 0B35 59 // Y 0B36 20 // Space // // Player 1 start pressed // // At the end of these bytes, 1D09 must = 0 and CC must be set to 11 0BC7 04 00 // Put 00 in register 0 0BC9 CC 1D 09 // Transfer register 0 to $1D09 0BCC 77 C0 // Set CC to 11 0BCE C0 // NOP 0BCF C0 // " // // Player 2 start pressed // // At the end of this, zero must have been put into 1D09 and CC must be = 00 0C87 04 00 // Put 00 in register 0 0C89 CC 1D 09 // Transfer register 0 to $1D09 0C8C 75 C0 // Set CC to 00 0C8E C0 // NOP 0C8F C0 // " 0C90 C0 // " 0C91 C0 // "
Modifying the ROMs
There are a number of different possible configurations for a Zaccaria Invaders PCB, involving various different ROM setups. Match the setup of your board and download the ROM images listed below for your board. Burn the new (P)ROM(s) and then you should be good to go.
The following table shows the different ROMs and memory locations for the different configurations. The ROMs marked with a * are the ones that need to be patched or changed.
Of course, if you have one type of ROM configuration but you wish to change to another, it should be easily possible to just switch, by reading your existing ROMs, join or split the images appropriately, then burn a new set, however you cannot simply plug the different kind of ROMs into the sockets as this will invariably cause damage to them (and maybe more of the PCB) due to the different voltages involved between the different kinds of ROMs. There are jumper wires on the PCB and these need to be changed to accommodate the different types of ROMs. I don't have the information to hand for this. If I find it, I will update this section.
2716's
0000 - 07FF
0800 - 0FFF *
1000 - 17FF
2708's
0000 - 03FF
0400 - 07FF
0800 - 0BFF *
0C00 - 0FFF *
1000 - 13FF
1400 - 17FF
PROMs
0000 - 01FF
0200 - 03FF
0400 - 05FF
0600 - 07FF
0800 - 09FF
0A00 - 0BFF*
0C00 - 0DFF*
0E00 - 0FFF
1000 - 11FF
1200 - 13FF
1400 - 15FF
1600 - 17FF
3 x 2716's
Unfortunately, by far the simplest configuration of 3 x 2716's, seems to be the least common of the three configurations that I've seen. If you have this configuration then you will find you have just three ROMS at positions 42, 44 and 46. You need only burn a single new ROM in this instance that contains all the changes. The ROM goes in position 44.
6 x 2708's
Next in line of most common are the 2708's. These don't really cause any more of a problem so long as your programmer can handle them. Very few modern programmers do without expensive adapters. I use the rather ancient Data I/O 29B with Unipak 2B and that handles them just fine. If you have this setup then you will need to replace the two ROMs at positions 44 and 45.
12 x PROMs
This, unfortunately seems to be the most common setup that I have seen. It's a bit of a pain this one. Firstly, it sucks the voltage down quite a lot on the power supply and the PROMs, as with all bipolar fuse ROMs, run nice and hot. On top of that, the little daughter board that they sit in is soldered into the main PCB and additionally the PROMs themselves are soldered into the daughter board. Then, PROMs being PROMs (note the lack of an E on the front of that!) they can't be erased so you won't be able to reuse them. Just like the 2708's, they can also be difficult to program with cheaper modern programmers. Again, the Data I/O should cope just fine though.
For this project however, they won't be a problem, simply remove the two you need, fit sockets, burn away and off you go. Please note that I've not actually done this modification with PROMs so I don't know which two it is!
Downloads
(currently 2716 image online only, others to be added shortly)
For 2716's: zifp_2716.zip (1 rom image only)
For 2708's: zifp_2708.zip (2 rom images)
For bipolar fuse roms: zifp_prom.zip (2 rom images)