Welcome, Guest
You have to register before you can post on our site.



Search Forums

(Advanced Search)

Forum Statistics
» Members: 4,719
» Latest member: rooveHof812
» Forum threads: 71
» Forum posts: 249

Full Statistics

Online Users
There are currently 34 online users.
» 0 Member(s) | 33 Guest(s)

Latest Threads
Switchres comes to RetroA...
Forum: Latest News
Last Post: alphanu
06-10-2021, 08:02 PM
» Replies: 0
» Views: 3,976
Dynamic resolution issues
Forum: Support
Last Post: alphanu
04-19-2021, 08:03 AM
» Replies: 1
» Views: 1,066
Official Public Release
Forum: Mubuntu OS Public Release
Last Post: alphanu
04-19-2021, 08:00 AM
» Replies: 24
» Views: 30,377
Few questions for 240p
Forum: General discussion
Last Post: atohmdiy
12-05-2020, 06:10 PM
» Replies: 0
» Views: 2,440
New CRTSwitchRes update
Forum: Latest News
Last Post: alphanu
09-10-2020, 02:18 PM
» Replies: 0
» Views: 1,282
MME4CRT on Lubuntu - squi...
Forum: Issues
Last Post: alphanu
09-03-2020, 02:28 PM
» Replies: 1
» Views: 1,716
MME4CRT on Lubuntu - squi...
Forum: Support
Last Post: alphanu
09-03-2020, 02:26 PM
» Replies: 1
» Views: 1,684
CRT Turns off when enabli...
Forum: Support
Last Post: Jouster
07-31-2020, 01:23 AM
» Replies: 0
» Views: 1,175
Over/Under scan adjustmen...
Forum: Latest News
Last Post: alphanu
07-27-2020, 03:12 PM
» Replies: 0
» Views: 1,151
Got it working, just a fe...
Forum: Support
Last Post: Mizkreant
07-16-2020, 04:23 PM
» Replies: 1
» Views: 1,817

  Switchres comes to RetroArch.
Posted by: alphanu - 06-10-2021, 08:02 PM - Forum: Latest News - No Replies

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. 

  Few questions for 240p
Posted by: atohmdiy - 12-05-2020, 06:10 PM - Forum: General discussion - No Replies


I just spend the day trying to make my setup to work, without much success i must say. I own a bvm-20f1e and a mister. In term of simplicity for crt users mister is the ultimate heaven, go to config file, direct video to 1, composite sync to 1, connect a dac and you are ready to go.

For retro arch it seems more complicated to stay polite. I want to play some 480p games (wii or dreamcast) and 240p not yet on mister (some arcade, ps1 etc). I own a small pc with a small passive radeon 230, that should be compatible 240p without super resolution. 
I also build a gbs scaler with gbs control firmware, and i build two passive sync combiner so i can connect my nintendo switch in 480p 4:3 and downscale to 240p. It works, but the gbs is picky at best... 

Anyway i first tried with lakka, but their x86 build seems outdated and for a unknown reason the crt menu is not in the option. So today i try a clean build with the last manjaro with my small pc, and tried to make retroarch (1.9.0) to work.

First i tried to setup the 15khz mode in crt option and see what it does. It create two modeline in my output, one in 15 khz "2560x240p 60hz" and the other in 700x480, which is not 15 khz. There is a subject here about 15 khz and it said retroarch will use 700x480 as default menu resolution, i really want to ear why because i don't understand.
The only way i manage to get the menu working is use xrandr to set the 15khz modeline on the destkop, connect to the bvm, then start retroarch with the proper configuration (15 khz and everything set to 320x240). I get the rgui menu, but impossible to start a game. I tried metal slug 6 with flycast, it's suppose to be 480p native but flycast can be set to 240p in the option, and when this setting is ON you clearly see the game is downscale in 240p. So i try to start flycast and i don't get any image, it seems retroarch, even if i set the 320x240 in the option, still want to switch to 480p somehow, modeline was created for 2560x480 in xrandr.
I also tried a game with psx beetle hw. Same thing, cannot get a working img, it's like the game was in 480p or 480i or something...

