![]() |
Routines |
| Prev: 34252 | Up: Map | Next: 34574 |
|
Used by the routine at 34252.
|
||||
| 34436 | LD HL,33829 | Initialise the score at 33829 | ||
| 34439 | LD DE,33830 | |||
| 34442 | LD BC,9 | |||
| 34445 | LD (HL),48 | |||
| 34447 | LDIR | |||
|
This entry point is used by the routines at 34574 (when teleporting into a cavern or reinitialising the current cavern after Willy has lost a life) and 36904.
|
||||
| 34449 | LD A,(33799) | Pick up the number of the current cavern from 33799 | ||
| 34452 | SLA A | Point HL at the first byte of the cavern definition | ||
| 34454 | SLA A | |||
| 34456 | ADD A,176 | |||
| 34458 | LD H,A | |||
| 34459 | LD L,0 | |||
| 34461 | LD DE,24064 | Copy the cavern's attribute bytes into the buffer at 24064 | ||
| 34464 | LD BC,512 | |||
| 34467 | LDIR | |||
| 34469 | LD DE,32768 | Copy the rest of the cavern definition into the game status buffer at 32768 | ||
| 34472 | LD BC,512 | |||
| 34475 | LDIR | |||
| 34477 | CALL 35445 | Draw the current cavern to the screen buffer at 28672 | ||
| 34480 | LD HL,20480 | Clear the bottom third of the display file | ||
| 34483 | LD DE,20481 | |||
| 34486 | LD BC,2047 | |||
| 34489 | LD (HL),0 | |||
| 34491 | LDIR | |||
| 34493 | LD IX,32768 | Print the cavern name (see 32768) at (16,0) | ||
| 34497 | LD C,32 | |||
| 34499 | LD DE,20480 | |||
| 34502 | CALL 37562 | |||
| 34505 | LD IX,33816 | Print 'AIR' (see 33816) at (17,0) | ||
| 34509 | LD C,3 | |||
| 34511 | LD DE,20512 | |||
| 34514 | CALL 37562 | |||
| 34517 | LD A,82 | Initialise A to 82; this is the MSB of the display file address at which to start drawing the bar that represents the air supply | ||
| 34519 | LD H,A | Prepare HL and DE for drawing a row of pixels in the air bar | ||
| 34520 | LD D,A | |||
| 34521 | LD L,36 | |||
| 34523 | LD E,37 | |||
| 34525 | LD B,A | Save the display file address MSB in B briefly | ||
| 34526 | LD A,(32956) | Pick up the value of the initial air supply from 32956 | ||
| 34529 | SUB 36 | Now C determines the length of the air bar (in cell widths) | ||
| 34531 | LD C,A | |||
| 34532 | LD A,B | Restore the display file address MSB to A | ||
| 34533 | LD B,0 | Now BC determines the length of the air bar (in cell widths) | ||
| 34535 | LD (HL),255 | Draw a single row of pixels across C cells | ||
| 34537 | LDIR | |||
| 34539 | INC A | Increment the display file address MSB in A (moving down to the next row of pixels) | ||
| 34540 | CP 86 | Have we drawn all four rows of pixels in the air bar yet? | ||
| 34542 | JR NZ,34519 | If not, jump back to draw the next one | ||
| 34544 | LD IX,33839 | Print 'High Score 000000 Score 000000' (see 33839) at (19,0) | ||
| 34548 | LD DE,20576 | |||
| 34551 | LD C,32 | |||
| 34553 | CALL 37562 | |||
| 34556 | LD A,(32883) | Pick up the border colour for the current cavern from 32883 | ||
| 34559 | LD C,254 | Set the border colour | ||
| 34561 | OUT (C),A | |||
| 34563 | LD A,(33882) | Pick up the game mode indicator from 33882 | ||
| 34566 | OR A | Are we in demo mode? | ||
| 34567 | JR Z,34574 | If not, enter the main loop now | ||
| 34569 | LD A,64 | Reset the game mode indicator at 33882 to 64 (we're in demo mode) | ||
| 34571 | LD (33882),A | |||
|
This routine continues into the main loop at 34574.
|
||||
| Prev: 34252 | Up: Map | Next: 34574 |