A New Video Display Processor - The VideoBeast Project
Building an 8-bit computer or expanding an existing retro machine consistently comes up against one problem - video is hard. Microcontrollers like the Pico or ESP32 provide quick solutions that hide serious limitations. Insufficient internal video ram, devices running at or beyond their limits, hacks for each different display arrangement and restricted bandwidth to the host computer are all common issues.
Such systems are also difficult to program on. Timing is unpredictable, the display state is opaque and functions are often limited to the precise use case the firmware was designed for. It's not surprising many developers miss the purity of classic video display processors.
VideoBeast is intended to provide that purity. It behaves like an old-school memory mapped display whilst providing the powerful compositing features of 2D arcade boards, 1 megabyte of video ram and modern display resolutions. It interfaces directly with standard 5 volt, 8 bit busses and outputs digital video that can easily translated to a VGA signal, with an eye on supporting other output formats later on. As a bonus, it also incorporates an SD-Card interface, handling all of the voltage translation for the host system.
Whilst VideoBeast was always planned as an expansion for MicroBeast, the interface is host agnostic - VideoBeast should work with any system that can write to 4,8 or 16K static RAM chips. It imposes no timing restrictions on the host computer, other than an estimated 70ns access time.
Most importantly, the hardware is designed to be simple to program yet deliver usable power for 8-bit systems. This is not about absolute resolution or colour depth - both of which can overwhelm host processors. Instead, multiple independent text, tile, bitmap and sprite layers can be manipulated through a small register set. The large video RAM means that a thousand sprite patterns, or four thousand tiles can be pre-loaded, as well as four software fonts and a number of full-screen bitmaps. These can then be efficiently positioned on screen with all the conveniences of transparency, double buffering, raster effects and scan-line interrupts.
VideoBeast is designed to recreate the power of a discrete logic video card, but in a tiny form factor and at a fraction of the cost.
FAQs - Spring 2024
Project Status
VideoBeast is now demonstrating it's full potential, with a live demo at RetroFest 2023 showing all video modes, scrolling, layers and more. Since then it's smashed the 8-bit Mandelbrot challenge, and work is currently going into sprite layers and some useful bitmap tricks. Development has been slightly been delayed by family matters, but it's clear that 2024 is going to be the year of the VideoBeast.
Development Tools
As work on VideoBeast progresses, development tools and documentation are being added. Check out the preliminary reference documentation for information on coding for VideoBeast. The BeastEm MicroBeast Emulator now emulates VideoBeast, so it's possible to try out real code with the latest hardware API. And if you need help converting graphics to run on the system, the Feersum Image Utils web page provides a browser tool for palette manipulation and image scaling.How does it work?
For the host computer, it couldn't be simpler. VideoBeast is wired like a standard 4, 8 or 16K RAM chip. Provide 5 volts, address and data lines, and three control signals (chip select, write enable, output enable) and all control over VideoBeast is then through normal memory reads and writes. A programmable interrupt can be used to synchronise the host with the display output. Then, video output is digital, which can be converted to a VGA signal through a simple resistor network.
Interface - 1MB RAM on an 8-bit Host?!
VideoBeast presents paged memory and control registers to the host system as a contiguous addressable memory space. This allows the host to directly write text, tiles, bitmaps, sprites and configuration data to the device at full speed with no contention. On reset, a text layer is paged in - console output from the host is as simple as writing a byte to memory.
Hardware
The hardware comprises a custom FPGA board with power, interface logic and RAM in a minimal footprint. Physically, it has 0.1" castellated solder pads and a flat underside for solder-down installation.
How does it compare to <x>?
The hardware was designed as a direct response to the limitations of many current solutions - so of course I think it's better than anything else! It's not really though - if you want higher resolution or photographic quality, 3D texture mapping and video then go and buy a Raspberry Pi.
However for an 8-bit host, VideoBeast is designed with a deep understanding of the techniques and tricks that built legendary video games... plus a healthy dose of raw power. Microcontroller hacks don't stand a chance. Memory size and bandwidth is king, and a well designed interface makes it possible to get the most out of the system. There really is nothing quite like VideoBeast.