[Перевод] Секретные цвета Commodore 64

2f97dadb7022450bae94c4598130f4f9.pngCOMMODORE FORMAT выпуск 13, Q&A:
Невозможно увеличить количество цветов в палитре C64, но существуют хитрые подпрограммы, которые позволяют создать впечатление большего количества цветов. Dragon Breed от Activision использует очень быстрое переключение цветов, чтобы дать промежуточный тон, а PD-кодеры создали механизм Fli-Pic, который позволяет вам использовать более четырех цветов на блок символов.


В 1991 году мне было четырнадцать лет. Можно сказать, что я был одержим компьютерами. Я был гордым обладателем коричневой «хлебницы» Commodore 64 с экзотической модернизацией — накопителем Oceanic 5.25»:

b26e05745d174e6484f450d2fa9d9988.jpg
59eeafddf00046fdaaf338c4c7ec8396.jpg

В мае того года я читал COMMODORE FORMAT и пожирал обзоры игр C64. Однажды я прочитал заголовок, который засел у меня в голове на годы. Под снимком красочного роботизированного дракона было написано:

Погоди… Ты не можешь получить этот цвет на 64! Но это возможно, если менять бледно-зелёный и голубой 50 раз в секунду!

Это потрясло меня до глубины души.

Благодаря чуду интернета и страсти некоторых великих архивистов журналов, мы можем раскопать ту самую страницу, которая изумила меня давным-давно:

edb43cc8f7d149e18d0e4f025eb891b3.png

Это было довольно необычно. Если у вас был любой 8-битный компьютер, вы хорошо знакомы с его цветовой схемой. Эта простая фотография взорвала мой мозг. Этот синий цвет был просто невозможен.

Согласно заголовку, если чередовать два разных цвета достаточно быстро, для глаза появляется совершенно новый цвет. Как этот новый секретный цвет выглядел на вашем хреновом ЭЛТ-телевизоре ранних 90-х? Снимок экрана был только намеком. Сиял ли он? Мерцал?

Двадцать шесть лет спустя я нашёл ответ.

Эта статья посвящена переключению цветов на Commodore 64. Ниже есть несколько интерактивных примеров. Я не нашел ничего похожего, поэтому возможно, что это единственный ресурс на эту тему.

Давайте немного подумаем, почему секретные цвета были такими грандиозными?

Палитра определяла компьютер


Палитра была важна.

Типичный 8-разрядный компьютер мог отображать только шестнадцать цветов. Эти цвета были зашиты аппаратно при разработке компьютера.

Это означает, что палитра определяет фиксированные рамки для компьютера. Она ограничивала то, как выглядят и ощущаются образы. Это фундаментально отличало Commodore 64 от ZX Spectrum, от Apple II, от Amstrad CPC. Вы могли сразу сказать, на каком компьютере был сделан тот или иной скриншот.

Вполне ожидаемо, что дизайн аппаратной палитры был чрезвычайно важен. Художники работали только с шестнадцатью цветами и нуждались в тщательно подобранных тонах, которые помогут им отобразить реальный мир.

Не всегда получалось хорошо. Очень жаль кричащую палитру зашитую в Sinclair ZX Spectrum, которая порождала образы подобные этим:

0e1cfc99e6ca406ea308cda5c3b5561b.png

Так получилось, что инженеры Commodore проделали отличную работу. На рисунке ниже в левом верхнем углу показана палитра. Остальная часть изображения показывает приятные градиенты, возможные на C64.

b7d63225a7aa458b899674e093fbd33d.png

Примечание: Это не моя картинка! Оригинальный автор неизвестен, но я нашел её здесь.

Обратите внимание:
  • Палитра обладает более земными тонами, которые соответствуют реальным объектам. Сравните со взрывом красок Спектрума.
  • В ней есть множество оттенков серого. Это позволяет отображать монохромные картинки, а также такие вещи как металл. В конце концов, нейтральные оттенки серого можно смешать с другими цветами, размещая их рядом.

