[CPU/Kernel] Cleanup and rework of how kernel exports are declared.
This commit is contained in:
@@ -28,12 +28,12 @@ dword_result_t XamAvatarInitialize(
|
||||
// Negative to fail. Game should immediately call XamAvatarShutdown.
|
||||
return ~0u;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamAvatarInitialize, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamAvatarInitialize, kAvatars, kStub);
|
||||
|
||||
void XamAvatarShutdown() {
|
||||
// No-op.
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamAvatarShutdown, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamAvatarShutdown, kAvatars, kStub);
|
||||
|
||||
void RegisterAvatarExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -197,7 +197,7 @@ dword_result_t XamContentCreateEnumerator(dword_t user_index, dword_t device_id,
|
||||
*handle_out = e->handle();
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamContentCreateEnumerator, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamContentCreateEnumerator, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentCreateEx(dword_t user_index, lpstring_t root_name,
|
||||
lpvoid_t content_data_ptr, dword_t flags,
|
||||
@@ -289,7 +289,7 @@ dword_result_t XamContentCreateEx(dword_t user_index, lpstring_t root_name,
|
||||
return result;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamContentCreateEx, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamContentCreateEx, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentCreate(dword_t user_index, lpstring_t root_name,
|
||||
lpvoid_t content_data_ptr, dword_t flags,
|
||||
@@ -300,7 +300,7 @@ dword_result_t XamContentCreate(dword_t user_index, lpstring_t root_name,
|
||||
disposition_ptr, license_mask_ptr, 0, 0,
|
||||
overlapped_ptr);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamContentCreate, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamContentCreate, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentOpenFile(dword_t user_index, lpstring_t root_name,
|
||||
lpstring_t path, dword_t flags,
|
||||
@@ -310,7 +310,7 @@ dword_result_t XamContentOpenFile(dword_t user_index, lpstring_t root_name,
|
||||
// TODO(gibbed): arguments assumed based on XamContentCreate.
|
||||
return X_ERROR_FILE_NOT_FOUND;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamContentOpenFile, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamContentOpenFile, kContent, kStub);
|
||||
|
||||
SHIM_CALL XamContentFlush_shim(PPCContext* ppc_context,
|
||||
KernelState* kernel_state) {
|
||||
|
||||
@@ -32,12 +32,12 @@ dword_result_t XamGetSystemVersion() {
|
||||
// 0x20096B00
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamGetSystemVersion, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamGetSystemVersion, kNone, kStub);
|
||||
|
||||
void XCustomRegisterDynamicActions() {
|
||||
// ???
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XCustomRegisterDynamicActions, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XCustomRegisterDynamicActions, kNone, kStub);
|
||||
|
||||
dword_result_t XGetAVPack() {
|
||||
// DWORD
|
||||
@@ -47,10 +47,10 @@ dword_result_t XGetAVPack() {
|
||||
// they explode with errors if not in PAL mode.
|
||||
return 6;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XGetAVPack, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XGetAVPack, kNone, kStub);
|
||||
|
||||
dword_result_t XGetGameRegion() { return 0xFFFF; }
|
||||
DECLARE_XAM_EXPORT(XGetGameRegion, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XGetGameRegion, kNone, kStub);
|
||||
|
||||
dword_result_t XGetLanguage() {
|
||||
uint32_t desired_language = X_LANGUAGE_ENGLISH;
|
||||
@@ -67,7 +67,7 @@ dword_result_t XGetLanguage() {
|
||||
|
||||
return desired_language;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XGetLanguage, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XGetLanguage, kNone, kImplemented);
|
||||
|
||||
dword_result_t XamGetExecutionId(lpdword_t info_ptr) {
|
||||
auto module = kernel_state()->GetExecutableModule();
|
||||
@@ -84,7 +84,7 @@ dword_result_t XamGetExecutionId(lpdword_t info_ptr) {
|
||||
*info_ptr = guest_hdr_ptr;
|
||||
return X_STATUS_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamGetExecutionId, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamGetExecutionId, kNone, kImplemented);
|
||||
|
||||
dword_result_t XamLoaderSetLaunchData(lpvoid_t data, dword_t size) {
|
||||
auto xam = kernel_state()->GetKernelModule<XamModule>("xam.xex");
|
||||
@@ -97,7 +97,7 @@ dword_result_t XamLoaderSetLaunchData(lpvoid_t data, dword_t size) {
|
||||
// FIXME: Unknown return value.
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamLoaderSetLaunchData, ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamLoaderSetLaunchData, kNone, kSketchy);
|
||||
|
||||
dword_result_t XamLoaderGetLaunchDataSize(lpdword_t size_ptr) {
|
||||
auto xam = kernel_state()->GetKernelModule<XamModule>("xam.xex");
|
||||
@@ -115,7 +115,7 @@ dword_result_t XamLoaderGetLaunchDataSize(lpdword_t size_ptr) {
|
||||
*size_ptr = 0;
|
||||
return X_ERROR_NOT_FOUND;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamLoaderGetLaunchDataSize, ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamLoaderGetLaunchDataSize, kNone, kSketchy);
|
||||
|
||||
dword_result_t XamLoaderGetLaunchData(lpvoid_t buffer_ptr,
|
||||
dword_t buffer_size) {
|
||||
@@ -130,7 +130,7 @@ dword_result_t XamLoaderGetLaunchData(lpvoid_t buffer_ptr,
|
||||
std::memcpy(buffer_ptr, loader_data.launch_data.data(), copy_size);
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamLoaderGetLaunchData, ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamLoaderGetLaunchData, kNone, kSketchy);
|
||||
|
||||
void XamLoaderLaunchTitle(lpstring_t raw_name, dword_t flags) {
|
||||
auto xam = kernel_state()->GetKernelModule<XamModule>("xam.xex");
|
||||
@@ -158,13 +158,13 @@ void XamLoaderLaunchTitle(lpstring_t raw_name, dword_t flags) {
|
||||
// This function does not return.
|
||||
kernel_state()->TerminateTitle();
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamLoaderLaunchTitle, ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamLoaderLaunchTitle, kNone, kSketchy);
|
||||
|
||||
void XamLoaderTerminateTitle() {
|
||||
// This function does not return.
|
||||
kernel_state()->TerminateTitle();
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamLoaderTerminateTitle, ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamLoaderTerminateTitle, kNone, kSketchy);
|
||||
|
||||
dword_result_t XamAlloc(dword_t unk, dword_t size, lpdword_t out_ptr) {
|
||||
assert_true(unk == 0);
|
||||
@@ -176,14 +176,14 @@ dword_result_t XamAlloc(dword_t unk, dword_t size, lpdword_t out_ptr) {
|
||||
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamAlloc, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamAlloc, kMemory, kImplemented);
|
||||
|
||||
dword_result_t XamFree(lpdword_t ptr) {
|
||||
kernel_state()->memory()->SystemHeapFree(ptr.guest_address());
|
||||
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamFree, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamFree, kMemory, kImplemented);
|
||||
|
||||
// https://github.com/LestaD/SourceEngine2007/blob/master/se2007/engine/xboxsystem.cpp#L518
|
||||
dword_result_t XamEnumerate(dword_t handle, dword_t flags, lpvoid_t buffer,
|
||||
@@ -241,7 +241,7 @@ dword_result_t XamEnumerate(dword_t handle, dword_t flags, lpvoid_t buffer,
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamEnumerate, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamEnumerate, kNone, kImplemented);
|
||||
|
||||
dword_result_t XamCreateEnumeratorHandle(unknown_t unk1, unknown_t unk2,
|
||||
unknown_t unk3, unknown_t unk4,
|
||||
@@ -249,13 +249,13 @@ dword_result_t XamCreateEnumeratorHandle(unknown_t unk1, unknown_t unk2,
|
||||
unknown_t unk7, unknown_t unk8) {
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamCreateEnumeratorHandle, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamCreateEnumeratorHandle, kNone, kStub);
|
||||
|
||||
dword_result_t XamGetPrivateEnumStructureFromHandle(unknown_t unk1,
|
||||
unknown_t unk2) {
|
||||
return X_ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamGetPrivateEnumStructureFromHandle, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamGetPrivateEnumStructureFromHandle, kNone, kStub);
|
||||
|
||||
void RegisterInfoExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -31,13 +31,12 @@ constexpr uint32_t XINPUT_FLAG_ANY_USER = 1 << 30;
|
||||
void XamResetInactivity() {
|
||||
// Do we need to do anything?
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamResetInactivity, ExportTag::kInput | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamResetInactivity, kInput, kStub);
|
||||
|
||||
dword_result_t XamEnableInactivityProcessing(dword_t unk, dword_t enable) {
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamEnableInactivityProcessing,
|
||||
ExportTag::kInput | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamEnableInactivityProcessing, kInput, kStub);
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xinputgetcapabilities(v=vs.85).aspx
|
||||
dword_result_t XamInputGetCapabilities(dword_t user_index, dword_t flags,
|
||||
@@ -60,8 +59,7 @@ dword_result_t XamInputGetCapabilities(dword_t user_index, dword_t flags,
|
||||
auto input_system = kernel_state()->emulator()->input_system();
|
||||
return input_system->GetCapabilities(actual_user_index, flags, caps);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputGetCapabilities,
|
||||
ExportTag::kInput | ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamInputGetCapabilities, kInput, kSketchy);
|
||||
|
||||
dword_result_t XamInputGetCapabilitiesEx(dword_t unk, dword_t user_index,
|
||||
dword_t flags,
|
||||
@@ -84,8 +82,7 @@ dword_result_t XamInputGetCapabilitiesEx(dword_t unk, dword_t user_index,
|
||||
auto input_system = kernel_state()->emulator()->input_system();
|
||||
return input_system->GetCapabilities(actual_user_index, flags, caps);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputGetCapabilitiesEx,
|
||||
ExportTag::kInput | ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamInputGetCapabilitiesEx, kInput, kSketchy);
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xinputgetstate(v=vs.85).aspx
|
||||
dword_result_t XamInputGetState(dword_t user_index, dword_t flags,
|
||||
@@ -106,8 +103,7 @@ dword_result_t XamInputGetState(dword_t user_index, dword_t flags,
|
||||
auto input_system = kernel_state()->emulator()->input_system();
|
||||
return input_system->GetState(user_index, input_state);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputGetState,
|
||||
ExportTag::kInput | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamInputGetState, kInput, kImplemented);
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xinputsetstate(v=vs.85).aspx
|
||||
dword_result_t XamInputSetState(dword_t user_index, dword_t unk,
|
||||
@@ -125,8 +121,7 @@ dword_result_t XamInputSetState(dword_t user_index, dword_t unk,
|
||||
auto input_system = kernel_state()->emulator()->input_system();
|
||||
return input_system->SetState(user_index, vibration);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputSetState,
|
||||
ExportTag::kInput | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamInputSetState, kInput, kImplemented);
|
||||
|
||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xinputgetkeystroke(v=vs.85).aspx
|
||||
dword_result_t XamInputGetKeystroke(dword_t user_index, dword_t flags,
|
||||
@@ -153,8 +148,7 @@ dword_result_t XamInputGetKeystroke(dword_t user_index, dword_t flags,
|
||||
auto input_system = kernel_state()->emulator()->input_system();
|
||||
return input_system->GetKeystroke(user_index, flags, keystroke);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputGetKeystroke,
|
||||
ExportTag::kInput | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamInputGetKeystroke, kInput, kImplemented);
|
||||
|
||||
// Same as non-ex, just takes a pointer to user index.
|
||||
dword_result_t XamInputGetKeystrokeEx(lpdword_t user_index_ptr, dword_t flags,
|
||||
@@ -181,8 +175,7 @@ dword_result_t XamInputGetKeystrokeEx(lpdword_t user_index_ptr, dword_t flags,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamInputGetKeystrokeEx,
|
||||
ExportTag::kInput | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamInputGetKeystrokeEx, kInput, kImplemented);
|
||||
|
||||
X_HRESULT_result_t XamUserGetDeviceContext(dword_t user_index, dword_t unk,
|
||||
lpdword_t out_ptr) {
|
||||
@@ -196,8 +189,7 @@ X_HRESULT_result_t XamUserGetDeviceContext(dword_t user_index, dword_t unk,
|
||||
return X_E_DEVICE_NOT_CONNECTED;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserGetDeviceContext,
|
||||
ExportTag::kInput | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserGetDeviceContext, kInput, kStub);
|
||||
|
||||
void RegisterInputExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -27,7 +27,7 @@ dword_result_t XMsgInProcessCall(dword_t app, dword_t message, dword_t arg1,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XMsgInProcessCall, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XMsgInProcessCall, kNone, kImplemented);
|
||||
|
||||
dword_result_t XMsgSystemProcessCall(dword_t app, dword_t message,
|
||||
dword_t buffer, dword_t buffer_length) {
|
||||
@@ -38,7 +38,7 @@ dword_result_t XMsgSystemProcessCall(dword_t app, dword_t message,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XMsgSystemProcessCall, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XMsgSystemProcessCall, kNone, kImplemented);
|
||||
|
||||
dword_result_t XMsgStartIORequest(dword_t app, dword_t message,
|
||||
pointer_t<XAM_OVERLAPPED> overlapped_ptr,
|
||||
@@ -54,7 +54,7 @@ dword_result_t XMsgStartIORequest(dword_t app, dword_t message,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XMsgStartIORequest, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XMsgStartIORequest, kNone, kImplemented);
|
||||
|
||||
dword_result_t XMsgStartIORequestEx(dword_t app, dword_t message,
|
||||
pointer_t<XAM_OVERLAPPED> overlapped_ptr,
|
||||
@@ -71,7 +71,7 @@ dword_result_t XMsgStartIORequestEx(dword_t app, dword_t message,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XMsgStartIORequestEx, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XMsgStartIORequestEx, kNone, kImplemented);
|
||||
|
||||
dword_result_t XMsgCancelIORequest(pointer_t<XAM_OVERLAPPED> overlapped_ptr,
|
||||
dword_t wait) {
|
||||
@@ -86,7 +86,7 @@ dword_result_t XMsgCancelIORequest(pointer_t<XAM_OVERLAPPED> overlapped_ptr,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XMsgCancelIORequest, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XMsgCancelIORequest, kNone, kImplemented);
|
||||
|
||||
void RegisterMsgExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -170,8 +170,7 @@ dword_result_t NetDll_XNetStartup(dword_t caller,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetStartup,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetStartup, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_XNetCleanup(dword_t caller, lpvoid_t params) {
|
||||
auto xam = kernel_state()->GetKernelModule<XamModule>("xam.xex");
|
||||
@@ -183,8 +182,7 @@ dword_result_t NetDll_XNetCleanup(dword_t caller, lpvoid_t params) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetCleanup,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetCleanup, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_XNetGetOpt(dword_t one, dword_t option_id,
|
||||
lpvoid_t buffer_ptr, lpdword_t buffer_size) {
|
||||
@@ -202,7 +200,7 @@ dword_result_t NetDll_XNetGetOpt(dword_t one, dword_t option_id,
|
||||
return 0x2726; // WSAEINVAL
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetGetOpt, ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetGetOpt, kNetworking, kSketchy);
|
||||
|
||||
dword_result_t NetDll_XNetRandom(dword_t caller, lpvoid_t buffer_ptr,
|
||||
dword_t length) {
|
||||
@@ -212,8 +210,7 @@ dword_result_t NetDll_XNetRandom(dword_t caller, lpvoid_t buffer_ptr,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetRandom,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetRandom, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_WSAStartup(dword_t caller, word_t version,
|
||||
pointer_t<X_WSADATA> data_ptr) {
|
||||
@@ -263,19 +260,16 @@ dword_result_t NetDll_WSAStartup(dword_t caller, word_t version,
|
||||
|
||||
return ret;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSAStartup,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSAStartup, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSACleanup(dword_t caller) {
|
||||
// This does nothing. Xenia needs WSA running.
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSACleanup,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSACleanup, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSAGetLastError() { return XThread::GetLastError(); }
|
||||
DECLARE_XAM_EXPORT(NetDll_WSAGetLastError,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSAGetLastError, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSARecvFrom(dword_t caller, dword_t socket,
|
||||
pointer_t<XWSABUF> buffers_ptr,
|
||||
@@ -295,7 +289,7 @@ dword_result_t NetDll_WSARecvFrom(dword_t caller, dword_t socket,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSARecvFrom, ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSARecvFrom, kNetworking, kStub);
|
||||
|
||||
// If the socket is a VDP socket, buffer 0 is the game data length, and buffer 1
|
||||
// is the unencrypted game data.
|
||||
@@ -340,8 +334,7 @@ dword_result_t NetDll_WSASendTo(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSASendTo,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSASendTo, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSAWaitForMultipleEvents(dword_t num_events,
|
||||
lpdword_t events,
|
||||
@@ -369,17 +362,15 @@ dword_result_t NetDll_WSAWaitForMultipleEvents(dword_t num_events,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSAWaitForMultipleEvents, ExportTag::kNetworking |
|
||||
ExportTag::kThreading |
|
||||
ExportTag::kBlocking);
|
||||
DECLARE_XAM_EXPORT2(NetDll_WSAWaitForMultipleEvents, kNetworking, kImplemented,
|
||||
kBlocking);
|
||||
|
||||
dword_result_t NetDll_WSACreateEvent() {
|
||||
XEvent* ev = new XEvent(kernel_state());
|
||||
ev->Initialize(true, false);
|
||||
return ev->handle();
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSACreateEvent,
|
||||
ExportTag::kNetworking | ExportTag::kThreading);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSACreateEvent, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSACloseEvent(dword_t event_handle) {
|
||||
X_STATUS result = kernel_state()->object_table()->ReleaseHandle(event_handle);
|
||||
@@ -390,8 +381,7 @@ dword_result_t NetDll_WSACloseEvent(dword_t event_handle) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSACloseEvent,
|
||||
ExportTag::kNetworking | ExportTag::kThreading);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSACloseEvent, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSAResetEvent(dword_t event_handle) {
|
||||
X_STATUS result = xboxkrnl::NtClearEvent(event_handle);
|
||||
@@ -402,8 +392,7 @@ dword_result_t NetDll_WSAResetEvent(dword_t event_handle) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSAResetEvent,
|
||||
ExportTag::kNetworking | ExportTag::kThreading);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSAResetEvent, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_WSASetEvent(dword_t event_handle) {
|
||||
X_STATUS result = xboxkrnl::NtSetEvent(event_handle, nullptr);
|
||||
@@ -414,8 +403,7 @@ dword_result_t NetDll_WSASetEvent(dword_t event_handle) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_WSASetEvent,
|
||||
ExportTag::kNetworking | ExportTag::kThreading);
|
||||
DECLARE_XAM_EXPORT1(NetDll_WSASetEvent, kNetworking, kImplemented);
|
||||
|
||||
struct XnAddrStatus {
|
||||
// Address acquisition is not yet complete
|
||||
@@ -452,8 +440,7 @@ dword_result_t NetDll_XNetGetTitleXnAddr(dword_t caller,
|
||||
|
||||
return XnAddrStatus::XNET_GET_XNADDR_STATIC;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetGetTitleXnAddr,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetGetTitleXnAddr, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_XNetGetDebugXnAddr(dword_t caller,
|
||||
pointer_t<XNADDR> addr_ptr) {
|
||||
@@ -462,8 +449,7 @@ dword_result_t NetDll_XNetGetDebugXnAddr(dword_t caller,
|
||||
// XNET_GET_XNADDR_NONE causes caller to gracefully return.
|
||||
return XnAddrStatus::XNET_GET_XNADDR_NONE;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetGetDebugXnAddr,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetGetDebugXnAddr, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_XNetXnAddrToMachineId(dword_t caller,
|
||||
pointer_t<XNADDR> addr_ptr,
|
||||
@@ -471,15 +457,13 @@ dword_result_t NetDll_XNetXnAddrToMachineId(dword_t caller,
|
||||
// Tell the caller we're not signed in to live (non-zero ret)
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetXnAddrToMachineId,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetXnAddrToMachineId, kNetworking, kStub);
|
||||
|
||||
void NetDll_XNetInAddrToString(dword_t caller, dword_t in_addr,
|
||||
lpstring_t string_out, dword_t string_size) {
|
||||
strncpy(string_out, "666.666.666.666", string_size);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetInAddrToString,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetInAddrToString, kNetworking, kStub);
|
||||
|
||||
// This converts a XNet address to an IN_ADDR. The IN_ADDR is used for
|
||||
// subsequent socket calls (like a handle to a XNet address)
|
||||
@@ -488,8 +472,7 @@ dword_result_t NetDll_XNetXnAddrToInAddr(dword_t caller,
|
||||
lpvoid_t xid, lpvoid_t in_addr) {
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetXnAddrToInAddr,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetXnAddrToInAddr, kNetworking, kStub);
|
||||
|
||||
// Does the reverse of the above.
|
||||
// FIXME: Arguments may not be correct.
|
||||
@@ -498,16 +481,14 @@ dword_result_t NetDll_XNetInAddrToXnAddr(dword_t caller, lpvoid_t in_addr,
|
||||
lpvoid_t xid) {
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetInAddrToXnAddr,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetInAddrToXnAddr, kNetworking, kStub);
|
||||
|
||||
// http://www.google.com/patents/WO2008112448A1?cl=en
|
||||
// Reserves a port for use by system link
|
||||
dword_result_t NetDll_XNetSetSystemLinkPort(dword_t caller, dword_t port) {
|
||||
return 1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetSetSystemLinkPort,
|
||||
ExportTag::kNetworking | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetSetSystemLinkPort, kNetworking, kStub);
|
||||
|
||||
// https://github.com/ILOVEPIE/Cxbx-Reloaded/blob/master/src/CxbxKrnl/EmuXOnline.h#L39
|
||||
struct XEthernetStatus {
|
||||
@@ -519,8 +500,7 @@ struct XEthernetStatus {
|
||||
};
|
||||
|
||||
dword_result_t NetDll_XNetGetEthernetLinkStatus(dword_t caller) { return 0; }
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetGetEthernetLinkStatus,
|
||||
ExportTag::kStub | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetGetEthernetLinkStatus, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_XNetDnsLookup(dword_t caller, lpstring_t host,
|
||||
dword_t event_handle, lpdword_t pdns) {
|
||||
@@ -539,8 +519,7 @@ dword_result_t NetDll_XNetDnsLookup(dword_t caller, lpstring_t host,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetDnsLookup,
|
||||
ExportTag::kStub | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetDnsLookup, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_XNetDnsRelease(dword_t caller, pointer_t<XNDNS> dns) {
|
||||
if (!dns) {
|
||||
@@ -549,8 +528,7 @@ dword_result_t NetDll_XNetDnsRelease(dword_t caller, pointer_t<XNDNS> dns) {
|
||||
kernel_memory()->SystemHeapFree(dns.guest_address());
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetDnsRelease,
|
||||
ExportTag::kStub | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetDnsRelease, kNetworking, kStub);
|
||||
|
||||
SHIM_CALL NetDll_XNetQosServiceLookup_shim(PPCContext* ppc_context,
|
||||
KernelState* kernel_state) {
|
||||
@@ -571,15 +549,13 @@ dword_result_t NetDll_XNetQosListen(dword_t caller, lpvoid_t id, lpvoid_t data,
|
||||
dword_t flags) {
|
||||
return X_ERROR_FUNCTION_FAILED;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_XNetQosListen,
|
||||
ExportTag::kStub | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_XNetQosListen, kNetworking, kStub);
|
||||
|
||||
dword_result_t NetDll_inet_addr(lpstring_t addr_ptr) {
|
||||
uint32_t addr = inet_addr(addr_ptr);
|
||||
return xe::byte_swap(addr);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_inet_addr,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_inet_addr, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_socket(dword_t caller, dword_t af, dword_t type,
|
||||
dword_t protocol) {
|
||||
@@ -598,8 +574,7 @@ dword_result_t NetDll_socket(dword_t caller, dword_t af, dword_t type,
|
||||
|
||||
return socket->handle();
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_socket,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_socket, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_closesocket(dword_t caller, dword_t socket_handle) {
|
||||
auto socket =
|
||||
@@ -616,8 +591,7 @@ dword_result_t NetDll_closesocket(dword_t caller, dword_t socket_handle) {
|
||||
socket->ReleaseHandle();
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_closesocket,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_closesocket, kNetworking, kImplemented);
|
||||
|
||||
int_result_t NetDll_shutdown(dword_t caller, dword_t socket_handle, int_t how) {
|
||||
auto socket =
|
||||
@@ -639,8 +613,7 @@ int_result_t NetDll_shutdown(dword_t caller, dword_t socket_handle, int_t how) {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_shutdown,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_shutdown, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_setsockopt(dword_t caller, dword_t socket_handle,
|
||||
dword_t level, dword_t optname,
|
||||
@@ -656,8 +629,7 @@ dword_result_t NetDll_setsockopt(dword_t caller, dword_t socket_handle,
|
||||
X_STATUS status = socket->SetOption(level, optname, optval_ptr, optlen);
|
||||
return XSUCCEEDED(status) ? 0 : -1;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_setsockopt,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_setsockopt, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_ioctlsocket(dword_t caller, dword_t socket_handle,
|
||||
dword_t cmd, lpvoid_t arg_ptr) {
|
||||
@@ -678,8 +650,7 @@ dword_result_t NetDll_ioctlsocket(dword_t caller, dword_t socket_handle,
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_ioctlsocket,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_ioctlsocket, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_bind(dword_t caller, dword_t socket_handle,
|
||||
pointer_t<XSOCKADDR_IN> name, dword_t namelen) {
|
||||
@@ -700,8 +671,7 @@ dword_result_t NetDll_bind(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_bind,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_bind, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_connect(dword_t caller, dword_t socket_handle,
|
||||
pointer_t<XSOCKADDR> name, dword_t namelen) {
|
||||
@@ -722,8 +692,7 @@ dword_result_t NetDll_connect(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_connect,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_connect, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_listen(dword_t caller, dword_t socket_handle,
|
||||
int_t backlog) {
|
||||
@@ -743,8 +712,7 @@ dword_result_t NetDll_listen(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_listen,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_listen, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_accept(dword_t caller, dword_t socket_handle,
|
||||
pointer_t<XSOCKADDR> addr_ptr,
|
||||
@@ -776,8 +744,7 @@ dword_result_t NetDll_accept(dword_t caller, dword_t socket_handle,
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_accept,
|
||||
ExportTag::kImplemented | ExportTag::kNetworking);
|
||||
DECLARE_XAM_EXPORT1(NetDll_accept, kNetworking, kImplemented);
|
||||
|
||||
struct x_fd_set {
|
||||
xe::be<uint32_t> fd_count;
|
||||
@@ -884,8 +851,7 @@ int_result_t NetDll_select(int_t caller, int_t nfds,
|
||||
// TODO(gibbed): modify ret to be what's actually copied to the guest fd_sets?
|
||||
return ret;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_select,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_select, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_recv(dword_t caller, dword_t socket_handle,
|
||||
lpvoid_t buf_ptr, dword_t buf_len, dword_t flags) {
|
||||
@@ -899,8 +865,7 @@ dword_result_t NetDll_recv(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return socket->Recv(buf_ptr, buf_len, flags);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_recv,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_recv, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_recvfrom(dword_t caller, dword_t socket_handle,
|
||||
lpvoid_t buf_ptr, dword_t buf_len, dword_t flags,
|
||||
@@ -944,8 +909,7 @@ dword_result_t NetDll_recvfrom(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return ret;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_recvfrom,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_recvfrom, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_send(dword_t caller, dword_t socket_handle,
|
||||
lpvoid_t buf_ptr, dword_t buf_len, dword_t flags) {
|
||||
@@ -959,8 +923,7 @@ dword_result_t NetDll_send(dword_t caller, dword_t socket_handle,
|
||||
|
||||
return socket->Send(buf_ptr, buf_len, flags);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_send,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_send, kNetworking, kImplemented);
|
||||
|
||||
dword_result_t NetDll_sendto(dword_t caller, dword_t socket_handle,
|
||||
lpvoid_t buf_ptr, dword_t buf_len, dword_t flags,
|
||||
@@ -976,8 +939,7 @@ dword_result_t NetDll_sendto(dword_t caller, dword_t socket_handle,
|
||||
N_XSOCKADDR_IN native_to(to_ptr);
|
||||
return socket->SendTo(buf_ptr, buf_len, flags, &native_to, to_len);
|
||||
}
|
||||
DECLARE_XAM_EXPORT(NetDll_sendto,
|
||||
ExportTag::kNetworking | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(NetDll_sendto, kNetworking, kImplemented);
|
||||
|
||||
void RegisterNetExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {
|
||||
|
||||
@@ -30,7 +30,7 @@ dword_result_t XamNotifyCreateListener(qword_t mask, dword_t one) {
|
||||
|
||||
return handle;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamNotifyCreateListener, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamNotifyCreateListener, kNone, kImplemented);
|
||||
|
||||
// http://ffplay360.googlecode.com/svn/Test/Common/AtgSignIn.cpp
|
||||
dword_result_t XNotifyGetNext(dword_t handle, dword_t match_id,
|
||||
@@ -68,19 +68,18 @@ dword_result_t XNotifyGetNext(dword_t handle, dword_t match_id,
|
||||
|
||||
return dequeued ? 1 : 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XNotifyGetNext,
|
||||
ExportTag::kImplemented | ExportTag::kHighFrequency);
|
||||
DECLARE_XAM_EXPORT2(XNotifyGetNext, kNone, kImplemented, kHighFrequency);
|
||||
|
||||
dword_result_t XNotifyDelayUI(dword_t delay_ms) {
|
||||
// Ignored.
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XNotifyDelayUI, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XNotifyDelayUI, kNone, kStub);
|
||||
|
||||
void XNotifyPositionUI(dword_t position) {
|
||||
// Ignored.
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XNotifyPositionUI, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XNotifyPositionUI, kNone, kStub);
|
||||
|
||||
void RegisterNotifyExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -36,7 +36,7 @@ void XamNuiGetDeviceStatus(pointer_t<X_NUI_DEVICE_STATUS> status_ptr) {
|
||||
status_ptr.Zero();
|
||||
status_ptr->status = 0; // Not connected.
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamNuiGetDeviceStatus, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamNuiGetDeviceStatus, kNone, kStub);
|
||||
|
||||
dword_result_t XamShowNuiTroubleshooterUI(unknown_t unk1, unknown_t unk2,
|
||||
unknown_t unk3) {
|
||||
@@ -61,7 +61,7 @@ dword_result_t XamShowNuiTroubleshooterUI(unknown_t unk1, unknown_t unk2,
|
||||
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamShowNuiTroubleshooterUI, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamShowNuiTroubleshooterUI, kNone, kStub);
|
||||
|
||||
void RegisterNuiExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -285,7 +285,7 @@ dword_result_t XamShowKeyboardUI(dword_t user_index, dword_t flags,
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamShowKeyboardUI, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamShowKeyboardUI, kUI, kImplemented);
|
||||
|
||||
dword_result_t XamShowDeviceSelectorUI(dword_t user_index, dword_t content_type,
|
||||
dword_t content_flags,
|
||||
@@ -316,7 +316,7 @@ dword_result_t XamShowDeviceSelectorUI(dword_t user_index, dword_t content_type,
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamShowDeviceSelectorUI, ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamShowDeviceSelectorUI, kUI, kImplemented);
|
||||
|
||||
SHIM_CALL XamShowDirtyDiscErrorUI_shim(PPCContext* ppc_context,
|
||||
KernelState* kernel_state) {
|
||||
|
||||
@@ -32,8 +32,7 @@ X_HRESULT_result_t XamUserGetXUID(dword_t user_index, dword_t unk,
|
||||
}
|
||||
return X_E_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserGetXUID,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserGetXUID, kUserProfiles, kImplemented);
|
||||
|
||||
dword_result_t XamUserGetSigninState(dword_t user_index) {
|
||||
// Yield, as some games spam this.
|
||||
@@ -50,8 +49,7 @@ dword_result_t XamUserGetSigninState(dword_t user_index) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserGetSigninState,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserGetSigninState, kUserProfiles, kImplemented);
|
||||
|
||||
typedef struct {
|
||||
xe::be<uint64_t> xuid;
|
||||
@@ -80,8 +78,7 @@ X_HRESULT_result_t XamUserGetSigninInfo(dword_t user_index, dword_t flags,
|
||||
std::strncpy(info->name, user_profile->name().data(), 15);
|
||||
return X_E_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserGetSigninInfo,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserGetSigninInfo, kUserProfiles, kImplemented);
|
||||
|
||||
dword_result_t XamUserGetName(dword_t user_index, lpstring_t buffer,
|
||||
dword_t buffer_len) {
|
||||
@@ -92,8 +89,7 @@ dword_result_t XamUserGetName(dword_t user_index, lpstring_t buffer,
|
||||
std::strncpy(buffer, user_profile->name().data(), buffer_len);
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserGetName,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserGetName, kUserProfiles, kImplemented);
|
||||
|
||||
typedef struct {
|
||||
xe::be<uint32_t> setting_count;
|
||||
@@ -227,8 +223,7 @@ dword_result_t XamUserReadProfileSettings(
|
||||
}
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserReadProfileSettings,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserReadProfileSettings, kUserProfiles, kImplemented);
|
||||
|
||||
typedef struct {
|
||||
xe::be<uint32_t> from;
|
||||
@@ -332,8 +327,7 @@ dword_result_t XamUserWriteProfileSettings(
|
||||
}
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserWriteProfileSettings,
|
||||
ExportTag::kUserProfiles | ExportTag::kImplemented);
|
||||
DECLARE_XAM_EXPORT1(XamUserWriteProfileSettings, kUserProfiles, kImplemented);
|
||||
|
||||
dword_result_t XamUserCheckPrivilege(dword_t user_index, dword_t mask,
|
||||
lpdword_t out_value) {
|
||||
@@ -351,8 +345,7 @@ dword_result_t XamUserCheckPrivilege(dword_t user_index, dword_t mask,
|
||||
*out_value = 0;
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserCheckPrivilege,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserCheckPrivilege, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserContentRestrictionGetFlags(dword_t user_index,
|
||||
lpdword_t out_flags) {
|
||||
@@ -370,8 +363,7 @@ dword_result_t XamUserContentRestrictionGetFlags(dword_t user_index,
|
||||
*out_flags = 0;
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserContentRestrictionGetFlags,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserContentRestrictionGetFlags, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserContentRestrictionGetRating(dword_t user_index,
|
||||
dword_t unk1,
|
||||
@@ -393,8 +385,7 @@ dword_result_t XamUserContentRestrictionGetRating(dword_t user_index,
|
||||
*out_unk3 = 0;
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserContentRestrictionGetRating,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserContentRestrictionGetRating, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserContentRestrictionCheckAccess(dword_t user_index,
|
||||
dword_t unk1, dword_t unk2,
|
||||
@@ -411,8 +402,7 @@ dword_result_t XamUserContentRestrictionCheckAccess(dword_t user_index,
|
||||
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserContentRestrictionCheckAccess,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserContentRestrictionCheckAccess, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserAreUsersFriends(dword_t user_index, dword_t unk1,
|
||||
dword_t unk2, lpdword_t out_value,
|
||||
@@ -446,8 +436,7 @@ dword_result_t XamUserAreUsersFriends(dword_t user_index, dword_t unk1,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserAreUsersFriends,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamUserAreUsersFriends, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamShowSigninUI(dword_t unk, dword_t unk_mask) {
|
||||
// Mask values vary. Probably matching user types? Local/remote?
|
||||
@@ -455,8 +444,7 @@ dword_result_t XamShowSigninUI(dword_t unk, dword_t unk_mask) {
|
||||
kernel_state()->BroadcastNotification(0x00000009, 0);
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamShowSigninUI,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamShowSigninUI, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamUserCreateAchievementEnumerator(dword_t title_id,
|
||||
dword_t user_index,
|
||||
@@ -476,8 +464,8 @@ dword_result_t XamUserCreateAchievementEnumerator(dword_t title_id,
|
||||
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamUserCreateAchievementEnumerator,
|
||||
ExportTag::kUserProfiles | ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XamUserCreateAchievementEnumerator, kUserProfiles,
|
||||
kSketchy);
|
||||
|
||||
dword_result_t XamParseGamerTileKey(lpdword_t key_ptr, lpdword_t out1_ptr,
|
||||
lpdword_t out2_ptr, lpdword_t out3_ptr) {
|
||||
@@ -486,8 +474,7 @@ dword_result_t XamParseGamerTileKey(lpdword_t key_ptr, lpdword_t out1_ptr,
|
||||
*out3_ptr = 0xC0DE0003;
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamParseGamerTileKey,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamParseGamerTileKey, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamReadTileToTexture(dword_t unk1, dword_t unk2, dword_t unk3,
|
||||
dword_t unk4, lpvoid_t buffer_ptr,
|
||||
@@ -505,8 +492,7 @@ dword_result_t XamReadTileToTexture(dword_t unk1, dword_t unk2, dword_t unk3,
|
||||
}
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamReadTileToTexture,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamReadTileToTexture, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamWriteGamerTile(dword_t arg1, dword_t arg2, dword_t arg3,
|
||||
dword_t arg4, dword_t arg5,
|
||||
@@ -518,23 +504,20 @@ dword_result_t XamWriteGamerTile(dword_t arg1, dword_t arg2, dword_t arg3,
|
||||
}
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamWriteGamerTile,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamWriteGamerTile, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamSessionCreateHandle(lpdword_t handle_ptr) {
|
||||
*handle_ptr = 0xCAFEDEAD;
|
||||
return X_ERROR_SUCCESS;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamSessionCreateHandle,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamSessionCreateHandle, kUserProfiles, kStub);
|
||||
|
||||
dword_result_t XamSessionRefObjByHandle(dword_t handle, lpdword_t obj_ptr) {
|
||||
assert_true(handle == 0xCAFEDEAD);
|
||||
*obj_ptr = 0;
|
||||
return X_ERROR_FUNCTION_FAILED;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamSessionRefObjByHandle,
|
||||
ExportTag::kUserProfiles | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamSessionRefObjByHandle, kUserProfiles, kStub);
|
||||
|
||||
} // namespace xam
|
||||
} // namespace kernel
|
||||
|
||||
@@ -22,10 +22,10 @@ void XGetVideoMode(pointer_t<X_VIDEO_MODE> video_mode) {
|
||||
// TODO(benvanik): actually check to see if these are the same.
|
||||
xboxkrnl::VdQueryVideoMode(std::move(video_mode));
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XGetVideoMode, ExportTag::kVideo | ExportTag::kSketchy);
|
||||
DECLARE_XAM_EXPORT1(XGetVideoMode, kVideo, ExportTag::kSketchy);
|
||||
|
||||
dword_result_t XGetVideoCapabilities() { return 0; }
|
||||
DECLARE_XAM_EXPORT(XGetVideoCapabilities, ExportTag::kVideo | ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XGetVideoCapabilities, kVideo, kStub);
|
||||
|
||||
void RegisterVideoExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
@@ -21,7 +21,7 @@ dword_result_t XamVoiceIsActiveProcess() {
|
||||
// Returning 0 here will short-circuit a bunch of voice stuff.
|
||||
return 0;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamVoiceIsActiveProcess, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamVoiceIsActiveProcess, kNone, kStub);
|
||||
|
||||
dword_result_t XamVoiceCreate(unknown_t unk1, // 0
|
||||
unknown_t unk2, // 0xF
|
||||
@@ -30,13 +30,13 @@ dword_result_t XamVoiceCreate(unknown_t unk1, // 0
|
||||
out_voice_ptr.Zero();
|
||||
return X_ERROR_ACCESS_DENIED;
|
||||
}
|
||||
DECLARE_XAM_EXPORT(XamVoiceCreate, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamVoiceCreate, kNone, kStub);
|
||||
|
||||
dword_result_t XamVoiceClose(lpunknown_t voice_ptr) { return 0; }
|
||||
DECLARE_XAM_EXPORT(XamVoiceClose, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamVoiceClose, kNone, kStub);
|
||||
|
||||
dword_result_t XamVoiceHeadsetPresent(lpunknown_t voice_ptr) { return 0; }
|
||||
DECLARE_XAM_EXPORT(XamVoiceHeadsetPresent, ExportTag::kStub);
|
||||
DECLARE_XAM_EXPORT1(XamVoiceHeadsetPresent, kNone, kStub);
|
||||
|
||||
void RegisterVoiceExports(xe::cpu::ExportResolver* export_resolver,
|
||||
KernelState* kernel_state) {}
|
||||
|
||||
Reference in New Issue
Block a user