Switchres: Basic minimum requirements

I’ve been trying to get switchres to work or at least turn on for a couple of weeks now. And I’m trying to figure it out if this feature is only meant for some niche audience or can be used by people who are sufficiently tech-savvy. It’s feels like a typical case of OCD but I have not been able to get switchres to work. There’s quirks and guides spread everywhere with legacy options / configuration or extremely niche custom H/W S/W mods that it’s beyond comprehension or can’t be made sense of, understood and instructions applied to a general setup.

Equipment I have: Raspberry Pi 4B 1GB. Raspberry Pi 4B 8GB. Raspberry Pi 3B+ 1GB. HP OMEN Laptop15-en0036AX 16GB dual boot with Windows 10 / Ubuntu Some other laptops CRT (PAL) HDMI to RCA NTSC / PAL converter. 3.5 TRRS to Composite cable. NES ROM test-suite. Retroarch compiled on each platform (except Windows).

Is there some permutation or combination of the above so that I can witness the glory of switchres? An extremely basic guide that details if

  • one needs a composite connection or not.
  • an HDMI to RCA or not.
  • X11 or console mode.
  • 15KHz or INI.
  • custom resolution needs to be set or not.
  • supported graphics driver.
  • windowed or full-screen.
  • custom hardware or supported hardware.

I’m happy to learn and document. This shouldn’t be so complicated. Idea is to have elementary steps to have it show up. I’m sure we can address quirks or fine-tuning later.

I have my INI at /etc/switchres.ini with monitor set to PAL.

With all permutations and combinations, I’ve witnessed a variety of the following:

  • retroarch doesn’t start
  • switchres throws segmentation fault
  • CRT turns off (VNC shows a wide rgui UI covering only the top half of the screen and horizontally stretched to be unreadable).
  • Composite (some 15KHz config that gave me a working UI but occupying top left quarter or the CRT).

Is there a high-level overview of how switchres actually works? Does it need the timings of the HDMI or does it need the timing of CRT? What other resolution / output specific configuration is required.

I truly appreciate any inputs. I’m comfortable compiling and soldering. But I do need your help in getting started. Is the official documentation upto date? (It doesn’t mention which output / hardware is supported). Thanks again TIA.

1 Like

The custom resolutions get generated on Linux on the fly, but this would only work if you have the proper hardware. The switchres docs probably assume you’re somewhat familar with the basics of 240/288p, strictly speaking you don’t switchres for that (I don’t use it either).

Those HDMI-RCA converters are usually unsuited to do what you want, they don’t provide the necessary custom resolutions. I’m not even aware of a direct composite conversion solution, the standard is going to RGB (or maybe component) from VGA. You can use HDMI-VGA converters though. It’s possible to convert to composite then if you want, but this again requires specific converters.

1 Like

Thanks for the info. I knew I was missing something elementary and basic… My hunch was hardware.

So to summarize, conversion to VGA is a must (?). Kindly confirm.

I’m thinking Rpi -> HDMI to VGA -> VGA to composite -> CRT. Sadly SCART is not a standard here… But I may be able to hunt for one with a bit of travel unless the above chain works.

Life is lifeless without scanlines on CRT.

Maybe there’s something that can go from HDMI to 15 Khz RGB, there’s a lot of obscure stuff out there (think professional Extron transcoders etc.) But yeah, usually you’ll need to go to VGA first. SCART is just a cable standard. If you CRT has only composite though, yes, you’ll need another converter. I have one, however in my experience and from what I read, the conversion with these is generally somewhat flawed…I had to fine tune my modelines manually a lot, as the picture was rather bad otherwise. This may mean that switchres wouldn’t work with these at all.

For composite, it’s really better to use emulation straight out of consoles (like the Wii) or use the Pi’s output. The Pi’s composite output is afaik fixed (like 720px wide?) unusable for switchres. But you can get 240p/288p out of it. Probably best to try that first, and see if it’s to your liking.

Native 240p from Rpi is a whole new confusing thing. If it doesn’t produce scanlines then I don’t know what’s the big fuss about it.

Just bought a hdmi to vga and vga to composite. Will report back.

Not an expert at all, but I think there are some projects that streamline the whole thing with a raspberry using “custom” os with retroarch in it: a project that I’m flollowing is Replay OS you can find video dev log here. and also for hardware side or also this one.

The dev of replay os should be on this forum but I don’t remember the username.

As I said I am no expert in those things but I would like in the future to have a crt set up and the PC route using old graphics card and modded driver seems a very complicated route so that’s why I’m more inclined to those rpi projects.

EDIT: found it, @rTomas is the dev, maybe can give us some insights!

1 Like

I checked that out. Thanks @Hari-82 .

The issue is that hardware requirements are not mentioned or there’s too much outdated obscure info out there.

I could solder a board. But I need some documentation as to why TRRS composite is not sufficient. I think it has something to do with sync?

