Arduino вместо джойстика Сеги: ковыряния #2
Всё бодаюсь с этим своим адаптером джойстика Сеги к Сеге, и никак не могу его забодать.
Трёхкнопочный режим делается просто: в зависимости от линии TH по прерыванию от пина выставляем одни или другие шесть бит состояния кнопок. Правда, скорости Arduino для этого не хватает, но вдвое более быстрая LGT328 справляется.
Шестикнопочный режим формально тоже прост, но я никак не могу его победить. В нём джойстик выдаёт не два состояния, а последовательность из восьми, если линия TH многократно изменяет состояние в течении короткого времени. Если изменений не было дольше 1.5 миллисекунд, последовательность начинается сначала.
Проблема в том, что нигде этот протокол не описан с точки зрения работы самого джойстика. Все исследования вопроса касаются опроса джойстика активным устройством, самой Сегой или Ардуиной, что намного проще: при определённой последовательности действий этот опрос надёжно работает, и не нужно понимать, как это устроено внутри.
А вот игры могут опрашивать джойстик как им вздумается. И нигде не сказано, что будет, если делать это иначе, чем в известной последовательности, как должен реагировать джойстик, чтобы программы могли определить наличие шестикнопочного режима и правильно работали. Из-за этого некоторые тесты и игры у меня его не видят, хотя в других он работает.
Перепробовал кучу вариантов, и пока ничего не получается. Пытался найти схему джойстика, чтобы понять, как же она работает. Её не существует: оригинал построен на заказной микросхеме SEGA 315-5638, которую не расковыряли за ненадобностью. За годы было создано порядка пяти реплик на мелкой логике, они работают только частично, не во всех играх, и их реализация вообще не похожа на описываемый всюду протокол, она гораздо грубее.
Существует адаптер джойстика PSX-Сега на PIC16F819, но он поддерживает только трёхкнопочный режим.
Главное, что я никак не могу уяснить точную схему работы джойстика — разные источники описывают её разными словами и без пограничных случаев. А без понимания, разумеется, не могу реализовать правильный эмулятор её логики.
Все картинки со схемами в посте — это варианты реализации шестикнопочного джойстика, придуманные разными людьми. Просто ничего общего, всюду разная логика и реализация.
sgd
arduino
sega
джойстики
Санёк Сушка | Саня, Тащи!
Может спросить у нейросети? Типа включить режим поиска (чтобы поискала все что есть в интернете по вопросу) и попросить её систематизировать информацию. Вдруг подскажет чего дельного?
shiru8bit
Санёк Сушка | Саня, Тащи!, я пробовал, она что-то пытается, вполне разумное, но к сожалению. такое же ошибочное, как получается у меня самого на основе имеющейся информации.
Санёк Сушка | Саня, Тащи!Replying to shiru8bit
shiru8bit, очень жаль( Видимо это какая то очень нишевая инфа. Что довольно странно, ведь адаптеры существуют и как то работают..
Alex Zhak
Ну, тут вариант, мне кажется, один: берём оригинальный джой и долго сидим с логическим анализатором.
shiru8bit
Alex Zhak, проблема как раз в том, что нет анализатора. Но я сегодня заказал.