THE ADVENTURES OF PAT THE POSTMAN by Gary Ritchie from Games Computing, July 1984 - Page 78 If you thought that Manic Miner was good then you will think that "The Adventures of Pat the Postman" is absolutely fantastic. The Adventures of Pat the Postman is a twenty screen arcade game for the 48K ZX Spectrum featuring full colour hi-res, sound and a demo mode. You play the part of Pat who has to collect three Game Computing post bags from the screen before progressing onto the next. Each screen consists of levels interlinked by ladders and lifts. When Pat has got the three bags he must leave the top of the screen by a ladder, not on a lift as this would be too easy. The only points scored are for completing a screen, and this is dependent upon the time taken. The aim, therefore, is to complete each screen as quickly as possible. The control keys are: I left P right Q up Z down The lifts are the cross-shaped sections on the floor. The ladders look like ladders, the post bags look like post bags, and if it moves avoid it (there are exceptions to this rule in the higher levels). RUNdown Line Action 3 S$(X) is the store of the current screen. As SCREEN$ does not work with user-defined graphics, this is referred to instead. 4 Set up UDGs which are used throughout the program. 5 P(6) holds the co-ordinates of the mail bags on each screen for the purpose of colouring them. M(8) holds the DATA about the moving monsters on each screen. 7 23561 controls the auto-repeat on the keys. This POKE means the keys will not auto-repeat until they have been pressed for about 20 seconds. POKE 23658,8 sets CAPS mode. 8-9 S(20) contains a 1 for each screen which has a special feature. This is in fact for every screen but the first. 10 FN P() checks for the last key pressed. FN M() was used during programming to check the spare memory but is not used during the program. 11-30 Initialise variables for pre-game screen displays and GOTO pre-game routine. 100-110 Initialise variables for beginning of game. 120-167 Initialise variables for beginning of screen. 410 Call screen set-up routine. 500-540 Print initial positions for monsters, Pat, post bags, etc. 610-690 Main loop. 610-640 Check keys and move accordingly. 650 Move monster for each screen. M(X) holds the number of the movement routine for that monster. There are seven movement routines and room for two more. 655 Call routine for special feature of each screen; there are 19 such routines. 660 Checks for collision with moving monster. 670 Checks to see if Pat is moving on air! 675 Checks for collision with non-moving monster. 680 Checks to see if mail bag has been collected. 690 Checks whether screen is finished. 990 Loop. 1500-1550 CRASH! 1540 If no lives left then end game. 2000-2050 Collect sack. 3000-3300 End screen routine. 3020-3270 Calculate bonus, display and calculate new score. The random BEEPs can be left out as they slow down the game. 3280 Next screen; if completed 20th screen then call congrats routine. 3295 Cancel last key pressed. 3300 Start new screen. 3500-3610 End game / Pre-game. 3505-3510 Colour the whole screen the same as the border. 3530 Pause. 3560-3610 Display screens in sequence. Done by simulating the game but without the postman, sacks, etc. 3577 If a key is pressed then start the game. 4000-4953 Routines for special features. 5000-5040 Postman left. 5400-5450 Up ladder. 5500-5550 Up lift routine. 5600-5650 Down ladder. 5700-5750 Down lift. 6000-6760 Move monster. 6100-6130 Left-right movement. 6200-6230 Up-down movement. 6300-6330 Random descent between limits. 6400-6430 Bouncing between limits. 6500-6570 Gradual homing in on Pat. 6600-6650 Bouncing around whole screen with decoy. 6700-6760 Following up and down ladders and lifts. 7000-7340 Draw screen routine. 7010 Chooses appropriate DATA. 7020 Sets up floor F and monster G graphics. 7025 On certain screens sets up graphics U. 7030-7040 Read border and screen attributes. 7200 Sets up S$ (screen store). 7210 Prints screen. 7220 Sets up post bag positions. 7230 Reads monster DATA. 7235 Colours screen 20. 7240 Reads initial position of Pat. 7280-7340 Obvious. 7350-7998 Congratulations! 8000-9999 DATA for screens and UDGs. The numbering of these lines is of utmost importance and must be stuck to. The DATA for a particular screen can be located by the formula: Line = 7900 + 100 * Screen