Автор Тема: точная эмуляция порта джоя (GENS) через LPT...  (Прочитано 5161 раз)

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

Оффлайн ALKO

  • Пользователь
  • Сообщений: 179
  • Пол: Мужской
  • Петросян он и на эму-лэнде Петросян.
    • Просмотр профиля
Как сэмулировать порт джоя через LPT, что б он в точности повторял порт джоя сеги (и на вывод тоже) ?
Хочу приконэктить сегу к ПК для игры Zero Tolerance.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7413
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #1 : 07 Февраль 2011, 18:09:18 »
ЛОЛ, и как ты себе это представляешь?

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #2 : 07 Февраль 2011, 19:06:33 »
В принципе такое реализуемо. ЛПТ устарел, уже есть готовые девайсы (кустарные) для подключения сеги через УСБ. Но переделывать эмулятор сеги так, чтобы отправлял сигналы от второго джойстика эмулятора в сторону обычной сеги, придётся.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7413
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #3 : 08 Февраль 2011, 06:59:09 »
Мои записульки исследования линка ZT.
#D6 = Loop far D5
#D5 = Challenge/Control

8us - acknowledge

[SHORT]
Master             = 36 transactions / 9 words (1+7+1)
Change Direction   = 2 transactions
Slave              = 12 transactions / 3 words (1+1+1)
Change Direction   = 2 transactions
Master             = 6 transactions / 1,5 word
Total Transactions = 58
Total Time         = 1,56 ms
Required speed     ~ 297435 bit/s (1 byte = 1 transaction)

[LONG]
Master             = 36 transactions / 9 words (1+7+1)
Change Direction   = 2 transactions
Slave              = 40 transactions / 10 words (1+8+1)
Change Direction   = 2 transactions
Master             = 6 transactions / 1,5 word
Total Transactions = 86
Total Time         = 2,33 ms
Required speed     ~ 295278 bit/s (1 byte = 1 transaction)


TimeOut Loop:

M:
ROM:0001BE4C   53 45         subq.w  #1,d5      4+0
ROM:0001BE4E   67 0C         beq.s   loc_1BE5C  12+0
ROM:0001BE50   08 13 00 06   btst    #6,(a3)    4+8
ROM:0001BE54   66 F6         bne.s   loc_1BE4C  10+0
Total:  38 clocks
$2000 times = 311296 clocks (for all)
@7,6MHz =



#D3..D0 - Data

$20 => A1000B (D6=In, D5=Out, D4=In, D3=In, D2=In, D1=In, D0=In)
a2 = A1000B (IRQ/DIR, 1 - OUT)
a3 = A10005 (DATA)
$0F => d2
$F0 => d3
A10005 (D5=0) => (D6=x, D5=0, D4=x, D3=x, D2=x, D1=x, D0=x) Challenge!

$00 => d1
READ_WORD() => READ_PACKET_SIZE => d7
if d7>0 = Cycle READ_WORD
READ_WORD() => SUMM!
(D5=0)
while D6=0 do loop, TimeOut=>Exit, (D5=1)
(D5=0)
while D6=1 do loop, TimeOut=>Exit, $2F => A1000B (D6=In, D5=Out, D4=In, D3=Out, D2=Out, D1=Out, D0=Out)
WRITE_WORD() => WRITE_PACKET_SIZE
if WRITE_PACKET_SIZE>0 = Cycle WRITE_WORD
WRITE_WORD() = SUMM!
$20 => A1000B (D6=In, D5=Out, D4=In, D3=In, D2=In, D1=In, D0=In)
(D5=1) while D6=0 do loop, TimeOut=>Exit
(D5=0)
READ_WORD()
while D6=0 do loop, TimeOut
(D5=1)
while D6=0 do loop, TimeOut
Return

Send_Packet:









#
READ_WORD: (d5=0)
L1: TimeOut? => Exit
    PORT_D6=0? => L1
    PORD_D=>d7
    d7=>SP
    A10005 (D5=1) => (D6=x, D5=1, D4=x, D3=x, D2=x, D1=x, D0=x) Challenge!
L2: TimeOut? => Exit
    PORT_D6=1? => L2
    PORD_D=>d7
    d7=d7<<8
    A10005 (D5=0) => (D6=x, D5=0, D4=x, D3=x, D2=x, D1=x, D0=x) Challenge!
L3: TimeOut? => Exit
    PORT_D6=0? => L3
    PORD_D=>d7
    d7=d7<<8
    A10005 (D5=1) => (D6=x, D5=1, D4=x, D3=x, D2=x, D1=x, D0=x) Challenge!
L2: TimeOut? => Exit
    PORT_D6=1? => L2
    PORD_D=>d7
    d7=d7<<8
    A10005 (D5=0) => (D6=x, D5=0, D4=x, D3=x, D2=x, D1=x, D0=x) Challenge!
    d7=d16(d23..d8)
    Exit

#WRITE_WORD:
D5>1>0>1>0
Думаешь, ты осилишь это?

Оффлайн ALKO

  • Пользователь
  • Сообщений: 179
  • Пол: Мужской
  • Петросян он и на эму-лэнде Петросян.
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #4 : 08 Февраль 2011, 14:55:13 »
 :lol: запросто!

Оффлайн Rumata

  • Модератор
  • Сообщений: 24543
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #5 : 08 Февраль 2011, 20:51:16 »
Ещё не плохо помнить, что Винда прямого обращения к порту не допустит.
И так же тема явно не соответствует разделу. Для таких идей есть  Эмуляция и эмуляторы. Туда и отправляемся

Оффлайн GManiac

  • Пользователь
  • Сообщений: 1284
    • Просмотр профиля
Re: точная эмуляция порта джоя (GENS) через LPT...
« Ответ #6 : 09 Февраль 2011, 12:32:58 »
Ещё не плохо помнить, что Винда прямого обращения к порту не допустит.
Не сказать, что это большая проблема. Есть всякие port.dll и проч. У меня в XP с LPT-портом работало нормально, вспоминаю тот дампер через Сегу СД.
Вот другое дело, если он сделает свой эмуль, а ЛПТ-порта нету - это уже проблема ;) Все эти заменители порта - ерунда. Надо переходить на УСБ.