I have added Michael Matte's Bally Arcade/Astrocade Gunfight Assembly Language Breakdown to BallyAlley.com.
I wrote an overview for the document, which I'm including here:
The breakdown includes:
1) Overview and Q&A - An introduction and overview of the Z80 machine language breakdown of Gunfight. Also included is some background material asked of Michael Matte in a Q&A format.
2) Gunfight Breakdown (Typed) - The first two pages of the breakdown have been typed and are included to make the pdf document friendlier to Internet search engines.
3) Handwritten Gunfight Breakdown - Michael Matte's complete, 42-page breakdown of the Astrocade game Gunfight. This breakdown will be most useful if used with the source code for the Bally's 8K system ROM, which is available in the "Nutting Manual."
4) Errata Sheet - Two pages of corrections for errors and/or omissions made in the handwritten document.
The Bally Arcade/Astrocade game system was released in January 1978 by Bally. It was re-released in 1981 by Astrovision, Inc. The system has an 8K ROM with four built-in programs: Gunfight, Checkmate, Calculator and Scribbling. Gunfight is a home port of the B&W arcade game Gunfight, released by Midway in November 1975. The original release of the game was called Western Gun: it was released by Taito in Japan and used, as was the convention at the time, discrete logic (i.e. the system didn't use a CPU). The North American arcade version of Gunfight moved away from the original design. It is usually credited as the first arcade game to use a microprocessor (the Intel 8080 CPU). The Midway arcade version of Gunfight was programmed by Tom McHugh.
The Astrocade version of Gunfight is probably the most sophisticated of the four programs built into the Astrocade. The Software and Hardware for the Bally Arcade - A Technical Description (aka "Nutting Manual" and/or "The Handbook of Hardware & Software") has the complete Z80 assembling language source listing for the game. Many people used this manual, which could be purchased through the Arcadian newsletter, to learn to program the Bally Arcade/Astrocade.
In the 1980s, Michael Matte, a passionate Astrocade user, used the source listing for the 8K ROM as a basis for his detailed breakdown of Gunfight. Michael created the breakdown "to provide beginner assembly or machine language programmers an inside look at the game Gunfight. The documentation will reveal how on-board subroutines in the System ROM can be used to execute particular tasks. The 'special routines' listing can be used as a reference source for programming demos or games."
Michael Matte: Questions & Answers
In May of 2017, Michael Matte sent me his 42-page handwritten Gunfight breakdown so that it could be archived on BallyAlley.com. The following are a few questions, asked via email, about the creation of the intriguing document.
Adam: When did you write the breakdown of Gunfight? How long did it take you?
Michael: "Wrote this breakdown back in the 80's. Don't recall what year I wrote it or how long it took. Must have rewritten it because the breakdown is well organized. Had no word processor or printer at that time."
Adam: Did you ever share it with anyone before now?
Michael: "I wrote it for myself for future reference. I did not share it with anyone. It does provide insight as to how one can use the on-board subroutines to create a demo or game. I feel it does a better job with comments then what I have seen so far in Gunfight documentation. I also plan this style of documentation when I breakdown The Incredible Wizard with a greater emphasis on comments and details on the many routines utilized to create all that wonderful graphics and animation. The intent of my IW breakdown will be to open the door for those interested in developing skills in programming graphics in assembly or machine language and for future reference."
Adam: What was your experience with Z80 machine language when you began the project?
Michael: "I developed my skills prior to writing my Gunfight breakdown by attacking the on-board subroutines. I first broke down the UPI [User Program Interface] instruction by instruction using the Nutting Manual's ROM documentation, then broke down a bunch of the on-board sub's with an emphasis on the graphics routines. I documented that effort for future reference and learned a lot. I also broke down some of Andy Guevara's ML work and learned a great deal. Having Bit Fiddler's MLM [Machine Language Manager cartridge] was great because it allowed me to experiment and write ML routines and then eventually come up with high-res MLM."
Adam: What tools did you use to examine the game's code (i.e. the MLM)?
Michael: "I have 2 books covering Z80 machine and assembly language which provide detailed info on using the Z80 instructions and other goodies. Having the MLM breakdown as part of the MLM User Manual plus my previous ML experience allowed me to figure out how MLM worked."
Adam: I presume that you based your breakdown on the ROM's Z80 source code that was included with the "Nutting Manual." Is that correct?
Michael: "I did use the Nutting Manual's breakdown on Gunfight as a guide and then expanded that info documenting it with a non-traditional style for future reference in creating or breaking down an Astrocade game. After looking at my Gunfight breakdown recently, I could have spent more time on it with regard to comments because there are some parts of the breakdown that are vague. However, when I get to the advanced programming examples in my 'In-Depth Look At..' series, I will be presenting a bunch of ML examples using my Gunfight breakdown as a guide and could add some more comments (for my use) to it then."
Enjoy Michael's very detailed breakdown of Gunfight!