EDIT: new video with music and sound effects!
Visit my blog at http://petenpaja.blogspot.fi for schematic, source code and technical info!
I’m finally ready to show you a project I’ve been working on and off for several months. It’s a 8-bit retro video game based on Arduino and ATmega328P. The project is not yet finished – I’m working on music playback which is still missing on the video.
Attached images: titlescreen, arduino based proto version, final standalone hardware.
Tile graphics mode with sprites. Up to three sprites per scanline, unlimited number of sprites vertically. Display resolution 104x80 with 256 colors. NES controller support. 4 audio channels with triangle, pulse, sawtooth and noise waveforms.
Music is still work in progress and not present in this early video footage.
Video signal is generated by the microcontroller by outputting 8-bit RGB values. The program has been heavily optimized and written in assembler, so that the ATmega328 outputs a new pixel exactly every 6th clock cycle. RGB values are converted to NTSC composite signal by AD725 chip.
Audio is generated in software by mixing 4 waveforms together. This should allow C64 SID quality music once the playroutine is finalized and music is composed.
The game is fully playable and has 15 rooms.
Atmega328P has only so many bytes of memory, so several tricks are needed to squeeze everything into memory. For example room data is compressed in flash and inactive rooms use only 1 byte of RAM to store the state of objects when the player is not around.
I’ll probably do a full write up with schematics when music is done if people are interested in this.
Hardware & software by Petri Häkkinen
Graphics tiles by Antti Tiihonen
Titlescreen by Juho Salila