Routines |
Prev: A628 | Up: Map | Next: A6CB |
Used by the routine at 947A.
|
||||
A639 | LD A,($A055) | Return if Rex is dead | ||
A63C | OR A | |||
A63D | RET NZ | |||
A63E | LD A,($A013) | Return is weapon of Rex isn't multiple | ||
A641 | CP $03 | |||
A643 | RET NZ | |||
A644 | LD A,($A060) | Return if Rex is teleporting | ||
A647 | OR A | |||
A648 | RET NZ | |||
A649 | LD IY,$5E4E | Set IY the base address for drone configuration | ||
A64D | LD A,($A014) | Set B the number of drones. Number of drones = 3 + multiple weapon energy level | ||
A650 | ADD A,$03 | |||
A652 | LD B,A | |||
A653 | PUSH BC | Save BC | ||
A654 | LD A,(IY+$02) | Set A to the index into the offset position for drones | ||
A657 | SLA A | Point HL to the address for the offset position | ||
A659 | LD E,A | |||
A65A | LD D,$00 | |||
A65C | LD HL,$A6CB | |||
A65F | ADD HL,DE | |||
A660 | LD A,($A0B6) | Set A to the x-position of Rex | ||
A663 | DEC A | Computes x-position of drone based on x-offset and x-position of Rex Drone x-position = Rex x-position + x-offset - 1 | ||
A664 | ADD A,(HL) | |||
A665 | LD (IY+$00),A | Set x-position of drone in table configuration buffer | ||
A668 | INC HL | Increment address into offset position table | ||
A669 | LD A,($A0B7) | Set A to the y-position of Rex | ||
A66C | ADD A,$02 | Computes y-position of drone based on x-offset and y-position of Rex Drone y-position = Rex y-position + y-offset + 2 | ||
A66E | ADD A,(HL) | |||
A66F | LD (IY+$01),A | Set y-position of drone in table configuration buffer | ||
A672 | LD L,A | Computes in HL the address into room graphic data for the drone position | ||
A673 | LD H,$00 | |||
A675 | ADD HL,HL | |||
A676 | ADD HL,HL | |||
A677 | ADD HL,HL | |||
A678 | ADD HL,HL | |||
A679 | ADD HL,HL | |||
A67A | LD DE,$E7FF | |||
A67D | ADD HL,DE | |||
A67E | LD E,(IY+$00) | |||
A681 | SRL E | |||
A683 | SRL E | |||
A685 | SRL E | |||
A687 | LD D,$00 | |||
A689 | ADD HL,DE | |||
A68A | PUSH HL | Save HL | ||
A68B | LD A,(IY+$00) | Computes in DE the graphic data of drone based on his x-position (x-position & 0x7) * 8 = index into graphic data table | ||
A68E | AND $07 | |||
A690 | SLA A | |||
A692 | SLA A | |||
A694 | SLA A | |||
A696 | LD E,A | |||
A697 | LD D,$00 | |||
A699 | LD HL,$A74B | |||
A69C | ADD HL,DE | |||
A69D | EX DE,HL | |||
A69E | POP HL | Restore HL | ||
A69F | LD B,$04 | Set B to the height of the drone sprite | ||
A6A1 | PUSH BC | Save BC | ||
A6A2 | LD A,(DE) | Copy into room graphic data the drone graphic data | ||
A6A3 | OR (HL) | |||
A6A4 | LD (HL),A | |||
A6A5 | INC DE | Increase address for graphic data of drone and room graphic data | ||
A6A6 | INC HL | |||
A6A7 | LD A,(DE) | Copy into room graphic data the drone graphic data | ||
A6A8 | OR (HL) | |||
A6A9 | LD (HL),A | |||
A6AA | INC DE | Increment address for graphic data of drone | ||
A6AB | LD BC,$001F | Point HL to the next row in room graphic data | ||
A6AE | ADD HL,BC | |||
A6AF | POP BC | Restore BC | ||
A6B0 | DJNZ $A6A1 | Jump until drone is drawn | ||
A6B2 | LD A,(IY+$02) | Increment index into the offset position table for the drone | ||
A6B5 | INC A | |||
A6B6 | LD (IY+$02),A | |||
A6B9 | CP $40 | Reset the index position if has reached to the end | ||
A6BB | JP NZ,$A6C2 | |||
A6BE | LD (IY+$02),$00 | |||
A6C2 | LD DE,$0003 | Point IY to the next drone configuration | ||
A6C5 | ADD IY,DE | |||
A6C7 | POP BC | Restore BC | ||
A6C8 | DJNZ $A653 | Jump back and process next drone | ||
A6CA | RET |
Prev: A628 | Up: Map | Next: A6CB |