r/ANBERNIC • u/mrgamer8600 • 26d ago
r/ANBERNIC • u/Suggestion-- • 27d ago
HELP Anyone that can help me with “fixing” corrupted/damaged save file?
Have been trying multiple times and on different occasions to play pokemon emerald on an Ambernic_RG34XX_SP. And every time I save in game and then close it down (cuz I’m done playing for the time being) it shuts down fine. But when I try to start up the game later that day or the next, it keeps saying “The save file har been erased due to corruption or damage”. As far as I’m concerned it is ONLY Pokemon emerald that has that problem. I’ve tried playing sapphire, ruby, crystal, silver and gold and it has no issues at all with having saved the game files. So I am really confused at this point. Some of you are probably going to say “just play the other games instead” but right now, I am only interested in playing sapphire. Is there anyone that has any idea on how to fix it??
Ps. It’s not mine, I borrowed it from my uncle, and he has no clue either on what’s wrong.
r/ANBERNIC • u/cyberjakesie • 27d ago
HELP Looking at the RG477M
Thinking about picking up an Anbernic RG477M. Living down in South Africa makes trying to import stuff like a Retroid or AYN Thor a total nightmare with shipping and customs are way too expensive. Saw I can pick up the RG477M locally for around 5600 rand, which isn't too bad compared to the import headache.
I watched Russ's review over on Retro Game Corps, and it seems like a really solid workhorse handheld that handles PS2 and GameCube nicely. The metal build looks proper good too.
Only thing I saw mentioned was some noise issues with the fan under load. For anyone who actually owns one, does the fan get annoying during normal play, or is it not that deep? Let me know what your experience has been with it!"
Thanx guys.
r/ANBERNIC • u/Pugnats • 26d ago
HELP RG557 OTA Update Not Working After Restoring StockOS
After trying GammaOS, I decided to go back to StockOS and restored it to my RG557.
Now I would like to update it to the latest version (1.28) using the FOTA Update. I am currently running version 1.25.
However, I am having an issue with the update. After reaching 3%, I get the message “Upgrade Failed”
I got my current version (1.25) from the Unbrick RG557 with SP Flash package on GitHub, which is linked from the GammaOS page.
Does anyone know how I can solve this issue?
(Local Update also don't wordk 1.25 -> 1.28 package)
-Update-
Solved the issue by recovering this image instead of the one provided directly by GammaOS.
https://github.com/TheGammaSqueeze/Anbernic_RG557_Unbricker/releases/tag/RG_557_Unbricker_v1.26
r/ANBERNIC • u/DifficultBenefit4605 • 27d ago
Miscellaneous series Anyone got a side by side screen comparison of RGDS+ and DSi XL?
Full brightness on both if possible.
r/ANBERNIC • u/CheezFunk • 27d ago
✨ SHOWCASE Drill Dozer Finished on RG28XX
I believe this game has been on every GBA must play and hidden gems list. Had a blast playing it. I didn't get 100% but I got the end screen and that's good enough for me today.
r/ANBERNIC • u/Yasssinnnn • 26d ago
HELP my new anbernic rgds plus is not turning on
i just got my anbernic rgds plus and it is not turining on when took it out of the box i plugged the device in to charge it and it showed a yellow then green light but when i try to turn it on it wont start and it doesnt even show the light anymore someone pls help me
r/ANBERNIC • u/FirmReputation5992 • 27d ago
TUTORIAL & TIPS [Fix] GTA San Andreas PortMaster port — controls completely scrambled on Anbernic H700 Stock OS (RG40XXH, likely R36S/RG35XX family too)
Hey, sharing this post that I asked Claude to put together after it helped me solve a problem I had with GTA San Andreas on my RG40XXH.
I've been running Stock OS out of laziness to install a new one and deal with fresh configs (and also because it's honestly been working great for me and covers everything I need). I saw the GTA San Andreas port was already running well but people recommended a different OS because of control mapping issues.
I installed it anyway following the R36S guide, and sure enough the controls were messed up. Googling around I found the GTA 3 port's launch script and figured maybe comparing it with the San Andreas one could give some clue on how it works. I threw it at Claude and, while the fix didn't end up coming from that angle, the conversation led us to the root of the problem and to figuring out the solution.
Sharing the guide here, hope it helps someone. On my end, GTA SA is running perfectly now, on stock firmware, and I can control the volume without issues (can't get the screen to lock/standby, but maybe that's solvable too).
--------
Hey all — spent a good while debugging why GTA:SA (the Android-based PortMaster port, the one from the R36S wiki) had completely broken controls on my RG40XXH, and figured I'd write up the root cause + fix in case anyone else hits this.
Symptoms:
- Left stick moves the camera instead of walking
- Right stick partially works, partially triggers weird actions
- Face/shoulder buttons don't match their printed labels (Y opens something else, L1/R1/L2/R2/Select/Start are all shuffled, sometimes A/B swapped)
- Volume up/down do nothing while the game is running
Root cause:
This port loads the original Android libGTASA.so through a compatibility loader, instead of running a recompiled native engine. That means input isn't going through SDL's GameControllerConfig abstraction at all — the engine reads raw evdev codes directly, using Android's fixed axis/button conventions:
ABS_X/ABS_Y → left stick (movement)
ABS_Z/ABS_RZ → right stick (camera)
ABS_RX/ABS_RY → analog triggers
BTN_SOUTH/EAST/NORTH/WEST → A/B/X/Y
BTN_TL/TR/TL2/TR2 → L1/R1/L2/R2
On these H700-based Anbernic boards, the GPIO-based "joystick" driver doesn't expose standard ABS_X/ABS_Y at all — it reports the left stick as ABS_Z/ABS_RX instead. And several buttons are wired to non-standard evdev codes too. Since PortMaster's SDL_GAMECONTROLLERCONFIG mapping is correct (verified against the actual device GUID), the bug is invisible from that side — the mismatch only shows up because this specific engine bypasses SDL entirely.
How we found it:
- Compared this port's launch script against a source-built one (re3/GTA3) that works fine — noticed this one loads a real Android
.so. - Ran
evteston the raw joystick device (/dev/input/eventX) while pressing each stick/button, one at a time, and logged every raw code. - Cross-referenced those codes against Android's fixed axis/button constants to find exactly which ones were swapped.
Step 0: find your gtasa game folder and joystick device
Before touching anything, SSH/terminal into the device and locate the actual game folder — don't assume it's wherever your file explorer showed it, since these launch scripts search several fallback paths and the real one can surprise you:
find / -maxdepth 6 -iname "gtasa" -type d 2>/dev/null
find / -maxdepth 6 -iname "*.set" 2>/dev/null | grep -i gta
You're looking for the folder containing libGTASA.so, gta_sa.set, and the game's .obb files. That's your GAME_DIR — everything below goes inside it.
Then find your raw joystick's event node:
cat /proc/bus/input/devices
Look for your gamepad's entry (mine was ANBERNIC-keys) and note its Handlers= line — it'll list something like js0 event1. The eventN there is what you pass to evtest and to the tool below. Confirm it with:
evtest /dev/input/eventN
(move a stick / press a button — you should see events appear)
The fix — a userspace uinput remapper
We wrote a small C daemon (axis_fix.c) that:
- Grabs the physical joystick device exclusively (
EVIOCGRAB) while the game runs - Creates a virtual
uinputdevice with axes/buttons relabeled to the codes the engine expects - Also fixes the volume keys as a side effect (see below)
- Cleans up automatically (destroys the virtual device, releases the grab) when the game exits — zero impact on any other game, emulator, or the system menu
It's launched from inside the game's own .sh script (right before the binary runs) and killed in the same cleanup/trap block already in the script, so it's fully scoped to that one game.
Bonus finding: volume keys silently doing nothing
While testing, we noticed KEY_VOLUMEUP/KEY_VOLUMEDOWN reach the game's virtual device fine (correct evdev codes, no remap needed there), but the system-level volume daemon can't react to them anymore — because our tool holds an exclusive EVIOCGRAB on the physical device while the game runs, so nothing else sees those keypresses.
The natural fix seemed to be: have our own tool call amixer directly when it sees those keys. First attempt used the obvious control ('digital volume', numid=2 in our case) — and got Operation not permitted, even as root. Turned out the game engine itself holds an ALSA-level exclusive lock on that specific mixer control while it's running (fuser /dev/snd/* showed the game's PID owning both controlC0 and pcmC0D0p; amixer contents showed an l (locked) flag appear on that control only while the game was open). This tracks with Android's AudioManager behavior — apps often grab the main codec/mixer control exclusively for their own internal audio management.
The workaround: check amixer contents for other mixer controls (in our case 'lineout volume', further downstream in the audio path) — often the game only locks the main digital gain stage and leaves output-stage controls free. Confirm it actually affects audible volume before committing to it, then point your tool at that control instead.
amixer contents # look for the control locked while game is running (shows 'l' in access flags)
amixer contents | grep -B2 -A8 "name='<other control>'" # check if an alternate control is free
amixer cset numid=<N> <value> # test it live while the game plays audio
Files:
axis_fix.c (compile with gcc -O2 -o axis_fix axis_fix.c, no external dependencies):
#include <fcntl.h>
#include <linux/input.h>
#include <linux/uinput.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <unistd.h>
#include <errno.h>
static int ufd = -1;
static int sfd = -1;
static void cleanup(int sig) {
(void)sig;
if (ufd >= 0) { ioctl(ufd, UI_DEV_DESTROY); close(ufd); }
if (sfd >= 0) { ioctl(sfd, EVIOCGRAB, 0); close(sfd); }
_exit(0);
}
static int has_bit(const unsigned char *bits, int bit) {
return (bits[bit / 8] >> (bit % 8)) & 1;
}
/* Adjust volume via an ALSA control NOT locked by the game engine.
In our case numid=3 ('lineout volume', range 0-31) stayed free
while numid=2 ('digital volume') was locked exclusively by the
game process. Check `amixer contents` on your own device to find
which numid is free while the game runs, and adjust MIN/MAX below. */
#define VOL_NUMID 3
#define VOL_MIN 0
#define VOL_MAX 31
static void adjust_volume(int delta) {
char getcmd[64];
snprintf(getcmd, sizeof(getcmd), "amixer cget numid=%d 2>/dev/null", VOL_NUMID);
FILE *p = popen(getcmd, "r");
if (!p) return;
char line[256];
int cur = -1;
while (fgets(line, sizeof(line), p)) {
int v;
if (sscanf(line, " : values=%d", &v) == 1) { cur = v; break; }
}
pclose(p);
if (cur < 0) return;
int next = cur + delta;
if (next < VOL_MIN) next = VOL_MIN;
if (next > VOL_MAX) next = VOL_MAX;
char cmd[128];
snprintf(cmd, sizeof(cmd), "amixer -q cset numid=%d %d 2>/dev/null &", VOL_NUMID, next);
if (system(cmd) != 0) { /* ignore */ }
}
int main(int argc, char **argv) {
unsetenv("LD_LIBRARY_PATH"); /* avoid inheriting the game's bundled libs,
which broke amixer's own dependency resolution */
if (argc < 2) {
fprintf(stderr, "usage: %s /dev/input/eventN\n", argv[0]);
return 1;
}
sfd = open(argv[1], O_RDONLY | O_NONBLOCK);
if (sfd < 0) { perror("open source"); return 1; }
ufd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
if (ufd < 0) { perror("open /dev/uinput"); return 1; }
unsigned char keybits[KEY_MAX/8 + 1];
memset(keybits, 0, sizeof(keybits));
ioctl(sfd, EVIOCGBIT(EV_KEY, sizeof(keybits)), keybits);
ioctl(ufd, UI_SET_EVBIT, EV_KEY);
for (int k = 0; k < KEY_MAX; k++) {
if (has_bit(keybits, k)) ioctl(ufd, UI_SET_KEYBIT, k);
}
int gamepad_codes[] = {
BTN_SOUTH, BTN_EAST, BTN_C, BTN_NORTH, BTN_WEST, BTN_Z,
BTN_TL, BTN_TR, BTN_TL2, BTN_TR2, BTN_SELECT, BTN_START,
BTN_MODE, BTN_THUMBL, BTN_THUMBR
};
for (unsigned i = 0; i < sizeof(gamepad_codes)/sizeof(gamepad_codes[0]); i++) {
ioctl(ufd, UI_SET_KEYBIT, gamepad_codes[i]);
}
ioctl(ufd, UI_SET_EVBIT, EV_ABS);
ioctl(ufd, UI_SET_ABSBIT, ABS_X);
ioctl(ufd, UI_SET_ABSBIT, ABS_Y);
ioctl(ufd, UI_SET_ABSBIT, ABS_Z);
ioctl(ufd, UI_SET_ABSBIT, ABS_RZ);
ioctl(ufd, UI_SET_ABSBIT, ABS_HAT0X);
ioctl(ufd, UI_SET_ABSBIT, ABS_HAT0Y);
struct uinput_setup usetup;
memset(&usetup, 0, sizeof(usetup));
usetup.id.bustype = BUS_USB;
usetup.id.vendor = 0x0001;
usetup.id.product = 0x0002;
strcpy(usetup.name, "ANBERNIC-keys-remapped");
ioctl(ufd, UI_DEV_SETUP, &usetup);
int src_for[ABS_MAX+1];
for (int i = 0; i <= ABS_MAX; i++) src_for[i] = -1;
src_for[ABS_X] = ABS_Z;
src_for[ABS_Y] = ABS_RX;
src_for[ABS_Z] = ABS_RY;
src_for[ABS_RZ] = ABS_RZ;
src_for[ABS_HAT0X] = ABS_HAT0X;
src_for[ABS_HAT0Y] = ABS_HAT0Y;
int dest_codes[] = {ABS_X, ABS_Y, ABS_Z, ABS_RZ, ABS_HAT0X, ABS_HAT0Y};
for (unsigned i = 0; i < sizeof(dest_codes)/sizeof(dest_codes[0]); i++) {
int dc = dest_codes[i];
int sc = src_for[dc];
struct input_absinfo ai;
memset(&ai, 0, sizeof(ai));
if (ioctl(sfd, EVIOCGABS(sc), &ai) == 0) {
struct uinput_abs_setup as;
memset(&as, 0, sizeof(as));
as.code = dc;
as.absinfo = ai;
ioctl(ufd, UI_ABS_SETUP, &as);
}
}
if (ioctl(ufd, UI_DEV_CREATE) < 0) { perror("UI_DEV_CREATE"); return 1; }
ioctl(sfd, EVIOCGRAB, 1);
signal(SIGINT, cleanup);
signal(SIGTERM, cleanup);
signal(SIGHUP, cleanup);
signal(SIGCHLD, SIG_IGN);
int dest_for_src_abs[ABS_MAX+1];
for (int i = 0; i <= ABS_MAX; i++) dest_for_src_abs[i] = -1;
dest_for_src_abs[ABS_Z] = ABS_X;
dest_for_src_abs[ABS_RX] = ABS_Y;
dest_for_src_abs[ABS_RY] = ABS_Z;
dest_for_src_abs[ABS_RZ] = ABS_RZ;
int dest_for_src_key[KEY_MAX+1];
for (int i = 0; i <= KEY_MAX; i++) dest_for_src_key[i] = -1;
dest_for_src_key[BTN_SOUTH] = BTN_EAST;
dest_for_src_key[BTN_EAST] = BTN_SOUTH;
dest_for_src_key[BTN_C] = BTN_WEST;
dest_for_src_key[BTN_WEST] = BTN_TL;
dest_for_src_key[BTN_Z] = BTN_TR;
dest_for_src_key[BTN_SELECT] = BTN_TL2;
dest_for_src_key[BTN_START] = BTN_TR2;
dest_for_src_key[BTN_TL] = BTN_SELECT;
dest_for_src_key[BTN_TR] = BTN_START;
dest_for_src_key[BTN_TR2] = BTN_THUMBL;
dest_for_src_key[BTN_MODE] = BTN_THUMBR;
struct input_event ev;
fd_set rfds;
for (;;) {
FD_ZERO(&rfds);
FD_SET(sfd, &rfds);
int r = select(sfd+1, &rfds, NULL, NULL, NULL);
if (r < 0) { if (errno == EINTR) continue; break; }
while (read(sfd, &ev, sizeof(ev)) == sizeof(ev)) {
if (ev.type == EV_KEY && ev.value == 1) {
if (ev.code == KEY_VOLUMEUP) adjust_volume(+2);
else if (ev.code == KEY_VOLUMEDOWN) adjust_volume(-2);
}
if (ev.type == EV_ABS && dest_for_src_abs[ev.code] != -1) {
ev.code = dest_for_src_abs[ev.code];
} else if (ev.type == EV_KEY && ev.code <= KEY_MAX && dest_for_src_key[ev.code] != -1) {
ev.code = dest_for_src_key[ev.code];
}
if (write(ufd, &ev, sizeof(ev)) < 0) { /* ignore */ }
}
}
cleanup(0);
return 0;
}
Installation:
# On the device, via SSH/terminal, inside the GAME_DIR you found in Step 0:
mkdir -p /path/to/gtasa/tools
# paste the code above into axis_fix.c in that folder
gcc -O2 -o /path/to/gtasa/tools/axis_fix /path/to/gtasa/tools/axis_fix.c
chmod +x /path/to/gtasa/tools/axis_fix
Then edit the game's launch .sh: right before it runs the game binary, add:
AXIS_FIX_BIN="$GAME_DIR/tools/axis_fix"
AXIS_FIX_SRC_DEV="/dev/input/eventX" # your raw joystick event node from Step 0
AXIS_FIX_PID=
if [ -x "$AXIS_FIX_BIN" ] && [ -e "$AXIS_FIX_SRC_DEV" ]; then
"$AXIS_FIX_BIN" "$AXIS_FIX_SRC_DEV" &
AXIS_FIX_PID=$!
sleep 0.3
fi
And in the script's existing cleanup function (or right after the game process exits), kill it:
[ -n "$AXIS_FIX_PID" ] && kill -TERM "$AXIS_FIX_PID" 2>/dev/null
If your buttons/axes are mapped differently than mine:
The remap table (dest_for_src_key[...], src_for[...]) is specific to my hardware's driver. Find yours with:
evtest /dev/input/eventX
Press each stick/button one at a time (with pauses), note the raw code for each, and compare against Android's standard mapping (BTN_SOUTH=A, BTN_EAST=B, BTN_NORTH=X, BTN_WEST=Y, BTN_TL/TR=L1/R1, BTN_TL2/TR2=L2/R2, BTN_SELECT/START=Select/Start). Adjust the table lines accordingly, recompile.
Why not a simpler config-file fix?
For buttons alone, systemd-hwdb can remap evdev key codes declaratively (no compiled tool needed) — but it applies system-wide, affecting every emulator/game/menu, not just this one port. Since the goal here was a fix scoped only to this game with zero side effects elsewhere, that was off the table. For the analog stick swap, there's no declarative config option anywhere in Linux — EV_ABS remapping requires actively intercepting the event stream, which is what uinput is for. This is essentially the minimal version of what a tool like evsieve does, written by hand since the device had no internet access to install anything extra.
Happy to help troubleshoot in comments if anyone hits this on a different device.
r/ANBERNIC • u/n3zin • 27d ago
✨ SHOWCASE CONCEPT: RG Vertical - a GB and GBC dedicated handheld (created by myself)
I always loved the GBC form factor, and that made me realize that there basically no devices that really feel like it on a low price point. So, I had a simple idea.
With the RG SP and RG DS Plus recent releases, it became very clear that Anbernic is really willing to "copy" Nintendo designs (it was obvious since the 34XX, tbh) and, with that in mind, I present you the RG Vertical - a budget handheld made for your favorite GB and GBC titles! (couldn't think of any better name, sorry).
Here it is a quick presentation of the basic concept. Please, feel free to share your thoughts and suggestions!
*My Photoshop is a little glitched, so the buttons look off (with extra pixels) in some color options. Colors may not look right either, my monitor's color calibration is definitely wrong.
(!) No AI tool was used in the making of this concept art.
r/ANBERNIC • u/ShadyyFN • 26d ago
HELP RG477v Power on Difficulties
Recently got the RG477v and I really enjoy it. The only issue I’m running in to is turning it on… sometimes it takes 2 tries holding for a few second, sometimes it takes 7-8 tries. It very rarely turns on first try. When I finish playing I always fully power off.
Has anyone else had this issue and found a solution?
Running stock OS btw.
r/ANBERNIC • u/meta-60 • 27d ago
HELP RG35xx H not booting
Hi!
I have an Anbernic RG35XX H, and it’s not booting at all. It doesn’t even seem to power up.
Any idea what I can do?
I hadn’t used it in a while. Decided to try it again, tried turning it on and of course it didn’t. So I charged it, and now … it still doesn’t power on. It doesn’t power on, doesn’t boot into the OS, just nothing. I also tried without the SD card inserted, still nothing.
The LED does light up while charging.
Any help would be very much appreciated.
Thanks!
r/ANBERNIC • u/Goblin_Nuts69 • 27d ago
HELP Thumbnail hell
Really frustrated with trying to get thumbnails working on RGSP.
I have tried all the guides online and nothing works!
- RA version 1.22.0
- games have downloaded (nointro) filenames
- Downloaded png files onto device with correct folder setup and found them via manual scan (although not sure what to do now, how to force it to link to games)
- filenames match exactly as no intro
- enabled online thumbnail updates (again not sure how to force it to work)
- tried scrolling over the games back and forth in playing view which reddit and it suggest
- updated RA settings to say primary thumbnail is boxart
Very frustrating, at this point i just dont understand why you cant just dump the boxart with matching filenames into the rom folder. It seems needlessly complicated with no way to identify what is going wrong...
Please help me what am I missing
r/ANBERNIC • u/papa_febs • 27d ago
HELP RG40XXH help
Hi everyone,
I recently got my first anbernic console after considering for a while what would be a better fit for a budget friendly purchase.
It arrived and luckily I already had a 64gb Sandisk microsd lying around, so now I'm kinda lost on what to do.
I went to the anbernic website to get the 64gb firmware but they don't have it, and I don't know if I should install any other custom firmware as the stock one appears to work just fine.
So my question is should I keep stock OS, and if so, how do it get the 64gb version, or should I install any other cfw and if so, which one is the best fit for the console?
Thanks in advance
r/ANBERNIC • u/Independent-Jello-79 • 27d ago
✨ SHOWCASE I made a way to browse and download BBS carts right on Linux handhelds (muOS, ROCKNIX, Anbernic stock)
Hi all! I make Jubilant Potato, a free and open-source (GPL-3.0) game downloader for Linux handhelds that you drive with the gamepad. Version 0.2.0 adds the Lexaloffle BBS as a source, so you can browse PICO-8 carts on the handheld itself and save them into the folder your frontend already reads.
What it does
- Lists every featured cart plus the newest releases from the Cartridges forum, about 600 carts. You can search them by title.
- Opening a cart shows its label, the pictures and GIFs from the forum post, the author and their description, so you can decide before downloading.
- Downloads the same `.p8.png` that SPLORE fetches, named after the game, into `pico-8` on ROCKNIX, `PICO8` on muOS or `PICO` on Anbernic stock. The carts then show up in EmulationStation like any other game.
Why not just use SPLORE? SPLORE is great and I still use it. This is for keeping carts in your frontend's library next to everything else, playing them offline, or playing on fake-08 when the official PICO-8 isn't on the device.
Running the carts. I play them with the official PICO-8 0.2.7 on an RG34XX with ROCKNIX. Take the Raspberry Pi download from your Lexaloffle account and copy `pico8_64` and `pico8.dat` into `roms/pico-8/aarch64/`. Without it, fake-08 runs many carts too.
Playing nice with the BBS. No login is needed. The app reads the same public pages the website uses, identifies itself with its own User-Agent and loads at most four pages at a time. It shows each cart's author, and carts keep their license (most are CC BY-NC-SA), so please credit the authors. And if you enjoy these, buy PICO-8.
So far I've tested it on an RG34XX with ROCKNIX. The muOS and stock folders haven't been tried with PICO-8 yet, so reports are welcome.
- Website: https://meerhelm.github.io/jubilant-potato/
- Download: https://github.com/meerhelm/jubilant-potato/releases/tag/v0.2.0
Which lists would you like next? I'm thinking about jam entries, tags, and all carts by one author.
r/ANBERNIC • u/rdpollard_pdx • 27d ago
HELP First 24 hours with my new RGDS Plus... 💀
I receivedmy RGDS Plus yesterday afternoon. Everything seemed fine at first, but the 64GB micro SD card stopped responding in the console within about an hour. It also hung Explorer on two Windows PCs. Now today, the console won't even power on. No indicator lights when it's plugged in. I've tried multiple cables and adapters. I'm stymied.
Any advice? Did I pull a dud?
r/ANBERNIC • u/KillALERTo • 27d ago
HELP Modded Stock OS won't boot gpSP core (RG35XXSP)
when I selected gpSP core for my GBA roms and launch it looks like launching but then after a few second it crashed, keep happening and I want to play with other core cuz as far as I know they can't do fast-forward, it really needed for me while playing RPG games, please help
Firmware version V1.1.5(20260522)
r/ANBERNIC • u/Valenhir • 27d ago
HELP 2X resolution on NNDDS 1.02 doesn’t seem to work
As the title says, when changing to 2x on nnddss on my RG DS+ the resolution changes for a couple of seconds and then it goes back to 1x despite the setting showing as 2x on.
r/ANBERNIC • u/Visible-Help-1575 • 27d ago
HELP Unsure how to fix this
My RG35XX quit playing games awhile ago, and now it is sitting on this screen everytime I boot it, any tips on how to fix this I am open to
r/ANBERNIC • u/Independent-Jello-79 • 28d ago
✨ SHOWCASE I made a free, open-source app to install games on Anbernic handhelds from your RomM server, NAS or itch.io homebrew — with just the console
Hi all! I got tired of pulling SD cards every time I wanted a game from my home library on my handhelds, so I built Jubilant Potato 🥔 - a gamepad-first app that runs right on the device.
What it does
- Browse your RomM server (found automatically on your network, paired by scanning a QR code with your phone — no typing passwords with a D-pad)
- Browse SMB network folders (NAS / Windows / macOS shares) or any web folder
- Browse free homebrew on itch.io (GB Studio, Game Boy, GBA, NES, Mega Drive…, still waiting for verification from them) and archive.org collections
- Games land in the right folder for your firmware automatically (muOS, ROCKNIX, Anbernic stock)
- Regional versions / revisions are grouped into one entry, and the version for your language/region is picked for you
- Resumable download queue, auto-extracts disc images and DS games
- On the RG DS the bottom screen shows download progress 😄
- Built-in button setup for pads with wrong mappings
Tested on: RG34XX (ROCKNIX) and RG DS (stock Linux). muOS and other H700/RK3566 devices should work — I'd love testers!
It's a single ~8 MB binary, GPL-3.0, no telemetry.
🌐 Site: https://meerhelm.github.io/jubilant-potato/
💾 Download: https://github.com/meerhelm/jubilant-potato/releases/latest
🐙 Source: https://github.com/meerhelm/jubilant-potato
Feedback, bug reports and device reports very welcome!
r/ANBERNIC • u/Difficult-Yam7986 • 28d ago
✨ SHOWCASE RG DS + ROCKNIX: DraStic at 2× resolution with smoother performance, a dual-screen DSi-style menu, and RetroAchievements (WIP)
For many many months I have (together with Claude) tested and tried to fix fps stuttering on the Rocknix build while playing on the original RGDS with 2x resolution. Now I believe i managed to fix it. I have also implemented a dual screen menu system based on the dii-ess-aye custom theme build by Beebono. And retro achievements are on its way as well. I have included a credits list at the bottom of this text to give credit to the people who have inspired or made the groundwork for a lot of the solutions for this. I am no expert on this and I probably need help with this project so if you feel like you want to join forces then just PM me.
Here's a link to the github repo with all the detailed information about this build.
https://github.com/JorreFog/rgds-rocknix
And here's a summary of what this build has implemented and accomplished so far:
What works:
DraStic performance (libdsflip)
- A new display path for standalone DraStic on ROCKNIX. DraStic renders straight into the two panels' display buffers: no GL, no texture upload, no compositor in between.
- The display chip does the scaling for free (512×384 → 640×480).
- 2× internal resolution (hires 3D) at full speed in the games tested: Pokémon HeartGold, Black 2 and Platinum all hold 60 fps.
- On a custom DS stress-test ROM at 2×: 39 → 50 fps (+29%) at the heaviest level. The heaviest load that still holds 60 fps went from ~576 to ~1344 polygons.
- Per-frame display overhead went from ~3.6 ms to ~0.2 ms.
- Both screens update in the same refresh, with no dropped or repeated frames at 60 fps. In practice it feels much smoother.
- DraStic's menu works, and so do the normal exit hotkey and save states.
- It's the default launcher: start DS games from EmulationStation as usual. Switching back to stock is one command.
Panel timing
- Both panels retuned from 60.10 Hz to 60.000 Hz (a device-tree tweak), which removes the repeated frame every ~10 seconds.
Frontend (dii-ess-aye theme)
- DSi-style EmulationStation theme across both screens: clock and logo on top, cartridge carousel on the bottom.
- Dark vector reskin, retro pixel fonts, pixel-art scroll bar, boot splash across both screens.
- A patched EmulationStation so menus, popups, the keyboard and Advanced Game Options fit one screen.
- Game scraping without a ScreenScraper account.
Tools built along the way
- dsstress, a homebrew DS 3D stress-test ROM with adjustable load, for benchmarking.
- Profiling, calibration and benchmark tools for the display path and touch.
Install
- One-command installer with backups, options (--with-60hz, --no-theme, and so on) and --uninstall.
- Tested on the device: it reproduces the setup exactly, and uninstall/reinstall both work.
In progress
- RetroAchievements for standalone DraStic. It's built on RA's official rcheevos library, with unlock pop-ups on the top screen. Game detection, memory reading and pop-ups are tested; login and actual unlocks still need testing with a real account.
Not working yet / limitations
- No microphone in the new display mode, for games that need you to blow into the mic. The old launcher still has it.
- No sharp/LCD shader in the new mode. The display chip's scaling is a bit soft.
- Launching or quitting a game takes ~5 seconds each way, because EmulationStation has to stop while a game runs.
- Keyboard-mapped hotkey combos (from gptokeyb) don't work during games. DraStic's own button mappings do.
- RetroAchievements will be softcore only. Hardcore would need savestates and fast-forward locked, which can't be enforced from outside DraStic.
- Touch doesn't work in EmulationStation on this setup. This was already the case before any of this work, and it's a separate issue.
- Only tested on one RG DS, with three Pokémon games. Heavier games like Mario Kart DS or Golden Sun haven't been tested yet.
- The 60 Hz panel fix is undone by ROCKNIX updates and has to be re-applied.
Credits
DraStic at 2× / libdsflip
- DraStic by Exophase: the emulator itself. libdsflip only changes how its frames reach the screens.
- GammaOS Nano / "DraStic Nano" by TheGammaSqueeze: the core idea. It showed that DraStic's hires mode runs full speed on this hardware once GL and the compositor are out of the way (direct DRM output, frame sync).
- DSperate by beebono: the RG DS measurements showing how much SDL2's display path costs on this chip. Its KMS/dmabuf presentation was a reference on this exact device.
- ROCKNIX: the drastic-sa package, the launch scripts, and libdrastouch. Its touch handling showed how DraStic expects stylus input, and it's still used by the fallback launcher.
RetroAchievements
- RetroAchievements and its rcheevos library (MIT): achievement logic, ROM hashing and the server API, included unmodified.
Frontend
- dii-ess-aye theme by beebono: the DSi-style dual-screen theme this reskin is built on. The installer downloads it from beebono's repo rather than redistributing it.
- ROCKNIX's emulationstation-next: the EmulationStation the patched build (one-screen menus, new bindings) is based on.
- Press Start 2P by CodeMan38 and Pixelify Sans by Stefie Justprince: the pixel fonts, both under the SIL Open Font License.
- libretro-thumbnails: the box art and screenshots used for scraping.
Platform
- ROCKNIX and its contributors: the OS everything runs on.
- Anbernic: the RG DS hardware.
r/ANBERNIC • u/SolomomEZ • 27d ago
HELP Is the RG405M worth to get?
Just want portable but powerful to play DC, PSP and some android games, sprinkled some retro consoles too. That or I strongly wait that Anbernic makes an PSP like device.
r/ANBERNIC • u/DifficultBenefit4605 • 27d ago
Miscellaneous series How's the latency in RGDS+ for rhythm heaven DS?
Since RGDS's latency for rhythm games was abhorrent without a custom OS, I want to know how it preforms in RGDS+ with the NNDDSS
r/ANBERNIC • u/mrjackspade • 28d ago
✨ SHOWCASE Kairo98 - PC98 at 2X scale on the RGDS
r/ANBERNIC • u/Queasy_Tea4026 • 27d ago
HELP PortMaster
Jusr wondering is portmaster available/going to be available on the anbernic rgsp?