Routines |
Prev: $2E05 | Up: Map | Next: $2EE6 |
$2E13 | LDA #$78 | Store $7860 (the base address of little boy no. 1's character buffer) at $50. | ||
$2E15 | STA $51 | |||
$2E17 | LDA #$60 | |||
$2E19 | STA $50 | |||
$2E1B | LDX #$00 | X will be used to index the table of initial animatory states at $4900. | ||
$2E1D | LDY #$00 | Y will be used to index the character's buffer. | ||
$2E1F | LDA $4900,X | Pick up the character's initial animatory state from the table at $4900. | ||
$2E22 | STA ($50),Y | Store it in the character's buffer. | ||
$2E24 | INC $51 | Next character buffer. | ||
$2E26 | INX | Next initial animatory state. | ||
$2E27 | CPX #$15 | Have we initialised every character's animatory state yet? | ||
$2E29 | BNE $2E1F | Branch back if not. | ||
$2E2B | INY | Point at the second byte of the character buffers. | ||
$2E2C | LDX #$00 | Reset X to 0. | ||
$2E2E | LDA #$78 | Reset the address at $50 to that of the little boy no. 1's character buffer. | ||
$2E30 | STA $51 | |||
$2E32 | LDA $4A00,X | Pick up the character's initial x-coordinate from the table at $4A00. | ||
$2E35 | STA ($50),Y | Store it in the character's buffer. | ||
$2E37 | INC $51 | Next character buffer. | ||
$2E39 | INX | Next initial x-coordinate. | ||
$2E3A | CPX #$15 | Have we initialised every character's x-coordinate yet? | ||
$2E3C | BNE $2E32 | Branch back if not. | ||
$2E3E | LDX #$00 | Reset X to 0. | ||
$2E40 | LDY #$02 | Point at the third byte of the character buffers. | ||
$2E42 | LDA #$78 | Reset the address at $50 to that of the little boy no. 1's character buffer. | ||
$2E44 | STA $51 | |||
$2E46 | LDA #$11 | Every character starts at y-coordinate 17 (on the bottom floor). | ||
$2E48 | STA ($50),Y | Set the character's y-coordinate. | ||
$2E4A | INC $51 | Next character buffer. | ||
$2E4C | INX | Increment the character counter. | ||
$2E4D | CPX #$15 | Have we initialised every character's y-coordinate yet? | ||
$2E4F | BNE $2E48 | Branch back if not. | ||
$2E51 | LDA $7D | Pick up the MSB of the score from $7D. | ||
$2E53 | CMP $F8 | Compare it with the MSB of the hi-score. | ||
$2E55 | BEQ $2E5B | Branch if they're equal. | ||
$2E57 | BCS $2E61 | Branch if we have a new hi-score. | ||
$2E59 | BNE $2E69 | This branch is always made (no new hi-score). | ||
$2E5B | LDA $7C | Pick up the LSB of the score from $7C. | ||
$2E5D | CMP $F7 | Compare it with the MSB of the hi-score. | ||
$2E5F | BCC $2E69 | Branch unless we have a new hi-score. | ||
$2E61 | LDA $7D | Copy the current score from $7C into the hi-score at at $F7. | ||
$2E63 | STA $F8 | |||
$2E65 | LDA $7C | |||
$2E67 | STA $F7 | |||
$2E69 | LDA #$00 | Set the current character number at $60 to $00 (little boy no. 1). | ||
$2E6B | STA $60 | |||
$2E6D | STA $7C | Reset the score to 0. | ||
$2E6F | STA $7D | |||
$2E71 | STA $7E | Reset the lines total to 0. | ||
$2E73 | STA $7F | |||
$2E75 | JSR $2AAA | Set MR CREAK's birth year. | ||
$2E78 | JSR $292F | Generate a safe combination code. | ||
$2E7B | JSR $2F20 | Draw the Skool Daze logo. | ||
$2E7E | JSR $2F56 | Draw the score box. | ||
$2E81 | LDA $F8 | Pick up the MSB of the hi-score. | ||
$2E83 | BNE $2E8C | Branch unless it's zero. | ||
$2E85 | LDA $F7 | Pick up the LSB of the hi-score. | ||
$2E87 | BNE $2E8C | Branch unless it's zero. | ||
$2E89 | JMP $2E95 | Skip printing the hi-score if it's zero. | ||
$2E8C | LDA #$F7 | Store the LSB of the address of the hi-score at $4E. | ||
$2E8E | STA $4E | |||
$2E90 | LDA #$02 | A=2, indicating the hi-score. | ||
$2E92 | JSR $2620 | Print the hi-score. | ||
$2E95 | JSR $3279 | Copy a character's buffer into page 0. | ||
$2E98 | LDA #$00 | Remove the address of any primary command routine from the character's buffer. | ||
$2E9A | STA $2A | |||
$2E9C | STA $B1 | Remove the address of any uninterruptible subcommand routine from the character's buffer. | ||
$2E9E | STA $AB | Remove the address of any interruptible subcommand routine from the character's buffer. | ||
$2EA0 | STA $3A | Remove the address of any continual subcommand routine from the character's buffer. | ||
$2EA2 | STA $3B | Remove the address reached in the command list from the character's buffer. | ||
$2EA4 | STA $3C | |||
$2EA6 | STA $3D | Remove the address of the command list from the character's buffer. | ||
$2EA8 | STA $3E | |||
$2EAA | STA $A6 | Zero out the remainder of the character's buffer. | ||
$2EAC | STA $A7 | |||
$2EAE | STA $A8 | |||
$2EB0 | STA $A9 | |||
$2EB2 | STA $AC | |||
$2EB4 | STA $AD | |||
$2EB6 | STA $AE | |||
$2EB8 | STA $AF | |||
$2EBA | STA $B2 | |||
$2EBC | STA $B3 | |||
$2EBE | STA $B4 | |||
$2EC0 | STA $B5 | |||
$2EC2 | JSR $33BF | Restore the character's buffer from page 0. | ||
$2EC5 | INC $60 | Increment the current character number at $60. | ||
$2EC7 | LDA $60 | Pick up the current character number from $60. | ||
$2EC9 | CMP #$12 | Have we initialised the character buffer of every boy (except ERIC) and teacher? | ||
$2ECB | BNE $2E95 | Branch back if not. | ||
$2ECD | LDA #$58 | Prepare to address the shield locations and status table at $58E0. | ||
$2ECF | STA $51 | |||
$2ED1 | LDA #$E0 | |||
$2ED3 | STA $50 | |||
$2ED5 | LDY #$02 | Initialise the shields. | ||
$2ED7 | LDA #$00 | |||
$2ED9 | STA ($50),Y | |||
$2EDB | INY | |||
$2EDC | INY | |||
$2EDD | INY | |||
$2EDE | CPY #$2D | |||
$2EE0 | BCC $2ED9 | |||
$2EE2 | JSR $2D47 | Initialise the game status buffer. | ||
$2EE5 | RTS |
Prev: $2E05 | Up: Map | Next: $2EE6 |