Поэтому владельцы C64 привыкли к таким экранам:

a989c13dd21c410eb3cab5e203199dc9.gif

d225c0a18bfe4d9eb96ceff9122f9f95.gif

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

После долгих лет пристального изучения этой палитры, она въелась в мой мозг. Я узнаю эти цвета сразу. Они резонируют с частотой ностальгии и заставляют трепетать мой мозг. Я даже использую эти цвета в качестве моего аватара на Github:

5c52bb145940474c97b8c010190f5c1e.png

Учитывая это, мысль о том, что можно разрушить эту грань и изобрести новые секретные цвета на C64, что можно заставить видеть то, чего не существует, казалась волшебной.

Переключение цвета


Если достаточно быстро менять два цвета, например, 50–60 раз в секунду, то можно обмануть зрение и увидеть то, чего нет. Для машины с шестнадцатью цветами даже один или два дополнительных цвета могут значительно обогатить сцену.

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

Простой пример


Вот квадрат, который меняет свой цвет с красного на синий и обратно каждую секунду.

Примечание переводчика: Тут и далее переключайтесь на вкладку Result, чтобы запустить пример.


Нажмите на него, чтобы цвета начали переключаться со скоростью 60fps (или, в некоторых случаях, с максимальной скоростью обновления экрана вашего браузера. Было бы здорово увидеть это на 144-Гц мониторе).

Обратили внимание, как появился третий цвет? Этот оттенок фиолетового не отображается. Появляются только красные и синие квадраты, а ваш глаз видит цвет, которого там нет. Я вас не обманываю. Это переключение цвета в действии.

Нажмите ещё раз, чтобы замедлить скорость и проверить.

Пример из Dragon Breed


Вернёмся в далёкий 1991, я был заинтригован обзором, но у меня никогда не было той игры. Как на самом деле выглядел Dragon Breed?

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

Лирическое отступление: У нас есть интересная возможность — запустить оригинальную аркаду. Поскольку мы живем в будущем, вы можете играть в Dragon Breed прямо сейчас в своем браузере (нажмите кнопку питания, подождите загрузки, нажмите 5, чтобы вставить монету, затем 1, чтобы начать). Это потрясающе. К сожалению, чтобы увидеть дракона, который нас интересует, вам придется дойти до конца STAGE 3. Удачи.

Наверняка кто-нибудь записывал этот эффект на longplay-видео C64? После небольших раскопок я нашел нашего знаменитого робота-босса дракона на Youtube:

Но, так как видео записано на 30fps, всплывают две проблемы:
  1. Оно выглядит хреново. Спрайты раздражающе мелькают.
  2. Эффект переключения цветов полностью потерян.

Если бы вы играли на эмуляторе с 50/60fps, эффект был бы убедительным.
Лирическое отступление: Заметка о кадрах в секунду. Европейская версия PAL C64 обновляется со скоростью 50 кадров в секунду, тогда как системы NTSC в США обновляются со скоростью 60 кадров в секунду (ссылка). Странно, да? Это означает, что эффект немного убедительнее на американской машине.

Можем ли мы показать эффект Dragon Breed на веб-странице? Давайте дойдём до STAGE 3 (с помощью читов, конечно) и сохраним босса в пару кадров:

816f1e288a734a4b963e59e677850cd3.png
d1d4b016d7634bce87cc03e86cc4408a.png

Далее, с небольшой помощью JavaScript мы можем чередовать образы и увидеть оригинальный эффект при 60fps. На телефоне, вероятно, сначала понадобиться немного уменьшить масштаб. Еще раз, нажмите, чтобы замедлить или активировать переключение цветов:


Посмотрите на все три изображения, мы создали совершенно новый цвет!

Также обратите внимание на мерцающий хвост дракона: это следствие ограничения на спрайты в C64. Компьютер не поддерживает достаточное количество спрайтов для отображения шести сегментов хвоста и всех врагов одновременно, поэтому показываются только три и чередуются каждый кадр с мерцающим эффектом.

