hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.79k stars 2.12k forks source link

UNO - NPUH10027 freezes up (doesnt deal the cards) #9035

Open benderscruffy opened 7 years ago

benderscruffy commented 7 years ago

jpcsp trace.txt using version 1.3 after you select solo player the music still plays but the game freezes up this comment in jpcsp made it work r3366 sceNetInetSocket: draft implementation for socket type 10. From the JpcspTrace, it looks like a SOCK_STREAM, but the specifics are still unknown. Improved sceNetInetSelect: some of the parameters can be NULL.

here is a jpcsp trace

jpcsp trace.txt

unknownbrackets commented 7 years ago

Has this worked previously? Does it work if the wifi switch is off?

-[Unknown]

defcon8 commented 4 years ago

Problem still here.. no UNO, girlfriend not happy.

[libretro INFO] [SCEIO] stderr: [01-Jan-2020 17:53:46] connect failed to 58.1.2.128:8111! [libretro INFO] [SCEIO] stderr: [libretro ERROR] [SCENET] UNIMPL sceNetInetSend(-1, 09fbf604, 96, 00000000) [libretro ERROR] [HLE] Unimplemented HLE function sceNetInetSelect [libretro INFO] [SCEIO] stderr: [01-Jan-2020 17:53:46] CommonSocket::recv_msg() select error : 0 [libretro INFO] [SCEIO] stderr: [libretro ERROR] [HLE] Unimplemented HLE function sceNetInetInetAddr [libretro ERROR] [SCENET] UNIMPL sceNetInetConnect(-1, 09fbf590, 16) [libretro INFO] [SCEIO] stderr: [01-Jan-2020 17:53:46] CommonSocket::do_connect() can not init connection! code : 0 [libretro INFO] [SCEIO] stderr: [libretro ERROR] [SCENET] UNIMPL sceNetInetSocket(2, 10, 0) [libretro ERROR] [SCENET] UNIMPL sceNetInetSetsockopt(-1, 65535, 4, 09fbf550, 4) [libretro ERROR] [SCENET] UNIMPL sceNetInetSetsockopt(-1, 65535, 4098, 09fbf554, 4) [libretro ERROR] [SCENET] UNIMPL sceNetInetSetsockopt(-1, 65535, 4097, 09fbf554, 4) [libretro INFO] [SCEIO] stderr: [01-Jan-2020 17:53:46] connect failed to 58.1.2.128:8111! [libretro INFO] [SCEIO] stderr: [libretro ERROR] [SCENET] UNIMPL sceNetInetSend(-1, 09fbf604, 96, 00000000)

unknownbrackets commented 4 years ago

connect failed to 58.1.2.128:8111!

Does thsi still work on a PSP? Seems like the game server is down. Maybe we're not giving an error code properly...

-[Unknown]

defcon8 commented 4 years ago

Dont know, i'm trying to run UNO in single player mode on ppsspp (i also don't understand why it's giving sockets errors, don't even know if its related to the original problem), the game runs fine.. until you see the decks of the cards.. music still plays.. but controls are not responding and you're stuck.

Panderner commented 4 years ago

This Game is unplayable due to sceNetInet Functions are not implemented on PPSSPP

Panderner commented 4 years ago

Even the single player mode Didn't Work. it stucks at the starting the game

lexterror commented 4 years ago

Uno works in JPCSP. Why isn't it working in PPSSP?

hrydgard commented 3 years ago

Likely because for whatever reason the game tries to connect to a server even in single player mode, and we haven't implemented the internet functions it uses at all, so it gets error codes it doesn't expect and gets confused.

lexterror commented 3 years ago

Hrydgard I hope it's not too offtopic but for those that want to play the exact same uno game I would recommend downloading Dolphin Emulator for either PC or Android and downloading "uno.wad" file which is available from archive.org at no cost. I just found out a few minutes ago. It plays great and it's the exact same uno game. Thank you again for your effort Hrydgard!

Panderner commented 3 years ago

Hrydgard I hope it's not too offtopic but for those that want to play the exact same uno game I would recommend downloading Dolphin Emulator for either PC or Android and downloading "uno.wad" file which is available from archive.org at no cost. I just found out a few minutes ago. It plays great and it's the exact same uno game. Thank you again for your effort Hrydgard!

@lexterror it's off topic, this issue is for PPSSPP bug reports and feature requests

hrydgard commented 3 years ago

I think it's on topic because it's about the Uno game. Good advice for passersby finding this through Google.

anr2me commented 3 years ago

I managed to get UNO to work on single player, it seems this game is communicating with it self through 127.0.0.1 on single player (local Client-Server mode), WLAN/adhoc multiplayer also worked image

