comparison menu.s68 @ 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
comparison
equal deleted inserted replaced
943:05229aa23b00 944:10dd8c04cbbc
183 selected rs.b 1 183 selected rs.b 1
184 more_pages rs.b 1 184 more_pages rs.b 1
185 mouse_buf rs.b 3 185 mouse_buf rs.b 3
186 mouse_shown rs.b 1 186 mouse_shown rs.b 1
187 last_mbuttons rs.b 1 187 last_mbuttons rs.b 1
188 num_menu rs.b 1
188 189
189 190
190 int_6: 191 int_6:
191 dmasrc sprite_list, DMA_SRC_68K 192 dmasrc sprite_list, DMA_SRC_68K
192 ;set DMA length 193 ;set DMA length
243 244
244 245
245 ;d0 = SACBRLUD 246 ;d0 = SACBRLUD
246 ;d1 = newly pressed buttons 247 ;d1 = newly pressed buttons
247 handle_pad_buttons: 248 handle_pad_buttons:
249 tst.b num_menu.w
250 bne handle_buttons_menu
248 moveq #16, d2 251 moveq #16, d2
252
253
254 btst #3, d1
255 bne right
256 btst #2, d1
257 bne left
258 buttons_no_leftright
249 btst #1, d1 259 btst #1, d1
250 bne down 260 bne down
251 btst #0, d1 261 btst #0, d1
252 bne up 262 bne up
253 btst #3, d1
254 bne right
255 btst #2, d1
256 bne left
257 btst #7, d1 263 btst #7, d1
258 bne select_entry 264 bne select_entry
259 btst #5, d1 265 btst #5, d1
260 bne select_entry 266 bne select_entry
261 handle_done: 267 handle_done:
262 rts 268 rts
269 handle_buttons_menu
270 moveq #48, d2
271 bra buttons_no_leftright
263 272
264 down: 273 down:
274
265 ;check if we are already at the bottom of the page 275 ;check if we are already at the bottom of the page
266 moveq #1, d0 276 moveq #1, d0
267 add.b (selected).w, d0 277 add.b (selected).w, d0
278 tst.b num_menu.w
279 bne .menu
268 move.w d0, d1 280 move.w d0, d1
269 add.w d0, d0 281 add.w d1, d1
270 add.w d0, d0 282 add.w d1, d1
271 lea page_index.w, a2 283 lea page_index.w, a2
272 tst.l (0, a2, d0.w) 284 tst.l (0, a2, d1.w)
273 beq handle_done 285 beq handle_done
274 move.b d1, (selected).w 286 .do_move
287 move.b d0, (selected).w
275 288
276 add.w d2, (sprite_list).w 289 add.w d2, (sprite_list).w
277 add.w d2, (sprite_list+8).w 290 add.w d2, (sprite_list+8).w
278 rts 291 rts
292 .menu:
293 cmp.b num_menu.w, d0
294 beq handle_done
295 bra .do_move
296
279 up: 297 up:
280 ;check if we are already at the top of the page 298 ;check if we are already at the top of the page
281 move.b (selected).w, d0 299 move.b (selected).w, d0
282 beq handle_done 300 beq handle_done
283 subq #1, d0 301 subq #1, d0
574 592
575 ;a5 - menu pointer 593 ;a5 - menu pointer
576 ;d6 - initial Y position of menu 594 ;d6 - initial Y position of menu
577 draw_menu: 595 draw_menu:
578 moveq #0, d7 596 moveq #0, d7
597 moveq #0, d5
579 ;save menu pointer for second pass 598 ;save menu pointer for second pass
580 movea.l a5, a4 599 movea.l a5, a4
581 .lenloop 600 .lenloop
582 tst.b (a5) 601 tst.b (a5)
583 beq .lendone 602 beq .lendone
603 addq #1, d5
584 movea.l a5, a6 604 movea.l a5, a6
585 bsr strlen 605 bsr strlen
586 cmp.w d7, d0 606 cmp.w d7, d0
587 blo .nochange 607 blo .nochange
588 move.w d0, d7 608 move.w d0, d7
590 lea (1, a5, d0.w), a5 610 lea (1, a5, d0.w), a5
591 bra .lenloop 611 bra .lenloop
592 .lendone 612 .lendone
593 613
594 addq #2, d7 614 addq #2, d7
615 move.b d5, num_menu.w
595 616
596 ;calculate X position 617 ;calculate X position
597 move.w d7, d4 618 move.w d7, d4
598 lsr.w #1, d4 619 lsr.w #1, d4
599 moveq #20, d5 620 moveq #20, d5
607 move.w d7, d3 628 move.w d7, d3
608 lsl.w #3, d3 629 lsl.w #3, d3
609 add.w d3, d4 630 add.w d3, d4
610 add.w #32, d4 631 add.w #32, d4
611 move.w d4, (sprite_list+6+8).w 632 move.w d4, (sprite_list+6+8).w
633 ;update left arrow Y
634 move.w d6, d4
635 lsl.w #4, d4
636 add.w #256, d4
637 move.w d4, (sprite_list).w
638 move.w d4, (sprite_list+8).w
612 ;restore menu pointer 639 ;restore menu pointer
613 movea.l a4, a5 640 movea.l a4, a5
614 .drawloop 641 .drawloop
615 tst.b (a5) 642 tst.b (a5)
616 beq .done 643 beq .done