#pragma once #include "TLSStorage.h" #include #include #include #include #include #ifndef _CONTENT_PACKAGE #define DEBUG_PRINTF(fmt, arg...) printf(fmt, ## arg) #else #define DEBUG_PRINTF(fmt, arg...) (void)0 #endif char* getConsoleHomePath(); char* getUsrDirPath(); char* getConsoleHomePathBDPatch(); char* getUsrDirPathBDPatch(); char* getDirName(); DWORD TlsAlloc(VOID); LPVOID TlsGetValue(DWORD dwTlsIndex); BOOL TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue); typedef struct _RECT { LONG left; LONG top; LONG right; LONG bottom; } RECT, *PRECT; typedef void ID3D11Device; typedef void ID3D11DeviceContext; typedef void IDXGISwapChain; typedef RECT D3D11_RECT; typedef void ID3D11Buffer; typedef DWORD (*PTHREAD_START_ROUTINE)( LPVOID lpThreadParameter); typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; typedef int errno_t; // typedef struct _RTL_CRITICAL_SECTION { // // // // The following field is used for blocking when there is contention for // // the resource // // // // union { // ULONG_PTR RawEvent[4]; // } Synchronization; // // // // // The following three fields control entering and exiting the critical // // section for the resource // // // // LONG LockCount; // LONG RecursionCount; // HANDLE OwningThread; // } RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION; typedef sys_lwmutex_t RTL_CRITICAL_SECTION; typedef sys_lwmutex_t* PRTL_CRITICAL_SECTION; typedef RTL_CRITICAL_SECTION CRITICAL_SECTION; typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION; typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; void EnterCriticalSection(CRITICAL_SECTION* _c); void LeaveCriticalSection(CRITICAL_SECTION* _c); void InitializeCriticalSection(CRITICAL_SECTION* _c); void DeleteCriticalSection(CRITICAL_SECTION* _c); HANDLE CreateEvent(void* lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName); VOID Sleep(DWORD dwMilliseconds); BOOL SetThreadPriority(HANDLE hThread, int nPriority); DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); LONG InterlockedCompareExchangeRelease(LONG volatile *Destination, LONG Exchange,LONG Comperand ); VOID InitializeCriticalSection(PCRITICAL_SECTION CriticalSection); VOID InitializeCriticalSectionAndSpinCount(PCRITICAL_SECTION CriticalSection, ULONG SpinCount); VOID DeleteCriticalSection(PCRITICAL_SECTION CriticalSection); VOID EnterCriticalSection(PCRITICAL_SECTION CriticalSection); VOID LeaveCriticalSection(PCRITICAL_SECTION CriticalSection); ULONG TryEnterCriticalSection(PCRITICAL_SECTION CriticalSection); DWORD WaitForMultipleObjects(DWORD nCount, CONST HANDLE *lpHandles,BOOL bWaitAll,DWORD dwMilliseconds); LONG64 InterlockedCompareExchangeRelease64(LONG64 volatile *Destination, LONG64 Exchange, LONG64 Comperand); BOOL CloseHandle(HANDLE hObject); BOOL SetEvent(HANDLE hEvent); HMODULE GetModuleHandle(LPCSTR lpModuleName); HANDLE CreateThread( void* lpThreadAttributes, DWORD dwStackSize, void* lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); DWORD ResumeThread( HANDLE hThread ); sys_ppu_thread_t GetCurrentThreadId(VOID); DWORD WaitForMultipleObjectsEx(DWORD nCount,CONST HANDLE *lpHandles,BOOL bWaitAll,DWORD dwMilliseconds,BOOL bAlertable ); BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode); LPVOID VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); BOOL VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); DWORD GetFileSize( HANDLE hFile, LPDWORD lpFileSizeHigh ); BOOL GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER lpFileSize ); BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped ); BOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); #define INVALID_SET_FILE_POINTER false BOOL SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); HANDLE CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); #define CreateFile CreateFileA BOOL CreateDirectoryA(LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes); #define CreateDirectory CreateDirectoryA BOOL DeleteFileA(LPCSTR lpFileName); #define DeleteFile DeleteFileA DWORD GetFileAttributesA(LPCSTR lpFileName); #define GetFileAttributes GetFileAttributesA BOOL MoveFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName); #define MoveFile MoveFileA #define MAX_PATH 260 void __debugbreak(); VOID DebugBreak(VOID); enum D3D11_BLEND { D3D11_BLEND_ZERO = 1, D3D11_BLEND_ONE = 2, D3D11_BLEND_SRC_COLOR = 3, D3D11_BLEND_INV_SRC_COLOR = 4, D3D11_BLEND_SRC_ALPHA = 5, D3D11_BLEND_INV_SRC_ALPHA = 6, D3D11_BLEND_DEST_ALPHA = 7, D3D11_BLEND_INV_DEST_ALPHA = 8, D3D11_BLEND_DEST_COLOR = 9, D3D11_BLEND_INV_DEST_COLOR = 10, D3D11_BLEND_SRC_ALPHA_SAT = 11, D3D11_BLEND_BLEND_FACTOR = 14, D3D11_BLEND_INV_BLEND_FACTOR = 15, D3D11_BLEND_SRC1_COLOR = 16, D3D11_BLEND_INV_SRC1_COLOR = 17, D3D11_BLEND_SRC1_ALPHA = 18, D3D11_BLEND_INV_SRC1_ALPHA = 19 }; enum D3D11_COMPARISON_FUNC { D3D11_COMPARISON_NEVER = 1, D3D11_COMPARISON_LESS = 2, D3D11_COMPARISON_EQUAL = 3, D3D11_COMPARISON_LESS_EQUAL = 4, D3D11_COMPARISON_GREATER = 5, D3D11_COMPARISON_NOT_EQUAL = 6, D3D11_COMPARISON_GREATER_EQUAL = 7, D3D11_COMPARISON_ALWAYS = 8 }; typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME; VOID GetSystemTime( LPSYSTEMTIME lpSystemTime); BOOL FileTimeToSystemTime(CONST FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime); BOOL SystemTimeToFileTime(CONST SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime); VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); typedef struct _MEMORYSTATUS { DWORD dwLength; DWORD dwMemoryLoad; SIZE_T dwTotalPhys; SIZE_T dwAvailPhys; SIZE_T dwTotalPageFile; SIZE_T dwAvailPageFile; SIZE_T dwTotalVirtual; SIZE_T dwAvailVirtual; } MEMORYSTATUS, *LPMEMORYSTATUS; #define WINAPI #define CREATE_SUSPENDED 0x00000004 #define THREAD_BASE_PRIORITY_LOWRT 15 // value that gets a thread to LowRealtime-1 #define THREAD_BASE_PRIORITY_MAX 2 // maximum thread base priority boost #define THREAD_BASE_PRIORITY_MIN -2 // minimum thread base priority boost #define THREAD_BASE_PRIORITY_IDLE -15 // value that gets a thread to idle #define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN #define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1) #define THREAD_PRIORITY_NORMAL 0 #define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX #define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1) #define THREAD_PRIORITY_ERROR_RETURN (MAXLONG) #define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT #define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE #define WAIT_TIMEOUT 258L #define STATUS_ABANDONED_WAIT_0 ((DWORD )0x00000080L) #define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0 ) + 0 ) #define MAXUINT_PTR (~((UINT_PTR)0)) #define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1)) #define MININT_PTR (~MAXINT_PTR) #define MAXULONG_PTR (~((ULONG_PTR)0)) #define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1)) #define MINLONG_PTR (~MAXLONG_PTR) #define MAXUHALF_PTR ((UHALF_PTR)~0) #define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1)) #define MINHALF_PTR (~MAXHALF_PTR) #define INVALID_HANDLE_VALUE ((HANDLE)-1) // // Generic test for success on any status value (non-negative numbers // indicate success). // #define HRESULT_SUCCEEDED(Status) ((HRESULT)(Status) >= 0) // // and the inverse // // #define _HRESULT_TYPEDEF_(_sc) _sc #define FAILED(Status) ((HRESULT)(Status)<0) // #define MAKE_HRESULT(sev,fac,code) \ // ((HRESULT) (((unsigned int)(sev)<<31) | ((unsigned int)(fac)<<16) | ((unsigned int)(code))) ) // #define MAKE_SCODE(sev,fac,code) \ // ((SCODE) (((unsigned int)(sev)<<31) | ((unsigned int)(fac)<<16) | ((unsigned int)(code))) ) // #define E_FAIL _HRESULT_TYPEDEF_(0x80004005L) // #define E_ABORT _HRESULT_TYPEDEF_(0x80004004L) // #define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002L) #define GENERIC_READ (0x80000000L) #define GENERIC_WRITE (0x40000000L) #define GENERIC_EXECUTE (0x20000000L) #define GENERIC_ALL (0x10000000L) #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define FILE_SHARE_DELETE 0x00000004 #define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 #define FILE_ATTRIBUTE_DEVICE 0x00000040 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 #define FILE_FLAG_WRITE_THROUGH 0x80000000 #define FILE_FLAG_OVERLAPPED 0x40000000 #define FILE_FLAG_NO_BUFFERING 0x20000000 #define FILE_FLAG_RANDOM_ACCESS 0x10000000 #define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000 #define FILE_FLAG_DELETE_ON_CLOSE 0x04000000 #define FILE_FLAG_BACKUP_SEMANTICS 0x02000000 #define FILE_BEGIN 0 #define FILE_CURRENT 1 #define FILE_END 2 #define CREATE_NEW 1 #define CREATE_ALWAYS 2 #define OPEN_EXISTING 3 #define OPEN_ALWAYS 4 #define TRUNCATE_EXISTING 5 #define PAGE_NOACCESS 0x01 #define PAGE_READONLY 0x02 #define PAGE_READWRITE 0x04 #define PAGE_WRITECOPY 0x08 #define PAGE_EXECUTE 0x10 #define PAGE_EXECUTE_READ 0x20 #define PAGE_EXECUTE_READWRITE 0x40 #define PAGE_EXECUTE_WRITECOPY 0x80 #define PAGE_GUARD 0x100 #define PAGE_NOCACHE 0x200 #define PAGE_WRITECOMBINE 0x400 #define PAGE_USER_READONLY 0x1000 #define PAGE_USER_READWRITE 0x2000 #define MEM_COMMIT 0x1000 #define MEM_RESERVE 0x2000 #define MEM_DECOMMIT 0x4000 #define MEM_RELEASE 0x8000 #define MEM_FREE 0x10000 #define MEM_PRIVATE 0x20000 #define MEM_RESET 0x80000 #define MEM_TOP_DOWN 0x100000 #define MEM_NOZERO 0x800000 #define MEM_LARGE_PAGES 0x20000000 #define MEM_HEAP 0x40000000 #define MEM_16MB_PAGES 0x80000000 #define IGNORE 0 // Ignore signal #define INFINITE 0xFFFFFFFF // Infinite timeout #define WAIT_FAILED ((DWORD)0xFFFFFFFF) #define STATUS_WAIT_0 ((DWORD )0x00000000L) #define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 ) #define STATUS_PENDING ((DWORD )0x00000103L) #define STILL_ACTIVE STATUS_PENDING DWORD GetLastError(VOID); VOID GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer); DWORD GetTickCount(); BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency); BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount); #define ERROR_SUCCESS 0L #define ERROR_IO_PENDING 997L // dderror #define ERROR_CANCELLED 1223L //#define S_OK ((HRESULT)0x00000000L) #define S_FALSE ((HRESULT)0x00000001L) #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) #define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) #define MoveMemory RtlMoveMemory #define CopyMemory RtlCopyMemory #define FillMemory RtlFillMemory #define ZeroMemory RtlZeroMemory #define CDECL #define APIENTRY #define wsprintfW swprintf #define wcsncpy_s wcsncpy #define _wcstoui64 wcstoll #define VK_ESCAPE 0x1B #define VK_RETURN 0x0D VOID OutputDebugStringW(LPCWSTR lpOutputString); VOID OutputDebugString(LPCSTR lpOutputString); VOID OutputDebugStringA(LPCSTR lpOutputString); errno_t _itoa_s(int _Value, char * _DstBuf, size_t _Size, int _Radix); errno_t _i64toa_s(__int64 _Val, char * _DstBuf, size_t _Size, int _Radix); int _wtoi(const wchar_t *_Str); #define __declspec(a) extern "C" int _wcsicmp (const wchar_t * dst, const wchar_t * src); size_t wcsnlen(const wchar_t *wcs, size_t maxsize); typedef struct _WIN32_FIND_DATAA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; CHAR cFileName[ MAX_PATH ]; CHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA; typedef WIN32_FIND_DATAA WIN32_FIND_DATA; typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA; typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA; typedef struct _WIN32_FILE_ATTRIBUTE_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA; DWORD GetFileAttributesA(LPCSTR lpFileName); #define GetFileAttributes GetFileAttributesA typedef enum _GET_FILEEX_INFO_LEVELS { GetFileExInfoStandard, GetFileExMaxInfoLevel } GET_FILEEX_INFO_LEVELS; BOOL GetFileAttributesExA(LPCSTR lpFileName,GET_FILEEX_INFO_LEVELS fInfoLevelId,LPVOID lpFileInformation); #define GetFileAttributesEx GetFileAttributesExA BOOL DeleteFileA(LPCSTR lpFileName); #define DeleteFile DeleteFileA HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData); #define FindFirstFile FindFirstFileA BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); #define FindNextFile FindNextFileA #define FindClose(hFindFile) CloseHandle(hFindFile) DWORD XGetLanguage(); DWORD XGetLocale(); DWORD XEnableGuestSignin(BOOL fEnable); #ifdef _CONTENT_PACKAGE #define PS3_STUBBED { } #else #define PS3_STUBBED { static bool bSet = false; if(!bSet){printf("missing function on PS3 : %s\n Tell MarkH about this, then press f5 to continue.", __FUNCTION__); bSet = true; assert(0);} } #endif