Prev: 8FF4 Up: Map Next: 90EA
9028: Move to the next cavern
Used by the routines at 870E and 8FC5.
9028 LD A,($8407) Pick up the number of the current cavern from 8407
902B INC A Increment the cavern number
902C CP $14 Is the current cavern The Final Barrier?
902E JR NZ,$9091 Jump if not
9030 LD A,($845A) Pick up the game mode indicator from 845A
9033 OR A Are we in demo mode?
9034 JP NZ,$9090 Jump if so
9037 LD A,($845D) Pick up the 6031769 key counter from 845D
903A CP $07 Is cheat mode activated?
903C JR Z,$9090 Jump if so
Willy has made it through The Final Barrier without cheating.
903E LD C,$00 Draw Willy at (2,19) on the ground above the portal
9040 LD DE,$8260
9043 LD HL,$4053
9046 CALL $8FF4
9049 LD DE,$B2E0 Draw the swordfish graphic (see B2E0) over the portal
904C LD HL,$40B3
904F CALL $8FF4
9052 LD HL,$5853 Point HL at (2,19) in the attribute file
9055 LD DE,$001F Prepare DE for addition
9058 LD (HL),$2F Set the attributes for the upper half of Willy's sprite at (2,19) and (2,20) to 0x2F (INK 7: PAPER 5)
905A INC HL
905B LD (HL),$2F
905D ADD HL,DE Set the attributes for the lower half of Willy's sprite at (3,19) and (3,20) to 0x27 (INK 7: PAPER 4)
905E LD (HL),$27
9060 INC HL
9061 LD (HL),$27
9063 ADD HL,DE Point HL at (5,19) in the attribute file
9064 INC HL
9065 ADD HL,DE
9066 LD (HL),$45 Set the attributes for the fish at (5,19) and (5,20) to 0x45 (INK 5: PAPER 0: BRIGHT 1)
9068 INC HL
9069 LD (HL),$45
906B ADD HL,DE Set the attribute for the handle of the sword at (6,19) to 0x46 (INK 6: PAPER 0: BRIGHT 1)
906C LD (HL),$46
906E INC HL Set the attribute for the blade of the sword at (6,20) to 0x47 (INK 7: PAPER 0: BRIGHT 1)
906F LD (HL),$47
9071 ADD HL,DE Set the attributes at (7,19) and (7,20) to 0x00 (to hide Willy's feet just below where the portal was)
9072 LD (HL),$00
9074 INC HL
9075 LD (HL),$00
Now play a celebratory sound effect.
9077 LD BC,$0000 Prepare C and D for the celebratory sound effect
907A LD D,$32
907C XOR A A=0 (black border)
907D OUT ($FE),A Produce the celebratory sound effect: Willy has escaped from the mine
907F XOR $18
9081 LD E,A
9082 LD A,C
9083 ADD A,D
9084 ADD A,D
9085 ADD A,D
9086 LD B,A
9087 LD A,E
9088 DJNZ $9088
908A DEC C
908B JR NZ,$907D
908D DEC D
908E JR NZ,$907D
9090 XOR A A=0x00 (the next cavern will be Central Cavern)
9091 LD ($8407),A Update the cavern number at 8407
The next section of code cycles the INK and PAPER colours of the current cavern.
9094 LD A,$3F Initialise A to 0x3F (INK 7: PAPER 7)
9096 LD HL,$5800 Set the attributes for the top two-thirds of the screen to the value in A
9099 LD DE,$5801
909C LD BC,$01FF
909F LD (HL),A
90A0 LDIR
90A2 LD BC,$0004 Pause for about 0.004s
90A5 DJNZ $90A5
90A7 DEC C
90A8 JR NZ,$90A5
90AA DEC A Decrement the attribute value in A
90AB JR NZ,$9096 Jump back until we've gone through all attribute values from 0x3F down to 0x01
90AD LD A,($845A) Pick up the game mode indicator from 845A
90B0 OR A Are we in demo mode?
90B1 JP NZ,$8691 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.
90B4 CALL $8A3C Decrease the air remaining in the current cavern
90B7 JP Z,$8691 Move to the next cavern if the air supply is now gone
90BA LD HL,$842E Add 1 to the score
90BD CALL $90FE
90C0 LD IX,$8429 Print the new score at (19,26)
90C4 LD C,$06
90C6 LD DE,$507A
90C9 CALL $92BA
90CC LD C,$04 This value determines the duration of the sound effect
90CE LD A,($80BC) Pick up the remaining air supply (S) from 80BC
90D1 CPL D=2*(63-S); this value determines the pitch of the sound effect (which decreases with the amount of air remaining)
90D2 AND $3F
90D4 RLC A
90D6 LD D,A
90D7 LD A,$00 Produce a short note
90D9 OUT ($FE),A
90DB LD B,D
90DC DJNZ $90DC
90DE LD A,$18
90E0 OUT ($FE),A
90E2 LD B,D
90E3 DJNZ $90E3
90E5 DEC C
90E6 JR NZ,$90D7
90E8 JR $90B4 Jump back to decrease the air supply again
Prev: 8FF4 Up: Map Next: 90EA