120hz Stuttering

I’m wondering how feasible it would be to fix this problem in RetroArch for PC users who have 120hz capable monitors. I love mine since it reduces input lag a ton compared to running at 60hz, and anything that can run higher than 60fps looks incredibly smooth. Obviously almost everything RetroArch emulates or plays runs at a max of 60fps, so extra smoothness wouldn’t be something achievable, but is there a way to fix the stuttering that happens at regular intervals by adding frame doubling or something while running at 120hz?

I’m running RetroArch on a Dell CRT monitor using 240p@120hz display mode, and I was having the same issues. I was able to make the motion smooth by editing gfx/gl.c and adding a second “context_swap_buffers_func();” to gl_frame() at around line 1500, this adds an extra black frame for every frame emulated, making the effective frame rate 60hz. This reduces image brightness by half though and frame drops become really noticeable.

Huh, that’s cool. That makes it run nice and smooth at 120hz, but that brightness drop sucks and the screen blinks every few seconds. The blinking might be because I’m using an LCD, specifically a BenQ XL2420T.

I’m no coder, but there’s gotta be a way to get that smoothness without those side effects…

Be sure you have video_refresh_rate = “120” in retroarch.cfg

The screen only blinks for me when a frame drop occurs for whatever reason.

That makes it blink more often for me. After some more testing, setting RetroArch’s refresh rate to 60 and turning off hard sync seems to stop the blinking entirely while in fullscreen. I’d probably have to test for a couple hours to see if it would have a minor framedrop after awhile that would cause a blink. If I switch to windowed mode it blinks like crazy.

I also notice a banding effect, like what you see sometimes when CRTs are filmed. That is present no matter what refresh rate or sync method I set. Fast forwarding looks pretty bad as well.

@Awakened That sounds like your monitor’s refresh rate is out of sync with the framerate. You might try fine-tuning your manually specified refresh up/down slightly to something like 119.5, etc. to see if you can lock-in to your monitor’s true refresh rate.

I tried 118.1, 118.2,… up to 121 and couldn’t get rid of the banding with the black frame patch. I wonder if that would still show up if there was a way to do frame doubling instead. I also realized that if I start it up with hard sync off I can run at all those refresh rates without blinking. Before I was turning it off via RGUI.

Running the monitor at 60hz doesn’t work?

Of course, but then I lose the benefit of 120hz reduced input lag (or video lag, I guess?). Even with hard sync frames 0 at 60hz, it’s just not as low as running at 120hz. My monitor has better color and is brighter at 120hz too for some reason.

On my Asus VG248QE, adding the extra context_swap_buffers_func() syncs up perfectly in windowed mode when I set my refresh to 120 hz. Obviously, it’s blinky when it’s set to 144 hz.

However, when I go fullscreen, the monitor thinks it’s displaying a 3D movie and the image gets blurry, like a 3D movie without 3D glasses on -_-

I don’t have any stuttering at 60 fps, whether my monitor is running at 120 hz or 144, but having an option (either runtime or compile-time) to turn on frame-doubling could be nice anyway, so I’ll look into that. Adding a black frame instead is also interesting since it will apparently eliminate sample-and-hold blur on LCDs at the expense of brightness and weird colors, so being able to choose between the two would be optimum, I think.

Awakened, have you tried the ToastyX Strobelight utility? It will strobe your monitor’s backlight instead of adding black frames to the emulator, which might give you a more consistent experience.

Thanks, hopefully that will do the trick.

I haven’t tried that. Not sure I want to mess with it from looking at the install instructions.

Don’t worry about it - try it out, I have a 120hz lightboost monitor and it’s worth the 5 mins of screwing around. You can’t really break anything.

Ok, gave it a shot. With LightBoost enabled it eliminates the banding with the black frame patch. It’s also brighter, I think. Still blinks a lot in windowed mode, fast forwarding creates a bunch of black bars that make it hard to see anything and if you want to take a screenshot they come out all black.