![]() |
Routines |
Prev: 34574 | Up: Map |
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.
|
|||||||
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 |