Вы когда-нибудь задумывались над вопросом «Сколько же лет может занимать работа по совершенствованию или исправлению ошибок одной и той же игры»? Иногда это затягивается на очень долгое время. Пять лет понадобилось, чтобы окончательно разобраться с вопросами и проблемами, связанными с игрой
– файлы русификации оригинальной английской версии. Дополнительно прилагаются: программный патчер уровня сложности (AS_patch.exe), а также информационный справочник игры (AS_info_setup.exe) с интегрированным инсталлятором русифицированных файлов. Настройки звука по умолчанию ориентированы на запуск в DOSBox 0.74. Также прилагается русский мануал к игре – AlphaStorm_rus_readme.pdf.
– удачная английская рип-версия от 2012 года. Запуск в Windows XP возможен прямо из справочного win-приложения (AS_info.exe). Звуковые настройки по умолчанию ориентированы на запуск в Windows XP, а не в DOSBox 0.74. Рип-версия функциональна и не требует анимационных роликов на CD-диске игры. Прилагается оригинальный мануал к игре – Alpha Storm Manual (English).pdf.
– удачная русская рип-версия от 2012 года. Запуск в Windows XP возможен прямо из справочного win-приложения (AS_info.exe). Звуковые настройки по умолчанию ориентированы на запуск в Windows XP, а не в DOSBox 0.74. Рип-версия полностью функциональна и не требует анимационных роликов на CD-диске игры. Также прилагается русский мануал к игре –AlphaStorm_rus_readme.pdf.
– двуязычный патчер для исправления недочётов при воспроизведении стартового и финального анимационных роликов в программном коде storm.exe, также выполняет исправления на карте tower.alf. По умолчанию настроен английский язык.
– Здесь прилагаются: английский мануал к игре (Alpha Storm Manual (English).pdf) и английский справочник (AS_info.exe). Файлы нужно будет скопировать в корневую папку игры для возможности отображения карт кораблей и спрайтов в приложении AS_info.exe.
– двуязычный программный патчер уровня сложности (AS_patch.exe). По умолчанию выставлен английский язык.
Эту крайне малоизвестную игру я заметил ещё в 2007 году на нашем сайте. Тогда у меня ещё был модемный канал с не очень хорошими характеристиками пропускной способности.
Alpha Storm подкупала небольшим размером архива и красивыми скриншотами. Что удивительно, игра даже заработала в ХР без проблем. В апреле 2007 года я в первый раз немного поиграл, но затем почему-то забросил прохождение. В июле того же года появилось много свободного времени, снова сел за игру и на этот раз отнёсся к прохождению довольно серьёзно. Быстро уловив главную суть геймплея – тяжелый и долгий сбор всех компонентов супероружия в постоянных сражениях, – через некоторое время наконец-то заполучил Стазис и Нову. После первой же стычки с кораблем Чёрных Существ и последующего нажатия на заветную кнопку «Пуск» наступила фаза очень сильного недоумения вперемешку с разочарованием: я не смог переварить такого, поскольку ровным счётом
ничего не произошло. Я думал: «Ну, наверное, надо все бомбы Нова собрать и применить, и тогда…», или «Может это какой-нибудь сбой в памяти в один из моментов предыдущих сохранений», или «Надо было только в DOSBox играть...». После тотального сбора всех бомб и их применения результата всё равно не было. После нескольких различных вариантов повторных прохождений заново «с чистого листа» в 2008 году – опять то же самое. Меня это сильно разозлило. И в конце 2009 года я очень серьёзно взял за «жабры» эту непокорную игру. Начал изучать ресурсы и прежде всего программный код, поскольку имел богатый опыт «вскрывания» различных не очень серьёзных программок с дешевой «защитой».
Прежде всего, такой вопрос: «А как же залезть в код основного цикла игры, за какое место необходимо уцепиться, где искать?». Самое главное здесь – знать назубок программную реализацию «математики» в игре: какие предельные ограничения для игровых параметров существуют, константы инициализации, какие соотношения между игровыми параметрами и простейшие математические действия с ними. Я смог легко зацепиться за число 999 (в десятичном выражении). Это был просто верхний порог ограничения значений силового щита корабля Чёрных Существ. В шестнадцатеричном выражении это число выглядит так 03E7 (или последовательно в коде … E7 03…). Надеюсь, никому не надо объяснять, что это довольно уникальное сочетание двух байтов, в коде игры их можно было найти чуть более десятка. И ещё для сведения: если в игре реализованы ограничения или инициализация параметров не круглыми десятичными или близкими к ним по инкременту, а числами, производными от степени двойки, то тогда подобный подход потерпит, скорее всего, крах и «залезть» в код главного игрового цикла станет намного труднее.
Так я смог легко попасть в главный цикл игры и увидеть уже знакомые и понятые именно благодаря изнурительным прохождениям все её программные вычисления над игровыми параметрами. Через некоторое время изучения кода, в конце сентября 2009 года, я вышел на основную процедуру в игре, связанную с программной реализацией пуска Новы. Попытки через правку команд принудительно зайти в неё в момент геймплея постоянно оканчивались неудачно. Что-то мешало нормальному выполнению кода, игра никак не хотела заходить в эту ответственную процедуру.
Тогда я решил пойти окольным путём. Я смог удачно задействовать всего лишь один неиспользуемый байт из памяти для простого подсчёта количества пусков бомбы Новы, поскольку параллельно с изучением кода смог легко расшифровать структуру файлов сохранения (alfsave#.sav), которые являются, по сути, простым дампом памяти игры. Короче говоря, смысл байтов в сейвах благодаря изучению смещений переменных в программном коде игрового файла
storm.exe теперь легко был понят. Первым успешным результатом был обычный DOS-патч для *.sav файлов игры. Благодаря этому патчу можно было быстро проходить и тестировать игру: «выписывать» себе Нову и Стазис без изнурительных космических путешествий, добавлять маны по максимуму, сразу «получать» все приборы высшего разряда. Второй победой стал первый прототип рип-версии игры. Подсчёт количества пусков Новы я смог программно соединить с исправлениями в коде storm.exe с принудительной записью в один-единственный важный байт – статус корабля Чёрных Существ (0 – подвижен, 1 – неподвижен). Так получились первые вполне играбельные рип-версии под DOS, причём сразу в нескольких модификациях сложности. В рип-версиях от 2009 года варьировалось количество пусков Новы (1 или 3); при пуске я сделал так, что очень сильно могло изменяться количество маны у игрока и ослабевал щит корабля, – некий суррогат эффектов при взрыве в отсутствие анимаций. Это удалось уместить в какие-то 30–40 байт кода. Но всё-таки это были грубые отличия от сюжета оригинального варианта игры.
Параллельно со штудированием программного кода
storm.exe в конце 2009 года я с нуля изучал
абсолютно недокументированные форматы других ресурсов
Alpha Storm: шрифтов, карт кораблей, текстур, графических файлов и спрайтов противников. Всё это стало мощной предпосылкой для осуществления в дальнейшем и успешного завершения в короткие сроки перевода этой игры в конце 2010 года. Здесь стоит отметить третий результативный момент – починку в 2009 году файла
tower.alf. В своём изучении ресурсов карт я упёрся в непреодолимую сложность описания внутренней структуры данных для секторов (обычной думовской архитектуры), но смог однозначно расшифровать всё, что связано с вертексами, рёбрами и заданием самих секторов. Это помогло отключить ненужное действие на одном ребре, которое опускало пол в черноту и было ошибочно оставлено мапперами в карте
tower.alf. Это ребро и связанная с ним дверь как раз и не давали пройти на верхний этаж в Башне Варгов, а там расположен капитанский мостик и можно было на мониторе посмотреть всю карту этого самого грандиозного и многоэтажного сооружения во всей игре. Остальные форматы в игре были полностью расшифрованы, за исключением ещё, быть может, смысла значений некоторых параметров таблицы звёздной карты, состоящей из 95 записей (звёздных систем). Наконец, в октябре 2009 года случилась одна важная находка, существенно повлиявшая на дальнейший ход работ по игре.
Я, увлёкшись работой и изучением ресурсов, даже и не обратил внимания, что
Alpha Storm вообще-то была выпущена изначально с диском, и те 12 мегабайт архива – это был всего лишь жалкий и неполноценный рип. И вот в октябре 2009 года благодаря
ahsasa мы наконец-то смогли заполучить заветный образ. Запуск игры в VirtualPC показал полную работоспособность и, самое главное, проходимость игры. Благо всю игру заново проходить не пришлось, поскольку я предусмотрительно на этапе предыдущего «N-дцатого» прохождения сохранял все сейвы. Теперь можно было анализировать – что же мешало полной функциональности свободно распространившейся в сети рип-версии игры. А суть была в следующем…
Игра вышла в начале 1997 года, а уже в марте того же года рипперы из команды
Celebre «потрудились» над рипом, затерев всего лишь один переход в коде проверки наличия CD в приводе. Но проверить свою работу полностью они, конечно же, не захотели. А суть защиты была такова, что, пока не вставлен диск, проигрыша анимационного ролика при пуске Новы не будет, а раз не было воспроизведения анимации, то программная реализация остановки корабля Чёрных Существ не выполнялась. Я находил это важное место. Действительно, если затереть там один переход и принудительно вызвать ту важную процедуру (:0000F620 по WinDASM) остановки корабля Чёрных Существ, то это будет происходить в непрерывном цикле анимации роликов, и вызов этой процедуры происходит многократно вместо «правильного» однократного обращения к процедуре непосредственно после окончания воспроизведения кадров анимационного ролика. И в результате таких неправильных манипуляций с переменными выполнялся просто выход из режима монитора «Космического боя» на мостике и ничего не менялось – ни зависаний, ни ошибок не было. То есть жёстко нужны были ролики игры, которые программно
storm.exe читает непосредственно с CD-диска. Довольно оригинальный способ защиты. Но игра так и осталась в забвении, и даже не по вине рипперов, – она просто была не востребована с типичной Doom-архитектурой в 1997 году. Я, в принципе, ни разу не встречал в сети описания проблемы непроходимости рипа
Alpha Storm.
Четвёртым мощным успехом был полный перевод игры в 2010 году
(новость о завершении перевода). Благодаря творческой энергии
Vladimir777 нам удалось не только перевести, но и написать заново и приукрасить сам сюжет игры. В 2011 году из переведённых ресурсов и расплодившихся «DOS рип-версий 2009» я хотел сделать что-то вроде объединённой программной WIN-оболочки запуска. О том, что из неё получилось, – см. в конце новости.
В начале 2011 года
Gamerun раздобыл оригинальный мануал игры. И тут многое встало на свои места. Стала понятной логика срабатывания бомбы Нова и настройки её мощности в игре. Эх, знал бы я о них тогда, в 2009 году, – и работа бы с этой игрой не затянулась на такой длительный срок. Сразу после этого благодаря
kreol’у мы смогли плавно и незаметно объединить оригинальную и расширенные части сюжета. И тут я хотел бы отметить, что некоторые моменты, даже не имея исходного мануала под рукой, мы с
Vladimir777 смогли предугадать в расширенной части истории в 2010 году, работая над переводом. Поэтому «сращивание» частей сюжета прошло легко и абсолютно «безболезненно».
В феврале 2011 года на базе всего наработанного с лёгкой подачи
Dimouse родилась новая гениальная идея – программный патчер регулирования сложности игры, который путём грамотных изменений в самом коде
storm.exe позволял бы ужесточить баланс. Честно сказать, баланс в игре, конечно же, есть, но если хорошо «набить руку» в прохождениях, то потом становится уже немного скучновато играть. Так вот, теперь для тех, кому захочется геймплея «погорячее», мы сумели приготовить настоящий подарок. Теперь программный патчер исправляет байты в коде
storm.exe так, что игрок может выбрать один из более чем 64 тысяч вариантов сложности. И самое главное – все эти варианты заведомо сложнее оригинального, вплоть до, возможно, полной непроходимости. Что же варьируется и, самое главное – как? Нет-нет, это не скучно-серые Windows-бегунки настроек непонятно каких скучных числовых параметров, – следуя великим заветам, мы пошли другим путём. Мы решили использовать расширенный сюжет от перевода в 2010 года в качестве базовой основы. Теперь каждая из настроек имеет своё сюжетное описание. Первая настройка – сюжетно обоснованный уровень деградации персонажа. С увеличением степени «порочности» постепенно «выключаются» сложные темы вооружения и спец. способностей (реальные аналоги – они вокруг нас в обществе). Второй важный параметр – уровень мастерства: с его падением увеличивается расход маны при использованием тем и различного псионического вооружения. Ещё есть настройки параметров уровня мощности Новы, степени защиты от Стазиса при взрыве, критического числа поверженных Чёрными звёздных систем, при котором игра заканчивается, и многого другое. Это был пятый успешный прорыв в эпопее с
Alpha Storm, который вобрал в себя всю ту мощь от двухлетнего комплексного изучения программного кода игры и формата её ресурсов. Мы даже "обыграли" найденные в файлах ресурсов игры, но так и не реализованные в игре способности главного героя. По-видимому, разработчики не успевали или способностей и так получалось предостаточно.
В феврале 2012 года мне наконец-то удалось сделать полноценную рип-версию, мало отличающуюся от оригинала, – это была шестая, самая желанная победа. Именно первоначально из-за стремления сделать полноценный рип игры я и начинал всю эту работу. Казалось бы, всё закончено, можно успешно говорить о завершении, но…
В конце 2010 года появилась версия
DOSBox 0.74, как раз анонсировавшаяся с поддержкой небольшой группы наиболее «тяжёлодосных» игр, среди которых была
Alpha Storm. В
DOSBox 0.74 как раз было удобно тестировать перевод игры на финальных стадиях. Так вот, в
DOSBox 0.74 непонятно по какому недоразумению «слетала» палитра перед воспроизведением стартового и финального роликов. Это немного портило картину, так как сборки на основе
DOSBox наиболее удобны в пользовании и настройках для запуска игр на платформе DOS с поддержкой эмуляции чтения образов CD-дисков. Работая над рипом в начале 2012 года, я незаметно для себя вышел на цикл воспроизведения роликов (не стартового или финального, а внутренних). Ведь, как вы помните, программная реализация пуска Новы проходила как раз в самом конце цикла покадрового воспроизведения. И тут мы должны сказать всё-таки спасибо рипперам из 1997 года. Именно после места с затёртым ими переходом начинается вызов процедур стартовой заставки и стартовой анимации – поэтому долго искать место в коде не пришлось. Взяв полугодовой тайм-аут, я в конце июля решил «добить» проблему. И вот, неделю колдуя с кодом и вплотную подойдя к функции подготовки палитры, я опять чуть было всё не бросил. Но помог простой совет от опытного по «железной» части
MisterGrim'а. Благодаря ему я понял, что «кручусь» немного возле не той процедуры и буквально следующая процедура в коде оказалось «верной». Так 03.08.2012 года простое отключение безусловного перехода решило проблему палитры в анимации с запуском из под
DOSBox 0.74 – седьмая, завершающая всю эту сагу и одновременно самая сложная победа. Это место в коде в будущем поможет разработчикам
DOSBox усовершенствовать своё детище так, чтобы более таких нестыковок не происходило и с другими играми.
Я ещё обещал упомянуть о справочном приложении по игре. Дополнительно в ранее планировавшуюся оболочку (а теперь это следует именовать справочник) я интегрировал mp3-музыку, просмотр и сохранение в формате .bmp всех «расшифрованных» карт, просмотр анимированных спрайтов для всех противников в игре, изображения кораблей и другие справочные возможности. Также я интегрировал кнопку запуска рип-версий и установки файлов русификации в разных вариантах справочника. В справочном приложении очень подробно, опять же, не противореча сюжетной канве, рассказано о расах, противниках, Стазисе и Нове и прочем. Также здесь приведены наиболее очевидные характеристики вражеских кораблей и даже приведён численный состав экипажей (я их вручную пересчитывал по картам, снятым скриншотами во время просмотра на капитанских мостиках).
Конечно же, я не занимался починкой и переводом игры непрерывно все эти пять лет. Я просто ничего с собой не мог поделать, и каждый год из раза в раз возвращался к проблеме прохождения этой игры и шаг за шагом добивался положительных результатов. В конце концов в начале августа 2012 года последняя проблема с анимационными роликами в игре для запуска из под
DOSBox 0.74 была устранена, и теперь мы рады сообщить об этом всем пользователям и гостям нашего сайта – затянувшийся проект работ над игрой
Alpha Storm наконец-то закончен, мы победили!
Большое спасибо всем, кто не оставался равнодушным в этой затянувшейся эпопее, помогая и словом и делом, это:
ahsasa, hrust, kreol, Vladimir777, MisterGrim, oFF_rus, Dimouse, Caminante, Gamerun и другие пользователи нашего сайта.