Tech Blog

Writing a ZX Spectrum emulator in GameMaker: Studio

Posted by Mike Dailly on 27 February 2015

So if you followed my last emulator series, you'll know that I built up a lot of caches of shapes (characters and sprites) on demand, and then drew them when required. This works great for old consoles, and computers with character map screens, because on the whole, games tend not to change character set images very often, just the actual character map screen, which referenced these images. Because these kinds of machines have pretty good hardware support, they don't have to resort to shifting bitmaps around, there are much easier ways of doing things.

More »

Creating a Commodore 64 emulator in GameMaker - Part 8

Posted by Mike Dailly on 20 February 2015

So in this, the last part of my Commodore 64 Emulator series, I want to talk about some of the optimisations I did to help speed things up. But before getting into this, why do we need to speed things up? Wasn't it all running at 100fps+ anyway? Does it matter if your already over 60fps, as this is the refresh of the monitor? Well, yes and no.... No once you're over 60fps, its not that going to show any real difference. And yes... it does matter, because when things "hicup" the more spare capacity you have, the easier it is to absorb the hicup.  

More »

Creating a Commodore 64 emulator in GameMaker - Part 7

Posted by Mike Dailly on 13 February 2015

So in this chapter, I thought I'd tackle the tricky subject of SID chip emulation, both how I generate the sounds, and how I get them to play back in GameMaker.  Before getting into any of the nitty gritty, let's have a quick look at the SID chip itself. Back in the day, it was the sound chip, the sound it generated was unparalleled in computers, and the musicians  that created music on them - Gods among developers, superstars in their day.  So what can this masterpiece of engineering do?

More »

Creating a Commodore 64 emulator in GameMaker - Part 6

Posted by Mike Dailly on 6 February 2015

So, now that we have C64 sprites being rendered, how about characters? Well like sprites they are made from blocks of memory on even boundaries, all be it a lot smaller. So we can do the same trick with invalidating and caching on demand 8x8 surfaces. So how many 8x8s can a C64 hold? Well...8,192. That's a fair old step up from the 1024 that Sprites used. So can we fit 8,192 characters on a surface? well, as it turns out they fit nicely on 1024x512 surface, which isn't too large at all these days.

More »

Creating a Commodore 64 emulator in GameMaker - Part 5

Posted by Mike Dailly on 30 January 2015

In this part, I'm going to start looking at sprites, and see if there's anything I can do in order to display "something" so I can better see games running. The simplest thing to do, is to just display a blob, but before we do that let's look at sprites in general.

More »

Creating a Commodore 64 emulator in GameMaker - Part 4

Posted by Mike Dailly on 23 January 2015

In this part, I'm going to start discussing how I handled the screen at the start of this process, and the reasons behind these choices. I said in the first part that you could simply read the C64's screen memory and print it, so what did I mean by this?

More »

Creating a Commodore 64 emulator in GameMaker - Part 3

Posted by Mike Dailly on 16 January 2015

In this part I want to talk first about the CPU bug I had, and how I fixed it, then I want to discuss the C64's memory mapping system, and how I deal with rapid paging on a per instruction basis.

More »

Creating a Commodore 64 emulator in GameMaker - Part 2

Posted by Mike Dailly on 9 January 2015

So my next post was going to be about tracking down my CPU bug and how the memory mapping was going to work, but then I suddenly realised I needed to do another first, on how I actually emulate the CPU - a bit more detailed at any rate. So I've moved all the others out by a week, and thrown this one in first....

More »

Creating a Commodore 64 emulator in GameMaker - Part 1

Posted by Mike Dailly on 31 December 2014

So I started this very much in the "can you even do this" spirit, and have been surprised how much I've been able to do with it. Sure, it does require YYC (GameMaker: Studio Compiler), but as YYC is now available to everyone, then I no longer see that as a dependency, but just another tool in the GameMaker box. There are several complications in even trying this, but the CPU emulation is "just" a program so should work easily enough, while rendering emulated memory is a tough nut to crack - but we'll come to that in a later part. The reason for writing these posts, is that I've come up with some interesting tricks to over come some GameMaker limitations - as well as good tricks to just help speed up your code (much as you would in any language). So I thought it would be a good idea to share them.

More »

Windows 8 - The App Bar

Posted by Mark Alexander on 19 December 2014

In the final tech blog of our Windows 8 series, and our final tech blog of the year for that matter, we'll be covering the App Bar which you can use the to display commands to users “on demand” and it will show commands relevant to the user's context, usually the current page, or the current selection. What this means for your game is that it gives you a convenient place where you can add buttons to do things like restart the level, quit the game or save the current state.

More »

Windows 8 - Charms

Posted by Mark Alexander on 12 December 2014

Last weeks tech blog was the first in a series of blogs covering the Windows 8 target platform. We discussed the use of Live Tiles to improve user engagement, as well as the use of badges to display game information. This week we are going to continue with Windows 8 and discuss the different ways that you can use Charms from the Windows 8 UI within your projects.

More »

Windows 8 - Live Tiles

Posted by Mark Alexander on 5 December 2014

In this weeks tutorial we are going to start an exploration of some of the unique Windows 8 features that are avaialble to you when developing games. The Windows 8 platform isn't as popular as some of the other GameMaker targets, and much of that is related to the fact that Microsoft require you to use some of it's features, like Live Tiles and Charms, but we hope to show in this tutorial (and the ones to follow) that integrating Windows 8 functinality in your games is easy and will enrich the player's experience.

More »

What's New In GameMaker: Studio 1.4?

Posted by Mark Alexander on 28 November 2014

This week saw the release of the major 1.4 update to GameMaker: Studio. This update adds a great number of new features, and although everything is fully listed in the Release Notes, these do not quite give the full picture and may appear ambiguous to some. So, in this article, we are going to give you an overview of what's new and what's been changed, and link to some of the previous tech blogs that we've done covering these features in more details.

More »

Introducing The GameMaker: Player

Posted by Mark Alexander on 21 November 2014


More »

How To Setup And Use GamePads

Posted by Mark Alexander on 14 November 2014

With the addition of console support, as well as the release of the new GameMaker: Player, it's more important than ever to have gamepad support in your projects. To many users, this can seem a complicated process, but hopefully in this tech-blog we can show how simple it can really be and you'll be able to integrate gamepad support in your games in no time!

More »