[ПРОБЛЕМА] Heroes3 на двухядерном процессоре - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Общий - Герои Меча и Магии 3 - Heroes OF Might And Magic 3 Информация об игре и ее обсуждения.

Ответ
Страница 1 из 2
 
Опции темы
#1
Старый 02.09.2007, 11:31
  #1
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
[ПРОБЛЕМА] Heroes3 на двухядерном процессоре

Играю в HOMM 3 Arm. Blade, процессор пыхтит на 100%, вентилятор на ноутбуке работает постоянно, если работать от аккумулятора - хватает минут на 40 :-(

Есть какие-нибудь патчи для Героев, чтобы исправить данную ситуацию, или надо самим писать?
ezhfan вне форума
Ответить с цитированием
#2
Старый 02.09.2007, 11:53
  #2
^
Inquisitor
 
Аватар для Inquisitor
📖
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Вопросы: Какая система ноутбука?
__________________
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Inquisitor вне форума
Ответить с цитированием
#3
Старый 03.09.2007, 07:57
  #3
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

IBM (Lenovo), процессор Celeron-M, где-то 1500 MHz
ezhfan вне форума
Ответить с цитированием
#4
Старый 03.09.2007, 13:11
  #4
^
Монца
📖
Регистрация: 16.05.2007
Адрес: Краснодар
Сообщения: 255
Отправить сообщение для  Монца с помощью ICQ
Регистрация: 16.05.2007
Адрес: Краснодар
Сообщения: 255
Отправить сообщение для  Монца с помощью ICQ
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

не в героях дело. Может на шерстяном одеяле играешь? или еще чем вентиляторы закрыл? Возможно просто перегрев
Монца вне форума
Ответить с цитированием
#5
Старый 04.09.2007, 22:19
  #5
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Монца;110538не в героях дело. Может на шерстяном одеяле играешь? или еще чем вентиляторы закрыл? Возможно просто перегрев

В-основном меня волнует 100%-я загрузка процессора, всё остальное - следствие того, что процессор загружен на 100%.
Причём данная загрузка проявляется не только на ноутбуке, но и на стационарных компьютерах.
ezhfan вне форума
Ответить с цитированием
#6
Старый 04.09.2007, 22:20
  #6
^
Inquisitor
 
Аватар для Inquisitor
📖
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Т.е. игра установленная с этого диска загружает процессоры на 100% ?
__________________
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Inquisitor вне форума
Ответить с цитированием
#7
Старый 05.09.2007, 01:04
  #7
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Inquisitor;110796Т.е. игра установленная с этого диска загружает процессоры на 100% ?
Один процессор (одно ядро) загружает на 100%. Только диск, куплен очень давно. Может, я отстал от жизни, и есть какие-то патчи... :-)
ezhfan вне форума
Ответить с цитированием
#8
Старый 05.09.2007, 08:13
  #8
^
Inquisitor
 
Аватар для Inquisitor
📖
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
Регистрация: 30.07.2006
Адрес: Москва, Россия
Сообщения: 872
Отправить сообщение для  Inquisitor с помощью ICQ
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Такой случай произошел первый раз со времен p166 Никаких патчей такого рода нет и быть не может. Один совет. Попробуйте купить новый диск героев III "Клинок Армагеддона"
__________________
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Alliance of Lightлидер клана (список кланов на HW)



ФЛУДОВСКИЕ ССЫЛКИ! — сообщить о бесполезной теме/сообщении.
Inquisitor вне форума
Ответить с цитированием
#9
Старый 09.09.2007, 15:35
  #9
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Ещё особенность моей версии - для артефактов не 5, а 4 слота. Вернее, их 5, но один невидимый. Скажем, 4 занято, берём какую-нибудь сферу запрезения, и всё, она в 5-м, снять нельзя :-)

Кстати, проблему с загрузкой решил, правда через одно место. Если на каждые 5-10 вызовов функции IsIconic вызывать один раз sleep(1), то загрузка профессора падает до 1-3%. В-общем, изврат, буду искать нормальную версию...
ezhfan вне форума
Ответить с цитированием
#10
Старый 09.09.2007, 20:09
  #10
