Build Your Own Arcade Controls Forum
Software Support => GroovyMAME => Topic started by: mamenewb100 on July 23, 2012, 07:05:38 am
-
I have an interesting question about scaling 15 Khz to 31 Khz and how GroovyMame handles it. My understanding is that it is taking an arcade resolution like 300x220 and doubling the scan lines to 600x440. If I understand this correctly, since the resolution is being doubled the scan lines are half the thickness of the original, basically making it look like 220P when it is really 440i? Giving the illusion of a lower res image by cramming twice as much stuff in the same area?
Next question is does Groovymame need to use two modeline resolutions to accomplish this? I'm assuming if it can't find an exact 300x220 res that it will find the closest modeline available and double it. But then if your next closest modeline is 640x480, it will just stretch the pixels to fill the gap? If you had something closer to 600x440 would it use that instead?
-
Hi mamenewb100,
Well the thickness of the scanlines cannot be controlled by software, it's something that is inherent to the monitor. So a high resolution monitor (31 KHz) has thinner scanlines, as it has to draw the double amount of lines in the same space.
So yes, basically what you do is to draw two scanlines for each one from the original resolution. This produces a typical "blocky" effect as compared to the real low resolution display, but it's not too bad provided you don't stretch things.
GroovyMAME scaling is, i.e.: 320 x 224p (15 kHz) -> 640 x 448p (31 kHz)
Notice we shouldn't really need to scale xres, just yres is relevant for frequency matters, but we do it because most people would get uneasy if we just scaled in one direction (I mean using 320 x 448p in this sample would look *exactly* the same).
Now, how this is done depends on the OS. In Linux we can create resolutions on the fly. So we just calculate the scaled modeline whatever it is and create it, that's all.
In Windows we can't create resolutions on the fly, so chances are the resulting scaled resolution won't be available. That's why we need to precalculate a table with all the required scaled resolutions, install it, and have it ready to use. Unfortunately we can't do this with the AVGA, so it will need to grab the closest resolution and possibly stretch things, it's somewhat unpredictable and that's why the results tend to suck when scaling.
-
Thanks for the explanation. Since I don't want to settle for a low res game blown up 100% of it's original size... you guys have convinced me to ditch the AVGA. I only wan't to make sure that my next ATI card is perfectly compatible, so I don't go through this mess again.
-
Well, that limitation of the AVGA only applies to Windows. In GroovyArcade Linux it's unlimited.
It's a shame that we couldn't figure out the odd resolution issue during boot...
-
Well, that limitation of the AVGA only applies to Windows. In GroovyArcade Linux it's unlimited.
It's a shame that we couldn't figure out the odd resolution issue during boot...
HUH? Are you teasing me again? Are you saying that you can add any modeline for use with AVGA or modify anything you want, like a regular ATI card in Linux?
P.S. I finally did get the SOB to display. ;D
-
HUH? Are you teasing me again? Are you saying that you can add any modeline for use with AVGA or modify anything you want, like a regular ATI card in Linux?
Of course! Why did you think that I suggested Linux in the first place?