Prev: C27E Up: Map Next: C3BE
C2FD: Handle SCANNER - Moves down
Used by the routine at C6C2.
C2FD LD A,(IX+$11) If scanner is not moving down return
C300 CP $01
C302 RET NZ
C303 DEC (IX+$12) Decrement state change counter
C306 JP Z,$C313 Jump to chenge state if counter is 0
C309 LD A,(IX+$01) Increment y-position of scanner based on speed
C30C ADD A,(IX+$10)
C30F LD (IX+$01),A
C312 RET
Handle state change for SCANNER. This entry point is used by the routines at C213, C239 and C27E.
C313 LD (IX+$12),$07 Reset state change counter
C317 LD A,(IX+$00) Return if x-position bits2-0 is not 0
C31A AND $07
C31C OR A
C31D RET NZ
C31E RES 7,(IX+$09) Set graphic data bit to select animated graphic data
C322 LD (IX+$0F),$0B Set height of sprite
C326 LD A,(IX+$00) Set A0AF to the x-position
C329 LD ($A0AF),A
C32C LD A,(IX+$01) is y-position of scanner less than $18?
C32F CP $18
C331 JP C,$C397 Jump if so
C334 CP $A0 is y-position of scanner greater then $A0?
C336 JP NC,$C3A0 Jump if so
C339 LD ($A0B0),A Set A0B0 the y-position of scanner
C33C LD A,(IX+$02) Set A the direction of scanner
C33F CALL $A503 Computes into HL address position of scanner in tile type buffer
C342 INC HL Increment HL
C343 CALL $D06C Check if tile is wall
C346 JP Z,$C397 Jump if is a wall
C349 INC HL Increment HL
C34A CALL $D06C Check if tile is wall
C34D JP Z,$C397 Jump if is a wall
C350 LD DE,$0060 Point HL to the tile under the scanner
C353 ADD HL,DE
C354 CALL $D06C Check if tile is wall
C357 JP Z,$C3A0 Jump if is a wall
C35A DEC HL Decrement HL
C35B CALL $D06C Check if tile is wall
C35E JP Z,$C3A0 Jump if is a wall
C361 LD A,R Set A a pseudo random number between 0-3
C363 AND $03
C365 CP $00 is 0?
C367 JP Z,$C397 Jump to configure scanner to move down
C36A CP $01 is 1?
C36C JP Z,$C387 Jump to configure scanner to move left
C36F CP $02 is 2?
C371 JP Z,$C377 Jump to configure scanner to move right
C374 JP $C3A0 is 3? Jump to configure scanner to bump animation
scanner will move right
C377 LD (IX+$12),$08 Reset state change counter
C37B LD A,(IX+$11)
C37E LD (IX+$11),$00 Set moves horizontal
C382 LD (IX+$02),$01 Set direction right
C386 RET
scanner will move left
C387 LD (IX+$12),$08 Reset state change counter
C38B LD A,(IX+$11)
C38E LD (IX+$11),$00 Set moves horizontal
C392 LD (IX+$02),$00 Set direction left
C396 RET
scanner will move down
C397 LD (IX+$12),$07 Reset state change counter
C39B LD (IX+$11),$01 Scanner moves down
C39F RET
scanner will bump (animation)
C3A0 LD (IX+$02),$00 scanner direction to left
C3A4 LD (IX+$12),$06 Reset state change counter
C3A8 LD (IX+$0F),$10 Set height of sprite
C3AC LD (IX+$11),$02 Set scanner moving up
C3B0 LD HL,$8A5A Set address for scanner bump animation
C3B3 LD (IX+$04),L
C3B6 LD (IX+$05),H
C3B9 SET 7,(IX+$09) Set enemy configuration to get static graphic data
C3BD RET
Prev: C27E Up: Map Next: C3BE