What’s to be gained from reverse engineering a four-decade-old video game? As it turns out, quite a lot, and as you’ll learn from [Norbert]’s recent talk at the ViennaJS meetup, it’s not just about bringing a classic back to life.
The game in question is Kee Game’s Sprint 2, a monochrome 2D car race that allowed two players to compete head to head. The glorious Harvest Gold and Burnt Orange color scheme just screams 1970s, and it might be hard to see why this game was once a popular quarter-eater. But it was quite engaging for the day, and [Norbert] was interested in reverse engineering it. That he did, using JavaScript to build a faithful browser-based emulation of the game. And he took it further, creating a 3D first-person version of the game.
But where the real work begins is in tearing apart the AI of the computer-controlled cars that hogged the track, and understanding how the vector map behind each race track is used to move the robot cars along smooth paths. [Norbert] covers the concept of vector and gradient fields and the Gauss-Seidel algorithm, then relates all of it to path planning for autonomous vehicles. Pretty impressive stuff for a guy who admits he is neither a professional programmer nor a mathematician.
We’ve covered tons of arcade game ports and recreations before, but this project goes well beyond those, at least in terms of lessons learned.
It was a fun game! Especially at the brasserie with a bunch drinking beer.
Drinking beer? You mean like the opposite of American beer?
Sophisticated Ameritrons drink craft ale nowadays. It’s all very good stuff. A cross between continental Europe and the new world.
https://www.youtube.com/watch?v=3iXGbJKjNxU
That’s largely true, although they can’t quite shake the American obsession with “more = better” – a lot of the beers are taken to extremes, it can’t just be pleasantly hoppy, it has to be THE MOST MOTHERFUCKING HOPPY BEER IN THE WORLD EVAR etc. etc.
I’m not knocking them, it’s all light-years better than Bud/Miller Light and all those assorted brands of Pißwasser that prevail. Once the scene settles down and the worst of the hipsters move on to something else it should be brilliant.
Lol. While certainly true of some varieties, this is far from true for all.
what really was attractive about games like this one? Proportional analog steering. Not just a 4 or 8 way joystick switch-your steering response was as fast or as slow as you cranked the wheel.
I know! I was really hoping he’d go into the design of the controls of the original game, but the important part is the proto-AI of those extra cars.
The controls are pretty simple, hardware wise. The foot pedal is just a on off switch, so is the gear shift. The steering wheels have opto wheels.
We had one of these at my parents’ laundromat in the 80’s and 90’s. I learned a lot about fixing things on it after the little kids would shake it, hang from the controls, etc., trying to get money and free games out of it. A lot easier to fix than the Tempest and PacMan consoles we also had. Fun to play, too.
Reverse engineering old video games is a great learning experience and also a lot of fun. I’ve “done” some of my old ZX Spectrum and arcade favourites like Atic Atac and Scramble for the Nintendo DS.
I just had a look at the schematic for this and what is described as a Micro Processing Unit (MPU) in the text is described as a “90-6009 IC” in the parts list. I wish I could find some details but I can’t.
Most of the hard work is done by other circuitry – for instance the play-field is generated by simple logic and the MPU only specifies the number of the play-field. Collisions are also detected in simple logic and reported to the MPU.
It looks like the next generation after games like Pong which had no processor at all (in terms of generic CPU’s).
I also remember one old arcade game (I had 30 games at one stage and many more boards) and this one game had no CPU whatsoever. The designers leveraged pre-processing on a design machine and copied the results into many many ROM’s (ROM’s were much cheaper than RAMs) making the end result a very complex state machine with no CPU. The came itself was quite complex and I couldn’t believe there was no CPU.
As for Javscript in a browser. Well I have ben doing this even with the pre version 5 html using tables cells as pixels.
While CPU performance as quietly increased over the years people haven’t noticed that a Javascript / web browser combination can now be used as a capable little programming / rendering engine.
Table cells as pixels? Did you setup something like a 320×240 cell table and then render sprites to that? Just curious. This approach to browser-based games never occurred to me.
According to the MAME source code that 90-6009 is a garden variety 6502 CPU.
“people haven’t noticed that a Javascript / web browser combination can now be used as a capable little programming / rendering engine”
There are thousands of javascript/canvas based real-time games out there, dozens of 2d/3d javascript gaming frameworks, ports of SDL, asm js ports of many games originally written in C or C++, and countless game and computer emulators which run old games no problem. The internet archive has hundreds of old games ready to play with a single click.
Although performance has asymptoted as of late, for a few years, benchmarking javascript perf between chrome/firefox/safari was closely followed by the press.
I’m not sure who the “nobody” you are referring to is.
In sprint 8 (8 players) each car has it’s own board and it’s all discrete components, no CPU. F’n crazy.
Why not just examine the ROM code of the game?
He did? That’s how he inserted AI cars gradient maps for the new tracks. (They’re in what MAME calls 6290-01.b1 and 6291-01.c1, packed nybbles with a small header)
He visits our local retro meeting (www.retopulsiv.de) and always brings something new with him. Great guy and if you are looking for a btx server software, you might want to visit his homepage (http://members.aon.at/~nkehrer/)
The webside should be http://www.retropulsiv.de I missed the r there.