I then tried to set the 31khz option, to get a 640x480 that i can downscale to 240p with the gbs. Here it was a complete freakshow... from what i understand, there is two way of playing 240p game in 31khz crt, line double to get 640x480 at 60hz, or go 320x240 at 120hz. retroarch create two modeline that confirm this, but as there is no option to select the method i don't see how it works. Worse, it start to try randomly to set custom refresh rate, first at 120hz, then at 1920hz...
Anyway, never manage to make it works, i try both with hdmi => hdmi to vga dac => or directly VGA => gbs without success. I also tried without the crt option enable, with standard 640x480 in retroarch, without any success, gbs to not recognize my input (when i say it's picky).

I would really like to understand how the resolution switching is done. Also retroarch really need an option for csync, emudriver seems to do it, but i hate windows Dodgy

I really like to try the pre-built img but i have no account with micro$$$oft...

  Dynamic resolution issues
Posted by: Tomsea64 - 11-03-2020, 09:12 AM - Forum: Support - Replies (1)

I am currently using crt emudriver and have been having a hard time getting dynamic resolutions to work. my gpu that i use for 15khz is the amd hd5450, it works well with native res and super resolutions. I've made a few dynamic resolutions and everytime i try and load a game, it does not switch to the proper resolution and would stay at my desktop resolution instead. Any ideas as to how i may be able to fix this? I also use windows 10 as my main os.

  New CRTSwitchRes update
Posted by: alphanu - 09-10-2020, 02:18 PM - Forum: Latest News - No Replies

Change log.

-  Removed all system calls. Switching now only uses RandR Library. this will improve compatibility and speed.

-  Resolution checks added to prevent conflicts and crashes. before a resolution is installed. CRTSwitchRes will check if it exists first. this       should improve speed and prevent crashes.

-  Closing X11 server now runs a clean up to removes all resolutions installed. This will remove all resolutions when you exit RA. Cleaning     up xrandr output and prventing any onload crashes.

-   Auto monitor switching changed. monitor index 20 is now used to switch all connected displays. this leaves 0 - 19 for manual selection.      Hopefully, fixing multi monitor issues.

  MME4CRT on Lubuntu - squished image
Posted by: Yuke - 08-27-2020, 10:27 AM - Forum: Support - Replies (1)


i installed the Image and executed the Script found here on the forums but when i turn CRTResSwitch on, the image is just squished. Am i missing something?



I5 3570K

ASRock Z77 Extreme 4

R7 240 (via UMSA)

  MME4CRT on Lubuntu - squished image
Posted by: Yuke - 08-26-2020, 09:01 AM - Forum: Issues - Replies (1)


i downloaded the Lubuntu image provided here on the forums + used the auto-script to install the resolutions on my VGA-1 adapter (https://mme4crt.alphanudesign.co.uk/foru....php?tid=4)

When i tried to activate the SwitchRes everything was just squished, tho.

Am i missing something?



I5 3570K

ASRock Z77 extreme 4

R7 240

  CRT Turns off when enabling CRT SwitchRes
Posted by: Jouster - 07-31-2020, 01:23 AM - Forum: Support - No Replies

I have a Raspberry PI 3b+ connected through a VGA666 to a CRT Monitor. I'm currently running Retropie + EmulationStation + RetroArch 1.7.6 at 800x600x85Hz using HDMI_TIMINGS in my config.txt.

When I go into Retroarch config, I set CRT Super Resolution to 1920. As soon as I toggle CRT Switch Res to ON, the monitor shuts off. I tried turning the monitor back on, but it says No Signal. The monitor definitely supports 1920; 1920x1440x75 Hz is one of its native resolutions.

Am I missing something obvious? Thanks for any help!

  Over/Under scan adjustments - incoming
Posted by: alphanu - 07-27-2020, 03:12 PM - Forum: Latest News - No Replies

Very soon, MME4CRT and RetroArch will have the option to adjust the porch algorithm used by CRTSwitchRes on the fly. This will allow you to adjust them so you can fit the game image on your CRT.

  Got it working, just a few issues I need help with...
Posted by: Mizkreant - 07-14-2020, 11:43 PM - Forum: Support - Replies (1)

I couldn't get the stand alone lubuntu distro working, but I did manage to get MME4CRT working by installing SparkyLinux ( a lightweight Debian based distro with a LxQt desktop environment) and running alphanu's script. RetroArch compiled and for the most part works. I only need to figure out how to work around a few issues and I'll be happy.

I set the startup resolution for the main GUI menu via retroarch.cfg to be 640x480. I don't enable SwitchRes here, but on a per game basis. There may be no reason to do it this way, but I've had issues with other builds of RetroArch acting strangely otherwise. However, when launching a game, RetroArch switches from 640x480 to 1280x1024. This is not the desktop resolution either. The desktop is set to 1280x960. I'm using a uGreen HDMI to VGA converter to display the image to a 31 Khz CRT. This converter box always seems to want to default to 1280x1024. I don't know if converter boxes have EDID but this seems to be set to the preferred resolution. Windows and Linux both want to default to it. Once in game, I can use the quick menu to turn on CRT Switchres and it works fine. I then save a per game override. However, after closing the game (using "Close Content), rgui remains in whatever super resolution was set by CRT Switchres, not 640x480. If I exit RetroArch, it still remains in this resolution and doesn't reset to the desktop resolution. Is there a way to fix this?

For games above 480 height where I don't use super resolution (I tried it but it didn't seem to do anything, I think I read CRT Switchres isn't meant to work in this case), I thought I could create a per game .cfg file override and specify the resolution and refresh rate, with for example, video_fullscreen_x = "640", video_fullscreen_y = "480", and video_refresh_rate = "60.0000" but RetroArch ignores this even though the OSD comes up and says the override was loaded.

The last issue is with tate games. The "problem" is that CRT Switchres works as its supposed to work. That is it assumes you're going to play it that way. For example, I tried Pengo which is 224x288 horizontally, but since its a tate game, Switchres considers the resolution to be 288x224 and creates a modeline with a 224px height. Displayed horizontally, I can't get the correct aspect ratio using integer scaling, and non integer looks bad. In Windows I could get around this by creating a 288px super resolution and switching to it manually, but in Linux you can't switch resolutions from the gui. I'm rather inexperienced with Linux, I understand you can create custom modelines with Xrandr, but since RetroArch seems to ignore overrrides, if I created a custom modeline and put the resolution I want in the games' .cfg file it wouldn't work anyway.

Any help anyone can give would be appreciated.

  MME4CRT Evolution
Posted by: alphanu - 06-15-2020, 01:38 PM - Forum: Latest News - No Replies

MME4CRT is evolving. It is not DEAD. I cannot give a time line on the new project completion date. There are many other life events happening including family, work and studying that will change the pace of this project. However, I'll give you a teaser...

Imagine running RetroArch on **any device**. Imagine you don't have to setup any environment. All you need is a small USB device. No configuration required.

MME4CRT USB frame buffer  Big Grin