Prev: 94D2 Up: Map Next: 9534
94F9: Move the conveyor in the current room
Used by the routine at 89AD.
94F9 LD HL,($80D7) Pick up the address of the conveyor's location in the attribute buffer at 5E00 from 80D7
94FC LD A,H Point DE and HL at the location of the left end of the conveyor in the screen buffer at 7000
94FD AND $01
94FF RLCA
9500 RLCA
9501 RLCA
9502 ADD A,$70
9504 LD H,A
9505 LD E,L
9506 LD D,H
9507 LD A,($80D9) Pick up the length of the conveyor from 80D9
950A OR A Is there a conveyor in the room?
950B RET Z Return if not
950C LD B,A B will count the conveyor tiles
950D LD A,($80D6) Pick up the direction of the conveyor from 80D6 (0=left, 1=right)
9510 OR A Is the conveyor moving right?
9511 JR NZ,$9526 Jump if so
The conveyor is moving left.
9513 LD A,(HL) Copy the first pixel row of the conveyor tile to A
9514 RLC A Rotate it left twice
9516 RLC A
9518 INC H Point HL at the third pixel row of the conveyor tile
9519 INC H
951A LD C,(HL) Copy this pixel row to C
951B RRC C Rotate it right twice
951D RRC C
951F LD (DE),A Update the first and third pixel rows of every conveyor tile in the screen buffer at 7000
9520 LD (HL),C
9521 INC L
9522 INC E
9523 DJNZ $951F
9525 RET
The conveyor is moving right.
9526 LD A,(HL) Copy the first pixel row of the conveyor tile to A
9527 RRC A Rotate it right twice
9529 RRC A
952B INC H Point HL at the third pixel row of the conveyor tile
952C INC H
952D LD C,(HL) Copy this pixel row to C
952E RLC C Rotate it left twice
9530 RLC C
9532 JR $951F Jump back to update the first and third pixel rows of every conveyor tile
Prev: 94D2 Up: Map Next: 9534