^
ewgeniy
 
Аватар для ewgeniy
📖
Регистрация: 18.05.2007
Адрес: Арканар
Сообщения: 1146
Отправить сообщение для  ewgeniy с помощью ICQ
Регистрация: 18.05.2007
Адрес: Арканар
Сообщения: 1146
Отправить сообщение для  ewgeniy с помощью ICQ
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Попробуй поставить эверест профешнл и глянь, че у тя и как. 100% это нереально, у меня на РII 350 герои летали, и винамп, и все что хочешь..
Попробуй диск купить это недорого, я видел АБ от 80 до 100р в питере...
Для лиценз диска это ерунда...
И никаких глюков небудет, и лучше бери SoD, на него все что хочешь можно поставить, и от диска отучить, и все такое...
__________________
В. Уэйтс©

Но поскольку я нищий,

у меня лишь есть мечты.

Я разостлал свои мечты пред вашими ногами.

Ступайте бережно, ибо вы ступаете по моим мечтам.
временно ушел с форума, переодически заглядываю. кому нужен пишите в скайп ewgeniy1985. в аське 384385000 очень редко.
В. Уэйтс©

Но поскольку я нищий,

у меня лишь есть мечты.

Я разостлал свои мечты пред вашими ногами.

Ступайте бережно, ибо вы ступаете по моим мечтам.
временно ушел с форума, переодически заглядываю. кому нужен пишите в скайп ewgeniy1985. в аське 384385000 очень редко.
ewgeniy вне форума
Ответить с цитированием
#11
Старый 10.09.2007, 00:51
  #11
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

ewgeniy;111450Попробуй поставить эверест профешнл и глянь, че у тя и как. 100% это нереально, у меня на РII 350 герои летали, и винамп, и все что хочешь..
Попробуй диск купить это недорого, я видел АБ от 80 до 100р в питере...
Для лиценз диска это ерунда...
И никаких глюков небудет, и лучше бери SoD, на него все что хочешь можно поставить, и от диска отучить, и все такое...

Вполне реально 100% - там бесконечный цикл крутится без wait'ов. Поскольку отсутствует пятый слот под артефакты, есть подозрение, что герои какие-то не совсем лицензионные. В-общем, заеду завтра на рынок Савёловский, куплю "Буковскую" версию, как что - отпишусь.
ezhfan вне форума
Ответить с цитированием
#12
Старый 11.09.2007, 01:09
  #12
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Приключения продолжаются. Поставил Героев из "платиновой" серии - вылетают часто. Я уже понял, что мне везёт как-то по-особенному, но я буду бороться до конца :-)
ezhfan вне форума
Ответить с цитированием
#13
Старый 12.09.2007, 03:02
  #13
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

Итак, решил все проблемы :-) Расскажу по порядку:

1) Установил Клинок Армагеддона, сверху установил (в ту же папку) Дыхание смерти. Обновил Дыхание смерти. Случайные карты генерятся.

2) Отключил второе ядро процессора. (В диспетчере устройств заменил драйвер ACPI Multiprocessor PC на ACPI Uniprocessor PC). Как результат - герои не вылетают (не виснут).

3) Написал DLL-ку для героев, которая на каждые 10 вызовов функции IsIconic делает один вызов sleep(1). Результат - загрузка процессора 1-3%.

В-общем, спасибо всем за помощь :-)
ezhfan вне форума
Ответить с цитированием
#14
Старый 06.11.2007, 23:07
  #14
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

По просьбам трудящихся опишу процесс поподробнее.
Оговорюсь сразу, что полученный продукт имеет полное право завесить винду, и, кто не закрыл документ MS Office или кто прописал гадость сию в автозагрузку - я не виноват :-)
Безобразие я переписал, т.к. в оригинальном варианте сие предназначалось для конкретной версии 3-х Героев. Много кода надёргал с wasm.ru, в особенности из http://wasm.ru/article.php?article=apihook_1

Как оно работает? Всё просто. приложение prog.exe дёргает функцию set_hook из библиотеки syshook.dll. Это могло быть любое приложение, имеющее очередь обратотки сообщений windows.
Далее, функция set_hook, находящаяся в dll-ке (требование MSDN для системных хуков), ставит хук на WH_CBT. Это мог быть любой другой системный хук. События по данному хуку обрабатываются функцией-заглушкой SysMsgProc. Почему так? А потому что нам нужен не хук - нам нужно подгрузится в адресное пространство всех приложений с окнами, особенно Героев :-)
Можно было прописать эту dll-ку в реестр, чтобы она автоматически ко всем приложениям подсасывалась, однако, я не идеален и, думаю, понаделал кучу ошибок. В-общем, чтобы система не падала, лучше так не делать.

DLL-ка при подгрузке ищет в папке, откуда был запущен процесс, файл syshook.ini. В первой строчке этого файла должно быть регулярное выражение, соответствующее имени запускаемого файла, во второй строчке - через сколько раз вызывать sleep(1) при вызовах IsIconic.

Про механизм внедрения рассказывать тут не буду - читайте статью, там всё понятно.

Если кто скажет, что главная процедура DLL-ки должна была бы и выгрузку корректно обработать, то замечу, что мне хотелось, чтобы программа компилировалась у всех под Delphi 6, а там ошибка в system.pas, которая не позволяет корректно обрабатывать события загрузки/выгрузки. Стек сломали-с.

Итак, как оно работает. В папке с Героями должен лежать syshook.ini (в архиве прилагается пример). Запускаем программу (prog.exe), ждём 3 секунды, она должна что-то написать, затем запускаем героев. Программу не закрываем :-).

P.S.: можно было бы сделать более лёгкое и менее кривое решение - исправить exe-шник Героев, но это уже процесс творческий и индивидуальный для каждой конкретной версии Героев.

P.P.S.: в архиве помимо бинарников приложены исходники, дабы желающие могли компилировать вволю. В Delphi открывать dpr-файлы, я компилировал в Delphi 6, можно открыть и скомпилить в Delphi 7.
Dll-ка и exe-шник компилятся отдельно.

Извините за сумбурное описание и хреновый стиль программирования - мало спал %<
Вложения
Тип файла: zip heroes_cpu.zip (461.5 Кбайт, 143 просмотров)
ezhfan вне форума
Ответить с цитированием
#15
Старый 07.11.2007, 01:55
  #15
^
ezhfan
📖
Регистрация: 02.09.2007
Сообщения: 14
Регистрация: 02.09.2007
Сообщения: 14
По умолчанию
Re: [ВОПРОС] 100% Загрузка процессора в героях.

И добавлю пару слов насчёт ошибок в программе:
1) Переменная Hook в функции CallNextHookEx скорее всего некорректна (неопределена). Не думаю, что это критическая ошибка.
2) Новая функция, замещающая IsIconic, нереентерабельна, т.е. если в два потока начать её дёргать - будет плохо (но Герои III так не сделают). Для других программ нужно что-то придумать с синхронизацией (используя, например, InterlockedExchange).
3) Используемый метод инжекта также неидеален - для Героев можно было бы сделать запускалку (и не надо было бы извращаться с DLL-ками и хуками). Но тогда программа будет неуниверсальной и её нельзя будет доработать, чтобы, скажем, она запускала Starcraft (т.к. тот запускается лоадером).
4) Отсутствие комментариев говорит само за себя. Впрочем, если кто что спросит - я отвечу (если не исчезну с форума).
5) Скорость работы можно было бы увеличить, если вместо ReadProcessMemory и WriteProcessMemory использовать чтение и запись памяти "напрямую", предварительно открыв доступ с помощью VirtualProtect.
6) Открытие процесса с правами PROCESS_ALL_ACCESS - тоже косяк, оно не всегда работать будет, если пользователь в правах ограничен.
7) Даже боюсь себе представить, как оно будет работать под Windows Vista Впрочем, наверное, это проблемы Microsoft и того перца, который сидит на Vista.
ezhfan вне форума
Ответить с цитированием
Ответ
Страница 1 из 2


Опции темы



Часовой пояс GMT +4, время: 16:15.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru