Christmas was lots of fun and it’s been lovely but I’ve got that urge to get back behind the code again so tomorrow evening I’ll either start making another lil gameboy project, orrr possibly continue They Are Everywhere with levels 6 to 10 or, maybe, just maybe look more into Assembly for, of all the things, the Atari 2600.
Yes, the Atari 2600.
The one that’s most likely a real ruddy nightmare to develop for, has really, REALLY limited everything. Yeah, that’s the one. Again, mostly for the challenge of making something for an old system, this one being older than myself even!
I’ve done some research online and it seems like a worthwhile challenge, I won’t be attempting to make anything in particular, but, if I can make anything work on it, I’ll be happy with that.
Also, the folks at atariage.com offer the ability to put your game onto a cart for $25.00, which is kinda cool, now, time to dig out that Atari 2600 from somewhere…
I blame myself for reading through Racing The Beam the last couple of days. It’s quite the fascinating read if you’re into retro gaming and goes into details of 6 Atari VCS games, from one of the release cartridges (Combat in 1977) to Pitfall, Yars’ Revenge and the Ill-Fated Initial conversion of Pac Man with details on how the developer for each game explored the limits of the Atari console and made it work seemingly beyond it’s capabilities. It’s crazy stuff!
Soo, probably time to download Stella and some other tools, will report back in a day or so.
Probably not, haha! I do love making games for the Gameboy though, so I’m going to continue down that line for a while now. It’s still enjoyable to code games for limited hardware for me and it’s taught me a fair amount about code optimisations, which is handy for me in general. There’s also plenty left for me to learn about it, I may have made 3 games in total for it and have one in the pipeline but there’s a lot to learn in that lil system and I’d also quite like to make myself some tools I can use better within the games I make.
I nearly ended up using my own system for the sprites for Novascape, but, sadly it had a small bug, which has now been fixed so I can make more complex backgrounds and sprites with a bit more ease than before!
I might try my hand at making a basic platformer next time around, It would be nice to get a better hang on properly mapped scrolling backgrounds. Then again, They Are Everywhere has been waiting in the wings for quite some time now and really needs completion sometime soon. Ohh decisions, decisions…
Additionally, I put some feelers out on twitter regarding making some videos to help people into Gameboy Development with GBDK as the documentation on getting started with it seems rather scarce out there. I remember searching for hours in an attempt to find a PDF that contained the actual values that converted over to notes! I made my port of Spike Dislike using an inaccurate emulator, which then showed up on actual devices and my current emulator of choice, BGB.
So, I’ll spend a lil bit of time during the Christmas break putting some videos together for the New Year, yeah!
So, last weekend Ludum Dare 34 happened and I really love the Ludum Dare game jam events, my first attempt was way back in Ludum Dare 24 and since then I’ve entered almost every one.
This time around, I set myself the additional challenge of making a Gameboy game and whilst my Flash Cart had just given up the ghost, I persisted with the plan.
For the first time ever, two themes were tied for first place, so I could choose which one to go for. Either “Growth” or Two Button Controls”.
I opted for the latter and within an hour I’d roughly planned out in my mind what I was going to make, essentially a game where you have to escape from a pit, as a spaceman, before the rising lava plume consumes you.
GAMEBOY & GAME ASSETS… OH BOY!
Now, asset creation for the Gameboy isn’t a trivial thing sadly. You’re limited to 4 colours which simplifies things a lot but, GBDK only contains some basic tile editing programs, which I love by the way, thank you very much to the developer of these, they mean I can actually get my hea around things!
So, I’m limited to 8×8 groups of pixels, which is okay for smaller sprites and looping backgrounds, but not so much for creating detailed backgrounds, that becomes a lot more time consuming and error-prone when transposing from Photoshop into each 8×8 tile.
When it comes to sound, it only gets tougher, you don’t just load up a wav file and set it to play, you’re manipulating the sound channels directly and the Gameboy is armed with:
2 pulse / square wave channels
1 noise channel
1 custom channel, so, you could in theory import wav files somehow but, it’s not recommended, we have minimal RAM and ROM to play with here!
Coding in plain C isn’t too bad though, as long as you keep everything small in terms of code size and try not to use comparison operators (e.g. less than, greater than, etc) or multiplication, division, sine, etc. (At least not without look-up tables). then you’ll be okay.
No floating point variables either, those would really bog the 4Mhz Z80 down, ideally keep everything to an unsigned 8-bit integer (0-255) which again, is tough initially but a couple of 16-bit integers are allowable.
Having mentioned all of this, the game managed to get to a fairly playable state within the first day, although at this point there were a lot of gameplay issues that still needed to be fixed, for example, you could simply hold A and not much would get in your way, sometimes not at all!
Also, there was no horizontal movement, only vertical, which felt a bit boring, so the following day, whilst refining the newly added enemies and trying to generate their placements in more annoying ways I stumbled across an idea.
A FUEL METER!
Of course, why didn’t I think of this before. If the jet pack runs out of fuel, then that’s it, you’re toast. But, it needs balancing out somehow, so in went the flashing fuel cans and gun recoil, allowing for some control over horizontal movement with the B button whilst vertical motion is all handled with the main (A) button.
But how to handle giving the player fuel? It should be based on performing a task and also, as horizontal movement is slow, lava is rising up quickly under you, it could be too tough to reach!
There was only 1 solution in my mind that would bring another layer into the game at this point, shooting enemies could release homing fuel cells which the player could collect with relative ease.
This meant that not only were enemies deadly, but you had a damned good reason to hang around and aim for them, your jetpack quickly runs out of fuel on the hard mode in the game, so enemy destruction is a must!
The game was looking pretty close to it’s final form by around 4-6pm on Day 2 and with around 7 hours left it was mostly debugging, polish and ensuring all the standard trimmings such as endings, title screens, differentiating easy mode from hard mode more and, in general making sure it all run without too many bugs.
Because, there are bugs, just a couple, but I couldn’t find how they were occurring. In the scope of things though, they’re fairly minor and, in some circumstances, give a player an advantage whilst playing, sooo, yeah. I guess I’m okay with that.
All in all, I thoroughly enjoyed Ludum Dare this time around, it wasn’t as stressful as previous ones, how much of that is down to experience and how much of it is down to going for the Gameboy, I don’t know. However, you can play NOVASCAPE for your Handheld Nintendo Gameboy System here and I recommend that you do, it’s fun, you just need to learn the controls 🙂