mirror of
https://github.com/hedge-dev/XenonRecomp.git
synced 2025-04-19 10:51:18 +00:00
Add additional xbox structures
This commit is contained in:
parent
ae0fb21f08
commit
9d74b4ecb4
@ -2,6 +2,8 @@
|
||||
#include <cstdint>
|
||||
#include <type_traits>
|
||||
#include <bit>
|
||||
#include <string>
|
||||
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
@ -51,6 +53,16 @@
|
||||
#define GUEST_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>
|
||||
struct be
|
||||
{
|
||||
@ -117,12 +129,13 @@ struct be
|
||||
}
|
||||
};
|
||||
|
||||
extern "C" void* MmGetHostAddress(uint32_t ptr);
|
||||
template<typename T>
|
||||
struct xpointer
|
||||
{
|
||||
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 static_cast<T*>(ptr);
|
||||
return reinterpret_cast<T*>(MmGetHostAddress(ptr));
|
||||
}
|
||||
|
||||
operator T* () const
|
||||
@ -148,6 +161,12 @@ struct xpointer
|
||||
}
|
||||
};
|
||||
|
||||
template<typename TGuest>
|
||||
struct HostObject
|
||||
{
|
||||
typedef TGuest guest_type;
|
||||
};
|
||||
|
||||
typedef BYTE XBYTE;
|
||||
typedef be<uint16_t> XWORD;
|
||||
typedef be<uint32_t> XDWORD;
|
||||
@ -305,3 +324,100 @@ typedef struct _XKSEMAPHORE
|
||||
XDISPATCHER_HEADER Header;
|
||||
XDWORD Limit;
|
||||
} 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