Routines |
Prev: 41617 | Up: Map | Next: 41767 |
Used by the routine at 41211.
|
||||
41633 | LD IX,45794 | Load IX with address of complex state data for ghost (level 4) | ||
41637 | CALL 54768 | Check entity at IX for collision with another entity at same depth whose interaction-(11,6) flag is set... | ||
41640 | CP 31 | ...and if collision was not with entity of class 31 (Berk)... | ||
41642 | JR NZ,41653 | ...then skip ahead to 41653 | ||
If collision was with Berk, then IY will point to Berk's complex state data
|
||||
41644 | BIT 6,(IY+9) | If Berk is not flying... | ||
41648 | JR Z,41653 | ...then skip ahead to 41653 | ||
41650 | CALL 53667 | Set Berk-has-been-killed flag | ||
41653 | LD A,(34218) | Load E with current character's current room index... | ||
41656 | LD E,A | ... | ||
41657 | LD A,(IX+0) | Load A with ghost's current room index | ||
41660 | LD C,(IX+4) | Load C with y-coordinate of ghost's top edge | ||
41663 | LD B,(IX+6) | Load B with y-coordinate of ghost's bottom edge | ||
41666 | BIT 0,(IX+9) | If ghost's moving-upwards flag is set... | ||
41670 | JR NZ,41716 | ...then skip ahead to 41716 | ||
41672 | CP 4 | If ghost's current room is 4 (room above pit)... | ||
41674 | JR Z,41687 | ...then skip ahead to 41687 | ||
41676 | LD A,B | If y-coordinate of ghost's bottom edge... | ||
41677 | CP 119 | ...is not 119... | ||
41679 | JP NZ,42360 | ...then move ghost down one character and return | ||
41682 | SET 0,(IX+9) | Set ghost's moving-upwards flag | ||
41686 | RET | Return | ||
Ghost's current room is 4 (room above pit)
|
||||
41687 | CP E | If current character is in the same room as the ghost... | ||
41688 | JR Z,41703 | ...then skip ahead to 41703 | ||
41690 | LD A,B | If y-coordinate of ghost's bottom edge... | ||
41691 | CP 119 | ...is not 119... | ||
41693 | JP NZ,42360 | ...then move ghost down one character and return | ||
41696 | INC (IX+0) | Increase index of ghost's current room (to 5, pit) | ||
41699 | LD A,94 | Position ghost such that the y-coordinate of its top edge is 115... | ||
41701 | JR 41758 | ...and return | ||
Current character and ghost in same room (room above pit)
|
||||
41703 | LD A,C | If y-coordinate of ghost's top edge... | ||
41704 | CP 121 | ...is not 121... | ||
41706 | JP NZ,42360 | ...then move ghost down one character and return | ||
41709 | INC (IX+0) | Increase index of ghost's current room (to 5, pit) | ||
41712 | LD A,100 | Position ghost such that the y-coordinate of its top edge is 100... | ||
41714 | JR 41758 | ...and return | ||
Ghost's moving-upwards flag is set
|
||||
41716 | CP 5 | If ghost's current room is 5 (pit)... | ||
41718 | JR Z,41731 | ...then skip ahead to 41731 | ||
41720 | LD A,C | If y-coordinate of ghost's top edge... | ||
41721 | CP 101 | ...is not 101... | ||
41723 | JP NZ,42374 | ...then move ghost up one character and return | ||
41726 | RES 0,(IX+9) | Reset ghost's moving-upwards flag (i.e. moving downwards) | ||
41730 | RET | Return | ||
Ghost's current room is 5 (pit)
|
||||
41731 | CP E | If current character is in the same room as the ghost... | ||
41732 | JR Z,41747 | ...then skip ahead to 41747 | ||
41734 | LD A,C | If y-coordinate of ghost's top edge... | ||
41735 | CP 101 | ...is not 101... | ||
41737 | JP NZ,42374 | ...then move ghost up one character and return | ||
41740 | DEC (IX+0) | Decrease index of ghost's current room (to 4, room above pit) | ||
41743 | LD A,121 | Position ghost such that the y-coordinate of its top edge is 121... | ||
41745 | JR 41758 | ...and return | ||
Current character and ghost in same room (pit)
|
||||
41747 | LD A,B | If y-coordinate of ghost's bottom edge... | ||
41748 | CP 100 | ...is not 100... | ||
41750 | JP NZ,42374 | ...then move ghost up one character and return | ||
41753 | DEC (IX+0) | Decrease index of ghost's current room (to 4, room above pit) | ||
41756 | LD A,115 | Prepare to set y-coordinate of ghost's top edge to 115 | ||
41758 | LD (IX+4),A | Set y-coordinate of ghost's top edge to value in A | ||
41761 | ADD A,6 | Add 6 to value in A (as ghost is 6 characters tall)... | ||
41763 | LD (IX+6),A | ...and set y-coordinate of ghost's bottom edge to value in A | ||
41766 | RET | Return |
Prev: 41617 | Up: Map | Next: 41767 |