More Formula Racing Features Added!

Okay, it’s been a while but, yes life, is a thing and it isn’t always coding of course 🙂

Having said that over the weekend just gone I’ve managed to get more of the game ready, including part of the opening sequence which just needs some palette work for the gameboy colour so that’s all in motion.

I’ve set-up the ability to have multiple levels in the game and I reckon I can easily fit a decent number in there, possibly with each one having it’s own variants in both colours and some other elements to break things up a bit.

I’m tempted to learn how to add a border for the super gameboy also, although I’d need to learn some more ASM first in order to figure this out.

Sadly, it looks like I won’t be finished for the February #1gam but, that’s okay, I’ve got more of a workable engine to use across the year for any future gameboy games and that’s pretty neat.

Speaking of engines… Damage is now a factor with your race car. Taking damage impacts acceleration and once the limit is reached, you will explode, lose three places, then respawn. Crashing into the back of another car or off track obstacles is particularly painful!

Cars get tougher to pass the further up the rankings you go and I’m still enjoying playing and making the game so, that’s all good for the moment I think! Now, back to figuring this Super Gameboy out a bit perhaps….

[edit] I shouldn’t have made this border, now it’s a mission! [/edit]

sgb-border2x

Racing A.I. Squeezed In how much is left?

So, I’ve established some form of racing A.I. which will at least, keep them on the track a lot better and they still perform some homing in on the player, making them particularly tough to pass easily on the test track at least.

Lap counters, speedometers and damage counters are in place and ALL THE BASICS ARE THERE! Which is really nice, but. I’m pretty much maxing out the CPU on the Classic Gameboy, which means there’s not much more I can fit in before things get janky and framerate-y.

Essentially, I’m now really limited to what else I can add to the game without breaking the Gameboy version (the Gameboy colour version is a-okay though, faster CPU (~8MHz) so more time per frame)

Hopefully some power-ups are possible. I’m thinking either boost pads or boost fuel drops in odd places on the track would be pretty cool to force the player off-line.

I **could** drop the game down to 30fps instead of 60 but I don’t really wanna do that. That smells of just giving up on performance, there’s got to be another way around it.

I need to add some toughness to handling the cars also, make the controls a biut more analogue in the steering. That should make things a bit more interesting regarding mastery of the game.

Animated A.I. Cars (click for big)The Lap count is currently going up from 0 and taking up to much window space so It’s going to be changed over to a countdown instead with “L:XX”. With XX being the number of laps remaining.

There’s only a few days left until the end of the month now and #1gam is looming, I’m still hoping to add a few game modes in there though, including a championship mode, time attack, not to mention intro screens, car selector and results summary. Oh and a password system.

I think I’m going to need to cut-back a bit!

More Gameboy screens in Photoshop

Refresh Games Gameboy Title Screen Game Intro Screen with mode selectNot the most productive day for coding today but, thanks to my sleep pattern being slightly messed up this weekend, I managed to fit a couple of screens of pixel art in tonight / this morning.

The Refresh Games logo needed some Gameboy love and should fit easily into RAM, but, the main title, I’m not so sure about.

Some clever tile mapping will be needed no doubt, I guess that’ll be tomorrows gubbins!

Still, it looks pretty cool there, I used a 3d model of super deformed F1 car I’d made a couple of years ago which just seemed to fit in really nicely when posterized in Photoshop.

We’ll see tomorrow I guess then.

[P.S. most of my tutorial code for part 2 of my GBDK tutorial series is nearly ready also, it just takes a while to write all about it.]

Background collisions, SFX and TURBO!

Well, today went really well, I fixed up my collision routines with the scrolling background, yup, it was using a simple offset, with a case for looping every 32 row increments, seems to work well. Possibly un-optimised but good enough so far.

There’s some rudimentary noises from both cars on screen based on their speed and distance from each other, also collision noises are in there now.

The fuel-o-meter has turned into a working turbo bar to help catch-up or overtake other racers. It’s getting there, but I’m down to 4kb of ROM remaining now and the racer A.I. needs improving on the sly. I’d like to get some BGM in there also somehow.

CPU Usage is getting pretty high now though, so I may need to inestigate into other ways to load my level up. Setting colours for each tile through a switch is probably slower than referencing another variable directly I imagine but, well, a balance needs to be struck.

Tomorrow I’ll most likely be sorting out the code into banks to save space and going from there with more advanced A.I. (Not simple homing, falling of the track A.I.) those cars need to fall foul to going off track also and that’s going to be inetresting to set-up correctly!

Screenshot tonight is from the gameboy classic mode where, yes. Identical cars. I’m not too fussed about that. I am fussed about adding some steering animation though!

Getting There

Background collisions and more visual debugging #1GAM

BKG Layer Collision in GBDKYay! Turns out it wasn’t too tough to get the collision working there, man, does visual feedback help out a shit ton with coding, I’m loving all the features in BGB, A really great Gameboy Emulator, they really help me out here.

So yeah, hopefully, that GIF will animate and you’ll see the friction applied to the car when it goes off-track. Simple stuff but hey, it’s working well and fairly quickly (I’ve got around 90% of CPU left per frame when the debugging is removed and roughly 70% with debug info being output every frame (not optimal, I know)

I’m going to need some animation frame for the car at some point, so it can at least have some appearance of turning, maybe 2 frames of animation. I can get away with only 8 tiles for that with sprite flipping, which is going to prove to be a great bonus when I get around to sparks and explosions further along the month!

Soo, yeah, next up animation frames and making other collision objects stop the car / explode it into tiny pieces, ohh rahh!

Before I sign off on this update, I should note some other systems I’ll put in ,obvoius control schemes for controlling using A and B for gas and brakes, with the D-Pad for steering, pressing up could use some sorta Turbo maybe. That would be pretty cool to figure out.

There’s still Scrolling, Music, SFX and maybe some rudimentary homing A.I. to add here, but I think the code loops should be tight enough to keep the gameboys 60fps with some cunning compression, I could make some super long levels also.

#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