ВСТУПЛЕНИЕ: ПРОБЛЕМА ГРАФИКИ В РЕТРО-РАЗРАБОТКЕ
В предыдущих статьях мы подробно разобрали, как писать код для ZX Spectrum на ассемблере, Си и Бейсике, как его отлаживать и как считать такты. Но любая уважающая себя программа (особенно игра) требует графики. И тут перед разработчиком встаёт классическая проблема: где рисовать спрайты и шрифты?Вариантов несколько:
- Рисовать на бумаге в клеточку, потом вручную переводить в HEX — работает, но медленно и чревато ошибками. Так делали в 80-е.
- Использовать отдельный графический редактор (SevenUP, Multipaint, ZX-Paintbrush) — хороший вариант, но нужно переключаться между программами, экспортировать, конвертировать .
- Рисовать прямо в среде разработки, не отвлекаясь от кода — и вот тут на сцену выходит ZX Graphics Editor от испанской команды DuefectuCorp .
ЧТО ТАКОЕ ZX GRAPHICS EDITOR И ЗАЧЕМ ОН НУЖЕН?
ZX Graphics Editor — это специализированное расширение для VS Code, созданное разработчиком Duefectu при участии Hash6iron (рутина экспорта в TAP) и dinodork (опция инвертирования) . Оно позволяет редактировать файлы трёх типов, критически важных для графики на ZX Spectrum.
ПОДДЕРЖИВАЕМЫЕ ТИПЫ ФАЙЛОВ
| Тип | Расширение | Описание | Размер |
|---|---|---|---|
| UDG (User Defined Graphics) | .udg | Пользовательские графические символы | 168 байт (21 символ × 8 линий) |
| GDU (Gráficos Definidos por el Usuario) | .gdu | Испанский аналог UDG (полностью совместим) | 168 байт |
| Шрифт (Font) | .fnt | Альтернативный набор символов (96 символов) | 768 байт (96 × 8) |
КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ (ЧТО ОН ДАЁТ ПРОГРАММИСТУ)
- Визуальное редактирование — рисуете мышкой прямо в окне VS Code, как в любом растровом редакторе .
- Масштабирование — можно выбрать уровень зума от 1 до 64, чтобы проработать мельчайшие детали .
- Операции с графикой — зеркальное отражение (по горизонтали/вертикали), повороты, сдвиги .
- Инвертирование — полезно для создания масок или негативов (спасибо dinodork) .
- Создание масок — экспериментальная функция для генерации масок спрайтов .
- Экспорт в TAP — можно сохранить графику в виде .tap файла, готового для загрузки в эмуляторе (рутина от Hash6iron) .
- Экспорт в Boriel Basic — два формата: Boriel ASM (для вставки в ассемблерный код) и Boriel DIM (для объявления массивов данных в Boriel Basic) .
- Отображение номеров символов — в окне редактирования видно, какой именно символ (или GDU) вы сейчас правите .
ИСТОРИЧЕСКИЙ КОНТЕКСТ: ЭВОЛЮЦИЯ ГРАФИЧЕСКИХ ИНСТРУМЕНТОВ
| Эпоха | Инструмент | Особенности | Удобство |
|---|---|---|---|
| 1980-е | Рисование на бумаге + ручной ввод HEX | Тетрадка в клетку, перевод в двоичный код | Ужасно (часы работы, частые ошибки) |
| 1990-е | Графические редакторы на самом Spectrum (Art Studio, BGE, etc.) | Рисование прямо на спектруме | Терпимо (но нужно иметь реальное железо или эмулятор) |
| 2000-е | Отдельные ПК-программы (SevenUP, Multipaint, ZX-Paintbrush) | Рисование на ПК, экспорт в нужные форматы | Хорошо (но нужно переключаться между программами) |
| 2020-е | ZX Graphics Editor в VS Code | Рисование прямо в среде разработки | Превосходно (код и графика в одном окне) |
Интересно, что в классификации графических редакторов на ZX-Art Burial Graphics Editor (BGE) занимает первое место среди утилит для Spectrum . Но ZX Graphics Editor идёт другим путём — он не эмулирует старый софт, а интегрируется в современный инструментарий.
УСТАНОВКА И НАСТРОЙКА: ТРИ ПРОСТЫХ ШАГА
Шаг 1: Установка расширения
- Запустите Visual Studio Code.
- Нажмите Ctrl+Shift+X (или иконку квадратиков слева), чтобы открыть вкладку Extensions.
- В поиске введите "ZX Graphics Editor".
- Найдите расширение от автора DuefectuCorp (иконка с пиксельным изображением) и нажмите Install .
Шаг 2: Создание файла графики
Расширение работает с файлами определённых расширений. Создайте новый файл с одним из них:- my_sprites.udg — для пользовательских символов (21 символ)
- my_font.fnt — для шрифта (96 символов)
Шаг 3: Открытие и начало работы
- Откройте созданный файл в VS Code.
- Расширение автоматически активируется и покажет интерфейс редактора.
- При первом открытии пустого файла вам будет предложено загрузить данные по умолчанию — можно согласиться, чтобы сразу увидеть пример .
- Выберите тип данных: GDU/UDG или Font .
- Начинайте рисовать!
ИНТЕРФЕЙС И РАБОЧИЙ ПРОЦЕСС
Как это выглядит в редакторе
При открытии .udg или .fnt файла VS Code разделяется на две части:- Слева — ваш код (если вы открыли файл с графикой отдельно, то это просто пустой редактор, но можно открыть рядом и .bas файл).
- Справа — панель графического редактора с сеткой 8×8 для каждого символа.
Шаг 1: Рисуем
- Кликайте левой кнопкой мыши по клеткам, чтобы закрашивать их.
- Кликайте правой кнопкой, чтобы стирать.
- Используйте зум (выпадающий список) для более точной прорисовки — доступны значения 1, 2, 4, 8, 16, 24, 32, 48 и 64 .
Шаг 2: Трансформируем
В панели инструментов есть кнопки для различных операций над текущим символом :| Кнопка | Действие | Горячая клавиша (если есть) |
|---|---|---|
| Отразить по горизонтали (зеркально) | — | |
| Отразить по вертикали | — | |
| Повернуть на 90 градусов | — | |
| Сдвинуть влево/вправо | — | |
| Сдвинуть вверх/вниз | — | |
| Инвертировать (чёрное ↔ белое) | — | |
| Создать маску (экспериментально) | — |
Эти операции работают только с текущим выделенным символом, не со всем набором сразу.
Шаг 3: Экспортируем
Когда графика готова, нужно экспортировать её в формат, понятный вашему проекту.- Откройте палитру команд (Ctrl+Shift+P).
- Введите "ZX Graphics" и вы увидите доступные команды экспорта.
- Выберите нужный формат:
Бейсик ZX:
; Пример экспортированного кода
UDG0:
DEFB %00011000
DEFB %00111100
DEFB %01111110
DEFB %11011011
DEFB %11111111
DEFB %01011010
DEFB %00000000
DEFB %00000000
Для Boriel Basic (DIM-стиль):
Бейсик ZX:
DIM UDG(21,7) AS UByte => { _
{%00011000,%00111100,%01111110,%11011011,%11111111,%01011010,%00000000,%00000000}, _
{%... следующий символ ...} }
Для TAP-файла — создаётся готовый образ ленты с машинным кодом для загрузки графики в память Spectrum. Эту фичу разработал Hash6iron, и она очень удобна для быстрого тестирования .
ПРОДВИНУТЫЕ ВОЗМОЖНОСТИ
Номера символов
В версии 0.0.7 добавили отображение номеров символов прямо в окне редактирования . Это очень помогает, когда вы работаете с большим набором GDU (21 символ) или шрифтом (96 символов) — всегда видно, какой именно символ вы сейчас правите.
Экспериментальные маски
В версии 0.0.8 появилась кнопка "Create Mask" . Маски нужны для спрайтов с прозрачностью — обычно в ассемблерных движках используется два изображения: сам спрайт и его маска (где биты, соответствующие фону, установлены в 1, а сам спрайт — в 0). Функция экспериментальная, но уже рабочая.
Сдвиг, а не поворотИнтересная деталь: в версии 0.0.8 добавили кнопку
Интересная деталь: в версии 0.0.8 добавили кнопку "move (not rotate)" . Это позволяет сдвигать изображение целиком, не зацикливая его (в отличие от rotate, который переносит вылезшие края на противоположную сторону). Полезно для точной настройки позиции спрайта в пределах 8×8.
СРАВНЕНИЕ: ZX GRAPHICS EDITOR VS АЛЬТЕРНАТИВЫ
| Критерий | ZX Graphics Editor | SevenUP | Multipaint | ZX-Paintbrush |
|---|---|---|---|---|
| Интеграция | Внутри VS Code | Отдельная программа | Отдельная программа | Отдельная программа |
| Платформа | Windows/Linux/macOS (через VS Code) | FreeBSD, Linux, macOS, Windows | Java (везде) | Windows |
| Форматы | UDG/GDU/FNT + экспорт в TAP/BAS | SCR, BIN и др. | Spectrum, C64, MSX, CPC | SCR, MLT, CHR и др. |
| Для чего | UDG и шрифты | Полноэкранные картинки | Разные платформы | Разные форматы Spectrum |
| Цена | Бесплатно (MIT) | Бесплатно | Бесплатно | Бесплатно |
| Обучение | Минимальное (интуитивно) | Среднее | Среднее | Среднее |
ПЛЮСЫ И МИНУСЫ
Плюсы (Почему это удобно)
- Интеграция с VS Code: не нужно переключаться между окнами — код и графика рядом .
- Простота: интерфейс минималистичный, всё интуитивно понятно.
- Специализация: инструмент заточен именно под UDG и шрифты для Spectrum, ничего лишнего.
- Экспорт под Boriel Basic: два готовых формата для самого популярного компилятора Бейсика .
- TAP-экспорт: можно сразу загрузить графику в эмулятор и проверить .
- Активная разработка: версии 0.0.1 → 0.0.8, добавляются новые функции .
- Открытый исходный код: лицензия MIT позволяет использовать и модифицировать .
- Поддержка сообщества: есть Twitter, email, GitHub для обратной связи .
Минусы (О чём нужно знать)
- Ограниченный функционал: только UDG и шрифты, нельзя рисовать полноэкранные картинки (SCR).
- Мало звёзд на GitHub: всего 5 звёзд на момент написания — инструмент пока малоизвестен.
- Экспорт только под Boriel: для ассемблера придётся использовать ASM-стиль или конвертировать вручную.
- Нет предпросмотра на экране: нельзя увидеть, как спрайты будут выглядеть вместе на чёрном фоне.
- Экспериментальные функции: маски работают "не идеально", как признаёт сам автор .
- Документация на английском/испанском: для русскоязычных может быть барьер.
СОВЕТЫ БЫВАЛОГО (КАК ВЫЖАТЬ МАКСИМУМ)
- Используйте шаблоны. При создании нового пустого файла разрешите загрузить данные по умолчанию — это даст готовые примеры для изучения .
- Для шрифтов не забывайте про 96 символов. В .fnt файле содержится полный набор ASCII (32-127). Убедитесь, что все символы, которые вы используете, отредактированы.
- Экспортируйте в TAP для быстрого тестирования. Если вы пишете на ассемблере, можно загрузить TAP в эмуляторе и посмотреть, как выглядят спрайты.
- Для Boriel Basic выбирайте правильный стиль:
- Boriel ASM — если будете вставлять данные в блок .asm внутри .bas файла.
- Boriel DIM — если хотите объявить массив и обращаться к нему как к данным .
- Используйте инверсию для создания масок. Иногда проще нарисовать спрайт, потом инвертировать и немного подправить, чем рисовать маску с нуля.
- Комбинируйте с другими редакторами. Если нужна полноэкранная картинка — используйте SevenUP или ZX-Paintbrush . А для спрайтов возвращайтесь в ZX Graphics Editor.
РЕСУРСЫ И ССЫЛКИ
- GitHub репозиторий: github.com/Duefectu/ZXGraphics
- Visual Studio Marketplace: ZX Graphics Editor
- Сайт DuefectuCorp: zx.duefectucorp.com — проекты для ZX Spectrum
- Документация Boriel Basic: zxbasic.readthedocs.io — для понимания форматов экспорта
- CuadragonNext: игра от DuefectuCorp для ZX Spectrum Next, где используется этот редактор
ЗАКЛЮЧЕНИЕ: МАЛЕНЬКИЙ ИНСТРУМЕНТ С БОЛЬШИМ ПОТЕНЦИАЛОМ
ZX Graphics Editor от DuefectuCorp — это прекрасный пример того, как небольшая утилита может закрыть важную нишу в рабочем процессе разработчика.Он не пытается конкурировать с монстрами вроде SevenUP или Multipaint. Его задача скромнее, но важнее: дать возможность рисовать спрайты и шрифты прямо в среде разработки, не отвлекаясь на переключение между окнами и конвертацию форматов.
Интеграция с VS Code, экспорт под Boriel Basic (в двух вариантах!) и поддержка TAP — это именно те функции, которые нужны современному спектрумисту, пишущему на ассемблере или компилируемом Бейсике.
Да, у редактора есть ограничения. Да, он пока малоизвестен (всего 5 звёзд на GitHub ). Но он активно развивается, у него открытый исходный код, и за ним стоит команда энтузиастов, которые сами разрабатывают игры для Spectrum.
Если вы пишете игру или демо, где нужно много спрайтов — установите это расширение. Оно сэкономит вам часы ручной конвертации и сделает процесс разработки по-настоящему интегрированным.
P.S. Авторам Duefectu, Hash6iron и dinodork — спасибо за этот полезный инструмент. Отдельное спасибо за поддержку Boriel Basic — это делает жизнь пользователей этого замечательного компилятора намного легче.
P.P.S. Если вы говорите по-испански — обратите внимание на испанский вариант названия GDU (Gráficos Definidos por el Usuario). В Испании и Латинской Америке большое сообщество спектрумистов, и такие мелочи помогают локализации.