keen: move some code around

This commit is contained in:
Vince Weaver 2024-04-04 16:21:19 -04:00
parent a165ba864b
commit a3fae54b94
3 changed files with 86 additions and 88 deletions

View File

@ -98,3 +98,66 @@ laser_sideways_sprite:
; .byte $3A,$cA,$3A,$cA
.byte $A3,$Ac,$A3,$Ac
;=======================
; laser enemies
;=======================
; see if laser hits any enemies
laser_enemies:
ldy #0
laser_enemies_loop:
; see if out
lda enemy_data+ENEMY_DATA_OUT,Y
beq done_laser_enemy
; get local tilemap co-ord
sec
lda enemy_data+ENEMY_DATA_TILEX,Y
sbc TILEMAP_X
sta TILE_TEMP
sec
lda enemy_data+ENEMY_DATA_TILEY,Y
sbc TILEMAP_Y
asl
asl
asl
asl
clc
adc TILE_TEMP
cmp LASER_TILE
bne done_laser_enemy
; hit something
hit_something:
lda #0
sta LASER_OUT
sta FRAMEL
; sta enemy_data+ENEMY_DATA_OUT,Y
lda #1
sta enemy_data+ENEMY_DATA_EXPLODING,Y
; jsr enemy_noise
; jsr inc_score_by_10
jmp exit_laser_enemy
done_laser_enemy:
tya
clc
adc #8
tay
cpy #(NUM_ENEMIES*8)
bne laser_enemies_loop
exit_laser_enemy:
rts

View File

@ -134,7 +134,7 @@ keen_loop:
jsr move_keen
; jsr move_enemies
jsr move_enemies
jsr move_laser

View File

@ -1,89 +1,42 @@
NUM_ENEMIES = 4
;=======================
; laser enemies
; move enemies
;=======================
; see if laser hits any enemies
laser_enemies:
move_enemies:
ldy #0
laser_enemies_loop:
; see if out
move_enemies_loop:
; only move if out
lda enemy_data+ENEMY_DATA_OUT,Y
beq done_laser_enemy
beq done_move_enemy
; get local tilemap co-ord
sec
lda enemy_data+ENEMY_DATA_TILEX,Y
sbc TILEMAP_X
; check if falling
sta TILE_TEMP
sec
lda enemy_data+ENEMY_DATA_TILEY,Y
sbc TILEMAP_Y
asl
asl
asl
asl
clc
adc TILE_TEMP
; check if moving right/left
cmp LASER_TILE
bne done_laser_enemy
; lda enemy_data+ENEMY_DATA_X,Y
; clc
; adc #1
; sta enemy_data+ENEMY_DATA_X,Y
; hit something
hit_something:
lda #0
sta LASER_OUT
sta FRAMEL
; cmp #36
; bcc done_move_enemy
; lda #0
; sta enemy_data+ENEMY_DATA_OUT,Y
lda #1
sta enemy_data+ENEMY_DATA_EXPLODING,Y
; jsr enemy_noise
done_move_enemy:
; jsr inc_score_by_10
jmp exit_laser_enemy
done_laser_enemy:
tya
clc
adc #8
tay
cpy #(NUM_ENEMIES*8)
bne laser_enemies_loop
exit_laser_enemy:
rts
;=======================
; move enemy
;=======================
; which one is in Y
; assume yorp for now
move_enemy:
lda enemy_data+ENEMY_DATA_X,Y
clc
adc #1
sta enemy_data+ENEMY_DATA_X,Y
cmp #36
bcc move_enemy_good
lda #0
sta enemy_data+ENEMY_DATA_OUT,Y
move_enemy_good:
iny
cpy #NUM_ENEMIES
bne move_enemies_loop
rts
@ -201,10 +154,6 @@ draw_enemy:
pla
tay
; also move enemy
jsr move_enemy
done_draw_enemy:
tya
@ -218,16 +167,6 @@ done_draw_enemy:
exit_draw_enemy:
rts
.if 0
enemy_sprites:
.word enemy_camera_sprite1
.word enemy_camera_sprite2
.word enemy_crawler_sprite1
.word enemy_crawler_sprite2
.word enemy_bot_sprite1
.word enemy_bot_sprite2
.endif
enemy_explosion_sprites:
.word enemy_explosion_sprite1
.word enemy_explosion_sprite1
@ -249,10 +188,6 @@ enemy_explosion_sprite3:
.byte $7A,$5A
.byte $A5,$A7
;ENEMY_CAMERA = 0
;ENEMY_CRAWLER = 4
;ENEMY_BOT = 8
ENEMY_YORP = 0
ENEMY_DATA_OUT = 0