mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-06-06 18:31:03 +00:00
Add additional xbox structures
This commit is contained in:
parent
ae0fb21f08
commit
9d74b4ecb4
@ -2,6 +2,8 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <bit>
|
#include <bit>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -51,6 +53,16 @@
|
|||||||
#define GUEST_HANDLE(HANDLE) ((HANDLE) | 0x80000000)
|
#define GUEST_HANDLE(HANDLE) ((HANDLE) | 0x80000000)
|
||||||
#define HOST_HANDLE(HANDLE) ((HANDLE) & ~0x80000000)
|
#define HOST_HANDLE(HANDLE) ((HANDLE) & ~0x80000000)
|
||||||
|
|
||||||
|
// Return true to free the associated memory
|
||||||
|
typedef bool(*TypeDestructor_t)(void*);
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
bool DestroyObject(void* obj)
|
||||||
|
{
|
||||||
|
static_cast<T*>(obj)->~T();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct be
|
struct be
|
||||||
{
|
{
|
||||||
@ -117,12 +129,13 @@ struct be
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern "C" void* MmGetHostAddress(uint32_t ptr);
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct xpointer
|
struct xpointer
|
||||||
{
|
{
|
||||||
be<uint32_t> ptr;
|
be<uint32_t> ptr;
|
||||||
|
|
||||||
xpointer(T* ptr) : ptr(ptr)
|
xpointer(T* ptr) : ptr((uint32_t)ptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -134,7 +147,7 @@ struct xpointer
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return static_cast<T*>(ptr);
|
return reinterpret_cast<T*>(MmGetHostAddress(ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
operator T* () const
|
operator T* () const
|
||||||
@ -148,6 +161,12 @@ struct xpointer
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename TGuest>
|
||||||
|
struct HostObject
|
||||||
|
{
|
||||||
|
typedef TGuest guest_type;
|
||||||
|
};
|
||||||
|
|
||||||
typedef BYTE XBYTE;
|
typedef BYTE XBYTE;
|
||||||
typedef be<uint16_t> XWORD;
|
typedef be<uint16_t> XWORD;
|
||||||
typedef be<uint32_t> XDWORD;
|
typedef be<uint32_t> XDWORD;
|
||||||
@ -305,3 +324,100 @@ typedef struct _XKSEMAPHORE
|
|||||||
XDISPATCHER_HEADER Header;
|
XDISPATCHER_HEADER Header;
|
||||||
XDWORD Limit;
|
XDWORD Limit;
|
||||||
} XKSEMAPHORE;
|
} XKSEMAPHORE;
|
||||||
|
|
||||||
|
typedef struct _XUSER_SIGNIN_INFO {
|
||||||
|
be<ULONGLONG> xuid;
|
||||||
|
XDWORD dwField08;
|
||||||
|
XDWORD SigninState;
|
||||||
|
XDWORD dwField10;
|
||||||
|
XDWORD dwField14;
|
||||||
|
CHAR Name[16];
|
||||||
|
} XUSER_SIGNIN_INFO;
|
||||||
|
|
||||||
|
// Content types
|
||||||
|
#define XCONTENTTYPE_SAVEDATA 1
|
||||||
|
#define XCONTENTTYPE_DLC 2
|
||||||
|
#define XCONTENTTYPE_RESERVED 3
|
||||||
|
|
||||||
|
#define XCONTENT_NEW 1
|
||||||
|
#define XCONTENT_EXISTING 2
|
||||||
|
|
||||||
|
#define XCONTENT_MAX_DISPLAYNAME 128
|
||||||
|
#define XCONTENT_MAX_FILENAME 42
|
||||||
|
#define XCONTENTDEVICE_MAX_NAME 27
|
||||||
|
|
||||||
|
typedef struct _XCONTENT_DATA
|
||||||
|
{
|
||||||
|
XDWORD DeviceID;
|
||||||
|
XDWORD dwContentType;
|
||||||
|
be<WCHAR> szDisplayName[XCONTENT_MAX_DISPLAYNAME];
|
||||||
|
CHAR szFileName[XCONTENT_MAX_FILENAME];
|
||||||
|
} XCONTENT_DATA, * PXCONTENT_DATA;
|
||||||
|
|
||||||
|
typedef struct _XHOSTCONTENT_DATA : _XCONTENT_DATA
|
||||||
|
{
|
||||||
|
// This is a host exclusive type so we don't care what goes on
|
||||||
|
std::string szRoot{};
|
||||||
|
} XHOSTCONTENT_DATA, *PXHOSTCONTENT_DATA;
|
||||||
|
|
||||||
|
|
||||||
|
#define XCONTENTDEVICETYPE_HDD 1
|
||||||
|
#define XCONTENTDEVICETYPE_MU 2
|
||||||
|
|
||||||
|
typedef struct _XDEVICE_DATA
|
||||||
|
{
|
||||||
|
XDWORD DeviceID;
|
||||||
|
XDWORD DeviceType;
|
||||||
|
XQWORD ulDeviceBytes;
|
||||||
|
XQWORD ulDeviceFreeBytes;
|
||||||
|
be<WCHAR> wszName[XCONTENTDEVICE_MAX_NAME];
|
||||||
|
} XDEVICE_DATA, *PXDEVICE_DATA;
|
||||||
|
|
||||||
|
// Direct reflection of XInput structures
|
||||||
|
|
||||||
|
#define XAMINPUT_GAMEPAD_DPAD_UP 0x0001
|
||||||
|
#define XAMINPUT_GAMEPAD_DPAD_DOWN 0x0002
|
||||||
|
#define XAMINPUT_GAMEPAD_DPAD_LEFT 0x0004
|
||||||
|
#define XAMINPUT_GAMEPAD_DPAD_RIGHT 0x0008
|
||||||
|
#define XAMINPUT_GAMEPAD_START 0x0010
|
||||||
|
#define XAMINPUT_GAMEPAD_BACK 0x0020
|
||||||
|
#define XAMINPUT_GAMEPAD_LEFT_THUMB 0x0040
|
||||||
|
#define XAMINPUT_GAMEPAD_RIGHT_THUMB 0x0080
|
||||||
|
#define XAMINPUT_GAMEPAD_LEFT_SHOULDER 0x0100
|
||||||
|
#define XAMINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200
|
||||||
|
#define XAMINPUT_GAMEPAD_A 0x1000
|
||||||
|
#define XAMINPUT_GAMEPAD_B 0x2000
|
||||||
|
#define XAMINPUT_GAMEPAD_X 0x4000
|
||||||
|
#define XAMINPUT_GAMEPAD_Y 0x8000
|
||||||
|
|
||||||
|
typedef struct _XAMINPUT_GAMEPAD
|
||||||
|
{
|
||||||
|
WORD wButtons;
|
||||||
|
BYTE bLeftTrigger;
|
||||||
|
BYTE bRightTrigger;
|
||||||
|
SHORT sThumbLX;
|
||||||
|
SHORT sThumbLY;
|
||||||
|
SHORT sThumbRX;
|
||||||
|
SHORT sThumbRY;
|
||||||
|
} XAMINPUT_GAMEPAD, *PXAMINPUT_GAMEPAD;
|
||||||
|
|
||||||
|
typedef struct _XAMINPUT_VIBRATION
|
||||||
|
{
|
||||||
|
WORD wLeftMotorSpeed;
|
||||||
|
WORD wRightMotorSpeed;
|
||||||
|
} XAMINPUT_VIBRATION, * PXAMINPUT_VIBRATION;
|
||||||
|
|
||||||
|
typedef struct _XAMINPUT_CAPABILITIES
|
||||||
|
{
|
||||||
|
BYTE Type;
|
||||||
|
BYTE SubType;
|
||||||
|
WORD Flags;
|
||||||
|
XAMINPUT_GAMEPAD Gamepad;
|
||||||
|
XAMINPUT_VIBRATION Vibration;
|
||||||
|
} XAMINPUT_CAPABILITIES, * PXAMINPUT_CAPABILITIES;
|
||||||
|
|
||||||
|
typedef struct _XAMINPUT_STATE
|
||||||
|
{
|
||||||
|
DWORD dwPacketNumber;
|
||||||
|
XAMINPUT_GAMEPAD Gamepad;
|
||||||
|
} XAMINPUT_STATE, * PXAMINPUT_STATE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user