![]() ![]() |
Routines |
Prev: 25470 | Up: Map | Next: 25569 |
Used by the routine at 25837.
|
||||
LeafCollision | 25514 | LD HL,24212 | HL=Leaf_1_State. | |
25517 | LD B,4 | B=4 (leaf counter). | ||
25519 | LD DE,8 | BC=8 (data offset). | ||
LeafCollision_Loop | 25522 | PUSH HL | Stash HL on the stack. | |
25523 | LD A,(HL) | If the current leaf is not active, jump to LeafCollision_Next. | ||
25524 | AND A | |||
25525 | JR Z,LeafCollision_Next | |||
25527 | INC HL | A=current leaf X position. | ||
25528 | LD A,(HL) | |||
25529 | SUB (IX+1) | Leaf X position - bug X Position. | ||
25532 | JP P,LeafCollision_Test_X | Make sure we have a positive byte. | ||
25535 | NEG | |||
LeafCollision_Test_X | 25537 | CP 10 | Jump to LeafCollision_Next if A >= 10. | |
25539 | JR NC,LeafCollision_Next | |||
25541 | INC HL | A=current leaf Y position. | ||
25542 | LD A,(HL) | |||
25543 | SUB (IX+2) | Leaf Y position - bug Y Position. | ||
25546 | JP P,LeafCollision_Test_Y | Make sure we have a positive byte. | ||
25549 | NEG | |||
LeafCollision_Test_Y | 25551 | CP 10 | Jump to LeafCollision_Next if A >= 10. | |
25553 | JR NC,LeafCollision_Next | |||
25555 | INC HL | Increment HL by two (skip colour attribute). | ||
25556 | INC HL | |||
25557 | LD A,1 | Write 1 to todo and todo (being eaten?) | ||
25559 | LD (HL),A | |||
25560 | INC HL | |||
25561 | LD (HL),A | |||
25562 | POP HL | Restore HL from the stack. | ||
25563 | RET | Return. | ||
Handles moving onto the next leaf object.
|
||||
LeafCollision_Next | 25564 | POP HL | Restore HL from the stack. | |
25565 | ADD HL,DE | Add the data offset/ move onto the next leaf. | ||
25566 | DJNZ LeafCollision_Loop | Decrease counter by one and loop back to LeafCollision_Loop until counter is zero. | ||
25568 | RET | Return. |
Prev: 25470 | Up: Map | Next: 25569 |