mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-24 23:25:28 +00:00
ootw: laser: start making movement code generic
This commit is contained in:
parent
33738a7cc9
commit
57ff1da4e6
62
ootw/laser.s
62
ootw/laser.s
@ -35,7 +35,7 @@ laser_direction:
|
|||||||
laser0_direction: .byte $0
|
laser0_direction: .byte $0
|
||||||
laser1_direction: .byte $0
|
laser1_direction: .byte $0
|
||||||
|
|
||||||
laser_cout:
|
laser_count:
|
||||||
laser0_count: .byte $0
|
laser0_count: .byte $0
|
||||||
laser1_count: .byte $0
|
laser1_count: .byte $0
|
||||||
|
|
||||||
@ -169,20 +169,23 @@ done_draw_laser:
|
|||||||
; move laser
|
; move laser
|
||||||
;===================
|
;===================
|
||||||
move_laser:
|
move_laser:
|
||||||
lda laser0_out
|
ldx #0
|
||||||
|
|
||||||
|
move_laser_loop:
|
||||||
|
lda laser_out,X
|
||||||
beq done_move_laser
|
beq done_move_laser
|
||||||
|
|
||||||
; slow down laser
|
; slow down laser
|
||||||
lda laser0_count
|
lda laser_count,X
|
||||||
and #$3
|
and #$3
|
||||||
bne no_move_laser
|
bne no_move_laser
|
||||||
|
|
||||||
lda laser0_direction
|
lda laser_direction,X
|
||||||
bne move_laser_right
|
bne move_laser_right
|
||||||
|
|
||||||
move_laser_left:
|
move_laser_left:
|
||||||
|
|
||||||
lda laser0_count
|
lda laser_count,X
|
||||||
cmp #4
|
cmp #4
|
||||||
bcc still_starting_left
|
bcc still_starting_left
|
||||||
cmp #8
|
cmp #8
|
||||||
@ -191,72 +194,72 @@ move_laser_left:
|
|||||||
continue_shooting_left:
|
continue_shooting_left:
|
||||||
still_shooting_left:
|
still_shooting_left:
|
||||||
|
|
||||||
lda laser0_end
|
lda laser_end,X
|
||||||
sec
|
sec
|
||||||
sbc #10
|
sbc #10
|
||||||
sta laser0_end
|
sta laser_end,X
|
||||||
|
|
||||||
still_starting_left:
|
still_starting_left:
|
||||||
|
|
||||||
lda laser0_start
|
lda laser_start,X
|
||||||
sec
|
sec
|
||||||
sbc #10
|
sbc #10
|
||||||
sta laser0_start
|
sta laser_start,X
|
||||||
|
|
||||||
laser_edge_detect_left:
|
laser_edge_detect_left:
|
||||||
|
|
||||||
lda laser0_end
|
lda laser_end,X
|
||||||
cmp LEFT_SHOOT_LIMIT
|
cmp LEFT_SHOOT_LIMIT
|
||||||
bmi disable_laser_left
|
bmi disable_laser_left
|
||||||
|
|
||||||
lda laser0_start
|
lda laser_start,X
|
||||||
cmp LEFT_SHOOT_LIMIT
|
cmp LEFT_SHOOT_LIMIT
|
||||||
bpl no_move_laser
|
bpl no_move_laser
|
||||||
|
|
||||||
lda LEFT_SHOOT_LIMIT
|
lda LEFT_SHOOT_LIMIT
|
||||||
sta laser0_start
|
sta laser_start,X
|
||||||
|
|
||||||
jmp no_move_laser
|
jmp no_move_laser
|
||||||
|
|
||||||
|
|
||||||
move_laser_right:
|
move_laser_right:
|
||||||
|
|
||||||
lda laser0_count
|
lda laser_count,X
|
||||||
cmp #4
|
cmp #4
|
||||||
bcc still_starting_right
|
bcc still_starting_right
|
||||||
cmp #8
|
cmp #8
|
||||||
bcc still_shooting_right
|
bcc still_shooting_right
|
||||||
|
|
||||||
continue_shooting_right:
|
continue_shooting_right:
|
||||||
lda laser0_start
|
lda laser_start,X
|
||||||
clc
|
clc
|
||||||
adc #10
|
adc #10
|
||||||
sta laser0_start
|
sta laser_start,X
|
||||||
|
|
||||||
still_shooting_right:
|
still_shooting_right:
|
||||||
lda laser0_end
|
lda laser_end,X
|
||||||
clc
|
clc
|
||||||
adc #10
|
adc #10
|
||||||
sta laser0_end
|
sta laser_end,X
|
||||||
|
|
||||||
still_starting_right:
|
still_starting_right:
|
||||||
|
|
||||||
laser_edge_detect_right:
|
laser_edge_detect_right:
|
||||||
|
|
||||||
; detect if totally off screen
|
; detect if totally off screen
|
||||||
lda laser0_start
|
lda laser_start,X
|
||||||
cmp RIGHT_SHOOT_LIMIT
|
cmp RIGHT_SHOOT_LIMIT
|
||||||
bcs disable_laser_right
|
bcs disable_laser_right
|
||||||
|
|
||||||
lda laser0_end
|
lda laser_end,X
|
||||||
cmp RIGHT_SHOOT_LIMIT
|
cmp RIGHT_SHOOT_LIMIT
|
||||||
bcc no_move_laser
|
bcc no_move_laser
|
||||||
|
|
||||||
lda RIGHT_SHOOT_LIMIT
|
lda RIGHT_SHOOT_LIMIT
|
||||||
sta laser0_end
|
sta laser_end,X
|
||||||
|
|
||||||
no_move_laser:
|
no_move_laser:
|
||||||
inc laser0_count
|
inc laser_count,X
|
||||||
|
|
||||||
done_move_laser:
|
done_move_laser:
|
||||||
|
|
||||||
@ -281,12 +284,15 @@ disable_laser_right:
|
|||||||
; hit something, common
|
; hit something, common
|
||||||
;======================
|
;======================
|
||||||
hit_something_common:
|
hit_something_common:
|
||||||
|
pha
|
||||||
|
|
||||||
; disable laser
|
; disable laser
|
||||||
ldx #0
|
lda #0
|
||||||
stx laser0_out
|
sta laser_out,X
|
||||||
|
|
||||||
tax
|
pla
|
||||||
|
|
||||||
|
tay
|
||||||
and #$f0
|
and #$f0
|
||||||
|
|
||||||
cmp #TARGET_ALIEN
|
cmp #TARGET_ALIEN
|
||||||
@ -301,15 +307,15 @@ hit_something_common:
|
|||||||
|
|
||||||
laser_hit_alien:
|
laser_hit_alien:
|
||||||
|
|
||||||
txa
|
tya
|
||||||
and #$f
|
and #$f
|
||||||
tax
|
tay
|
||||||
|
|
||||||
lda #A_DISINTEGRATING
|
lda #A_DISINTEGRATING
|
||||||
sta alien_state,X
|
sta alien_state,Y
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta alien_gait,X
|
sta alien_gait,Y
|
||||||
|
|
||||||
jmp done_hit_something
|
jmp done_hit_something
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user