как быть с играми для которых таких драйверов нет (как Ground zero Taxes). Как эти драйвера вообще делать?
поковырялся чутка, оказалоcь всё просто как солёный огурец (и в тоже самое время - сложно и порой невозможно):
качаем gens32, и в архиве в папке
Tools\Mouse Drivers\General Chaos лежит прога
Mouse DriverBuilder, которую и будем использовать
принцип действия такой - эмулятор берёт координаты мыши, и чутка их преобразовав - записывает в оперативную память по определённым адресам.
значит, для начала надо взять игру, найти адреса в памяти X и Y координат курсора. Так что юзаем артмани например, будет очень ок (писать буду с учётом что как юзать артмани вы уже знаете).
для примера я взял
Dynamite Duke (W) [!]заходим в игру, запускаем артмани, ищем неизвестное Integer2bytes значение, предварительно выбрав нужный эмулятор. Переходим обратно в игру, сдвигаем мишень правее. Переходим в артмани, ищем увеличившееся значение. Переходим в игру, сдвигаем курсор влево, опять ищем в артмани уменьшившееся значение. И так далее, пока не останется не очень много результатов.
Добавляем их всех в таблицу результатов, по очереди замораживаем и смотрим как это влияет на игру - если в игре не смотря ни на что герой стреляет всегда в одну точку по горизонтали, как его ни двигай - вот оно! Смотрим какой адрес в эмуляторе (именно emul address, а не PC adress, это важно!!), и записываем это число. В этой игре например - FFC08E.
Ну или можно не замораживать а изменять значение в артмани - как хотите так и ищите, все средства хороши.
Ещё в этой игре есть нюанс что можно найти либо координату мишени, либо координату куда будет стрелять герой. Оно там раздельно хранится
. Немного плоховато, но для теста сойдёт. Ищем именно координату стрельбы, на мишень забьём.
Проводим аналогичную процедуру двигая мишень по вертикали. Не забываем что здесь двигая мишень вниз - координата увеличивается. А двигая мишень вверх - координата уменьшается. Вот так вот. Привыкайте, в комп. графике есть такая шняга, и так будет пожалуй во всех играх. В итоге получаем ещё один адрес. Тут он будет FFC090. Заметно что адреса отличаются всего чуть-чуть. Это вполне ок, но так быть не обязательно.
Ещё нам надо определить минимальные и максимальные допустимые значения. Для этого мишень перемещаем сначала в самое влево, смотрим значение в артмани для координаты X. Там что-то около 130 . Потом сдвигаем мишень в крайне правое положение. Опять смотрим, видим 376. Круто, теперь для вертикали. Значение вверху экрана, и потом значение внизу экрана. 124 и соответственно 292.
Вот. заходим в какой-нибудь текстовый редактор. Пишем там следующие строки:
#SetPin 49294 49296
#SetArea 130 376 124 292
#DefineButton 1 2 3
49294 мы получили из FFC08E (сначала отбросив FF (вышло C08E), и затем переведя C08E в десятеричную систему счисления).
49296 получено из FFC090 аналогичным способом
с #SetArea думаю ясно, просто посомтрите какие куда цифры откуда
#DefineButton 1 2 3 - тут система такая:
#DefineButton LeftButton RightButton MidleButton
The key index in #DefineButton:
A: 1
B: 2
C: 3
X: 4
Y: 5
Z: 6
Start: 7
Mode: 8
значит у нас левая кнопка мыши будет A, правая - B, средняя - C. Кому предложенный вариант не нравится - меняйте на здоровье
сохраняем полученный документ в той-же папке где лежит распакованный
Mouse DriverBuilderзапускаем
Mouse DriverBuilderпишем build
жмём ENTER
пишем имя того текстового файла с которым мучались выше
жмём ENTER
пишем "Dynamite Duke (W) [!].gmd" (должно название быть как у рома, есличо смотрите сами)
ENTER
пишем y
опять enter
вроде всё. копируем Dynamite Duke (W) [!].gmd в папку с gens32, запускаем, радуемся
минусы значится такие - если в памяти нету конкретных значений для курсора/мишени/предмета/игрока - никакой mousedriverbuilder вам не поможет. печально. а также ничего не выйдет если координаты рассчитываются каким-то хитрым способом постоянно слагаясь или умножаясь с чем-то ещё. крч метод научного тыка вам в помощь!
в приложении - текстовый документ с этим "скриптом", и готовый драйвер для gens32.
единственный минус - мишень мышкой не двигается, но точка куда стреляет персонаж - мышкой таки сдвигается.