Overlays
-
@ironic i dont understand ...
no one said all emulators have a 4:3 ratio.
NES is 16:15
SMS is 4:3
GBA is 3:2
GB and GBC are 10:9
And as far as i remember, double dragon is 15:14 (indeed, it's 240x224 -> ratio of 1.07)How does retroarch stretch then ? Does it stretch to simulate a 4:3 screen, so that, indeed, no pixels are square (but SEGA) ? Or does it simply multiply X and Y byt the same factor, keeping the original ratio, having square pixels, but not simulating an 4:3 output ?
I'm at work, can't experiment for now ..... But i'd say square pixels, so it keeps the original ratio. The double dragon example proves it
-
NES is 16:15 ratio ?
Never.
NES screen is done to be seen on a 4/3 CRT in full screen, so NES is 4/3 Aspect Ratio.Wiki :
The aspect ratio of an image describes the proportional relationship between its width and its height256/240 (or 16/15 ) is not the Aspect Ratio.
This is a NES screen (256x240) X4 so 1024*960
Do you thin aspect ratio is correct ?This is a true 4/3 aspect ratio of a NES screen.
It is pixel perfect (or integer scale on) so the scanline is perfect.
This is a 4x5 screen (1280x960) but the result is 4/3 screen.Pixels are not square on TV, NES and others plateformes.
Double Dragon is made to be seen on a arcade monitor, a 4/3 screen in fulsscreen.
So is aspect ratio is 4/3 but not X pixels/Y pixels.CPS1 games have 384x224 resolution. 384/224 = 1.71 !!
Is done to be seen on a 4/3 screen. 4/3 = 1.33 !!
Why ? Pixels are not square.Never mind the resolution
A game is done to be seen on a 4/3 screen in full screen ??
Yes !
Ok, this game (256240, 320240, 256192, 384224...never mind....) is 4/3 aspect ratio. -
just tried Mario. The core scales the game to 1440x1080 on a 1080p screen. Which means it was upscaled in 4:3. In other words, any console meant to be played would have the same fullscreen viewport ? I tried with SMS, NeoGeo, SNES : always the same viewport size. Which makes things rather easy for non PP display
So the question now is to calculate the screen size when PP is activated
a little reading : http://libretro.com/forums/showthread.php?t=1471&p=15087&viewfull=1#post15087
-
just tried Mario. The core scales the game to 1440x1080 on a 1080p screen. Which means it was upscaled in 4:3. In other words, any console meant to be played would have the same fullscreen viewport ?
- YES.
But is you activate Integer Scale, the size would be : 1280x960
NES pixels are X=1,25 for Y=1
(2561.25=320 2401 = 240 320/240 = 1.33 = 4/3)
On your link, you can see all consoles use 240 pixels (vertical) but not all viewport is used.
SMS use only 256x192 but the resolution is 256x240.Your link talks about non-square pixel.
There is a lot resolution and lot of game console, so we must only try to respect 4/3 format on your monitor.
3/4 for Arcade vertical games.For best image quality, we must use Integer Scale.
(PP or Pixel Pefect can be used only with square pixel).For all 4/3 games, we must use :
On 1280x1024 monitor => 1280x960 resolution.
On 1280x720 monitor => 960x720 resolution.
On 1920x1080 monitor => 1280x960 resolution.
(LCD pixels aren't exactly square, lets forget that).But...
Everything I have said is false
Resolution is 240 (vertical) but only 224 pixels are displayed.So...
The real aspect ratio of a game is 4/3 in fullscreen.
The displayed pixels area is 256x224 ou 320x224 ou 384x224...On a fullHD (with Perfect Pixels) the screen with Integer Scal must be :
(Vertical) 1080/224 = 4.82 (keep 4).
2244 = 896
896/34 = 1194.6 (keep 1194)
X = 1194 and Y = 896On my 1280x1024 5/4 monitor.
1024/224 = 4.57
2244 = 896
896/34 = 1194.6 (keep 1194)
X = 1194 and Y = 8964/3 = 1.333333......
1194/896 = 1.3325....This is (for me) the "perfect way" to display a NeoGeo (or other 4/3) game on a 5/4 LCD monitor.
- 4/3 screen (320x224 upscaled).
- Scanlines Shader is perfect
For those who say, the honrizontal scale is not an integer scale, i answer :
Remember the PAL/NTSC resolution.
NTSC (525 lines fo 720 × 480) PAL (625 lines for 720 × 576).On hi resolution, 1280x1024 or 1920x1080, we can use non-integer scale, 99% of people never seen the non-integer pixels.
Without scanline, nothing is visible.All these "equations" gives a headache ? Sure...
But what we (you) want to do ?This post is for Overlays but for perfect overlays, a screen ratio must be definied.
- YES.
-
@ironic all of your posts give such a headache lol But at least we move forward
But if i want to sum up what you wrote :
- we need to keep the 4:3 ratio for consoles
- it's only worth with integer scale
- The integer scale resolution is the same for any console, but must be calculated according to the screen resolution :
- 1080p : 1280x960
- 5:4 (DMT 35 1280x1024) : 1280x960 too
- 720p : 960x720
I guess that sets it for consoles ?
If so, here are the margins left for each mode :
- 1080p : top/bottom : 60px, left/right : 320px
- 1280x1024 : top/bottom : 32px, left/right : 0px
- 720p: top/bottom : 0px, left/right : 160px
1080p has space left everywhere
720p just has 160px left on left as well as on right => we can't let retroarch shrink a 1080p overlay
1280x1024 as 32px left on top as well as on bottom => worthlessWhat about arcade (forget NeoGeo) ? Looks like those rules fail as we can't set a generic viewport : Mame handles the real resolution of games, and nothing is stretched to 4:3 unless forced or native ? That would mean a per game viewport
One more thing : i thought PP and IntegerScale are the same ... but no ? PP is when we strictly respect the original resolution without stretching it to fit 4:3 ?
-
I dont agree with this: The integer scale resolution is the same for any console,
-
@supernature2k indeed you are right ... As it depends on the native console resolution stretched to 4:3
-
@supernature2k @subs
Here are the screenshots, we were talking about earlier:
System: SNES
Monitor: 19" TFT LCD
Connection: HDMI -> DVI
TV Mode: DMT 35 DVI
Game: F-ZERO
Screenshots: raspi2pngOption 1
Shader: Scanlines
Integer Scale: OFF
Smooth: ON
Ratio: Auto
Option 2
Shader: Scanlines
Integer Scale: ON
Smooth: ON
Ratio: Auto
-
I don't want to bother you... What you are doing seem very complicated to mee ^^
But maybe I can help you.
UXS can now generate Picture with Resolution and Ratio configuration.
Maybe it can scrape a picture dedicated to overlay.Something basic with wheel or Marquee (maybe 3D or 2D Box) but autogenerated for every game (Console & Arcade)
(Just to let you know this is thing UXS can do in a very near futur : Teaser )
-
@subs
All you wrote is ok.
If we want to use overlay all around the game screen, it's better to use Interger Scale.
But if we want bigger or thinner overlay, we must disable Interger Scale.
As several consoles haven't square pixels, we must disable Integer scale.First, we must do a choice. What do we want ?
- The best quality with vertical integer scale ?
- The bigger screen with 4/3 ratio respect ?
- The more space possible for overlay ?
Is the overlay will be enabled game by game ?
Or console by console ?I don't know what people wants.
Most people are not interested in all that we say here. They just want nice quality games and fun.For Arcade games, is more difficult.
There's several resolution but we can keep 4/3 aspect ratio (or 3/4).Another problem is RetroArch crop the game screen.
Some NeoGeo game use 320x224 and other 304x224 but RetroArch resize the screen.
Some game (like Sega M.S.) have a "no pixel area border" on left.I think we must define a generic viewport of 4/3 with enough space for overlay.
Pixel Perfect and Integer Scale are 2 differents things (for me).
Integer Scale means that all honrizontal pixels have same size, all vertical pixels have same size,
But honrizontal size and vertical size of a pixel can be different.
On my Bartop, one NES pixel is 5 native pixels (honrizontal) and 4 native pixels (vertical).Pixel Perfect means all pixels have same size, honrizontal = vertical.
Pixels are square.Recalbox wiki say Integer Scale = Pixel Perfect.
Why not. It's ok for me. But i prefer use Interger Scale.
Pixel Perfect is for browser or photoshop users...@screech
Yes, it's very complicated.
Shall we try and compare quality overlays.
I will try your new UXS soon... -
This is how I see things according to what I've understood so far :
- overlays without integer scale is as easy as killing babies with axes : consoles (not handheld) will be stretched to max size (which is screen height * 4/3). Handhelds are natively pixel perfect, so it's the same story almost. Any overlay for non IS game will just fill a pair of side borders
- using overlays on 1280x1024 screens is worthless but for vertical shmup
- I still think overlays are much more worth when integer scale is on
- handheld consoles should be easy for there IS screen resolution
- nothing is set yet on how to manage arcade
- the aim os to make some overlay models for each console, for a few different screens, even if i think 1080p and 720p are the only worth ones
- integer scale is, as i understood, the fact of multiplying both the emulator resolution by a single integer. It has no impact on scaling the video to 4:3
- for arcade, i think we should keep the original rom resolution (or smhumps would be stretched) => Pixel Perfect mode for arcade. One of my next tasks for arcade is to list all mame supported games with their resolution. Haven't checked yet how it is stored on fba
Of course, this is my personnal opinion. I think we put things plain, time to decide ^^
For consoles, based on the link i posted earlier on the libretro forum, this is what i suggest as resolutions :
- SNES : 299x224
- Megadrive : 299x224
- NES : 299x224
- SMS : 256x192
- FDS : 299x224
- NeoGeo : 299x224 (though i wonder, looks like it crops the image)
-
299/224 = 1.3348
It's the nearest 1.3333 CRT (4/3) aspect ratio.If our monitors have a square pixel, everything is good.
If the pixels are not square, we must recalculate the resolution.On my LCD1280x1024 IBM ThinkVision 17 "5/4:
X = 340mm
Y = 271mm340/1280 = 0.265
271/1024 = 0.264
A pixel is 0.26mm x 0.26mmWe can say that the pixels are square.
Somebody can calculate pixel size on 16/9 monitor?Various resolutions will be used:
1280x1024, 1280x720, 1920x1080The basis for the resolution is 4/3 of 299/224.
With a vertical Integer Scale and the largest image:1280/1024:
299/224 × 4 = 1196x896
1280 * 720:
299/224 x 3 = 897x672
1920/1080:
299/224 × 4 = 1196x896
With this resolution, image quality will be the best, with and Without scanline shader.
And give area for an overlay.Arcade games resolution and other:
Arcade Infos GamesFor arcade games, overlays are very differents. It's impossible to set a resolution.
Each game must have his resolution. -
Very nice job ironic.
Concernning lcd monitors square pixels, let it be a dogma : they are square, can't bother for every recalboxer ...
For arcade, as I said earlier, the aim of the topic is to go step by step, and find some rules and scales for overlays. I'd love to offer some masks (png / psd) for people (like @screech) who want to generate overlays
so far we haven't spoken yet of handhelds, but they all have a lcd screen, just need to find their resolutions, and their integer scale values for 1080p and 5:4
@ironic the SMS is the only one with a resolution different from 299x224 : 256/192, which is 4/3. So this perticular overlay should be slightly different than others. We also means quite some consoles, namely vectrex as you've worked quite much on its overlays
As, quite often, most consoles have several resolutions, should we force a 4/3 custom ratio in retroarch or can wa consider afterall that those consoles would anyway render to 299x224 ?
For the pixel aspect ratio of any screen : you can do it much faster. The panel size ratio MUST equal the resolution aspect ratio.
In yur case, you just pray that 340/1280 = 271/1024 => 1280/1024 = 340/271. 5/4 = 1.25, 340/271 = 1.262Anyway, no need to check monitors, that's a user problem that we can't solve through recalbox as it depends on parameters (the real lcd panel size) that we can't programmatically get.
-
Arcade Overlays :
Let's try to scale an overlay :
Dragon Ninja (256x240)This is a pixel perfect 256x240
To see how it really must be, scale it to 4/3 (320x240)
The Bezel is square, how can we scale it to fit 4/3, 5/4 or 16/9 screen ?
I don't know.
Here, the game screen is very very small...
We can find some 16/9 truncated Bezels for 16/9 as :
(This one is 1.32 Ratio)
-
The viewport of the bezel is too small. Such a game 320x240 once stretched to 4:3 will be "integer-scaled".
For 1280x1024 : factor 4 => 1280x960
For 1920x1080 : factor 4 => 1280x960, but with bigger bordersThis is how I wee things. This example prooves once again that 1280x1024 is not worth for overlays unless you want the viewport to look like a stamp
-
https://github.com/libretro/mame2003-libretro/pull/53
There has been some corrections about aspect ratio in mame2003. This last pr reverts some stuff. I suppose it is relevant so I post it here.
-
-
Oh la la, très très jolie Overlay/Bezel, bravo
-
our friends over at HFS made a nice wiki and if you go to http://wiki.hfsplay.fr/doku.php?id=tutos:install_hfsbox15k#l_installation_des_drivers_runtimes_directxand scroll a little down, you have all resolutions for CRT consoles. The rest of the topic is very interesting to read too, despite being in French
-
The complete list of MAME 0.78 resolutions / La liste complete des resolutions MAME à mettre en exergue avec https://forum.recalbox.com/topic/3475/recalbox-sur-tv-crt-en-rgb/308
1020x1020 1024x768 1024x772 1024x780 1024x800 1024x808 1024x840 1024x848 1024x912 1040x880 1050x900 1056x864 160x200 208x232 224x224 224x232 224x240 232x224 240x176 240x192 240x216 240x224 240x232 240x240 240x248 240x256 248x208 248x224 248x240 248x256 250x280 254x232 256x184 256x192 256x200 256x208 256x216 256x222 256x224 256x230 256x232 256x234 256x240 256x248 256x256 256x288 256x448 256x480 260x240 264x224 264x232 272x216 272x224 272x232 272x236 272x256 276x240 280x216 280x224 280x240 284x240 288x208 288x216 288x224 288x256 292x230 292x240 296x224 296x240 300x260 304x224 304x232 304x240 304x248 304x256 318x222 320x152 320x200 320x204 320x224 320x232 320x240 320x256 320x416 336x238 336x239 336x240 338x236 338x240 352x240 352x256 360x224 360x240 360x244 368x224 368x232 368x240 368x448 376x224 376x240 376x248 380x224 384x224 384x240 384x254 384x256 384x280 394x240 396x256 400x248 400x254 400x256 404x254 410x256 416x224 420x400 432x224 448x224 448x240 464x224 480x440 480x480 488x384 496x232 496x384 496x480 500x440 512x192 512x224 512x236 512x238 512x240 512x256 512x288 512x352 512x384 512x400 512x448 512x480 520x400 540x400 580x400 580x500 580x570 638x240 640x232 640x240 640x480 672x240 720x768 768x240 832x448 864x224 900x600