From 30f5605dc6bfe01cb9aa7acb5750a10816e66089 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 30 Dec 2020 02:12:17 -0500 Subject: [PATCH] tfv: have keyboard sorta working again --- tfv/common_defines.inc | 4 +- tfv/draw_menu.s | 1 + tfv/hardware.inc | 1 + tfv/keyboard.s | 87 +++++++++++++++++++++++++++++------------- tfv/tfv_flying.s | 32 ++++++++++++---- tfv/tfv_overworld.s | 2 +- 6 files changed, 90 insertions(+), 37 deletions(-) diff --git a/tfv/common_defines.inc b/tfv/common_defines.inc index 0a1a5c3d..f3bfd81f 100644 --- a/tfv/common_defines.inc +++ b/tfv/common_defines.inc @@ -1,4 +1,4 @@ LOAD_TITLE = 0 -LOAD_TFV = 1 -LOAD_FLYING = 2 +LOAD_FLYING = 1 +LOAD_WORLD = 2 LOAD_CREDITS = 3 diff --git a/tfv/draw_menu.s b/tfv/draw_menu.s index 3119ce1a..6ec05ed1 100644 --- a/tfv/draw_menu.s +++ b/tfv/draw_menu.s @@ -64,6 +64,7 @@ draw_menu: cmp #'D' beq inc_menu cmp #' ' + cmp #13 beq menu_select bne menu_nothing diff --git a/tfv/hardware.inc b/tfv/hardware.inc index 905b8dd8..1a03bcf1 100644 --- a/tfv/hardware.inc +++ b/tfv/hardware.inc @@ -29,6 +29,7 @@ AN3 = $C05E ; Annunciator 3 PADDLE_BUTTON0 = $C061 +PADDLE_BUTTON1 = $C062 PADDL0 = $C064 PTRIG = $C070 diff --git a/tfv/keyboard.s b/tfv/keyboard.s index 33a20163..699458a2 100644 --- a/tfv/keyboard.s +++ b/tfv/keyboard.s @@ -3,6 +3,15 @@ ; Get Keypress ;============================== ; returns 0 if nothing pressed + + ; maps joystick to wasd and ' ' and return + ; maps arrow keys to wasd + ; handles sound enable and joystick enable + + +JS_BUTTON0 = 1 +JS_BUTTON1 = 2 + get_keypress: ; first handle joystick @@ -14,21 +23,47 @@ get_keypress: and #$1 beq actually_handle_keypress -check_button: - lda PADDLE_BUTTON0 - bpl button_clear +check_button0: + lda PADDLE_BUTTON0 + bpl button0_clear - lda JS_BUTTON_STATE - bne js_check + lda JS_BUTTON_STATE + and #JS_BUTTON0 + bne check_button1 + + lda #JS_BUTTON0 ; only register on release + ora JS_BUTTON_STATE + sta JS_BUTTON_STATE + lda #' ' + jmp done_keypress + +button0_clear: + lda JS_BUTTON_STATE + and #(~JS_BUTTON0) + sta JS_BUTTON_STATE + jmp js_check + +check_button1: + lda PADDLE_BUTTON1 + bpl button1_clear + + lda JS_BUTTON_STATE + and #JS_BUTTON1 + bne js_check + + lda #JS_BUTTON1 ; only register on release + ora JS_BUTTON_STATE + sta JS_BUTTON_STATE + lda #13 + jmp done_keypress + +button1_clear: + lda JS_BUTTON_STATE + and #(~JS_BUTTON1) + sta JS_BUTTON_STATE +; jmp js_check - lda #1 ; only register on release - sta JS_BUTTON_STATE - lda #' ' - jmp done_keypress -button_clear: - lda #0 - sta JS_BUTTON_STATE js_check: jsr handle_joystick @@ -110,8 +145,8 @@ check_save: ; jmp done_keypress check_left: - cmp #'A' - beq left_pressed +; cmp #'A' +; beq left_pressed cmp #8 ; left key bne check_right left_pressed: @@ -119,8 +154,8 @@ left_pressed: jmp done_keypress check_right: - cmp #'D' - beq right_pressed +; cmp #'D' +; beq right_pressed cmp #$15 ; right key bne check_up right_pressed: @@ -128,8 +163,8 @@ right_pressed: jmp done_keypress check_up: - cmp #'W' - beq up_pressed +; cmp #'W' +; beq up_pressed cmp #$0B ; up key bne check_down up_pressed: @@ -137,8 +172,8 @@ up_pressed: jmp done_keypress check_down: - cmp #'S' - beq down_pressed +; cmp #'S' +; beq down_pressed cmp #$0A bne check_return down_pressed: @@ -146,13 +181,13 @@ down_pressed: jmp done_keypress check_return: - cmp #' ' - beq return_pressed - cmp #13 - bne no_keypress -return_pressed: +; cmp #' ' +; beq return_pressed +; cmp #13 +; bne done_keypress +;return_pressed: - lda #' ' +; lda #' ' jmp done_keypress no_keypress: diff --git a/tfv/tfv_flying.s b/tfv/tfv_flying.s index 86fa153a..d2ed71bf 100644 --- a/tfv/tfv_flying.s +++ b/tfv/tfv_flying.s @@ -78,8 +78,13 @@ flying_loop: flying_keyboard: jsr get_keypress ; get keypress ; 6 + bne key_was_pressed - lda LASTKEY ; 3 + jmp check_done + +key_was_pressed: + +; lda LASTKEY ; 3 ; cmp #('Q') ; if quit, then return ; bne skipskip @@ -103,6 +108,7 @@ flying_keyboard: jsr update_z_factor lda #0 sta SPLASH_COUNT + jmp check_done flying_check_down: cmp #('S') @@ -119,11 +125,13 @@ flying_check_down: inc SHIPY ; move ship down dec SPACEZ_I ; decrement height jsr update_z_factor - bcc flying_check_left + bcc done_flying_down splashy: lda #10 sta SPLASH_COUNT +done_flying_down: + jmp check_done flying_check_left: cmp #('A') @@ -139,14 +147,14 @@ flying_check_left: lda #$0 sta TURNING - clv - bvc flying_check_right + jmp check_done turn_left: lda #253 ; -3 sta TURNING dec ANGLE + jmp check_done flying_check_right: cmp #('D') @@ -160,14 +168,14 @@ flying_check_right: bpl turn_right lda #0 sta TURNING - clv - bvc check_speedup + jmp check_done turn_right: lda #3 sta TURNING inc ANGLE + jmp check_done check_speedup: cmp #('Z') @@ -178,8 +186,10 @@ check_speedup: ;========= lda #$8 cmp SPEED - beq check_speeddown + beq skip_speedup inc SPEED +skip_speedup: + jmp check_done check_speeddown: cmp #('X') @@ -190,8 +200,10 @@ check_speeddown: ;=========== lda SPEED - beq check_brake + beq skip_speeddown dec SPEED +skip_speeddown: + jmp check_done check_brake: cmp #(' '+128) @@ -202,6 +214,7 @@ check_brake: ;============ lda #$0 sta SPEED + jmp check_done check_land: cmp #13 @@ -260,6 +273,9 @@ landing_loop: bpl landing_loop +done_flying: + lda #LOAD_WORLD + sta WHICH_LOAD rts ; finish flying diff --git a/tfv/tfv_overworld.s b/tfv/tfv_overworld.s index d7fc18e7..c2a313e5 100644 --- a/tfv/tfv_overworld.s +++ b/tfv/tfv_overworld.s @@ -64,7 +64,7 @@ worldmap_keyboard: jsr get_keypress ; get keypress - lda LASTKEY +; lda LASTKEY worldmap_handle_q: cmp #('Q') ; if quit, then return