I presume when you referred to sweetspot in an earlier post you mean, try find a VBP value where the majority of games sit nicely rather than one value where every game will be perfectly centered?
Well, once you find the right values, ALL games must be perfectly centered on the vertical. The problem is, you also need to adjust VFP probably.
I'll try to explain how it works.
You need to find the absolute minimum values for both VFP and VBP. You don't have to be scared about setting them too low: GroovyMAME will pad each porch with extra lines when required in order to keep the right frequencies so it doesn't break your monitor. GM will add the same amount of lines to each porch, so both borders grow by the same proportion and this is what guarantees vertical centering.
The problem is when the predefined minimum value for VFP or VBP is too high. When this happens, one of the borders will always be bigger than the other. Even if GM tries to add the same padding to each border, the starting point of one of them is already too big, and GM can't know this. This is something you need to determine by testing your monitor.
Instead of using random values, always use multiples of a line time. In order to calculate a line time, divide 1 / Hfreq:
1 / 31.500 = 0.032 ms
For VFP is usually usually just fine to set 1 single line:
VFP = 1 x 0.032 = 0.032 ms
In the case of the arcade_31 preset, VSP (Vertical Sync Pulse) uses 2 lines:
VSP = 2 x 0.032 = 0.064 ms
Now the tricky value is VBP. What this value measures is time your monitor's beam takes to travel from the bottom of the screen back to the top of it. This time depends on the monitor's electronics, age, etc. For a 15 kHz device this value is usually the equivalent to 16-18 lines. For a 31 kHz device (or a multisync 15/25/31 kHz) this value is much lower. Let's say that, in your case, it was around 13 lines (you need to check this):
VBP = 13 x 0.032 = 0.416 ms
So, your crt_range would be:
31400.00-31500.00,49.50-65.00,0.940,3.770,1.890,
0.032,0.064,0.416,0,0,384,480,768,960
You'll know your VBP is too low when you start seeing artifacts on the top of the screen: compression of lines, retrace lines, etc. If you set a VBP value that's too high, extra lines will end up adding to the top border of the screen, pushing the picture down.
------------
Finally, regarding mk and 512p, edit your crt_range (VMMaker) this way:
31400.00-31500.00,49.50-65.00,0.940,3.770,1.890,0.032,0.064,0.416,0,0,384,
512,768,960