Mercurial > repos > blastem
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) |