AV:Open Source Scan Converter (OSSC)
The Open Source Scan Converter is a zero lag upscaler. At the moment, it is a top device to play your analog consoles via HDMI, offering tons of options, 2x 480p (960p) and up to 5x 240p (1080p). It's only shortcoming is it's not compatible with all TVs in every mode, but it's still an excellent choice.
- Announced: 2014
- Released: 2016
- Inputs: SCART, Component and VGA.
- Input Resolutions: 240p, 480i and 480p are supported across all inputs.
- Supported Signals All inputs support RGBs, YPbPr and RGsB. VGA also supports RGBHV.
- Link to purchase from official distributor: https://videogameperfection.com/products/open-source-scan-converter/
- OSSC Firmware: http://www.infocult.com/m/ossc/fw/
How The OSSC Works
Using the OSSC is as simple as plugging in your consoles, turning on the device and setting your input. The OSSC is able to achieve "zero lag" scaling, by not buffering video at all. Instead, it simply multiplies the signal that it receives by 2-5 times the original size. When you first power on a brand new OSSC (or flash the firmware), its default settings are a good place to start and this is generally referred to as "generic mode". Each console outputs a very unique resolution though and many consoles have multiple unique signals. If you'd like to scale it in a way that's sharper, you'll need to multiply that exact signal to a round number. The OSSC has the ability to do this, but you'll need to set the options manually. Also, there's something called "phase" that's different on every individual console + cable scenario that needs to be manually set. Think of this is tuning in a radio station on an old radio to lock onto the strongest signal. Most importantly though, once you've dialed in all the correct settings, you can save them to one of 15 profile slots, which now means changing consoles is simply a menu setting away!
Finding the correct settings for a device is incredibly tricky and involves using specialized test equipment. It's pretty much the same thing you'd go through when trying to do direct RGB capture with an analog capture card. Lucky for us, there's people dedicated to providing this information who are constantly contributing the proper settings in the form of profile presets.
Here's a few of the best resources:
- OSSC Wiki: http://junkerhq.net/xrgb/index.php?title=Optimal_timings
- FirebrandX's Optical Timings: http://www.firebrandx.com/osscprofiles.html
- R3 Wiki: http://r3.fyi/
Configuring the OSSC
There's a few ways you can accomplish this. First, you can manually enter the settings into the OSSC using the remote control. This is super tedious and there's better options - only do this if there's no other choice in the moment.
Next, you can manually enter all of the information into a website created by paulb_nl that lets you save your settings to a file that can be flashed to a MicroSD card: http://pbnl.byethost7.com/ossc/profiles
By far, the easiest way to enter custom profiles is to download the ones FirebrandX has spent the past few years painstakingly tweaking, then make your own "profile pack". Basically, download the profile pack, pick your favorite 15, upload them to Paul's website, arrange them in whatever order you want and create a bin file from it. Then just flash an SD card with the bin and load it into the OSSC.
FirebrandX's videos do an excellent job explaining all the more in-depth, advanced methods, if you'd like to learn more about the whole process:
Once you've gotten your OSSC set up with all the profiles you'll be using, getting a pixel-perfect scale is as easy as selecting the console name from the on-screen display.
Here's a trick that gets 256-wide pixel profiles very close to the "perfect" CRT aspect ratio with optimal timings...but only in 1080p5x mode, not in lower resolutions. The pictures below are examples of two resolutions showing different aspect ratio modes and each have a version of the 8:7 square pixel capture stretched horizontally to 112.75% to match the original aspect ratio of a CRT.
After dialing in 256-width optimal timings, you'll end up with a picture that's much too narrow. You could set the aspect ratio to "generic 4:3" to stretch it, but you’ll end up with a look that’s pretty much the same as the generic mode. A better method with 256 resolution games could achieve both a sharp look and an aspect ratio that's close to what you'd see on a CRT, but only in higher resolutions. To accomplish this, load the 256 profile, then go back into the output menu. Then find the setting listed as 256x240 aspect. Then, change it from the default square pixel aspect ratio (8:7 for SNES) and set that to 4:3.
As you can see in the above pictures, in 720p output (3x), you'll end up with an aspect ratio that's much too wide and the narrow 8:7 is actually closer to what you'd see on a CRT. In 1080p 5x modes, changing that setting to 4:3 results in an aspect ratio that's a really close match to the original. The reason this occurs, is because in this mode the horizontal resolution is integer-scaled one more than the vertical. That's also the reason the sharpness is retained, as it's still a perfect integer scale, so you'll still get all the benefits of the optimal timings. The 6x horizontal by 5x vertical is really close, but someday a 4K scaler that can do 8x horizontal by 7x vertical would actually result in a perfect aspect ratio. Unfortunately, 1080p5x appears to be the least compatible of the OSSC's output modes, with many displays not able to interpret the signal at all, especially from the SNES.
Arcade Board Timings
The following are specific arcade board timings. Ensure that you check the RGBS signal voltages coming from your arcade board with an oscilloscope to make sure they are at a safe level for the OSSC to receive. Improper voltages can kill your OSSC and other equipment! Your video RGB lines should be around 660mV and sync should be between 250mV and 900mV for SCART. Sync can be up to 5v for the VGA input, but there is no low-pass filter on the VGA port, making SCART the desirable input.
Ultimate Mortal Kombat 3
Line2x set from generic to optimal 320x240 Go to sampling options > adv timing of 320x240 and set: * H. Samplerate 426 * H synclen 31 * H backporch 62 * H active 332 * V synclen 3 * V back porch 18 * V active 255 Line3x set from generic to optimal 320x240 Go to sampling options > adv timing of 320x240 and set: * H. Samplerate 400 * H synclen 35 * H backporch 49 * H active 320 * V synclen 5 * V back porch 14 * V active 260 Video LFP = 95MHz Gain: * B/Pb Gain = 52 * G/Y Gain = 59 * R/Pr Gain = 53 Offset: * B/Pb Offset = 159 * G/Y Offset = 158 * R/Pr Offset = 158