Black frame insertion
It would be applied only to the virtual screen to hide repeated frames when the game runs at considerably less fps than the external fps. The goal is to get a perfectly smooth moving image without repeated frames.
It should fill the repeated frames of exact divisors of the refresh rate. Possible options:
– 1/2 fps: “frame, black”. Example: 60fps at 120Hz.
– 1/3 fps: “frame, black, black”. Example: 40fps at 120Hz.
– 1/4 fps: “frame, black, black, black”. Example: 30fps at 120Hz.
Ideally, the fps of the game should be synchronized with the external fps, being an exact divisor and not something in between, to have the best frame pacing. But being unsynchronized wouldn’t cause uneven flickering because black frames are synchronized with the external fps.
For the best possible input lag (the same as not using BFI), the shown frame should be the first showing of a game frame and not one of the repeats. I don’t know if it will be possible to know with certainty. That’s why in some emulator fixes I offer the option to switch to the other frame when black frames are half of the total frames.
Optional: customizable opacity of the black frame. When the black frame is just a very dim version of the frame you’re hiding, it can decrease the transition time of the pixels (for example if the display has difficulty going from black to other colors). Or it can be more comfortable for the eyes of some people.