Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UDS: implement deprecated functions #4690

Merged
merged 9 commits into from Mar 21, 2019
Merged

Conversation

wwylele
Copy link
Member

@wwylele wwylele commented Mar 13, 2019

TODO:

  • Initialize
  • CreateNetwork
  • ConnectNetwork
  • DecryptBeaconData

This is reverse-engineered by comparing the two versions of functions (deprecated vs. current). So far it turned out that NWM module parses IPC different params and then forward them to the same base functions.


This change is Reviewable

@wwylele wwylele force-pushed the uds-deprecated branch 2 times, most recently from b446861 to 9c8213c Compare Mar 13, 2019
They are really identical in the NWM module code
@wwylele wwylele changed the title [WIP] UDS: implement deprecated functions UDS: implement deprecated functions Mar 13, 2019
@wwylele wwylele marked this pull request as ready for review Mar 13, 2019
@CakeLancelot
Copy link

CakeLancelot commented Mar 13, 2019

This partially fixes Slime Mori Mori 3's multiplayer. I can now create a room without erroring out, however when trying to join on a different copy of citra (different directory, user folder, console id) the listed game is constantly blinking in and out - GIF below:
2019-03-13_00-31-16
If you try to join this game by rapidly pressing A it will appear to work but quickly desync and break entirely. This error is output when doing so (not sure if relevant):

[3575.102244] Service.NWM <Error> core\hle\service\nwm\nwm_uds.cpp:Service::NWM::NWM_UDS::HandleAuthenticationFrame:411: Connection sequence aborted, because connection status is 3

I was told on the Citra Discord that this could be an underlying issue with the UDS implementation, so it might be worth looking at other affected games to see if they are fixed as well. Sadly, this is the only game I have on-hand that I can test. If anyone has any of the below titles it may be worthwhile to test multiplayer in them now and see if they are fixed:

@B3n30
Copy link
Contributor

B3n30 commented Mar 13, 2019

The part that introduced the "flickering" was https://github.com/citra-emu/citra/blob/master/src/core/hle/service/nwm/nwm_uds.cpp#L133-L141 . This part was necessary since otherwise a client would show all received beacons as a different host. Most games handled this fine after we added that part but in some games it introduced a flickering. We never fully checked on hardware how the beacons are erased from the buffer, though. We tried to look at the disassembly but didn't came to a conclusion. So a small homebrew might give a better understanding of that part.

@Pik-a-boo
Copy link

Pik-a-boo commented Mar 21, 2019

This partially fixes Slime Mori Mori 3's multiplayer. I can now create a room without erroring out, however when trying to join on a different copy of citra (different directory, user folder, console id) the listed game is constantly blinking in and out - GIF below:
2019-03-13_00-31-16
If you try to join this game by rapidly pressing A it will appear to work but quickly desync and break entirely. This error is output when doing so (not sure if relevant):

[3575.102244] Service.NWM <Error> core\hle\service\nwm\nwm_uds.cpp:Service::NWM::NWM_UDS::HandleAuthenticationFrame:411: Connection sequence aborted, because connection status is 3

I was told on the Citra Discord that this could be an underlying issue with the UDS implementation, so it might be worth looking at other affected games to see if they are fixed as well. Sadly, this is the only game I have on-hand that I can test. If anyone has any of the below titles it may be worthwhile to test multiplayer in them now and see if they are fixed:

Sonic Generations is working good:
image
Dead or Alive Dimensions :
image
Not working according to my testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants