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.

Lightning!

Written by Adrian Killens on .

We're still hard at work on the next instalment of Lunar Panda but I thought I'd take a bit of time out from testing Mr Panda's ability to collide with space debris and update you on our latest shenanigans.

Dean "Carmack" Edis has just worked out a way of injecting lightning into the levels using his immense brain power, check out the screenshot! So now along with various other obstacles Mr Panda will have to contend with lightening forcefields. I'd almost feel sorry for the fuzzy little space hero if he wasn't such a thrill seeker.

Oh and we also changed the way he dies. Check out the speech bubble, if you recognise the retro gaming reference then drop us an email at This email address is being protected from spambots. You need JavaScript enabled to view it. you won't win anything but you will gain our respect ;-)