Retroarch and 15khz

Hello, I would like to have some informations regarding the state of 15khz with retroarch as of today. I’m used to CRT Emudriver and groovymame on a win10 platform, and it’s working perfectly with super resolutions.

Regarding retroarch, what is the best way to go with a win10 platform and a HD7000 amd card ? I did a lot of research and i can’t determine if it’s better to go with native resolutions versus super resolutions. Is there an up to date guide regarding modelines to add to emulate all console from NES to Dreamcast ?

How does work switchres in retroarch ? In groovymame with super resolutions, you don’t have to care about frequency as it automatically pick the right frequency for each game. Does it work the same in retroarch or do you have to create as modelines as needed (for example 2560x240x60 and 2560x240x50).

If someone can share his experience with all of this on the recent retroarch builds…

You can do native or super-res. I think most people use the super-res option just because it’s less fiddly and you need far fewer modelines.

People seem to have good results with this tutorial: https://cdcruze.com/2019/03/retroarch-and-crt-emudriver-setup-guide/

In Windows, RetroArch can’t generate the modelines dynamically, so you have to generate static modelines, as per the tutorial. In linux, it can generate them dynamically so there’s no need to pre-create them.

As of today, does it work in retroarch as good as groovymame does or is there some issues ? I think about games that switch resolutions multiple times like Gran Turismo, or moment when you switch back to resolution desktop when you exit a game…

I don’t use GroovyMAME, so I could tell you how it compares.

It’s been several days i play with my setup and i’m still facing 2 issues. Google doesn’t seem my friend to resolve them…And i really need help from specialist ! Here’s my setup :

  • Win 10 (mandatory for some reasons like blissblox-4play or hyperspin)
  • Radeon HD 7850 with calamity drivers (latest adrenalin 18.5.1)
  • Retroarch configured to use native resolution (not super), so i have a bunch of modelines.

In order to have a working vulkan backend, i follow advice from Calamity. I first install latest official driver from AMD, and then i install Calamity’s driver without uninstalling official AMD driver.

The first big issue is using Vulkan in fullscreen with an interlaced resolution. Flycast core force use of vulkan, as the native resolution is 480i, i just get sound with black screen. If i use vulkan backend with mesen core for example, i have no problem with fullscreen as the resolution is progressive (256x224p). To be sure, i tested with dolphin. I encounter the same result. As soon as i switch to fullscreen using an interlaced resolution, i just get a black screen, with or without vsync.

Does one of you can test and tell me if there’s a way to have Vulkan fullscreen working in interlaced resolution like 640x480i ?

My second issue is less important but i don’t know how to deal with either. I can’t get resolution switching to work with Sega Master System. I tried Pico core and Genesis Plus GX but i get the same thing. Resolution stay in 640x480i (my desktop resolution). I thought it was a missing resolution but no, i have the correct 256x192@60 available. I can switch to this resolution manually using ArcadeOSD and there’s no problem.

In retroarch log i don’t see anything that could help me :

[INFO] RetroArch 1.8.9 (Git 93eb2abdfe)
[INFO] [Overrides]: Redirecting save file to "D:\Emulators\Retroarch\RetroArch\saves\Sega Genesis\Shinobi (USA, Europe).srm".
[INFO] [Overrides]: Redirecting save state to "D:\Emulators\Retroarch\RetroArch\states\Sega Genesis\Shinobi (USA, Europe).state".
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz
[INFO] Capabilities:  MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES AVX
[INFO] Built: Jun 22 2020
[INFO] Version: 1.8.9
[INFO] Git: 93eb2abdfe
[INFO] =================================================
[INFO] [CORE]: Loading dynamic libretro core from: "D:\Emulators\Retroarch\RetroArch\cores\picodrive_libretro.dll"
[INFO] [Environ]: GET_CORE_OPTIONS_VERSION.
[INFO] [Environ]: GET_LANGUAGE: "0".
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL.
[INFO] [Overrides]: Redirecting save file to "D:\Emulators\Retroarch\RetroArch\saves\Sega Genesis\Shinobi (USA, Europe).srm".
[INFO] [Overrides]: Redirecting save state to "D:\Emulators\Retroarch\RetroArch\states\Sega Genesis\Shinobi (USA, Europe).state".
[INFO] [Environ]: PERFORMANCE_LEVEL: 0.
[INFO] [Environ]: GET_LOG_INTERFACE.
[INFO] [Environ]: SET_DISK_CONTROL_INTERFACE.
[INFO] [Environ]: GET_VARIABLE picodrive_sound_rate:
	44100
