惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
IT之家
IT之家
P
Privacy International News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
C
Cybersecurity and Infrastructure Security Agency CISA
爱范儿
爱范儿
Cyberwarzone
Cyberwarzone
罗磊的独立博客
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
美团技术团队
G
GRAHAM CLULEY
Help Net Security
Help Net Security
S
Secure Thoughts
博客园 - Franky
博客园 - 叶小钗
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tailwind CSS Blog
Microsoft Security Blog
Microsoft Security Blog
S
Security Archives - TechRepublic
博客园 - 司徒正美
Schneier on Security
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Hacker News - Newest:
Hacker News - Newest: "LLM"
Forbes - Security
Forbes - Security
Google Online Security Blog
Google Online Security Blog
A
About on SuperTechFans
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
D
Docker
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
S
Securelist
N
News | PayPal Newsroom
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog RSS Feed

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Забытый мультиколор (часть 4)
aGGre55or · 2026-06-15 · via Все публикации подряд на Хабре

Простой

9 мин

21

См. также первую, вторую и третью части.

Аппаратный vs Программный

Аппаратный мультиколор
Всем был бы очень нужен
Программные мультиколоры
Обязаны сидеть в луже!

Эта часть могла бы быть первой (и единственной). Тем не менее в силу незнакомства широких масс с аппаратным мультиколором и/или поверхностного понимания особенностей его программирования потребовались предыдущие три части для понятного (надеюсь) разъяснения: насколько это просто, широко доступно и практически бесплатно.

Будем предельно откровенны: с самого начала мультиколор представлял собой перформанс. На вопрос «Зачем нужен мультиколор?» никогда не было ясного ответа, но бытовало представление, что это просто «круто».

Демо, имевшее мультиколорную часть, считалось более технологичным и стоящим на ступень выше других, оно поднимало статусность авторов.

Satisfaction Megademo (Code Busters)

Satisfaction Megademo (Code Busters)

Вопрос «Зачем?» не задавался: мониторы спектрумистов были обклеены бумажками, на которых они мерили INT, отмечая его карандашом. Ответ на этот вопрос мог звучать так: «Потому что Code Busters

Долгое-долгое время мультиколор применялся исключительно в целях демостроения. Программный мультиколор реализуется через перезапись атрибутов синхронно с лучом развёртки. Однако из-за различий в синхронизации и таймингах прерываний демо, созданные для одного клона Спектрума, на других клонах будут работать либо некорректно, либо требовать адаптации.

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

Shock Megademo (ESI)

Shock Megademo (ESI)

Тотальная несовместимость — это фундаментальная проблема программного мультиколора, с которой все смирились.

Наиболее известные демо, славные своими мультиколорными частями, имеют десятки релизов различных адаптаций и всё равно выглядят как фиаско.

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

В 2018 году появилась игра «Старая башня» от Retro Souls, с которой многие связывают переход от применения программного мультиколора исключительно в демостроении к использованию его в геймдизайне. На следующий год Денис Грачёв опубликовал историческую статью «Мультиколор будет побеждён», обосновавшую дальнейшее увеличение игрового пространства.

Сложно не заметить, что на эту победу ушло больше четверти века, т. е. 35 лет (если считать с 1983 года). Всё это время рядом находился копеечный, но неизвестный и поэтому нераспространённый аппаратный мультиколор, вообще не требующий, чтобы его «побеждали».

С точки зрения потерянного времени дела в демостроении обстоят не лучше. Для написания чанковой цветной демки в разрешении 64×48 не надо писать ещё один мультиколорный движок с именем шумерского бога. Достаточно заполнить область изображения числом #33 или #CC и выводить чанки расширенными атрибутами. Никакого пафоса и минимальные трудозатраты. Подытожим:

Мультиколор

Программный

Аппаратный

Порог вхождения

Высокий

Низкий

Доступность

1) Любой ZX Spectrum
2) Фиксация на INT

1) Простая доработка
2) Встроен во многих клонах ZX Spectrum

Совместимость

Тотальная несовместимость

Любой клон с поддержкой режима Hi-Color

Графический редактор

multiArtist
(ограниченно)

ZX-Paintbrush
(универсально)

Создание графики

Плохо стандартизировано
Изобретение форматов удобных для вывода и хранения

Стандартные форматы
Элементарно, но требует привычки

Динамичные игры и демонстрации

Через вывод чанков

Также, как в стандартном режиме

Адаптация ПО

1) Сложно и времяёмко
2) М.б. невозможной

1) Обычно не требуется
2) Добавление значений в стандартные порты

Мультигигаскрин

128×192 (16×24 знакоместа)

Полный экран 256×192

Прискорбно, но многие спектрумисты-разработчики сегодня переориентировались на поддержку зарубежных коллекционеров, разворачиваясь пердимоноклем к пользователям отечественных клонов. Новые релизы всё чаще ориентированы на оригинальный ZX Spectrum 128 и формат TAP (иначе зарубежные коллекционеры и пользователи FPGA-клонов не смогут это запустить и не захотят покупать).

Вероятно, это последний (пусть и невидимый) гвоздь в крышку гроба программного мультиколора. Отечественная целевая аудитория и отечественные разработчики находятся в разных вселенных и пересекаются только в эмуляторах.

Речной рейд

Спектрумизм в целом неизлечим.
Вот зачем — ты пойди спроси.
Пишут демки ассемблерные,
Мультиколорные россыпи!

Одной из важных вех развития программного мультиколора считается вышедшая в 2009 году техническая демонстрация «River Raid» от британского разработчика Джейсона Дж. Рейлтона. Она пародирует одноимённую классическую игру от Activision, существующую на Спектруме, но в худшем (по сравнению с Commodore 64, Atari и т. д.) качестве.

Для увеличения цветового разрешения автор использует следующую хитрость: по центру экрана располагается область шириной 14 знакомест, в которой отрисовывается программный мультиколор. Эта область продолжается совмещённой с ней отрисовкой атрибутов и полос на бордюре, что даёт иллюзию полноэкранной игры в разрешении более высоком, чем доступно Спектруму.

Создать настоящую игру на таком фундаменте невозможно, а сложность кодирования подобного эффекта достаточно высока. В то же время написание эквивалентной демонстрации для режима Hi-Color тривиально. Но пока не откажем себе в удовольствии посмотреть на мультиколорные россыпи:

River Raid Tech Demo запущенная на разных клонах

River Raid Tech Demo запущенная на разных клонах

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

Изображение МиГ-29

Изображение МиГ-29

Иллюзия движения в оригинальной демке создаётся синхронной прокруткой изображений мультиколора, атрибутов и бордюрных полос сверху вниз. При этом сам крохотный самолётик стоит на месте.

В режиме Hi-Color мы не ограничены мультиколорной областью и можем нарисовать кукурузник размером хоть во весь экран. Хотя из скромности предлагаю ограничиться изображением советского истребителя МиГ-29.

Ландшафт логично рисовать расширенными атрибутами, и детализации вполне хватает для изображения такой игры. С точки зрения художника, мы должны отрисовать самолёт цветом тона (чернила), а весь ландшафт — цветом фона (бумага). С точки зрения кодера, мы имеем область изображения (куда заранее впечатан самолёт) и область расширенных атрибутов (6144 байта), которую необходимо прокручивать сверху вниз.

Аппаратный мультиколор может выводить атрибутную картинку в разрешении 32×192. Стандартная программная прокрутка: запоминаем в буфер 32 байта расширенных атрибутов из нижней 191-й строки, прокручиваем расширенные атрибуты на пиксель вниз и выводим буфер в верхнюю (нулевую) строку. Повторяем в цикле.

Ничто не мешает опрашивать клавиши и при желании быстро докрутить прототип до полноценной игры с перемещением спрайта самолёта, выводом спрайтов противников, обнаружением столкновений и т. д. Всё это будет происходить в области изображения, никак не затрагивая фон, прокручиваемый независимо. Особенностью использованного подхода является прозрачность самолёта относительно фона при полном отсутствии клэшинга. Самолёт можно сделать и разноцветным, задавая тон (чернила) в расширенных атрибутах по пути его движения.

Не скажу, что сильно перетрудился, но итоговая техническая демонстрация «Речной рейд» (с музыкой, печатью текстов и другими добавлениями для выполнения требования об отсутствии сплошной анимации) под аппаратный мультиколор будет отправлена на фестиваль DiHalt 2026 Summer. Попробуйте, может быть, у вас выйдет лучше (самолёт меняется на звездолёт, вертолёт, и т.д.)?

К вопросу о «жирных» 12К картинках (этот вопрос уже частично затрагивался в предыдущей части руководства): графику в современных программах для Спектрума принято (де)компрессировать. Для компрессии можно использовать zx7mini, пример для данной программы:

$ zx7mini.exe res/Landscape.C res/Landscape.Z
Optimal LZ77/LZSS compression by Einar Saukas
File converted from 12288 to 592 bytes!

Конечно, компрессия сильно зависит от характера графики, но надо отметить, что расширенные атрибуты обычно имеют значительные однотонные области и сжимаются гораздо лучше изображений. Можете себе представить, сколько такой графики можно поместить в 4 Мб современного клона типа ZX Evolution? Посчитайте)

Ошибка Зонова

Все за и против взвесив,
Дело осталось за малым:
Добавь своему Спектруму,
Аппаратный живой мультиколор!

На легендарном фестивале Enlight’97 фирма «Скорпион» показала предсерийный образец платы GMX (Grafic Memory eXtension). По сути, это была видеокарта для Scorpion ZS 256, обладавшая следующими характеристиками:

  • 512 КБ ОЗУ

  • Графический режим 640x200 @4

  • Текстовый режим 80x25

  • Аппаратная прокрутка экрана вверх-вниз

  • Стоимость эквивалентная $35-$40

Что с ней было не так?

GMX никогда не предназначался для вывода графики. Графический режим был задуман для вывода текста с символьным разрешением 80×25, хорошо подходящем для адаптированной Андреем Ларченко версии CP/M 2.2. Если текст был цветным, то этот видеорежим потреблял все 512 КБ.

Видеокарта не работала при установленной звуковой карте General Sound. Пользователь должен был выбирать между видео и звуком. Кто-то говорил, что Зонов устраняет конкурентов, а из ларька Scorpion на радиорынке доносилось что-то про MIDI-контроллер.

Официально инфляция за 1997 год составила 11% при официальном же курсе 5600–5960 руб. за доллар. Средняя зарплата была эквивалентна $159, поэтому приобретение платы GMX выглядело как выбор между едой и Спектрумом.

В действительности фирма «Скорпион» проводила опросы пользователей, а Сергей Юрьевич внимательно слушал критику, просто трактовал её по-своему. После эпичной осады пользователями на фестивале Enlight’96 в рамках проекта GMX должен был появиться режим совместимости (позволяющий смотреть мультиколорные демо для Pentagon без адаптации).

Когда GMX был показан «вживую», пользователи стали требовать уменьшить разрешение до 320×200 и предоставить видеорежим с цветом на точку. По коллективной мысли пользователей, это должно было привести к удешевлению (в 2 раза меньше памяти) и появлению видеорежима для вывода именно графики, а не текста.

Зонов трактовал это пожелание как добавление нового видеорежима в существующий концепт, требующее доработки и изменений ПЗУ. Пользователи пожали плечами и массово начали дорабатывать свои Scorpion для видеорежима Timex Hi-Res (начавшийся в 1997 году в Санкт-Петербурге тренд докатился к 1999 году до Саранска). Разрешения 512×192 хватало для работы с текстовыми редакторами и почтовыми программами. То есть ровно для той ниши, в которую был нацелен GMX. Себестоимость добавления видеорежима 512×192 составляла какие-то десятые доли доллара.

