1. Use the latest beta version of Dolphin, and prior to installing it delete previous:
Documents\Dolphin Emulator\Config\Dolphin.ini
Documents\Dolphin Emulator\Config\GFX.ini
2. Delete Dolphin's shader cache files every time before launching Dolphin.exe, as it can trick you into thinking you solved stutters when it's just the shader cache from a previous playthrough of that section of the game.
Documents\Dolphin Emulator\Cache\*.uidcache
Documents\Dolphin Emulator\Cache\Shaders\*.cache
3. Restart Dolphin between games
4. Use Exclusive Ubershaders
5. I'm using OpenGL as the renderer
6. Dolphin must be presenting 59.94fps regardless of the game's internal fps, which only occurs if "skip presenting duplicate frames" and "immediately present XFB" are both unticked. Can be verified with RTSS overlay which in my case reports "OGL 59.9fps" (in RTSS untick "integer framerate" to see the decimal place). Dolphin's own fps overlay reports the game's internal fps, not the presenting fps.
7. Monitor's refresh rate must be 59.94hz. I used CRU to fine tune this custom refresh rate & verified with vsynctester.com & MadVR's Ctrl+J debug screen. If your custom refresh rate isn't being applied, try deleting any 59hz & 60hz modes from the CTA extension block if present (both in CTA block's "detailed resolutions" & "TV resolutions" if applicable) and add your new custom mode to a new "display ID 1.3" extension block beneath the CTA extension block. If the new custom mode doesn't appear in NVCP it should appear in Windows display settings.
8. Vsync: enabled in Dolphin & "use application setting" in NVCP. OpenGL triple buffering enabled in NVCP.
9. Don't use any external tools to limit the frame rate, such as RTSS. It seems Dolphin lacks asynchronous rendering so limiting the fps actually affects the whole speed of CPU emulation which can cause stutters and audio glitches -- even when limiting to 59.94fps. CPU usage seems to be a lot higher on one core when RTSS is limiting fps.
10. Progressive scan disabled
11. Audio: DSP HLE cubeb
12. Don't use savestates as they corrupt global graphics settings due to the bugged way they write settings to the savestate and load them back to global settings when loading the savestate, eg. the progressive scan & PAL60 settings, and even the Wiimote settings.
13. Run games from an SSD, preferably not via USB (or try a different USB port)
14. All my games are NTSC versions, except for some PAL-only releases
Per-game settings can be adjusted from right click > properties > game config > editor > user config, into which we can write config values defined here
https://wiki.dolphin-emu.org/index.php?title=GameINI
If the game won't boot or freezes, try one at a time in this order:
A. If the game's internal framerate is 60fps: [Video_Hacks] SkipDuplicateXFBs = True
B. [Core] SyncOnSkipIdle = True / False
C. [Core] SyncGPU = True
D. [Core] CPUThread = False
E. Check the game's wiki (right click > properties > Wiki)
If the game has performance issues, try in this order:
F. If it's a PAL game: [Core] PAL60 = True
G. Try a different renderer eg. [Core] GFXBackend = OGL / Vulkan / D3D / D3D12
H. Lower the resolution, eg. for 2x (960p): [Video_Settings] InternalResolution = 2
I. Overclock the emulated CPU, eg. for 150% CPU: [Core] OverclockEnable = True, [Core] Overclock = 1.5
J. [Video_Settings] ShaderCompilationMode = 2
K. [Video_Settings] ShaderCompilationMode = 0
L. Disable shader cache for Dolphin.exe in NVCP
M. Try overriding one at a time the default per-game settings listed in right click > properties > game config > editor > default config (override them in the user config section below it)
N. Check the game's wiki (right click > properties > Wiki)
Examples where issues were solved by the above:
1. Donkey Kong Country Returns (A)
2. Battalion Wars 2 (B+J)
3. Wave Race Blue Storm (D)
4. Wind Waker (I)
5. No More Heroes (G+J)
6. Disaster: Day of Crisis (F)
Using RTSS "scanline sync" to achieve low latency for many games:
1. Game's config: [Video_Hardware] VSync = False
2. In RTSS create a profile for Dolphin.exe with framerate limit = 0 and scanline sync = -1 (or whatever value is needed to shift the tear line off screen).
Scanline sync seems to only work well for games with very consistent render times, eg. Mario Galaxy, NSMBW, Trackmania. As mentioned previously it also increases CPU usage on the main core, and RTSS's "general > compatibility properties > enable passive waiting" doesn't seem to alleviate it on my system.
Alternatively instead of scanline sync: [Video_Hacks] ImmediateXFBenable = True. However this will probably cause Dolphin to no longer present 59.94fps for games that don't render internally at 59.94fps, potentially resulting in stutter.