The guide to ArcadeOSD is at post #5 on this link -
https://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=46To summarise, changing the timing around the horizontal sync pulse and porches for a mode will move the image on the screen left and right and resize it. Play around and see, knowing that you can hit Esc to go back at any time. You then save any changes you want, for other emulators. While still in ArcadeOSD, go back into the modeline and look at the timings you've set and write them down.
To make these timings stick for (Groovy)MAME you can either redo VMM with updated timings in the monitor.ini, or edit the mame.ini file with the updated
horizontal timings (starting with the crt_range0 line, which for the generic_15 monitor preset defaults to crt_range0 15625-15750, 49.50-65.00,
2.000, 4.700, 8.000, 0.064, 0.192, 1.024, 0, 0, 192, 288, 448, 576 - remember that your monitor may want a different preset, and that any specific vertical.ini, machine.ini like neogeo.ini, or game.ini files will override).
Calamity insists redoing VMM works best, but i find that with the spread of modes i'm using (230p at 60Hz all the way up to 600i at 50Hz) on different monitors, i still want to set the mame.ini timings afterward. There's a bit about vertical sizing/timings by Calamity here -
http://forum.arcadecontrols.com/index.php/topic,159464.msg1677118.html#msg1677118