I managed to correct the issue by turning “synchronize refresh” off.
GM requires syncrefresh on in order to do most of its thing.
Indeed it's more than that... GM is built around the syncrefresh feature. GM was created because baseline's syncrefresh was broken.
It doesn't make sense to turn it off. Instead, use the autosync option that will turn it off only in the special cases where it needs to.
Is there any reason why these older games don’t play well with sync refresh turned on?
The reason you can't have those running at 100% speed is because the target refresh GM can achieve is somewhat lower than the native one. This is because you're trying to run vertical games on a horizontal monitor. Horizontal resolution becomes vertical, and we soon hit the limit of the horizontal frequency your monitor can achieve. GM lowers the refresh in order to fit that unnatural number of lines within your monitor specs. As a consequence, the speed of the game is lowered too, because we're running in sync with the refresh.
You can control how much difference in refresh you're willing to tolerate, by means of the -syncrefresh_tolerance option. By default it's 2.0 Hz. Beyond that value, GM will turn syncrefresh off and enable triplebuffer instead. Triplebuffer brings speed back to 100% while avoiding tearing, but at the cost of loosing 1:1 frame accuracy. Frame delay does not work once triplebuffer is enabled.