Наблюдал малопонятные глюки с графикой при запуске некоторых старых игрушек (Diablo и Master of Orion II — среди прочих) в свежеустановленной Windows 7. Выглядело это примерно так:
Причины глюка — несовместимость разных версий 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 стоит того, чтобы немного поковыряться в реестре.
Думаю, это работает для гораздо большего числа «проблемных» игр.







































