Prev: 85CC Up: Map Next: 870E
8684: Start the game (or demo mode)
Used by the routine at 85CC.
8684 LD HL,$8425 Initialise the score at 8425
8687 LD DE,$8426
868A LD BC,$0009
868D LD (HL),$30
868F LDIR
This entry point is used by the routines at 870E (when teleporting into a cavern or reinitialising the current cavern after Willy has lost a life) and 9028.
8691 LD A,($8407) Pick up the number of the current cavern from 8407
8694 SLA A Point HL at the first byte of the cavern definition
8696 SLA A
8698 ADD A,$B0
869A LD H,A
869B LD L,$00
869D LD DE,$5E00 Copy the cavern's attribute bytes into the buffer at 5E00
86A0 LD BC,$0200
86A3 LDIR
86A5 LD DE,$8000 Copy the rest of the cavern definition into the game status buffer at 8000
86A8 LD BC,$0200
86AB LDIR
86AD CALL $8A75 Draw the current cavern to the screen buffer at 7000
86B0 LD HL,$5000 Clear the bottom third of the display file
86B3 LD DE,$5001
86B6 LD BC,$07FF
86B9 LD (HL),$00
86BB LDIR
86BD LD IX,$8000 Print the cavern name (see 8000) at (16,0)
86C1 LD C,$20
86C3 LD DE,$5000
86C6 CALL $92BA
86C9 LD IX,$8418 Print 'AIR' (see 8418) at (17,0)
86CD LD C,$03
86CF LD DE,$5020
86D2 CALL $92BA
86D5 LD A,$52 Initialise A to 0x52; this is the MSB of the display file address at which to start drawing the bar that represents the air supply
86D7 LD H,A Prepare HL and DE for drawing a row of pixels in the air bar
86D8 LD D,A
86D9 LD L,$24
86DB LD E,$25
86DD LD B,A Save the display file address MSB in B briefly
86DE LD A,($80BC) Pick up the value of the initial air supply from 80BC
86E1 SUB $24 Now C determines the length of the air bar (in cell widths)
86E3 LD C,A
86E4 LD A,B Restore the display file address MSB to A
86E5 LD B,$00 Now BC determines the length of the air bar (in cell widths)
86E7 LD (HL),$FF Draw a single row of pixels across C cells
86E9 LDIR
86EB INC A Increment the display file address MSB in A (moving down to the next row of pixels)
86EC CP $56 Have we drawn all four rows of pixels in the air bar yet?
86EE JR NZ,$86D7 If not, jump back to draw the next one
86F0 LD IX,$842F Print 'High Score 000000   Score 000000' (see 842F) at (19,0)
86F4 LD DE,$5060
86F7 LD C,$20
86F9 CALL $92BA
86FC LD A,($8073) Pick up the border colour for the current cavern from 8073
86FF LD C,$FE Set the border colour
8701 OUT (C),A
8703 LD A,($845A) Pick up the game mode indicator from 845A
8706 OR A Are we in demo mode?
8707 JR Z,$870E If not, enter the main loop now
8709 LD A,$40 Reset the game mode indicator at 845A to 0x40 (we're in demo mode)
870B LD ($845A),A
This routine continues into the main loop at 870E.
Prev: 85CC Up: Map Next: 870E