Rev 2049 | Details | Compare with Previous | Last modification | View Log
Rev | Author | Line No. | Line |
---|---|---|---|
213 | alone | 1 | |
2 | IF crosshair |
||
2049 | alone | 3 | MACRO XORN n |
213 | alone | 4 | LD A,(HL) |
2080 | alone | 5 | ;and 0xff-n |
6 | XOR n ;��㥬 � xor-����! |
||
213 | alone | 7 | LD (HL),A |
8 | ENDM |
||
9 | |||
10 | CROSSHAIR |
||
1908 | alone | 11 | LD HL,scrbuf+((scrwid/2)<<8)+(scrhgtpix/2) |
213 | alone | 12 | XORN #0F |
13 | DEC H |
||
14 | XORN #78 |
||
15 | INC L |
||
16 | XORN #78 |
||
17 | INC H |
||
18 | XORN #0F |
||
2080 | alone | 19 | LD L,0xff&(scrbuf+(scrhgtpix/2)-7) |
213 | alone | 20 | XORN #80 |
2080 | alone | 21 | LD L,0xff&(scrbuf+(scrhgtpix/2)-3) |
213 | alone | 22 | XORN #80 |
2080 | alone | 23 | LD L,0xff&(scrbuf+(scrhgtpix/2)+4) |
213 | alone | 24 | XORN #80 |
2080 | alone | 25 | LD L,0xff&(scrbuf+(scrhgtpix/2)+8) |
213 | alone | 26 | XORN #80 |
27 | RET |
||
28 | ENDIF ;crosshair |
||
29 | |||
30 | CHECKHEIGHTS |
||
31 | LD HL,distbuf+#200 ;dist |
||
32 | LD DE,scrbufflag |
||
1908 | alone | 33 | LD BC,(scrwid<<8)+lowmaxscale |
213 | alone | 34 | checkheights0 |
35 | LD A,C;lowmaxscale |
||
36 | _=pixperchr |
||
37 | DUP pixperchr |
||
38 | _=_-1 |
||
39 | CP (HL) |
||
40 | IF debug |
||
41 | CALL npp |
||
42 | ENDIF |
||
43 | INC L |
||
44 | jr C,checkhigh-_ |
||
45 | EDUP |
||
46 | XOR A |
||
47 | JP checklow |
||
48 | DUP pixperchr |
||
49 | INC L |
||
50 | EDUP |
||
51 | checkhigh ;A<>0 <128 |
||
52 | checklow ;A=0 |
||
53 | LD (DE),A |
||
54 | INC D |
||
55 | DJNZ checkheights0 |
||
56 | RET |
||
57 | |||
58 | IF debug |
||
59 | npp |
||
60 | PUSH AF |
||
61 | PUSH HL |
||
62 | jr C,NNN |
||
63 | LD HL,nlow |
||
64 | INC (HL) |
||
65 | INC HL |
||
66 | jr Z,$-2 |
||
67 | NNN |
||
68 | LD HL,nstolb |
||
69 | INC (HL) |
||
70 | INC HL |
||
71 | jr Z,$-2 |
||
72 | POP HL |
||
73 | POP AF |
||
74 | RET |
||
75 | nlow |
||
76 | DS 4 |
||
77 | nstolb |
||
78 | DS 4 |
||
79 | ENDIF |
||
80 | |||
435 | alone | 81 | if atm == 0 |
213 | alone | 82 | CLSCRBUF |
83 | LD H,scrbuf/256 |
||
84 | LD BC,scrwid*256+(0xff&scrbufflag) |
||
85 | XOR A |
||
86 | LD D,A |
||
87 | ld E,A |
||
88 | clscrbuf0 ; |
||
89 | LD L,C;scrbufflag |
||
90 | CP (HL) |
||
91 | jr NZ,clscrhigh |
||
92 | LD L,0xff&(lowscrbuf+lowscrhgtpix) |
||
93 | LD SP,HL |
||
94 | IF (0xff&(scrbuf+scrhgtpix)) == 0 |
||
95 | INC H |
||
96 | ENDIF |
||
97 | JP clscrlow |
||
98 | clscrhigh |
||
99 | LD L,0xff&(scrbuf+scrhgtpix) |
||
100 | IF (0xff&(scrbuf+scrhgtpix)) == 0 |
||
101 | INC H |
||
102 | ENDIF |
||
103 | LD SP,HL |
||
104 | DUP scrhgtpix/2 |
||
105 | PUSH DE |
||
106 | EDUP |
||
107 | clscrlow=$-(lowscrhgtpix/2)-1 ;EORFILL could corrupt a word |
||
108 | IF 0xff&(scrbuf+scrhgtpix) |
||
109 | INC H |
||
110 | ENDIF |
||
111 | DJNZ clscrbuf0 |
||
112 | clscrbufsp=$+1 |
||
113 | LD SP,0 |
||
114 | RET |
||
435 | alone | 115 | endif |
213 | alone | 116 | |
117 | if atm == 0 |
||
118 | EORFILL |
||
119 | IF doublescr |
||
120 | LD A,(newscr) |
||
121 | SUB 1 |
||
122 | SBC A,A |
||
123 | AND #80 |
||
124 | XOR scrtop/256 |
||
125 | LD (curscrtopH),A |
||
126 | ADD A,+(lowscrtop/256)-(scrtop/256) |
||
127 | LD (curlowscrtopH),A |
||
128 | ADD A,+(attrtop/256)-(lowscrtop/256) |
||
129 | LD (curattrtopH),A |
||
130 | LD (curattrtopH2),A |
||
131 | ENDIF |
||
132 | LD L,scrtop&0xff |
||
133 | LD C,32 |
||
134 | EXX |
||
135 | LD H,scrbuf/256 |
||
136 | LD DE,+((scrbuf&0xff)*256)+(0xff&lowscrbuf) |
||
137 | LD BC,+(scrwid*256)+(0xff&scrbufflag) |
||
138 | eorfill0 ; |
||
139 | LD L,C;scrbufflag |
||
140 | LD A,(HL) |
||
141 | OR A |
||
142 | JP Z,eorfilllow |
||
143 | eorfillhigh |
||
144 | LD L,D;scrbuf |
||
145 | LD SP,HL |
||
146 | EXX |
||
147 | ;EOR-fill �⮫�� �� ��࠭: |
||
148 | curscrtopH=$+1 |
||
149 | LD H,scrtop/256 ;#40 |
||
150 | JP M,eorcopy |
||
151 | LD A,L |
||
152 | AND 31 |
||
153 | IF scrtop&#E0 |
||
154 | ADD A,scrtop&#E0 |
||
155 | ENDIF |
||
156 | LD L,A |
||
157 | LD B,-7 ;BC,#F920 |
||
158 | XOR A |
||
159 | _=scrtop/32 |
||
160 | DUP scrhgt ;8 |
||
161 | DUP 4 |
||
162 | POP DE |
||
163 | XOR E |
||
164 | LD (HL),A |
||
165 | INC H |
||
166 | XOR D |
||
167 | LD (HL),A |
||
168 | INC H |
||
169 | EDUP |
||
170 | ORG $-1 |
||
171 | __=$ |
||
172 | ADD HL,BC |
||
173 | _=_+1 |
||
174 | IF (_&7) == 0 |
||
175 | ORG __ |
||
176 | LD B,0 ;BC=#0020 |
||
177 | ADD HL,BC |
||
178 | LD B,-7 |
||
179 | ENDIF |
||
180 | EDUP |
||
181 | ORG __ |
||
182 | eorcopyQ |
||
183 | ;attrs after pixels for no flickering |
||
184 | LD A,L |
||
185 | AND 31 |
||
186 | IF attrtop&#E0 |
||
187 | ADD A,attrtop&#E0 |
||
188 | ENDIF |
||
189 | LD L,A |
||
190 | curattrtopH=$+1 |
||
191 | LD H,attrtop/256 |
||
192 | LD A,colour |
||
193 | CP (HL) |
||
194 | jr Z,eorfillok |
||
195 | LD B,0 ;BC=32 |
||
196 | DUP (scrhgt-lowscrhgt)/2 |
||
197 | LD (HL),A |
||
198 | ADD HL,BC |
||
199 | EDUP |
||
200 | ORG $-1 |
||
201 | LD DE,32*(lowscrhgt+1) |
||
202 | ADD HL,DE |
||
203 | DUP (scrhgt-lowscrhgt)/2 |
||
204 | LD (HL),A |
||
205 | ADD HL,BC |
||
206 | EDUP |
||
207 | ORG $-1 |
||
208 | eorfillok ; |
||
209 | INC L |
||
210 | EXX |
||
211 | INC H |
||
212 | DEC B |
||
213 | JP NZ,eorfill0 |
||
214 | eorfillsp=$+1 |
||
215 | LD SP,0 |
||
216 | RET |
||
217 | |||
218 | eorfilllow |
||
1962 | alone | 219 | ;ex af,af' ;' |
213 | alone | 220 | LD L,E;lowscrbuf |
221 | LD SP,HL |
||
222 | EXX |
||
223 | ;EOR-fill ������� �⮫�� �� ��࠭: |
||
224 | LD A,L |
||
225 | AND 31 |
||
226 | IF attrtop&#E0 |
||
227 | ADD A,attrtop&#E0 |
||
228 | ENDIF |
||
1962 | alone | 229 | LD L,A ;᭠砫� ������� ��ਡ�⠬� ���� |
213 | alone | 230 | curattrtopH2=$+1 |
231 | LD H,attrtop/256 |
||
232 | LD A,ceilingcolour |
||
233 | CP (HL) |
||
1962 | alone | 234 | jr Z,eorfilllownattr ;㦥 �������� |
213 | alone | 235 | LD B,0 ;BC=32 |
236 | DUP (scrhgt-lowscrhgt)/2 |
||
237 | LD (HL),A |
||
238 | ADD HL,BC |
||
239 | EDUP |
||
240 | ORG $-1 |
||
1908 | alone | 241 | LD DE,32*(lowscrhgt+1) ; |
242 | ADD HL,DE ;����� add hl,bc:inc h (TODO) |
||
213 | alone | 243 | LD A,floorcolour |
244 | DUP (scrhgt-lowscrhgt)/2 |
||
245 | LD (HL),A |
||
246 | ADD HL,BC |
||
247 | EDUP |
||
248 | ORG $-1 |
||
249 | eorfilllownattr ; |
||
250 | LD A,L |
||
251 | AND 31 |
||
252 | IF lowscrtop&#E0 |
||
253 | ADD A,lowscrtop&#E0 |
||
254 | ENDIF |
||
255 | LD L,A |
||
256 | curlowscrtopH=$+1 |
||
257 | LD H,lowscrtop/256 |
||
1962 | alone | 258 | ;branch to eorcopylow (������� �� �ந�室��) |
259 | ;ex af,af' ;' |
||
260 | ;JP M,eorcopylow |
||
213 | alone | 261 | |
262 | LD B,-7 ;BC,#F920 |
||
263 | XOR A |
||
264 | _=lowscrtop/32 |
||
265 | DUP lowscrhgt |
||
266 | DUP 4 |
||
267 | POP DE |
||
268 | XOR E |
||
269 | LD (HL),A |
||
270 | INC H |
||
271 | XOR D |
||
272 | LD (HL),A |
||
273 | INC H |
||
274 | EDUP |
||
275 | ORG $-1 |
||
276 | __=$ |
||
277 | ADD HL,BC |
||
278 | _=_+1 |
||
279 | IF (_&7) == 0 |
||
280 | ORG __ |
||
281 | LD B,0 ;BC=#0020 |
||
282 | ADD HL,BC |
||
283 | LD B,-7 |
||
284 | ENDIF |
||
285 | EDUP |
||
286 | ORG __ |
||
287 | JP eorfillok |
||
288 | |||
289 | eorcopy |
||
290 | LD A,L |
||
291 | AND 31 |
||
292 | IF scrtop&#E0 |
||
293 | ADD A,scrtop&#E0 |
||
294 | ENDIF |
||
295 | LD L,A |
||
296 | LD B,-7 ;BC,#F920 |
||
297 | XOR A |
||
298 | _=scrtop/32 |
||
299 | DUP scrhgt ;8 |
||
300 | DUP 4 |
||
301 | POP DE |
||
302 | LD (HL),E |
||
303 | INC H |
||
304 | LD (HL),D |
||
305 | INC H |
||
306 | EDUP |
||
307 | ORG $-1 |
||
308 | __=$ |
||
309 | ADD HL,BC |
||
310 | _=_+1 |
||
311 | IF (_&7) == 0 |
||
312 | ORG __ |
||
313 | LD B,0 ;BC=#0020 |
||
314 | ADD HL,BC |
||
315 | LD B,-7 |
||
316 | ENDIF |
||
317 | EDUP |
||
318 | ORG __ |
||
319 | JP eorcopyQ |
||
320 | |||
1962 | alone | 321 | if 0 |
213 | alone | 322 | eorcopylow |
323 | LD B,-7 ;BC,#F920 |
||
324 | XOR A |
||
325 | _=lowscrtop/32 |
||
326 | DUP lowscrhgt |
||
327 | DUP 4 |
||
328 | POP DE |
||
329 | LD (HL),E |
||
330 | INC H |
||
331 | LD (HL),D |
||
332 | INC H |
||
333 | EDUP |
||
334 | ORG $-1 |
||
335 | __=$ |
||
336 | ADD HL,BC |
||
337 | _=_+1 |
||
338 | IF (_&7) == 0 |
||
339 | ORG __ |
||
340 | LD B,0 ;BC=#0020 |
||
341 | ADD HL,BC |
||
342 | LD B,-7 |
||
343 | ENDIF |
||
344 | EDUP |
||
345 | ORG __ |
||
346 | JP eorfillok |
||
1962 | alone | 347 | endif |
213 | alone | 348 | |
349 | DHL |
||
350 | INC H |
||
351 | LD A,H |
||
352 | AND 7 |
||
353 | RET NZ |
||
354 | LD A,L |
||
355 | ADD A,32 |
||
356 | LD L,A |
||
357 | RET C |
||
358 | LD A,H |
||
359 | SUB 8 |
||
360 | LD H,A |
||
361 | RET |
||
362 | endif |
||
363 | |||
364 | IF atm == 0 |
||
365 | DRAWWALLS |
||
366 | LD HY,DWJP/256 |
||
367 | LD L,0 |
||
368 | ;LD DE,distbuf+3 |
||
369 | EXX |
||
370 | LD D,scrbuf/256 |
||
371 | IF lores == 0 |
||
372 | LD C,#80 |
||
373 | ELSE |
||
374 | LD C,#C0 |
||
375 | ENDIF |
||
376 | LD B,scrwid |
||
377 | DW0 ; |
||
378 | EXX |
||
379 | LD H,distbuf/256 ;D ;+3 |
||
1917 | alone | 380 | LD a,(hl);D,(HL) ;ID |
381 | RRCA |
||
382 | ADD A,A ;䫠� ��ઠ�쭮�� � CY ;TODO �ᮢ��� ��� ⠪, �⮡� �� ����拉 ����� �� �뫨 ����ઠ���, ���� - �� ��ઠ��� (⮣�� � ��ઠ�쭮��� �� �㦭� �㤥� �࠭���?) |
||
383 | set 7,a ;(keep CY) ������ ������� ID_DOOR (������ ����� < 128) |
||
384 | ld d,a |
||
1958 | alone | 385 | |
386 | if doublescr |
||
1974 | alone | 387 | push af ;SETPG ����� CY |
1958 | alone | 388 | bit 6,d |
389 | set 6,d |
||
390 | ld a,0x10 |
||
391 | jr nz,$+4 |
||
392 | ld a,0x10+pgtmp |
||
393 | call SETPG |
||
1974 | alone | 394 | pop af |
1958 | alone | 395 | endif |
396 | |||
1917 | alone | 397 | ;cp 0xc0 |
398 | ;jr c,$ |
||
1982 | alone | 399 | ;cp 0xc0+(texturesinpg*2) |
1917 | alone | 400 | ;jr nc,$ |
401 | ;ld d,0xc0+(2*9) |
||
1912 | alone | 402 | ;IF debug |
403 | ; LD A,D |
||
404 | ; CP -20 |
||
405 | ; jr NC,$+4 |
||
406 | ; LD D,-20 |
||
407 | ;ENDIF |
||
213 | alone | 408 | INC H |
1917 | alone | 409 | LD a,(hl);E,(HL) ;texx |
410 | jr NC,$+3 |
||
411 | CPL ;��ઠ�쭠� |
||
412 | AND 0x3F ; |
||
413 | or 0x40;0x80 ;TODO 㦥 � ray? |
||
414 | ld e,a |
||
213 | alone | 415 | INC H |
416 | LD A,(DE) |
||
417 | INC D |
||
418 | LD C,A ;+4 |
||
419 | LD A,(DE) |
||
420 | LD B,A ;+4 |
||
421 | LD A,(BC) ;-12 |
||
422 | LD LY,A |
||
423 | LD HX,B |
||
424 | LD LX,C |
||
425 | LD A,(HL) ;dist |
||
426 | INC L |
||
427 | EXX |
||
428 | IF 0 |
||
429 | ;#06..#2B = 38 |
||
430 | ;#2C,#2E..#56 = 22 |
||
431 | ;#58,#5C..#64 = 4 |
||
432 | ;=64 scales |
||
433 | CP #06 ;max=#06 |
||
434 | jr NC,$+4 |
||
435 | LD A,#06 |
||
436 | CP #67 |
||
437 | jr C,$+4 |
||
438 | LD A,#67 |
||
439 | CP #2C ;min=#28 |
||
440 | jr C,$+4 |
||
441 | AND #FE |
||
442 | CP #58 ;min=#50 |
||
443 | jr C,$+4 |
||
444 | AND #FC |
||
445 | ENDIF |
||
446 | LD L,A |
||
447 | IF optres |
||
448 | foptfast=$+1 |
||
449 | CP lowmaxscale |
||
450 | jr NC,DW0high |
||
451 | DW0low ; |
||
452 | LD B,C |
||
453 | ENDIF |
||
454 | ;d=�⮫��� |
||
455 | ;c=��⬠᪠ �⮫�� |
||
456 | ;ix=���� ��䨪� �⮫�� |
||
457 | ;l=scale |
||
458 | ;LD A,(IX) ;(18-N)*7 |
||
459 | ;LD LY,A |
||
460 | JP (IY) |
||
461 | IF optres |
||
462 | DW0high ; |
||
463 | LD A,C |
||
464 | AND %10101010 |
||
465 | jr Z,DW0low |
||
466 | RRCA |
||
467 | LD B,A |
||
468 | OR C |
||
469 | LD C,A |
||
470 | EXX |
||
471 | INC L |
||
472 | EXX |
||
473 | JP (IY) |
||
474 | ENDIF |
||
475 | DISPLAY "DWJP=",$ |
||
476 | ;IF .$+(16*7+1)&256 |
||
435 | alone | 477 | align 256 ;DS .(-$) |
213 | alone | 478 | ;ENDIF |
479 | DWJP |
||
480 | _=17 |
||
481 | DUP 17 |
||
482 | LD H,(IX+_) ;Y � ⥪���� |
||
483 | LD E,(HL) ;-Y*N |
||
484 | LD A,(DE) |
||
485 | XOR C ;xor! |
||
486 | LD (DE),A |
||
487 | _=_-1 |
||
488 | EDUP |
||
489 | IF optres |
||
490 | ;LD A,C ;%11000000 |
||
491 | ;RRCA ;%01100000 |
||
492 | ;AND C ;%01000000 |
||
493 | ;JP Z,$+4 |
||
494 | ;LD C,A |
||
495 | LD C,B |
||
496 | ENDIF |
||
497 | RRC C |
||
498 | IF lores |
||
499 | RRC C |
||
500 | ENDIF |
||
501 | JP NC,DW0 |
||
502 | INC D |
||
503 | IF optres |
||
504 | LD A,D |
||
505 | CP scrbuf/256+scrwid |
||
506 | ELSE |
||
507 | DEC B |
||
508 | ENDIF |
||
509 | JP NZ,DW0 |
||
510 | RET |
||
435 | alone | 511 | endif ;~atm |
213 | alone | 512 | |
435 | alone | 513 | if atm |
213 | alone | 514 | DWCLSALL |
1965 | alone | 515 | LD D,ceilingcolourbyte;%11111111 |
213 | alone | 516 | LD HL,#4000+36 |
517 | CALL DWCLS |
||
518 | LD HL,#6000+36 |
||
519 | CALL DWCLS |
||
1965 | alone | 520 | LD D,floorcolourbyte;%11110110 |
213 | alone | 521 | LD HL,#4000+(108*40)+36 |
522 | CALL DWCLS |
||
523 | LD HL,#6000+(108*40)+36 |
||
524 | ;CALL DWCLS |
||
525 | DWCLS |
||
526 | LD A,(timer) |
||
527 | PUSH HL |
||
528 | PUSH AF |
||
529 | LD (dwclsp),SP |
||
530 | LD BC,40 |
||
531 | ;LD D,B ;=0 |
||
532 | LD E,D |
||
435 | alone | 533 | LD A,scrhgt/2-8 |
213 | alone | 534 | DWCL0 LD SP,HL |
535 | DUP 16;20 |
||
536 | PUSH DE |
||
537 | EDUP |
||
538 | ADD HL,BC |
||
539 | DEC A |
||
540 | JP NZ,DWCL0 |
||
541 | dwclsp=$+1 |
||
542 | LD SP,0 |
||
543 | POP AF |
||
544 | LD HL,timer |
||
545 | CP (HL) |
||
546 | POP HL |
||
547 | RET Z |
||
548 | ;int detected - clear left |
||
549 | LD BC,-34 |
||
550 | ADD HL,BC |
||
551 | LD A,D |
||
552 | LD DE,39 |
||
435 | alone | 553 | LD B,scrhgt/2-8 |
213 | alone | 554 | DWCL1 LD (HL),D |
555 | INC HL |
||
556 | LD (HL),D |
||
557 | ADD HL,DE |
||
558 | DJNZ DWCL1 |
||
559 | LD D,A ;keep D |
||
560 | RET |
||
561 | |||
562 | DRAWWALLS |
||
563 | ;A=0..1 - ����� ��⯫��� |
||
564 | LD (dwloopsp),SP |
||
565 | LD BC,40 |
||
566 | LD IX,DWLOOP0 |
||
567 | EXX |
||
568 | LD E,A ;0..1 |
||
569 | LD H,tID/256 |
||
570 | ;LD BC,#3FF7 ;(����� ���� ���� + ���) |
||
571 | JP DWLOOPGO |
||
572 | DWLOOP0 |
||
438 | alone | 573 | LD SP,SPOIL6BSTACK;-2 ;����� ������ |
213 | alone | 574 | EXX |
575 | LD A,E |
||
576 | ADD A,2 ;�⮡� �� ������� ���. ��࠭� ����� �⮫��� |
||
577 | CP scrwid*4 |
||
578 | jr NC,DWLOOPQ |
||
579 | LD E,A |
||
580 | DWLOOPGO |
||
581 | LD D,distbuf/256 |
||
582 | LD A,(DE) ;ID |
||
583 | RRCA |
||
763 | alone | 584 | ADD A,A ;䫠� ��ઠ�쭮�� � CY ;TODO �ᮢ��� ��� ⠪, �⮡� �� ����拉 ����� �� �뫨 ����ઠ���, ���� - �� ��ઠ��� (⮣�� � ��ઠ�쭮��� �� �㦭� �㤥� �࠭���?) |
765 | alone | 585 | ;set 7,a ;������ ������� ID_DOOR (������ ����� < 128) |
213 | alone | 586 | INC D |
587 | LD L,A |
||
588 | LD A,(HL) |
||
434 | alone | 589 | ;ld (pg8000),a |
1620 | alone | 590 | SETPG8000 ;OUT (C),A ;pg[ID] |
213 | alone | 591 | INC L |
592 | LD A,(DE) ;texx=#40..#7F |
||
593 | jr NC,$+3 |
||
594 | CPL ;��ઠ�쭠� |
||
435 | alone | 595 | AND 0x3F ; |
596 | or 0x80 ;TODO 㦥 � ray? |
||
213 | alone | 597 | LD HY,A |
598 | INC D |
||
599 | LD A,(HL) ;laddr[ID] = #02/#42/#82/#C2 |
||
600 | LD LY,A |
||
435 | alone | 601 | LD A,(DE) ;scale = 0..0x3f |
213 | alone | 602 | EXX |
603 | LD E,(IY-2) |
||
604 | LD D,(IY-1) ;INT-PROOF |
||
435 | alone | 605 | ADD A,A ; |
606 | ADD A,A ;�� ���௮��樨 ����� ��ࠡ���� scale ����� ⠡���� tlogd2sca |
||
607 | ;NC |
||
213 | alone | 608 | LD L,A |
609 | LD H,tscaljps/256 |
||
610 | EXX |
||
611 | LD A,E |
||
435 | alone | 612 | rra;SRL A |
213 | alone | 613 | SRL A ;CY=0 ��� +0, CY=1 ��� +#2000 |
614 | EXX |
||
615 | LD SP,IY |
||
616 | JP (HL) |
||
617 | DWLOOPQ |
||
618 | dwloopsp=$+1 |
||
619 | LD SP,0 |
||
620 | RET |
||
435 | alone | 621 | ENDIF ;atm |
213 | alone | 622 | |
623 | ;===================== |
||
624 | IF sprites |
||
625 | |||
626 | IF optresspr |
||
627 | DRAWSPRITEloresspr_hires |
||
628 | SLA E |
||
629 | RL D |
||
630 | LD B,H |
||
631 | LD C,L ;x |
||
632 | PUSH IX |
||
633 | POP HL |
||
634 | LD L,#FF ;texx LSB |
||
1982 | alone | 635 | ;LD LX,A ;scale |
213 | alone | 636 | EXX |
637 | LD C,LX ;scale |
||
638 | EXX |
||
435 | alone | 639 | |
640 | ;find left visible margin of sprite |
||
213 | alone | 641 | INC C |
642 | INC C |
||
643 | DRAWLl0 DEC C ;x |
||
644 | DEC C |
||
645 | jr Z,DRAWLl0Q |
||
646 | LD A,(BC) |
||
647 | CP LX |
||
648 | jr NC,DRAWLlQ |
||
649 | ADD HL,DE ;DE>0 |
||
650 | LD A,#FF ;texxright |
||
651 | CP H |
||
652 | JP P,DRAWLl0 |
||
653 | JR DRAWLlQ |
||
654 | DRAWLl0Q ;x=0 |
||
655 | LD A,(BC) |
||
656 | CP LX |
||
657 | jr NC,DRAWLlQ |
||
658 | ADD HL,DE ;DE>0 |
||
659 | DEC C ;x |
||
660 | DEC C |
||
661 | DRAWLlQ ;H,C out of range |
||
435 | alone | 662 | |
663 | ;scan sprite to the right and keep H=texx in stack |
||
213 | alone | 664 | INC C ;x in range |
665 | INC C |
||
666 | XOR A |
||
667 | SUB E |
||
668 | LD E,A |
||
669 | SBC A,D |
||
670 | SUB E |
||
671 | LD D,A |
||
672 | LD HX,1;B,1 ;sprite width counter |
||
673 | DRAWRl0 |
||
674 | LD A,(BC) |
||
675 | CP LX |
||
676 | jr NC,DRAWRlQ |
||
677 | ADD HL,DE ;DE<0 |
||
678 | LD A,#7F ;texxleft-1 |
||
679 | CP H ;texxleft |
||
680 | jr NC,DRAWRlQ |
||
681 | PUSH HL ;H in range |
||
682 | INC HX;B |
||
683 | INC C ;x |
||
684 | INC C |
||
685 | JP NZ,DRAWRl0 |
||
686 | DRAWRlQ ;H,C out of range |
||
435 | alone | 687 | |
213 | alone | 688 | DEC HX;B |
689 | RET Z ;width=0, stack is empty |
||
435 | alone | 690 | |
213 | alone | 691 | DEC C ;x in range |
692 | DEC C |
||
693 | LD A,C ;x |
||
694 | RRA |
||
695 | RRA |
||
696 | RRA |
||
697 | AND 31 |
||
698 | ADD A,scrbuf/256 |
||
699 | LD D,A |
||
700 | LD A,C |
||
701 | RRA |
||
702 | AND 3 |
||
703 | INC A |
||
704 | LD B,A |
||
705 | LD A,#03 |
||
706 | RRCA |
||
707 | RRCA |
||
708 | DJNZ $-2 |
||
709 | LD C,A |
||
710 | CPL |
||
711 | LD B,A |
||
712 | ;D=scrbuf/256 |
||
713 | ;B=running 0 |
||
714 | ;C=running 1 |
||
715 | ;D'=ID |
||
716 | ;C'=scale |
||
717 | LD A,7 ;rlca |
||
718 | JP SDRAWPATCH ;SDRAW0 |
||
719 | ENDIF |
||
720 | |||
721 | DRAWSPRITE |
||
435 | alone | 722 | ;don't spoil iy! |
723 | ;a=scale# = 0..0x3f |
||
724 | ;H=distbuf/256+2 ;ID,texx,dist |
||
725 | ;l=x |
||
726 | ;DE=texx step |
||
440 | alone | 727 | ;HX=texxmid |
728 | ;D'=ID (�� atm) |
||
2002 | alone | 729 | |
730 | LD LX,A ;scale |
||
731 | |||
732 | if atm |
||
733 | exx |
||
734 | ld a,d |
||
735 | add a,a |
||
736 | jr nc,$+4 |
||
737 | ld a,16*2 ;������ ��� go2 |
||
738 | ;push af |
||
739 | add a,a |
||
740 | ld hl,tsprites;-4 |
||
741 | add a,l |
||
742 | ld l,a |
||
743 | jr nc,$+3 |
||
744 | inc h |
||
745 | ld a,(hl) |
||
746 | ; ld (drawspritepg),a |
||
747 | ;drawspritepg=$+1 |
||
748 | ; ld a,(ttexpgs+NTEXPGS) |
||
749 | ld b,ttexpgs/256 |
||
750 | ld c,a |
||
751 | ld a,(bc) |
||
1620 | alone | 752 | SETPGC000 |
2002 | alone | 753 | inc hl |
754 | ld a,(hl) |
||
755 | LD HX,a;#80+22;#C0 ;texx_center |
||
756 | ;ld hx,22/2 |
||
757 | inc hl |
||
758 | ld a,(hl) |
||
759 | ld (drawspritetexxleft),a |
||
760 | inc hl |
||
761 | ld a,(hl) |
||
762 | ld (drawspritetexxright),a |
||
1958 | alone | 763 | exx |
2002 | alone | 764 | ;pop af |
765 | endif |
||
766 | |||
767 | if !atm |
||
768 | exx |
||
769 | ld a,d ;ID |
||
770 | add a,a |
||
771 | push af |
||
772 | if doublescr |
||
773 | and (spritesinpg*2-1)*2 |
||
774 | else |
||
775 | and (spritesinpg-1)*2 |
||
776 | endif |
||
777 | add a,0xc0+(texturesinpg*2);0xea |
||
778 | ld d,a |
||
779 | if doublescr |
||
1982 | alone | 780 | cp 0xc0+(texturesinpg*2)+(spritesinpg*2) |
1958 | alone | 781 | jr c,$+4 |
1982 | alone | 782 | sub spritesinpg*2 ;NC |
1958 | alone | 783 | ld d,a |
784 | exx |
||
785 | ld a,0x10 |
||
786 | jr c,$+4 |
||
787 | ld a,0x10+pgtmp |
||
2002 | alone | 788 | call SETPG |
789 | endif |
||
1958 | alone | 790 | pop af |
2002 | alone | 791 | jr nc,DRAWSPRITE_nomirror |
792 | XOR A |
||
793 | SUB E |
||
794 | LD E,A |
||
795 | SBC A,D |
||
796 | SUB E |
||
797 | LD D,A ;6912 only! |
||
798 | DRAWSPRITE_nomirror |
||
799 | endif |
||
435 | alone | 800 | |
1982 | alone | 801 | |
2002 | alone | 802 | if FATMONSTERS |
1996 | alone | 803 | push hl |
1982 | alone | 804 | XOR A |
805 | SUB E |
||
1996 | alone | 806 | LD l,A |
1982 | alone | 807 | SBC A,D |
1996 | alone | 808 | SUB l |
809 | LD h,A |
||
810 | sra d |
||
811 | rr e |
||
812 | sra d |
||
813 | rr e |
||
814 | add hl,de |
||
815 | ex de,hl |
||
816 | pop hl |
||
2002 | alone | 817 | else |
818 | XOR A |
||
819 | SUB E |
||
820 | LD E,A |
||
821 | SBC A,D |
||
822 | SUB E |
||
823 | LD D,A |
||
1982 | alone | 824 | endif |
825 | |||
213 | alone | 826 | IF optresspr |
2002 | alone | 827 | ld a,lx ;scale |
213 | alone | 828 | CP lowmaxscale |
829 | JP NC,DRAWSPRITEloresspr_hires |
||
830 | ENDIF |
||
831 | LD B,H |
||
832 | LD C,L ;x |
||
440 | alone | 833 | ld a,hx ;texxmid |
834 | ld h,a |
||
835 | LD L,0xFF ;texx LSB |
||
435 | alone | 836 | if atm==0 |
213 | alone | 837 | EXX |
838 | LD C,LX ;scale |
||
839 | EXX |
||
435 | alone | 840 | endif |
841 | |||
440 | alone | 842 | ;find left visible margin of sprite |
843 | ;TODO fix �ய�饭� ������� 0 |
||
844 | ;TODO �ᮢ��� ���� �� 業�� �� ���� ��� �ࠢ� �ࠥ� ��࠭� |
||
438 | alone | 845 | |
213 | alone | 846 | INC C |
847 | IF loresspr_hires |
||
848 | INC C |
||
849 | ENDIF |
||
850 | DRAWL0 DEC C ;x |
||
851 | IF loresspr_hires |
||
852 | DEC C |
||
853 | ENDIF |
||
854 | jr Z,DRAWL0Q |
||
855 | LD A,(BC) |
||
856 | CP LX |
||
857 | jr NC,DRAWLQ |
||
440 | alone | 858 | ; ADD HL,DE ;DE>0 |
859 | ; jr c,DRAWLQ |
||
860 | ; ld a,h |
||
861 | ;drawspritetexxright=$+1 |
||
862 | ; cp 44/2 ;0xFF ;texxright |
||
863 | ; JP C,DRAWL0 |
||
864 | ADD HL,DE ;DE<0 |
||
1909 | alone | 865 | if atm |
440 | alone | 866 | jr NC,DRAWLQtexx0 |
867 | ld a,h |
||
868 | drawspritetexxleft=$+1 |
||
869 | cp 0 ;texxleft |
||
870 | jr NC,DRAWL0 |
||
1909 | alone | 871 | else |
872 | ld a,0xff ;texxright ;TODO |
||
873 | cp h |
||
874 | jp p,DRAWL0 |
||
875 | endif |
||
440 | alone | 876 | DRAWLQtexx0 |
213 | alone | 877 | JR DRAWLQ |
440 | alone | 878 | ; or a |
879 | ; sbc hl,de ;������ |
||
880 | ; JR DRAWLQ |
||
213 | alone | 881 | DRAWL0Q ;x=0 |
882 | LD A,(BC) |
||
883 | CP LX |
||
884 | jr NC,DRAWLQ |
||
885 | ADD HL,DE ;DE>0 |
||
886 | DEC C ;x |
||
887 | IF loresspr_hires |
||
888 | DEC C |
||
889 | ENDIF |
||
890 | DRAWLQ ;H,C out of range |
||
435 | alone | 891 | |
892 | ;scan sprite to the right and keep H=texx in stack |
||
213 | alone | 893 | XOR A |
894 | SUB E |
||
895 | LD E,A |
||
896 | SBC A,D |
||
897 | SUB E |
||
898 | LD D,A |
||
440 | alone | 899 | |
900 | INC C ;x in range |
||
901 | IF loresspr_hires |
||
902 | INC C |
||
903 | ENDIF |
||
904 | |||
213 | alone | 905 | LD HX,1;B,1 ;sprite width counter |
1909 | alone | 906 | if atm |
440 | alone | 907 | LD A,(BC) |
908 | CP LX |
||
909 | jr NC,DRAWRQ |
||
910 | add hl,de ;��ࢮ� ����� �� ���塞! |
||
911 | jp DRAWR0GO |
||
1909 | alone | 912 | endif |
440 | alone | 913 | |
213 | alone | 914 | DRAWR0 |
915 | LD A,(BC) |
||
916 | CP LX |
||
917 | jr NC,DRAWRQ |
||
440 | alone | 918 | ; ADD HL,DE ;DE<0 |
919 | ; jr NC,DRAWRQ |
||
920 | ; ld a,h |
||
921 | ;drawspritetexxleft=$+1 |
||
922 | ; cp 0 ;texxleft |
||
923 | ; jr C,DRAWRQ |
||
924 | ADD HL,DE ;DE>0 |
||
1909 | alone | 925 | if atm |
440 | alone | 926 | jr c,DRAWRQ |
927 | DRAWR0GO |
||
928 | ld a,h |
||
929 | drawspritetexxright=$+1 |
||
930 | cp 44/2 ;0xFF ;texxright |
||
1909 | alone | 931 | else |
932 | ld a,0x7f ;texxleft-1 |
||
933 | cp h |
||
934 | endif |
||
440 | alone | 935 | JP NC,DRAWRQ |
213 | alone | 936 | PUSH HL ;H in range |
937 | INC HX;B |
||
938 | INC C ;x |
||
939 | IF loresspr_hires |
||
940 | INC C |
||
941 | ENDIF |
||
942 | IF lores |
||
943 | JP P,DRAWR0 |
||
944 | ELSE |
||
945 | JP NZ,DRAWR0 |
||
946 | ENDIF |
||
947 | DRAWRQ ;H,C out of range |
||
435 | alone | 948 | |
213 | alone | 949 | DEC HX;B |
950 | RET Z ;width=0, stack is empty |
||
435 | alone | 951 | |
213 | alone | 952 | DEC C ;x in range |
953 | IF loresspr_hires |
||
954 | DEC C |
||
955 | ENDIF |
||
435 | alone | 956 | |
957 | if atm |
||
958 | ;de=f(scale#,x) |
||
959 | ;scr=f(x) |
||
960 | push bc |
||
961 | ;lx=scale# = 0..63 |
||
437 | alone | 962 | |
963 | LD hl,tscales_rev |
||
964 | ld a,lx |
||
965 | add a,a |
||
966 | add a,l |
||
967 | ld l,a |
||
968 | jr nc,$+3 |
||
969 | inc h |
||
970 | LD C,(HL) |
||
971 | INC HL |
||
972 | LD B,(HL) ;BC=scale |
||
973 | ld (drawsprscalebc),bc ;蠣 �� ⥪����(+7.8) = 64/hgt = 1/scale |
||
974 | |||
435 | alone | 975 | LD hl,tscales |
976 | ld a,lx |
||
977 | add a,a |
||
978 | add a,l |
||
979 | ld l,a |
||
980 | jr nc,$+3 |
||
981 | inc h |
||
982 | LD C,(HL) |
||
983 | INC HL |
||
437 | alone | 984 | LD B,(HL) ;BC=scale(+7.8) = 1/4(hgt=16) ... 4.0(hgt=256) ;hgt=64*scale |
435 | alone | 985 | ;bc=scale |
986 | call scale2ytop |
||
987 | ;out: de=Y, lx=y |
||
988 | |||
437 | alone | 989 | if 1==0 |
435 | alone | 990 | srl b |
991 | rr c |
||
992 | srl b |
||
993 | rr c |
||
994 | ld h,d |
||
995 | ld l,e |
||
996 | add hl,bc ;ylow |
||
997 | ld a,h |
||
998 | or a |
||
999 | ld a,l |
||
1000 | jr nz,prsprtoolow |
||
1001 | cp scrhgt |
||
1002 | jr c,$+4 |
||
1003 | prsprtoolow |
||
1004 | ld a,scrhgt |
||
437 | alone | 1005 | endif |
435 | alone | 1006 | |
1007 | inc d |
||
1008 | dec d |
||
1009 | jr Z,drawsprnottoohigh |
||
1010 | ld de,0 |
||
1011 | drawsprnottoohigh |
||
1012 | |||
437 | alone | 1013 | ;sub e |
1014 | ;ld (drawsprscale),a ;ॠ�쭮� � �뢮����� ��ப (TODO ᤥ���� ��ଠ�쭮 � �㬮�) |
||
435 | alone | 1015 | |
1016 | ;LD A,D |
||
1017 | ;OR A |
||
1018 | ;jr NZ,drawsprTOP |
||
1019 | ;LD A,E |
||
1020 | ;CP Ytop |
||
1021 | ;jr C,drawsprTOP |
||
1022 | CALL YtoADDR |
||
1023 | ; JR drawsprnTOP |
||
1024 | ;drawsprTOP |
||
1025 | ; LD DE,scrtop |
||
1026 | ;drawsprnTOP |
||
1027 | |||
1028 | pop bc |
||
1029 | LD A,C ;xright! |
||
1030 | ;RRA |
||
1031 | RRA |
||
1032 | rra |
||
1033 | jr nc,$+4 |
||
798 | alone | 1034 | set 5,d |
435 | alone | 1035 | and 31 |
1036 | add a,e |
||
1037 | ld e,a |
||
1038 | jr nc,$+3 |
||
798 | alone | 1039 | inc d |
435 | alone | 1040 | |
798 | alone | 1041 | ld a,(getuser_scr_high_patch) |
1042 | ld (SDRAW0_scrpgaddr),a |
||
1043 | ld (SDRAW0_scrpgaddr2),a |
||
1044 | ld (SDRAW0_scrpgaddr3),a |
||
1045 | ld hl,(getuser_scr_low_patch) |
||
1046 | xor l |
||
1047 | ld (SDRAW0_scrpgaddrxor),a |
||
1048 | |||
1049 | ;call getuser_scr_low |
||
1050 | ;ld (SDRAW0_scrpg),a ;TODO from x |
||
1051 | ;ld (SDRAW0_low),a |
||
1052 | ;ld h,a |
||
1053 | ;call getuser_scr_high |
||
1054 | ;xor h |
||
1055 | ;ld (SDRAW0_high_xor_low),a |
||
435 | alone | 1056 | |
1057 | else |
||
213 | alone | 1058 | LD A,C ;x |
1059 | RRA |
||
1060 | RRA |
||
1061 | IF lores == 0 |
||
1062 | RRA |
||
1063 | ENDIF |
||
1064 | AND 31 |
||
1065 | ADD A,scrbuf/256 |
||
1066 | LD D,A |
||
1067 | LD A,C |
||
1068 | IF loresspr_hires |
||
1069 | RRA |
||
1070 | ENDIF |
||
1071 | IF loresspr |
||
1072 | AND 3 |
||
1073 | ELSE |
||
1074 | AND 7 |
||
1075 | ENDIF |
||
1076 | INC A |
||
1077 | LD B,A |
||
1078 | IF loresspr == 0 |
||
1079 | LD A,#01 |
||
1080 | ELSE |
||
1081 | LD A,#03 |
||
1082 | ENDIF |
||
1083 | DRAWRR0 RRCA |
||
1084 | IF loresspr |
||
1085 | RRCA |
||
1086 | ENDIF |
||
1087 | DJNZ DRAWRR0 |
||
1088 | LD C,A |
||
1089 | CPL |
||
1090 | LD B,A |
||
435 | alone | 1091 | ;D=scrbuf/256, B=running 0, C=running 1 (~atm) |
1092 | endif ;~atm |
||
1093 | |||
213 | alone | 1094 | ;D'=ID |
435 | alone | 1095 | ;C'=scale# |
1096 | IF optresspr ;~atm |
||
213 | alone | 1097 | XOR A |
435 | alone | 1098 | |
213 | alone | 1099 | SDRAWPATCH |
1100 | LD (sdrawrlca),A |
||
1101 | ENDIF |
||
435 | alone | 1102 | |
1103 | if atm==0 |
||
1104 | SDRAW0 |
||
1105 | ;EOR-fill the column, then draw sprite column (pop hl from the stack, H=texx) |
||
1106 | ;D=scrbuf/256, B=running 0, C=running 1 (~atm) |
||
213 | alone | 1107 | LD H,D |
435 | alone | 1108 | LD L,scrbufflag&0xff |
213 | alone | 1109 | BIT 7,(HL) |
1110 | JP NZ,SDRAWnX ;already filled |
||
1111 | LD (HL),H ;>=128: eorcopy |
||
1112 | EXX |
||
1113 | LD A,C |
||
1114 | EXX |
||
1115 | CP lowmaxscale |
||
1116 | jr NC,SDRAWXhigh |
||
435 | alone | 1117 | LD L,lowscrbuf&0xff |
213 | alone | 1118 | LD E,lowscrhgt/2-1 |
1119 | XOR A |
||
1120 | SDRAWXlow1 ; |
||
1121 | DUP 16 |
||
1122 | XOR (HL) |
||
1123 | LD (HL),A |
||
1124 | INC L |
||
1125 | EDUP |
||
1126 | DEC E |
||
1127 | JP P,SDRAWXlow1 |
||
1962 | alone | 1128 | LD A,+(scrhgt-lowscrhgt)/2 |
213 | alone | 1129 | SDRAWXlow2 ; |
1130 | DUP 8 |
||
1131 | LD (HL),E ;-1 |
||
1132 | INC L |
||
1133 | EDUP |
||
1134 | DEC A |
||
1135 | JP NZ,SDRAWXlow2 |
||
1136 | JP SDRAWnX |
||
1137 | SDRAWXhigh |
||
435 | alone | 1138 | LD L,scrbuf&0xff |
213 | alone | 1139 | LD E,scrhgt/2 |
1140 | XOR A |
||
1141 | SDRAWX ; |
||
1142 | DUP 16 |
||
1143 | XOR (HL) |
||
1144 | LD (HL),A |
||
1145 | INC L |
||
1146 | EDUP |
||
1147 | DEC E |
||
1148 | JP NZ,SDRAWX |
||
1149 | SDRAWnX ; |
||
435 | alone | 1150 | |
213 | alone | 1151 | SDRAW1 ;pixel column |
1152 | EXX |
||
1153 | ;D=ID |
||
435 | alone | 1154 | ;C=scale# |
213 | alone | 1155 | POP HL |
1156 | LD L,H ;texx |
||
1157 | IF scale64 |
||
1158 | SRL L |
||
1159 | ENDIF |
||
1160 | LD H,D |
||
1161 | LD A,(HL) |
||
1162 | INC H |
||
1163 | LD H,(HL) |
||
1164 | LD L,A ;HL=spr |
||
1165 | ;D'=scrbuf/256 |
||
1166 | ;B'=running 0 |
||
1167 | ;C'=running 1 |
||
1168 | JP SCALESPRITEGO |
||
1169 | |||
435 | alone | 1170 | else ;~atm |
1171 | ;��㥬 �ࠢ� ������ |
||
1172 | SDRAW0 |
||
798 | alone | 1173 | SDRAW0_scrpgaddr2=$+1 |
1174 | ld hl,user_scr0_high ;ok |
||
1175 | ld a,l |
||
1176 | jr SDRAW0go |
||
1177 | SDRAW0loop |
||
435 | alone | 1178 | ;de=screen |
1179 | ;D'=ID |
||
1180 | ;C'=scale# |
||
798 | alone | 1181 | SDRAW0_scrpgaddr=$+1 |
1182 | ld hl,user_scr0_high ;ok |
||
1183 | ld a,l |
||
1184 | SDRAW0_scrpgaddr3=$+1 |
||
1185 | cp 0 |
||
1186 | jr nz,SDRAW0go |
||
1187 | bit 5,d |
||
1188 | res 5,d |
||
1189 | jr nz,SDRAW0go |
||
1190 | set 5,d |
||
1191 | dec de |
||
1192 | SDRAW0go |
||
1193 | SDRAW0_scrpgaddrxor=$+1 |
||
1194 | xor 0 |
||
1195 | ld (SDRAW0_scrpgaddr),a |
||
1196 | ld a,(hl) |
||
1197 | |||
435 | alone | 1198 | POP HL |
1620 | alone | 1199 | SETPG4000 |
435 | alone | 1200 | ;4000: screen |
438 | alone | 1201 | ;c000: texture (㦥 ���⠢���� � ��砫� DRAWSPRITE) |
448 | alone | 1202 | ;8000: scaler (TODO) |
798 | alone | 1203 | ld a,h ;texx=#00..#FF |
435 | alone | 1204 | |
437 | alone | 1205 | push de |
438 | alone | 1206 | exx |
1207 | pop hl |
||
1208 | push hl |
||
1209 | ld bc,40 |
||
1210 | ld e,IMPOSSIBLECOLOR |
||
1211 | exx |
||
437 | alone | 1212 | |
438 | alone | 1213 | ld hl,0xc000 |
1214 | ld e,a |
||
437 | alone | 1215 | drawsprscalebc=$+1 |
798 | alone | 1216 | ld bc,0 |
435 | alone | 1217 | drawspr00 |
438 | alone | 1218 | ld d,h |
437 | alone | 1219 | ld a,(de) |
438 | alone | 1220 | exx |
1221 | cp e;IMPOSSIBLECOLOR |
||
437 | alone | 1222 | jr z,$+3 |
1223 | ld (hl),a |
||
438 | alone | 1224 | add hl,bc |
1225 | exx |
||
1226 | add hl,bc |
||
437 | alone | 1227 | jp nc,drawspr00 ;/m |
435 | alone | 1228 | |
437 | alone | 1229 | pop de |
435 | alone | 1230 | |
1231 | DEC HX;B ;todo E'? |
||
798 | alone | 1232 | JP nz,SDRAW0loop |
1233 | ret |
||
435 | alone | 1234 | endif ;atm |
1235 | |||
1236 | if atm == 0 |
||
1237 | |||
213 | alone | 1238 | ;�뢮� �ࠩ⮢: y,yEND1,yEND0 |
1239 | ;y=yEND1: �ய�� �ᮢ���� ������ |
||
1240 | ;0 ����� ⠪�� ��������� �� ����/��� ��� � ����讬 ����⠡� |
||
1241 | ;y=#C0, yEND1=#FF: ����� ⥪����� - ��� ᯥ樠���� Y, |
||
1242 | ;����� � ⠡��� ᮮ⢥������ ����⠭�� �� �� ����⠡� |
||
1243 | ;����� ����, ����⠭��� �� ������-� ����⠡�? |
||
1244 | ;yEND0=yEND1: �ய�� �ᮢ���� �㫥� |
||
1245 | ;0 ����� ⠪�� ��������� �� ����/��� ��� � ����讬 ����⠡� |
||
1246 | maxlinehgt=59 |
||
435 | alone | 1247 | align 256 ;DS .(-$) |
213 | alone | 1248 | |
1249 | ;��㣫� ����: �ய�� �ᮢ���� �㫥� |
||
1250 | JP EXXSCALESPRITE1 |
||
435 | alone | 1251 | DS 0xff&(-(4*maxlinehgt)-$) |
213 | alone | 1252 | SCALESPRITE0DRAW |
1253 | ;�ᮢ���� �㫥� (AND B) |
||
1254 | DUP maxlinehgt ;MAX=62(59 � SCALESPRITELOOP) |
||
1255 | ;����訥 ������ ������ �㡨�� �� ��� |
||
1256 | LD A,(DE) |
||
1257 | AND B |
||
1258 | LD (DE),A |
||
1259 | DEC E |
||
1260 | EDUP |
||
1261 | EXXSCALESPRITE1 |
||
1262 | ;��㣫� ���� |
||
1263 | DISPLAY $,"=#XX00" |
||
1962 | alone | 1264 | EXX |
213 | alone | 1265 | INC L |
1266 | SCALESPRITEGO |
||
1267 | ;HL=spr |
||
1268 | ;D=ID |
||
1269 | ;C=scale |
||
1270 | ;D'=scrbuf/256 |
||
1271 | ;(HL'=tempjp) |
||
1272 | ;B'=running 0 |
||
1273 | ;C'=running 1 |
||
1274 | LD B,(HL) ;Y � ⥪���� ��� #C0(�⠥� 0) |
||
1275 | INC L |
||
1962 | alone | 1276 | LD A,(BC) ;Y*N (0 � ���� ⥪�����) |
213 | alone | 1277 | EXX |
1278 | LD E,A |
||
1279 | ;SCALESPRITE1GO |
||
1280 | EXX |
||
1281 | LD B,(HL) ;Y2 � ⥪���� (<=Y) ��� #FF(�⠥� 1) |
||
1282 | INC L |
||
1962 | alone | 1283 | LD A,(BC) ;Y2*N (1 � ���� ⥪�����) |
213 | alone | 1284 | EXX |
1285 | SUB E |
||
1286 | ADD A,A |
||
1287 | ADD A,A |
||
1982 | alone | 1288 | LD L,A ;(=4 � ���� ⥪�����) |
213 | alone | 1289 | LD H,SCALESPRITE1DRAW/256 |
1290 | JP (HL) ;��㥬 ������� ��� ��室�� |
||
435 | alone | 1291 | align 256 ;DS .(-$) |
213 | alone | 1292 | ;��㣫� ����: �ய�� �ᮢ���� ������ |
1293 | JP EXXSCALESPRITE0 |
||
1294 | NOP |
||
1982 | alone | 1295 | ;ᯥ栤�� 4: ����� ⥪����� |
213 | alone | 1296 | ;��� � �������: #C0(�⠥� 0),#FF(�⠥� 1) |
1297 | SDRAW0SKIPQ |
||
1298 | DEC HX;B ;todo E'? |
||
1299 | RET Z |
||
1300 | LD A,C |
||
1301 | RLCA |
||
1302 | IF loresspr|optresspr |
||
1303 | sdrawrlca=$ |
||
1304 | RLCA |
||
1305 | ENDIF |
||
1306 | LD C,A |
||
1307 | CPL |
||
1308 | LD B,A |
||
1309 | JP NC,SDRAW1 |
||
1310 | DEC D |
||
1311 | JP SDRAW0 |
||
1312 | DISPLAY $ |
||
435 | alone | 1313 | DS 0xff&(-(4*maxlinehgt)-$) |
213 | alone | 1314 | DISPLAY "=",$ |
1315 | SCALESPRITE1DRAW |
||
1316 | ;�ᮢ���� ������ (OR C) |
||
1317 | DUP maxlinehgt ;MAX=63 |
||
1318 | ;����訥 ������ ������ �㡨�� �� ��� |
||
1319 | LD A,(DE) |
||
1320 | OR C |
||
1321 | LD (DE),A |
||
1322 | DEC E |
||
1323 | EDUP |
||
1324 | ;ORG $-1 |
||
1325 | EXXSCALESPRITE0 |
||
1326 | EXX |
||
1327 | ;��㣫� ���� |
||
1328 | LD B,(HL) ;Y3 � ⥪���� (<=Y2) |
||
1329 | LD A,(BC) ;Y3*N |
||
1330 | EXX |
||
1331 | SUB E |
||
1332 | ADD A,A |
||
1333 | ADD A,A |
||
1334 | LD L,A |
||
1335 | LD H,SCALESPRITE0DRAW/256 |
||
1336 | JP (HL) ;��㥬 �㫨 |
||
1337 | |||
1338 | IF 0 |
||
1339 | testsprite |
||
1340 | DB #F0,#EF,#E7 |
||
1341 | DB #D2,#D0,#C4 |
||
1342 | DB #C0,#FF |
||
1343 | ENDIF |
||
1344 | |||
435 | alone | 1345 | endif ;~atm |
1346 | |||
213 | alone | 1347 | ENDIF ;sprites |