Custom Refresh Rates on Windows

For those of you who want to play at the system’s actual frame rate, and not just something similar, there is a way to do this.

Example, the SNES runs at about 60.098478FPS*, which is not quite the same as 60FPS. If you want to have smooth Vsync, you need to slow down by 0.163%, and if you want correct speed, you need to drop a frame around every 10 seconds. Slowing down by 0.163% means you will be 5.9 seconds slower over the course of an hour.

* Exact SNES framerate value is 945000000 / 15724192 FPS

By using the program Custom Resolution Utility, you can redefine what the 60Hz refresh rate video mode actually runs at. (Requires Vista or newer)

I just got this working on my laptop. Custom resolutions may not work on all computers though.

To use Custom Resolution Utility:

  • Run the program
  • Select the refresh rate closest to 60Hz, click Edit
  • Type in the desired Frequency (example, 60.098Hz)
  • Slowly change the value for Back Porch until the number shown for Actual refresh rate gets closer to the number you want. I got 60.098Hz when I set Back Porch to 145 pixels, but this will vary depending on your original video mode.
  • Click OK to exit the settings window, then OK again to exit the program.
  • Run restart64.exe to make it redirect your monitor. After running this, you may need to change your DPI settings again, so run “dpiscaling.exe” to get back to that setting.
  • Reboot your computer. You need to do this.

After doing this, RetroArch detected that the Display Reported refresh rate was 60.098, and estimated the refresh rate as 60.1Hz. Over the course of an hour, 60.1Hz will be about 0.1s faster than 60.098Hz, which is a much smaller difference than 5.9 seconds.

Note: Do not define two different refresh rates that are very close to 60Hz, only one of them will end up taking effect.

Edit: See this page http://tasvideos.org/PlatformFramerates.html for information on the exact frame rates of various consoles.

6 Likes

I found a workaround for getting both 60.098Hz and 60Hz modes to work at the same time.

Create a custom 1912x1080 resolution, and give it the exact refresh rate you want to use, such as 60.098Hz. You start with the 1920x1080 resolution, subtract 8 from the Active width, then adjust the Refresh Rate and back porch until the “Actual” refresh rate matches what you want.

Move the new 1912x1080 resolution to the top of the list, run Restart64, fix the display scale (might reset to 125%), then reboot.

Run “Advanced Display Settings”. To find this in Windows 10, right click on desktop, go to Display Settings. There is a blue link for “Advanced Display settings”, click on that. Then click “Display Adapter Properties for Display 1”.

Click the List All Modes button.

Select your new 1912x1080 mode at 60Hz, and it will be the 60.098Hz mode you created. Then if you change back to 1920x1080, you will be at 60Hz instead.

1 Like

I also found a way to request a much more precise value to match the SNES:

  • Pixel Clock: 151.69MHz
  • Total Width: 1920 + 358
  • Total Height: 1080 + 28
  • Resulting Refresh Rate: 60.09847767Hz, accurate to 6 decimal places.

Use the specified pixel clock, and set the total blanking time to 358 and 28 respectively.

2 Likes

Another idea…

You use CRU to add a custom resolution of 1912x1080 at 60.098Hz.

You still have the normal 1920x1080 at 60Hz.

When picking a system in RetroArch, make it change the screen resolution to 1912x1080 if it needs a refresh rate closer to 60.098 than 60Hz. ChangeDisplaySettingsExW would probably work well here.

What difference does it by either changing the resolution or blanking time? For example by having a look at Pixel Clock Calculator, the closest match is with 154.18 MHz and blanking time of 408 Horizontal, 22 vertical.