@Jamirus Thanks so much for pointing out the info earlier. My TV has composite, component, RF. Can you kindly share some keywords that I can use to Google? I think I’ve run short of them or just trying meaningless permutations and combinations. Just learned about JAMMA and PI2SCART.

Is HDMI to component (YPbPr) sufficient? Why is VGA in the pipeline a requirement? I’m sure there’s information about there but may be I’m looking at the wrong places or I missed the scene when the ®evolution was happening.

I’m not sure if VGA is necessary, I suppose it’s usually expected to go from RGBHV (VGA) to RGBS (TV compatible sync signal). If you can go straight from HDMI to Component (YPbPR), it might work like that. You could try searching at Youtube also. Google has also become considerably worse in my experience over the last months, might want to try alternative search engines.

1 Like

what do you mean? rgb-pi is just a cable to plug in a raspberry and pi2scart similarly is a board that give scart output.

@Hari-82 Sorry if I was not clear earlier. My CRT has component and composite input. No SCART.

What does switchres basically do? How does it really work?

Yes I was wondering the same. Will it work from hdmi to YPrPb? Guess there’s no clarity on how switchres works.

Dear @Alphanu, I’ve watched a lot of videos on your YouTube channel. Can you please chime in and tell us about minimum hardware requirements for switchres?

1 Like

So apparently a basic requirement is the presence of the SYNC signal. Searching for diy gpio to component now :slight_smile:

On Linux Retroarch is very finicky with Switchres. I use a vga monitor 50-160hz, 30-71khz range, connected to a laptop via hdmi to vga.

In Retroarch 1.16 Switchres works on native resolution. Which can be handy if you want to play games from consoles like Gamecube and Dreamcast or computers like Amiga at 240 or 224 or any resolution you pick. Because without native they switch the resolution and refresh rate to 1024x768 and 50 or 60hz. In that case you have to set vsync interval to 1 or else fps slows to 25-30fps . One reason I am keeping 1.16, mainly for native resolution option.

However Retroarch 1.18 and 1.19 refuse to work in native mode on the same monitor. I get a black screen. I have to set custom resolution instead. 640 so I can navigate easier on the menus. Though without native it allows arcade games like MK1 that use a refresh rate of 54hz to run smooth as the monitor switches to 109 hz on 640x240p. On native mode motion is not smooth on those games.

Dynamic does not work in either.

1 Like

The first implementation of switchres needed to create mod-lines and a few more things.

"CRT SwitchRes" is a new implementation and has no excessive requirements.

You do not need.

  • You don’t need to create mod-lines, they are created automatically (the option is kept for those who like to suffer).
  • You don’t need specific ati video cards, it works with any and almost any year.

Requirements:

  • A cheap-chinese device of this kind.
  • On Linux make sure you have the two dependencies installed, libx11-dev libxrandr-dev. On Windows with CRT Emudriver it works better (?).

A TV or a CRT monitor and have everything connected, just activate it, it’s instantaneous.

I used it for a long time with monitor and tv, and in Linux it works great, even with the huge amount of resolutions that Arcade games have.
At this moment I don’t have it and I can’t test it, but if it doesn’t work obviously it’s a bug, the ideal is to report it in github.

To answer the question of what minimum hardware it supports, well… What are you going to emulate? Dreamcast or Atari 2600? You have to try it yourself.
I can assure you that it is very fast even on 20+ year old PCs.

1 Like

@alexb3d All I need to play are NES games, specifically SMB, Contra and super C.

I did get an HDMI to component converter but I think it has internal scaling to 480I and comes with a switch to convert output to NTSC / PAL. Thr moment I try to use 1920 super resolution, the CRT goes dark.

Are you sure it is 480i? the manual should say what it is compatible with, and if it supports low resolutions.

480i, if it is very different from 240p, will obviously give errors.
Try to test some 480i game, like the Saturn ones.

You can also try with the other resolutions and keep in mind that 15Hz is for TV and 31 for monitor.

1 Like

Nah, it was a Chinese knockoff with no manual. And it certainly has a scaler. I now have the Gert vga hat and waiting for vga to YPbPr converter.

So I just receiver the GERT vga HAT today and a Chinese VGA to YPbPr converter.

I finally did get a picture on my screen but it’s rolling all weird ways.

For a safe start I tried: dpi_group=1 dpi_mode=21

Still horrible roll. Invisible.

The only way to get something stable wasy to use dpi_group=1 dpi_mode=23

This mode got me a solid stable picture but narrow, centered and half of horizontal resolution.

I’m on bullseye and using fkms.

I also tried booting to the desktop, using switchres to apply a custom mode but it forces the entire picture and throws it to the bottom left so only the top right quarter of the picture is visible.

What do I need? Bullseye? (OS) FKMS or KMS? (Video Driver) Custom hdmi_timings? (I have a PAL CRT TV).

Any help is appreciated. Please let me know if you need any screenshots etc.