1

Тема: NT Sleep

Свершилось то, о чем многие давно мечтали. Все (ну или многие) наверное знакомы с таким классом утилит как "замедлялки игр". Мне попадалось несколько вариантов этих программ, но работают они по одному и тому же принципу - раскочегарить процессор, чтоб последнему не хватало времени на обработку приложения, вследствии чего и достигается мнимое замедление процесса. Мнимое, потому что:

1. игра начинает "идти" рывками
2. процессор греется как при хорошем benchmark-е, что уменьшает срок его службы
3. вентиляторы гудят так, что создается ощущение что компьютер вот-вот взлетит

Но и без этих горе-замедлителей игры грузят современные процессоры так, будто запущена последняя версия навороченного 3D шутера. Такого быть не должно и где то с год назад я стал изучать "проблему". Одним из вариантов решения и явилась программа которую сегодня я предлагаю вам на рассмотрение.

Суть следующая, создается ждущий таймер установленный на 10 микросекунд, и с помощью недокументированных функций Windows XP (NtSuspendProcess и NtResumeProcess) указанная(ое) игра\приложение попеременно то приостанавливается то возобновляется с интервалом в 10 микросекунд, на выполнение кода приложению отводится 1 микросекунда, что равняется 10 кратному снижению скорости и нагрузки на процессор.

Вот фрагмент того, о чем писал выше.

https://imasters.org.ru/images/ntsleep.png

Тестировал Populous, WipeOut, Heroes of Might and Magic 1 и 2, KKND2 и др. варьируя значение микросекунд от 2 до 32. Получил следующие результаты:

- при установке даже 2мс значительно снижается нагрузка на процессор до 10%, игра работает без замедлений
- при повышении таймера, нагрузка снижается до 2-3%, при этом игра начинает замедлятся

При установке значения в 32мс мне удалось заставить работать Героев так, как если бы я играл на первом пентиуме (фактически я эмулировал его скорость), и процессор при этом оставался в полном покое.

Программу выкладываю с исходными текстами. Запускается она из командной строки и работает только начиная с Windows XP (предположительно XP, 2003, Vista), в качестве параметра указывается EXE файл.

NtSleep

2

Re: NT Sleep

Поблем у так называемых "замедлялок" действительно хватает... Сначала у меня стоял CPU killer 2.0, но с ним играть невозможно из-за ужасных тормазов. Сейчас стоит самая последняя весия CPU killer 3 (нашел с очень большим трудом), он, конечно, лучше, но не на много. Попробую NtSleep, если будут проблемы, напишу...

3

Re: NT Sleep

Лучше бы писали, когда нет проблем big_smile, когда все хорошо, комары не кусают ну и прочее. Надо позитивные отзывы собирать.

4

Re: NT Sleep

Отлично! Прекрасно! Супер!

Процессор: Intel Celeron 2500
Мат. плата: Asus P5PE-VM
Приложение: SWEP1RCR.EXE (Star Wars Ep I Racer)

C NTSleep                   ЦП: ~16%
Без NTSleep                ЦП: ~94%
Отношение скорости         1:1

Так держать!!!

Отредактировано AxXxB (16-03-2007 17:14:58)

IDDQD
In God we trust...

5

Re: NT Sleep

Оставил вот тут тему про NT Sleep. Надеюсь, ты не против?..

Народ там просит сделать поддержку ввода из командной строки кол-ва микросекунд паузы.

IDDQD
In God we trust...

6

Re: NT Sleep

Спасибо за NT Sleep!
Проверил с Blade Runner - playin like a charm!)) Наконец-то нормально работает стрельбище.

7

Re: NT Sleep

как я понимаю, с исполняемыми файлами, у которых установлен режим совместимости, ntspleep не работает?
или только мне так "повезло"?

з.ы. конкретно речь идет о первом resident evil

8

Re: NT Sleep

Не знаю, не проверял. Будет интересно узнать.

9

Re: NT Sleep

Надо ставить совместимость не на запускаемое приложение, а на саму NT Sleep.

IDDQD
In God we trust...