I've been working on a Pong related project and I thought I would post a screen shot:

Yes, this may look like any one of 1000 different Pong simulation programs that people have written, but this one it a little bit different. The screen shot you see here was generated by doing a chip level simulation of the Pong circuit using a general purpose digital logic simulation engine. Here a little sample of the code used to define one of the score counters:
So, can you actually play Pong on this? You would be able to except for the problem of speed which I always knew would be a major hurdle to logic level simulation. Currently the program takes about 15 seconds to render each frame on an Athlon 64 3000+, and although this performance can probably be increased it's a long way from being truly playable.
My goals on the project are two fold. First to provide a proof of concept that other people may be able to take and optimize to get better performance. Second to provide an accurate way of simulating these old discrete logic arcade games so we can see how they looked and behaved, and possibly use this information to write accurate ports of the games that run at full speed.
I still have a lot of cleanup work to do on the program but then I plan to release the source and executable. After that I'd like to add some more games to it, possibly Breakout next.
Dan
Yes, this may look like any one of 1000 different Pong simulation programs that people have written, but this one it a little bit different. The screen shot you see here was generated by doing a chip level simulation of the Pong circuit using a general purpose digital logic simulation engine. Here a little sample of the code used to define one of the score counters:
Me.AddPart(New Nor2("F3B", Node("L"), Node("MISSED"), Node(132)))
Me.AddPart(New IC7490_4bit("C7", Node(132), Node("SRST"), Node("SRST"), Node("SCORE1_1"), Node("SCORE1_2"), Node("SCORE1_4"), Node("SCORE1_8")))
Me.AddPart(New IC74107("C8A", Node(1), Node(1), Node("SCORE1_8"), Node("/SRST"), Node("SCORE1_10"),Node("/SCORE1_10")))
Me.AddPart(New NAnd3("D8A", Node("SCORE1_1"), Node("SCORE1_4"), Node("SCORE1_10"), Node("/STOPG1")))
So, can you actually play Pong on this? You would be able to except for the problem of speed which I always knew would be a major hurdle to logic level simulation. Currently the program takes about 15 seconds to render each frame on an Athlon 64 3000+, and although this performance can probably be increased it's a long way from being truly playable.
My goals on the project are two fold. First to provide a proof of concept that other people may be able to take and optimize to get better performance. Second to provide an accurate way of simulating these old discrete logic arcade games so we can see how they looked and behaved, and possibly use this information to write accurate ports of the games that run at full speed.
I still have a lot of cleanup work to do on the program but then I plan to release the source and executable. After that I'd like to add some more games to it, possibly Breakout next.
Dan



Create a custom theme







What I do see the simulations as useful for would be validating software emulators. Someone who studies the PONG schematic carefully should be able to produce a pixel-perfect rendition, but a failure to understand how something works could cause the look-alike to behave differently from the real thing. Even if it can only run at a frame per second or so (or even slower), it should be possible to set up a simulation script to compare the screens generated by full logic simulation with those generated by the look-alike program. Such a project could improve the acceptance of MAME simulations of hard-wired games.