keen: fix up laser support

This commit is contained in:
Vince Weaver 2024-04-06 00:49:24 -04:00
parent 5dbbd383ff
commit 2fd7d7d96a
5 changed files with 57 additions and 46 deletions

View File

@ -51,7 +51,7 @@ check_shooting_right:
draw_shooting_right: draw_shooting_right:
ldx #<keen_sprite_shooting_right ldx #<keen_sprite_shooting_right
lda #>keen_sprite_shooting_right lda #>keen_sprite_shooting_right
dec KEEN_SHOOTING ;dec KEEN_SHOOTING
jmp actually_draw_keen jmp actually_draw_keen
check_walking_right: check_walking_right:
@ -98,7 +98,7 @@ check_shooting_left:
draw_shooting_left: draw_shooting_left:
ldx #<keen_sprite_shooting_left ldx #<keen_sprite_shooting_left
lda #>keen_sprite_shooting_left lda #>keen_sprite_shooting_left
dec KEEN_SHOOTING ; dec KEEN_SHOOTING
jmp actually_draw_keen jmp actually_draw_keen
check_walking_left: check_walking_left:

View File

@ -10,34 +10,25 @@ move_laser:
lda LASER_OUT lda LASER_OUT
beq done_move_laser beq done_move_laser
lda LASER_X
lda LASER_TILEX
clc clc
adc LASER_DIRECTION adc LASER_DIRECTION
sta LASER_X sta LASER_TILEX
laser_check_tiles: laser_check_tiles:
; collision detect with tiles ; collision detect with tiles
; laser location is roughly
; (y/4)*16 + (x/2) - 2
lda LASER_Y
lsr
lsr
asl
asl
asl
asl
sta LASER_TILE
lda LASER_X
lsr
clc clc
adc LASER_TILE lda LASER_TILEY
sec adc #>big_tilemap
sbc #2 sta INH
sta LASER_TILE lda LASER_TILEX
sta INL
ldx LASER_TILE ldy #0
lda tilemap,X lda (INL),Y
cmp #ALLHARD_TILES cmp #ALLHARD_TILES
bcs destroy_laser bcs destroy_laser
@ -45,20 +36,24 @@ laser_check_tiles:
laser_check_enemies: laser_check_enemies:
; collision detect with enemies ; collision detect with enemies
jsr laser_enemies ; jsr laser_enemies
; detect if off screen ; detect if off screen
laser_check_right: laser_check_right:
lda LASER_X sec
cmp #31 lda LASER_TILEX
sbc TILEMAP_X
cmp #21
bcc laser_check_left ; not_too_far_right bcc laser_check_left ; not_too_far_right
bcs destroy_laser bcs destroy_laser
laser_check_left: laser_check_left:
cmp #6 sec
bcs done_move_laser lda LASER_TILEX
bcc destroy_laser sbc TILEMAP_X
bpl done_move_laser
; bmi destroy_laser
destroy_laser: destroy_laser:
lda #0 lda #0
@ -67,6 +62,7 @@ destroy_laser:
done_move_laser: done_move_laser:
rts rts
;==================== ;====================
; draw laser ; draw laser
;==================== ;====================
@ -76,13 +72,18 @@ draw_laser:
lda LASER_OUT lda LASER_OUT
beq done_draw_laser beq done_draw_laser
lda LASER_X sec
sta XPOS lda LASER_TILEY
lda LASER_Y sbc TILEMAP_Y
asl
asl
sta YPOS sta YPOS
; lda LASER_DIRECTION sec
lda LASER_TILEX
sbc TILEMAP_X
asl
sta XPOS
lda #<laser_sideways_sprite lda #<laser_sideways_sprite
sta INL sta INL

View File

@ -122,6 +122,7 @@ left_pressed:
lda #4 lda #4
sta KEEN_WALKING sta KEEN_WALKING
jmp done_left_pressed jmp done_left_pressed
left_facing_right: left_facing_right:
@ -138,6 +139,9 @@ left_not_walking:
sta KEEN_DIRECTION sta KEEN_DIRECTION
done_left_pressed: done_left_pressed:
lda #0
sta KEEN_SHOOTING
jmp done_keypress jmp done_keypress
check_right: check_right:
@ -176,6 +180,9 @@ right_not_walking:
done_right_pressed: done_right_pressed:
lda #0
sta KEEN_SHOOTING
jmp done_keypress jmp done_keypress
check_jump_right: check_jump_right:
@ -282,6 +289,9 @@ check_comma:
comma_pressed: comma_pressed:
; check if we have any shots left ; check if we have any shots left
lda #2 ; draw us shooting even if out of ammo
sta KEEN_SHOOTING
lda RAYGUNS lda RAYGUNS
beq done_comma beq done_comma
@ -295,34 +305,29 @@ comma_pressed:
ldy #SFX_GUNCLICK ldy #SFX_GUNCLICK
jsr play_sfx jsr play_sfx
; jsr laser_noise
lda KEEN_DIRECTION lda KEEN_DIRECTION
sta LASER_DIRECTION sta LASER_DIRECTION
lda #2
sta KEEN_SHOOTING
cmp #1 cmp #1
beq laser_right beq laser_right
laser_left: laser_left:
lda KEEN_X lda KEEN_TILEX
sec sec
sbc #1 sbc #1
jmp laser_assign jmp laser_assign
laser_right: laser_right:
lda KEEN_X lda KEEN_TILEX
clc clc
adc #2 adc #2
laser_assign: laser_assign:
sta LASER_X sta LASER_TILEX
lda KEEN_Y lda KEEN_TILEY
clc clc
adc #4 adc #1
sta LASER_Y sta LASER_TILEY
inc LASER_OUT inc LASER_OUT

View File

@ -42,6 +42,11 @@ keen_start:
sta KEEN_SHOOTING sta KEEN_SHOOTING
sta KEYCARDS sta KEYCARDS
; debug
; lda #9
; sta RAYGUNS
lda #4 lda #4
sta DRAW_PAGE sta DRAW_PAGE

View File

@ -102,8 +102,8 @@ KEEN_WALKING = $89
KEEN_JUMPING = $8A KEEN_JUMPING = $8A
LASER_OUT = $8B LASER_OUT = $8B
LASER_X = $8C LASER_TILEX = $8C
LASER_Y = $8D LASER_TILEY = $8D
LASER_DIRECTION = $8E LASER_DIRECTION = $8E
RAYGUNS = $8F RAYGUNS = $8F