Category: Разработка

30
Апр
2024

Внезапные грабли

Графика в текущем проекте (Dave) выводится с помощью AZBK, а точнее с помощью одной из графических фич AZBK – блиттера. Суть “азбучного” блиттера состоит в том, что ему можно давать пакет команд, который он читает себе в буфер и потом выполняет уже самостоятельно, не отнимая процессорного времени.

Читать далее

17
Апр
2024

Среда разработки

Все очень просто:

  • Превосходный эмулятор БК11М https://gid.pdp-11.ru/
  • В нем запускаю ANDOS.
  • Код пишу во встроенном редакторе оболочки ANDOS или редакторе Vortex, если текст очень длинный.
  • Компилию старым добрым micro1103.
  • Собираю все линковщиком link Евгения Пашигорова с помощью батников.
  • Если надо перенести какие-то спрайты с PC – пишу их сразу в образ диска с помощью BKDE, а там превращаю в .obj с помощью утилиты 2obj (Е. Пашигоров)

И никаких проблем.

13
Апр
2024

Призрачные Зомби

Переделал движок анимации монстров. В анимации Зомби каждая фаза движения стоит на экране 8 кадров, напрашивалось решение выводить на экран только один из этих спрайтов, первый. А потом 7 кадров пусть он себе стоит, не надо выводить его заново. Что и было реализовано. Получен, конечно, большой выигрыш в скорости обработки монстров. Но можно еще ускорить, если сдвинуть начальные фазы монстров так, чтобы они обновляли свои ключевые спрайты не одновременно.

Не обошлось без подводных камней: пакет команд в блиттер уходит сразу после получения “кадрового” прерывания, а вот изменения начального адреса отображения слоя видеопамяти – в процессе обработки скроллинга движком. В итоге иногда на экране мелькают призраки Зомби, которые не успели стереться. Идеи борьбы с этими “хвостами” у меня есть, завтра попробую реализовать.

Монстров на одном уровне в Дейве прямо толпы – количество их достигает 60 штук. Конечно, не все они видны и в реальной игре Дейва быстро сожрут при большом столпотворении, но все равно есть что оптимизировать…

11
Апр
2024

Зомби!

Добавил анимацию Зомби, создал движок для монстров, ошивающихся поблизости. Пока ходят просто туда-сюда, ни на что не реагируя (как зомбированные):

10
Апр
2024

Допилил недоделки

Сегодня плодотворно поработал:

  • исправил спрайты со смещенным контуром (один был при стрельбе влево вверх, второй – при заряжании)
  • добавил анимацию перезарядки и расход патронов (собственно, добавил еще вчера, но из-за кривых спрайтов выглядело это не очень)
  • оптимизировал обнаружение препятствий летящей пулей – процедура ускорилась  в 17 раз 🙂
  • добавил команду “повтор спрайта” для движка движений – таблицы движений сократились даже не знаю во сколько раз
  • добавил задание индивидуального шага в анимацию объектов обстановки, теперь они работают как положено, с разными скоростями – дым летит быстро, алмазы мигают медленно, очки плывут вверх средне
  • допилил стрельбу – после выстрела не происходит возврат в базу, пока не отпустят кнопку выстрела
  • добавил проверку попыток стрелять при пустом магазине и соответствующие движения

Завтра приступаю к запуску Зомби!

07
Апр
2024

Стрельба готова

Как-то мне попалось мини-интервью Джона Ромеро, его там спросили под каким углом стреляет Дейв. Ответ был – 45 градусов. Я тогда удивился, почему вообще возник такой вопрос у народа. Поизучал траектории полета пули в оригинале и тоже удивился: что-то там не похоже на 45 градусов никак:

Пришлось немного повысчитывать, но все получилось, теперь Дейв стреляет:

 

И вот появилось ощущение той самой игры! Теперь надо или подумать над звуками в игре, или заняться монстрами, разлетающимися кусками от них и т.д.

P.S. Совсем забыл – надо же перезарядку дробовика еще сделать 🙂

06
Апр
2024

Дейв становится опасным

Добавил анимацию стрельбы и дыма при выстрелах. 6 видов дымов! Один из спрайтов стрельбы оказался с кривым контуром – слишком толстым. Выглядит он как будто с тенью на стене. Поищем, починим. Теперь надо делать обработку попаданий и расход патронов. Гонять стало сразу куда прикольней!

05
Апр
2024

Переходим к главному!

Добавил движения прицеливания. С джойстиком все ок, а вот на клавиатуре придется делать кнопки сразу стрельбы, а не прицеливания. Потому что клавиатура БК не позволяет обработать нажатие двух клавиш. Точнее, есть один способ (через команду RESET), но во-первых работает он только на реальном железе, а во-вторых так вылавливаются далеко не любые сочетания клавиш. И тем более нельзя будет задавать произвольные клавиши для такого метода опроса. Так что от этой мысли я отказался.