Universal PCB (eventually) thread

Im on it.

Huh. I hooked up the o-scope to a very old NES controller and watched the three lines. Didn’t really behave like I thought it would. The latch low is normally low, but shoots high for a split sec to begin the transaction. The clock is normally high, but shoots down for a split sec (a VERY short period of time, way longer than the ‘at rest’ high between each clock). I can’t really tell on the o-scope if the first clock down pulse happens before/after/or during the latch pulse up. The data line shoots out the 8 bits, than remains low afterwards.

Quick bite to eat and I’m back on it.

Okay, jotted down all the info on how the NES really works and put it into the nes.h file in case I need it again ever. Made a cable and booted up a SMB & Duck Hunt cartridge, which came up fine by the way. Everything appeared to work; A, B, the directions. Select and Start are flipped for some stupid reason, but they work, just with the wrong button. Played some SMB, which feels weird on a stick, but worked fine. Got to 1-2, and it did the ‘permanent pause’ you were talking about. Weird. Reset the NES, played just fine until the same spot in 1-2. Turns out that the problem happens when I did the combination of down+right+B+A.

I tweaked the code and made a little doohickey I’ve been procrastinating making that makes it easy to use the oscope to check the lines while its connected and running. The code tweaked hasn’t quite done it yet; everything works fine at the game select screen, but if I hit a diagonal, or go into a game, it bjorks. The data line remains entirely low even though the latch and clock signals are moving like usual. Its like the UPCB doesn’t see them anymore, or locked up. I’m not even sure how that’s possible, but I’ll keep on it.

Thanks for looking into it.

I know its odd to play NES with a stick but I am getting used to my stick since I can use it on just about every system I have. Plus for games like Double Dragons where jump is A+B, its a lot easier to have that assigned to a single button.

This thing has been really messing with my mind. Its a stupid simple protocol, and I mean that. There’s no reason for it to shit the bed like this.

Whatever causes this glitch causes the UPCB to not see the latch line go high. When it locks, it locks at a point where it is doing pretty much nothing but WAITING for that line to go low, and yet it still just sits, oblivious to the latch line going up. Very, very fucking weird. I’m still on it, and will get this SOB done, but bed calls for me now. I hope to make some progress tomorrow. I may have to ask for you to switch a pair of wires on the NES cable. The only line of the three I can set an interrupt on is current set for the clock line; I may swap them on my own and setup an interrupt to watch for the latch line. But, I will try to fix this without any changes to the pinout if I can.

Alright, pretty damn sure I got it figured out, but no promises 'till its tested later today. I’ve said that more than once and have had it come bite me in the ass.

I trimmed the code down to NOTHING but sitting and checking the status of the line. Seriously, nothing. It saw it was low and never moved. The latch line is connected to one of the USB lines on the board; I tried to sense it with that one, and nothing. If I reset the NES, the latch line would go high and stay there while reset. This would be seen just fine. I finally noticed something on the oscope though; when the latch line is high, it maxes out at about 2.5v; not the 5v high the clock and data lines are at. I checked the data sheet for the PIC, and for the latch line, it wont see it as high unless is is 0.8 Vdd or higher (power from the NES is 5v, so 0.8 Vdd=4v. Too high for the latch to trigger). For the USB line I tried to use as well, the high level is 0.7vdd; 3.5v, again too high. The high voltage required on RB0, 2.0v. I’m sorry, but it seems very likely a small tweak to the NES pinout will be needed; no more than swapping two of the NES wires, for sure.

So, as soon as I get back from the test I have to run and take, I’ll open up the cable, swap a pair of wires, test, and report back. crosses fingers

Hey Toodles, looking forward to getting my UPCB when they’re done.

I had a question that I hadn’t seen asked before. I know the UPCB doesn’t work in PS2 games played on a PS3 right now. However, if the PS2 code works flawlessly, using a PS2->PS3 convertor (like the Pelican one) should allow it to work, right?

Speaking of which, the FedEx guy left a door hanger for me to sign today for the parts, so the parts should be here tomorrow, and hopefully start mailing out the completed UPCBs starting monday, depending on how long assembly takes me (it is over 200 solder points per…grrr. Lots of soldering for me this weekend.)

I coulda sworn I put this into the first post, but I can’t find it so I’ll add it now; the PS1/PS2 support works just peachy on the real hardware. As of yet, I have not found any converters it works with, and since I’ve tested something like 4 different converters (old PSX->USB Radio Shack model, Pelican PS2->PS3, Innovation PS2->DC, and Magic Box PS2->Xbox) and none of them worked, I do not have high hopes for any other converters to work. [Side note: Magic Box and Innocation converters work just peachy with the UPCB’s Saturn support.]

