Disclaimer: This information is provided as is. There may be errors in this information. You may use this information only if you agree that Minimalist / Coinop.org, its employees, and noted authors will never be held responsible for any damage, injury, death, mayhem, etc. caused by errors in the information. When working with high voltage, never work alone and always follow safety precautions.

Document Title: [Boris - Emulating Pong.html (html file)]

Emulating Pong Original URL: http://cgexpo.com/danb/files/pong.txt

"Emulating Pong"
by Daniel Boris (dboris@home.com)
October 17, 1999

One of the question I find my self answering a lot on message boards is "why hasn't Pong been emulated yet." For those who do not know, the reason for this is that Pong doesn't have a microprocessor or code ROMs like most games do. Pong is completely built from discrete electronic components which work together to create the behavior of the game. There were a good number of games from the 70's besides Pong that worked in this fashion. Since there is no processor we cannot "emulate" Pong in the traditional way, but there are ways of reproducing the behavior of Pong:

1. At one extreme a program could sit down in front of a real Pong machine and write a program that simulates it's behavior by just observing the game play. Pong is a simple enough game that you could probably write a program that simulated Pong accurately enough that it would be indistinguishable from the real thing. There are two problems with this technique. First, you must have access to the real machine to do this which might not be easy for these older games. Second, there is a high chance of missing little things in the game and coming up with an inaccurate conversion.

2. At the other extreme would be circuit simulation. In this approach the programmer would write a generic electronic circuit simulation program. He would then input into the simulator the spec of each component in the circuit as well as how they are interconnected and the program would simulate the operation of the circuit in real time and display the results on the computer's screen. The first problem with this is that writing accurate circuit simulation software is a very complex task, and secondly simulating a circuit in real time would require a lot of processing power even for a game as simple as Pong. The positive side to this method is that you don't need access to a real working machine, and there is a lot smaller chance of making simulation errors since you aren't relying on observation to get the game's behavior correct.

3. Another option would be to something a little less extreme then option 2. The circuit could be taken and broken down into a series of functional blocks. A routine would be written that would simulate the functioning of each of block, then these code blocks would be combined together to simulate the operation of the whole system. This has the advantages of speed like 1, and the advantage of not needing the original hardware like 2. The downside is that there is a large chance of making accuracy errors then with method 2. Another difference between option 2 and this one, is that once the simulator is written for option 2, adding more games becomes fairly easy. With this method each driver would require considerable effort.

So that is a summary of a few options for "emulating" Pong, and there are probably others.

The final part to answering the question of "why hasn't Pong been emulated yet", is a question of semantics. How exactly do we define emulation? An emulator reproduces the behavior of a specific piece of hardware. For example for a game like Pac-man we write code that simulates the processor, the video hardware, sound hardware, etc. This code then runs the original programs that ran on the Pac-man machine. No matter how much hardware we have to simulate in code we still call it emulation. So if we then eliminate the processor can we still call it emulation, or does it become simulation? I'll leave that to others to answer :)