Prev: 35841 Up: Map Next: 36147
35914: Display the game over sequence
Used by the routine at 35841.
35914 LD HL,16384 Clear the top two-thirds of the display file
35917 LD DE,16385
35920 LD BC,4095
35923 LD (HL),0
35925 LDIR
35927 XOR A Initialise the temporary game status buffer variable at 34276; this variable will determine the distance of the foot from the top of the screen
35928 LD (34276),A
35931 LD DE,40256 Draw Willy at (12,15)
35934 LD HL,18575
35937 LD C,0
35939 CALL 37974
35942 LD DE,40032 Draw the barrel underneath Willy at (14,15)
35945 LD HL,18639
35948 LD C,0
35950 CALL 37974
The following loop draws the foot's descent onto the barrel that supports Willy while producing a sound effect.
35953 LD A,(34276) Pick up the distance variable from 34276
35956 LD C,A Point BC at the corresponding entry in the screen buffer address lookup table at 33280
35957 LD B,130
35959 LD A,(BC) Point HL at the corresponding location in the display file
35960 OR 15
35962 LD L,A
35963 INC BC
35964 LD A,(BC)
35965 SUB 32
35967 LD H,A
35968 LD DE,40000 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
35971 LD C,0
35973 CALL 37974
35976 LD A,(34276) Pick up the distance variable from 34276
35979 CPL A=255-A
35980 LD E,A Store this value (63-255) in E; it determines the (rising) pitch of the sound effect that will be made
35981 XOR A A=0 (black border)
35982 LD BC,64 C=64; this value determines the duration of the sound effect
35985 OUT (254),A Produce a short note whose pitch is determined by E
35987 XOR 24
35989 LD B,E
35990 DJNZ 35990
35992 DEC C
35993 JR NZ,35985
35995 LD HL,22528 Prepare BC, DE and HL for setting the attribute bytes in the top two-thirds of the screen
35998 LD DE,22529
36001 LD BC,511
36004 LD A,(34276) Pick up the distance variable from 34276
36007 AND 12 Keep only bits 2 and 3
36009 RLCA Shift bits 2 and 3 into bits 3 and 4; these bits determine the PAPER colour: 0, 1, 2 or 3
36010 OR 71 Set bits 0-2 (INK 7) and 6 (BRIGHT 1)
36012 LD (HL),A Copy this attribute value into the top two-thirds of the screen
36013 LDIR
36015 AND 250 Reset bits 0 and 2, and retain all other bits
36017 OR 2 Set bit 1 (INK 2)
36019 LD (22991),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)
36022 LD (22992),A
36025 LD (23023),A
36028 LD (23024),A
36031 LD A,(34276) Add 4 to the distance variable at 34276; this will move the foot sprite down two pixel rows
36034 ADD A,4
36036 LD (34276),A
36039 CP 196 Has the foot met the barrel yet?
36041 JR NZ,35953 Jump back if not
Now print the "Game Over" message, just to drive the point home.
36043 LD IX,34164 Print "Game" (see 34164) at (6,10)
36047 LD C,4
36049 LD DE,16586
36052 CALL 38528
36055 LD IX,34168 Print "Over" (see 34168) at (6,18)
36059 LD C,4
36061 LD DE,16594
36064 CALL 38528
36067 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
36070 LD D,6
The following loop makes the "Game Over" message glisten for about 1.57s.
36072 DJNZ 36072 Delay for about a millisecond
36074 LD A,C Change the INK colour of the "G" in "Game" at (6,10)
36075 AND 7
36077 OR 64
36079 LD (22730),A
36082 INC A Change the INK colour of the "a" in "Game" at (6,11)
36083 AND 7
36085 OR 64
36087 LD (22731),A
36090 INC A Change the INK colour of the "m" in "Game" at (6,12)
36091 AND 7
36093 OR 64
36095 LD (22732),A
36098 INC A Change the INK colour of the "e" in "Game" at (6,13)
36099 AND 7
36101 OR 64
36103 LD (22733),A
36106 INC A Change the INK colour of the "O" in "Over" at (6,18)
36107 AND 7
36109 OR 64
36111 LD (22738),A
36114 INC A Change the INK colour of the "v" in "Over" at (6,19)
36115 AND 7
36117 OR 64
36119 LD (22739),A
36122 INC A Change the INK colour of the "e" in "Over" at (6,20)
36123 AND 7
36125 OR 64
36127 LD (22740),A
36130 INC A Change the INK colour of the "r" in "Over" at (6,21)
36131 AND 7
36133 OR 64
36135 LD (22741),A
36138 DEC C Decrement the counter in C
36139 JR NZ,36072 Jump back unless it's zero
36141 DEC D Decrement the counter in D (initially 6)
36142 JR NZ,36072 Jump back unless it's zero
36144 JP 34762 Display the title screen and play the theme tune
Prev: 35841 Up: Map Next: 36147