Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Categories:

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 (к примеру, 0×333982cb). Выписываем их на бумажку.

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

4. В этом разделе создаем строковый параметр Name, в него вписываем название exeшника. Создаем двоичный параметр ID и вписываем в него ID из второго пункта, инвертируя порядок байтов (то есть 0×333982cb превращается в 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

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: новости и обзоры софта
Subscribe

  • Two-pizza team

    Интересно, а «тупица-тим» я в этом выражении один вижу? Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои…

  • Я не эстонец, но торможу

    Спустя почти год после вынужденного перехода на удаленку решил проблему сосуществования на одном рабочем столе «рабочего» и…

  • А помните Альтависту?

    Пока писал в ЖЖ коммент — подумалось — вот помните такой древнючий поисковик Altavista? Времен «раннего интернета», когда еще…

Comments for this post were disabled by the author