VOGONS


First post, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

I know the latency is awesome but I'm coming up empty searching bandwidth.

I love this reference: https://en.wikipedia.org/wiki/List_of_interface_bit_rates but alas, no game port listed.

Found this: https://www.descentbb.net/viewtopic.php?t=14252 Logitech's ADI protocol, transmits bits using the buttons at max 10 us per bit, million us in a second, four buttons a port, 8 bits/byte, 1024 bytes/k, 48.828kb/s. At least for Logitech's ADI protocol.

For theoretical max it should come down to max port polling rate of the four button pins.

Last edited by awgamer on 2019-04-09, 08:40. Edited 1 time in total.

Reply 1 of 11, by rasz_pl

User metadata
Rank l33t
Rank
l33t

sure, you have 4 pins to send data into the computer, but no way of synchronizing transfers

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 2 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

Obviously Logitech and Microsoft managed to solve any syncing issues to make their protocols work.

Reply 3 of 11, by rasz_pl

User metadata
Rank l33t
Rank
l33t

you cant just multiply 4 bits by ISA bus frequency and assume that to be the max

>For theoretical max it should come down to max port polling rate of the four button pins.

you need to waste cycles/bits on synchronization

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 4 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

(Shakes head) Port polling rate doesn't refer to ISA bus frequency, it's how many in/outs you can do.

Reply 5 of 11, by rasz_pl

User metadata
Rank l33t
Rank
l33t

no busy/wait cycle mechanisms on ISA gameports, you can hammer it as fast as your cpu allows

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 6 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

Right, that's what I'm thinking, as fast as the port can be polled in the confines of the isa/pci bus effective bandwidth.

Reply 7 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

P.S. Microsoft's sidewinder is slower than Logitech's ADI protocol, using only 3 bits for transmitting data. http://www.epanorama.net/documents/joystick/p … html#wheelpedal

On the plus side there's an AVR project for interfacing sidewinders. https://hackaday.com/2019/01/29/interfacing-t … ystick-to-avrs/

lpt, com & other joystick interfacing(lots of dead links): http://www.epanorama.net/documents/joystick/pc_misc.html

Reply 8 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

Effective bandwidth of ISA @ 8bit 4.77mhz being only 1mb after delays: https://www.evaluationengineering.com/home/ar … quisition-needs

By this account, polling a port takes a us: http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html, would make the gameport's theoretical max on the original pc/xt 488.28kb/s. I'm finding effective rate of PCI being 62-100mb/s depending, so roughly 7.5-12mb/s should be theoretical max for a gameport on a 33mhz PCI sound card.

Reply 9 of 11, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Also note that the game port needs some time to "recharge" and that older game ports were speed-sensitive.
Some had variable resistors to correct that little issue.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 10 of 11, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Thats the analog part (558), afair speed sensitivity was due to stupid 16 bit nop busy loops in game code breaking on faster cpus.

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 11 of 11, by awgamer

User metadata
Rank Oldbie
Rank
Oldbie

558 measures the potentiometers, the buttons are directly connected to the ISA bus: http://www.epanorama.net/documents/joystick/pc_joystick.html so the estimated theoretical max holds. Logitech and Microsoft use the analog input to signify the start of a tx, so if mirroring how they operate, a following tx start could be limited to how soon it could follow the preceding one, but the tx itself could be the max button rate. If Logitech/Microsoft's 10us rate were taken as the 558 recharge delay, that'd be 40bits/5bytes, how much could be tx on the button pins in 10us. Even if you were starting a new transfer as fast as it could be done consecutively, every 10us, as long as you were transferring 40+ bits per tx there would be no loss in transfer rate from a recharge.