Mercurial > repos > simple16
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 |