Up: Map Next: 25129
24576: The game has just loaded
24576 DI Disable interrupts.
24577 LD A,(23672) Initialise the pseudo-random number address.
24580 LD L,A
24581 AND 31
24583 LD H,A
24584 LD A,(HL)
24585 LD L,A
24586 AND 31
24588 LD H,A
24589 LD (31847),HL
24592 LD HL,31850 Initialise the 'T' pressed indicator to 'off' (bit 4 set).
24595 LD (HL),16
24597 LD HL,31849 Initialise the sound indicator to 'on'.
24600 LD (HL),31
This entry point is used by the routine at 26426 when a game has ended.
24602 LD HL,22528 INK 7: PAPER 7
24605 LD DE,22529
24608 LD BC,767
24611 LD (HL),63
24613 LDIR
24615 LD HL,16384 Clear the display file.
24618 LD DE,16385
24621 LD BC,6143
24624 LD (HL),0
24626 LDIR
24628 LD HL,22528 INK 0: PAPER 7
24631 LD DE,22529
24634 LD BC,767
24637 LD (HL),56
24639 LDIR
24641 LD A,0 Signal demo mode.
24643 LD (27403),A
24646 LD HL,140 Initialise the title screen countdown timer.
24649 LD (27400),HL
24652 LD DE,16544 Print 'HUNGRY' in big letters.
24655 LD HL,28303
24658 LD BC,160
24661 CALL 27982
24664 LD DE,18560 Print 'HORACE' in big letters.
24667 LD HL,28463
24670 LD BC,160
24673 CALL 27982
24676 LD A,(27403) Pick up the game mode indicator.
24679 PUSH AF Save it briefly.
24680 LD A,1 Signal game mode (to force the copyright message to be printed).
24682 LD (27403),A
24685 LD HL,20672 This is the display file address for the copyright message.
24688 CALL 27663 Set HL' to the corresponding attribute file address (unnecessarily).
24691 EX DE,HL Transfer the display file address to DE.
24692 LD HL,27303 Print 'Copyright © 1982 Beam Software' and 'PRESS ANY KEY TO START PLAY'.
24695 LD A,(HL)
24696 CP 255
24698 JR Z,24706
24700 INC HL
24701 CALL 27471
24704 JR 24695
24706 POP AF Restore the game mode indicator.
24707 LD (27403),A
The following loop cycles the colour of the words 'HUNGRY HORACE' and plays a sound effect, either 140 times or until a key is pressed.
24710 LD HL,22688 Change the colour of the words 'HUNGRY HORACE' on the title screen.
24713 LD DE,22689
24716 LD BC,159
24719 LD A,(HL)
24720 INC A
24721 AND 63
24723 OR 56
24725 LD (HL),A
24726 LDIR
24728 LD HL,22912
24731 LD DE,22913
24734 LD BC,159
24737 LD A,(HL)
24738 INC A
24739 AND 63
24741 OR 56
24743 LD (HL),A
24744 LDIR
24746 CALL 27255 Make the title screen sound effect.
24749 LD HL,(27400) Decrement the title screen countdown timer.
24752 DEC HL
24753 LD (27400),HL
24756 LD A,H Is it zero now?
24757 OR L
24758 JR Z,24777 Jump if so.
24760 LD A,0 Read the keyboard.
24762 IN A,(254)
24764 AND 31 Is a key being pressed?
24766 CP 31
24768 JR Z,24710 Jump if not.
24770 LD A,1 Signal that a game (not demo mode) has started.
24772 LD (27403),A
24775 JR 24777 This instruction is redundant.
24777 LD A,255 Initialise the maze number.
24779 LD (31843),A
24782 LD A,8 Initialise the game speed parameter.
24784 LD (31842),A
24787 LD A,3 Initialise the number of lives remaining.
24789 LD (31864),A
24792 LD HL,0 Initialise the score.
24795 LD (31859),HL
24798 LD A,0 Initialise the active guard counter.
24800 LD (27402),A
24803 LD (31863),A Initialise the extra life indicator.
24806 CALL 27170 Initialise the guard countdown timers.
This entry point is used when moving from one maze to the next by the routines at 26426 (in demo mode) and 27166 (in game mode).
24809 LD A,(31843) Pick up the current maze number (0-3).
24812 INC A Is it 0, 1 or 2?
24813 AND 252
24815 JR Z,24828 Jump if so.
24817 LD A,(31842) Decrement the game speed parameter (unless it's already 1). This increases the speed of the game.
24820 DEC A
24821 JR NZ,24825
24823 LD A,1
24825 LD (31842),A
24828 LD A,(31843) Increment the maze number.
24831 INC A
24832 AND 3
24834 LD (31843),A
24837 LD A,(31843) Pick up the current maze number.
24840 CP 0 Is it maze 1?
24842 JR NZ,24855 Jump if not.
24844 LD HL,28631 Copy the tunnel offset and bell, initial guard and entrance locations for maze 1 to 28623.
24847 CALL 27294
24850 LD HL,29431 Point HL at the layout data for maze 1.
24853 JR 24896
24855 CP 1 Is it maze 2?
24857 JR NZ,24870 Jump if not.
24859 LD HL,28639 Copy the tunnel offset and bell, initial guard and entrance locations for maze 2 to 28623.
24862 CALL 27294
24865 LD HL,28663 Point HL at the layout data for maze 2.
24868 JR 24896
24870 CP 2 Is it maze 3?
24872 JR NZ,24885 Jump if not.
24874 LD HL,28647 Copy the tunnel offset and bell, initial guard and entrance locations for maze 3 to 28623.
24877 CALL 27294
24880 LD HL,30199 Point HL at the layout data for maze 3.
24883 JR 24896
24885 LD HL,28655 Copy the tunnel offset and bell, initial guard and entrance locations for maze 4 to 28623.
24888 CALL 27294
24891 LD HL,30967 Point HL at the layout data for maze 4.
24894 JR 24896
24896 LD DE,16384 Draw the current maze.
24899 LD BC,768
24902 CALL 27509
24905 LD A,(27403) Pick up the game mode indicator.
24908 AND A Is it demo mode?
24909 JR Z,24932 Jump if so.
24911 LD HL,16384 This is the display file address for 'PASSES   SCORE       BEST'.
24914 CALL 27663 Set HL' to the corresponding attribute file address (unnecessarily).
24917 EX DE,HL Transfer the display file address to DE.
24918 LD HL,31815 Print 'PASSES   SCORE       BEST'.
24921 LD A,(HL)
24922 CP 255
24924 JR Z,24975
24926 INC HL
24927 CALL 27471
24930 JR 24921
24932 LD A,1 Signal game mode (to force the 'DEMO MODE' text to be printed).
24934 LD (27403),A
24937 LD HL,16384 This is the display file address for 'DEMO MODE  PRESS ANY KEY TO PLAY'.
24940 CALL 27663 Set HL' to the corresponding attribute file address (unnecessarily).
24943 EX DE,HL Transfer the display file address to DE.
24944 LD HL,27367 Print 'DEMO MODE  PRESS ANY KEY TO PLAY'.
24947 LD A,(HL)
24948 CP 255
24950 JR Z,24958
24952 INC HL
24953 CALL 27471
24956 JR 24947
24958 LD A,0 Restore the game mode indicator to demo mode.
24960 LD (27403),A
24963 LD HL,22528 Make 'DEMO MODE' flash.
24966 LD B,9
24968 LD A,(HL)
24969 ADD A,128
24971 LD (HL),A
24972 INC HL
24973 DJNZ 24968
24975 LD HL,(28625) Copy the bell location to 31940.
24978 LD (31940),HL
24981 LD HL,16391 This is the display file address for the number of lives remaining.
24984 CALL 27663 Set HL' to the corresponding attribute file address (unnecessarily).
24987 LD A,(31864) Pick up the number of lives remaining.
24990 ADD A,"0" Convert it to the ASCII code for the corresponding digit.
24992 EX DE,HL Transfer the display file address to DE.
24993 CALL 27471 Print the number of lives remaining.
24996 LD HL,2000 Initialise the lunch-drop countdown timer.
24999 LD (31845),HL
This entry point is used by the routine at 26426 after Horace has lost a life.
25002 LD HL,(31940) Pick up the bell location.
25005 LD A,H Has Horace sounded the alarm?
25006 OR L
25007 JR Z,25015 Jump if so.
25009 LD HL,(28625) Reinitialise the bell location.
25012 LD (31940),HL
25015 LD B,4 There are four guards.
25017 PUSH BC Copy the guard's buffer into the temporary location (28088).
25018 CALL 27199
25021 POP BC
25022 PUSH BC Save the guard counter.
25023 SLA B Point HL at one of the guard countdown timers at 28070.
25025 LD C,B
25026 LD B,0
25028 XOR A
25029 LD HL,28078
25032 SBC HL,BC
25034 LD A,(HL) Is this guard in play?
25035 INC HL
25036 OR (HL)
25037 JR NZ,25044 Jump if not.
25039 LD HL,(28627) Pick up the initial guard location for the current maze.
25042 JR 25047
25044 LD HL,(28629) Pick up the bell location for the current maze.
25047 LD (28088),HL Initialise the guard's current and new locations.
25050 LD (28092),HL
25053 LD HL,28095 Clear the four maze background tiles in the temporary guard buffer.
25056 LD C,4
25058 LD (HL),62
25060 INC HL
25061 LD B,8
25063 LD (HL),0
25065 INC HL
25066 DJNZ 25063
25068 DEC C
25069 JR NZ,25058
25071 CALL 27242 Copy the guard's buffer back to the original location.
25074 POP BC Restore the guard counter to B.
25075 DJNZ 25017 Jump back to prepare the next guard.
25077 LD HL,(28629) Pick up Horace's initial location for the current maze.
25080 LD (31851),HL Initialise Horace's current and new locations.
25083 LD (31853),HL
25086 LD A,1 Initialise Horace's animation frame.
25088 LD (31856),A
25091 LD A,(31842) Initialise the sprite movement timer (using the value of the game speed parameter).
25094 LD (31841),A
25097 LD HL,(31859) Print the score and make a sound effect.
25100 CALL 26055
25103 LD HL,(31861) Pick up the high score.
25106 LD DE,16384 Set DE to the display file address for the high score (in a roundabout way).
25109 EX DE,HL
25110 LD BC,26
25113 ADD HL,BC
25114 EX DE,HL
25115 CALL 27425 Print the high score.
25118 LD HL,0 Initialise the guard panic timer.
25121 LD (28078),HL
25124 LD A,57 Initialise Horace's attribute byte (INK 1: PAPER 7).
25126 LD (31857),A
This routine continues into the main loop at 25129.
Up: Map Next: 25129