Born Dead
#05
06 января 1999 |
|
Coding - Ultra fast procedure chank'и to planar screen.
════════════════════════════════════════════════════════════════ ╠╬╣║╞╪╡███╡╪╞║╣╬╠ CODING. FAST C2P PROCEDURE ╠╬╣║╞╪╡███╡╪╞║╣╬╠ ════════════════════════════════════════════════════════════════ (c) Monster/Sage Group И снова о chank'ах. Вы уже наверное заметили в интре к газете довольно шустрый ( >25 frm/sec ) bump mapping во весь экран. Так вот такой скорости работы эффекта удалось достичь с помощью хитрой c2p процедурки про которую я сейчас расскажу. Сразу предупрежу, эта процедурка занимает как минимум страницу памяти, скорость требует жертв :-) Ultra fassst procedure chanky to planar screen (c2p): Байт из c2p буфера для каждого chank'а имеет вид - 11xxxx00, где xxxx - яркость chank'а, 11 - 2 бита адреса таблицы jump'ов. Таблица jump'ов выглядит так: #C0C0: JP ADR_#00 #C4C0: JP ADR_#10 ... #FCC0: JP ADR_#F0 #C0C4: JP ADR_#01 #C4C4: JP ADR_#11 ... #FCC4: JP ADR_#F1 ... ... ... ... #C0FC: JP ADR_#0F #C4FC: JP ADR_#1F ... #FCFC: JP ADR_#FF ADR_#XX: LD H,D ;#xx - 6 линий спрайта пары chank'ов LD (HL),#xx ;рисуем 0 линию INC H LD (HL),#xx ;1 INC H LD (HL),#xx ;2 INC H LD (HL),#xx ;3 INC H LD (HL),#xx ;4 INC H LD (HL),#xx ;5 INC L RET NZ ;99+10 (jmp adr)=109 тактов на пару LD A,D ;для межсегментого экранного перехода ADD A,E LD D,A RET ;83712 тактов - весь экран ! SP_ указывает на начало c2p буфера экрана HL_ #4000 начало экрана или #C000 (если таблица jump'ов в #8080) DE_ смотри ниже Процедура прорисовки буфера chank'ов на экран: C2P_DRW LD (C2P_RET+1),SP LD SP,C2P_BUF LD HL,#4000 LD D,H LD E,8 RET C2P_RET LD SP,0 RET И незабудьте в конце буфера поставить адрес C2P_RET для удач- возврата в процедуру.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября