You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Video: 256x224 monochrome at 60 FPS, backed by a 7168x8 bit
framebuffer. IRQs triggered on lines 96 and 224. The screen was
rotated 90 degrees to be in portrait orientation.
Sound: TI SN76477 connected to the CPU via two 8-bit ports
Inputs: coin deposit detector, two sets of buttons for starting the
game, and moving and firing, for two-player mode.
Clash implementation
CPU: Implemented based on abstract descriptions of Intel 8080 ISA,
with no reference to real implementation. Not cycle-accurate, but
aims to pass various functional tests.
Video: Standard 640x480@60Hz VGA, with 25.175MHz pixel
clock. Logical "pixels" are scaled 2x2, but the layout is not
rotated to keep interrupt timings.
Framebuffer: The video system has priority over the CPU: memory
reads from the framebuffer area will block the CPU until the video
system is done reading.
Sound: Unimplemented.
Inputs:
Direct pushbuttons
PS/2 keyboard: C to deposit a coin, Enter to start
1P game, and Left / Right / RCtrl to move and fire with P1.
Limitations
This implementation doesn't aim to be cycle-accurate; it wouldn't
matter for much anyway, since the CPU runs at the VGA output pixel
clock of 25 MHz, whereas the real cabinet ran at 2 MHz. Luckily, Space
Invaders does all animations keyed to two 60 Hz timers triggered by
the video system.
Sound is not implemented at all.
The back-panel DIP switches are not yet mapped to anything.
Building
Included are rudimentary Shake rules to build for various hobbyist
FPGA dev boards:
The Xilinx Spartan-6 based Papilio Pro or the Spartan-3 based
Papilio One, both with the Arcade mega-wing. These use the Xilinx ISE
toolchain.
The Xilinx Artrix-7 based Nexys A7. This uses the Xilinx Vivado
toolchain.
Make a file called build.mk with content similar to the following:
The ISE, VIVADO, and QUARTUS fields are to optionally wrap
invocations of the Xilinx ISE / Vivado and Intel Quartus toolchains in
case you want to run them via Docker, Nix, shell scripts that set some
environment variables, etc.
Then you can build for the Papilio Pro by running the included mk
script.