Doctor Volt's Eight-Bit Graphics Card Brings TI's TMS9918 VDP to Your Next Arduino Project

This relatively simple vintage "GPU" board comes with an open source Arduino library with text, graphics, and sprite examples.

Gareth Halfacree
13 days agoRetroTech / HW101

Pseudonymous YouTuber "Doctor Volt" has put together an Arduino library with a difference: it's designed to drive a home-built "graphics card" add-on, based around the Texas Instruments TMS9918 Video Display Processor (VDP).

Launched back in 1979, TI's TMS9918 found a home in a range of home computers — from the company's own TI-99/4 to the ColecoVision, Tatung Einstein, and Casio PV-2000 — as a means of driving a display offering up to 256×192 resolution in 15 different colors. Today, the chip is largely obsolete — but that hasn't stopped Doctor Volt from putting together a graphics card based on the part.

This compact add-on board gives your Arduino an eight-bit GPU. (📹: Doctor Volt)

"The VDP can be connected directly to an 8-bit data bus," Volt explains of the project. "It uses its own dynamic RAM to which it has exclusive access. In the manual you can find an application example for 16kB of video RAM, made with eight MOS 4116 dynamic RAM chips.

"But the 4116 has several downsides. First it needs three different supply voltages. And as we need eight of these ICs, the circuit quickly becomes messy and didn't work for me either. Furthermore, the 4116s are no longer made, so with an average price of 3 bucks per piece, they are rather expensive on Ebay."

The salvation for Volt's efforts came in the form of a project posted to showing how three 74LS575 chips can sit between the VDP and a more readily-accessible 32kB SRAM part. With that issue resolved, Volt was able to design his own variant of the TMS9918 interface — and connect it to an Arduino microcontroller board, or any other device capable of offering an eight-bit bus.

Next came software: A custom-written Arduino library, designed for the Arduino Uno and Nano boards though with broader compatibility with a little modification to the source code. Four examples are included, to show how the chip can be integrated into projects: A 40×24 text mode, a graphics mode with 32×24 characters, an image loader for 256×192 color pictures sent from a desktop via USB, and a sprite-handling demo.

Full details are available in Volt's YouTube video, while the library has been released to GitHub under the reciprocal GNU General Public License 3 along with a schematic for wiring the chip to your board.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire:
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles