Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
display_issues [2020/09/13 19:18] lbrpdxdisplay_issues [2021/01/08 01:39] lbrpdx
Line 1: Line 1:
 ~~NOTOC~~ ~~NOTOC~~
-===== Emulation with 4K and ultrawide monitors =====+===== Emulation with 4K and ultrawide monitors, or problems when your screen is not fully displayed =====
  
 Older 8-bit and 16bit systems, or arcade systems from the 80s and 90s were using 4:3 CRT screens. Modern displays are now 16:9 or wider, and can go up to 4K, i.e. 2160 pixels high (compared to 480 or 546 at the time!). Older 8-bit and 16bit systems, or arcade systems from the 80s and 90s were using 4:3 CRT screens. Modern displays are now 16:9 or wider, and can go up to 4K, i.e. 2160 pixels high (compared to 480 or 546 at the time!).
  
-Having so many pixels to render on the screen is impactful on the system performance. When you have a 4K screen or an ultra-wide screen, Batocera will limit the resolution by default to HD 1920x1080. It's more than enough to render emulators, even the most recent one. However, when you have an ultra-wide monitor, display is stretched. However, you can tweak your system with ''batocera.conf'' to make the aspect ratio better.+Having so many pixels to render on the screen is impactful on the system performance. When you have a 4K screen or an ultra-wide screen, Batocera will limit the resolution by default to HD 1920x1080. It's more than enough to render emulators, even the most recent one. However, when you have an ultra-wide monitor, display is stretched. 
  
-1. Know what are the resolutions available on your system and TV by entering:+For 4K monitors, because the resolution is by default resized to 1920x1080, you might see a screen that looks like this one - actually it's what 1920x1080 is, centered in a 3840x2160 screen: 
 + 
 +{{ :minihd_in_4k.png?nolink&400 |}} 
 + 
 +In order to cover the whole screen, the best solution is to set the **VIDEO MODE** to 1920x1080 -- you can do that on a system-by-system basis in the **PER SYSTEM ADVANCED CONFIGURATION** screen. 
 + 
 +Another use case is when you have a 1280x720 TV, for example, and you want to use bezels that are designed for 1920x1080. Batocera 5.27 can automatically resize the bezels, but sometimes you need to force the **VIDEO MODE** to take your 1280x720 resolution. 
 + 
 +If you absolutely want to use the 4K resolution for whatever reason (shaders looking better, you have a non-standard wide format on your TV/monitor...), you can force the **STRETCH BEZEL** option too. Same thing, this is something you can do on a system-by-system basis. **WARNING** this has an impact on the emulation performance. 
 + 
 +==== When EmulationStation feels sluggish on a 4K TV==== 
 + 
 +There are some SBC + TV combinations where EmulationStation feels sluggish (default theme seems to be lagging behind, with a refresh rate like 10 FPS). It's really depending on your own configuration, but we have reproduced this with a Raspberry Pi4 and a couple 4K TV models. By default, ES should negotiate with your TV to fix its resolution to 1080p, but sometimes your TV brand doesn't accept it and stays at 4K/2160p resolution. 
 + 
 +To force 1080 in those cases, edit ''batocera.conf'' and add a line: 
 + 
 +  system.es.maxresolution=1920x1080 
 + 
 +This shouldn't be necessary for most TVs, though, and the default mode can be set back with ''es.maxresolution=0'' (or just comment out or remove the line in ''batocera.conf''). 
 + 
 +===== How does that work under the hood? ===== 
 + 
 +You can do it though ES as shown above, but you can also tweak your system with ''batocera.conf'' to make the aspect ratio better. 
 + 
 +1. Know what are the resolutions available on your system TV combination by entering the command ''batocera-resolution listModes'':
  
    # batocera-resolution listModes    # batocera-resolution listModes
Line 42: Line 66:
    31:720x400 70Hz    31:720x400 70Hz
  
-2. Then, if I want to force for example 2560x1080 for the emulators, I can add in my ''batocera.conf'':+2. Then, choose the mode from the list that is the one you want to force to RetroArch. For example, if I want to force ''2560x1080'' for the emulators, I can add in my ''batocera.conf'':
    global.videomode=1    global.videomode=1
  
-Emulators will then all select mode 1 = 2560x1080 as their screen resolution. If I want to select a specific resolution only for a specific emulator, I can do that with for instance ''n64.videomode=1''.+Emulators will then all select mode 1 = 2560x1080 from the list above as their screen resolution. If I want to select a specific resolution only for a specific emulator, I can do that with for instance ''n64.videomode=1''.
  
-Batocera 5.27 and later will automatically resize 1920x1080 bezels to ultrawide by adding black borders on the sides.+Batocera 5.27 and later will automatically resize 1920x1080 bezels to ultrawide by adding black borders on the sides. It will also resize full HD 1080 bezels to HD-ready 720p.
  
-3. EmulationStation ignores this parameter. If you want to put ES in a specific resolution, you need to edit ''/etc/init.d/S31emulationstation'' and add the wanted resolution to the command line:+3. EmulationStation ignores this parameter. If you want to put ES in a specific resolution, you need to edit ''/etc/init.d/S31emulationstation'' and add the wanted resolution with a dedicated ''batocera-resolution setMode XX'' line in the script:
  
-   HOME=/userdata/system LANG="${settings_lang}.UTF-8" SDL_NOMOUSE=1 /usr/bin/emulationstation --no-splash --resolution 2560 1080 &+   cd /userdata # es need a PWD 
 +   batocera-resolution setMode 1 
 +   HOME=/userdata/system LANG="${settings_lang}.UTF-8" SDL_NOMOUSE=1 /usr/bin/emulationstation --no-splash &
  
 Don't forget to ''batocera-save-overlay'' to keep it upon reboot. Don't forget to ''batocera-save-overlay'' to keep it upon reboot.
  
 +4. If you ask for a 4K 3840x2160 resolution, but with a bezel that is HD 1920x1080, by default Batocera will add black borders around the bezel, like on the picture above. If you want your display to be full screen, you can either:
 +
 +  - switch to a lower resolution (like 1920x1080)
 +  - add a line ''mame.bezel_stretch=1'' in your ''batocera.conf'' for each emulator you want to stretch. Or ''global.bezel_stretch=1'' if you want to enable stretching to your native 4K resolution. **WARNING** this has an impact on the emulation performance.
  
 ===== Display issues, when xrandr is your friend ===== ===== Display issues, when xrandr is your friend =====
  • display_issues.txt
  • Last modified: 5 weeks ago
  • by lbrpdx