Если Клайв Синклер продвигал свой ZX Spectrum по принципу «лучше хуже, но больше», то бизнес-логика Сергея Зонова, наблюдавшего стремительное сокращение популяции спектрумистов, лежала в плоскости «лучше меньше, но дороже». Более развёрнуто: «Лучше получить с каждого пользователя больше денег сейчас, потому что потом они всё равно все будут на PC».

Предположим, что копеечные режимы Timex были бы добавлены Сергеем в 1993 году при запуске производства Scorpion. Это никак не повлияло бы на совместимость с ПО и стоимость, но закрыло бы вопрос с мультиколором (1996) и разрешением для почтового ПО (1997). Пользователи не корябали бы красивые зелёные платы. Такое решение неузнаваемо изменило бы ландшафт ПО для всего ZX Spectrum.

Возможно, кто-то составит впечатление: «Ну вот, во всём виноват Зонов». Это не так. Сергей Юрьевич действовал в конкретную и непростую историческую эпоху, исходя из своих представлений о предпринимательской деятельности, и был во многих отношениях первопроходцем.

Однако развитие любой платформы может быть только эволюционным и никогда скачкообразным. Видеорежимы Timex сродни тем вещам, которые человечество изобретало раз за разом «с нуля»: колесо, письменность, бетон и даже телевидение.

Казалось бы, после популяризации шин ZXBUS и NemoBUS, что могло бы быть более эффективным, чем небольшая платка изменяющая логику работы ULA и добавляющая режимы Timex любому клону Спектрума? Ровно эти два нативных режима, и ничего более, то есть никаких GMX, никаких HRC, HAM, EGA, VGA и прочего.

Подозреваю, что в таком виде платка могла бы не только иметь копеечную стоимость и продаваться в 1996-99 гг как горячие пирожки, но и быть вообще сквозной. Но это было бы слишком просто.

Проблема вот в чём. Разработчикам железа было (и есть) гораздо интересней:

  1. Реализовать нестандартный и ни с чем не совместимый видеорежим, который не будет иметь никакой поддержки;

  2. Провести работы по реверс-инжинирингу и переизданию какого-нибудь мертворожденного железа (например, GMX);

  3. Провести работы по синхронизации с экраном Спектрума чего-нибудь совершенно чужеродного (например, Dendy);

  4. Подключить видеопроцессор в неожиданный разъём (например, VDAC2 для порта IDE);

  5. Создать видеокарту на базе чипа выпаянного из фоторамки и закрыть проект в связи с недоступностью фоторамок на AliExpress.

Список можно продолжить.

Если пользователю нужен Dendy, то он пойдёт и купит Dendy. Спектрум ему для этого не нужен.

Если пользователю будет нужен режим HAM, то он пойдёт и купит Амигу. Ему не нужен этот режим на Спектруме. Хотя бы потому, что весь инструментарий для режима HAM — на Амигах. Он даже не сможет этим нормально пользоваться без покупки Амиги.

Точно так же пользователь говорит: «Зачем мне GMX «за много денег», если, припаяв пять проводов, я получу почти то же самое в существующих условиях?». И на этом заканчиваются продажи.

Как мы знаем хотя бы из опыта создания GMX фирмой «Скорпион», построение замкнутых экосистем для полутора пользователей, имеющих возможность покупать железо по цене крыла самолёта, — путь в никуда.

Самовоспроизводящийся парадокс двух почти не пересекающихся вселенных: разработчиков железа и его пользователей. Точно такая же коллизия, как и в стане разработчиков: аппаратный мультиколор имеет перспективы (позади себя), в то время как программный навсегда останется «вещью в себе» и не вернёт ни копейки из вложенных в него усилий. Как в той поговорке про мышей плачущих и жрущих кактус

Тестирование новой видеокарты для ZX Spectrum

Тестирование новой видеокарты для ZX Spectrum

Конец