Well, it's using a 320 lines mode at 24 kHz which is what it's supposed to do, so you get a pixel perfect resolution. You are supposed to adjust the vertical size manually.
If you don't want GM to use 320p resolutions, this is what you have to do. These are the built-on settings for ms2930. Look how the second range is defined starting from 320 lines:
crt_range0 15450-16050, 50-65, 3.190, 4.750, 6.450, 0.191, 0.191, 1.164, 0, 0, 192, 288, 448, 576
crt_range1 23900-24900, 50-65, 2.870, 3.000, 4.440, 0.451, 0.164, 1.148, 0, 0, 320, 384, 0, 0
crt_range2 31000-32000, 50-65, 0.330, 3.580, 1.750, 0.316, 0.063, 1.137, 0, 0, 576, 768, 0, 0
Edit that value to start, for instance, at 384 progressive lines:
crt_range0 15450-16050, 50-65, 3.190, 4.750, 6.450, 0.191, 0.191, 1.164, 0, 0, 192, 288, 448, 576
crt_range1 23900-24900, 50-65, 2.870, 3.000, 4.440, 0.451, 0.164, 1.148, 0, 0, 384, 400, 0, 0
crt_range2 31000-32000, 50-65, 0.330, 3.580, 1.750, 0.316, 0.063, 1.137, 0, 0, 448, 576, 0, 0
Use 'monitor custom' to get this settings actually used, in mame.ini
This will force to calculate this resolution using fractional stretching, in either one of the other ranges. Then yes, it will "show from top to bottom".
EDIT: I just notice that the crt_range2 has a bad line definition, edit it as posted here.