Does Gun Fight have free play?

The 1975 B&W game?

It has about half as much 8080 code as Space Invaders; less than 4kB total. Shouldn't be too hard to find the code and hack in a freeplay. Figure that's maybe 20% data or blank, and estimate about 2 bytes per line of code on average... so I'd guess it only has maybe 1600 lines of code.

A bigger problem might be burning new EPROMs. I think that has 2708s... or some sort of 1kB device.
 
The 1975 B&W game?

It has about half as much 8080 code as Space Invaders; less than 4kB total. Shouldn't be too hard to find the code and hack in a freeplay. Figure that's maybe 20% data or blank, and estimate about 2 bytes per line of code on average... so I'd guess it only has maybe 1600 lines of code.

A bigger problem might be burning new EPROMs. I think that has 2708s... or some sort of 1kB device.

This is something that you can do?
 
Better than that... it's something YOU can do!

Start by reading up on 8080 assembly language. It really isn't very difficult:

[sorry, link doesn't work. Google "intel 8080/8085 assembly language programming" it's the first hit, a PDF]

Look at the fully commented Space Invaders disassembly as an example of 8080 code:

http://computerarcheology.com/spaceinvaders/spaceinvaders8080.txt.html

Consult the MAME source for the 8080 black & white games to see differences/similarities between SI & Gun Fight hardware:

http://mamedev.org/source/src/mame/drivers/mw8080bw.c.html

Then fire it up in MAME with the -debug switch and follow along.
Alternatively, concatenate all of the ROMs in order, and use any Z80 disassembler (e.g. z80dasm) to produce a complete disassembly.

You might start by focusing on sections of code that use the "IN" opcode, to read input ports. That should eventually lead you to the code that detects a coin, and increments the byte somewhere in RAM that stores the number of credits. With that, you can start looking for other sections of code that read that same byte. One of those will be the code that checks to see if you have a credit when the start button is pressed. If you simply want an "all-freeplay-all-the-time" hack, you can probably NOP out a few of those opcodes to accomplish it. If you want to get fancy and make it dipswitch selectable, a bit more code is in order...
 
Last edited:
Well, I was sitting down, relaxing this evening, and found I had some time to kill when I saw this post... at 6:35PM. (EDT).

The hack was done and tested at 6:53. 18 minutes to do it, including playing a couple of games. Exactly two bytes were edited. Mind you, this is a very simplistic (dumb, even) hack. It's not dipswitch selectable (always freeplay). It doesn't say "freeplay" or anything (still says "insert coin" in fact). But if you press start, even with no credits, it starts a game.

Enjoy.
 

Attachments

  • 7609g.zip
    963 bytes · Views: 10
Sweet! But to be sure is this from the mame set? (IE intended for 2708?)

And if you don't mind sharing, can you tell me what two bytes were changed? (so I can keep a note incase I ever need to mod another image?)
 
Last edited:
Sweet! But to be sure is this from the mame set? (IE intended for 2708?)

And if you don't mind sharing, can you tell me what two bytes were changed? (so I can keep a note incase I ever need to mod another image?)

Yes, file is from the MAME ROM set. I don't have a Gun Fight, so MAME is all I can do. It's a 1K file... I guess it's a 2708 on the PCB, but may be some other old-ass 1K PROM. I assume it's possible to combine the images and re-strab the PCB for 2716s, but again I don't have the hardware to verify.

Bytes changed (offsets into the subject ROM): 0x176 from C8 to 00, 0x177 from 3D to 00. This could be easily seen using the DOS command FC. "FC /B file1 file2" will do a binary compare and report the differences byte by byte.


The first byte changes a "rz" opcode, that originally would return if the credit count is zero, to a "nop", so execution proceeds even if there are zero credits. The 2nd changes a decrement opcode to another "nop". The decrement originally reduced the credit count by 1. But we don't want to do that if there are 0 credits, as it would leave us with 255 credits.

A side-effect of this hack I noticed while playing some more is that if you DO coin it up (so that there is no longer 0 credits), it'll keep re-starting ("HEY PARDNER! YOU'VE GOT CREDIT!") for ever (because the code to decrement the credits is gone). Well, not forever, just until you power cycle it. So... with this freeplay hack, don't insert a credit! (shouldn't be a problem... that's why people want freeplay hacks, so they don't have to insert coins)
 
Last edited:
Well, I was sitting down, relaxing this evening, and found I had some time to kill when I saw this post... at 6:35PM. (EDT).

The hack was done and tested at 6:53. 18 minutes to do it, including playing a couple of games. Exactly two bytes were edited. Mind you, this is a very simplistic (dumb, even) hack. It's not dipswitch selectable (always freeplay). It doesn't say "freeplay" or anything (still says "insert coin" in fact). But if you press start, even with no credits, it starts a game.

Enjoy.

Nice work. Now you should try this on Sea Wolf.
 
Nice work. Now you should try this on Sea Wolf.

I outlined the approach in an earlier post, and now demonstrated the concept. Applying it so another game is left as an exercise for the reader ;)

Besides, the wife is home now, and it's time to watch Jeopardy...
 
Yes, file is from the MAME ROM set. I don't have a Gun Fight, so MAME is all I can do. It's a 1K file... I guess it's a 2708 on the PCB, but may be some other old-ass 1K PROM. I assume it's possible to combine the images and re-strab the PCB for 2716s, but again I don't have the hardware to verify.

Bytes changed (offsets into the subject ROM): 0x176 from C8 to 00, 0x177 from 3D to 00. This could be easily seen using the DOS command FC. "FC /B file1 file2" will do a binary compare and report the differences byte by byte.


The first byte changes a "rz" opcode, that originally would return if the credit count is zero, to a "nop", so execution proceeds even if there are zero credits. The 2nd changes a decrement opcode to another "nop". The decrement originally reduced the credit count by 1. But we don't want to do that if there are 0 credits, as it would leave us with 255 credits.

A side-effect of this hack I noticed while playing some more is that if you DO coin it up (so that there is no longer 0 credits), it'll keep re-starting ("HEY PARDNER! YOU'VE GOT CREDIT!") for ever (because the code to decrement the credits is gone). Well, not forever, just until you power cycle it. So... with this freeplay hack, don't insert a credit! (shouldn't be a problem... that's why people want freeplay hacks, so they don't have to insert coins)

awesome! i wish i was that smart!!!! thanks.....
 
As a bonus, if you want to burn another ROM, here's a hack to change "INSERT COIN" to "FREE PLAY" at the bottom of the screen.

So since the freeplay ROM requires you to press the "START" button to begin a game (whereas the original started automatically when it was coined up), I decided to take a look as the start button. I googled and found a pic of the control panel... and there was no start button(!) Searched a little more... aparently these had a coin door with a start-button built in (kinda like a pinball coin door). Wacky.
 

Attachments

  • 0000.png
    0000.png
    980 bytes · Views: 25
  • 7609e.zip
    728 bytes · Views: 12
Mame rom set is basically for 2708's, but pretty much all the GF boardsets I've worked on so far have been 3604's or 7641's, which since there's 8 I'm assuming are along the lines of 3604's.

The mame set doesn't match what the 3609 set has either - 3 bytes are different, but I haven't had the time or motivation to figure out why they're different (yet).

Ironically I'm working on Gunfight rom issues tonight, so if I have an extra 2716 I'll fry one up and let you know if/how it works :)
 
As a bonus, if you want to burn another ROM, here's a hack to change "INSERT COIN" to "FREE PLAY" at the bottom of the screen.

So since the freeplay ROM requires you to press the "START" button to begin a game (whereas the original started automatically when it was coined up), I decided to take a look as the start button. I googled and found a pic of the control panel... and there was no start button(!) Searched a little more... aparently these had a coin door with a start-button built in (kinda like a pinball coin door). Wacky.

Cool deal....thanks! I just gotta figure out how these are put into 2716s now and to what location on pcb. I have two pcbs I'm tracking down issues on and think both are bad roms.

Thanks again!
 
Mame rom set is basically for 2708's, but pretty much all the GF boardsets I've worked on so far have been 3604's or 7641's, which since there's 8 I'm assuming are along the lines of 3604's.

The mame set doesn't match what the 3609 set has either - 3 bytes are different, but I haven't had the time or motivation to figure out why they're different (yet).

Ironically I'm working on Gunfight rom issues tonight, so if I have an extra 2716 I'll fry one up and let you know if/how it works :)

Yeah what u said....maybe you can help me figure that out haha.
 
Back
Top Bottom