Prev: D616 Up: Map Next: D771
D647: Routine at D647
Used by the routines at D4CC and Handler_SeaCreatures.
D647 LD DE,$A0EC DE=A0EC.
D64A LD HL,$A06C HL=Graphics_MaskSprite.
D64D LD BC,$0080 BC=0080.
D650 LDIR Copy 0080 bytes of data from Graphics_MaskSprite to A0EC.
D652 LD A,$10 Set INK: *IX+09.
D654 RST $10
D655 LD A,(IX+$09)
D658 RST $10
D659 LD HL,($5C36) HL=*CHARS.
D65C PUSH HL Stash HL on the stack.
D65D PUSH IY Stash IY on the stack.
D65F PUSH IX Stash IX on the stack.
D661 LD E,(IX+$06) DE=(*IX+06)*08.
D664 LD D,$00
D666 SLA E
D668 RL D
D66A SLA E
D66C RL D
D66E SLA E
D670 RL D
D672 ADD HL,DE HL+=DE.
D673 LD B,(IX+$02) B=*IX+02.
D676 INC B Increment B by one.
D677 LD C,$00 C=00.
D679 LD ($DB38),BC Write BC to *DB38.
D67D LD E,(IX+$07) E=*IX+07.
D680 LD D,(IX+$08) D=*IX+08.
D683 LD A,D A=D.
D684 INC A Increment A by one.
D685 SLA A Shift A left three positions (with carry).
D687 SLA A
D689 SLA A
D68B LD C,A C=A.
D68C LD B,$00 B=00.
D68E LD IY,$A0F4 IY=A0F4.
D692 ADD IY,BC IY+=BC.
D694 LD C,E C=E.
D695 SLA C Shift C left three positions (with carry).
D697 SLA C
D699 SLA C
D69B LD B,$00 B=00.
D69D LD ($DB36),BC Write BC to *DB36.
D6A1 LD IX,$A0F4 IX=A0F4.
D6A5 PUSH HL Stash HL, DE and HL on the stack.
D6A6 PUSH DE
D6A7 PUSH HL
D6A8 LD B,$08 B=08.
D6AA PUSH BC Stash BC on the stack.
D6AB LD A,(HL) A=*HL.
D6AC LD BC,($DB38) BC=*DB38.
D6B0 SLA A Shift A left (with carry).
D6B2 RL C Rotate C left.
D6B4 SLA A Shift A left (with carry).
D6B6 RL C Rotate C left.
D6B8 DJNZ $D6B0 Decrease counter by one and loop back to D6B0 until counter is zero.
D6BA LD (IY+$00),A Write A to *IY+00.
D6BD LD A,C A=C.
D6BE OR (IX+$00) Merge the bits from *IX+00.
D6C1 LD (IX+$00),A Write A to *IX+00.
D6C4 INC HL Increment HL by one.
D6C5 INC IX Increment IX by one.
D6C7 INC IY Increment IY by one.
D6C9 POP BC Restore BC from the stack.
D6CA DJNZ $D6AA Decrease counter by one and loop back to D6AA until counter is zero.
D6CC POP HL Restore HL from the stack.
D6CD LD BC,($DB36) BC=*DB36.
D6D1 ADD HL,BC HL+=BC.
D6D2 DEC D Decrease D by one.
D6D3 JR NZ,$D6A7 Jump to D6A7 until D is zero.
D6D5 POP DE Restore DE from the stack.
D6D6 LD BC,$0008 BC=0008.
D6D9 ADD IX,BC IX+=BC.
D6DB ADD IY,BC IY+=BC.
D6DD POP HL Restore HL from the stack.
D6DE ADD HL,BC HL+=BC.
D6DF DEC E Decrease E by one.
D6E0 JR NZ,$D6A5 Jump to D6A5 until E is zero.
D6E2 LD HL,$9FEC HL=Graphics_GoldfishGamePlayer.
D6E5 POP IX Restore IX from the stack.
D6E7 LD A,(IX+$03) A=*IX+03.
D6EA INC A Increment A by one.
D6EB SLA A Shift A left (with carry).
D6ED LD E,A E=A.
D6EE LD D,$00 D=00.
D6F0 ADD HL,DE HL+=DE.
D6F1 LD ($5C36),HL Write HL to *CHARS.
D6F4 LD D,(IX+$08) D=*IX+08.
D6F7 LD E,(IX+$07) E=*IX+07.
D6FA LD A,(IX+$02) Jump to D702 if *IX+02 is equal to 03.
D6FD CP $03
D6FF JR Z,$D702
D701 INC E Increment E by one.
D702 INC D Increment D by one.
D703 LD A,D A=D.
D704 LD ($DB38),A Write A to *DB38.
D707 LD A,$03 Jump to D70F if 03 is not equal to *IX+03.
D709 CP (IX+$03)
D70C JR NZ,$D70F
D70E DEC D Decrease D by one.
D70F LD B,(IX+$01) B=*IX+01.
D712 LD C,(IX+$00) C=*IX+00.
D715 LD A,D A=D.
D716 LD A,$20 A=20.
D718 POP IY Restore IY from the stack.
D71A LD A,$20 A=20.
D71C PUSH AF Stash AF, DE and BC on the stack.
D71D PUSH DE
D71E PUSH BC
D71F LD D,A D=A.
D720 LD A,C Jump to D759 if C is higher than 22.
D721 CP $22
D723 JR NC,$D759
D725 PUSH DE Stash DE on the stack.
D726 CALL $0DD9 Call CL_SET.
D729 POP DE Restore DE and BC from the stack.
D72A POP BC
D72B PUSH BC Stash BC on the stack.
D72C LD A,D A=D.
D72D CALL GoldfishGame_PrintColourUDG Call GoldfishGame_PrintColourUDG.
D730 LD A,C A=C.
D731 CP $02 Compare A with 02.
D733 CALL Z,$D74C Call D74C zero.
D736 DEC C Decrease C by one.
D737 LD A,($DB38) D+=*DB38.
D73A ADD A,D
D73B LD D,A
D73C DEC E Decrease E by one.
D73D JR NZ,$D72D Jump to D72D until E is zero.
D73F POP BC Restore BC, DE and AF from the stack.
D740 POP DE
D741 POP AF
D742 DEC B Decrease B by one.
D743 INC A Increment A by one.
D744 DEC D Decrease D by one.
D745 JR NZ,$D71C Jump to D71C until D is zero.
D747 POP HL Restore HL from the stack.
D748 LD ($5C36),HL Write HL to *CHARS.
D74B RET Return.
D74C DEC E Decrease E by one.
D74D PUSH AF Stash AF on the stack.
D74E INC E Increment E by one.
D74F POP AF Restore AF from the stack.
D750 RET Z Return if E is zero.
D751 DEC E Decrease E by one.
D752 LD A,($DB38) D+=*DB38.
D755 ADD A,D
D756 LD D,A
D757 JR $D74C Jump to D74C.
D759 LD A,($DB38) D+=*DB38.
D75C ADD A,D
D75D LD D,A
D75E DEC E Decrease E by one.
D75F JP Z,$D76B Jump to D76B if E is zero.
D762 DEC C Decrease C by one.
D763 LD A,C Jump to D759 if C is higher than 22.
D764 CP $22
D766 JR NC,$D759
D768 JP $D725 Jump to D725.
D76B POP BC Restore BC, BC and BC from the stack.
D76C POP BC
D76D POP BC
D76E JP $D747 Jump to D747.
Prev: D616 Up: Map Next: D771