diff --git a/gamemanager.s b/gamemanager.s index fbfee23..3fb8dd6 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -66,9 +66,15 @@ gameplayLoopKbd: gameplayLoopAngle: ; Update aim angle if needed lda angleDeltaRequested - beq gameplayLoopFire + beq gameplayLoopPower jsr changeAngle +gameplayLoopPower: + ; Update power if needed + lda powerDeltaRequested + beq gameplayLoopFire + jsr changePower + gameplayLoopFire: lda fireRequested beq gameplayLoopProjectiles @@ -171,6 +177,23 @@ changeAngle: rts +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; changePower +; +; Handles changing a player's power +; +changePower: + ldy currentPlayer + tax + jsr playerDeltaPower + + ldy currentPlayer + jsr renderPlayerHeader + + stz powerDeltaRequested + rts + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; fire ; @@ -191,6 +214,8 @@ mapScrollRequested: .word $FFFF angleDeltaRequested: .word $0000 +powerDeltaRequested: + .word $0000 fireRequested: .word $0000 turnRequested: diff --git a/gscats.2mg b/gscats.2mg index 42c85f5..75945a2 100644 Binary files a/gscats.2mg and b/gscats.2mg differ diff --git a/input.s b/input.s index 0d8b40c..61e8e47 100644 --- a/input.s +++ b/input.s @@ -28,6 +28,10 @@ kbdScan: beq kbdScanA cmp #('z' + $80) beq kbdScanZ + cmp #('s' + $80) + beq kbdScanS + cmp #('x' + $80) + beq kbdScanX cmp #(' ' + $80) beq kbdScanSpace cmp #(27 + $80) @@ -76,6 +80,18 @@ kbdScanZ: sta angleDeltaRequested rts +kbdScanS: + BITS16 + lda #1 + sta powerDeltaRequested + rts + +kbdScanX: + BITS16 + lda #-1 + sta powerDeltaRequested + rts + kbdScanSpace: BITS16 lda #1 diff --git a/player.s b/player.s index dcc55ed..c7c6f80 100644 --- a/player.s +++ b/player.s @@ -100,6 +100,37 @@ playerDeltaAngleClampHigh: bra playerDeltaAngleStore +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; playerDeltaPower +; +; Y = Player index +; X = Delta +; +playerDeltaPower: + SAVE_AXY + PLAYERPTR_Y + + txa + clc + adc playerData+PD_POWER,y + beq playerDeltaPowerClampLow + cmp #15 + bpl playerDeltaPowerClampHigh + +playerDeltaPowerStore: + sta playerData+PD_POWER,y + RESTORE_AXY + rts + +playerDeltaPowerClampLow: + lda #1 + bra playerDeltaPowerStore + +playerDeltaPowerClampHigh: + lda #15 + bra playerDeltaPowerStore + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; playerFire ;