Close

Video output on VGA!

A project log for RC2016/99: TI-99/4A clone using TMS99105 CPU

Retrochallenge 2016/10 entry and winner: try to build a TI-99/4A clone using a TMS99105 CPU and an FPGA. In a month...

erik-piehlErik Piehl 10/08/2016 at 20:160 Comments

The week was busy with real life, but today I had time to work on the video hardware implementation within the FPGA. I can't believe how many bugs I made before getting at least something working.

The TI-99/4A uses the TMS9918 video processor. It has four graphics modes and also it supports sprites. The TI BASIC extensively uses the VDP memory for program storage, so that part has to work to be able to do anything.

I did earlier on the week some pixels displayed, but that was using a dump frame buffer (although it already included VGA timing generator). That was pretty easy. But getting TMS9918 type memory access working was not so easy, and I wanted to do it in a specific way, so that that the TMS9918 "compatible" circuit renders to a line buffer. Multiple rendering passes can be implemented, allowing essentially unlimited amount of sprites - once I get that far. Here is a video of a demo program I wrote:

Even if the demo shows the TI-99/4A launch screen, that is just to check that the graphics is kind of working... There is no GROM or BASIC ROM in here yet. The software is uploaded from PC to SRAM, the TMS99105 l copies data from SRAM to VDP RAM, and basically does all the drawing seen here.

I also drew a simple block diagram to illustrate what this thing does at the moment. It is nowhere close to a full TI-99/4A yet, but it is starting to shape up.

Discussions