I have an Indy setup with an Ultra 64 board. I lack the ever elusive Joybusboard for connecting standard controllers. I'm looking to make a replacement but I've hit an interesting stumbling point. The connector ports on the back look to be RJ11 style but the RJ11 connectors I have don't seem to fit. It's like it is a slightly smaller version of this connector. I can cut them down to fit but I was wondering if anyone knew exactly what they are as I'd rather get the appropriate header for the break out cable I am making.
I might be able to help you figure out the pinouts for the joy board... Jax184 posted a nice photo of the underside of the board... http://www.assemblergames.com/forum...SGI-Ultra64-dev-set-manual-scans-dev-software Here's the pinout to the PIF (should be fine with regards to the controllers / EEPROM signals, but a couple of other signals aren't 100% understood yet)... I don't think the pinout of the PIF would have changed at all since the Dev board. Good to keep that in mind though. The N64 controller port pinout is... 1. +3V3 2. Data 3. Ground It looks like the original Joybus board used some buffer chips on it for the controllers, just like the N64 mobo. But, you can apparently skip those and connect the controllers directly to the PIF. This may have a slightly higher risk of damage to the PIF if anything does short out, but should in theory work OK. (a few people on Benheck have bypassed the buffer chip on their N64 portables without any problems. I haven't tried it myself yet.) You basically just connect the Data pin on each controller port to the two corresponding pins on the PIF (join each pair of PIF pins together)... Controller Port 1 Data (pin 2) to PIF pins 15 and 16. Controller Port 2 Data (pin 2) to PIF pins 17 and 18. Controller Port 3 Data (pin 2) to PIF pins 19 and 20. Controller Port 4 Data (pin 2) to PIF pins 21 and 22. The Joybus board also has the EEPROM on it ofc, but you can pinch one from an old cart. Using the PIF pinouts and a multimeter, it shouldn't take long to figure out the connections on the RJ11 sockets. Sadly, the photo of the underside of the board has that sticker right over the ribbon connector pins, otherwise we could have found the pinouts just be tracing the tracks. I have no idea why the RJ11 plugs won't fit tbh. They are 6-pin types on the Joybus board and look fairly standard? Do you have a multimeter handy? I'm off to sleep now (it's 4:00am here), but I can help more with this later. Or, somebody else might chime in. OzOnE.
I think the EEPROM needs the 1.6MHz clock and /Reset signals too, but that can be traced on a cart PCB later. Just had a thought - Jax184 said "no way to connect the expansion pak" on the Dev Board... That is true, but you could actually change the two 2MB RDRAM chips for two 4MB chip from an Expansion Pak. This works fine on a retail RCP, so should work OK on the U64 board too. Although, I'm not sure I'd want to mod the board at all - if I had one, I'd cherish it. lol Just noticed as well - looks like the U64 has the buffer chip on the main board for the controllers? (U2, just above the PIF) I'm fairly certain the two small chips on the Joybus board (U1 and U2) are just extra buffering then. It looks like the EEPROM and CIC signals connect via the fifth RJ11 on the Dev Board. I don't see an actual CIC chip anywhere, so maybe it just has different boot code in the PIF, or emulates the CIC in another chip? OzOnE
Still awake. lol I see link83 asked about the Dev Board PIF before - seems it does have "region free" boot code after all, so doesn't require a CIC... http://www.assemblergames.com/forum...ers-stay-away*&p=298917&viewfull=1#post298917 I'd be surprised if it works with the newer Rare games which have the different CIC, but then most of those ROMs wouldn't fit in the U64 DRAM anyway. OzOnE. P.S. Right, I'm going to sleep now.
I've heard one theory that the bi-directional serial protocol that is carried on the data of a commercial N64 controller may be broken into send and receive signals from the devboard and the joybusboard is combining the two to create the bidirectional stream. This seemed to make some sense since there exists dev N64 controllers that could directly connect to the ports on the Ultra64 board with all 6 lines connected. The concern I have is that it looks like your PIF signal map has the bi-directional signals going straight into the PIF and not breaking the signal into component parts. What do you think of the split signaling theory? Yes I have a multimeter and an oscilloscope here. My plan was to connect the RJ11 connectors to the Ultra64 and then run wires to a bread board for easier signal analysis. I have a sacrificial N64 board (dead board) here to salvage game ports from as well.
That circuit seems to be the controller interface from a retail N64 console - the device that converts the separate send and receive lines from the PIF is the 'LS125 chip. They just tie the input low and apply the tx data to the (active low) enable input - so the data line is pulled down on a '0' and floats high on '1'.
Hey, Mr TriMesh. How's it going. @AltRN8 - As TriMesh said, and AFAIK, the N64 controllers use open-collector outputs to communicate, so it never actually drives the Data line "High", it just allows it to float and a pull-up resistor does the rest. It can only ever drive the signal to Ground, so there's no risk of contention etc. So, it should be fine to just connect the PIF pins together, then connect the controller Data lines directly to the PIF. One of each pair of pins on the PIF is the open-collector "output", and the other is the input which senses when the controller side pulls the line Low. I guess they just used the LS125 to give it a bit more of a boost, and to isolate the controller ports from external noise etc. As I say, I haven't tried this connection myself yet, but will be very soon. But, it looks like the U64 has the same 74LS125 on it anyway, and it just connects the Data signals through to the Joybus board like the N64 does. I wouldn't expect the extra buffering on the Joybus board itself is super important if you just want to use it with standard controllers tbh. Thanks for the photo of the underside - I will quickly figure out the pinouts for it. Could you please confirm what the U1 / U2 chips on the Joybus board are though - they are likely also LS125 buffer chips. Regards, OzOnE.
OK, done a basic pinout for the Joybus Ribbon port (separated by the 5 RJ11 plugs)... U64 JoyBus Board ribbon pinouts... 1. nc? 2. +3V3 3. U, PIN (Cont 1 Data Out / Gate). 4. GND 5. GND 6. U, PIN (Cont 1 Data In). 7. nc? 8. +3V3 9. U, PIN (Cont 2 Data Out / Gate). 10. GND 11. GND 12. U, PIN (Cont 2 Data In). 13. nc? 14. +3V3 15. U1, PIN 3. (Cont 3 Data Out / Gate). 16. GND 17. GND 18. U, PIN (Cont 3 Data In). 19. nc? 20. +3V3 21. U1, PIN 5. (Cont 4 Data Out / Gate). 22. GND 23. GND 24. U, PIN (Cont 4 Data In). 25. U3, PIN 6. 26. +3V3 27. U3, PIN 5 (with pull-up R9). 28. GND 29. GND 30. U3, PIN 3. I can't really see where the signals go to U1 / U2 on the board, 'cos the traces go underneath them etc. But, I'm 99% sure the controller port signals are OK, as I traced them on the U64 board too (using my old Paint Shop Pro overlay method. ). The signals for the BU9850 EEPROM will be something like CLK, Data, and /Reset, so those can be confirmed with a multimeter to the PIF chip. The two pins on the PIF chip that are often joined (23 and 24) are normally the EEPROM data signal. I see now that the two diodes on the Joybus board (D1 and D2) are actually dual-diode packages. So, D1 protects controller ports 1 + 2, and D2 protects ports 3 + 4. This will be for extra ESD / over-voltage protection, but again, I don't think it's mandatory. I think the standard controllers will work fine by simply hooking them up directly to the RJ11 ports on the U64. eg... RJ11 Pin 2 to N64 controller Pin 1 (+3V3) RJ11 Pin 3+6 to N64 controller Pin 2 (Data) RJ11 Pin 4+5 to N64 controller pin 3 (Ground) Then hook up an EEPROM, and you should be good to go. Just a small disclaimer - I'm not responsible if something does explode, but I have faith that the above will work just fine. OzOnE.
Wow thanks to both of you this has ben amazingly helpful. Now I just need to work on this jack issue (which I've learned is probably technically RJ12). I'll try sanding one of the ones I have down and see if I it lines up with the connectors.
No problem. I think I know what you mean - some of those RJ11 plugs I used years ago wouldn't fit into the socket I expected. And yep, RJ12 is just the 6-pin version AFAIK. Does the width of a standard RJ11/RJ12 not fit width-ways? OzOnE.
btw, if anyone knows where I can get hold of a U64 dev board, please let me know. I'd gladly buy an Indy setup just to use it. I know pretty much the same stuff can be compiled on a PC these days though, and then tested on an Everdrive or whatever, but a U64 is a great thing to own. OzOnE.
Sadly, they are hard to get - apparently, SGI threw a whole bunch on them in the crusher because they couldn't sell them except via Nintendo , and with the release of the KuC Partner 64 there was very little demand for the much more expensive Ultra 64 devboard (especially in view of the 16MB memory size limit on the SGI devboard).
Just got a U64 board (missing the joybus), and this method doesn't work for me. I did some investigating, and it looks like the U2 chip is not an LS125 buffer. I guessed from the code printed on the chip (LC04) that it's a hex inverter, and after some probing that does indeed seem to be the case. So from the PIF, the 4 controller data lines (16,18,20,22) all go directly to pin 6 of their respective RJ12 connector as stated above. The "G" lines (PIF pins 15,17,19,21), however, get sent to the inverter. After going through the inverter, the "G" line of each controller passes through a 220 Ohm resistor and is output via pin 3 of the respective controller's RJ12 connector. As for the joybus itself, this would suggest that perhaps the chip marked U1 is also a hex inverter. Why use 2 hex inverters? Perhaps for buffering, or maybe for compatibility (e.g. maybe the original dev controllers that didn't use the joybus (i.e. the ones that plugged directly into the U64 board) needed their G signals inverted, but the retail ones don't so another inverter was added to the joybus to undo the effects of the one on the U64...?). It seems like a strange theory but the traces on the joybus boards (at least the visible ones) are consistent with it. Anyway, does anyone know how the N64 sends controller signals? In particular, does it simply use the G line to control the LS125 and send signals that way (by bringing G high and low to make the LS125 output high-Z/low), or does it actually control the data line directly? I'm going to buy an LS125 and LS04 inverter tomorrow, and do some more testing to see if I can get this thing to work...
I know that the controllers use open-drain outputs, so the N64 or controller can only pull the Data line down to Ground, and they don't actually drive it to 3V3 (it just has a pull-up resistor in the controller and / or PIF.) Apparently, many portable modders found that you can simply connect the data pin of each controller directly to the pairs of pins on the PIF, and it still works fine (even without extra pull-ups added). IIRC, Marshall also said that the buffer on the N64 was probably for cutting down on RFI / EMI emissions. I think it could possibly be for helping to drive the longer cables too. So, with each pair of pins on the PIF, one of them driving the Data line Low (to send data TO the controller), and the other is just an input pin for receiving. Somebody did ask me about the U64 breakout board on another thread, and I reversed most of the board. I'll find it again and post on here later. EDIT: Oh.. I forgot it was this thread. lol (I was busy with a few other things, and just replied to the e-mail link.) OzOnE.
Did you ever actually test anything though? I haven't had any success yet in my testing. So, I understand that the data in and out lines can be tied together in a retail N64 which is what you described in post #9 above, but as I mentioned, it looks like the chip on the Ultra 64 board (U2) is not a buffer, but an inverter for the G line (data out). This means that the data out line on the Ultra board is flipped with respect to the data out line on a retail N64. I re-inverted the signal to "unflip" it using an HC04 hex inverter and then tied the unflipped data out signal to the data in line. To be concrete, my connections were the same as described in post #9, except with RJ12 pin 3 inverted... RJ12 Pin 2 to N64 controller Pin 1 (+3V3) RJ12 Pin 3 to inverter, then to N64 controller Pin 2 (Data) RJ12 Pin 6 to N64 controller Pin 2 (Data) RJ12 Pin 4+5 to N64 controller pin 3 (Ground) This didn't work either though...
Here's a little diagram I made showing how the LC04 chip is connected to the PIF - the resistance values are all 220 Ohms. The connections were determined using an Ohmmeter with the board not plugged in. I also did a very quick test using a Voltmeter to see the outputs of the LC04 chip while the board was running. The results were consistent with what you'd see in an inverter: Pin 1= 3.3V, Pin 2 = 0V (or high-Z), Pin 3 = 3.3V, Pin 4 = 0V (or high-Z) etc... Any ideas?