Есть 8 случаев автор(недоступен, доступен(ты сам))*исходники(нет, есть)*дополнительные_ресурсы(нет, есть).
Если не доступен автор, разбираемся в логике вывода графики, от ресурсов до экрана.
1. Где лежат ресурсы, и какие они. Желательно сразу, обычно это просто.
2. Исследуем, имеется-ли программно организованный буфер экрана. Как он организован.
3. Как рисуется фон, если нужно ускорить рисование фона, подкрасить фон, либо фон сложный: часть изображения за спрайтами, часть пЕред.
4. Исследуем процедуры вывода спрайта. Вникаем есть ли маска, есть-ли промежуточные буферы (например для сдвига, поворота, зеркаливания)
Если доступен автор, сначала допрашиваем его, какие он помнит особенности. Это может помочь, и не будет лишним.
Если нет исходника, хакаем. Нам не нужен полный дизассемблер программы(, и потом на него долго смотреть). Идём от экрана. В отладчике ставим останов при записи в экранную область. (Помним, что у 128К, кроме главного экрана по адресу $4000 может использоваться расширенный по $C000) Если это шлёпанье кадра из буфера, (главный признак - куча LDI/PUSH, или один LDIR, возможны варианты.) Мы нашли буфер, копаем дальше, ставим точку останова на запись в буфер. Повторяем по цепочке, пока не найдём хитрую процедуру. Пытаемся выяснить что это. Творчески лазаем по цепочке вызовов (CALL-RET-(JP))/
Пытаемся найти главный цикл программы. Пробуем заменить CALL на 3 NOP, и смотрим что пропало на экране. Таким образом находим всё, что нам надо найти (см. предыдущий абзац)
Ищем свободную память. Медитируем, а нужны ли нам буферы? Есть ли место для дополнительных ресурсов? Есть ли место для кода инициализации карты? (если не хватает, часть инициализации можно внести в загрузчик игры, заполнение неизменных палитр)
[свернуть]