RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    CRT-Pi Shader differs on Pi Zero vs. Pi 3?

    Scheduled Pinned Locked Moved Help and Support
    pi 3zeroshadermonitorcrt-pi
    23 Posts 6 Posters 9.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Dochartaigh
      last edited by Dochartaigh

      I have a Pi 3, and a Pi Zero. They're giving me drastically different results with the CRT-Pi shader. I'm using the same ROMs, same HDMI cable, same TV, and I've tried this on several different Pi 3's and several different Pi Zero's (also tried 3 different TV's with their own individual HDMI cables).

      Here's a crappy cell phone pic from the Pi 3. The CRT-Pi shader is perfect here and I LOVE it! Nice black scanlines making it look pretty close to a CRT TV.

      alt text

      Here's an even crappier cell phone pic of the Pi Zero, but you can still see there's maybe 5 scanlines which are lighter, then 5 darker, 5 lighter, 5 darker, etc. - this goes on for the entire image no matter what game, what emulator, what brand of mini to regular HDMI adapter, or what Pi Zero itself I try it on (also have 2 separate near-stock installs I tried it on).

      alt text

      Is there any reason why these should differ from each other? Anything I can do to get the Pi Zero to look more like the Pi 3?

      1 Reply Last reply Reply Quote 0
      • davejD
        davej
        last edited by

        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.

        D 1 Reply Last reply Reply Quote 0
        • D
          Dochartaigh @davej
          last edited by Dochartaigh

          @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 ;(

          davejD 1 Reply Last reply Reply Quote 0
          • davejD
            davej @Dochartaigh
            last edited by

            @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?

            1 Reply Last reply Reply Quote 0
            • gizmo98G
              gizmo98 Global Moderator
              last edited by

              Pi zero should use a lower render resolution fot better performance. Just open game startup menu and increase resolution.

              D 1 Reply Last reply Reply Quote 1
              • D
                Dochartaigh @gizmo98
                last edited by

                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...)

                davejD 1 Reply Last reply Reply Quote 0
                • davejD
                  davej @Dochartaigh
                  last edited by

                  @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.

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    Dochartaigh @davej
                    last edited by Dochartaigh

                    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...

                    alt text

                    Any thoughts on what to try next?

                    dankcushionsD 1 Reply Last reply Reply Quote 0
                    • dankcushionsD
                      dankcushions Global Moderator @Dochartaigh
                      last edited by

                      @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)

                      D 1 Reply Last reply Reply Quote 0
                      • D
                        Dochartaigh @dankcushions
                        last edited by

                        @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...).

                        dankcushionsD 1 Reply Last reply Reply Quote 0
                        • dankcushionsD
                          dankcushions Global Moderator @Dochartaigh
                          last edited by dankcushions

                          @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.

                          1 Reply Last reply Reply Quote 0
                          • BuZzB
                            BuZz administrators
                            last edited by

                            To change the default use the configuration editor. Runcommand should be used for per emulator /Rom overrides

                            To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                            dankcushionsD 1 Reply Last reply Reply Quote 1
                            • dankcushionsD
                              dankcushions Global Moderator @BuZz
                              last edited by

                              @BuZz whoops! edited my post :)

                              D 1 Reply Last reply Reply Quote 0
                              • D
                                Dochartaigh @dankcushions
                                last edited by

                                @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.

                                BuZzB 1 Reply Last reply Reply Quote 0
                                • BuZzB
                                  BuZz administrators @Dochartaigh
                                  last edited by

                                  @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.

                                  To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                                  davejD 1 Reply Last reply Reply Quote 0
                                  • davejD
                                    davej @BuZz
                                    last edited by

                                    @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.

                                    BuZzB 1 Reply Last reply Reply Quote 1
                                    • BuZzB
                                      BuZz administrators @davej
                                      last edited by

                                      @davej thanks.

                                      To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Dochartaigh
                                        last edited by Dochartaigh

                                        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!

                                        BuZzB 1 Reply Last reply Reply Quote 1
                                        • BuZzB
                                          BuZz administrators @Dochartaigh
                                          last edited by

                                          @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.

                                          To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            Dochartaigh @BuZz
                                            last edited by Dochartaigh

                                            @BuZz

                                            @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").

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.