sb: title keyboard navigation

This commit is contained in:
Vince Weaver 2023-06-01 16:45:32 -04:00
parent cae06cd638
commit 4c462958ab
4 changed files with 87 additions and 36 deletions

View File

@ -1,7 +1,8 @@
Title
+ Fix menu options
+ Keyboard controls
+ Keyboard navigation
+ Add cheat loading screen
+ Only play opening sound once?
Duck:
+ Lots

View File

@ -104,8 +104,8 @@ czmg4ap_title.hgr: czmg4ap_title.png
####
title_sprites.inc: czmg4ap_title_sprites.png
$(HGR_SPRITE) -s -l empty_sprite czmg4ap_title_sprites.png 105 131 118 137 > title_sprites.inc
$(HGR_SPRITE) -s -l arrow_sprite czmg4ap_title_sprites.png 105 111 118 117 >> title_sprites.inc
$(HGR_SPRITE) -s -l empty_sprite czmg4ap_title_sprites.png 105 131 118 138 > title_sprites.inc
$(HGR_SPRITE) -s -l arrow_sprite czmg4ap_title_sprites.png 105 111 118 118 >> title_sprites.inc
$(HGR_SPRITE) -s -l purple_sprite czmg4ap_title_sprites.png 175 83 230 102 >> title_sprites.inc

View File

@ -128,7 +128,7 @@ load_title_image:
;==========================
; Play sound
;===========================
say_purple:
jsr play_purple
;==========================
@ -145,10 +145,16 @@ load_title_image:
sta SPRITE_Y
jsr hgr_draw_sprite
lda #0
sta MENU_ITEM
main_loop:
;==========================
; Draw arrow
;===========================
draw_arrow:
ldx MENU_ITEM
stx OLD_MENU_ITEM
lda #<arrow_sprite
sta INL
@ -156,7 +162,7 @@ load_title_image:
sta INH
lda #(105/7)
sta SPRITE_X
lda #111
lda arrow_y,X
sta SPRITE_Y
jsr hgr_draw_sprite
@ -166,19 +172,78 @@ wait_until_keypress:
bit KEYRESET ; clear the keyboard buffer
and #$7f
;=========================
; see if number pressed
cmp #'1'
bcc which_ok
cmp #'4'
bcs which_ok
bcc done_check_number ; blt
cmp #'7'
bcs done_check_number ; bge
jmp done
; was a number
which_ok:
jmp load_loop
done:
and #$f
sta MENU_ITEM
bne load_new_program
done_check_number:
cmp #' '
beq load_from_arrow
cmp #13
beq load_from_arrow
cmp #'P'
beq say_purple
cmp #8 ; left
beq arrow_up
cmp #$15
beq arrow_down ; right
cmp #$0B
beq arrow_up ; up
cmp #$0A
beq arrow_down ; down
done_arrow:
jmp wait_until_keypress
arrow_up:
lda MENU_ITEM
beq done_arrow
dec MENU_ITEM
jmp move_arrow
arrow_down:
lda MENU_ITEM
cmp #5 ; 0 indexed
bcs done_arrow
inc MENU_ITEM
move_arrow:
; erase arrow
ldx OLD_MENU_ITEM
lda #<empty_sprite
sta INL
lda #>empty_sprite
sta INH
lda #(105/7)
sta SPRITE_X
lda arrow_y,X
sta SPRITE_Y
jsr hgr_draw_sprite
jmp draw_arrow
load_from_arrow:
inc MENU_ITEM ; it's zero indexed
load_new_program:
lda MENU_ITEM
sta WHICH_LOAD
rts
@ -198,3 +263,7 @@ vid_top:
purple_data:
.incbin "sound/purple.btc.zx02"
; offsets of arrow
arrow_y:
.byte 111,121,131,141,151,161

View File

@ -45,31 +45,12 @@ SOUND_STATUS = $67
SOUND_DISABLED = $80
SOUND_IN_LC = $01 ; $01 sound effects in language card
SOUND_MOCKINGBOARD = $02 ; mockingboard detected
MENU_ITEM = $68
OLD_MENU_ITEM = $69
;WAITING = $62
;LETTERL = $63
;LETTERH = $64
;LETTERX = $65
;LETTERY = $66
;LETTERD = $67
;LETTER = $68
;BLARGH = $69
;FACTOR_I = $66
;FACTOR_F = $67
;DX_I = $68
;DX_F = $69
;SPACEX_I = $6A
;SPACEX_F = $6B
;CX_I = $6C
;CX_F = $6D
;DY_I = $6E
;DY_F = $6F
ZPOS = $78
;ZPOS = $78
REGISTER_DUMP = $70
A_FINE_TONE = $70