[INFO] [Environ]: GET_VARIABLE picodrive_input1:
	3 button pad
[INFO] [Environ]: GET_VARIABLE picodrive_input2:
	3 button pad
[INFO] [Environ]: GET_VARIABLE picodrive_sprlim:
	disabled
[INFO] [Environ]: GET_VARIABLE picodrive_ramcart:
	disabled
[INFO] [Environ]: GET_VARIABLE picodrive_region:
	Auto
[INFO] [Environ]: GET_VARIABLE picodrive_aspect:
	PAR
[INFO] [Environ]: GET_VARIABLE picodrive_overscan:
	disabled
[INFO] [Environ]: GET_VARIABLE picodrive_overclk68k:
	disabled
[INFO] [Environ]: GET_VARIABLE picodrive_drc:
	enabled
[INFO] [Environ]: GET_VARIABLE picodrive_audio_filter:
	disabled
[INFO] [Environ]: GET_VARIABLE picodrive_lowpass_range:
	60
[INFO] [Environ]: GET_VARIABLE picodrive_renderer:
	accurate
[INFO] [Environ]: GET_VARIABLE picodrive_sound_rate:
	44100
[INFO] [CONTENT LOAD]: Content loading skipped. Implementation will load it on its own.
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] [Environ]: SYSTEM_DIRECTORY: "D:\Emulators\Retroarch\RetroArch\system".
[libretro INFO] detected SMS ROM
[libretro WARN] warning: wanted to map @02000000, got 0000000006730000
[INFO] [Environ]: SET_INPUT_DESCRIPTORS:
[INFO] 	RetroPad, Port 1, Button "B (bottom)" => "Button 1 Start"
[INFO] 	RetroPad, Port 1, Button "Start" => "Button Pause"
[INFO] 	RetroPad, Port 1, Button "D-Pad Up" => "D-Pad Up"
[INFO] 	RetroPad, Port 1, Button "D-Pad Down" => "D-Pad Down"
[INFO] 	RetroPad, Port 1, Button "D-Pad Left" => "D-Pad Left"
[INFO] 	RetroPad, Port 1, Button "D-Pad Right" => "D-Pad Right"
[INFO] 	RetroPad, Port 1, Button "A (right)" => "Button 2"
[INFO] 	RetroPad, Port 2, Button "B (bottom)" => "Button 1 Start"
[INFO] 	RetroPad, Port 2, Button "Start" => "Button Pause"
[INFO] 	RetroPad, Port 2, Button "D-Pad Up" => "D-Pad Up"
[INFO] 	RetroPad, Port 2, Button "D-Pad Down" => "D-Pad Down"
[INFO] 	RetroPad, Port 2, Button "D-Pad Left" => "D-Pad Left"
[INFO] 	RetroPad, Port 2, Button "D-Pad Right" => "D-Pad Right"
[INFO] 	RetroPad, Port 2, Button "A (right)" => "Button 2"
[INFO] [SRAM]: Skipping SRAM load..
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Cheats]: Load game-specific cheatfile: D:\Emulators\Retroarch\RetroArch\cheats\PicoDrive\Shinobi (USA, Europe).cht
[INFO] [Audio]: Set audio input rate to: 44100.00 Hz.
[INFO] [Video]: Video @ fullscreen
[INFO] Setting fullscreen to 640x480 @ 60Hz on device \\.\DISPLAY1.
[ERROR] [DINPUT]: Failed to create mouse device.
[INFO] [Joypad]: Found joypad driver: "dinput".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [D3D11]: Found GPU at index 0: AMD Radeon HD 7800 Series (CRT Emudriver)
[INFO] [D3D11]: Found GPU at index 1: Microsoft Basic Render Driver
[INFO] [D3D11]: Using GPU index 0.
[ERROR] [dispserv]: HrInit of ITaskbarList3 failed.
[INFO] [Video]: Found display server: win32
[INFO] [XAudio2]: Requesting 32 ms latency, using 32 ms latency.
[INFO] [Display]: Found display driver: "d3d11".
[INFO] [Display]: Found display driver: "d3d11".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0000000000BC3F20
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "winmm" driver.
[WARN] Input device ID 257 is unknown to this libretro implementation. Using ETRO_DEVICE_JOYPAD.
[WARN] Input device ID 257 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD.
[WARN] Input device ID 3 is unknown to this libretro implementation. Using RETRO_DEVICE_JOYPAD.
[INFO] [Playlist]: Loading history file: [D:\Emulators\Retroarch\RetroArch\content_history.lpl].
[INFO] [Playlist]: Loading history file: [D:\Emulators\Retroarch\RetroArch\config\content_music_history.lpl].
[INFO] [Playlist]: Loading history file: [D:\Emulators\Retroarch\RetroArch\config\content_video_history.lpl].
[INFO] [Playlist]: Loading history file: [D:\Emulators\Retroarch\RetroArch\config\content_image_history.lpl].
[INFO] [Playlist]: Loading favorites file: [D:\Emulators\Retroarch\RetroArch\config\content_favorites.lpl].
[INFO] [Playlist]: Written to playlist file: D:\Emulators\Retroarch\RetroArch\content_history.lpl
[INFO] SET_GEOMETRY: 256x192, aspect: 1.333.
[INFO] Setting refresh rate to: 60.000 Hz.
[INFO] Paused.
[INFO] Unpaused.
[INFO] [config] Saved new config to "D:\Emulators\Retroarch\RetroArch\config\picodrive_libretro.cfg".
[INFO] [Cheats]: Save game-specific cheatfile: D:\Emulators\Retroarch\RetroArch\cheats\PicoDrive\Shinobi (USA, Europe).cht
[INFO] Content ran for a total of: 00 hours, 00 minutes, 45 seconds.
[INFO] [CORE]: Unloading game..
[INFO] [CORE]: Unloading core..
[INFO] [CORE]: Unloading core symbols..
[INFO] [Core Options]: Saved core options file to "D:\Emulators\Retroarch\RetroArch\config\retroarch-core-options.cfg"
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

