Prev: 40384 Up: Map Next: 40650
40492: Animate: Laser Beam
LaserBeam_Animate 40492 CALL 42902 Call 42902.
40495 LD D,(IX+1) Laser Y position.
40498 LD A,(IX+2) Laser X position: pulse #1.
40501 BIT 2,A Jump to LaserBeam_Animate_1 if bit 2 is reset.
40503 JR Z,LaserBeam_Animate_1
40505 LD L,A L=X position: pulse #1.
40506 LD A,8
40508 BIT 0,L
40510 JR Z,LaserBeam_Animate_0
40512 NEG
LaserBeam_Animate_0 40514 ADD A,L
40515 LD E,A
40516 LD H,D
40517 PUSH HL
40518 CALL ScreenAddress Call ScreenAddress.
40521 LD (IX+2),E
40524 LD A,255
40526 XOR (HL)
40527 LD (HL),A
40528 POP HL
40529 CALL AttributeAddress Call AttributeAddress.
40532 LD A,(IX+7)
40535 LD (HL),A
40536 LD A,(IX+6)
40539 SUB 8
40541 LD (IX+6),A
40544 AND %11111000 Keep only bits 3-7.
40546 JR NZ,LaserBeam_Animate_1
40548 RES 2,(IX+2)
LaserBeam_Animate_1 40552 EXX
40553 LD BC,796 BC=796.
40556 LD E,224 E=224.
40558 EXX
Loop counter (to process pulses #2, #3, #4).
40559 LD E,3 E=3.
40561 PUSH IX
40563 POP BC
40564 INC BC
40565 INC BC
40566 INC BC
LaserBeam_Animate_2 40567 LD A,(BC)
40568 XOR (IX+2)
40571 AND %11111000 Keep only bits 3-7.
40573 JR NZ,LaserBeam_Animate_3
40575 EXX
40576 LD A,B
40577 LD B,C
40578 LD C,E
40579 EXX
40580 INC BC
40581 DEC E
40582 JR NZ,LaserBeam_Animate_2
40584 LD (IX+0),0
40588 RET Return.
LaserBeam_Animate_3 40589 LD A,(BC)
40590 BIT 2,A
40592 JR NZ,LaserBeam_Animate_4
40594 DEC (IX+6)
40597 LD A,(IX+6)
40600 AND %00000111 Keep only bits 0-2.
40602 RET NZ
40603 LD A,(24128) A=24128.
40606 AND %00000011 Keep only bits 0-1.
40608 OR %00000100 Set bit 2.
40610 OR (IX+6)
40613 LD (IX+6),A
40616 LD A,(BC)
40617 OR %00000100 Set bit 2.
40619 LD (BC),A
40620 RET Return.
LaserBeam_Animate_4 40621 LD A,(BC)
40622 LD L,A
40623 LD A,8
40625 BIT 0,L
40627 JR Z,LaserBeam_Animate_5
40629 NEG
LaserBeam_Animate_5 40631 ADD A,L
40632 LD (BC),A
40633 LD H,D
40634 CALL ScreenAddress
40637 EXX
40638 LD A,B
40639 LD B,C
40640 LD C,E
40641 EXX
40642 XOR (HL)
40643 LD (HL),A
40644 INC BC
40645 DEC E
40646 JP NZ,LaserBeam_Animate_2
40649 RET Return.
Prev: 40384 Up: Map Next: 40650