The ultimate Sega Saturn Switchless Mod

I’m the original inventor of the so called “switchless mod”, which I made for my Sega Saturn in 2004. Since then, numerous people have taken my approach and used it for many consoles, quite some modding-shops offer my modification or a mod based on this. Search YouTube for “switchless mod”, you’ll find dozens of demonstration videos on the topic there.

So, you should have some practice in wielding a soldering iron - if you don’t you better ask a friend who has. Also you should have some means of flashing the Microchip PIC I’ve used for this project.

The code and the hex-file is available on GitHub.

Have fun!

How does the switchless mod work?

How to mod a Saturn to switch between 50/60Hz (vertical retrace rate) and to set it to a region (EUR/US/JP) is common knowledge and nothing special as such.

Doing it with normal switches that are somehow mounted to a more or less maltreated chassis is the easiest way, but real console lovers are not really fond of changing the exterior of their babies.

So here it is: The all-in-one-no-external-modification-ultimate-mod!

It’s done by exchanging the green power-LED with a multicolor LED (I’ve used a 3-pin red/green-LED, which gives colors red/green/orange) and by multiplexing all needed functions on the Reset-Button.

The colors indicate the current region-setting:

Colour Region Default retrace rate (Hz)
green Europe 50
orange US 60
red Japan 60

This is how everything’s controlled through the reset-button:

button-push-time t in msec LED behaviour function LED behaviour after button-release
t < 250 no change normal reset none
250 < t < 1250 turn black 50/60Hz on-the-fly toggle (no reset!) retrace-indicate-flash
t > 1250 region-color As long as the button is pressed, the regions are cycled through (1sec each). After the button is released and the region-setting has changed, the Saturn will get reset so the new region-settings take effect. retrace-indicate-flash

And this is the feedback you’ll get from the flashing LED:

Flashing Retrace Rate (Hz)
Slow flashing 50
Fast flashing 60

On region-change, the default retrace-rate (see table above) is set, too. Of course the Mod stores it’s last setting in EEPROM, so if you have your system set to Europa/60Hz then this setting will be restored the next time you play. On power-up, a “retrace-indicate-flash” is done.

Sounds good, doesn’t it? Now it’s time to get your soldering iron heated up!

Building the board

The following instructions are for a Model2-Saturn (round buttons) — I’m pretty sure the same is possible for other Saturns, but the soldering-points are not the same. Have a look at some Saturn-Sites, I think I have seen descriptions for older Saturns there.

Main prerequisites:

  • Soldering iron & steady hand
  • Microchip PIC 16F630
  • Some means of flashing code onto the 16F630
  • Our favourite tool: common sense!

Back then I used a self-built JDM’s programmer, and IC-Prog as the flashing-application. If you don’t have anything available for flashing, it’s nowadays probably easiest to get some flasher off eBay.

This is the schematic of the mod:

Schematic

Partlist:

C1 Ceramic capacitor, ~ 100 nF
R1, R2 215 Ω, 20 mA for both LEDs
D1 Multicolor LED (3-pin)
IC1 PIC 16F630

Flipside

Of course the LED is not on the mod itself, it’s gonna replace the normal green power-LED. This is how it looks here, readily installed. It’s quite a small circuit, soldering it on a breadboard is done in no time.

Attaching it to the flipside

Ok, now we need to attach 6 wires from the right of the schematic (J6, J10, J12, /RST, /BUTTON, /50) plus three LED-wires (red, green, GND) and two supply-wires (total 11) to the mainboard.

First, an overview:

Flipside

Region

Jumpers

This is how it looked on my board. The left row of pads is all +5V, the right row is GND. The 0-Ohm resistors connect either +5V or GND to the inner pads, which are responsible for which region the Saturn thinks it is.


These are the relevant settings, the inner pads are called like their respective +-jumper:

Region JP6 JP8 JP10 JP12
Europe 0 0 1 1
Japan 1 0 0 0
US 0 0 1 0

As you can see, my Saturn is originally European. Note that JP8 is the same for every region, so we leave it as it is.

Unsoldered jumpers

Let’s unsolder the other three!


Soldered cables

Now attach three wires to the jumpers by soldering each wire to the two inner pads, like this. Also, don’t make the wires to short, the mod will probably rest on the other side of the mainboard. I also hot-glued the wires as a precaution.

The wires go to J6/J10/J12 on the mod.

50/60Hz

50/60 cable

Attach a wire as on the picture and (carefully!) cut the pcb track, make sure it really is cut. Again, I hotglued the wire. The wire goes to /50 on the board.


Ok, we’re done with the flipside. Be cautious that you don’t pen in the cables between the PCB and the chassis, we don’t want anything bad to happen.

Slippage

There’s a small slippage between the reset-button and the controller-port where the cables fit nicely.

Attaching it to the front side

Reset button

Reset button

Next, cut the track from the reset-button, because in the future our microcontroller will decide whether it wants to reset the Saturn. Solder two wires as on the picture, the right one goes to /BUTTON and the left one to /RST.

Supply

Reset button

Attach +5V/GND to the power-supply-socket, like this:

LED

LED 1

Now, unsolder the green power-led and prepare your LED something like on the picture and mount it somehow, I hotglued it.

LED 2

The middle wire goes to GND, the other ones according to the schematic (D1). Murphy’s Law says you’ll accidently swap red and green. Actually it doesn’t really matter, but I like green for Europe better.

Done!

Assembled

Reassemble everything, this is how it looks here. I also draw power for the CD-unit-modchip from my modchip.

If it doesn’t work, try putting the PIC on a breadboard. Add the LED and a button and check whether JP6/JP10/JP12 behave as they should.


Thanks to the authors of the 50/60 and region-mod tutorials for a good starting point.

The code and the hex-file is available on GitHub.

References: