![]() |
Routines |
| Prev: 25420 | Up: Map | Next: 25600 |
|
Used by the routine at 25789. Compares Sam's location with those of the two banknotes. If there's a match, and Sam has just finished a somersault, the banknote is added to Sam's cash supply.
|
||||||||
| 25539 | BIT 5,(HL) | Byte 12 of Sam's buffer holds the LSB of the current roll/somersault animation phase table entry | ||||||
| 25541 | RET Z | Return if Sam was rolling | ||||||
| 25542 | LD L,1 | Collect Sam's x- and y-coordinates in E and D | ||||||
| 25544 | LD E,(HL) | |||||||
| 25545 | INC L | |||||||
| 25546 | LD D,(HL) | |||||||
| 25547 | LD B,L | B=2 (there are 2 banknotes) | ||||||
| 25548 | DEC H | H=228 or 229 | ||||||
| 25549 | LD A,D | A=Sam's y-coordinate | ||||||
| 25550 | CP (HL) | Compare it with the banknote's y-coordinate | ||||||
| 25551 | DEC HL | Point HL at byte 1 of the banknote's buffer | ||||||
| 25552 | JR NZ,25558 | Jump unless Sam's y-coordinate matches the banknote's | ||||||
| 25554 | LD A,E | A=Sam's x-coordinate | ||||||
| 25555 | CP (HL) | Has Sam landed on a banknote? | ||||||
| 25556 | JR Z,25562 | Jump if so | ||||||
| 25558 | INC HL | Point HL at byte 2 of the banknote's buffer | ||||||
| 25559 | DJNZ 25548 | Jump back until both banknotes have been checked | ||||||
| 25561 | RET | |||||||
|
Sam has landed on something that is using one of the banknote buffers. Here we check that the object looks like a banknote. But this check is redundant, since no object except a banknote or the hook can use buffer 228 or 229, and Sam cannot land on the hook.
|
||||||||
| 25562 | DEC L | L=0 | ||||||
| 25563 | LD A,(HL) | A=banknote's animatory state | ||||||
| 25564 | AND 127 | Discard bit 7 | ||||||
| 25566 | SUB 62 | Is the banknote's animatory state 62 or 190? | ||||||
| 25568 | JR Z,25573 | Jump if so | ||||||
| 25570 | SUB 8 | Is the banknote's animatory state 70 or 198? | ||||||
| 25572 | RET NZ | Return if not (this never happens) | ||||||
|
Sam has landed on something that looks like a banknote.
|
||||||||
| 25573 | LD L,10 | Set byte 10 of the banknote's buffer to 1 to indicate that Sam's just landed on it (see 25420) | ||||||
| 25575 | INC (HL) | |||||||
| 25576 | CALL 25039 | Add 1, 5, 10 or 20 bucks to Sam's total | ||||||
|
Finally we make an appropriate sound effect.
|
||||||||
| 25579 | XOR A | Prepare the sound effect parameters: A=0 (initial border colour), D=5 (duration), E=249 (initial pitch) | ||||||
| 25580 | LD DE,1529 | |||||||
| 25583 | INC A | Increment the border colour | ||||||
| 25584 | XOR 16 | Flip bit 4 of A | ||||||
| 25586 | AND 23 | Retain only bits 0-2 (border colour) and 4 (speaker state) | ||||||
| 25588 | OUT (254),A | Change the border colour and speaker state | ||||||
| 25590 | LD B,E | Perform the pitch delay | ||||||
| 25591 | DJNZ 25591 | |||||||
| 25593 | DEC E | Decrement the pitch delay | ||||||
| 25594 | JR NZ,25583 | Jump back unless it's zero | ||||||
| 25596 | DEC D | Decrement the duration counter | ||||||
| 25597 | JR NZ,25583 | Jump back unless it's zero | ||||||
| 25599 | RET | |||||||
| Prev: 25420 | Up: Map | Next: 25600 |