Close
0%
0%

Yet another World's Worst Video Card

It is said that sequels are always worse than the first part and here I am to prove it.

Public Chat
Similar projects worth following
A while ago I stumbled across with Ben Eater's "World's Worst Video Card" video. When I saw his implementation with a 6502 computer, I thought that by reducing the memory use I could use a dual port SRAM and skip all the video card's cycle stealing. So, this is what I did, a 1-bit sequel to the World's Worst Video Card that nobody asked for.

The video card uses a 4kB dual port SRAM, a 25.175MHz oscillator downclocked to 6.29375MHz by a counter and has been tested using an Arduino Mega. In this version I generate an image with the size of 160x120px (An eighth part of 640x480).

Make your own

If you want to build it yourself, I've left some scripts for image conversion and SRAM communication via Arduino. The build process is very similar to Ben Eater's version, except for the VGA timings and memory read process. 

For more details, you can find all the schematics below.

Extending it

The reason I made this project is to find an alternative to Ben Eater's implementation with the 6502. In this case my solution should be much more performant than his version as this one doesn't depend on halting the CPU during the screen refresh process.

Another thing that could be done would be to get more colors, it shouldn't be hard, the only problem is that in this project I didn't want to print a PCB, I wanted to do that in breadboards, so the SRAM had to be small because larger models use other packages that aren't DIP.

For higher resolution, the problem would be the same, I will need a PCB in order to keep the dual port SRAM in the circuit.

If you try to expand this circuit, I'd love to hear how it goes!

GraphicsCard.ino

Arduino code for the SRAM communication

- 30.55 kB - 07/22/2022 at 22:30

Download

ImageConverter.cs

C# script for image encoding

plain - 649.00 bytes - 07/22/2022 at 22:21

Download

WorstVGA.pdf

Schematics of the circuit

Adobe Portable Document Format - 192.67 kB - 07/22/2022 at 22:20

Preview
Download

  • 1 × 7134 4K Dual Port SRAM
  • 8 × 74LS30 8-Input NAND Gate
  • 4 × 74HC04 Hex Inverter
  • 3 × 74HC00 Quad 2-Input NAND Gate
  • 1 × Resistor 470Ω

View all 8 components

  • 1
    Create an image file

    Draw any image with a resolution of 160x120px and call it "Image.png"

  • 2
    Run the C# console app

    Place the Image.png in the same folder of the C# console app (Note that I've built that using .NET 4.8), it should create a text file called "Array.txt", the file should contain a 2D array for the Arduino.

  • 3
    Hook up the Arduino and upload the code with your image.

    Once you have the text file, replace the array of the program with your image's array.

View all 3 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates