John Lowe's Ultimate Darts
Game Design & Development
Written By: Mike Partington
Copyright/Publisher: Gremlin Graphics, Programmed By: Mike Partington,
Release Year: 1989, Genre: Darts, Number Of Players: 1 to 8

Original C64 Version by Mike Partington.

Amiga & Atari ST Conversions by Wise Owl



I developed the game using the Laser Genius Assembler from Ocean. It was really was the best assembler around at the time. To work with - I had just two CBM 64’s, a couple of tape drives, a 1541 disk drive and a dot matrix printer. No high tech gear here ! My only other utility was the PAINTBOX program I used for creating the graphics. All the sprites and other graphics were done on a sprite editor I typed up from a magazine! Pretty basic gear by today’s standard but this was the 1980’s and commercially available packages didn’t really exist for the home user.

As far as programming knowledge is concerned – I had just three programming books to get the information I needed to help me design this game. They were "Programming the Commodore 64" by R West, "Advanced Machine Language Book for the C64" by 1st Publishing, and "What’s really inside the Commodore 64" by Milton Bathhurst. All the rest of my programming knowledge was learned the usual way by typing in programs from magazine listings & hacking into other people’s programs. Those were the good old days ;-)


The dartboard graphics were created by a combination of plotting pixels using mathematical routines and then finishing off with a paint package. I wrote a BASIC program to draw a circle wire frame model for the top half of the dartboard. Once I’d got this wire-frame model I was then able to import it into PAINTBOX ( a graphics program I bought for about £10 ). I then filled in all the different segments of the Dartboard using the FILL routines in PAINTBOX. Once I’d got this done – I made a perfect inverse image for the Bottom half of the Dartboard using another BASIC program. I then imported both images back into PAINTBOX and finished off the Dartboard by using a freehand drawing routine using a joystick. I used the joystick to create all the numbers, 1 – 20, that are on the outer wire. I also used the joystick to create the bristle dartboard cracks and write the UK logo. Job Done ! Mind you, I had several attempts before I got it right – You should have seen some of the early versions ;-)


The program uses just 6 bytes of throwing data for each of the professional players to simulate their throwing capabilities. These are broken down into:

1 byte for percentage of Treble 20 hits.
1 byte for the percentage of Treble 20 misses landing in the Single 20 section.
1 byte for percentage of Doubles hits.
1 byte for percentage of Single hits.
1 byte for percentage of Bullseye hits.
1 byte for percentage of Bullseye misses landing in the 25 section.

This produces a near perfect simulation since most of the action in a game of darts is played on the Treble 20 region and key doubles like double top, double 16, double 8 and so on. The ‘Darts Engine’ takes care of the rest of the throwing abilities for all other regions of the dartboard by using the above data and applying its own logic to it.

The accuracy is in the region of about 97% just by using these 6 bytes of data. The six bytes of data for each player was produced by watching each player in action over several televised competitions throughout 1986/1987/1988. All scoring was written down and analysed and broken down into meaningful data that the computer could use to simulate these players. For example, if a player hits 370 Treble 20’s for every 1000 shots at the Treble 20 then that player would have a T20 throwing ability of 37%. Not surprisingly the best players in the world had better throwing statistics than the lower ranked players.

Dart players develop throwing techniques to maximise their scoring should a particular shot fail to hit its target. For example, if the treble 20 is missed then the player wants it to land in the single 20 rather than the single 5 or single 1 sections. Any dart game that wants to realistically play a good game of darts needs to take this into consideration hence the byte for controlling treble 20 misses.

Each professional darts player also has their own style of throwing. They have their preferred double out-shots and strategies for dealing with opponents. Virtually every dart game I’ve seen only have one lookup table for calculating the shots the computer takes on finishing. So if the computer has 50 left to throw then the obvious shot is going to be the bullseye. Not necessarily ! What if you are way back on 260 and the computer is under no reasonable pressure to finish? A better out-shot might be to go for the single 18 and then try for double 16. Ultimate Darts has six out-shot tables to draw on in various circumstances.


