The Uzebox: An open source hardware games console
- 06 July, 2011 11:21
Anybody who has even a passing familiarity with IT — and even most who don't — encounters open source software on a daily basis. Whether it's Mozilla's Firefox Web browser, the Apache HTTP Server, which powers most of the world's Web sites, or Google's Android mobile platform, open source software has gone from being solely the domain of geeks to part of many people's everyday life — and it's become big business.
Open source hardware — hardware built using freely distributed and freely modifiable blueprints — is still more of niche category. It is not an area bereft of its high-profile projects, however; the RepRap 3D printer, for example, and the Open Graphics Project.
The Uzebox is another open source hardware project, and, unlike many that begin with grand plans but have fallen by the wayside, it has met with success. The 8-bit games console, which is licensed under version 3.0 of the GNU GPL, has not only been successful in the sense that its design can be downloaded and an actual, working console be constructed. It's also got enough of a following that a completed Uzebox can be purchased online from multiple sources, and, for those who know which end of a soldering iron is more likely to burn a hole in the kitchen bench, DIY component kits can be purchased.
Techworld Australia caught up with Alec Bourque, the creator of the Uzebox, to find out what makes it — and him — tick.
Could you give a brief outline of the Uzebox is? What sort of capabilities and specifications are on offer?
The Uzebox is a "retro minimalist" game console design based on an 8-bit general purpose microcontroller. The main design goal was to keep it simple so it would be easy to understand and assemble by hobbyists. It's made of only two chips and a few discrete parts like resistors and capacitors. Audio and video are generated real-time in software by the microcontroller as a background task, so games can easily be programmed in C language. It's also fully open source so anyone can make and sell their own version. The console uses an overclocked ATmega644 microcontroller and classic Super Nintendo controllers, supports 256 colors and 4 sound channels and has a SD card interface from which games can be loaded from.
Where did the idea for the Uzebox come from? Has creating it been primarily a solo effort?
Ever since I was a youngster, I'd wanted to build my very own game console. When I started the project a couple of years ago, there were some home-made game consoles out there, but they somehow most failed to attract significant interest. No wonder: Some had overly complex, multi-CPU designs, a lot were limited to black-and-white video with basic sound and with some you even had to count machine cycles to make a game! Moreover, none had any API or support forums for curious folks to ask questions and share ideas.
It quickly became obvious that I would need to overcome all these issues at once if I wanted my project to catch on. It was the kind of challenge I needed and the Uzebox project was born. It was mainly a solo effort, but after the initial release some awesome folks contributed key improvements like the SD card interface and the Uzem emulator.
Are there any aspects of the design you're particularly happy with? Especially technical challenging aspects, for example.
I'm pretty proud of the "kernel", the engine that generates video on the fly, mixes music, reads the controllers, etc. It's been written to be extremely customisable and extensible. For instance, since everything is done by the microcontroller, it also means the Uzebox supports unlimited video modes! And there are currently nine video modes, each with their own unique features like tile-based, with sprites, bitmap, high-resolution, etc. Game creators can choose which mode they want by simple specifying a compile-time configuration switch.
Another aspect that enticed a lot of folks to join the Uzebox project was the "Gameloader". It's a small AVR bootloader which displays a video menu, reads games stored on a SD card and programs them on the Atmega644 on the fly. With it, there is no need to be tethered to your PC to play different games; just drag and drop them on a regular SD card and you're free to go and show it off to your friends. It sort of works just like the regular console we're you would pop in a cartridge.
Then there's the approach I used for colour generation. Such circuits are not trivial and I could have decided to roll my own, but I settled for the simpler AD725, a chip that does all the hard work of converting the RGB signals made by the microcontroller into standard NTSC composite video. What's nice is that some Uzebox variants use the RGB signals directly and don't even need the AD725, cutting down costs. That the case of the EUzebox, made for European TVs that have RGB inputs, and the Uzebox JAMMA, a cool implementation that interfaces with Arcade cabinets!
What did you find particularly attractive about the AVR microcontroller you went with?
The ATmega644 is an amazing chip for hobbyists. At the time it went to market, it was the AVR chip with the most RAM and flash available in a hobbyist-friendly "DIP" package. It included many I/O ports, timers and peripherals. You could easily flash your program on it with a $30 programmer. And, most importantly, it could be overclocked by 30 per cent to the frequency required by the AD725 colour converted chip.
Is there a software framework for developers to use when writing games for the Uzebox?
Absolutely. The development framework revolves around the open source GNU C compiler tool chain. On top of that sits the Uzebox API that provides developers with a library of functions to display text, handle graphics and music, access the SD card, etc. To edit programs you can use Atmel's own AVR Studio, the popular Eclipse platform or even a plain text editor.
To run and debug your programs, there's Uzem, a cycle-perfect Uzebox emulator that emulates not just the AVR core, but also the video, audio, SNES controllers, etc. Many games we're exclusively developed on the emulator. Finally there are many tools, to convert graphics, music, etc. All of them are not only open source, but also multi-platform (Windows, Linux, Mac). All this is documented in the project's wiki, a wealth of information on just about everything, from the API to video modes, games and how to compile the tools.
How big is the development community around the Uzebox (both hardware and software)? There also seem to be a few different vendors selling non-assembled and fully assembled kits...
Hard to say exactly. A couple of hundred people have joined the forums, but I regularly see games and derived project from peoples that have never made contact. Having commercially available kits has greatly expanded the community. There's the Uzebox AVCore, a fully assembled unit sold through Sparkfun Electronics, and there's Adafruit Industry's Fuzebox, a kit to assemble yourself. A third maker will shortly introduce a new DIY kit, named the EUzebox, specifically made for the European TV's SCART interface. I also just recently announced my very own "official" kits just made available though the Uzebox store.
Do open source and hardware seem like a natural fit? Is it only a good match for smaller, hobbyist-style projects, or do you think there are broader applications for open source hardware?
As you know, open source software as come a long way in the past years. Today it far exceed hobbyist realm with some being used at the heart of many businesses like Linux, the Eclipse development framework or Zen Cart, a popular web commerce platform. Open hardware has also started gaining momentum in the past few years. A poster child is without a doubt the Arduino, an open source development platform for AVR microcontrollers. Released about five years ago, its elegant design and open source nature spawned several knock-off that contributed to increasing its popularity. The original creators are cashing in today, as they have now sold well over 100,000 units. There are currently hundreds of open hardware project, ranging from 3D printers to musical instruments, radios, computers and so on. So yes, I think that eventually open hardware will become as pervasive as open software.
What does the future hold for the Uzebox? More features down the line or is it pretty much complete at this stage? Complementary designs maybe (peripherals, for example)?
The current version is pretty much done. The things is, although it's relatively powerful the ATmega644 just doesn't have enough resources to do much more things, like handling an Ethernet interface for instance. That would have to be done by the "next generation" console.
What's your background as a developer? Do you have any other projects you're working on at the moment?
Currently, I'm working as a software architect for a Fortune 500 company. Even though I studied electronics at college, I really got interested in programming and electronics when I was just a kid. I'd be fervently programming BASIC games for days on my VIC-20 and building simple circuits with a Radio-Shack 200-in-1 science fair kit. Really seems like I've been hacking stuff forever!
I don't have any particular projects going on at the moment apart tinkering about a Uzebox successor. That said, I'm still looking for that great project idea that will justify spending so much time all over again!
[Uzebox kits can be purchased from the online Uzebox store.]
Image credits: Uzebox.org/wiki/ (Creative Commons)
Follow Rohan Pearce on Twitter: @rohan_p
Follow Techworld Australia on Twitter: @techworld_au