Мы сделали это! Мы воссоздали механизм переключения цветов из Dragon Breed в браузере. Готово?

Пример с палитрой


Нет. Можно смешать эти два цвета, а какие ещё комбинации возможны? Иными словами, каков набор всех возможных секретных цветов на данной машине?

Давайте выясним. Наденьте свои очки! Мы сведем каждую уникальную пару цветов на Commodore 64 в один прекрасный эпилептический взрыв. Опять же, нажмите, чтобы переключить режимы:


Довольно круто, да? Похоже на тартан для клана Макпуке.

Имейте в виду, что каждый мерцающий квадрат выше — это уникальная пара цветов. Я выделил комбинацию, которая используется в Dragon Breed, с помощью границы.

Обратите внимание, что некоторые комбинации имеют неприятный стробоскопический эффект. Но не все из них! Почему так происходит? Все дело в яркости. Два цвета одинаковой яркости прекрасно сочетаются, тогда как черный и белый будут очень сильно мерцать.

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

Конец


Вот и вся история о том, как я читал о секретных цветах C64 в 1991 году, а затем спустя двадцать шесть лет наконец добрался до них. Если вам по-прежнему интересно и ваши глаза ещё не вытекли, дальше располагается бонусный контент.
Статья из 1991 года
До Интернета компьютерные журналы были единственным способом узнать, что происходит в мире технологий. Трудно описать, насколько волнующе было получить выпуск ZZAP! 64 или COMMODORE FORMAT и прочитать отзывы обо всех новых играх, или рассматривать рекламу периферийных устройств, а потом клянчить их у родителей/Санты.

Для максимума ностальгии, вот полные страницы обзора Dragon Breed из COMMODORE FORMAT:

8832dee8af5344deb3c75b71d85cfcba.jpg

Упоминания о переключении цветов
Это список всех ссылок на 8-битное переключение цветов, которое я нашел в Интернете.
COMMODORE FORMAT выпуск 5, обзор Dragon Breed:
Дополнительные цвета получаются с помощью переключения цветов, где пикселям назначаются разные цвета каждую 1/50-ю секунды, что создает впечатление совершенно нового оттенка
COMMODORE FORMAT выпуск 13, Q&A:
Невозможно увеличить количество цветов в палитре C64, но существуют хитрые подпрограммы, которые позволяют создать впечатление большего количества цветов. Dragon Breed от Activision использует очень быстрое переключение цветов, чтобы дать промежуточный тон, а PD-кодеры создали механизм Fli-Pic, который позволяет вам использовать более четырех цветов на блок символов.
COMMODORE FORMAT, выпуск 32, дневники разработчиков Mayhem in Monsterland:
Как и в случае с нашей фоновой графикой, мы хотели получить больше 16 комодоровских цветов для спрайтов. Однако, мы не могли использовать тот же метод смешивания, что и для графики уровня (См. CF28), потому что у нас недостаточно цветов спрайта. Поэтому для спрайтов я реализовал другую процедуру смешивания, которая быстро переключается между двумя цветами (равной яркости) для создания новых оттенков.
Интервью C64.com с программистом Dragon Breed Эшли Рутледж:
Я часто вспоминаю дракона с этим странным оттенком сине-голубого.
Как менять картинки на скорости 60fps
При написании программ для этой статьи я обнаружил, что довольно сложно заставить два изображения меняться со скоростью 60fps без визуальных артефактов.
  • GIF (обычный GIF, а не GIFV) слишком медленный для 60 кадров в секунду.
  • Манипулирование backgroundImage работает, но адски мерцает.

Чтобы все заработало, вам нужно создать пару объектов Image, установить их атрибут src и дождаться их полной загрузки (используя событие) перед началом цикла анимации. Фух! Если понадобится, просмотрите исходный код этой статьи или изучите этот код.

ОК, теперь точно всё! Спасибо за прочтение. Если вам понравилось, я хотел бы услышать от вас комментарии ниже.

Комментарии (0)

© Habrahabr.ru