Windows 7 и старые игры

Наблюдал малопонятные глюки с графикой при запуске некоторых старых игрушек (Diablo и Master of Orion II — среди прочих) в свежеустановленной Windows 7. Выглядело это примерно так:

moogluk

Причины глюка — несовместимость разных версий DirectDraw. Если первые версии «не обращали внимания» на не самое правильное с точки зрения документации использование некоторых функций, то современные реализации тех же функций требуют более строгого подхода. Соответственно, начинают вылезать разнообразные «косяки». Например, многие старые игры автоматически считают, что они — единственные запущенные DirectDraw-приложения и некорректно инициализируются. Учитывая, что графическая оболочка Windows 7 активно работает с DirectX, можно ожидать всевозможных глюков.

На импортных форумах в качестве решения предлагалось отключение explorer.exe и последующий запуск игры. На самом деле можно поступить проще. Итак, пошаговое решение проблем с графикой в старых играх для Windows:

1. Запускаем игру с правами администратора. Наблюдаем странные эффекты с палитрой, материмся и выходим.

2. Открываем regedit и смотрим ветку HKLM/Software/Microsoft/DirectDraw/MostRecentApplication. Наблюдаем там два параметра — строковый Name с названием exe-файла игры (например, Orion95.exe) и ID типа dword (к примеру, 0x333982cb). Выписываем их на бумажку.

3. Самые глазастые уже разглядели раздел HKLM/Software/Microsoft/DirectDraw/Compatibility, а то и открыли его, обнаружив там пока небольшой список «настроенного» софта (включая Diablo и Starcraft). Создаем в нем вложенный раздел и называем его так, чтобы не перепутать ни с чем другим. Например, MasterOfOrionII131 — название игры и версия исполняемого файла.

4. В этом разделе создаем строковый параметр Name, в него вписываем название exeшника. Создаем двоичный параметр ID и вписываем в него ID из второго пункта, инвертируя порядок байтов (то есть 0x333982cb превращается в CB 82 39 33). Дальше начинается самое интересное.

5. Создаем двоичный параметр Flags и начинаем экспериментировать с его значениями. К сожалению, мне не удалось найти описания этого параметра, поэтому приходится подбирать его методом тыка. Типичные значения флагов — это 01 00 00 00, 00 08 00 00, 20 00 00 00, 04 00 00 00, 40 00 00 00, 02 00 00 00. Для Diablo и Starcraft во всех вариантах (так как Hellfire и Brood War оказались незаслуженно забыты в этом списке) подошло 00 08 00 00, то же самое сочетание «вылечило» и Master of Orion II. После каждого изменения параметра запускаем игру и смотрим, прошли ли глюки. Во всяком случае, графика Master of Orion стоит того, чтобы немного поковыряться в реестре.

moo2

Думаю, это работает для гораздо большего числа «проблемных» игр.

