keen: fix up laser support
This commit is contained in:
parent
5dbbd383ff
commit
2fd7d7d96a
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue