Codemania #01
31 декабря 1999 |
![]() |

Специально для Хирурга и Бластера. -------------------------------- ================================ ******************************** ================================ -------------------------------- Не самая медленная процедура вывода спрайтов 2*2 с точностью до пиксела. Немного теории. Как наверное уже всем ясно, что если спрайт раскладывать на точки и выводить по точкам, то тормозить будет страшно, по этому применяют всякие хитрости. Есть спрайт 2*2 знакоместа. По вертикали его сдвинуть просто, а вот по горизонтали...Значит так, заготавливаем заранее 8 спрайтов 2*3 знакоместа, заранее сдвину- тых по горизонтали, а потом вы- водим нужный. Но это годится только тогда, когда спрайтов не очень много. А если их 50 ? 2*3*8 - размер одного спр.2*Ззн. Их 8 - 2*3*8*8. А всего - 50 ... 2*3*8*8*50=6*64*50=64*300=19200. Однако для крупной проги 50 это мало, и не одними же спрайтами жив человек - музон, сама прога. Вывод один - сдвигать спрайты во время вывода. В конце рубрики можно найти и саму прогу вывода, которая выводит спрайт по OR. Сама прога не сильно сложна, главное понять идею. В проге три основных процедурки: PTBL_S - сдвиг 2 байт из (hl) и (hl+1) и рез.в B',C',D'. PTBL_O - вывод 3 байт на экран с учетом того, что экран не бесконечен. PTBL_D - т.к. в DE адр.в экр., то эта процедурка сдвигает DE на один пиксель вниз. HL-ADRESS SPRITE B-COORD_Y (0..191) C-COORD_X (0..255) PTBL CALL PTBL_A LD B,8*2 PTBLO CALL PTBL_S CALL PTBL_O CALL PTBL_D LD A,D CP #58 RET NC ;OUT OF SCR DJNZ PTBLO RET PTBL_D INC D ; DOWN_DE LD A,D AND 7 RET NZ LD A,E ADD A,#20 LD E,A RET C LD A,D SUB 8 LD D,A RET PTBL_O PUSH DE EXX LD A,B EXX LD (DE),A INC E LD A,E AND 31 JR Z,PTBL_O0 ;OUT OF SCR EXX LD A,C EXX LD (DE),A INC E LD A,E AND 31 JR Z,PTBL_O0 ; -//- EXX LD A,D EXX LD (DE),A PTBL_O0 POP DE RET PTBL_S LD A,(HL) INC HL EXX LD B,A EXX LD A,(HL) INC HL EXX LD C,A EXX LD A,C EXX LD D,0 PTBL_S0 AND A JR Z,PTBL_S1 RR B RR C RR D DEC A JR PTBL_S0 PTBL_S1 EXX RET PTLB_A LD A,B RRCA RRCA RRCA AND #18 OR #40 LD D,A LD A,B AND 7 ADD A,D LD D,A LD A,B RLCA RLCA AND #E0 LD E,A LD A,C RRCA RRCA RRCA AND #1F ADD A,E LD E,A LD A,C AND 7 LD C,A RET -------------------------------- ================================ ******************************** ================================ -------------------------------- The end. Mad Z-Group (C)2000. Main editor : Slavik/ZGR. Music made by uncnown.
Other articles:
|
|
Similar articles:
В этот день... 1 April
Info Guide #13,
ACNews #50,
Avro News #01,
ACNews #47,
ACNews #40,
ACNews #29,
Black Metall #01,
ACNews #16,
Adventurer #13,
Polesse #19,
Subliminal Extacy #03,
ZX Pilot #37,
Always #03,
Born Dead #0G,
Odyssey paper #08,
Optron #26,
City #08,
Zodiac #02,
Polesse #05,
Nicron #108,
X-Magazine #10,
Nicron #82,
Energy #01,
Sorrow News #03,
Sorrow News #02,
Proton #27,
Think #08,
Wallpaper #01,
Spectrum Progress #03,
Spectrum Expert #02,
Micro #01,
X-Files #02,
Gorodok #05,
Deja Vu #04,
Anecdotes #01,
X-Files #02,
Maximum #35,
Impulse #01,
Spectrofun #01,
Faultless #07,
Breeze #06,
Nicron #27,
Echo #03,
Oberon #01,
Spectrofon #19,
On-Line #30,
Sinclair Town #01,
Sinclair Classic #04,
Spectrofon #04