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