Uzebox

From Libregamewiki
Jump to: navigation, search
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
Uzebox-Megatris.jpg
Megatris in two players mode
Latest release1.0
Release dateAugust 24th, 2008 (Released)
DeveloperBelogic Software
Code licenseGNU GPL 3.0
Media licenseCreative Commons Attribution-ShareAlike 3.0

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]

Screenshot of the Uzebox AVCore module and gamecard

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]

Screenshot of the Fuzebox Do-it-yourself kit
  • 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]

Screenshot of the Uzebox EX1 Do-it-yourself kit
  • 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]

A classic game port using video mode 3 which supports sprites

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]

Screenshot of the Uzebox emulator

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]

External links[edit]