RG350/RG280 Image

Update 2021-04-25
This article has been updated to reflect the changes introduced in version 10.1 of the image released on this date. To convert the original v10.0 into the new v10.1, there is a patch that applies the improvements and changes. The patch can be downloaded from this link.
Introduction¶
Here I describe the details of an internal card image prepared for the Anbernic RG350, RG350P, RG350M, RG280V, and RG280M emulation consoles. The image is a dump of a 4GB microSD with the ROGUE system (special thanks to Ninoh-FOX for support), ports, emulators, and RetroArch cores, and the GMenu2X, SimpleMenu (special thanks to FGL82 for support), and PyMenu frontends. It can be flashed onto a card of that size or larger. During the first boot, the main partition will be expanded to occupy all the available space on the card.
Download the image from the following links:
Alternatively, all images and patches can also be found on the Telegram channel Code Animal images. Using the channel has the additional advantage that you receive notifications when patches or new versions of the images appear.
The emulators and RetroArch cores have custom launchers with icons representing the machines they emulate for easier identification. The names of the emulators and cores have also been modified with the same idea in mind.

The installed ports or games are the following (some such as Cannonball, OpenBOR, OpenJazz, and Solarus need ROMs on the external card):

Finally, in this document you can find details of the installed emulators and the RetroArch configurations for the cores available in the image.
Backing up saves before flashing¶
If the console has been used with another system, we will probably want to keep the savestates from the games we have played. Therefore, before flashing this image, it is advisable to back them up. To make this task easier, the Py Backup application was created, described in this article, and it comes preconfigured with all the savestate directories of the emulators installed in the image.
Basically, the procedure to make the backup is as follows. We start by working on the image currently on the console before flashing the one offered here:
- Install the OPK.
-
Locate the application installed in the previous step. It will be found in the
applicationssection of the different launchers. Once found, open it.
-
Press
Bto start the backup and confirm withA(when it reaches PCSX4All, it usually hangs for quite a while because the savestates for this emulator are large). You can disable backups for systems you are not interested in beforehand, but it is safer to leave them all enabled to avoid unpleasant surprises.
That is all to generate the backup. It is left in the backups directory of the external card, inside which a series of files with the .tgz extension will appear. Once the image has been flashed, we will have to restore it. To do so, proceed as follows:
- Open the
Py Backupapplication, which is already preinstalled in the image. -
Press
Xto start restoring the backup and confirm withA.
Warning: Save or savestate matching depends on ROM names. If we save a game when, for example, the ROM was called "001. Catrap.gb" and later try to recover it from a ROM called "Catrap.gb", it will not work. In that case, you will have to check the corresponding savestate directory (in the case of GB it is /media/data/local/home/.gambatte/saves) and rename the file so it matches the new ROM name.
Finally, a short video tutorial:
Flashing the image¶
The image is contained in a single file in img.gz format. This means it is a direct dump of the card (img) compressed (gz). The file is around 1GB in size.
For flashing, it is recommended to use Balena Etcher, which can use this format directly and is also compatible with the three main systems (Windows, MacOS, and Linux). The image can be flashed onto cards of 4GB and above.
On Linux it is faster and more direct to flash with the following commands (replacing the /dev/mmcblk0 device in the example with the one that applies in your case):
$ sudo umount /dev/mmcblk0*
$ gunzip panda_v10.1.img.gz -c | sudo dd of=/dev/mmcblk0 bs=2M status=progress conv=fsync
It is not recommended to flash onto the same Toshiba card that comes with the console from the factory. Performance problems and errors have been observed with it. It is better to use a reliable brand card that is also fast.
In this video, you can see the process of opening the console and removing the internal card in the original RG350 (in RG350P/M and RG280V/M this is not necessary), as well as flashing an image with Balena Etcher on Windows. In the video, the image used is a clean ROGUE image (file sd_image.bin), but the process for the image discussed here (file panda_v10.1.img.gz, mapache_v10.1.img.gz, vison_v10.1.img.gz, or musarana_v10.1.img.gz depending on the console version) would be exactly the same, simply by selecting the corresponding file in Balena Etcher. Formatting the card as shown in the video is not actually necessary. You only need to follow the video up to minute 11:20, since from that point on what is done is adding emulators and games to the console, things that are already included in the image.
Default frontend selection¶
During the first boot of the image, ROGUE processes run to consolidate the system. This involves several reboots. At some point, a selector appears with four options to choose the default launcher or frontend:

