crt-pi shader users - reduce scaling artifacts with these configs in lr-mame2003, lr-fbalpha, lr-nestopia (and more to come)
-
@caver01 said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
@dankcushions I am finally getting around to trying these configs. I only have a handful of titles that I run vertical when viewed from the horizontal side of my display. The configs make these games look perfect, but I am finding that for a few of them, I am sizing up to the next integer. I wonder, is anyone else doing that too?
yep! you, me and @garion :) i agree sizing up is usually what you want to do, but i'm not sure how to best do it in the script:
- always round up the x scale in horizontal/vertical games?
- only for vertical games?
- only within a certain tolerance of the original aspect ratio?
i think 1. would work with 1080p screens. maybe 720p you'd start getting some ugly stretching (which you possibly already start to get with this script).
It does require some recalculations on the horizontal (basically, adding the game's horizontal value to the existing custom_viewport_width, and subtracting half of that from the custom_viewport_x).
The reason behind my tinkering can be demonstrated using the game, Krull. This is a vertical game (240x256) which happens to scale perfectly to 960x1024 (my display is 1280x1024), assuming 1:1 PAR. This is an example of a game NOT running at 3:4 AR.
The thing is, without a copy of the manual for the original game, we just can't know if manufacturer intended arcade operators to adjust the CRT to fill the image edge to edge, or if they were supposed to preserve a square PAR. I think to err on a typical 3:4 AR is the right rule of thumb, but some games do look better if the target tries to preserve 1:1 pixels.
yeah, definitely! there are some interesting discussions on 'correct' aspect ratios for all sorts of systems on the libetro forums: https://libretro.com/forums/showthread.php?t=1471 (looks like their forum is down at the moment)
-
@dankcushions I have never looked for it, but I wonder if anyone has ever created a document to track intended pixel-aspect-ratios for arcade games. It would probably require citing the original designers/game programmers or owners manuals, and most will be a calculation resulting from filling the display to 4:3, so I doubt anyone has bothered. At some point, it becomes owner's preference, but you can make good arguments for different results. For example, I think we are landing somewhere in the sweet spot of acceptable distortion with scanline and shadow mask shader improvements, but this has to be balanced with things like round helicopter rotors, or round enemy fire vs. ovals. If endlessly configuring your games is not something you love, you are in the wrong hobby!
-
@dankcushions I´ll try tomorrow with another computer and new re-download of the Db.
-
preference order:
only within a certain tolerance of the original aspect ratio? but maybe harder to code. If a vertical game is only -1% stretched with today script there is a chance we got a +10% only with round up. (I dont know if there is games with range between -1 to -3%
only for vertical games?
always round up the x scale in horizontal/vertical games?
-
this works fabulously on my pi3 and 1280x1024 - thank you very much! :):)
-
@garion @caver01
ok, i made a set of 'wider' configs that prioritise a wider aspect ratio, as long as it's within 25% tolerance from the game's original aspect ratio.crt-pi_mame2003_configs_1920x1080.zip
crt-pi_mame2003_configs_1280x720.zip
crt-pi_mame2003_configs_1280x1024.zipcrt-pi_fbalpha_configs_1920x1080.zip
crt-pi_fbalpha_configs_1280x720.zip
crt-pi_fbalpha_configs_1280x1024.zip25% is the minimum it would have to be to allow widening in @caver01's 'krull' example. i'm not sure how much of a change it makes for other games. maybe the tolerance can be higher. does anyone else have any examples of games that look like they should be wider, using these or my previous configs?
not tested any of these yet, but will do tonight :)
-
@dankcushions P-E-R-F-E-C-T
tested:
donpachi
ddopach
ddpoj
espalluga
esprade
reversos
progear (horiz)
sailormoon (horiz)great visual improvement in vertical games.
thanks for your update.
-
I'm curious, can the exact same principles used here for the MAME configs, be used for the other 4:3 systems (Genesis etc.) to reduce banding effects? For example, I've seen some of the rainbow/banding effect here and there testing certain Genesis/NES games, with the CRT-PI shader on (default settings - core aspect ratio etc.)
If I turn on integer scaling, of course these go away and with it my screen shrinks (bars top/bottom). However - if I change my aspect ratio to custom I can adjust the aspect ratio parameters to make it "close" to what it should be (the height of the screen, but slightly wider or narrower, much like MAME).
I only tested a couple of ROMS. and it seems to work fine for NES, SNES, but for the Genesis/Megadrive I notice the top/bottom of the screen cuts off a few lines.
I'm still learning, but is it possible that one could edit the retroarch config for a specific system (Genesis for example) and set the integer scale parameters (custom) to eliminate the banding effects? The trade off being that the games play slightly wider, but cleaner?
-
@RumblinBuffalo yes, that's something you can do. Just edit the cfg file in the respective emulator config folder and the changes will affect that emulator only.
-
I don't believe this is going to work as I had hoped. Using Sega Genesis as an example, with the integer scaled height being either 1120 or 896, I'm always going to be either slightly taller or slightly shorter than the display. I tried customizing at 1080 height but of course that is not the proper scale, and thus the banding is noticeable (NHL Hockey for example has noticeable banding on the ice as the screen moves up/down).
Integer scaling looks great, but again I'm limited to the black bars top/bottom. After re-reading and better understanding some of the above, it looks like I may have taken the long way around the block on this.
-
@RumblinBuffalo The real benefit was for scaling vertical arcade titles on horizontal displays where you were going to have black borders on the sides anyway. The beauty was you could scale the horizontal dimension of vertical games to an integer magnification to prevent banding artifacts of the shader, then stretch the vertical all the way to the edge of the screen because that dimension carried no banding problems.
For your situation, you are trying to use the technique on horizontal games, on what is likely a horizontal display. You probably can't stretch all the way to the edges horizontally, as a wide screen will result in too much distortion. It sounds like you already found the optimal viewport anyway.
-
@RumblinBuffalo said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
I don't believe this is going to work as I had hoped. Using Sega Genesis as an example, with the integer scaled height being either 1120 or 896, I'm always going to be either slightly taller or slightly shorter than the display. I tried customizing at 1080 height but of course that is not the proper scale, and thus the banding is noticeable (NHL Hockey for example has noticeable banding on the ice as the screen moves up/down).
Integer scaling looks great, but again I'm limited to the black bars top/bottom. After re-reading and better understanding some of the above, it looks like I may have taken the long way around the block on this.
home consoles often accounted for varying overscan capabilities of consumer TVs. that is, you can use a vertical scale that is BIGGER than your screen, and not worry about the bit of image you've cut off at the top and bottom, because it will not have anything crucial to the gameplay. e.g., the score in sonic and super mario bros isn't right at the top of the screen, because some (perhaps most?) TVs might not show that.
this is what i do for nes snes and megadrive (along with getting the correct horizontal scale via my algorithm). i'll release my cfgs at some point if anyone cares!
-
@caver01 said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
The real benefit was for scaling vertical arcade titles on horizontal displays where you were going to have black borders on the sides anyway. The beauty was you could scale the horizontal dimension of vertical games to an integer magnification to prevent banding artifacts of the shader, then stretch the vertical all the way to the edge of the screen because that dimension carried no banding problems.
@caver01 Agreed and thanks. I'm gaining a much better understanding of this now. It works with vertical arcade games because they have plenty of room (on my wide screen) to be scaled to a usable "integer magnification", which eliminates the banding (which is essentially horizontal banding sideways due to the vertical shader). Trying this with a Genesis or NES game doesn't work because the integer scale height (1120) is taller than my 1080 display - hence the cutoff. How (if at all) do you apply shaders for these systems in your roadcase?
@dankcushions said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
home consoles often accounted for varying overscan capabilities of consumer TVs. that is, you can use a vertical scale that is BIGGER than your screen, and not worry about the bit of image you've cut off at the top and bottom, because it will not have anything crucial to the gameplay. e.g., the score in sonic and super mario bros isn't right at the top of the screen, because some (perhaps most?) TVs might not show that.
@dankcushions Thank you - I think that explains it exactly for me. So some games - Sonic and Mario are perfect examples - look fine if I stretch to the 1120 scale because the scores don't cutoff. However, a few games like Streets of Rage or Revenge of Shinobi that put information in a yellow border right at the top of the screen, are partly hidden above the screen (presumably because the developer didn't take the overscan into account?)
this is what i do for nes snes and megadrive (along with getting the correct horizontal scale via my algorithm). i'll release my cfgs at some point if anyone cares!
I'd definitely be interested to see your cfgs. So you actually scale your nes/snes/megadrive larger than your screen?
-
@dankcushions said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
home consoles often accounted for varying overscan capabilities of consumer TVs. that is, >you can use a vertical scale that is BIGGER than your screen, and not worry about the bit of >image you've cut off at the top and bottom, because it will not have anything crucial to the >gameplay. e.g., the score in sonic and super mario bros isn't right at the top of the screen, >because some (perhaps most?) TVs might not show that.
this is what i do for nes snes and megadrive (along with getting the correct horizontal scale via my algorithm). i'll release my cfgs at some point if anyone cares!
Are you saying that you setup a viewport for some of the home consoles that exceeds the vertical dimensions of your display? If so, I am very interested in that, or however you are doing it. I guess I must be just living with some shader issues on the home consoles. I do see some odd stuff that was normally offscreen in the good old days, so I am curious about your setup. Perhaps you could share an example, and I can take it from there. I think we are running different display resolutions anyway, but I'd love an example config for say, Atari 2600 or NES if you are willing.
-
@dankcushions Could I by any chance get a version of the 720p configs that use the curvature versions of the shaders?
-
@Furluge there's no need for integer scaling on the curved version i think. it doesn't line up the same way
-
@dankcushions Ok, but it is still useful to have the override for all the vertical games.
-
@Furluge said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
@dankcushions Ok, but it is still useful to have the override for all the vertical games.
very true! i've done this also now - check the top post :) I've also updated the other links to have the 'tolerance' version also. not tested any of this yet but it looks ok.
-
Hi !
I am very interested in this. My Samsung UN28H4000 has a 1366x768 resolution though. Can you share a version of your work for that specific resolution ? Unless you think its too odd ? There is some part of the conversation, specifically about aspect ratio, I dont fully understand. All I am interested in is to get the proper vertical shader for vertical game and not touch my horizontal games since I am happy with the result.
Thank you for your help !
If it is easy to do, it would be nice to add a few more resolutions to your first post so you get less requests :P
-
@Nataq said in crt-pi shader users - reduce scaling artifacts in lr-mame2003/lr-fbalpha (horizontal AND vertical games):
Hi !
I am very interested in this. My Samsung UN28H4000 has a 1366x768 resolution though. Can you share a version of your work for that specific resolution ? Unless you think its too odd ?
Done! see original post :)
There is some part of the conversation, specifically about aspect ratio, I dont fully understand. All I am interested in is to get the proper vertical shader for vertical game and not touch my horizontal games since I am happy with the result.
the scripts do change horizontal games, but i think you will either not notice or be happy with what it does. if you only want to do vertical games i can generate that for you, but try first :)
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.