tfv: have keyboard sorta working again

This commit is contained in:
Vince Weaver 2020-12-30 02:12:17 -05:00
parent c272bd33fe
commit 30f5605dc6
6 changed files with 90 additions and 37 deletions

View File

@ -1,4 +1,4 @@
LOAD_TITLE = 0
LOAD_TFV = 1
LOAD_FLYING = 2
LOAD_FLYING = 1
LOAD_WORLD = 2
LOAD_CREDITS = 3

View File

@ -64,6 +64,7 @@ draw_menu:
cmp #'D'
beq inc_menu
cmp #' '
cmp #13
beq menu_select
bne menu_nothing

View File

@ -29,6 +29,7 @@ AN3 = $C05E ; Annunciator 3
PADDLE_BUTTON0 = $C061
PADDLE_BUTTON1 = $C062
PADDL0 = $C064
PTRIG = $C070

View File

@ -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:

View File

@ -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

View File

@ -64,7 +64,7 @@ worldmap_keyboard:
jsr get_keypress ; get keypress
lda LASTKEY
; lda LASTKEY
worldmap_handle_q:
cmp #('Q') ; if quit, then return