Copyright/Publisher: COMPUTE!'s Gazette/COMPUTE! Publications, Inc., Programmed By:
Kevin Mykytyn, Release Year: 1985, Genre: Snooker & Pool, Number Of Players: 1


Chalk up your cue stick and sharpen your skills with this exciting simulation of pocket billiards. For one or two players. Originally written for the unexpanded VIC, we've added a version for the 64.


The rules of "Pool" are simple you try to sink the billiard balls on the table by aiming and shooting the white cue ball.

The VIC version accepts either keyboard or joystick input (for details on how to play 64 Pool, see the programmer's notes accompanying this article). Use the joystick (or f3 key) to rotate the cue stick around the cue ball. Shoot it by pressing and holding the fire button (or f1). The longer you hold it down, the softer the shot. For a hard shot, release the button or key immediately.

Your turn continues as long as you keep pocketing balls. If you miss or scratch, your opponent takes over (if you're playing solo, try playing left against right hand). After a scratch, the cue ball may be positioned anywhere behind the scratch line using the joystick (or f3 and f5). Once you've selected a spot, tap the fire button (or f1) and continue playing.

The 15 balls are randomly placed after the last ball is sunk. You can then continue the game (up to a mutually agreeable limit) or respond to the prompt for a new game.

VIC Program Description

The main play routine of the program makes the billiard balls move, carom, and collide. In this routine, motion is simulated by POKEing a ball character to the next screen position in the direction of travel, and then POKEing a blank space to the previous position, erasing it. The resolution of the VIC's screen permits only eight directions of movement.

The program PEEKs ahead for upcoming collisions. When the edge of the table is reached, the direction of travel is reversed. When pockets (CHR$(102)) are detected, the scoring subroutine is called.

The ball slows down as it travels by using progressively longer time delays between screen POKEs. Sound effects punctuate ball impact, scoring, and turnovers. The REMark statements should help you follow the flow of the program.

VIC Program Variables

A = character under cue stick
B = current ball character
B0= cue ball, CHR$(87)
B1 = object ball, CHR$(81)
C = player code, +1 for player A, -1 for player B
D = ball velocity time delay
H = 1 for hit pocket, 0 for no score ball direction increment
J = joystick input
K = keyboard input
P = ball placement during table setup
Q = current ball location
Q0 = cue ball scratch location
QC = cue ball play location
SA = player A score
SB = player B score
T = sound effect time delay
V = cue stick or cue ball vector
Z = cue stick character

Entering VIC Pool

Almost all of the unexpanded VIC's memory is used for the program and variables. Do not add any unnecessary spaces. REM statements mark the beginning of subroutines; don't delete them unless you change the GOSUBs accordingly.

Programmer's Notes: 64 Pool

Kevin Mykytyn, Editorial Programmer
Rather than translating the VIC version directly to the 64, an entirely new high-resolution Pool was written. It requires a joystick (two joysticks in the two-player version).

The 64 version is written entirely in machine language, so MLX is required to type it in. If you do not have a copy of MLX (published periodically in the GAZETTE), type it in and save it to tape or disk. Then run it, and enter the following information:
Starting Address: 49152
Ending Address: 52905

When you've finished, save the program. Load it back into the computer using a secondary address of 1: LOAD "POOL",8,1 (disk) or LOAD "POOL",1,1 (tape). SYS 49152 starts the program.

The title screen comes up first, with a ragtime melody playing in the background. You choose a one- or two-player game. The screen clears and the pool table appears.

At the start of the game, the white cue ball is at one end of the table and six balls are arranged at the other end. There are six (rather than 15) because only eight sprites are available on the 64. Using the joystick, position the cue ball in the "kitchen," behind the scratch line. When you're ready to shoot, press the joystick button once. A crosshair appears on top of the cue ball.

Move the crosshair in the direction you want to shoot. Unlike the VIC version, which has eight directions of movement, 64 Pool allows you to shoot in any direction. Pressing the joystick button starts the cue ball rolling,

The distance between the cue ball and crosshair determines the strength of the shot. The farther away, the harder the shot. There is a limit on how far you can move the crosshair (approximately two-thirds the length of the table). On the initial break, you'll probably want to shoot hard. On later turns, the strength of the shot will determine how far the cue ball travels after a collision. Strategic soft shots can help you set up the table for the next shot.

The goal in the one player game is to clear the table in the fewest number of shots (the record here at COMPUTE! Publications is eight). When all balls are in the pockets, you're ranked according to your ability, from Pro (the best) to Pool Shark, Amateur, and Novice.

In the two-player game, you try to outshoot your opponent. When you sink a ball, it's placed on your side of the screen. With six balls in play, tie games are possible.

A scratch occurs when you knock the cue ball into a pocket, or when the cue ball doesn't hit anything before coming to a stop. You lose your turn, one of the balls to your credit is put back on the table, and the cue ball is placed in the starting position. Your opponent can then put the cue ball anywhere behind the scratch line.

64 Pool does not completely follow the laws of physics, although it offers a realistic simulation. The sprites are moved pixel by pixel, but the movement is calculated in 256ths of a pixel for increased accuracy.