Вечная жизнь в играх своими руками


              

это количество самих зарядов. Тогда


А два нуля — это количество самих зарядов. Тогда последовательности 00h 00h 32h 00h ничего не остается как отвечать за число ракет (00 ракет в наличии, 50 — максимум). Меняем все эти байты на FFh и получаем максимальный боезапас:

00000100:  31 34 35 37-36 33 32 38-FF FF FF FF-FF FF FF FF  14576328yyyyyyyy

00000110:  FF FF FF FF-FF FF FF FF-00 00 00 00-00 00 00 00  yyyyyyyy

00000120:  05 00 00 00-02 00 00 00-00 13 00 01-00 00 00 00  ¦   O    ! O

00000130:  00 01 00 00-00 20 00 00-00 00 00 00-00 00 00 01   O             O

Листинг 15 фрагмент исправленного сэйва, дающий все оружие с кучей патронов

Загружаем исправленный сэйв в DOOM, нажимаем <7> для выбора BFG и встаем на тропу войны.



Рисунок 17 мыщъх на тропе войны

Остальные игрушки ломаются схожим образом. Вот, например, UFO, которое кладет все сейвы в каталоги GAME_X, причем кладет их очень много! Почти полсотни файлов! К счастью, утилита fc.exe из штатной поставки Windows, поддерживает джокеры и позволяет сравнивать множество файлов сразу: "fc.exe /b GAME_X\* GAME_Y\* > log", избавляя нас от необходимости делать это вручную. Утилита fck.exe джокеров не поддерживает (кто возьмется ее доработать?), но можно поступить проще, воспользовавшись простым пакетным файлов следующего содержания:

for %%A IN (*) DO fck.exe game_1\%%A game_2\%%A game_3\%%A >> log

Листинг 16 командный файл, позволяющей утилите fck обрабатывать множество файлов

Сравнение сэйвов показывает, что при добавлении новых исследований в проект, один или несколько байтов в research.dat устанавливаются в единицу. Наблюдая за изменениями легко установить, что файл имеет блочную структуру и размер блока равен 16h байтам, а флаг, "разрешающий" исследовательский проект находится по смещению 08h от начала блока.

Приведенная ниже программа открывает все исследования, в том числе и Cydonia/L'Tech без которого игра не может закончится, зачастую становясь непроходимой.


Содержание  Назад  Вперед