DirectInput-plugin для джойстиков под FreeDO 2.XX

Плагин поддерживает манипуляторы совместимые с DirectInput (несовместимых не встречал), разработан для версии Freedo 2.02.
Плагин распространяется вместе с исходным кодом, если что-то не понравится - сможете доработать :)

Возможности плагина:
1) поддерживает до 8-ми джойстиков.
2) поддерживает оси (Axis), вращатели (Rotation) и собственно сами кнопки.
3) конфигурится подобно тому как стандартные устройства, поэтому настраивать можно даже двойное управление или сразу несколькими устройствами, короче беспредел полный)
4) информирует о проблемах и дает подсказки через строку настройки
5) имеются настройки по умолчанию на двух игроков

Как настроить:
1)Поместить в папку PBUS в директории эмулятора.
2)Запустить эмулятор, зайти в "Настройки->Управление->Настройка_PBUS". Записать в список активных устройств "*DirectInputFreedoPlugin" (выделено на рисунке). Нажать кнопку "Сохранить".

В поле "Настройки внешних устройств (DLL)" появится строка с настройками плагина по умолчанию (настроены два джойстика) и помощь по присутствующим в вашей системе устройствам, а так же возможны сообщения об ошибках, если такое случится - пожалуста, сообщите об этом в соответствующий раздел форума.

3) Настроить в случае необходимости реализуемые плагином устройства управления 3DO. Рассмотрим на примере следующей строки:

DirectInputFreedoPlugin=p,a,a,j1y>8000,j1y<-8000,j1x>8000,j1x<-8000,j1b1,j1b2,j1b3,j1b5,j1b6,j1b7,j1b8,a,a,
      p,a,a,j2y>8000,j2y<-8000,j2x>8000,j2x<-8000,j2b1,j2b2,j2b3,j2b5,j2b6,j2b7,j2b8,a,a
      //help//a;p;j1:rz[<N,>N,n],z[<N,>N,n],z[<N,>N,n],y[<N,>N,n],x[<N,>N,n],b[n];j2:y[<N,>N,n],x[<N,>N,n],b[n];

Сначала идет имя плагина, затем от "=" до "//" располагается настройка данных согласно формату шины PBUS приставки (аналогично стандартным настройкам), рассмотрим это подробнее. Через запятую перечисляются поля (фактически биты данных) описывающие функцию по которой формируются биты. Такой подход позволяет сформировать практически любое устройство с которым умеет работать приставка. Стандартный джойстик 3DO можно описать строкой:

       1,0,0,Down,Up,Right,Left,A,B,C,Start,Select,R,L,0,0

Аналогично формируются два джойстика в нашем примере:

       p,a,a,j1y>8000,j1y<-8000,j1x>8000,j1x<-8000,j1b1,j1b2,j1b3,j1b5,j1b6,j1b7,j1b8,a,a
       p,a,a,j2y>8000,j2y<-8000,j2x>8000,j2x<-8000,j2b1,j2b2,j2b3,j2b5,j2b6,j2b7,j2b8,a,a

Значения полей могут быть сделующими:

  1. p - формирует сигнал уровня VCC - '1'
  2. a - формирует сигнал уровня GND - '0'
  3. jI - указывает с какого джойстика нужно считать значение кнопки или оси, I может принимать значение от 1-го до 8-ми.
  4. jIx<N,jIx>N (аналогично для x,y,z,rx,ry,rz) - в случае истинности неравенства выставляется 1, в противном случае 0. Это нужно для настройки осей и вращателей, которые могут применять значения в диапазоне от -32768 до 32767. Это необходимо что бы использовать аналоговые оси и вращатели в качестве кнопок, а так же устранить колебания осей в неподвижном состоянии.
  5. jIxn (аналогично для x,y,z,rx,ry,rz) - здесь n=0...15 - номер бита считанного с оси знаения, может пригодиться для моделирования аналоговых устройств или устройств по типу мышки.
  6. jIbn - здесь n=1...128 - номер кнопки.

Кроме того, если поставить перед полем "!", значение поля будет инвертированно, не влияет на p и a.

Строка помощи:

       //help//a;p;j1:rz[<N,>N,n],z[<N,>N,n],z[<N,>N,n],y[<N,>N,n],x[<N,>N,n],b[n];j2:y[<N,>N,n],x[<N,>N,n],b[n];

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