top | item 27171100

The Graphics Gremlin – An Open Source Retro ISA Video Card

130 points| zdw | 4 years ago |github.com | reply

29 comments

order
[+] weinzierl|4 years ago|reply
I love these retro graphics card projects. This one is especially cool because it can do multiple standards on one card. Of course with an FPGA it is a bit hardware heavy. On the other extreme there are projects that provide VGA output with no special hardware at all - just using timers and GPIO pins.

Linus Akesson's bit-banger comes to mind, which does so with an Atmel ATtiny15. This microcontroller is - well - tiny, about so tiny:

Bit banger is built around an ATtiny15 microcontroller, which runs at 1.6 MHz and has 1 kB of flash ROM and a claustrophobic 32 bytes of RAM. In fact, those 32 bytes are the CPU registers. Only the most basic AVR instructions are supported; they occupy at least two bytes each, and can obviously not be compressed since they are executing from ROM, so a maximum of 512 instructions will fit inside the chip (fewer if static data is needed). [1]

Another cool project I came about recently, but haven't had time to try out, is bit banging VGA Framebuffer written in Rust. [2]

[1] https://www.linusakesson.net/scene/bitbanger/index.php

[2] https://github.com/thejpster/vga-framebuffer-rs

P.S. To give a bit historic context. I remember having an electronics book with a pattern generator made with only a PIC. Must have been the late 90s, so bit banging graphics is definitely not a recent development but it is still incredible to be able to generate these signals fast enough without special hardware and only in software.

EDIT: Thinking about it, I'm not sure anymore if the PIC project was VGA or PAL and I couldn't find the book quickly.

[+] phire|4 years ago|reply
For designs that must interface with existing hardware with precise timings, using any kind of microcontroller bitbanging often becomes unfeasible. Linus Akesson's bit-banger and craft[1] only work because they drive all the the timings, and VGA is really permissive with timings.

And once you are past cheap Atmel or ARM micro-controllers, FPGA designs are often the most cost-effective.

This FPGA comes in at a unit cost of just $5.12 and allows a design of just the FPGA, the SRAM and a few level shifters.

Any design around a CPLD and/or raw 74 series logic would end up with a much higher BOM, and you would struggle to implement the scan-doubler functionality for 31khz output at a reasonable price point.

[1] Seriously impressive, check it out: https://www.linusakesson.net/scene/craft/index.php

[+] Jeema101|4 years ago|reply
No the concept is not entirely new, especially since historically, wasting CPU cycles was often cheaper than adding framebuffer RAM.

The c. 1977 Atari 2600 worked in a very similar way, wasting 80+% of the CPU time just to draw the screen. That was seen as a good trade-off back then since the games were simple and not typically doing much else with those CPU cycles.

[+] bit-hack|4 years ago|reply
This is great, I've been wanting an ISA card with an FPGA on it for a long time so that I can experiment. I've ordered a few of these PCBs to build some myself. Its very kind of the author to give the design away for free. I also really like the Lattice FPGAs for their FOSS tool-chain, which is a breeze to work with.
[+] cturner|4 years ago|reply
Different issue, but related to video: if you build a server around high-end Ryzen chips, there is no onboard video. I could not find a no-gpu card that was a good fit for this scenario. There may be a market for a low-feature, low-tdp PCIe graphics card.
[+] wheybags|4 years ago|reply
Sure, they exist, I believe you can still buy a geforce GT 710 for about 50 quid. I have a ryzen server at home, my old one had a 710 in it, but I upgraded to an asrock rack mobo that has an integrated IP kvm / ipmi bmc, which is a pretty good option for a real server (mine is just for home though).
[+] theandrewbailey|4 years ago|reply
I bought a pair of passively cooled Geforce 210 cards about a decade ago. I put one in my basement server (the other one went to my parents PC). On the rare occasion I'm in front of it, it puts text and GUIs on a CRT, and if I want to push it, video.
[+] NamTaf|4 years ago|reply
I'm giggling like an idiot at the annotations on that PCB. Very clever.
[+] poizan42|4 years ago|reply
It's lovely.

SPI connector: "I SPI WITH MY LITTLE I"

Resistor bank: "YES IT'S A RESISTOR LADDER DAC"

Voltage regulators: "POWER HOUSE"

ISA connector: "SLOW, OLD COMPUTER" (arrow)

Clock modules: "THE TICK" and "THE TOCK"

DIP switches: "MYSTERY SWITCHES"

Composite connector (not populated): "BLURRY PICTURE"

VGA connector: "REGULAR OL' VGA"

TTL monitor connector: "TTL MONITOR"

Did I get all of them?

[+] redleader55|4 years ago|reply
I have a stupid idea: a video card, not necessarily EGA/CGA, that instead of a VGA connector it has a ethernet port and it can be accessed through a VNC type protocol. Does this weird thing exist?
[+] dhuk_2018|4 years ago|reply
Lots of server IPMI interfaces do this. IDK of an add-on card for old computers though...
[+] detaro|4 years ago|reply
For PCIe there are such things for remote control of servers. (A lot of them are specific to manufacturers and won't work in other systems, but not all) E.g. Asrock Rack makes one called "PAUL".
[+] cestith|4 years ago|reply
If you like this project and are on Twitter, you might want to consider following @TubeTimeUS who besides this posts all manner of retrocomputing projects through all stages of the building, testing, and design tweaking process.
[+] snvzz|4 years ago|reply
Very welcome. It is nice it can provided 31KHz+ output.

If I find something's missing and could likely be easily added, it'd be a digital (e.g. HDMI) output.

It'd save many people the step of having to run the output through an OSSC.

[+] ok123456|4 years ago|reply
Kind of strange to go through all this work to allow CGA and EGA to use the VGA port, but not support the VGA modes.

Did the FPGA just not have enough block ram to do this?