X16 joystick ports

GPP

New Member
Dec 11, 2019
3
0
1
I posted also in youtube video but maybe this is a more appropriate place :)
I was thinking that Nintendo could create legal problems if X16 will use NES ports or its data bus protocol so why don't retain compatibility with Commodore family using an DB9 connector?

The DB9 port could in teory support 4 directions and 3 buttons, one standard as C64/Atari and other two mapped in the X and Y axes of paddle pins (in teory it could use more buttons multiplexing lines with some resistors). It would be cool if paddles could be used too even if in this case we can have only a single button (or maybe more than one using for example one or more joystick direction pins)

In addition, with a DB9 connector, it's simpler to build a controller with standard parts (arcade parts, joysticks, buttons, microswitches or whatever you want to use to give an input to the machine) without sacrifice a NES pad and, finally, the X16 chip count should be smaller too because it doesn't have to deal with Nintendo bus logic.

What do you think?

GPP
 

scott1328

New Member
Jul 22, 2019
2
2
3
I posted also in youtube video but maybe this is a more appropriate place :)
I was thinking that Nintendo could create legal problems if X16 will use NES ports or its data bus protocol so why don't retain compatibility with Commodore family using an DB9 connector?

The DB9 port could in teory support 4 directions and 3 buttons, one standard as C64/Atari and other two mapped in the X and Y axes of paddle pins (in teory it could use more buttons multiplexing lines with some resistors). It would be cool if paddles could be used too even if in this case we can have only a single button (or maybe more than one using for example one or more joystick direction pins)

In addition, with a DB9 connector, it's simpler to build a controller with standard parts (arcade parts, joysticks, buttons, microswitches or whatever you want to use to give an input to the machine) without sacrifice a NES pad and, finally, the X16 chip count should be smaller too because it doesn't have to deal with Nintendo bus logic.

What do you think?

GPP
Any patents on the NES controller/ports would have expired long ago. Copyright doesn't apply to hardware implementations as long as no software is copied from NES in support of the hardware.
 
  • Like
Reactions: parejf
May 22, 2019
539
282
63
I was thinking that Nintendo could create legal problems if X16 will use NES ports or its data bus protocol so why don't retain compatibility with Commodore family using an DB9 connector?
As Scott said, the patents for the NES are no longer valid. So that's not really an issue.

(in teory it could use more buttons multiplexing lines with some resistors).
Using resistors to multiplex is not a great choice, since that only allows for one button at a time to be pressed. The way everyone multiplexes keyboards and controllers these days is with a matrix.

Essentially, you have a number of columns and rows, and you read the state of each row, one at a time...

Consider this:
1576090274960.png
--- https://www.researchgate.net/figure/Matrix-keyboard-connection-to-ports_fig6_317699310

Each key on this matrix connects one column to one row. The keyboard controller energizes D0, then reads A0-A3. That gives you the state of the top row of keys. Then it turns on D1 and does the same thing. Once you have read all 4 rows, you know the state of all 16 keys on the pad.

As you may have guessed, this is enough buttons for an SNES keypad - in fact, you can get by with a 3x4 matrix, since the SNES controller only has 12 buttons.

Since that would be 7 pins, you can actually plug that into a DE9 jack. Which would be a disaster. Sega did that with one of its controllers - made the connector the same size as the Atari joystick connector, and it destroys the VIA/CIA chips on any non-Sega system you plug the game pad into.

So using the DE9 connector for a non-Atari joystick is a bad idea.

In addition, with a DB9 connector, it's simpler to build a controller with standard parts (arcade parts, joysticks, buttons, microswitches or whatever you want to use to give an input to the machine) without sacrifice a NES pad
You don't need a DE9 connector (there is no such thing as DB9) to do that. We could do that with some other connector type, such as a mini DIN connector. There are tons of connectors out there besides the D-Sub connectors, and it wouldn't be hard to find an 8-10 pin connector that does the job.

As to "sacrificing an NES controller", that's absolutely not necessary. Any microcontroller can be programmed to talk in SNES langauge, and so a cheap Arduino would make an excellent joystick driver.

finally, the X16 chip count should be smaller too because it doesn't have to deal with Nintendo bus logic
Actually, the NES design uses fewer pins, and the logic is handled by the CPU. So the NES design is the most space an cost-efficient design (on the computer side, at least.) It can also, theoretically, handle different types of controllers, too, such as analog flight sticks or even things like Wii style controllers. It's just a matter of encoding the data in a clocked serial format.

I'm sure that, by the time the CX16 reaches production, we'll start seeing all kinds of joystick interfaces: people using a Raspberry Pi to interface USB game pads or using Arduinos to make arcade controllers. It will be interesting to see what people come up with.
 
  • Like
