Nicron #98
23 июля 1998

Программирование - о выводе спрайтов. продолжение и ответы на вопросы

	  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

	
	
	





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

Похожие статьи:
Ответы на письма №10-15.
Рассказ - Посидим.
Рекламные обьявления - Продается "COMMODORE AMIGA 600" в отличном состоянии.

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