Why We're Here

Classic LCD games like the Game & Watch series use LCD screens with a limited number of shapes, ASIC processors and basic controls to produce games. They sold a lot of copies. If you're interested you can watch the "Building a Liquid Crystal Display" video to see how those types of screens are manufactured. The advantage of these screens is that you only need 1 bit per screen element and they could be as large or small as you wanted. You could also use smooth lines. As technology improved and memory came down in price, it was possible to have a grid of consistently sized elements which eventually turned into the 4K TVs we have today. The original GameBoy with it's 4 shades of grey had a grid of 160x144 pixels. That requires 90Kbits (11.25KBytes) of memory and the ability to drive 23,040 individual LCD elements. The advantage of pixel is of course flexibility. The disadvantage is the cost and you get pixelation which is only recently being almost entirely eliminated with IPS displays.

The Arduino doesn't have enough memory to support even the original Gameboy screen and it's certainly not fast enough to update such a relatively large screen at a playable framerate. Currently, Arduino Gameboy "clones" use 128x64 OLED displays which only have 1 bit per pixel. It's either on or off. That works out to 8KB worth of data to store the entire screen. Which is about the maximum the Arduino has available. LCDs and memory are still relatively expensive.

So, rather than just throw our hands up and use a faster system like the Raspberry PI and an actual color LCD monitor to go with it, it'd be interesting to see what we can do by emulating those cheaper LCD screens using simple masks and LEDs. There are several advantages to this. The most important one is that we can learn game programming by reverse engineering simple games. Another is the ability to stick to the Arduino and actually use an Ardunio NANO which can be had for around $2-3 each. And we can also get to the lower level aspects of how electronic games actually work rather than just using magical black boxes that do most of the work for us.

What We're Going to be Using

Depending on how familiar you are with JavaScript you might be surprised to learn we'll be prototyping every project in JavaScript first. Back in the day computers booted up to BASIC and you could immediately start coding. The closest thing we have to Boot to Code today is a browser. All you need is a text editor and a browser. Both of which come free with every OS. Personally I use Chrome for my browser and have PHP Storm which is helpful even on simpler projects. But any text editor like TextPad or NotePad++ will do. And they're free.

You'll also of course need the Arduino IDE.

As far as electronic parts are concerned, we'll be using an Arduino UNO for testing, lots (dozens, not thousands) of LEDs and shift registers.

For the completed project we'll be using a Laser cutter and 3D printer. Those are optional. But it's a great excuse to pick them up if you're looking for a reason.

Copyright 2018 RetroLCD