c) Why is GM better for a CRT? (Vertical stretching at 1:1)
GM has a built-in function called switchres, which, when left on default settings, selects a video mode with a 1:1 vertical ratio, ideally from a list of "super" resolutions, and adjusts the modeline so the refresh rate matches the original hardware and the sizing is right. Vertical resolution is absolutely critical for a CRT. I'm going to talk about horizontal resolution first, in the paragraphs below, but i do come back to vertical resolution and why it's so important.
The switchres utility works amazingly well with 2D arcade games, and also with the MESS emulator that’s now built into MAME. It’s about the most important feature of GM, but GM also has frame-delay (
http://forum.arcadecontrols.com/index.php?topic=133194.msg1648384#msg1648384) to combat input lag, V-sync offset, and audio latency options. At this point GM on Linux has caught up with Win7/10 in terms of input lag, but i'm a Windows fanboy, so here we are
EDIT: Calamity is working on an optional update to GM called frame slicing or beam chasing. Modern CPU's are so fast they can update a video frame during the time that frame is being drawn on screen, and this allows GM to respond to control inputs during the current frame. This helps compensate for any input delays and other factors, but it only works in special cases as most games in MAME can't handle partial frame updates. Consider it highly experimental.
d) What are Super Resolutions? (What about Horizontal stretching?)
Super just means horizontally larger, here. The picture still looks the same on your screen, rest assured. In short, a super-wide resolution allows the image to stretch more evenly in the horizontal direction, at the same time allowing you to install, say, only five or six modelines in order to run 99% of games. This means there is far less configuring and tweaking required to get your setup working as well as it can. It also means that when you pick a game your system switches resolutions much, much faster and the game pops up quicker - in some cases ten to fifteen seconds quicker.
2560 pixels wide is the default super resolution trigger GM uses, controlled by the "super_width" variable in mame.ini. The analogue circuitry in a CRT TV will hit a bandwidth limit above which the transistors won't be able to respond fast enough and the image becomes dim and mushy, depending. (Thanks to NEO-GEO Man for clueing me in, there). Any functioning analogue TV can do 2560 though, even before taking into account how super resolutions are meant to work. A resolution 2560 pixels wide at 15kHz has a bandwidth of about 40MHz. When dealing with analogue video the bandwidth is also called the dot clock. Section e) will talk a bit more about dot clocks.
To go into more detail... CRT's are limited by their horizontal scan rate, or the number of horizontal lines of pixels they can draw each second. This is the same as vertical resolution, because a raster CRT draws or scans each line of a video frame dot by dot from left to right, one line after the next, down the screen. Hence, scanlines. That's what a raster is, a continuous stream of bits broken up by line markers. CRT's are not, however, limited by horizontal resolution, and the number of dots within each line can be 2560, or higher, as above. The overall screen width is unchanged, the electron beam sweeps across the face of the tube in the same interval, so the 2560 horizontal pixels are drawn into the same physical space over the same length of time as 384 would be, or 320, or whatever. CRT's are not fixed-pixel like LCD or OLED because while there are discrete phosphors of three colours that light up, each can do so partially or unevenly. Think of two flyscreens with slightly different mesh sizes lain on top of each other - the electron guns fire a grid of pixels at the shadow mask, and the two never line up perfectly - they can't, it's not physically possible. Increasing the horizontal resolution is like spraypainting much finer dots over the visible flyscreen. There's more to it than that, but it's a convenient analogy. Don't expect to resolve the fine details of a 1920x1080p image on your SD TV, obviously. We're using the super-wide resolution for a special purpose, and the fact the pixels are in groups (see below) makes a difference too.
Why bother increasing the horizontal resolution? Because it saves massive amounts of time, and because using a large horizontal resolution eliminates scaling artifacts. Take the CPS1 arcade system (SF2, Final Fight + more) at an unusual resolution of 384x224. Sounds unusual anyway, doesn't it? Obviously the computer has to draw the first flyscreen first, the one the colour guns will fire at the physical phosphor-coated screen, and it does so digitally, dot by dot. Selecting a resolution of 320x240 dots would mean that while the vertical will fit at 1:1, with eight blank lines at the top and eight at the bottom, you'd be losing pixels horizontally trying to fit 384 into 320, or just enabling some filter or effect that would warp the original image. Even using 640x480 isn’t a great help, and will not produce a very even picture. The answer is to use a ‘super’ resolution of 2560 pixels wide, giving a 7/7/6 group for each three pixels of the original 384. As long as the horizontal resolution is sufficiently high, the effect is seamless.
Vertical resolution is different, being one of the main limiting factors of a CRT. Individual pixels are covered above, this time we're talking about lines of pixels. The scanlines of a progressive SD video frame are separate and distinct. This means that you have to scale 1:1 in the vertical direction because most old systems output at about 240 lines, the lines are spaced out, and if you stretch that 240 slightly into say 256, or even 288 or so, the distortion is huge, and scrolling backgrounds or moving sprites stand out like dogs' balls. An LCD with 1080 lines would have more room to stretch evenly. You could even use integer (whole number) stretching so the pixels scale perfectly, and leave some blank space. However our example of 384x224 isn’t 4:3 when displayed on an LCD, integer stretching or no. You could always use partial stretching in the horizontal only, on an LCD, but you wanted a CRT for visual fidelity, didn’t you?
To use super resolutions you need modelines like 2560x240p and 2560x256p installed on your system. I'm using 2560x262p for WinUAE as it's the only way I seem to be able to get a 1:1 vertical ratio. Not sure why; 288p works for most ppl. Other emulators or packages like Retroarch and Mednafen will happily use super resolutions too, you just tell them not to stretch vertically, and how much you want to stretch horizontally. Sure you can run everything in 320x240p with a single modeline, but even the SNES has several video modes it uses. The Amiga has four primary ones in each of two regions. And arcade games are all over the shop. Different devs used different tricks in different regions at different times, let alone the fact different consoles pick different on-screen positions for their video output. Super resolutions work to circumvent most of these issues, and look the same if not better than plain old 320x240p. Some people swear by a 3840-wide image as being an integer multiple of a greater number of native resolutions, but as the number of pixels in each line gets above 2000 or so, increasing it makes less and less difference.
Done right, using Super Resolutions saves tons of time and looks awesome, just like real arcade hardware or consoles. If you don't use super resolutions, you need to have the native resolution installed for every game you want to play, or you'll be settling for a lower-quality video image. Setting native resolutions for everything balloons out configuration time even if it's physically possible to size everything right on your CRT, and if you have to make changes you'll find yourself facing the same huge task over and over. And don't kid yourself, even if you buy a Hyperspin drive you'll be spending several days configuring things, and then more in a month or two when you realise you didn't do everything quite right the first time.
If you're going to try super resolutions, remember to keep a few normal resolutions too, like 640x480i, so the desktop remains useable! And not everything will use super resolutions, so having a few fallbacks (320x240p, 256p, 640x480i, even 800x600@50i) is a good idea. The guide linked to in section l) covers installing resolutions with VMM, super or otherwise.
[/SPOILER]
https://www.aussiearcade.com/archive/index.php/t-87668.html
[/INDENT]