Is this always going to be the case? Absolutely not. There is no reason the UPCB can’t be tweaked for better converter support, and it is definitely on the todo list. Right now, my UPCB todo list is this, in order:

  1. Assemble and test preordered UPCBs. Take lots of pictures for future Instructables.
  2. Ship out UPCBs and bare PCBs.
  3. Correct NES support.
  4. Extensively verify and test SNES support. Any fixes to NES will should make this very quick.
  5. Fix Saturn console support (Heh, Saturn is opposite of PSX. PSX works on hardware, but not converters, while Saturn works on converters but not hardware.)
  6. Improve PSX converter support.
  7. Gamecube support.

After that its a blur. I’m sorry the converter status wasn’t made more clear, but the first post will make this very clear.

I can give you some feed back on the SNES support. I also have a cable made up for that. I havent played much on the SNES with it other than Super Mario World, but I was able to go through the entire game from start to finish without having any problems. So unless other games act a little different, I dont think there are any problems with the SNES support.

Thanks for the update, although it’s rather disappointing to hear. Do you have any plans to try to get PS2 games, played on a PS3, to work with the UPCB? I suppose I should have asked before I bought, but with no way to play PS2 games other than my PS3 the UPCB just got a lot less useful for me. :sad:

Of course, but its gonna be difficult and it won’t be anytime soon. If we’re very very lucky, then just using the HID descriptor from a VSHG or SIXAXIS should do that. I don’t know how easy that sounds, but its definitely not too easy. If we’re not lucky, the time and difficulty to get it implemented go way up; if there are vendor specific security requests like the xbox and especially the xbox360 controllers have, then it gets obscenely hard. I don’t have any kind of ETA or guesstimate of how long it will be until it happens.

That’s for direct PS3 support. Getting the PSX/PS2 support tweaked so a Pelican adapter can be used will happen long before that, and is on the todo I already mentioned.

I feel like the purpose of this device is to not have to use converters – we get to have direct connection to the hardware. I wouldn’t think it would be too important to improve converter support… except maybe PSX to DC and PSX to Xbox360 because of the need of daisy chaining.

Damn, I thought I was set up to receive e-mail notifications on this topic, but didn’t get any. Now I have to make sure I “Subscribe” to it properly! I missed out on the pre-order when I really did want to pre-order.

I definitely agree with you in principle, but it’s just a matter of practicality. Using just my oscope, and maybe a snooping arduino board, I can troubleshoot the interaction with the converters and a PSX controller. I can tweak the code so that the UPCB behaves exactly how real PSX controller works including whatever tweaks will be needed to work on the converters. This should be done anyways if I’m gonna be serious about emulating the controllers. The native support for the more difficult systems is definitely desired, but will take a lot longer to implement, and require tools that I’ll literally have to build.

Shipments to Florence, KY, State College, PA, New Zealand, and Canada have all been mailed. The rest of the pre-ordered boards need to be assembled, and once they’ve been sent, I’ll put up info on kits in the Trading Outlet thread.

Bare PCB’s are sold out; all of the ones I have left are in kits.

Got your email Toodles, it’s all good. :tup:

Got the UPCB yesterday, thanks Toodles!

Now, is there anything I can do to have you bump up PS2 games on PS3 support ? :wgrin:

Link to the source code is on the first post of the thread. You can add whatever you’d like at your convienence, or even get someone else to add stuff. Any changes or patches to the code are always appreciated.:rofl:

Glad to hear it got there okay.

Number 1 and 2 are done: All assembled preorders have been assembled and shipped as of last Friday. Kit prices have been put up into the Trading Outlet thread, and as expected are cheaper than the last batch by $4. Also put up prices on programmed PICs.

Now, to work on #3 and get that damn NES going.

Chaosdragon13, try this out: http://www.marcuspost.com/downloads/upcb/nes_test_original.hex

Its compiled with program button support, and should use the same pinout as the NES cable you already made. Im hoping this will work for you immediately, without swapping the pins around from when you first made it. The one I tested I made it to SMB world 8-2 via Warp Zones without any hiccups, skipping, lag, or anything. It worked flawless.

Keep an eye out for the diagonals. According to the o-scope, it is telling the NES the diagonals correctly, but I had difficulty doing the duck-jumps in SMB. Mario wouldn’t duck unless the stick was Down; left/down and right/down wouldn’t cause him to duck. I am betting this is just a SMB thing, but I dont have any other games to test. Also, Start and Select have been swapped proper.

Please let me know how it works for you. If I get an all good from you, I’ll package everything up for another release.

Boards arrived today. Cheers Toodles. :tup: