comparison controller.s16 @ 32:8642cb2ceb89

WIP button test ROM
author Michael Pavone <pavone@retrodev.com>
date Sun, 03 Apr 2016 18:38:41 -0700
parents
children 4a093f15fb1b
comparison
equal deleted inserted replaced
31:b87b3ad5068c 32:8642cb2ceb89
1 ldim vectors, r0
2 ldimh vectors, r0
3 setvbr r0
4 ;load palette
5 ldim 0, r0
6 ldimh $FF,r0
7 outi $E, r0
8 ldim colors, r1
9 ldimh colors, r1
10
11 ;copy 3 colors for 1st palette
12 ldim 0, r2
13 ldim 3, r3
14 ldim copy_data, r12
15 ldimh copy_data, r12
16 call r12, r13
17
18 ;setup writes to 2nd palette
19 ldim $10, r0
20 ldimh $FF,r0
21 outi $E, r0
22
23 ;copy 3 colors for 2nd palette
24 ldim 3, r3
25 call r12, r13
26
27 ;setup writes for first map row
28 ldim 0, r0
29 ldimh $60, r0
30 outi $E, r0
31
32 ldim write_zeros, r11
33 ldimh write_zeros, r11
34 ;offset by one row and two columns
35 ldim 66, r3
36 call r11, r13
37
38 ldim 3, r5
39 row_loop:
40 ;copy 9 table entries for first row
41 ldim 9, r3
42 call r12, r13
43
44 ;zero out rest of row
45
46 ldim 55, r3
47 call r11, r13
48
49 addi -1, r5
50 bne row_loop
51
52 ;setup writes to tile data area
53 ldim 0, r0
54 outi $E, r0
55
56 ;zero out first tile
57 ldim $10, r3
58 call r11, r13
59
60 ;copy tiles
61 ldim $C0, r3
62 ldimh 0, r3
63 call r12, r13
64
65
66
67 ;copy tile map to ram
68 ldim 0, r0
69 ldimh $C0, r0
70
71 ldim map, r1
72 ldimh map, r1
73
74 ldim 0, r2
75 ldim 27, r3
76
77 ldim memcpy16, r10
78 ldimh memcpy16, r10
79 call r10, r13
80
81 ;enable vertical interrupts
82 ori 2, sr
83
84 ;vscroll reg
85 ldim 0, r0
86 ldimh $C6, r0
87 outi $C, r0
88 ;hscroll reg + enable display
89 ldim 0, r0
90 ldimh $80, r0
91 outi $D, r0
92
93 forever:
94 bra forever
95
96 copy_data:
97 ld16 r1, r2, r4
98 outi $F, r4
99
100 addi 2, r2
101 addi -1, r3
102 bne copy_data
103 mov r13, pc
104
105 memcpy16:
106 ld16 r1, r2, r4
107 str16 r0, r2, r4
108
109 addi 2, r2
110 addi -1, r3
111 bne memcpy16
112 mov r13, pc
113
114 write_zeros:
115 ldim 0, r4
116 zloop:
117 outi $f, r4
118
119 addi -1, r3
120 bne zloop
121 mov r13, pc
122
123
124
125 vectors:
126 dc.w 0
127 dc.w vint_handler
128
129 vint_handler
130 setuer r13
131 ;handler code goes here
132
133 ;setup writes to first element of diagram
134 ldim $84, r0
135 ldimh $60, r0
136 outi $E, r0
137
138 ;copy first row of updated tile map
139 ldim 0, r1
140 ldimh $C0, r1
141 ldim 0, r2
142 ldim 9, r3
143 call r12, r13
144
145 ;setup writes to second row of diagram
146 ldim $04, r0
147 ldimh $61, r0
148 outi $E, r0
149 ;copy second row
150 ldim 9, r3
151 call r12, r13
152
153 ;setup writes to third row of diagram
154 ldim $84, r0
155 ldimh $61, r0
156 outi $E, r0
157 ;copy third row
158 ldim 9, r3
159 call r12, r13
160
161 reti r13
162
163 offsets:
164 dc.w 52 ;C
165 dc.w 50 ;B
166 dc.w 48 ;A
167 dc.w 34 ;Z
168 dc.w 32 ;Y
169 dc.w 30 ;X
170 dc.w 44 ;Mode
171 dc.w 26 ;Start
172
173 dc.w 22 ;Right
174 dc.w 18 ;Left
175 dc.w 38 ;Down
176 dc.w 2 ;Up
177
178 colors:
179 dc.w $000
180 dc.w $777
181 dc.w $333
182 ;second palette
183 dc.w $000
184 dc.w $FFF
185 dc.w $00F
186 map:
187 dc.w 0, 1, 0, 0, 0, 0, 0, 0, 0
188 dc.w 3, 0, 4, 0, 5, 0, 7, 8, 9
189 dc.w 0, 2, 0, 0, 6, 0, 10, 11, 12
190
191 tiles:
192 incbin buttons.tiles