Автор Тема: XBUS  (Прочитано 12872 раз)

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

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
XBUS
« : 11 Март 2009, 14:22:40 »
Немного незакончена со стороны эмулятора система плагинов для XBUS, но законченая со стороны самих плагинов. Это шина на которой висит CD-ROM и к которой подключались внешние устройства. Видели наверное IsoXBUS.dll - это как раз реализация привода, вот интерфейс данной библиотеки:

Код: C++
  1. #ifndef ISO_3DO_HEADER
  2. #define ISO_3DO_HEADER
  3.  
  4. #define XBP_INIT 0 //инициализация плагина
  5. #define XBP_RESET 1 //сброс с параметром (например путь к образу)
  6. #define XBP_SET_COMMAND 2 //XBUS
  7. #define XBP_FIQ 3 //проверка прерывания от устройства
  8. #define XBP_SET_DATA 4 //XBUS
  9. #define XBP_GET_DATA 5 //XBUS
  10. #define XBP_GET_STATUS 6 //XBUS
  11. #define XBP_SET_POLL 7 //XBUS
  12. #define XBP_GET_POLL 8 //XBUS
  13. #define XBP_SELECT 9 //информирует о том что устройство выбрано оперой - не обязательно к реализации
  14. #define XBP_RESERV 10 //резервный порт (чтение из устройства)
  15. #define XBP_DESTROY 11 //деинициализация плагина
  16.  
  17. #define XBP_GET_SAVESIZE 19 //для сэйвов
  18. #define XBP_GET_SAVEDATA 20
  19. #define XBP_SET_SAVEDATA 21
  20.  
  21. #ifdef XBUS_EXPORTS
  22. #define XBUS_API __declspec(dllexport)
  23. #else
  24. #define XBUS_API __declspec(dllimport)
  25. #endif
  26.  
  27. extern "C"
  28. {
  29. XBUS_API void* _xbplug_MainDevice(int proc, void* data);
  30.  
  31. #ifdef XBUS_EXPORTS
  32. BOOL APIENTRY DllMain( HMODULE hModule,
  33.                        DWORD  ul_reason_for_call,
  34.                        LPVOID lpReserved
  35.                                          );
  36. #endif
  37. };
  38.  
  39. #ifndef XBUS_EXPORTS
  40. #pragma comment(lib, "IsoXBUS.lib")
  41. #endif
  42.  
  43. #endif
  44.  
  45.  

Если кто хочет сделать поддержку фото и аудио дисков - вперед! :)
Патенты описывающие шину тут: http://altmer.arts-union.ru/3DO/docs.htm, еще советую заглянуть в SDK.
« Последнее редактирование: 11 Март 2009, 21:26:48 от Altmer »
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #1 : 11 Март 2009, 14:33:55 »
Все процедуры типа XBP_SET_ - передают 8-битные данные, поскольку шина 8-битная, аналогично для XBP_GET_.

Вот пример функции _xbplug_MainDevice:

cdrom_Device isodrive;

void* _xbplug_MainDevice(int proc, void* data)
{
 uint32 tmp;
 void* xfisonew;
 switch(proc)
 {
case XBP_INIT:
isodrive.Init();
return (void*)true;
case XBP_RESET:
if(!data)
{
isodrive.Destroy();
isodrive.Init();
}
else if(((char*)data)[0])isodrive.InitISO((char*)data);
else isodrive.InitCD();
break;
case XBP_SET_COMMAND:
isodrive.SendCommand((unsigned char)data);
break;
case XBP_FIQ:
return (void*)isodrive.TestFIQ();  //фактически - возвращается булева переменная: 0 - нет прерывания, 1 - есть
case XBP_GET_DATA:
return (void*)isodrive.GetDataFifo();
case XBP_GET_STATUS:
return (void*)isodrive.GetStatusFifo();
case XBP_SET_POLL:
isodrive.SetPoll((unsigned int)data);
break;
case XBP_GET_POLL:
return (void*)isodrive.GetPoll();
case XBP_DESTROY:
isodrive.Destroy();
break;
case XBP_GET_SAVESIZE:
tmp=sizeof(cdrom_Device)+12;
return (void*)tmp;
case XBP_GET_SAVEDATA:
tmp=12;
((uint32*)data)[0]=0xfefefe01;
((uint32*)data)[1]=fs3do_SecPosition(isodrive.fisonew);
((uint32*)data)[2]=fs3do_SubPosition(isodrive.fisonew);
memcpy(&(((uint8*)data)[tmp]),&isodrive,sizeof(cdrom_Device));
break;
case XBP_SET_SAVEDATA:
if(((uint32*)data)[0]!=0xfefefe01)return NULL;
xfisonew=isodrive.fisonew;
memcpy(&isodrive,&(((uint8*)data)[12]),sizeof(cdrom_Device));
isodrive.fisonew=xfisonew;
fs3do_DirectSeek(xfisonew, ((uint32*)data)[1], ((uint32*)data)[2]);
return (void*)1;
 };

 return NULL;
}


- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #2 : 11 Март 2009, 21:01:22 »
Вот некоторая инфа по протоколу сидюка:
http://www.chiark.greenend.org.uk/~theom/electronics/panasoniccd.html
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #3 : 22 Декабрь 2009, 23:19:15 »
хочу уточнить
1)там описывается распиновка sanyo , а fz и goldstar биосы не будут глючить на эмуляторе или все сд по распиновке одинаковые у 3do?просто на моем fz от силы 20-22 вывода но не как не 40!!!

2)а как прозванивают и узнают распиновку?

3)и раз ты уже в курсе распиновки что означают выводы:
6 operation Mode bit 0
14 CD-Status bit 0
20 CD-Status bit 1
26 CD-Status / Data enable
28 CD-Status bit 3

вот еще вариант распиновки http://pinouts.ru/Storage/CdRomPanasonic.shtml
« Последнее редактирование: 23 Декабрь 2009, 10:34:41 от Black Jack »

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #4 : 23 Декабрь 2009, 10:57:12 »
1) Распиновка не имеет отношения к эмуляции, и насколько мне известно эта распиновка соответствует разъему для 3DO-Blaster'а. На FZ-1 например на раяъем выведен сам XBUS, т.е. там можно раскопать дорожки интерфейса и определить какие ножки нужно оторвать на остальных приставках, что бы сделать внешний привод или флешь, но у меня нет такой консоли, так что если решил ковырять это дело - рекомендую начать с нее, а лучше с 3DO-Blaster'а.

2) Строго говоря - распиновку прозвонить нельзя, но можно попытаться вычислить какой контакт для чего с помощью анализа соединений дорожки с элементами платы, тестера и асциллографа.

3) Читай доки, тут вроде табличка приведена с назначениями в скобках: http://www.chiark.greenend.org.uk/~theom/electronics/panasoniccd.html
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #5 : 23 Декабрь 2009, 11:11:27 »
1)так я и говорю у меня 3 шлейфа по несколько выводов + 2х2 питание на моторчики, а на схеме один разъем!!!

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #6 : 23 Декабрь 2009, 11:14:52 »
1)так я и говорю у меня 3 шлейфа по несколько выводов + 2х2 питание на моторчики, а на схеме один разъем!!!


Мы о разных вещах говорим. Ты видимо про FZ-10 - там сидюк интегрирован с материнкой, и эти разъемы - они низкоуровневые, а интерфейс XBUS на плате разведен и искать его там довольно непросто, какие дорожки, я знаю, но точно определить какая за что отвечает не вышло.
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #7 : 23 Декабрь 2009, 11:27:01 »
мож скинишь тогда распиновку exp-30-pin?

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #8 : 23 Декабрь 2009, 11:43:24 »
мож скинишь тогда распиновку exp-30-pin?

Во первых мне ее искать - пол дня, во вторых - к этому разъему даже если прилепить сидирум - приставка его не воспримет, лишь нулевое устройство является загрузочным.
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #9 : 23 Декабрь 2009, 11:57:38 »
ну скинь пожалуйста, попробую помучать ,мож обманку какую придумаю:)

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #10 : 23 Декабрь 2009, 13:12:14 »
ну скинь пожалуйста, попробую помучать ,мож обманку какую придумаю:)

Если тебе удасться обмануть ОСь, то и определить распиновку - труда не составит ;)
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #11 : 23 Декабрь 2009, 13:15:16 »
так мне надо сначало подключить сидюк а потом уже обманку придумывать.

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #12 : 23 Декабрь 2009, 13:18:05 »
так мне надо сначало подключить сидюк а потом уже обманку придумывать.

Не хочу красть у тебя бесценный опыт :)
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"

Оффлайн Black Jack

  • Частый гость
  • **
  • Сообщений: 63
Re: XBUS
« Ответ #13 : 23 Декабрь 2009, 13:28:19 »
так мне надо сначало подключить сидюк а потом уже обманку придумывать.

Не хочу красть у тебя бесценный опыт :)
да блин скинь в личку я никому не дам!
смысл мне с нуля все делать ?

Оффлайн Altmer

  • Администратор
  • Ветеран
  • *******
  • Сообщений: 4221
Re: XBUS
« Ответ #14 : 23 Декабрь 2009, 13:33:00 »
Смысл в том, что бы прочувствовать всю прелесть данного процесса ))))
Не буду я рыться в мукулатуре сейчас, могу лишь сказать, что разъем совпадает с патентом по парядку ног, за исключением вроде бы того, что кое-где вставлены дополнительные земли, с какой стороны на какую - не помню, и помоему каких-то сигналов там не хватает, каких - тоже не помню.
- Разве ты не устал от борьбы, от каменистых дорог?
- Нет.
- Как странно, ведь многие так ценят покой...
                                             E. Гуляковский, "Сезон туманов"