Spotlight › ARCADE
ARCADE
Seven arcade games from 1975 to 1982, played on their boards' own programs. Each board's program was translated to 8086 code before ARCADE shipped, so a 4.77 MHz IBM PC plays Space Invaders at the arcade's speed.
No game comes with it. You add the ROM sets you own, and ARCADE checks every chip before it plays one.
- Arcade boards
- 7
- Space Invaders on a 4.77 MHz PC
- 59.4-59.9 frames/s
- ROM bytes on the disk
- 0
01 / Boards and ROMs
An arcade game is a board and a program
An arcade game was a cabinet with a circuit board inside. The board was a small computer built for one game. It had a processor, some memory, a circuit that drew the picture, and wires to the coin slot and the controls.
The game itself was a program stored in ROM chips, read-only memory fitted to the board. Copy those chips into files and you have a ROM set. MAME, the long-running arcade emulator, names each set and each chip, and those names are how ARCADE knows a set.
ARCADE plays seven boards: Space Invaders (Taito, 1978), Space Invaders Part II and Lunar Rescue (Taito, 1979), Gun Fight (Midway, 1975), Sea Wolf (Midway, 1976), Q*bert (Gottlieb, 1982) and Pac-Man (Namco, 1980). Five of them ran on an Intel 8080, the chip before the 8086. Pac-Man ran on a Zilog Z80. Q*bert ran on an Intel 8088, the same processor as the IBM PC.
Each game runs its board's own program, not a copy written to look like it. ARCADE supplies the rest of the board: the picture, the sound, the coin slot and the controls.
02 / The games
The games, coined and started
Full screen, captured from os8088 running in QEMU. Q*bert is in the next section.
03 / Translated ahead of time
Translated ahead of time, not emulated
Why a 4.77 MHz PC can keep up with a 1978 arcade board.
An emulator usually imitates the board's processor while the game runs. It reads each of the game's instructions, works out what it means, and then does it. Every game instruction costs many instructions on the machine doing the imitating. That is fine on a modern computer and too much for an IBM PC.
ARCADE does that work once, before the program ships. A translator read each board's whole program and wrote matching 8086 code, one game instruction at a time. Space Invaders came to 4,366 of them. When you play, the PC runs that code directly. Nothing reads or decodes a game instruction while the game runs.
That only works because an arcade program is small and never changes. Space Invaders is 8KB. Its program is never swapped for another and never rewritten while it runs.
Checked against a model
A second, simpler emulator of the Space Invaders board was written to check the translation. The two ran side by side for 600 frames and compared the processor's registers at every game instruction: 2,293,923 instructions, all in agreement.
The board's speed
The board's interrupts come from the PC's own timer, so the game keeps its time even when the PC is slow. On a 4.77 MHz IBM PC, Space Invaders delivers 59.4 to 59.9 frames a second. The real board made 59.54.
No ROM in the program
The translated code ships with the board's own bytes left out, as holes. When you pick a game, ARCADE reads your ROM file, checks its checksum and fills the holes. ARCADE.O88 is 193KB with all seven boards.
Sound
With a Sound Blaster every sound plays at once, mixed. Space Invaders' sounds are synthesised for this program, not recorded. Pac-Man's three voices are its own sound chip, played sample by sample. An AdLib plays the voices on its FM chip, and otherwise the PC speaker plays one sound at a time.
Q*bert needs no translation
Q*bert's board used a 5 MHz Intel 8088. That is the PC's own processor, so its program runs as it is, in a 64KB block of the PC's memory. A short list of patches changes a few addresses, so that the game's writes to its hardware land where ARCADE can read them, and so that the game hands control back once a frame.
The game itself needs about a tenth of a 4.77 MHz 8088. The picture is the expensive part. So on an 8088 the game keeps its full speed, 61.5 frames a second against the board's 61.42, and the screen catches up in steps: it redraws 26 to 29 small patches of changed tiles a second. A 286 draws every frame.
04 / What it does not do
What it does not do
No games included
There is no ROM on the disk and none in the os8088 source. The games belong to Taito, Midway, Gottlieb (now Sony Pictures Entertainment) and Bandai Namco. Each set must match the chips ARCADE was made for, checked chip by chip. ARCADE plays these seven boards and no others.
Pac-Man is for a 286
On an XT, Pac-Man runs a frame or two a second. A 16 MHz 286 gets most of its speed. Pac-Man and Q*bert need VGA. The other five also play on Hercules and CGA, in black and white as the board drew them.
Full screen only
Games play full screen, never in a window, and there are no save states. If a game reaches code the translator never saw, it stops and says where, rather than guessing.
Some sounds are missing
Q*bert's sound board runs live only on a 386 or faster, and its speech is not spoken. On an 8088 or a 286, Q*bert is silent. Lunar Rescue's end-of-level tunes are not played.
05 / Run ARCADE
Run ARCADE
-
The disk
The release zip carries ARCADE in
PROGRAMS/ARCADE, in all four disk sizes. On the 286 kernel, use1440K/286-PLUS/PROGRAMS/ARCADEor1200K/286-PLUS/PROGRAMS/ARCADE, which keeps ARCADE's memory above the first megabyte where the machine has it. -
Your ROM sets
Open
ARCADE.O88and choose Game > Add ROM sets.... Pick a MAME set you own, such asinvaders.ziporqbert.zip. ARCADE checks each chip and writes one file, such asQBERT.ROM, beside the zip. A split Pac-Man needspuckman.zipin the same folder. It is done once per set. -
Play
Choose a game and press Enter. 5 or C is a coin, 1 and 2 are the starts, the arrows move and Space fires; each game's card lists its own keys. P pauses, F1 shows the game's card, and Esc goes back to the cabinet with the game waiting.