Важная информация
RSS лента

3aRulem Печатное слово

Обзор мультиколорных движков для ZX Spectrum (Денис Грачев)

Рейтинг: 4.67. Голосов: 3.
_


DISCLAMER: Всё нижеописанное применимо к классически моделям Spectrum, все неофициальные клоны и прочие «поделия» имеют свою историю, интересную лишь узкому кругу лиц.

Общеизвестно, что стандартный видеорежим спектрума не позволяет отображать более 2-х цветов в одном знакоместе экрана. Однако существует различные программные трюки позволяющие обойти это ограничение. Один из них это так называемый «Мультиколор», или «Rainbow Graphics». Он позволяет, уменьшит высоту знакоместа до блоков 8x1, 8x2, 8х4 с помощью идеальной синхронизации вывода атрибутов и луча, формирующего картинку на экране. Если порыться в архивах WorldOfSpectrum то можно обнаружить что впервые «радужная графика» появилась примерно в 1985 году. Однако в годы коммерческой жизни Спектрума она так и не была применена к игровому процессу, всё ограничивалось радужными логотипами и названиями в меню. Но были и исключения, например в Action Force 2 выводятся несколько красивых статических картинок:


Статическая мультиколорная картинка из игры Action Force 2

Ну и, конечно же, наиболее ярким и каноничным примером использования данной техники является первая часть польской Shock Megademo выпушенной группой ESI в 1992 году.


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 спектрума и которое может рассчитать где конкретно находится луч в данный момент. Исходя из этих знаний, генерируется исходный код программы вывода графики для старичка спектрума.
Вот так, благодаря современным технологиям становится возможным то, что раньше казалось просто недостижимым. Похоже, всё идёт к тому, что в ближайшее время мы вплотную подойдём к пределу возможностей нашего любимого компьютера. Кто знает, возможно, технологии скрытые в этих великолепных вещах когда-нибудь обретут очертания в виде понятных и документированных движков. Возможно, нас ждут и другие удивительные открытия и рекорды, которые перевернуть наши взгляды на так давно знакомую нам платформу. Однако, это уже совсем другая история.



Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	image001.png 
Просмотров:	1617 
Размер:	19.3 Кб 
ID:	57874   Нажмите на изображение для увеличения. 

Название:	mcolor002.png 
Просмотров:	636 
Размер:	4.0 Кб 
ID:	57875   Нажмите на изображение для увеличения. 

Название:	mcolor003.png 
Просмотров:	672 
Размер:	6.7 Кб 
ID:	57876   Нажмите на изображение для увеличения. 

Название:	mcolor004.png 
Просмотров:	619 
Размер:	4.8 Кб 
ID:	57877   Нажмите на изображение для увеличения. 

Название:	mcolor005.png 
Просмотров:	625 
Размер:	5.2 Кб 
ID:	57878  

Нажмите на изображение для увеличения. 

Название:	mcolor006.png 
Просмотров:	646 
Размер:	5.0 Кб 
ID:	57879   Нажмите на изображение для увеличения. 

Название:	mcolor007.png 
Просмотров:	615 
Размер:	5.9 Кб 
ID:	57880   Нажмите на изображение для увеличения. 

Название:	mcolor008.png 
Просмотров:	628 
Размер:	3.1 Кб 
ID:	57881   Нажмите на изображение для увеличения. 

Название:	mcolor009.png 
Просмотров:	618 
Размер:	4.4 Кб 
ID:	57882   Нажмите на изображение для увеличения. 

Название:	mcolor010.png 
Просмотров:	618 
Размер:	13.1 Кб 
ID:	57883  

Нажмите на изображение для увеличения. 

Название:	mcolor011.png 
Просмотров:	623 
Размер:	7.5 Кб 
ID:	57884   Нажмите на изображение для увеличения. 

Название:	mcolor012.png 
Просмотров:	617 
Размер:	766 байт 
ID:	57885  
Метки: #17, denisgrachev, multicolor Добавить / редактировать метки
Категории
3aRulem #17

Комментарии

  1. Аватар для seventh
    круто . очень.
  2. Аватар для sergio78
    Цитата Сообщение от BlastOff
    все неофициальные клоны и прочие «поделия» имеют свою историю, интересную лишь узкому кругу лиц.
    Примите мои благодарности, снимаю перед вами шляпу за то что не побоялись так сказать . Все эти самоделки-погремушки, интересны только любителям потыкать паяльником, ну или совсем единичным коллекционерам, которым непощасливилось например марки или монетки вместо кустарных железок, собирать.
  3. Аватар для BlastOff
    Не время скрывать и замалчивать информацию! Всё в массы!
  4. Аватар для Dimon spb
    Не могу найти NinjaMan...

Трекбэков