TheOldDragon wrote:[ * On Linux x86-64, I've compiled latest git and all versions from 0.222 to 0.227 with similar results on all versions ]
[** For some reason, even when using the same ROM file, the cars in MAME are always Blue/Orange, not the standard Arcade / Supermodel colours...]
MAME's emulation is incomplete and hasn't been worked on in a long time. At some point it will catch up (Supermodel is open source after all; no secrets).
Useless technical trivia: The cars all use the McLaren F1 texture map because MAME does not yet emulate a nifty Real3D feature called "texture offset." The select screen displays the high detail car models, used only for the player's car in-game (AI versions of the same cars are lower detail versions). Only one of these models is ever used during the race (presumably because there wasn't enough texture memory and rendering all four high detail versions on-screen may have been prohibitively expensive), so each of the models assumes their texture map is at the same particular location in texture RAM. When the race begins, the correct texture for the selected vehicle is simply loaded at that spot. At the car select screen, rather than swapping out the texture each time you steer to a different car (texture uploads must have been slow on Step 1.x), the game preloads all four texture maps side by side. Without applying a texture offset, only the first texture, which happens to be the McLaren's, would be used. But the Real3D allows an offset to be specified in the scene graph, which the graphics chip then applies to the texture address specified by the model being drawn. This allows a model baked and stored with one texture address to use a different texture at run-time without requiring multiple copies of the model data to be stored. In short: Scud Race's car select screen has four models all looking for the texture at the same location, and a texture offset bundled with the draw command fixes that.
A more obvious use case is to allow different textures to be applied to the same underlying model -- like the classic "palette swap" trick but with texture maps. For example, Sega Rally 2 uses texture offset to place decals with your initials on your car. Each letter is just the same exact quad pointing at the same texture but with a texture offset applied to obtain the correct glyph in texture RAM.