there is a guide to VMM and ArcadeOSD -
http://geedorah.com/eiusdemmodi/forum/viewtopic.php?id=46VMM sets up modelines and installs them. ArcadeOSD adjusts them. And you can save the adjustments. But the switchres utility in GroovyMAME, which is where the magic happens, uses the timings in the mame.ini file. When playing with ArcadeOSD, remember that Esc will back out of any changes.
To make adjusted timings stick for GM you can either redo VMM with updated timings in the monitor.ini, or instead you can just 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.