Prev: D3A6 Up: Map Next: D460
D3AF: Handler: Sea Creature Animation
Used by the routines at D4CC and Handler_SeaCreatures.
Input
B Creature vertical co-ordinate
C Creature horizontal co-ordinate
D Creature vertical position offset in character block
E Creature horizontal position offset in character block
IX Creature data
Handler_SeaCreatureAnimation D3AF LD A,C A=C.
D3B0 SUB (IX+$0D) A-=*IX+0D.
D3B3 JR Z,Handler_SeaCreatureAnimation_0 Jump to Handler_SeaCreatureAnimation_0 if the result is zero.
D3B5 CP $FF Compare A with FF.
D3B7 PUSH AF Stash AF on the stack.
D3B8 CALL Z,Handler_SeaCreatureAnimation_4 Call Handler_SeaCreatureAnimation_4 if A was equal to FF on line D3B3.
D3BB POP AF Restore AF from the stack.
D3BC CALL NZ,Handler_SeaCreatureAnimation_6 Call Handler_SeaCreatureAnimation_6 if A was not equal to FF on line D3B3.
D3BF JR Handler_SeaCreatureAnimation_1 Jump to Handler_SeaCreatureAnimation_1.
Handler_SeaCreatureAnimation_0 D3C1 LD A,E Jump to Handler_SeaCreatureAnimation_1 if E is equal to *IX+0B.
D3C2 CP (IX+$0B)
D3C5 JR Z,Handler_SeaCreatureAnimation_1
D3C7 CP $03 Call Handler_SeaCreatureAnimation_6 if E is equal to 03.
D3C9 CALL Z,Handler_SeaCreatureAnimation_6
Handler_SeaCreatureAnimation_1 D3CC LD A,B A=B.
D3CD SUB (IX+$0E) A-=*IX+0E.
D3D0 JR Z,Handler_SeaCreatureAnimation_2 Jump to Handler_SeaCreatureAnimation_2 if the result is zero.
D3D2 CP $FF Compare A with FF.
D3D4 PUSH AF Stash AF on the stack.
D3D5 CALL Z,Handler_SeaCreatureAnimation_10 Call Handler_SeaCreatureAnimation_10 if A was equal to FF on line D3D2.
D3D8 POP AF Restore AF from the stack.
D3D9 CALL NZ,Handler_SeaCreatureAnimation_8 Call Handler_SeaCreatureAnimation_8 if A was not equal to FF on line D3D2.
D3DC JR Handler_SeaCreatureAnimation_3 Jump to Handler_SeaCreatureAnimation_3.
Handler_SeaCreatureAnimation_2 D3DE LD A,D Jump to Handler_SeaCreatureAnimation_3 if D is equal to *IX+0F.
D3DF CP (IX+$0F)
D3E2 JR Z,Handler_SeaCreatureAnimation_3
D3E4 CP $03 Call Handler_SeaCreatureAnimation_8 if D is equal to 03.
D3E6 CALL Z,Handler_SeaCreatureAnimation_8
Handler_SeaCreatureAnimation_3 D3E9 RET Return.
Handler_SeaCreatureAnimation_4 D3EA PUSH BC Stash BC and DE on the stack.
D3EB PUSH DE
D3EC LD C,(IX+$0D) C=*IX+0D.
D3EF LD B,(IX+$0E) B=*IX+0E.
D3F2 LD D,(IX+$08) D=*IX+08.
D3F5 LD E,$01 E=01.
D3F7 LD A,(IX+$03) Jump to Handler_SeaCreatureAnimation_5 if *IX+03 is equal to 03.
D3FA CP $03
D3FC JR Z,Handler_SeaCreatureAnimation_5
D3FE INC D Increment D by one.
Handler_SeaCreatureAnimation_5 D3FF CALL GoldfishGame_EraseSprite Call GoldfishGame_EraseSprite.
D402 POP DE Restore DE and BC from the stack.
D403 POP BC
D404 RET Return.
Handler_SeaCreatureAnimation_6 D405 PUSH BC Stash BC and DE on the stack.
D406 PUSH DE
D407 LD A,(IX+$0D) A=*IX+0D.
D40A LD C,(IX+$07) C=*IX+07.
D40D SUB C A-=C.
D40E LD C,A C=A.
D40F LD B,(IX+$0E) B=*IX+0E.
D412 LD D,(IX+$08) D=*IX+08.
D415 LD E,$01 E=01.
D417 LD A,(IX+$03) Jump to Handler_SeaCreatureAnimation_7 if *IX+03 is equal to 03.
D41A CP $03
D41C JR Z,Handler_SeaCreatureAnimation_7
D41E INC D Increment D by one.
Handler_SeaCreatureAnimation_7 D41F CALL GoldfishGame_EraseSprite Call GoldfishGame_EraseSprite.
D422 POP DE Restore DE and BC from the stack.
D423 POP BC
D424 RET Return.
Handler_SeaCreatureAnimation_8 D425 PUSH BC Stash BC and DE on the stack.
D426 PUSH DE
D427 LD A,(IX+$0E) A=*IX+0E.
D42A LD D,(IX+$08) D=*IX+08.
D42D SUB D A-=D.
D42E LD B,A B=A.
D42F LD E,(IX+$07) E=*IX+07.
D432 LD C,(IX+$0D) C=*IX+0D.
D435 LD D,$01 D=01.
D437 LD A,(IX+$02) Jump to Handler_SeaCreatureAnimation_9 if *IX+02 is equal to 03.
D43A CP $03
D43C JR Z,Handler_SeaCreatureAnimation_9
D43E INC E Increment E by one.
Handler_SeaCreatureAnimation_9 D43F CALL GoldfishGame_EraseSprite Call GoldfishGame_EraseSprite.
D442 POP DE Restore DE and BC from the stack.
D443 POP BC
D444 RET Return.
Handler_SeaCreatureAnimation_10 D445 PUSH BC Stash BC and DE on the stack.
D446 PUSH DE
D447 LD C,(IX+$0D) C=*IX+0D.
D44A LD B,(IX+$0E) B=*IX+0E.
D44D LD D,$01 D=01.
D44F LD E,(IX+$07) E=*IX+07.
D452 LD A,(IX+$02) Jump to Handler_SeaCreatureAnimation_11 if *IX+02 is equal to 03.
D455 CP $03
D457 JR Z,Handler_SeaCreatureAnimation_11
D459 INC E Increment E by one.
Handler_SeaCreatureAnimation_11 D45A CALL GoldfishGame_EraseSprite Call GoldfishGame_EraseSprite.
D45D POP DE Restore DE and BC from the stack.
D45E POP BC
D45F RET Return.
Prev: D3A6 Up: Map Next: D460