Представитель Шуры Люберецкого в ЖЖ (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

  • И почему я не удивлен?

    По-моему, если человек ездит по городу на велосипеде – то инстинкт самосохранения у него отсутствует напрочь. Запись опубликована в…

  • Невыполнимые правила

    Ознакомился с забавной темкой на хабре – мужик возмущается, что при “переводе денег” на его карту в чеке распечатываются данные…

  • Про “братьев Навального”

    Знаете, а я верю в то, что задержанные на квартире в Москве “братья Навального” к его штабу отношения не имеют. Только дурак мог…

Comments for this post were disabled by the author