I've been speedrunning a few games on MSX, most notably Dragon Slayer IV.
Something I noticed when I was reviewing at my most recent run of the MSX1 version is that the transitions between screens seemed to be taking a bit longer than the Japanese record for that version. When I counted the black frames in a particular transition in both runs, they were measurably different; my run had a transition lasting around 64 frames; the record had 48 frames in the same transition. I'm running on a physical FS-A1WX. and I have no idea what the Japanese runner is using.
There are a lot of screen transitions in DS4, so a difference in the load time through these transitions will definitely have a significant impact on the time of a run. As far as I can tell from some fiddling with ffmpeg and some fudgey math, about 10 minutes out of my ~50 minute run was black frames during these loads. If I'd been running on a machine like the record's that did the loads in about 2/3 the time, the overall time would have been about 2 minutes faster, as far as I can tell.
I cross-checked against a few random machines in openMSX, and, as far as I can tell:
- openMSX's FS-A1WX implementation seems to match my real FS-A1WX, at around 64 frames.
- Two other MSX2+ machines (the Sony HB-F1XDJ and the Sanyo PHC-35J) pretty much matched that, although the Sony was a tiny bit faster.
- The Panasonic FS-A1, as a MSX2 test case, took about 48 frames, which matches the record run.
- Several random MSX1 machines (Sanyo MPC-100, Yamaha YIS-503F, Yashica YC-64) all had roughly consistent time at ~36 frames.
- Another MSX1 machine, the Casio MX-10, took a little longer at ~44 frames.
- Using openMSX's included C-BIOS settings, the MSX1 JP C-BIOS was pretty consistent with the real MSX1 machines at 37 frames, but the MSX2+ JP C-BIOS was significantly faster at 40 frames.
So, assuming that openMSX's results are accurate, I'm just trying to figure out what conclusions to draw from this. It looks like an MSX1 game like this would probably run significantly better on native MSX1 hardware, which probably stands to reason. But some MSX1 machines like the Casio MX-10 might still be outliers? We could certainly pick an MSX1 configuration known to have good performance and recommend that setting for emulator users, but it's annoying having to tell physical MSX owners who don't own the right machine that their runs will be at a disadvantage. And are there other timing differences that are harder to measure? I know some rooms with lots of sprites feel distinctly laggy when I play, and I'm not sure if I see the same amount of lag in other recorded runs, but that might just be the difference between playing and watching. And is every MSX game that people speedrun going to need the same amount of analysis to determine the optimal machine eventually?
(Not that any of this matters practically in the near term; I don't think there are going to be enough people running the MSX1 version of DS4 for hardware variation to affect the ranking of runs any time soon.)
I'm mainly just info-dumping right now, I guess, and wondering if anyone who knows more about MSX hardware can explain what it is about each of these configurations that makes screen transitions perform differently, and how other MSX games might be affected for speedrunning purposes, and what advice I might give to future MSX speedrunners who want to play on real hardware.
For what it's worth, the only speedrunning community for an MSX game I've found that's at all active and that has made official rules about valid hardware is the one for the MSX version of Metal Gear. They seem to have chosen the FS-A1WSX as their standard platform, but I don't know what reasoning led them to that choice.