Routines
 Prev: 8C01 Up: Map Next: 8D33
8C4A: Display the game over sequence
 Used by the routine at 8C01. 8C4A LD HL,\$4000 Clear the top two-thirds of the display file 8C4D LD DE,\$4001 8C50 LD BC,\$0FFF 8C53 LD (HL),\$00 8C55 LDIR 8C57 XOR A Initialise the temporary game status buffer variable at 85E4; this variable will determine the distance of the foot from the top of the screen 8C58 LD (\$85E4),A 8C5B LD DE,\$9D40 Draw Willy at (12,15) 8C5E LD HL,\$488F 8C61 LD C,\$00 8C63 CALL \$9456 8C66 LD DE,\$9C60 Draw the barrel underneath Willy at (14,15) 8C69 LD HL,\$48CF 8C6C LD C,\$00 8C6E CALL \$9456 The following loop draws the foot's descent onto the barrel that supports Willy while producing a sound effect. Your browser doesn't support HTML5 audio. Here is a link to the audio instead. 8C71 LD A,(\$85E4) Pick up the distance variable from 85E4 8C74 LD C,A Point BC at the corresponding entry in the screen buffer address lookup table at 8200 8C75 LD B,\$82 8C77 LD A,(BC) Point HL at the corresponding location in the display file 8C78 OR \$0F 8C7A LD L,A 8C7B INC BC 8C7C LD A,(BC) 8C7D SUB \$20 8C7F LD H,A 8C80 LD DE,\$9C40 Draw the foot at this location, without erasing the foot at the previous location; this leaves the portion of the foot sprite that's above the ankle in place, and makes the foot appear as if it's at the end of a long, extending leg 8C83 LD C,\$00 8C85 CALL \$9456 8C88 LD A,(\$85E4) Pick up the distance variable from 85E4 8C8B CPL A=0xFF-A 8C8C LD E,A Store this value (0x3F-0xFF) in E; it determines the (rising) pitch of the sound effect that will be made 8C8D XOR A A=0 (black border) 8C8E LD BC,\$0040 C=0x40; this value determines the duration of the sound effect 8C91 OUT (\$FE),A Produce a short note whose pitch is determined by E 8C93 XOR \$18 8C95 LD B,E 8C96 DJNZ \$8C96 8C98 DEC C 8C99 JR NZ,\$8C91 8C9B LD HL,\$5800 Prepare BC, DE and HL for setting the attribute bytes in the top two-thirds of the screen 8C9E LD DE,\$5801 8CA1 LD BC,\$01FF 8CA4 LD A,(\$85E4) Pick up the distance variable from 85E4 8CA7 AND \$0C Keep only bits 2 and 3 8CA9 RLCA Shift bits 2 and 3 into bits 3 and 4; these bits determine the PAPER colour: 0, 1, 2 or 3 8CAA OR \$47 Set bits 0-2 (INK 7) and 6 (BRIGHT 1) 8CAC LD (HL),A Copy this attribute value into the top two-thirds of the screen 8CAD LDIR 8CAF AND \$FA Reset bits 0 and 2, and retain all other bits 8CB1 OR \$02 Set bit 1 (INK 2) 8CB3 LD (\$59CF),A Copy this attribute value to the cells at (14,15), (14,16), (15, 15) and (15, 16) (where the barrel is, so that it remains red) 8CB6 LD (\$59D0),A 8CB9 LD (\$59EF),A 8CBC LD (\$59F0),A 8CBF LD A,(\$85E4) Add 4 to the distance variable at 85E4; this will move the foot sprite down two pixel rows 8CC2 ADD A,\$04 8CC4 LD (\$85E4),A 8CC7 CP \$C4 Has the foot met the barrel yet? 8CC9 JR NZ,\$8C71 Jump back if not Now print the "Game Over" message, just to drive the point home. 8CCB LD IX,\$8574 Print "Game" (see 8574) at (6,10) 8CCF LD C,\$04 8CD1 LD DE,\$40CA 8CD4 CALL \$9680 8CD7 LD IX,\$8578 Print "Over" (see 8578) at (6,18) 8CDB LD C,\$04 8CDD LD DE,\$40D2 8CE0 CALL \$9680 8CE3 LD BC,\$0000 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 8CE6 LD D,\$06 The following loop makes the "Game Over" message glisten for about 1.57s. 8CE8 DJNZ \$8CE8 Delay for about a millisecond 8CEA LD A,C Change the INK colour of the "G" in "Game" at (6,10) 8CEB AND \$07 8CED OR \$40 8CEF LD (\$58CA),A 8CF2 INC A Change the INK colour of the "a" in "Game" at (6,11) 8CF3 AND \$07 8CF5 OR \$40 8CF7 LD (\$58CB),A 8CFA INC A Change the INK colour of the "m" in "Game" at (6,12) 8CFB AND \$07 8CFD OR \$40 8CFF LD (\$58CC),A 8D02 INC A Change the INK colour of the "e" in "Game" at (6,13) 8D03 AND \$07 8D05 OR \$40 8D07 LD (\$58CD),A 8D0A INC A Change the INK colour of the "O" in "Over" at (6,18) 8D0B AND \$07 8D0D OR \$40 8D0F LD (\$58D2),A 8D12 INC A Change the INK colour of the "v" in "Over" at (6,19) 8D13 AND \$07 8D15 OR \$40 8D17 LD (\$58D3),A 8D1A INC A Change the INK colour of the "e" in "Over" at (6,20) 8D1B AND \$07 8D1D OR \$40 8D1F LD (\$58D4),A 8D22 INC A Change the INK colour of the "r" in "Over" at (6,21) 8D23 AND \$07 8D25 OR \$40 8D27 LD (\$58D5),A 8D2A DEC C Decrement the counter in C 8D2B JR NZ,\$8CE8 Jump back unless it's zero 8D2D DEC D Decrement the counter in D (initially 6) 8D2E JR NZ,\$8CE8 Jump back unless it's zero 8D30 JP \$87CA Display the title screen and play the theme tune
 Prev: 8C01 Up: Map Next: 8D33