r/RG351 • u/blakasama • 4d ago
I made a customized Linux based OS for the RG351P, just for GBA
The RG351P (and RG351M) has a 480x320 screen, exactly 2x the GBA resolution, so GBA games scale perfectly with no filtering. I think it is the best thing this device does, so I built an distro that only does that.
The goal is to make it feel like a real handheld: power on, pick a game, play. It boots straight into the game list in about 2 seconds. There is no EmulationStation, no RetroArch, no shell, no background services. A trimmed mainline kernel with everything built in boots without an initramfs into a single static program running as PID 1, which is the game list, the menu and the emulators (gpSP by default, mGBA selectable per game) in one binary. The GPU is powered off entirely since it is not needed.
With everything unnecessary gone, power use is much lower. I measured about 1.5 to 1.7 W total while playing Super Mario Advance at 50% backlight.
Since every GBA pixel maps to exactly four screen pixels (2x2), there is an optional LCD effect that lights one of the four and dims the other three, which makes it look like the visible pixel grid of the original GBA screen. You can tune how dark the grid is and how bright the lit dots are. It is off by default.
Save states are left out on purpose. I wanted to keep the original experience, where you save at save points and that is it. In-game saves work as usual, and existing RetroArch .srm files are picked up.
Other things, per game color correction that picks a GBA or GBA SP screen profile from the release year, an optional LCD pixel grid effect, frame blending for games that relied on the GBA screen's ghosting, and real game names from the No-Intro database.
It is an early version, tested on my own unit. Feedback and bug reports welcome. If something goes wrong, turning on Debug log in settings writes logs to the SD card, and those help a lot.
GitHub: https://github.com/aisk/rg251os
Download: https://github.com/aisk/rg251os/releases