Обзор мультиколорных движков для ZX Spectrum (Денис Грачев)
_
DISCLAMER: Всё нижеописанное применимо к классически моделям Spectrum, все неофициальные клоны и прочие «поделия» имеют свою историю, интересную лишь узкому кругу лиц.
Общеизвестно, что стандартный видеорежим спектрума не позволяет отображать более 2-х цветов в одном знакоместе экрана. Однако существует различные программные трюки позволяющие обойти это ограничение. Один из них это так называемый «Мультиколор», или «Rainbow Graphics». Он позволяет, уменьшит высоту знакоместа до блоков 8x1, 8x2, 8х4 с помощью идеальной синхронизации вывода атрибутов и луча, формирующего картинку на экране. Если порыться в архивах WorldOfSpectrum то можно обнаружить что впервые «радужная графика» появилась примерно в 1985 году. Однако в годы коммерческой жизни Спектрума она так и не была применена к игровому процессу, всё ограничивалось радужными логотипами и названиями в меню. Но были и исключения, например в Action Force 2 выводятся несколько красивых статических картинок:
Ну и, конечно же, наиболее ярким и каноничным примером использования данной техники является первая часть польской Shock Megademo выпушенной группой ESI в 1992 году.
Статическая мультиколорная картинка из игры Action Force 2
Shock Megademo
И вот в 21 веке, уже после официальной смерти платформы наконец-то появились инструменты, позволяющие любому желающему с лёгкостью выводить и двигать по экрану радужные спрайты-зебры!
ZXodus
Автор: Andrew Owen
Один из первых мультиколорных движков нашего времени который взял барьер в 16 знакомест шириной. Он позволяет манипулировать «радужной» областью экрана размером 144 на 144 пикселя и атрибутами 8x1. Вся область разбита на тайлы размеров 16 на 16 пикселей. Таким образом, у нас в распоряжении имеется сетка тайлов 9 на 9 из которых мы можем формировать финальную картинку путём изменения номеров тайлов в «карте». Движок может использоваться даже из Бейсика, в этом случае номер тайла в карту прописывается через POKE.
ZXodus Engine сделай свою РПГ
BiFrost, BiFrost*2, Nirvana, Nirvana+
Автор: Einar Saukas
С присущей всем бразильцам прытью эстафету «радужных» движков подхватил Einar Saukas. В течении нескольких лет он развил идеи Andrew Owen и его предшественников потратив на это кучу времени и сил. И результат не заставил себя ждать, наконец-то появились реальные игры, написанные с их помощью.
Первым увидел свет BiFrost Engine, который основан на той же концепции что и ZXodus, однако тайлы теперь могут быть анимированными. Несмотря на концепцию, позаимствованную у предшественника, движок позволяет манипулировать отдельными мультиколорными областями экрана для создания дополнительных эффектов. Также как и предшественник BiFrost может использоваться из Бейсика. Движок прекрасно документирован и к нему есть огромное количество примеров использования. Новая версия движка увидела свет совсем недавно, в марте 2016 года. Автору удалось преодолеть барьер в 18 знакомест и BiFrost*2 радует нас уже 20-ю! В дополнении имеются библиотеки, позволяющие использовать движок с Boriel's ZX BASIC и z88dk.
Несмотря на всю красоту BiFrost он так и не снискал популярности в среде разработчиков. Всё дело в том, что технология тайловой карты
Демонстрация возможностей BiFrost*2 Engine
и ограниченная ширина мультиколорной зоны накладывает существенные ограничения на игры. Видимо автор это вовремя понял и уже следующий движок от Einar Saukas снял все эти ограничения.
Nirvana Engine просто даёт разработчикам набор функций для вывода «радужных» тайлов. Движок не загоняет нас в рамки тайловой карты. Вы можете рисовать тайлы где угодно на экране и на любой чётной пиксельной линии. Ширина «радужной» области увеличилась до 30 знакомест, это стало возможным благодаря переходу на мультиколор 8x2, что конечно меньше чем у BiFrost, однако на практике это практически не заметно.
Nirvana Engine во всей красе
Автор продолжает совершенствовать свой движок и в сентябре 2015 годы выпустил новую версию Nirvana+. В новой версии удалось расширить мультиколорную область на полных 32 знакомест. Стоит отметить что не последнюю роль в этом сыграл великолепный Дмитрий Быстров который подкинул автору несколько идей.
Ну и, конечно же, картина не будет полной, если помимо движков с открытым исходным кодом не упомянуть несколько впечатляющих технологических демонстраций и игр, сделанных лучшими умами нашей платформы в которых используется радужная графика.
Полная Нирвана
RiverRaid Tech Demo
Автор: Jason J. Railton
Демо показывает нам, как мог бы выглядеть «радужный» порт игры River Raid. Здесь используется мультиколорная область шириной в 14 знакомест по центру экрана. Освободившееся процессорное время использовано для вывода дороги, проходящей через мост. Особым шиком является то, что дорога рисуется во весь экран, включая бордюр. Для вывода спрайтов/тайлов используется только атрибуты, а пиксельный экран заполнен узором вида 00001111. Таким образом, устанавливая INK и PAPER внутри знакоместа, есть возможность рисовать цветными блоками 4x1.
River Raid Tech Demo
Buzzsaw
Автор: Jason J. Railton
Игра представляет с собой вариант игры со стаканом. Здесь для мультиколора используется небольшая область шириной в 12 знакомест, однако уже выводятся полноценные цветные спрайты. Примечательно то, что здесь освободившееся процессорное время используется для генерации биперных звуковых эффектов.
Buzzsaw
MultiColor Scroll 120
Автор: Дмитрий Быстров (Alone Coder)
Великолепная демонстрация полноценного мультиколорного скроллинга высотой в 120 пикселей была продемонстрирована Дмитрием в приложении к журналу IG #11. Примечателен тот факт, что весь процесс есть в записи на Youtube и вы можете полностью проникнуться всеми нюансами.
«Совесть» скроллится
NinjaMan
Автор: Kayamon
Не интерактивное технологическое демо, в котором герой перемещается по экрану во всех направлениях, и при этом нет никакого клэшинга атрибутов. Всё это великолепие происходит в 50 FPS и выглядит абсолютно нереально для спектрума. Мультикороный фон и пиксели скроллируются по горизонтали и вертикали. Автор написал специальное ПО на PC которое «знает» как работает оригинальное ULA спектрума и которое может рассчитать где конкретно находится луч в данный момент. Исходя из этих знаний, генерируется исходный код программы вывода графики для старичка спектрума.
Вот так, благодаря современным технологиям становится возможным то, что раньше казалось просто недостижимым. Похоже, всё идёт к тому, что в ближайшее время мы вплотную подойдём к пределу возможностей нашего любимого компьютера. Кто знает, возможно, технологии скрытые в этих великолепных вещах когда-нибудь обретут очертания в виде понятных и документированных движков. Возможно, нас ждут и другие удивительные открытия и рекорды, которые перевернуть наши взгляды на так давно знакомую нам платформу. Однако, это уже совсем другая история.
Комментарии
Трекбэков
Всего трекбэков 0
Ссылка трекбэка: