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 для удач-
возврата в процедуру.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Тест - бред Чапая.
Полезное - Различные применения бутылок Hershi!
Перспектива - Предисловие к игре СТАЛКЕР.

В этот день...   19 ноября