Показать сообщение отдельно
Старый 10.02.2008, 21:33     # 11
bertran
Full Member
 
Регистрация: 28.07.2004
Адрес: Imhowsk!
Пол: Male
Сообщения: 654

bertran СуперБогbertran СуперБогbertran СуперБог
bertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБогbertran СуперБог
Цитата:
Сообщение от turbodiesel Посмотреть сообщение
Увеличение обьёма оперативной памяти более 3-Гб под 32-разрядной WinXP смысла не имеет
Имеет. Систему можно научить выделять приложению 3 Гб (по умолчанию 2 Гб на процесс), вот способ, взят с хобота ("FAQ = S.T.A.L.K.E.R.: Shadow of Chernobyl (Stalker | Сталкер) - настройки, производительность, технические проблемы и их решение")
как заставить программу использовать в 32-битной версии XP до 3Гб ОЗУ, если она изначально этого не поддерживала
Цитата:
Andy77
Решение проблемы с вылетами Сталкера на Vista x86 и x64 НА МАКСИМАЛЬНЫХ НАСТРОЙКАХ.

Итак имеется Игра, GeForce 8800, Windows Vista Business 64 bit, 2 GB оперативной памяти, 3 GB своп. Настройки - все ползунки на максимум, кроме антиалиасинга, потому что не работает.
Запуск игры, работа в течение 5-10 минут потом спонтанный вылет на рабочий стол из игры, при нажатии Esc или при попытке записи. Знакомые многим симптомы.
Причина вылетов банальна - в логах игры out of memory, что означает недостаточно памяти. Напомню, у меня общий объем доступной Windows памяти целых 5 GB (2 GB + 3 GB). Приложение завершается аварийно, как только объем используемой операционной системой памяти становится равным ровно 2 GB. Попытка приложения запросить чуть больше - здравствуй рабочий стол.
Не знаю, какой патч там пишут разработчики, наверное пытаются уменьшить объем используемой приложением памяти, скорее всего поможет не всем, потому что проблема ОБЩЕГО ОБЪЕМА 2 GB все равно останется. XR_3DA.exe (запускаемый файл Сталкера) 32 битное и собрано оно без флага линковщика /LARGEADDRESSAWARE. Этот волшебный флаг (хинт разработчикам, если они читают этот пост) позволяет 32 битным приложениям адресовать не 2 GB, а 4 GB на 64 разрядной версии Windows и 3 GB на 32 разрядной версии Windows (если 32 битная операционная система запущена с ключом /3GB).
Короче разработчики о флаге /LARGEADDRESSAWARE не догадываются и мы имеем ограничение на объем памяти 2 GB. Можно пересобрать приложение с этим флагом, а можно в текущем exe установить этот флаг с помощью утилиты editbin.exe, которая входит в состав Microsoft Visual Studio 2005.

Итак решение проблемы вылетов:
1) патчим XR_3DA.exe файл, чтобы он мог адресовать больше чем 2 GB:
editbin.exe /LARGEADDRESSAWARE XR_3DA.exe
2) Для 32 битных Windows XP в boot.ini прописать ключ загрузки /3GB в boot.ini
Для 32 бит Vista, выполнить команду с правами администратора:
BCDEDIT /Set IncreaseUserVa 3072
и перезагрузиться.

После этого 32-битному приложению с установленным флагом LARGEADDRESSAWARE будет доступно 3 GB.
Подробнее про IncreaseUserVa описано здесь:
http://blogs.technet.com/brad_rutkow...sta_3F00_.aspx

3) на 64 битных Windows ключ /3GB не нужен
4) файл подкачки ставим таким чтобы в целом памяти в системе было гигабайта 3 или больше (RAM + файл подкачки >= 3 GB)
5) Запускаем и играем без вылетов.

P.S. Патч игры вполне законный, т.к. сама Microsoft рекомендует при компиляции 32 битных приложений интенсивно использующих память использовать этот флаг.
P.P.S. Использование бета драйвера (совет из оф FAQ) проблему вылетов не решает (в моем случае точно).
P.P.P.S. Флаг применим к SecuROM (защита Tages на европейской Gothic 3) или noDVD версии. На StarForce версии (локализация Gothic 3 от GFI/РуссоБит-М) проверяется контрольная сумма и после добавления флага игра не запустится.

Вот ссылки по теме:
http://www.microsoft.com/whdc/system...AE/PAEmem.mspx
http://msdn2.microsoft.com/en-us/library/bb147385.aspx

P.S. скачать утилиту editbin.exe (23.8 МБ) можно с 1й станицы этой темы.

P.P.S. правильно должно быть для игры "Сталкер"
"editbin.exe /LARGEADDRESSAWARE XR_3DA.exe"
а для игры "Gothic 3"
"editbin.exe /LARGEADDRESSAWARE Gothic3.exe"

Удачной охоты.

Дополнение к пункту 2: в boot.ini кроме ключа /3GB можно добавить ключ /USERVA=2990 (если не будет работать, уменьшить значение до 2900 или 2800).
Причем, что интересно, если в системе именно 3 Гб, а не 4, то при использовании вышеописанного способа идут некоторые проблемы.
Зы. Сорри за обильную цитату, но сейчас некоторые игры изначально заявляют требование в 3 Гб ОЗУ, н/р Assassin’s Creed от Ubisoft
__________________
Я знаю - город будет, я знаю - саду цвесть!
bertran вне форума