|
|
|
Канал X-Tension/X-BTF: «Плавное изменение скорости» |
|
|
Al1
100 EGP
 Репутация: 10 Сообщения: 177 Откуда: St.-Pb. Зарегистрирован: 24.12.2002
 |
|
Diff : |
Цитата: |
Лучше скажите возможно ли перевести регулятор скорости на скрольное колесо мыша? если это возможно то это просто было бы супер!!!
|
Имхо, прыжки будут те же. Думаю, спасет только покупка джойстика.
|
Ну энто неа - на мышином колесе, при скролинге во всяком случае проставляется на сколько позиций надо изменить, а при нажатии на клаве - сколько раз успела прога считать нажатие клавиши - отсюда и скачки
|
|
|
Strange®
1078 EGP
   Репутация: 225 Сообщения: 3005 Откуда: Киев Зарегистрирован: 26.07.2002
 |
|
Al1 : |
Лучше скажите возможно ли перевести регулятор скорости на скрольное колесо мыша? если это возможно то это просто было бы супер!!!
|
Меня полтора года назад посетила эта мысль. Я таки написал программу, которая вешала хук на соответствующее событие и передавала активному приложению вместо прокрутки соответствующие клавиши. В блокноте все работало на ура! Но как оказалось XT работает с клавиатурой весьма своеобразными методами (и ввод там небуферизованный, так что с буфером клавиатуры - идея тухлая, проверено). В общем, забросил я эту идею...
_________________ Жизнь прекрасна! Главное - правильно подобрать антидепрессанты :) |
|
|
Remint
385 EGP
  Репутация: 84 Сообщения: 1785
Зарегистрирован: 12.05.2003
 |
|
Цитата: |
Но как оказалось XT работает с клавиатурой весьма своеобразными методами (и ввод там небуферизованный, так что с буфером клавиатуры - идея тухлая, проверено). В общем, забросил я эту идею...
|
Своебразность заключается в "тормознутом" движке, в котором
не пропорционально выставлены приорететы рендеринга и
обработки нажатия клавишь. Возможно с потоками намудрили,
тогда не мудрено, что так и не исправили вплоть до 2.1.
Тогда и понятно почему из буфера сразу все выталкивается,
но тормозит (синхронизация блин кривая).
_________________ Да пребудет с вами сила... |
|
|
Strange®
1078 EGP
   Репутация: 225 Сообщения: 3005 Откуда: Киев Зарегистрирован: 26.07.2002
 |
|
Remint : |
Тогда и понятно почему из буфера сразу все выталкивается, но тормозит (синхронизация блин кривая).
|
Ты не совсем правильно понял. Из буфера вообще ничего не выталкивается. ИМХО читается напрямую из портов. Из-за этого медленные машины тормозят (теряют нажатые клавиши), а быстрые очень быстро реагируют (до кода, опрашивающего клавиатуру, управление передается тем чаще, чем быстрее машина). Соответственно, играет роль не количество нажатий на клавишу, а продолжительность удержания клавиши в нажатом состоянии.
_________________ Жизнь прекрасна! Главное - правильно подобрать антидепрессанты :) |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 4(60) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
Хочешь сказать, что они прерывание перехватывают? ИМХО не лучшая практика под виндой....
|
|
|
Рыб
1242 EGP
     Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001
 |
|
У DirectX есть отдельный интерфейс работы с клавиатурой, так вот если сравнивать скорость и тормознутость этого интерфейса с вариантом обработки стандартных виндовых сообщений клавиатуры (с точки зрения использования в играх), то этот интерфейс выигрывает абсолютно, а вот как он внутри организован я не знаю, возможно и напрямую на низком уровне работает.
|
|
|
Grebomet
1466 EGP
      Рейтинг канала: 3(36) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
Не думаю, что дело в интерфейсе ДырЫкса... Скорее обработка событий (или что там в нем используется для получения прикладной программой нажатий кноповок) в игре реализована кривовасто...
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Рыб
1242 EGP
     Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001
 |
