Acid Paper #02

C кассеты на диск - перенос и адаптация программ с кассеты на диск.

                  С кассеты на диск.

Эта тема поднималась неоднократно во многих электронных
изданиях для Спекки, но я ни разу не встретил разумного
изложения. Попробую поделиться своими методами.

Итак, имеется примерно такой вариант:
basic-файл.
заставка headerless
блок1    headerless длина 20000 байт
блок2    headerless длина 20536 байт
блок3    headerless длина 1536 байт (или около того).

  Грузим все файлы в память и начинаем гонять от точки старта
STS'ом или чем-то подобным. Так как игра явно сброшена
мультифейсом или похожим извратом, то попадаем на процедуру
восстановления регистров, режима прерываний и стека.
  Проходим ее и попадаем куда-то в середину опроса клавиатуры
или вывода на экран. Далее для ускорения поиска я переношу PC
в #0052 и гоняю по шагам несколько раз. Рано или поздно STS
приводит меня к старту.(STS делает, а думаю я;).
  Затем неплохо просмотреть старый, как правило фирменный
basic, который сидит в памяти. Оттуда можно извлечь и стартовый
адрес, и (иногда!) параметры нормального кодового блока.
  Длину кодов можно определить еще и так: от usr"A" двигаться
вниз по памяти. Как правило, в конце памяти есть 2-3 свободных
килобайта.
  Следующий шаг - упаковка и написание загрузчика. Обычно я
пакую картинку с помощью Screen Crasher'а, который в среднем
неплохо сжимает картинку. Затем в распаковщике изменяется
три(!) байта, что позволяет распаковать заставку в память по
адресу #8000 или #С000, а затем красиво вывести ее на экран.
  Кодовый блок пакуется по вкусу. Крайне редко приходится
резать его на два, и на моей памяти только одна(!) игра не
позволила так надругаться над собой. Это Fairlight I для 48Кб.
Мне так и не удалось сделать полный дисковый аналог кассетной
версии из-за нехватки памяти.
  Теперь остался один момент. Почти все игрушки фирмы ULTiMaTe
не работают в 128-м и 48-м с открытым портом. Поэтому обычно
я использую корректный переход в 48-й режим и устанавливаю
защелку 48 Кб(бит 5 порта #7FFD).
  Кстати, раньше был такой непризнанный стандарт: если вторая
буква имени файла была маленькой, то boot переходил в 48-й
режим перед запуском такого файла. Это важнее, чем сортировка
каталога;).
  В российских программах я, как правило, исправляю два
момента:
- некорректный turboloader - мне и с #3d13 неплохо.
- некорректный опрос kempston joystick - ставлю
  автоопределение.

  Именно благодаря второму пункту в нашем городе получили
признание ViRuS 2, Hexxagon и другие. А в Hexxagon'е я добавил
еще управление AY-mouse, но эта версия не распространялась.

  Все вышесказанное относится к стандартной игре. В особых
случаях программа имеет уровни, сохраняет/загружает состояние
игры или просто глючит. Про это разговор особый.

  И в заключение одна из последних адаптаций. Это I of Mask 1.
Игрушка 1984 года, довольно крутая для того времени. Я нашел ее
на компакт-диске, который продает UNBEL!EVER. Итак, файл
формата tzx, поддерживающего многие нестандартные способы
записи на кассету(читай: защиту от копирования). А прикол
вот в чем: после basic'a идет длинный(около 50 Кб) файл,
в котором хранится все. Причем картинка идет по увеличению
адресов, а атрибуты - по уменьшению и т.д. 
  В загрузчике 8 или 9 вызовов процедуры загрузки - примерно
200 килобайт. Но! Четвертый по порядку блок перекрывает
загрузчик и модифицирует его.
  Самое смешное в том, что загрузка оказалась невинным
цветочком. А ягодкой стал подсчет контрольной суммы кусков
памяти, которая стала ключом для ксорки. В итоге я дождался
окончания загрузки и выгрузил всю память, которую благополучно
порезал на куски и разбил на нормальные блоки.
  Кстати, в basic'е была такая строчка:"Hi, Bill! Another
hacker?"
  И это все фигня. На том же диске, в том же формате есть
очень похожая на фирменную RanaRama. Там тоже один здоровый
блок, который выводит заставку и потом крутит счетчик и
по ходу загрузки печатает инструкцию. Умели делать, а?

                                    GoBLiN/BeerManZ

p.s. "Mortal Kombat Hackers Group выпустил все пристойное, что
было на Спектруме. Остался один KAL".
                                      KAN0/RPSG.
Отвечаем: Андрей, ты не прав!




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Amiga Club - Новая статья бывшего Спектрумиста Макса Петрова об Amiga.
От авторов - Презентация новой модемной информационно-развлекательной газеты. О рубриках газеты.
Тусовка - Поговорим о музыкальных стилях.

В этот день...   24 сентября