пятница, 29 мая 2026 г.

Забытый мультиколор (часть 2)

Примеры мультиколорных иллюстраций Полное руководство по аппаратному мультиколору. 

Создание графики, форматы, вывод на экран




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

Сложное — это не горы деталей,

а свет, что положен туда, где темно.

Глаз различает цвета в перспективе, 

компьютер выводит лишь плоское дно.

Создание графики для режима Hi-Color — ключевой вопрос. Сегодня единственным способом сделать это удобно является редактор ZX-Paintbrush 2.6.4 для Windows. Он был специально доработан в 2017 году для использования режимов Hi-Color и (на закуску) ULA+. Поэтому если вы видели ранние версии, то приготовьтесь к тому, что в старших версиях это совсем другая программа. Аналогов не имеет. 

Даже если художник предпочитает другие редакторы, ZX-Paintbrush потребуется как универсальный конвертор: может конвертировать из BPM, PNG и т. д. в формат SCR (и обратно), а также конвертировать обычный SCR в форматы с расширенными атрибутами (SCR и MLT).

Кнопка переключения режимов Timex/Spectrum

Для переключения в Hi-Color используйте кнопку с буквами «S/T» 





 Очень помогают в раскраске режимы Character Set Grid и Pixel Grid из меню View

Character Set Grid Pixel Grid в ZX-Paintbrush

ZX-Paintbrush позволяет выделять и переносить области по пикселям и атрибутам с предпросмотром на новом месте. Можно копировать изображение с атрибутами или без. Механизм переноса фрагментов — как в Deluxe Paint и Personal Paint на Амиге. Фрагменты сохраняются в формате ZXS для создания коллекций и быстрой сборки картинок. Проблемы при создании мультиколорной графики носят нетехнический характер.

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

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

В то же время, если раньше художник оперировал цветами в 768 атрибутных квадратах, то теперь ему это надо делать для 6144 атрибутных рядов, что в 8 раз больше. Графика Hi-Color требует опоры на изображение, отрисованное в обычных атрибутах, и опыта — как собственного (который надо наработать), так и других художников. Можно порекомендовать ознакомиться с работами художника Шеврон, начиная с «High Colour».

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

Мультиколорная сетка 

Пример новой (для Спектрума) сеточной раскраски на размышление:

Hype в мультиколорной сетке 

Согласитесь, смотрится непривычно?

Форматы мультиколора

Формат — не просто размер и вес.

Жёлтый экран орёт про тоску.

Белый молчит, как застывший отвес.

Красный подносит дуло к виску.

Далее под мультиколором будет пониматься вывод двух (из 16) цветов для отдельных строк или частей знакоместа (8×2, 8×4). Под гигаскрином будет пониматься циклическое переключение двух экранов, позволяющее смешивать цвета на этих экранах и увеличивающее число видимых цветов до 102 (за счёт инертности зрения). Под мультигигаскрином следует понимать использование обеих техник для получения изображения на экране.

SCR - Yoyo Bear  от Piesiu (2014)

Для работы с аппаратным мультиколором нас интересует только один формат изображения — SCR (12288 байт), т. к. он не требует преобразования. Файл этого формата содержит 6144 байта монохромного изображения и 6144 байта расширенных атрибутов. Байты обеих частей имеют нелинейную раскладку, соответствующую строению экрана ZX Spectrum. Размер фиксированный — 12288 байт. См. примеры формата.

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

MLT – Robocop от Ref (2024) MLT — формат видеорежима 2 (Mode 2) от компьютера SAM Coupé. Файлы этого формата содержат 6144 байта монохромного изображения (нелинейная раскладка) и 6144 байта расширенных атрибутов, хранящихся последовательно. Они легко конвертируются: достаточно загрузить их в ZX Paintbrush и экспортировать оттуда в SCR. Размер фиксированный — 12288 байт. См. примеры формата.