|
XT почти наверняка использует именно DX`овый интерфейс работы с клавиатурой, потому как он наиболее удобен и быстр для игр, тут скорее вопрос в том, что в самом XT алгоритм повышения скорости по кнопке как то криво реализован.
|
|
|
Strange®
1078 EGP
   Репутация: 225 Сообщения: 3005 Откуда: Киев Зарегистрирован: 26.07.2002
 |
|
YogSagot : |
Хочешь сказать, что они прерывание перехватывают? ИМХО не лучшая практика под виндой....
|
Но тем не менее поведение игр серии Х (и X2 в том числе) очень похоже на такой метод обработки клавиатуры. Быстрый набор не прокатывает - просто не успевают обрабатываться нажатия на клавиши. Следовательно, имеет место цикл опроса состояния клавиш (нажата-не нажата). И цикл этот на тормознутых компьютерах работает с недостаточной скоростью. В винде при обработке событий такого быть не может, следовательно X-игры не используют виндовый буфер клавиатуры. Вывод напрашивается вполне однозначный (и грустный)
_________________ Жизнь прекрасна! Главное - правильно подобрать антидепрессанты :) |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 4(60) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
Да ХТ с клавой вообще криво работает. Про сам игровой процесс нияего плохого сказать не могу (кроме разве что все того-же изменения скорости). Но вот переименовывая станции и корабли а так-же при навигации по менюшке на станции творится хренатень полная. То нажимаешь клавтшу, а она не нажимается. То наоборот. Нажал раз, выводятся две, порой три. Один раз пять одинаковых символов вывел.
Грустно одним словом...
|
|
|
Paranid Parazite
547 EGP
   Рейтинг канала: 1(3) Репутация: 131 Сообщения: 1676
Зарегистрирован: 04.10.2003
 |
|
2 Diff: У меня есть джой со скроллом, шоп он здох . Я-то правую руку на джое дерзу, левую-на клаве, и по иногда,при нажатии на табулятор сначала скорость растёт, а потом становится такой как на джое. А вот это уже голимо!
_________________ I load lead inside my engine—lead and alcohol © Vacuum |
|
|
Mik
|
|
Цитата: |
Меня полтора года назад посетила эта мысль. Я таки написал программу, которая вешала хук на соответствующее событие и передавала активному приложению вместо прокрутки соответствующие клавиши. В блокноте все работало на ура! Но как оказалось XT работает с клавиатурой весьма своеобразными методами (и ввод там небуферизованный, так что с буфером клавиатуры - идея тухлая, проверено). В общем, забросил я эту идею...
_________________
|
XT использует вызовы IDirectInputDevice::GetDeviceState для клавы (00439D04 call near dword ptr [ecx+24]) и мыши (0043A2B5 call near dword ptr [ecx+24]).
У XT свой буфер клавы на 4 нажатия - 0052FAD0
Windows собщения получает,но не использует.
Для "перевести регулятор скорости на скрольное колесо мыша" нужно в хуке при получении WM_MOUSEWHEEL
вызывать WriteProcessMemory(свой буфер клавы XT).
Для "Плавное изменение скорости" нужно в exe по адресам 07dc28 и 07dc88 заменить 02 на 03..05 (чем больше тем Плавнее).
*Все адреса даны для бездискового exe для версии 2.1а c этого сайта:
ссылка ,
и должны работать на любой XT версии 2.1а
|
|
|
Charon
140 EGP
  Репутация: 23 Сообщения: 430 Откуда: Киев, Харьков Зарегистрирован: 19.04.2004
 |
|
Mik, а в оригинальном неломанном .exe такой фокус сработает ? Или там адреса другие править нужно ?
_________________ Little by little, one travels far.
J. R. R. Tolkien |
|
|
Gor
220 EGP
   Репутация: 45 Сообщения: 680 Откуда: Московский филиал клана [OEG] Зарегистрирован: 23.06.2004
 |
|
У меня атлон хп 1700+. Скоростуха конечно прыгает преизрядно. НО! Есть фича.
Когда атакуешь корабль, в момент стрелбы у мня вроде получалось изменять скорость плавнее.
Типа буффер клавиатуры забивается еще и нажатиями кнопки огонь
_________________ Аргон ксенону не товарищ |
|
|
Рыб
1242 EGP
     Рейтинг канала: 3(36) Репутация: 340 Сообщения: 7461
Зарегистрирован: 05.06.2001
 |
|
Не, это не из-за буфера клавиатуры получается, это от того, что когда идёт прорисовка анимации с рожей пирата, то даже на P4 2.6 замечаются тормоза, что и позволяет более плавно менять скорость.
|
|
|
Mik
|
|
2 Charon: Такой фокус сработает на любом .exe, если совпадают следующие байты:
0047DC20: 8B D6 8B CA F7 EA C1 FA-02 8B C6 C1 F8 1F 2B D0
0047DC30: 03 FA 89 7B 14 3B FE 7E-03 89 73 14 8B 1C 24 8B
и
0047DC80: 8B D6 8B CA F7 EA C1 FA-02 C1 FE 1F 2B D6 2B FA
0047DC90: 89 7B 14 81 FF 30 F8 FF-FF 7D 07 C7 43 14 30 F8
|
|
|
Al1
100 EGP
 Репутация: 10 Сообщения: 177 Откуда: St.-Pb. Зарегистрирован: 24.12.2002
 |
|
Mik : |
XT использует вызовы IDirectInputDevice::GetDeviceState для клавы (00439D04 call near dword ptr [ecx+24]) и мыши (0043A2B5 call near dword ptr [ecx+24]).
У XT свой буфер клавы на 4 нажатия - 0052FAD0
Windows собщения получает,но не использует.
Для "перевести регулятор скорости на скрольное колесо мыша" нужно в хуке при получении WM_MOUSEWHEEL
вызывать WriteProcessMemory(свой буфер клавы XT).
Такой фокус сработает на любом .exe, если совпадают следующие байты:
0047DC20: 8B D6 8B CA F7 EA C1 FA-02 8B C6 C1 F8 1F 2B D0
0047DC30: 03 FA 89 7B 14 3B FE 7E-03 89 73 14 8B 1C 24 8B
и
0047DC80: 8B D6 8B CA F7 EA C1 FA-02 C1 FE 1F 2B D6 2B FA
0047DC90: 89 7B 14 81 FF 30 F8 FF-FF 7D 07 C7 43 14 30 F8
|
Mik можно отсюда поподробнее типа инструхцию чё и как, где менять? плз
|
|
|
Gor
220 EGP
   Репутация: 45 Сообщения: 680 Откуда: Московский филиал клана [OEG] Зарегистрирован: 23.06.2004
 |
|
Цитата: |
2 Diff: У меня есть джой со скроллом, шоп он здох . Я-то правую руку на джое дерзу, левую-на клаве, и по иногда,при нажатии на табулятор сначала скорость растёт, а потом становится такой как на джое. А вот это уже голимо!
|
У меня при использовании геймпада такая же хрень.
При вклучении форсажа скорость нарастает, но потом опять снижается до уровня, который установлен кнопками AZ (при чем и при юзании TAB и при использовании геймпада)
Да еще есть дурь такая, как только дернул регулятор скорости на геймпаде скорость сбрасывается на уровень чуть ниже стыковочного
_________________ Аргон ксенону не товарищ |
|
|
Mik
|
|
Sorry, указал не те адреса, вот правильные:
0007DC20: 8B D6 8B CA F7 EA C1 FA-02 8B C6 C1 F8 1F 2B D0
0007DC30: 03 FA 89 7B 14 3B FE 7E-03 89 73 14 8B 1C 24 8B
и
0007DC80: 8B D6 8B CA F7 EA C1 FA-02 C1 FE 1F 2B D6 2B FA
0007DC90: 89 7B 14 81 FF 30 F8 FF-FF 7D 07 C7 43 14 30 F8
a вообще, если эти байты не совпадают, то можно поискать их в другом месте и там заменить 02 на 03..05 (для других версий XT).
2Al1:
Менять надо в hex редакторе (например Hiew или WinHex.. или старых NC или DN):
1)открываем .exe в hex редакторе
2)переходим по адресу 0007DC20
3)убеждаемся, что байты совпадают
5)если эти байты не совпадают, то выполняем поиск по этим байтам
4)меняем 02 на 03..05 и сохраняем
5)аналогично и для 0007DC80.
|
|
|
Argonaut
260 EGP
   Рейтинг канала: 1(9) Репутация: 43 Сообщения: 185 Откуда: Челябинск Зарегистрирован: 27.04.2004
 |
|
А я тут как-то джойстик юзал (Logitech Joystick Extreme 3D Pro) с ручкой газа. После турбо-разгона если эту ручку хоть чуть потрогать, скорость снижается до уровня, установленном на джойстике. Это конечно сперва напрягало, но потом приспособился: рукоятку на максимум, параллельно - ТАВ.
И вперед!!!
P.S. А джойстик прикольный, кнопок дофига и рукоятка вокруг своей оси вертится - можно забыть про кнопки "Q" и "W".
|
|
|
|
|
|
Канал X-Tension/X-BTF: «Плавное изменение скорости» |
|