#1GAM Racing game on the Gameboy – Day 3

A few more developments on the racing game were begun tonight and a change of focus seemed to serve me well for once.

I was having a few issues with the background layer scrolling new tile row correctly last night and they were still occurring today so I just commented out the scrolling code for the moment and instead started on some quick sprites and getting some debug info to help me determine which tiles the car is colliding with currently, all whilst keeping variable usage down (so yeah, I’m reusing variables inside loops more now, yay RAM efficiency!)

Nothing too tough tonight but it’s good to have some more data and in-game debugging more of a possibility!

I’ll probably use the white lines as restore points should you explode off-track. They’ll need regular spacing, but that shouldn’t be too tough to sort out tomorrow perhaps? Updated screeny below, with sprites and X ‘n’ Y coordinates in the window (first 3 characters per line).

Racing game sprites and in-game debugging

Getting back into One Game A Month

So, after a long spell away from it, I’ve signed myself back up for One Game a Month, this means that I’ll start, develop and finish One Game, every month, for as long a chain as possible.

Each month has an optional theme to it and this months is “Home” So, what to make?

Well, I’ve got some gameboy development I want to do and after having posted some pics on twitter, I’m going to make a racing game in GBDK with some cunning background scrolling to generate courses. So far I’ve made my initial set of course background tiles, knocked up a quick UI using the window layer and some shonky scrolling going on, pic below.

Scrolling background - left, window layer on the right
Scrolling background – left, window layer on the right

So, where am I at with GBDK so far then?

I figured now’s probably as good a time as any to look through and see where I’m at in terms of features I have working / would like to have working or at least working better.

Gameboy Controller Input

Seems to be all there, but occasionally (rarely) misses tap commands for some reason, I can’t fathom this one out though.

Background, Window and Sprite Handling

kawaaiii
The sprites were still cute, thanks to my lil PHP tool :D

This has come along really nicely since when I begun my journey with GBDK, to the point where I now have my own tool to convert png files into usable GBDK data and export it out a plain VRAM for usage in other tools.
Whilst the game itself turned out pretty poorly, the tools I developed were vital for Global Game Jam 2016, making sprites of that size purely in 8×8 groups of pixels would be horrendous!

Sound

Sound effects are pretty much there but I’m still without the right method to convert music from a program into byte code and back into a tune on the Gameboy.

Multiple Bank Handling

Seems to be all good, I’ll be doing some crazier bank switching antics in the coming weeks, with an eye into starting and finishing a scrolling shooter, orrr possibly a racing game, it depends on my mood I guess.

GGJ 16 – A Swing and a Miss

Whilst I’ve enjoyed a good streak of results from recent game jams, my first Global Game Jam didn’t go quite as planned, I felt like I was working against the Gameboy throughout the 42 hours of development time available to me, as I hadn’t done any real Gameboy development work since Ludum Dare 34 in mid December, I was going to have a rough ride of sorts in any case. Quite how rough was a bit shocking to me.

Bugs occurring at stupid hours in the morning greatly affected the amount of sleep I got in during the weekend and by Sunday morning , whilst I was determined to have something finished, there really wasn’t much of a game there, although to be fair, a clicker game isn’t much of a game anyways.
waifu
There was a lot of coding going on though, for little reward, after some issues, particularly with remembering how multi-banking worked, Waifu Clicker is a clicker game, with randomnly generated characters, password system, some sound effects, difficulty curve and sadly, not much else.

kawaaiiiAfter submitting a working initial build to the Jam site with 2 hours to go I attempted to bung the in-game shop in there but, more issues with decrementing my heart score (an unsigned 8-bit array) after the first pass and general exhaustion left me collapsed at my laptop.

Whilst it’s far from my best work, it proved to be a handy reminder for me to be prepared for game jam events and my preparations this time around were minimal to say the least.

Atari VCS Development – Day 3 – Customising my Kernel

I decided to have a play around with my Kernel code in an attempt to see if I could get some variants of graphics on the screen, whilst I’m ignoring my sprites I wanted to attempt to get a power bar working using the background alone, as I can use the NOP command to delay for 2 cycles, I can decided how long each power bar is with those commands.

