Atari, Retro

Oof Rescue!

Oof Rescue!

NEW! Play Oof Rescue! online. Try it here:

https://www.bpharoah.co.uk/play-oof-rescue/

What? What is an Oof? Why does it need rescuing? Have you lost your mind?

According to my son, this is an Oof:

Oof!
Lord Dark Oof

He’s my favourite Oof. In a previous game, Escape From Oof World, Lord Dark Oof had kidnapped all the Oofs and was holding them in his castle. But somehow the Oofs were escaping in droves. It was your job to catch the Oofs as they fell and prevent them from splatting on the ground, all before Lord Dark Oof arrived in the elevator to splat you instead!

So now, there are just 8 Oofs left, being held somewhere in Lord Dark Oof’s castle. It’s your mission to take to your Oof-copter and rescue them!

The concept of the game actually borrows extremely heavily from an Atari 8-bit game called Nadral. I wanted to see if I could make a version of it for the Atari 2600.

After weeks of work it’s finally done. Written in Batari Basic and using the DPC+ kernel, I’ve squeezed as much as I could into 32K.

6 different enemies. 25 different maps. 8 levels. 412 rooms. Yes! 412 rooms!

A slight diversion…

Actually, as an aside, I would only have managed to fit in about 3 levels if it wasn’t for a moment of genius from a friend at work. Here’s why:

data _maze1
1,0,0,0,2,1
end

What’s that then? Well this initially was the data for room 1. It told me that it was room 1, there were no exits up, down, or left, but you could go right to room 2. And finally it uses map number 1. That’s 6 bytes of data.

Well 412 rooms would then equate to 2472 bytes – which is a lot when you don’t have much space to play with in the first place. Then there was the small matter of planning which items would appear in each room and where.

I spent hours trying to think of ways around this, data compression algorithms, moving things into different memory banks, sacrificing an Oof…

But then my friend said, if your player hits a wall, he dies. So you don’t need to check which way he can’t go… Ooh. And if you number your rooms in a grid, like this:
1 2 3 4 5 6
7 8 9 10 11 12
then you know if you go right, it’s room+1, if you go left it’s room-1, if you go down it’s room+6 and if you go up it’s room-6. Wowsers! So simple, yet so utterly brilliant. So eventually, my data statement (for level 1 for instance) became just 12 bytes (instead of 72). Each byte was just the map number. Each position in the data statement equated to the room number-1:
 data _maze 
1,2,3,4,7,6,6,5,8,5,9,10
end
So map number 7, is actually position 5 in my data statement, which is room 6 – since the pointer for the data statement always starts at 0.

Show me the game!

Anyway, tldr I suspect. Here’s a little snippet of what the finished game looks like and I’m really quite proud of it:

Oof Rescue

So, when you run this in the emulator (Stella) and you want to record the action, it’s best to enable the TV phosphor effect. Which is exactly what I didn’t do above. Hence the enemies aren’t showing properly!

Update: Here’s a new gif!

Where was I? Oh yes. 6 different enemies. 8 levels. Level 8 has 99 rooms. 412 rooms in total.

I can’t draw for toffee (see rhyme later on), I’m no good with sound effects, but I hope that someone out there enjoys playing this as much as I did making it!

I wanted to do more, but I was almost completely out of space. For instance the enemy AI is as simple as simple can be, and they probably won’t trouble you too much – but it was fun drawing them!

Gameplay

So the objective is to find and rescue an Oof on each level. Fly around the maze in your Oof-copter, kill the bad guys, collect the various bonuses and find the keys to unlock certain rooms – but watch your energy levels, when you’re out of energy, you lose a life.

What’s what?

? – random bonus. It could be points, it could be energy, it could be an extra life, you might even lose points…

Lightning bolt – blue ones, 1 block of energy. Yellow ones fully replenish your energy.

Keys – to unlock doors! They also fully replenish your energy.

Locks – make sure you have the right coloured key for the right coloured locks!

Lamp posts – I don’t have a clue what these do in the original game, apart from making the screen darker. So in my version, when you shoot the bulb (and it can be tricky to line up with it), then all the baddies in that room will die.

Oof/Heart – the Oof that needs rescuing, it’ll love you forever for it!

There are two ways to play by the way. Either you can go back to the start of the level each time you die (and all items are reset), or, if you press the black & white switch (F4 in Stella) then when you die, you will reappear in the room you died in – and any items you collected previously will remain collected. All this until you lose all your lives of course – then it’s game over.

Finally…

I don’t intend sticking this game on a cartridge and selling it (can you do that with DPC+ games?) – I made this purely for fun and to practice my programming and problem solving skills.

There will more than likely be bugs, so let me know if you find anything horrible – although I’ve only got a handful of bytes left to fix anything! Be kind with any feedback please, I usually do these things just for myself and don’t release them into the wild…

However, if you do like it and want to show your appreciation, please feel free to buy me a Ko-fi – here comes that rhyme I promised you earlier:

I can’t draw for toffee, but please by me a Ko-fi!

And yes, I have definitely lost my mind…

Download zipped binary file: oofescape zip file

Alternatively, you can download the binary from here: binary file

By the way, the binary also works with 2600.emu on Android, and I suspect (from what I’ve read) it also works on the Hyperkin RetroN 77.

Leave a Reply