nzeemin.github.io / Портирование Desolate

Оригинал на TI-83 Plus

Это игра в жанре «adventure/RPG», в научно-фантастическом сеттинге, с видом сверху-вниз.
Автор игры – Patrick Prendergast (tr1p1ea) – написал и выпустил её в 2004 году для научных калькуляторов TI-83/84 Plus.
Безусловно, это одна из лучших игр для этих устройств, если не самая лучшая.

Поиграть в оригинал проще всего с помощью эмулятора, я использовал для этого эмулятор Wabbitemu.

Шаги по запуску игры в эмуляторе:

  • Запустите Wabbitemu, выберите ROM-файл
  • File Open, DesData.8xp
  • MEM, выберите Archive; PRGM, выберите DesData; ENTER
  • File Open Desolate.8xp
  • File Open MIRAGEOS.8xk
  • APPS, выберите MirageOS
  • Выберите Main, Desolate

Портирование на ZX Spectrum

В октябре 2020 я начал с разбора и комментирования кода оригинальной игры, на это ушло около двух недель. Затем я занялся подготовкой кода для портированной версии. Начал с того, что разработал свой пропорциональный шрифт, похожий на тот, что используется на этих научных калькуляторах, написал код для вывода символов этого шрифта. Дальше занимался последовательным переносом кода на ассемблер Z80, и конвертацией данных из оригинала. Так, шаг за шагом, я получил полный код игры. Затем тестирование и небольшие улучшения по сравнению с оригиналом. И наконец, последний шаг - упаковал весь массив игры в LZSA1, с тем чтобы уменьшить время загрузки. В качестве основного редактора использовал VSCode; компиляторы: pasmo и sjasmplus.

Скриншоты портированой версии:

Видео прохождения (спасибо Pavel Plíva и RZX Archive!):

Портирование на Вектор-06Ц

Делать порт под Вектор-06Ц я вообще-то не собирался, но когда я стал задавать вопросы про разработку под Вектор на форуме, мне быстро и подробно отвечали, так что оказалось, что эту работу относительно просто сделать. Код для Z80 пришлось адаптировать для процессора КР580ВМ80А, по сути это урезание до более слабой системы команд. Плюс конечно переделка вывода на экран, ввода с клавиатуры, и ещё таких вещей как например генерация случайных чисел. В целом на этот порт ушла примерно неделя работы, может чуть больше.

Скриншоты портированой версии:

Портирование на УКНЦ

Запустить в онлайн-эмуляторе UKNCBTL

После того как я детально разобрался с устройством оригинальной игры и практически завершил порт на ZX Spectrum, появилось желание сделать порт на УКНЦ. Основная сложность здесь была в конвертации кода для 8-разрядного процессора Z80 на совершенно другую архитектуру – DEC PDP-11, а точнее, под советский процессор К1801ВМ2. Подобную работу я уже проводил раньше, для игры Highway Encounter. На полную конвертацию кода в этот раз ушло ровно две недели (~4230 строк исходного кода для Z80 преобразованы в ~3580 строк кода на MACRO-11), затем ещё несколько дней на поиск и устранение ошибок, плюс небольшие доработки.
Всю эту работу я провёл в декабре 2020 года, релиз выложил 27 декабря 2020.

На основе кода этой версии Desolate, Александ Тишин (Sandro) делает порт игры для компьютера БК-0011М.

Скриншоты портированой версии:

Проверено, что игра запускается и работает на реальной машине (спасибо BlaireCas и hobot с форума zx-pk.ru):