[NET] Implemented XNetRandom

Fixed checkpoints in Gears of War 3
This commit is contained in:
Adrian
2025-12-25 00:49:09 +00:00
committed by Radosław Gliński
parent fcebdfb255
commit 53c0178766

View File

@@ -238,13 +238,23 @@ DECLARE_XAM_EXPORT1(NetDll_XNetGetOpt, kNetworking, kSketchy);
dword_result_t NetDll_XNetRandom_entry(dword_t caller, lpvoid_t buffer_ptr,
dword_t length) {
// For now, constant values.
// This makes replicating things easier.
std::memset(buffer_ptr, 0xBB, length);
uint8_t* buffer_data_ptr = buffer_ptr.as<uint8_t*>();
return 0;
if (buffer_data_ptr == nullptr || length == 0) {
return X_ERROR_SUCCESS;
}
std::random_device rnd;
std::mt19937_64 gen(rnd());
std::uniform_int_distribution<int> dist(0,
std::numeric_limits<uint8_t>::max());
std::generate(buffer_data_ptr, buffer_data_ptr + length,
[&]() { return static_cast<uint8_t>(dist(gen)); });
return X_ERROR_SUCCESS;
}
DECLARE_XAM_EXPORT1(NetDll_XNetRandom, kNetworking, kStub);
DECLARE_XAM_EXPORT1(NetDll_XNetRandom, kNetworking, kImplemented);
dword_result_t NetDll_WSAStartup_entry(dword_t caller, word_t version,
pointer_t<X_WSADATA> data_ptr) {