Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Вс сен 22, 2019 09:43:57
Reloader, есть игры на андройде, типа contra evolution, в которых невозможно переназначить кнопки. Нужен человек, который смог бы разобраться с кнопками в коде.
Вс сен 22, 2019 21:43:25
Нужен человек...
почему бы вам не стать этим человеком? )
Ну или
здесь оставить сообщение. можа кто и откликнется
Добавлено after 13 minutes 4 seconds:dasich, я туть немного погуглил..
Вот
ссыль на 4PDA.
Думаю именно то что вам и нужно.
"С помощью этой программы можно подключить джойстик к устройству и играть с контроллером даже в те игры, которые по-умолчанию не поддерживают его. У программы есть два режима работы: 1. переназначение кнопок на манипуляторе; 2. транслирование действий (нажатия, свайпы, круговые и бесконечные и т.п.) с манипулятора на дисплей устройства (для этого потребуются рут права)."сам не тестировал да и ненужно мне.
Думаю если вы поищите то найдёте достаточно программ которые всё же смогут переназначать кнопки. Вы не один с такой проблемой в мире столкнулись.
Более того я считаю что это более оптимальный вариант - вдруг вы захотите использовать другой геймпад )
Вс сен 22, 2019 22:23:06
Reloader, а я начал код копать
Спасибо, доберусь до консоли, опробую и отпишусь.
Пн окт 28, 2019 19:38:47
Отписываюсь... Не работает! Джойстик не видится. Другой софт тоже пробовал, так же не работает. Пока подзабил.
Сб ноя 09, 2019 20:08:10
Все таки пришлось по изучать код... Мне конечно это не помогло, contra evolution все так же не управляема.
Находим в исходниках файл
twelve.c В нем находим метод
static void twelveUpdate(void)Нас интересует вот этот кусок кода
if (data[0] & 0x02) // btn 0 - START
last_read_controller_bytes[2] |= 0x01;
if (data[0] & 0x01) // btn 1 - MODE
last_read_controller_bytes[2] |= 0x02;
if (data[1] & 0x20) // btn 2 - Z
last_read_controller_bytes[2] |= 0x04;
if (data[1] & 0x10) // btn 3 - Y
last_read_controller_bytes[2] |= 0x08;
if (data[1] & 0x08) // btn 4 - X
last_read_controller_bytes[2] |= 0x10;
if (data[1] & 0x04) // btn 5 - C
last_read_controller_bytes[2] |= 0x20;
if (data[1] & 0x02) // btn 6 - B
last_read_controller_bytes[2] |= 0x40;
if (data[1] & 0x01) // btn 7 - A
last_read_controller_bytes[2] |= 0x80;
Красным выделены переменные посылаемые при нажатии кнопок. Меняем их в нужном нам порядке, компилим и льем в мегу. Вот и все.
В андройде кнопки прописаны по пути system\usr\keylayout\Generic.kl
key 304 BUTTON_A
key 305 BUTTON_B
key 306 BUTTON_C
key 307 BUTTON_X
key 308 BUTTON_Y
key 309 BUTTON_Z
key 310 BUTTON_L1
key 311 BUTTON_R1
key 312 BUTTON_L2
key 313 BUTTON_R2
key 314 BUTTON_SELECT
key 315 BUTTON_START
key 316 BUTTON_MODE
key 317 BUTTON_THUMBL
key 318 BUTTON_THUMBR
Код кнопок MODE и START не нашел. Бьются какие-то L1/LB и R1/RB(0x80/0x40)
Сб дек 28, 2019 00:35:07
С весны лежат 2 новых джойстика, 2 штуки atmega8-16au, фоторезист, плёнка для печати, программатор, текстолит, 2 флакона перекиси, лимонная кислота...
Только бери да делай.
Вот у меня вопрос, джойстики у меня с turbo/slow, если я просто приделаю 2 контактные плошадки к свободному входу меги, потом в коде же можно будет отловить их замыкание на землю, и уже сами кнопки потом проверять. Кстати в оригинальном(китайском) джойстике земли 2, на кнопки ABCXYZ одна, на остальные другая.
Если замкнуто turbo, тогда при зажатии кнопок ABCXYZ отправлять нажатие/отжатие быстро, если slow - тогда медленно, если ничего - тогда в обычном режиме.
Посмотрел разводку от
dasich, к моим джойстикам не подходит, кнопки смещены по другому, ну думаю подвину...
Вт мар 17, 2020 19:43:10
Вот у меня вопрос, джойстики у меня с turbo/slow, если я просто приделаю 2 контактные плошадки к свободному входу меги, потом в коде же можно будет отловить их замыкание на землю
Исходники открыты и доступны по ссылке). Можете сделать если вам хочется. Сам я с турбо джойстиками ни разу в жизни не играл (если не считать верхние кнопки на Денди)
Сб фев 25, 2023 17:56:53
Чем их скомпилировать? Скачал avr-gcc 12, полез в гугл, а там просто ничего нет.
Сб фев 25, 2023 19:51:03
ApTu(T, я юзал WinAVR-20100110
Сб фев 25, 2023 20:15:47
Я что уже только не пробовал, и студию и это, всё с ошибками компилит.
Сб фев 25, 2023 21:25:27
ApTu(T, проверяйте у себя. Переустановил, накатил патч, скомпилил.
Сб фев 25, 2023 22:42:08
Ау меня:
- Код:
D:\usb_game>make Makefile all
make: Nothing to be done for `Makefile'.
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -x assembler-with-cpp -c usbdrv/usbdrvasm.s -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c main.c -o main.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c twelve.c -o twelve.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c devdesc.c -o devdesc.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -o main.bin usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o twelve.o devdesc.o -Wl,-Map=main.map
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.bin main.hex
./checksize main.bin
0 [main] sh 9796 sync_with_child: child 2108(0x340) died before initialization with status code 0xC0000142
161 [main] sh 9796 sync_with_child: *** child state waiting for longjmp
D:\usb_game\checksize: fork: Resource temporarily unavailable
make: *** [main.hex] Error 128
Вс фев 26, 2023 07:35:59
Так у вас проблема указана
- Код:
0 [main] sh 9796 sync_with_child: child 2108(0x340) died before initialization with status code 0xC0000142
161 [main] sh 9796 sync_with_child: *** child state waiting for longjmp
D:\usb_game\checksize: fork: Resource temporarily unavailable
Откуда исходник? Что в нем правили?
Сейчас посмотрел, исходник на сайте тот же. Но у вас жалуется на 0 и 161 строчку файла main. Я предлагаю смотреть в ваши правки. Ну либо дайте мне ваши исходники я попробую их откомпилировать, чтобы исключить компилятор.
Вс фев 26, 2023 10:01:26
Из второго поста, и из первоисточника, всё одинаково, с ошибками.
Ничего не правил.
Я 12 версией avr-gcc компилил.
Добавлено after 1 hour 14 minutes 37 seconds:
Удаляю main.hex и main.bin.
И каждый раз при компиляции он на разные строки ругается.
162, 754, 169...
Вс фев 26, 2023 11:59:59
Да я править буду, у меня и выводы на другие ноги идут, вернее я уже наковырял, давно, что аж забыл и теперь надо заново всё смотреть.
Дело в том, что у меня даже заведомо рабочий не компилится.
Вс фев 26, 2023 12:35:00
ApTu(T, я дал вам winavr, с которым компилится оригинальный исходник
Вс фев 26, 2023 14:17:45
Ааа, спасибо, сейчас попробую. ))
Добавлено after 1 hour 6 minutes 53 seconds:
Неа. Тут вообще нет кнопки "[Win Avr] make all" в меню tools.
Вс фев 26, 2023 14:40:23
Похоже проблема у вас в microsoft visual c++
Вс фев 26, 2023 15:13:58
У меня до этого эта же версия стояла, там были кнопки. Я переустановил на эту, и теперь нет.
Добавлено after 25 minutes 47 seconds:Тупанул, я открыл не тот, я просто русифицированную версию блокнота ставил, она оказалась обычной.
ну не суть. Сейчас удалил, почистил реестр, временные файлы, перезагрузился, установил, опять перезагрузился.
- Код:
> "make.exe" all
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -x assembler-with-cpp -c usbdrv/usbdrvasm.s -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c main.c -o main.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c twelve.c -o twelve.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -c devdesc.c -o devdesc.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 -DF_CPU=12000000L -o main.bin usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o twelve.o devdesc.o -Wl,-Map=main.map
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.bin main.hex
./checksize main.bin
0 [main] sh 1208 sync_with_child: child 3736(0x324) died before initialization with status code 0xC0000142
37771 [main] sh 1208 sync_with_child: *** child state waiting for longjmp
D:\Project\checksize: fork: Resource temporarily unavailable
make.exe: *** [main.hex] Error 128
> Process Exit Code: 2
> Time Taken: 00:02
То же самое.
Добавлено after 2 minutes 50 seconds:Может я не так делаю, я просто пустой проект winavr создал в папке с исходниками, чтобы блокнот путь видел, и нажал сборку.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.