32
|
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 |