MC - формат линейного мультиколора. Как и SCR с MLT, он содержит 6144 байта монохромного изображения и 6144 байта расширенных атрибутов. Но байты обеих частей имеют линейную раскладку, что неудобно для их вывода на экран. Встречается крайне редко. Размер фиксированный — 12288 байт. Конвертер DaDither умеет загружать и выгружать в этот формат.


SS4 конвертированный в SCR без доработки SS4, SSX – формат видеорежима 4 (Mode 4) от компьютера SAM Coupé. Картинки в этом формате имеют разрешение 256×192, 4 бита на пиксель (16 цветов) при палитре в 128 цветов, а все байты изображения хранятся линейно. Интересен он главным образом разрешением «как на ZX Spectrum» и возможностью конвертации в формат MLT через конвертер DaDither.

Потери при этом, могут быть, невелики или приемлемы. Размер нефиксированный. В некомпрессированном виде часто занимает 24617 байт. На SAM Coupé принято хранить графику в этом формате даже в случаях когда изначально она была создана в Mode 2 (а затем компрессировать). См. примеры формата.


До наступления в 2017–18 гг. эпохи полноэкранного программного мультиколора на Спектруме огромной популярностью у отечественной демосцены пользовался графический редактор multiArtist от TmK и riskej. Он служит для создания графики в режиме «мультигигаскрин» (совмещение мультиколора с гигаскрином). Эта графика может быть (ограниченно, не любая картинка) конвертирована.

MG1 конвертированный в SCR без доработки
MG1 - мультигигаскрин 8×1. Ограничен разрешением 128×192 (16×24 знакоместа). Конвертируется в DaDither. После конвертации в мультиколор выглядит почти адекватно. Доводка затруднительна. Размер фиксированный — 19456 байт. См. примеры формата.






MG2 конвертированный в SCR без доработки
MG2 – полноэкранный мультигигаскрин 8×2. Конвертируется в DaDither. Обычно требует ручной доводки для восстановления детализации. Размер фиксированный — 18688 байт. См. примеры формата.







MG4 конвертированный в SCR без доработки
MG4 – полноэкранный мультигигаскрин 8×4. Конвертируется в DaDither. Обычно возможно подобрать режим, в котором доводка картинки в мультиколоре будет проста, понятна и касаться в основном яркостей. Размер фиксированный — 15616 байт. См. примеры формата.






Про адекватную конвертацию в мультиколор форматов обычного гигаскрина (IMG, GSC, ICE), триколора (3), мультигигаскрина (MGS), стеллар (STL) и других форматов, в которых преобладают цвета, полученные смешением 16 цветов Спектрума, лучше забыть. Результат гарантированно не будет удовлетворительным.

Выше мы рассмотрели только те форматы, которые имеют некоторое сродство с мультиколором, позволяющее им выгодно смотреться или быть конвертированными для режима аппаратного мультиколора.

Шаблон для вывода

А не учи ты нас рисовать!

Мы и сами умеем выверты...

После того как картинка была нарисована/конвертирована, её надо вывести на экран. Предлагаю простейшую выводилку с монозагрузчиком. Для компиляции в SJASMplus необходимо в директории с текстовым файлом программы hw-mult.asm создать директорию inc и положить в неё BasicLib.asm, а также директорию res с картинкой (например, nextipede.C). После компиляции (sjasmplus.exe hw-mult.asm) вы получите два файла: hw-mult.tap и hw-mult.trd, которые можно приложить к релизу на фестивале/демопати, чтобы его организаторы смогли показать эту картинку запуском на реальном железе. 

; hw-mult.asm
	device		ZXSPECTRUM48
	
	; monoloader
 	MODULE          boot
	INCLUDE         inc/BasicLib.asm

diskbasic
	db		#00,#01		        ; строка 01
	dw		line1end - line1
