Rev 751 | Details | Compare with Previous | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
329 | alone | 1 | macro MASKBYTE |
2 | ld a,(hl) |
||
3 | and e |
||
4 | or d |
||
5 | ld (hl),a |
||
6 | endm |
||
7 | macro DOWNBYTE |
||
8 | add hl,bc |
||
9 | endm |
||
10 | |||
11 | prspr |
||
345 | alone | 12 | ;� 4000,8000 㦥 ����祭 ��࠭ (setpgsscr40008000) |
572 | alone | 13 | ;iy=sprite data+2 = spraddr+4 |
345 | alone | 14 | ;e=x = -(sprmaxwid-1)..159 (��������� ��� x+(sprmaxwid-1)) |
15 | ;c=y = -(sprmaxhgt-1)..199 (��������� ��� ����) |
||
329 | alone | 16 | ;(iy-3)=sprhgt |
17 | ;(iy-4)=sprwid |
||
345 | alone | 18 | ;�� x,y, �ਭ�, ���� ���� ���� �� ��࠭�, �㤠 �뢮��� ������� ���� �ࠩ� |
19 | ;�ࠩ� ������ ����� � �ਭ� ������ ࠡ���� ���ᨬ��쭮 �����! |
||
329 | alone | 20 | ld a,scrwid+(sprmaxwid-1) |
345 | alone | 21 | sub e ;x ;a=����ﭨ� �� �ࠢ�� �࠭��� ��࠭� |
329 | alone | 22 | ld hx,a |
345 | alone | 23 | ;ld lx,0 ;�� 㬮�砭�� ��� 䠫�訢��� ��࠭�, ��室 �� �ࠢ�� �࠭�� ��࠭� �㤥� �ࠧ� ;��� ������ �ਭ� �� ���� - ��室 �㤥� �� ����砭�� �ࠩ� |
24 | ;ld lx,0 ;��� �ࠩ� ������ �����, ����������� �ࠢ� - ��室 �ࠧ� �� �࠭�� |
||
329 | alone | 25 | ld a,e ;x |
26 | sub sprmaxwid-1 |
||
27 | jr nc,prsprnocropleft |
||
345 | alone | 28 | ;[���� ���� ��砫� ������� ��� �ࠩ�:] |
29 | ;[᭠砫� �⮫��� (�ਡ����� hgt*2*� ������ �⮫�殢) ����� � 横��, �.�. �ய�� �⮫�殢 �뢠�� ।��] |
||
30 | ;��� ������� 䠫�訢� ��࠭ � 0x4000,0x8000 � �������� ���� ��室� �� ��४��砫�� ��࠭��, ⠪ ����� ࠡ���� � �ࠩ⠬� ��楤�ன |
||
31 | ;a=-� ��१����� �� �⮫�殢 |
||
32 | ;������� hx ��� �ࠢ��쭮�� ��室� �� 䠫�訢��� ��࠭� |
||
33 | ;������� lx ��� �ࠢ��쭮�� ��室� �� �ࠩ� � y-���������� �뢮����� |
||
329 | alone | 34 | ld l,a |
35 | add a,(iy-4) |
||
345 | alone | 36 | ld lx,a ;sprwid-� ��१����� �� �⮫�殢 |
37 | ;� <=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
||
329 | alone | 38 | ret m |
39 | ret z |
||
40 | xor a |
||
41 | sub l |
||
345 | alone | 42 | ld hx,a ;� ��१����� �� �⮫�殢 |
329 | alone | 43 | push bc |
44 | ld a,(pgfake) |
||
434 | alone | 45 | ;ld (curpg4000),a |
1620 | alone | 46 | SETPG4000 |
434 | alone | 47 | ;ld (curpg8000),a |
1620 | alone | 48 | SETPG8000 |
345 | alone | 49 | ;hl �㤥� ���� � �訡��� +64 |
329 | alone | 50 | pop bc |
51 | ld a,l |
||
52 | or a |
||
53 | prsprnocropleft |
||
54 | ld (prsprqsp),sp |
||
55 | ;NC |
||
56 | ld b,0 |
||
57 | ld l,c ;y |
||
58 | rra ;x bit 0 |
||
59 | ;ld h,0x40/32/2 |
||
60 | ;jr nc,$+4 ;x bit 0 |
||
61 | ; ld h,0x80/32/2 |
||
62 | ld h,b;0 |
||
63 | rl h |
||
345 | alone | 64 | inc h ;0x40/32/2 ��� 0x80/32/2 |
329 | alone | 65 | srl a ;x bit 1 |
66 | rl h |
||
67 | add hl,hl |
||
68 | add hl,hl |
||
69 | add hl,bc |
||
70 | add hl,hl |
||
71 | add hl,hl |
||
72 | add hl,hl ;y*40+scrbase |
||
73 | if scrbase&0xff |
||
74 | add a,scrbase&0xff |
||
75 | endif |
||
76 | ;a=x/4 |
||
77 | add a,l |
||
78 | ld l,a |
||
79 | adc a,h |
||
80 | sub l |
||
345 | alone | 81 | ld h,a ;hl=scr ;�� ����� ���� ��९������� �� ����⥫��� x? maxhl = 199*40 + 127 = 8087 |
329 | alone | 82 | ld a,c ;y |
83 | ;add a,sprmaxhgt-1 |
||
84 | ;sub sprmaxhgt-1 |
||
85 | ;jp c,prsprcroptop |
||
86 | cp scrhgt |
||
87 | jp nc,prsprcroptop |
||
88 | add a,(iy-3) ;sprhgt |
||
89 | cp scrhgt+1 ;200=OK, >200=crop |
||
90 | jp nc,prsprcropbottom |
||
345 | alone | 91 | ;hx=����ﭨ� �� �ࠢ�� �࠭��� ��࠭� (columns) |
329 | alone | 92 | ;x=156: hx=4 |
93 | ;x=157: hx=3 |
||
94 | ;x=158: hx=2 |
||
95 | ;x=159: hx=1 |
||
345 | alone | 96 | ;� ��� ��������� �ࠢ�, � �� ����⭮� x � ��⭮� sprwid ���� ᤥ���� ��ண� hx>sprwid/2! |
97 | ;lx ����� ⮫쪮 �� ��������� �� |
||
329 | alone | 98 | ld a,hx |
99 | inc a |
||
100 | srl a |
||
345 | alone | 101 | ld hx,a ;lx �� ������뢠��, �� ����襭 � 2 ࠧ�, �� ��� � ������ �ࠩ� ���� ��室 �� �ਭ� ࠭�� |
102 | ;hx=����ﭨ� �� �ࠢ�� �࠭��� ��࠭� (double columns) |
||
329 | alone | 103 | ;x=156: hx=2 |
104 | ;x=157: hx=2 |
||
105 | ;x=158: hx=1 |
||
106 | ;x=159: hx=1 |
||
107 | ld c,40 ;b=0 |
||
108 | ;iy=sprite data+2 |
||
109 | ld e,(iy-2) |
||
110 | ld d,(iy-1) |
||
111 | ld sp,iy |
||
345 | alone | 112 | ;����� ���� � ����ᨬ��� �� sprhgt |
329 | alone | 113 | ld a,(iy-3) ;sprhgt |
114 | cp 16 |
||
115 | jr z,prspr16 |
||
116 | jr nc,prspr24 |
||
117 | prspr8 |
||
118 | ld a,prspr8column&0xff |
||
119 | ld (prsprcolumnpatch),a |
||
120 | ld (prsprcolumnpatch2),a |
||
121 | jp prspr8column+1 |
||
122 | prspr16 |
||
123 | ld a,prspr16column&0xff |
||
124 | ld (prsprcolumnpatch),a |
||
125 | ld (prsprcolumnpatch2),a |
||
126 | jp prspr16column+1 |
||
127 | prspr24 |
||
128 | cp 32 |
||
129 | jr z,prspr32 |
||
130 | ld a,prspr24column&0xff |
||
131 | ld (prsprcolumnpatch),a |
||
132 | ld (prsprcolumnpatch2),a |
||
133 | jp prspr24column+1 |
||
134 | prspr32 |
||
135 | ld a,prspr32column&0xff |
||
136 | ld (prsprcolumnpatch),a |
||
137 | ld (prsprcolumnpatch2),a |
||
138 | jp prspr32column+1 |
||
139 | align 256 |
||
345 | alone | 140 | ;�⤥�쭠� ��楤�� ��� �ࠩ� ������ �����, �.�. ⠬ �� ���� �� ������ �⮫�� ����⠢���� sp |
329 | alone | 141 | prspr32column |
142 | dup 8 |
||
143 | pop de |
||
144 | MASKBYTE |
||
145 | DOWNBYTE |
||
146 | edup |
||
147 | prspr24column |
||
148 | dup 8 |
||
149 | pop de |
||
150 | MASKBYTE |
||
151 | DOWNBYTE |
||
152 | edup |
||
153 | prspr16column |
||
154 | dup 8 |
||
155 | pop de |
||
156 | MASKBYTE |
||
157 | DOWNBYTE |
||
158 | edup |
||
159 | prspr8column |
||
160 | display prspr32column," HSB equal to ",$ |
||
161 | dup 7 |
||
162 | pop de |
||
163 | MASKBYTE |
||
164 | DOWNBYTE |
||
165 | edup |
||
166 | pop de |
||
167 | MASKBYTE |
||
345 | alone | 168 | ;���� ���� ���饣� �⮫�� �� ��࠭� ��� ��� |
169 | ;4000,8000,[c000]6000,a000,[e001]4001... ;�����⢥���� �ᯮ������� ��� ⠪�� ������ (��-�� ����⠭�� 0xa0) (��㣮� ��ਠ�� - ����⠭� 0x60? ⮣�� ���� ��࠭ � 0000!!!) |
||
170 | ;����� �ᯮ�짮���� ��ப�, ��� h=0xa0, �.�. ���孨� 7 ��ப (������� 193 ��ப�), ���� ���� ld a,0x9f...inc a (+2t) |
||
171 | pop de ;������� ⮫쪮 ��� �ࠩ⮢ ������ ����� (�� �ப��� ���� � ������ pop ��� ������ �⮫��, �.�. ᤢ�� hl ࠧ�� - ࠧ�� �� � hl ᤢ����� �� ���������) |
||
329 | alone | 172 | ld a,0x9f;0xa0 |
173 | cp h |
||
174 | adc hl,de ;de = 0x4000 - ((sprhgt-1)*40) |
||
345 | alone | 175 | ret c ;��室 �� �ਭ� �ࠩ�, ⠬ ���� ����⠭����� sp � ����⠭�� � �⥪� |
329 | alone | 176 | prsprcolumnpatch=$+1 |
345 | alone | 177 | jp pe,prspr16column ;� �������� ��砥� |
178 | ;8000->�000 (���� 6000) ��� a000->e001 (���� 4001) |
||
329 | alone | 179 | inc a |
180 | xor h |
||
181 | ld h,a |
||
182 | dec hx |
||
183 | goprsprcolumn |
||
184 | jp nz,prspr16column |
||
185 | prsprcolumnpatch2=$-2 |
||
345 | alone | 186 | ;��室 �� �࠭�� ��࠭� |
329 | alone | 187 | ;10+11+15+14 = 40t (+5+9) |
345 | alone | 188 | ;�� ����� ���� �࠭�� 䠫�訢��� ��࠭�! ���� ����� ����������� �த������ (� hl-64 ��-�� �訡�� ���� �� ����⥫��� x?) |
434 | alone | 189 | ; ld a,(pgfake) |
190 | ;curpg4000=$+1 |
||
660 | alone | 191 | ld a,(curpg16k) ;ok |
434 | alone | 192 | pgfake2=$+1 |
329 | alone | 193 | cp 0 |
345 | alone | 194 | jp nz,prsprqright ;����⢨⥫쭮 ��室 �� �ࠢ�� �࠭�� |
195 | ;�� 䠫�訢� ��࠭ ��� ��������� �� ����� �࠭��, �த������ �� �����饬 ��࠭� |
||
329 | alone | 196 | ld hx,lx |
197 | ld bc,-64 |
||
345 | alone | 198 | add hl,bc ;��-�� �訡�� ���� �� ����⥫��� x |
329 | alone | 199 | dec c ;NZ!!! |
345 | alone | 200 | ;��� �� ������� �⥪? ���� � ��������� �맮�, ⠬ ����� ��� ࠢ�� rst |
329 | alone | 201 | ld (prsprmaybeqrightsp),sp |
202 | ld sp,tempsp |
||
345 | alone | 203 | call setpgsscr40008000 ;�몫�砥� 䠫�訢� ��࠭, ����砥� �����騩 |
329 | alone | 204 | prsprmaybeqrightsp=$+1 |
205 | ld sp,0 |
||
206 | ld bc,40 |
||
345 | alone | 207 | ;ld lx,b;0 ;��ன ࠧ �㤥� ����⢨⥫쭮 ��室 |
329 | alone | 208 | jp goprsprcolumn ;NZ!!! |
345 | alone | 209 | ;����� � �� ᠬ�� ᤥ���� �� �ࠩ� ����� (���� �� �㦭�, de ��ᢠ����� ⮫쪮 � �������, 13-1 ���� (36.5t) ��譨� �� �⮫���, ��室 �� dec hx:ret z � ���� ret � ����) |
210 | ;� ��� ������ �室 � �।���, � �ࠩ�� �����, � de ��ᢠ������� ⮫쪮 �� ���������? ᭠砫� �ᮢ��� � 䠫�訢� ��࠭ � ��४����� �� call z? |
||
211 | ;�� ��������� �� y 㦥 ���� ������ � ����묨 �ࠩ�, � �� � ����� (�.�. �㦭� ����� �ࠩ� � ���� ������) |
||
329 | alone | 212 | |
345 | alone | 213 | ;��室 �� �ਭ� �ࠩ� |
329 | alone | 214 | prsprqwid |
345 | alone | 215 | ;� ��� de ���� � ��諮�� ࠧ�, � ��ࠡ��稪 ���뢠��� ����� ������� �⥪ |
329 | alone | 216 | ld hl,$ |
345 | alone | 217 | push hl ;� ⥯��� �ந������ ���뢠���, � de �� ������ �⥪ |
329 | alone | 218 | prsprqright |
219 | prsprqsp=$+1 |
||
220 | ld sp,0 |
||
221 | ret |
||
222 | |||
223 | |||
345 | alone | 224 | ;��� �뢮�� �ࠩ� �������� �����: |
329 | alone | 225 | |
345 | alone | 226 | ;��������� ᭨�� |
329 | alone | 227 | prsprcropbottom |
228 | ;a=sprbottom |
||
345 | alone | 229 | ;e?1=x = -(sprmaxwid-1)..159 (��������� ��� x+(sprmaxwid-1)) |
230 | ;c?2=y = -(sprmaxhgt-1)..199 (��������� ��� ����) |
||
329 | alone | 231 | ;(iy-3)?3=sprhgt |
232 | ;(iy-4)?4=sprwid |
||
233 | ;hl=scr |
||
234 | sub scrhgt;200 |
||
235 | ;sub (iy-3) ;sprhgt |
||
236 | ld d,(iy-3) ;sprhgt |
||
237 | sub d |
||
238 | ld c,a ;-sprvisiblehgt = sprbottom-200-sprhgt |
||
345 | alone | 239 | ;� �������� ��, � ᥩ�� lx = sprwid-� ��१����� �� �⮫�殢 |
240 | ;���� lx �� ������ |
||
329 | alone | 241 | |
242 | ld a,(iy-4) ;sprwid |
||
345 | alone | 243 | cp hx ;����ﭨ� �� �ࠢ��� ��� ��࠭� |
614 | alone | 244 | ;jr nc,$ |
245 | jr nc,prsprcropygo;_cropx ;���� ����襥 �� sprwid � ����ﭨ� �� �ࠢ�� �࠭��� ��࠭� |
||
329 | alone | 246 | ld hx,a |
247 | jp prsprcropygo |
||
248 | |||
249 | prsprcroptop |
||
250 | ;a=sprtop |
||
345 | alone | 251 | ;e?1=x = -(sprmaxwid-1)..159 (��������� ��� x+(sprmaxwid-1)) |
252 | ;c?2=y = -(sprmaxhgt-1)..199 (��������� ��� ����) |
||
329 | alone | 253 | ;(iy-3)?3=sprhgt |
254 | ;(iy-4)?4=sprwid |
||
345 | alone | 255 | ;hl=scr ������ (��� ��࠭�) |
329 | alone | 256 | |
257 | neg ;a=number of lines to crop |
||
258 | ld d,(iy-3) ;sprhgt |
||
259 | sub d |
||
260 | ;a = -sprvisiblehgt = -(sprtop+sprhgt) = linestocrop-sprhgt |
||
345 | alone | 261 | ;� sprvisiblehgt<=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
329 | alone | 262 | ret p |
263 | ld c,a ;-sprvisiblehgt = -(sprtop+sprhgt) = linestocrop-sprhgt |
||
264 | |||
345 | alone | 265 | ;� �������� ��, � ᥩ�� lx = sprwid-� ��१����� �� �⮫�殢 |
266 | ;���� lx �� ������ |
||
329 | alone | 267 | |
268 | ld a,(iy-4) ;sprwid |
||
345 | alone | 269 | cp hx ;����ﭨ� �� �ࠢ��� ��� ��࠭� |
270 | jr nc,prsprcropygo_cropx ;���� ����襥 �� sprwid � ����ﭨ� �� �ࠢ�� �࠭��� ��࠭� |
||
329 | alone | 271 | ld hx,a |
272 | prsprcropygo_cropx |
||
273 | |||
274 | ld a,c |
||
275 | add a,d ;a=number of lines to crop |
||
276 | add a,a |
||
345 | alone | 277 | ;�ਡ����� 2*� ������ ��ப � ����� |
329 | alone | 278 | add a,ly |
279 | ld ly,a |
||
280 | jr nc,$+4 |
||
281 | inc hy |
||
282 | |||
283 | ld a,e ;x |
||
345 | alone | 284 | sub sprmaxwid-1 ;NC ��� ������⥫��� x |
329 | alone | 285 | srl a |
286 | ld h,0x40 |
||
287 | jr nc,$+4 ;x bit 0 |
||
288 | ld h,0x80 |
||
289 | srl a |
||
290 | jr nc,$+4 ;x bit 1 |
||
291 | set 5,h |
||
292 | if scrbase&0xff |
||
293 | add a,scrbase&0xff |
||
294 | endif |
||
295 | ld l,a |
||
296 | |||
297 | prsprcropygo |
||
298 | ;d=(iy-3)?3=sprhgt |
||
299 | ;(iy-4)?4=sprwid |
||
300 | ld a,d ;sprhgt |
||
301 | ;add a,c ;-sprvisiblehgt |
||
302 | ; add a,3 ;inc a |
||
303 | ;add a,a |
||
304 | ;ld (prsprNspraddpatch),a ;2*(sprhgt-sprvisiblehgt)+2 +4 |
||
305 | inc a |
||
306 | add a,a |
||
307 | ld (prsprNspraddpatch),a ;2*sprhgt+2 |
||
308 | |||
309 | ld a,c ;-sprvisiblehgt |
||
310 | add a,a |
||
311 | add a,c |
||
312 | add a,a |
||
345 | alone | 313 | ld (prsprNpatch),a ;PRSPR24 � �.�. (�� 6 ����) |
329 | alone | 314 | |
315 | ex de,hl |
||
345 | alone | 316 | ;ld b,-1 ;���� �� ���� ��६�饭�� ld h |
329 | alone | 317 | ;ld h,0x40/32-1 |
318 | inc c |
||
319 | ld l,c ;-sprvisiblehgt |
||
320 | add hl,hl |
||
321 | add hl,hl |
||
322 | ld h,0x40/8-1 -1 |
||
323 | jr nz,$+4 |
||
345 | alone | 324 | ld h,0x40/8 ;��� sprvisiblehgt-1 == 0 |
329 | alone | 325 | add hl,bc |
326 | add hl,hl |
||
327 | add hl,hl |
||
328 | add hl,hl |
||
329 | ld (prsprNscraddpatch),hl ;0x4000 - ((sprvisiblehgt-1)*40) |
||
330 | ex de,hl |
||
331 | |||
332 | ;hl=scr |
||
333 | ;ld c,40 |
||
334 | jp prsprN |
||
335 | |||
345 | alone | 336 | ;��ࠢ������� �� �㦭� ����訩 ���� ����: |
329 | alone | 337 | _lowaddr=256-(sprmaxhgt*6) |
338 | ds (_lowaddr-$)&0xff |
||
345 | alone | 339 | ;����訩 ���� ���� ࠢ�� 256-(sprvisiblehgt*6) |
329 | alone | 340 | PRSPR32 |
341 | dup 8 |
||
342 | MASKBYTE |
||
343 | DOWNBYTE |
||
344 | pop de |
||
345 | edup |
||
346 | PRSPR24 |
||
347 | MASKBYTE |
||
348 | DOWNBYTE |
||
349 | pop de |
||
350 | PRSPR23 |
||
351 | MASKBYTE |
||
352 | DOWNBYTE |
||
353 | pop de |
||
354 | PRSPR22 |
||
355 | MASKBYTE |
||
356 | DOWNBYTE |
||
357 | pop de |
||
358 | PRSPR21 |
||
359 | MASKBYTE |
||
360 | DOWNBYTE |
||
361 | pop de |
||
362 | PRSPR20 |
||
363 | MASKBYTE |
||
364 | DOWNBYTE |
||
365 | pop de |
||
366 | PRSPR19 |
||
367 | MASKBYTE |
||
368 | DOWNBYTE |
||
369 | pop de |
||
370 | PRSPR18 |
||
371 | MASKBYTE |
||
372 | DOWNBYTE |
||
373 | pop de |
||
374 | PRSPR17 |
||
375 | MASKBYTE |
||
376 | DOWNBYTE |
||
377 | pop de |
||
378 | PRSPR16 |
||
379 | MASKBYTE |
||
380 | DOWNBYTE |
||
381 | pop de |
||
382 | PRSPR15 |
||
383 | MASKBYTE |
||
384 | DOWNBYTE |
||
385 | pop de |
||
386 | PRSPR14 |
||
387 | MASKBYTE |
||
388 | DOWNBYTE |
||
389 | pop de |
||
390 | PRSPR13 |
||
391 | MASKBYTE |
||
392 | DOWNBYTE |
||
393 | pop de |
||
394 | PRSPR12 |
||
395 | MASKBYTE |
||
396 | DOWNBYTE |
||
397 | pop de |
||
398 | PRSPR11 |
||
399 | MASKBYTE |
||
400 | DOWNBYTE |
||
401 | pop de |
||
402 | PRSPR10 |
||
403 | MASKBYTE |
||
404 | DOWNBYTE |
||
405 | pop de |
||
406 | PRSPR9 |
||
407 | MASKBYTE |
||
408 | DOWNBYTE |
||
409 | pop de |
||
410 | PRSPR8 |
||
411 | MASKBYTE |
||
412 | DOWNBYTE |
||
413 | pop de |
||
414 | PRSPR7 |
||
415 | MASKBYTE |
||
416 | DOWNBYTE |
||
417 | pop de |
||
418 | PRSPR6 |
||
419 | MASKBYTE |
||
420 | DOWNBYTE |
||
421 | pop de |
||
422 | PRSPR5 |
||
423 | MASKBYTE |
||
424 | DOWNBYTE |
||
425 | pop de |
||
426 | PRSPR4 |
||
427 | MASKBYTE |
||
428 | DOWNBYTE |
||
429 | pop de |
||
430 | PRSPR3 |
||
431 | MASKBYTE |
||
432 | DOWNBYTE |
||
433 | pop de |
||
434 | PRSPR2 |
||
435 | MASKBYTE |
||
436 | DOWNBYTE |
||
437 | pop de |
||
438 | PRSPR1 |
||
439 | display PRSPR32," HSB equal to ",$ |
||
440 | MASKBYTE |
||
441 | |||
345 | alone | 442 | ;���� ���� ���饣� �⮫�� �� ��࠭� ��� ��� |
329 | alone | 443 | ;4000,8000,[c000]6000,a000,[e001]4001... |
345 | alone | 444 | ;����⠭����� ��砫�� hl |
329 | alone | 445 | prsprNscraddpatch=$+1 |
446 | ld bc,0 ;bc = 0x4000 - ((sprvisiblehgt-1)*40) |
||
447 | ld a,0x9f;0xa0 |
||
448 | cp h |
||
449 | adc hl,bc |
||
345 | alone | 450 | jp pe,prsprNcolumnq ;� �������� ��砥� |
451 | ;8000->�000 (���� 6000) ��� a000->e001 (���� 4001) |
||
329 | alone | 452 | inc a |
453 | xor h |
||
454 | ld h,a |
||
455 | prsprNcolumnq |
||
456 | dec hx |
||
345 | alone | 457 | jp z,prsprNmaybeqright ;�� ����� ���� �࠭�� 䠫�訢��� ��࠭�! ���� ����� ����������� �த������ (� hl-64 ��-�� �訡�� ���� �� ����⥫��� x?) |
329 | alone | 458 | prsprNcolumnqq |
345 | alone | 459 | ;���� ���� ������ ���饣� �⮫�� �ࠩ� |
460 | ;����� ���� ᤥ���� ����� ������ pop de, �.�. �ய�� ��ப �뢠�� ।�� |
||
329 | alone | 461 | prsprNspraddpatch=$+1 |
462 | ld bc,0 ;bc = 2*(sprhgt-sprvisiblehgt)+2 |
||
463 | add iy,bc |
||
464 | prsprN |
||
465 | ;iy=sprite data |
||
466 | ld c,40 |
||
345 | alone | 467 | ld sp,tempsp ;�⮡� �� �������� ���� de � ����� ������ |
329 | alone | 468 | ld e,(iy-2) |
469 | ld d,(iy-1) |
||
470 | ld sp,iy |
||
471 | prsprNpatch=$+1 |
||
472 | jp PRSPR24 |
||
473 | |||
474 | prsprNmaybeqright |
||
434 | alone | 475 | ;curpg8000=$+1 |
476 | ; ld a,0 |
||
660 | alone | 477 | ld a,(curpg32klow) ;ok |
329 | alone | 478 | pgfake=$+1 |
479 | cp 0 |
||
345 | alone | 480 | jp nz,prsprqright ;����⢨⥫쭮 ��室 |
329 | alone | 481 | ld hx,lx |
482 | ld bc,-64 |
||
345 | alone | 483 | add hl,bc ;��-�� �訡�� ���� �� ����⥫��� x |
329 | alone | 484 | ld sp,tempsp |
345 | alone | 485 | call setpgsscr40008000 ;�몫�砥� 䠫�訢� ��࠭, ����砥� �����騩 |
329 | alone | 486 | ;ld bc,40 |
345 | alone | 487 | ;ld lx,b;0 ;��ன ࠧ �㤥� ����⢨⥫쭮 ��室 |
329 | alone | 488 | jp prsprNcolumnqq |
749 | alone | 489 | |
490 | copyboxscrtoscr |
||
491 | ;iy=sprite data+2 = spraddr+4 |
||
492 | ;e=x = -(sprmaxwid-1)..159 (��������� ��� x+(sprmaxwid-1)) |
||
493 | ;c=y = -(sprmaxhgt-1)..199 (��������� ��� ����) |
||
494 | ;(iy-3)=sprhgt |
||
495 | ;(iy-4)=sprwid |
||
751 | alone | 496 | ;ld e,1+(sprmaxwid-1) |
497 | ;ld c,0 |
||
498 | |||
749 | alone | 499 | ld l,(iy-4) ;sprwid |
500 | ld a,e ;x |
||
501 | sub sprmaxwid-1 |
||
502 | ld e,a |
||
503 | jr nc,copyboxscrtoscr_nocropleft |
||
504 | add a,l |
||
505 | ld l,a ;new sprwid |
||
506 | ;� <=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
||
507 | ret m |
||
508 | ret z |
||
509 | xor a |
||
510 | ld e,a ;new x |
||
511 | copyboxscrtoscr_nocropleft |
||
512 | add a,l |
||
513 | sub scrwid |
||
514 | jr c,copyboxscrtoscr_nocropright |
||
515 | ;a=� �⮫�殢, ���襭��� �ࠢ� |
||
516 | neg |
||
517 | add a,l |
||
518 | ld l,a ;new sprwid |
||
519 | ;� <=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
||
520 | ret m |
||
521 | ret z |
||
522 | copyboxscrtoscr_nocropright |
||
523 | ld h,(iy-3) ;sprhgt |
||
524 | ld a,c ;y |
||
525 | cp -(sprmaxhgt-1) |
||
526 | jr c,copyboxscrtoscr_nocroptop |
||
527 | add a,h |
||
528 | ld h,a ;new sprhgt |
||
529 | ;� <=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
||
530 | ret m |
||
531 | ret z |
||
532 | xor a |
||
533 | ld c,a ;new y |
||
534 | copyboxscrtoscr_nocroptop |
||
535 | add a,h |
||
536 | sub scrhgt |
||
537 | jr c,copyboxscrtoscr_nocropbottom |
||
538 | ;a=� �⮫�殢, ���襭��� �ࠢ� |
||
539 | neg |
||
540 | add a,h |
||
541 | ld h,a ;new sprhgt |
||
542 | ;� <=0, � �ࠩ� ��� �� ��࠭�!!! ��室��!!! |
||
543 | ret m |
||
544 | ret z |
||
545 | copyboxscrtoscr_nocropbottom |
||
546 | ;h=hgt,l=wid (/2) != 0 |
||
751 | alone | 547 | ;ld l,32 |
749 | alone | 548 | ld a,c |
549 | add a,h |
||
550 | dec a |
||
551 | ld c,a |
||
552 | ;c=y, e=xleft (/2) |
||
751 | alone | 553 | ld lx,c ;lx=y |
749 | alone | 554 | push hl ;h=hgt,l=wid (/2) != 0 |
751 | alone | 555 | ld a,e ;xleft (/2) |
556 | add a,l ;wid (/2) |
||
557 | dec a |
||
558 | ld e,a ;xright (/2) |
||
749 | alone | 559 | ld b,0 |
560 | ld l,c ;y |
||
751 | alone | 561 | ;srl a ;CY=x bit 0 |
562 | ;srl a ;CY=x bit 1 |
||
749 | alone | 563 | ld h,0xc0/32 |
564 | add hl,hl |
||
565 | add hl,hl |
||
566 | add hl,bc |
||
567 | add hl,hl |
||
568 | add hl,hl |
||
569 | add hl,hl ;y*40+scrbase |
||
751 | alone | 570 | ; if scrbase&0xff |
571 | ; add a,scrbase&0xff |
||
572 | ; endif |
||
573 | ;add a,l |
||
574 | ;ld l,a |
||
575 | ;adc a,h |
||
576 | ;sub l |
||
577 | ;ld h,a ;hl=scr |
||
749 | alone | 578 | pop bc ;b=hgt,c=wid (/2) != 0 |
579 | ;c=wid (/2) |
||
580 | ;b=hgt |
||
751 | alone | 581 | ;e=xright (/2) |
582 | ;lx=y |
||
749 | alone | 583 | push bc |
584 | push de |
||
585 | push hl |
||
751 | alone | 586 | call copyboxscrtoscr_page ;rightmost layer |
749 | alone | 587 | pop hl |
588 | pop de |
||
589 | pop bc |
||
751 | alone | 590 | dec e ;xright (/2) |
591 | dec c ;wid (/2) |
||
592 | ret z |
||
749 | alone | 593 | push bc |
594 | push de |
||
595 | push hl |
||
751 | alone | 596 | call copyboxscrtoscr_page ;next layer |
749 | alone | 597 | pop hl |
598 | pop de |
||
599 | pop bc |
||
751 | alone | 600 | dec e ;xright (/2) |
601 | dec c ;wid (/2) |
||
602 | ret z |
||
749 | alone | 603 | push bc |
604 | push de |
||
605 | push hl |
||
751 | alone | 606 | call copyboxscrtoscr_page ;next layer |
749 | alone | 607 | pop hl |
608 | pop de |
||
609 | pop bc |
||
751 | alone | 610 | dec e ;xright (/2) |
611 | dec c ;wid (/2) |
||
612 | ret z |
||
749 | alone | 613 | copyboxscrtoscr_page |
751 | alone | 614 | ;lx=y |
615 | ;e=xright (/2) |
||
616 | ;c=wid (/2) |
||
617 | ;b=hgt |
||
618 | ;hl=scrright = 0xc000+ |
||
619 | push bc |
||
620 | ld a,e ;xright (/2) |
||
621 | rra |
||
622 | call nc,getuser_scr_low |
||
623 | call c,getuser_scr_high |
||
1620 | alone | 624 | SETPGC000 ;kills bc |
751 | alone | 625 | ld a,e ;xright (/2) |
626 | rra |
||
627 | rra |
||
628 | jr nc,$+4 |
||
629 | set 5,h |
||
630 | and 0x3f |
||
631 | if scrbase&0xff |
||
632 | add a,scrbase&0xff |
||
633 | endif |
||
634 | add a,l |
||
635 | ld l,a |
||
636 | adc a,h |
||
637 | sub l |
||
638 | ld h,a ;hl=scr |
||
639 | pop bc |
||
640 | ;widbytes = 1 + (xright)/4 - (xright-wid+1+(3-layer))/4 (layer = xright&3) |
||
641 | ld a,e ;xright |
||
642 | cpl |
||
643 | and 3 ;3-layer |
||
644 | add a,e ;xright |
||
645 | sub c ;wid |
||
646 | inc a |
||
749 | alone | 647 | srl a |
751 | alone | 648 | srl a |
649 | ld c,e |
||
650 | srl c |
||
651 | srl c |
||
652 | sub c |
||
653 | dec a ;a=-widbytes |
||
749 | alone | 654 | ret z |
751 | alone | 655 | neg |
749 | alone | 656 | ld c,a |
657 | ;c=wid (bytes in this page) |
||
658 | ;b=hgt |
||
751 | alone | 659 | |
660 | push bc |
||
661 | push hl |
||
662 | |||
663 | ;ld a,e ;xright |
||
664 | ;cpl |
||
665 | ld a,+(UVSCROLL_SCRWID/2)-1 |
||
666 | sub e |
||
667 | ;[a=layer 0..3] |
||
668 | ;add a,+(UVSCROLL_SCRNPUSHES-1)*8 |
||
669 | ld hl,allscroll_lsb |
||
670 | add a,(hl) |
||
671 | ;hlc = allscroll = yscroll*512+x2scroll |
||
672 | ld c,a |
||
673 | ld hl,(allscroll) |
||
674 | jr nc,$+3 |
||
675 | inc hl ;hlc = allscroll = yscroll*512+x2scroll |
||
676 | ld a,UVSCROLL_SCRHGT-1 |
||
677 | sub lx ;y |
||
678 | ld e,a |
||
679 | ld d,0 |
||
680 | add hl,de |
||
681 | add hl,de |
||
749 | alone | 682 | ld a,c |
751 | alone | 683 | ld e,l ;yscroll*2 |
684 | add hl,hl |
||
685 | if 1==1 |
||
686 | rr e ;yscroll (corrected ��� ��横�������) |
||
687 | rra |
||
688 | ;or 3 ;a=0xff-(((x2scroll+layer[+4])/2)&0xfc) |
||
689 | set 0,a |
||
690 | bit 1,a |
||
691 | res 1,a |
||
692 | jr nz,$+3 |
||
693 | inc a |
||
694 | else |
||
695 | rr e ;yscroll (corrected ��� ��横�������) |
||
696 | rra |
||
697 | ;ld b,a |
||
698 | and 0xfc ;a=0xfc-(((x2scroll+layer[+4]+((UVSCROLL_SCRNPUSHES-1)*8))/2)&0xfc) |
||
699 | endif |
||
700 | ld (copyboxscrtoscr_page_e),a |
||
701 | ld a,h |
||
702 | rla |
||
703 | rla ;a=(x2scroll+layer)&3 + ((yscroll/64)*4) |
||
704 | xor c |
||
705 | and 0xfc |
||
706 | xor c |
||
707 | xor 3 |
||
708 | |||
709 | ld hl,tpushpgs |
||
749 | alone | 710 | add a,l |
711 | ld l,a |
||
751 | alone | 712 | adc a,h |
713 | sub l |
||
714 | ld h,a |
||
715 | ld a,(hl) ;gfx pages |
||
1620 | alone | 716 | SETPG4000 |
751 | alone | 717 | inc hl |
718 | inc hl |
||
719 | inc hl |
||
720 | inc hl |
||
721 | ld a,(hl) |
||
1620 | alone | 722 | SETPG8000 |
751 | alone | 723 | |
724 | ld a,e ;yscroll (corrected ��� ��横�������) |
||
725 | and 63 |
||
726 | add a,0x40 |
||
727 | ld d,a |
||
728 | copyboxscrtoscr_page_e=$+1 |
||
729 | ld e,0 |
||
730 | ;ld de,0x4001 ;de=ldpush = 0x4000+ |
||
731 | |||
732 | pop hl |
||
733 | pop bc |
||
749 | alone | 734 | ;��㥬 �ࠢ� ������! |
735 | copyboxscrtoscr0 |
||
736 | push bc ;b = hgt |
||
737 | ld hx,b |
||
738 | push de |
||
739 | push hl |
||
740 | ;hl=scr = 0xc000+ |
||
741 | ;de=ldpush = 0x4000+ |
||
742 | ;11 LL RR pp 11 LL RR pp |
||
743 | ld bc,-40 |
||
744 | copyboxscrtoscrcolumn0 |
||
745 | ld a,(de) |
||
746 | inc d |
||
747 | ld (hl),a |
||
748 | add hl,bc |
||
749 | dec hx |
||
750 | jp nz,copyboxscrtoscrcolumn0 |
||
751 | pop hl |
||
752 | dec hl |
||
753 | pop de |
||
754 | bit 1,e |
||
755 | dec de |
||
756 | jr nz,$+2+3+3 |
||
757 | ld bc,6 |
||
758 | ex de,hl |
||
759 | add hl,bc |
||
760 | ex de,hl |
||
761 | pop bc |
||
762 | dec c |
||
763 | jr nz,copyboxscrtoscr0 |
||
764 | ret |