ZXNet эхоконференция «code.zx»


тема: Fast chunky gouraud shadin inner loop.



от: Aleksey Malov
кому: All
дата: 27 Mar 2000
Приветствую тебя, All! Subj выглядит на удивление элегантно и просто: ;hl-адрес в таблице яркостей chunk'ов (256 байт 0 яркость ... 256 байт 15 яркость) ;de - chunky screen ;bc - 8.8 шаг яркости ldi add hl,bc 27 тактов на chunk можно сделать и так hl- яркость bc,de - см выше ld a,h ld (de),a inc e add hl,bc 26 тактов/chunk однако последдний способ не может быть применен с 82 тактовым выводом chunk'ов на экран. Желаю вам здоровья, счастья и творческих узбеков. Aleksey Malov aka VIVID/Brainwave.

от: Aleksandr Majorov
кому: Vyacheslav Kalinin
дата: 03 Apr 2000
Хаюшки, Vyacheslav! Как-то 01-04-00 примерно в 22:14:00 некто Vyacheslav Kalinin сообщил(а/о) для Aleksey Malov о том, что "Fast chunky gouraud shadin inner loop." [ ] VK> Просто в демо ор дие написано мол неиспользуйте индексные VK> регистры,а вот я например не представляю как вычислять мат поменьше читай всякое :-)))) И по больше думай головой. Для ДЕМОК неюзание ix/iy - это да, это будет несколько быстрее. Для любой нормальной более-менее большой программы (а уж особенно для работы с массивами) индексные регистры пригодяться. Хотя было-бы желание, можно и без ix/iy обойтись. Hе можешь представить как вычислять? - Легко! Загрузи адрес в HL и работай! Юзая INC HL / DEC HL VK> рицы без IX,IY ,да и еще в матрицах надо делить,а как например VK> можно число на 9 разделить ,чтобы это еще и быстро работало? Вот тебе сорец, что мне FK0 прислал когда-то. =================================================== ; bc=bc/de hl=bc%de DIV LD A,D: OR E: SCF: RET Z LD HL,0 LD A,B LD B,16 DIV1 SLA C: RLA ADC HL,HL SBC HL,DE: JR NC,DIV2 ADD HL,DE DEC C DIV2 INC C DJNZ DIV1 LD B,A XOR A RET ; 28 байт, 1346 тактов макс. =================================================== VK> И если можешь подскажи есче как можно побыстрому овеличить VK> чанковый экран не ровно в 2 или 4 или 6 раз,а на чуть чуть на пол пикселя :-))))))))))) [ ] VK> сь к тебе,да и разясни плиз как у вас там в демки чанки выводя VK> тся,я там покапался но обнаружил тока конструкцию такого VK> вида: VK> . . . VK> .. .. VK> POP HL VK> ADD HL,BC aRTYY6TYGG VK> LDD Между прочим именно так и выводиться! То что ты не смог понять - это скорее всего в связи с отсутствием коментов? ;) Принцип прост: взяли из таблицы (вычисленной давно) начальный АДРЕС, прибавили к нему СМЕЩЕHИЕ ==> получили адрес для вывода, вывели по этому адресу. Хотя в данном случае несколько другой вариант: В памяти лежит полный образ выводимой картинки. Поскольку мы что-то там маштабируем/поворачиваем, то выводить нужно не один к одному, а с коррекцией. Так вот DE указывает на "куда будем выводить на экране". Со стека сняли начальный адрес "откуда выводить" и прибавили смещение. Причем очень часть в [C] храним смещение по горизонтали, а в [B] смещение по вертикали. Сложили и получили реальный адрес точки, которая должна быть выведена в текущую точку на экране. Вывели ее по LDD и перешли к следующей точке в данной строке. Это, кстати, словами и не объяснишь :) Это надо самому почувствовать, самому сообразить и увидеть :)))) Hу вот и все *MAS* с кувалдой




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

Похожие статьи:
Система - обсуждение насущных вопросов стандартизации Спектрум-совместимых компьютеров.
the loop - долгожданная дема "the loop", которой мы ждали почти 3 года, наконецто, отдана в массы...
Иной - Дым-шептун.
О людях... - О истории создания и планах Virt group.
BRAVO на отдых - Рассказы : Автобус, Ода комару.

В этот день...   8 мая