Технические требования по проекту Lonely Lamps - dreamy-cat/8-Bit-Tea-Party GitHub Wiki

Описание платформы и ограничений по ресурсам для игры.

  • Модель минимальной совместимости - ZX Spectrum 48k.
  • Процессор Zilog Z80 тактовая частота 3.5Мгц, прерывание с частотой 50 раз в секунду, примерно 70000 тактов на каждый кадр, при минимальных затратах 4 такта на команду.
  • Общие регистры: AF, BC, DE, HL, IX, IY, SP, PC, IR. И дополнительный набор AF', BC', DE', HL'.
  • Общее адресное пространство 65536 байт или 64 килобайта, дополнительных страниц нет, разрядность 16 бит.
  • Экранная область 256 точек по горизонтали и 192 по вертикали, монохром - всего 6144 байта.
  • Поверх изображения, атрибуты цветов 8 на 8 точек, 8 цветов для чернил и бумаги, плюс также есть биты яркости и мерцания.
  • Возможности звука - встроенный динамик, 1 бит.
  • Накопитель информации - аудио кассета.
  • Минимальное управление - кемпстон джойстик.

Описание общих ограничений на игру, расположения в памяти и другое.

  1. Один экран, общая память 48 килобайт максимум вместе с экранной областью, без подгрузок. Фактическая память для кода и данных игры 40960 байт в пределе или 40Кб.
  2. Адреса памяти и размеры, расположение кода и данных(обновляется постоянно), цифры даны в шестнадцатиричной и десятичной системе счисления:
  3. 0x0000..0x3FFF (00000..16383:16384) Область ПЗУ, нам здесь максимум понадобится пару функций.
  4. 0x4000..0x57FF (16384..22527:06144) Область монохромного экрана 256 по горизонтали и на 192 по вертикали точек.
  5. 0x5800..0x5AFF (22528..23295:00768) Область атрибутов цвета, размеры 8 на 8 точек и 8 цветов на чернила и бумагу, плюс биты яркости и мерцания.
  6. 0x5B00..0x5FFF (23296..24575:01280) Резервная область, в ней в старшей части располагается таблица для установки прерывания и вершина стека, регистр SP.
  7. 0x6000..0x7FFF (24576..32767:08192) Память условно выделенная на код, системные данные для платформы и для плеера/музыки.
  8. 0x8000..0xFFFF (32768..65535:32768) Память для всех внешних данных, графики и анимаций. Здесь быть внимательней, т.к. если что-то не будет помещаться, то больше памяти взять не откуда.

Программная часть проекта.

Делится на часть обработки данных и на подготовку данных. Всё что зависит от платформы, необходимо разработать на ассемблере. Всё что возможно выносится на произвольный язык программирования и инструменты. Обшие пожелания: не делать монолитные большие скрипты, не тянуть объемных бинарных даднных в репозиторий и писать читабельный код. Требования по внешнему коду игры(обновляем).

  1. Утилита для подготовки данных для анимации, после будет возможно укрупнена до локаций, если не потребуется, но пока что для отладки оставим. Структура будет позже. При проектировании предусмотреть произвольное базовое смещение всех объектов и фактически адресного пространства платформы(16 бит). Т.е. чтобы можно было легко перемещать все данные от некоторого базового значения, сейчас это пока 32768 или 0x8000.
  2. Утилита для конвертации стандартных bmp файлов в бинарные файлы спрайтов для функции отрисовки. На данном этапе требуется только как дополнение, если понадобится автоматизация для множества графики или будет недостаточно функционала редакторов.

Общие данные по структуре локаций игры и правила проектирования.

  1. Все размеры, если не указано отдельно, расчитываются по знакоместам или 8 на 8 точек. Отсчет начала экрана, знакоместа 0 и 0 - с левого-верхнего угла.
  2. Любой экран в игре представляет из себя локацию, с персонажами или без, с динамикой или просто статичная картинка.
  3. Максимальный размер локации 32 знакоместа или 256 точек по горизонтали и 20 знакомест или 160 точек по вертикали. По цветам - там где персонаж условно будет перемещаться можно использовать 2 цвета, чернила и бумага.
  4. Стартовые координаты для локации 0 по горизонтали и 4 по вертикали. Верхние четыре знакоместа резервируются для абстрактных действий и информации.
  5. А там где персонаж никогда не пересекает фон, даже с учетом собственных размеров, то там возможно использование атрибутов цвета. С точки зрения реализации можно и пересекать и делать относительно свободно, но тогда персонаж переходя через эти знакоместа или накладываясь частью себя будет менять цвета.
  6. Локация графически представляет из себя совокупность объектов анимации(составные тоже допустимы), даже если они статические. Фона как такого нету, это тоже пусть большой, но тоже объект с простым наложением на экранную область по координатам.
  7. Максимальное количество объектов анимации в локации 8. Ограничение для верхнего знакоместа персонажа в общем экране при прикидки перемещений, пока что тоже минимально 8, но с высокой долей вероятности будет до 12(т.е. до середины экрана по вертикали).

Дополнительные требования по игре графике(тут еще будем править):

  • Размер заставки загрузочной равны полному экрану ZX Spectrum - 256 на 192 точек и возможно использование атрибутов, заставка больше в игре никак не учавствует.
  • Размер информационной панели сверху экрана - 256x32 точки
  • Требования для начальной заставки: название игры (Lonely Lamps); название нашей команды(8-Bit Tea Party); значок джойстика;
  • Размер спрайта главного персонажа - 32x32 точек, пока оставляем как есть
  • Бюджет анимации для всего экрана - 64x64 точки всего примерно для анимации и обновления локации и пока что неопределенно для персонажей(25 кадров в секунду).