comparison menu.s68 @ 970:e2d7067ea2d8

Got mouse working right in main and about menus
author Michael Pavone <pavone@retrodev.com>
date Thu, 21 Apr 2016 18:48:15 -0700
parents 750995b587a0
children fbd783ccbadb
comparison
equal deleted inserted replaced
969:0379ea319648 970:e2d7067ea2d8
180 page_stack rs.l 1 180 page_stack rs.l 1
181 page_pointers rs.l 1024 181 page_pointers rs.l 1024
182 mouse_sprite rs.l 1 182 mouse_sprite rs.l 1
183 menu_functions rs.l 1 183 menu_functions rs.l 1
184 mouse_x rs.w 1 184 mouse_x rs.w 1
185 selection_top rs.w 1
186 selection_bot rs.w 1
187 selection_mask rs.w 1
185 num_sprites rs.b 1 188 num_sprites rs.b 1
186 last_pad1 rs.b 1 189 last_pad1 rs.b 1
187 last_pad2 rs.b 1 190 last_pad2 rs.b 1
188 selected rs.b 1 191 selected rs.b 1
189 more_pages rs.b 1 192 more_pages rs.b 1
427 add.w d0, mouse_x.w 430 add.w d0, mouse_x.w
428 move.w mouse_x.w, d0 431 move.w mouse_x.w, d0
429 asr.w #1, d0 432 asr.w #1, d0
430 move.w d0, (6, a2) 433 move.w d0, (6, a2)
431 move.w (a2), d1 434 move.w (a2), d1
432 cmp.w #272, d1 435 cmp.w selection_top.w, d1
433 blo .done 436 blo .done
434 cmp.w #655, d1 437 cmp.w selection_bot.w, d1
435 bhi .done 438 bhi .done
439 tst.b num_menu.w
440 bne .handle_menu
441 tst.b num_slots.w
442 bne .handle_slots
436 and.w #$FFF0, d1 443 and.w #$FFF0, d1
437 subq #8, d1 444 subq #8, d1
438 move.w d1, (sprite_list).w 445 move.w d1, (sprite_list).w
439 move.w d1, (sprite_list+8).w 446 move.w d1, (sprite_list+8).w
440 447
441 sub.w #264, d1 448 sub.w #264, d1
442 lsr.w #4, d1 449 lsr.w #4, d1
443 move.b d1, selected.w 450 move.b d1, selected.w
451 bra .no_mouse_move
452 .handle_menu
453 ;TODO: FIXME
454 and.w #$FFF0, d1
455 moveq #0, d0
456 move.w d1, d0
457 sub.w selection_top.w, d0
458 divu.w #48, d0
459 swap d0
460 tst.w d0
461 beq .no_adjust
462
463 cmp.w #16, d0
464 bne .round_up
465 swap d0
466 sub.w #16, d1
467 bra .set_cursor_pos
468
469 .round_up
470 swap d0
471 addq #1, d0
472 add.w #16, d1
473 bra .set_cursor_pos
474
475 .no_adjust
476 swap d0
477 .set_cursor_pos
478 move.w d1, (sprite_list).w
479 move.w d1, (sprite_list+8).w
480
481 move.b d0, selected.w
482
483 bra .no_mouse_move
484 .handle_slots
485
444 .no_mouse_move 486 .no_mouse_move
445 btst #0, d4 487 btst #0, d4
446 bne select_entry 488 bne select_entry
447 .done 489 .done
448 rts 490 rts
636 moveq #0, d5 678 moveq #0, d5
637 ;select first item 679 ;select first item
638 move.b d7, selected.w 680 move.b d7, selected.w
639 ;save menu pointer for second pass 681 ;save menu pointer for second pass
640 movea.l a5, a4 682 movea.l a5, a4
683 ;adjust arrow mask
684 move.w #$FFE0, selection_mask.w
641 .lenloop 685 .lenloop
642 tst.b (a5) 686 tst.b (a5)
643 beq .lendone 687 beq .lendone
644 addq #1, d5 688 addq #1, d5
645 movea.l a5, a6 689 movea.l a5, a6
675 move.w d6, d4 719 move.w d6, d4
676 lsl.w #4, d4 720 lsl.w #4, d4
677 add.w #256, d4 721 add.w #256, d4
678 move.w d4, (sprite_list).w 722 move.w d4, (sprite_list).w
679 move.w d4, (sprite_list+8).w 723 move.w d4, (sprite_list+8).w
724 ;update mouse top limit
725 move.w d4, selection_top.w
680 ;restore menu pointer 726 ;restore menu pointer
681 movea.l a4, a5 727 movea.l a4, a5
682 .drawloop 728 .drawloop
683 tst.b (a5) 729 tst.b (a5)
684 beq .done 730 beq .done
707 bsr print_string_fixed 753 bsr print_string_fixed
708 754
709 addq #3, d6 755 addq #3, d6
710 bra .drawloop 756 bra .drawloop
711 .done 757 .done
758 ;update mouse bottom limit
759 lsl.w #4, d6
760 add.w #224, d6
761 move.w d6, selection_bot.w
712 rts 762 rts
713 763
714 clear_screen: 764 clear_screen:
715 ;clear name tables 765 ;clear name tables
716 vdpaccess $8000, VDP_VRAM_WRITE 766 vdpaccess $8000, VDP_VRAM_WRITE
850 render_page: 900 render_page:
851 bsr clear_screen 901 bsr clear_screen
852 902
853 ;clear menu state 903 ;clear menu state
854 move.b #0, num_menu.w 904 move.b #0, num_menu.w
905 move.w #272, selection_top.w
906 move.w #655, selection_bot.w
907 move.w #$FFF0, selection_mask.w
855 908
856 ;init scroll table 909 ;init scroll table
857 vdpaccess $0, VDP_VRAM_WRITE 910 vdpaccess $0, VDP_VRAM_WRITE
858 move.w #0, (a0) 911 move.w #0, (a0)
859 move.w #4, (a0) 912 move.w #4, (a0)