Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e47f224
Clans: initial implementation
ZephyrCodesStuff Dec 7, 2025
d618ec9
Clans: Qt GUI configuration impl
ZephyrCodesStuff Dec 7, 2025
f467a15
Clans: using config for host
ZephyrCodesStuff Dec 7, 2025
53cd843
Clans: HTTP/S support
ZephyrCodesStuff Dec 7, 2025
8125d7f
Clans: fix requests being unavailable
ZephyrCodesStuff Dec 7, 2025
ac036a0
Clans: fix clans config not being auto-loaded
ZephyrCodesStuff Dec 7, 2025
17eb5a5
Clans: fixed system constant back to correct value
ZephyrCodesStuff Dec 7, 2025
dccaf78
Clans: fixed struct size
ZephyrCodesStuff Dec 7, 2025
966fa1c
Clans: code styling & safety fix-ups
ZephyrCodesStuff Dec 8, 2025
04da801
Clans: added compile paths to MSVC targets
ZephyrCodesStuff Dec 8, 2025
a9b124f
Clans: make instance a shared_ptr
ZephyrCodesStuff Dec 8, 2025
ae34ee9
Clans: handle cases when paging is null
ZephyrCodesStuff Dec 8, 2025
7378657
Clans: fmt::format instead of std::format
ZephyrCodesStuff Dec 8, 2025
fed72dc
Clans: implemented IDM & ctx for requests
ZephyrCodesStuff Dec 8, 2025
485484d
Clans: handling case when tickets fail to get requested
ZephyrCodesStuff Dec 8, 2025
c358dea
Merge branch 'RPCS3:master' into feat/clans
ZephyrCodesStuff Dec 8, 2025
198c965
Clans: improved ticket requesting and waiting logic
ZephyrCodesStuff Dec 8, 2025
185c4da
Merge branch 'RPCS3:master' into feat/clans
ZephyrCodesStuff Dec 8, 2025
d0b2136
Clans: switch `fmt::split` to `fmt::split_sv`
ZephyrCodesStuff Dec 8, 2025
6ecc5e6
Clans: switch `fmt::split` to `fmt::split_sv`
ZephyrCodesStuff Dec 8, 2025
1c19352
Clang: fix temporary variable usage
ZephyrCodesStuff Dec 8, 2025
b5796f5
Clans(CI): fix imports
ZephyrCodesStuff Dec 9, 2025
68e5dec
Clans(CI): fix `curl` dependency for `emucore` (MSVC)
ZephyrCodesStuff Dec 9, 2025
fee3dff
Clans(CI): fix missing Qt moc
ZephyrCodesStuff Dec 9, 2025
b2195bd
Clans: clang compiler fix-ups
ZephyrCodesStuff Dec 9, 2025
259d6c6
Merge branch 'RPCS3:master' into feat/clans
ZephyrCodesStuff Dec 9, 2025
cf37333
Clans: clean-up
ZephyrCodesStuff Dec 10, 2025
0809199
Clans: safety fixes
ZephyrCodesStuff Dec 10, 2025
e9d59cc
Merge branch 'RPCS3:master' into feat/clans
ZephyrCodesStuff Dec 10, 2025
c1cc185
Clans: caught more unnecessary `strcpy_trunc`
ZephyrCodesStuff Dec 10, 2025
6afa808
Merge branch 'feat/clans' of github.com:zephyrcodesstuff/rpcs3 into f…
ZephyrCodesStuff Dec 10, 2025
520d039
Clans: fix empty dialog accidentally spawning
ZephyrCodesStuff Dec 10, 2025
69924c4
Clans: stray import
ZephyrCodesStuff Dec 10, 2025
19e9dcb
Clans: covert constructor
ZephyrCodesStuff Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions rpcs3/Emu/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,8 @@ target_sources(rpcs3_emu PRIVATE
NP/np_requests.cpp
NP/signaling_handler.cpp
NP/np_structs_extra.cpp
NP/clans_client.cpp
NP/clans_config.cpp
NP/rpcn_client.cpp
NP/rpcn_config.cpp
NP/rpcn_countries.cpp
Expand Down
1 change: 1 addition & 0 deletions rpcs3/Emu/Cell/Modules/sceNp.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ using SceNpBasicMessageRecvAction = u32;

using SceNpClanId = u32;
using SceNpClansMessageId = u32;
using SceNpClansMemberRole = u32;
using SceNpClansMemberStatus = s32;

using SceNpCustomMenuIndexMask = u32;
Expand Down
554 changes: 475 additions & 79 deletions rpcs3/Emu/Cell/Modules/sceNpClans.cpp

Large diffs are not rendered by default.

27 changes: 11 additions & 16 deletions rpcs3/Emu/Cell/Modules/sceNpClans.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
// Return codes
enum SceNpClansError : u32
{
SCE_NP_CLANS_SUCCESS = CELL_OK,

SCE_NP_CLANS_ERROR_ALREADY_INITIALIZED = 0x80022701,
SCE_NP_CLANS_ERROR_NOT_INITIALIZED = 0x80022702,
SCE_NP_CLANS_ERROR_NOT_SUPPORTED = 0x80022703,
Expand Down Expand Up @@ -138,7 +140,7 @@ enum
};

// Request handle for clan API
using SceNpClansRequestHandle = vm::ptr<struct SceNpClansRequest>;
using SceNpClansRequestHandle = u32;

// Paging request structure
struct SceNpClansPagingRequest
Expand All @@ -159,8 +161,8 @@ struct SceNpClansClanBasicInfo
{
be_t<u32> clanId;
be_t<u32> numMembers;
s8 name[SCE_NP_CLANS_CLAN_NAME_MAX_LENGTH + 1];
s8 tag[SCE_NP_CLANS_CLAN_TAG_MAX_LENGTH + 1];
char name[SCE_NP_CLANS_CLAN_NAME_MAX_LENGTH + 1];
char tag[SCE_NP_CLANS_CLAN_TAG_MAX_LENGTH + 1];
u8 reserved[2];
};

Expand Down Expand Up @@ -197,23 +199,23 @@ struct SceNpClansSearchableProfile
be_t<s32> intAttr2SearchOp;
be_t<s32> intAttr3SearchOp;
be_t<s32> binAttr1SearchOp;
s8 tag[SCE_NP_CLANS_CLAN_TAG_MAX_LENGTH + 1];
char tag[SCE_NP_CLANS_CLAN_TAG_MAX_LENGTH + 1];
u8 reserved[3];
};

