-
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
Ridge Racer 2 adhoc not working due to channel mismatch, includes workaround #10698
Comments
Does this actually fix networking for Ridge Racer 2? I tested this and while I can host OK on the instance running the adhoc server, the client instance either says "communication error" or "no games found." It also sometimes gets stuck at "searching for a race open for entries." If I try to host a game with a client instance, it just says communication error. Tested on v1.6 with EUR RR2. |
does the game call this hle function ? https://github.com/hrydgard/ppsspp/blob/master/Core/HLE/sceUtility.cpp#L675 ? double check on host and client. if yes maybe we should emulate it properly by implementing the actual channel instead of force it to 1 , on SceUtilitySetParamInt And SceUtilityGetParamInt , its already has commented line on link to the ini file , try to uncomment that and make the options in networking settings. there is 4 adhoc channel in psp , actually 3 because automatic will choose 1 of the 3 channel from psp sdk depend on the game call like this issue.
it will mess the proadhocserver grouping info so the later call on SceNetAdhocctlScan can return invalid peer result and group info. we should also emulate that properly by implementing channel on group array inside of proadhocserver code. if the game later call SceUtilitySetParamInt on established connection with proadhocserver we should tell the proadhocserver also the user is belong to the channel provided by the game , move the user to the correct group and the correct channel so the call for SceNetAdhocctlScan return an valid peer for other user. that is an workaround the fastest one is always set the channel to the 1 on client and host. but not sure if all game accept it . need to trace it on actuall psp how most of game behave on channel switching |
Actually, the game doesn't try to change the channel (never use The only solution i can think of is, to make sure But i'm not sure if this is also happened on real PSP or not tho. |
test on automatic channel its return 0 either connected or not [x] Load Module all net module test test with adhoc channel 1 its return 1 [x] Load Module all net module test the test code
|
this will clear some confusion but scan return 11 [x] Load Module all net module test |
the conclusion we can force both to return channel 1 for a quick fix |
This should already been fixed by now, Ridge Racer 2 (and Warriors Orochi 2, who had similar issue) can use any channel (including auto) without issue. |
What happens?
Ridge Racer 2 adhoc doesn't work because of channel mismatch
After calling sceUtilityGetSystemParamInt, since default value in ppsspp.ini is 0, RR2 decides to set the channel to 11 and caches it in memory
Later, when executing sceNetAdhocctlGetScanInfo, after getting the group result, the game looks in the groups for ones which are on the same channel, which fails, since all the group channels are set to 1 here
ppsspp/Core/HLE/sceNetAdhoc.cpp
Line 966 in 97ab91c
Change both ppsspp config files ppsspp.ini to set WlanAdhocChannel = 1 fixes this, but I'm wondering if there could be a way to detect and patch this, Or, maybe set WlanAdhocChannel = 1 by default instead of 0, especially since so much of the networking code tries to force things into channel 1.
What should happen?
Should connect and work correctly.
What hardware and operating system are you running PPSSPP on? GPU might matter if it's a graphical issue.
Windows
The text was updated successfully, but these errors were encountered: