![]() |
Routines |
| Prev: $27D1 | Up: Map | Next: $284F |
|
||||||||||||||||
| $27D2 | LDA $26 | Pick up ERIC's or ANGELFACE's animatory state from $26 and store it at $0A. | ||||||||||||||
| $27D4 | STA $0A | |||||||||||||||
| $27D6 | STX $0B | Store the target coordinates at $0B and $0C. | ||||||||||||||
| $27D8 | STY $0C | |||||||||||||||
| $27DA | JSR $33BF | Restore ERIC's or ANGELFACE's buffer from page 0. | ||||||||||||||
| $27DD | LDA $60 | Pick up the current character number from $60. | ||||||||||||||
| $27DF | PHA | Save it temporarily. | ||||||||||||||
| $27E0 | LDA #$14 | Set the current character number at $60 to $14 (ERIC). | ||||||||||||||
| $27E2 | STA $60 | |||||||||||||||
| $27E4 | JSR $3279 | Copy ERIC's character buffer to page 0. | ||||||||||||||
| $27E7 | LDA $FB | Pick up ERIC's y-coordinate from $FB. | ||||||||||||||
| $27E9 | CMP $0C | Does it match the target y-coordinate? | ||||||||||||||
| $27EB | BNE $2800 | Branch if not. | ||||||||||||||
| $27ED | LDA $FC | Pick up ERIC's x-coordinate from $FC. | ||||||||||||||
| $27EF | CMP $0B | Does it match the target x-coordinate? | ||||||||||||||
| $27F1 | BNE $2800 | Branch if not. | ||||||||||||||
| $27F3 | LDA $26 | Pick up ERIC's animatory state from $26. | ||||||||||||||
| $27F5 | EOR $0A | Is ERIC facing the puncher? | ||||||||||||||
| $27F7 | ASL A | |||||||||||||||
| $27F8 | BCC $2800 | Branch if not. | ||||||||||||||
| $27FA | LDA $60 | Pick up ERIC's character number from $60. | ||||||||||||||
| $27FC | SEC | Set the carry flag: there is someone (ERIC) at the target coordinates. | ||||||||||||||
| $27FD | JMP $283E | Jump forward. | ||||||||||||||
| $2800 | LDA #$0F | Set the current character number at $60 to $0F (ANGELFACE). | ||||||||||||||
| $2802 | STA $60 | |||||||||||||||
|
Here we enter a loop to check whether ANGELFACE, BOY WONDER, EINSTEIN or any of the little boys are at the target location.
|
||||||||||||||||
| $2804 | JSR $3279 | Copy the current character's buffer to page 0. | ||||||||||||||
| $2807 | LDA $FB | Pick up the character's y-coordinate from $FB. | ||||||||||||||
| $2809 | CMP $0C | Does it match the target y-coordinate? | ||||||||||||||
| $280B | BNE $2824 | Branch if not. | ||||||||||||||
| $280D | LDA $FC | Pick up the character's x-coordinate from $FC. | ||||||||||||||
| $280F | CMP $0B | Does it match the target x-coordinate? | ||||||||||||||
| $2811 | BNE $2824 | Branch if not. | ||||||||||||||
| $2813 | LDA $B1 | Is the character currently controlled by an uninterruptible subcommand routine? | ||||||||||||||
| $2815 | BNE $2824 | Branch if so. | ||||||||||||||
| $2817 | LDA $26 | Pick up the character's animatory state from $26. | ||||||||||||||
| $2819 | EOR $0A | Is the character facing the puncher? | ||||||||||||||
| $281B | ASL A | |||||||||||||||
| $281C | BCC $2824 | Branch if not. | ||||||||||||||
| $281E | LDA $60 | Pick up the current character's number from $60. | ||||||||||||||
| $2820 | SEC | Set the carry flag: there is someone at the target coordinates. | ||||||||||||||
| $2821 | JMP $283E | Jump forward. | ||||||||||||||
| $2824 | LDA $60 | Pick up the current character number from $60. | ||||||||||||||
| $2826 | CMP #$11 | Have we just checked character number $11 (EINSTEIN)? | ||||||||||||||
| $2828 | BNE $2831 | Branch if not. | ||||||||||||||
| $282A | LDA #$00 | Otherwise start checking the little boys. | ||||||||||||||
| $282C | STA $60 | Update the current character number at $60. | ||||||||||||||
| $282E | JMP $2804 | Jump back to the start of the loop. | ||||||||||||||
| $2831 | CMP #$0A | Is the current character number $0A (little boy no. 11)? | ||||||||||||||
| $2833 | BNE $2839 | Branch if not. | ||||||||||||||
| $2835 | CLC | Clear the carry flag: there is no one at the target coordinates. | ||||||||||||||
| $2836 | JMP $283E | Jump forward. | ||||||||||||||
| $2839 | INC $60 | Increment the current character number at $60. | ||||||||||||||
| $283B | JMP $2804 | Jump back to the start of the loop. | ||||||||||||||
| $283E | STA $57 | Store the character number of the potential victim at $57. | ||||||||||||||
| $2840 | ROL A | Rotate the carry flag into bit 0 of A and store it at $56 temporarily. | ||||||||||||||
| $2841 | STA $56 | |||||||||||||||
| $2843 | PLA | Restore the current character number to A. | ||||||||||||||
| $2844 | STA $60 | Update the current character number at $60. | ||||||||||||||
| $2846 | JSR $3279 | Copy the current character's buffer into page 0. | ||||||||||||||
| $2849 | LDA $56 | Restore the carry flag from bit 0 at $56. | ||||||||||||||
| $284B | LSR A | |||||||||||||||
| $284C | LDA $57 | Pick up the character number of the potential victim. | ||||||||||||||
| $284E | RTS | |||||||||||||||
| Prev: $27D1 | Up: Map | Next: $284F |