I can offer a theory on this end of round desync problem.
You know how Super Tubro has variable attack damage? By that I mean the same move does not always do the same damage, it will vary seemingly randomly within what appears to be a given boundary (maybe +/-5% of the base damage). A good example is to load a save state in arcade ST and look at the amount of pixels that dissapear when you do a close stand fierce or something - it varies a little.
Now hereās what I think it has to do with end of round desyncs. We all know about rollback and roughly how the online system works. I understand the game tries to predict what happens and if it predicts wrong, it puts itself right with the next set of move/coordinate data it gets and this to us appears as rollback.
That rollback is because you have two versions of the game running on consoles miles apart. The lag, or rollback is primarily caused by the distance between the players, not so much the bandwidth as a game like ST requires very little bandwidth to run.
Now letās say we have P1 using Ryu and P2 using Ken. Ryu has plenty of health but Ken has a tad more than a fierce punch worth of health left. For reasons unknown to us, Ryu decides to end the round with a close fierce punch. On his console, the game generated the fierce punch + a bit of additional random damage, and that was just enough to kill Ken, so P1ās console thinks that the game has ended. Meanwhile due to the time it takes for data to move from one location to another (a ping of 16 means it takes 1 frame for your button input to reach the opponent), P2ās console tries to predict the attack. It predicted correctly, but it predicted the amount of random damage the move would do incorrectly meaning on P2ās screen, the close fierce didnāt do enough damage to kill him (would have left him alive with no 0 vital).
I believe this is where the desync occurs. One console thinks the round has ended and attempts to go through the motion of closing the game and going back to the lobby, but the other console which generated a random amount of damage less than the first console, still thinks the game is in play. This state of one console going back to the lobby and one being in game probably looks like an end of round ragequit to the software.
Remember that although rollback corrects (or is supposed to) mistakes in the prediction, if the ping is high, it takes longer for the correct information to reach the other console. Two players that have a ping of 160 are 10 frames apart. If we go back to the fierce punch situation, itās easy to see how the consoles could get it wrong and desync if it takes 10 frames for the correct input to reach P2ās console. P1ās console has probably long decided that the game is over and closed the connection or something, before P2 gets the data and can say, āOk, I lostā and close his connection.
Thatās how I believe it works. I didnāt develop the game so donāt take what I say as the truth, but I think Iām probably on the right lines.