Устраняем ошибку Unknown error при запуске игры Ночной дозор (Night Watch) на Windows 7, 8, 10 x64 и новых компьютерах/видеокартах
Как известно, игры Дозоров на новых компьютерах запускаться не хотят, выкидывая милое окошко:
Оно никак не связано ни с версией операционной системы (может появляться как на Windows 10, так и на Windows XP), ни со StarForce (т.е. может возникнуть даже если у Вас Windows XP и лицензионный диск). Проблема проявляется при использовании новых видеокарт с большим объёмом видеопамяти. Но уж очень хочется поиграть без виртуальных машин и поисков старого железа.
Для решения проблемы был написан патч, который меняет всего пару байт в исполняемом файле игр.
Скачать версию 1.2: yadi.sk MediaFire
Эти проблемы я пытаюсь решить, но отладка графических проблем dx9 на Win10 затруднена, а Win7 или ниже мне поставить пока некуда (диск маленький). Кто хочет помочь материально, прошу на страницу Donate.
Использованные утилиты:
API Monitor
x32dbg
dUP 2
С помощью API Monitor, отфильтровав вызовы по DirectX, выяснилось, что ошибка возникает после запроса доступной памяти для текстур. Возвращалось значение FFD00000 (4Gb), что, для signed инструкции выглядело как -3145728 байт (-3 Мб). Поменял инструкции на беззнаковые и игра завелась.
Но это ещё не всё. Кроме всего прочего, на старте игра проверяет вендора видеокарты (nVidia или ATI), и если с ATI (AMD) всё ещё до сих пор хорошо (проверял на серии HD7000), то для nVidia ещё проверяется и модель, при чем по PID xor'ом, и определяются только 2 модели - 100 (GeForce2) и 200 (GeForce3), xor всё, что выше 200 отсекает и проверка срабатывает как для 100, поэтому на новых видеокартах nVidia, где PID уже давно перевалили за 1000 применяются все патчи для древней GeForce2, от этого страдает производительность освещения (прорисовка теней) и проявляются глюки с эффектами (игрок обводится чёрной сплошной рамкой вместо прозрачной зелёной по контуру).
И всё бы было хорошо, если бы у nVidia кроме названий видеокарт ещё оставалась и обратная совместимость, но алгоритмы для GeForce3 не совсем корректно работают на новых сериях, и когда я изменил xor так, чтобы проверка опознавала правильно новые видеокарты - игра запустилась на полную, никакого падения производительности, никаких глюков с эффектами, но появились два больших "НО": во-первых, игра начала грузить далеко не офисную видеокарту на 100% (кулер чуть не взмыл в воздух вместе с системным блоком) - что значит, возможно, необходим ограничитель fps, во-вторых - освещение в игре постоянно мерцает. Полного решения для видеокарт nVidia у меня пока-что нет, но я работаю над этим в свободное время.
В качестве бонуса - все доступные ключи запуска игры с пояснениями.
Для решения проблемы был написан патч, который меняет всего пару байт в исполняемом файле игр.
Скачать версию 1.2: yadi.sk MediaFire
Changelog: v1.2 Исправлено поведение патча при отсутствии необходимого EXE + патч для Дневного дозора v1.1 Изменёна логика патча, теперь игра не теряет производительность, по крайней мере на видеокартах AMD v1 Первая публичная версия (только для Ночного дозора)Известные проблемы: на новых видеокартах NVIDIA при высоких настройках качества игрок обводится чёрной сплошной рамкой вместо зелёной прозрачной (решение: снизить настройку качества до среднего или ниже), при высоком разрешении падает производительность из-за освещения (решение: снизить настройку освещение до низкого, в кат-сценах fps всё-равно может падать).
Эти проблемы я пытаюсь решить, но отладка графических проблем dx9 на Win10 затруднена, а Win7 или ниже мне поставить пока некуда (диск маленький). Кто хочет помочь материально, прошу на страницу Donate.
Использованные утилиты:
API Monitor
x32dbg
dUP 2
С помощью API Monitor, отфильтровав вызовы по DirectX, выяснилось, что ошибка возникает после запроса доступной памяти для текстур. Возвращалось значение FFD00000 (4Gb), что, для signed инструкции выглядело как -3145728 байт (-3 Мб). Поменял инструкции на беззнаковые и игра завелась.
Но это ещё не всё. Кроме всего прочего, на старте игра проверяет вендора видеокарты (nVidia или ATI), и если с ATI (AMD) всё ещё до сих пор хорошо (проверял на серии HD7000), то для nVidia ещё проверяется и модель, при чем по PID xor'ом, и определяются только 2 модели - 100 (GeForce2) и 200 (GeForce3), xor всё, что выше 200 отсекает и проверка срабатывает как для 100, поэтому на новых видеокартах nVidia, где PID уже давно перевалили за 1000 применяются все патчи для древней GeForce2, от этого страдает производительность освещения (прорисовка теней) и проявляются глюки с эффектами (игрок обводится чёрной сплошной рамкой вместо прозрачной зелёной по контуру).
И всё бы было хорошо, если бы у nVidia кроме названий видеокарт ещё оставалась и обратная совместимость, но алгоритмы для GeForce3 не совсем корректно работают на новых сериях, и когда я изменил xor так, чтобы проверка опознавала правильно новые видеокарты - игра запустилась на полную, никакого падения производительности, никаких глюков с эффектами, но появились два больших "НО": во-первых, игра начала грузить далеко не офисную видеокарту на 100% (кулер чуть не взмыл в воздух вместе с системным блоком) - что значит, возможно, необходим ограничитель fps, во-вторых - освещение в игре постоянно мерцает. Полного решения для видеокарт nVidia у меня пока-что нет, но я работаю над этим в свободное время.
В качестве бонуса - все доступные ключи запуска игры с пояснениями.
-window - запустить в оконном режиме без рамки (флеш окно) -fullscreen - полноэкранный режим -320 - принудительно запустить в разрешении 320х200 -400 - принудительно запустить в разрешении 400х300 -640 - принудительно запустить в разрешении 640х480 -800 - принудительно запустить в разрешении 800х600 -1024 - принудительно запустить в разрешении 1024х768 -1280 - принудительно запустить в разрешении 1280х1024 -1600 - принудительно запустить в разрешении 1600х1400 -nops - отключить шейдеры -novs - отключить вершинные шейдеры -gfxvalidate - не работает с патчем, предположительно - проверка способностей видеокарты -aniso - включить анизотропную фильтрацию (при уже включенной сбрасывает настройку в х2) -bannp2 - неизвестно, предположительно фикс -dxtoff - отключить сжатие текстур -safemode - "безопасный режим", меняет разрешение на 800х600, отключает партиклы, анизотропную фильтрацию, сбрасывает грамму -nosound - отключить звук -noai - отключить ИИ -load - предположительно указать файл профиля -cfg - предположительно указать файл конфигурации -gamedir - предположительно указать каталог игры (с файлом nwatch.db) Опции, связанные с переводом (включить оригинал/перевод, для интерфеса/титров/звука) -translate -tr_original -ntr_original -od_original -warn_translation -warn_original -snd_original -snd_nothing
Спс путник ))
ОтветитьУдалитьСпасибо за труд.
ОтветитьУдалить