Думаю сделать джойстик с двойным РУДом. Вот поэтому и хотелось бы переименовать оси в прошивке. Возможно ли это сделать в HEX файле?
С уважением, seysen
Вид для печати
Думаю сделать джойстик с двойным РУДом. Вот поэтому и хотелось бы переименовать оси в прошивке. Возможно ли это сделать в HEX файле?
С уважением, seysen
В принципе это возможно,только не совсем понятно зачем
Для красоты :)
Просто чтобы все было честь по чести. Чтобы было 2 Throttle - Throttle1 и Throttle2, а не Throttle и Rudder, например
Учти что 3 оси у МДЖоя имеют функцию автоцентрирования в момент включения. А вообще это баловство, через пару недель тебе будет глубоко паралельно как называются нетолько оси в прошивке контроллера но и как сам контроллер называется в Виндовсе. Главное что все настроено и работает :)
Несогласен!
Throttle1 и Throttle2 это ВАЖНО!!!
Кода играешь в построение джойстика!!!
Когда играешь в игру, это уже неважно.
Жаль... :(
Подскажите как это исправить, подключаю контроллер а он опазнается в игровых устройствах как "-" ,раньше было все нормально опазновался как MJ16 .
вычистить данные о джое из веток реестра
[-HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_XXXX&PID_XXXX]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_XXXX&PID_XXXX]
VID_XXXX&PID_XXXX - взять в диспетчере устройств ( для MJ16 VID_0000&PID_0002 )
После подключения по-новой название должно восстановится.
Можно воспользоваться утилиткой - можно переименовывать любые девайсы как понравится, удалить калибровочные данные.
Внимание! - некоторые антивирусы определяют наличие трояна ( см. отчёт c VIRUSTOTAL.COM )
Нашел прогу avrdasm
Вроде расковырял. Вот только досада, разобрать ни чего не могу :lol:
Кто видел асемблер в лицо? Клиент похож? :D
Скрытый текст:
Теперь осталось выяснить как определить нужные данные :D
Строка состоит из 4 колонок
Для примера
Лезем в поиск и находим ЭТОКод:00000C6C: EF24 ldi r18,#244
00000C6E: 1702 cp r16,r18
00000C70: 0713 cpc r17,r19
00000C72: F060 brlo 00000C8C
.......
00000B1A: 937000CE sts $CE,r23
И долго втыкаем над описанием функций :rtfm:
Все что понял
1 - думаю это номер строки в 16-чной системе
2 - не понял до конца что это... кажется адреса памяти (данных если дословно переводить)
3 - функция
4 - аргументы функции (регистры, строки)
В последней строке примера во второй колонке не похоже что адрес памяти. Больше похоже на 16-тиричное значение...
Как перевести 16-тиричное значение в текст?
Я понимаю что это тупой подход, но других идей у меня нет...
Предлагаю начать от печки, т.е. с изучения ассемблера. А там глядишь и с дизассемблированем полегче будет :)
Исходный код для Mjoy8 в сети имеется - в качестве пособия для начинающих :)
Было бы время... Студенческие времена уже кончились. Да и программирование я уже достаточно сильно подзабыл, чтобы сразу ассемблер изучать.
Вобщем буду пока делать с обычной прошивкой. Потом может перепрошью.
Кстати, исходник для mjoy8 немого отличается от дизассемблированного файла прошивки.
а оно вам надо - дизассемблировать, ассемблировать?
http://www.obdev.at/products/vusb/prjhid.html - там есть куча проектов (на C), которые доработать напильником, и будет пристойная прошивка для mjoy16. правда вот, всякие тумблеры и енкодеры, если нужно, придётся самостоятельно реализовывать.
но есть один момент - я сам не пробовал, а получится ли иметь 2 оси типа throttle на одном устройстве?
А в чем может быть проблема в реализации двух осей тротла? Ось, она и в африке ось
тумблеры ещё ладно, вот энкодеры( да чтоб ещё можно было ставить любого качества), да на 4-х пакетном низкоскоростном хиде, да чтоб лучше чем у Миндаускаса - задачка действительная нетривиальная.
Ежели обьявить стандартно
Usage(Throttle),
Usage(Throttle)
- то ничего путного не будет
--------------------------------------------
Упс... Как раз именно так и оказалось работоспособно!!! :)
Но больше двух винда отказывается их понимать. И вообще оси из Simulation_Controls больше двух не желает видеть.
А я гляжу Вы шарите в этом деле :)
Да... Вот только как это реализовать?
Нашел тут занимательную программку - HID Descriptor Tool
Открыл стандартный дескриптор джойстика, добавил еще один Usage_Page(Simulation Controls) Usage(Throttle)? запустил проверку и действительно ошибок не выдало :)
Более того, засунул еще один Hat Switch в Generic Desktop и тоже получилось :)
---------- Добавлено в 23:39 ---------- Предыдущее сообщение было написано в 23:26 ----------
А еще ни чего не мешает засунуть туда описание мыши. И будет у вас как в X52 манипулятор мыши на джойстике :)
Только нафиг это нужно, это другой вопрос :D
Эх, если б он ещё говорил что не только нет ошибок, но что эта хрень ещё будет работать в винде....
вот такая штука:
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x01, // REPORT_ID (1)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x15, 0x01, // LOGICAL_MINIMUM (1)
0x27, 0xFF, 0xFF, 0x00, 0x00, // LOGICAL_MAXIMUM (65535)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x09, 0x32, // USAGE (Z)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x0c, // USAGE_MAXIMUM (Button 12)
0x15, 0x01, // LOGICAL_MINIMUM (1)
0x25, 0x0c, // LOGICAL_MAXIMUM (12)
0x75, 0x04, // REPORT_SIZE (4)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0, // END_COLLECTION
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x02, // REPORT_ID (2)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x15, 0x01, // LOGICAL_MINIMUM (1)
0x26, 0xFF, 0x1F, // LOGICAL_MAXIMUM (8191)
0x35, 0xE0, // PHYSICAL_MINIMUM (-32)
0x45, 0x20, // PHYSICAL_MAXIMUM (32)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x02, // REPORT_COUNT (2)
0x81, 0x06, // INPUT (Data,Var,Rel)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x02, // USAGE_MAXIMUM (Button 2)
0x15, 0x01, // LOGICAL_MINIMUM (1)
0x25, 0x02, // LOGICAL_MAXIMUM (2)
0x75, 0x04, // REPORT_SIZE (4)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0x75, 0x04, // REPORT_SIZE (4)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
определяется как 2 устройства в диспетчере устройств - джойстик и мышь. и оба девайса работают. плюс, оси мыши могут быть и absolute, а не relative. и это тоже работает. но нафига? :)