From f5437230e7588d81ccb0a873bbe3bc5d5ccb412d Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 16 Aug 2019 13:15:07 -0400 Subject: [PATCH] ootw: add last sprites and fix some keyboard handling --- ootw/empty.dsk | Bin 143360 -> 143360 bytes ootw/gun.s | 7 + ootw/keyboard.s | 47 ++++- ootw/ootw_graphics/sprites/physicist.inc | 211 ++++++++++++++--------- 4 files changed, 175 insertions(+), 90 deletions(-) diff --git a/ootw/empty.dsk b/ootw/empty.dsk index 023c538bda6f194be72d67d14bb926d825283c5e..b34eb5199d4f28583c3ea48dbade142d2d16eefb 100644 GIT binary patch delta 34 ocmZp8z|jCiTNrBunE3x~uM=Qw=3XqI%Gk~*%eb9Umg&C`0NCyd+yDRo delta 37 rcmZp8z|jCiTNrBum>3wg*9kB-b2ABYPiEx$*Ul)*xSdg!>Aw&F-_;7R diff --git a/ootw/gun.s b/ootw/gun.s index d88b1178..596dfa03 100644 --- a/ootw/gun.s +++ b/ootw/gun.s @@ -164,6 +164,13 @@ done_zap: lda PHYSICIST_Y clc adc #4 + + ldy PHYSICIST_STATE + cpy #P_CROUCH_SHOOTING + bne done_zap_ypos + adc #2 + +done_zap_ypos: sta YPOS ldy GUN_STATE diff --git a/ootw/keyboard.s b/ootw/keyboard.s index ecd3f986..801e6898 100644 --- a/ootw/keyboard.s +++ b/ootw/keyboard.s @@ -219,7 +219,12 @@ up: ;============================= ;============================= + lda PHYSICIST_STATE ; shoot if charging + cmp #P_CROUCH_SHOOTING + beq up_no_fire + inc GUN_FIRE +up_no_fire: lda ON_ELEVATOR beq up_not_elevator @@ -263,6 +268,13 @@ check_down: ;========================== down: + lda PHYSICIST_STATE ; shoot if charging + cmp #P_SHOOTING + beq down_no_fire + + inc GUN_FIRE +down_no_fire: + lda ON_ELEVATOR beq down_not_elevator @@ -297,7 +309,7 @@ charge_gun: lda GUN_STATE beq not_already_firing - inc GUN_FIRE + inc GUN_FIRE ; if charging, fire jmp done_keypress @@ -305,8 +317,15 @@ not_already_firing: inc GUN_STATE - lda #P_SHOOTING - sta PHYSICIST_STATE + lda PHYSICIST_STATE + and #STATE_CROUCHING + bne crouch_charge + ldy #P_CROUCH_SHOOTING + bne crouch_charge_go ; bra +crouch_charge: + ldy #P_SHOOTING +crouch_charge_go: + sty PHYSICIST_STATE jmp shoot @@ -314,8 +333,8 @@ not_already_firing: check_space: cmp #' ' beq space - cmp #$15 ; ascii 21=?? - bne unknown +; cmp #$15 ; ascii 21=?? + jmp unknown ;====================== ; Kick or shoot @@ -324,16 +343,30 @@ space: lda HAVE_GUN beq kick - inc GUN_FIRE + ; shoot pressed + + inc GUN_FIRE ; if charging, shoot shoot: - lda PHYSICIST_STATE + lda PHYSICIST_STATE ; if in stance, then shoot cmp #P_SHOOTING + beq in_position + cmp #P_CROUCH_SHOOTING bne no_stance +in_position: lda #1 sta LASER_OUT + jmp done_keypress no_stance: + and #STATE_CROUCHING + beq stand_stance + +crouch_stance: + lda #P_CROUCH_SHOOTING + jmp change_state_clear_gait + +stand_stance: lda #P_SHOOTING jmp change_state_clear_gait diff --git a/ootw/ootw_graphics/sprites/physicist.inc b/ootw/ootw_graphics/sprites/physicist.inc index 15e82515..08193030 100644 --- a/ootw/ootw_graphics/sprites/physicist.inc +++ b/ootw/ootw_graphics/sprites/physicist.inc @@ -5,8 +5,6 @@ ; rather than cheating and just mirror-flipping it ; TODO: -; crouch-kick -; crouch-shoot ; zapped by laser @@ -596,15 +594,15 @@ physicist_spike_sprite: ;===================== crouch_shooting: - .byte 3,8 - .byte $aa,$aa,$aa - .byte $aa,$aa,$aa - .byte $9a,$9a,$aa - .byte $bb,$99,$aa - .byte $aa,$0b,$0a - .byte $aa,$bb,$00 - .byte $ba,$4b,$aa - .byte $54,$f4,$f4 + .byte 5,8 + .byte $AA,$AA,$aa,$aa,$aa + .byte $AA,$AA,$aa,$aa,$aa + .byte $AA,$AA,$9a,$9a,$aa + .byte $AA,$AA,$bb,$99,$aa + .byte $0A,$0A,$aa,$0b,$0a + .byte $AA,$A0,$ba,$bb,$00 + .byte $AA,$AA,$4a,$4b,$aa + .byte $AA,$AA,$54,$f4,$f4 ;===================== ;===================== @@ -613,15 +611,15 @@ crouch_shooting: ;===================== crouch_kicking: - .byte 3,8 - .byte $aa,$aa,$aa - .byte $aa,$aa,$aa - .byte $9a,$9a,$aa - .byte $bb,$99,$aa - .byte $aa,$0b,$0a - .byte $aa,$bb,$00 - .byte $ba,$4b,$aa - .byte $54,$f4,$f4 + .byte 5,8 + .byte $AA,$AA,$aa,$aa,$aa + .byte $AA,$AA,$aa,$aa,$aa + .byte $AA,$AA,$9a,$9a,$aa + .byte $AA,$AA,$bb,$99,$aa + .byte $AA,$AA,$aa,$0b,$0a + .byte $AA,$AA,$aa,$bb,$00 + .byte $AA,$AA,$4a,$bb,$a0 + .byte $5A,$5C,$A4,$f4,$f4 @@ -633,72 +631,119 @@ crouch_kicking: ;===================== disintegrate_progression: - .word disintegrate1 ; 00 - .word disintegrate2 ; 02 - .word disintegrate3 ; 04 - .word disintegrate4 ; 06 - .word disintegrate5 ; 08 - .word disintegrate5 ; 10 - .word disintegrate5 ; 12 - .word disintegrate5 ; 14 - .word disintegrate5 ; 16 + .word disintegrating_2 ; 0 + .word disintegrating_3 ; 1 + .word disintegrating_4 ; 2 + .word disintegrating_4 ; 3 + .word disintegrating_4 ; 4 + .word disintegrating_4 ; 5 + .word disintegrating_3 ; 6 + .word disintegrating_9 ; 7 + .word disintegrating_10 ; 8 + .word disintegrating_11 ; 9 + .word disintegrating_12 ; 10 + .word disintegrating_13 ; 11 + .word disintegrating_14 ; 12 + .word disintegrating_14 ; 13 -disintegrate1: - .byte 4,8 - .byte $9a,$9a,$aa,$aa - .byte $ab,$99,$aa,$aa - .byte $aa,$0b,$aa,$aa - .byte $aa,$bb,$aa,$aa - .byte $aa,$bb,$aa,$aa - .byte $aa,$44,$aa,$aa - .byte $aa,$a4,$4a,$aa - .byte $aa,$fa,$f4,$aa - - -disintegrate2: +disintegrating_2: .byte 5,8 .byte $aa,$aa,$aa,$aa,$aa - .byte $b9,$99,$aa,$aa,$aa - .byte $ab,$b9,$aa,$aa,$aa - .byte $aa,$b0,$aa,$aa,$aa - .byte $aa,$bb,$00,$aa,$aa - .byte $aa,$bb,$44,$4a,$aa - .byte $aa,$ab,$aa,$a4,$4a - .byte $aa,$aa,$aa,$fa,$f4 + .byte $ee,$fe,$fe,$ee,$aa + .byte $ee,$ff,$ff,$ee,$aa + .byte $aa,$ee,$ff,$ee,$aa + .byte $ae,$ef,$ff,$ee,$aa + .byte $aa,$ee,$ff,$ee,$aa + .byte $aa,$ee,$ff,$ee,$aa + .byte $ff,$fe,$ff,$ee,$aa + +disintegrating_3: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$fa,$fa,$aa,$aa + .byte $aa,$ff,$ff,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + .byte $aa,$af,$fa,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + .byte $aa,$aa,$ff,$aa,$aa + .byte $aa,$fa,$ff,$aa,$aa + +disintegrating_4: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$0a,$0a,$aa,$aa + .byte $aa,$00,$00,$aa,$aa + .byte $aa,$aa,$0a,$aa,$aa + .byte $aa,$a0,$0a,$aa,$aa + .byte $aa,$aa,$0a,$aa,$aa + .byte $aa,$aa,$00,$aa,$aa + .byte $aa,$0a,$00,$aa,$aa + +disintegrating_9: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $fa,$aa,$af,$aa,$aa + .byte $aa,$5a,$aa,$af,$aa + .byte $aa,$aa,$aa,$0a,$aa + .byte $af,$aa,$0a,$aa,$aa + .byte $aa,$aa,$aa,$fa,$aa + .byte $af,$aa,$aa,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + +disintegrating_10: + .byte 5,8 + .byte $fa,$aa,$af,$aa,$aa + .byte $aa,$5a,$aa,$aa,$fa + .byte $aa,$aa,$aa,$aa,$aa + .byte $fa,$aa,$aa,$aa,$a0 + .byte $aa,$aa,$aa,$0a,$aa + .byte $aa,$aa,$aa,$aa,$5a + .byte $fa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + +disintegrating_11: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + .byte $af,$aa,$aa,$aa,$af + .byte $aa,$aa,$aa,$aa,$aa + .byte $fa,$aa,$aa,$aa,$a0 + .byte $aa,$aa,$aa,$0a,$fa + .byte $aa,$aa,$aa,$aa,$aa + .byte $af,$aa,$fa,$aa,$aa + +disintegrating_12: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$fa,$aa,$aa + .byte $aa,$af,$aa,$aa,$fa + .byte $fa,$a5,$aa,$0a,$aa + .byte $aa,$aa,$aa,$aa,$a0 + .byte $fa,$aa,$fa,$aa,$aa + +disintegrating_13: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$af,$aa,$aa + .byte $aa,$4a,$aa,$0a,$a0 + .byte $fa,$aa,$5a,$aa,$af + +disintegrating_14: + .byte 5,8 + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $aa,$aa,$aa,$aa,$aa + .byte $fa,$5a,$5a,$0a,$fa -disintegrate3: - .byte 6,8 - .byte $aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa - .byte $9a,$9a,$aa,$aa,$aa,$aa - .byte $bb,$99,$aa,$aa,$aa,$aa - .byte $aa,$0b,$0a,$aa,$aa,$aa - .byte $aa,$bb,$00,$4a,$aa,$aa - .byte $aa,$bb,$a0,$44,$44,$fa - .byte $aa,$ab,$aa,$aa,$a4,$ff - -disintegrate4: - .byte 7,8 - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $9a,$9a,$aa,$aa,$aa,$aa,$aa - .byte $99,$bb,$00,$0a,$aa,$aa,$aa - .byte $aa,$aa,$bb,$00,$44,$4a,$fa - .byte $aa,$aa,$aa,$bb,$aa,$a4,$ff - - -disintegrate5: - .byte 8,8 - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa - .byte $99,$b9,$00,$b0,$00,$bb,$4a,$aa - .byte $a9,$ab,$aa,$aa,$bb,$b4,$44,$ff -