danboid wrote: ↑Tue May 06, 2025 8:14 am
--- snip ---
I could send you a PCB if you want to test it out Jimmy? You can buy a full joystick kit off Aliexpress for about £5 and the only other thing you need is a SNES (extension) cable.
I thought I'd ask you as you're the only person I know who owns both a X16 and a Uzebox so you'll be able to use it either way.
Did you ever build your Uzebox Omega?
I actually forgot about the Uzebox, but have just ordered the components from Farnell and will get it built when the components arrive.
Not sure I actually want to built an Arcade joystick, but I will be happy to build the joystick controller and test it on the CX16.
Visit my Github repo
or my personal site with CX16/C64/6502 related information.
Feel free to contact me regarding any of my projects or even about meeting up somewhere near Denmark
It seems like it could also be a "two-out-of-three-button" Sega controller if you have a pull-up resister on Pin 9 and a pair of jumpers to take the second button from pin 9 and tie Pin 5 to pin 7 to +5v ... though you would have to refrain from plugging paddles into it when jumpered into Sega "2 out of 3" button controller mode.
That is, the 3 button Sega controller has +5v on Pin5, and the select line on Pin7. The select line on Pin7 changes some lines:
So if 5 and 7 are tied together and a Sega 3 button controller plugged in, the Sega controller gets its +5v from Pin5, and gets an "7 always selected" signal on Pin7, so it always selects Left and Right rather than grounding them, and always selects buttons B and C, never buttons A and Start.
You could have a block header and a jumper wire to connect the Button C information coming in on Pin9 when a Sega 3 button controller is connected to choose A, Start, X, Y, L or R for the second button.
___________________________
With Atari +5v on Pin7 and Sega +5v on Pin5, that's as far as it goes for a dual controller port, but a dedicated 3-button Sega controller circuit could be done with the same pair of serial shift registers without a microcontroller.
If willing to have the Sega 3 buttons A, B, C not match up with the SNES buttons, a full fledged Sega 3 button controller could be done with a delay line on the SNES /Select line and a quad NAND gates (1 quad 2-NAND with 2 free gates, or , 1 triple 3-NAND, to latch the distinct Select 7=1 buttons into the first shift register (, then when the delay line comes down, to latch the Select 7=0 buttons into the 2nd shift register.
1st serial shift register parallel input: 0 when /Select=0, /Select_delay=1, 1 otherwise, which is 0 when NOT(/Select)=1, /Select_delay=1, 1 otherwise -- and that is the NAND function, so one NAND gate to invert /Select, and one NAND gate to generate the select for the first serial shift register.
2nd serial shift register parallel input: 0 when both /Select=0, /Select_delay=0, which is 0 when NOT(/Select)=1 and NOT(/Select_delay)=1, which is the NAND function, so a third NAND gate to also invert /Select_delay and the fourth NAND gate to generate the select for the second serial shift register.
As far as the length of the delay, I guess looking at the CX16 code during the interrupt which reads the SNES port could determine how long the /Select line is pulsed down, and a delay line that allows cutting that in half could be chosen, though if a delay line that long is too pricey, maybe a resister-capacitor-Schottky inverter circuit would bring down the BOM.
Whether that timing is pushing it for original Sega 3-button controllers would be something to investigate -- if I got one, it would be a replica, and I would be guessing that a good replica made with modern IC's ought to be fine, and a bad replica is going to be causing multiple problems anyway.
The first shift register has: B Y Select Start Up Down Left Right
The second shift register has: A X L R 0 0 0 0
Sega 3 button has:
7=1: Up Down Left Right B C
7=0: Up Down 0 0 A Start
So with only a delay line and quad NAND and no parallel latch, B can go to B, A can go to A, but C has to go to Y, select, or Start, and Start has to go to X, L, or R. I would likely put C on Y, and start on X. With a six jumper block, you could make a pair of three way choices.
The advantage of the parallel PinSelect=1 Latch is that since all 12 SNES button values are written at one time, you have a wider variety of choices for different buttons and could even have block headers and breadboard wire to physically assign the Start and A B C as any SNES buttons you wish.
Good to hear you are building another Uzebox and testing this controller on the X16! I think you'll have more luck with the Omega as it doesn't require the AD725 which is not only the most expensive component of the original Uzebox but also seems to be source of most of the issues as well as being a bit tricky to solder.
You may not be interested in the arcade stick but I've seen several posts on these forums about people having issues finding fully working SNES controllers, which was the same issue faced by the Uzebox community, so you are doing the X16 community a favour. Maybe you could sell the joystick to someone on this forum if it works?
The controller PCB has been revised since I posted to the forum yesterday so it looks like I may need to order another batch. Maybe the latest revision will work with the SNES now?
Bruce:
Supporting Sega controllers is an interesting idea but non of the Sega controllers would be suitable for for use on the Uzebox due to the lack of a SELECT button. Feel free to fork the project to make a Sega controller if you want?
The 'Uzebox Omega is a fully open source games console that you can build in a weekend, even with no previous electronics experience:
danboid wrote: ↑Wed May 07, 2025 7:01 am Supporting Sega controllers is an interesting idea but non of the Sega controllers would be suitable for for use on the Uzebox due to the lack of a SELECT button.
Now I'm not tracking which Atari joysticks you are using that have Select buttons on them.
I had presumed the Atari joystick being used as controller 2 with a dogbone used as controller 1, for games where a joystick is either objectively better (I recall one 'yachting' game where you furl and unfurl the sail by "spinning" the joystick clockwise or counter-clockwise) or the gameplay one is nostalgic for.
--------------
Feel free to fork the project to make a Sega controller if you want?
Yes, the part below the line would be a fork of the project. For using it on the Uzebox, I'd presume that would be the preferred approach, since it would allow mapping one of the buttons to Select.
Only the part above the line is an optional addition to the project. It would allow hardwire mapping a button to select, but only B and C would be available to map, so if one is mapped to start and one is mapped to Select, there is nothing left to map to A/trigger.