Goal
In the second part of this PSX modding series, we'll focus on the video output.The goal is to control the signal that is sent: instead of only the one from the PS1, I want to be able to switch it with another signal.
As always, you can find the source code here: https://github.com/electrojack/psxvx
PS1 video hardware
The video output is sent through the 12-pin proprietary AV MULTI OUT connector (that also sends sound signals).
There are actually three sent video signals through the cable: RGB, S-Video and composite.
In this article I'll work on the composite signal (https://en.wikipedia.org/wiki/Composite_video).
You can see the connector soldered on the board at the top right of the following picture, you can recognize it with its 2 rows of 6 pins.
Once again, info about the pins can be found in the PS1 bible.
1 RGB-Video Green 2 RGB-Video Red 3 Supply +5.0V (eg. supply for external
RF adaptor) 4 RGB-Video Blue 5 Supply Ground 6 S-Video C (chrominance) 7 Composite Video (yellow cinch) 8 S-Video Y (luminance)
9 Audio Left (white cinch)
10 Audio Left Ground
11 Audio Right (red cinch)
12 Audio Right Ground
Shield Video Ground
____________________________
| 12 10 8 6 4 2 |
| 11 9 7 5 3 1 |
|____________________________|
Switcher circuit
Now I need a circuit whose output can be chosen by an input from two sources.
Fortunately, composite signals only have positive voltage so my circuit can be really simple.
There are special ICs to switch between video sources but I wanted to keep it simple: I made it with just 2N2222 transistors.
It only contains 3 resistors, 3 2N2222's and power supply (3.5V).
The next step is choosing the second source of video. I'll be using a Raspberry Pi for 2 additional reasons:
- it can deliver 3.5V
- it can drive the circuit through one of its GPIOs
Hardware work on RPi
My RPi is a Zero so it has no headers and the video output is done through the 'TV' pads.
All we have to do is soldering male pin headers (or wires) to 3.5V, GND (power supply), GPIO27 (driver) and TV out.
Hardware work on PS1
The composite video trace must be cut so the actual output is not sent to the video pin of the AV out port.
Then solder wires to AVOUT-pin7, actual video signal from the PS1 (follow the pin7 trace to find a blob to solder on) and video ground.
Wiring
RPI 3.5V | SWITCH VCC |
RPI GND | SWITCH GND |
RPI GPIO 27 | SWITCH DRIVER |
RPI TVOUT+ | SWITCH SOURCE 2 |
RPI TVOUT- | PS1 VIDEO GND |
PS1 AVOUT pin7 | SWITCH OUTPUT |
PS1 VIDEO SIGNAL | SWITCH SOURCE 1 |
Software work on RPi
Now we have to control the GPIO on the RPi.
I did it with a Python script.
import RPi.GPIO as GPIO import sys vidport = 27 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(vidport, GPIO.OUT) GPIO.output(vidport, sys.argv[1][0]!='f')Save that as show_ps1.py and then you can run it with these commands:
python show_ps1.py true python show_ps1.py false
Result
I'll add photos of the circuits later.
In the mean time here is a video of the actual result.