Archive for the 'Uzebox' Category
Uzebox, Take 2
It’s done. Yes, it cost twice as much money and 100X as much time as just buying one from Adafruit or Sparkfun, but I’ve finished my home-made Uzebox.
Notable features vs. the “stock” Uzebox:
- vertical mount
- mini-stereo jack for audio
- internal speaker
- transparent acrylic case
- lots of glue
And it plays Arkanoid! Now I can return to my regularly scheduled life. 🙂
I wrote about the Uzebox earlier: it’s an open-source hardware project utilizing a microcontroller to synthesize an NTSC video signal on the fly, in software. Many classic games have been ported to it, and there’s an active developer community.
Read 11 comments and join the conversationMore Uzebox
Finally, I got the Uzebox to work! I’m not quite sure what made the difference, though.
First, I tore apart my earlier breadboard setup, and rebuilt the circuit from scratch, as neatly as I possibly could. Then I scrapped my grayscale DAC, and dropped the AD725 RGB to NTSC chip into the circuit (which had arrived in the mail since my previous attempts). Soldering the AD725 was my first experience at SMD soldering, and it was a little challenging, but not too bad. I managed to get 15 of the 16 pins soldered successfully on the first attempt, but the last pin just wouldn’t bond to the pad. I must have made 20 attempts to solder it, and was about to give up and solder a jumper wire to the pin, when I finally got it.
I connected the circuit to my finicky Dell monitor, turned it on, and voila! It worked!
The image quality is OK, but seems a bit blurry, and there’s noticeable color blooming. The interior of a red letter R is dark red instead of black, for instance. The photos here actually make it look cleaner than it really is. It’s certainly very playable, though, and maybe I’ve just forgotten what composite video quality looks like.
The rewired circuit on the breadboard:
Pac-Man title screen on the Dell monitor:
Pac-Man maze on the Dell monitor:
Read 4 comments and join the conversationUzebox
I’ve decided to build a minimal Uzebox. The Uzebox is a software-generated video game system based on an open source hardware design. It uses an ATMega644 microcontroller with 4K RAM to synthesize a composite video signal and sound on the fly, line by line. The official Uzebox design uses an Analog Devices AD725 RGB-to-composite chip, along with an SD card interface, and MIDI and joystick ports. I really wanted something super-minimal, though, so I dropped everything from the system except the ‘644 itself, the power supply, a piezo speaker, and some resistors and capacitors. I think it’s about as bare bones as you can get. Here’s what I came up with:
To replace the AD725 color chip, I constructed a grayscale binary weighted DAC from nine resistors. The eight color bits and the sync signal from the ‘644 are combined. I did some math to solve for the correct resistor values to produce 1 volt when all the colors bits are 1’s, and 0.3 volts when all the color bits are 0’s, assuming the sync signal is 1 in both cases. I must be getting dumber in my old age, because it took me a long time to churn through the math, and I eventually had to ask my wife to help. This was the result:
This seems right mathematically, but when I tried it connected to the TV, the resulting voltage was too low. When I removed the 75 Ohm resistor, everything looked nearly perfect. I don’t really understand that… should the video cable and TV itself be treated as a 75 Ohm resistor to ground in this calculation? Something about impedance matching that I don’t really grasp.
With the 75 Ohm resistor removed, I burned a Pac-Man game into the ‘644, connected the breadboard to the living room TV, and was rewarded with this:
The image quality is middling, but it’s not too bad for a quick breadboard job. The grayscale is definitely working, although it’s hard to see in this picture. The ghosts show the grayscale levels best.
Unfortunately I couldn’t get the Uzebox to work with the composite video input on my Dell monitor. It didn’t show anything at all, behaving the same as if nothing was even plugged in. I’m assuming this is because my video signal is too noisy, or out of spec somehow, and the monitor is more picky about signal quality than the TV. I looked at the video signal on the oscilloscope, though, and it looks pretty decent to me. Not too much noise, baseline is right at 0.3 volts, HSYNC pulses look fine. The brightest parts of the image do overshoot to about 1.25 volts, but I wouldn’t guess that would be a huge problem. I need to find a solution, though, because hauling the whole thing into the living room for every test isn’t too practical.
Although my interest here is primarily in the hardware, it’s damn impressive that this single ATMega644 with just 4K RAM is able to generate all the video and audio for a very faithful Pac-Man recreation. Remember, there’s no frame buffer. The video signal is generated on the fly, line by line, pixel by pixel, in the midst of all the other necessary game-related computation.
Read 12 comments and join the conversation