Intel 8080-based Space Invaders arcade machine implemented on an FPGA, written in CLaSH
Tcl
50
51 commits
updated Dec 4, 2022
This is a Clash implementation of the 1978 Space Invaders arcade machine by Taito.
This code is part of the book Retrocomputing with Clash: Haskell for FPGA Hardware Design at https://unsafePerform.IO/retroclash/.
C to deposit a coin, Enter to start
1P game, and Left / Right / RCtrl to move and fire with P1.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.
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:
TARGET = papilio-pro-arcade
ISE = ~/prog/docker/xilinx-14.7-ubuntu-12.04/run
VIVADO = ~/prog/docker/xilinx-2019.1-ubuntu-18.04/run
QUARTUS = ~/prog/quartus/wrapper.sh --
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.
51 commits
Tcl
50.0%
Haskell
40.2%
Verilog
9.8%
Intel 8080-based Space Invaders arcade machine implemented on an FPGA, written in CLaSH
Tcl
50
51 commits
updated Dec 4, 2022
This is a Clash implementation of the 1978 Space Invaders arcade machine by Taito.
This code is part of the book Retrocomputing with Clash: Haskell for FPGA Hardware Design at https://unsafePerform.IO/retroclash/.
C to deposit a coin, Enter to start
1P game, and Left / Right / RCtrl to move and fire with P1.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.
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:
TARGET = papilio-pro-arcade
ISE = ~/prog/docker/xilinx-14.7-ubuntu-12.04/run
VIVADO = ~/prog/docker/xilinx-2019.1-ubuntu-18.04/run
QUARTUS = ~/prog/quartus/wrapper.sh --
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.
51 commits
Tcl
50.0%
Haskell
40.2%
Verilog
9.8%