Что именно составляет экран в типичной игре C64?

10

Я пытаюсь понять основы разработки игр на C64 после BASIC, и я мог бы воспользоваться некоторыми советами по поводу чего-то очень простого, но важного: что на самом деле представляет собой весь этот материал на экране и как его нарисовать?

Посмотрите на Катакиса / Денариса :

Скриншот катакис

На экране есть как минимум 9 разных вещей:

  1. Панель Score, с разными шрифтами
  2. Сам корабль
  3. Спутник, прикрепленный к кораблю, съемный
  4. Снаряды вторичного оружия
  5. Основные оружейные снаряды
  6. Движущиеся объекты (могут быть вражеские корабли)
  7. Строка состояния с изображением корабля, количеством жизней и тремя разделами, которые можно заполнить
  8. Панель заряда основного оружия, может заполняться до конца
  9. Скроллинг звездного поля на заднем плане
  10. (не пронумерованы на экране) Твердые объекты, такие как камни или металлические стены, которые являются частью фона

C64 поддерживает только 8 спрайтов на горизонтальную линию сканирования, так что я не думаю, что все в середине экрана может быть спрайтом? Я предполагаю, что все, что требует коллизии, будет спрайтом (поскольку я могу получить аппаратное обнаружение коллизии со спрайтами), но даже тогда я быстро достиг предела в 8 спрайтов. Кроме того, мое оружие может стрелять более чем одним снарядом - мой корабль, спутник и 6 пуль уже будут иметь 8 спрайтов подряд (посмотрите примерно на 50 секунд видео).

Кроме того, какой графический режим будет использовать игра, подобная этой? В Руководстве по программированию перечислены режимы Bit Map Mode, которые существенно изменяют память экрана напрямую. В этом режиме я обычно должен работать? Как бы я соединил все не спрайтовые элементы вместе, чтобы вывести их на экран?

Большая часть материала в строке счета и состояния является статической («Площадь: 01» или «кадр»), поэтому я предполагаю, что я просто заполню их один раз, когда уровень начнется. Вещи, которые нуждаются в обновлении - счет, индикаторы заряда внизу - будут обновляться, заполняя экранную память черным цветом, а затем рисуя новый счет в каждом кадре?

Или мне нужно рисовать весь экран на каждом кадре?

Майкл Стум
источник

Ответы:

13

На c64 вы можете "мультиплексировать" спрайты. После того, как они нарисованы, вы перемещаете их на новое место и снова используете их. Большинство объектов в середине - это, вероятно, мультиплексированные спрайты. В c64 очень легко использовать более 8 спрайтов, если они не занимают одинаковые горизонтальные линии сканирования. Кроме того, вы можете на самом деле создавать программные спрайты, используя шрифтовую графику, если это необходимо (снаряды как минимум в этом случае).

2, 3, 6. Это могут быть спрайты.

4, 5, 9. Это, скорее всего, программные «спрайты» (8x8 пикселей)

Игра будет использовать не растровый режим, это потребует слишком большого перемещения памяти (если вы не сделаете некоторые трюки с чипами VIC ...) Используемый режим будет в графическом режиме.

То, что вам нужно нарисовать, будет зависеть. В этом случае, если вы присмотритесь достаточно внимательно, звезды шаблона определенного размера (x * y pixel) повторяются, поэтому в основном вы должны обновить память символов этих шрифтов, чтобы эмулировать прокрутку звездного поля.

Оценка / статус вы заполняете на старте, а затем обновляете их при необходимости.

Вам придется обновлять спрайты и их положение в каждом кадре. Вы также обновите снаряды. Также вы бы обновили этот шаблон * * x * y pixel starfield.

Просто старый чудак с64
источник
5
Посмотрел повнимательнее на видео Катакиса. Некоторые из этих объектов на самом деле являются графикой шрифтов. Вы можете увидеть, глядя на используемые цвета. Кроме того, starfield на самом деле не просто X * Y пиксель, но немного отличается от других, он все еще в шрифтовой графике. Вам нужно будет обновлять графику прокручиваемого шрифта каждые 8-й пиксель, потому что аппаратные регистры прокрутки перемещают графику только на 8 пикселей, после программной хитрости. Кроме того, вы не хотите использовать аппаратные спрайты. Они не могут различить, какие спрайты действительно сталкиваются, если задействовано более двух спрайтов. Просто математика пригодится в столкновениях.
Просто старый C64 Geezer
2

Я прочитал статью некоторое время назад в немецком журнале C64. Пули - это персонажи, которые действуют как спрайты, как кто-то уже указал. Корабль и враги являются спрайтами.

Уровни также сделаны из персонажей, но с изюминкой. Поскольку уровни такие огромные, а память драгоценна, Тренц написал свой собственный набор инструментов для группировки персонажей в модули.

Поэтому он может использовать большие модули и составлять их. Также он будет использовать некоторые патч-модули, чтобы пересечение модулей было красивым и чистым.

В общем, это своего рода сжатие, где уровни описываются строительными блоками, а не символом символом.

Также вы могли заметить, что в Катакисе некоторые уровни имеют фон параллакса.

Это делается с помощью шаблона для заливки фона, в основном состоящего из символов 2x2 или 3x3, и его анимации (сдвига битов) против направления прокрутки. Например, уровень прокручивается на 2 пикселя влево, фоновый рисунок прокручивается на 1 пиксель вправо, следовательно, он, кажется, прокручивается медленнее.

надеюсь, это поможет

Еще одна вещь, которую вы можете увидеть отдельные модули, и вот здесь https://archive.org/details/64er_1989_10/page/n27 прокрутите страницу 24

Kastor
источник