Emulator Issues #9789

Netplay input records desync when pad buffer changes

Added by ficion over 4 years ago. Updated over 4 years ago.

% Done:


Operating system:
Issue type:
Relates to usability:
Relates to performance:
Relates to maintainability:
Regression start:
Fixed in:


Game tested

Tested with SUPER SMASH BROS. Melee (GALE01) [md5:0e63d4223b01d9aba596259dc155a174] and also a modified version of that game Melee Netplay Community Build (MNCE02) [md5:bcd6d912d6ff2fb03dcc277ade4457cc].

The problem

Replays (Dolphin TAS Movies) saved during Dolphin Netplay desync* if the pad buffer is changed at any moment during the recording.

This applies (AFAIK) to both replays made from the game start, checking Record inputs on the Dolphin Netplay window; and replays made after starting the game, using the option on the top menu Movie > Start Recording Input, if there was a pad buffer change after it. Basically, if there is any pad change during the input record, the replay will desync.
This affects the entire replay, even the parts before the pad buffer change, for some strange reason.

If the two players record the match, both replays will be desync'd, but they will be identical if they began at the same time (as far as my testing went). It is possible for two players to have a different replay if the recording begins at different times, specifically, the replay that began after the bad buffer change will not desync (see my file upload bellow). Replays made by a spectator (a player with no controller assigned) also desync accordingly.
I have tested it many times and replays do not desync if no buffer change is made, even if they began recording after the game start or there were buffer changes before recording.

*when I say "desync", I mean that replays do not match what happened on the game, specifically, random stages choices do not match. Desync'd replays will always play the same way, though

Steps to reproduce

The easiest way to test it is to start a Netplay session with GALE01 and check Record inputs on the Netplay window. Try going to Training mode and choose a RANDOM stage, exit Training mode, change pad buffer, choose a RANDOM stage again, and leave Netplay. The final replay's choices should now be different.
Happens both in local Netplay and remote Netplay sessions, using Direct and Traversal Server connections and being a player or an spectator.

Dolphin versions tested

I have only tested this on 5.0-321 and 5.0-613. Most of the testing I made was offline on my own computer (two instances of Dolphin), but I have also tried online a couple of times and it does happen.

PC specs

Windows 10 Home Single Language 64-bit (10.0, Build 10586)
Intel Core i5-5200U @ 2.20GHz (4 CPUs)
8192MB RAM
NVIDIA GeForce 920M
DirectX 12


I started a match with a player and a spectator and I tried to choose a RANDOM stage three times.
The player records the match from the beginning (melee.dtm), then I change the pad buffer before the second stage choice. Before the third choice, the spectator begins to record the match from that point (melee_spectator.dtm and ~.dtm.sav).
The match recorded by the player desyncs entirely, even parts before the buffer change; the match recorded by the spectator stays correct, you can check it against the video file.

Unfortunately, the files are too big (~32MB) for me to upload it here (the .dtm.sav and .mp4 files take most of the space). As such, I have uploaded it to MEGA:!fAJgkTzb!Gfg_zoj2fDJlR7su-x0ai_HOaQlXpRIMuQD25Na5qAo


#1 Updated by ficion over 4 years ago

OpenGL backend was used to record the video but most of the testing was on DirectX 12.

#2 Updated by JMC4789 over 4 years ago

  • Status changed from New to Accepted

Thank you so much for figuring out the cause of this issue. I really owe you one! I've been searching for this for over a year.

#3 Updated by ficion over 4 years ago

No problem, I hope it's easy to fix and thank you for accepting it.

I should also note that this issue seems related to #8655 ( I was supposed to mention originally mention it but I forgot, oops!

Also available in: Atom PDF