Routines |
Prev: 34188 | Up: Map | Next: 34436 |
34252 | XOR A | A=0 | ||
34253 | LD (33799),A | Initialise the current cavern number at 33799 | ||
34256 | LD (33881),A | Initialise the Kempston joystick indicator at 33881 | ||
34259 | LD (33882),A | Initialise the game mode indicator at 33882 | ||
34262 | LD (33883),A | Initialise the in-game music note index at 33883 | ||
34265 | LD (33880),A | Initialise the screen flash counter at 33880 | ||
34268 | LD A,2 | Initialise the number of lives remaining at 33879 | ||
34270 | LD (33879),A | |||
34273 | LD HL,33884 | Initialise the keypress flag in bit 0 at 33884 | ||
34276 | SET 0,(HL) | |||
Next, prepare the screen.
|
||||
34278 | LD HL,16384 | Clear the entire display file | ||
34281 | LD DE,16385 | |||
34284 | LD BC,6143 | |||
34287 | LD (HL),0 | |||
34289 | LDIR | |||
34291 | LD HL,40960 | Copy the graphic data at 40960 to the top two-thirds of the display file | ||
34294 | LD DE,16384 | |||
34297 | LD BC,4096 | |||
34300 | LDIR | |||
34302 | LD HL,18493 | Draw Willy at (9,29) | ||
34305 | LD DE,33344 | |||
34308 | LD C,0 | |||
34310 | CALL 36852 | |||
34313 | LD HL,64512 | Copy the attribute bytes from 64512 to the top third of the attribute file | ||
34316 | LD DE,22528 | |||
34319 | LD BC,256 | |||
34322 | LDIR | |||
34324 | LD HL,40448 | Copy the attribute bytes from 40448 to the bottom two-thirds of the attribute file | ||
34327 | LD BC,512 | |||
34330 | LDIR | |||
Now check whether there is a joystick connected.
|
||||
34332 | LD BC,31 | This is the joystick port | ||
34335 | DI | Disable interrupts (which are already disabled) | ||
34336 | XOR A | A=0 | ||
34337 | IN E,(C) | Combine 256 readings of the joystick port in A; if no joystick is connected, some of these readings will have bit 5 set | ||
34339 | OR E | |||
34340 | DJNZ 34337 | |||
34342 | AND 32 | Is a joystick connected (bit 5 reset)? | ||
34344 | JR NZ,34351 | Jump if not | ||
34346 | LD A,1 | Set the Kempston joystick indicator at 33881 to 1 | ||
34348 | LD (33881),A | |||
And finally, play the theme tune and check for keypresses.
|
||||
34351 | LD IY,33902 | Point IY at the theme tune data at 33902 | ||
34355 | CALL 37596 | Play the theme tune | ||
34358 | JP NZ,34436 | Start the game if ENTER or the fire button was pressed | ||
34361 | XOR A | Initialise the game status buffer variable at 32988; this will be used as an index for the message scrolled across the screen | ||
34362 | LD (32988),A | |||
34365 | LD A,(32988) | Pick up the message index from 32988 | ||
34368 | LD IX,40192 | Point IX at the corresponding location in the message at 40192 | ||
34372 | LD IXl,A | |||
34374 | LD DE,20576 | Print 32 characters of the message at (19,0) | ||
34377 | LD C,32 | |||
34379 | CALL 37562 | |||
34382 | LD A,(32988) | Pick up the message index from 32988 | ||
34385 | AND 6 | Keep only bits 1 and 2, and move them into bits 6 and 7, so that A holds 0, 64, 128 or 192; this value determines the animation frame to use for Willy | ||
34387 | RRCA | |||
34388 | RRCA | |||
34389 | RRCA | |||
34390 | LD E,A | Point DE at the graphic data for Willy's sprite (33280+A) | ||
34391 | LD D,130 | |||
34393 | LD HL,18493 | Draw Willy at (9,29) | ||
34396 | LD C,0 | |||
34398 | CALL 36852 | |||
34401 | LD BC,100 | Pause for about 0.1s | ||
34404 | DJNZ 34404 | |||
34406 | DEC C | |||
34407 | JR NZ,34404 | |||
34409 | LD BC,49150 | Read keys H-J-K-L-ENTER | ||
34412 | IN A,(C) | |||
34414 | AND 1 | Keep only bit 0 of the result (ENTER) | ||
34416 | CP 1 | Is ENTER being pressed? | ||
34418 | JR NZ,34436 | If so, start the game | ||
34420 | LD A,(32988) | Pick up the message index from 32988 | ||
34423 | INC A | Increment it | ||
34424 | CP 224 | Set the zero flag if we've reached the end of the message | ||
34426 | LD (32988),A | Store the new message index at 32988 | ||
34429 | JR NZ,34365 | Jump back unless we've finished scrolling the message across the screen | ||
34431 | LD A,64 | Initialise the game mode indicator at 33882 to 64: demo mode | ||
34433 | LD (33882),A | |||
This routine continues into the one at 34436.
|
Prev: 34188 | Up: Map | Next: 34436 |