-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Additional information about the recently merged infra changes #19812
Comments
For testers: the Custom DNS in question is 145.239.30.230, you must also ensure that your psp nickname does not contain "ppsspp" (case-insensitive) The domains the two games contact are "wipeoutpulse.muis.online.scee.com" and "motorstormpsp.muis.online.scee.com" |
Just wanted to note that some games (like Twisted Metal Head-On) could not work with a simple DNS change , you would need to add the domains to the OS hosts file as well (this includes the fork). |
Some games (usually games that do their own DNS resolving through a UDP socket port 53 instead of using SceNetResolver library, most likely using a third-party DNS resolver library) are taking the DNS servers from SceUtility (also related to the SceNetApctl for it's info initialization i think, like the Also, as mentioned on my TODO list at anr2me#21 |
Looking at just merging anr2me#21 on top of what we currently have. It's a little bit painful because of some refactorings that had happened in one branch but not the other and vice versa but looks quite doable. While there's a lot of TODO:s indeed, seems preferable to have it in... |
You can just take the SceUtility.cpp/h from that branch, and the Config too. For the Primary & Secondary DNS Server UI, we can use a simple text box (instead of the complicated IP dialog like what Adhoc Server IP address have), but will probably need to test to convert the string to IPv4 using |
There seems to be a bunch more changes in sceNet as well. But yeah, after attempting a big rebase, I now think it's better to just move things over piece by piece heh. Will start with sceUtility soon. |
Most of them are probably SceNetInet* syscall implementation, we can add them slowly when someone bumped into Unimplemented syscall error :D Meanwhile, this issue is related to DNS, thus SceUtility and related functions that use it should be sufficient. |
OK, turns out that I merged the wrong PR. #19807 is actually missing quite a lot of functionality that is in ANR2ME's sceNetInet code, such as proper support for non blocking sockets, a bunch of sockopt modes and more. I keep running into problems trying to get Pulse to run, so I think I'm gonna have to simply transplant sceNetInet wholesale from anr2me#21 . Oh well. |
Hmm.. i thought #18578 already have blocking socket simulation (which my branch is lack of), since we use non-blocking for everything to avoid blocking the emulation thread, and have a proper PSP's socket id translation (yet another important thing that was missing on my branch), based on this comment #18578 (comment) PS: my branch contains a major issue, which is using the native socket fd on the PSP side, where the value can exceeding the 255 limit used by PSP's socket fd, thus pose a risk of crash due to out of bound and corrupting some memory during FD_SET, or pointing to the wrong native socket when masked with 0xFF by the game or during FD_ISSET. |
Hm. Well after getting past the missing options, it then returned a WSAWOULDBLOCK right out to the game, from sceNetInetConnect, without handling it, which causes Pulse to fail. But maybe I'll try a bit more... or change temporarily to blocking for connect() like you do. |
Ah right, i did that temporary in blocking-mode thing during
Probably being commented because i didn't store blocking-mode info of the socket anywhere (i didn't store UDP/TCP info too, thus can't tell whether the socket is UDP/TCP), thus couldn't tell whether the socket was originally in blocking or non-blocking mode (since they returned a different error code). But #18578 should have the blocking-mode info stored, according to the comment #18578 (comment), so we can make use of that info to return the correct error code (ETIMEDOUT vs EAGAIN) |
I patched up that (it forces blocking during connect only), and it gets a bit further, but it still errors out in the end - although I don't really see any obvious error in the log: Click me for full log13:47:435 Main thread I[PRINTF]: HLE\sceIo.cpp:1202 stdout: headerVersion[svoclient-nightly-3.2.200708310300] |
Hmm.. it's strange that it's trying to connect to a LAN IP 192.168.1.1 instead of public IP. |
hm, yeah, that looks weird.. |
Btw, i think we need to logs the output of |
I'm going ahead and starting with your branch @anr2me , and porting over the fixes from the other branch on top. |
Those sceNetInet* stuff, should probably be moved to sceNetInet.cpp/h file since it made the general sceNet.cpp/h file grew bigger. |
already done |
By the way @anr2me , what's the point of:
I don't really understand that. What broadcast does it enable by starting that thread? If this is an ugly hack, how can I clean it up? |
I think it's for LAN play on multiple instances (as it's easier to test things on a PC), since broadcast/multicast doesn't works on loopback adapter. It's only used to know player's IP list by borrowing adhoc server's grouping to get the player list, so we can send using unicast to each of them to simulate broadcast/multicast (similar to the pro-online adhoc broadcast). As i remembered games that use broadcast/multicast for infrastructure LAN play was Driver 76, that game also feels strange to initialize both adhocctl and apctl while it doesn't use any adhoc syscalls during infrastructure LAN play, may be the game dev forgot to remove the adhocctl code. |
What should happen
I was told to post this here.
In order to get #19807 to connect to my private servers for WipEout Pulse and Motorstorm Arctic Edge I had to manually change line 858 in /Core/HLE/sceNet.cpp to my custom DNS, the default behavior seems to be to pull DNS information from the host system. Editing HostAliases in ppsspp.ini, OR manually adding the addresses to /Core/HLE/sceNetResolver.cpp did not seem to work. Upon finally contacting the correct DNS server both WipEout Pulse and Motorstorm Arctic Edge would instantly give up on connecting.
I've heard that this build does work correctly on some Socom games but I haven't verified this myself.
There is a fork of ppsspp that has considerably more infra related features implemented that does work with both pulse and msae and allegedly more (though I have not tested other games) https://github.com/anr2me/ppsspp/tree/infra2
The two main issues with that fork are connection issues on Windows and having to manually edit the DNS server in ppsspp.ini instead of in the UI.
Who would this benefit
People who to play on revival servers without fiddling with custom ppsspp builds.
Platform (if relevant)
None
Games this would be useful in
UCES00465 - WipEout Pulse, UCES01250 - Motorstorm Arctic Edge
Other emulators or software with a similar feature
No response
Checklist
The text was updated successfully, but these errors were encountered: