Z80 TV Game
Introduction
The specifications are as follows:
4MHz Z80 processor (The timing of the video circuit is derived from a source separate to the computer, so running the CPU at a higher clockspeed would be fairly simple.)
Address space of 32KB for ROM cartridges (ROMs larger than 32KB should be possible with bank switching.)
16KB of system ROM
8KB of separate video RAM
168x210 pixel black/white graphics
60Hz composite video output
1-bit audio output
1 controller (4 direction buttons, 2 fire buttons)
Technical Description
Controller input and audio output are handled by either an Intel 8255 or Zilog Z80PIO I/O controller. There are two sockets on the PCB for either controller, depending on which is easier for you to obtain. These two ICs have to be controlled slightly differently by software, but it's possible to write games that are compatible with both, as demonstrated by the games written by Inufuto.
The controller interface is designed for two-button Sega Master System controllers and will also work with Mega Drive/Genesis controllers. Standard one-button joysticks will also work, aside from the lack of a second button.
The composite sync signal is generated with an EPROM, an unconventional method of simplifying the circuitry. Different ROMs have different data access times, so you may need to experiment with one or two models of ROM before you'll find one that produces a glitchless video signal, due to the high speed at which the raster generator steps through the ROM's address bus.
Fortunately, any size of ROM between 4KB (2732) and 64KB (27512) can be used, so long as the 4KB binary data file (available for download further down this page) is written to the upper 4KB of higher capacity ROMs. During testing, I found that a 150ns ROM worked well, while a 450ns ROM was too slow.
If the prospect of making a lot of cartridges doesn't appeal to you, I've designed a multi-cartridge that holds sixteen 32KB games on one 27C040 ROM. Game selection on the multi-cartridge is performed with DIP switches.
The maximum file size for games is 32KB, but I've designed an experimental bank-switching cartridge PCB (not tested yet!) that should allow games of up to 256KB to be accessed through two configurable 16KB page registers on the cartridge.
Software Development
$0000-$7FFF: Cartridge ROM (32KB)
Cartridge ROM $8000-$BFFF: System RAM (16KB)
System RAM $C000-$DFFF: Video RAM (8KB)
Video RAM $E000-$FFFF: Not used
8255:
Port $00: Controller input (bits 0-5, active low)
Controller input Port $01: Not used
Not used Port $02: Audio output (bit 0)
Audio output Port $03: 8255 internal control register (Must be set to $9A for proper operation!)
Port $00: Controller input (bits 0-5, active low)
Controller input Port $01: Internal control register A (Must be set to $4F for proper operation!)
Internal control register A Port $02: Audio output (bit 0)
Audio output Port $03: Internal control register B (Must be set to $0F for proper operation!)
There's a selection of tools available for programming the Z80 TV Game in C:
The Z88DK development kit supports the Z80 TV Game.
Cate is a C-like programming language and multi-platform compiler developed by Inufuto that can compile code for hundreds of retro systems. Inufuto has ported 20 games written with it to the Z80 TV Game.
Cross-Lib is a multi-platform C programming framework with support for hundreds of retro systems, including the Z80 TV Game.
Changelog
A jumper on the PCB was intended to allow usage of Atari 7800 controllers. After some research (which I should've done before ordering the PCBs...) I realized that the outputs of A7800 controllers are active high, so implementing A7800 controller support would require a lot more circuitry that wasn't worth adding.
I realized that the outputs of A7800 controllers are active high, so implementing A7800 controller support would require a lot more circuitry that wasn't worth adding. The 74LS122 that generates the pixel clock wasn't oscillating, which was due to a misprint on the original schematic.
VCC connected to pin 5 to allow usage of Sega Mega Drive/Genesis controllers.
74LS122 clock circuit fixed.
Downloads
Schematic - Console
PDF document, 941 KB
PCB Gerbers - Console
ZIP archive, 744 KB
KiCad Files - Console
ZIP archive, 1.33 MB - Useful if you want to make modifications to the PCB. Made with KiCad 9.
Interactive Bill of Materials - 32KB ROM Cartridge
HTML document, 338 KB
Schematic - 32KB ROM Cartridge
PDF document, 127 KB
PCB Gerbers - 32KB ROM Cartridge
ZIP archive, 170 KB
KiCad Files - 32KB ROM Cartridge
ZIP archive, 532 KB - Useful if you want to make modifications to the PCB. Made with KiCad 9.
Interactive Bill of Materials - 32KB x 16 Multi-Cartridge
HTML document, 350 KB
Schematic - 32KB x 16 Multi-Cartridge
PDF document, 151 KB
PCB Gerbers - 32KB x 16 Multi-Cartridge
ZIP archive, 191 KB
KiCad Files - 32KB x 16 Multi-Cartridge
ZIP archive, 564 KB - Useful if you want to make modifications to the PCB. Made with KiCad 9.
Interactive Bill of Materials - Experimental 256KB ROM Cartridge
HTML document, 316 KB
Schematic - Experimental 256KB ROM Cartridge
PDF document, 221 KB
PCB Gerbers - Experimental 256KB ROM Cartridge
ZIP archive, 209 KB - Please note that the 256KB cartridge hasn't yet been tested!
KiCad Files - Experimental 256KB ROM Cartridge
ZIP archive, 603 KB - Useful if you want to make modifications to the PCB. Made with KiCad 9.
Custom Fonts
ZIP archive, 8.90 MB - Custom fonts used for the KiCad files. Only needed if you want to modify these files.
Original Schematics
ZIP archive, 1.14 MB - Mr. Isizu's original schematics for the Z80 TV Game, with the 74LS122 timing circuit corrected. Includes the 1980's hand-drawn schematic, which has a different memory map to the 2000's CAD schematic that this PCB, emulators, C devtools, etc. are based on.
Game ROMs
ZIP archive, 922 KB - All the games I know to exist for the Z80 TV Game thus far. Includes two combined ROMs for those who would rather have all 26 games on 2 multi-cartridges. If you know of any games that aren't mentioned on this page (or you've written a new game), please let me know! My email address is on the home page.
32KB Cartridge Dimensions
PDF document, 61.3 KB - Useful for designing a 3D printed cartridge enclosure. Note that the standard PCB thickness used by most manufacturers is 1.6mm.
32KB x 16 Multi-Cartridge Dimensions
PDF document, 67.1 KB - Useful for designing a 3D printed cartridge enclosure. Note that the standard PCB thickness used by most manufacturers is 1.6mm.
Z80 TV Game Logo (1920 x 846) (Variant 1)
PNG image, 1.21 MB - The logo seen at the top of the page in full resolution.
Z80 TV Game Logo (1920 x 846) (Variant 2)
PNG image, 1.08 MB - The logo seen at the top of the page in full resolution.
Inufuto: Developer of Cate, a multi-platform compiler that can generate software for the Z80 TV Game. All 20 of the games he has created with it thus far have Z80 TV Game versions. Inufuto has also designed a PCB version of the Z80 TV Game that outputs VGA video via a Raspberry Pi Pico.
Takeda Toshiya: Developer of eZ80TVGAME, a Z80 TV Game emulator for Windows.
lsluk: Developer of vdmgr, a multi-platform emulator for Windows that supports the Z80 TV Game.
Last updated on Oct 26, 2025.
This page was first uploaded on Oct 26, 2025.