Routines |
Prev: $149F | Up: Map | Next: $1640 |
Called from the main loop at $0800 to deal with ERIC when he's doing something other than walking or standing still.
|
||||
$15B3 | LDA $60 | Pick up the current character number from $60. | ||
$15B5 | PHA | Save it temporarily. | ||
$15B6 | LDA #$14 | Set the current character number at $60 to $14 (ERIC). | ||
$15B8 | STA $60 | |||
$15BA | JSR $3279 | Copy ERIC's character buffer to page 0. | ||
$15BD | LDA $2B | Pick up ERIC's status flags from $2B. | ||
$15BF | ASL A | Is bit 6 set? | ||
$15C0 | ASL A | |||
$15C1 | BCC $15C9 | Branch if not. | ||
Bit 6 of ERIC's status flags is set, indicating that he's immobilised.
|
||||
$15C3 | JSR $290F | Deal with ERIC if he's being spoken to by little boy no. 10. | ||
$15C6 | JMP $1636 | Jump forward. | ||
$15C9 | ASL A | Is bit 4 of ERIC's status flags set? | ||
$15CA | ASL A | |||
$15CB | BCC $1615 | Branch if not. | ||
Bit 4 of ERIC's status flags is set, indicating that he's just been knocked down or unseated.
|
||||
$15CD | LDA #$00 | Clear ERIC's midstride indicator at $4B. | ||
$15CF | STA $4B | |||
$15D1 | LDA $30 | Pick up ERIC's knockout delay counter from $30. | ||
$15D3 | BEQ $15D9 | Branch if it's zero (ERIC's just been knocked over). | ||
$15D5 | CMP #$0B | Is ERIC's knockout delay counter less than $0B? | ||
$15D7 | BCC $1608 | Branch if so (this always happens). | ||
$15D9 | LDA #$1A | Set voice #3 attack length to 8ms and and decay length to 1.5s. | ||
$15DB | STA $D413 | |||
$15DE | LDA #$81 | Set voice #3 control register: voice on, attack-decay-sustain cycle; noise enabled. | ||
$15E0 | STA $D412 | |||
$15E3 | LDA #$0A | Initialise ERIC's knockout delay counter at $30 to $0A. | ||
$15E5 | STA $30 | |||
$15E7 | JSR $322E | Update the SRB for the ERIC's current animatory state and location. | ||
$15EA | LDA $26 | Pick up ERIC's animatory state from $26. | ||
$15EC | AND #$06 | Keep only bits 1 and 2. | ||
$15EE | CMP #$05 | Compare the result with $05. | ||
$15F0 | BEQ $15FC | This branch is never made. | ||
$15F2 | LDA $26 | Pick up ERIC's animatory state from $26. | ||
$15F4 | AND #$80 | Keep only the direction bit (bit 7). | ||
$15F6 | CLC | Now A=$07 or $87: ERIC lying on his back. | ||
$15F7 | ADC #$07 | |||
$15F9 | JMP $1603 | Jump forward. | ||
$15FC | LDA $26 | Pick up ERIC's animatory state from $26. | ||
$15FE | AND #$80 | Keep only the direction bit (bit 7). | ||
$1600 | CLC | Now A=$06 or $86: ERIC sitting on the floor. | ||
$1601 | ADC #$06 | |||
$1603 | STA $26 | Update ERIC's animatory state. | ||
$1605 | JSR $322E | Update the SRB for the ERIC's new animatory state. | ||
$1608 | DEC $30 | Decrement ERIC's knockout delay counter at $30. | ||
$160A | BNE $1636 | Branch unless it's zero now. | ||
$160C | LDA #$00 | Clear ERIC's status flags at $2B. | ||
$160E | STA $2B | |||
$1610 | STA $14 | Set ERIC's posture indicator at $14 to 0: he's not standing up. | ||
$1612 | JMP $1636 | Jump forward. | ||
$1615 | ASL A | Is bit 3 of ERIC's status flags set? | ||
$1616 | BCC $161E | Branch if not. | ||
Bit 3 of ERIC's status flags is set, indicating that he's writing on a blackboard.
|
||||
$1618 | JSR $184E | Deal with ERIC when he's writing on a blackboard. | ||
$161B | JMP $1636 | Jump forward. | ||
$161E | ASL A | Is bit 2 of ERIC's status flags set? | ||
$161F | BCC $1627 | Branch if not. | ||
Bit 2 of ERIC's status flags is set, indicating that he's hitting.
|
||||
$1621 | JSR $17E5 | Deal with ERIC when he's hitting. | ||
$1624 | JMP $1636 | Jump forward. | ||
$1627 | ASL A | Is bit 1 of ERIC's status flags set? | ||
$1628 | BCC $1630 | Branch if not. | ||
Bit 1 of ERIC's status flags is set, indicating that he's jumping.
|
||||
$162A | JSR $189D | Deal with ERIC when he's jumping. | ||
$162D | JMP $1636 | Jump forward. | ||
$1630 | ASL A | Is bit 0 of ERIC's status flags set? | ||
$1631 | BCC $1636 | Branch if not. | ||
Bit 0 of ERIC's status flags is set, indicating that he's firing the catapult.
|
||||
$1633 | JSR $191B | Deal with ERIC when he's firing the catapult. | ||
$1636 | JSR $33BF | Restore ERIC's character buffer from page 0. | ||
$1639 | PLA | Restore the current character number to $60. | ||
$163A | STA $60 | |||
$163C | JSR $3279 | Copy the current character's buffer to page 0. | ||
$163F | RTS |
Prev: $149F | Up: Map | Next: $1640 |