Windows 7 и старые игры: 59 комментариев

  1. Здравствуйте, вот у меня тоже такая проблема возникла. Всё понятно, кроме одного: а если стороковый параметр имеет вид с буквой посредине, например — 0x3468e402 (для фаллаута) то как его двоично записать?

    1. 0x — указание на то, что в строке записано шестнадцатеричное число — отбрасываем, остальное разбиваем на байты (группы по две шестнадцатеричных цифры) — 34 68 E4 02 и записываем полученные байты в обратном порядке — 02 E4 68 34.

  2. У меня вот такая проблема, надеюсь с вашей помощью решить её.
    При просмотре ветки реестра HKLM/Software/Microsoft/DirectDraw/MostRecentApplication в поле Name значится dxdiag.exe и не меняется, сколько бы раз я не запускал игру (конкретно, мучаюсь с Nox). Что посоветуете?

  3. Спасибо!!!
    Запустил MOO2, Только вот ID в моей системе почему-то был в ветке
    HKEY_USERS\…\Software\Classes\VirtualStore\MACHINE\SOFTWARE\DirectDraw\MostRecentApplication

  4. Спасибо огромнейщее!!! С игрой Age of Empire ll The Conquerors теперь все в порядке. Подошло 00 08 00 00 :)

  5. Не помогло со StarCraft Brood War, у меня Windows 7 x64.
    Один раз компьютер даже повис, пришлось перегружать :(

  6. Большое спасибо автору!!! Помогло Diablo — HEllFIRE запускается без проблем!!! Подошло 00 08 00 00

  7. Пробовал запустить таким образом Panzer General 2 и ничего не получилось.
    Есть ли у кого-нибудь положительный опыт для этой игры на Win 7 64 bit?

  8. А у меня не запускается «один игрок», требует вставить диск ((( помогите разобраться, ребенок очень ждет игрушку )))

  9. Не получается, сделал все как сказали, не меняется ничего. У меня MoO2:( Если кто живой остался, помогите:)

  10. Для Silver помогло 00 08 00 00 . Цвета поправились. Осталось решить проблему полосок в игре. Хотя есть прикол, что они у меня иногда были и во времена 98ой.

  11. Создаю параметр ID, но система не дает редактировать его. Как-будто в режиме для чтения открыт. В чем может быть дело?

  12. СПС огромное!!! а то бук приобрел, а на нем 7 винда, фоллаут моСк полоскал с цветом. Теперь все норм!

  13. «.. отключение explorer.exe и последующий запуск игры. На самом деле можно поступить проще..»
    Да уж, проще так проще.

  14. вообще нет такой вкладки в реестре HKLM/Software/Microsoft/DirectDraw/MostRecentApplication, подскажите чё делать???

  15. Помогло на таких играх как Age of Empires II, Worms Armageddon и Star Wars Galactic Battlegrounds. Только нужно дополнить, что в Win7 x64 путь в реестре выглядит немного иначе. Т.е. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication и соответственно HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility. Кстати на все три игры подошёл параметр 00 08 00 00. Всем удачи.

  16. 2. Открываем regedit и смотрим ветку HKLM/Software/Microsoft/DirectDraw/MostRecentApplication. Наблюдаем там два параметра – строковый Name с названием exe-файла игры (например, Orion95.exe) и ID типа dword (к примеру, 0×333982cb). Выписываем их на бумажку.

    на Вин7 64бит нет такой ветки!((( есть только HKEY 5 путей

  17. Спасибо))) Морские Титаны поперли на 00 08 00 00. Долго мучался, пока коммент про ветку HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplicatio для Win7x64 не нашел!!!

  18. Спасибо огромное! установила парню диабло хеллфайр)) пусть развлекается пока я в командировке)))

  19. спасибо! тоже глючили игры Эра Империй, Орион 2(орион95.ехе) Казаки:Евровойны и Довод королей. и как идиот ехплолер через бат-файл отключал.
    Но теперь, всё настраивается и нормально «пашет». ещё раз спасибо.

    1. …это есть утилитка DirectDraw Compatibility Tool v1.01 специально для старых игр. Программка «обрабатывает» ехе файл игры, и создаёт reg-файл совместимости с 7-ой

  20. Спасибо! Очень благодарен за ценную информацию. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication и соответственно HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility. У меня 7 виндовс и в нем как раз такая ветвь. Спасибо за разносторонний подход к проблеме.)

  21. ребят, кто эпоху империй настраивал скажите плиз как раздел, который мы создаём, назвать надо :( я понял что имя экзешника надо и версию файла, вот версию исполняемого файла найти не могу. (нашёл версию экзешника но там цифры 0.7.22.627, не пойму как это запихивать в название раздела)

  22. Помогите пожалуйста, учел все выше сказанное и РА 2 запустился, однако 2 минуты и тормозит, далее висняк. Приходиться вытаскивать с Диспетчера задач силком. Иначе никак. В чем проблема такого висняка!

  23. Все сделал по инструкции. Запускаю хелфаир а толку 0((( поглядел в ноде. Там вообще пусто. Сделал там собстенную запись — тоже толку мало. Такой вопрос мб дьябла как то использует реги из папки с игрой и их тоже нужно изменить. Ну или тогда я совсем ничего не пойму. Вин7 х32. И да кстати на другом пк проблема решалась вооьще за 2сек. В папке дьяблы был файлик с выбором видеодрайвера. Так я там просто тыкал первичный видеодрайвер запускал и цвета приходили в порядок. Но тут нет такого(( хелп

  24. прошу помощи во флаге для казаков. все описанные в описании автора не помогло. пытаюсь подобрать, но сколько здесь вариантов?

  25. Помогите пожалуйста , как записать этот «обратный порядок байтов » ?
    0x392b2d50 (959130960) заранее спасибо =D

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *