Recreating a Homebrew Game System from 1987

2 days ago 1

Z80 TV Game logo

Z80 TV Game

Introduction

Z80 TV Game in operationIn 1987, an electronics hobbyist from Japan developed this 8-bit games console entirely from scratch! Despite the simplicity of its circuitry (Only 19 ICs are needed to construct the system, none of which are dedicated graphics chips), it's possible to write surprisingly advanced games for it!

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)
As of the time of writing, 26 game programs have been developed for the Z80 TV Game: 6 games by Mr. Isizu (the designer of the Z80 TV Game), and 20 games by Inufuto, who has developed a multi-platform compiler that supports the Z80 TV Game.

Technical Description

Close-up of assembled systemThe circuitry of the Z80 TV Game is relatively easy to understand, making it a good resource for learning how a computer generates a video signal.

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

Close-up of 32KB cartridgesThe memory map of the Z80 TV Game is as follows:
  • $0000-$7FFF: Cartridge ROM (32KB)
  • $8000-$BFFF: System RAM (16KB)
  • $C000-$DFFF: Video RAM (8KB)
  • $E000-$FFFF: Not used
Since it's possible to use either the 8255 or Z80PIO to handle I/O, there are two possible I/O maps:

8255:

  • Port $00: Controller input (bits 0-5, active low)
  • Port $01: Not used
  • Port $02: Audio output (bit 0)
  • Port $03: 8255 internal control register (Must be set to $9A for proper operation!)
Z80PIO:
  • Port $00: Controller input (bits 0-5, active low)
  • Port $01: Internal control register A (Must be set to $4F for proper operation!)
  • Port $02: Audio output (bit 0)
  • Port $03: Internal control register B (Must be set to $0F for proper operation!)
Z80 TV Game in operationAs mentioned earlier, 6 games (also a larger ROM containing all 6 games and a selection menu) have been developed by the creator of the Z80 TV Game, Mr. Isizu. These games were written in Z80 assembly, and the source code listings (with code comments in Japanese) are available for download here.

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

Revision 0:
Initial prototype, as seen in the photos.
  • 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.
  • The 74LS122 that generates the pixel clock wasn't oscillating, which was due to a misprint on the original schematic.
Revision 1:
This is the version available for download on this page.
  • VCC connected to pin 5 to allow usage of Sega Mega Drive/Genesis controllers.
  • 74LS122 clock circuit fixed.

Downloads

Close-up of assembled system Interactive Bill of Materials - Console
    HTML document, 531 KB

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

Z80 TV Game in front of a local landmark 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.

3D render of 32KB cartridge 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.


Thanks to:
    Mr. Isizu: The original designer of the Z80 TV Game.

    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.

Read Entire Article