I’m going provide some program hacks so you can force the computer to play two of the professional players against each other while you sit back and watch. For this contest I’m going to play John Lowe v Jocky Wilson in a final over the best of 11 Sets ( First to 6 ). To do this you are going to need a C64 emulator such as CCS64 from Computerbrains. Run your emulator & then load in the side A version of Ultimate Darts containing Competitions and Exhibitions. Once you’ve loaded the game into memory – you then need to get the emulator to do a software reset. The software reset can be found on the CCS64 options menu. A software rest will reset the Commodore 64 to its default blue screen and leave the Darts game in memory without destroying it.

Once you’ve done a software reset on the C64..

Type in the following POKES on the C64 Blue Screen.

POKE 24196,234
POKE 24197,169
POKE 24198,1

POKE 24202,234
POKE 24203,234
POKE 24204,234
POKE 24205,234
POKE 24206,234
POKE 24207,234
POKE 24208,169
POKE 24209,5

POKE 24278,3
POKE 24283,6
SYS 24196

If you get an error message typing any of the above POKE commands then you’ve typed in something wrong. If you typed everything exactly as shown and then typed the final SYS 24196 command, the game will start playing a DEMO game with John Lowe V Jocky Wilson. Line 3 ( POKE 24198,1 ) sets player A as John Lowe. You can use any value between 0 & 15 to change the player. Line 11 ( POKE 24209,5 ) sets player B as Jocky Wilson. Again, you can use any value between 0 & 15 to change the player. Line 12 ( POKE 24278,3) results in 3 legs to win each set. Line 13 ( POKE 24283,6) results in first to 6 sets to win game. All other POKES with the value of 234 insert blank statements into the game code. SYS 24196 jumps to the DEMO CLASSICS routine built within the game.




By default Ultimate Darts loads with the BDO rankings & throwing data for 1987:

John Lowe was World Champion in 1987 and World ranked number 2. Jocky Wilson was ranked number 6 and would become world champion in 1989. Who’s going to win this one? Sit back and watch – the game could take over 1 hour to play as it is reproducing a Darts World Final match.

Who won?

I let this demo play itself 4 times and got the following results 6-1, 5-6, 6-3, 5-6

( wait a couple of minutes on the main options screen and the demo will repeat itself )

Each game is unique and will produce a different score-line but overall one player will come out the winner if you play it long enough. John Lowe won twice and Jocky won it twice. John was a clear winner when he won & Jocky only just won when he did so. The approx’ average score-line over the 4 simulated finals was 6-4 to John Lowe. If I was a gambling man I would put my money on a John Lowe win. I might put an extra bet on the score line being 6-4.



Anybody playing in the Competitions may have noticed the option for loading the ‘latest names’ on the Competition select screen. The game loads with the rankings and throwing data for 1987. Using the load ‘latest names’ feature you could load in the player rankings and throwing data for 1988. The new line-up replaced all players taking part in the Darts World Championship and also replaced all 16 players listed in the Exhibitions. The 1988 ‘LATEST NAMES’ file was distributed on all C64 versions. It was my intention to provide a way of updating the throwing data to reflect the changes in each player’s ability and their position in the World Rankings. Unfortunately, I didn’t include a program for creating your own latest names file so that you could update this data for yourself. So, anyone playing this game has been stuck in the 1980’s playing the likes of John Lowe, Eric Bristow and Bob Anderson. Not bad if you’re nostalgic - not good if you want to play against simulations of Today’s top stars like Phil Taylor and Raymond Barneveld. If I get enough demand – I’ll produce a new LATEST NAMES file. I’m thinking of creating a line up of all the Darts World Champions from when Leighton Rees first won it in 1978 to this years PDC 2007 final which Barney won. I’m also thinking of creating a latest names file containing the PDC 2007 rankings. That’s 20 years since the original 1987 rankings !



There’s quite a few ‘cracked’ versions of John Lowe’s Ultimate Darts circulating the internet. Some of these only contain one half of the game ( either side A or side B ). You can download both Sides of the game from the STADIUM 64 website. You can also download ‘GAME ON’ which was an earlier version of the same game.


Well, that’s John Lowe’s Ultimate Darts !

Hope you enjoyed the game info.

It’s quite a bit different from the other dart games that came out. This program was more of a dart players game rather than just another fun arcade darts game type selling at £2.99. Any game of that mould would have had hell of a job after Mastertronic’s ‘180’. Over 10 C64 dart games would eventually be made for the C64 in just a few short years.


Special thanks to


Frank Gasking at GTW64.

Mat Allen