// Clan search name structure
struct SceNpClansSearchableName
{
be_t<s32> nameSearchOp;
s8 name[SCE_NP_CLANS_CLAN_NAME_MAX_LENGTH + 1];
char name[SCE_NP_CLANS_CLAN_NAME_MAX_LENGTH + 1];
u8 reserved[3];
};

// Updatable clan information structure
struct SceNpClansUpdatableClanInfo
{
be_t<u32> fields;
s8 description[SCE_NP_CLANS_CLAN_DESCRIPTION_MAX_LENGTH + 1];
char description[SCE_NP_CLANS_CLAN_DESCRIPTION_MAX_LENGTH + 1];
SceNpClansSearchableAttr attr;
u8 binData1;
be_t<u32> binData1Size;
Expand All @@ -233,8 +235,8 @@ struct SceNpClansUpdatableMemberInfo
be_t<u32> fields;
u8 binData1;
be_t<u32> binData1Size;
u8 binAttr1[SCE_NP_CLANS_CLAN_BINARY_ATTRIBUTE1_MAX_SIZE + 1];
s8 description[SCE_NP_CLANS_MEMBER_DESCRIPTION_MAX_LENGTH + 1];
u8 binAttr1[SCE_NP_CLANS_MEMBER_BINARY_ATTRIBUTE1_MAX_SIZE];
char description[SCE_NP_CLANS_MEMBER_DESCRIPTION_MAX_LENGTH + 1];
b8 allowMsg;
u8 reserved[3];
};
Expand Down Expand Up @@ -271,7 +273,7 @@ struct SceNpClansMessageEntry
SceNpClansMessage message;
SceNpClansMessageData data;
SceNpId npid;
u8 reserved[4];
SceNpClanId postedBy;
};

// Blacklist entry structure
Expand All @@ -280,10 +282,3 @@ struct SceNpClansBlacklistEntry
SceNpId entry;
SceNpId registeredBy;
};

// fxm objects

struct sce_np_clans_manager
{
atomic_t<bool> is_initialized = false;
};
Loading