I've spent a great deal of time attempting to determine why some games appear to stutter even though the emulation is running with no dropped frames. It turns out that many of the games in MAME did not originally run at exactly 60Hz. They were often slightly different, some running at 58Hz, etc. This slight offset causes smooth scrolling motion to appear slightly jerky as the emulator compensates for the difference between the game's refresh and the monitor's refresh.
The ArcadeVGA board is great because it provides so many of the native resolutions necessary to run MAME games. But most of the good resolutions run at exactly 60Hz. And all of the non 240-line modes run at some unknown refresh rate.
So how do you get the games to run smoothly all the time? First, you only allow the games to use the 60Hz modes of the ArcadeVGA card. The other modes are useless if you are interested in guaranteed smooth scrolling.
Second, you use a build of MAME which "tweaks" all the game drivers to run at exactly 60Hz. You won't be able to tell that your game is running 1fps faster and it won't cause audio breakup problems like MAME's internal option to match the game's refresh to the monitor.
For Mame32 users, use TvMAME32:
http://www.trouble-makers.com/kami/emulation/main.htmlFor command line users, use SmoothMAME:
http://www.mameworld.net/smoothmame/To create the INI files using AVRes, use this custom ArcadeVGA.txt file:
H V Vertical Refresh
240 240 60Hz
256 240 60Hz
288 240 60Hz
296 240 60Hz
304 240 60Hz
321 240 60Hz
336 240 60Hz
368 240 60Hz
392 240 60Hz
448 240 60Hz
512 240 60Hz
640 240 60Hz
640 480 60Hz
640 480 Vert on Horiz Mon
Your vertical games will need hardware stretch (as well as some medium resolution horizontal games) but if you're anything like me a smooth gameplay experience is more important.
Finally, here are the default MAME video options I recommend to keep your scrolls liquid smooth with the above configuration:
### Windows video options ###
autoframeskip 1
frameskip 0
waitvsync 1
triplebuffer 1
window 0
ddraw 1
direct3d 0
hwstretch 0
cleanstretch 0
resolution auto
zoom 2
refresh 0
scanlines 0
switchres 1
switchbpp 1
maximize 1
keepaspect 1
matchrefresh 0
syncrefresh 0
throttle 1
full_screen_brightness 0.000000
frames_to_run 0
effect none
screen_aspect 4:3
sleep 1
rdtsc 0
high_priority 0
Hope this helps anyone who's been struggling to get smooth scrolling going on their arcade monitor with ArcadeVGA. I'm finally happy with my video configuration after weeks of tweaking, frustration, and research.
P.