Автор Тема: Не работает схема 6-ти кнопочного джойстика?  (Прочитано 12033 раз)

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

Оффлайн Profi

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
Те картинки были здесь
Да, вчера уже пересмотрел их форум, спасибо, напомнил про него.
Сделал набросок схемы, вот что пока получается.
Застопорил на организации счетчика с необходимой логикой работы. По сигналу clk мультиплексор 2 всегда комутирует В С и А Start, left right и нули (для вывода ID). Сигналы с мультиплексора left и right подаются на следующий мультиплексор, где они вместе с up down, переключаюся с доп.кнопками. Логика работы счетчика должна быть такова: после подсчета двух импульсов по спаду в 0 на третьем вырабатывается 1 и подается на вход Select мультиплексора (при этом на выходах будет 0), затем при установки clk в 1 на Select снова подается 0, а на out 1. По следующему такту на out устанавливается 0. сигнал out можно выдавать инверсно, с 0 импульсом. Изменится только подключение кнопок.
То что я нагородил не совместимо с трехкнопочным джоем.
Помогайте, я не имею практики построения устройств на элементарной логике.
« Последнее редактирование: 05 Май 2012, 15:17:06 от Profi »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4418
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Цитата: Profi
%1100
Это откуда такое обозначение?

Оффлайн Profi

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
%1100 - это я в двоичном коде написал, правда разряды задом наперед тоже  :blush:, по порядку D0, D1, D2, D3.
Как это прочитается кодом программы затрудняюсь однозначно ответить, либо 03h, либо 0Сh.

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4418
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Profi,
я не спрашивал, что это значит, я спросил "откуда это?".

Оффлайн Profi

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
Profi, я не спрашивал, что это значит, я спросил "откуда это?".
я уже писал где смотрел описание интерфейса джойстика
http://applause.elfmimi.jp/md6bpad-e.html

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4418
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Profi,
перефразирую: из какого языка программирования взято обозначение процента как двоичного числа?

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
из какого языка программирования взято обозначение процента как двоичного числа?
А давайте не будем засирать тему подобными разборками, да? Тема про джойстик, а не про обозначения. Надеюсь, это ясно.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
Мне дали ссылку на мануалы.  Собственно вот:

ID от ЕА и СМ не дали, говорят нету в наличии. Так что только реверсом игр.

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
HardWareMan, хосподя, эти доки от Мудрого Короля уже несколько лет как в сети в свободном доступе. Но это чисто сеговские доки, других разработчиков там не может быть в принципе

Оффлайн Profi

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
Проверил, все правильно, по моей схеме будет выдаваться корректный код ID - 0Dh.

PS:
Profi,
перефразирую: из какого языка программирования взято обозначение процента как двоичного числа?

IdaPro родимая

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7422
    • Просмотр профиля
HardWareMan, хосподя, эти доки от Мудрого Короля уже несколько лет как в сети в свободном доступе. Но это чисто сеговские доки, других разработчиков там не может быть в принципе
Ну а кто против то? А про чужие коды я спрашивал вне этих доков.
Касаемо работы 6-ти кнопочного, я тут как-то выкладывал для Масяни сводную табличку, когда он работал над джойстэйшином, да вот найти не могу или оно протухло. Поэтому, погуглив, я нашел док, где сказано:
Цитата
3.2) Gamepad specifics

 A gamepad maps the directional pad to the pins mentioned earlier
 (left, right, up, down), and multiplexes the four buttons (A, B, C, Start)
 through the TL and TR pins.

 The TH pin controls which pairs of buttons (either A, Start or C, B) are
 output through TL and TR by the multiplexer chip.

 In order to read all the buttons, A program will set TH = 1, read the data
 port, set TH = 0, and read the port again. The data returned is as follows:

 TH = 0 : ?0SA00DU
 TH = 1 : ?1CBRLDU

 ? = Whatever was last written to bit 7.
 S = Start
 A = Button A
 B = Button B
 C = Button C
 U = Up
 D = Down
 L = Left
 R = Right

 A 6-button gamepad allows the extra buttons to be read based on how
 many times TH is switched from 1 to 0 (and not 0 to 1). Observe the
 following sequence:

 TH = 1 : ?1CBRLDU    3-button pad return value
 TH = 0 : ?0SA00DU    3-button pad return value
 TH = 1 : ?1CBRLDU    3-button pad return value
 TH = 0 : ?0SA0000    D3-0 are forced to '0'
 TH = 1 : ?1CBMXYZ    Extra buttons returned in D3-0
 TH = 0 : ?0SA1111    D3-0 are forced to '1'

 M = Mode
 X = Button X
 Y = Button Y
 Z = Button Z

 From this point on, the standard 3-button pad values will be returned
 if any further TH transitions are done.

 If TH isn't modified in about 8192 (probably less than that) 68000 CPU
 cycles, a 'time-out' will occur and the sequence to read 6-button values
 can be done again. Games usually poll the gamepad once per frame,
 which is always enough for the time-out to occur.

 I believe checking if D3-D0 are all set or clear (as shown in the list
 above) would be another method to verify if 6-button or 3-button pad data
 was being returned.

 Some games may access the gamepad in a way that causes 6-button values
 to be returned when 3-button values are expected. To get around this,
 the MODE button can be held down when powering-up the console, and
 the 6-button gamepad will respond like a 3-button one.
Что можно перевести так:
Цитата
3.2) Специфика геймпада

Геймпад использует 4 пина для направления (влево, вправо, вверх, вниз) и мультиплексирует 4 кнопки (A, B, C, Start) через пины TL и TR.

