Very enlightening. Thank you for writing such a detailed text. So, basically, as long as an emulator inner workings comply with RetroArch, it doesn’t matter if it uses a hardware renderer?
Libretro is based on the idea that a bunch of programs, mostly emulators, do basically the same stuff. Instead of reinventing the wheel on each program to make individual GUIs, we just make one and they can slot into it.
The key here, though, is that they already work in a way that matches up with libretro functions. When they don’t, they need to be modified to match up. If they don’t work in frames, we have to come up with some other way to break up their runloop and fit it into frames. If they don’t already produce a framebuffer that we can grab, we have to come up with some way to coax them into doing so. If their inputs don’t match up to what’s available on the retropad, we have to come up with some way to bridge that gap.
Those workarounds, in timing or input or output etc., are where inefficiencies and/or instabilities can sneak in.
Since we’re sharing interesting stuff about the Dolphin core, there’s this tutorial for improving the analog sticks: https://www.reddit.com/r/RetroArch/comments/yhl9cv/dolphin_core_and_analogue_stick_sensitivity/
Context is: the Nintendo GameCube arguably had the best analog stick ever created until that point. Naturally, games would take advantage of that, and the range of movement was strictly tied to the specifics of the controller. If you use any other gamepad, control will be considerably off, either too sensitive or too stiff. Calibration takes care of that, and it’s unwise to play without it. Standalone Dolphin has a built-in tool for that, RetroArch doesn’t, but you can use the former to generate the calibration values for the latter. Copy and paste them, enjoy the improvement. You can also extend that to Wii controllers, although with some caveats.
Complementing the tutorial, I didn’t have luck by setting the GCPadNew as read-only. RetroArch will just delete it and create another one. What solved the issue was to remove writing permissions for the parent folder. If you do that, though, be sure to make any core configurations beforehand, as they won’t save if the folder is locked. If you need to make any changes afterwards, then unlock the directory, make the modifications, then redo the calibration and lock the folder again.
I don’t know if it’s possible, but it would be interesting if the core could read the calibration values from a separate file, removing the need for the directory to be locked.
Thanks for this tip, I’ll try it out when I get the chance.
so i got it working with Vulkan and CRT switchres (it was the reason) i disabled it and it was working and booting fine …reenabled it while it was running freezes…for some weird reason i had to disable the 120hz mode then it would even boot with switchres enabled …and after i did that once , now it works and boots with the 120hz mode aswell …so i really unsure was the the actual reason was but it was some switchres stuff that was the problem … 
Nice!.. 
When things like that happen, it usually means one (of the many) configuration files being rewritten/recreated and this new Dolphin core seems to want every file brand-new. It’s annoying, but it looks like the default troubleshoot is “delete everything”.
yeah but maybe it failed to write/creat some weird/hidden entry for CRT switchres …i really can’t explain why it works now with the same settings i started with …that 31Khz 120Hz setting for swiitchres was never an issue before and i deleted everything dolphin related …
i wish there would be a way to save the switchres 60hz and 120hz setting and the starting res per core for such things… but that stuff always jumps back to the main config even with overwrites …but that a topic for another thread…anyways it works now
In my case it switches to 60 hz mode as Gamecube resolution is too high for 120hz on that monitor
Isn’t Gamecube resolution 640×480?
probably Switchres in this case prefers to pick the native refresh rate instead. Same for Amiga core where it switches to 50hz instead of 100. Whereas for 240p cores, it switches to 120hz, probably because 240 60 hz is not supported. Or else I have to set refresh manually at 120 hz but without Switchres
The Game Cube has a framebuffer that goes up to 640x528, and the video hardware can scale the image etc.
For 60 hz purposes it would be reasonable to keep it at 640x480, but not every games renders internally at that (e.g. you could have 608x448, you usually don´t see all 480 lines on regular TVs anyway).
No idea if the core or even standalone are reasonably accurate regarding ouput though, it was already a huge problem with the N64.