Серьёзные разработчики (типа RELEVO или Mojon Twins) делают игры под несколько платформ. Особенно легко это делать, если все платформы (или конфигурации) на одном и том же Z80. Различаться должны только ресурсы (графика, музыка, звуки), загрузчик, графический движок и звуковой движок. В любом случае вся логика игры, карты и балансировка могут оставаться прежними.
Как этого добиться без лишних усилий?
Допустим, вы пишете в ALASM. Поскольку у него память под исходники ограничена, то у вас однозначно уже есть несколько исходников: в одном обвязка, в другом лежит графический движок, в другом звуковой, в третьем интеллект и т.п.
Допустим, программа уже работает под одну конфигурацию. Допустим, это 6912. Надо добавить поддержку цвета на точку. Чтобы не начинать всё с начала и не утонуть в отладке, надо переделывать программу маленькими шагами. Мой рецепт следующий:
1. Убеждаемся, что все адреса таблиц заданы константами или динамически выделяются, а не прописаны непосредственно в коде. Это можно проверить, физически сдвинув таблицу.
2. Убеждаемся, что нигде не используются абсолютные адреса графики, а есть только номера спрайтов или таблица с адресами. Это можно проверить, физически сдвинув спрайты.
3. Делаем так, что ресурсы в страничках не INCBIN'ятся, а грузятся.
4. Убеждаемся, что программа сама собирается на диск одной кнопкой (SAVEOBJ*, mrip* или m2hr*).
5. Мигрируем в ассемблер с АТМ страницами. Убеждаемся, что всё работает и после сборки на диск тоже работает.
6. Добавляем в главный исходник константу atm=1 и все последующие изменения обрамляем IFN atm ... ELSE ... ENDIF.
6. Добавляем код инициализации ATM, включаем режим EGA и смотрим на кашу на экране.
7. Переписываем графический движок так, чтобы он выводил 6912 графику на EGA экран. Экран проще всего подключать в #0000. Пусть тормозит, это не важно! Убеждаемся, что всё работает.
8. Переделываем для начала несколько спрайтов и/или тайлов под цвет на точку.
9. Переписываем одну графическую процедуру за другой под новые графические ресурсы, они должны лежать в странице. Тестируем на том, что мы наконвертили.
10. Переделываем остальные ресурсы.
11. Автосборщик должен при atm=1 сохранять игру под одним названием, а при atm=0 под другим.
12. PROFIT!