Mercurial > repos > blastem
comparison menu.s68 @ 941:c96647630320
WIP buttons in menu ROM
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 07 Mar 2016 19:26:23 -0800 |
parents | 5e90fa4da2ec |
children | 74bb286e6174 |
comparison
equal
deleted
inserted
replaced
940:4f4f8385da8d | 941:c96647630320 |
---|---|
570 .nomiddlebot | 570 .nomiddlebot |
571 ;bottom right corner | 571 ;bottom right corner |
572 move.w #(botcorner | horiz_flip), (a0) | 572 move.w #(botcorner | horiz_flip), (a0) |
573 rts | 573 rts |
574 | 574 |
575 ;a5 - menu pointer | |
576 ;d6 - initial Y position of menu | |
577 draw_menu: | |
578 moveq #0, d7 | |
579 ;save menu pointer for second pass | |
580 movea.l a5, a4 | |
581 .lenloop | |
582 tst.b (a5) | |
583 beq .lendone | |
584 movea.l a5, a6 | |
585 bsr strlen | |
586 cmp.w d7, d0 | |
587 blo .nochange | |
588 move.w d0, d7 | |
589 .nochange | |
590 lea (1, a5, d0.w), a5 | |
591 bra .lenloop | |
592 .lendone | |
593 | |
594 addq #2, d7 | |
595 | |
596 ;calculate X position | |
597 move.w d7, d4 | |
598 lsr.w #1, d4 | |
599 moveq #20, d5 | |
600 sub.w d4, d5 | |
601 ;restore menu pointer | |
602 movea.l a4, a5 | |
603 .drawloop | |
604 tst.b (a5) | |
605 beq .done | |
606 ;x pos | |
607 move.w d5, d0 | |
608 ;y pos | |
609 move.w d6, d1 | |
610 ;width | |
611 move.w d7, d2 | |
612 bsr draw_button | |
613 addq #4, d6 | |
614 | |
615 movea.l a5, a6 | |
616 bsr strlen | |
617 movea.l a5, a6 | |
618 lea (1, a5, d0.w), a5 | |
619 ;TODO: draw string | |
620 bra .drawloop | |
621 .done | |
622 rts | |
623 | |
575 initial_regs: | 624 initial_regs: |
576 vdpreg MODE_2, $4 ;Mode 5, everything turned off | 625 vdpreg MODE_2, $4 ;Mode 5, everything turned off |
577 vdpreg MODE_1, $4 | 626 vdpreg MODE_1, $4 |
578 vdpreg SCROLL_A, $20 ;Scroll a table $8000 | 627 vdpreg SCROLL_A, $20 ;Scroll a table $8000 |
579 vdpreg SCROLL_B, $05 ;Scroll b table $A000 | 628 vdpreg SCROLL_B, $05 ;Scroll b table $A000 |
620 lea font(pc), a2 | 669 lea font(pc), a2 |
621 move.w #((buttonend-font)/4 - 1), d0 | 670 move.w #((buttonend-font)/4 - 1), d0 |
622 tloop: | 671 tloop: |
623 move.l (a2)+, (a0) | 672 move.l (a2)+, (a0) |
624 dbra d0, tloop | 673 dbra d0, tloop |
674 move.w #((fontfixedend-fontfixed)/4 - 1), d0 | |
675 dtloop: | |
676 move.l (a2)+, d1 | |
677 move.l d1, (a0) | |
678 move.l d1, (a0) | |
679 dbra d0, dtloop | |
625 | 680 |
626 | 681 |
627 ;setup SAT | 682 ;setup SAT |
628 ;;vdpaccess $C000, VDP_VRAM_WRITE | 683 ;;vdpaccess $C000, VDP_VRAM_WRITE |
629 | 684 |
634 | 689 |
635 ;right arrow | 690 ;right arrow |
636 move.l #$01080500, (a2)+ | 691 move.l #$01080500, (a2)+ |
637 move.l #$887F01AA, (a2)+ | 692 move.l #$887F01AA, (a2)+ |
638 move.b #2, num_sprites.w | 693 move.b #2, num_sprites.w |
694 | |
695 | |
639 | 696 |
640 menu_start: | 697 menu_start: |
641 lea page_pointers.w, a5 | 698 lea page_pointers.w, a5 |
642 lea dir_buffer, a6 | 699 lea dir_buffer, a6 |
643 move.l a6, (a5)+ | 700 move.l a6, (a5)+ |
666 ;bsr draw_button | 723 ;bsr draw_button |
667 | 724 |
668 move.l #$40860002, d3 | 725 move.l #$40860002, d3 |
669 move.l d3, (a1) | 726 move.l d3, (a1) |
670 move.l d3, base_cmd.w | 727 move.l d3, base_cmd.w |
728 | |
729 moveq #4, d6 | |
730 lea main_menu(pc), a5 | |
731 bsr draw_menu | |
732 bra gamepad_setup | |
733 | |
671 | 734 |
672 move.b #0, more_pages.w | 735 move.b #0, more_pages.w |
673 lea page_index.w, a3 | 736 lea page_index.w, a3 |
674 moveq #MAX_DISPLAY-1, d7 | 737 moveq #MAX_DISPLAY-1, d7 |
675 file_loop: | 738 file_loop: |
717 | 780 |
718 ;null terminate page_index | 781 ;null terminate page_index |
719 moveq #0, d0 | 782 moveq #0, d0 |
720 move.l d0, (a3) | 783 move.l d0, (a3) |
721 | 784 |
785 gamepad_setup: | |
722 ;setup gamepads | 786 ;setup gamepads |
723 move.b #$40, PAD1_CTRL | 787 move.b #$40, PAD1_CTRL |
724 move.b #$40, PAD2_CTRL | 788 move.b #$40, PAD2_CTRL |
725 | 789 |
726 move.w #$8174, (a1) ;enable display, vertical interrupts, DMA | 790 move.w #$8174, (a1) ;enable display, vertical interrupts, DMA |
779 bra .loop | 843 bra .loop |
780 .end | 844 .end |
781 move.w d2, x_pos.w | 845 move.w d2, x_pos.w |
782 move.l d3, base_cmd.w | 846 move.l d3, base_cmd.w |
783 rts | 847 rts |
848 | |
849 ;Prints a null-terminated string with a fixed width font | |
850 ;a6 - pointer to string | |
851 ;a0 - VDP data port | |
852 ;d0 - base tile attribute | |
853 ; | |
854 print_string_fixed: | |
855 .loop | |
856 moveq #0, d1 | |
857 move.b (a6)+, d1 | |
858 beq .end | |
859 add.w d0, d1 | |
860 move.w d1, (a0) | |
861 bra .loop | |
862 .end | |
863 rts | |
864 | |
865 ;Returns string length in d0 | |
866 ;a6 - pointer to string | |
867 strlen: | |
868 moveq #-1, d0 | |
869 .loop | |
870 addq #1, d0 | |
871 tst.b (a6)+ | |
872 bne .loop | |
873 rts | |
784 | 874 |
785 align 1 | 875 align 1 |
786 font: | 876 font: |
787 incbin font_interlace_variable.tiles | 877 incbin font_interlace_variable.tiles |
788 fontend | 878 fontend |
793 incbin cursor.tiles | 883 incbin cursor.tiles |
794 cursorend: | 884 cursorend: |
795 button: | 885 button: |
796 incbin button.tiles | 886 incbin button.tiles |
797 buttonend: | 887 buttonend: |
888 fontfixed: | |
889 incbin font.tiles | |
890 fontfixedend: | |
798 | 891 |
799 widths: | 892 widths: |
800 dc.b 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1 | 893 dc.b 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1 |
801 dc.b 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0 | 894 dc.b 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0 |
802 dc.b 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 | 895 dc.b 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 |
803 dc.b 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 | 896 dc.b 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 |
804 dc.b 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1 | 897 dc.b 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1 |
898 | |
899 main_menu: | |
900 dc.b "Load ROM", 0 | |
901 dc.b "Exit", 0 | |
902 dc.b 0 | |
903 | |
904 pause_menu: | |
905 dc.b "Resume", 0 | |
906 dc.b "Load ROM", 0 | |
907 dc.b "Save State", 0 | |
908 dc.b "Load State", 0 | |
909 dc.b 0 | |
805 | 910 |
806 rom_end: | 911 rom_end: |