|
Post by dshadoff on Jul 17, 2021 15:30:06 GMT
I was wondering if there was a place I could find any information about controllers for the PC-FX... that is to say: - pinouts ? - how is the data organized ? Is it 4 bits at a time like the PC Engine ? - how does a 'read' take place ? Is it scanned similarly to the PC Engine ? (i.e. a toggle to read one set of 4 bits versus the other, and a 'reset' line ?) - how does FX Mouse information get read ? It took us a while to figure out how this was read for the PC Engine, so I'm not sure whether this is available yet...
|
|
|
Post by dshadoff on Jul 17, 2021 16:12:19 GMT
So, I just started looking for some of this on my own, and was surprised to find some really good, recent information here: hackaday.io/project/170365-blueretro/log/191237-pc-fx-interfaceAccording to that site, the controller is polled in a way which is more similar to a NES or SNES than a PCE - serially. The bit-clock looks to be almost exactly 3 microseconds per cycle. It's not clear whether the 5 scans per fame are for redundancy checks or for future-use multiplayer add-ons. Of course, the real difficulty would be trying to find connectors... would anybody here have the skills to create a 3D printer model for the plastic portion of the connector ? I'm interested in making it easier to make (or otherwise obtain) replacement controllers/mice using modern counterparts, since the original units seem pretty rare and expensive.
|
|
|
Post by dshadoff on Jul 21, 2021 16:07:06 GMT
Following up on the connection to the PC-FX joypad port, I have found the following connectors to be suitable: 1) Cable-based attachment - for individual wires; useful for prototyping but not for a final product: TE connectivity part number 794231-1 www.mouser.ca/ProductDetail/571-794231-12) Machine-pin type, looks suitable for PC board mount: Mill-Max part number 4401-0-15-80-18-27-04-0 www.mouser.ca/ProductDetail/575-4401015801827040I will be running some tests with the cable-based ones over the next couple of weeks, and will also try to make a PC board which aligns the other type of pins, in an effort to act as a new style of connector (also in the next couple of weeks). I will update here if/when I have news to report.
|
|
|
Post by turboxray on Jul 23, 2021 23:49:49 GMT
This is perfect, since I just picked up a replacement PCFX
|
|
|
Post by dshadoff on Aug 6, 2021 22:35:37 GMT
So.... it all works ! The information on the website about the PC-FX protocol is accurate, but when I read it really close, it had some misleading bits (such as what version of SPI was required). Here is a description of the signal, in short:
1) The /LATCH signal is taken as the initial clock signal to send the DATA back to the console. 2) All other bits are sent during the rising-edge of the CLOCK signal until bit #32; the DATA is then normally left in 'high' state (although this doesn't seem to be required) 3) There are 5 LATCH/CLOCK scans done on each port during one scanning interval (which should normally be per video field - i.e. 60Hz). The CLOCK signal has a rising pulse during the LTCH-low signal only in the first of these 5 scans; however, as mentioned in 1) above, the first data bit should be sent while LATCH is low, regardless of the state/transition of CLOCK. Additional findings:1) The regular controller sends the data back approximately 60ns after the rising edge of CLOCK. 2) Even though I expected better than this, my RP2040 circuit sends data back roughly 120-170ns after the rising edge of CLOCK. The PIOs function at 125MHz so a tight loop of watching the signal change should have 8-24ns propagation delay (depending how you count cycles)... however, there is additionally the propagation delay through the level-shifters both inward to the MCU, as well as outward from the MCU. While I'm not very happy with the length of this delay (roughly half of it is missing an explanation), it ultimately has no bearing on the outcome: the CLOCK high duration is ~1500ns, and the PC-FX side samples the DATA line as the CLOCK transitions to low. Also, the PC-FX joypad connector I fashioned out of a PC Board and some pin connectors worked - but my measurements seemed a bit wrong (I had measured pin spacing to be 165mil, but it was hard to measure... it now appears that this should have been 150mil). I will submit a new revision of this board to improve it. I was able to make a reasonable-looking all-in-one adapter prototype (see pictures below). -> This can easily be improved later. The board is also a good proof-of-concept that other systems' gamepads can be adapted to the PC-FX, in case they are needed at some point. Dave
|
|
|
Post by turboxray on Aug 9, 2021 15:51:01 GMT
Yeah I was wondering about how you were going to do the connector. Nice!!! Can't wait to try this out
|
|