Mercurial > repos > blastem
changeset 944:10dd8c04cbbc
Handle up down buttons when in a menu
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 12 Mar 2016 14:24:43 -0800 |
parents | 05229aa23b00 |
children | 67f738bda7e2 |
files | menu.s68 |
diffstat | 1 files changed, 35 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/menu.s68 Wed Mar 09 21:46:31 2016 -0800 +++ b/menu.s68 Sat Mar 12 14:24:43 2016 -0800 @@ -185,6 +185,7 @@ mouse_buf rs.b 3 mouse_shown rs.b 1 last_mbuttons rs.b 1 +num_menu rs.b 1 int_6: @@ -245,37 +246,54 @@ ;d0 = SACBRLUD ;d1 = newly pressed buttons handle_pad_buttons: + tst.b num_menu.w + bne handle_buttons_menu moveq #16, d2 + + + btst #3, d1 + bne right + btst #2, d1 + bne left +buttons_no_leftright btst #1, d1 bne down btst #0, d1 bne up - btst #3, d1 - bne right - btst #2, d1 - bne left btst #7, d1 bne select_entry btst #5, d1 bne select_entry handle_done: rts +handle_buttons_menu + moveq #48, d2 + bra buttons_no_leftright down: + ;check if we are already at the bottom of the page moveq #1, d0 add.b (selected).w, d0 + tst.b num_menu.w + bne .menu move.w d0, d1 - add.w d0, d0 - add.w d0, d0 + add.w d1, d1 + add.w d1, d1 lea page_index.w, a2 - tst.l (0, a2, d0.w) + tst.l (0, a2, d1.w) beq handle_done - move.b d1, (selected).w +.do_move + move.b d0, (selected).w add.w d2, (sprite_list).w add.w d2, (sprite_list+8).w rts +.menu: + cmp.b num_menu.w, d0 + beq handle_done + bra .do_move + up: ;check if we are already at the top of the page move.b (selected).w, d0 @@ -576,11 +594,13 @@ ;d6 - initial Y position of menu draw_menu: moveq #0, d7 + moveq #0, d5 ;save menu pointer for second pass movea.l a5, a4 .lenloop tst.b (a5) beq .lendone + addq #1, d5 movea.l a5, a6 bsr strlen cmp.w d7, d0 @@ -592,6 +612,7 @@ .lendone addq #2, d7 + move.b d5, num_menu.w ;calculate X position move.w d7, d4 @@ -609,6 +630,12 @@ add.w d3, d4 add.w #32, d4 move.w d4, (sprite_list+6+8).w + ;update left arrow Y + move.w d6, d4 + lsl.w #4, d4 + add.w #256, d4 + move.w d4, (sprite_list).w + move.w d4, (sprite_list+8).w ;restore menu pointer movea.l a4, a5 .drawloop