Routines
 Prev: 34574 Up: Map Next: 35388
35140: Display the game over sequence
 Used by the routine at 34574. First check whether we have a new high score. 35140 LD HL,33823 Point HL at the high score at 33823 35143 LD DE,33833 Point DE at the current score at 33833 35146 LD B,6 There are 6 digits to compare 35148 LD A,(DE) Pick up a digit of the current score 35149 CP (HL) Compare it with the corresponding digit of the high score 35150 JP C,35171 Jump if it's less than the corresponding digit of the high score 35153 JP NZ,35160 Jump if it's greater than the corresponding digit of the high score 35156 INC HL Point HL at the next digit of the high score 35157 INC DE Point DE at the next digit of the current score 35158 DJNZ 35148 Jump back to compare the next pair of digits 35160 LD HL,33833 Replace the high score with the current score 35163 LD DE,33823 35166 LD BC,6 35169 LDIR Now prepare the screen for the game over sequence. 35171 LD HL,16384 Clear the top two-thirds of the display file 35174 LD DE,16385 35177 LD BC,4095 35180 LD (HL),0 35182 LDIR 35184 XOR A Initialise the game status buffer variable at 32988; this variable will determine the distance of the boot from the top of the screen 35185 LD (32988),A 35188 LD DE,33344 Draw Willy at (12,15) 35191 LD HL,18575 35194 LD C,0 35196 CALL 36852 35199 LD DE,46816 Draw the plinth (see 46816) underneath Willy at (14,15) 35202 LD HL,18639 35205 LD C,0 35207 CALL 36852 The following loop draws the boot's descent onto the plinth that supports Willy while producing a sound effect. Your browser doesn't support HTML5 audio. Here is a link to the audio instead. 35210 LD A,(32988) Pick up the distance variable from 32988 35213 LD C,A Point BC at the corresponding entry in the screen buffer address lookup table at 33536 35214 LD B,131 35216 LD A,(BC) Point HL at the corresponding location in the display file 35217 OR 15 35219 LD L,A 35220 INC BC 35221 LD A,(BC) 35222 SUB 32 35224 LD H,A 35225 LD DE,47840 Draw the boot (see 47840) at this location, without erasing the boot at the previous location; this leaves the portion of the boot sprite that's above the ankle in place, and makes the boot appear as if it's at the end of a long, extending trouser leg 35228 LD C,0 35230 CALL 36852 35233 LD A,(32988) Pick up the distance variable from 32988 35236 CPL A=255-A 35237 LD E,A Store this value (63-255) in E; it determines the (rising) pitch of the sound effect that will be made 35238 XOR A A=0 (black border) 35239 LD BC,64 C=64; this value determines the duration of the sound effect 35242 OUT (254),A Produce a short note whose pitch is determined by E 35244 XOR 24 35246 LD B,E 35247 DJNZ 35247 35249 DEC C 35250 JR NZ,35242 35252 LD HL,22528 Prepare BC, DE and HL for setting the attribute bytes in the top two-thirds of the screen 35255 LD DE,22529 35258 LD BC,511 35261 LD A,(32988) Pick up the distance variable from 32988 35264 AND 12 Keep only bits 2 and 3 35266 RLCA Shift bits 2 and 3 into bits 3 and 4; these bits determine the PAPER colour: 0, 1, 2 or 3 35267 OR 71 Set bits 0-2 (INK 7) and 6 (BRIGHT 1) 35269 LD (HL),A Copy this attribute value into the top two-thirds of the screen 35270 LDIR 35272 LD A,(32988) Add 4 to the distance variable at 32988; this will move the boot sprite down two pixel rows 35275 ADD A,4 35277 LD (32988),A 35280 CP 196 Has the boot met the plinth yet? 35282 JR NZ,35210 Jump back if not Now print the "Game Over" message, just to drive the point home. 35284 LD IX,33871 Print "Game" (see 33871) at (6,10) 35288 LD C,4 35290 LD DE,16586 35293 CALL 37562 35296 LD IX,33875 Print "Over" (see 33875) at (6,18) 35300 LD C,4 35302 LD DE,16594 35305 CALL 37562 35308 LD BC,0 Prepare the delay counters for the following loop; the counter in C will also determine the INK colours to use for the "Game Over" message 35311 LD D,6 The following loop makes the "Game Over" message glisten for about 1.57s. 35313 DJNZ 35313 Delay for about a millisecond 35315 LD A,C Change the INK colour of the "G" in "Game" at (6,10) 35316 AND 7 35318 OR 64 35320 LD (22730),A 35323 INC A Change the INK colour of the "a" in "Game" at (6,11) 35324 AND 7 35326 OR 64 35328 LD (22731),A 35331 INC A Change the INK colour of the "m" in "Game" at (6,12) 35332 AND 7 35334 OR 64 35336 LD (22732),A 35339 INC A Change the INK colour of the "e" in "Game" at (6,13) 35340 AND 7 35342 OR 64 35344 LD (22733),A 35347 INC A Change the INK colour of the "O" in "Over" at (6,18) 35348 AND 7 35350 OR 64 35352 LD (22738),A 35355 INC A Change the INK colour of the "v" in "Over" at (6,19) 35356 AND 7 35358 OR 64 35360 LD (22739),A 35363 INC A Change the INK colour of the "e" in "Over" at (6,20) 35364 AND 7 35366 OR 64 35368 LD (22740),A 35371 INC A Change the INK colour of the "r" in "Over" at (6,21) 35372 AND 7 35374 OR 64 35376 LD (22741),A 35379 DEC C Decrement the counter in C 35380 JR NZ,35313 Jump back unless it's zero 35382 DEC D Decrement the counter in D (initially 6) 35383 JR NZ,35313 Jump back unless it's zero 35385 JP 34252 Display the title screen and play the theme tune
 Prev: 34574 Up: Map Next: 35388