Matthew Hagerty

FPGA, VHDL, VDP, 9918A, electronics, PCB


F18A F18A-MK2
Original F18A F18A-MK2

The F18A is a direct pin-compatible replacement for the TMS-9918A VDP Family that was used in many retro-computers and game consoles from the early to mid 1980’s. The F18A’s primary goal is to provide a pixel-perfect output video signal that can be used directly with a modern computer display.

Great effort has been put into making the F18A physically, electrically, and software compatible with the original 9918A VDP, so all existing software should run correctly on a system with an F18A installed.

For new software development, the F18A is programmed exactly like the 9918A, so any existing documentation, techniques, and development environments that work with the 9918A will also work with the F18A.

The F18A also provides many enhancements over the 9918A, and those features will be the focus of this documentation. Having a basic understanding of the 9918A will help understand this documentation, since there is a lot of information covered in the original datasheet and programmer’s guide (see links above) that might not be repeated here.


The original F18A, or just “F18A”, was released in 2012 and continued to be available until late 2017. In total, around 550 F18A boards were produced. The F18A was physically larger than the DIP-40 package of the TMS-9918A IC, mostly due to manufacturing limitations of the time at the production quantities of the F18A.

Because the F18A is twice as wide as the 9918A, there were problems fitting the F18A into many of the various systems in which the F18A could be used. To accommodate some of the more popular systems, two variations of PCB-pins were used: a “tall pins” and “short pins” option was offered, as well as a custom adapter board for the Coleco ADAM computer.

F18A-pins F18A-ADAM
F18A Pin Comparison F18A with ADAM Adapter

Even with these options, the F18A was still not able to be used in many systems due to its size.

The F18A-MK2, or just “MK2” will be available in 2020 and fixes first-and-foremost the problem of the F18A being larger than the 9918A. Because of advancements in PCB technology since 2012, the capabilities available to hobbyist is now at a point where the MK2 can be created to fit in the original DIP-40 package of the 9918A, eliminating the physical problems that the F18A had.

MK2-9918A MK2-socket
MK2 prototype next to 9918A MK2 prototype next to DIP-40 socket

The other primary design changes of the MK2 are that it will output digital DVI and VGA video, as well as audio.


The F18A and MK2 have all the features of the original 9918A VDP, as well as some additional enhancements listed below. The features are chosen to match the capabilities of the computers available in the early to mid 1980’s. You will not see features such as 24-bit color in the F18A since, even though that would be possible, that kind of capability does not fit with the computers or game-systems that used the original 9918A VDP.

F18A MK2 Feature
X X 80-column (T80) mode.
X X Position-based attributes for T80 mode, so each tile can have its own foreground and background color.
X X 64 programmable 12-bit (4096) color palette registers.
X X High-speed “data port mode” for fast palette register updating.
X X Three enhanced color modes (ECM) that provide 1, 2, or 3 bits-per-pixel allowing 2, 4, or 8 colors per-pixel for each tile and sprite.
X X 32-sprites on a line at once (can eliminate sprite flicker if software did not implement sprite-rotation).
X X Each sprite can have its own size (8x8 or 16x16), and X/Y pattern flip.
X X 30-column mode that provides 32x30 tiles (same as the NES).
X X Two independent tile-layers, each with their own name, color, and pattern table base addresses.
X X Per-tile attributes so each tile can have its own foreground and background color, priority over sprites, X/Y pattern flip, and transparency.
X X Independent horizontal and vertical pixel-scrolling for each tile layer.
X X Tile page sizes of 1x1, 2x1, 1x2, and 2x2 to support edge-to-edge pixel scrolling.
X X Bitmap layer with programmable size from 1x1 to 256x192 pixels, pixel locatable, 4-colors per pixel, 16-colors per pixel “fat pixel” mode, sprite priority, and palette select.
X X Programmable horizontal-line interrupt.
X X Programmable signed increment value for the VDP Address Register.
X X Ability to read all VDP Registers.
X X Programmable 46-bit decimal counter with 10ns (nanosecond) precision (can count 18.2044 hours with 10ns accuracy).
X X A 100MHz TMS9900-based “GPU” processor that can execute programs in VRAM, has full access to all VDP Registers, a high-speed DMA, and dedicated pixel-plotting and address instructions.
X X Virtual scan-lines for a retro CRT look.
X X VGA 640x480 60Hz video output.
  X DVI video output.
  X 12-bit audio input/output capability.
  X 512K additional VRAM.
  X USB firmware update.
  X DIP-40 form-factor (52mm x 19mm / 2.0” x 0.75”).
  X 16 general-purpose 3.3V I/O pins.
  X 8 level-shifted 5V tolerant direction-controlled I/O pins.
  X 5 level-shifted 5V tolerant input pins.
  X 1 buffered output pin.
  X Direct access to the ADC input.
  X Direct access to the DAC output.