You only have to select the preferred launcher with the d-pad (up/down) and confirm with Start. At that point, the console will reboot again and you will end up in the selected launcher. If at any time you want to change the launcher, you can run the selector again using the Launcher selector application:

Adding ROMs¶
The image does not include ROMs or BIOS, so we will have to provide them ourselves. All emulators and frontends are preconfigured to find ROMs in specific paths on the external card. These are the directories that must be respected to install ROMs (the path relative to the external card is shown; as we know, roms/NEOGEO, for example, corresponds to /media/sdcard/roms/NEOGEO in the console system):
| Path | System | Supported extensions |
|---|---|---|
| roms/32X | SEGA 32X | .32x,.zip |
| roms/A2600 | Atari 2600 | .bin,.a26 |
| roms/A5200 | Atari 5200 | .a52 |
| roms/A7800 | Atari 7800 | .a78 |
| roms/AMIGA | Commodore Amiga | .adf,.sna,.zip |
| roms/AMSTRAD | Amstrad CPC | .dsk,.hfe |
| roms/ARCADE | xMAME | .zip |
| roms/ATARIST | Atari ST | .st,.zip |
| roms/C64 | Commodore 64 | .crt,.d64,.t64,.bin |
| roms/COLECO | ColecoVision | .rom,.col |
| roms/CPS | CPS | .zip |
| roms/DAPHNE | Daphne | .zip |
| roms/DOOM | Doom | .wad |
| roms/DOSBOX | DosBOX | .bat,.exe,.com |
| roms/FBA | Final Burn Alpha | .zip |
| roms/FC | Nintendo NES | .nes,.zip |
| roms/GB | Nintendo GB | .gb,.gz,.zip |
| roms/GBA | Nintendo GBA | .gba,.zip |
| roms/GBC | Nintendo GBC | .gbc,.zip |
| roms/GG | SEGA GG | .gg,.zip |
| roms/GW | Nintendo G&W | .ws,.wsc |
| roms/INTELLI | Intellivision | .int |
| roms/JAZZ | OpenJazz (port) | |
| roms/LYNX | Atari Lynx | .lnx,.zip |
| roms/MAME2003 | MAME2003 | .zip |
| roms/MAME4ALL | MAME4All | .zip |
| roms/MD | SEGA MD | .bin,.smd,.md,.zip |
| roms/MSX | MSX | .rom,.zip |
| roms/NEOGEO | Neo Geo | .zip |
| roms/NGP | Neo Geo Pocket | .ngp,.ngc |
| roms/OUTRUN | Cannonball (port) | |
| roms/PCE | PC Engine | .pce,.tg16,.cue |
| roms/PCECD | PC Engine CD | .pce,.tg16,.cue |
| roms/PICO8 | PICO-8 | .png |
| roms/POKEMINI | Pokemon Mini | .zip |
| roms/PS | PlayStation | .mdf,.cue, .bin,.img,.ccd,.sub,.zip,.pbp,.chd |
| roms/QUAKE | Quake | .pak |
| roms/SCUMMVM | ScummVM | .svm |
| roms/SEGACD | SEGA CD | .cue |
| roms/SFC | Nintendo SNES | .smc,.sfc,.zip |
| roms/SMS | SEGA MS | .sms,.zip |
| roms/SOLARUS | Solarus (port) | .zip |
| roms/SUPERVISION | Watara Supervision | .sv |
| roms/TIC80 | TIC-80 | .tic |
| roms/VB | Nintendo VB | .vb |
| roms/VIDEOPAC | Phillips Videopac | .bin |
| roms/WSC | WonderSwan | .ws,.wsc |
| roms/ZX | ZX Spectrum | .z80,.scl,.trd,.tzx,.csw,.tap |
| OpenBOR/Paks | OpenBOR (port) | .pak |
Warning: Be careful with the OpenBOR case, which behaves irregularly because it requires a fixed path on the external card.
In the case of systems for which a RetroArch core exists, the zip and 7z extensions will also work, since they are supported at the framework level. The chd extension is also supported in RetroArch cores for CD-based systems, namely SEGACD and PCECD.
Adding BIOS¶
All emulators installed in the image (including RetroArch) have had the paths where BIOS files must reside redirected to the bios directory on the external card. Similarly to the ROM case, the bios directory at the root of the external card corresponds to the path /media/sdcard/bios in the console system.
Not all emulators need a BIOS. This is the case for machines that did not have one or whose function has been emulated. Below is the BIOS file that must be located, as well as the place where it should be placed. To help identify the correct files, their size in bytes and an MD5 hash are given. Cases where the BIOS is essential for the emulator to work are also marked. If NO is indicated, the emulator will work, but installing it is recommended to achieve the greatest compatibility with games. To check MD5 hashes, the cross-platform Quickhash utility is recommended.
The sizes and hashes indicated are for BIOS files that have been verified to work, but they are not necessarily the only possible ones. That is, on some machines there are several possible BIOS versions, usually because several models of the machines existed (PlayStation is one of the most typical cases), or because someone developed BIOS files with enhanced capabilities (the typical case here is Neo Geo and its UNIBIOS).
| System | Path | Size | MD5 hash | Required? |
|---|---|---|---|---|
| Atari 5200 | bios/5200.rom | 2048 | 281f20ea4320404ec820fb7ec0693b38 |
Yes |
| Atari ST | bios/rom | 196608 | 036c5ae4f885cbf62c9bed651c6c58a8 |
Yes |
| SEGACD | bios/bios_CD_E.bin | 131072 | e66fa1dc5820d254611fdcdba0662372 |
Yes |
| SEGACD | bios/bios_CD_J.bin | 131072 | 278a9397d192149e84e820ac621a8edd |
Yes |
| SEGACD | bios/bios_CD_U.bin | 131072 | 854b9150240a198070150e4566ae1290 |
Yes |
| Intellivision | bios/exec.bin | 8192 | 62e761035cb657903761800f4437b8af |
Yes |
| Intellivision | bios/grom.bin | 2048 | 0cd5946c6473e42e8e4c2137785e427f |
Yes |
| PC Engine CD | bios/syscard3.pce | 262144 | 390815d3d1a184a9e73adc91ba55f2bb |
Yes |
| Commodore Amiga | bios/kick.rom | 262144 | 82a21c1890cae844b3df741f2762d48d |
Yes |
| Nintendo Famicom Disk System | bios/disksys.rom | 8192 | ca30b50f880eb660a320674ed365ef7a |
Yes |
| Atari Lynx | bios/lynxboot.img | 512 | fcd403db69f54290b51035d82f835e7b |
Yes |
| Phillips Videopac | bios/o2rom.bin | 1024 | 562d5ebf9e030a40d6fabfc2f33139fd |
Yes |
| SNK Neo Geo | bios/neogeo.zip | 1950023 | 36241192dae2823eaf3bf464dde6dbc6 |
Yes in FBA, No in RetroArch |
| Nintendo GBA | bios/gba_bios.bin | 16384 | a860e8c0b6d573d191e4ec7db1b1e4f6 |
No, although recommended |
| PlayStation | bios/SCPH1001.BIN | 524288 | 924e392ed05558ffdb115408c263dccf |
No, although highly recommended |