Last updated: 25OCT2020 (see Changelog for details)
Let’s face it: the RG351P’s 3:2 aspect ratio (and 480×320 resolution) doesn’t look good out of the box. As you can see from my initial impressions, plus my “day three” impressions, I was not impressed with how the games looked. It took me several weeks of research and tweaking, but I’m happy to report that there are adequate settings in this device to tweak the screen so that everything looks great. There are some slight compromises that you have to make, but overall I’m very happy with how this turned out.
Be sure to watch the video embedded below so you can see some of these settings in action!
Table of contents: Six ways to save graphics settings Aspect ratio (handheld systems) Aspect ratio (home console systems) Adjusting aspect ratio Integer scaling Default image vs shaders vs bilinear filtering vs RGA scaling Shaders Changelog
Six ways to save graphics settings
Before we dive into screen configuration, I think it’s important to note that for the most part, there are SIX different ways to save settings on the RG351P when using its stock version of the EmuELEC operating system. I want to break them down now, since I will refer to them later in this guide. Note that this specifically applies to the systems that run on the RetroArch backend (which is basically everything but Nintendo DS, PSP, MAME [by default], or Amiga).
The three settings in EmuELEC:
- “Games Settings” (EmuELEC): Press START on the RG351P while in the main operating system, and the Main Menu will appear. The second setting is “Games Settings”. Here you can change overall settings across the entire RG351P: desired aspect ratio, graphics effects, and more.
- “Per System Advanced Configuration” (EmuELEC). This setting is found in the “Games Settings” menu. This allows you to make the same changes as found in the “Games Settings” menu but by SYSTEM (NES, SNES, etc), as well as to choose which emulator (core) . This is helpful if you want to tweak most of your system’s settings, but it doesn’t cover everything (see #4 below). You can also get to this settings menu by hovering over a game and then pressing SELECT and selecting “Advance System Options”.
- “Advanced Game Options” (EmuELEC): You can also adjust settings by game. To do so, navigate to the game you want to adjust, then press SELECT and go into the “Advanced Games Options” menu and make your adjustments there — they will save only for that game.
The other three settings are done in RetroArch, which is the backend system that runs most of the emulators (called “cores”) on the RG351P. This is done via the “override” settings. These are kind of confusing, but essential if you want the best settings, so let’s discuss for a moment.
To override core settings means you can set up settings for an entire core (say, FCEUMM for the NES) and those settings will be persistent for every game that launches with that core, no matter how the EmuELEC settings are configured. You can also override content directories, which is handy if you have a core (like Picodrive) that emulates multiple systems, but you only want one system to have specific settings — this option will save a whole directory (like “Sega Genesis”) and not touch the other directories that use the same core (Sega 32X, Game Gear, etc). Finally, you can also override game settings, so that specific games have their own settings. For example, Star Fox plays best on the SNES 9x 2010 core, but you probably don’t want to use that core for every SNES game. For more information on override hierarchy, check out this guide from RetroArch themselves. Long story short: RetroArch’s “override” settings are more robust than what you’ll find in EmuELEC, and will override your EmuELEC settings anyway. But in order to make EmuELEC more simple, it appears the developer hid the override settings on the device, so we need to set that up.
Go into RetroArch without a core loaded. You can do this by pressing START while in EmuELEC to get to the EmuELEC main menu , then select Quit > Start RetroArch. Or you can select “Close Content” in the Quick Menu when you have a game loaded in RetroArch. Once you’re in RetroArch, go to Settings > User Interface > Menu Item Visibility > Quick Menu. Scroll down until you find “Show Save Core Overrides”, then turn that ON, as well as “Save Game Overrides”. Back out to the Main Menu (on the far left) and select Configuration File > Save Current Configuration. Now, you will have the option to save overrides that are specific to that core or game (and the content directory option also works).
The three settings in RetroArch:
- “Save core overrides” (RetroArch): First, before you load any game or core, go to RetroArch Settings > Video and make sure that Bilinear Filtering and RGA Scaling is set to off. Next, load a game either through RetroArch itself, or through the EmuELEC menu. Press your hotkey to get back to the RetroArch menu (L3 + R3 is default), then go into the settings and configure it how you’d like. For example, back out of the quick menu, then go to Settings > Video and turn RGA scaling to ON. Once you have the game settings the way you’d like, go back to the game’s quick menu (on the far left of the RetroArch menu bar) and scroll down until you find Overrides > Save Core Override. Choose that and you should get a confirmation that the core override was saved. At this point, every time you open a game from that particular core/system, you will have those settings.
- “Save content directory overrides” (RetroArch): Follow the instructions above, but select Save Content Directory Overrides. This will save the settings for every ROM in that same folder as the ROM you’ve just adjusted.
- “Save game overrides” (RetroArch): Follow the instructions above, but select Save Game Overrides. This will save the settings for this specific ROM, and no others.
Okay, now that we know all the ways to save settings, let’s actually look at the settings themselves.
Aspect ratio (handheld systems)
Let’s define aspect ratio. A square screen aspect ratio would be defined as 1:1 (or 1.0), and very few game systems ran at this aspect ratio (the only one I know of is the Watara Supervision). At the other end of the spectrum, a standard widescreen TV aspect ratio would be 16:9, or 1.76. Modern consoles look good at that aspect ratio, but the only system that runs at a ratio close to that is the Sony PSP. Arcade system aspect ratio is all over the place, because each cabinet was different.
The RG351P screen has a resolution of “480×320” pixels — it’s 320×480 rotated 90 degrees, but that’s not really helpful for the purposes of this guide. It’s best to think of it as simply 480×320 pixels, which equates to an aspect ratio of 3:2, or 1.5. This makes the screen ideal for scaling certain devices, but not others. To start, let’s take a look at the pixel dimensions and aspect ratios of common handheld systems:
As you can see from this chart above, the Game Boy Advance, Wonderswan, and Atari Lynx have aspect ratios most similar to the RG351P’s aspect ratio; they’re the closest to 1.50. These systems look best on this device (and in the case of the GBA, scale perfectly). Game Boy/Color and Game Gear games are pretty far from 1.50, so their images will appear squished at fullscreen, or with significant black bars when displaying their native resolution. The Supervision screen is a 1:1 square, so it will have the largest black bars.
Aspect ratio (home console systems)
Home consoles were generally designed for NTSC TVs (which had a 4:3 aspect ratio). Some notes on that:
- Aspect ratios for some systems are not set in stone. Atari 2600 games didn’t technically have pixels, so they are at a different standard.
- Some systems introduced scaling for certain games. For example, the PS1 mostly played games at 320×240, but some scenes could scale up to 640×480. Similarly, N64 games could scale from 320×240 up to 640×480.
- The NES had an aspect ratio of 256×240, but only showed 256×224 on NSTC screens (which were limited to 224 vertical pixels); the 256×240 aspect ratio can still be displayed on emulators. So while the NTSC TV showed an aspect ratio of 8:7 (1.14), most emulators show NES at 16:15 (1.07).
- Some games actually had different native resolutions on the same system. Most NTSC SNES games had a native resolution of 256×224 pixels, while Star Fox had 224×190, and Yoshi’s Island had 256×208. So for the chart below I stuck with the general NTSC aspect ratios.
- PAL TVs output a 240-pixel height, so PAL ROMs may have different resolutions than shown below.
Okay, let’s look at home console specs. Again, we’re looking at anything close to 1.50 as being scalable to the RG351P screen.
In the chart above you see that no home console system quite matches the RG351P resolution, but Sega Genesis, Sega CD, and Neo Geo come pretty close.
So what does all this mean, in practical terms? By default, all of the emulators (other than for the PSP and Nintendo DS) are configured to 1.50 (3:2) aspect ratio, to take up the full screen. Certain systems (GBA, Wonderswan, Lynx) look very nice, while others will appear squished at full screen. How squished they look will depend on their native resolution: the further the native resolution is from 1.50, the more squished the image will appear (e.g. a very fat/wide Mario in Super Mario Bros. 3).
Conversely, if you choose to display the games at their native resolution, the further away they get from 1.50, the wider the black bars will be on the sides of the screen. For something like Sega Genesis, the bars will be barely noticeable, while on the NES they will be fairly prominent.
Adjusting aspect ratio
To adjust the aspect ratio to a more accurate ratio, you can either set a global configuration, or adjust the ratio by system.
Global configuration: If you want to make sure you have your entire screen filled no matter what system is playing, then it is very easy to set the default aspect ratio to the screen dimensions (3:2). In EmuELEC, simply press START, then select Games Settings > Game Ratio, and choose “3/2”. This is actually the default setting on the device.
Per system configuration: If you want to have a true aspect ratio for each system, you’ll have to go in and set it for each system. It’s pretty easy. In EmuELEC, press START to bring up the main menu, then select Game Settings > Per System Advanced Configuration. In this menu you will see a listing of all the systems that are currently running on your device (i.e. those that have ROMs in the “Games” partition on your SD card). From there, you can choose a system and adjust the settings specific to that system, including its aspect ratio. Additionally, you can set the aspect ratio to “core provided”, which will use the aspect ratio that the emulator itself recommends.
In general, I have been choosing “core provided” for most systems, or 4:3 for home console systems. For systems with an aspect ratio that’s pretty close to 1.50, I have been leaving them at 3:2 since the squished screen isn’t very noticeable. Note that some cores implement differing aspect ratios for the same system; Genesis Plus GX’s “core provided” will set 4:3 (1.33) for Genesis games, while Picodrive will set 10:7 (1.43) for the same games.
Because many handheld systems had a much lower pixel density than the RG3151P’s 480×320 resolution, some of these systems will benefit from integer scaling. Integer scaling is defined as scaling by a factor of a whole number (2x, 3x, etc), as opposed to non-integer scaling (1.5x, etc). This is an option in EmuELEC’s game settings menu, which will trigger the same effect in RetroArch. When turned on, RetroArch will scale up to the greatest integer scale below 480×320 resolution. So for Game Boy games, which have a native resolution of 160×144, it will scale up to 2x, or 320×288, with black borders around the rest of the screen. This will keep a 1:1 pixel ratio and everything will look nice and crisp, so long as you don’t mind the black bars around the image.
Of course, the grandaddy of all when it comes to integer scaling is Game Boy Advance, which has a 240×160 native resolution. A 2x integer scale will result in a perfect 480×320 image that will look perfect. Integer scaling is not recommended for home console systems, because their native resolution is so large that you wouldn’t be able to get to 2x scaling anyway.
To set integer scaling, you can set it in EmuELEC using the “Per System Advanced Settings” option that is detailed at the start of this guide.
Default image vs shaders vs bilinear filtering vs RGA scaling
Now that we’ve figured out the aspect ratio for each system, as well as integer scaling for handheld systems, there is another screen issue we must address. The 480×320 (3:2) screen dimension on the RG351P results in poor pixel accuracy for home console systems, which were designed for 4:3 NTSC televisions. The end result is that your horizontal pixel rows will appear squished, resulting in a strange, uneven look in your games. It’s really apparent in on-screen text. I don’t know how else to explain it, so I’m just going to call it “weird pixel effect” for the rest of this section.
pictured above: default image (left) and RGA scaling (right)
There are four ways to manipulate the image. Let’s cover them now:
- Default image (image above, on the left). Self-explanatory, just live with the weird pixels. This will result in the SHARPEST picture, but a distorted gaming experience. If the distortion doesn’t bother you, then you’re good to go.
- Shaders. Shaders are like overlays that can either cover the picture in some way (like a CRT filter), or alter the picture itself. Some of these shaders will fix the weird pixel issue, but will also soften the image. Shaders cannot be used at the same time as RGA scaling (see below). I have an entire Shaders section below which includes information on filters, which are similar to shaders.
- Bilinear filtering. Bilinear filtering is a form of texture filtering that will smooth out hard pixels. This will eliminate the weird pixel effect on most home console systems, but will make the image very soft looking. You can enable this feature by pressing START to bring up the EmuELEC main menu, then select Game Settings > Smooth Games. I recommend you set this up on a per-system configuration (see the first section of this guide on how to do that).
- RGA scaling (image above, on the right). This setting performs subpixel scaling and bicubic filtering, which fixes the weird pixel effect as well as any shimmering or artifacts in the image. This setting is not found in the EmuELEC settings, but it is found in RetroArch settings.
To me, RGA scaling (with bilinear filtering and shaders off) is the best display for home console systems. It gives the best pixel scaling and has a sharper picture than using bilinear filter. The problem is that RGA scaling will look terrible on handheld systems, so you will want to set RGA scaling up on a per-system basis. There is no way to set per-system RGA scaling in the EmuELEC settings, you have to use RetroArch’s “override” settings (detailed in the first section of this guide).
There are dozens of shaders that are packed into EmuELEC, and you can access them by pressing START to get to the main menu, then Game Settings > Shaders Set. Some shaders will look great on handheld systems, like the lcd3x.glsl shader, which provides a dox matrix feel to the devices. I also like the RPI/2xScaleHQ filter for NES games, which smoothes out the rough edges for a bit of a watercolor finish. These shaders can also be accessed in RetroArch via the Quick Menu > Shaders section.
Note that shaders will only work when RGA scaling is turned OFF. But most of the shaders will fix the weird pixel effect on home console devices, too. So you’ll want to make a decision: if you find a shader that works really well with a specific system or game, you could turn on that shader, turn off RGA scaling, and then save the appropriate core/game override.
For more in-depth information on shaders, as well as some examples, check out this guide from RetroArch (check the lefthand menu bar for the examples). But your best bet is to play around with them until you find one that you like per system, and then save them on a per-system basis.
If you have a particular shader that you really like that isn’t pre-loaded onto the system, then go to this GitHub page and download them (click on the green “Get Code” icon, then “download zip”). Place the glsp files in the storage/shaders folder (check out my transfer guide if you don’t know how to do this), and place the glsl files in the storage/shaders/shaders folder. Personally, I recently found the xbrz shaders and I really like them.
Similar to shaders, video filters will alter the image but are powered by the CPU, so they may affect the emulator performance. In other words, they will work fine with NES games, but may cause performance issues for N64 games. Like shaders, filters can only be used when RGA scaling is turned OFF. But given that shaders work so well on this device, you can probably just ignore filters.
– Added instructions on how to load additional shaders
– Added wording about 320×480 rotated 90 degrees for RG351P resolution
– Published guide