Saturn controllers on NeoGeo

billd420

Genbu's Turtle Keeper
10 Year Member
Joined
Dec 3, 2004
Posts
2,397
This is probably a very stupid question, but can I use Sega Saturn controllers on my neogeo DB15 pin ports without re-wiring the saturn controller?

Thanks, dont' flame too hard ;)

-B
 

Amano Jacu

Charles Barkley
Joined
Sep 11, 2001
Posts
8,594
Unless you know a lot of electronics and build a decoder circuit yourself, you can't. The easiest way is to mod the saturn controller itself.
 

segasonicfan

Camel Slug
Joined
Feb 3, 2006
Posts
517
There are products that do this conversion for you though...I know lik-sang does (or use to) sell an adapter to plug in PS2/X and Saturn controllers into a base whcih then plugs into a Neo Geo.

-Segasonicfan
 

Amano Jacu

Charles Barkley
Joined
Sep 11, 2001
Posts
8,594
As far as I know, the only product like that is available converts PSX controllers to Neo Geo, but it doesn't work with Saturn ones.
 

themisterfalcon

Buriki-One Fight Promoter
15 Year Member
Joined
Dec 14, 2005
Posts
4,025
Bill, my homeslice, that is a stupid question cause I told you the other day they aren't the same pinout :lolz:

I think you might have it confused with another system? Or maybe you are thinking about Genesis controllers having like serial (smaller) DB15 pinouts?
 
Last edited:

Neo Geo MVS

Igniz's Servent
Joined
Apr 14, 2006
Posts
1,071
Hey guys sorry for bringing out a old thread but I badly want to modify a sega saturn controller to a DB-15 input but dont really want to modify each controller. I was doing some research and came across this a guy who modified a sega saturn controller to a xbox 360. Im sure everyone has already seen this. I am curious if its possible to build that converter easily without knowing alot about electronics and if not does anyone want to do it and for how much? I think it might be just easier to modify each controller than build this thing but Im not sure it looks like it could be as easy as a supergun but from what I read it's doesnt seem so, lol. Your input would be appreciated guys, thanks in advance.

http://forums.xbox-scene.com/index.php?showtopic=509748&st=165&p=3546461&#entry3546461

Youtube video of it in action:

http://www.youtube.com/watch?v=CiP0WLx7V7Q

Heres some pinout information

http://www.gamesx.com/controldata/saturn.htm

I know I will get flamed some how for this but I don't care. Maybe it has been talked about before in another thread.
 
Last edited:

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
The quick and dirty way to do it

Wire up +5v from the USB to the +5v on the pad, and to the circuit

Circuit is very simple.

You have a decade counter and timer that resets when it hits 0100 for the output.

then you have each button going to the DB15 correspond to the values listed in the SS Controller data page.

(IE: to get L, you'd get S1 AND S0 AND D3 wired into a 3input AND gate, or equivalent. to get R, wire up S1' AND S2' AND D3. the ' means take the input, invert it, then run it into the AND gate chip.)
 

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
Neo Geo MVS said:
whats this mean?

Okay.

A decade counter is a chip that "counts." It sounds really lame, I know, but if you want to keep track of time, you need a counter. A decade counter counts up to ten.

when it hits 4(100 in binary), it needs to reset to go back to 0000.
 

toodles

Zero's Secretary
Joined
Jul 14, 2005
Posts
157
Neo Geo MVS said:
I am curious if its possible to build that converter easily without knowing alot about electronics and if not does anyone want to do it and for how much?
I dont know how much faith I'd put into taitai's description; I can't make sense of it, and there's no mention of any kind of latch for the DB-15 to 'store' the status of a line when a different bank of the saturn is checked.

Can it be done, easily? Pretty much. taitai's description would use a large number of glue logic chips, but the whole thing could be done with just about any microcontroller with 6(saturn)+13 = 19 I/O lines, and even easier if the microcontroller has an internal oscillator. I have a stash of PICs that could do the job easily. Even if you gave each bank 100us for the line to settle, youd be able to scan all four banks 400 times per frame (24000 checks per second) for no lag. The circuit would the pic (18F2550? Its 28 pins, internal oscillator at up to 2 MIPs speed, and far more space than you'd ever need.), a couple of .1uf decoupling capacitors, an electrolytic capacitor in case of heavy current draw, and, umm. That's it. Just wiring the buttons and saturn controller, and super easy programming.

EDIT: If there's an analog input free after all of that, a potentiometer so you have a way of adjusting the frequency of the polling would be a good idea. For legit Saturn controllers, a 100us delay is way more than enough, but you never know; some may only like being polled at a very slow rate, and you could tweak it without reprogramming.

The only 'hard' part about doing that would be programming the PIC, unless you have one, but I think if you did you'd already have done this. Assembling it is stupid simple. Writing the code for it is extremely simple, but putting the code on the microcontroller requires hardware.

And as an added bonus, button remapping like how I have the Universal PCB doing is easy too, especially for such a slow and easy to use controller.
 
Last edited:

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
toodles said:
I dont know how much faith I'd put into taitai's description; I can't make sense of it, and there's no mention of any kind of latch for the DB-15 to 'store' the status of a line when a different bank of the saturn is checked.

It wouldn't latch. I'd imagine at several kHz to several hundred kHz, the drop off wouldn't be noticed by the system

Just something i noticed after watching a Function generator get hooked up to some LEDs and a binary counter running at low speeds(>1kHz)
 

Neo Geo MVS

Igniz's Servent
Joined
Apr 14, 2006
Posts
1,071
I dont understand any of that jargon lol, it seems to hard unless someone can explain it to me in lamen terms.
 

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
time to get that Inchworm+ kit and build the universal controller decoder. lol
 

toodles

Zero's Secretary
Joined
Jul 14, 2005
Posts
157
taitai said:
It wouldn't latch. I'd imagine at several kHz to several hundred kHz, the drop off wouldn't be noticed by the system

Just something i noticed after watching a Function generator get hooked up to some LEDs and a binary counter running at low speeds(>1kHz)
There's a big difference between your eyes ability to see a rapidly flashing LED and a system's ability to see it. You're talking about any system having a 75% of seeing a high line, whether the button is pressed or not.
Neo Geo MVS said:
I dont understand any of that jargon lol, it seems to hard unless someone can explain it to me in lamen terms.
? One chip, three capacitors. Chip is a little computer and does the decoding of the Saturn and outputs it NeoGeo style on the lines. Lots of people on here I'm sure could do it.
 

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
toodles said:
There's a big difference between your eyes ability to see a rapidly flashing LED and a system's ability to see it. You're talking about any system having a 75% of seeing a high line, whether the button is pressed or not.

That's why I was thinking somewhere along the lines of possibly between .5 mHz and 2 meg. I don't have any SS hardware, period. so I can't test it.
 

toodles

Zero's Secretary
Joined
Jul 14, 2005
Posts
157
taitai said:
That's why I was thinking somewhere along the lines of possibly between .5 mHz and 2 meg. I don't have any SS hardware, period. so I can't test it.
There may be a misunderstanding.
If I'm understanding you right, you're suggesting a timer of sorts, that goes from 00, 01, 10, 11, and repeat over and over on two lines. Those will go to the two bank select pins on the Saturn controller, and the soon to be mentioned AND gates.

Let's just look at the Neogeo output pin for the 'L' pin. It will have a three input AND gate, being fed the two bank select line (which for 'L' is 11 so we'll ignore any needed inverters) and the data pin d3. When the bank select lines are 11, and the 'L' button is NOT pressed, the d3 line will be high. Three highs in a three input AND gate gives us a High (not pressed) signal on that 'L' pin. If the 'L' button IS pressed, then the AND gate is fed a 110 because the d3 line is low because the button is pressed. The AND gate spits out a Low, and the Neogeo or supergun thinks the button is pressed. Perfect.

Unless the bank select lines are looking at a different bank when the Neogeo checks the pin. If the bank select lines are 00, 01, or 10, then the AND gate will always output a Low on the Neogeo pin, no matter if it's pressed or not. The Neogeo reads all 10 of the pins at the same time (Im ignoring banking controllers because we're not talking about a mahjong controller or such), and at any given time, only ONE bank of inputs will be sending out the correct data; all 3 of the other banks will be reporting all of their buttons as pressed, because the AND gate is outputing Lows just because a different bank is being checking. This same issue will happen no matter what the frequency the SS controller is being checked. Even if you check the Saturn controller uber fast or uber slow, it wont change the fact that 3/4 of the buttons will show as pressed at any given time.

I'm not trying to be a dick. I sincerely want you to understand what I mean to help you learn more; god knows we need more EE minded people around. Except for the output latches of some sort, your idea is dead on and would work 1,000 times faster than a microcontroller.
 

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
toodles said:
There may be a misunderstanding.
If I'm understanding you right, you're suggesting a timer of sorts, that goes from 00, 01, 10, 11, and repeat over and over on two lines. Those will go to the two bank select pins on the Saturn controller, and the soon to be mentioned AND gates.