If anyone could help on those issues, every advice are good !

Hi @Dalba

Firstly, CRTSwitchRes designed around DirectX and OpenGL. Hearing that the Vulkan driver does indeed work is great. Even though it clearly does not work correctly. I don’t believe Vulkan Likes the hook to refresh the video display driver after each resolution change. It may even be the case that interlaced resolutions are just not comparable with this driver. However, I cannot state this for a fact. I have not been able to get Vulkan working on any of my setups.

In regards to your 192p resolution issue. Because most video card will not support a resolution lower then 200p there is a hard limit set in RA, which is 200p. I know some ATI card are capable of this but not all. Also CRTSwitchRes is designed to work with Nvidia and Intel as well. Please add a resolution of 256x200@60. CRTSwitchRes keeps the original aspect ratio, so your image output should still be as close it original as possible.

1 Like

Are you planning on adding Vulkan support and/or improving CRTSwitchRes or is the project on hold?

Hi @redturtle

I am always adding tweaks here and there. The project is not on hold but I am spending less time working on it due to other factors in my life.

I see, understandble. a shift to Vulkan would be nice, i.e. for https://www.libretro.com/index.php/category/parallel-n64, because parallel rdp makes use of Vulkan. This + CrtSwitchRes would make accurate n64 gaming possible on affordable not high spec systems. unfortunately mupen64-next crashes now with above settings and CrtSwitchRes