Virtual Pong.

The game Pong was the world’s first video game in the early 70’s, it is a tennis lookalike game where a ball is played with two rackets, which are moved up and down by each player. The ball can bounce at the floor and the ceiling. This version is implemented with the virtual game system It was the first game I made for the system.

Some special features of the game is that it is possible to change ball direction and speed, and that it can be played Human vs. Human, Human vs. Computer and Computer vs. Computer. The computer is not very intelligent though, it just checks if the ball is below or above the racket, making it quite easy to beat.Virtual Pong.


Most of the code is written in C and compiled with Hi-tech PIC-C. It is the best c-compiler available for the PIC, but it comes with really shitty DOS IDE. However, it is possible to integrate the compiler with MPLAB and then you’ll have an extremely powerful easy-to-use development environment. It is this combination that I’ve used developing the virtual pong game, and it is what I recommend you to use when developing stuff for PIC. It is amazing to see how tight code it produces.

It is quite easy to write the game pong in C, it is just a lot “if-statements” that check if the ball should bounce, and also keep track of the players. The communication is not very frequent, each frame there is one screen clear, two horizontal lines (ceiling and floor), two vertical lines (the players), and one pixel set (the ball). Each only causing a few bytes to be sent.

The software is built as a state machine with different states for different screens.

The game also has some simple sound effects. These are generated by an interrupt about 8000 times per second. By sending out a triangle wave in different speeds, different frequencies can be generated.

Virtual Pong. schematic

How to play

When turning on the game, a greeting message says “Virtual Pong © Rickard Gunee” until fire button on joystick 1 is pressed. (Joystick 1 is used in all menus) Then the selection screen appears. This shows “H-H”, meaning “Human vs. Human”, this can be selected by moving the joystick downwards. If the joystick is moved to the left, then it shows “H-C”, meaning “Human vs. Computer” and finally you can select Computer vs. Computer, “C-C” by moving the joystick to the right. The game starts when the fire button is pressed.

In the game view a player serves by pressing fire. Moving the joystick up and down moves the racket. When the ball bounces at the racket, moving the joystick while pressing fire can change speed and direction. When a player misses, a screen showing the score comes up for a couple of seconds before the game continues. The line under one of the numbers shows whose got the serve.


For more detail: Virtual Pong.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

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