CRT-Pi Shader differs on Pi Zero vs. Pi 3?
-
@davej said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
The graphics hardware is the same and there's no difference between the way the shader behaves. Check the output resolution on your Pi Zero (in config.txt and retroarch) and also check the overscan settings in the config.txt files.
I should have mentioned that both of these are 99% stock configurations - maybe 7 lines of code changed system-wide - and the only lines changed regarding video are just to set the shader as CRT-Pi system-wide.
For /boot/config.txt, correct? Both are identical. Both have disable_overscan=1 (so the image fits the screen), and hdmi_drive=2 (so I have audio) have been changed - all the rest is stock and have # in front of every other line.
And the other file you're talking about is /opt/retropie/configs/all/retroarch.cfg? That one, in the video section, only has the lines changed to enable CRT-Pi system-wide (identical code on Pi Zero and Pi 3).
That's why I asked if there was a change between how a Pi Zero and a Pi 3 act in regards to shaders. You're telling me the hardware is identical, so everything else being equal (as it seems to be, and tested on multiples of systems, wires, and dongles), there must be a software change somewhere between the Pi 3 and Pi Zero, correct?
...and crap, I edited my original post instead of posting here below....retyping now if you're wondering why the OP is slightly different ;(
-
@Dochartaigh said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
That's why I asked if there was a change between how a Pi Zero and a Pi 3 act in regards to shaders. You're telling me the hardware is identical, so everything else being equal (as it seems to be, and tested on multiples of systems, wires, and dongles), there must be a software change somewhere between the Pi 3 and Pi Zero, correct?
I still think it's most likely to be a configuration issue. The symptom in the Pi Zero image is typical of the vertical resolution not being high enough to get even scanlines. Can you run
tvservice -s
on both devices (when plugged into the same screen) and post the results? -
Pi zero should use a lower render resolution fot better performance. Just open game startup menu and increase resolution.
-
I will have to wait until I'm home to run
tvservice -s
on both – but to the lower resolution on the Zero, the Zero's already have slowdown on some SNES games for example so I wouldn't want to have to raise the resolution to get the CRT-Pi shader to work if it's going to slow down things even more (I was even worried – and also wondering – if the CRT-Pi shader by itself slows down things...and if it's advised to NOT run any shaders on the Zero, period).What would you suggest? Doesn't the CRT-Pi shader use an overlay of some sort with the black lines drawn into it? (I'm not really sure...just a brief memory it did for some reason). I'm a graphic designer so if that's the case I could I re-draw that graphic (I'm assuming it's a .PNG file which has transparency) to the lower stock-resolution the Pi Zero uses, and I assume change some code somewhere to reference the new file to use on CRT-Pi? (just thinking aloud here...)
-
@Dochartaigh said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
I will have to wait until I'm home to run
tvservice -s
on both – but to the lower resolution on the Zero, the Zero's already have slowdown on some SNES games for example so I wouldn't want to have to raise the resolution to get the CRT-Pi shader to work if it's going to slow down things even more (I was even worried – and also wondering – if the CRT-Pi shader by itself slows down things...and if it's advised to NOT run any shaders on the Zero, period).The suggestion to run tvservice was to check what the Pi was sending to the TV. From gizmon98's post, it sounds like retroarch is outputting, by default, a lower resolution on the Pi Zero than other Pis.
Running crt-pi doesn't slow emulation down if you have threaded video on, which is the default. It's the slower single processor that causes emulation speed to be lower on the Pi Zero/1.
What would you suggest? Doesn't the CRT-Pi shader use an overlay of some sort with the black lines drawn into it? (I'm not really sure...just a brief memory it did for some reason). I'm a graphic designer so if that's the case I could I re-draw that graphic (I'm assuming it's a .PNG file which has transparency) to the lower stock-resolution the Pi Zero uses, and I assume change some code somewhere to reference the new file to use on CRT-Pi? (just thinking aloud here...)
crt-pi doesn't use overlays but can be used with them for border effects - which is probably where you got the idea from.
-
tvservice -s
Both the Pi Zero, and the Pi 3 say the same exact thing:
state 0x12000a [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive
I also hit Select+X to enter the menu, then > Settings > Video > on both the Zero and the Pi 3, and the only large differences seem to be "Custom Viewport X', "Custom Viewport Width", and "Custom Viewport Height". I changed the Pi Zero to have the same settings as the Pi 3 and the bands of lighter/darker are still there on the Pi 3 when the CRT-Pi shader is on. One thing to note is the menu isn't exactly the same between these, although they're using the same emulator it says...
Any thoughts on what to try next?
-
@Dochartaigh custom viewport doesn't do anything unless your aspect ratio index is set to custom. but that's not the solution - 640x480 is default for pi 1/0 and is configurable via runcommand (retroarch framebuffer setting)
-
@dankcushions said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@Dochartaigh custom viewport doesn't do anything unless your aspect ratio index is set to custom. but that's not the solution - 640x480 is default for pi 1/0 and is configurable via runcommand (retroarch framebuffer setting)
Thank you for the info, but can you please translate that for me? These settings are all default on the Pi Zero (besides turning the CRT-Pi shader on). It seems like the Zero's resolution is set to 588x480 by default (if that's what the Custom Viewport Width/height numbers I see are talking about)?
And to get into runcommand I hold a key while the game loads, correct? If I got to "framebuffer" there and change it to 640x480 will the CRT-Pi shader run correctly? If so, how do I make that change system-wide so the shader runs correctly on all systems (think I may have the option to change that setting permanently in that menu for all roms run with that emulator, right? - then just do the same for the other emulators/systems).
If not, what other options do I have? I've tried this on literally 4 individually setup-from-scratch Pi Zero's - and about double that number of Zero's in cards I cloned....that would leave me to believe that NOBODY can correctly run shaders like CRT-Pi on a stock Zero, right? I mean what else could be going on in that number of installs? (and again, tried all different TV's and monitors, all different HDMI cables, all different mini HDMI to HDMI adaptors even...).
-
@Dochartaigh said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@dankcushions said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@Dochartaigh custom viewport doesn't do anything unless your aspect ratio index is set to custom. but that's not the solution - 640x480 is default for pi 1/0 and is configurable via runcommand (retroarch framebuffer setting)
Thank you for the info, but can you please translate that for me? These settings are all default on the Pi Zero (besides turning the CRT-Pi shader on). It seems like the Zero's resolution is set to 588x480 by default (if that's what the Custom Viewport Width/height numbers I see are talking about)?
no like i said they don't mean anything in your context. you're not using a custom viewport.
And to get into runcommand I hold a key while the game loads, correct?
yes
If I got to "framebuffer" there and change it to 640x480 will the CRT-Pi shader run correctly?
no. like i said, 640x480 is the default for the 1/0. video output (e.g. 1080p) is the default for pi 2/3. ~~you'd want to change it to video output. ~~ (see @BuZz comment below)
remember that shaders have scaling/moire artefacts at all resolutions (unless you use integer scaling). i get them at 1080p and am developing something to mitigate that. see https://retropie.org.uk/forum/topic/4046/crt-pi-shader-users-automatic-usage-of-crt-pi-vertical-in-vertical-games-in-lr-mame2003/55
but 1080p is at least better than 480. however 480 is default for the pi zero because the hardware is weak.
If so, how do I make that change system-wide so the shader runs correctly on all systems (think I may have the option to change that setting permanently in that menu for all roms run with that emulator, right? - then just do the same for the other emulators/systems).
i think you have to do it per system.(see @BuZz's post below)If not, what other options do I have? I've tried this on literally 4 individually setup-from-scratch Pi Zero's - and about double that number of Zero's in cards I cloned....that would leave me to believe that NOBODY can correctly run shaders like CRT-Pi on a stock Zero, right?
your shader IS running, you just don't like how it looks. i'm the same even at 1080p.
-
To change the default use the configuration editor. Runcommand should be used for per emulator /Rom overrides
-
@BuZz whoops! edited my post :)
-
@dankcushions said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
your shader IS running, you just don't like how it looks. i'm the same even at 1080p.
I LOVE the shader on the pi 3 on a 1080p TV/monitor. Like it's changed my retro world! But it looks nothing like that on the Pi Zero. On that post you linked to, of the topmost vertical image, although I can't zoom in to the pixel level, I think that may have similar stripes or moire pattern to what I'm getting....but I ONLY get those on the Zero, NOT my Pi 3 (that I've noticed at least).
So, since I'm a total novice with all this, and knowing the limitations of the Pi Zero, what would you suggest? If I'm hearing you correctly, if I want the same look of the CRT-Pi shader (as I see it on my Pi 3) on the Pi Zero I'll have to be in 1080p resolution (which I change in the runcommand window, NOT by hitting Select+X which I posted the screenshot of last night, right?) -- but that may slow down the Zero which I definitely don't want (since IMO it can just barely do NES emulation without slowdown).
Please let me know if I'm understanding you guys correctly. All I want is the same shader to look the same on the Pi Zero as it does on the Pi 3 - as long as it doesn't affect performance.
-
@Dochartaigh render resolution is lower on the pi1/zero specifically because of performance. However, you might get away with changing the video mode in
/boot/config.txt
to 720p, and then setting render res to config file resolution (which is video output by default) which should look decent. I run my RetroPie on my rpi3 in 720p. -
@BuZz said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@Dochartaigh render resolution is lower on the pi1/zero specifically because of performance. However, you might get away with changing the video mode in
/boot/config.txt
to 720p, and then setting render res to config file resolution (which is video output by default) which should look decent. I run my RetroPie on my rpi3 in 720p.It's worth reminding people that you need to overclock in order to run the crt-pi shader at full speed at 1080P. Although the Pi Zero runs the CPU at 1000Mhz by default, it will still need the boost to core and RAM speed provided by the Turbo overclock setting in raspi-config.
-
@davej thanks.
-
OK, so I'm back and ready to try this again. Have a nice overclocked Zero setup and want to get CRT-Pi shader working like it works on my Pi 3. I just cloned the card in case I mess up anything...
In boot/config.txt I uncommented hdmi_mode and set it to 4 for 720P like Buzz suggested. Do I have to change the hdmi_group as well? (seems to be working on my HDMI monitor without that).
I then hit a button while launching a ROM to enter runcommand. Choose "Select RetroArch render res for lr-quicknes(config)" to "use config file resolution" - same horrible banding...when changed to "Use video output resolution" TADA!!! Super nice CRT-Pi shader goodness!
I'm so happy I can't even tell you (and I don't even play these Zero's much at all - just like solving a problem -with all your help- that's plagued me for months!). Thank you!
-
@Dochartaigh use the configuration editor and you can set render res to video output res for all libreto cores. Runcommand is more for per emulator settings. You will see in there it's 640x480 by default on the zero.
-
@BuZz said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@Dochartaigh use the configuration editor and you can set render res to video output res for all libreto cores. Runcommand is more for per emulator settings. You will see in there it's 640x480 by default on the zero.
So I was changing it (through runcommand) from 640x480 to 720P (1280x720), right? That's what the "Use video output resolution" (which was set to 720P in config.txt).
You would think that would drop the performance, right? Seems to be fine (but I am now running overclocked - so that could be it as well).
Stupid question: How do you use a keyboard on the configuration editor? (I always edit the files through FTP or SSH). All the controller buttons seem to do things like delete a line or insert a space, and my keyboard doesn't seem to be able to go in there and change like an individual character in a line of code (it likewise seems to only be able to uncomment a line - which leaves the # on a line above, NOT edit something like changing "1" to a "4").
-
Using a 4k TV I am seeing the same issue on a Zero using crt-pi (looks terrible) where as a Pi 3 with crt-pi looks fine on 4k. I am running a fresh 4.3 image patched to the current version/script along with the Retroarch core & lr-mame2003 updated. I tried crt-pi with the defaults, as well as, a few different custom viewport settings with very little difference.
The Pi detects the 4k TV as:
state 0x12000a [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive
Just to summarize above the solution was to downgrade the detected output from 1080p to 720p and upgrade the render from 480p to 720p? Does the TV take care of the last step by upscaling to 4k (3840 × 2160) as it does fill the screen nicely or is it actually only displaying at 1080p. I couldn't tell as the TV would only show it as 16x9 and not the actual resolution.
It would have been nice to keep the render at 480 for performance reasons. So basically the shader is applied to the 480p frame which just isn't enough lines of resolution to produce a decent result and then upscaled to the output?
The performance seemed fine with games like Donkey Kong, Frogger, Pac-Man, Dig Dug, Galaga, etc. but that was at 480. I will try this tonight.
I think 4k is here to stay, well at least until a majority of broadcasts are 4k then it will be on to 8k. I think they are just doing anymore because they can and not out of necessity surely. Well maybe science and medical but on the home consumer front it's just sales. It's a nice crisp picture with Ultra HD Blu-ray but I don't need to spot a gnat on a water buffalo's ass from 5 meters across the room but still nice.
I run my RetroPie on my rpi3 in 720p.
@BuZz - Do you set both output and render to 720p? Is 720p sufficient for a shader to look good?
-
@riverstorm I set render resolution to default (video res) and video res to 720p. So they are both 720p. Looks good to me on my screen.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.