select menu: The menu can now scroll quickly
authorLukas Krickl <lukas@krickl.dev>
Sun, 31 Aug 2025 05:38:52 +0000 (07:38 +0200)
committerLukas Krickl <lukas@krickl.dev>
Sun, 31 Aug 2025 05:38:52 +0000 (07:38 +0200)
src/select_menu.s
src/wram.s

index 8db65affa9bdd9e358721cd5bf4960fe3c8083f5..9c6c32a1f95584ea9311d8aac5cd959419492129 100644 (file)
@@ -1,3 +1,5 @@
+#define SELECT_MENU_DELAY_FRAMES 10    
+       
        ; a select menu is any menu that allows the player to select
        ; a range of values
        ; writes current string to status line and requests an update
        ;               b: button pressed
 select_menu_update:
        push af
+
+       ; check if delay timer is active
+       ld a, [select_menu_delay] 
+       cp a, 0
+       jr z, @not_delay REL
+               dec a
+               ld [select_menu_delay], a
+               jp @no_select
+@not_delay:
+
        ; save table length
+       pop af
+       push af
        push bc
 
        cp a, 0
        jr z, @notleft REL
 
        ld b, BTNLEFT
-       input_just
+       input_held
        jr z, @notleft REL
+               ld a, SELECT_MENU_DELAY_FRAMES
+               ld [select_menu_delay], a
                pop bc
                pop af
                dec a
@@ -36,8 +52,10 @@ select_menu_update:
        jr z, @notright REL ; is a > b
 
        ld b, BTNRIGHT
-       input_just
+       input_held
        jr z, @notright REL
+               ld a, SELECT_MENU_DELAY_FRAMES
+               ld [select_menu_delay], a
                pop af
                inc a
                call select_menu_draw_status
@@ -45,7 +63,7 @@ select_menu_update:
                ret
 @notright:
 
-       
+@no_select:    
        ; TODO: A to confirm SELECT to assign to B 
        pop af
        ret
index 9ca174c196e0978c6771701f146d83b1bce6ff82..31dd475c631404f2d155c228e7a91912e4a814de 100644 (file)
@@ -77,6 +77,9 @@ redraw_shadow: .adv 2
 redraw_steps: .adv 1
 
 action_menu_cursor: .adv 1
+       
+       ; simple menu delay timer
+select_menu_delay: .adv 1
 
 ; dummy oam 
 ; same memory as empty_unit