• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Switchres comes to RetroArch.
Hi All,

Its been long time since my last post. However, I have still been working on MME4CRT. My latest addition to RetroArch brings something that I believe we have all been waiting for.  I will start with just one word - GroovyMame!!

So what exactly does this mean? 
It means the CRTSWitchRes implementation within RetroArch has been completely re-designed and re-written. 

Why has this been done? 
Many of you are probably aware that Linux resolution switching has been broken since RetroArch 1.9.0. For those of you using Windows resolution switching This has continued to work. However, it was not as feature friendly as the Linux implementation but even the Linux implementation was a bit lacking. Something needed to be done to address this issues. So I joined the GroovyArcade Discord and the rest is history. Here is a quick video showing you the early implementation where you can already see the major improvements.

What is Switchres and what does that mean for me? 
Switchres has been around for many years and was only found in GrooveyMame. It has a very mature modeline generator implementation and is full of features for CRT resolution manipulation.  Thanks to Calamity and Substring, Switches has been pulled out of GroovyMame and is now available as a library which can be used anywhere. Without this work, this new implementation would not have happened. In short it means you now have a much more stable, mature and feature full CRT switching implementation within RetroArch.

What is new?
  • Better modeline generation.
  • Faster and more stable switching.
  • Windows dynamic resolutions. No longer limited to locked resolutions/Hz. Timings are modified on-the-fly (ATI only)
  • Stable resolution restoration. (If RetroArch should crash you will be stuck in the previous resolution that RetroArch was in)
  • Improved super resolutions with Integer scaling.
  • Fixed primary monitor issue. You no longer have you use your primary monitor only.
  • Improved monitor indexing. Allowing for multi-monitor support. 
  • Low and Hight resolution options for the Retroarch menu.
  • RawInput support for absolute mice devices (Lightguns, to name a few) had issues with resolution changes, this has been fixed co-ordinates are reassigned after a resolution change.
  • New CRT SwitchRes Menu options to remove the need to edit the switchres.ini.
  • Switchres.ini can be used to set some advanced options. 
  • Monitor profiles - these allow you to change the modeline generation profile to fit many TV/monitors. (Some available from the CRT SwitchRes menu)
  • Custom  CRT ranges - this allows you to set custom monitor profiles. This can help with uncommon TV/Monitors and geometry issues.

New CRT SwitchRes Options
[Image: n7Ab0iK.png][Image: yT9d78P.png]

Are there any OS specific limitations?
The short answer is no. *

Is Raspberry PI supported?
Switchres does not currently support Raspberry PI. However, I have improved the switching method (VC4) for Raspberry PI with this implementation. Work is currently underway to implement VC4 (Raspberry PI switching) within Swithcres too. See the video below for the new/changes PI implementation.

New Advanced Options
Using the swithres.ini as mentioned above allows for much more flexible than before. Below are some of the available settings and their functionality.

This is used to specify your monitor preset. monitor profiles can be found here. Some of these options can be set from the RetroArch UI. To set user profiles from the switchres.ini you will need to choose INI as your CRT SwithRes option in the RetroArch UI.

Custom Ranges
If your display device does not match one of the built-in presets, then you'll need to use the custom monitor type and fill in the required crt_range[x] lines.  The crt_range lines follow the following format:

crt_range 0-9   HfreqMin-HfreqMax, VfreqMin-VfreqMax, HFrontPorch, HSyncPulse, HBackPorch, VfrontPorch, VSyncPulse, VBackPorch, HSyncPol, VSyncPol, ProgressiveLinesMin, ProgressiveLinesMax, InterlacedLinesMin, InterlacedLinesMax

User mode
This can be used to hard set super widths. for example this can be set to 1920x0 or 2560x0. Switchres will ensure that the width of generated resolution will be to the value specified and 0 is a wildcard meaning it will still bet set dynamically. RetroArch uses integer scaling here so you may find a few borders here and there when using this option. This option can be set from the RetroArch UI

Minimum dot clock
This will ask Switchres to compute a resolution having at least the specified dot clock. This is rather useful on Linux in 3 majors cases :

the GFX card does have a hardware limit on a minimal dot clock, and going below gives no display and can even freeze the hardware. In that case common values to set are 8.0 or 12.0, even 25.0. AMD cards often need a 8.0 min dot clock
The connector (because of its specs or internals) or the driver won't accept any resolution meeting a minimum dot clock. This is often the case with Intel and Nvidia GPUs. In that case, it's recommended to set 25.0.
You do want to use super resolutions in any case, so set to 25.0

Pixel Precision
Calculate horizontal borders with 1-pixel precision, instead of the default 8-pixels blocks that were required in the past. Enabling this setting greatly improves the relative horizontal centering of different video modes.
0 - Disable Hardware Refresh
1 - Enable Hardware Refresh

Turn on logging:
0 - Disable logging
1 - Enable logging

If you enable verbose, you can configure verbosity to determine the amount of detail you want switchres to provide.  The following levels can be used:
0 - No log messages will be provided
1 - Error log messages will be provided
2 - Error and general information log messages will be provided
3 - Error and general information and debug log messages will be provided

For a list of full please visit the Swithres INI wiki page

Ongoing development
We are still adding more functionality and hope to have most if not all swithres.ini options available from the RetroArch UI.

Completed work not yet implemented
There is currently a PR waiting to be be merged into RetroArch by Kopert. This implementation allows for on-the-fly changes to Switchres using ini overrides simpilat to RetroArchs' core overrides. It works in the same way and used the Retroarchs' directory structure. Should a core not look correct on your screen, you can add a CoreName.switchres.ini into the core override folder. This will then have your advanced adjustment to fix alignment, size or aspect issues you might be facing. I do hope this does make it into version 1.9.5.

Useful Links
CRT SwitchRes Guide
Switchres Wiki

Credit deserved where it is due. Without the help from the Swithres team, tester and user suggestions. This would probably would not been release as quickly as it has. To name a few.



I am sorry if i have forgotten anyone. You know who you are. Thanks again for all your help  Heart

Latest RetroArch implementation available in 1.9.5 Video

Windows does requires resolutions to be installed. 
MME4CRT Founder / Developer. 

PayPal   YouTube   Alphanu Game Studios


Forum Jump:

Users browsing this thread: 1 Guest(s)