Программирование - о выводе спрайтов. продолжение и ответы на вопросы
Hе дай мозгам засохнуть -
Спрайт !
(c) Spencer Winset/Diamond group
Я получил первое письмо, оно от известного Московского
free-кодера GPV-SOFT (500:95/550.5, тел:944-04-48 Георгий):
GPV> Hi, в своем письме ты сказал много, но не оговорил условия.
Оговорив все условия, я не получил бы ни одного письма. Тем бо-
лее, я хотел, чтобы ZX-люд немного потренировался в мышлении,
поэтому и не поставил ограничение на полет мысли (хотя ты прав).
GPV> Я так понял - тебе нужен вывод спрайта по XOR.
Вот и результат, ты вдумался в мои загогулины (ты опять прав).
GPV> А почему ты не сказал, сколько у тебя есть памяти,
GPV> какой размер спрайта, используется ли второй экран и т.д.
Ответ я дал одиннадцатью строками выше. А по существу: памяти
мало, спрайты: ширина 2 или 3 симв. поз., высота около 16 линий,
второй экран не используется и свободны все регистры,'-ные тоже.
Кстати, память позволяет не DJNZ'ить по кол-ву линий в спрайте,
а расписать все подряд (хотя это в 15 раз больше байт займет).
GPV> Если памяти много, то самый быстрый способ вывода по XOR:
LD A,(HL)
XOR #NN 25 тактов на 1 байт
LD (HL),A
INC L
Вот именно на этом месте пока ты заработал бутылку пива. А по
тактам, тута получается побольше 25, но нe нaмного, впрочем к
моим процедурам это тоже относится, а именно переход к следую-
щей линии (по памяти: простое сложение регистровых пар, а по эк-
рану: интернациональная процедура DOWN HL).
GPV> Для каждого спрайта своя процедура. Эти процедуры можно
GPV> оптимизировать с учетом особенностей данных спрайтов.
GPV> Все зависит от конкретных условий !!!
GPV> С уважением, GPV-SOFT (500:95/550.5, тел:944-04-48 Георгий)
Золотые слова! Огромное спасибо за письмо и советы.
* * *
Теперь я постараюсь рассказать для чего, собственно, это все
надо, и дам больше технической информации заинтересовавшимся.
Полтора года назад наша Diamond group в составе 8 человек ре-
шила всерьез заняться производством игрушки под названием "X".
Поскольку собственные идеи отсутствовали, решено было перевести
игру "WORMS" на платформу ZX. Мы получили благословление KSA и
кодовую поддержку FUX'а (параболическая траектория полета
снаряда). Hе прошло и трех месяцев, как супер-графиста HUNTER'а
забрали в армию. Далее игра пошла криво, и мы кинулись на лег-
кий хлеб - демостроение. За 1997 год около 12 демок, лучшего за-
нятия для тренировки в кодах не найти. За это время накопилось
много собственных идей, копия игры "WORMS" переросла в сольный
проект. В начале 1998 года проект был разморожен. Многие проце-
дуры были опримизированны почти в два раза, и это не предел.
Графист придет из армии спустя 3 месяца после FunTop98 (там бу-
дут его работы), а пока я (Spencer) подтягиваю процедуры к фини-
шной прямой.
26.05.98 на Совете Сисопов в Измайловском парке наш органайзер
Re-Animator провел голосование. Из 25 предложенных названий иг-
рового проекта было выбрано: "FOUR RASCALS" /Четверо Сволочей/,
потому что в каждой команде по четыре солдата; дальнейшую игро-
вую информацию давать пока рано (могут сглазить).
Техническое инфо по спрайтам.
Они накладываются (по XOR) в память на рельеф, который тоже в
спрайтовой форме (все байты расположены последовательно).Почему
по XOR, а не по маске? Во-первых, по тактам и по памяти в два
раза меньше, во-вторых, за рельефом чернота (как в Тank War),
маски и видать не будет. А почему тогда не прямой загрузкой:
POP DE
LD (HL),E
32/2=16 тактов на байт INC L
(это не предел; LD (HL),D
можно и...) INC L
Hо прямой загрузкой "верхний" спрайт забьет предыдушие,если они
расположены на одном месте рельефа, да и рельеф не прямая линия,
будет затерт. Интересно эту проблему решил VDV CORP в своей иг-
ре ICE CLIMBER: большие спрайты печатаются и затирают друг дру-
га, но все спрайты в одно прерывание печатаются в одной (любой!)
последовательности, а в другое прерывание в строго обратной по-
следовательностьи. Посмотрите сами в выше (у)помянутой игре, вы-
брав два игрока и "наступив" одним на другого. А так - мерцают
немного.
А по XOR'у можно использовать процедуру второй раз, и спрайт
исчезнет со старого положения, и случайно испорченый рельеф вос-
становится. Hо если кто-то располагает более современными знани-
ями в этой области, то милости прошу - пишите,ведь игру я делаю
не для себя, а для HАШЕГО Спекки. Пока.
Spencer Winset/Diamond group
500:95/550.8 Evgene Goljakov
Другие статьи номера:
|
|
|
|
Программирование - о выводе спрайтов. продолжение и ответы на вопросы
|
|
|
|
|
|
|