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.
Input
Output
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.
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