# Запилятор

## Установка и запуск 

Для запуска необходим web-сервер с поддержкой PHP не ниже v5.4

Если серверу доступен компилятор [sjasmplus](https://github.com/z00m128/sjasmplus), то из сгенерированного код будет скомпилированы trd и sna файлы проекта.


Файлы из каталога `src` скопировать на web-сервер. Каталог `public` является корневым для виртуального хоста сервера. Если все настроено правильно, запилятор должен быть доступен в браузере по основному адресу виртуального хоста. 

## Готовый сервер (Windows) 

Готовый сервер nginx + php7 для Windows доступен по этой ссылке: https://disk.yandex.ru/d/cKBpjmi3FotsEw. Скачанный архив необходимо распаковать в каталог проекта.

* Запустить `win-server-start.cmd`
* Открыть в браузере `http://localhost:48128` если не открылся автоматически

Сервер содержит sjasmplus, исходный код будет автоматически компилироваться в trd и sna файлы.  

## Запуск в docker

```
docker run -p 80:80 nyuk/zapilyator
```

Docker образ содержит sjasmplus, исходный код будет автоматически компилироваться в trd и sna файлы.

---

## Описание (частично устарело)
Генератор исходников демы для ZX-Spectrum 128, состоящей из заставки, анимации, скролла и музыки. Работает очень просто: загружаем gif-картинку, pt3-трек, скрин 6912, настраиваем параметры, нажимаем "MAKE DEMO" и ждем. После окончания работы появляется окно с логом и статистикой. 

Если в верхней строчке лога красным текстом написано "Too long source! Demo can not be compiled!!!!", значит гифка распарсилась в слишком большой код и дема не соберется. 
Но сгенерированные исходники все равно можно скачать. Например, чтобы вручную раскидать невлезающую анимашку по страницам. Если всё нормально, то нажимаем "Download", сохраняем и распаковываем zip-архив. Запускаем make.cmd и смотрим дему.

## Подготовка GIF-файла

Анимация в деме строится на основе заранее подготовленного GIF-изображения. Картинка должна быть заранее уменьшена до размера 256х192 пикс. и приведена к двум цветам: черный и белый. Файл не должен быть "оптимизирован", т.е. каждый кадр внутри gif-файла хранится полностью.

Поскольку анимация заточена на скорость, то расход памяти очень большой. Даже для самых простых гифок улетает два и более килобайта памяти на кадр. Генератор сгенерирует рабочие исходники только если гифка распарсится в код менее 40 кб. Если размер анимации превысит 40 кб, то будет отображено предупреждение "Too long source! Demo can not be compiled!!!!". При этом исходники (не рабочие) все равно можно будет скачать.

## Параметры

### Main setup
* **Border** - цвет бордюра
* **PT2/PT3 music** - трек в формате PT2/PT3 (не обязательно)
* **Splash file** - файл заставки в формате ZX-Spectrum screen 6912 (не обязательно)
* **Splash delay** - задержка показа заставки в паттернах трека. Если дема без музыки, то задержка фиксированная 256 фреймов

### GIF-animation setup
* **GIF file** - файл анимации
* **Sequences** - последовательности, которые будет просматривать файлы. Манипуляцией этими параметрами можно добиться уменьшения размера получаемого кода на несколько процентов
* **INK / PAPER BRIGHT** - цвет анимации
* **Speed** - скорость анимации во фреймах. 1 - макс. (фреймовая)

### Scroll setup
* **Text** - текст для скролла. К заглавным буквам приводится автоматически
* **Scroll font** - шрифт скролла
* **INK / PAPER BRIGHT** - цвет скролла
