Rev 2080 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1903 | alone | 1 | DEVICE ZXSPECTRUM128 |
1916 | alone | 2 | include "settings.asm" |
1903 | alone | 3 | |
2082 | alone | 4 | ;music=doublescr |
1958 | alone | 5 | |
1916 | alone | 6 | NTEXPGS=0 |
1958 | alone | 7 | ;curpg=0x5b5c |
213 | alone | 8 | |
1916 | alone | 9 | pgtmp=#04 |
1977 | alone | 10 | pgmusic=#06 |
435 | alone | 11 | |
1982 | alone | 12 | texturesinpg=12 |
13 | spritesinpg=8;4 |
||
14 | |||
213 | alone | 15 | ;tcos=#5B00 |
16 | imer=#7F7F |
||
1916 | alone | 17 | INTSTACK=imer |
1909 | alone | 18 | imstackbegin=imer&0xff00 |
213 | alone | 19 | distbuf=#7C00 ;#300 ;ID,texx,dist |
435 | alone | 20 | |
1903 | alone | 21 | page 0 |
22 | ORG #6000;,0 |
||
213 | alone | 23 | begin |
1907 | alone | 24 | jp init |
25 | IF doublescr |
||
1977 | alone | 26 | SETPGmusic_silent |
27 | ld a,pgmusic |
||
28 | jr SETPG_silent |
||
1907 | alone | 29 | SETPG |
30 | LD (curpg),A |
||
1977 | alone | 31 | SETPG_silent |
1907 | alone | 32 | curscr=$+1 |
33 | OR 0 |
||
34 | LD BC,#7FFD |
||
35 | OUT (C),A |
||
36 | RET |
||
37 | ENDIF |
||
38 | |||
1977 | alone | 39 | include "my_int.asm" |
1907 | alone | 40 | INCLUDE "WCTRL.ASM" |
41 | |||
1960 | alone | 42 | include "beeper.asm" |
43 | include "beeper_sfxdata.asm" |
||
1962 | alone | 44 | include "anims.asm" |
45 | include "savestate.asm" |
||
1960 | alone | 46 | |
2080 | alone | 47 | drawhud |
48 | ;뢠 ZXLOOP |
||
49 | IF doublescr |
||
50 | LD A,#17 |
||
51 | CALL SETPG |
||
52 | ENDIF |
||
53 | ld hl,sprweapon1 |
||
54 | ld de,0x50e0 |
||
55 | call drawsprchr2 |
||
56 | inc e |
||
57 | call drawsprchr2 |
||
58 | inc e |
||
59 | call drawsprchr2 |
||
60 | inc e |
||
61 | call drawsprchr2 |
||
62 | inc e |
||
63 | call drawsprchr ;sprbullets |
||
64 | ld a,(bullets) |
||
65 | call draw99 |
||
66 | inc e |
||
67 | call drawsprchr ;sprgrenades |
||
68 | ld a,(grenades) |
||
69 | call draw9 |
||
70 | inc e |
||
71 | ld a,(leveltime+1) |
||
72 | call draw99 |
||
73 | ld a,(leveltime) |
||
74 | call draw99 |
||
75 | ld bc,0x52e0+21 |
||
76 | call drawhuddot |
||
77 | ld bc,0x55e0+21 |
||
78 | call drawhuddot |
||
79 | inc e |
||
80 | call drawsprchr ;sprhealth |
||
81 | ;drawhudhealth |
||
82 | if doublescr |
||
83 | push de |
||
84 | call drawhudhealth_1scr |
||
85 | pop de |
||
86 | set 7,d |
||
87 | drawhudhealth_1scr |
||
88 | endif |
||
89 | ex de,hl |
||
90 | inc h |
||
91 | ;ld hl,0x50e0+25 |
||
92 | ld a,(health) |
||
93 | srl a |
||
94 | ld e,a |
||
95 | drawhudhealthline0 |
||
96 | push hl |
||
97 | ld (hl),0x3f |
||
98 | ld b,6 |
||
99 | inc l |
||
100 | ld (hl),0xff |
||
101 | djnz $-3 |
||
102 | pop hl |
||
103 | inc h |
||
104 | bit 0,h |
||
105 | jr z,drawhudhealthline0 |
||
106 | ld (hl),0x20 |
||
107 | inc h |
||
108 | |||
109 | ld a,-4 |
||
110 | call drawhudhealthcolumncount |
||
111 | set 5,c |
||
112 | call drawhudhealthcolumn |
||
113 | call drawhudhealthcolumncountdraw2 |
||
114 | call drawhudhealthcolumncountdraw2 |
||
115 | drawhudhealthcolumncountdraw2 |
||
116 | call drawhudhealthcolumncountdraw |
||
117 | drawhudhealthcolumncountdraw |
||
118 | call drawhudhealthcolumncount |
||
119 | drawhudhealthcolumn |
||
120 | ;de=scraddr |
||
121 | ;c=1100000 .. |
||
122 | ld (hl),c |
||
123 | inc h |
||
124 | ld (hl),c |
||
125 | inc h |
||
126 | ld (hl),c |
||
127 | dec h |
||
128 | dec h |
||
129 | inc l |
||
130 | ret |
||
131 | |||
132 | drawhudhealthcolumncount |
||
133 | ;e=health |
||
134 | ;a=health left value |
||
135 | ld c,1 |
||
136 | drawhudhealthcolumncount0 |
||
137 | cp e |
||
138 | rl c |
||
139 | inc a |
||
140 | jr nc,drawhudhealthcolumncount0 |
||
141 | ret |
||
142 | |||
143 | draw99 |
||
144 | ld bc,10-256 |
||
145 | inc b |
||
146 | sub c |
||
147 | jr nc,$-2 |
||
148 | add a,c |
||
149 | push af |
||
150 | ld a,b |
||
151 | call draw9 |
||
152 | pop af |
||
153 | draw9 |
||
154 | push hl |
||
155 | add a,a |
||
156 | add a,a |
||
157 | add a,a |
||
158 | ld hl,sprdigits |
||
159 | add a,l |
||
160 | ld l,a |
||
161 | jr nc,$+3 |
||
162 | inc h |
||
163 | call drawsprchr |
||
164 | pop hl |
||
165 | ret |
||
166 | |||
167 | drawhuddot |
||
168 | if doublescr |
||
169 | call drawhuddot_1scr |
||
170 | set 7,b |
||
171 | drawhuddot_1scr |
||
172 | endif |
||
173 | ld a,(bc) |
||
174 | or 0x80 |
||
175 | ld (bc),a |
||
176 | ret |
||
177 | |||
178 | drawsprchr2 |
||
179 | call drawsprchr |
||
180 | drawsprchr |
||
181 | if doublescr |
||
182 | push de |
||
183 | push hl |
||
184 | set 7,d |
||
185 | call drawsprchr_1scr |
||
186 | pop hl |
||
187 | pop de |
||
188 | drawsprchr_1scr |
||
189 | endif |
||
190 | push de |
||
191 | ld b,8 |
||
192 | drawsprchr0 |
||
193 | ld a,(hl) |
||
194 | ld (de),a |
||
195 | inc hl |
||
196 | inc d |
||
197 | djnz drawsprchr0 |
||
198 | pop de |
||
199 | inc e |
||
200 | ret |
||
201 | |||
202 | |||
1907 | alone | 203 | ;६ ७ ( 砫 ७) |
204 | curXx |
||
205 | curx DB #80 |
||
206 | curX DB #0 |
||
207 | curYy |
||
208 | cury DB #80 |
||
209 | curY DB #0 |
||
210 | curxy DW 0 |
||
211 | curyx DW 0 |
||
212 | curYX DW 0 |
||
213 | curangle |
||
214 | DW tsin |
||
1977 | alone | 215 | if 0 |
1907 | alone | 216 | demobegin |
217 | IF demoplay |
||
218 | INCBIN "demorec*" |
||
219 | ELSE |
||
220 | DB %00111111 ;all keys released |
||
221 | ENDIF |
||
1977 | alone | 222 | endif |
1907 | alone | 223 | |
2080 | alone | 224 | include "hud.ast" |
225 | |||
1907 | alone | 226 | align 256 |
213 | alone | 227 | tlogd2sca |
1903 | alone | 228 | IF scale64 |
229 | IF scale64 == 3 |
||
213 | alone | 230 | INCBIN "logd2sc3" |
231 | ELSE |
||
232 | INCBIN "logd2sc2" |
||
233 | ENDIF |
||
234 | ELSE |
||
235 | INCBIN "logd2sc_" |
||
236 | ENDIF |
||
237 | tsqr2 |
||
238 | INCBIN "sqr2int" |
||
239 | tlogd |
||
1977 | alone | 240 | INCBIN "logd" ; 128 (64 antizalom) ᯮ - TODO |
213 | alone | 241 | tcorrlogd |
242 | INCBIN "corlogd_" |
||
243 | ORG $-256 |
||
244 | DUP 256 |
||
435 | alone | 245 | DB {$+(scrtopx*8)}&0xff |
213 | alone | 246 | EDUP |
435 | alone | 247 | IF lores |
213 | alone | 248 | ORG $-256 |
249 | _=$ |
||
250 | DUP 128 |
||
435 | alone | 251 | DB {_}&0xff |
213 | alone | 252 | _=_+2 |
253 | EDUP |
||
254 | DS 128 |
||
255 | ENDIF |
||
256 | tcos |
||
257 | DS 256 |
||
258 | tlogcos |
||
259 | INCBIN "pluslcos" |
||
260 | tda |
||
261 | INCBIN "da" |
||
435 | alone | 262 | ORG $-256 |
213 | alone | 263 | DUP 256 |
435 | alone | 264 | DB 0xff&({$}+128) |
213 | alone | 265 | EDUP |
266 | ORG $-256 |
||
267 | DUP 256 |
||
435 | alone | 268 | DB 0xff&({$+(scrtopx*8)}) |
213 | alone | 269 | EDUP |
435 | alone | 270 | IF lores |
213 | alone | 271 | ORG $-256 |
272 | _=$ |
||
273 | DUP 128 |
||
435 | alone | 274 | DB {_}&0xff |
213 | alone | 275 | _=_+2 |
276 | EDUP |
||
277 | DS 128 |
||
278 | ENDIF |
||
279 | tctg |
||
280 | INCBIN "plusctg" |
||
281 | tsin |
||
282 | INCBIN "sin" |
||
283 | cursprites |
||
284 | DS 256 |
||
285 | |||
1910 | alone | 286 | DISPLAY "tables end=",$ |
287 | tscalesw3 |
||
288 | incbin "scalesw3" |
||
213 | alone | 289 | |
1910 | alone | 290 | |
1909 | alone | 291 | ;DS #8000-$ |
213 | alone | 292 | |
1909 | alone | 293 | ds imstackbegin-$ |
294 | ds imer-$ |
||
1916 | alone | 295 | include "int.asm" |
435 | alone | 296 | |
1908 | alone | 297 | ;DS ((IMER/256+1)<<8)-$ |
1909 | alone | 298 | ;ds (IMER&0xff00)-$ |
213 | alone | 299 | |
1908 | alone | 300 | ds 0x8000-$ ;ORG #8000 |
213 | alone | 301 | imvec |
1909 | alone | 302 | DS 257,imer&0xff |
213 | alone | 303 | |
1916 | alone | 304 | INCLUDE "zxloop.asm" |
435 | alone | 305 | INCLUDE "WSCAN10.asm" |
306 | INCLUDE "WREND.asm" |
||
213 | alone | 307 | |
1912 | alone | 308 | badmonstexture |
309 | db 0xc0,0xff |
||
310 | |||
1903 | alone | 311 | align 256 |
312 | t1x |
||
313 | db 255 |
||
314 | dup 255 |
||
315 | db (255*2/($&0xff)+1)/2 |
||
316 | edup |
||
317 | |||
1913 | alone | 318 | DISPLAY "48K PROG END=",$ |
213 | alone | 319 | |
320 | ORG distbuf |
||
1916 | alone | 321 | include "recmap.asm" |
435 | alone | 322 | |
213 | alone | 323 | DS distbuf+#300-$ |
324 | |||
1907 | alone | 325 | ;;;;; |
213 | alone | 326 | ORG scrbuf |
327 | GO |
||
1918 | alone | 328 | ;xor a |
329 | ;out (0xfe),a |
||
213 | alone | 330 | DI |
331 | LD HL,WAStcos |
||
332 | LD DE,tcos |
||
333 | PUSH DE |
||
334 | LD BC,256 |
||
335 | LDIR |
||
336 | POP HL |
||
337 | REtcos0 |
||
338 | DUP 2;4 |
||
339 | SRA (HL) |
||
340 | EDUP |
||
341 | INC L |
||
1903 | alone | 342 | jr nz,REtcos0 |
213 | alone | 343 | |
344 | LD HL,imvec |
||
345 | LD DE,imvec+1 |
||
1909 | alone | 346 | LD (HL),imer/256 |
213 | alone | 347 | LD B,E,C,L |
348 | LD A,H |
||
349 | LDIR |
||
350 | LD I,A |
||
351 | IM 2 |
||
352 | EI |
||
353 | HALT |
||
354 | LD HL,-2 |
||
355 | ADD HL,SP |
||
356 | LD (clscrbufsp),HL |
||
357 | LD (eorfillsp),HL |
||
1916 | alone | 358 | ld hl,ZXLOOP |
359 | push hl |
||
360 | LD BC,#FBDF |
||
361 | IN A,(C) |
||
362 | LD (mouseoldx),A |
||
1907 | alone | 363 | JP RECMAP ;->ZXLOOP |
364 | |||
365 | display "ZXLOOP=",ZXLOOP |
||
213 | alone | 366 | |
367 | WASMAP |
||
1917 | alone | 368 | IF invmap;atm |
435 | alone | 369 | INCBIN "mapatm.E" |
370 | ELSE |
||
213 | alone | 371 | INCBIN "map48.E" |
435 | alone | 372 | ENDIF |
213 | alone | 373 | szMAP=$-WASMAP |
374 | |||
375 | WAStcos |
||
376 | INCBIN "cos" |
||
1903 | alone | 377 | init |
1918 | alone | 378 | if mouse |
379 | call initmouse |
||
380 | endif |
||
213 | alone | 381 | ;prepare 48K block |
382 | DI ;IY |
||
1910 | alone | 383 | LD HL,#5800 |
384 | LD DE,#5801 |
||
385 | LD BC,767 |
||
386 | LD (HL),L |
||
387 | LDIR |
||
1958 | alone | 388 | call gettexpg |
389 | if doublescr |
||
390 | LD A,0x10+pgtmp |
||
391 | call SETPG |
||
392 | call gettexpg |
||
1977 | alone | 393 | endif |
394 | IF music && !atm |
||
395 | call SETPGmusic_silent |
||
396 | CALL #c000 ;init mus |
||
397 | ENDIF |
||
398 | if doublescr |
||
1958 | alone | 399 | LD A,0x10 |
400 | call SETPG |
||
401 | endif |
||
402 | LD IY,23610 |
||
403 | EI |
||
2080 | alone | 404 | JP GO ;⠬ recmap, INICLS |
1958 | alone | 405 | |
406 | gettexpg |
||
1982 | alone | 407 | ld hl,wasgoods |
408 | ld de,0x4000 |
||
409 | ld bc,0x1000 |
||
410 | ldir |
||
411 | ld de,0xb000 |
||
412 | ld bc,0x1000 |
||
413 | ldir |
||
414 | ld hl,0xffff-0x2000 |
||
415 | ld de,0xffff |
||
416 | ld bc,0x2000 |
||
417 | lddr |
||
418 | LD HL,0x2000+waswalls;#C000 |
||
419 | call copyscrcolumns_2k |
||
1912 | alone | 420 | LD DE,#C000+0x80;maxscale+1 |
421 | LD HY,d;0xc0;#FE |
||
1910 | alone | 422 | ;4 upper textures = #09A6 |
423 | ;4 lower textures = #0AAC |
||
1982 | alone | 424 | LD HL,0x5000 |
1910 | alone | 425 | CALL GETTEX |
426 | CALL GETTEX |
||
427 | CALL GETTEX |
||
428 | CALL GETTEX |
||
1982 | alone | 429 | LD HL,0x2000+waswalls+0x800;#C000 |
430 | call copyscrcolumns_2k |
||
431 | LD HL,0x5000 |
||
1910 | alone | 432 | CALL GETTEX |
433 | CALL GETTEX |
||
434 | CALL GETTEX |
||
435 | CALL GETTEX |
||
1982 | alone | 436 | LD HL,0x2000+waswalls+0x1000;#C000 |
437 | call copyscrcolumns_2k |
||
438 | LD HL,0x5000 |
||
1910 | alone | 439 | CALL GETTEX |
440 | CALL GETTEX |
||
1912 | alone | 441 | CALL GETTEX |
442 | CALL GETTEX |
||
1982 | alone | 443 | ;walls: [e2b8] (e3b4 8spr, e274 4spr?), walls2: (eef6 8spr, ec88 4spr?) |
444 | ;LD HL,wasgoods |
||
445 | ;call copyscrcolumns_4k |
||
446 | if sprites |
||
447 | LD HL,0x4000 |
||
1939 | alone | 448 | CALL GETSPR |
1982 | alone | 449 | LD HL,0x4400 |
1939 | alone | 450 | CALL GETSPR |
1982 | alone | 451 | LD HL,0x4800 |
1912 | alone | 452 | CALL GETSPR |
1982 | alone | 453 | LD HL,0x4c00 |
1912 | alone | 454 | CALL GETSPR |
1982 | alone | 455 | ;LD HL,wasgoods+0x1000;#C000 |
456 | ;call copyscrcolumns_4k |
||
457 | ;jr $ |
||
458 | if spritesinpg==8 |
||
459 | LD HL,0xb000 |
||
460 | CALL GETSPR |
||
461 | LD HL,0xb400 |
||
462 | CALL GETSPR |
||
463 | LD HL,0xb800 |
||
464 | CALL GETSPR |
||
465 | LD HL,0xbc00 |
||
466 | CALL GETSPR |
||
467 | endif |
||
468 | endif |
||
469 | ;jr $ ;walls: ⨬樥 f699(f4c0) (12 +4 ࠩ ⨬樨( ⨬樥)), (fdbd 8spr, fb6f 4spr?) walls2: 00f4(febd), (0cc0 8spr, 07d6 4spr?) |
||
1912 | alone | 470 | ;jr $ ; 7: ⨬樥 de=ec70[ebdf] (f4c8 12 ) |
471 | ;jr $ ; 3: ⨬樥 de=e1e4[de70] |
||
472 | ;jr $ ; 2: ⨬樥 de=f070[f6cd] |
||
473 | ;jr $ ; 1: ⨬樥 de=efdf[ef76, ⨬樨 f256] |
||
474 | |||
475 | if 1 |
||
476 | ;ࠢ塞 ९ ᮢ ⥪ ( 塞 0xc080, ࠩ⮢ badmonstexture) |
||
477 | ld h,0xc0 |
||
478 | fixtexoverflow0 |
||
479 | ld l,0x40 |
||
480 | fixtexoverflow1 |
||
481 | ld e,(hl) |
||
482 | inc h |
||
483 | ld d,(hl) |
||
484 | bit 7,d |
||
485 | jr nz,$+5 ; |
||
486 | badaddrpatch=$+1 |
||
487 | ld de,0xc080 |
||
488 | ld (hl),d |
||
489 | dec h |
||
490 | ld (hl),e |
||
491 | inc l |
||
492 | jp p,fixtexoverflow1 |
||
493 | inc h |
||
494 | inc h |
||
495 | ld de,badmonstexture |
||
496 | ld a,h |
||
1982 | alone | 497 | cp 0xc0+(2*texturesinpg) |
1912 | alone | 498 | jr c,$+6 |
499 | ld (badaddrpatch),de |
||
1982 | alone | 500 | cp 0xc0+(2*(texturesinpg+spritesinpg)) |
1912 | alone | 501 | jr nz,fixtexoverflow0 |
502 | endif |
||
503 | |||
504 | ;⠢塞 ⠡ ⠡ |
||
1910 | alone | 505 | ld hl,tscalesw3 |
506 | ld c,0 |
||
507 | ld b,64 |
||
508 | initscales0 |
||
509 | ld e,(hl) |
||
510 | inc hl |
||
511 | ld d,(hl) |
||
512 | inc hl |
||
513 | push hl |
||
514 | ld l,c |
||
515 | push bc |
||
516 | ld b,d |
||
517 | ld c,e ;adder 8.8 |
||
518 | ; 0040...0400 ᤥ 78..00 砫(0x80 -08..-80) = 0x80 - adder*32 |
||
519 | ; 0040...0400 ᤥ 78..04 砫 (0x80 -08..-7c) = 0x80 - adder*31 |
||
520 | ;... |
||
521 | ; 0040...0400 ᤥ 87..f4 (0x80 +07..+74) |
||
522 | ; 0040...0400 ᤥ 88..f8 (0x80 +08..+78) |
||
523 | dup 5 |
||
524 | sla e |
||
525 | rl d |
||
526 | edup |
||
527 | xor a |
||
528 | sub e |
||
529 | ld e,a |
||
530 | ld a,0x80 |
||
531 | sbc a,d |
||
532 | ld d,a ;0x80 - adder*32 |
||
533 | ld h,0xc0 |
||
1911 | alone | 534 | ld (hl),0 ;祬? d ᭥ - ࠩ⮢ |
1910 | alone | 535 | inc h |
536 | initscales1 |
||
537 | ex de,hl |
||
538 | add hl,bc |
||
539 | ex de,hl |
||
540 | ld (hl),d ;Ys=(Y/32-1)*sc |
||
541 | inc h |
||
542 | jr nz,initscales1 |
||
543 | pop bc |
||
544 | inc c |
||
545 | pop hl |
||
546 | djnz initscales0 |
||
213 | alone | 547 | LD H,#C1 |
548 | INIRETAB0 ; |
||
549 | LD L,0 |
||
550 | LD B,maxscale+1 |
||
551 | INIRETAB1 ; |
||
552 | LD A,(HL) |
||
553 | CP 128-(scrhgtpix/2) |
||
1903 | alone | 554 | jr nc,$+4 |
213 | alone | 555 | LD A,128-(scrhgtpix/2) |
556 | CP 128+(scrhgtpix/2);-1 |
||
1903 | alone | 557 | jr c,$+4 |
1912 | alone | 558 | ;LD A,128+(scrhgtpix/2)-1 ; ९- |
1903 | alone | 559 | LD A,0xff&(dropline-(scrbuf+(scrhgtpix/2)-128)) |
560 | ADD A,+(0xff&scrbuf)+(scrhgtpix/2)-128 |
||
213 | alone | 561 | LD (HL),A |
562 | INC L |
||
563 | DJNZ INIRETAB1 |
||
564 | INC H |
||
565 | LD A,H |
||
566 | INC A ;#C0XX,#FFXX ண |
||
1903 | alone | 567 | jr nz,INIRETAB0 |
213 | alone | 568 | LD HL,#FF00 |
569 | LD DE,#FF01 |
||
570 | LD BC,maxscale |
||
571 | LD (HL),1 |
||
572 | LDIR |
||
1958 | alone | 573 | ret |
213 | alone | 574 | |
1918 | alone | 575 | if mouse |
576 | initmouse |
||
577 | ei |
||
578 | halt |
||
579 | ;প, ⮡ 誠 ᯥ - min 2500 ⠪⮢ Evo ( 280 ⠪⮢ த⢨) |
||
580 | LD B,75 |
||
581 | prosirtime |
||
582 | LD DE,(0) ;20 ⠪⮢ |
||
583 | DJNZ prosirtime ;13 ⠪⮢ |
||
584 | ld a, 0x90 |
||
585 | out (0x7F), a |
||
586 | out (0x5F), a |
||
587 | ld bc, 0x0FFDF |
||
588 | in h, (c) |
||
589 | ld b, 0x0FB |
||
590 | in l, (c) |
||
591 | dec b |
||
592 | in a, (c) |
||
593 | cp l |
||
594 | ret nz ;jr nz, @detected |
||
595 | cp h |
||
596 | ret nz ;jr z, @comeon |
||
597 | LD A,0xaf ;xor a |
||
598 | LD (mouseon),A |
||
599 | ;ld hl,0x18+(256*readmousejr) ;"jr" |
||
600 | ;ld (readmouse_patch),hl |
||
601 | ret |
||
602 | endif |
||
603 | |||
1982 | alone | 604 | copyscrcolumns_2k |
605 | push de |
||
606 | ld de,0x5000 |
||
607 | ld bc,0x800 |
||
608 | ldir |
||
609 | pop de |
||
1910 | alone | 610 | ret |
611 | |||
213 | alone | 612 | GETTEX |
1903 | alone | 613 | IF scale64 |
213 | alone | 614 | LD LY,#40 |
615 | ELSE |
||
616 | LD LY,#80 |
||
617 | ENDIF |
||
618 | LD BC,#0880 ;B=width/8, C=#80(mask) |
||
619 | GETTEX00 ; |
||
620 | PUSH BC |
||
1982 | alone | 621 | GETTEX0 |
622 | push hl |
||
623 | CALL GETTEXLINE |
||
624 | pop hl |
||
213 | alone | 625 | INC LY |
1903 | alone | 626 | IF scale64 == 0 |
213 | alone | 627 | INC LY |
628 | ENDIF |
||
629 | RRC C |
||
1903 | alone | 630 | jr nc,GETTEX0 |
1982 | alone | 631 | ;INC L |
632 | ld bc,64 |
||
633 | add hl,bc |
||
213 | alone | 634 | POP BC |
635 | DJNZ GETTEX00 |
||
1912 | alone | 636 | inc hy,hy;DEC HY,HY |
213 | alone | 637 | RET |
638 | |||
639 | GETSPR |
||
1982 | alone | 640 | ;jr $ |
1903 | alone | 641 | IF scale64 |
213 | alone | 642 | LD LY,#40 |
643 | ELSE |
||
644 | LD LY,#80 |
||
645 | ENDIF |
||
646 | LD BC,#0880 ;B=width/8, C=#80(mask) |
||
647 | GETSPR00 ; |
||
648 | PUSH BC |
||
1982 | alone | 649 | GETSPR0 |
650 | push hl |
||
651 | CALL GETSPRLINE |
||
652 | pop hl |
||
213 | alone | 653 | INC LY |
1903 | alone | 654 | IF scale64 == 0 |
213 | alone | 655 | INC LY |
656 | ENDIF |
||
657 | RRC C |
||
1903 | alone | 658 | jr nc,GETSPR0 |
1982 | alone | 659 | ;INC L |
660 | ld bc,128;64 |
||
661 | add hl,bc |
||
213 | alone | 662 | POP BC |
663 | DJNZ GETSPR00 |
||
1912 | alone | 664 | inc hy,hy;DEC HY,HY |
213 | alone | 665 | RET |
666 | |||
1982 | alone | 667 | GETTEXincD |
668 | call GETincD |
||
669 | JR GETTEXRETRY |
||
670 | |||
213 | alone | 671 | GETTEXLINE |
672 | PUSH HL |
||
673 | GETTEXRETRY ; |
||
674 | LD (gettexDE),DE ;linelength addr |
||
675 | POP HL |
||
676 | PUSH HL |
||
677 | LD (IY),E |
||
1903 | alone | 678 | IF scale64 == 0 |
213 | alone | 679 | LD (IY+1),E |
680 | ENDIF |
||
681 | INC HY |
||
682 | LD (IY),D |
||
1903 | alone | 683 | IF scale64 == 0 |
213 | alone | 684 | LD (IY+1),D |
685 | ENDIF |
||
686 | DEC HY |
||
1982 | alone | 687 | inc e |
688 | dec e |
||
689 | jr z,GETTEXincD |
||
213 | alone | 690 | INC E |
1982 | alone | 691 | ;jr z,GETTEXincD |
213 | alone | 692 | LD LX,0;C ;bit |
1912 | alone | 693 | LD HX,17 ;17-pixels |
213 | alone | 694 | LD B,62 ;62..1 -> 1..62 |
695 | GETTEX1 ; |
||
1982 | alone | 696 | inc hl;CALL DHL |
213 | alone | 697 | LD A,(HL) |
698 | AND C |
||
699 | CP LX |
||
700 | LD LX,A |
||
1903 | alone | 701 | jr z,GETTEXN |
213 | alone | 702 | LD A,HX |
703 | OR A |
||
1912 | alone | 704 | jr z,GETTEXN ;can't add more pixels |
1982 | alone | 705 | inc e |
706 | dec e |
||
707 | jr z,GETTEXincD |
||
1903 | alone | 708 | LD A,tscale/256+63 |
213 | alone | 709 | SUB B |
710 | LD (DE),A |
||
711 | DEC HX ;17-pixels |
||
712 | INC E ;todo check before write |
||
1982 | alone | 713 | ;jr z,GETTEXiD |
213 | alone | 714 | GETTEXN ; |
1911 | alone | 715 | DJNZ GETTEX1 |
213 | alone | 716 | LD A,HX ;17-pixels |
717 | ADD A,A |
||
718 | ADD A,A |
||
719 | ADD A,A |
||
1912 | alone | 720 | SUB HX ;(17-pixels)*7 |
1903 | alone | 721 | ADD A,DWJP&0xff |
213 | alone | 722 | gettexDE=$+1 |
723 | LD (0),A |
||
1982 | alone | 724 | ld a,17+1 |
725 | sub hx ;17+1-(17-pixels) |
||
726 | ld (gettexB),a ;size=1+pixels (min=2 - ) |
||
727 | POP HL |
||
728 | |||
729 | GETTEX_cmp ;ࠢ ।騬 ⮫栬 |
||
1912 | alone | 730 | push de |
731 | push iy |
||
1982 | alone | 732 | GETTEX_cmpnext |
1912 | alone | 733 | ld hl,(gettexDE) |
734 | ld a,ly |
||
735 | cp 0x40 ; ⮣ tscales |
||
736 | jr nz,GETTEX_cmpgo |
||
737 | ld a,hy |
||
738 | cp 0xc0 |
||
739 | jr z,GETTEX_endcmp |
||
1982 | alone | 740 | ld ly,0x80;7f |
1912 | alone | 741 | dec hy,hy |
742 | GETTEX_cmpgo |
||
743 | dec ly |
||
744 | ld e,(iy) |
||
745 | inc hy |
||
746 | ld d,(iy) |
||
747 | dec hy |
||
1982 | alone | 748 | ;ld a,17+1 |
749 | ;sub hx ;17+1-(17-pixels) |
||
750 | gettexB=$+1 |
||
751 | ld b,0;a ;size=1+pixels (min=2 - ) |
||
1912 | alone | 752 | GETTEX_cmp1 |
753 | ld a,(de) |
||
754 | cp (hl) |
||
755 | jr nz,GETTEX_cmpnext |
||
756 | inc hl |
||
757 | inc de |
||
758 | djnz GETTEX_cmp1 |
||
759 | ;⠢ 뫪 |
||
760 | ld e,(iy) |
||
761 | inc hy |
||
762 | ld d,(iy) |
||
763 | pop iy |
||
764 | pop af;de |
||
765 | LD (IY),e |
||
766 | INC HY |
||
767 | LD (IY),d |
||
768 | DEC HY |
||
769 | ld de,(gettexDE) ;⪠ DE |
||
1982 | alone | 770 | ret |
1912 | alone | 771 | GETTEX_endcmp |
772 | pop iy |
||
773 | pop de |
||
213 | alone | 774 | RET |
775 | |||
1982 | alone | 776 | GETSPRincD |
777 | call GETincD |
||
778 | JR GETSPRRETRY |
||
779 | |||
213 | alone | 780 | GETSPRLINE |
781 | PUSH HL |
||
782 | GETSPRRETRY ; |
||
1982 | alone | 783 | LD (gettexDE),DE ;linelength addr |
213 | alone | 784 | POP HL |
785 | PUSH HL |
||
786 | LD (IY),E |
||
1903 | alone | 787 | IF scale64 == 0 |
213 | alone | 788 | LD (IY+1),E |
789 | ENDIF |
||
790 | INC HY |
||
791 | LD (IY),D |
||
1903 | alone | 792 | IF scale64 == 0 |
213 | alone | 793 | LD (IY+1),D |
794 | ENDIF |
||
795 | DEC HY |
||
1982 | alone | 796 | ld a,l |
797 | add a,2*62 |
||
798 | ld l,a ;line 62 |
||
213 | alone | 799 | LD HX,1 |
1982 | alone | 800 | ld lx,2 ;size |
213 | alone | 801 | GETSPR1 ; |
802 | CALL FIND10 |
||
1903 | alone | 803 | jr nc,GETSPRQ ;end of column |
1982 | alone | 804 | inc e |
805 | dec e |
||
806 | jr z,GETSPRincD |
||
213 | alone | 807 | LD A,HX |
808 | CPL |
||
809 | LD (DE),A ;Y |
||
1982 | alone | 810 | inc lx |
213 | alone | 811 | INC E |
1982 | alone | 812 | ;jr z,GETSPRiD |
213 | alone | 813 | CALL FIND1HEIGHT |
1982 | alone | 814 | inc e |
815 | dec e |
||
816 | jr z,GETSPRincD |
||
213 | alone | 817 | LD A,HX |
818 | CPL |
||
819 | LD (DE),A ;Y2 |
||
1982 | alone | 820 | inc lx |
213 | alone | 821 | INC E |
1982 | alone | 822 | ;jr z,GETSPRiD |
213 | alone | 823 | CALL FIND0HEIGHT |
1982 | alone | 824 | inc e |
825 | dec e |
||
826 | jr z,GETSPRincD |
||
213 | alone | 827 | LD A,HX |
828 | CPL |
||
829 | LD (DE),A ;Y3 |
||
1982 | alone | 830 | inc lx |
213 | alone | 831 | INC E |
1982 | alone | 832 | ;jr z,GETSPRiD |
213 | alone | 833 | JR GETSPR1 |
834 | GETSPRQ |
||
1982 | alone | 835 | inc e |
836 | dec e |
||
837 | jr z,GETSPRincD |
||
213 | alone | 838 | LD A,#C0 |
839 | LD (DE),A |
||
840 | INC E |
||
1982 | alone | 841 | ;jr z,GETSPRiD |
842 | inc e |
||
843 | dec e |
||
844 | jr z,GETSPRincD |
||
213 | alone | 845 | LD A,#FF |
846 | LD (DE),A |
||
847 | INC E |
||
1982 | alone | 848 | ;jr nz,$+5 |
849 | ; INC D |
||
850 | ; LD E,maxscale+1 |
||
213 | alone | 851 | POP HL |
1982 | alone | 852 | ld a,lx |
853 | ld (gettexB),a |
||
854 | |||
855 | jp GETTEX_cmp ;ࠢ ।騬 ⮫栬 |
||
213 | alone | 856 | |
1982 | alone | 857 | GETincD |
858 | INC D |
||
859 | LD E,0x80;maxscale+1 |
||
860 | ld a,d |
||
861 | cp 0xc0+(2*(texturesinpg+spritesinpg)) |
||
862 | jr c,$+4;GETSPRRETRY |
||
863 | ld e,0x40 ; ⠡ ᮢ |
||
864 | ret |
||
213 | alone | 865 | |
1982 | alone | 866 | maxVhgt=12;14;10 ; ᨬ쭮 㢥祭 ( 4 ࠧ) ᮢ뢠 maxlinehgt=59 ᥫ! (TODO 祬 13,14 ???) |
867 | |||
213 | alone | 868 | ;HX=V |
869 | ;HL=mask |
||
870 | FIND10 |
||
871 | LD A,HX |
||
872 | CP 63 |
||
873 | RET Z ;CY=0: end of column |
||
874 | CALL GETPIXEL |
||
875 | RET C ;CY=1: pixel |
||
1982 | alone | 876 | dec hl;CALL UHL |
877 | dec hl |
||
213 | alone | 878 | INC HX ;V |
879 | JR FIND10 |
||
880 | FIND1HEIGHT |
||
881 | ;LD LX,HX ;oldV |
||
882 | LD B,0 |
||
883 | F1H0 CALL GETPIXEL |
||
884 | RET NC ;transparent |
||
885 | RET Z ;0 |
||
1982 | alone | 886 | dec hl;CALL UHL |
887 | dec hl |
||
213 | alone | 888 | INC HX ;V |
889 | INC B |
||
890 | LD A,B |
||
891 | CP maxVhgt |
||
1903 | alone | 892 | jr c,F1H0 |
213 | alone | 893 | RET |
894 | FIND0HEIGHT |
||
895 | ;LD LX,HX ;oldV |
||
896 | LD B,0 |
||
897 | F0H0 CALL GETPIXEL |
||
898 | RET NC ;transparent |
||
899 | RET NZ ;1 |
||
1982 | alone | 900 | dec hl;CALL UHL |
901 | dec hl |
||
213 | alone | 902 | INC HX ;V |
903 | INC B |
||
904 | LD A,B |
||
905 | CP maxVhgt |
||
1903 | alone | 906 | jr c,F0H0 |
213 | alone | 907 | RET |
908 | |||
909 | GETPIXEL |
||
910 | LD A,HX |
||
911 | CP 63 |
||
912 | RET Z ;CY=0: transparent |
||
1982 | alone | 913 | inc l;set 1,h;SET 3,L |
213 | alone | 914 | LD A,(HL) |
1982 | alone | 915 | dec l;res 1,h;RES 3,L |
213 | alone | 916 | AND C |
917 | RET NZ ;CY=0: transparent |
||
918 | LD A,(HL) |
||
919 | AND C |
||
920 | SCF ;CY=1: pixel (Z) |
||
921 | RET |
||
1982 | alone | 922 | |
923 | if 0 |
||
213 | alone | 924 | UHL |
925 | LD A,H |
||
926 | DEC H |
||
927 | AND 7 |
||
928 | RET NZ |
||
929 | LD A,L |
||
930 | SUB #20 |
||
931 | LD L,A |
||
932 | RET C |
||
933 | LD A,H |
||
934 | ADD A,8 |
||
935 | LD H,A |
||
936 | RET |
||
1982 | alone | 937 | endif |
1907 | alone | 938 | ;endall |
1982 | alone | 939 | display "end init=",$ |
213 | alone | 940 | |
1982 | alone | 941 | DS 0xb000-$ |
213 | alone | 942 | DS #C000-$ |
1910 | alone | 943 | |
944 | if 0 |
||
1907 | alone | 945 | ;ORG #C000 |
946 | IF scale64 |
||
947 | IF scale64 == 3 |
||
948 | INCBIN "tscale3" |
||
949 | ELSE |
||
950 | INCBIN "tscale2" |
||
951 | ENDIF |
||
952 | ELSE |
||
953 | INCBIN "tscale" |
||
1910 | alone | 954 | ENDIF |
955 | endif |
||
956 | |||
1958 | alone | 957 | ;hicode_begin |
1939 | alone | 958 | ;ds 0x10000-0x1800-0x0800-$ ;0x040..7f ᮤন ⠡ ᮢ ⥪ (16 ⥪?) |
1982 | alone | 959 | ds 0x10000-0x1800-0x2000-$ ;0x040..7f ᮤন ⠡ ᮢ ⥪ (16 ⥪?) |
1910 | alone | 960 | waswalls |
1982 | alone | 961 | incbin "walls.bin" |
1910 | alone | 962 | wasgoods |
1982 | alone | 963 | incbin "goods.bin" |
1958 | alone | 964 | ;hicode_end |
965 | end |
||
966 | |||
967 | page pgtmp |
||
968 | org 0xc000 |
||
969 | hicode_begin |
||
1982 | alone | 970 | ds 0x10000-0x1800-0x2000-$ |
1958 | alone | 971 | ;waswalls |
1982 | alone | 972 | incbin "walls2.bin" |
1958 | alone | 973 | ;wasgoods |
1982 | alone | 974 | incbin "goods2.bin" |
1910 | alone | 975 | hicode_end |
976 | |||
1977 | alone | 977 | page pgmusic |
978 | org 0xc000 |
||
979 | hicode2_begin |
||
980 | include "../../_sdk/ptsplay.asm" |
||
981 | MDLADDR |
||
982 | incbin "testmusi.pt3" |
||
983 | hicode2_end |
||
984 | |||
1907 | alone | 985 | page 0 |
1986 | alone | 986 | if doublescr |
1907 | alone | 987 | savebin "code.c",begin,end-begin |
1958 | alone | 988 | page pgtmp |
989 | savebin "hicode.c",hicode_begin,hicode_end-hicode_begin |
||
1977 | alone | 990 | page pgmusic |
991 | savebin "hicode2.c",hicode2_begin,hicode2_end-hicode2_begin |
||
1986 | alone | 992 | else |
993 | savebin "code.c",begin,hicode_end-begin |
||
994 | endif |
||
1907 | alone | 995 | |
996 | LABELSLIST "../../../us/user.l",1 |