Monday, February 15, 2010

The Mini-Markade Lives!

It's the first post on the blog, and I thought I'd start off by sharing a project of mine.

I've been working on a tiny arcade machine based on an AVR atmega328p microcontroller in an attempt to win a Guiness record for the category of "world's smallest arcade machine". Well, it turns out that Guiness doesn't give awards for "smallest" anything anymore, but that hasn't stopped me from building it all the same.

Originally, I got the idea after seeing a number of "Paper Arcade" models popping up on the 'tubes. Given the dimensions from those cabinets, I figured that it wouldn't be too hard to shoehorn an AVR board and an OLED display into that form factor - and while it was a challenge, I've been surprised at how well everything has come together.

The end result is what you see below - a fully functional version of the "Paper Arcade" capable of playing my own interpretations of classic arcade games.

My arcade machine (dubbed the "Mini-Markade") currently has versions of Tetris, Space Invaders, and Breakout - all selectable from a frontend application. Smooth 60fps graphics are displayed on a 1.5 inch OLED display (by 4D Systems), while controls are input through a custom Atari-compatible joystick made from random parts off digikey. Powered by 2xAAA batteries, the system will run for 12-15 hours between changes.

The Markade also runs FunkOS, my very own RTOS for low-resource microcontrollers, which you can download from my sourceforge page (http://funkos.sourceforge.net).

Between my RTOS, my own implementations of Tetris/Invaders/Breakout, and all the device driver and frontend code, the system uses about 1800 bytes of RAM and all but 80 bytes of the available 32KB of flash. Not bad!

The pics below show the cabinet almost fully assembled - all that's left to do is tack the back panel on, add an external power switch and give it some paint. Standing around 3.5 inches tall, the mini-markade replicates the design of an old Defender cabinet - with all dimensions implemented to scale.

More to come in the coming days and weeks!











16 comments:

  1. this is awsome. PS you were featured on Hackaday.com

    ReplyDelete
  2. Truly awesome. Found you through hackaday.

    How exactly do you control the games? Surely not by that little knob-thing on the front... ?

    ReplyDelete
  3. Thanks guys! Regarding the controls - yup, the little knob sticking out of the panel is the joystick, which is easily controlled by thumb. While not conducive to long gaming sessions (Nintendo thumb anyone?), it gets the job done, and is actually quite responsive.

    The system also supports PSX/PS2 gamepads, although the connectors won't fit in the cabinet ;)

    ReplyDelete
  4. yeah, Been there done that :p
    http://www.pyrofersprojects.com/blog/?p=129
    although, well done on fitting a working controller! I never found a joystick small enough for mine, hence not quite playable.
    Other than that, its a working Tempest cabinet at about 4 inch high.

    ReplyDelete
  5. @ Pyrofer - I stumbled across your Tempest cab after I had started work on my project, still very impressive! I understand all too well how difficult it would be to get a usable Tempest rotary controller into that cab ;)


    Cheers!

    ReplyDelete
  6. This is amazing. May I ask what the total cost was? And would you be interested in doing a commission?

    ReplyDelete
  7. Love it. This needs something in the shot for scale. Perhaps a quarter, since it is an arcade game after all.

    ReplyDelete
  8. @[PNT]Nil - Cost of parts is running around $130 in single unit quanitities, and it's a pretty labor-intensive build. If you're interested send me a msg at funk_dev(A_T)hotmail.com and we'll chat.

    ReplyDelete
  9. Congratulations, it's a very nice piece od work!
    Any chance we can download your schematics and sources?

    Bruno

    ReplyDelete
  10. would it be possible to make a mini-cabinet that only played intro, etc. AVI's? (with sound).

    That would be kind of neat.

    ReplyDelete
  11. how are you controlling the display? I have one of these screens and it can be painfully slow to execute commands sometimes!

    ReplyDelete
  12. @richarno - Eventually I'll post some schematics, and some form of source code - but it might take a while for me to get around to it.

    @Donny - yes, it's entirely possible to do a video cabinet. Those displays have an SD card reader built in to simplify that kind of thing.

    @fridgehead - I'm running the CPU at 20MHz and the UART at 246kBaud. With these displays the key is to only draw the absolute minimum of what you need. Limiting myself to < 50 uOLED commands/frame (except for initial background rendering), I don't get any slowdown at all. All of the games I wrote require less drawing than this (even Space invaders), and I have plenty of idle time left over.

    ReplyDelete
  13. This is GREAT! Schematics ? Firmware ? (I want one =))

    ReplyDelete
  14. Would be cool to hack this into a hallmark keepsake galaga or pacman.

    ReplyDelete