line1
	db		#EA			; REM
	ld		de,(#5CF4)
	ld		bc,#3005	        ; NN05, где NN=30 - длина в секторах
	ld		hl,scrstart	        ; картинка 12288 байт
	call		#3D13
	ld		de,(#5CF4)
	ld		bc,#0105	        ; NN05, где NN=01 - длина в секторах
	ld		hl,ldstart	        ; код демонстрации 59 байт
	call		#3D13
	jp		ldstart		        ; запуск кода
line1end
	LINE : db clear,val,'"48000"',':',rand,usr,val,'"23872"',':',new : LEND
diskbasend

tapebasic
	LINE : db clear,val,'"48000"',':',load,'""',code : LEND
	LINE : db load,'""',code,':',rand,usr,val,'"48896"',':',new : LEND
tapebasend
	ENDMODULE

	org		#C000			; 49152
scrstart
	INCBIN	        res/nextipede.C
scrend

	org		#BF00			; 48896
ldstart
	xor		a
	out		(#FE),a
	ld		(23624),a		; BORDCR, цвет бордюра
	
	ld		hl, #C000		; переброска изображения
	ld		de, #4000
	ld		bc, #1800		; 6144
	ldir
	
	ld		hl, #C000+6144	        ; переброска расширенных аттрибутов
	ld		de, #6000
	ld		bc, #1800		; 6144
	ldir
	
	in		a,(#FF)
	or		2
	out		(#ff), A		; Включаем мультиколор Timex
	ld		a, 32			
	ld		bc, #EFF7
	out		(c), a			; Включаем мультиколор ZX Evolution
	
space
	ld		a, #7F
	in		a, (#FE)
	bit		0, a			; если нажали Space, то
	jr		nz, space		; выходим

	xor		a			
	out		(#ff), a		; Выключаем мультиколор Timex
	ld		bc, #EFF7
	out		(c), a			; Выключаем мультиколор ZX Evolution	
	ret

ldend

	display "-------- HW.Mult$ ----------"
	display "START-END: ",/d,scrstart," (",/h,scrstart,") - ",/d,scrend," (",/h,scrend,")"
        display "LENGTH:    ",/d,scrend-scrstart," (",/h,scrend-scrstart,")"
	display "-------- Multiview ---------"
	display "START-END: ",/d,ldstart," (",/h,ldstart,") - ",/d,ldend," (",/h,ldend,")"
        display "LENGTH:    ",/d,ldend-ldstart," (",/h,ldend-ldstart,")"
	display "----------------------------"


	define		fn_disk "hw-mult.trd"
	emptytrd	fn_disk
	savetrd		fn_disk, |"HW.Mults.B", boot.diskbasic, boot.diskbasend - boot.diskbasic
	savetrd		fn_disk, |"HW.Mult$.C", scrstart, scrend-scrstart
	savetrd		fn_disk, |"Multview.C", ldstart , ldend-ldstart

	define		fn_tape "hw-mult.tap"
	emptytap	fn_tape
	savetap	        fn_tape , BASIC, "HW.Mults" , boot.tapebasic , boot.tapebasend - boot.tapebasic, 10
	savetap         fn_tape , CODE, "HW.Mults$" , scrstart , scrend-scrstart
	savetap         fn_tape , CODE, "Multiview" , ldstart , ldend-ldstart 
  

пятница, 22 мая 2026 г.

Забытый мультиколор (часть 1)

Timex TC2048 Полное руководство по аппаратному мультиколору

Оглавление



Растрата потенциала

Спектрум корявым вышел: 

Мало семей без урода 

На таймексах мультиколор доступен 

С тысяча девятьсот восемьдесят третьего года!

В ноябре 1983 года, явился на американский рынок микрокомпьютер TS2068, содержащий в себе две ключевые новинки: аппаратный мультиколор (Hi-Color) и режим высокого разрешения 512x192 (Hi-Res). Выпустила это чудо техники компания Timex Sinclair. Для Европы, правда, назвали его TC2068 (от Timex Computer), но суть его от этого не изменилась. TS/TC 2068 после включения

Умные люди понимали,  что выходить на американского потребителя с одним ZX Spectrum 48 — всё равно что на хоккей в шлёпанцах. Но перестарались. Оба микрокомпьютера практически полностью потеряли совместимость с ZX Spectrum 48, и это стало одной из причин провала продаж.

Новый микрокомпьютер был полностью лишён всякой периферии, а покупать предлагаемые картриджи никто не хотел. Многострадальные покупатели принялись массово переделывать свои TS/TC 2068 в ZX Spectrum 48. Запуск продаж пришёлся аккурат на так называемый «крах рынка видеоигр» в США.

Пытаясь хоть как-то спасти положение, компания выпустила для TC 2068 картридж совместимости с ZX Spectrum 48. В историческом контексте важно заметить, что именно в TS/TC 2068 помимо режимов Hi-Color и Hi-Res впервые появились AY-8910/12 и два экрана, впоследствии сыгравшие значительную роль в популярности ZX Spectrum 128.

В феврале 1984 года британо-американское предприятие Timex Sinclair закрылось. Но дочернее производство Timex Portugal уже разработало и начало выпускать новый Timex TC2048 для рынков Португалии и Польши, где он сыскал большой успех. Португальцы сделали микрокомпьютер, практически соответствующий ZX Spectrum 48, но с добавлением видеорежимов Hi-Color и Hi-Res и поддержки второго стандартного экрана (#6000–#7AFF). Даже строчка копирайта «Timex Computer Corp» при включении пропала.

История умалчивает, почему при выпуске ZX Spectrum 128 в 1985 году испанская Investrónica добавила музыкальный сопроцессор, RAM-диск, два экрана и RS-232C, а «копеечные» видеорежимы Timex забыла. В 1987 году спохватилась Timex Computer и создала прототип TC3256 с ОЗУ 256 Кб. Но денег на производство уже не осталось. Экономия «на спичках» доканала не только Амигу.

TS 2068 в Gigascreen Hi-Res Для Timex Computer писали и игры, и прикладное ПО, и графические редакторы: Tech-Draw (1985, Hi-Res), Extended Paint (1987, Hi-Color) и Draw 512 (1988, Hi-Res). А ещё BASIC64 с поддержкой Hi-Res и более мощный Timex Extended Basic — с поддержкой AY-8910/12, RAM-диска и двух экранов для TC 3256. 

Режим Hi-Res в Timex служил в основном для CP/M и офисного ПО работавшего в режиме 64 символа в строке. Текстовый редактор MScript, процессоры TimeWord и Textwriter 2068 Plus 64, таблицы Vu-Calc и OmniCalc II, база данных Pro/File 2068 — всё это работало в 512x192. 

Аппаратный мультиколор можно увидеть не только в ПО для Timex TC2048 и TS/TC 2068. Он доступен и для предшественников ZX Spectrum — ZX80 и ZX81 — с интерфейсами Chroma 80 или Chroma 81. Интерфейс добавляет банки символов UDG и позволяет загружать COL-файл, который расцвечивает UDG мультиколором. То, что из этого получается — смотрите в десятках игр: Fun Park, Astro Bikers, splATTR и др. 

Не обошёл аппаратный мультиколор и SAM Coupé (1989) — британский компьютер, совместимый с ZX Spectrum 48. Там он стал одним из 4 видеорежимов (Mode 2). С той разницей, что в SAM Coupé байты в памяти лежат последовательно — в отличие от нелинейности Timex и Спектрума. Тем не менее это ещё один источник мультиколорной графики. Super-Hang On в Hi-Color

В русскоязычной прессе аппаратный мультиколор упоминался, но изначально виделся как простая тема для заработка: «Звоните по этим телефонам, и мы вам сделаем!». Никаких внятных объяснений, зачем он нужен, как им пользоваться, а также примеров ПО для него не было. Статьи содержали только «Вау!» и рассказы про адаптированные Art Studio 1.5 и игру Heroes. Которых, разумеется, никто никогда не увидел. 

Например: «Новинка — схема железного мультиколора» в X-Ray #02, «Труженикам - Аппаратный мультиколор» в KrNews #01 и др. Специальный выпуск X-Ray #03 с «давно обещанной» статьёй «Доработка - схема Мультиколора 8x1» не получил распространения. Если бы хотя бы в своей газете авторы сделали опциональное включение мультиколора с радугой на весь экран, это было бы уже что-то. Но все эти газеты и журналы были вообще чёрно-белыми. 

Схемы дошли до масс, когда они были уже не нужны. Статья «Режим мультиколор для Spectrum» в журнале «Радиолюбитель» №5 (2002), где автор жалуется на отсутствие информации. И статья «Схема железного мультиколора» в ZX-Ferrum #01 (2004).

Режиму Hi-Res повезло больше: его осилили отрисовать и можно найти разные доработки, например «Доп. графический режим — 512x192» в Online #79 (1997), «Доп. графический режим» в Deja Vu #06 (1998), «Схема расширения видеорежима Скорпиона до 512x192» в City #36 (1999) и т.д.

CP/M 2.2 на Байт-01 Во времена SpbZxNet под режим 512x192 было написано и адаптировано полтора десятка программ, таких как терминалка Melon, мейлер Lara Croft, редактор AC Edit и др. Всё это было нужно для комфортного чтения и набора текста при переписках в сети. В белорусском клоне «Байт-01» режим 512x192 присутствовал штатно — для поддержки CP/M. 

На 2026 год поддержка режимов Timex есть во многих зарубежных клонах Спектрума, географически близких к Португалии и США. Например, это штатный режим в Timex-Harlequin-2048. Если же пробежаться по моделям в ZesarUX, то их поддержку можно увидеть в каждом втором клоне (на практике, в железе, может быть по-разному). Timmy на ZX Evolution

Из отечественных клонов аппаратный мультиколор штатно поддерживают ZX Evolution Base Conf и Pentagon 1024 SL 2.2x, а также он может быть заведён в «Балтик». Но поддержки режима 512x192 наши современные клоны, увы, не имеют. Возможно, если читатели начнут просить этот режим в NedoPC, есть шанс, что поддержка Hi-Res появится в новом разрабатываемом сейчас Evo. Но это не точно. Пока же при адаптации софта, имеющего не только графику Hi-Color, но и Hi-Res, приходится изворачиваться (см. Timmy для ZX Evo). 

Помимо Hi-Color, традиционно называемого в России ZX Hardware Multicolor (он же hwcol), этим компьютером и семейством АТМ поддерживается видеорежим АТМ Hardware Multicolor, отличающийся разрешением 640×200 (вместо 256×192) и делением экрана между двумя страницами памяти (RAM 1 и RAM 5 или RAM 3 и RAM 7). Такое деление напоминает режим Hi-Res в Timex, где графика 512×192 также делится между двумя страницами, только позволяет получать 80 символов в строке вместо 64, типичных для Hi-Res. 

Рассмотрение АТМ hwcol выходит за рамки этой статьи. Для завершения исторического контекста заметим: семейство АТМ имеет свой родной аппаратный мультиколор, приходящийся мультиколору в Timex старшим братом. Имеет, и никто у него этого не отнимет.


Порт #FF в Timex

БитыНазначение
0-2 Выбор видеорежима

000 — включение экрана 0 (#4000)
001 — включение экрана 1 (#6000)
010 — включение режима Hi-Colour
110 — включение режима Hi-Res
3-5 Выбор монохрома в режиме Hi-Res

000 – чёрным по белому
001 – синим по жёлтому
010 – красным по голубому
011 – фиолетовым по зелёному
100 – зелёным по фиолетовому
101 – голубым по красному
110 – жёлтым по синему
111 – белым по чёрному
6 1 — выключить таймер прерываний
(по умолчанию 0)
7 Выбор банка MMU по горизонтали
(см. таблицу в документации,
только для TS / TC 2068)

0 — DOCK, 1 – EX-ROM


Режим Hi-Color

ОперацияTimexZX EvolutionZX-UNOElement ZXMB 03+
ВключениеOUT #FF, 2OUT #EFF7, 32 OUT #FC3B, 15
OUT #FD3B, 32
OUT #FF, 2
OUT #783B, 16
OUT #793B, 3
OUT #FF, 2
OUT #703B, 12
OUT #713B, 1
OUT #FF, 2
ОтключениеOUT #FF, 0OUT #EFF7, 0 OUT #FF, 0
OUT #FC3B, 15
OUT #FD3B, 0
OUT #FF, 0
OUT #783B, 16
OUT #793B, 0
OUT #FF, 0
OUT #703B, 12
OUT #713B, 0

Работа с видеорежимами в Spectrum Next - это история отдельного идиотизма (даже Кучера отдыхает), поэтому он не попал в таблицу выше. 

Просто приведу код для программного включения режима Hi-Color в этом FPGA-эмуляторе: 
 
;; выключение режима ZX Spectrum
 ld  bc,#243B ; порт выбора порта Next
 ld  a,#15
 out (c),a
 ld  bc,#253B ; порт выбора регистра порта Next
 in  a,(c)
 and #7f
 out (c),a

;; включение режима Timex
 ld  bc,#243B ; порт выбора порта Next
 ld  a,#08
 out (c),a
 ld  bc,#253B ; порт выбора регистра порта Next
 in  a,(c)
 or  #04
 out (c),a

;; включение режима Hi-Color
 ld  c,#ff
 ld  a,#02
 out (c),a

Экранная память

Пары цветов на одно знакоместо, 

Всем очевидно - мало. 

Лучше когда на один знакоряд, 

этих цветов - пара!

Далее под атрибутами будет пониматься область атрибутов Спектрума (768 байт), а под расширенными атрибутами — область атрибутов мультиколора (6144 байта).


При включённых режиме Hi-Color и экране в RAM 5

HEXDECРазмер, байтНазначение
#4000-#57FF16484-225276144Монохромное изображение
#5800-#5AFF22528-23295768Атрибуты
#5B00-#5FFF23296-245751280Буфер принтера (23296-23551),
системные переменные (23552-23733),
переменные TR-DOS (23755-24267 или
23867-24379, меняется динамически)
и буфер TR-DOS
#6000-#77FF24576-307196144Расширенные атрибуты

Отсюда видно, что адресация режима Hi-Color очень удобна и для адаптации подойдёт множество программ, типично запускаемых с адреса 32768 (#8000). В загрузчике CLEAR лучше выставлять на адрес 30800. На приложение для ZX Spectrum 48 в этом случае у нас остаётся 33 КБ, что весьма неплохо.

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


При включённых режиме Hi-Color и экране в RAM 7

HEXDECРазмер, байтНазначение
#C000-#D7FF49152-552956144Монохромное изображение
#D800-#DAFF55296-56063768Атрибуты
#DB00-#DFFF56064-573431280Свободное пространство
#E000-#F7FF57344-634876144Расширенные атрибуты

Возможно использование двух экранов. Здесь отечественные клоны отличаются от Timex и ZX-UNO, так как там второй экран начинается с адреса #6000, а не #C000 и считается отдельным видеорежимом. 

На ZX Evolution, element ZX, MB 03+ и отечественных доработанных Спектрумах с памятью от 128 Кб можно использовать два экрана (через порт #7FFD, как обычно) и аппаратный мультиколор одновременно. Можно даже сделать мультиколорный Gigascreen, и он будет выглядеть точно так же, как обычный, только в мультиколоре. ВНИМАНИЕ: можно писать/рисовать мультиколором по мультиколору!

Справедливости ради надо упомянуть, что на современных клонах Timex TC 2148 (STAVI) и TC 2144 (Ярек Адамски) доступно 128 Кб и можно использовать 4 экрана (плюс 2 теневых).

О правильной работе с атрибутами и расширенными атрибутами мы поговорим в следующих главах.