Ever fancied a spot of arcade gaming on the street? Then why not head over to Antwerp, Belgium? More specifically Provinciestraat 60, behind the Zoo. Kris Temmerman has created a novel way of bringing the neighbourhood together using an Arduino and some DIY skills.

pixelgameKris’ house/office has a store window that he likes to utilise as much as possible. After using the space for other various projects, he decided to make something that was interactive.

Something that would appeal to the youth of his local area and the many people passing by. What could he make that would appeal to a wide audience?

The answer was simple. Make an old-school arcade game! Think of a Spectrum ZX, only more fun and less noisy. You won’t find any cassette tapes here, just some Arduino’s and some skills.

Why use an Arduino? Well he wanted a challenge and wondered if it was possible to run the entire project on Arduino without an external computer. Then he went one step further and decided to make everything else himself, producing his own LED screen, his own ‘display driver’ and display list, a 8-bit sound library, and finally, the game itself.

With all that planned out, it was time to decide what sort of game to create. He realised he needed something that would appeal to the anticipated large audience, something that was fun to play. With that in mind he opted for a good old gaming cliché. The one where the world gets invaded by aliens, and you have to fight your way to the end boss and the happy ending.

The drawback to this master plan was his minimal resolution of 16*90 pixels that left him with little choice but to make it pixel-art style. The game he ended up creating has 3 modes, a single-player, a multiplayer fighting-the aliens-mode and an extra fighting mode where 2 players can battle with each other. Each mode has just one level, designed to provide a casual “play on your way to work” affair.

endboss

In order to make the game’s development quick and easy, he cross-developed the game as a Cinder c++ app and an Arduino app. This meant he didn’t have to upload the project to an Arduino just to test a new development, something that would have taken him a while to do. He had to store everything on the Arduino, due to him not wanting to use any external storage.

Then he made a small app, able of generating c++ classes from bitmaps with some gamma correction for the LED screen, using indexed colours to save some of that precious SRAM. For driving the LED’s Kris modified  the Adafruit neopixel library, allowing it to support alpha-blending and therefore making it faster for the specific case.

LedScreenArduinoTo create his LED screen he used strips of WS2812 LED’s which are individually-addressable RGB LEDs, and lay these in a 16*90 grid.

In order to make the pixels square, he added a layer of plexiglass over the top of the LED’s to diffuse the light further.

The Arduino Due that drives the display and runs the game sits behind the display. The LED’s require plenty of power, so he decided to add a 60A 5V power supply to the project.

arduino_arcadeAll the relevant tech connects to the arcade box using a simple TX-RX serial line. This is fast enough to send the button commands, ensuring minimal lag between the input at the controls and the response on-screen.

His home-made arcade box is simply some painted MDF with a steel frame inside and a steel plate on-top. Simple but rather effective!

Inside this box is another Arduino with the sole purpose of generating the sound and music as well as handling the raw button/joystick input.

All in all it’s an effective way of bringing the community together and a perfect opportunity for, those of us that are old enough to have experienced the delights of gaming on cassette tapes and floppy discs, the chance to relive our youth!

gameOver

Source: Neuro Productions

  • Matt T

    How does one Arduino handle the music, sound effects, and controls IO without distorting or interrupting the sounds. Does Due multitask?