Arcade Antics

Written by Dean Edis on .

Around the beginning of the year, shortly after we decided to create Gimpy Software and start writing Lunar Panda on the Raspberry Pi, I was getting so nostalgic for the 'good ole' days' of gaming that I decided to build myself a MAME arcade machine. Being married with kids, I knew that a full-size arcade cabinet would both be frowned upon, and be too tall for my children to use easily, so I decided on finding out more about 'bartop' arcades.

There are a few good websites out there which I used for research, and the most useful was Project MAME. This site has free downloadable plans for cabinets of various different sizes and designs, as well as helpful instructions on how to build them. I decided the WeeCade was the one for me, so off I went to the local hardware store and bought up a few sheets of MDF.

The next couple of months had me sketching/planning/measuring/drawing/cutting/gluing/un-gluing/gluing again/sanding/assembling/more sanding/painting, and finally GAMING! Maximus Arcade provides the graphical front-end, and my hardware is an old Dell P4 3Ghz machine.

I've now got a decent collection of ROMs running on the machine (MAME, NES, Sega Genesis), and discovered my 5 year old son is turning into a surprisingly proficient 'power up' thief in most games. Lunar Panda plays perfectly with the 'retro' arcade controls!

Check out my pictures below. We even had Mike Montgomery from the Bitmap Brothers playing on it at one of our retro gaming events! Playing games like Xenon 2 was one of the reasons I got interested in programming as a kid!

If anyone has any feedback and/or questions on the build, just drop us an This email address is being protected from spambots. You need JavaScript enabled to view it.!

  • Early days, cut the MDF and profiled the edges.
  • Glue and screw!
  • Kids look impressed even though they don't actually know what an arcade machine is....yet!
  • Making good use of an old 4:3 Dell monitor I found on eBay
  • Working out where the controls are going to go.
  • No it's not the new Raspberry Pi, this is in fact the USB I/O board.
  • Perspex fitted for the marquee, screen and control panel.
  • The control panel is starting to take shape.
  • Making good use of another old bit of Dell kit.
  • The finished machine!
  • On location, being checked out by Bitmap Brother's founder Mike Montgomery!

Speculator

Written by Dean Edis on .

Speculator In my years a software developer I've set myself many projects and goals. Writing a ray-tracer was particularly enjoyable - You'd be surprised how easy it is to get some quite impressive results. (I might even release my source code at some point. Watch this space!) Another one of my 'projects' was to write a ZX Spectrum (48K) emulator. That's the machine I first learnt to code on, spending hours and hours typing in BASIC code from a book, and then tweaking the result to change how the program ran. Reminiscing about the 'good old days' is one of the factors which motivated a few of us to get together to form Gimpy Software!

So 'write an emulator' I did! My goal was to get it to the point where games such as Manic Minor, Jet Set Willy, and Horace and the Spiders would work, plus have support for BASIC. I chose to write it in C# because I wanted to become more proficient in that language, having previously focused mainly on C and C++. I think that shows in the coding style I used - I've since learnt much more about C# so if I were to do it again there's definitely some changes I'd make.

You can download my code from this site, build it using Visual Studio, and use it more-or-less as you see fit. The sound emulation was quite tricky to implement, and wasn't quite 100% perfect, so I have excluded much of it from the download. The code hooks are still there, so if you're up for a challenge and want to implement it yourself feel free, and let us know how you get on! The Z80 CPU emulation is (in my opinion) fairly accurate! Some of the less used interrupt modes are in a 'TODO' state, but for most purposes the emulator as it stands works fine. There is also a built-in CPU debugger available, as with most of the functionality, using a right-click menu in the application.

To avoid any legal issues I've deliberately not included the Spectrum's 48K 'ROM' file. It is, however, a quick 'Google' away and can be downloaded from many sources easily. If we get much interest I'll write another blog going into some detail about how emulation works. In the meantime I recommend reading this site for an intro into writing an emulator (in Java): http://www2.sys-con.com/itsg/virtualcd/java/archives/0707/surdulescu/index.html

BBC Radio Cambridgeshire Interview

Written by Adrian Killens on .

We did our first ever radio interview today for Gimpy Software with the lovely Sue Dougan on BBC Radio Cambridgeshire. We talked about the video games of yesteryear, Prefab Sprout and even gave a little demo of Lunar Panda. Enjoy!

Lunar Panda Optimisation

Written by Dean Edis on .

The technical development of Lunar Panda is now coming to an end. We're getting near to being feature complete, and now have to concentrate on level design, artwork, and sound effects. It is time to put on my 'Optimisation hat' (or 'Optimization hat', for the non-Brits :o).
This typically means I'll start up my code profiler of choice, run various parts of the application, and analyse the results to identify and resolve performance bottlenecks. And I am always surprised at what the profiler tells me! In my earlier coding days I used to try and write the most optimised code I could, as I was writing it. Using lookup tables, inline assembly code, etc - It was all done throughout the development of whatever app I was working on. A lesson I've learned now is DON'T OPTIMISE EARLY! More often than not the 'optimised' code would either be refactored out of existence (Removing the need for code is always the best sort of optimisation), or it would be called so (comparatively) few times it was not worth it.
Of course this doesn't mean you should write sloppy code - Just don't go over the top with optimisation until you really know where the bottlenecks are. Having a highly efficient routine might give you a warm feeling inside, but if making it so is at the expense of readability and maintainability it's just not worth it.
So, when you are ready to optimise, there are always a few good techniques to keep in mind.