Uzebox
- This page does not source its references. Please help Libregamewiki by adding in references where required. Click here to edit this page.
Uzebox Game Console | |
---|---|
Megatris in two players mode | |
Latest release | 1.0 |
Release date | August 24th, 2008 (Released) |
Developer | Belogic Software |
Code license | GNU GPL 3.0 |
Media license | Creative Commons Attribution-ShareAlike 3.0 |
Contribute | |
Uzebox Game Console is a free game. This means that the source code is available to be studied, modified, and distributed. Most projects look for help with testing, documentation, graphics, etc., as well. |
The Uzebox is an open source 8-bit game console design created by Belogic Software. It is based on the Atmel ATmega644 AVR general purpose microcontroller. The particularity of the system is that it has an interrupt driven kernel and no frame buffer. All functions such as video sync generation, tile rendering and music mixing are done by a background task so games can be developed easily in C/C++.
Two companies introduced commercial implementations: The Fuzebox[1] and the Uzebox AVCore[2]. Since then, about 50[3] games and demos ranging from classic arcade ports to original games were released by various developers. The Uzebox was listed in Make Magazine's definitive open source hardware projects of 2009 [4].
Design[edit]
The design goal was to be as simple as possible yet have good enough sound and graphics and leave enough CPU to implement interesting games. Emphasis was put on making it easy and fun to assemble and program for any hobbyists. The final design contains only two chips: an ATmega644 and an AD725 RGB-to-NTSC converter.
Features[edit]
- Low parts count and cost: The system is made of only two chips and discrete components.
- Interrupt-driven kernel: No cycle counting required, sound mixing and video generation are all made in the background.
- 256 simultaneous colors: Accomplished by using a R-2R resistor ladder DAC.
- 5 channels sound engine: The sound subsystem is composed of 3 wavetable channels, 1 noise channel and 1 PCM channel.
- MIDI In: With a music sequencer, allows the creation of music directly on the console.
- Retro controllers: The joypad inputs uses standard SNES controllers interface.
- SNES Mouse Support.
- Expandable: I/O lines and peripherals are still available, like the UART and SPI port for one to experiment.
- Emulator: A fully cycle-perfect emulator greatly eases development.
- Gameloader: An AVR bootloader that loads and flashes games stored on SD cards.
- API: Develop games using an API that provides multiple video modes, sound driver and more.
- Open source: The software and hardware design are totally free and licensed under the GPL.
- Content: Over 90 games and demos plus tools and documentation all created by a dedicated community.
Specifications[edit]
- CPU: ATmega644 microcontroller
- Total RAM: 4K
- Program Memory: 64K
- Extended Memory: SD/MicroSD Card interface
- Speed: 28.63636Mhz (Overclocked)
- Colors: 256 simultaneous colors arranged in a 3:3:2 color space (Red:3 bits, Green:3 bits, Blue: 2 bits)
- Resolution: Various video modes supporting up to 360x224 pixels. in tiles-only mode
- Video output: NTSC Composite and S-VIDEO
- Sound: 5 channels wavetable synthesis , 8-bit mono, mixed at ~15Khz and output via PWM
- Inputs: Two SNES compatible joypad inputs
- Options: MIDI-in interface
Details[edit]
Video[edit]
The video is output on one of the 8-bit I/O port as RGB, 3 bits are allocated for the red component, 3 bits for the green and 2 bits for the blue. Those are fed to a DAC composed of three R-2R resistor ladders which in turn feeds an AD725 RGB-to-NTSC converter from Analog Devices. This gives 256 fixed but simultaneous colors on screen.
The latest video engine boasts 9 video modes that supports bitmapped and sprites-based modes as well a SD card streaming mode that allows the playback of movies[5]. The highest usable resolution attainable on the console is 360x224.
Sound[edit]
The sound subsystem is composed of 3 wavetable oscillators channels, one LFSR-based noise channel and a PCM channel (to play samples). Each have independent timbre, frequency and volume. Resolution is 8-bit and is mixed at NTSC line rate (~15Khz) and is output on a single pin via pulse width modulation (PWM). A hi-level engine can play specially formatted MIDI files. The engine also support the concept of "patch streams" for music instruments and sound fx. Similar to a MIDI stream of notes, but instead the stream is composed of sound changing parameters.
Input[edit]
The joypad input uses a standard SNES controller interface. An optional MIDI In interface and driver allows to compose music from any sequencer.
Implementations[edit]
Since its inception, the Uzebox design has been commercially implemented as:
- The Fuzebox, a Do-It-Yourself kit
- The Uzebox AVCore, a fully assembled unit
- The Uzebox EX1, a Do-It-Yourself kit
- The EUzebox, a Do-It-Yourself kit with SCART output for the European market
Tools[edit]
All developement is done in AVR Studio, an IDE developed by Atmel. Besides being free and easy to use, it includes a cycle-perfect software simulator for all AVR devices. By adding the free WinAVR GCC package, C development is possible on the AVR platform.
A set of tools developed in C and Java help generate content for the game. There is a converter to transform raw images to tiles and maps, a MIDI file converter and a patch/fx editor. Uzem, a fully functional emulator was created to ease development. It supports sound, all graphics modes, integrates a GDB (GNU debugger) server and support the SD card interface and PC joysticks.
References[edit]
- ↑ Adafruit Industries Fuzebox homepage
- ↑ Sparkfun Electronics Uzebox AVCore page
- ↑ Uzebox games and Demos
- ↑ Fun, games and entertainment: Open source hardware 2009 Make:Online: The definitive guide to open source hardware projects in 2009
- ↑ Full screen movie player on an ATmega644