I’m still experimenting with the Kernel code to wring some more out from it. But I now have more colours on one line which could be used for some sort of effects in the background. It’s not that exciting to view though so, no point in putting an image on here. At least, not until I’ve played around more with the code.

I’d like to get two different sprites on one line without any negative effects, I may have to use some flickering in order to achieve this though, racing the beam is a tad tough!

Atari VCS 2600 Assembly – Day 2

Gone is the coloured background. Here instead, are some sprites and missiles!

spritesandmissilesI’ve hoodwinked the 3rd bunch of sprites in-between scanlines and, whilst it’s proving tough to get the missiles aligned horizontally, they are firing on joypad input and both players have seperate inputs available.

I might try to demake Invasion VS onto this from my Original OUYA release. It was pretty fun to play against another person. Not sure how I could hoodwink AI into 4k but I’ll see!

I’m thinking mode switches to change the display type for each player, different player counts could lead to some decent gameplay, think air sea bttle but with players facing each other, that’s what I’m aiming for here.

It’ll be tough but I’m pleased with making some progress on the kernel today. I’d love to speed it up a bit mind you!

Atari Game Development and Assembly – Day 1

Well, here goes nothing. Or, in fact, something!

With the right tutorials I’ve got my head around some Assembly, after a while of research and learning how to structure loops and the equivalent of while loops I feel like I’m getting somewhere!

I’m limited to a paltry 4k of ROM space and everything is being drawn on a line-by-line basis, I doubt I’ll need all 128 bytes of RAM to be honest as there’s not much room to play around!

Still, so far I have a background and moving missile sprite, which moves based on Player Input. There’s even some tones being generated on movement which is kinda cool.

Coloured Bg and Yellow Missile, Yay!
Coloured Bg and Yellow Missile, Yay!

Plus there’s a register dedicated to handling collision detection, how cool is that? I mean, you just check the set bits and you know what has collided with what!

Right, I’m going to see how I can get a sprite or two on there, seeing that it can only handle 2 sprites, 2 missiles and a “ball” on the hardware I’ll be hard pressed to make something playable!

Really Useful Links for anyone interested:

6502 OpCodes – http://www.6502.org/tutorials/6502opcodes.html

AtariAge Tutorials – https://atariage.com/2600/programming/2600_101/06happy.html

A lookback on 2015

Well, this was a different year to recent ones, Mid-way through it I quit my Job, gave away my Business to a friends of mine and started working at another good friends company, doing roughly what I’ve been doing for the last 9 years, but without a lot of the stress that running a web design business, whilst maintaining a sizable client base and keeping on top of billing, phone calls, etc, etc. All going through myself.

I’m a lot happier where I am now, I can get on with working on just one website, as opposed to chopping and changing between many at the same time, I can actually focus on tasks in an order instead, work on generally improving my coding style and other stuff which is great!

So, my work life seems a lot better than it did before, certainly more stable anyways.

Despite this, I’ve not been able to devote as much time as I like to game coding over the year as a whole, but the latter half has given me new interests within the realms of Homebrew Coding. So far it’s been purely on the Gameboy and I’ve made 3 games for it since learning in in August, there’s a larger game in progress also for it. It’s become my new passion development wise, that’s for sure.

Over the Christmas break I’ve decided I want to write a game up for the Atari 2600, probably in Machine Code, if I manage to get a pixel on screen that’ll be an achievement by the looks of things though! I’ve never dabbled with machine code before and, whilst Gameboy Development with GBDK has proven to be a really fun introduction to coding on older systems, the limitations of the Atari are extreme. So, it’ll be fun to see where that goes next year, maybe I’ll get something onto a cart, maybe not, I guess we’ll find out eh?

There’s still work on They Are Everywhere which I’ll get around to at some point next year also. I really have to finish that one off, or it’ll just never happen, which would be a shame as it still feels fun to play now as it did earlier in the year before feature creep came along and said “Hey, maybe you should add more game modes and port it to the Gameboy” Geez, that has really got be released soon.

More importantly It’s 9pm and I spy both Rum and Cola downstairs so… Buh bai!

Back to Gameboy or Atari Game Development Tomorrow?

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.

So, 2 Gameboy Games, 2 weekends. Is this a trend for me?

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!