Prev: 8D21 Up: Map Next: 8DD7
8D50: Create "laser fence" or meteor
Used by the routine at main_loop.
create_laser_fence_or_meteor 8D50 LD A,(frame_counter) Frame counter
8D53 AND $03 If not every 4th frame
8D55 RET NZ Then return
8D56 LD A,(status_flags) Is it chance stage?
8D59 BIT 3,A ...
8D5B RET NZ Then return
8D5C LD A,(laser_meteor_countdown) Is countdown zero?
8D5F OR A ...
8D60 JP Z,create_meteor_1 Then start another countdown
8D63 DEC A Else decrement it
8D64 LD (laser_meteor_countdown),A And save it
8D67 RET NZ If it's still not zero then return
8D68 CALL stage_data_addr Get stage data address in IY
8D6B RST $20 Random number
8D6C AND $E0 If any of 3 bits are set
8D6E JR NZ,create_meteor Then jump to create meteor
8D70 BIT 0,(IY+$07) ...
8D74 JR Z,create_meteor ...
8D76 LD HL,other_flags If laser fence flag is set
8D79 BIT 4,(HL) ...
8D7B JR NZ,create_meteor Then jump to create meteor
Allocate laser fence
8D7D SET 4,(HL)
8D7F SET 3,(HL)
8D81 RST $28 Allocate sprite
8D82 LD (IX+$00),$15 Set type to laser fence end 1
8D86 LD (IX+$01),$25 Set polar y
8D8A LD (IX+$0B),$0C Set color
8D8E RST $20 Random number
8D8F AND $3F 0-63
8D91 LD (IX+$02),A Set polar x
8D94 LD (laser_fence_1_x),A Store polar x
8D97 PUSH AF Save polar x
8D98 RST $30 Load sprite pattern
8D99 RST $28 Allocate sprite
8D9A LD (IX+$00),$16 Set type to laser fence end 2
8D9E LD (IX+$01),$25 Set polar y
8DA2 LD (IX+$0B),$0C Set color
8DA6 POP AF Restore polar x
8DA7 PUSH AF Save polar x
8DA8 ADD A,$08 Polar x + 8
8DAA AND $3F Mod 64
8DAC LD (IX+$02),A Set polar x
8DAF LD (laser_fence_2_x),A Store polar x
8DB2 RST $30 Load sprite pattern
8DB3 RST $28 Allocate sprite
8DB4 LD (IX+$00),$17 Set type to laser fence center
8DB8 LD (IX+$01),$25 Set polar y
8DBC LD (IX+$0B),$0F Set color
8DC0 LD (IX+$03),$01 Set velocity
8DC4 POP AF Restore polar x
8DC5 ADD A,$04 Polar x + 4
8DC7 AND $3F Mod 64
8DC9 LD (IX+$02),A Set polar x
8DCC RST $30 Load sprite pattern
8DCD LD A,(total_enemies) Total enemies
8DD0 ADD A,$03 Add 3
8DD2 LD (total_enemies),A Store again
8DD5 JR create_meteor_1 Jump to return
Prev: 8D21 Up: Map Next: 8DD7