Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

Re: USB Sega gamepad

Вс сен 22, 2019 09:43:57

Reloader, есть игры на андройде, типа contra evolution, в которых невозможно переназначить кнопки. Нужен человек, который смог бы разобраться с кнопками в коде.

Re: USB Sega gamepad

Вс сен 22, 2019 21:43:25

Нужен человек...

почему бы вам не стать этим человеком? )

Ну или здесь оставить сообщение. можа кто и откликнется

Добавлено after 13 minutes 4 seconds:
dasich, я туть немного погуглил..
Вот ссыль на 4PDA.
Думаю именно то что вам и нужно.

"С помощью этой программы можно подключить джойстик к устройству и играть с контроллером даже в те игры, которые по-умолчанию не поддерживают его. У программы есть два режима работы: 1. переназначение кнопок на манипуляторе; 2. транслирование действий (нажатия, свайпы, круговые и бесконечные и т.п.) с манипулятора на дисплей устройства (для этого потребуются рут права)."


сам не тестировал да и ненужно мне.
Думаю если вы поищите то найдёте достаточно программ которые всё же смогут переназначать кнопки. Вы не один с такой проблемой в мире столкнулись.
Более того я считаю что это более оптимальный вариант - вдруг вы захотите использовать другой геймпад )

Re: USB Sega gamepad

Вс сен 22, 2019 22:23:06

Reloader, а я начал код копать :lol:
Спасибо, доберусь до консоли, опробую и отпишусь.

Re: USB Sega gamepad

Пн окт 28, 2019 19:38:47

Отписываюсь... Не работает! Джойстик не видится. Другой софт тоже пробовал, так же не работает. Пока подзабил.

Re: USB Sega gamepad

Сб ноя 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)

Re: USB Sega gamepad

Сб дек 28, 2019 00:35:07

С весны лежат 2 новых джойстика, 2 штуки atmega8-16au, фоторезист, плёнка для печати, программатор, текстолит, 2 флакона перекиси, лимонная кислота...
Только бери да делай.

Изображение

Вот у меня вопрос, джойстики у меня с turbo/slow, если я просто приделаю 2 контактные плошадки к свободному входу меги, потом в коде же можно будет отловить их замыкание на землю, и уже сами кнопки потом проверять. Кстати в оригинальном(китайском) джойстике земли 2, на кнопки ABCXYZ одна, на остальные другая.
Если замкнуто turbo, тогда при зажатии кнопок ABCXYZ отправлять нажатие/отжатие быстро, если slow - тогда медленно, если ничего - тогда в обычном режиме.

Посмотрел разводку от dasich, к моим джойстикам не подходит, кнопки смещены по другому, ну думаю подвину...

Re: USB Sega gamepad

Вт мар 17, 2020 19:43:10

Вот у меня вопрос, джойстики у меня с turbo/slow, если я просто приделаю 2 контактные плошадки к свободному входу меги, потом в коде же можно будет отловить их замыкание на землю


Исходники открыты и доступны по ссылке). Можете сделать если вам хочется. Сам я с турбо джойстиками ни разу в жизни не играл (если не считать верхние кнопки на Денди)

Re: USB Sega gamepad

Сб фев 25, 2023 17:56:53

Чем их скомпилировать? Скачал avr-gcc 12, полез в гугл, а там просто ничего нет.

Re: USB Sega gamepad

Сб фев 25, 2023 19:51:03

ApTu(T, я юзал WinAVR-20100110

Re: USB Sega gamepad

Сб фев 25, 2023 20:15:47

Я что уже только не пробовал, и студию и это, всё с ошибками компилит.

Re: USB Sega gamepad

Сб фев 25, 2023 21:25:27

ApTu(T, проверяйте у себя. Переустановил, накатил патч, скомпилил.
Изображение

Re: USB Sega gamepad

Сб фев 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

Re: USB Sega gamepad

Вс фев 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. Я предлагаю смотреть в ваши правки. Ну либо дайте мне ваши исходники я попробую их откомпилировать, чтобы исключить компилятор.

Re: USB Sega gamepad

Вс фев 26, 2023 10:01:26

Из второго поста, и из первоисточника, всё одинаково, с ошибками.
Ничего не правил.
Я 12 версией avr-gcc компилил.

Добавлено after 1 hour 14 minutes 37 seconds:
Удаляю main.hex и main.bin.
И каждый раз при компиляции он на разные строки ругается.
162, 754, 169...

Re: USB Sega gamepad

Вс фев 26, 2023 11:46:45

Тогда не знаю, пробуйте мой https://www.dropbox.com/s/1gmhwukee8zam ... R.rar?dl=0

Re: USB Sega gamepad

Вс фев 26, 2023 11:59:59

Да я править буду, у меня и выводы на другие ноги идут, вернее я уже наковырял, давно, что аж забыл и теперь надо заново всё смотреть.
Дело в том, что у меня даже заведомо рабочий не компилится.

Re: USB Sega gamepad

Вс фев 26, 2023 12:35:00

ApTu(T, я дал вам winavr, с которым компилится оригинальный исходник

Re: USB Sega gamepad

Вс фев 26, 2023 14:17:45

Ааа, спасибо, сейчас попробую. ))

Добавлено after 1 hour 6 minutes 53 seconds:
Неа. Тут вообще нет кнопки "[Win Avr] make all" в меню tools.

Re: USB Sega gamepad

Вс фев 26, 2023 14:40:23

Похоже проблема у вас в microsoft visual c++
Изображение

Re: USB Sega gamepad

Вс фев 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 создал в папке с исходниками, чтобы блокнот путь видел, и нажал сборку.
Ответить