There are a few ways to do it. The most blunt way is to create a [romname].ini file and put it in your /mame/ini folder.
You can make it with notepad and it can be as simple as "resolution 320x244". The .ini file will override any settings that came earlier for the game, such as from mame.ini.
A *better* way to do it is by editing your monitor.ini (you can do this directly or via vmmaker, first tab) to tell CRTEMU and GM what your "monitor" is capable of.
In my case, I'm using a generic brand 21" CRT TV with a "China TV" chassis variant. Yes that is the official term, they are common, at least across Asia. I have modded it to take component input, which I provide from PC via GreenAntz RGB-component transcoder. It is quite happy with PAL/50, NTSC/60 and almost everything else in between.
So, in the
monitor.ini file, I created a new monitor profile named "ChinaTV1". It is really a hybrid of the generic PAL and NTSC profiles with two crt_range profiles. Here it is, with some highlighting.
monitor "ChinaTV1", "China TV - 50/60 Hz", "4:3"
crt_range0 15625.00-15734.26, 49.50-55.00, 1.500, 4.700, 5.800, 0.191, 0.191, 1.056, 0, 0, 192, 288, 448, 576
crt_range1 15625.00-15734.26, 55.01-62.00, 1.500, 4.700, 4.700, 0.191, 0.191, 1.056, 0, 0, 192, 248, 448, 480
So, the coloured bits need some explaining. The horizontal frequency
(NAVY) is now a range covering both PAL & NTSC. It could even go a bit lower & higher, but "15625.00-15734.26" works for both and most intents and purposes.
The vertical frequency
(ORANGE) values are tweaked so that 49.5 up to 55hz use the crt_range0 profile (~"PAL"), and 55.01 - 62hz use the crt_range1 profile (~"NTSC").
Finally, have a look near the end of the lines, third numbers from the end. On the
red "288" is for crt_range0, "PAL", and says we have 288 (theoretically) visible progressive vertical lines in "PAL" modes. The
purple "248" is for crt_range1, "NTSC".
This "248" is the important part. It tells max progressive lines, and has been deliberately tweaked from "240". Vmmaker, and GM, will now automatically use the "NTSC", or crt_range1 profiles, for generating/using modes with up to 248 vertical lines.
Next, go to the third tab in Vmmaker and edit the
user_modes - super.ini file. This will allows Vmmaker to create super modes. Comment out the "2560x240" line like this:
## 2560 x 240 @ 60.000000 super
and replace it with (something like) this:
2560 x 244 @ 60.000000 super
You can go higher, but for my purposes 244p was enough. Vmmaker was able to generate a 2560x244p mode at just under 59hz.
Now, start a game with 224 vertical lines, such as Wonder Boy (512x224p @ 60), GM will automatically choose the 2560x244p @59 super mode. In my case the extra 4 lines was enough to get all of "PLAYER 1" onscreen (a few pixels were missing in 2560x240).
In Wonder Boy, I was able to reclaim a few lines at the top so I could see all of "PLAYER 1". I would attach some screenshots and discuss further, but is late already and I am tired, so will save that for tomorrow.
Games that use 320x240p will continue to automatically use that mode, if it is available. You could go further and also comment out (#) that mode from the "user_modes - super" list and replace it with something like 320x244p. but beware, I think some non-MAME games may require 320x240p, might/possibly/maybe be an issue for some people/cases.
[EDIT: Minor rearrangements, GOOD NIGHT]