На сайте конкурса есть исходники для Commodore и Amstrad.
http://formatwar.net/view_article.ph...llabortition_1
Доступны через веб-архив (в архиве выбрать дату 2011.12.06.)
Commodore C64:
- есть исходники
- но незнакомый мне процессор и ассемблер
Evo Base conf:
- похожий экран, но другая структура
- используются все 4 окна памяти (а в GMX есть только 2.5 окна)
- нет исходников
Amstrad CPC 128:
- тот же процессор Z80
- похожий графический режим, но другая структура. Видео режим Amstrad 160*200 точек похож на 640*200 "с полосками" на GMX, но 16 цветов из палитры 27 и есть аппаратный горизонтальный скрол, а в GMX только вертикальный
- похожее переключение банков памяти (но используется в основном окно #4000)
- тот же музыкальный чип AY8912
Подготовка порта на ZS GMX.
Задачи портирования:
- Определить с какой машины проще сделать порт (c Amstrad, есть исходники и похожа архитектура)
- Найти исходники (в веб архиве)
- Определить на каком ассемблере написаны (встроен в эмулятор WinAPE20B2)
- Попробовать собрать и запустить в эмуляторе (успешно, пришлось ещё скачать код плеера)
- Скопировать файлы на ZX (подошёл SteinBlume. CP/M Disk Image Explorer)
- Поправить исходный текст для sjasm
Адаптировать:
- Загрузчик
- Переключение страниц и расположение кода в памяти
- Вывод на экран
- Графику
- Опрос клавиатуры и джоев
- Прерывания
- Плеер музыки
Трудности перевода:
- Так как используется страница 0 вместо ПЗУ, в sjasm не создать снимок SNA для быстрой проверки (или я не знаю как), но можно создать диск TRD и автоматом грузиться с него
- На реальном железе теневой монитор не работает со страницей 0 вместо ПЗУ и с расширенными экранами, поэтому не отладить код
- Нет аппаратного горизонтального скрола как в Amstrad.
Вывод фона 160*78 байт по ldir занимает больше всего времени. Удалось немного ускорить вывод за счёт перехода на ldi.
Но всё равно игра движется медленнее оригинала. Хотя, мне это даже нравится.
Очевидно, можно ещё значительно ускорить.
Но правильнее будет для ZS адаптировать игры с вертикальным скролом.
[свернуть]