sb: title keyboard navigation
This commit is contained in:
parent
cae06cd638
commit
4c462958ab
|
@ -1,7 +1,8 @@
|
|||
Title
|
||||
+ Fix menu options
|
||||
+ Keyboard controls
|
||||
+ Keyboard navigation
|
||||
+ Add cheat loading screen
|
||||
+ Only play opening sound once?
|
||||
|
||||
Duck:
|
||||
+ Lots
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue