Commit Graph

92 Commits

Author SHA1 Message Date
RipleyTom
db3d9cd217 Implement sceNpMatching2GetRoomMemberDataExternalList 2026-01-30 13:56:29 +01:00
RipleyTom
3e0cfc651d Fix sceNpBasicLimited_0xEB42E2E6 2026-01-30 10:45:55 +02:00
RipleyTom
97feb4eed4 Add Message logging 2026-01-30 10:45:55 +02:00
RipleyTom
cafc2aa9d0 Implement sceNpMatching2GetMemoryInfo 2026-01-28 22:33:35 +01:00
RipleyTom
8f8032b5a8 Implement sceNpMatching2GetSignalingOptParamLocal 2026-01-28 22:33:35 +01:00
zeph
f946054a37 Clans: Emulator and server implementation (#17835)
This PR implements the Sony Clans subsystem for the RPCS3 emulator.

Used in:
- PlayStation Home [NPIA00005]
- ?

Addresses and closes
[#16464](https://github.com/RPCS3/rpcs3/issues/16464).

---

The source code for the server is available
[here](https://github.com/ZephyrCodesStuff/clans-rs) and is licensed
AGPLv3.
- It's written in Rust, with my best efforts in readability and
documentation.
- Every feature not-pertaining to RPCS3 has been feature-gated at
compile-time.
- Fully Dockerized deployment
- Ticket signature verification

NOTE: The server is fully compatible with the PS3 console as well, as it
follows the PS3 Clans Library specification.

---

The emulator code tries its best to follow on the steps of the RPCN
client code wherever possible; both in the Client as well as the
Settings and Config components.

Features:

- Clans client implementation in `clans_client.[h,cpp]`
- Syscalls implementation in `sceNpClans.[h,cpp]`
- A couple of missing structs and/or enum members have been added in
`sceNp.h`
- Qt GUI for selecting the desired Clans server to use (default: [HTTPS]
`clans.rpcs3.net`)
  - Implemented in `clans_settings_dialog.[h,cpp]`
  - Prevents modifying during emulator usage
- `clans.yml` config file for persistence
  - Implemented in `clans_config.[h,cpp]`

---------

Signed-off-by: zeph <35661622+ZephyrCodesStuff@users.noreply.github.com>
Signed-off-by: zeph <zephyrzefa15@gmail.com>
2025-12-20 16:43:17 +01:00
RipleyTom
371af2d94f Refuse to abort sceNp2 requests that change state 2025-12-19 12:06:02 +01:00
RipleyTom
b99bd12d5e Add Extra sceNp2 logging 2025-12-19 12:06:02 +01:00
RipleyTom
711ec69e48 Fix RPCN replies ordering 2025-12-16 10:07:03 +02:00
Elad
ede8382c6a Remove std::strcpy 2025-11-02 14:22:11 +02:00
Megamouse
2bb2c748bd clang-cl: fix a bunch of warnings 2025-07-02 22:19:31 +02:00
RipleyTom
3894c903bc Make IP Binding more global 2025-05-10 08:44:05 +03:00
RipleyTom
324af04426 Set PSN to disconnected when net status is disconnected 2025-03-25 21:46:38 +01:00
RipleyTom
6074480ffb Reset presence when terminating NP 2025-02-19 11:14:55 +02:00
RipleyTom
0e5014788b Fix SignalingHelper notification 2025-02-17 07:42:33 +02:00
RipleyTom
159370446f RPCN v1.4 2025-02-12 15:00:50 +01:00
RipleyTom
cd87a64621 Headers cleanup 2025-02-11 20:38:35 +01:00
Megamouse
451e953d26 windows: move config.yml and games.yml to /config/ 2025-01-16 21:33:33 +01:00
Elad
575a245f8d IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
Megamouse
0a57c459b6 overlays: add friends list to home menu 2024-10-06 09:57:20 +02:00
RipleyTom
3d9c8a670e Implement old matching API 2024-09-19 20:34:56 +02:00
Ninetime
7d84d084a4 Enable user to change country code (#15884) 2024-08-10 22:33:38 +02:00
Silent
9e094fded6 Do not set the data size in sceNpBasicGetEvent for SCE_NP_BASIC_EVENT_OFFLINE
There is no data associated with this event,
size is not supposed to be set.
2024-07-18 21:42:07 +03:00
RipleyTom
3e7ff4059e Add matching2 option handling 2024-05-16 22:38:11 +02:00
RipleyTom
b7a882f42b Split normal sockets and p2p sockets handling v2 2024-05-08 20:04:23 +03:00
RipleyTom
b38ce9452d Revert "Split normal sockets and p2p sockets handling"
This reverts commit 08c3a38b67.
2024-04-27 10:45:14 +02:00
RipleyTom
08c3a38b67 Split normal sockets and p2p sockets handling 2024-04-24 14:15:17 +03:00
Megamouse
59dc5dcd54 Update wolfssl to 5.7.0 2024-03-26 12:26:26 +01:00
RipleyTom
573734fab8 Send initial presence for offline friends. 2024-02-28 17:41:25 +01:00
RipleyTom
26d406fec3 RPCN 1.1 2024-02-05 09:44:29 +01:00
Megamouse
48f82c75c1 np: fix signed/unsigned warning
who the heck thought returning signed on a counter makes sense...
2024-02-03 17:59:19 +01:00
RipleyTom
319657e815 Review fixes 2024-02-03 08:45:29 +01:00
RipleyTom
c589001dff Add player history 2024-02-03 08:45:29 +01:00
RipleyTom
fe9a24a1b8 RPCN 1.0 (#15045) 2024-01-14 12:36:23 +01:00
RipleyTom
4c36b80300 Misc NP fixes 2024-01-13 15:44:28 +01:00
RipleyTom
236e32fb3d Fix weird cmp in np_handler.cpp 2024-01-09 23:06:23 +01:00
RipleyTom
485fca34b0 Misc NP fixes 2024-01-08 14:03:15 +01:00
RipleyTom
47ae192cf8 Impl sceNpBasicSendMessage 2024-01-07 13:36:27 +01:00
RipleyTom
0227b16d06 Fix sceNpBasicSetPresence when data is nullptr and size is 0 2024-01-05 22:34:52 +01:00
RipleyTom
b6e9746198 RPCN 0.9 (#15002) 2024-01-05 09:43:26 +01:00
RipleyTom
03761c5dd4 rpcn 0.8 2023-12-29 19:22:49 +01:00
Eladash
40604f6076 Fixup np_handler ctor 2023-12-21 16:12:50 +02:00
Eladash
0c410f8a14 Postpone thread launching on g_fxo->init 2023-12-19 15:34:07 +02:00
Megamouse
16f869fe5a logging: minor trace optimizations 2023-06-15 19:48:15 +02:00
Megamouse
d28e3c4f08 np_handler: fix warning: check socket in discover_ip_address 2023-06-13 18:08:51 +02:00
RipleyTom
195de818b6 Fix rpcn config reset 2023-05-06 19:48:40 +02:00
RipleyTom
02a53c582c Invite changes 2023-03-18 01:51:35 +01:00
Megamouse
1d7a00666e rpcn: throw exception when using rpcn features without a proper config 2023-03-03 11:30:39 +01:00
RipleyTom
1a00341e6b Forces local IP to bind address if set 2023-02-25 10:38:19 +01:00
RipleyTom
6186ac0245 rpcn: signaling handler improvements & upnp
Simplify signaling by making Matching2 a layer over normal signaling.
Implements UPNP port forwarding
Implement sceNpMatching2AbortRequest
Fix reported bw in sceNpUtil
Hack for Fat Princess binding udp on 3658
Reenable CB for sceNpBasicAddPlayersHistoryAsync
Misc fixes
2023-02-21 15:41:41 +01:00