Post subject: My own video is desyncing
Joined: 11/2/2005
Posts: 3
Location: Saint Paul, Minnesota
I'm having desync problems with a movie of my own creation, on the machine I used to create it, with no settings changes. I don't know what's going on. I skimmed the sticky thread on desync problems and messed with my sound settings a bit, but it didn't help. The ROM I'm using is: Donkey Kong Country 2 - Diddy's Kong Quest (U) (V1.1) [!] CRC32: 4E2D90F4 Here is a link to my movie. I'm running Snes9X v1.43+ on Windows 2000. Steps to reproduce:
  1. Play the provided movie on the specified ROM.
  2. Fast-forward (or not) through the first 30800 frames or so; they aren't relevant.
  3. At around frame 30850 or so (needn't be exact), create a save state.
  4. At around frame 30885, the movie desyncs. In particular, observe that Dixie swims into the alcove on the ceiling and gets stuck momentarily.
  5. Now load the save state you just saved. This time, Dixie swims past the alcove as she's meant to; the movie stays synchronized.
In summary, the movie desyncs if you watch it straight through, but if you create a save state just before it desyncs and play the movie from that save state, it never desyncs. Any idea what could be causing this? It seems to me like a bug in Snes9x but, you know, blaming the emulator is the first refuge of the incompetent.
Editor, Active player (296)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
I second that it sounds like a bug in snes9x. (I didn't try viewing your movie though.)
Emulator Coder, Site Developer, Former player
Joined: 11/6/2004
Posts: 833
Using WIP timing? It seems that NOT using it does bad stuff.
Post subject: WIP timing
Joined: 11/2/2005
Posts: 3
Location: Saint Paul, Minnesota
DeHackEd wrote:
Using WIP timing?
Yep.
Post subject: Save-state timing
Joined: 11/2/2005
Posts: 3
Location: Saint Paul, Minnesota
This is really weird. I can alter the way in which it desyncs based upon the frame in which I record the save state. For example, if I record a save state in frame 29341 and play the movie from there, it desyncs as if I'd watched the movie straight through. If I record a save state one frame earlier or one frame later (that is, in frame 29340 or frame 29342) and play from there, it desyncs much earlier, in a completely different way. The difference in desync times is illusory, though. The desync is actually immediate; it just takes a while to be visible to the human observer. Take the following two images, both depicting frame 29342 of the movie. The image on the left was taken after loading from the save state recorded in frame 29340. The image on the right was taken after loading from the save state recorded in frame 29341. They should be identical. But if you flip back and forth between the images, you'll see a significant difference in the position of the sprites. It's as if the save states are recording Dixie's position incorrectly. (The control state in each frame is what it should be.)
Post subject: Re: Save-state timing
Emulator Coder, Skilled player (1301)
Joined: 12/21/2004
Posts: 2687
Have you tried turning off "Volume Envelope Height Reading" and/or turning on "Sync samples with sound CPU" and/or turning on "Fake Mute desync workaround"? (I'll try testing these specific examples you gave, anyway.)
Joined: 11/2/2005
Posts: 198
That's freaky
A life without cheese is a life without life.
Emulator Coder, Skilled player (1301)
Joined: 12/21/2004
Posts: 2687
Hmm, well the sound settings didn't make any difference. And I found an even more striking example: Try making a save state on frame 29239. Played normally through there, Dixie swims upward, but if you load the state, the "swim up" command is apparently lost and Dixie dives downward instead. Even if you pause, save, and immediately load the same thing you just saved, and unpause, that will cause desync. I tried comparing the memory states using the cheat finder, but it just said that the memory is exactly identical, until the next frame of each where many things are different in both. So it seems to me that loading a save state causes the input for that frame to get ignored for 1 frame when it shouldn't be, but only in certain cases, and I'm not sure what could be causing it... These aren't lag frames or anything like that. The game stays synchronized just fine as long as you don't save on the wrong frames.