sb: can now damage strongbad
This commit is contained in:
parent
447b21d420
commit
d64015eae6
|
@ -142,6 +142,7 @@ load_background:
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
sta STRONGBAD_DIR
|
sta STRONGBAD_DIR
|
||||||
|
sta BULLET_YDIR
|
||||||
|
|
||||||
lda #SHIELD_DOWN
|
lda #SHIELD_DOWN
|
||||||
sta SHIELD_POSITION
|
sta SHIELD_POSITION
|
||||||
|
@ -274,11 +275,28 @@ walls_out:
|
||||||
|
|
||||||
|
|
||||||
walls_good:
|
walls_good:
|
||||||
|
|
||||||
|
; move bullet Y
|
||||||
|
|
||||||
|
lda BULLET_YDIR
|
||||||
|
bne bullet_down
|
||||||
|
|
||||||
|
bullet_up:
|
||||||
|
dec BULLET_Y
|
||||||
|
jmp bullet_y_done
|
||||||
|
|
||||||
|
bullet_down:
|
||||||
inc BULLET_Y
|
inc BULLET_Y
|
||||||
|
bullet_y_done:
|
||||||
|
|
||||||
|
; see if off end
|
||||||
|
|
||||||
lda BULLET_Y
|
lda BULLET_Y
|
||||||
cmp #17
|
cmp #17
|
||||||
bcc bullet_still_good
|
bcc bullet_still_good
|
||||||
|
|
||||||
|
; reset to top
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta BULLET_Y
|
sta BULLET_Y
|
||||||
bullet_still_good:
|
bullet_still_good:
|
||||||
|
@ -291,7 +309,7 @@ bullet_still_good:
|
||||||
; check player
|
; check player
|
||||||
; if (bullet_x > player_x+2) &&
|
; if (bullet_x > player_x+2) &&
|
||||||
; (bullet_x<player_x+6)
|
; (bullet_x<player_x+6)
|
||||||
; if 2 < px - bx < 6 ???
|
; if 2 < bx - px < 6 ???
|
||||||
|
|
||||||
; 012345678
|
; 012345678
|
||||||
; b-p
|
; b-p
|
||||||
|
@ -320,6 +338,64 @@ check_player_collide:
|
||||||
|
|
||||||
skip_check_player_collide:
|
skip_check_player_collide:
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; check shield
|
||||||
|
|
||||||
|
; only if Y=15 and YDIR=1
|
||||||
|
check_shield_collide:
|
||||||
|
lda BULLET_Y
|
||||||
|
cmp #15
|
||||||
|
bne skip_check_shield_collide
|
||||||
|
|
||||||
|
lda SHIELD_POSITION
|
||||||
|
beq skip_check_shield_collide ; 0 means DOWN
|
||||||
|
|
||||||
|
; flip dir
|
||||||
|
|
||||||
|
; TODO: sound
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta BULLET_YDIR
|
||||||
|
|
||||||
|
skip_check_shield_collide:
|
||||||
|
|
||||||
|
;===========================
|
||||||
|
; check head
|
||||||
|
|
||||||
|
; only if Y=0 and YDIR=0
|
||||||
|
|
||||||
|
lda BULLET_Y
|
||||||
|
bne done_check_head
|
||||||
|
|
||||||
|
lda BULLET_YDIR
|
||||||
|
bne done_check_head
|
||||||
|
|
||||||
|
check_head_collide:
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda BULLET_X
|
||||||
|
sbc STRONGBAD_X
|
||||||
|
cmp #0
|
||||||
|
bcc skip_check_head_collide ; blt
|
||||||
|
cmp #6
|
||||||
|
bcs skip_check_head_collide
|
||||||
|
|
||||||
|
inc HEAD_DAMAGE ; increase head damage
|
||||||
|
lda HEAD_DAMAGE
|
||||||
|
cmp #5
|
||||||
|
bcc skip_check_head_collide
|
||||||
|
|
||||||
|
lda #0 ; reset
|
||||||
|
sta HEAD_DAMAGE
|
||||||
|
|
||||||
|
skip_check_head_collide:
|
||||||
|
lda #1
|
||||||
|
sta BULLET_YDIR ; bounce
|
||||||
|
|
||||||
|
|
||||||
|
done_check_head:
|
||||||
|
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; draw bullet
|
; draw bullet
|
||||||
;===========================
|
;===========================
|
||||||
|
@ -363,8 +439,8 @@ check_keypress:
|
||||||
|
|
||||||
and #$df ; convert lowercase to upper
|
and #$df ; convert lowercase to upper
|
||||||
|
|
||||||
cmp #'Q'
|
; cmp #'Q'
|
||||||
beq done_game
|
; beq done_game
|
||||||
|
|
||||||
cmp #27 ; escape
|
cmp #27 ; escape
|
||||||
beq done_game
|
beq done_game
|
||||||
|
@ -376,8 +452,8 @@ check_keypress:
|
||||||
cmp #'D' ; shield right
|
cmp #'D' ; shield right
|
||||||
beq shield_right
|
beq shield_right
|
||||||
|
|
||||||
cmp #'X'
|
; cmp #'X'
|
||||||
beq asplode_asplode
|
; beq asplode_asplode
|
||||||
|
|
||||||
cmp #8 ; left
|
cmp #8 ; left
|
||||||
beq move_left
|
beq move_left
|
||||||
|
@ -525,8 +601,8 @@ bullet_sprite_h:
|
||||||
.byte >bullet_done_sprite
|
.byte >bullet_done_sprite
|
||||||
|
|
||||||
bullet_sprite_y:
|
bullet_sprite_y:
|
||||||
.byte 90,94,98,102
|
.byte 83,88,93,98
|
||||||
.byte 106,110,114,118
|
.byte 103,108,113,118
|
||||||
.byte 123,128,133,138
|
.byte 123,128,133,138
|
||||||
.byte 143,148,153,158
|
.byte 143,148,153,158
|
||||||
.byte 163
|
.byte 163
|
||||||
|
|
|
@ -77,6 +77,7 @@ BULLET_Y = $72
|
||||||
HEAD_DAMAGE = $73
|
HEAD_DAMAGE = $73
|
||||||
BULLET_X_VEL = $74
|
BULLET_X_VEL = $74
|
||||||
BULLET_X_VEL_L = $75
|
BULLET_X_VEL_L = $75
|
||||||
|
BULLET_YDIR = $76
|
||||||
|
|
||||||
.if 0
|
.if 0
|
||||||
REGISTER_DUMP = $70
|
REGISTER_DUMP = $70
|
||||||
|
|
Loading…
Reference in New Issue