But there is something strange with this game... it's trying to set a very large socket RCVBUF size (more than 150 Megabytes per socket?!!!) for the server(listen) and client(connect) socket, which is absurd! image

While on accepted socket it only set 65536 bytes, which is quite normal (at least on PC). image

Edit: Based on jpcsp trace on the first post, it seems to be returning an error (-1) when the game attempting to set a very large socket buffer

10:42:35 MAIN_THREAD - sceNetInetSocket 0x2, 0xA, 0x0, 0x0, 0x0, 0x1, 0x14, 0x8918220 = 0x3
10:42:35 MAIN_THREAD - sceNetInetSetsockopt 0x3, 0xFFFF, 0x4, 0x9FBCCD0, 0x4, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0x0
10:42:36 MAIN_THREAD - sceNetInetSetsockopt 0x3, 0xFFFF, 0x1002, 0x9FBCCD4, 0x4, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0xFFFFFFFF
10:42:36 MAIN_THREAD - sceNetInetSetsockopt 0x3, 0xFFFF, 0x1001, 0x9FBCCD4, 0x4, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0xFFFFFFFF

I guess it was successful because it's possible to set such absurd buffer size on windows LOL

Anyone know what is the maximum SO_RCVBUF and SO_SNDBUF on PSP? so i can return an error if it's too large Probably SO_SNDBUF can have larger size than SO_RCVBUF since their minimum size is also larger on SO_SNDBUF on most OS

Based on the jpcsp trace of sceNetInetAccept, setting the buffer size to 65536 seems to be okay, so the max limit probably larger than 64k

10:42:36 MAIN_THREAD - sceNetInetAccept 0x3, 0x9FBB9A0, 0x9FBB980, 0x9FBB9B0, 0x2, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0x5
10:42:36 MAIN_THREAD - sceNetInetSetsockopt 0x5, 0xFFFF, 0x4, 0x9FBB960, 0x4, 0x1, 0x0, 0x0 = 0x0
10:42:36 MAIN_THREAD - sceNetInetSetsockopt 0x5, 0xFFFF, 0x1002, 0x9FBB964, 0x4, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0x0
10:42:36 MAIN_THREAD - sceNetInetSetsockopt 0x5, 0xFFFF, 0x1001, 0x9FBB964, 0x4, 0xDEADBEEF, 0xDEADBEEF, 0xDEADBEEF = 0x0
unknownbrackets commented 3 years ago

That value is 0x093CB350, so clearly an address by mistake. Not sure how that should correctly behave... would need to create a test.

-[Unknown]

anr2me commented 3 years ago

Since PSP networking is closer to BSD than linux, and i saw somewhere that BSD have a max limit of 8mb for SOCK_STREAM and less than 64k for SOCK_DGRAM, i'll just use 8mb as the max limit for now.

hrydgard commented 3 years ago

Well, it's almost certainly a lot less given the small RAM size of the PSP. But seems unlikely to matter much.

BTFighter commented 3 years ago

I managed to get UNO to work on single player, it seems this game is communicating with it self through 127.0.0.1 on single player (local Client-Server mode), WLAN/adhoc multiplayer also worked image

Can you provide instructions on how you made it possible? I can't seem to replicate it on my own.

anr2me commented 3 years ago

I managed to get UNO to work on single player, it seems this game is communicating with it self through 127.0.0.1 on single player (local Client-Server mode), WLAN/adhoc multiplayer also worked image

Can you provide instructions on how you made it possible? I can't seem to replicate it on my own.

Currently you'll need to use the test build with infrastructure support https://www.dropbox.com/s/6q64mhqd87x3z59/PPSSPP_1.11-infratestbuild_Win32x64.zip?dl=0 Which is related to this https://github.com/hrydgard/ppsspp/issues/14256

BTFighter commented 3 years ago

Currently you'll need to use the test build with infrastructure support https://www.dropbox.com/s/6q64mhqd87x3z59/PPSSPP_1.11-infratestbuild_Win32x64.zip?dl=0 Which is related to this #14256

Thanks for the support, much appreciated.

BTFighter commented 3 years ago

When 2 androids connect to each other on a local network, they are able to see each other. However, when an android plays UNO with an iPhone, they cannot see each other. Other games like Tekken 6 and Platypus works.

anr2me commented 1 year ago

As mentioned before, UNO game need infrastructure to be implemented first before it can work properly, because single player is actually use networking by connecting to localhost.

Games like Tekken / Platypus are using AdHoc which already implemented, while infrastructure is not implemented yet.

For the meantime, you can use infrastructure test builds based on v1.13.1-12 (Windows, Linux, Android, MacOS, iOS, UWP) available here https://sam.nl.tab.digital/s/LmPs4ELKTftRXZB