Пакет EVO SDCC/SDK предназначен для максимального упрощения разработки несложных графических игр для стандартной конфигурации компьютера ZX Evolution (турбо 14 МГц, 4 мегабайта ОЗУ, 320x200 16 цветов, палитра 64 цвета, AY). Также поддерживается совместимость с ATM2 Turbo. Пакет работает на обычном PC с ОС Windows.

В пакет входят кросс компилятор языка C SDCC, набор утилит для автоматизации конвертирования ресурсов из стандартных форматов и сборки, а также низкоуровневая библиотека, обеспечивающая вывод графики и другие операции.

От разработчика требуется подготовить ресурсы в стандартных форматах и программу на языке C, после чего проект нажатием одной кнопки собирается в готовый образ диска, который может быть запущен в прилагаемом эмуляторе ZX Evo или на реальном компьютере.



Возможности

Около 55 килобайт для скомпилированного кода на C. Ресурсы и часть кода библиотеки располагаются в страницах и подключаются автоматически.

Все данные грузятся с дискеты и распаковываются в ОЗУ начальным загрузчиком. Возможности подгрузки данных нет, так как объём ОЗУ больше объёма дискеты в несколько раз.

Вывод фоновых изображений разных размеров, кратных 8, а также отдельных блоков 8x8 из них. Координаты вывода также кратны 8. Отдельные тайлы могут выводиться с заданным 'прозрачным' цветом, что позволяет выводить текст поверх графики.

Установка одной из 256 заранее импортированных из BMP файлов палитр, а также задание палитры программно. Виртуальная яркость палитры, изменяющаяся от полностью чёрного до полностью белого экрана за 7 шагов.

Вывод списка из 64 спрайтов 16x16 с автоматическим восстановлением фона. Всего может быть до 5376 разных изображений спрайтов, практически их количество ограничено объёмом ОЗУ. Координаты вывода задаются с точностью до пикселя по вертикали и до двух пикселей по горизонтали. Скорость вывода зависит от количества спрайтов в списке, количества непрозрачных пикселей в спрайтах и времени выполнения основной программы. В простом тесте за время одного ТВ кадра можно вывести около 20 спрайтов с изображением шарика, а все спрайты могут быть выведены за 3-4 кадра.

Проигрывание трёхканальной музыки в формате PT3 и звуковых эффектов в формате AFX. При наличии Turbo Sound музыка и звуковые эффекты проигрываются на разных чипах, при одном AY выполняется наложение эффектов на музыку.

Проигрывание оцифрованных звуковых эффектов через Covox. Во время проигрывания программа останавливается.

Опрос джойстиков и клавиатуры в виде джойстика - стрелки и огонь. Опрос 40-кнопочной клавитуры.

Внимание: стандартные библиотеки C отсутствуют. Есть упрощённые реализации memset и memcpy, а также 16-битный rand. Память должна выделяться статически.



Формат ресурсов

Графика должна быть подготовлена в формате BMP без сжатия, с 16 или 256 цветами (используются первые 16 цветов). Для этого могут использоваться любые стандартные графические редакторы.

Изображения для фона должны иметь размеры, кратные 8 пикселям. Максимальный теоретический размер одного изображения 2 мегабайта, например 2048x2048 пикселей. Для практического использования размер одного изображения ограничен размерами экрана. Всего в проекте может быть использовано до 256 изображений, общий объём графики ограничен объёмом ОЗУ.

Спрайты имеют размер 16x16 пикселей и подготавливаются в виде одного или нескольких 256-цветных изображений любых размеров, кратных 16 пикселям. Первые 16 цветов изображения могут быть использованы в графике, остальные цвета являются прозрачными, что позволяет использовать все 16 цветов в одном спрайте плюс прозрачный цвет.

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

Музыка должна быть подготовлена в формате PT3. Для этого могут использоваться редакторы Pro Tracker 3 или Vortex Tracker II. Используется один AY, поддержки Turbo Sound для музыки нет.

Звуковые эффекты должны быть подготовлены в формате AFX с помощью AYFX Editor.

Оцифрованные звуковые эффекты должны быть подготовлены в виде монофонических 8 или 16-битных WAV файлов без сжатия, с частотой дискретизации 8000, 11025, 16000, 22050, 32000 или 44100 герц.



Добавление ресурсов в проект

Все ресурсы, такие как изображения, спрайты, музыка и звуковые эффекты, добавляются к проекту через bat-файл. Из имён файлов ресурсов генерируется файл resources.h с их идентификаторами.



Функции библиотеки

Все функции и их параметры описаны в заголовочном файле evo.h, который должен включаться в любые проекты. Он находится в /evosdk/.



Особенности использования SDCC

В SDK используется старая версия SDCC по ряду причин. Новая версия компилирует даже небольшие проекты очень долго, от десятков секунд до нескольких минут. С --oldralloc компиляция такая же быстрая, как с используемой старой версией, код получается более компактным, но выполняется немного медленее.

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

Быстрая смена версии SDCC простой заменой файлов невозможна, так как между этими версиями были сделаны заметные изменения, включающие изменение имени ассемблера, изменение ключевых слов для ассемблерных вставок и формата библиотек. Требуется правка части исходников и скриптов сборки.



Особенности эмулятора

Не эмулируется переключение тактовой частоты, всегда выбран режим 14 МГц. Так как в этом режиме скорость работы нестабильна, во время проигрывания сэмплов выбирается 3.5 МГц, и в эмуляторе они звучат намного выше, чем на реальном компьютере.



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

Для переключения между Evo и ATM2 нужно пересобрать библиотеки с помощью одного из двух bat-файлов в /evosdk/.