Hacking Space Invaders

I offered the owner of a desolate gas station some money for an unplugged space invaders cabinet he had in his store. He said that glitches made it unplayable and I said that was ok. I brought it home and found that the problem was probably in software, it would freeze when a bullet hit a certain spot. After opening the cabinet up I found that one of the stickers on an EPROM chip had come undone. Since EPROMs are erased by UV light I figured that was the problem and bought a device to read/write them. Really I have wanted one for a long time anyway, but this was a good excuse.

While waiting for the programmer to come in I decided to modify the image of the player's spaceship, and so began to learn assembly for the 8080 processor. I discovered that it would take too long to try to follow the program execution in assembly to find the data bits for the spaceship. Fortunately, around this time I came across this site where a super nerd had done just that and documented it so I was able to find the section of data with the spaceship sprite and overwrite it with my own. So then I had a hacked version. The file I've included at the bottom of this page is the modified file (for use with the other three space invaders files) and can be used with the mame emulator if you're so inclined. If you decide to run the altered game, know that mame checks the hash to make sure the program hasn't been modified, but you can get around that if you run it from the command line. Here's a screenshot with the altered ship.

When the EPROM read/writer came I read the data off the chips I from the arcade game. I then ran that code in an emulator and got a strange test mode that tested ram and sounds. Maybe the emulator fails to fully imitate the hardware configuration? It gave me doubts as to weather the accepted space invaders roms online will work on my machine. The code mostly matches, but there are notable differences

I proceeded to write the assembly files to the chips, and got three out of four completed. The fourth is giving me trouble. My EPROM programmer is unfamiliar with the model of the chip. Reading it was no problem because they are drop-in replacements for eachother so I pretended it was one of the other models. Since the arcade machine never writes to the EPROM I can't be sure it's a drop-in replacement for writing, the voltage levels could be different for writing. Now I've got to find the datasheet.

After looking around online it looks like most EPROMs are essentially the same so I did a write on the oddball out with settings from another one and it worked. Then I put them back on the PCB and back in the cabinet. Then... I turned it on. And it almost worked. Like weirdly close to working, the score and points showed up, but the gameplay didn't progress.

Looking at the board again I noticed one of this pins of the 4th chip had been bent when I put it in and so it wasn't making contact. I remedied it and the game worked a lot better. But it still glitched about the same amount of time in as it did before I wrote the new files to them. So it's probably a ram issue. There are a buuunch of ram chips with very little memory on each. There's a way to test them according to a repair manual I found which involves shorting pins on the ram chips while it's running and the eprom's are out. But that sounds tedious, so I'm going with the test mode. So back in the eraser the chips go to be burned with ram testing code.

Found code online from my version of the cabinet and it's exactly the same. Further evidence that it's a ram issue. Also means the ship hack will have to be redone, but that can wait.

At first I thought the ram tests were failing, but I think they kind of worked. Below is the bit of the screen where it's trying to output. I'm expecting a letter G or H followed by a number 8-15 or a letter A-H. The first is clearly an H, so that narrows it down to half of the ram chips, but that second character isn't really a character, but looks most like a C I guess.

The manual (tedious) ram test I mentioned earlier ended up saving the day. Turns out the chip at fault was "HG" which was what the ram test was trying to say. The manual test is done by removing all the EPROM chips. The screen will then show horizontal lines. If a ram is faulty it will cause aberrations in the lines. You then connect the data out pin of the ram chip to ground on any suspect chips and see if that works. And hey I found the little bastard causing all the trouble. Now to see if I can source a long out of production DRAM chip.

After further testing using this method I came to think there were two bad ram chips, so I ordered replacements and began the process of replacing them. The chips on the board are marked as having been made in 1979 while the ones I received in the mail are marked as being made in 1975 and look a little different. I'm not sure they're legit, as I've heard of knockoffs being common with chips but if they work I really don't care. Obtaining any facsimile of an obscure 70s chip is a win in my book.