TASEmulators / BizHawk

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
http://tasvideos.org/BizHawk.html
Other
2.2k stars 384 forks source link

[Feature Request]: Ability to set custom display refresh rate depending of Region #2795

Open eugene-s-nesdev opened 3 years ago

eugene-s-nesdev commented 3 years ago

Mesen have a nice option to force user-specified refresh rate in fullscreen mode. User can select it from drop-down list of refresh rates that your GPU/Dispaly support:

mesen

Nestopia had "auto" refresh rate function in fullscreen depending of region. For NTSC emulator try to set 60 or 120 Hz, prefer higher value, if hardware supported it. For PAL/Dendy emulator try to set 50 or 100 Hz, prefer higher value, if hardware supported it. It was really nice when i had CRT, which supported 60-75-85-100-120Hz

nestopia

I guess nice idea is combine this methods. To make an separate "fullscreen preferred refresh rate" option. Two drop-down menus where user can set prefferred hardware refresh rate: one for NTSC, second for PAL (for PAL/Dendy if system=NES)

Fortunately, lastest modern LCD displays have wide range of refresh rates native support, usually 50-144Hz as well, as AMD FreeSync or Nvidia G-Sync technologies for automatic refresh adjustment.

YoshiRulz commented 3 years ago

I think this is blocked by #825/#1207.

eugene-s-nesdev commented 3 years ago

True reason of this topic/request - ability to smooth (no-tearing) scroll, which is avaliable ONLY when physical refresh rate corresponding with emulator output.

When emulating NTSC 60Hz mode - preferred physical refresh rate = 60Hz or multiple value (e.g. 120Hz) When emulating PAL/Dendy 50Hz mode - preferred physical refresh rate = 50Hz or multiple value (e.g. 100Hz) This settings + vsync gives true smooth scrolling.

Most of PC-hardware runs at default 60Hz refresh rate, so it's good for NTSC but cause jerky scroll on PAL. Not so much emulators have ability to switch between refresh rates separately depending of region. Of course, i mean fullscreen mode.

This feature was added to puNES/QT (linux and winD3D/OpenGL) in lastest commits: https://github.com/punesemu/puNES/commit/7666b7260732da3b3cc6158a343eb8b3e958e3ef https://github.com/punesemu/puNES/commit/232380ece1723497493d7be097a632b8616a5ca2 https://github.com/punesemu/puNES/commit/4ee0839ac83630b4b4398199d4799fd2c1216a93

It have "Adapt Refresh Rate to the Region" checkbox: For NTSC emulator try to set 60 or 120 Hz, prefer lower value, if hardware supported it. For PAL/Dendy emulator try to set 50 or 100 Hz, prefer lower value, if hardware supported it.

punes

Also, it was added to Mesen fork by mkwong98: https://github.com/mkwong98/Mesen/commit/708a13b1c7c48b89dd4e89352f13894db6913f34

128202023-b022a57a-a106-4f07-95c4-36907b3591a3

It works very well. This feature will be very useful for all systems, not for NES-only.

ghost commented 1 year ago

If you guys add this you may as well add resolution change option. I currently get around this using reso.exe from becheck. Allows me to launch bizhawk at the resolution and refresh i want. I actually have one launching at 60hz and another at 50hz.

just mentioning this as after I discovered reso it made bizhawk more practical to use on my setup.