Reactions: grommile

BruceMcF

Active Member
May 19, 2019
174
52
28
I posted also in youtube video but maybe this is a more appropriate place :)
I was thinking that Nintendo could create legal problems if X16 will use NES ports or its data bus protocol so why don't retain compatibility with Commodore family using an DB9 connector?

The DB9 port could in teory support 4 directions and 3 buttons, one standard as C64/Atari and other two mapped in the X and Y axes of paddle pins (in teory it could use more buttons multiplexing lines with some resistors). It would be cool if paddles could be used too even if in this case we can have only a single button (or maybe more than one using for example one or more joystick direction pins)

In addition, with a DB9 connector, it's simpler to build a controller with standard parts (arcade parts, joysticks, buttons, microswitches or whatever you want to use to give an input to the machine) without sacrifice a NES pad and, finally, the X16 chip count should be smaller too because it doesn't have to deal with Nintendo bus logic.

What do you think?

GPP
It increases chip count. Two joysticks this way is 14 lines. Two joysticks the NES way is a minimum of 1 serial clock (bussed), 1 select (common), 2 MISO lines (always read in parallel), or more like 1 serial clock (bussed), 2 select lines (one per joystick), and 2 MISO lines (read independently). So 14 pins versus 4 to 5 pins. Power and ground on either but those are not using up VIA ports.

Also, it's easy to make a widget that will read C64 / Atari / Sega 2 button joysticks and put it on an SNES port, just use an 8bit parallel to serial shift register similar to the one in the NES.
 

GPP

New Member
Dec 11, 2019
3
0
1
As Scott said, the patents for the NES are no longer valid. So that's not really an issue.

[....]

As you may have guessed, this is enough buttons for an SNES keypad - in fact, you can get by with a 3x4 matrix, since the SNES controller only has 12 buttons.

Since that would be 7 pins, you can actually plug that into a DE9 jack. Which would be a disaster. Sega did that with one of its controllers - made the connector the same size as the Atari joystick connector, and it destroys the VIA/CIA chips on any non-Sega system you plug the game pad into.

So using the DE9 connector for a non-Atari joystick is a bad idea.
Hi Tom,
thank you for your reply. Using an arduino to do the signal conversion isn't a bad idea. I can't figure how to do it but I think many project will come to do it.

In general the idea to pick old peripherals or chips to use in new systems, imho, is a bad idea because of depletion of the old hardware.
Using an "old" chip (SID, VIA, etc) or a NES controller that must be modded because, for example, the computer connector is different, from my point of view leads to a way yo approach retrocomputers that I don't like.

Regarding the DE9 controller and the extra buttons, could it be feasible use the analogic lines for more buttons? I read that Commodore did it with the second fire button of C64GS
 
Last edited:

GPP

New Member
Dec 11, 2019
3
0
1
It increases chip count. Two joysticks this way is 14 lines. Two joysticks the NES way is a minimum of 1 serial clock (bussed), 1 select (common), 2 MISO lines (always read in parallel), or more like 1 serial clock (bussed), 2 select lines (one per joystick), and 2 MISO lines (read independently). So 14 pins versus 4 to 5 pins. Power and ground on either but those are not using up VIA ports.

Also, it's easy to make a widget that will read C64 / Atari / Sega 2 button joysticks and put it on an SNES port, just use an 8bit parallel to serial shift register similar to the one in the NES.
I understood and I see also a nice side effects.. Less number of lines could lead a more number or controllers... like 4 iinstead of 2? :)
 
May 22, 2019
539
282
63
Regarding the DE9 controller and the extra buttons, could it be feasible use the analogic lines for more buttons? I read that Commodore did it with the second fire button of C64GS
Yes, the paddle lines can be used for two more buttons. There are some older game pads that work that way.
 

BruceMcF

Active Member
May 19, 2019
174
52
28
I understood and I see also a nice side effects.. Less number of lines could lead a more number or controllers... like 4 iinstead of 2? :)
Certainly ... if you have a gizmo that passes through the control signal to both, but multiplexes the SCLK and MISO line to controller "1A" for eight or sixteen clocks, then flips and multiplexes the SCLK and MISO line to "1B", you can piggy back two controllers on each of two ports. The port reader program just needs to have a separate control select and read byte routine and the using program reads two or four bytes.

Or to have two Atari/C64 joysticks on a single NES port, have two serial shift registers and link the serial out of one to the serial in of the other. Which is, in effect, how Nintendo supported the extra buttons on the SNES controller, since that makes two 8bit serial shift registers act like a single 16bit serial shift register.
 
Last edited: