Автор Тема: Подключение приставочных джойстиков через USB  (Прочитано 231425 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Talking_Sword

  • Пользователь
  • Сообщений: 933
  • Happy Games Only!
    • Просмотр профиля
Подключение приставочных джойстиков через USB
« Ответ #660 : 24 Ноябрь 2022, 13:05:13 »
Talking_Sword, это чтож, получается чисто пиратский стандарт  o_0?
Ну как бы да. На сколько я знаю, они от разных приставок подходят друг к другу. Сам удивляюсь, как пираты умудрились создать свой стандарт. По крайней мере, у меня есть Simba's Mega Power II и Денди-ноутбук. С ноутбуком не было джойстиков. Подключил от Mega Power II, вроде работали. Хотя не очень помню, так как давно не включал, но запомнилось, что работало.

Хотя, может и есть какие-то редкие экземпляры со своей распайкой.

Оффлайн StormReaver

  • Пользователь
  • Сообщений: 138
  • Пол: Мужской
    • Просмотр профиля
Тут такая проблемка возникла. К компу присоединены Logitech F310 и Dual Shock 3 (через SCPToolkit), прикупил еще Dual Shock 4, НО по умолчанию и через DS4Windows геймпад не распознается. Ну то есть как не распознается... при подключении по USB-кабелю винда определяет его как "wireless controller" и инсталлит автоматически какие-то драйвера, но в "параметрах игровых устройств управления" отображаются только 2 других контроллера и, как следствие, его не откалибровать. Хорошо, запускаем InputMapper, он вроде как видит три пада, но у него конфликт не то с SCPtoolkit, не то с Xpadder, и в итоге в Xpadder отображаются 5 падов. При этом в InputMapper DS4 не калибруется, а в трее в правом нижнем углу то и дело выплывают неизвестные ошибки  :-\

Вопрос: что с этим %$#!! можно сделать, НЕ отключая при этом Dual Shock 3 и чтоб при этом DS4 обязательно распознавался Xpadder-ом?  :-\

Оффлайн blackoff

  • Пользователь
  • Сообщений: 8506
  • Пол: Мужской
    • Просмотр профиля
НО по умолчанию и через DS4Windows геймпад не распознается.
по BT тоже ?

Добавлено позже:
е то с Xpadder, и в итоге в Xpadder отображаются 5 падов.
если что ,у ds4w есть своя возможность на клаву\мышь назначать ...

Оффлайн StormReaver

  • Пользователь
  • Сообщений: 138
  • Пол: Мужской
    • Просмотр профиля
по BT тоже ?
BT-адаптера у меня нет (но я заказал вчера после пары часов бесплотных попыток и может быть завтра дойдет). Так-то, если подключить по коротенькому идущему в комплекте кабелю и зажать Share+PS, то пад среагирует так, как должен (панель между L2 и R2 начнет мигать белым), но при этом он не распознается никак.
если что ,у ds4w есть своя возможность на клаву\мышь назначать ...
Я про что-то такое читал, но как назначить, если прога не видит никаких контроллеров вообще, и чтоб не в ущерб клавомыши?

Update. Ладно, после инсталляции драйвера SCPtoolkit (после инсталляции самого SCPtoolkit) DS4 распознался... за исключением L2/Left Trigger. Видать, брак самого пада  <_<
« Последнее редактирование: 03 Май 2023, 19:10:07 от StormReaver »

Оффлайн 881x113

  • Пользователь
  • Сообщений: 192
  • Техноманьяк
    • Просмотр профиля
Подключение приставочных джойстиков через USB
« Ответ #664 : 09 Январь 2024, 09:23:20 »
А что насчёт встроенного динамика в Dualshock?
Играю, сижу, играю, захожу в опции игры, смотрю на это


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

Оффлайн kisKO

  • Пользователь
  • Сообщений: 6
    • Просмотр профиля
Всем привет из 2025! Загорелся идеей подключить джойстик денди на пк. Воспользовался для этого платой digispark на attiny85. Использовал программный USB, анализировался сигнал с джойстика, после чего с помощью sendKeyStroke выдавался код кнопки, типа нажатие клавиатуры. Однако, как я не долбался, куча проблем то с удержанием кнопки, то с одновременным нажатием, в общем, чтобы я не делал, работает оно крайне плохо и не играбельно совсем.

Может кто что посоветует, кроме готовых USB джойстиков? Может есть проверенное рабочее решение на USB, которое уже кем то проверено лично и оно точно работает?

Оффлайн Skay

  • Пользователь
  • Сообщений: 4123
  • Пол: Мужской
    • Просмотр профиля
kisKO,
Talking_Sword, я бы все же посылал на гитхаб+ютуб к Кластеру.
https://www.youtube.com/watch?v=oBAFu-Xpc2I
Там переходник для 2 сега и 2 денди
на авр https://github.com/ClusterM/nessmd2usb/tree/64d42d2cb7814a1070c774e88a9bd7026c04b6db
на стм https://github.com/ClusterM/nessmd2usbдешево только самому спаять.
а так цены примерно такие


Оффлайн kisKO

  • Пользователь
  • Сообщений: 6
    • Просмотр профиля
Спасибо! А вот это собирал кто-нибудь? https://radioded.ru/podklyuchenie-dzhojstika-ot-8-bitnykh-pristavok-k-kompyuteru/ очень не хочется плату собирать и АТ90УСБ в продаже у нас в городе нет, тянуть резину с али не охота.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4123
  • Пол: Мужской
    • Просмотр профиля
kisKO, с программным usb была тут где то версия для nes / sega / ps1 от масяни. с исходниками. Но придется опять же из исходников выкидывать всё чтоб в тиньку влесть.

Оффлайн kisKO

  • Пользователь
  • Сообщений: 6
    • Просмотр профиля
А может вы в курсе, что за прикол или что я не так делаю. В принципе опросить джойстик и распознать его кнопки у меня получилось, далее в зависимости от кнопки я на ПК посылаю символ с клавиатуры, настраиваю эмулятор на эти же кнопки. Однако в игре все совсем плохо, движение рывками, удержание кнопки вообще не работает и в том же марио прыжки короткие. При этом на реальной клавиатуре все в полном порядке. Если открыть блокнот и нажимать кнопки джойстика, видно что все отрабатывает хорошо, типа.... Где можно почитать про все это более подробно, именно механизм эмуляции.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4123
  • Пол: Мужской
    • Просмотр профиля
kisKO, смотри исходники у Кластера. там всё вполне простенько написано, сиподобненько. (если по делу вопросы задавать. то он в соц.сетях вполне себе отвечает)

можешь поискать статьи Рюмика) если именно почитать охота.

UPD: Нашел архив с исходниками которые тут Масяня выкладывал (сообщение не нашёл).  Как я помню чтоб оно работало надо ридер карт памяти PSX отключить. Ну и в твоем случае выкинуть всё что sega/psx.
Правда хз влезет ли тут программная реализация HID в тиньку)

Оффлайн kisKO

  • Пользователь
  • Сообщений: 6
    • Просмотр профиля
В тиньку85 лезет 8 кБ... По крайней мере сейчас реализация HID вмещается и еще вагон места остается. Прикол в том, что все типа работает, но работает абсолютно неиграбельно, уже неделю гуглю, понять чужие исходники к сожалению очень сложно, нейросети выдают дичь, а я стараюсь разобраться )

Добавлено позже:
Все, разобрался. Вот код кому надо, джой подключать напрямую к плате дигиспарк. Для денди наверное проще некуда и никакого геморроя со сборкой громадных плат. 5 проводов всего.

#include <DigiJoystick.h>

#define DATA_PIN   0  // Выход 4021 (Q7)
#define LATCH_PIN  1  // Strobe (Latch) (PIN 12 на 4021)
#define CLOCK_PIN  2  // Clock (PIN 10 на 4021)

void setup() {
    pinMode(LATCH_PIN, OUTPUT);
    pinMode(CLOCK_PIN, OUTPUT);
    pinMode(DATA_PIN, INPUT);

    digitalWrite(LATCH_PIN, HIGH);
    digitalWrite(CLOCK_PIN, HIGH);

    //Serial.begin(9600); // Включаем отладку
}

void loop() {
    uint8_t buttons = readNESController();

    // Выводим состояние кнопок в Serial Monitor
    //Serial.print("Buttons: ");
   // Serial.println(buttons, BIN); // Вывод состояния кнопок в двоичном формате
   
    DigiJoystick.setButtons(buttons, 0);
    DigiJoystick.update();

    delay(5);
}

uint8_t readNESController() {
    uint8_t state = 0;

    digitalWrite(LATCH_PIN, HIGH);
    delayMicroseconds(5);
    digitalWrite(LATCH_PIN, LOW);
    delayMicroseconds(5);

    for (uint8_t i = 0; i < 8; i++) {
        digitalWrite(CLOCK_PIN, LOW);  // Начинаем такт
        delayMicroseconds(5);
       
        if (digitalRead(DATA_PIN)) {
            state |= (1 << i);  // Считываем бит
        }
       
        digitalWrite(CLOCK_PIN, HIGH); // Поднимаем такт
        delayMicroseconds(5);
    }

    return ~state;  // НЕ инвертируем, чтобы проверить, что приходит
}

Дата, латх и клок к соответствующим пинам дигиспарка, легко видно из кода. Инпут лаг на глаз не видно, ну и сойдет мне ))
« Последнее редактирование: 04 Март 2025, 01:14:27 от ghostdog3 »