Mercurial > repos > blastem
comparison menu.s68 @ 945:67f738bda7e2
Working about menu
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 14 Mar 2016 09:39:27 -0700 |
parents | 10dd8c04cbbc |
children | 6b90ec50daf3 |
comparison
equal
deleted
inserted
replaced
944:10dd8c04cbbc | 945:67f738bda7e2 |
---|---|
142 | 142 |
143 ;Writes a normal VDP command to the control port | 143 ;Writes a normal VDP command to the control port |
144 ;\1 - VDP address | 144 ;\1 - VDP address |
145 ;\2 - Access type | 145 ;\2 - Access type |
146 vdpaccess macro | 146 vdpaccess macro |
147 ifeq NARG-2 | |
147 move.l #((\2) | (\1) << 16 & $3FFF0000 | (\1) >> 14 & 3), (a1) | 148 move.l #((\2) | (\1) << 16 & $3FFF0000 | (\1) >> 14 & 3), (a1) |
149 else | |
150 move.l #((\2) | (\1) << 16 & $3FFF0000 | (\1) >> 14 & 3), \3 | |
151 endif | |
148 endm | 152 endm |
149 | 153 |
150 ;Writes a DMA command to the control port | 154 ;Writes a DMA command to the control port |
151 ;\1 - Destination address | 155 ;\1 - Destination address |
152 ;\2 - Destination type | 156 ;\2 - Destination type |
167 menu_port equ $180000 | 171 menu_port equ $180000 |
168 | 172 |
169 MAX_DISPLAY equ 24 | 173 MAX_DISPLAY equ 24 |
170 | 174 |
171 rsset $FFFF8000 | 175 rsset $FFFF8000 |
172 x_pos rs.w 1 | 176 x_pos rs.w 1 |
173 base_cmd rs.l 1 | 177 base_cmd rs.l 1 |
174 sprite_list rs.l 160 | 178 sprite_list rs.l 160 |
175 page_index rs.l MAX_DISPLAY+1 | 179 page_index rs.l MAX_DISPLAY+1 |
176 page_stack rs.l 1 | 180 page_stack rs.l 1 |
177 page_pointers rs.l 1024 | 181 page_pointers rs.l 1024 |
178 mouse_sprite rs.l 1 | 182 mouse_sprite rs.l 1 |
179 mouse_x rs.w 1 | 183 menu_functions rs.l 1 |
180 num_sprites rs.b 1 | 184 mouse_x rs.w 1 |
181 last_pad1 rs.b 1 | 185 num_sprites rs.b 1 |
182 last_pad2 rs.b 1 | 186 last_pad1 rs.b 1 |
183 selected rs.b 1 | 187 last_pad2 rs.b 1 |
184 more_pages rs.b 1 | 188 selected rs.b 1 |
185 mouse_buf rs.b 3 | 189 more_pages rs.b 1 |
186 mouse_shown rs.b 1 | 190 mouse_buf rs.b 3 |
187 last_mbuttons rs.b 1 | 191 mouse_shown rs.b 1 |
188 num_menu rs.b 1 | 192 last_mbuttons rs.b 1 |
193 num_menu rs.b 1 | |
189 | 194 |
190 | 195 |
191 int_6: | 196 int_6: |
192 dmasrc sprite_list, DMA_SRC_68K | 197 dmasrc sprite_list, DMA_SRC_68K |
193 ;set DMA length | 198 ;set DMA length |
332 select_entry: | 337 select_entry: |
333 moveq #0, d0 | 338 moveq #0, d0 |
334 move.b (selected).w, d0 | 339 move.b (selected).w, d0 |
335 add.w d0, d0 | 340 add.w d0, d0 |
336 add.w d0, d0 | 341 add.w d0, d0 |
342 tst.b num_menu.w | |
343 bne .select_menu_button | |
337 lea page_index.w, a2 | 344 lea page_index.w, a2 |
338 move.l (0, a2, d0.w), a2 | 345 move.l (0, a2, d0.w), a2 |
339 tst.b (-1, a2) | 346 tst.b (-1, a2) |
340 bne enter_dir | 347 bne enter_dir |
341 ;regular file | 348 ;regular file |
342 lea menu_port+8, a3 | 349 lea menu_port+8, a3 |
343 move.l a2, (a3) | 350 move.l a2, (a3) |
344 rts | 351 rts |
352 .select_menu_button: | |
353 movea.l menu_functions.w, a2 | |
354 move.l (0, a2, d0.w), a2 | |
355 addq #6, a7 | |
356 jmp (a2) | |
345 enter_dir: | 357 enter_dir: |
346 lea menu_port+4, a3 | 358 lea menu_port+4, a3 |
347 move.l a2, (a3) | 359 move.l a2, (a3) |
348 .wait_complete | 360 .wait_complete |
349 tst.w (a3) | 361 tst.w (a3) |
593 ;a5 - menu pointer | 605 ;a5 - menu pointer |
594 ;d6 - initial Y position of menu | 606 ;d6 - initial Y position of menu |
595 draw_menu: | 607 draw_menu: |
596 moveq #0, d7 | 608 moveq #0, d7 |
597 moveq #0, d5 | 609 moveq #0, d5 |
610 ;select first item | |
611 move.b d7, selected.w | |
598 ;save menu pointer for second pass | 612 ;save menu pointer for second pass |
599 movea.l a5, a4 | 613 movea.l a5, a4 |
600 .lenloop | 614 .lenloop |
601 tst.b (a5) | 615 tst.b (a5) |
602 beq .lendone | 616 beq .lendone |
667 | 681 |
668 addq #3, d6 | 682 addq #3, d6 |
669 bra .drawloop | 683 bra .drawloop |
670 .done | 684 .done |
671 rts | 685 rts |
686 | |
687 clear_screen: | |
688 ;clear name tables | |
689 vdpaccess $8000, VDP_VRAM_WRITE | |
690 moveq #32, d0 | |
691 swap d0 | |
692 move.b #32, d0 | |
693 move.w #(64*64-1), d1 | |
694 ploop: | |
695 move.l d0, (a0) | |
696 dbra d1, ploop | |
697 rts | |
672 | 698 |
673 initial_regs: | 699 initial_regs: |
674 vdpreg MODE_2, $4 ;Mode 5, everything turned off | 700 vdpreg MODE_2, $4 ;Mode 5, everything turned off |
675 vdpreg MODE_1, $4 | 701 vdpreg MODE_1, $4 |
676 vdpreg SCROLL_A, $20 ;Scroll a table $8000 | 702 vdpreg SCROLL_A, $20 ;Scroll a table $8000 |
759 wait_complete: | 785 wait_complete: |
760 tst.w (a2) | 786 tst.w (a2) |
761 bne wait_complete | 787 bne wait_complete |
762 | 788 |
763 render_page: | 789 render_page: |
764 ;clear name tables | 790 |
765 vdpaccess $8000, VDP_VRAM_WRITE | 791 |
766 moveq #32, d0 | 792 show_main_menu: |
767 swap d0 | 793 bsr clear_screen |
768 move.b #32, d0 | |
769 move.w #(64*64-1), d1 | |
770 ploop: | |
771 move.l d0, (a0) | |
772 dbra d1, ploop | |
773 | 794 |
774 move.l #$40860002, d3 | 795 move.l #$40860002, d3 |
775 move.l d3, (a1) | 796 move.l d3, (a1) |
776 move.l d3, base_cmd.w | 797 move.l d3, base_cmd.w |
777 | 798 |
778 moveq #8, d6 | 799 moveq #8, d6 |
800 move.l #main_menu_func, menu_functions.w | |
779 lea main_menu(pc), a5 | 801 lea main_menu(pc), a5 |
780 bsr draw_menu | 802 bsr draw_menu |
781 bra gamepad_setup | 803 bra gamepad_setup |
782 | 804 |
805 | |
806 show_file_list: | |
783 ;init scroll table | 807 ;init scroll table |
784 vdpaccess $0, VDP_VRAM_WRITE | 808 vdpaccess $0, VDP_VRAM_WRITE |
785 move.w #0, (a0) | 809 move.w #0, (a0) |
786 move.w #4, (a0) | 810 move.w #4, (a0) |
787 | 811 |
845 | 869 |
846 | 870 |
847 wait_forever | 871 wait_forever |
848 stop #2500 | 872 stop #2500 |
849 bra wait_forever | 873 bra wait_forever |
874 | |
875 show_about: | |
876 bsr clear_screen | |
877 moveq #1, d7 | |
878 lea about_text(pc), a6 | |
879 ;base attribute | |
880 move.w #$006B, d0 | |
881 .loop | |
882 tst.b (a6) | |
883 beq .done | |
884 ;x pos | |
885 moveq #1, d1 | |
886 ;y pos | |
887 move.w d7, d2 | |
888 bsr print_string_fixed | |
889 addq #1, d7 | |
890 bra .loop | |
891 .done | |
892 moveq #8, d6 | |
893 move.l #about_menu_func, menu_functions.w | |
894 lea about_menu(pc), a5 | |
895 bsr draw_menu | |
896 .wait | |
897 stop #2500 | |
898 bra .wait | |
899 | |
900 exit: | |
901 ;TODO: implement me | |
902 bra exit | |
903 | |
904 about_text: | |
905 dc.b "BlastEm v0.4.0", 0 | |
906 dc.b "Copyright 2011-2016 Michael Pavone", 0 | |
907 dc.b " ", 0 | |
908 dc.b "BlastEm is a high performance, open", 0 | |
909 dc.b "source (GPLv3) Genesis/Megadrive", 0 | |
910 dc.b "emulator.",0 | |
911 dc.b 0 | |
912 | |
850 | 913 |
851 Newline: | 914 Newline: |
852 dc.b $A, 0 | 915 dc.b $A, 0 |
853 | 916 |
854 align 1 | 917 align 1 |
970 dc.b "Load ROM", 0 | 1033 dc.b "Load ROM", 0 |
971 dc.b "About", 0 | 1034 dc.b "About", 0 |
972 dc.b "Exit", 0 | 1035 dc.b "Exit", 0 |
973 dc.b 0 | 1036 dc.b 0 |
974 | 1037 |
1038 align 1 | |
1039 main_menu_func: | |
1040 dc.l show_file_list | |
1041 dc.l show_about | |
1042 dc.l exit | |
1043 | |
1044 about_menu: | |
1045 dc.b "Return", 0 | |
1046 dc.b 0 | |
1047 | |
1048 align 1 | |
1049 about_menu_func: | |
1050 dc.l show_main_menu | |
1051 | |
975 pause_menu: | 1052 pause_menu: |
976 dc.b "Resume", 0 | 1053 dc.b "Resume", 0 |
977 dc.b "Load ROM", 0 | 1054 dc.b "Load ROM", 0 |
978 dc.b "Save State", 0 | 1055 dc.b "Save State", 0 |
979 dc.b "Load State", 0 | 1056 dc.b "Load State", 0 |