You claim to have actually completed a race in Cruis'n USA. How can you when the frame rate is so bad?

Short Answer: It isn't as bad as you think. Turn off autoframeskipping. Set your frameskip value to 0.

Long Answer: Many of the drivers I have worked on use bitmaps and blitters to draw their graphics, much like modern computer hardware. With these games, they talk to a blitter chip, and give it commands to draw certain graphics into memory. This memory is also accessible to the main CPU directly, so it is free to manually hand-draw pixels just by writing to graphics memory. Furthermore, the CPU can also read graphics memory, thus allowing it to, for example, read back the data that was written there by the graphics chip. Because of this tight relationship between the CPU and graphics memory, it is important that all drawing commands sent to the blitter actually get executed, regardless of whether they will be displayed on the screen this frame.

Thus, when it comes time to draw the bitmap to the screen, all MAME has to do is copy the contents of graphics memory to the screen. Compared to other arcade hardware that uses tilemaps and sprites, this is a relatively quick and easy process. The problem comes when your computer is not fast enough to run the emulation of the game, the blitter, and the graphics. When this happens, MAME kicks in with "autoframeskipping", where it will gradually increase the frameskip count in order to hopefully save enough time to get the game running 100%. In order to save time, MAME skips the video rendering portion of the emulation periodically.

Now, for games which have fairly complex video rendering with tilemaps and sprites, this can save a lot of time, which is why autoframeskipping is generally a good thing. But in the case of games that use blitters and bitmaps, the only thing MAME can skip is the copying of the graphics memory to the screen. All the blitter commands still must be executed, and so increasing the frameskip value will make very little impact on the overall emulation speed. What's worse is that if your computer is too slow to run these games at frameskip 0, it is also likely too slow to run them at frameskip 11, and so the autoframeskip will shoot right to 11 and display only 1 out of every 12 frames. This is called a "slideshow".

The solution is to identify these kinds of games, and forget all about using autoframeskipping. In this case, you want to always run with a fixed frameskip of 0, because the amount of frameskipping doesn't matter much for performance, and a frameskip of 11 (which is what you'll get with the autoframeskipping) looks really, really bad.

Games that are affected by this pattern: All Williams games, the Cruis'n Series of games, the Incredible Technologies games, Police Trainer, and several others.