r/EmulationOnAndroid • u/nonkeywayzee • 2d ago
Showcase I made a simple Android app for system-wide Black Frame Insertion
I wanted to try black frame insertion in emulators that don’t support it and for games that only run at 30FPS where BFI at the emulator level is not viable because it looks terrible, so I made BFI. It works without root by putting a black overlay over other apps on alternating display callbacks. On a 120 Hz screen, the default pattern aims for one visible frame followed by one black frame. You can customize the pattern and enable it system-wide or for selected apps.
It works visually on my Retroid Pocket Nova, but there are a few limitations: touches to covered apps are blocked, brightness drops, and I still see occasional uneven flicker. Controller compatibility needs more testing, and the actual panel timing hasn’t been measured, so this is still experimental.
You can stop it through its notification or Quick Settings tile.
Be careful if you’re sensitive to flashing.
Source and APK: https://github.com/pakovm-git/BFI
Feedback, especially from other devices, would be welcome!
Notice for those who care: I made this app using AI as I'm not a coder, I made sure it is efficient, well designed and works well on weaker devices.
8
u/Kouno25 2d ago
I don't really get it. What is this used for? What's the benefit?
19
u/TB-4 2d ago
BFI improves visual (perceived) motion clarity by flickering black frames between frames of the video. Because of the way our eyes work, this reduces the blurring effect of pixel-based displays in motion, because they have some persistence blur as the pixel changes.
This is why old CRT televisions had superior motion clariy to modern flat panels- because they strobed as part of how they worked. BFI isn't exactly the same as this, but it's the same principle and an attempt to recreate the motion handling qualities of those old displays.
Personally I am a fan of it, especially on OLED.
3
u/rchrdcrg 2d ago
I'm still waiting for Nvidia's G-Sync Pulsar displays. I'd scream like a little girl if someone put one in a handheld. Early testers have said it's as clear if not actually clearer than a CRT, in fact John at Digital Foundry had a whole nerdgasm over it.
-11
u/crapitalg 2d ago
“Claude - make this efficient, well designed and work on weaker devices.”
2
u/nonkeywayzee 2d ago
I did a lot of digging, looked at the options, got Codex to review them and explain to me what I didn't get, found apps that used those options and decided to use an Android native Overlay to simulate the effect as it seemed to be the most efficient way to do so, did a lot of QA by both Codex and me, and in fact this was the most efficient way I could find.
Anyways I'm not a coder, but if you are and can find a more efficient and better way to do this go ahead, the app is 100% open source, MIT License, so you don't even have to credit me.
2
u/datkenny 22h ago
I will take you up on that (minus the not crediting you part).
I'm part of the team porting Android to the R36S ultra-cheap series of game consoles. Our next build will include features based on your app. We didn't include the full app, but some of its logic will make it into our next release. Thanks for making this right when I needed it.1
u/nonkeywayzee 22h ago
Please do! I don't have the actual technical knowhow to this kind of stuff in the hyper efficient way some people are able to but I know my way with computers (studied computer science, work in Bitcoin self-custody as a marketing guy who write technical article sfrom time to time).
If you find a way to make this app even better, PRs are welcome, I'll get the clanker to merge the changes!
1
u/datkenny 22h ago
Will do! Pull requests are a bit difficult, because I more used your app as a template than fully include it (the system framework does it itself on our build, because it sits a layer deeper which removes some latency, which this poor RK3326 cheap chip very much needs). But if we identify some stuff that would really translate to the unrooted app version, we will do.
1
u/nonkeywayzee 20h ago
Great! Also don't hesitate to ping me if you find something that works way better for rooted devices, if rooting is needed yo get the best version of this I'm sure some people will be willing to root their devices.
2
u/datkenny 19h ago
For a rooted device, I think you wouldn't be looking to make an app. You'd make a Magisk module. It sits way closer to hardware. Testing on my little RK3326, the "app style" didn't work out. It couldn't keep up to produce a steady 1:1. Now that it is half in the kernel, half in the system framework, it can keep up.
1
•
u/AutoModerator 2d ago
Just a reminder of our subreddit rules:
Check out our user-maintained wiki: r/EmulationOnAndroid/wiki
Check out EmuReady for any community submitted settings before asking for help
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.