Gopher ARCADE
Gopher ARCADE is a keychain-sized ATTiny85 game console based on Armour Grade, there's a whole world of game consoles based on ATTiny85. I wanted to make some modifications and also improve my PCB making skills, so I recreated it from scratch using KiCAD since there were no source files, only gerbers.
different boards of Gopher ARCADE, you can see the top left with super-cool keycaps from micchie
The ATtiny85, as you can guess from the name, is a small 8-bit MCU, with only 512 bytes (yes, bytes) of RAM and 8 KB of flash memory, but it packs a punch. There's a good community and collection of games written in Arduino/C: https://github.com/andyhighnumber/Attiny-Arduino-Games but of course it's much funnier (and easier) to write them with TinyGo. One cool feature, is that instead of soldering the chip directly to the board, you could put a DIP socket, carry some ATTiny85 each one with a different game and use them as cartridges!
Working with the Gopher ARCADE
Since available resources are not abundant, we need to make some sacrifices when programming the ATtiny85, for example, we can not use the available ssd1306 driver on the tinygo repo, I've create a simpler one without a buffer, because it doesn't fit the ATTiny. That only makes it more exciting to play with it.
cool pic of the PCB in KiCAD
To make it easier to work with, thre's the gopher-arcade target, with the following pin definitions:
const (
P5 Pin = PB0
P6 Pin = PB1
P7 Pin = PB2
P2 Pin = PB3
P3 Pin = PB4
P1 Pin = PB5
BUTTON_LEFT = P7
BUTTON_RIGHT = P5
SPEAKER = P6
)
You read it right, there's a speaker too! You can take inspiration from this simple snake game. It's not limited to games, some pins are exposed your to reprogramm it without taking the ATTiny85 out, so in theory you could use some of those pins for other things, for example I was thinking about connecting an IR LED and use it as a remote control!. To program it, you will need TinyGo and a USBASP programmer with the following command
tinygo flash -size=short -target gopher-arcade .
Note
By default the ATTiny85 runs at 1MHz, you can make it runs at 8MHz with the following command (this is only required once, and that extra speed is very much welcome).
avrdude -p attiny85 -c usbasp -B 32 -U lfuse:w:0xE2:m
Making your own
The magic of open source and open hardware is that you could make your own, or modify to your taste. I sourced all the components from online shops, some parts might be more difficult to find, but you could replace by others more available to you.
do not be mistaken, that big square is the speaker/buzzer, the MCU is smaller!
Parts list
| No | Item name | Quantity | Notes |
|---|---|---|---|
| 1 | PCB | 1 | |
| 2 | ATTiny85 20PU | 1 | |
| 3 | DIP8P socket | 1 | |
| 4 | SSD1306 I²C 128x64 display | 1 | |
| 5 | 10k ohm resistors (through hole) | 2 | |
| 6 | SN74LVC2G04DBVR | 1 | |
| 7 | CPT-1203-78-SMT-TR (buzzer) | 1 | |
| 8 | EG1213 switch | 1 | |
| 9 | CR2032 battery holder (smd) | 1 | |
| 10 | Kailh choc v2 low profile | 2 | footprint accepts both kailh choc v1 & v2 |
| 11 | Kailh choc v2 low profile keycap | 2 | |
| 12 | Display spacer (3d printed) | 1 | optional, but helps aligning the display |
Out in the wild
When I made the first batch, knowing I was going to participate at TinyGo Conf in Japan this year, I offered them to the Keeb / solder workshop. To my surprise, Sat0ken already ordered some more PCB when I arrived to Japan. He also make a new version that instead of the CPT-1203-78-SMT-TR (the square shape SMD buzzer) use a regular, cheap and easy to find through-hole buzzer. I love it!
More information
- Official repository
- Buy it online - Only shipping to Europe