Пин TH управляет мультиплексором при выборе кнопок (A и Start или C и B) через пины TL и TR.

Чтобы прочитат все кнопки программа должна установить TH=1, считать порт, установить TH=0 и еще раз считать порт. Считанные данные будут в следующем формате:

 TH = 0 : ?0SA00DU
 TH = 1 : ?1CBRLDU

 ? = То, что было ранее записано в бит 7.
 S = Start
 A = Кнопка A
 B = Кнопка B
 C = Кнопка C
 U = Вверх
 D = Вниз
 L = Влево
 R = Вправо

6ти кнопочный пад позволяет получить дополнительные кнопки, которое основано на том, сколько раз пин TH был переключен с 1 на 0 (но не наоборот с 0 на 1). Посмотрите на следующую последовательность:

 TH = 1 : ?1CBRLDU    Кнопки 3х кнопочного пада
 TH = 0 : ?0SA00DU    Кнопки 3х кнопочного пада
 TH = 1 : ?1CBRLDU    Кнопки 3х кнопочного пада
 TH = 0 : ?0SA0000    D3-D0 сброшены в '0'
 TH = 1 : ?1CBMXYZ    Дополнительные кнопки могут быть считаны через D3-D0
 TH = 0 : ?0SA1111    D3-D0 установлены в '1'

 M = Mode
 X = Кнопка X
 Y = Кнопка Y
 Z = Кнопка Z

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

Если пин TH не изменялся около 8192 (а может и меньше) цикла 68000 происходит таймаут и дополнительные кнопки могут быть считаны еще раз. Игры обычно опрашивают джойстик один раз за телевизионный кадр, поэтому времени достаточно чтобы произошл таймаут.

Я думаю, что проверка D3-D0 на сброс в '0' или установку в '1' может быть еще одним методом проверки типа подключенного пада: 6ти или 3х кнопочный.

Некоторые игры используют такой опрос пада, что считываются данные 6ти кнопочного пада, хотя ожидаются от 3х кнопочного. Чтобы исправить это, нужно зажать кнопку MODE при включении и 6ти кнопочный пад будет работать как 3х кнопочный.
« Последнее редактирование: 06 Май 2012, 12:08:03 от HardWareMan »

Оффлайн Profi

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
в общем, слишком много деталей получается в джойстике, если его делать на рассыпухе. Проще в любымый джой вживить микруху-каплю от китайца за 50 рублей. Хотя мне было бы просто интересно собрать схему рабочего джоя.

Есть вопрос который пока мне более интересен: это возможность самостоятельной сборки разветвителя Multi Tab (который в один порт подключается). Нужен он, главным образом, для игры в Columns III. Пока даже не видел описание интерфейса, а дебаг игры у меня займет просто тучу времени, т.к. ассемблер понимаю не достаточно хорошо.

Оффлайн Andrey_stal

  • Пользователь
  • Сообщений: 400
  • Пол: Мужской
    • Просмотр профиля
Народ подскажите пожалуйста на Sega md1 будут работать 6 кнопочные от второй . Пробовал от клона подключать так работает ток как 3 кнопочный . на клоне все 6 работают.

Оффлайн senchik

  • Пользователь
  • Сообщений: 11
    • Просмотр профиля
в общем, слишком много деталей получается в джойстике, если его делать на рассыпухе. Проще в любымый джой вживить микруху-каплю от китайца за 50 рублей. Хотя мне было бы просто интересно собрать схему рабочего джоя.
"Пацан шёл к успеху"... при применении деталей поверхностного монтажа всё укладывается в стоимость ~100 руб, ну и плюс интересно же)))
Впринципе благодаря мануалу от импортных дядь https://www.raspberryfield.life/2019/03/25/sega-mega-drive-genesis-6-button-xyz-controller/ и мануалу от наших дядь на 561ЛС2 (которая почему-то хается, хотя по сути она в чём-то лучше чем даже оригинальная на 74hc157), а так же пресловутой схеме на 2х 74hc157 которая тоже была близка к успеху...
Родилась идея сделать тоже, пока набросал схему, по логике должна работать, по электрике +/-, если укажите на ошибки и просчёты буду благодарен.

Оффлайн Nhisti

  • Пользователь
  • Сообщений: 953
    • Просмотр профиля
senchik, Нс всякий случай отмечу, что ты отвечаешь на сообщение почти одиннадцатилетней давности...  :-\

Оффлайн senchik

  • Пользователь
  • Сообщений: 11
    • Просмотр профиля
senchik, Нс всякий случай отмечу, что ты отвечаешь на сообщение почти одиннадцатилетней давности...  :-\
на всякий случай отмечу, что Sega уже 25 летней давности)) Но джойстики и сейчас ломаются и их надо ремонтировать)) И кнопок за это время не стало больше... стоит ли ещё одну тему плодить?

Оффлайн pipiman

  • Пользователь
  • Сообщений: 31
    • Просмотр профиля
Не работает схема 6-ти кнопочного джойстика?
« Ответ #46 : 06 Январь 2024, 23:04:19 »
Кто-нибудь проверял схему от senchik, или предложит другую схему? Хочу оживить пару своих 6-кнопочных джоев от Сеги ^_^

Оффлайн Rumata

  • Супермодератор
  • Сообщений: 24658
    • Просмотр профиля
Не работает схема 6-ти кнопочного джойстика?
« Ответ #47 : 07 Январь 2024, 00:00:18 »
Кто-нибудь проверял схему от senchik,
Нет ни малейшего желания. Пусть автор сам проверяет. По-хорошему он это должен был сделать до того, как что-то выкладывать. Но это я так, идеализирую, конечно  :biggrin: