![]() |
Routines |
| Prev: A793 | Up: Map | Next: A836 |
|
Used by the routine at 9470.
|
||||
| A7A4 | LD A,($A1EE) | Return if Rex is dead | ||
| A7A7 | OR A | |||
| A7A8 | RET NZ | |||
| A7A9 | LD A,($A1AC) | Return is weapon of Rex isn't multiple | ||
| A7AC | CP $03 | |||
| A7AE | RET NZ | |||
| A7AF | LD A,($A1F9) | Return if Rex is teleporting | ||
| A7B2 | OR A | |||
| A7B3 | RET NZ | |||
| A7B4 | LD IY,$5E4E | Set IY the base address for drone configuration | ||
| A7B8 | LD A,($A1AD) | Set B the number of drones. Number of drones = 3 + multiple weapon energy level | ||
| A7BB | ADD A,$03 | |||
| A7BD | LD B,A | |||
| A7BE | PUSH BC | Save BC | ||
| A7BF | LD A,(IY+$02) | Set A to the index into the offset position for drones | ||
| A7C2 | SLA A | Point HL to the address for the offset position | ||
| A7C4 | LD E,A | |||
| A7C5 | LD D,$00 | |||
| A7C7 | LD HL,$A836 | |||
| A7CA | ADD HL,DE | |||
| A7CB | LD A,($A24F) | Set A to the x-position of Rex | ||
| A7CE | 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 | ||
| A7CF | ADD A,(HL) | |||
| A7D0 | LD (IY+$00),A | Set x-position of drone in table configuration buffer | ||
| A7D3 | INC HL | Increment address into offset position table | ||
| A7D4 | LD A,($A250) | Set A to the y-position of Rex | ||
| A7D7 | 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 | ||
| A7D9 | ADD A,(HL) | |||
| A7DA | LD (IY+$01),A | Set y-position of drone in table configuration buffer | ||
| A7DD | LD L,A | Computes in HL the address into room graphic data for the drone position | ||
| A7DE | LD H,$00 | |||
| A7E0 | ADD HL,HL | |||
| A7E1 | ADD HL,HL | |||
| A7E2 | ADD HL,HL | |||
| A7E3 | ADD HL,HL | |||
| A7E4 | ADD HL,HL | |||
| A7E5 | LD DE,$E7FF | |||
| A7E8 | ADD HL,DE | |||
| A7E9 | LD E,(IY+$00) | |||
| A7EC | SRL E | |||
| A7EE | SRL E | |||
| A7F0 | SRL E | |||
| A7F2 | LD D,$00 | |||
| A7F4 | ADD HL,DE | |||
| A7F5 | PUSH HL | Save HL | ||
| A7F6 | 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 | ||
| A7F9 | AND $07 | |||
| A7FB | SLA A | |||
| A7FD | SLA A | |||
| A7FF | SLA A | |||
| A801 | LD E,A | |||
| A802 | LD D,$00 | |||
| A804 | LD HL,$A8B6 | |||
| A807 | ADD HL,DE | |||
| A808 | EX DE,HL | |||
| A809 | POP HL | Restore HL | ||
| A80A | LD B,$04 | Set B to the height of the drone sprite | ||
| A80C | PUSH BC | Save BC | ||
| A80D | LD A,(DE) | Copy into room graphic data the drone graphic data | ||
| A80E | OR (HL) | |||
| A80F | LD (HL),A | |||
| A810 | INC DE | Increase address for graphic data of drone and room graphic data | ||
| A811 | INC HL | |||
| A812 | LD A,(DE) | Copy into room graphic data the drone graphic data | ||
| A813 | OR (HL) | |||
| A814 | LD (HL),A | |||
| A815 | INC DE | Increment address for graphic data of drone | ||
| A816 | LD BC,$001F | Point HL to the next row in room graphic data | ||
| A819 | ADD HL,BC | |||
| A81A | POP BC | Restore BC | ||
| A81B | DJNZ $A80C | Jump until drone is drawn | ||
| A81D | LD A,(IY+$02) | Increment index into the offset position table for the drone | ||
| A820 | INC A | |||
| A821 | LD (IY+$02),A | |||
| A824 | CP $40 | Reset the index position if has reached to the end | ||
| A826 | JP NZ,$A82D | |||
| A829 | LD (IY+$02),$00 | |||
| A82D | LD DE,$0003 | Point IY to the next drone configuration | ||
| A830 | ADD IY,DE | |||
| A832 | POP BC | Restore BC | ||
| A833 | DJNZ $A7BE | Jump back and process next drone | ||
| A835 | RET | |||
| Prev: A793 | Up: Map | Next: A836 |