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 hundreds 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 its 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:
Partlist:
C1 | Ceramic capacitor, ~ 100 nF |
R1, R2 | 215 Ω, 20 mA for both LEDs |
D1 | Multicolor LED (3-pin) |
IC1 | PIC 16F630 |
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:
Region
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.
Let’s unsolder the other three!
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
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.
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
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
Attach +5V/GND to the power-supply-socket, like this:
LED
Now, unsolder the green power-led and prepare your LED something like on the picture and mount it somehow, I hotglued it.
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!
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: