CRT-Pi Shader differs on Pi Zero vs. Pi 3?
-
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.
-
@buzz said in CRT-Pi Shader differs on Pi Zero vs. Pi 3?:
@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.
Thanks Buzz this worked perfect and runs the older games listed above just fine. In either 720 or 1080 with both Udb's overlays on and crt-pi shader enabled. Stock is a bit--bit sluggish at 1080 but is completely playable. Overclocked is no problem. I did not have FPS up but just more going off feel.
I also tried Udb's overlays. The 1080 overlay worked in both 720 and 1080 and fit perfect. I am guessing it's just downscaled in 720. You need to set both the group and mode to get the output set to 720. Just the mode doesn't work.
I also did not know the difference between video and output settings in the quick config as they seem like they should be the same logically thinking but video is the one to choose.
One thing that was off and didn't work correctly was Dank's custom shader configs. I used a stock 4.3 image and updated the script, retroarch core and lr-mame2003. When I ran a game it would just show me the top left corner of the game like it was really zoomed in. I am not sure if it was something as simple as a setting to get them working again.
I did get a modest overclock on the arm but decent on the gpu & sdram. The arm_freq up to 1075 (7% increase), gpu_freq (which includes the core_freq & v3d_freq) up to 525 (24% increase) and the sdram_freq up to 525 (24% increase) also.
The arm_freq is a bit modest. It is the same SoC as the Pi 1 but the manufacturing technique improved in the 4 years between releases and they were able to release it as 1,000 MHz stable whereas the Pi 1 was released as 700 MHz stable at the time. I would guess it's really pushed to it's limits already at 1000 but I see some that are getting good silicone at the top of the bell curve of variance are getting 1.2 GHz.
It's already overvolted to 6 but a simple small heatsink barely protruding through an acrylic case kept mine more than cool enough with nothing special.
A good base starting point is 1000 for arm and 500 for gpu & sdram and I worked up from there.
I did get some annoying static-ish feedback noise in Elevator Action but games like Rastan, old classics, etc. worked great.
For shaders 480 looks muddy (I prefer the solid jaggy graphics over this), 720 is acceptable but at 1080 you can clearly see a difference on a 4k TV and looks great. It might come down to performance when choosing which resolution and if using overlays and shaders.
I do like the zero but it seems like a niche market for handhelds or some special project. It's sluggish in everything from bootup, loading games, etc. compared to the 3. I think if you have room the 3 is the way to go but the zero is nice and incredibly small. Easy to velcro to the back of the TV or something. Using thin HDMI and power cables would make it easy to hide as it's quite a bit smaller then the 3 with a case.
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.