With the years-long CBP Alpha 10 done I finally had some spare time/energy and so sat down to revisit MechCommander 1, something I haven’t played since I was a kid (and very, very bad at it). After first playing through much of the original campaign in my revisit, I noticed that even though all of the light mechs (except for the expansion-only Stiletto) claim to share the same 27 m/s movement speed, Ullers and Commandos always outrun Firestarters, Cougars, and Ravens – even if controlling for possible acceleration differences. I wanted answers, and every source I’ve been able to find parrots the same 27 m/s figure with no note about “btw the in-game value is wrong” or anything, so I tried (and spoiler: failed) to figure it out myself.

Although this is my first time with MC1/MCG modding, at this point the modding tools for it seem to be pretty good for a game this old, and one modder has made it their mission to collate most of what everyone else has been doing in one place alongside their own MCG modding work (thanks RizZen and other modders!). Using these tools to look through extracted game data files, there’s an entry for the Commando(s) in OBJECT2.PAK, and it lists values for maxAccel (3.0) and maxVelocity (40.0). Unfortunately these don’t seem to be what we’re after, because every mech in this set of files shares these same maxAccel and maxVelocity values.

Snooping around a little more, in MISSION.FST there’s some more (extracted) files that have a bunch of stats for individual mech variants. These files don’t seem to answer our question either, as the MaxRunSpeed here is the same as the value shown in-game (27) for both the actually-faster-than-27 mechs (Commandos/Ullers) and the actually-27 mechs (Firestarters/Ravens/Cougars). Unfortunately the available modding documentation doesn’t seem to have a clear answer as to what other file(s) the observed speed value might be coming from. There also aren’t that many files in the game pre-extraction, so there aren’t that many places it could be coming from in the data files.

I briefly poked around the game exe in a hex editor — because hey, you never know what you’ll find until you look — and noticed what looked like some debugging symbols, so I took a look at it in Ghidra and oho, this looks like it would be a very viable full decompilation / reverse engineering project for somebody to pick up (please not me), because yes indeed those are (limited) embedded debugging symbols of some kind. We’re missing some valuable stuff like data structure layouts,1 but we do seem to have namespaces and function names, which is already a lot better than nothing.
Searching said function names and looking through the hits for “speed” and “velocity” doesn’t yield an immediately obvious answer – I don’t see clear evidence that those functions have e.g., a hardcoded override for these two mechs.
I checked out some of the init / similar functions for mechs and similarly didn’t see an obvious answer, though that would be another avenue for tracing-in-a-debugger-to-help-understand-things.

It should be possible to run all of these functions through a debugger and read values in memory and see if the speed values which they handle are what we’re looking for buuuut having reached this point, knowing that this step wasn’t going to definitely give me a definitive answer, and being very exhausted from sleeping Very Badly™, I decided to leave it for somebody else2 to figure out instead.
There is one other low-hanging fruit that I haven’t checked. Although I think it’s unlikely, it’s possible that this movement speed difference is coming from either Desperate Measures (the MC1 expansion that comes packed with MCG), or the specific re-pack that RizZen is distributing on ModDB. It wouldn’t be hard to check out both explanations, but I would also be pretty surprised if either of these were the cause of the problem.
Interestingly the official BattleTech stats for the mechs in question has them all at (more or less) the same speed too: ~97 km/h — except for the Cougar at 86 km/h — so this isn’t a nod to lore accuracy either.
So the mystery remains unsolved – if you’re reading this and have been able to figure out why the Commando and Uller move faster than they seem like they’re supposed to, please let me (and the rest of the world) know!