SwitchRes Ignoring ArcadeOSD porch settings

I’m wondering if something has changed with SwitchRes. I updated my 2nd build (backroom with a CRT) and now it seems to completely ignore the modeline changes I make in Arcade OSD.

It is shifting the entire thing horizontally to the right. I was fine with this for a few days, as I just shifted it to the left with the CRT’s service menu, but I powered up my real N64 on the other input and realized that this wasn’t a solution, as it created the same problem (but to the left) for anything other than RetroArch.

I’ve manually set everything properly in ArcadeOSD, and I can verify it’s calling on the same resolution, but it completely ignores the porch values I set, and seems to use it’s own.

Has anyone had issues with this? I noticed there were some newer CRT settings, like centering, but they didn’t seem to actually ‘do’ anything - which I thought was odd.

I seem to recall @Alphanu saying the porch/centering only works through the switchres.ini these days. do you have one of those set up?

I am having the same problem

I have no idea where to put the ini file


It looks for them first in the current working directory, which would usually be your RetroArch directory.

Before the move over to Calamity’s Switchres. RA would just use the screen resolutions that were installed (not dynamic and locked refresh rates). Now that Calamity’s full Switchres is implemented everything is dynamic. It makes sense that your Arcade OSD resolutions aren’t used.

The dynamic resolutions are generated based on the monitor profile (crt_range) you have chosen or custom profile you have set in the switchres.ini more info on this can be sound here

1 Like

Ok. And even according to that link you posted, it doesnt seem like anyone knows where the ini file goes for windows. Im using windows 7. Hunter said in the retroarch folder (I guess “root folder”). Is that a correct assumption? And all my Wx192 resolutions (there are only 2: 256x192 and 320x192) are slightly misaligned on the left hand side. What file would I have to edit in order to fix that, and what parameters would need to be edited? Thank you, Au

So for windows the ini needs to be in the working directory. So the same folder as the RetroArch.exe

You need to choose a monitor preset in the switchres.ini monitor presets can be found here or set the monitor to custom and enter an manual crt_range.

For a manual crt_range look further down the monitor preset page and it explains what each value does.

All my CRT I have used the default arcade_15 preset has worked really well.

1 Like

Oh dude, speaking of which. I see those monitor presets. I also have a wells gardner 9400 and its currently using an avga card cause when i try to use the wgd9400 preset, the screen either goes out of range or slowly rolls horizontally. I’ve tried everything i could thinn of with it and I can not get a stable picture. You wouldnt happen to have any experience with a D9400, would you?

The information in this thread, and the updated doc have me up and running like 90% of the way.

I’ve got the INI set to NTSC, and I’m using 1920 super resolutions as Native was just making OSD notifications impossible to read.

The final part of the puzzle is the horizontal stretching. It’s perfectly centered now, and vertical is spot on as well, but horizontally I have the left/right side cut off by several pixels, on each side.

It’s not a CRT geometry issue, as all the consoles plugged into the same input are displaying correctly on the X-axis.

I just can’t figure out how to decrease it stretching horizontal.

Hey can you send me a photo of your .ini file? I dont think I’m doing mine right.

Hi mate,

So, what you are facing here is a limitation the range of the NTSC range. If however, NTSC monitor profile works best for you. Use it as the basses of a custom range and adjust the horizontal porch range to better fit your TV.

NTSC Range :-  
crt_range0  15734.26-15734.26, 59.94-59.94, 1.500, 4.700, 4.700, 0.191, 0.191, 0.953, 0, 0, 192, 240, 448, 480

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

Range Value Description

  • HfreqMin - Minimum Horizontal Frequency in Hz
  • HfreqMax - Maximum Horizontal Frequency in Hz
  • VfreqMin - Minimum Vertical Frequency in Hz
  • VfreqMax - Maximum Vertical Frequency in Hz
  • HFrontPorch - Horizontal Front Porch in μs
  • HSyncPulse - Horizontal Sync Pulse in μs
  • HBackPorch - Horizontal Back Porch in μs
  • VfrontPorch - Vertical Front Porch in μs
  • VSyncPulse - Vertical Sync Pulse in μs
  • BackPorch - Vertical Back Porch in μs
  • HSyncPol - Horizontal Sync Polarity
  • VSyncPol - Vertical Sync Polarity
  • ProgressiveLinesMin - Minimum Number of Progressive Lines
  • ProgressiveLinesMax - Maximum Number of Progressive Lines
  • InterlacedLinesMin - Minimum Number of Interlaced Lines
  • InterlacedLinesMax - Maximum Number of Interlaced Lines

For example use thy the following. The larger the value the bigger the porch will be (shrinking the horizonal scratch of the image)

crt_range0 15734.26-15734.26, 59.94-59.94, 1.800, 4.700, 6.4, 0.191, 0.191, 0.953, 0, 0, 192, 240, 448, 480

Just remember to change you monitor profile to custom and change crt_range0 from auto to the above. Your ini should look similar to below.

Monitor                  custom   

crt_range0               15734.26-15734.26, 59.94-59.94, 1.800, 4.700,6.4, 0.191, 0.191, 0.953, 0, 0, 192, 240, 448, 480

I hope this helps.

what you will also notice is there is no range in the horizontal 15khz range (15734.26-15734.26) You might want to have a look a a few ranges and possible play with this a little as well. Only if you really need to. Take a look here

If you are using Windows you can use Arcade OSD to adjust the porch vales to se how it looks and copy these to the range!


This helped massively. I ended up going with 1.6 and 6.0, and I still don’t fully understand how this all works, but it got me tinkering with it in the correct way and now I’ve got it running better than it ever was before.

Thank you so much for the help man. I just really really appreciate it. I was having a crap day and this just really made my night.

Thank you.

I’m gonna go play some Mega Man X3 now.


EDIT: For future readers… Make sure you calibrate your settings on multiple systems. I did the 240p suite on Genesis, but had “Full Borders” on lol and had to re-calibrate.

I went with 3.2 and 7.8, after trying an SNES game and realizing I’m an idiot XD


I am having the same issue only I’m not able to fix the horizontal centering. If switchres doesn’t use the timings of the modelines in the driver (either created through VMM or corrected by ArcadeOSD), then it makes sense as to why I’m having this problem, but I used ArcadeOSD to create a monitor preset by adjusting the 240p mode and copying the modelines.

If I use the generic presets for 15kHz or NTSC, I get the same issue, everything is shifted off screen to the right. But when I use my new custom preset in VMM, I’m able to generate resolutions that are perfectly centered. Why doesn’t Retroarch do the same when I plug that custom crt_range into switchres.ini?

Here is a link to the help thread I started on ArcadeControls. I would start a new thread here but don’t have the ability yet. If anyone can help me figure out what’s going wrong, I’d greatly appreciate it!


Basically again what’s happening is that I can use VMM to generate centered modelines from my custom crt_range preset, but even plugging that preset into switchres.ini, RetroArch seems to generate new, off-center modelines when switchres is enabled. I’m definitely using the INI setting and have it set to “native” in the app.

I can turn switchres off and set the resolution manually from the driver and everything looks as it should. Why is RA generating faulty modelines? I was under the impression that it uses the exact same programming as the generation done in VMM…