Press A! Hooray! It’s time for Rare Replay!
What a project this was to work on. I’ve been a fan of Rare’s games for as long as I can remember. Diddy Kong Racing was the first game I ever owned (I’d only really played my parents’ games and rentals up until then) and unwrapping Banjo-Kazooie on Christmas morning (1998) and then immersing myself for the remainder of the day is still a vividly clear memory.
So you can imagine my excitement at having the opportunity to revisit 30+ years of the company’s history in order to lovingly package them together for fans across the globe. And this was no cheap cash-in with a few roms stuffed on a disc, oh no! Each game was lovingly treated, there’s behind the scenes documentaries, never-before-heard music, and loads more.
So what did I do during development?
First and foremost it was my job to provide a mechanism for two key features: snapshots and achievements. Snapshots are bite-size challenges that encapsulate a nugget of gameplay from a game and present it in an accessible (but not always easy!) way. So you might be asked, for example, to kill 20 enemies in Jetpac without dying. Each snapshot has an online leaderboard to encourage replayability and a bit of friendly competition amongst peers.
But to achieve any of this we need to know when an enemy is killed and when the player dies. In a game built from the ground up that’s trivial enough, but in a game from 1983 that was written in hand-rolled assembly code? Not so simple. Especially given that a lot of the original source (and any helpful comments and documentation) for these games has long since been lost to the ages. A problem that’s not so uncommon in our industry.
That’s where I came in. It was my job to dig through binaries and assembly code in an attempt to reverse engineer each game to a point where we could hook specific gameplay events. For me that also meant becoming at least somewhat familiar with an array of processors and assembly languages to cover all our platforms: Spectrum (Z80), NES (6502), Arcade (TMS320), Nintendo 64 (MIPS). I could write an entire article on the process of doing that for each platform, but needless to say it was a heck of a learning experience. And way more fun than it might sound.
It’s all well and good having these hooks, but assembly code isn’t very accessible for designers. Early on, then, I went away and had a think and decided to create a simple scripting system that would allow a designer to take all these magic memory addresses and build snapshots around them. I settled on integrating Lua into our engine and wrote some mechanisms that would send callbacks from each emulator when a certain line of code was hit, or a given memory address was written to (e.g. number of lives being reduced). Designers could then write a script to chain these together and create a variety of interesting challenges with various goals and criteria.
For the most part we didn’t alter the original games very much – we wanted to provide a faithful recreation of each experience as best as possible. But there were a few exceptions. There’s a Jetpac snapshot, for example, with no platforms (every level in the original Spectrum game had the same three platforms in the same location). But by far the largest alteration I made was in an effort to celebrate perhaps the most infamous level of any Rare game: Battletoads’ Turbo Tunnel. Notoriously difficult (even though the rest of the game is much harder) there was only ever one possible modification to pursue: make it loop infinitely. You’re welcome, internet.
I also refactored the various Spectrum game menus to make them more sensible for an Xbox One title. There wasn’t much need for an option to choose between keyboard and Kempston Joystick input, for example. The last major alteration, though, was for Jet Force Gemini, which, although an excellent game, features a control/aiming system that is very clearly a product of its time. To modern gamers the lack of dual analogue stick controls can feel very jarring – so that’s exactly what I added. Well. Sort of. It certainly feels more natural at any rate. It’s totally optional, of course, so you can revert to the original controls at any time if you prefer. But it’s been very gratifying to see the overwhelmingly positive response to the new controls so far.
The Rare Replay team was a pretty small, tight-knit group so there was plenty of other work to go around. I also chipped in with some user interface and general systems work throughout development, but it was the siren call of the reverse engineer that blared loudest. I can’t imagine myself ever getting the chance to work on something like this again in my career, but it was a joy while it lasted.