Forty-Year-Old Arcade Game Reveals Secrets of Robot Path Planning

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.

20 thoughts on “Forty-Year-Old Arcade Game Reveals Secrets of Robot Path Planning

        1. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

    1. 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.

    2. “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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.