Back when I was a kid, I decided I wanted to make my own game console. Granted I also wanted to be an astronaut and the first man on Mars, but I had to draw the line somewhere.
Marshmallow Game Engine started as a way for me to keep my cross-platform game engine chops up during my spare time (not that I have that much spare time mind you). But with the advent of both powerful and affordable hardware like the Raspberry Pi, I started looking into creating my own game console again, and I have to admit, I’m very excited.
Thanks to the wonderful Raspberry Pi, I’m finally able to create an affordable DIY console kit for my game engine.
The following are some common components in game consoles, I’ll go through the list so you can get an idea of how the end product will work.
Controllers & Ports
Luckily the RPI has a couple of built in USB ports. A simple USB port hub or something like the Mayflash Wii classic controller pro to PC which can handle two controllers per USB slot can be used to add more ports when needed.
Not all USB controllers will be supported, but I will target the most common ones in the beginning, user submitted mappings will soon follow.
Reliable power cycle
Since we can’t have people cut power to the running system willy-nilly, I created a little board to take care of the power distribution.
An ATtiny85 MCU is the brains behind the board, it will later on output debug messages via the indicator LED, but for now it flashes at two different frequencies for boot and shutdown, it also signals the main board when it’s time to shutdown properly.
The board is powered by a 5V@2A power supply which is forwarded to the main board when the console is turned on, the rest of the board runs on 3V3 and consumes about 0.007ma in stand-by mode, and about 10ma when the indicator light is on.
Hardware specs and source code can be found on my GitHub account, all covered under the BSD and CERN OH licenses.
Since I’m planning on having mainly downloadable content, an optical media drive or cartage slot would not make much sense (fun as it may be). I might add external USB storage support.
No definitive case design yet. I’m considering laser cut PCB.
Since speed and boot time are very high priority when it comes to game consoles, I decided to build my own distro. It’s lean, mean and comes in one single flavor, COUGAR.
I found that on some LCD displays, screen settling takes longer than the actual system boot, which is pretty awesome. The game engine waits for the screen to be ready before it continues running, this applies for first boot and for video output switching (HDMI <=> Composite).
I’m using my own game engine which is still under heavy development, I’m trying to get people interested in helping out with port maintenance (specially the Windows and MacOS X ports). If you’re interested please contact me.
See it in action
I showed off my progress on Adafruit Industries Show and Tell
Try it out!
If you want to try out the demo, just follow the instructions below:
xz -d sdcard.img.xz
sudo dd if=sdcard.img of=/dev/**YOUR-DEV-NODE**
After it’s done, insert the sdcard in your Raspberry Pi and plug it in!
You will need to have a keyboard handy since the odds you have a supported gamepad/joystick is pretty thin (donations welcome!).
F1 – restarts the demo ESC – kills the demo SPACE – Jumps LEFT – Move left RIGHT – Move right LSHIFT – Run
You are probably asking yourself “How can I help?”, well I’m glad you asked!
I’m currently taking hardware and PayPal donations, if you have a game controller you want supported, a Raspberry Pi laying around or too much cash in your bank account and want to fund further development, feel free to contact me or hit that nifty PayPal Donate button on my site.
Thanks for your interest in my project, please feel free to leave comments or suggestions below.
Also, I’m usually around on IRC #marshmallow_h @ freenode