Let's just look at the Neogeo output pin for the 'L' pin. It will have a three input AND gate, being fed the two bank select line (which for 'L' is 11 so we'll ignore any needed inverters) and the data pin d3. When the bank select lines are 11, and the 'L' button is NOT pressed, the d3 line will be high. Three highs in a three input AND gate gives us a High (not pressed) signal on that 'L' pin. If the 'L' button IS pressed, then the AND gate is fed a 110 because the d3 line is low because the button is pressed. The AND gate spits out a Low, and the Neogeo or supergun thinks the button is pressed. Perfect.

Unless the bank select lines are looking at a different bank when the Neogeo checks the pin. If the bank select lines are 00, 01, or 10, then the AND gate will always output a Low on the Neogeo pin, no matter if it's pressed or not. The Neogeo reads all 10 of the pins at the same time (Im ignoring banking controllers because we're not talking about a mahjong controller or such), and at any given time, only ONE bank of inputs will be sending out the correct data; all 3 of the other banks will be reporting all of their buttons as pressed, because the AND gate is outputing Lows just because a different bank is being checking. This same issue will happen no matter what the frequency the SS controller is being checked. Even if you check the Saturn controller uber fast or uber slow, it wont change the fact that 3/4 of the buttons will show as pressed at any given time.

I'm not trying to be a dick. I sincerely want you to understand what I mean to help you learn more; god knows we need more EE minded people around. Except for the output latches of some sort, your idea is dead on and would work 1,000 times faster than a microcontroller.

This is exactly why it's kind of the Quick'N'Dirty solution. But the overall algorithm could be easily ported to other, more robust digital logic solutions like a PLD with some thing to latch all the inputs until the timer kicks back 0100 for the timer reset. You're entirely right that the system would see all highs with how it's set up. I guess you'd have to invert the output of the pad then start fiddling with it. I keep thinking circuit closed = high, instead of circuit closed = low.

You could also probably get away with using a multiplexer too. But that'd be just get a little more complex.

However. I do have a theory that the Neo, or other systems that would use a similar system(IE: Jamma boards), wouldn't care that A+B+C+D are pressed *slightly*(within microseconds) off of each other, and still register A+B+C+D.

edit:

This is exactly what we're doing for the Saturn:

http://www.play-hookey.com/digital/decoder_demux_four.html

Instead of decoding ONE line, we're decoding four.

(Which just means 4 of the same circuit but to four different inputs.)

Beyond that, there's a *chip* that'll do 2 2-4 demultiplexings. It's the 74LS139A.

You'd still have to futz around with the input to make sure that the systems see what they need to see though. But the bulk of the ground work's been done. Time to buy a cheap-o saturn pad from like, bestsku or soemthing.
 
Last edited:

mainman

CPS2 Person.,
20 Year Member
Joined
Mar 26, 2001
Posts
3,823
Neo Geo MVS said:
I dont understand any of that jargon lol, it seems to hard unless someone can explain it to me in lamen terms.

Basically in order to decrease the bus line ( number of wires in the controller cord ) the saturn controller like all modern controllers multiplexes the buttons, which mean multiple buttons physically share one of the wires in the controller cord but not at the same time. Four of the wires in the cord represents a data line. For example data line 1 on the saturn is share by Y,C, and down button. Y is active when both select lines are low (00), C is active only when select 0 is high and select 1 is low(10). There are 4 data lines but you need only to count from 0 to 3 , 00,01,10,11, to begin to demultiplex these signals.


I built a saturn converter using a 4 bit counter and the end result was the clock wasn't fast enough

A little off topic I also built a IR interface for my neo pad, good direction and button response alone but not together.
 
Last edited:

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
toodles said:

I was just saying, that instead of having what must be 6 or 7 AND, NOT, and other gate chips, 2, 2x 2-4 Decoders(that is, 2 chips that have 2 2-4 decoders on them), would be the 90% of the footwork. The rest is properly latching all of the output
 

SpamYouToDeath

I asked for a, Custom Rank and, Learned My Lesson.
15 Year Member
Joined
Oct 3, 2005
Posts
6,099
Wait, so does the controller drive the "select" lines or does the Saturn set them in order and wait for a response?
 

taitai

Genbu's Turtle Keeper
Joined
Apr 25, 2004
Posts
2,393
SpamYouToDeath said:
Wait, so does the controller drive the "select" lines or does the Saturn set them in order and wait for a response?

The saturn sets the select lines, then reads the data from the output pins.
 
Top