Rev 1009 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log
Rev 1009 | Rev 1620 | ||
---|---|---|---|
Line 15... | Line 15... | ||
15 | ld bc,UVSCROLL_HGT/64*4 ;4*4 ;на высоту экрана |
15 | ld bc,UVSCROLL_HGT/64*4 ;4*4 ;на высоту экрана |
16 | ldir |
16 | ldir |
17 | 17 | ||
18 | jp uvscroll_gencall |
18 | jp uvscroll_gencall |
19 | 19 | ||
20 | if 0 |
20 | if UVSCROLL_USETILES |
21 | uvscroll_preparetiles |
21 | uvscroll_preparetiles |
22 | ;tile gfx |
22 | ;tile gfx |
23 | OS_NEWPAGE |
23 | OS_NEWPAGE |
24 | ld a,e |
24 | ld a,e |
25 | ld (pgtilegfx),a |
25 | ld (pgtilegfx),a |
26 | SETPG32KLOW |
26 | SETPG8000 |
27 | OS_NEWPAGE |
27 | OS_NEWPAGE |
28 | ld a,e |
28 | ld a,e |
29 | ld (pgtilegfx2),a |
29 | ld (pgtilegfx2),a |
30 | SETPG32KHIGH |
30 | SETPGC000 |
31 | 31 | ||
32 | ld de,tilebmpfilename |
32 | ld de,tilebmpfilename |
33 | call openstream_file |
33 | call openstream_file |
34 | call readbmphead_pal |
34 | call readbmphead_pal |
35 | call closestream_file |
35 | call closestream_file |
Line 77... | Line 77... | ||
77 | uvscroll_preparetilemap |
77 | uvscroll_preparetilemap |
78 | ;tilemap |
78 | ;tilemap |
79 | OS_NEWPAGE |
79 | OS_NEWPAGE |
80 | ld a,e |
80 | ld a,e |
81 | ld (pgmetatilemap),a |
81 | ld (pgmetatilemap),a |
82 | SETPG32KHIGH |
82 | SETPGC000 |
83 | 83 | ||
84 | ld de,tilemapfilename |
84 | ld de,tilemapfilename |
85 | call openstream_file |
85 | call openstream_file |
86 | ld de,0xc000;0xe000 |
86 | ld de,0xc000;0xe000 |
87 | ld hl,0x4000;0x2000 |
87 | ld hl,0x4000;0x2000 |
Line 224... | Line 224... | ||
224 | push de |
224 | push de |
225 | push hl |
225 | push hl |
226 | 226 | ||
227 | push hl |
227 | push hl |
228 | ld a,(pgmetatilemap) |
228 | ld a,(pgmetatilemap) |
229 | SETPG32KHIGH |
229 | SETPGC000 |
230 | ld hl,bgpush_bmpbuf;TILEMAP |
230 | ld hl,bgpush_bmpbuf;TILEMAP |
231 | push hl |
231 | push hl |
232 | ld b,UVSCROLL_WID/16 |
232 | ld b,UVSCROLL_WID/16 |
233 | uvscroll_gettilemapline0 |
233 | uvscroll_gettilemapline0 |
234 | ld a,(de) |
234 | ld a,(de) |
Line 274... | Line 274... | ||
274 | pop bc |
274 | pop bc |
275 | djnz uvscroll_showmetatilemap0 |
275 | djnz uvscroll_showmetatilemap0 |
276 | ret |
276 | ret |
277 | endif |
277 | endif |
278 | 278 | ||
- | 279 | if UVSCROLL_USEBMP |
|
279 | uvscroll_preparebmp |
280 | uvscroll_preparebmp |
280 | ;de=filename |
281 | ;de=filename |
281 | call openstream_file |
282 | call openstream_file |
282 | 283 | ||
283 | call readbmphead_pal |
284 | call readbmphead_pal |
Line 305... | Line 306... | ||
305 | dec bc |
306 | dec bc |
306 | ld a,b |
307 | ld a,b |
307 | or c |
308 | or c |
308 | jr nz,uvscroll_ldbmp0 |
309 | jr nz,uvscroll_ldbmp0 |
309 | call closestream_file |
310 | call closestream_file |
- | 311 | endif |
|
310 | uvscroll_restorememmap |
312 | uvscroll_restorememmap |
311 | call RestoreMemMap3 |
313 | call RestoreMemMap3 |
312 | jp setpgsmain40008000 |
314 | jp setpgsmain40008000 |
313 | 315 | ||
314 | uvscroll_setscroll |
316 | uvscroll_setscroll |
315 | ;hl=y |
317 | ;hl=y |
316 | ;de=x |
318 | ;de=x |
317 | srl d |
319 | srl d |
318 | rr e |
320 | rr e |
319 | ld bc,200-1 |
321 | ld bc,SCRHGT-1;200-1 |
320 | add hl,bc |
322 | add hl,bc |
321 | ld a,h |
323 | ld a,h |
322 | cpl |
324 | cpl |
323 | and 1 |
325 | and 1 |
324 | ld h,a |
326 | ld h,a |
Line 342... | Line 344... | ||
342 | ld a,e |
344 | ld a,e |
343 | call uvscroll_scroll_x |
345 | call uvscroll_scroll_x |
344 | pop af |
346 | pop af |
345 | jp uvscroll_scroll_y |
347 | jp uvscroll_scroll_y |
346 | 348 | ||
347 | if 0 |
349 | if UVSCROLL_USETILES |
348 | uvscroll_scrolltiles |
350 | uvscroll_scrolltiles |
349 | ;scroll by metatile |
351 | ;scroll by metatile |
350 | ;hx=delta y (>0: go up) |
352 | ;hx=delta y (>0: go up) |
351 | ;lx=delta x (>0: go left) |
353 | ;lx=delta x (>0: go left) |
352 | call uvscroll_scrolltilemap ;делаем этот ldir/lddr только один раз для двух координат |
354 | call uvscroll_scrolltilemap ;делаем этот ldir/lddr только один раз для двух координат |
Line 827... | Line 829... | ||
827 | ;bit 7,h |
829 | ;bit 7,h |
828 | ;jr z,$+5 |
830 | ;jr z,$+5 |
829 | ;ld hl,0 ;сбивает фазу относительно allscroll! |
831 | ;ld hl,0 ;сбивает фазу относительно allscroll! |
830 | jr uvscroll_scroll_y_q |
832 | jr uvscroll_scroll_y_q |
831 | 833 | ||
832 | if 0 |
834 | if UVSCROLL_USETILES |
833 | ;процедура скроллинга буфера tilemap (содержит номера тайлов в видимой части карты, снизу вверх, справа налево) |
835 | ;процедура скроллинга буфера tilemap (содержит номера тайлов в видимой части карты, снизу вверх, справа налево) |
834 | uvscroll_scrolltilemap |
836 | uvscroll_scrolltilemap |
835 | ;hx=delta y (>0: go up) |
837 | ;hx=delta y (>0: go up) |
836 | ;lx=delta x (>0: go left) |
838 | ;lx=delta x (>0: go left) |
837 | ;скроллим ровно вдвое больше!!! |
839 | ;скроллим ровно вдвое больше!!! |
Line 990... | Line 992... | ||
990 | ;заполнение одной двойной строки TILEMAP из карты |
992 | ;заполнение одной двойной строки TILEMAP из карты |
991 | ;de=tilemap+ |
993 | ;de=tilemap+ |
992 | ;hl=metatilemap+ |
994 | ;hl=metatilemap+ |
993 | pgmetatilemap=$+1 |
995 | pgmetatilemap=$+1 |
994 | ld a,0 |
996 | ld a,0 |
995 | SETPG32KHIGH |
997 | SETPGC000 |
996 | push de |
998 | push de |
997 | ld bc,TILEMAPWID/2 |
999 | ld bc,TILEMAPWID/2 |
998 | uvscroll_filltilemap_line0 |
1000 | uvscroll_filltilemap_line0 |
999 | ld a,(hl) |
1001 | ld a,(hl) |
1000 | ld (de),a |
1002 | ld (de),a |
Line 1009... | Line 1011... | ||
1009 | uvscroll_filltilemap_column |
1011 | uvscroll_filltilemap_column |
1010 | ;заполнение одного двойного столбца TILEMAP из карты |
1012 | ;заполнение одного двойного столбца TILEMAP из карты |
1011 | ;de=tilemap+ |
1013 | ;de=tilemap+ |
1012 | ;hl=metatilemap+ |
1014 | ;hl=metatilemap+ |
1013 | ld a,(pgmetatilemap) |
1015 | ld a,(pgmetatilemap) |
1014 | SETPG32KHIGH |
1016 | SETPGC000 |
1015 | push de ;tilemap+ |
1017 | push de ;tilemap+ |
1016 | ld de,METATILEMAPWID |
1018 | ld de,METATILEMAPWID |
1017 | exx |
1019 | exx |
1018 | pop hl ;tilemap+ |
1020 | pop hl ;tilemap+ |
1019 | ld de,TILEMAPWID-1 |
1021 | ld de,TILEMAPWID-1 |
Line 1044... | Line 1046... | ||
1044 | inc hl |
1046 | inc hl |
1045 | inc hl |
1047 | inc hl |
1046 | inc hl |
1048 | inc hl |
1047 | inc hl |
1049 | inc hl |
1048 | ld a,(hl) ;gfx pages |
1050 | ld a,(hl) ;gfx pages |
1049 | SETPG32KLOW |
1051 | SETPG8000 |
1050 | exx |
1052 | exx |
1051 | ld hx,uvscroll_pushbase/256-1 |
1053 | ld hx,uvscroll_pushbase/256-1 |
1052 | jp uvscroll_pushbase;(ix) |
1054 | jp uvscroll_pushbase;(ix) |
1053 | 1055 | ||
1054 | uvscroll_nextgfxpg |
1056 | uvscroll_nextgfxpg |
Line 1059... | Line 1061... | ||
1059 | inc hl |
1061 | inc hl |
1060 | inc hl |
1062 | inc hl |
1061 | inc hl |
1063 | inc hl |
1062 | inc hl |
1064 | inc hl |
1063 | ld a,(hl) ;gfx pages |
1065 | ld a,(hl) ;gfx pages |
1064 | SETPG32KLOW |
1066 | SETPG8000 |
1065 | exx |
1067 | exx |
1066 | ld hx,uvscroll_pushbase/256 |
1068 | ld hx,uvscroll_pushbase/256 |
1067 | jp (ix) |
1069 | jp (ix) |
1068 | 1070 | ||
1069 | ;делаем push для одного слоя |
1071 | ;делаем push для одного слоя |
1070 | ;в каждых 256 байтах такой код: |
1072 | ;в каждых 256 байтах такой код: |
1071 | ;ld bc:push bc *UVSCROLL_NPUSHES ;de=0!!! |
1073 | ;ld bc:push bc *UVSCROLL_NPUSHES ;de=0!!! |
1072 | uvscroll_genpush |
1074 | uvscroll_genpush |
1073 | push ix |
1075 | push ix |
1074 | call genpush_newpage ;заказывает страницу, заносит в tpushpgs, a=pg |
1076 | call genpush_newpage ;заказывает страницу, заносит в tpushpgs, a=pg |
1075 | SETPG32KLOW |
1077 | SETPG8000 |
1076 | ld hl,uvscroll_pushbase |
1078 | ld hl,uvscroll_pushbase |
1077 | ld bc,UVSCROLL_HGT |
1079 | ld bc,UVSCROLL_HGT |
1078 | uvscroll_genpush0 |
1080 | uvscroll_genpush0 |
1079 | push bc |
1081 | push bc |
1080 | ld a,h |
1082 | ld a,h |
Line 1129... | Line 1131... | ||
1129 | push bc |
1131 | push bc |
1130 | uvscroll_nnnext_last_sp=$+1 |
1132 | uvscroll_nnnext_last_sp=$+1 |
1131 | ld sp,0 ;надо две копии для рисования 0..39 или 1..40 столбцов (sp+1) *2 копии для +0/0x2000 - копии можно разместить в тех же страницах, но с другими L адресами |
1133 | ld sp,0 ;надо две копии для рисования 0..39 или 1..40 столбцов (sp+1) *2 копии для +0/0x2000 - копии можно разместить в тех же страницах, но с другими L адресами |
1132 | uvscroll_nnnext_last_pg=$+1 |
1134 | uvscroll_nnnext_last_pg=$+1 |
1133 | ld a,0 ;следующая страница вызывалки |
1135 | ld a,0 ;следующая страница вызывалки |
1134 | SETPG32KHIGH ;сама себя заменяет!!! |
1136 | SETPGC000 ;сама себя заменяет!!! |
1135 | inc hx ;адрес следующего ldpush |
1137 | inc hx ;адрес следующего ldpush |
1136 | ld h,uvscroll_callbase/256+1 ;адрес следующего nnnext_i |
1138 | ld h,uvscroll_callbase/256+1 ;адрес следующего nnnext_i |
1137 | jp (ix) |
1139 | jp (ix) |
1138 | uvscroll_nnnext_last_sz=$-uvscroll_nnnext_last |
1140 | uvscroll_nnnext_last_sz=$-uvscroll_nnnext_last |
1139 | 1141 | ||
Line 1147... | Line 1149... | ||
1147 | ;edup |
1149 | ;edup |
1148 | 1150 | ||
1149 | uvscroll_gencall |
1151 | uvscroll_gencall |
1150 | ld ix,tcallpgs |
1152 | ld ix,tcallpgs |
1151 | call uvscroll_gencall_newpage ;заказывает страницу, заносит в tpushpgs, a=pg |
1153 | call uvscroll_gencall_newpage ;заказывает страницу, заносит в tpushpgs, a=pg |
1152 | SETPG32KHIGH |
1154 | SETPGC000 |
1153 | ;ld l,0x00 |
1155 | ;ld l,0x00 |
1154 | call uvscroll_gencall_startpage |
1156 | call uvscroll_gencall_startpage |
1155 | ld de,UVSCROLL_SCRSTART+(UVSCROLL_SCRWID/8) |
1157 | ld de,UVSCROLL_SCRSTART+(UVSCROLL_SCRWID/8) |
1156 | ld b,UVSCROLL_SCRHGT;-1 |
1158 | ld b,UVSCROLL_SCRHGT;-1 |
1157 | uvscroll_gencall0 |
1159 | uvscroll_gencall0 |
Line 1177... | Line 1179... | ||
1177 | ld l,0xc0 |
1179 | ld l,0xc0 |
1178 | call uvscroll_gencall_pgend |
1180 | call uvscroll_gencall_pgend |
1179 | pop de |
1181 | pop de |
1180 | 1182 | ||
1181 | pop af |
1183 | pop af |
1182 | SETPG32KHIGH |
1184 | SETPGC000 |
1183 | call uvscroll_gencall_startpage |
1185 | call uvscroll_gencall_startpage |
1184 | jr uvscroll_gencall_nonewpgq |
1186 | jr uvscroll_gencall_nonewpgq |
1185 | uvscroll_gencall_nonewpg |
1187 | uvscroll_gencall_nonewpg |
1186 | push de |
1188 | push de |
1187 | push hl |
1189 | push hl |
Line 1220... | Line 1222... | ||
1220 | jr nz,uvscroll_gencall_end0 |
1222 | jr nz,uvscroll_gencall_end0 |
1221 | 1223 | ||
1222 | ;в последней странице (ix-1) не хватает блока pgend |
1224 | ;в последней странице (ix-1) не хватает блока pgend |
1223 | ;скопируем его из предыдущей страницы |
1225 | ;скопируем его из предыдущей страницы |
1224 | ld a,(ix-2) |
1226 | ld a,(ix-2) |
1225 | SETPG32KHIGH |
1227 | SETPGC000 |
1226 | ld hl,uvscroll_callbase+0x3f00 |
1228 | ld hl,uvscroll_callbase+0x3f00 |
1227 | ld de,bgpush_bmpbuf |
1229 | ld de,bgpush_bmpbuf |
1228 | ld bc,256 |
1230 | ld bc,256 |
1229 | push bc |
1231 | push bc |
1230 | push de |
1232 | push de |
1231 | push hl |
1233 | push hl |
1232 | ldir |
1234 | ldir |
1233 | ld a,(ix-1) |
1235 | ld a,(ix-1) |
1234 | SETPG32KHIGH |
1236 | SETPGC000 |
1235 | pop de |
1237 | pop de |
1236 | pop hl |
1238 | pop hl |
1237 | pop bc |
1239 | pop bc |
1238 | ldir |
1240 | ldir |
1239 | ret |
1241 | ret |
Line 1362... | Line 1364... | ||
1362 | ld l,a |
1364 | ld l,a |
1363 | adc a,h |
1365 | adc a,h |
1364 | sub l |
1366 | sub l |
1365 | ld h,a |
1367 | ld h,a |
1366 | ld a,(hl) |
1368 | ld a,(hl) |
1367 | SETPG32KHIGH |
1369 | SETPGC000 |
1368 | exx ;hl'=список страниц графики =f((x2scroll+layer)&3 + ((yscroll/64)*4)) |
1370 | exx ;hl'=список страниц графики =f((x2scroll+layer)&3 + ((yscroll/64)*4)) |
1369 | ld a,e ;yscroll (corrected для зацикливания) |
1371 | ld a,e ;yscroll (corrected для зацикливания) |
1370 | or 0xc0 |
1372 | or 0xc0 |
1371 | ld h,a |
1373 | ld h,a |
1372 | add a,UVSCROLL_SCRHGT |
1374 | add a,UVSCROLL_SCRHGT |
Line 1390... | Line 1392... | ||
1390 | inc hl |
1392 | inc hl |
1391 | inc hl |
1393 | inc hl |
1392 | inc hl |
1394 | inc hl |
1393 | inc hl |
1395 | inc hl |
1394 | ld a,(hl) |
1396 | ld a,(hl) |
1395 | SETPG32KHIGH |
1397 | SETPGC000 |
1396 | exx |
1398 | exx |
1397 | ld h,0xc0 |
1399 | ld h,0xc0 |
1398 | ld a,e |
1400 | ld a,e |
1399 | add a,h |
1401 | add a,h |
1400 | jr nc,uvscroll_patcher0q ;a=-64..-1 = Npatchinlastpg-0x40 |
1402 | jr nc,uvscroll_patcher0q ;a=-64..-1 = Npatchinlastpg-0x40 |
Line 1445... | Line 1447... | ||
1445 | ld l,a |
1447 | ld l,a |
1446 | adc a,h |
1448 | adc a,h |
1447 | sub l |
1449 | sub l |
1448 | ld h,a |
1450 | ld h,a |
1449 | ld a,(hl) ;gfx pages |
1451 | ld a,(hl) ;gfx pages |
1450 | SETPG32KLOW |
1452 | SETPG8000 |
1451 | ld a,(tcallpgs) |
1453 | ld a,(tcallpgs) |
1452 | SETPG32KHIGH |
1454 | SETPGC000 |
1453 | exx |
1455 | exx |
1454 | ld a,e ;yscroll (corrected для зацикливания) |
1456 | ld a,e ;yscroll (corrected для зацикливания) |
1455 | and 63 |
1457 | and 63 |
1456 | add a,0x80 |
1458 | add a,0x80 |
1457 | ld hx,a |
1459 | ld hx,a |
Line 1540... | Line 1542... | ||
1540 | ld l,a |
1542 | ld l,a |
1541 | adc a,h |
1543 | adc a,h |
1542 | sub l |
1544 | sub l |
1543 | ld h,a |
1545 | ld h,a |
1544 | ld a,(hl) |
1546 | ld a,(hl) |
1545 | SETPG32KHIGH |
1547 | SETPGC000 |
1546 | exx ;hl'=список страниц графики =f((x2scroll+layer)&3 + ((yscroll/64)*4)) |
1548 | exx ;hl'=список страниц графики =f((x2scroll+layer)&3 + ((yscroll/64)*4)) |
1547 | ld a,e ;yscroll (corrected для зацикливания) |
1549 | ld a,e ;yscroll (corrected для зацикливания) |
1548 | or 0xc0 |
1550 | or 0xc0 |
1549 | ld h,a |
1551 | ld h,a |
1550 | ;конец (крайнее правое положение L при вызове, т.е. x2scroll=0) = 256-(UVSCROLL_SCRNPUSHES*4) |
1552 | ;конец (крайнее правое положение L при вызове, т.е. x2scroll=0) = 256-(UVSCROLL_SCRNPUSHES*4) |
Line 1575... | Line 1577... | ||
1575 | inc hl |
1577 | inc hl |
1576 | inc hl |
1578 | inc hl |
1577 | inc hl |
1579 | inc hl |
1578 | inc hl |
1580 | inc hl |
1579 | ld a,(hl) |
1581 | ld a,(hl) |
1580 | SETPG32KHIGH |
1582 | SETPGC000 |
1581 | exx |
1583 | exx |
1582 | ld d,0xc0;h,0xc0 |
1584 | ld d,0xc0;h,0xc0 |
1583 | ld a,lx |
1585 | ld a,lx |
1584 | add a,d;h |
1586 | add a,d;h |
1585 | jr nc,uvscroll_columndrawer0q ;a=-64..-1 = Nlinesinlastpg-0x40 |
1587 | jr nc,uvscroll_columndrawer0q ;a=-64..-1 = Nlinesinlastpg-0x40 |
Line 1596... | Line 1598... | ||
1596 | ;ld bc,UVSCROLL_LINESTEP |
1598 | ;ld bc,UVSCROLL_LINESTEP |
1597 | uvscroll_columndrawer_patch1=$+1 |
1599 | uvscroll_columndrawer_patch1=$+1 |
1598 | jp uvscroll_columndrawer |
1600 | jp uvscroll_columndrawer |
1599 | endif |
1601 | endif |
1600 | 1602 | ||
1601 | if 0 |
1603 | if UVSCROLL_USETILES |
1602 | macro DRAWTILELAYERDOWN |
1604 | macro DRAWTILELAYERDOWN |
1603 | dup 7 |
1605 | dup 7 |
1604 | ld a,(bc) |
1606 | ld a,(bc) |
1605 | ld (de),a |
1607 | ld (de),a |
1606 | inc b |
1608 | inc b |
Line 1676... | Line 1678... | ||
1676 | ;hl=tilemap+ |
1678 | ;hl=tilemap+ |
1677 | ;de=ldpush+ (4000,8000) |
1679 | ;de=ldpush+ (4000,8000) |
1678 | ;^^^делать SETPG один раз для горизонтальной линии тайлов и 1 раз за 8 тайлов для вертикальной линии тайлов (8 тайлов не может вылететь за вторую страницу, т.к. мы рисуем всегда с ровного X/8=x/64) |
1680 | ;^^^делать SETPG один раз для горизонтальной линии тайлов и 1 раз за 8 тайлов для вертикальной линии тайлов (8 тайлов не может вылететь за вторую страницу, т.к. мы рисуем всегда с ровного X/8=x/64) |
1679 | ;выводить линию тайлов: сначала весь первый слой, потом весь второй и т.д. |
1681 | ;выводить линию тайлов: сначала весь первый слой, потом весь второй и т.д. |
1680 | ld a,(pgtilegfx) ;TODO по зоне |
1682 | ld a,(pgtilegfx) ;TODO по зоне |
1681 | SETPG32KHIGH |
1683 | SETPGC000 |
1682 | ld a,(ix) |
1684 | ld a,(ix) |
1683 | SETPG16K |
1685 | SETPG4000 |
1684 | ld a,(ix+4) |
1686 | ld a,(ix+4) |
1685 | SETPG32KLOW |
1687 | SETPG8000 |
1686 | drawtiles_hor_block_tilegfx=$+1 |
1688 | drawtiles_hor_block_tilegfx=$+1 |
1687 | ld b,TILEGFX/256 ;+0x08, если Y=y/8 нечётное |
1689 | ld b,TILEGFX/256 ;+0x08, если Y=y/8 нечётное |
1688 | push bc |
1690 | push bc |
1689 | push de |
1691 | push de |
1690 | push hl |
1692 | push hl |
1691 | call drawtiles_hor_layer |
1693 | call drawtiles_hor_layer |
1692 | pop hl |
1694 | pop hl |
1693 | pop de |
1695 | pop de |
1694 | ld a,(ix+1) |
1696 | ld a,(ix+1) |
1695 | SETPG16K |
1697 | SETPG4000 |
1696 | ld a,(ix+5) |
1698 | ld a,(ix+5) |
1697 | SETPG32KLOW |
1699 | SETPG8000 |
1698 | pop bc |
1700 | pop bc |
1699 | push bc |
1701 | push bc |
1700 | set 5,b |
1702 | set 5,b |
1701 | push de |
1703 | push de |
1702 | push hl |
1704 | push hl |
1703 | call drawtiles_hor_layer |
1705 | call drawtiles_hor_layer |
1704 | pop hl |
1706 | pop hl |
1705 | pop de |
1707 | pop de |
1706 | ld a,(pgtilegfx2) ;TODO по зоне |
1708 | ld a,(pgtilegfx2) ;TODO по зоне |
1707 | SETPG32KHIGH |
1709 | SETPGC000 |
1708 | ld a,(ix+2) |
1710 | ld a,(ix+2) |
1709 | SETPG16K |
1711 | SETPG4000 |
1710 | ld a,(ix+6) |
1712 | ld a,(ix+6) |
1711 | SETPG32KLOW |
1713 | SETPG8000 |
1712 | pop bc |
1714 | pop bc |
1713 | push bc |
1715 | push bc |
1714 | push de |
1716 | push de |
1715 | push hl |
1717 | push hl |
1716 | call drawtiles_hor_layer |
1718 | call drawtiles_hor_layer |
1717 | pop hl |
1719 | pop hl |
1718 | pop de |
1720 | pop de |
1719 | ld a,(ix+3) |
1721 | ld a,(ix+3) |
1720 | SETPG16K |
1722 | SETPG4000 |
1721 | ld a,(ix+7) |
1723 | ld a,(ix+7) |
1722 | SETPG32KLOW |
1724 | SETPG8000 |
1723 | pop bc |
1725 | pop bc |
1724 | set 5,b |
1726 | set 5,b |
1725 | drawtiles_hor_layer |
1727 | drawtiles_hor_layer |
1726 | ;8 tiles = 1489 (не считая call-ret) |
1728 | ;8 tiles = 1489 (не считая call-ret) |
1727 | ;*4 слоя*(6+4, считая вертикальные) блоков по 8 = 59560 > 10% от отрисовки при скролле на 8 пикс за фрейм |
1729 | ;*4 слоя*(6+4, считая вертикальные) блоков по 8 = 59560 > 10% от отрисовки при скролле на 8 пикс за фрейм |
Line 1833... | Line 1835... | ||
1833 | ;iy=tilemap+ |
1835 | ;iy=tilemap+ |
1834 | ;de=ldpush+ (4000,8000) |
1836 | ;de=ldpush+ (4000,8000) |
1835 | ;^^^делать SETPG один раз для горизонтальной линии тайлов и 1 раз за 8 тайлов для вертикальной линии тайлов (8 тайлов не может вылететь за вторую страницу, т.к. мы рисуем всегда с ровного X/8=x/64) |
1837 | ;^^^делать SETPG один раз для горизонтальной линии тайлов и 1 раз за 8 тайлов для вертикальной линии тайлов (8 тайлов не может вылететь за вторую страницу, т.к. мы рисуем всегда с ровного X/8=x/64) |
1836 | ;выводить линию тайлов: сначала весь первый слой, потом весь второй и т.д. |
1838 | ;выводить линию тайлов: сначала весь первый слой, потом весь второй и т.д. |
1837 | ld a,(pgtilegfx) ;TODO по зоне |
1839 | ld a,(pgtilegfx) ;TODO по зоне |
1838 | SETPG32KHIGH |
1840 | SETPGC000 |
1839 | ld a,(ix) |
1841 | ld a,(ix) |
1840 | SETPG16K |
1842 | SETPG4000 |
1841 | ld a,(ix+4) |
1843 | ld a,(ix+4) |
1842 | SETPG32KLOW |
1844 | SETPG8000 |
1843 | drawtiles_ver_block_tilegfx=$+1 |
1845 | drawtiles_ver_block_tilegfx=$+1 |
1844 | ld h,TILEGFX/256 ;+0x10, если X=x/8 нечётное |
1846 | ld h,TILEGFX/256 ;+0x10, если X=x/8 нечётное |
1845 | ld l,d |
1847 | ld l,d |
1846 | call drawtiles_ver_layer |
1848 | call drawtiles_ver_layer |
1847 | dec hy |
1849 | dec hy |
1848 | ld a,(ix+1) |
1850 | ld a,(ix+1) |
1849 | SETPG16K |
1851 | SETPG4000 |
1850 | ld a,(ix+5) |
1852 | ld a,(ix+5) |
1851 | SETPG32KLOW |
1853 | SETPG8000 |
1852 | set 5,h |
1854 | set 5,h |
1853 | ld d,l |
1855 | ld d,l |
1854 | call drawtiles_ver_layer |
1856 | call drawtiles_ver_layer |
1855 | dec hy |
1857 | dec hy |
1856 | ld a,(pgtilegfx2) ;TODO по зоне |
1858 | ld a,(pgtilegfx2) ;TODO по зоне |
1857 | SETPG32KHIGH |
1859 | SETPGC000 |
1858 | ld a,(ix+2) |
1860 | ld a,(ix+2) |
1859 | SETPG16K |
1861 | SETPG4000 |
1860 | ld a,(ix+6) |
1862 | ld a,(ix+6) |
1861 | SETPG32KLOW |
1863 | SETPG8000 |
1862 | res 5,h |
1864 | res 5,h |
1863 | ld d,l |
1865 | ld d,l |
1864 | call drawtiles_ver_layer |
1866 | call drawtiles_ver_layer |
1865 | dec hy |
1867 | dec hy |
1866 | ld a,(ix+3) |
1868 | ld a,(ix+3) |
1867 | SETPG16K |
1869 | SETPG4000 |
1868 | ld a,(ix+7) |
1870 | ld a,(ix+7) |
1869 | SETPG32KLOW |
1871 | SETPG8000 |
1870 | set 5,h |
1872 | set 5,h |
1871 | ld d,l |
1873 | ld d,l |
1872 | drawtiles_ver_layer |
1874 | drawtiles_ver_layer |
1873 | ; |
1875 | ; |
1874 | ;c000: metatile gfx |
1876 | ;c000: metatile gfx |