Codetapper's C64 Site

Batman Returns Part 1

Welcome to the weird, wacky and sometimes wonderful world of computer games development. Here at Denton Designs the company motto is 'You do have to be mad to work here, but it doesn't necessarily help.' What I always say is 'Fish! Blibble, blibble — is that you Aunty Sarah?' The rumble of passing trucks and the hectic clicking of keyboards almost masks the sound of brains working, or failing to work, whichever the case may be.

I've only been working at Dentons for a couple of years but it didn't take long to slip into the hyperactive, ultra-stressed atmosphere of the company.

This place is inhabited by many strange beasts (no, not the programmers!) all masquerading under the general name of 'bugs', of which there several types:

  • 'Features' are mostly harmless things — you know what's happening and how to fix them, but its comforting to keep a few around for those dark, lonely nights.
  • 'Crashes' are mean little beggars that lie in wait for weeks before deciding to trash your machine and there's no place a crash can't hide. It could be in a seldom used piece of code that simply doesn't work, or a piece which works perfectly 99.9% of the time — such is life.
  • 'Gotcha!' is every programmers favourite phrase as the little devil is finally collared and mercilessly executed (oh, I love that scream!). Then I'm off strutting round the office with a smug grin on my face at anyone else with a nasty bug — well, they do it to me!

Throw in a few typing mistakes the odd 'logical bug', stir for a while and you can get in a right mess unless you keep on top of the situation.

Like most games these days Batman Returns was written to a tight 'spec' (specification). Long before work got underway on the game itself, a detailed document was drawn up describing what the game was actually going to involve.

We started with the script of the film (the movie wasn't even out then) and picked out the juiciest bits for a platform beat-'em-up style game. To see the script (which has 'Top Secret' plastered all over it), you have to sign a confidentiality contract. If one sniff of it gets out (even to your best mate), you have to read Commodore Format for the rest of your life!

We also procured the video for a fun night in, so myself, John (Amiga programmer) and Ally (Amiga graphics) went sat down to watch it. With an all-expenses-paid bucket of Kentucky Fried Chicken each (yum), we sat down ready to make notes. The film, pretty obviously, followed the script but as it turned out, we were too busy stuffing our faces to make any notes! When it finished, we discussed our favourite bits and what we each wanted to implement in the game.

Some of the finer points still needed to be sorted out between the programmers and artists before the game itself could be started. What moves would Batman have? How big would he be? How many colours would he use? Who killed JFK? Why do smelly socks always stay under the bed?

We decided that to get Batman looking good he'd have to be two sprites tall and two wide. Using multicoloured sprites would only allow us three colours, and the pixels would be really chunky. This proved a bit restricting for the artists who like to have lots of colours involving clever things with shading (so they say) and small pixels to cram in the details. As I was feeling generous, I told Paul (C64 graphics) he could have a hi-res sprite overlay for each of the multicoloured ones. After Paul had raced off to get his teeth into the graphics, I did a few sums and came to the horrifying realisation that Batman was going to use up 8 sprites! Oops, oops and triple oops!

The solution was to multiplex the sprites changing and defining them and consequently fooling the VIC chip. As far as the chip is concerned, Batman uses eight sprites but in fact I've still got four remaining (tee-hee)!

State of the artists

Artists are wildly extravagant with animation 'phases'. Most games use four (only two in the old days) different drawings of the main character running, but Batman uses eight to make him look smooth and sophisticated.

In life there's always a price to pay, and in this case it's memory. To figure out the total amount of memory used the number of 'phases' (eight) are multiplied by the number of 64 (the number of bytes each sprite uses) which equals 512 bytes — that's ½k!

With Batman taking up over 17k, I'll let you work out how many phases he uses.

The VIC chip can only use 16k of Ram at a time so the next problem involved cramming the caped crusader into the sprite memory. The answer was to copy the right phase into some blank sprite slots every time he animates. Not too tricky in itself, but Batman still faced in only one direction (it would have taken 34k to face both left and right!). Now I had to mirror each byte of data before re-ordering and moving them into the sprite slots.

Several nervous breakdowns later, and there he was running, punching kicking. jumping etc... hurrah!

The big job

The next big job was the background scroll, moving every character on the screen either left or right — dead easy. The hard part was filling up the edge of the screen with more characters (people are over-fussy if you ask me).

Paul was plugging away at the background graphics and it would have been hard to get too excited over the silly blobs that were moving about, but I knew it worked and that was good enough for me.

Batman Returns is to be a beat-'em-up right? So where are the baddies? Well that was the next thing on the agenda. Animating them wasn't too much trouble, but you wouldn't be particularly worried by a baddy who wandered aimlessly about the screen now, would you? I needed to give them brains — the acrobats had to know when to jump up to get Batman and when to duck a punch. They needed to know where Batman was and what he was up to. There's no 'cheating', they won't duck a punch until they see it coming and they've all got reaction times. It can't be too easy though, otherwise you'd race through the game first time.

Getting this balance just right is time consuming, as every time you change (or 'tweak') one thing, something else needs adjusting. If I change the running speed of Batman I have to change the speed of the clowns too, so you can't just run away (not that someone as brave as you would). This part of programming starts when you've got something on the screen and stops when the game is in the shops (with short breaks for eating and sleeping which us programmers are occasionally allowed).

Level One and Two are completed (except for tweaking) — or are they? There's still the little matter of the status to do. Ah, that wonderful bar across the bottom of the screen! You've got to know a lot of stuff to really get on with bashing those baddies and making Gotham safe for all the decent law-abiding citizens (as if you care!).

Lives, strength, combat mode and, most importantly of all, your score all need to be displayed. Up until the graphics arrived this was my 'monitor' — a programmer's greatest ally in the fight against the evil bug. Bold white text on a dark grey background (scrumptious!) that tells me everything I need to know. Batman's position in the map helped me type in the collision data for the platforms and power-ups. When the biker steadfastly refused to make an appearance, I could find out where he was and what he was doing.

The information shown was of no use for playing the game, and I'll admit it didn't look too hot (it was a nice colour combination though) so more graphics were required by Pat and extra coding from me too. For a start, my monitor shows all it's numbers in hexadecimal and as 'I've just got a score of 2CF!' isn't going to impress your mum, I thought I'd better put it up in decimal. A score which counts up is so much more fun too, especially when you pick up the multiplier bonus!

Hang on, what's happened to my monitor? Well the truth is it's still there — well all the code is. Whenever I need it, all I do is change a flag (called 'monitor'!) from 0 to 1 then assemble my code and there it is — clever stuff! It all got a bit tiresome when I had a bug in my status... but that's another story.

So, level three is next, and it's multidirectional so a new scroll routine is needed. New baddies need to go in, most notably Catwoman (ooh, tight leather suits and all that!) so there's plenty to be getting on with while the graphics are being drawn. Where's Paul got too...?

Roy Bannon

Just who the hell do they think they are?

Denton Designs have produced some of the best — not to mention most original — pieces of software available across many computer formats. They've developed programs for some of the biggest names in computer gaming, having worked for Ocean, Imageworks and Audiogenic, among others. With their eighth birthday coming up the bridle track at a swift canter, we thought we'd take a little peep at just exactly what's made them great over the years.

Innovation was the name of the game from the beginning. Their first C64 release caused some elation when reviewed back in the very first issue of ZZAP! 64 — Shadowfire received a not-to-be-sniffed-at 91% and claimed the distinction of being the first icon-driven adventure on the '64. It's a genre that's been swamped on the 16-bit machines in recent years, but rarely repeated successfully on the Commodore 64 (Elvira 2 being a notable exception). Next up they opted for a totally different approach, with even more astounding success. Ocean snapped up a seemingly curious license — that of pop group Frankie Goes To Hollywood — and no one knew what to expect of the end product. As it turned out, the Frankie game dumbfounded everybody when released and fully deserved it's 97% rating.

How, then, could they possibly follow these with equal success?

The answer came in the form of a follow-up to Shadowfire, continuing the adventures of the Enigma Team (heroes of the first game) called Enigma Force. Many of the original's elements were carried across along with several new ideas. For instance, the top part of the screen was replaced by an animated play area where you could see the action unfolding. In fact, you could even take 'hands on' control of your characters, and play the game as a shoot-'em-up/arcade adventure. But still, the best was yet to come...

An all-time classic emerged around the middle of '87. The Great Escape was a wonderfully engrossing and atmospheric isometric adventure set during WW2. Graphically excellent and with many possible escape routes, this kept many a person occupied for many an hour.

The Great Escape's design engine was later used on the far larger, more involved, Where Time Stood Still — a great game which, though appearing on the Amstrad and Spectrum, inexplicably never to the C64. After years of innovative and original products, Denton turned their hand to the sports sim fraternity and teamed up with Audiogenic. With the Rugby Union World Cup in full swing, a swarm of computer rugger efforts were expected. In the end, it turned out to be no more than a trickle. Rugby had never been brought to the computer scene with much success, so hopes were none too high. Denton, however, defied all and came up trumps again. Combining basic management elements with exceptionally-playable arcade action, different plays, easy to master passing, rucks and scrummages World Class Rugby was a finely tuned representation of the sport which, incidentally, blew the official licensed game out of the contemporary fishpond.

So, with many legendary titles to their credit, rest assured that the upcoming mega-movie tie-in Batman Returns will be something to watch out for. Want to know more? Well, perhaps you'd better listen to Roy Bannon. He's the programmer, and knows everything there is to know about madness, bugs and demanding artists.

CAPTION: Yeah, like let's steal the sign. It'll look great on the office wall, don't you think?

CAPTION: Below: Ally, Jon and Roy decide to hide behind a pillar. Only the offer of cups of coffee and sticky buns could entice them away to finish the Diary.

Series Links

Part 1 / Part 2 / Part 3

Post your comment

Comments

No one has commented on this page yet.

RSS feed for comments on this page | RSS feed for all comments

Any suggestions?

If you have any idea what should go in this box, please let me know! :)