Emulator Issues #11751
closedDTM replay recording to wrong controller port on netplay with reduced polling+GC adapter
0%
Description
Game Name?
Mario Party 4 and Mario Kart Double Dash
Game ID? (right click the game in the game list, Properties, Info tab)
GMPE01 and GM4E01
What's the problem? Describe what went wrong.
When recording a replay on netplay, the inputs are recorded so that when I play it back, what I pressed on controller port 1 is played back on controller port 2.
What steps will reproduce the problem?
Start up Double Dash on netplay with input authority unchecked and reduce polling rate checked and make sure player 1 is set to Gamecube controller adapter while player 2 is set to a local standard controller. Record inputs, of course, is also checked. Press start to get to the title screen in Double Dash and then close the game and save the replay. When the replay is played back, it should be possible to see the start button being pressed on player 2 instead of player 1 like it should be, which can be seen if "show input display" is turned on. Mario Party 4 has the same problem, but I don't think this shows up in every game. I don't see this problem if reduced polling is unchecked.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Present in 5.0-10413
Is the issue present in the latest stable version?
Not in 5.0
If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
5.0-8972 seems to be the first broken version while 5.0-8970 works. Note that to make a replay on these versions, you need to save a state because Dolphin will close without asking to save the replay. Make sure Dolphin fully closes in task manager before recording or playing back a replay.
Although I don't know yet which version it started, it seems that even with the latest Dolphin version, replays made using a GC adapter, even offline, will desync. At least I wasn't able to play back a replay of a single lap on Double Dash with all controllers turned off except the first one, which was a GC adapter. Because of that, I don't think fixing the problem in this bug report will really deal with a much bigger issue related to dtm replays using the GC adapter.
Files
Updated by Techjar over 5 years ago
The bisect doesn't make any sense, that commit doesn't touch DTM code at all, it's just saving of options in the UI.
Updated by SuperDavid over 5 years ago
Techjar wrote:
The bisect doesn't make any sense, that commit doesn't touch DTM code at all, it's just saving of options in the UI.
Whether or not it makes sense, I see this problem on 5.0-80972 but I don't see it on 5.0-8970. If you get a different result, please let me know.
Updated by SuperDavid over 5 years ago
Can I not edit my last post? I meant 5.0-8972, not 80972.
Updated by Techjar over 5 years ago
What I'm implying is that it looks like a bad bisect. Do you use the bisect tool, or git bisect?
Updated by SuperDavid over 5 years ago
I did it manually in this case. If I'm not mistaken, the bisect tool has a problem with me needing to close the emulator and open the same version again, which is necessary to run replays on these versions. I never tried git bisect. After your first comment, I did run another quick test with 5.0-8970 and 5.0-8972, but I still got the same result as before. All I can go by right now is my own tests until someone else tries it.
Updated by SuperDavid over 5 years ago
I found there was something wrong with my testing after all. I will update this if I can figure out what went wrong.
Updated by SuperDavid over 5 years ago
It seems this was the result of something wrong with my configuration, that for some reason was only causing a problem starting at the version of Dolphin listed. This can be closed and I might make a new bug report depending on what caused this.
Updated by SuperDavid over 5 years ago
When the buffer is set to 12, the replay is created with the inputs playing from the wrong port. If the buffer is set to 5, it's normal. Going to test this further.
Updated by Techjar over 5 years ago
Are you adjusting the buffer while the game is running? This is known to break input recordings, but we don't fully understand why.
Updated by SuperDavid over 5 years ago
In my tests just now, the buffer was set before the game started and wasn't changed during gameplay. I have heard of input recordings breaking if you change the buffer while it's running, but that has never happened to me even though I usually do it when playing games online and recording.
Updated by SuperDavid over 5 years ago
Getting different results depending on the buffer number and version of Dolphin version. I was able to make the wrong controller problem happen on 5.0-8790 with the right buffer number, so I'm going to see how much farther back I can go to find where the problem really starts.
Updated by SuperDavid over 5 years ago
Seems this goes right back to 5.0-8324 when reduce polling rate was added, which is connected to the problem, since it needs to be checked for this to happen. I set the buffer to 12 before starting the game on that version. When it was set to 5, there was no problem with the controller order being wrong in the replay.
Again, to test, it's GC adapter as controller 1 in netplay while local controller 2 is standard. Buffer set to 12 and reduce polling rate is checked, and the game is Double Dash.
Updated by Techjar over 5 years ago
Can you upload one of the "broken" DTM files?
Updated by SuperDavid over 5 years ago
https://www.mediafire.com/file/3y7yywawy1l58j9/Double_Dash_broken_replay.dtm/file
Created with Dolphion 5.0-8324. To play this as I made it, you need to make sure that the first controller port is set to GC adapter while controller port 2 is standard controller. I originally got past the title screen and was sitting at the main menu, but this won't show up if played normally. If you were to start the replay with standard controller set as port 1, and then quickly switch it to GC adapter, it would switch to the correct order and player 1 will get past the title screen. However, this is not the "right" way of playing it.
Updated by Techjar over 5 years ago
Please upload the file to the issue tracker, as your mediafire link does not work here for whatever reason.
Updated by Techjar over 5 years ago
Also please use the latest version to make the DTM, forgot to mention that. It's more tedious to debug if I have to pull up old code.
Updated by SuperDavid over 5 years ago
- File ddash broken replay.dtm ddash broken replay.dtm added
Used the latest version. What I said about switching from standard to GC adapter during the replay doesn't seem to apply in this specific replay, but I have seen the player order change from switching from GC adapter to controller during a replay even on the latest one. If it's necessary, I can upload another replay where that actually happens.
This replay will just show player 2 trying to press start to get to the title, even though it was player 1 when I actually played it.
Updated by Techjar over 5 years ago
bReducePollingRate
is set correctly in the header, so it's not an issue with saving the setting in the header.
Updated by SuperDavid over 5 years ago
Starting at version 5.0-10479, I haven't had a problem with a dtm playing back with the wrong controller order. It's still worth noting that if I record on 5.0-10479 with reduced polling, GC adapter and fair input delay starting at buffer 12, it plays back with the right controller order on 5.0-10479 but the wrong order on 5.0-10477. If I start the recording with pad buffer 5, the controller order is right on both versions, so there is still something different about the dtm file when recording with pad buffer 12, but it appears to play back correctly no matter what on the latest Dolphin. I still haven't had a chance to do a serious 4p game to be absolutely certain everything works.
Updated by Techjar over 5 years ago
Eh, who knows what sort of weird nonsense can happen when a DTM desyncs. Sounds like the cause is the same as the other GC adapter bug, and it's fixed now, so I'm happy with that.
Updated by SuperDavid over 5 years ago
- File buffer 5.dtm buffer 5.dtm added
- File buffer 12.dtm buffer 12.dtm added
It might not matter since it appears that replays work now, but I have an idea what the problem was. There is an extra line in the dtm file when I start a recording with 12 buffer which makes it play on the wrong controller (on 5.0-10477) but if I get rid of that line, it is on the correct controller. As I said, it might not matter since the replays appear to work, but it still bothers me since it doesn't seem like that should happen by starting the recording with a different buffer. I included two files which were made with a GC controller as P1 and a standard controller on P2 with different buffer numbers on Double Dash. It's pretty easy to see how the lines are offset on the buffer 12 file.
Unless there actually is something wrong here, this issue can be closed.
Updated by Billiard26 about 5 years ago
- Status changed from New to Fixed
The "Reduce polling rate" feature was removed.