Routines |
Prev: 36852 | Up: Map | Next: 37098 |
36904 | LD A,(33799) | Pick up the number of the current cavern from 33799 | ||
36907 | INC A | Increment the cavern number | ||
36908 | CP 20 | Is the current cavern The Final Barrier? | ||
36910 | JR NZ,37009 | Jump if not | ||
36912 | LD A,(33882) | Pick up the game mode indicator from 33882 | ||
36915 | OR A | Are we in demo mode? | ||
36916 | JP NZ,37008 | Jump if so | ||
36919 | LD A,(33885) | Pick up the 6031769 key counter from 33885 | ||
36922 | CP 7 | Is cheat mode activated? | ||
36924 | JR Z,37008 | Jump if so | ||
Willy has made it through The Final Barrier without cheating.
|
||||
36926 | LD C,0 | Draw Willy at (2,19) on the ground above the portal | ||
36928 | LD DE,33376 | |||
36931 | LD HL,16467 | |||
36934 | CALL 36852 | |||
36937 | LD DE,45792 | Draw the swordfish graphic (see 45792) over the portal | ||
36940 | LD HL,16563 | |||
36943 | CALL 36852 | |||
36946 | LD HL,22611 | Point HL at (2,19) in the attribute file | ||
36949 | LD DE,31 | Prepare DE for addition | ||
36952 | LD (HL),47 | Set the attributes for the upper half of Willy's sprite at (2,19) and (2,20) to 47 (INK 7: PAPER 5) | ||
36954 | INC HL | |||
36955 | LD (HL),47 | |||
36957 | ADD HL,DE | Set the attributes for the lower half of Willy's sprite at (3,19) and (3,20) to 39 (INK 7: PAPER 4) | ||
36958 | LD (HL),39 | |||
36960 | INC HL | |||
36961 | LD (HL),39 | |||
36963 | ADD HL,DE | Point HL at (5,19) in the attribute file | ||
36964 | INC HL | |||
36965 | ADD HL,DE | |||
36966 | LD (HL),69 | Set the attributes for the fish at (5,19) and (5,20) to 69 (INK 5: PAPER 0: BRIGHT 1) | ||
36968 | INC HL | |||
36969 | LD (HL),69 | |||
36971 | ADD HL,DE | Set the attribute for the handle of the sword at (6,19) to 70 (INK 6: PAPER 0: BRIGHT 1) | ||
36972 | LD (HL),70 | |||
36974 | INC HL | Set the attribute for the blade of the sword at (6,20) to 71 (INK 7: PAPER 0: BRIGHT 1) | ||
36975 | LD (HL),71 | |||
36977 | ADD HL,DE | Set the attributes at (7,19) and (7,20) to 0 (to hide Willy's feet just below where the portal was) | ||
36978 | LD (HL),0 | |||
36980 | INC HL | |||
36981 | LD (HL),0 | |||
Now play a celebratory sound effect.
|
||||
36983 | LD BC,0 | Prepare C and D for the celebratory sound effect | ||
36986 | LD D,50 | |||
36988 | XOR A | A=0 (black border) | ||
36989 | OUT (254),A | Produce the celebratory sound effect: Willy has escaped from the mine | ||
36991 | XOR 24 | |||
36993 | LD E,A | |||
36994 | LD A,C | |||
36995 | ADD A,D | |||
36996 | ADD A,D | |||
36997 | ADD A,D | |||
36998 | LD B,A | |||
36999 | LD A,E | |||
37000 | DJNZ 37000 | |||
37002 | DEC C | |||
37003 | JR NZ,36989 | |||
37005 | DEC D | |||
37006 | JR NZ,36989 | |||
37008 | XOR A | A=0 (the next cavern will be Central Cavern) | ||
37009 | LD (33799),A | Update the cavern number at 33799 | ||
The next section of code cycles the INK and PAPER colours of the current cavern.
|
||||
37012 | LD A,63 | Initialise A to 63 (INK 7: PAPER 7) | ||
37014 | LD HL,22528 | Set the attributes for the top two-thirds of the screen to the value in A | ||
37017 | LD DE,22529 | |||
37020 | LD BC,511 | |||
37023 | LD (HL),A | |||
37024 | LDIR | |||
37026 | LD BC,4 | Pause for about 0.004s | ||
37029 | DJNZ 37029 | |||
37031 | DEC C | |||
37032 | JR NZ,37029 | |||
37034 | DEC A | Decrement the attribute value in A | ||
37035 | JR NZ,37014 | Jump back until we've gone through all attribute values from 63 down to 1 | ||
37037 | LD A,(33882) | Pick up the game mode indicator from 33882 | ||
37040 | OR A | Are we in demo mode? | ||
37041 | JP NZ,34449 | If so, demo the next cavern | ||
The following loop increases the score and decreases the air supply until it runs out, while playing a sound effect.
|
||||
37044 | CALL 35388 | Decrease the air remaining in the current cavern | ||
37047 | JP Z,34449 | Move to the next cavern if the air supply is now gone | ||
37050 | LD HL,33838 | Add 1 to the score | ||
37053 | CALL 37118 | |||
37056 | LD IX,33833 | Print the new score at (19,26) | ||
37060 | LD C,6 | |||
37062 | LD DE,20602 | |||
37065 | CALL 37562 | |||
37068 | LD C,4 | This value determines the duration of the sound effect | ||
37070 | LD A,(32956) | Pick up the remaining air supply (S) from 32956 | ||
37073 | CPL | D=2*(63-S); this value determines the pitch of the sound effect (which decreases with the amount of air remaining) | ||
37074 | AND 63 | |||
37076 | RLC A | |||
37078 | LD D,A | |||
37079 | LD A,0 | Produce a short note | ||
37081 | OUT (254),A | |||
37083 | LD B,D | |||
37084 | DJNZ 37084 | |||
37086 | LD A,24 | |||
37088 | OUT (254),A | |||
37090 | LD B,D | |||
37091 | DJNZ 37091 | |||
37093 | DEC C | |||
37094 | JR NZ,37079 | |||
37096 | JR 37044 | Jump back to decrease the air supply again |
Prev: 36852 | Up: Map | Next: 37098 |