Arcade hardware, 8-bit stuff

Information collected while fooling around with arcade boards and emulators, a veritable showcase of html-finesse.

Glenn Neidermeier, June '03

Hardware

Boards I own:
Mappy, also have original manual for this one.
Galaxian

Test bench consists of Commodore 1084 RGB monitor, and a PC switch-mode power supply.

EEPROM Programmer

Many old arcade boards use either mask ROMs or EPROM parts (windowed part, UV eraseable). Mask ROMS and EPROMs can often be replaced with EEPROMs (electrically eraseable PROM) so long as the memory, address, control, and supply connections are on the same pins as the original part.

This EEPROM programmer connects to the PC parallel port and features the use of the 8243 I/O expander integrated circuit. The original design is by Chris Courson and includes driver software written in QBASIC. I have adapted the software to C, for use under Linux. The 8243 and spec sheet can be had through Jameco (a reliable, quick shipper). Linux specific portions of the programmer software are taken from the eeprom programmer published by Jay F. Kominek (public domain, 1999, 2000). (This hardware design used '299 and '164 parts for the parallel port I/O expansion, but I didn't have the parts.)

Download hardware specifications and software source code. Refer to the readme file in the archive for description of files and functionality. Schematic and code files are included from Chris Courson's site (which is still up to this day), and the webpage from his site is provided as documentation of the program (describes theory of operation and shows how to set the dip-switches to program various devices). An additional text file describing 8243 is also included, which I found in an obscure location and is no longer available (at the time, there was no other 8243 spec to be found on the web, not even on Jameco site so this 8243-IO file was a golden find). The original schematic in .gif format has been captured in CadSoft Eagle Layout Editor and a board layout generated (board was never built, and indeed is wrong - used point-to-point wiring instead). Note that I changed the hardware design from the original to use C2 (par-port pin-16) since C2 is non-inverted and makes the code easier to follow. Parallel port must be in EPP mode to enable reading from data lines D0-D7 (this is typically a BIOS option). Must be run as "root" user (security, what security?).

There is no Makefile. The code is in one file - compile it with
"gcc eeprom.c -o eep"
then type "./eep -?" to get the command options, including a (very crude) representation of the dip-switch settings for various devices.

This programmer can be used with many 24-pin and 28-pin EEPROM parts such as 2816, 2832, 2864. It can read the mask ROMs and EPROM parts but cannot program them because a higher voltage such as 12 or 25v is typically required to enable programming mode.

Any questions about this C-language implementation for this 8243-base EEPROM programmer should be directed to Glenn Neidermeier

Galaga "source code"

I disassembled the ROM images to Namco Galaga arcade game.
A considerable portion of it is commented.
CPU0 code
CPU1 code
CPU2 code

The asm files were generated by running traces from built-in debugger under xmame emulator. This makes it possible to sort out what is code and what is data. Finally, a bunch of UNIX command tools are used on a GNU/Linux system to sort, format, slice and dice the traces into something that can be reassembled and exactly reproduce the original ROM dump.

Interesting arcade code sites:
Pac Man and Pengo hacking.
Sourcing Qbert.

Z80 Tools

The correctness of the ROM disassembly was verified by reassembling with a modified version of z80-asm with added support for the several undocumented opcodes used in the images. Z80-asm, as distributed by the program author Petr Kulhavy, is provided in source form and compiles "out of the box" on a GNU/Linux system. The code is fairly easy to follow and adding several undocumented opcodes was relatively easy. TODO: sort out those changes, create a patch, and contact the original author. Note that the original source tarball of Z80-asm didn't seem to have any numerical source revision indicated, but I am confident that I worked against the "30.9.2001" version.

dz80 by Mark Incley has also proven to be a useful Z80 tool.

Galaxian Daughter Board (Incomplete)

Galaxian does not use the auxiliary 50-pin edge connector. All Z80 memory, address, I/O, and control signals are exported to this edge connector. The 50-pin card edge connector itself appears to be a somewhat standard part (has standard 1/10" pin spacing anyway). I found one on some old crusty computer from the 80's (a reliable source for many of these parts common and uncommon is Mike's Arcade Shop and Mike is also a MAME contributor so he must be a good guy. Mike will have it to you quicker than you can say "Digi-Key catalog). Later NAMCO hardware of that era (around 1980) such as Pac Man, used the connector to expand the addressable memory space for program ROMs (refer to schematic of the particular hardware for exact pinout). The memory board (hardware spec in Eagle format provided) may be useful as a starting point to design a ROM emulator or other device for attachment to this type of mother board.


This page created in vim
Fight the power!