Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

522 lines
17 KiB

  1. //========= Copyright � 1996-2004, Valve LLC, All rights reserved. ============
  2. //
  3. // Purpose: XBox HAL - Game to hardware abstraction
  4. //
  5. //=============================================================================
  6. #pragma once
  7. #define XBX_BREAK(x) if (x) {DebugBreak();}
  8. //#define XBX_MAX_DPORTS 4
  9. // PS3 supports up to 7 controllers!
  10. #define XUSER_MAX_COUNT 7
  11. #define XBX_MAX_EVENTS 32
  12. #define XBX_MAX_BUTTONSAMPLE 32768
  13. #define XBX_MAX_ANALOGSAMPLE 255
  14. #define XBX_MAX_MESSAGE 1024
  15. #define XBX_MAX_PATH MAX_PATH
  16. #define XBX_MAX_RCMDLENGTH 256
  17. #define XBX_MAX_RCMDNAMELEN 32
  18. #define XBX_HDD_CLUSTERSIZE 16384
  19. #define XBX_INVALID_STORAGE_ID ((DWORD)(-1))
  20. #define XBX_STORAGE_DECLINED ((DWORD)(-2))
  21. #define XBX_INVALID_USER_ID ((DWORD)(-1))
  22. #define XBX_USER_SETTINGS_CONTAINER_DRIVE "CFG"
  23. #define XBX_USER_SAVES_CONTAINER_DRIVE "SAV"
  24. typedef uint64_t XUID;
  25. #define IsEqualXUID( a, b ) ( ( a ) == ( b ) )
  26. typedef struct {
  27. BYTE ab[8]; // xbox to xbox key identifier
  28. } XNKID;
  29. typedef struct {
  30. BYTE ab[16]; // xbox to xbox key exchange key
  31. } XNKEY;
  32. #define XCONTENT_MAX_DISPLAYNAME_LENGTH 128
  33. #define XCONTENT_MAX_FILENAME_LENGTH 42
  34. #define XCONTENTDEVICE_MAX_NAME_LENGTH 27
  35. typedef DWORD XCONTENTDEVICEID, *PXCONTENTDEVICEID;
  36. typedef struct _XCONTENT_DATA
  37. {
  38. XCONTENTDEVICEID DeviceID;
  39. DWORD dwContentType;
  40. wchar_t szDisplayName[XCONTENT_MAX_DISPLAYNAME_LENGTH];
  41. char szFileName[XCONTENT_MAX_FILENAME_LENGTH];
  42. } XCONTENT_DATA, *PXCONTENT_DATA;
  43. // could be dvd or hdd, actual device depends on source of xbe launch
  44. #define XBX_DVD_DRIVE "D:\\"
  45. #define XBX_BOOT_DRIVE "D:\\"
  46. #define XBX_SWAP_DIRECTORY "T:\\HL2\\HL2X\\SWAP\\"
  47. #define XBX_PERSISTENT_DIR "T:\\HL2\\"
  48. #define XBX_HDD_SAVE_DIRECTORY "U:\\"
  49. #define XBX_IOTHREAD_STACKSIZE 32768
  50. #define XBX_IOTHREAD_PRIORITY THREAD_PRIORITY_HIGHEST
  51. #define XBX_SCREEN_WIDTH 640
  52. #define XBX_SCREEN_HEIGHT 480
  53. #define XBOX_MINBORDERSAFE 0.04f
  54. #define XBOX_MAXBORDERSAFE 0.04f
  55. #ifndef GPU_RESOLVE_ALIGNMENT
  56. #define GPU_RESOLVE_ALIGNMENT 8
  57. #endif
  58. #define XBX_CALCSIG_TYPE XCALCSIG_FLAG_NON_ROAMABLE
  59. #define XBX_VIRTUAL_BASEDIR "r:\\hl2"
  60. #define XBX_GAMEDIR "hl2x"
  61. #if defined( _DEBUG )
  62. #define XBX_XBE_BASE_FILENAME "hl2d_xbox.xbe"
  63. #elif defined( _RELEASE )
  64. #define XBX_XBE_BASE_FILENAME "hl2r_xbox.xbe"
  65. #else
  66. #define XBX_XBE_BASE_FILENAME "hl2_xbox.xbe"
  67. #endif
  68. // Path to our running executable
  69. #define XBX_XBE_PATH XBX_BOOT_DRIVE XBX_XBE_BASE_FILENAME
  70. #define CLR_DEFAULT 0xFF000000
  71. #define CLR_WARNING 0x0000FFFF
  72. #define CLR_ERROR 0x000000FF
  73. #define XBX_ALIGN(x,y) (((x)+((y)-1))&~((y)-1))
  74. // disk space requirements
  75. #define HL2_SAVEIMAGE_BYTES ( 1024 * 70 )
  76. #define HL2_SAVEGAME_BYTES ( 1024 * 1024 * 10 )
  77. #define HL2_CONFIGFILE_BYTES XBX_HDD_CLUSTERSIZE
  78. #define HL2_PERSISTENT_BYTES_NEEDED ( HL2_CONFIGFILE_BYTES + HL2_SAVEGAME_BYTES * 2 )
  79. #define HL2_USERSAVE_BYTES_NEEDED ( HL2_SAVEGAME_BYTES + HL2_SAVEIMAGE_BYTES + XBX_GetSaveGameOverhead() )
  80. #define FILE_BEGIN 0
  81. #define FILE_CURRENT 1
  82. #define FILE_END 2
  83. typedef enum
  84. {
  85. XC_NULL,
  86. XC_NORMAL,
  87. XC_IBEAM,
  88. XC_WAIT,
  89. XC_CROSS,
  90. XC_UP,
  91. XC_SIZENWSE,
  92. XC_SIZENESW,
  93. XC_SIZEWE,
  94. XC_SIZENS,
  95. XC_SIZEALL,
  96. XC_NO,
  97. XC_HAND,
  98. XC_MAXCURSORS,
  99. } xCursor_e;
  100. typedef enum
  101. {
  102. XK_NULL,
  103. XK_BUTTON_UP,
  104. XK_BUTTON_DOWN,
  105. XK_BUTTON_LEFT,
  106. XK_BUTTON_RIGHT,
  107. XK_BUTTON_START,
  108. XK_BUTTON_BACK,
  109. XK_BUTTON_STICK1,
  110. XK_BUTTON_STICK2,
  111. XK_BUTTON_A,
  112. XK_BUTTON_B,
  113. XK_BUTTON_X,
  114. XK_BUTTON_Y,
  115. XK_BUTTON_LEFT_SHOULDER,
  116. XK_BUTTON_RIGHT_SHOULDER,
  117. XK_BUTTON_LTRIGGER,
  118. XK_BUTTON_RTRIGGER,
  119. XK_STICK1_UP,
  120. XK_STICK1_DOWN,
  121. XK_STICK1_LEFT,
  122. XK_STICK1_RIGHT,
  123. XK_STICK2_UP,
  124. XK_STICK2_DOWN,
  125. XK_STICK2_LEFT,
  126. XK_STICK2_RIGHT,
  127. XK_BUTTON_INACTIVE_START, // Special key that is passed through on disabled controllers
  128. XK_BUTTON_FIREMODE_SELECTOR_1,
  129. XK_BUTTON_FIREMODE_SELECTOR_2,
  130. XK_BUTTON_FIREMODE_SELECTOR_3,
  131. XK_BUTTON_RELOAD,
  132. XK_BUTTON_TRIGGER,
  133. XK_BUTTON_PUMP_ACTION,
  134. XK_XBUTTON_ROLL_RIGHT,
  135. XK_XBUTTON_ROLL_LEFT,
  136. XK_MAX_KEYS,
  137. } xKey_t;
  138. typedef enum
  139. {
  140. XVRB_NONE, // off
  141. XVRB_ERROR, // fatal error
  142. XVRB_ALWAYS, // no matter what
  143. XVRB_WARNING, // non-fatal warnings
  144. XVRB_STATUS, // status reports
  145. XVRB_ALL,
  146. } xverbose_e;
  147. typedef enum
  148. {
  149. XOF_READ = 0x01, // read access
  150. XOF_WRITE = 0x02, // write access
  151. XOF_CREATE = 0x04, // create if not exist
  152. } xopenfile_e;
  153. typedef enum
  154. {
  155. XSF_SET = FILE_BEGIN,
  156. XSF_CUR = FILE_CURRENT,
  157. XSF_END = FILE_END,
  158. } xseekfile_e;
  159. typedef enum
  160. {
  161. XFA_LOCALONLY,
  162. XFA_REMOTEONLY,
  163. XFA_LOCALFIRST,
  164. } xFileAccess_e;
  165. typedef enum
  166. {
  167. XEV_NULL,
  168. XEV_KEY,
  169. XEV_REMOTECMD,
  170. XEV_LISTENER_NOTIFICATION,
  171. XEV_QUIT,
  172. XEV_GAMEPAD_UNPLUGGED,
  173. XEV_GAMEPAD_INSERTED,
  174. } xevent_e;
  175. typedef struct xevent_s
  176. {
  177. xevent_e event;
  178. int arg1;
  179. int arg2;
  180. int arg3;
  181. uint64 sysutil_status;
  182. uint64 sysutil_param;
  183. } xevent_t;
  184. typedef struct xevent_SYS_SIGNINCHANGED_s
  185. {
  186. XUID xuid[ XUSER_MAX_COUNT ];
  187. int state[ XUSER_MAX_COUNT ];
  188. DWORD dwParam;
  189. } xevent_SYS_SIGNINCHANGED_t;
  190. typedef struct ps3syscbckeventhdlr_s
  191. {
  192. int (*pfnHandler)( xevent_t const &ev );
  193. } ps3syscbckeventhdlr_t;
  194. typedef enum
  195. {
  196. MDIR_NULL = 0x00,
  197. MDIR_UP = 0x01,
  198. MDIR_DOWN = 0x02,
  199. MDIR_LEFT = 0x04,
  200. MDIR_RIGHT = 0x08,
  201. } xMouseDir_e;
  202. typedef struct
  203. {
  204. const char *pName;
  205. const char *pGroupName;
  206. const char *pFormatName;
  207. int size;
  208. int width;
  209. int height;
  210. int depth;
  211. int numLevels;
  212. int binds;
  213. int refCount;
  214. int sRGB;
  215. int edram;
  216. int procedural;
  217. int cacheableState;
  218. int cacheableSize;
  219. int final;
  220. int failed;
  221. int pwl;
  222. int reduced;
  223. } xTextureList_t;
  224. typedef struct
  225. {
  226. const char *pName;
  227. const char *pShaderName;
  228. int refCount;
  229. } xMaterialList_t;
  230. typedef struct
  231. {
  232. char name[MAX_PATH];
  233. char formatName[32];
  234. int rate;
  235. int bits;
  236. int channels;
  237. int looped;
  238. int dataSize;
  239. int numSamples;
  240. int streamed;
  241. int quality;
  242. } xSoundList_t;
  243. typedef struct
  244. {
  245. float position[3];
  246. float angle[3];
  247. char mapPath[256];
  248. char savePath[256];
  249. int build;
  250. int skill;
  251. char details[1024];
  252. } xMapInfo_t;
  253. /******************************************************************************
  254. XBX_CONSOLE.CPP
  255. ******************************************************************************/
  256. extern int XBX_rAddCommands(int numCommands, const char* commands[], const char* help[]);
  257. extern int XBX_rTextureList(int nTextures, const xTextureList_t* pXTextureList);
  258. extern int XBX_rTimeStampLog(float time, const char *pString);
  259. #define XBX_rMaterialList if ( !g_pValvePS3Console ); else g_pValvePS3Console->MaterialList //(int nMaterials, const xMaterialList_t* pXMaterialList);
  260. // inline int XBX_rSoundList(int nSounds, const xSoundList_t* pXSoundList) { return g_pValvePS3Console ? g_pValvePS3Console->SoundList( nSounds, pXSoundList ) : -1 ; }
  261. #define XBX_rSoundList if ( !g_pValvePS3Console ); else g_pValvePS3Console->SoundList
  262. extern int XBX_rMemDump( int nStatsID );
  263. #define XBX_rMapInfo if ( !g_pValvePS3Console ) ; else g_pValvePS3Console->MapInfo //( xMapInfo_t *pMapInfo ) { return g_pValvePS3Console ? g_pValvePS3Console->MapInfo( pMapInfo ) : -1 ; }
  264. /******************************************************************************
  265. XBX_DEBUG.CPP
  266. ******************************************************************************/
  267. // extern void XBX_SendRemoteCommand(const char* dbgCommand, bool async);
  268. #define XBX_SendRemoteCommand if ( !g_pValvePS3Console ) ; else g_pValvePS3Console->SendRemoteCommand
  269. #define XBX_SendPrefixedMsg if ( !g_pValvePS3Console ) ; else g_pValvePS3Console->SendPrefixedDECIMessage
  270. // extern void XBX_DebugString(xverbose_e verbose, COLORREF color, const char* format, ...);
  271. #define XBX_DebugString if ( !g_pValvePS3Console ) ; else g_pValvePS3Console->DebugString
  272. extern void XBX_SetVerbose(xverbose_e verbose);
  273. extern void XBX_InitDebug(void);
  274. extern void XBX_Log( const char *pString );
  275. extern bool g_xbx_bNoVXConsole;
  276. /******************************************************************************
  277. XBX_DEVICES.CPP
  278. ******************************************************************************/
  279. extern void XBX_InitDevices(void);
  280. extern void XBX_SampleDevices(void);
  281. extern void XBX_SetRumble( float fLeftMotor, float fRightMotor );
  282. extern void XBX_StopRumble( void );
  283. extern void XBX_SetActiveController( int port );
  284. extern int XBX_GetActiveController();
  285. extern bool XBX_IsControllerValid( int port );
  286. /******************************************************************************
  287. XBX_DISPLAY.CPP
  288. ******************************************************************************/
  289. extern u32_t XBX_GetDisplayTime(void);
  290. extern void XBX_CreateDisplay(void);
  291. extern void XBX_BeginFrame(void);
  292. extern void XBX_EndFrame(void);
  293. //EAPS3extern void XBX_HookD3DDevice(IDirect3DDevice8* pD3DDevice);
  294. //EAPS3extern IDirect3DDevice8 *g_xbx_pD3DDevice;
  295. extern u32_t g_xbx_numVBlanks;
  296. extern u32_t g_xbx_frameTime;
  297. extern int g_xbx_numFrames;
  298. /******************************************************************************
  299. XBX_FILEIO.CPP
  300. ******************************************************************************/
  301. enum xFileDevice_e
  302. {
  303. XFD_NULL,
  304. XFD_LOCALHDD,
  305. XFD_REMOTEHDD,
  306. XFD_DVDROM,
  307. XFD_TITLE_PERSISTENT_HDD,
  308. };
  309. enum XFileMode_t
  310. {
  311. XFM_BINARY,
  312. XFM_TEXT
  313. };
  314. //EAPS3 : XBox structure
  315. struct WIN32_FIND_DATA
  316. {
  317. };
  318. //EAPS3 : XBox structure
  319. struct XGAME_FIND_DATA
  320. {
  321. };
  322. extern void XBX_FixupFilename(const char* input, char* output, xFileDevice_e& outFileDevice, bool bWarnInvalid = true);
  323. extern void XBX_SetRemotePath(const char* remotePath);
  324. extern void XBX_SetLocalPath(const char* localPath);
  325. extern const char *XBX_GetLocalPath();
  326. extern FILE* XBX_fopen(const char* filename, const char* options);
  327. extern int XBX_setvbuf( FILE *fp, char *,int mode, size_t size );
  328. extern int XBX_fclose(FILE* fp);
  329. extern int XBX_fseek(FILE *fp, long pos, int seekType);
  330. extern long XBX_ftell(FILE *fp);
  331. extern int XBX_feof(FILE *fp);
  332. extern size_t XBX_fread(void *dest, size_t size, size_t count, FILE *fp);
  333. extern size_t XBX_fwrite(const void *src, size_t size, size_t count, FILE *fp);
  334. extern bool XBX_setmode( FILE *fp, int mode );
  335. extern size_t XBX_vfprintf(FILE *fp, const char *fmt, va_list list);
  336. extern int XBX_ferror(FILE *fp);
  337. extern int XBX_fflush(FILE *fp);
  338. extern char* XBX_fgets(char *dest, int destSize, FILE *fp);
  339. extern int XBX_stat(const char *path, struct _stat *buf);
  340. //extern int XBX_unlink(const char* filename);
  341. extern int XBX_rename(const char* pszFrom, const char* pszTo);
  342. extern HANDLE XBX_FindFirstFile(const char *findname, WIN32_FIND_DATA *dat);
  343. extern BOOL XBX_FindNextFile(HANDLE handle, WIN32_FIND_DATA *dat);
  344. extern BOOL XBX_FindClose(HANDLE handle);
  345. extern void XBX_SetFileAccess(xFileAccess_e mode);
  346. extern void XBX_EnableFileSync(bool bSync);
  347. //extern int XBX_mkdir( const char * );
  348. extern void XBX_rFileSync(const char *pFileName);
  349. extern DWORD XBX_GetSigSize( DWORD sigType );
  350. extern void XBX_CalculateSignature( BYTE *buff, void *pSig, DWORD buffSize, DWORD sigType );
  351. extern bool XBX_ValidateSignature( BYTE *pBuffer, DWORD size, DWORD sigType );
  352. extern bool g_xbx_bFileSync;
  353. extern DWORD XBX_GetSigSize( DWORD sigType );
  354. extern void XBX_CalculateSignature( BYTE *buff, void *pSig, DWORD buffSize, DWORD sigType );
  355. extern bool XBX_ValidateSignature( BYTE *pBuffer, DWORD size, DWORD sigType );
  356. extern bool XBX_SaveFileExists( const wchar_t *pName, XGAME_FIND_DATA *fileData );
  357. extern bool XBX_SaveNumberExists( const int number, XGAME_FIND_DATA *fileData );
  358. /******************************************************************************
  359. XBX_MEMORY.CPP
  360. ******************************************************************************/
  361. extern void XBX_InitMemory(void);
  362. extern void XBX_EnableMemoryTrace(bool enable);
  363. extern unsigned int g_xbx_memoryD3DCost;
  364. /******************************************************************************
  365. XBX_PROFILE.CPP
  366. ******************************************************************************/
  367. class xVProfNodeItem_t;
  368. extern int XBX_rSetProfileAttributes(const char *pProfileName, int numCounters, const char *names[], COLORREF colors[]);
  369. extern void XBX_rSetProfileData( const char *pProfileName, int numCounters, unsigned int *counters );
  370. extern void XBX_rVProfNodeList( int nItems, const xVProfNodeItem_t *pItems );
  371. /******************************************************************************
  372. XBX_SYSTEM.CPP
  373. ******************************************************************************/
  374. extern void XBX_StringCopyToWide( WCHAR *pDst, const char *pSrc );
  375. extern u32_t XBX_GetSystemTime(void);
  376. ULARGE_INTEGER XBX_GetFreeBytes( const char *drive );
  377. extern unsigned int XBX_GetBlocksNeeded( const char *drive, DWORD bytesRequested );
  378. extern DWORD XBX_GetSaveGameOverhead( void );
  379. extern void XBX_Error(const char* format, ...);
  380. extern void XBX_Init();
  381. extern bool XBX_IsRetailMode();
  382. extern void XBX_RelaunchHL2( unsigned int contextCode = 0, const char *pszArgs = "", void *pRelaunchData = NULL, unsigned nBytesRelaunchData = 0 );
  383. extern bool XBX_GetRelaunchContext( unsigned int *pContextCode, __int64 *pStartTime );
  384. extern bool XBX_GetRelaunchData( void *pRelaunchData, unsigned maxBytes );
  385. extern void XBX_LaunchInstaller( unsigned int contextCode );
  386. extern void XBX_LaunchDashboard( char chDrive, int spaceNeeded );
  387. extern LPSTR g_xbx_pCmdLine;
  388. extern const char* g_xbx_version;
  389. extern bool XBX_NoXBDM();
  390. typedef HRESULT (STDCALL *DmSendNotificationStringFunc_t)(LPCSTR sz);
  391. typedef HRESULT (STDCALL *DmRegisterCommandProcessorFunc_t)(LPCSTR szProcessor, PVOID /*HACK:/needsport/ WAS:PDM_CMDPROC /Vitaliy/ */ pfn);
  392. typedef HRESULT (STDCALL *DmCaptureStackBackTraceFunc_t)(ULONG FramesToCapture, PVOID *BackTrace);
  393. typedef BOOL (STDCALL *DmIsDebuggerPresentFunc_t)(void);
  394. extern DmSendNotificationStringFunc_t CallDmSendNotificationString;
  395. extern DmRegisterCommandProcessorFunc_t CallDmRegisterCommandProcessor;
  396. extern DmCaptureStackBackTraceFunc_t CallDmCaptureStackBackTrace;
  397. extern DmIsDebuggerPresentFunc_t CallDmIsDebuggerPresent;
  398. /******************************************************************************
  399. XBX_EVENTS.CPP
  400. ******************************************************************************/
  401. // Event handling
  402. PLATFORM_INTERFACE bool XBX_NotifyCreateListener( uint64_t categories );
  403. PLATFORM_INTERFACE void XBX_QueueEvent( xevent_e event, int arg1, int arg2, int arg3 );
  404. PLATFORM_INTERFACE void XBX_ProcessEvents( void );
  405. PLATFORM_INTERFACE void XBX_DispatchEventsQueue( void );
  406. // Accessors
  407. PLATFORM_INTERFACE const char* XBX_GetLanguageString( void );
  408. PLATFORM_INTERFACE bool XBX_IsLocalized( void );
  409. PLATFORM_INTERFACE bool XBX_IsAudioLocalized( void );
  410. PLATFORM_INTERFACE const char *XBX_GetNextSupportedLanguage( const char *pLanguage, bool *pbHasAudio );
  411. PLATFORM_INTERFACE bool XBX_IsRestrictiveLanguage( void );
  412. PLATFORM_INTERFACE u32_t XBX_GetImageChangelist( void );
  413. //
  414. // Storage devices management
  415. //
  416. PLATFORM_INTERFACE void XBX_ResetStorageDeviceInfo();
  417. PLATFORM_INTERFACE DWORD XBX_DescribeStorageDevice( DWORD nStorageID );
  418. PLATFORM_INTERFACE char const *XBX_MakeStorageContainerRoot( int iController, char const *szRootName, char *pBuffer, int numBufferBytes );
  419. PLATFORM_INTERFACE DWORD XBX_GetStorageDeviceId( int iController );
  420. PLATFORM_INTERFACE void XBX_SetStorageDeviceId( int iController, DWORD id );
  421. //
  422. // Information about game primary user
  423. //
  424. PLATFORM_INTERFACE DWORD XBX_GetPrimaryUserId( void );
  425. PLATFORM_INTERFACE void XBX_SetPrimaryUserId( DWORD id );
  426. PLATFORM_INTERFACE DWORD XBX_GetPrimaryUserIsGuest( void );
  427. PLATFORM_INTERFACE void XBX_SetPrimaryUserIsGuest( DWORD bPrimaryUserIsGuest );
  428. //
  429. // Disabling and enabling input from controllers
  430. //
  431. PLATFORM_INTERFACE void XBX_ResetUserIdSlots();
  432. PLATFORM_INTERFACE void XBX_ClearUserIdSlots();
  433. //
  434. // Mapping between game slots and controllers
  435. //
  436. PLATFORM_INTERFACE int XBX_GetUserId( int nSlot );
  437. PLATFORM_INTERFACE int XBX_GetSlotByUserId( int idx );
  438. PLATFORM_INTERFACE void XBX_SetUserId( int nSlot, int idx );
  439. PLATFORM_INTERFACE void XBX_ClearSlot( int nSlot );
  440. PLATFORM_INTERFACE void XBX_ClearUserId( int idx );
  441. PLATFORM_INTERFACE DWORD XBX_GetUserIsGuest( int nSlot );
  442. PLATFORM_INTERFACE void XBX_SetUserIsGuest( int nSlot, DWORD dwUserIsGuest );
  443. //
  444. // Number of game users
  445. //
  446. PLATFORM_INTERFACE DWORD XBX_GetNumGameUsers( void );
  447. PLATFORM_INTERFACE void XBX_SetNumGameUsers( DWORD numGameUsers );
  448. //
  449. // Invite related functions
  450. //
  451. PLATFORM_INTERFACE XNKID XBX_GetInviteSessionId( void );
  452. PLATFORM_INTERFACE void XBX_SetInviteSessionId( XNKID nSessionId );
  453. PLATFORM_INTERFACE XUID XBX_GetInvitedUserXuid( void );
  454. PLATFORM_INTERFACE void XBX_SetInvitedUserXuid( XUID xuid );
  455. PLATFORM_INTERFACE DWORD XBX_GetInvitedUserId( void );
  456. PLATFORM_INTERFACE void XBX_SetInvitedUserId( DWORD nUserId );