Just curious: I was under the impression that savereplays, when played back, should always lead to the same result, especially if played with the "-viewonly" switch, which prevents accidental interference of user input and "taking over" of the playback from that point on.
Now I see a strange result that when jumping to a specific position in time *after* a specific event that I want to diagnose, the event did happen (because a specific score has been reached). Now if I jump backwards in time (or forward to a point before the event), and let the playback continue, it does not happen: The playback continues to the end, but the scoring in the game lead to different results, and in fact, even the input (which is observable with a cursor on the screen) no longer seems to match to what is displayed.
When forwarding (via the timeline), the playback remains in the wrong state (score, progress in the game), but when jumping back, it suddenly recovers to the correct state. However, immediately from there things seem to be played back wrong again.
The replays have been saved with "reverse savereplay filename" and loaded with "reverse loadreplay -viewonly filename", and it happens almost reliably with my test application on different PCs, and is independent of whether the recording was done on the same or on another PC, and not only in the latest release (0.18), but even in the previous openMSX version, 0.17.
The test scenario is a MSX-1 game (ROM), and other than playing back PSG music, there are no exotic things or hardware used in the emulation, just a plain MSX 1 with no extensions other than the debugdevice. The effect is also reproducible with that game on different MSX types (e.g. MSX-2).
It's a megarom, ~ 300 KB, and other than the notification "The size of this ROM image is larger than 256kB, which is not supported on real Konami mapper chips!", there are no messages in the status info of openMSX.
However, it is not easy to create a reproducible isolated environment in terms of writing a simple program (simple in terms of lines-of-code) to demonstrate the effect - I just couldn't make it happen in a simple scenario.
I know that this is impossible to diagnose without a working example, but before going to that length, my question is if this an already known issue under certain circumstances or even an expected behavior.