Arts-Union

Территория 3DOшников => Инженерная => Тема начата: Altmer от 13 Декабрь 2008, 23:15:23

Название: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 13 Декабрь 2008, 23:15:23
Небольшое SDK для разработки плагинов и устройств ввода/вывода к новой версии эмулятора.
Теперь со всеми просьбами по поводу джоев буду посылать в него  ;D

ПС Публикую заранее, что бы потом не забыть :)

Для тех кто аттач не видит:
http://forum.arts-union.ru/index.php?action=dlattach;topic=28.0;attach=28
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: matich от 02 Январь 2009, 17:01:34
Решил поиграться с плагтнами. Возникло несколько вопросов:

1 - Захотел сделать  графический конфигуратор:
вписал его сюда PBP_CFG:
Конфигуратор выскакивает при старте эмулятора и при нажатии кнопки "сохранить" в настройках PBUS.
Можно как-нибудь поправить это ?

2 -
Правильно ли я инициализирую джойстик ?
unsigned int joy_data=0x80000000;
case PBP_INIT:
joy_data=0x80000000;
break;

3 -
Почему при нажатии "Enter" происходит нажатие кнопки A на джойстике, а не start ?
В event.h написано
#define ControlStart 0x01000000

case PBP_KEYDN:
if(((int)data)==13)joy_data|=0x01000000;
break;
case PBP_KEYUP:
if(((int)data)==13)joy_data&=~0x01000000;
break;
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 02 Январь 2009, 17:32:07
1) Хэндл окна передается не для меню, а для перехвата событий связанных с окном. PBP_CFG - передает плагину строку (все вроде расписано), в которой параметры для настройки плагина, тот в свою очередь возвращает эти же настройки если они корректны или по умолчанию, если что-то не так. Чтобы сделать поддержку сторонних менюшек, нужно расширить плагин, в принципе - могу сделать позже, это не сложно.

2) Неправильно - джойстик передает 16 бит.

3) Распределение кнопок джоя видно в стандартных настройках эмуля. "В event.h написано" - там программный интерфейс, а здесь аппаратный, поэтому есть отличия.
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: matich от 02 Январь 2009, 18:32:39
Altmer,

Спасибо за пинок в нужном направлении, теперь всё работает.
Ты не против, если я попытаюсь сделать поддержку джойстика ?
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 02 Январь 2009, 18:44:15
Ты не против, если я попытаюсь сделать поддержку джойстика ?

Если бы был против, не сделал бы поддержку плагинов  ;)
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: matich от 04 Январь 2009, 14:53:14
Ещё вопрос:
Как получить HWND эмулятора ?
Пока повесил на нажатие кнопки
hWnd = GetForegroundWindow();
но это костыль...
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 04 Январь 2009, 15:01:10
Цитировать
#define PBP_INIT        0  //при загрузке плагина, передается хендл окна

HWND==хендл окна

Иначе говоря:

......................
static HWND hand;
   switch(proc)
   {
     case PBP_INIT:
               hand=(HWND)data;
......................
               break;
...................... 
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: matich от 04 Январь 2009, 15:12:59
т.е
hWnd = (HWND)data ?

В таком случае hWnd == 0.

ЗЫ: Ещё нужно узнать HINSTANCE.
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 04 Январь 2009, 15:18:05
В таком случае hWnd == 0.

Не может такого быть.

Инстанс можно получить через winapi (точно функцию не помню, но она есть). Инициализация плагинов происходит в главном потоке приложения.
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: matich от 04 Январь 2009, 15:53:56
Вот код.
Сначала появляется мессаджбокс с правилиным HWND потом с 0.
т.е. PBP_INIT: при старте эмулятора вызывается два раза, во второй раз data = 0;
и HWND обнуляется.
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты 
Отправлено: matich от 04 Январь 2009, 15:58:32
Я - идиот !

case PBP_CONNECT:
[b]break;[/b]
case PBP_INIT:
hWnd = HWND(data); // Get HWND

Вот что с недосыпа бывает...
Название: Re: PBUS-3DO-SDK - ввод/вывод - джойстики, мышки, пистолеты и прочее
Отправлено: Altmer от 04 Январь 2009, 16:01:59
Да, тока хотел сказать... :)