From 281f7c57898367da64c1f34edd4e9a6b2e012826 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:08:55 +1000 Subject: [PATCH 1/9] Build: Add UWP configurations --- .gitignore | 4 ++ dep/msvc/vsprops/Base.props | 16 +++++-- dep/msvc/vsprops/Configurations.props | 43 +++++++++++++++++- dep/msvc/vsprops/StaticLibrary.props | 8 +++- dep/msvc/vsprops/Targets.props | 12 ++++- dep/msvc/vsprops/Toolkit.props | 4 +- src/common/common.vcxproj | 20 +++++---- src/frontend-common/frontend-common.props | 6 +-- src/frontend-common/frontend-common.vcxproj | 50 +++++++++++++++------ 9 files changed, 130 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index e49baff2e..a41dabf27 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,7 @@ __pycache__ # other repos /dep/mac + +# UWP crap +Generated Files +/packages diff --git a/dep/msvc/vsprops/Base.props b/dep/msvc/vsprops/Base.props index 1f5d32f77..b43e5326f 100644 --- a/dep/msvc/vsprops/Base.props +++ b/dep/msvc/vsprops/Base.props @@ -30,15 +30,23 @@ - - + + _HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) false - + + + NotUsing + + _UWP;%(PreprocessorDefinitions) + + + + Disabled _DEBUG;%(PreprocessorDefinitions) @@ -67,7 +75,7 @@ true - + MaxSpeed true diff --git a/dep/msvc/vsprops/Configurations.props b/dep/msvc/vsprops/Configurations.props index 9d1cad756..f05c5447d 100644 --- a/dep/msvc/vsprops/Configurations.props +++ b/dep/msvc/vsprops/Configurations.props @@ -49,18 +49,59 @@ Release x64 + + DebugUWP + ARM64 + + + DebugUWP + Win32 + + + DebugUWP + x64 + + + ReleaseUWP + ARM64 + + + ReleaseUWP + Win32 + + + ReleaseUWP + x64 + + + true + + + + $(MSBuildProjectName) $(MSBuildProjectName) - + Win32Proj 10.0 + + true + en-US + 15.0 + true + Windows Store + 10.0 + 10.0.19041.0 + 10.0.17134.0 + + $(SolutionDir)build\$(Configuration)-$(Platform)\ diff --git a/dep/msvc/vsprops/StaticLibrary.props b/dep/msvc/vsprops/StaticLibrary.props index f0cef39c4..6c8f21e65 100644 --- a/dep/msvc/vsprops/StaticLibrary.props +++ b/dep/msvc/vsprops/StaticLibrary.props @@ -8,6 +8,12 @@ StaticLibrary + + true + false + false + + @@ -19,4 +25,4 @@ - \ No newline at end of file + diff --git a/dep/msvc/vsprops/Targets.props b/dep/msvc/vsprops/Targets.props index 490f98933..2d3e2bf8f 100644 --- a/dep/msvc/vsprops/Targets.props +++ b/dep/msvc/vsprops/Targets.props @@ -1,4 +1,14 @@ - \ No newline at end of file + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + diff --git a/dep/msvc/vsprops/Toolkit.props b/dep/msvc/vsprops/Toolkit.props index c2de1e9cb..5babeaf17 100644 --- a/dep/msvc/vsprops/Toolkit.props +++ b/dep/msvc/vsprops/Toolkit.props @@ -6,10 +6,10 @@ false - + true - + false \ No newline at end of file diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj index 797d14ed2..f14160ae9 100644 --- a/src/common/common.vcxproj +++ b/src/common/common.vcxproj @@ -33,8 +33,7 @@ - true - true + true @@ -62,7 +61,9 @@ - + + true + @@ -79,7 +80,9 @@ - + + true + @@ -116,8 +119,7 @@ - true - true + true @@ -140,7 +142,7 @@ - true + true @@ -155,7 +157,9 @@ - + + true + diff --git a/src/frontend-common/frontend-common.props b/src/frontend-common/frontend-common.props index 8cd4b58d0..6cddcadca 100644 --- a/src/frontend-common/frontend-common.props +++ b/src/frontend-common/frontend-common.props @@ -12,7 +12,7 @@ - + WITH_SDL2=1;WITH_DINPUT=1;WITH_DISCORD_PRESENCE=1;%(PreprocessorDefinitions) $(SolutionDir)dep\cubeb\include;$(SolutionDir)dep\discord-rpc\include;%(AdditionalIncludeDirectories) @@ -22,5 +22,5 @@ - - \ No newline at end of file + + diff --git a/src/frontend-common/frontend-common.vcxproj b/src/frontend-common/frontend-common.vcxproj index bc3f13a9f..cddfd6f8d 100644 --- a/src/frontend-common/frontend-common.vcxproj +++ b/src/frontend-common/frontend-common.vcxproj @@ -4,9 +4,13 @@ - + + true + - + + true + @@ -14,7 +18,9 @@ - + + true + @@ -31,9 +37,15 @@ - - - + + true + + + true + + + true + @@ -41,9 +53,13 @@ - + + true + - + + true + @@ -51,7 +67,9 @@ - + + true + @@ -68,9 +86,15 @@ - - - + + true + + + true + + + true + @@ -84,4 +108,4 @@ - + \ No newline at end of file From 03ab18909a63c5ddf8b375767a8ca137f236cc83 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:09:11 +1000 Subject: [PATCH 2/9] Common: Add UWP support for helper classes --- dep/vulkan-loader/include/vulkan_loader.h | 2 + src/common/assert.cpp | 10 +- src/common/byte_stream.cpp | 15 +- src/common/crash_handler.cpp | 2 +- src/common/file_system.cpp | 284 ++++++++++++++++++++-- src/common/jit_code_buffer.cpp | 14 ++ src/common/jit_code_buffer.h | 2 + src/common/memory_arena.cpp | 13 + src/common/page_fault_handler.cpp | 7 +- src/common/timer.cpp | 2 + src/common/window_info.cpp | 2 +- src/common/window_info.h | 1 + src/common/windows_headers.h | 4 +- 13 files changed, 317 insertions(+), 41 deletions(-) diff --git a/dep/vulkan-loader/include/vulkan_loader.h b/dep/vulkan-loader/include/vulkan_loader.h index bf6eb17b4..b2b3fc9ef 100644 --- a/dep/vulkan-loader/include/vulkan_loader.h +++ b/dep/vulkan-loader/include/vulkan_loader.h @@ -20,10 +20,12 @@ #endif // require vista+ +#ifndef WINAPI_FAMILY #ifdef _WIN32_WINNT #undef _WIN32_WINNT #endif #define _WIN32_WINNT _WIN32_WINNT_VISTA +#endif #include diff --git a/src/common/assert.cpp b/src/common/assert.cpp index 03ce57d41..6d83991dc 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -3,7 +3,7 @@ #include #include -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) #include "windows_headers.h" #include #include @@ -13,7 +13,7 @@ static std::mutex s_AssertFailedMutex; static inline void FreezeThreads(void** ppHandle) { -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (hSnapshot != INVALID_HANDLE_VALUE) { @@ -43,7 +43,7 @@ static inline void FreezeThreads(void** ppHandle) static inline void ResumeThreads(void* pHandle) { -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) HANDLE hSnapshot = (HANDLE)pHandle; if (pHandle != INVALID_HANDLE_VALUE) { @@ -79,7 +79,7 @@ void Y_OnAssertFailed(const char* szMessage, const char* szFunction, const char* char szMsg[512]; std::snprintf(szMsg, sizeof(szMsg), "%s in function %s (%s:%u)", szMessage, szFunction, szFile, uLine); -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) SetConsoleTextAttribute(GetStdHandle(STD_ERROR_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); WriteConsoleA(GetStdHandle(STD_ERROR_HANDLE), szMsg, static_cast(std::strlen(szMsg)), NULL, NULL); OutputDebugStringA(szMsg); @@ -114,7 +114,7 @@ void Y_OnPanicReached(const char* szMessage, const char* szFunction, const char* char szMsg[512]; std::snprintf(szMsg, sizeof(szMsg), "%s in function %s (%s:%u)", szMessage, szFunction, szFile, uLine); -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) SetConsoleTextAttribute(GetStdHandle(STD_ERROR_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY); WriteConsoleA(GetStdHandle(STD_ERROR_HANDLE), szMsg, static_cast(std::strlen(szMsg)), NULL, NULL); OutputDebugStringA(szMsg); diff --git a/src/common/byte_stream.cpp b/src/common/byte_stream.cpp index 53ba73242..1ae2d82b7 100644 --- a/src/common/byte_stream.cpp +++ b/src/common/byte_stream.cpp @@ -884,7 +884,7 @@ std::unique_ptr ByteStream_OpenFileStream(const char* fileName, u32 if ((openMode & (BYTESTREAM_OPEN_CREATE | BYTESTREAM_OPEN_WRITE)) == BYTESTREAM_OPEN_WRITE) { // if opening with write but not create, the path must exist. - if (GetFileAttributes(fileName) == INVALID_FILE_ATTRIBUTES) + if (!FileSystem::FileExists(fileName)) return nullptr; } @@ -895,7 +895,7 @@ std::unique_ptr ByteStream_OpenFileStream(const char* fileName, u32 { // if the file exists, use r+, otherwise w+ // HACK: if we're not truncating, and the file exists (we want to only update it), we still have to use r+ - if ((openMode & BYTESTREAM_OPEN_TRUNCATE) || GetFileAttributes(fileName) == INVALID_FILE_ATTRIBUTES) + if (!FileSystem::FileExists(fileName)) { modeString[modeStringLength++] = 'w'; if (openMode & BYTESTREAM_OPEN_READ) @@ -1013,8 +1013,15 @@ std::unique_ptr ByteStream_OpenFileStream(const char* fileName, u32 DWORD desiredAccess = GENERIC_WRITE; if (openMode & BYTESTREAM_OPEN_READ) desiredAccess |= GENERIC_READ; + +#ifndef _UWP HANDLE hFile = CreateFileW(wideTemporaryFileName.c_str(), desiredAccess, FILE_SHARE_DELETE, NULL, CREATE_NEW, 0, NULL); +#else + HANDLE hFile = + CreateFile2FromAppW(wideTemporaryFileName.c_str(), desiredAccess, FILE_SHARE_DELETE, CREATE_NEW, nullptr); +#endif + if (hFile == INVALID_HANDLE_VALUE) return nullptr; @@ -1175,8 +1182,8 @@ std::unique_ptr ByteStream_OpenFileStream(const char* fileName, u32 } else // if (errno == ENOTDIR) { - // well.. someone's trying to open a fucking weird path that is comprised of both directories and files... - // I aint sticking around here to find out what disaster awaits... let fopen deal with it + // well.. someone's trying to open a fucking weird path that is comprised of both directories and + // files... I aint sticking around here to find out what disaster awaits... let fopen deal with it break; } } diff --git a/src/common/crash_handler.cpp b/src/common/crash_handler.cpp index 1db770de6..33c74b022 100644 --- a/src/common/crash_handler.cpp +++ b/src/common/crash_handler.cpp @@ -4,7 +4,7 @@ #include #include -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) #include "windows_headers.h" #include "thirdparty/StackWalker.h" diff --git a/src/common/file_system.cpp b/src/common/file_system.cpp index 2602fef97..408d0b605 100644 --- a/src/common/file_system.cpp +++ b/src/common/file_system.cpp @@ -21,6 +21,20 @@ #if defined(_WIN32) #include + +#if defined(_UWP) +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#endif + #else #include #include @@ -713,7 +727,7 @@ std::vector GetRootDirectoryList() { std::vector results; -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) char buf[256]; if (GetLogicalDriveStringsA(sizeof(buf), buf) != 0) { @@ -725,6 +739,28 @@ std::vector GetRootDirectoryList() ptr += len + 1u; } } +#elif defined(_UWP) + if (const auto install_location = winrt::Windows::ApplicationModel::Package::Current().InstalledLocation(); + install_location) + { + if (const auto path = install_location.Path(); !path.empty()) + results.push_back(StringUtil::WideStringToUTF8String(path)); + } + + if (const auto local_location = winrt::Windows::Storage::ApplicationData::Current().LocalFolder(); local_location) + { + if (const auto path = local_location.Path(); !path.empty()) + results.push_back(StringUtil::WideStringToUTF8String(path)); + } + + const auto devices = winrt::Windows::Storage::KnownFolders::RemovableDevices(); + const auto folders_task(devices.GetFoldersAsync()); + for (const auto& storage_folder : folders_task.get()) + { + const auto path = storage_folder.Path(); + if (!path.empty()) + results.push_back(StringUtil::WideStringToUTF8String(path)); + } #else const char* home_path = std::getenv("HOME"); if (home_path) @@ -772,6 +808,106 @@ FileSystem::ManagedCFilePtr OpenManagedCFile(const char* filename, const char* m return ManagedCFilePtr(OpenCFile(filename, mode), [](std::FILE* fp) { std::fclose(fp); }); } +#ifdef _UWP +std::FILE* OpenCFileUWP(const wchar_t* wfilename, const wchar_t* mode) +{ + DWORD access = 0; + DWORD share = 0; + DWORD disposition = 0; + + int flags = 0; + const wchar_t* tmode = mode; + while (*tmode) + { + if (*tmode == L'r' && *(tmode + 1) == L'+') + { + access = GENERIC_READ | GENERIC_WRITE; + share = 0; + disposition = OPEN_EXISTING; + flags |= _O_RDWR; + tmode += 2; + } + else if (*tmode == L'w' && *(tmode + 1) == L'+') + { + access = GENERIC_READ | GENERIC_WRITE; + share = 0; + disposition = CREATE_ALWAYS; + flags |= _O_RDWR | _O_CREAT | _O_TRUNC; + tmode += 2; + } + else if (*tmode == L'a' && *(tmode + 1) == L'+') + { + access = GENERIC_READ | GENERIC_WRITE; + share = 0; + disposition = CREATE_ALWAYS; + flags |= _O_RDWR | _O_APPEND | _O_CREAT | _O_TRUNC; + tmode += 2; + } + else if (*tmode == L'r') + { + access = GENERIC_READ; + share = 0; + disposition = OPEN_EXISTING; + flags |= _O_RDONLY; + tmode++; + } + else if (*tmode == L'w') + { + access = GENERIC_WRITE; + share = 0; + disposition = CREATE_ALWAYS; + flags |= _O_WRONLY | _O_CREAT | _O_TRUNC; + tmode++; + } + else if (*tmode == L'a') + { + access = GENERIC_READ | GENERIC_WRITE; + share = 0; + disposition = CREATE_ALWAYS; + flags |= _O_WRONLY | _O_APPEND | _O_CREAT | _O_TRUNC; + tmode++; + } + else if (*tmode == L'b') + { + flags |= _O_BINARY; + tmode++; + } + else + { + Log_ErrorPrintf("Unknown mode flags: '%s'", StringUtil::WideStringToUTF8String(mode).c_str()); + return nullptr; + } + } + + HANDLE hFile = CreateFileFromAppW(wfilename, access, share, nullptr, disposition, 0, nullptr); + if (hFile == INVALID_HANDLE_VALUE) + return nullptr; + + if (flags & _O_APPEND && !SetFilePointerEx(hFile, LARGE_INTEGER{}, nullptr, FILE_END)) + { + Log_ErrorPrintf("SetFilePointerEx() failed: %08X", GetLastError()); + CloseHandle(hFile); + return nullptr; + } + + int fd = _open_osfhandle(reinterpret_cast(hFile), flags); + if (fd < 0) + { + CloseHandle(hFile); + return nullptr; + } + + std::FILE* fp = _wfdopen(fd, mode); + if (!fp) + { + _close(fd); + return nullptr; + } + + return fp; +} +#endif // _UWP + std::FILE* OpenCFile(const char* filename, const char* mode) { #ifdef _WIN32 @@ -789,9 +925,16 @@ std::FILE* OpenCFile(const char* filename, const char* mode) { wfilename[wlen] = 0; wmode[wmodelen] = 0; + std::FILE* fp; if (_wfopen_s(&fp, wfilename, wmode) != 0) + { +#ifdef _UWP + return OpenCFileUWP(wfilename, wmode); +#else return nullptr; +#endif + } return fp; } @@ -1052,6 +1195,19 @@ static u32 TranslateWin32Attributes(u32 Win32Attributes) return r; } +static DWORD WrapGetFileAttributes(const wchar_t* path) +{ +#ifndef _UWP + return GetFileAttributesW(path); +#else + WIN32_FILE_ATTRIBUTE_DATA fad; + if (!GetFileAttributesExFromAppW(path, GetFileExInfoStandard, &fad)) + return INVALID_FILE_ATTRIBUTES; + + return fad.dwFileAttributes; +#endif +} + static const u32 READ_DIRECTORY_CHANGES_NOTIFY_FILTER = FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_CREATION; @@ -1064,7 +1220,7 @@ public: m_directoryChangeQueued(false) { m_bufferSize = 16384; - m_pBuffer = new byte[m_bufferSize]; + m_pBuffer = new u8[m_bufferSize]; } virtual ~ChangeNotifierWin32() @@ -1103,7 +1259,7 @@ public: // has any bytes? if (bytesRead > 0) { - const byte* pCurrentPointer = m_pBuffer; + const u8* pCurrentPointer = m_pBuffer; PathString fileName; for (;;) { @@ -1176,15 +1332,26 @@ private: HANDLE m_hDirectory; OVERLAPPED m_overlapped; bool m_directoryChangeQueued; - byte* m_pBuffer; + u8* m_pBuffer; u32 m_bufferSize; }; std::unique_ptr CreateChangeNotifier(const char* path, bool recursiveWatch) { // open the directory up - HANDLE hDirectory = CreateFileA(path, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, nullptr); + std::wstring path_wstr(StringUtil::UTF8StringToWideString(path)); +#ifndef _UWP + HANDLE hDirectory = + CreateFileW(path_wstr.c_str(), FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, nullptr); +#else + CREATEFILE2_EXTENDED_PARAMETERS ep = {}; + ep.dwSize = sizeof(ep); + ep.dwFileAttributes = FILE_ATTRIBUTE_NORMAL; + ep.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED; + HANDLE hDirectory = CreateFile2FromAppW(path_wstr.c_str(), FILE_LIST_DIRECTORY, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, OPEN_EXISTING, &ep); +#endif if (hDirectory == nullptr) return nullptr; @@ -1212,8 +1379,18 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co tempStr = StringUtil::StdStringFromFormat("%s\\*", OriginPath); } + // holder for utf-8 conversion WIN32_FIND_DATAW wfd; + std::string utf8_filename; + utf8_filename.reserve(countof(wfd.cFileName) * 2); + +#ifndef _UWP HANDLE hFind = FindFirstFileW(StringUtil::UTF8StringToWideString(tempStr).c_str(), &wfd); +#else + HANDLE hFind = FindFirstFileExFromAppW(StringUtil::UTF8StringToWideString(tempStr).c_str(), FindExInfoBasic, &wfd, + FindExSearchNameMatch, nullptr, 0); +#endif + if (hFind == INVALID_HANDLE_VALUE) return 0; @@ -1227,10 +1404,6 @@ static u32 RecursiveFindFiles(const char* OriginPath, const char* ParentPath, co wildCardMatchAll = !(std::strcmp(Pattern, "*")); } - // holder for utf-8 conversion - std::string utf8_filename; - utf8_filename.reserve(countof(wfd.cFileName) * 2); - // iterate results do { @@ -1360,6 +1533,7 @@ bool FileSystem::StatFile(const char* path, FILESYSTEM_STAT_DATA* pStatData) wpath[wlen] = 0; +#ifndef _UWP // determine attributes for the path. if it's a directory, things have to be handled differently.. DWORD fileAttributes = GetFileAttributesW(wpath); if (fileAttributes == INVALID_FILE_ATTRIBUTES) @@ -1398,6 +1572,16 @@ bool FileSystem::StatFile(const char* path, FILESYSTEM_STAT_DATA* pStatData) pStatData->ModificationTime.SetWindowsFileTime(&bhfi.ftLastWriteTime); pStatData->Size = ((u64)bhfi.nFileSizeHigh) << 32 | (u64)bhfi.nFileSizeLow; return true; +#else + WIN32_FILE_ATTRIBUTE_DATA fad; + if (!GetFileAttributesExFromAppW(wpath, GetFileExInfoStandard, &fad)) + return false; + + pStatData->Attributes = TranslateWin32Attributes(fad.dwFileAttributes); + pStatData->ModificationTime.SetWindowsFileTime(&fad.ftLastWriteTime); + pStatData->Size = ((u64)fad.nFileSizeHigh) << 32 | (u64)fad.nFileSizeLow; + return true; +#endif } bool FileSystem::StatFile(std::FILE* fp, FILESYSTEM_STAT_DATA* pStatData) @@ -1447,7 +1631,7 @@ bool FileSystem::FileExists(const char* path) wpath[wlen] = 0; // determine attributes for the path. if it's a directory, things have to be handled differently.. - DWORD fileAttributes = GetFileAttributesW(wpath); + DWORD fileAttributes = WrapGetFileAttributes(wpath); if (fileAttributes == INVALID_FILE_ATTRIBUTES) return false; @@ -1477,7 +1661,7 @@ bool FileSystem::DirectoryExists(const char* path) wpath[wlen] = 0; // determine attributes for the path. if it's a directory, things have to be handled differently.. - DWORD fileAttributes = GetFileAttributesW(wpath); + DWORD fileAttributes = WrapGetFileAttributes(wpath); if (fileAttributes == INVALID_FILE_ATTRIBUTES) return false; @@ -1495,16 +1679,21 @@ bool FileSystem::CreateDirectory(const char* Path, bool Recursive) if (wpath[0] == L'\0') return false; - // try just flat-out, might work if there's no other segments that have to be made + // try just flat-out, might work if there's no other segments that have to be made +#ifndef _UWP if (CreateDirectoryW(wpath.c_str(), nullptr)) return true; +#else + if (CreateDirectoryFromAppW(wpath.c_str(), nullptr)) + return true; +#endif // check error DWORD lastError = GetLastError(); if (lastError == ERROR_ALREADY_EXISTS) { // check the attributes - u32 Attributes = GetFileAttributesW(wpath.c_str()); + u32 Attributes = WrapGetFileAttributes(wpath.c_str()); if (Attributes != INVALID_FILE_ATTRIBUTES && Attributes & FILE_ATTRIBUTE_DIRECTORY) return true; else @@ -1523,7 +1712,13 @@ bool FileSystem::CreateDirectory(const char* Path, bool Recursive) if (wpath[i] == L'\\' || wpath[i] == L'/') { tempStr[i] = L'\0'; - if (!CreateDirectoryW(tempStr, nullptr)) + +#ifndef _UWP + const BOOL result = CreateDirectoryW(tempStr, nullptr); +#else + const BOOL result = CreateDirectoryFromAppW(tempStr, nullptr); +#endif + if (!result) { lastError = GetLastError(); if (lastError != ERROR_ALREADY_EXISTS) // fine, continue to next path segment @@ -1537,7 +1732,12 @@ bool FileSystem::CreateDirectory(const char* Path, bool Recursive) // re-create the end if it's not a separator, check / as well because windows can interpret them if (wpath[pathLength - 1] != L'\\' && wpath[pathLength - 1] != L'/') { - if (!CreateDirectoryW(wpath.c_str(), nullptr)) +#ifndef _UWP + const BOOL result = CreateDirectoryW(wpath.c_str(), nullptr); +#else + const BOOL result = CreateDirectoryFromAppW(wpath.c_str(), nullptr); +#endif + if (!result) { lastError = GetLastError(); if (lastError != ERROR_ALREADY_EXISTS) @@ -1561,14 +1761,15 @@ bool FileSystem::DeleteFile(const char* Path) return false; const std::wstring wpath(StringUtil::UTF8StringToWideString(Path)); - DWORD fileAttributes = GetFileAttributesW(wpath.c_str()); - if (fileAttributes == INVALID_FILE_ATTRIBUTES) + const DWORD fileAttributes = WrapGetFileAttributes(wpath.c_str()); + if (fileAttributes == INVALID_FILE_ATTRIBUTES || fileAttributes & FILE_ATTRIBUTE_DIRECTORY) return false; - if (!(fileAttributes & FILE_ATTRIBUTE_DIRECTORY)) - return (DeleteFileW(wpath.c_str()) == TRUE); - else - return false; +#ifndef _UWP + return (DeleteFileW(wpath.c_str()) == TRUE); +#else + return (DeleteFileFromAppW(wpath.c_str()) == TRUE); +#endif } bool FileSystem::RenamePath(const char* OldPath, const char* NewPath) @@ -1576,11 +1777,19 @@ bool FileSystem::RenamePath(const char* OldPath, const char* NewPath) const std::wstring old_wpath(StringUtil::UTF8StringToWideString(OldPath)); const std::wstring new_wpath(StringUtil::UTF8StringToWideString(NewPath)); +#ifndef _UWP if (!MoveFileExW(old_wpath.c_str(), new_wpath.c_str(), MOVEFILE_REPLACE_EXISTING)) { Log_ErrorPrintf("MoveFileEx('%s', '%s') failed: %08X", OldPath, NewPath, GetLastError()); return false; } +#else + if (!ReplaceFileFromAppW(old_wpath.c_str(), new_wpath.c_str(), nullptr, 0, nullptr, nullptr)) + { + Log_ErrorPrintf("MoveFileFromAppW('%s', '%s') failed: %08X", OldPath, NewPath, GetLastError()); + return false; + } +#endif return true; } @@ -1588,13 +1797,19 @@ bool FileSystem::RenamePath(const char* OldPath, const char* NewPath) static bool RecursiveDeleteDirectory(const std::wstring& wpath, bool Recursive) { // ensure it exists - DWORD fileAttributes = GetFileAttributesW(wpath.c_str()); - if (fileAttributes == INVALID_FILE_ATTRIBUTES || !(fileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + const DWORD fileAttributes = WrapGetFileAttributes(wpath.c_str()); + if (fileAttributes == INVALID_FILE_ATTRIBUTES || fileAttributes & FILE_ATTRIBUTE_DIRECTORY) return false; // non-recursive case just try removing the directory if (!Recursive) + { +#ifndef _UWP return (RemoveDirectoryW(wpath.c_str()) == TRUE); +#else + return (RemoveDirectoryFromAppW(wpath.c_str()) == TRUE); +#endif + } // doing a recursive delete std::wstring fileName = wpath; @@ -1602,7 +1817,12 @@ static bool RecursiveDeleteDirectory(const std::wstring& wpath, bool Recursive) // is there any files? WIN32_FIND_DATAW findData; +#ifndef _UWP HANDLE hFind = FindFirstFileW(fileName.c_str(), &findData); +#else + HANDLE hFind = + FindFirstFileExFromAppW(fileName.c_str(), FindExInfoBasic, &findData, FindExSearchNameMatch, nullptr, 0); +#endif if (hFind == INVALID_HANDLE_VALUE) return false; @@ -1634,7 +1854,12 @@ static bool RecursiveDeleteDirectory(const std::wstring& wpath, bool Recursive) else { // found a file, so delete it - if (!DeleteFileW(fileName.c_str())) +#ifndef _UWP + const BOOL result = DeleteFileW(fileName.c_str()); +#else + const BOOL result = DeleteFileFromAppW(fileName.c_str()); +#endif + if (!result) { FindClose(hFind); return false; @@ -1644,7 +1869,12 @@ static bool RecursiveDeleteDirectory(const std::wstring& wpath, bool Recursive) FindClose(hFind); // nuke the directory itself - if (!RemoveDirectoryW(wpath.c_str())) +#ifndef _UWP + const BOOL result = RemoveDirectoryW(wpath.c_str()); +#else + const BOOL result = RemoveDirectoryFromAppW(wpath.c_str()); +#endif + if (!result) return false; // done @@ -1664,8 +1894,10 @@ std::string GetProgramPath() // Fall back to the main module if this fails. HMODULE module = nullptr; +#ifndef _UWP GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, reinterpret_cast(&GetProgramPath), &module); +#endif for (;;) { diff --git a/src/common/jit_code_buffer.cpp b/src/common/jit_code_buffer.cpp index ee595833c..d59d47078 100644 --- a/src/common/jit_code_buffer.cpp +++ b/src/common/jit_code_buffer.cpp @@ -44,7 +44,21 @@ bool JitCodeBuffer::Allocate(u32 size /* = 64 * 1024 * 1024 */, u32 far_code_siz m_total_size = size + far_code_size; #if defined(_WIN32) +#if !defined(_UWP) m_code_ptr = static_cast(VirtualAlloc(nullptr, m_total_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE)); +#else + m_code_ptr = static_cast( + VirtualAlloc2FromApp(GetCurrentProcess(), nullptr, m_total_size, MEM_COMMIT, PAGE_READWRITE, nullptr, 0)); + if (m_code_ptr) + { + ULONG old_protection; + if (!VirtualProtectFromApp(m_code_ptr, m_total_size, PAGE_EXECUTE_READWRITE, &old_protection)) + { + VirtualFree(m_code_ptr, m_total_size, MEM_RELEASE); + return false; + } + } +#endif if (!m_code_ptr) { Log_ErrorPrintf("VirtualAlloc(RWX, %u) for internal buffer failed: %u", m_total_size, GetLastError()); diff --git a/src/common/jit_code_buffer.h b/src/common/jit_code_buffer.h index 3c6b210ef..e4a3f4185 100644 --- a/src/common/jit_code_buffer.h +++ b/src/common/jit_code_buffer.h @@ -9,6 +9,8 @@ public: JitCodeBuffer(void* buffer, u32 size, u32 far_code_size, u32 guard_size); ~JitCodeBuffer(); + bool IsValid() const { return (m_code_ptr != nullptr); } + bool Allocate(u32 size = 64 * 1024 * 1024, u32 far_code_size = 0); bool Initialize(void* buffer, u32 size, u32 far_code_size = 0, u32 guard_size = 0); void Destroy(); diff --git a/src/common/memory_arena.cpp b/src/common/memory_arena.cpp index d89f388dc..02d7b68f6 100644 --- a/src/common/memory_arena.cpp +++ b/src/common/memory_arena.cpp @@ -135,8 +135,13 @@ bool MemoryArena::Create(size_t size, bool writable, bool executable) #if defined(_WIN32) const DWORD protect = (writable ? (executable ? PAGE_EXECUTE_READWRITE : PAGE_READWRITE) : PAGE_READONLY); +#ifndef _UWP m_file_handle = CreateFileMappingA(INVALID_HANDLE_VALUE, nullptr, protect, Truncate32(size >> 32), Truncate32(size), file_mapping_name.c_str()); +#else + m_file_handle = CreateFileMappingFromApp(INVALID_HANDLE_VALUE, nullptr, protect, size, + StringUtil::UTF8StringToWideString(file_mapping_name).c_str()); +#endif if (!m_file_handle) { Log_ErrorPrintf("CreateFileMapping failed: %u", GetLastError()); @@ -257,8 +262,16 @@ void* MemoryArena::CreateViewPtr(size_t offset, size_t size, bool writable, bool void* base_pointer; #if defined(_WIN32) const DWORD desired_access = FILE_MAP_READ | (writable ? FILE_MAP_WRITE : 0) | (executable ? FILE_MAP_EXECUTE : 0); +#ifndef _UWP base_pointer = MapViewOfFileEx(m_file_handle, desired_access, Truncate32(offset >> 32), Truncate32(offset), size, fixed_address); +#else + // UWP does not support fixed mappings. + if (!fixed_address) + base_pointer = MapViewOfFileFromApp(m_file_handle, desired_access, offset, size); + else + base_pointer = nullptr; +#endif if (!base_pointer) return nullptr; #elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) diff --git a/src/common/page_fault_handler.cpp b/src/common/page_fault_handler.cpp index 9be882561..fce40fea7 100644 --- a/src/common/page_fault_handler.cpp +++ b/src/common/page_fault_handler.cpp @@ -78,7 +78,7 @@ static bool IsStoreInstruction(const void* ptr) } #endif -#if defined(_WIN32) && (defined(CPU_X64) || defined(CPU_AARCH64)) +#if defined(_WIN32) && !defined(_UWP) && (defined(CPU_X64) || defined(CPU_AARCH64)) static PVOID s_veh_handle; static LONG ExceptionHandler(PEXCEPTION_POINTERS exi) @@ -110,6 +110,7 @@ static LONG ExceptionHandler(PEXCEPTION_POINTERS exi) } s_in_handler = false; + return EXCEPTION_CONTINUE_SEARCH; } @@ -222,7 +223,7 @@ bool InstallHandler(void* owner, Callback callback) if (was_empty) { -#if defined(_WIN32) && (defined(CPU_X64) || defined(CPU_AARCH64)) +#if defined(_WIN32) && !defined(_UWP) && (defined(CPU_X64) || defined(CPU_AARCH64)) s_veh_handle = AddVectoredExceptionHandler(1, ExceptionHandler); if (!s_veh_handle) { @@ -279,7 +280,7 @@ bool RemoveHandler(void* owner) if (m_handlers.empty()) { -#if defined(_WIN32) && (defined(CPU_X64) || defined(CPU_AARCH64)) +#if defined(_WIN32) && !defined(_UWP) && (defined(CPU_X64) || defined(CPU_AARCH64)) RemoveVectoredExceptionHandler(s_veh_handle); s_veh_handle = nullptr; #elif defined(USE_SIGSEGV) diff --git a/src/common/timer.cpp b/src/common/timer.cpp index 22a3a10d0..79b49684d 100644 --- a/src/common/timer.cpp +++ b/src/common/timer.cpp @@ -93,6 +93,7 @@ void Timer::SleepUntil(Value value, bool exact) if (diff <= 0) return; +#ifndef _UWP HANDLE timer = GetSleepTimer(); if (timer) { @@ -110,6 +111,7 @@ void Timer::SleepUntil(Value value, bool exact) return; } } +#endif // falling back to sleep... bad. Sleep(static_cast(static_cast(diff) / 1000000)); diff --git a/src/common/window_info.cpp b/src/common/window_info.cpp index 65c8a51b7..ca2b2f901 100644 --- a/src/common/window_info.cpp +++ b/src/common/window_info.cpp @@ -2,7 +2,7 @@ #include "common/log.h" Log_SetChannel(WindowInfo); -#if defined(_WIN32) +#if defined(_WIN32) && !defined(_UWP) #include "common/windows_headers.h" #include diff --git a/src/common/window_info.h b/src/common/window_info.h index 626d54753..be1cc15b4 100644 --- a/src/common/window_info.h +++ b/src/common/window_info.h @@ -8,6 +8,7 @@ struct WindowInfo { Surfaceless, Win32, + WinRT, X11, Wayland, MacOS, diff --git a/src/common/windows_headers.h b/src/common/windows_headers.h index 9d882c640..0e242a789 100644 --- a/src/common/windows_headers.h +++ b/src/common/windows_headers.h @@ -7,11 +7,13 @@ #define NOMINMAX 1 #endif -// require vista+ +// require vista+, but don't set it when compiling for UWP +#ifndef WINAPI_FAMILY #ifdef _WIN32_WINNT #undef _WIN32_WINNT #endif #define _WIN32_WINNT _WIN32_WINNT_VISTA +#endif #include From 6251894d3c7e9a424194c6540808eea251bcd25f Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 10 Jul 2021 18:00:58 +1000 Subject: [PATCH 3/9] Common/JitCodeBuffer: Add ability to reserve non-code space --- src/common/jit_code_buffer.cpp | 38 +++++++++++++++++++++++++++++----- src/common/jit_code_buffer.h | 14 +++++++------ 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/common/jit_code_buffer.cpp b/src/common/jit_code_buffer.cpp index d59d47078..15a6dc835 100644 --- a/src/common/jit_code_buffer.cpp +++ b/src/common/jit_code_buffer.cpp @@ -171,20 +171,48 @@ void JitCodeBuffer::Destroy() if (m_owns_buffer) { #if defined(_WIN32) - VirtualFree(m_code_ptr, 0, MEM_RELEASE); + if (!VirtualFree(m_code_ptr, 0, MEM_RELEASE)) + Log_ErrorPrintf("Failed to free code pointer %p", m_code_ptr); #elif defined(__linux__) || defined(__ANDROID__) || defined(__APPLE__) || defined(__HAIKU__) || defined(__FreeBSD__) - munmap(m_code_ptr, m_total_size); + if (munmap(m_code_ptr, m_total_size) != 0) + Log_ErrorPrintf("Failed to free code pointer %p", m_code_ptr); #endif } else if (m_code_ptr) { #if defined(_WIN32) DWORD old_protect = 0; - VirtualProtect(m_code_ptr, m_total_size, m_old_protection, &old_protect); + if (!VirtualProtect(m_code_ptr, m_total_size, m_old_protection, &old_protect)) + Log_ErrorPrintf("Failed to restore protection on %p", m_code_ptr); #else - mprotect(m_code_ptr, m_total_size, m_old_protection); + if (mprotect(m_code_ptr, m_total_size, m_old_protection) != 0) + Log_ErrorPrintf("Failed to restore protection on %p", m_code_ptr); #endif } + + m_code_ptr = nullptr; + m_free_code_ptr = nullptr; + m_code_size = 0; + m_code_reserve_size = 0; + m_code_used = 0; + m_far_code_ptr = nullptr; + m_free_far_code_ptr = nullptr; + m_far_code_size = 0; + m_far_code_used = 0; + m_total_size = 0; + m_guard_size = 0; + m_old_protection = 0; + m_owns_buffer = false; +} + +void JitCodeBuffer::ReserveCode(u32 size) +{ + Assert(m_code_used == 0); + Assert(size < m_code_size); + + m_code_reserve_size += size; + m_free_code_ptr += size; + m_code_size -= size; } void JitCodeBuffer::CommitCode(u32 length) @@ -221,7 +249,7 @@ void JitCodeBuffer::Reset() { WriteProtect(false); - m_free_code_ptr = m_code_ptr + m_guard_size; + m_free_code_ptr = m_code_ptr + m_guard_size + m_code_reserve_size; m_code_used = 0; std::memset(m_free_code_ptr, 0, m_code_size); FlushInstructionCache(m_free_code_ptr, m_code_size); diff --git a/src/common/jit_code_buffer.h b/src/common/jit_code_buffer.h index e4a3f4185..72d2b88b4 100644 --- a/src/common/jit_code_buffer.h +++ b/src/common/jit_code_buffer.h @@ -16,15 +16,16 @@ public: void Destroy(); void Reset(); - u8* GetCodePointer() const { return m_code_ptr; } - u32 GetTotalSize() const { return m_total_size; } + ALWAYS_INLINE u8* GetCodePointer() const { return m_code_ptr; } + ALWAYS_INLINE u32 GetTotalSize() const { return m_total_size; } - u8* GetFreeCodePointer() const { return m_free_code_ptr; } - u32 GetFreeCodeSpace() const { return static_cast(m_code_size - m_code_used); } + ALWAYS_INLINE u8* GetFreeCodePointer() const { return m_free_code_ptr; } + ALWAYS_INLINE u32 GetFreeCodeSpace() const { return static_cast(m_code_size - m_code_used); } + void ReserveCode(u32 size); void CommitCode(u32 length); - u8* GetFreeFarCodePointer() const { return m_free_far_code_ptr; } - u32 GetFreeFarCodeSpace() const { return static_cast(m_far_code_size - m_far_code_used); } + ALWAYS_INLINE u8* GetFreeFarCodePointer() const { return m_free_far_code_ptr; } + ALWAYS_INLINE u32 GetFreeFarCodeSpace() const { return static_cast(m_far_code_size - m_far_code_used); } void CommitFarCode(u32 length); /// Adjusts the free code pointer to the specified alignment, padding with bytes. @@ -45,6 +46,7 @@ private: u8* m_code_ptr = nullptr; u8* m_free_code_ptr = nullptr; u32 m_code_size = 0; + u32 m_code_reserve_size = 0; u32 m_code_used = 0; u8* m_far_code_ptr = nullptr; From 0f911e9dbfb947c4729ec622922b1adbef8a4bfd Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 10 Jul 2021 18:01:17 +1000 Subject: [PATCH 4/9] Common/PageFaultHandler: Support for unwind exceptions Needed for UWP. --- src/common/page_fault_handler.cpp | 177 +++++++++++++++++++++++++++--- src/common/page_fault_handler.h | 8 +- 2 files changed, 168 insertions(+), 17 deletions(-) diff --git a/src/common/page_fault_handler.cpp b/src/common/page_fault_handler.cpp index fce40fea7..e3a1fda3c 100644 --- a/src/common/page_fault_handler.cpp +++ b/src/common/page_fault_handler.cpp @@ -24,8 +24,10 @@ namespace Common::PageFaultHandler { struct RegisteredHandler { - void* owner; Callback callback; + const void* owner; + void* start_pc; + u32 code_size; }; static std::vector m_handlers; static std::mutex m_handler_lock; @@ -114,6 +116,145 @@ static LONG ExceptionHandler(PEXCEPTION_POINTERS exi) return EXCEPTION_CONTINUE_SEARCH; } +u32 GetHandlerCodeSize() +{ + return 0; +} + +#elif defined(_UWP) + +// https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-160 +struct UNWIND_INFO +{ + BYTE version : 3; + BYTE flags : 5; + BYTE size_of_prologue; + BYTE count_of_unwind_codes; + BYTE frame_register : 4; + BYTE frame_offset_scaled : 4; + ULONG exception_handler_address; +}; + +struct UnwindHandler +{ + RUNTIME_FUNCTION runtime_function; + UNWIND_INFO unwind_info; + uint8_t exception_handler_code[32]; +}; + +static constexpr size_t UNWIND_HANDLER_ALLOC_SIZE = 4096; +static_assert(sizeof(UnwindHandler) <= UNWIND_HANDLER_ALLOC_SIZE); + +static EXCEPTION_DISPOSITION UnwindExceptionHandler(PEXCEPTION_RECORD ExceptionRecord, ULONG64 EstablisherFrame, + PCONTEXT ContextRecord, PDISPATCHER_CONTEXT DispatcherContext) +{ + if (s_in_handler) + return ExceptionContinueSearch; + + s_in_handler = true; + + void* const exception_pc = reinterpret_cast(DispatcherContext->ControlPc); + void* const exception_address = reinterpret_cast(ExceptionRecord->ExceptionInformation[1]); + bool const is_write = ExceptionRecord->ExceptionInformation[0] == 1; + + std::lock_guard guard(m_handler_lock); + for (const RegisteredHandler& rh : m_handlers) + { + if (static_cast(exception_pc) >= static_cast(rh.start_pc) && + static_cast(exception_pc) <= (static_cast(rh.start_pc) + rh.code_size)) + { + if (rh.callback(exception_pc, exception_address, is_write) == HandlerResult::ContinueExecution) + { + s_in_handler = false; + return ExceptionContinueExecution; + } + } + } + + s_in_handler = false; + return ExceptionContinueSearch; +} + +static PRUNTIME_FUNCTION GetRuntimeFunctionCallback(DWORD64 ControlPc, PVOID Context) +{ + std::lock_guard guard(m_handler_lock); + for (const RegisteredHandler& rh : m_handlers) + { + if (ControlPc >= reinterpret_cast(rh.start_pc) && + ControlPc <= (reinterpret_cast(rh.start_pc) + rh.code_size)) + { + return reinterpret_cast(rh.start_pc); + } + } + + return nullptr; +} + +static bool InstallFunctionTableCallback(const void* owner, void* start_pc, u32 code_size) +{ + if (code_size < UNWIND_HANDLER_ALLOC_SIZE) + { + Log_ErrorPrintf("Invalid code size: %u @ %p", code_size, UNWIND_HANDLER_ALLOC_SIZE); + return false; + } + + if (!RtlInstallFunctionTableCallback(reinterpret_cast(owner) | 0x3, reinterpret_cast(start_pc), + static_cast(code_size), &GetRuntimeFunctionCallback, nullptr, nullptr)) + { + Log_ErrorPrintf("RtlInstallFunctionTableCallback() failed: %08X", GetLastError()); + return false; + } + + // This is only valid on x86 for now. +#ifndef CPU_X64 + Log_ErrorPrint("Exception unwind codegen not implemented"); + return false; +#else + UnwindHandler* uh = static_cast(start_pc); + ULONG old_protection; + if (!VirtualProtectFromApp(uh, UNWIND_HANDLER_ALLOC_SIZE, PAGE_READWRITE, &old_protection)) + { + Log_ErrorPrintf("VirtualProtectFromApp(RW) for exception handler failed: %08X", GetLastError()); + return false; + } + + uh->runtime_function.BeginAddress = UNWIND_HANDLER_ALLOC_SIZE; + uh->runtime_function.EndAddress = code_size; + uh->runtime_function.UnwindInfoAddress = offsetof(UnwindHandler, unwind_info); + + uh->unwind_info.version = 1; + uh->unwind_info.flags = UNW_FLAG_EHANDLER; + uh->unwind_info.size_of_prologue = 0; + uh->unwind_info.count_of_unwind_codes = 0; + uh->unwind_info.frame_register = 0; + uh->unwind_info.frame_offset_scaled = 0; + uh->unwind_info.exception_handler_address = offsetof(UnwindHandler, exception_handler_code); + + // mov rax, handler + const void* handler = UnwindExceptionHandler; + uh->exception_handler_code[0] = 0x48; + uh->exception_handler_code[1] = 0xb8; + std::memcpy(&uh->exception_handler_code[2], &handler, sizeof(handler)); + + // jmp rax + uh->exception_handler_code[10] = 0xff; + uh->exception_handler_code[11] = 0xe0; + + if (!VirtualProtectFromApp(uh, UNWIND_HANDLER_ALLOC_SIZE, PAGE_EXECUTE_READ, &old_protection)) + { + Log_ErrorPrintf("VirtualProtectFromApp(RX) for exception handler failed: %08X", GetLastError()); + return false; + } + + return true; +#endif +} + +u32 GetHandlerCodeSize() +{ + return UNWIND_HANDLER_ALLOC_SIZE; +} + #elif defined(USE_SIGSEGV) static struct sigaction s_old_sigsegv_action; @@ -204,9 +345,21 @@ static void SIGSEGVHandler(int sig, siginfo_t* info, void* ctx) sa.sa_handler(sig); } +u32 GetHandlerCodeSize() +{ + return 0; +} + +#else + +u32 GetHandlerCodeSize() +{ + return 0; +} + #endif -bool InstallHandler(void* owner, Callback callback) +bool InstallHandler(const void* owner, void* start_pc, u32 code_size, Callback callback) { bool was_empty; { @@ -218,7 +371,6 @@ bool InstallHandler(void* owner, Callback callback) } was_empty = m_handlers.empty(); - m_handlers.push_back(RegisteredHandler{owner, std::move(callback)}); } if (was_empty) @@ -230,19 +382,13 @@ bool InstallHandler(void* owner, Callback callback) Log_ErrorPrint("Failed to add vectored exception handler"); return false; } -#elif defined(USE_SIGSEGV) -#if 0 - // Alternative stack - we'll need this is we ever use the host stack for branches. - stack_t signal_stack = {}; - signal_stack.ss_sp = malloc(SIGSTKSZ); - signal_stack.ss_size = SIGSTKSZ; - if (sigaltstack(&signal_stack, nullptr)) +#elif defined(_UWP) + if (!InstallFunctionTableCallback(owner, start_pc, code_size)) { - Log_ErrorPrintf("signaltstack() failed: %d", errno); + Log_ErrorPrint("Failed to install function table callback"); return false; } -#endif - +#elif defined(USE_SIGSEGV) struct sigaction sa = {}; sa.sa_sigaction = SIGSEGVHandler; sa.sa_flags = SA_SIGINFO; @@ -265,10 +411,11 @@ bool InstallHandler(void* owner, Callback callback) #endif } + m_handlers.push_back(RegisteredHandler{callback, owner, start_pc, code_size}); return true; } -bool RemoveHandler(void* owner) +bool RemoveHandler(const void* owner) { std::lock_guard guard(m_handler_lock); auto it = std::find_if(m_handlers.begin(), m_handlers.end(), @@ -283,6 +430,8 @@ bool RemoveHandler(void* owner) #if defined(_WIN32) && !defined(_UWP) && (defined(CPU_X64) || defined(CPU_AARCH64)) RemoveVectoredExceptionHandler(s_veh_handle); s_veh_handle = nullptr; +#elif defined(_UWP) + // nothing to do here, any unregistered regions will be ignored #elif defined(USE_SIGSEGV) // restore old signal handler #if defined(__APPLE__) || defined(__aarch64__) diff --git a/src/common/page_fault_handler.h b/src/common/page_fault_handler.h index 67ef38cbd..f4b57b231 100644 --- a/src/common/page_fault_handler.h +++ b/src/common/page_fault_handler.h @@ -8,10 +8,12 @@ enum class HandlerResult ExecuteNextHandler, }; -using Callback = HandlerResult(*)(void* exception_pc, void* fault_address, bool is_write); +using Callback = HandlerResult (*)(void* exception_pc, void* fault_address, bool is_write); using Handle = void*; -bool InstallHandler(void* owner, Callback callback); -bool RemoveHandler(void* owner); +u32 GetHandlerCodeSize(); + +bool InstallHandler(const void* owner, void* start_pc, u32 code_size, Callback callback); +bool RemoveHandler(const void* owner); } // namespace Common::PageFaultHandler From ca747d8d7a095d8507b7a14c5d7b6321adbea9da Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sat, 10 Jul 2021 18:01:31 +1000 Subject: [PATCH 5/9] CPU/CodeCache: Support UWP --- src/core/cpu_code_cache.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/cpu_code_cache.cpp b/src/core/cpu_code_cache.cpp index 619d11866..839a056c0 100644 --- a/src/core/cpu_code_cache.cpp +++ b/src/core/cpu_code_cache.cpp @@ -25,7 +25,7 @@ static constexpr u32 RECOMPILE_COUNT_TO_FALL_BACK_TO_INTERPRETER = 20; #ifdef WITH_RECOMPILER // Currently remapping the code buffer doesn't work in macOS or Haiku. -#if !defined(__HAIKU__) && !defined(__APPLE__) +#if !defined(__HAIKU__) && !defined(__APPLE__) && !defined(_UWP) #define USE_STATIC_CODE_BUFFER 1 #endif @@ -822,7 +822,10 @@ bool InitializeFastmem() Assert(mode != CPUFastmemMode::MMap); #endif - if (!Common::PageFaultHandler::InstallHandler(&s_host_code_map, handler)) + s_code_buffer.ReserveCode(Common::PageFaultHandler::GetHandlerCodeSize()); + + if (!Common::PageFaultHandler::InstallHandler(&s_host_code_map, s_code_buffer.GetCodePointer(), + s_code_buffer.GetTotalSize(), handler)) { Log_ErrorPrintf("Failed to install page fault handler"); return false; From b35a1308c4ee662fab8583bbecb5a943d9ed5ebf Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:09:58 +1000 Subject: [PATCH 6/9] Core: Make XAudio2 the default backend for UWP --- src/core/settings.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/settings.h b/src/core/settings.h index 26c8d9d75..170cef3c0 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -369,10 +369,12 @@ struct Settings static constexpr CPUFastmemMode DEFAULT_CPU_FASTMEM_MODE = CPUFastmemMode::Disabled; #endif -#ifndef __ANDROID__ - static constexpr AudioBackend DEFAULT_AUDIO_BACKEND = AudioBackend::Cubeb; -#else +#if defined(__ANDROID__) static constexpr AudioBackend DEFAULT_AUDIO_BACKEND = AudioBackend::OpenSLES; +#elif defined(_UWP) + static constexpr AudioBackend DEFAULT_AUDIO_BACKEND = AudioBackend::XAudio2; +#else + static constexpr AudioBackend DEFAULT_AUDIO_BACKEND = AudioBackend::Cubeb; #endif static constexpr DisplayCropMode DEFAULT_DISPLAY_CROP_MODE = DisplayCropMode::Overscan; From 99018b51b4b135513fc98c6dcf1447729a81ab79 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:14:28 +1000 Subject: [PATCH 7/9] FrontendCommon: Support UWP in helper classes --- src/frontend-common/common_host_interface.cpp | 17 ++++- src/frontend-common/controller_interface.cpp | 8 +- src/frontend-common/controller_interface.h | 2 + src/frontend-common/d3d11_host_display.cpp | 73 ++++++++++++++++--- src/frontend-common/inhibit_screensaver.cpp | 4 +- .../xinput_controller_interface.cpp | 5 ++ 6 files changed, 92 insertions(+), 17 deletions(-) diff --git a/src/frontend-common/common_host_interface.cpp b/src/frontend-common/common_host_interface.cpp index d0e40914d..ff7c02d1f 100644 --- a/src/frontend-common/common_host_interface.cpp +++ b/src/frontend-common/common_host_interface.cpp @@ -22,7 +22,6 @@ #include "core/system.h" #include "core/texture_replacements.h" #include "core/timers.h" -#include "cubeb_audio_stream.h" #include "fullscreen_ui.h" #include "game_list.h" #include "icon.h" @@ -39,6 +38,10 @@ #include #include +#ifndef _UWP +#include "cubeb_audio_stream.h" +#endif + #ifdef WITH_SDL2 #include "sdl_audio_stream.h" #endif @@ -53,6 +56,7 @@ #ifdef _WIN32 #include "common/windows_headers.h" +#include "xaudio2_audio_stream.h" #include #include #include @@ -173,6 +177,11 @@ void CommonHostInterface::InitializeUserDirectory() result &= FileSystem::CreateDirectory(GetUserDirectoryRelativePath("shaders").c_str(), false); result &= FileSystem::CreateDirectory(GetUserDirectoryRelativePath("textures").c_str(), false); + // Games directory for UWP because it's a pain to create them manually. +#ifdef _UWP + result &= FileSystem::CreateDirectory(GetUserDirectoryRelativePath("games").c_str(), false); +#endif + if (!result) ReportError("Failed to create one or more user directories. This may cause issues at runtime."); } @@ -636,8 +645,10 @@ std::unique_ptr CommonHostInterface::CreateAudioStream(AudioBackend case AudioBackend::Null: return AudioStream::CreateNullAudioStream(); +#ifndef _UWP case AudioBackend::Cubeb: return CubebAudioStream::Create(); +#endif #ifdef _WIN32 case AudioBackend::XAudio2: @@ -997,7 +1008,7 @@ void CommonHostInterface::SetUserDirectory() } else { -#if defined(_WIN32) +#if defined(_WIN32) && !defined(_UWP) // On Windows, use My Documents\DuckStation. PWSTR documents_directory; if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &documents_directory))) @@ -3221,7 +3232,7 @@ void CommonHostInterface::SetTimerResolutionIncreased(bool enabled) m_timer_resolution_increased = enabled; -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) if (enabled) timeBeginPeriod(1); else diff --git a/src/frontend-common/controller_interface.cpp b/src/frontend-common/controller_interface.cpp index a7fda44c8..47e78ccd7 100644 --- a/src/frontend-common/controller_interface.cpp +++ b/src/frontend-common/controller_interface.cpp @@ -111,6 +111,8 @@ static constexpr std::array(ControllerInterface::B #endif #ifdef _WIN32 TRANSLATABLE("ControllerInterface", "XInput"), +#endif +#ifdef WITH_DINPUT TRANSLATABLE("ControllerInterface", "DInput"), #endif #ifdef ANDROID @@ -155,9 +157,11 @@ ControllerInterface::Backend ControllerInterface::GetDefaultBackend() #include "sdl_controller_interface.h" #endif #ifdef _WIN32 -#include "dinput_controller_interface.h" #include "xinput_controller_interface.h" #endif +#ifdef WITH_DINPUT +#include "dinput_controller_interface.h" +#endif #ifdef WITH_EVDEV #include "evdev_controller_interface.h" #endif @@ -171,6 +175,8 @@ std::unique_ptr ControllerInterface::Create(Backend type) #ifdef _WIN32 if (type == Backend::XInput) return std::make_unique(); +#endif +#ifdef WITH_DINPUT if (type == Backend::DInput) return std::make_unique(); #endif diff --git a/src/frontend-common/controller_interface.h b/src/frontend-common/controller_interface.h index 717a97361..cd6930a02 100644 --- a/src/frontend-common/controller_interface.h +++ b/src/frontend-common/controller_interface.h @@ -23,6 +23,8 @@ public: #endif #ifdef _WIN32 XInput, +#endif +#ifdef WITH_DINPUT DInput, #endif #ifdef ANDROID diff --git a/src/frontend-common/d3d11_host_display.cpp b/src/frontend-common/d3d11_host_display.cpp index 72a5754b2..6674d4c77 100644 --- a/src/frontend-common/d3d11_host_display.cpp +++ b/src/frontend-common/d3d11_host_display.cpp @@ -251,7 +251,11 @@ bool D3D11HostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_view create_flags |= D3D11_CREATE_DEVICE_DEBUG; ComPtr temp_dxgi_factory; +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) HRESULT hr = CreateDXGIFactory(IID_PPV_ARGS(temp_dxgi_factory.GetAddressOf())); +#else + HRESULT hr = CreateDXGIFactory2(0, IID_PPV_ARGS(temp_dxgi_factory.GetAddressOf())); +#endif if (FAILED(hr)) { Log_ErrorPrintf("Failed to create DXGI factory: 0x%08X", hr); @@ -385,6 +389,9 @@ bool D3D11HostDisplay::DoneRenderContextCurrent() bool D3D11HostDisplay::CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode) { + HRESULT hr; + +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) if (m_window_info.type != WindowInfo::Type::Win32) return false; @@ -423,7 +430,7 @@ bool D3D11HostDisplay::CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode) swap_chain_desc.BufferDesc.Height, m_using_flip_model_swap_chain ? "flip-discard" : "discard", swap_chain_desc.Windowed ? "windowed" : "full-screen"); - HRESULT hr = m_dxgi_factory->CreateSwapChain(m_device.Get(), &swap_chain_desc, m_swap_chain.GetAddressOf()); + hr = m_dxgi_factory->CreateSwapChain(m_device.Get(), &swap_chain_desc, m_swap_chain.GetAddressOf()); if (FAILED(hr) && m_using_flip_model_swap_chain) { Log_WarningPrintf("Failed to create a flip-discard swap chain, trying discard."); @@ -448,6 +455,42 @@ bool D3D11HostDisplay::CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode) if (FAILED(hr)) Log_WarningPrintf("MakeWindowAssociation() to disable ALT+ENTER failed"); } +#else + if (m_window_info.type != WindowInfo::Type::WinRT) + return false; + + ComPtr factory2; + hr = m_dxgi_factory.As(&factory2); + if (FAILED(hr)) + { + Log_ErrorPrintf("Failed to get DXGI factory: %08X", hr); + return false; + } + + DXGI_SWAP_CHAIN_DESC1 swap_chain_desc = {}; + swap_chain_desc.Width = m_window_info.surface_width; + swap_chain_desc.Height = m_window_info.surface_height; + swap_chain_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + swap_chain_desc.SampleDesc.Count = 1; + swap_chain_desc.BufferCount = 3; + swap_chain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swap_chain_desc.SwapEffect = m_using_flip_model_swap_chain ? DXGI_SWAP_EFFECT_FLIP_DISCARD : DXGI_SWAP_EFFECT_DISCARD; + + m_using_allow_tearing = (m_allow_tearing_supported && m_using_flip_model_swap_chain && !fullscreen_mode); + if (m_using_allow_tearing) + swap_chain_desc.Flags |= DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING; + + ComPtr swap_chain1; + hr = factory2->CreateSwapChainForCoreWindow(m_device.Get(), static_cast(m_window_info.window_handle), + &swap_chain_desc, nullptr, swap_chain1.GetAddressOf()); + if (FAILED(hr)) + { + Log_ErrorPrintf("CreateSwapChainForCoreWindow failed: 0x%08X", hr); + return false; + } + + m_swap_chain = swap_chain1; +#endif return CreateSwapChainRTV(); } @@ -476,18 +519,22 @@ bool D3D11HostDisplay::CreateSwapChainRTV() m_window_info.surface_width = backbuffer_desc.Width; m_window_info.surface_height = backbuffer_desc.Height; + Log_InfoPrintf("Swap chain buffer size: %ux%u", m_window_info.surface_width, m_window_info.surface_height); - BOOL fullscreen = FALSE; - DXGI_SWAP_CHAIN_DESC desc; - if (SUCCEEDED(m_swap_chain->GetFullscreenState(&fullscreen, nullptr)) && fullscreen && - SUCCEEDED(m_swap_chain->GetDesc(&desc))) + if (m_window_info.type == WindowInfo::Type::Win32) { - m_window_info.surface_refresh_rate = static_cast(desc.BufferDesc.RefreshRate.Numerator) / - static_cast(desc.BufferDesc.RefreshRate.Denominator); - } - else - { - m_window_info.surface_refresh_rate = 0.0f; + BOOL fullscreen = FALSE; + DXGI_SWAP_CHAIN_DESC desc; + if (SUCCEEDED(m_swap_chain->GetFullscreenState(&fullscreen, nullptr)) && fullscreen && + SUCCEEDED(m_swap_chain->GetDesc(&desc))) + { + m_window_info.surface_refresh_rate = static_cast(desc.BufferDesc.RefreshRate.Numerator) / + static_cast(desc.BufferDesc.RefreshRate.Denominator); + } + else + { + m_window_info.surface_refresh_rate = 0.0f; + } } return true; @@ -870,7 +917,11 @@ void D3D11HostDisplay::RenderSoftwareCursor(s32 left, s32 top, s32 width, s32 he HostDisplay::AdapterAndModeList D3D11HostDisplay::StaticGetAdapterAndModeList() { ComPtr dxgi_factory; +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) HRESULT hr = CreateDXGIFactory(IID_PPV_ARGS(dxgi_factory.GetAddressOf())); +#else + HRESULT hr = CreateDXGIFactory2(0, IID_PPV_ARGS(dxgi_factory.GetAddressOf())); +#endif if (FAILED(hr)) return {}; diff --git a/src/frontend-common/inhibit_screensaver.cpp b/src/frontend-common/inhibit_screensaver.cpp index e0650d53d..16e681298 100644 --- a/src/frontend-common/inhibit_screensaver.cpp +++ b/src/frontend-common/inhibit_screensaver.cpp @@ -4,7 +4,7 @@ #include Log_SetChannel(FrontendCommon); -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) #include "common/windows_headers.h" static bool SetScreensaverInhibitWin32(bool inhibit, const WindowInfo& wi) @@ -93,7 +93,7 @@ static bool SetScreensaverInhibit(bool inhibit, const WindowInfo& wi) { switch (wi.type) { -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UWP) case WindowInfo::Type::Win32: return SetScreensaverInhibitWin32(inhibit, wi); #endif diff --git a/src/frontend-common/xinput_controller_interface.cpp b/src/frontend-common/xinput_controller_interface.cpp index aa4059246..13d139f91 100644 --- a/src/frontend-common/xinput_controller_interface.cpp +++ b/src/frontend-common/xinput_controller_interface.cpp @@ -23,6 +23,7 @@ ControllerInterface::Backend XInputControllerInterface::GetBackend() const bool XInputControllerInterface::Initialize(CommonHostInterface* host_interface) { +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) m_xinput_module = LoadLibraryW(L"xinput1_4"); if (!m_xinput_module) { @@ -45,6 +46,10 @@ bool XInputControllerInterface::Initialize(CommonHostInterface* host_interface) reinterpret_cast(GetProcAddress(m_xinput_module, "XInputGetState")); m_xinput_set_state = reinterpret_cast(GetProcAddress(m_xinput_module, "XInputSetState")); +#else + m_xinput_get_state = XInputGetState; + m_xinput_set_state = XInputSetState; +#endif if (!m_xinput_get_state || !m_xinput_set_state) { Log_ErrorPrintf("Failed to get XInput function pointers."); From b0adcb5ea6e1557a2ea2db92cc5a7971eb620616 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:14:41 +1000 Subject: [PATCH 8/9] FrontendCommon: Add HTTPDownloaderUWP --- src/frontend-common/frontend-common.vcxproj | 6 + .../frontend-common.vcxproj.filters | 4 +- src/frontend-common/http_downloader_uwp.cpp | 166 ++++++++++++++++++ src/frontend-common/http_downloader_uwp.h | 37 ++++ 4 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/frontend-common/http_downloader_uwp.cpp create mode 100644 src/frontend-common/http_downloader_uwp.h diff --git a/src/frontend-common/frontend-common.vcxproj b/src/frontend-common/frontend-common.vcxproj index cddfd6f8d..dbb02a4a4 100644 --- a/src/frontend-common/frontend-common.vcxproj +++ b/src/frontend-common/frontend-common.vcxproj @@ -18,6 +18,9 @@ + + true + true @@ -67,6 +70,9 @@ + + true + true diff --git a/src/frontend-common/frontend-common.vcxproj.filters b/src/frontend-common/frontend-common.vcxproj.filters index 73d9bff4e..980b960cf 100644 --- a/src/frontend-common/frontend-common.vcxproj.filters +++ b/src/frontend-common/frontend-common.vcxproj.filters @@ -36,6 +36,7 @@ + @@ -73,8 +74,9 @@ + - + \ No newline at end of file diff --git a/src/frontend-common/http_downloader_uwp.cpp b/src/frontend-common/http_downloader_uwp.cpp new file mode 100644 index 000000000..4ea7b64e5 --- /dev/null +++ b/src/frontend-common/http_downloader_uwp.cpp @@ -0,0 +1,166 @@ +#include "http_downloader_uwp.h" +#include "common/assert.h" +#include "common/log.h" +#include "common/string_util.h" +#include "common/timer.h" +#include +Log_SetChannel(HTTPDownloaderWinHttp); + +#include +#include +#include + +using namespace winrt::Windows::Foundation; +using namespace winrt::Windows::Web::Http; + +namespace FrontendCommon { + +HTTPDownloaderUWP::HTTPDownloaderUWP(std::string user_agent) : HTTPDownloader(), m_user_agent(std::move(user_agent)) {} + +HTTPDownloaderUWP::~HTTPDownloaderUWP() = default; + +std::unique_ptr HTTPDownloader::Create(const char* user_agent) +{ + std::string user_agent_str; + if (user_agent) + user_agent_str = user_agent; + + return std::make_unique(user_agent ? std::string(user_agent) : std::string()); +} + +HTTPDownloader::Request* HTTPDownloaderUWP::InternalCreateRequest() +{ + Request* req = new Request(); + return req; +} + +void HTTPDownloaderUWP::InternalPollRequests() +{ + // noop - uses async +} + +bool HTTPDownloaderUWP::StartRequest(HTTPDownloader::Request* request) +{ + Request* req = static_cast(request); + + try + { + const std::wstring url_wide(StringUtil::UTF8StringToWideString(req->url)); + const Uri uri(url_wide); + + if (!m_user_agent.empty() && + !req->client.DefaultRequestHeaders().UserAgent().TryParseAdd(StringUtil::UTF8StringToWideString(m_user_agent))) + { + Log_WarningPrintf("Failed to set user agent to '%s'", m_user_agent.c_str()); + } + + if (req->type == Request::Type::Post) + { + const winrt::Windows::Storage::Streams::Buffer post_buf(static_cast(req->post_data.size())); + std::memcpy(post_buf.data(), req->post_data.data(), req->post_data.size()); + + const HttpBufferContent post_content(post_buf); + req->request_async = req->client.PostAsync(uri, post_content); + } + else + { + req->request_async = req->client.GetAsync(uri); + } + + req->request_async.Completed( + [req](const IAsyncOperationWithProgress& operation, AsyncStatus status) { + if (status == AsyncStatus::Completed) + { + Log_DevPrintf("Request for '%s' completed start portion", req->url.c_str()); + try + { + req->state.store(Request::State::Receiving); + req->start_time = Common::Timer::GetValue(); + + const HttpResponseMessage response(req->request_async.get()); + req->status_code = static_cast(response.StatusCode()); + + const IHttpContent content(response.Content()); + req->receive_async = content.ReadAsBufferAsync(); + req->receive_async.Completed( + [req]( + const IAsyncOperationWithProgress& inner_operation, + AsyncStatus inner_status) { + if (inner_status == AsyncStatus::Completed) + { + const winrt::Windows::Storage::Streams::IBuffer buffer(inner_operation.get()); + if (buffer && buffer.Length() > 0) + { + req->data.resize(buffer.Length()); + std::memcpy(req->data.data(), buffer.data(), req->data.size()); + } + + Log_DevPrintf("End of request '%s', %zu bytes received", req->url.c_str(), req->data.size()); + req->state.store(Request::State::Complete); + } + else if (inner_status == AsyncStatus::Canceled) + { + // don't do anything, the request has been freed + } + else + { + Log_ErrorPrintf("Request for '%s' failed during recieve phase: %08X", req->url.c_str(), + inner_operation.ErrorCode().value); + req->status_code = -1; + req->state.store(Request::State::Complete); + } + }); + } + catch (const winrt::hresult_error& err) + { + Log_ErrorPrintf("Failed to receive HTTP request for '%s': %08X %s", req->url.c_str(), err.code(), + StringUtil::WideStringToUTF8String(err.message()).c_str()); + req->status_code = -1; + req->state.store(Request::State::Complete); + } + + req->receive_async = nullptr; + } + else if (status == AsyncStatus::Canceled) + { + // don't do anything, the request has been freed + } + else + { + Log_ErrorPrintf("Request for '%s' failed during start phase: %08X", req->url.c_str(), + operation.ErrorCode().value); + req->status_code = -1; + req->state.store(Request::State::Complete); + } + + req->request_async = nullptr; + }); + } + catch (const winrt::hresult_error& err) + { + Log_ErrorPrintf("Failed to start HTTP request for '%s': %08X %s", req->url.c_str(), err.code(), + StringUtil::WideStringToUTF8String(err.message()).c_str()); + req->callback(-1, req->data); + delete req; + return false; + } + + Log_DevPrintf("Started HTTP request for '%s'", req->url.c_str()); + req->state = Request::State::Started; + req->start_time = Common::Timer::GetValue(); + return true; +} + +void HTTPDownloaderUWP::CloseRequest(HTTPDownloader::Request* request) +{ + Request* req = static_cast(request); + if (req->request_async) + req->request_async.Cancel(); + if (req->receive_async) + req->receive_async.Cancel(); + + req->client.Close(); + delete req; +} + +} // namespace FrontendCommon \ No newline at end of file diff --git a/src/frontend-common/http_downloader_uwp.h b/src/frontend-common/http_downloader_uwp.h new file mode 100644 index 000000000..28d82d9da --- /dev/null +++ b/src/frontend-common/http_downloader_uwp.h @@ -0,0 +1,37 @@ +#pragma once +#include "http_downloader.h" + +#include "common/windows_headers.h" + +#include + +namespace FrontendCommon { + +class HTTPDownloaderUWP final : public HTTPDownloader +{ +public: + HTTPDownloaderUWP(std::string user_agent); + ~HTTPDownloaderUWP() override; + +protected: + Request* InternalCreateRequest() override; + void InternalPollRequests() override; + bool StartRequest(HTTPDownloader::Request* request) override; + void CloseRequest(HTTPDownloader::Request* request) override; + +private: + struct Request : HTTPDownloader::Request + { + std::wstring object_name; + winrt::Windows::Web::Http::HttpClient client; + winrt::Windows::Foundation::IAsyncOperationWithProgress + request_async{nullptr}; + winrt::Windows::Foundation::IAsyncOperationWithProgress + receive_async{}; + }; + + std::string m_user_agent; +}; + +} // namespace FrontendCommon \ No newline at end of file From 9affb035f8ef5f7dea5b75fdd27461d05e1d8e89 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 4 Jul 2021 19:15:06 +1000 Subject: [PATCH 9/9] Add UWP frontend --- duckstation-uwp.sln | 376 +++++++++ src/duckstation-uwp/.gitignore | 6 + .../Assets/LargeTile.scale-100.png | Bin 0 -> 8984 bytes .../Assets/LargeTile.scale-125.png | Bin 0 -> 11710 bytes .../Assets/LargeTile.scale-150.png | Bin 0 -> 14793 bytes .../Assets/LargeTile.scale-200.png | Bin 0 -> 20927 bytes .../Assets/LargeTile.scale-400.png | Bin 0 -> 56512 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1430 bytes .../Assets/SmallTile.scale-100.png | Bin 0 -> 2238 bytes .../Assets/SmallTile.scale-125.png | Bin 0 -> 3059 bytes .../Assets/SmallTile.scale-150.png | Bin 0 -> 3837 bytes .../Assets/SmallTile.scale-200.png | Bin 0 -> 5247 bytes .../Assets/SmallTile.scale-400.png | Bin 0 -> 12261 bytes .../Assets/SplashScreen.scale-100.png | Bin 0 -> 9509 bytes .../Assets/SplashScreen.scale-125.png | Bin 0 -> 12375 bytes .../Assets/SplashScreen.scale-150.png | Bin 0 -> 15709 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 22785 bytes .../Assets/SplashScreen.scale-400.png | Bin 0 -> 60733 bytes .../Assets/Square150x150Logo.scale-100.png | Bin 0 -> 3774 bytes .../Assets/Square150x150Logo.scale-125.png | Bin 0 -> 4902 bytes .../Assets/Square150x150Logo.scale-150.png | Bin 0 -> 6115 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 8790 bytes .../Assets/Square150x150Logo.scale-400.png | Bin 0 -> 20271 bytes ...go.altform-lightunplated_targetsize-16.png | Bin 0 -> 725 bytes ...go.altform-lightunplated_targetsize-24.png | Bin 0 -> 1207 bytes ...o.altform-lightunplated_targetsize-256.png | Bin 0 -> 22124 bytes ...go.altform-lightunplated_targetsize-32.png | Bin 0 -> 1734 bytes ...go.altform-lightunplated_targetsize-48.png | Bin 0 -> 2908 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 0 -> 725 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 0 -> 22124 bytes ...x44Logo.altform-unplated_targetsize-32.png | Bin 0 -> 1734 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 0 -> 2908 bytes .../Assets/Square44x44Logo.scale-100.png | Bin 0 -> 1810 bytes .../Assets/Square44x44Logo.scale-125.png | Bin 0 -> 2496 bytes .../Assets/Square44x44Logo.scale-150.png | Bin 0 -> 3293 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 4526 bytes .../Assets/Square44x44Logo.scale-400.png | Bin 0 -> 10317 bytes .../Assets/Square44x44Logo.targetsize-16.png | Bin 0 -> 529 bytes .../Assets/Square44x44Logo.targetsize-24.png | Bin 0 -> 892 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 1255 bytes .../Assets/Square44x44Logo.targetsize-256.png | Bin 0 -> 16294 bytes .../Assets/Square44x44Logo.targetsize-32.png | Bin 0 -> 1254 bytes .../Assets/Square44x44Logo.targetsize-48.png | Bin 0 -> 2134 bytes .../Assets/StoreLogo.backup.png | Bin 0 -> 1451 bytes .../Assets/StoreLogo.scale-100.png | Bin 0 -> 3104 bytes .../Assets/StoreLogo.scale-125.png | Bin 0 -> 4134 bytes .../Assets/StoreLogo.scale-150.png | Bin 0 -> 5106 bytes .../Assets/StoreLogo.scale-200.png | Bin 0 -> 7200 bytes .../Assets/StoreLogo.scale-400.png | Bin 0 -> 16336 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 3204 bytes .../Assets/WideTile.scale-100.png | Bin 0 -> 4013 bytes .../Assets/WideTile.scale-125.png | Bin 0 -> 5240 bytes .../Assets/WideTile.scale-150.png | Bin 0 -> 6517 bytes .../Assets/WideTile.scale-200.png | Bin 0 -> 9509 bytes .../Assets/WideTile.scale-400.png | Bin 0 -> 22785 bytes src/duckstation-uwp/Assets/duck_128.png | Bin 0 -> 8478 bytes src/duckstation-uwp/Package.appxmanifest | 52 ++ src/duckstation-uwp/PropertySheet.props | 16 + src/duckstation-uwp/duckstation-uwp.vcxproj | 211 +++++ .../duckstation-uwp.vcxproj.filters | 304 +++++++ src/duckstation-uwp/packages.config | 4 + src/duckstation-uwp/uwp_host_interface.cpp | 753 ++++++++++++++++++ src/duckstation-uwp/uwp_host_interface.h | 117 +++ src/duckstation-uwp/uwp_key_map.h | 149 ++++ 64 files changed, 1988 insertions(+) create mode 100644 duckstation-uwp.sln create mode 100644 src/duckstation-uwp/.gitignore create mode 100644 src/duckstation-uwp/Assets/LargeTile.scale-100.png create mode 100644 src/duckstation-uwp/Assets/LargeTile.scale-125.png create mode 100644 src/duckstation-uwp/Assets/LargeTile.scale-150.png create mode 100644 src/duckstation-uwp/Assets/LargeTile.scale-200.png create mode 100644 src/duckstation-uwp/Assets/LargeTile.scale-400.png create mode 100644 src/duckstation-uwp/Assets/LockScreenLogo.scale-200.png create mode 100644 src/duckstation-uwp/Assets/SmallTile.scale-100.png create mode 100644 src/duckstation-uwp/Assets/SmallTile.scale-125.png create mode 100644 src/duckstation-uwp/Assets/SmallTile.scale-150.png create mode 100644 src/duckstation-uwp/Assets/SmallTile.scale-200.png create mode 100644 src/duckstation-uwp/Assets/SmallTile.scale-400.png create mode 100644 src/duckstation-uwp/Assets/SplashScreen.scale-100.png create mode 100644 src/duckstation-uwp/Assets/SplashScreen.scale-125.png create mode 100644 src/duckstation-uwp/Assets/SplashScreen.scale-150.png create mode 100644 src/duckstation-uwp/Assets/SplashScreen.scale-200.png create mode 100644 src/duckstation-uwp/Assets/SplashScreen.scale-400.png create mode 100644 src/duckstation-uwp/Assets/Square150x150Logo.scale-100.png create mode 100644 src/duckstation-uwp/Assets/Square150x150Logo.scale-125.png create mode 100644 src/duckstation-uwp/Assets/Square150x150Logo.scale-150.png create mode 100644 src/duckstation-uwp/Assets/Square150x150Logo.scale-200.png create mode 100644 src/duckstation-uwp/Assets/Square150x150Logo.scale-400.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-16.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-256.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.scale-100.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.scale-125.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.scale-150.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.scale-200.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.scale-400.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-16.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-24.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-256.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-32.png create mode 100644 src/duckstation-uwp/Assets/Square44x44Logo.targetsize-48.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.backup.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.scale-100.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.scale-125.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.scale-150.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.scale-200.png create mode 100644 src/duckstation-uwp/Assets/StoreLogo.scale-400.png create mode 100644 src/duckstation-uwp/Assets/Wide310x150Logo.scale-200.png create mode 100644 src/duckstation-uwp/Assets/WideTile.scale-100.png create mode 100644 src/duckstation-uwp/Assets/WideTile.scale-125.png create mode 100644 src/duckstation-uwp/Assets/WideTile.scale-150.png create mode 100644 src/duckstation-uwp/Assets/WideTile.scale-200.png create mode 100644 src/duckstation-uwp/Assets/WideTile.scale-400.png create mode 100644 src/duckstation-uwp/Assets/duck_128.png create mode 100644 src/duckstation-uwp/Package.appxmanifest create mode 100644 src/duckstation-uwp/PropertySheet.props create mode 100644 src/duckstation-uwp/duckstation-uwp.vcxproj create mode 100644 src/duckstation-uwp/duckstation-uwp.vcxproj.filters create mode 100644 src/duckstation-uwp/packages.config create mode 100644 src/duckstation-uwp/uwp_host_interface.cpp create mode 100644 src/duckstation-uwp/uwp_host_interface.h create mode 100644 src/duckstation-uwp/uwp_key_map.h diff --git a/duckstation-uwp.sln b/duckstation-uwp.sln new file mode 100644 index 000000000..4011ac1d9 --- /dev/null +++ b/duckstation-uwp.sln @@ -0,0 +1,376 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29230.47 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glad", "dep\glad\glad.vcxproj", "{43540154-9E1E-409C-834F-B84BE5621388}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{BA490C0E-497D-4634-A21E-E65012006385}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "imgui", "dep\imgui\imgui.vcxproj", "{BB08260F-6FBC-46AF-8924-090EE71360C6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "src\common\common.vcxproj", "{EE054E08-3799-4A59-A422-18259C105FFD}" + ProjectSection(ProjectDependencies) = postProject + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2} = {7F909E29-4808-4BD9-A60C-56C51A3AAEC2} + {43540154-9E1E-409C-834F-B84BE5621388} = {43540154-9E1E-409C-834F-B84BE5621388} + {ED601289-AC1A-46B8-A8ED-17DB9EB73423} = {ED601289-AC1A-46B8-A8ED-17DB9EB73423} + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017} = {425D6C99-D1C8-43C2-B8AC-4D7B1D941017} + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035} = {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035} + {7FF9FDB9-D504-47DB-A16A-B08071999620} = {7FF9FDB9-D504-47DB-A16A-B08071999620} + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3} = {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "src\core\core.vcxproj", "{868B98C8-65A1-494B-8346-250A73A48C0A}" + ProjectSection(ProjectDependencies) = postProject + {EE054E08-3799-4A59-A422-18259C105FFD} = {EE054E08-3799-4A59-A422-18259C105FFD} + {BB08260F-6FBC-46AF-8924-090EE71360C6} = {BB08260F-6FBC-46AF-8924-090EE71360C6} + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB} = {8906836E-F06E-46E8-B11A-74E5E8C7B8FB} + {ED601289-AC1A-46B8-A8ED-17DB9EB73423} = {ED601289-AC1A-46B8-A8ED-17DB9EB73423} + {09553C96-9F39-49BF-8AE6-7ACBD07C410C} = {09553C96-9F39-49BF-8AE6-7ACBD07C410C} + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035} = {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035} + {7FF9FDB9-D504-47DB-A16A-B08071999620} = {7FF9FDB9-D504-47DB-A16A-B08071999620} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stb", "dep\stb\stb.vcxproj", "{ED601289-AC1A-46B8-A8ED-17DB9EB73423}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simpleini", "dep\simpleini\simpleini.vcxproj", "{3773F4CC-614E-4028-8595-22E08CA649E3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml2", "dep\tinyxml2\tinyxml2.vcxproj", "{933118A9-68C5-47B4-B151-B03C93961623}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "dep\minizip\minizip.vcxproj", "{8BDA439C-6358-45FB-9994-2FF083BABE06}" + ProjectSection(ProjectDependencies) = postProject + {7FF9FDB9-D504-47DB-A16A-B08071999620} = {7FF9FDB9-D504-47DB-A16A-B08071999620} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "dep\zlib\zlib.vcxproj", "{7FF9FDB9-D504-47DB-A16A-B08071999620}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libchdr", "dep\libchdr\libchdr.vcxproj", "{425D6C99-D1C8-43C2-B8AC-4D7B1D941017}" + ProjectSection(ProjectDependencies) = postProject + {DD944834-7899-4C1C-A4C1-064B5009D239} = {DD944834-7899-4C1C-A4C1-064B5009D239} + {7FF9FDB9-D504-47DB-A16A-B08071999620} = {7FF9FDB9-D504-47DB-A16A-B08071999620} + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D} = {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libFLAC", "dep\libFLAC\libFLAC.vcxproj", "{97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lzma", "dep\lzma\lzma.vcxproj", "{DD944834-7899-4C1C-A4C1-064B5009D239}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "frontend-common", "src\frontend-common\frontend-common.vcxproj", "{6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}" + ProjectSection(ProjectDependencies) = postProject + {075CED82-6A20-46DF-94C7-9624AC9DDBEB} = {075CED82-6A20-46DF-94C7-9624AC9DDBEB} + {8BDA439C-6358-45FB-9994-2FF083BABE06} = {8BDA439C-6358-45FB-9994-2FF083BABE06} + {933118A9-68C5-47B4-B151-B03C93961623} = {933118A9-68C5-47B4-B151-B03C93961623} + {868B98C8-65A1-494B-8346-250A73A48C0A} = {868B98C8-65A1-494B-8346-250A73A48C0A} + {3773F4CC-614E-4028-8595-22E08CA649E3} = {3773F4CC-614E-4028-8595-22E08CA649E3} + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64} = {4BA0A6D4-3AE1-42B2-9347-096FD023FF64} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxhash", "dep\xxhash\xxhash.vcxproj", "{09553C96-9F39-49BF-8AE6-7ACBD07C410C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scmversion", "src\scmversion\scmversion.vcxproj", "{075CED82-6A20-46DF-94C7-9624AC9DDBEB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glslang", "dep\glslang\glslang.vcxproj", "{7F909E29-4808-4BD9-A60C-56C51A3AAEC2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vulkan-loader", "dep\vulkan-loader\vulkan-loader.vcxproj", "{9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vixl", "dep\vixl\vixl.vcxproj", "{8906836E-F06E-46E8-B11A-74E5E8C7B8FB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsamplerate", "dep\libsamplerate\libsamplerate.vcxproj", "{39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcheevos", "dep\rcheevos\rcheevos.vcxproj", "{4BA0A6D4-3AE1-42B2-9347-096FD023FF64}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "duckstation-uwp", "src\duckstation-uwp\duckstation-uwp.vcxproj", "{E2A6CEA9-9537-4C61-B637-81F1F17EF638}" + ProjectSection(ProjectDependencies) = postProject + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6} = {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + DebugUWP|ARM64 = DebugUWP|ARM64 + DebugUWP|x64 = DebugUWP|x64 + DebugUWP|x86 = DebugUWP|x86 + ReleaseUWP|ARM64 = ReleaseUWP|ARM64 + ReleaseUWP|x64 = ReleaseUWP|x64 + ReleaseUWP|x86 = ReleaseUWP|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {43540154-9E1E-409C-834F-B84BE5621388}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {43540154-9E1E-409C-834F-B84BE5621388}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {BB08260F-6FBC-46AF-8924-090EE71360C6}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {EE054E08-3799-4A59-A422-18259C105FFD}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {EE054E08-3799-4A59-A422-18259C105FFD}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {868B98C8-65A1-494B-8346-250A73A48C0A}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {868B98C8-65A1-494B-8346-250A73A48C0A}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {ED601289-AC1A-46B8-A8ED-17DB9EB73423}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {3773F4CC-614E-4028-8595-22E08CA649E3}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {3773F4CC-614E-4028-8595-22E08CA649E3}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {933118A9-68C5-47B4-B151-B03C93961623}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {933118A9-68C5-47B4-B151-B03C93961623}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {8BDA439C-6358-45FB-9994-2FF083BABE06}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {7FF9FDB9-D504-47DB-A16A-B08071999620}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {DD944834-7899-4C1C-A4C1-064B5009D239}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {DD944834-7899-4C1C-A4C1-064B5009D239}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {6245DEC8-D2DA-47EE-A373-CBD6FCF3ECE6}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {09553C96-9F39-49BF-8AE6-7ACBD07C410C}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {075CED82-6A20-46DF-94C7-9624AC9DDBEB}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|ARM64.ActiveCfg = DebugUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|ARM64.Build.0 = DebugUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|ARM64.Deploy.0 = DebugUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x64.ActiveCfg = DebugUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x64.Build.0 = DebugUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x64.Deploy.0 = DebugUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x86.ActiveCfg = DebugUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x86.Build.0 = DebugUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.DebugUWP|x86.Deploy.0 = DebugUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|ARM64.ActiveCfg = ReleaseUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|ARM64.Build.0 = ReleaseUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|ARM64.Deploy.0 = ReleaseUWP|ARM64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x64.ActiveCfg = ReleaseUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x64.Build.0 = ReleaseUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x64.Deploy.0 = ReleaseUWP|x64 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x86.ActiveCfg = ReleaseUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x86.Build.0 = ReleaseUWP|Win32 + {E2A6CEA9-9537-4C61-B637-81F1F17EF638}.ReleaseUWP|x86.Deploy.0 = ReleaseUWP|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {43540154-9E1E-409C-834F-B84BE5621388} = {BA490C0E-497D-4634-A21E-E65012006385} + {BB08260F-6FBC-46AF-8924-090EE71360C6} = {BA490C0E-497D-4634-A21E-E65012006385} + {ED601289-AC1A-46B8-A8ED-17DB9EB73423} = {BA490C0E-497D-4634-A21E-E65012006385} + {3773F4CC-614E-4028-8595-22E08CA649E3} = {BA490C0E-497D-4634-A21E-E65012006385} + {933118A9-68C5-47B4-B151-B03C93961623} = {BA490C0E-497D-4634-A21E-E65012006385} + {8BDA439C-6358-45FB-9994-2FF083BABE06} = {BA490C0E-497D-4634-A21E-E65012006385} + {7FF9FDB9-D504-47DB-A16A-B08071999620} = {BA490C0E-497D-4634-A21E-E65012006385} + {425D6C99-D1C8-43C2-B8AC-4D7B1D941017} = {BA490C0E-497D-4634-A21E-E65012006385} + {97CBD3CB-CBC7-4D52-ABDE-F0AE7B794A5D} = {BA490C0E-497D-4634-A21E-E65012006385} + {DD944834-7899-4C1C-A4C1-064B5009D239} = {BA490C0E-497D-4634-A21E-E65012006385} + {09553C96-9F39-49BF-8AE6-7ACBD07C410C} = {BA490C0E-497D-4634-A21E-E65012006385} + {7F909E29-4808-4BD9-A60C-56C51A3AAEC2} = {BA490C0E-497D-4634-A21E-E65012006385} + {9C8DDEB0-2B8F-4F5F-BA86-127CDF27F035} = {BA490C0E-497D-4634-A21E-E65012006385} + {8906836E-F06E-46E8-B11A-74E5E8C7B8FB} = {BA490C0E-497D-4634-A21E-E65012006385} + {39F0ADFF-3A84-470D-9CF0-CA49E164F2F3} = {BA490C0E-497D-4634-A21E-E65012006385} + {4BA0A6D4-3AE1-42B2-9347-096FD023FF64} = {BA490C0E-497D-4634-A21E-E65012006385} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {26E40B32-7C1D-48D0-95F4-1A500E054028} + EndGlobalSection +EndGlobal diff --git a/src/duckstation-uwp/.gitignore b/src/duckstation-uwp/.gitignore new file mode 100644 index 000000000..2297123c5 --- /dev/null +++ b/src/duckstation-uwp/.gitignore @@ -0,0 +1,6 @@ +database/ +inputprofiles/ +resources/ +shaders/ +BundleArtifacts/ +duckstation-uwp.pfx \ No newline at end of file diff --git a/src/duckstation-uwp/Assets/LargeTile.scale-100.png b/src/duckstation-uwp/Assets/LargeTile.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0ef4b94ac241a71a94eb4cf6e0685181c13c32 GIT binary patch literal 8984 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 LwN)x!S%v=(3beeX literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/LargeTile.scale-125.png b/src/duckstation-uwp/Assets/LargeTile.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..45cf55b1e4b7d44f66a508d45227f126a858c6de GIT binary patch literal 11710 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 S3F;K&OaHO4PK~y6^#21gMEjfo literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/LargeTile.scale-150.png b/src/duckstation-uwp/Assets/LargeTile.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..014868e378e294b0121767fec345fc76ddef13e6 GIT binary patch literal 14793 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/LargeTile.scale-200.png b/src/duckstation-uwp/Assets/LargeTile.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..2d481044dc787a6b400d01c31d06f42728b0f22f GIT binary patch literal 20927 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/LockScreenLogo.scale-200.png b/src/duckstation-uwp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..735f57adb5dfc01886d137b4e493d7e97cf13af3 GIT binary patch literal 1430 zcmaJ>TTC2P7~aKltDttVHYH6u8Io4i*}3fO&d$gd*bA_<3j~&e7%8(eXJLfhS!M@! zKrliY>>6yT4+Kr95$!DoD(Qn-5TP|{V_KS`k~E6(LGS@#`v$hQo&^^BKsw3HIsZBT z_y6C2n`lK@apunKojRQ^(_P}Mgewt$(^BBKCTZ;*xa?J3wQ7~@S0lUvbcLeq1Bg4o zH-bvQi|wt~L7q$~a-gDFP!{&TQfc3fX*6=uHv* zT&1&U(-)L%Xp^djI2?~eBF2cxC@YOP$+9d?P&h?lPy-9M2UT9fg5jKm1t$m#iWE{M zIf%q9@;fyT?0UP>tcw-bLkz;s2LlKl2qeP0w zECS7Ate+Awk|KQ+DOk;fl}Xsy4o^CY=pwq%QAAKKl628_yNPsK>?A>%D8fQG6IgdJ ztnxttBz#NI_a@fk7SU`WtrpsfZsNs9^0(2a z@C3#YO3>k~w7?2hipBf{#b6`}Xw1hlG$yi?;1dDs7k~xDAw@jiI*+tc;t2Lflg&bM)0!Y;0_@=w%`LW^8DsYpS#-bLOklX9r?Ei}TScw|4DbpW%+7 zFgAI)f51s}{y-eWb|vrU-Ya!GuYKP)J7z#*V_k^Xo>4!1Yqj*m)x&0L^tg3GJbVAJ zJ-Pl$R=NAabouV=^z_t;^K*0AvFs!vYU>_<|I^#c?>>CR<(T?=%{;U=aI*SbZADLH z&(f2wz_Y0??Tf|g;?|1Znw6}6U43Q#qNRwv1vp9uFn1)V#*4p&%$mP9x&15^OaBiDS(XppT|z^>;B{PLVEbS3IFYV yGvCsSX*m literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SmallTile.scale-100.png b/src/duckstation-uwp/Assets/SmallTile.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..22154a005c76b71dfd2eec066274ece2716d1105 GIT binary patch literal 2238 zcma)8YdjN*1D%AC*X3du^17ZW8sK4v$v zx7@MtMqKi`0|1CC{|gRV7o~Lo02pCwZ2?D>GK&Qeu5_{fqaC9>nTzt>4vqPk8_PDk zs^=;NEoStX6Lr;6GNWVm(WClqb^7PkYwAev!{MjR51cFtg6XSPkOKD)Zl647-~p}| zPZIAt!E;|c`{)9P6~FyH8u?Wzj~TnuwKipE$pjCkPO}HR_d!7ez==MtSrB&x-<$^%3m8 zH?#qiv?6Sgh$Tpq^8#KjQA{`VD(q+C)Fkf*bUqNr_J!YwERPZ4IhV!Ubnl3bG>ZXY z)iX18w+|H1I!b^!=*juXa;f#OWl+l?jR7fW@rCsIC{gGpJiQYPqsJAT`Xkna-~n7+9E*b-=V0F-bqkF;3F^1p{)}= zxn%YF`O_C7vX1~SkS+E*OCMsy~yuVh^?^=oQ<_0G`JDBF99I(w zD8ln+*}g59FztG-sSNqS$0Hvv^rsV_(U#xmlr+Y-=XCpT=F}LFvGNi1!@@Zu8u6J5 z^d%90Q&ySk;Qwy&TGiCKqK+HF2wIMH}-|*WPvJ32CS(;Sp66Izt;}H;_@oMsk4z zjM!wB{A1pL(L&McbzAVXY=5zvqLbRhEElGsRMC(kH3A!S9@u@A$h_y)jD9aZ^((7% znocW+dFx=1t@mLm+d?S^+w|+Ks~oRnt8KkKT}NQ~P0~bQNn=9I<%tXHtkrphA~+HW zZY<1BpJR~~NX0#-Cx#rh@zkUqV}~ZMc=kf^^>26zr(Xvkkz#tgM-8Mm;Y(^+?U%3I zlcSm#2HpbpdCVilM)6W z>?N!6gU;wicyNutXa~2q@mBhN1+*HaT%hYmO29U2GVcMsML~ zCqAShvvf3H_COY~hcM%Bni4_Q9%7{hd&=B5)vtC|hZ{rel5f3nH+Y=VL}lar;IVUO zYtmzYWGtqJsgvtL+$w8O3ssZ0$vjh1Az$|L$)W zqN%5ZS$=)B{~(1|<%oY_hxK1M{)nq@N|h|bWZH~E znf9Z|J?}QV?UStT?bUVn6YlC+iBmbp`RB1bWdk>Kb2pwM?#@VyoU#&8cw3`VlBEo_ zL3TwmcDjsF>x?5h0_*XqVdJI|-S2+ShuOM@5^AJscyY$yVdAtz}Lzc*a@tj@EPH5wmV%skK31^T-X7aYv8(pC|hN cOTP5w3 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 Dsxjre literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SmallTile.scale-150.png b/src/duckstation-uwp/Assets/SmallTile.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5b166e52edb58b5f76784bb20031782ae5abeb GIT binary patch literal 3837 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 IY4h;^0Vjg(Jpcdz literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SplashScreen.scale-100.png b/src/duckstation-uwp/Assets/SplashScreen.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..6231d0d2dcd27366a6803b449f93a326d91c8292 GIT binary patch literal 9509 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SplashScreen.scale-125.png b/src/duckstation-uwp/Assets/SplashScreen.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..d75cd027fcde0e8a9b0bcd02910b3485f7f94667 GIT binary patch literal 12375 zcmeHt_cxsH6ZRu&^dv$;v>*~ai59Hhd+#+wjn#?XNeB`pq7%I>!s=a+5WTFnN<_E% zD$DZj=5yXZ;63O4@#`F(bL>9%+;h*&HFM3}A2ih!$cSl)0RSLVQk2yO09-- z!2IW6O{f_2xb3QFTkGe#IlW zz^HiyF3>5(wxpG8a}rfxQuQGx|Ax2>HNTvezIoz{1I&eEB275=+!iEy+tW&OQs@2* zJ={2;z>CpEb$30f7w3BkEl zC1B>2Qj~*&1~o9MjS;#Dz^2JX0`FeF@2J9=I?<2Cbs>(SJqeFKrI-90CT+j5SV_ai z2I6d&Gbk?`?6GsyAyj_|jK0Ra`ql2&kcjAqlhB#;#ja!?(jb!tFI48A45VXA6Vv9z zuk`OZ@)Ss$`93Zto5@OsHi3sQ#cFB~BSJr@}C?z>ynf*g(Q#P`h={7Pw z*K)rj6hG2%q&^DCURi_wd~k7mgJ_}P$XlfOdtw^gpC{eb?znY~FxH=+x~fEM+&|#yMG5l>M`0&X0Y8rz?I_}6^B=+xh9-fnpuY@HB9+o%_m=2$M<`eCJMWFPkt>2 zEbW5J&*zPcEAUe!tH@$vu3oWuETru?5Cwp`lXRzGT)P3xC0pTLFOjv>*)IS~2Fy-# z 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 Z^5(%say{|g0)K2|DaonJLZmIj{trs?va|pI literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SplashScreen.scale-150.png b/src/duckstation-uwp/Assets/SplashScreen.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..76cb3e102c76596847e9330966de9877323df8f4 GIT binary patch literal 15709 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 F{{x_k{}})P literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/SplashScreen.scale-200.png b/src/duckstation-uwp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..1008aca35a1619278b13d670bb1d28c2339f1edf GIT binary patch literal 22785 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 z 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square150x150Logo.scale-100.png b/src/duckstation-uwp/Assets/Square150x150Logo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..6d132a87576661c4645446a52934875992ce3189 GIT binary patch literal 3774 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square150x150Logo.scale-125.png b/src/duckstation-uwp/Assets/Square150x150Logo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..f05e4604cba54db4b16fab9555694956f637ffda GIT binary patch literal 4902 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square150x150Logo.scale-150.png b/src/duckstation-uwp/Assets/Square150x150Logo.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2cac9a0cc18a9f3d28c54b68c0cf3ec70aa92c GIT binary patch literal 6115 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 GQU3!EN#|Yw literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square150x150Logo.scale-400.png b/src/duckstation-uwp/Assets/Square150x150Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..045913a3c4797401cdda80518b3f819701e5f9df GIT binary patch literal 20271 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

9DXRiNd!T?psfpmP`a3J2@ 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png b/src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png new file mode 100644 index 0000000000000000000000000000000000000000..137ac4497328a9f30f270da042ad785cb435eeaa GIT binary patch literal 1734 zcmV;%208hOP)%t~W*-B|?nYPR@)0ubu z?t8CFF;k|b-sEQb-n;jl?|kPw=iWNe4a3-v2jM}c9Eb0^y4RV|=n+g6A)FMCqbAWB zwGY`U1#d&(b& TpbdVyS!#XYLz-aT+5K#0naGQYqXp4xk(tuui^+&_9m#Jc#+q zfyE*nxoGB#RzL($$~`lTN_>QySS6>SrAq+RNI09f;2Zxq^w(a5LN;>nG5X;aKd(0d zR$;P|C>LIgMVK#|IE8KCCjWFH4Stjn+-x$kjA_}NJOk6Y|1Zee^MH34;{HMi+Lq`^ zVzu)<_*%G8iWncRC$QMYNw^{vh1A6+^&?(ZO_(R2#_4+l;P7~no^czfJ4;53=scaw zIFQx02Ft}kl!kH%E>EN3j3oe}8ELh_WMBf~oJai zXOA_ZW-N5X(aVhf zj>z=La*aqVCJCTrDJJ1hY!kWMdIMID zg}urKcZ41i7Ds+AmtK@*#j~f z`@qO7GO3p)wc6+%SNTVB<>>%oxem z_zTyZg;k!?^s>x&6(h;-68QzH?+L)ohywi5q=m+ODwb5!c?(n)pVMKg9ccuRrlTiw zfpmq^AwdMcg_UzxN1MWdr&KCRjJNQtT!~$s0?-j=@=Ht13PMNg;Ed8yJ*RgppY<78 zOF(=dHmo(lAh7=k&@T%Z#Oc-6X+sGZq6f7)4sPn9@SY6lp&e?q*E3S5EkMntnF1Pz zZpQ@SIY~X#6CBt1*p!AZ1Ws-zd)I(McFMjF&{hGY$|WxXtJxtdk^-Pv&}nF91Z@iF z&`WfG&_Mcg_9PyC`uFAH?u04qOsd72hA z8%>?LO#px`cdKeKGrNe*!)vx*8cpS@bOLB;v%0c5G$5V@W=*z(<>8~k6x(Hd&b=GE z3_z?g56;DEE;h6Fm$SV-*G{R~oZ74)t;Lo@^H=u@Cn1Hgo2e+1BXB&q_!EdwtOKtd zm}Sgo6p|NI55~BeV?TieVMnab`GDn|msVgWuE_-SDt~}H zUWbgX;QxXXPe%~CcIo_k$BQO^@M)2Z-jDMx0nnr8{!k@AanRzOL6SFER|3F12 cckU#{-!)A%^AQKScK`qY07*qoM6N<$f;`qRtN;K2 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png b/src/duckstation-uwp/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..6374d02192139e5d39cde535bff544e3fa676c68 GIT binary patch literal 2908 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

9DXRiNd!T?psfpmP`a3J2@ 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png b/src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 0000000000000000000000000000000000000000..137ac4497328a9f30f270da042ad785cb435eeaa GIT binary patch literal 1734 zcmV;%208hOP)%t~W*-B|?nYPR@)0ubu z?t8CFF;k|b-sEQb-n;jl?|kPw=iWNe4a3-v2jM}c9Eb0^y4RV|=n+g6A)FMCqbAWB zwGY`U1#d&(b& TpbdVyS!#XYLz-aT+5K#0naGQYqXp4xk(tuui^+&_9m#Jc#+q zfyE*nxoGB#RzL($$~`lTN_>QySS6>SrAq+RNI09f;2Zxq^w(a5LN;>nG5X;aKd(0d zR$;P|C>LIgMVK#|IE8KCCjWFH4Stjn+-x$kjA_}NJOk6Y|1Zee^MH34;{HMi+Lq`^ zVzu)<_*%G8iWncRC$QMYNw^{vh1A6+^&?(ZO_(R2#_4+l;P7~no^czfJ4;53=scaw zIFQx02Ft}kl!kH%E>EN3j3oe}8ELh_WMBf~oJai zXOA_ZW-N5X(aVhf zj>z=La*aqVCJCTrDJJ1hY!kWMdIMID zg}urKcZ41i7Ds+AmtK@*#j~f z`@qO7GO3p)wc6+%SNTVB<>>%oxem z_zTyZg;k!?^s>x&6(h;-68QzH?+L)ohywi5q=m+ODwb5!c?(n)pVMKg9ccuRrlTiw zfpmq^AwdMcg_UzxN1MWdr&KCRjJNQtT!~$s0?-j=@=Ht13PMNg;Ed8yJ*RgppY<78 zOF(=dHmo(lAh7=k&@T%Z#Oc-6X+sGZq6f7)4sPn9@SY6lp&e?q*E3S5EkMntnF1Pz zZpQ@SIY~X#6CBt1*p!AZ1Ws-zd)I(McFMjF&{hGY$|WxXtJxtdk^-Pv&}nF91Z@iF z&`WfG&_Mcg_9PyC`uFAH?u04qOsd72hA z8%>?LO#px`cdKeKGrNe*!)vx*8cpS@bOLB;v%0c5G$5V@W=*z(<>8~k6x(Hd&b=GE z3_z?g56;DEE;h6Fm$SV-*G{R~oZ74)t;Lo@^H=u@Cn1Hgo2e+1BXB&q_!EdwtOKtd zm}Sgo6p|NI55~BeV?TieVMnab`GDn|msVgWuE_-SDt~}H zUWbgX;QxXXPe%~CcIo_k$BQO^@M)2Z-jDMx0nnr8{!k@AanRzOL6SFER|3F12 cckU#{-!)A%^AQKScK`qY07*qoM6N<$f;`qRtN;K2 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png b/src/duckstation-uwp/Assets/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..6374d02192139e5d39cde535bff544e3fa676c68 GIT binary patch literal 2908 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 AnE(I) literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.scale-125.png b/src/duckstation-uwp/Assets/Square44x44Logo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..3890bbfd5c95b9d85c87b2c4b21470eb5e2aa262 GIT binary patch literal 2496 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 bM7a1r8ZahWCX!w;g4IT}GK; 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 M07*qoM6N<$f=w8*vj6}9 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.scale-400.png b/src/duckstation-uwp/Assets/Square44x44Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..b84abd2fef4a90a0f39d2b2ef789cf1514c2bf95 GIT binary patch literal 10317 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 JE2S;M{|Cc6@jL(k literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-16.png b/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-16.png new file mode 100644 index 0000000000000000000000000000000000000000..78927eb6d5ebb335ed4f8f0cd10cca88c925acae GIT binary patch literal 529 zcmV+s0`C2ZP)S~fpfpV5kMW-CN6@C`PDH)C z^Ks7eo%cNs|0w6b0#w<^I0qReFK4LeC>^-;v&NWoGx$e9`63q@d$>*;xz&d(662}+v1N0BKcl_-+}d zpP`Le*xH4DeCIG5#!FC%w!mwSS0_mY?P$V5ni5E1-hTN$!TwB@)XZ{o-3&a3??C~b zn1FN=^|!!^ea|ke;J;Ck7S3re-{cloYHtt{b3DYUpd}lee+ZiF(hb{H#_uxO8uH59 z!To3puw)NO^9E#2Z50R8Z2=vyb2nEd!)=D@SYVY)VVU`cIA@b_HW}+UTqfWX=S_;? zU;Y0EkURF$kSiWFBVKFxXl{CQo}tp=*dpn4{zn}30Y5eTH2mDN7q^r;()DFed$H}w zpiQD$tF<=ZSPNel)+FbSz1%f&@4@APYXdVir=tMbDVxTW-hhI=r$o(01O7(qxR;ML T*xU$700000NkvXXu0mjfJJ9ef literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-24.png b/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-24.png new file mode 100644 index 0000000000000000000000000000000000000000..82ed7fa0c1321b5013dd576909ec3d07da72cfd1 GIT binary patch literal 892 zcmV-?1B3jDP)HdB2XM`5rXOAper7W#3bH=PPPRBTzy2k$aWs6^cg30R_}DUCv?2K*@Z%5Krk z7TnAs`sS=+CI4z+`aw$;RB3M#M*E<7oz`k`hW>Im{YwoywtDt{QaOMntBFkv@WR+N zs9H|oF4l?EnYj^()#dv7xOCm&%GCtx-ei&nI2o-dZ1G;b-Vhd$*%as&O&TC$JR z`sf{0%Y2hk5~nuodyO*2XG|y-~Xf+FltxyQn*Rcx>k@ExhY(boM2?gU@FL2xBl^sL0EX%|9g) zL+iiTv~c@aY~;*$_X_`vYc-hN3BqWqjNP6zek#ajmaZ8*LHEY}r_7?}UE4Z4hf7v3 z2k`o@`H{&Ecjd^<+$X8A!TygAwtZht;j#f?RGpu`rRg(D|A9RnU^em00sjF``w={) Sc(ow_0000tnU=OwO94}2MV44FKu{zC1+`#; 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

nkLsOQ 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 A#sB~S literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-32.png b/src/duckstation-uwp/Assets/Square44x44Logo.targetsize-32.png new file mode 100644 index 0000000000000000000000000000000000000000..89a192373b45df8b865055c026c4bdea63ca0622 GIT binary patch literal 1254 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 M07*qoM6N<$g6hNhC;$Ke literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/StoreLogo.backup.png b/src/duckstation-uwp/Assets/StoreLogo.backup.png new file mode 100644 index 0000000000000000000000000000000000000000..7385b56c0e4d3c6b0efe3324aa1194157d837826 GIT binary patch literal 1451 zcmaJ>eN5D57_Z|bH;{0+1#mbl)eTU3{h)Wf7EZV?;HD@XL@{B`Ui%(2aMxQ~xdXSv z5nzWi(LW)U2=Vc-cY@s7nPt{i0hc6!7xN4NNHI#EQl>YNBy8l4%x9gr_W-j zEZMQmmTIy(>;lblRfh`dIyTgc9W5d!VP$L4(kKrN1c5G~(O_#xG zAJCNTstD^5SeXFB+&$h=ToJP2H>xr$iqPs-#O*;4(!Fjw25-!gEb*)mU}=)J;Iu>w zxK(5XoD0wrPSKQ~rbL^Cw6O_03*l*}i=ydbu7adJ6y;%@tjFeXIXT+ms30pmbOP%Q zX}S;+LBh8Tea~TSkHzvX6$rYb)+n&{kSbIqh|c7hmlxmwSiq5iVhU#iEQ<>a18|O^Sln-8t&+t`*{qBWo5M?wFM(JuimAOb5!K#D}XbslM@#1ZVz_;!9U zpfEpLAOz=0g@bd6Xj_ILi-x^!M}73h^o@}hM$1jflTs|Yuj9AL@A3<-?MV4!^4q`e z)fO@A;{9K^?W?DbnesnPr6kK>$zaKo&;FhFd(GYFCIU^T+OIMb%Tqo+P%oq(IdX7S zf6+HLO?7o0m+p>~Tp5UrXWh!UH!wZ5kv!E`_w)PTpI(#Iw{AS`gH4^b(bm^ZCq^FZ zY9DD7bH}rq9mg88+KgA$Zp!iWncuU2n1AuIa@=sWvUR-s`Qb{R*kk(SPU^`$6BXz8 zn#7yaFOIK%qGxyi`dYtm#&qqox0$h=pNi#u=M8zUG@bpiZ=3sT=1}Trr}39cC)H|v zbL?W)=&s4zrh)7>L(|cc%$1#!zfL?HjpeP%T+x_a+jZ16b^iKOHxFEX$7d|8${H-* zIrOJ5w&i$>*D>AKaIoYg`;{L@jM((Kt?$N$5OnuPqVvq**Nm}(f0wwOF%iX_Pba;V z;m@wxX&NcV3?<1+u?A{y_DIj7#m3Af1rCE)o`D&Y3}0%7E;iX1yMDiS)sh0wKi!36 zL!Wmq?P^Ku&rK~HJd97KkLTRl>ScGFYZNlYytWnhmuu|)L&ND8_PmkayQb{HOY640 bno1(wj@u8DCVuFR|31B*4ek@pZJqxCDDe1x literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/StoreLogo.scale-100.png b/src/duckstation-uwp/Assets/StoreLogo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a5aba4c648449e0046438ee75c63c7c25e0f76 GIT binary patch literal 3104 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 uR>j6nHYB+25ZUjEP)j{00009a7bBm000&x z000&x0ZCFM@Bjc0*hxe|RCt`_TX}R`)p`HjJNrm8+H6af_q_&emJ-gvC0~=6T}~laD?*$f5Wb#mNZcL3b$ zRWCzFIl>jAqQcv+<1F;!pOqiy!{UJ>-U&_S;<(%xTxdUwJ1E2*`lCZaFX+)a4LzR(SjKM&76iSIp06& zrFgi=-9@Re@Qa{*Z$P)d14I_Us+$L;1GIStj%AD@YqX%sFlE&vH1dA?cW9()*6{0U zhD+FSaZ>@8qJ)$?=rw;yuK$PL_H!OtrRVYlyxi9}&#DQx=-@Fm`b)wmc| zbTV8a43tt-MuWqcmAj3h5HK&}^NiD*8Mo7%WHvIcE2UgMh~rbt2Ny6O{5#eDEqw+K zl{-~Q2`^5Yb~DOShv7T$1gzE%0nsV6wpb&^5r!ygi282Dw`0q(+ELIxxQZI9&?8Cm zK@btY)CheW$ahARuIY;eRadP^8eC+TK zIr(2uakIVa(jzAx11X0sn_gg4Cyn5zcg=KUsiN>HE+YwzR2KkxEpK+Qq9ndJha|eR zbF9hUf`4Q_xH;5}aN>Q2%5(IBcY&tGbdDD9p0Va>D$-;bV&eV-Tva?Tf;0_Mb~Y(2 zd=q6&<4G#uBF#k`$#}a+FUwFFj_^VWjzRpbswHc-^Bs*5MgqV0voa?SGCF4Q*eP64 zJVg?wJ^GS)Nvv)2F6JQ-TG?DnJgNqjB~cU+Uf<=|^kVy3T*1ZLVlm9COG8`2L_J&u zh%$JUGGwLSJ0`r6*#^$uVY`lU^ld7F-cY}gV*!ta-1~|$uABsFa~;F^mCDl1wRbM; zt(P1J;d7+#!Tt71Y&JDm-H^r?tuSLO3fJP9V@w`L6e{M0${>f2!rJtlLod6bAYM>A z!@Dno6Db$hSx0E7G=+AUap!jaiK{7=>sI?g%vX(AH6(bUEH2g$xWYUC zYF7zqX6lZo>9NEQES(5Vf}0C+#Zr6Una~(Q;zas{b;RnTfC^n+sB~=q3|8{$HX^MB zB?%6fu_zg=<>(XZd)I4k)x>_v*U4l$mr6Q`=OwjDD7eWC${Ob4!{&5^mRJ`Bl$$$- zQE_bl2b|3X*Hh^89P9LXCq^=rqfr#n7;ux{Nb&`pc*c=8I4$wO#M7y$MhpR&QP&XR zo8VNL$N%8Rl9OzN1C?nYukcdR(+}Wwy5E=CTxfKmG_WEH8qN#v3DQz=uGEt`X8jzA zPfI9d=uQ0$gIcK|`4lVbvx>a7PvL7DHQwrO#p}1Toao9xM1ISE8vcPT_-t?{bZ8DN zUzE<4#!$~)a7JsyHO9^SiERGc6&0idMds%D{rw8d)@U3})M4q_P4t`t1#T!z`Gs$Q ziD%J!cn6w0|3pt)1dFv=sa#`|kMc0@&!NOotY2_0iEr^Hu{vWs$+DKtC`_8#igcE+ z!c-pg1!G>ab0ZPd;iK?%KFhe=&Bo?bSVU_s$S4P`nPVt1WAc0U5D5;TT>HBerZgB= z5iD)lZgx%4W}HpveEoTEBO13HP?f_MXfElS{v>(FNcB$6(U~Od~xZP)ECz zfz~tyXcXY%!r{?LEKI@wL~s7;10gg`sK@uO=p6EbXi($MtNL;IvUUXH#sN5$R=dK& zd$UTm9uNToE|TkI81(OlO|<6p_`V1YSqfSc;Nw3AeDr7vU_yKJd5uf&mg^?sA14cC~~Y-82j9)O3in?o9>5F4EN$6D%AsidwhB-ZCRnswtPo}jW-DtmvT3;{W^NwOW2@CF{Uzlb*deLPWJ;o)ZMI$qs9B3ly!NGR%o zb|)v;@dYr%|F-``Y<8T068rt5S)U4-)DTA7#r^oohu=ZX6so(M#|ebc4p%e7H_Uv_ zA3QL4=tppmw4^W zm#vixS=sXHE|#CZ0PMyf?5HTf8nN04;B(wMeuHc;tHPr|E0v)O2|bdGgBs(^6YI=E ztT0<}F8?339+mgFYFM^T=F8UbAS*wU8R-2~RMSMdxd_ndt?2o}aNsj?9pQH8Uf^Bc zKfj)#5JGO#G(Xwitx;zGIb@*~v+$y`S`~!%1e17eFQKrAa%?i6mTY|v$1aYy;WjQF zC=uWzp)|A~;q?zH>fV2p=U$@YwlKNPt#$VZPEdmJ1dr0cq%oS#8Kyhy_zFGfD*r*H zm#u5)t_iCIsH&W}cWFLHD_jN8s#3ND&r8qWp6g9KkRz@hqsJuQa20WY+Bqb3J_36- z{}1}TEi>|97+#pjJL9y?1RkFPSGfkS5vJ#bU==^5&6U2A$+*HgHJhy~rg6NOIDJDJkOH1I{{5a*mG-Ow{kAc9zdxR& z1FQ>a+@j*RPhDDV;XU9Z+4|^cwYm^l-Vpa(f}z^oz)%>Fj4f3|;+rn+<2ADu0+W|g z=m&Y}I_;{c7$_TJ?E^s=XAWT{&eW258|rLr=lfNhi@_o z&ZV_?Fs|G5YCKdn{}r%&9P>HglQk7sKSv^{Kv>BK1=?gq>?1wJB^~(1j}mxda1qY0 zU4_kRR(Vfqax~`GQicPcimWe!i_ju`3Ht+Tz}>?BY=Qx?2|pXliz{P)C&vRmlK4_~ ze&Carx+pMv_fK5hu@5u?11$J&n?)c=T;ZJ$<#km|8#l-lv5AUcnzM)UW z4~ocB78T#XypMem@Grlk~AU=OUrLaz& zS^7JErmB@9F}#=+Ip7=22P>Q~@IXoq_;jU5xPA`M)Oz2I$AJJGdAIUWj%PV` zVtZxclt*K#^ZFhRgez&uHip8S+>46R@%3hL{HxPBK$A-dwT^qE>mej3JPyC_ zF!^Dxu4ZtCs=jDCI#mVaPznFVeDDxux`{%`Q{7r+xux&@Tu2PZ?=mQS*EXcz{t26O2a~q* zvVk-_;;I=0(^s<>N@}5CVg}u!0fnT)qmO zi&o(DS2knt`6oMijDLgw6JNjky!GqLe(qi>RbBXyhF{#BZeP=#Mqqc=@1GsWYA0#= zwr#?Zg;DG}<5LKx=mECnJONHjnBKSbyzB31N$R^U*!Y`6cy)cX**lJ^F8r*R zKNi;puMyl2X6@jce@vmHJ%D+$L#PV_JqK9K+6SO!rk!6ZM59qymW6?VfgfkHne|tH z?sL1U%~L+Ay6_o)c#Wm9x1CY%Th>09#e4Msp2KOp(&xv#x&R{CjQetf-;Y>4j`ZQq zZN|3NUb%ARW7X!R7*$>Pd0P|P__2KNvf5Qm5#81jwr1~6xCuVz1e`#`^y zU4Qjum)=`#9!jNg`$gr9Er}oe_tF^;ouv=nIIULQFx56Shf)^0(>9m}Hb%BSa`V;y z@ksl4tzQa_>(5Cq*}7MDU)F9vzw!RYWO75oN=_bBfv002t}1^@s6I8J)%00009a7bBm000&x z000&x0ZCFM@Bjc4q)9|URCt{2TnTU-)tUaf=a4irni)wJwv53CvJJMm7K{smaezPw z>=F_ZHd`Fa!g6IfHY^DVhiwE2S&rQWwh9(fhOkfxlp&Gd%AnS|8=)4%hF7bX2!5p`>VP})BXA#U;oGVzxR6l_K-Zqy=}MzaHYd1%gI@aW;cwU|h=yxTeye@_!# zq#uW8%5B$+lmwRbAZn}`xSSoomV;@QC(frm5w*C_`XkOWbL{whyfBuIaL~uGH*H!7 z3y_5kl882}pnT8R2es}9-t#mc)>3|7tRIh$#?rP|@dOsNN5h9W-5S761nE#QiNPnH zwGW;@20kn|-@v0tqD?;$AA70Wd<9e3i-pwEe?SdS^p((i(L9}P*W-KC##60T)V2g} z*H1!s3AK0@Phj=kfODfq;@8@Ee%Z=Hyu|P)zLSTKr(-zV%HsrU4G!1lVEbrwn#*WN zQT#Iv_ZkA-pg_uuP;W6Yp&pzTV0{t%l;Hg>ed#Z>WAUp}t12d*z^dDZeT?UUFUG@Y zn$4T)35#gd5D#TZxAU;HE?$eH!SYM|8d*4)vsh{|&FCO%q4Gn6erYTs_sIk7RsL)$ zL3_Y@gZ?b1{Mn0RtaT6Z1eQOD9L)rM>)=amfzdDv`DiONK20BT1WKdp)reP~&$XU6 zMEGAqJ@eg!zGW`UwP`gt#np(x!B$Gru>DyC$Feso*yh7L)21JT_2pLW&B4pS=uhHd zDnSaq&bJ8M25Q-1$k(+%o~o`{1WpDWhw>vsp)%Jo2=w7PYU8C^9m@$7C_8Qz5UE?t z+Nb>4dGxj4rZ(TH<#4xlymA<0l9Hlf14|F^FnOeCZr$%9Kj{?K;f8gBNzY+F-64`# zf<=+zaItdWy-wM^B|XZY#i;FV)(#Bt%)gJds*=F+Q)6PhV+T!7=clGC#gBbEv#Y z^1)dK^*6zqQ*;qxkfQa;@^sp(W+hcg9(vw3$BvwH#d2ziIse<;sbxo3(8;zaAQ|!M zgT#}^0HbKv+x%>2J#%Qe`#bgIP`+r26Pg6bWSg3ncg7cT`dFqWdjl(phbhAaBs%JMF0|@f=*{RXqsS%HHVZV4`MLdHL|rNZ<5HGrZ3s{D#4n>^8~GCAK2l4 zEYDsWq%J1ClBQ)HKdL)zhfopi^#qpwsA5C+m=|Cv+x!_jaOwUL1U8xcPrwipltGGP zcQs@<9pH^M1gW0KPJ-fdS{|TzraD+ft8JdX2r!((jVcZ|qsiqJn@=l~(-lY}^6;cS zebgFCl9C*}zC_I~Txni}2dxyYX^7&xRvfjO03~o*D9o97y&=HpXxQVBqQ0Oq9rUav zaGQ9Y0U$=;sK+*Fqls;DhH5vdsEfW^+pc@4L&bdJm}VXH2k@Tx7M6y$;#5tee@Z$R zJdn%4kcjGY%4_0*>Ff<^X6Ks>AfM4R52p3dL=~z-Ct+M|N-5tYChr?Gx8V|U&VN~8 znXlp~KJ}Y4KTgpmVh>JLRE9*y8R_1ou2*Pm^|Lzky;(4=I6o4iR;uu_Zhlh9GP zQ9UV{B`P(vi7~1op{TzNX*7X&Rp>`-y zEd?z}iFr@|0PhzrC4dQ4U|l)sPwl>#+MLHl3pSv&B~y`f%5yZ7=q2XDv6|Sph>pS^FtdiKStDXKn!JAJ=OWSOJirOlS&W;aLN? z`n2_kH5&F@{oYDRqlv-!c?DtxQXcQ5)FG1tc{?CVG}D7BwCg<| z5wuM(sAc*31Dxq*FaB&;-6Ijz-GqaF;~gD0|6W5~IE2>8O)!m}cEk;0(D4N${6{cc z$72f*p&YUt94nbZ?h-ahNddI&4=Lxn=%%kW|-JPQl)m>t% z?YJ*6x}; zn5uNa$5h3vpF-1|11qo(HBI*bnq`}LUm>DOF$@+AG$R~|;+&c7IPI@`Z9t^FEW8OY zU9isuotxx;GI^~VmzqDsOt!UHzZb8TGUAs(sG$fWDf7$JAO!$436v$2NJQzKx7_+c@kN{_Q(rh#uAyva5_sY^8J zQ~TQBL}Q@<<75-$i5D=kpJ85w+qF3E(r!}g>;+|PyJ#E@*iwWlD1XKQWb@EFST-D_ zX$F*^E(n@SRQC{ZPc^2}lJt7kvjMyOlIU%b)M=0Y`OwIFZ?!scj(Gtt*O%bsLgmK> z7CT+X4n`z`c_5Rnh9ol3lYFvKYFPu#((mSsLk+YTQFYcZH>_dXZv(R?u&kRqmO@!9 zyDp0{LOTqzt#SB1&%9jdma_I|iFV1Hy4O@iK$BU7?mh;;89Xn=yWy!d7QOG_*=)=rkInMnu{1o)S_O z#n0R+-#I**v5OD6=V24oxIQuvCjrzv*OXHAO`ICqD|NLpq(Yl(4QWx}nE zXKVYwU6m@jrdZxKNzs6ytpSRtmUyosuCmy16c5?-D4@Av-{%n3{18{<&VaJb@OT?| zgNbsG;APl>HRMuTQZT27VU4S04X$aL&Jr2VV;p2&UZYdj6;Mu&Nm*O0%VqB=6^)8> z09{4N;2uhmglhm?4ezy2oO8Q1kw4z98DcnQ9aT|f^DW!Xr+1l-e zsFot4MFN_b3;kI=H7zfWTUL`?nqUqo+sD)Oz>F(t$@B2SYd^x~cpT^JJ{3%Kbx*UZ z?{R9^P1@DP{nJQNxqa{+iE2qA+9Z>nhudI`I-RXK*Qh=5L$K-eO}OxXqIjGcL|aoW zj zf3CFRZ&*G)v9XlKP^G3@}iT^S)Ly=QI#MeK#BMHifEOH7qIG7=q+XT z+OiiQgsA39)vn77k$cjt0Kk0((#Cu#9XZwb5$t!xJD>>o6H<^WJ=U7cdvpF zQ!g~ca>_D^wtAUeYPi3I)=HA1VCnbb4QoD*w&vh6cI-N>j>(9yVGmOwGAGqn3Q=_j z9`#Va>YQEHN?<1vxC5W!KlC%ybYNA)lh4vt@)@thf0`Fzsg+jSBrl_;1r%t7Or=z! z>h4dKS%+d^IV9B@z{C7((~l_s4T@q?+BV4t)I`cv=EZo}Vy3PI@HgthXlsO}5LK6e zMld>10;c#S*@~3Jt9*ou^~3N|DPt%{#=O7$h!#E*;3%V-`s^_tu_+?NPcL(ZJ~7sJ!pp|7&IFa+)I zJ!_HoJ%e0yjZ6f?*1rDo_A8Vl6=(25HTZE7gTUGJGYhpKX1Fs3v4EWh4USg85ntpI zQ0a}#r*|OV{sjD=J_qygATrTr)G3V$BCE~7sb(uy=#NzA)!sroZ8L{|!QYTaY4fK7RDCzf_23t z1pL$_GoxYcU-%h6aabmI))*gS5WGe`5a*oWLCH|2|kL9Tw9ZE6vgM8YWWR$R*b!-_VGF zKA8n%lJ_}WtuM!N_nyf*f&rhbhG~qR7PPGC->|{-Z|l&rt<(J3@r|aL>O`);Q?IFK z<(g%EwSO_ht4t2jEAg*0YpS`efZy3)oS-SLgw6aDcG@oGHEmT{-0q^Z3yOLc_XA2BiQ>)rc&>G6_=`lHG4j+58gG=pEFe= zZMqa*hUe_m+Zml`-1hX+Z#E8m{;zdG-=Uoc%tgnbvzDG{JK?R&oACB?Hx-krf@R$RZPgzLlzM>~L8d&xwH*cq0s%~& zpusQe>|$3nWSyx1Vz0l2Sj~JS4?Grn#zrz24D#UhWd9o<&HLV>tFF6adEr*8CshUO zrB|T0hW!n7bm(iD=OpQ8j6@C}ugzoIwjf%k)}kqDp>LZX$?bXg>3S>)bC8|SK7_(y zB$LU{)9KVL=l$RZRhusMDpdvRgq1MX9b5O~T0M8m+_>JlkxqI`+EigN(VM}aKJZ~$ zV+|s?Ec~(;$mva_z8<-rOeU2`-jg!(zr5t^vv*XppI)WvK5OP{{f|9<;*{s+4G2mvAjGAfJ1 zh$0!lWIVVJ7!{Kcwqejg1cebZ=m4UKCrNi+E|PS%H6Kv=>Huc_7j+58~8R9E>xB9AquDvjzSvuTYttc zVPdWE5&XT}?Hr7X4v2jh0`^2y7{{Qy*kun{@4X1wWAG(g;TtM~ak};{_e+8TgTPeb zY`X`ikXvp*9RFo3Mf*s$F&io>Ae@26+cvIdsdd&y&ctJIM={GEwBC(4oj|N65bx(e z1N#QLiB~5<3804mzGDaQX?r8C#4-4}8i__`Nksv~dIWP3#HGr>=lJS$K7iY;&G@{E z<1)1be=bHn2h_U}M{wq^RzaMmKj_Tjp%gS=6k~JP)}Ps%@OdkZH56lym!gfiQbB;& zkD=D~;VbOeSJ=S@Eh3`smr9F>rR10;)+VfjjjN2K@mAqYCJ+x{0>Ze2V60GKRO))| z91H1j+Ze$Ta@7(}o^^<^jVEAhG1{0f9Yi+(&;+5yMf^xj5P8lhc1mZaJ5IyNvqfsS?(@ zALR^)&ySS33)r;{h)jjmumDz|0ftI**vtd(*FY$~D88mC94a6Re^`-aJ%D;t;bK1b zC5n?OEm{(}wl+@^Vddz+Q|vfSAh)a|P*)jC@NTKA&P#{*IH)xo{PwNz_w0mOI~P{% zL9l%x4!Bq`u7ag0YP#6NcH%w~YkD8+?JKcJOl2 zPhol>jb*7BR4^YxErg zeK58#evv76KorM4g99i}QBN+}l^8(m%Lg^Q z#MCvNFYOe0#>RN-PxvnFu5VLWR%)5Y?;9!{i!;TJwmeNkVLLxtK%geOWo6;-6pfT? zvZvXyDBmS1rew~^tPA(=Xz?f?4sk*X1i=$2Rpf#&uc(>9CANEyh#o8Bv$(!i(Z;XP z&v*8HA2eJ;f%o}XUc41(-k|**4NOqR9M^BgpL4Z(H-v0gMu=F8ZG9 zV+9+zQdMGnhyzqjV7g=m%RqTfpf_l4SfUr4K}Z`4Y*mYADDd)eM%vEv?x`skmKSM!GYS-Vvo-KX)B{Tu~>z6(~Vd=Gi;PB0>IEa8 z*_2@@h+Z-VD8th)``#q(?~)3^h=T^^sbE@zpVu3 zeVo)yaCDdDzDnD?!2b|I&R!A##Kf&YpBeAPuS-PvFX29cvus&73S+^bnI46b?Qlud z%ubgYZf{~cIqsrgXo=My>;yu!2$jLi1_+PjIT3-P&?&NZQ#1yt_Umg)he*zVSWn>t zv`WMWIaPn)UyG!`t1 z;9Kqie)!-R-1g-j)Q^b{_jKNr6Cm+*)DsC@O24B*rFOj#at-gw$%Wa|H_9|w+S*PCQN9=n1(P?xy*_@C?`O|3eos>;N7iI_48m+ zK3g<1{RM?FvYEXZQRU=7QRQM%h7ebFx>U@5|LP04HQAm12~ICCs&b&#kwLwP2RkkQOl(nM%x55%r5}250LmW|GO9A9=>W>fidXwA)B_cbZ_)xuJ z3}f%h)Gu$tBq*txS;Q|`m>Ba?kaBSr{d!hgXlxvZaHI-v?Nu@U$+vj@ICPr=u<&CxI6 z$pprir=OSMET*z_o^1(msY*oZCeXvRamK;TIOnL=KJnuvZoI+kO*qlv0QO(^m)44C z+pANQzGJVzah8oW#((4Cy!z3P3OC*|l1J1X|MZPaG1)|8kD2SHS4Vv_=U2t zR{aF8=Gu=;DvC87@Hy!_ZCNT=&rGI6DgKMe32TY?G0faS5j`gBCL%V6e3)&UIwpwg z&g{U7#cfpBuJ#sjCCXZcahH4VP(bu2*Qrz$_zdefg}_|T$?*eq6FPG3i%@agn@ndh z+t{0@UsCY3ZKr~+B)3%1DwD6Q?1539vp8Hxh2NjNAc2#E2}dUgM~J9;iPtvt`62mI zLYG%ZiMZNM;%w_8TyET$`!3|7`J2KSUPLw<@!^qP?cy_fFVUR5n1(EA( zsi`>8o~i#_n(d=SjmUU;zJ)|&1sIzmtD}d8f{)x%MQ|jaIO?``kaBZz7R5)}!dm;!muzj~Tl8rxOkh3l*O`wwxx&Q_k!3oI!ztMzNI5}Eq~b8T=oQy| z5RUEN-zVr-cU?9si*7ti3=xy}?jR_;3CawDG9~2tD!Fou8)~tG9Q=B|8^d`uh257x zWi+?aiXXG|oW+5%;d3oY6u%TArs)y9Bnw`wp%yr3_X}V6C0U!FwGPH5GBjdUx#_M_ zet^%U2+Yg-Xc&+yXIBADp4XlYw}_bZ@&7R_y;g7J@e6loOU=np$!Q3R4@icyC{9~0 z3Vu-XGTtSvN8(7rDdI(oH|;58x9(auSv%Q(Fuj#P(HT_aX?NLJ^14J!26=T6$Y<$; zjN{Cn9f4KrrCJXJjOC`G*6BgR7rj=L=1yMSsf=g5bWk@CI`br8{D*+8kMPmQ`7r_TyNgrOb}qvEHD@a6iE>{0&YpbIcd{jK z=~YD7SU4h#qAbMO9Z`g`Wim(|?&BH|T6=Z_+R2^Qkz0OXe6x7R8IH&ym_w~BmV{g}rsi>g zg)_XZblDI&idIu#+C_M7`q#1U;rHP#ioG>eK76ntNO48Zup99|lw(&J7wJ`#qSDBm zN}92g&a?#Lj}22s_+V@^b+0R zLJ|UoNkh$< zM~H~Y)d}=0GIEyPjcsyBvRa6rjzpMkI4VeS5g5q@ImcRopR<#zRRtD#2byI?wv)b7 zo6pK(zD}TURJC4SjjC?kppy8W`hZ^68WmI&OTxGr580Puz1@oCeETixm#JAtSo2+3 z6cB_va&ZDh*O*#7{hDHStvXUCl8!1WnrWx5&_i^ywG4OL3g6_riwI0*Hu@#!l|^qA zux9wOHOajd8i;3j|0?4!{4tBC%0flAwT)ZR%9o4n3vfGukzX}9z4ut8!6;+TVj`Oa zI{`sN)o@8|ZuW;5u=aXb>Q6XdZNT$6bZ5k=WX_NJsqXk0)`d8YwX7z$9HDi~Ao|5{ z_bd){irjvbjT7i*C+c&%*7JG@a(JgUiZUEsB?4NfUoE%ZxS)QLU%7sRB#`GSTxdOLQe5_UhoZSE5{Yv*>0G)<< zKmj<=33N}IPE&JjyMq_ibtH=9v}t`%+j2T}nD9@=Vyg9mww#rk%EH1llVtR*RDwtd*Ya{L5)L9o%(Tij$2CGlCD#n#LKW~LJ; zV#v@rw)Z`E4eC2K;*iXV)J7J<~kL{ zwG^kNIGiwVDk~tjPDTX>72VA~q}mm###yLtu=L=IU(%^Ea-oDfM1NFjf8rH#)Ro4e zxcztIadXo+9MdgJ19Dl2C6tk{Cc`r7twxnXa6eXy>)pWe>xbWA*=Kcr+PAFcE^|{k z`ackr6_7|3eFFts`E8g9g_mA|{GK2Vnt@bZJpytJRLsl8ov3xeUUcDyobA`C!Pr6y=;{jpUDD3`=DNq&?)Q zaf?E|HDNlt2K?^EsJ(pM=Ny)%e^}^gB-G{uEu>g|Q^nM--Izs3u+{YGa#G^$vk<>+ z`C4`*!)>ibYRa@=a&ncG=x&CQN}$1K5Djvsvel?^7Rw4q^K-EMN5kq!TIf#OI*w&} zadG+IyME>p0EavmdJtSmvL4c1F`FB|Fu7uS%l6@YI$_mJmV_|LjeY#tYNb;#60=K4C#ECy%zxL~fZC+4S zT|FyKZs_iIlFoza6nYvb!N>HkkA^rmL3h`Q_EmR3z|f z?ctDENg%_X^-(d1anL^V2s}MyJ|@2OC}uzPJB(}JgW8Y;d<}G^Of>hT^$(m_hTrT6 zhHeTpO}GZnm1X&SKq|YHMF6TQ3

i?Bn=z?$ZCZs4q-fvLS!c9&1>>Dl2H%Rv@zb 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

MY- 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/WideTile.scale-150.png b/src/duckstation-uwp/Assets/WideTile.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..d87729e47042a10b22eb1162bb65e834faa3a873 GIT binary patch literal 6517 zcmeHMXIE2MxDFtoAjOdcL{L$1C{jl0y@*Kfp@yO$HPk?mUIbK%N=Hg)p`_76jT8l> zHz^VVA_69~C=dn^xS1bu*Zp!ooU+zA>s|Z2`)T{^S7s)99Blk-004kP|M5c$0DxhV ze!p^&g?`Q*dlOH;Tncz>7YqP^ME*M%^eu#`0Km1s^&e_kg%xg-F69Zh7Y+P!w!RsB zGhg_JOa|bR)?Ya5Z&#E+yH9!j=b|3E1!}=`!8UzNO1E#Mv`aON4<)FVU{u9Z=E`I5 z-Tq5TC_adf<1M%LV{L8D^`FK0JGg~&hZ#ZbJh%4ce4|fC(P6K5$T-x_*xr}Dh%^70 zlUfV_5SzQTbjAn(bedf$0|3HqKV$$_DJ8Fv>@nX!wXnoc46^3+uOTLMxif6sf^sqrHO$hdkL5`b4eOpe>ZJs z!kse1`%%I3ybx){j4tBTR$LGitFBaf9I|W z43)UC5g)o;%MjsOAgL8nGv6>%EboK2KS=vmh9GT^+WWW~LbBE1)jYju-mL>G`c0X& z19@)Pel~^!%dC?dXE4Lxmnm7*ZgHW7(QD1SNadyU5fLr4$wb{06&7CvhQ)9pQ><&G zo1xLJLebdMD6O!vGsPqXYl+DV(Fp)ro=L4b^LsSJbLDy7b$gPN5NA~iAv*PbyI8xS z4Z1{R1-&1jc9QNlqpEUyyb(o1d~uWBm#6kQBKa3Q;6DYygb)9Gm_|)AM2SSE;bs5a zVfd29&CEX$fmAwrNN9=cE!Ak%yn$3HPHP>s?4W_=2NdBUOV# zD9*smRZzEO233IHwX6J9)`jr5ji=3I}qf{7|9*nUvk zV3YG=z;jJ8noXwWN}1*z$8U1_Bq&%Gl>IgA4Kqa?ZNO#I=APpSL~{!C4IBOmf-$K!Ck-BsE(Btqo5D_S*_0gc*>!Vmj3cZ6C;*lhExV2 zwy?Y>dL~_x?KWT%p2IwBa%Z{ac#5Z%-1`~CNs7;eBEdA@H z(CN9K3TFIkBcm8K1ph_T)#ye8*fsR)WMi9KU!@w0>;0DnK{HioZPIcaBl>vJUHkQo zFIw5?gWp(d^gFqGt&i8WY>G%MmnVd8vpdHX0YotBYD>kcKOKR6MN z@dN3d@z5W*eZfU>th2X}@_59B1>XM3o*%29 zL?;BdQ_;wJr>wH^oINONA)Y)EMa*`%`t<>ChM(wMBBGr_n1t0ZH+z(Fq4G|8noq>Y)v9})8o zhzC`J4=Y{UCCC#{k)uWJ`+avK$2{he@*N%m*-{^9^YA559gd@5Z*WlOT7?U7?=x=& zQ#{|lC9be78-<*9Lyo51`Y_fF*LQP{Z)ApZzO&yDH6{xBhl0`SDT8gM3b4Yj>b@O~ zvy@G`9^&XqX4zz=XO|u3`gUe>jbHL|di!ATc0i)PQnVkfEf{$X{$bzCizI0=u(>|mlokqAGM%0w*`g8WSr=b zH8FP!gmo>|3Pp)~&Ws4FLRLHL_dA+ZH$PYM@^RSRO1iU+R{nIIcv7&_m@q3oH?{!F zBQaOA+s^IxXz#NsJa+DiMt#^@DRa7CRacM(kd5bNrdV}qB7D^h5QgF^@Z7OSRVA&c zDUQA!p2!_l&o_jYXwSm})|JL=FGvrx=VT&DbHh=9a_nw5N{Y$({dIu<&lDgunO-If zQa)CCFom}hKfGu0cJuM>q6K_49s-$vTHE~f-8|T&c2=;SpY&X#JP`3f_ZWd_17trN zDXb)`Vfm#d-5L1k@xrXiF>@&HdN`!iHxMgMVnr`Dce4#vQq*+y9vJ-FCMKO&eWtzl z{3JAG_;Cx9&9;2UjV_w@1Zt-^pAuZ&%CMmm_lvF-X?1rh(KGR|$N9#?8DgT@#X44g zQGp@R&z|o?Qa?9fpAWEHPOGT)5%DMP9}sDNQq}Ah3dla1ba=F7{F0q1r zc9#J^CRIMyqzwGE>i1S%&);?-BNZ zQRIl`el}h5$69I8Wu>>34IMEx>^Ao246Faq*&3QL;cOy35n?l!bmYcn(0cF&ROw?? zk7`;Bj3s2F_aezACpT&sJ_g(JErs}3kDuQ&Gju?&j~Ah;e;b7}2RIQ;G3&(bSHrVF zysB490so#w+oPj2d=fy0QJaVQ&2MPC*Kayq@}w80?$K5~V%cTPFD$%a=bX+qV`k+M{xcP^4?IZ*{!cJP$4^yjZD?|}=61LD(l=`v~4E8mw$axOC2ud#Ur zI6Tdys578>X{lRm30d!l_O^Cy#=Ce%0MsRj0w(_Mg3&Jzz(lFyfe&HobAn9 zkDL-uC0~cX=V@jIRdj4d$k;O_X^~$f0tqW`<;dJPVlG`PrRp|6i44jTlN>y{V=Y+ zPR6JHn>XC%%j~3ZDcGFzve-Rak$Ep`a+aAZe%2B`5VthRFVh+T%>b*pAx>4u-}3Q( z*cQJ#mOkHM&VeT80j;3E>3x%kH3g0>hP?2sCV2qn+DCM`Dgy#`FsOw>?f((h^ihwd+&j0 zH^Y^=EAm#;*B`0biRMeZQw}SOno;Xx)emyE|p39bZ`H7Qv2`irc z0fOr9C`+6mITAn>+n{R6@#wCNz?EzB=N;Q5F&gCAeATukq$Q)t4PeGfcMUGwlaVUm z)2Z0f9%yFLt7`^H#(mk@tw=X>L+kB_rF4Gc1X_4r!5G( z@_LVMdWd5UZqCsjUGi&BB_1XTcHC@32Vp6NCu}uOar>Xsz}O`OuD~Y)&mrL`kMRUI zitiDDO>KKvCH8SL9tOUy+3NLAaMpzo)e0nNeIt1zK%J+Wm)@gX!S}*ji?O9be)F@5 zR0jNr#X^W@^EQ#zCTEoFpDA{)xxB@YVs}e0s<4S>Gd1KR2}jg*`WoWeIp%=KDz?|0 zMdhBAKDvDKIXe$9@gY#aYT1oOYNzNQ1;{^@%UnjFS+_?((O2Ynrvz>HGNArmGekWDun4X7K zT&C#U_%-Xol+@nZ?K?{=fWBEU>LDx_m{>pG)@ff+CC{aRHs#d(=hAwfq{-T`#L}TO zuM^&oCg;LuZ4;tbE@#fy^B3AU_m6GY#G8TD6hO7m!#K4bIhW5BHk*EuY4!XerDUnw zD7p8nR9-qpXgqVVJsf0vIm%A%c2T(>&Iro}t@v9iRxO?Wu*4{jr3TK#0uRh!H-m>} ziu3%NqVtmRz(>FGr(^nVPM!BB9H&}G+-w?>&3!@MNpidn?fynvO9~`G93Qby zdhaE+I@^3*&7dOf?KY|ae0S&u!~LhFxFNZ*`~l2b6|UZq+B!fri`3*>gHys76uckl}q^+}t06;wI> zNZDE0n<VNl6?kys4n~9oh7*H|Bu(cL?$6R0Bd*gq+el@@)+awG0?h^_)}SDh2-Vw9KvrV2JW)%VvrLKJx4H6z~d9SVB1$mgY+PLNDjW) z8H+E>9$2;zUJeda-HtNQCfXTGFhzOBy&uGjr|JL`uJOO_nDLb(*YM9S+xJD3GSlF+ z1+EKs|Iy~j1Dpqy<0IGHU1K^W%NO@wFNEI?`GH)Ycx`5r*zQWqH%R~7T8(hfj1K*p z+vK*uLqOITA}w^8bf7D->v|+`eJCr=A%i*K?X>C|49QF$Bsjnx9db2$@19w>1kw3* zDPUG$tpWV}kxpFB`PUl`)=H6aW#rKzj@I&k^h6I#vTVs-@5h6yEu%%r=wT;IE3gzV zDx&XMGZ$tIygvFWso;H?uUY+&tOc^kI$>pf3w3ADRc28$@0ISjkCz&OHzky2t!qrgvc+fm&~!5fueQ4nd>tnLfTuXw{j>f+-U{ zCUSeOW03v_AKC|x)98a;E~kKj!)BM!I}3jqTo;dHNwC#PFh4uf5L@s!_^@b=Yf1t& zl?o2(=;%kV0It%>f494Al}97Mx#ELGmTbuzZ^;zLt+t&yT?To5hxOoi9DBLbT<8kKvaATSl{2NoT|hP(v$Mtm%yC-N=#6; zK~OZTWMWz%bWCC+_*a18Hp?=E;ImIj{(u@#5Jalb&OJEf;dXEB^KvAOpyYyPvtiS- zc)V&@V|#7a_hUr?+uuVGNjssrHyQH6=w8Y2Js7xn6wE%M=w*^Mo-`!AY-S!KRdxD| zW$2k9xoxu2tnY~l1in~~t6a5G{Aru0oJox{`=)rZe{Scjo7zCH1CkWiod z`Kk8A1uIdWVm^U;POzbl<)|a4GbI4(Kh$;pmbV5A5P!c~uY*m#Bdz?A+xcG7Bid#J zcOkw#qiQ}nIh3s-$YOlC|F#4d($YDz@thn$R<>MF`R`l}YVo1(Qb*T??sR&s_AW?0qED!ZFSB!LzUWwXi3mB+~Hvar^QLLVdN4C^Ai7P73=Vy!BBih8uG zv6jV3qaCtRBkA3WTMF5uI7KM#o?Weq_V>2>v)D*JASaT z`fCA*P(A3Zg*3KwJ&1+ec^F6dR_7q!G3>S6@%_cvF3c@SBj%yapWg!~hT%b?{6ij% zx!_9E^C|t@^LU3shL{!lkfrUze0E2b4;P(l+fOqZlX`~&hc>zbdIg1;D z;8N(M?ys{cg{*t~Z&{rl|NnpQ|J!YW{qv2PWv8%~f0*g}C;)w3lZQBMm-znyJmMRR literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/WideTile.scale-200.png b/src/duckstation-uwp/Assets/WideTile.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..6231d0d2dcd27366a6803b449f93a326d91c8292 GIT binary patch literal 9509 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 literal 0 HcmV?d00001 diff --git a/src/duckstation-uwp/Assets/WideTile.scale-400.png b/src/duckstation-uwp/Assets/WideTile.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..1008aca35a1619278b13d670bb1d28c2339f1edf GIT binary patch literal 22785 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 + + + + + DuckStation + Stenzek + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + .cue + .chd + .ecm + .iso + .mds + .psexe + .psf + .minipsf + .m3u + + DuckStation Disc Image + Assets\duck_128.png + + + + + + + + + + + \ No newline at end of file diff --git a/src/duckstation-uwp/PropertySheet.props b/src/duckstation-uwp/PropertySheet.props new file mode 100644 index 000000000..e34141b01 --- /dev/null +++ b/src/duckstation-uwp/PropertySheet.props @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/src/duckstation-uwp/duckstation-uwp.vcxproj b/src/duckstation-uwp/duckstation-uwp.vcxproj new file mode 100644 index 000000000..6af60b175 --- /dev/null +++ b/src/duckstation-uwp/duckstation-uwp.vcxproj @@ -0,0 +1,211 @@ + + + + + true + false + true + {e2a6cea9-9537-4c61-b637-81f1f17ef638} + duckstation-uwp + DuckStationUWP + en-US + 15.0 + true + Windows Store + 10.0 + 10.0.19041.0 + 10.0.17134.0 + false + true + false + + + $(SolutionDir)build\$(Configuration)-$(Platform)\$(ProjectName)\ + $(SolutionDir)build\$(Configuration)-$(Platform)\$(ProjectName)\ + false + $(ProjectName) + False + True + duckstation-uwp.pfx + SHA256 + False + False + True + Always + x64 + 0 + + + + + + + + + + Level4 + %(AdditionalOptions) /bigobj + + + WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions) + + + false + + + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + true + + + true + + + true + + + true + + + true + + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + $(RootBuildDir)frontend-common\frontend-common.lib;%(AdditionalDependencies) + + + + diff --git a/src/duckstation-uwp/duckstation-uwp.vcxproj.filters b/src/duckstation-uwp/duckstation-uwp.vcxproj.filters new file mode 100644 index 000000000..149abe69f --- /dev/null +++ b/src/duckstation-uwp/duckstation-uwp.vcxproj.filters @@ -0,0 +1,304 @@ + + + + + + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + Data\resources + + + + + + + + {db9086fe-bacc-4437-8272-1aa6642082db} + + + {fa7724ab-a364-49f2-9cdb-11307aa3f63e} + + + {8eda719e-58c6-484f-b00f-90ee69cd6cb5} + + + {1d471d6d-942e-4e06-9b74-36c5620c9d43} + + + {bf7c6843-57df-4e82-bf4e-7ffea724e92d} + + + {26b9c7e0-8acd-44be-848e-7da8e32238fa} + + + {1c1f164b-4184-422c-8d95-9c4cbb6a21eb} + + + + + + + Data\database + + + Data\database + + + Data\shaders + + + Data\shaders + + + Data\shaders + + + Data\shaders + + + Data\shaders\dolphinfx + + + Data\shaders\dolphinfx + + + Data\shaders\dolphinfx + + + Data\inputprofiles + + + Data\inputprofiles + + + Data\inputprofiles + + + Data\inputprofiles + + + Data\inputprofiles + + + + + + + + + + Data\resources + + + + + Data\database + + + Data\database + + + + + Data\database + + + \ No newline at end of file diff --git a/src/duckstation-uwp/packages.config b/src/duckstation-uwp/packages.config new file mode 100644 index 000000000..6d1e442a5 --- /dev/null +++ b/src/duckstation-uwp/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/duckstation-uwp/uwp_host_interface.cpp b/src/duckstation-uwp/uwp_host_interface.cpp new file mode 100644 index 000000000..1de20d6c5 --- /dev/null +++ b/src/duckstation-uwp/uwp_host_interface.cpp @@ -0,0 +1,753 @@ +#include "uwp_host_interface.h" +#include "common/assert.h" +#include "common/byte_stream.h" +#include "common/file_system.h" +#include "common/log.h" +#include "common/string_util.h" +#include "core/controller.h" +#include "core/gpu.h" +#include "core/host_display.h" +#include "core/system.h" +#include "frontend-common/controller_interface.h" +#include "frontend-common/d3d11_host_display.h" +#include "frontend-common/d3d12_host_display.h" +#include "frontend-common/fullscreen_ui.h" +#include "frontend-common/icon.h" +#include "frontend-common/imgui_styles.h" +#include "frontend-common/ini_settings_interface.h" +#include "imgui.h" +#include "imgui_internal.h" +#include "imgui_stdlib.h" +#include "uwp_key_map.h" +#include +#include +Log_SetChannel(UWPHostInterface); + +#include +#include +#include +#include +#include + +static bool IsRunningOnXbox() +{ + const auto version_info = winrt::Windows::System::Profile::AnalyticsInfo::VersionInfo(); + const auto device_family = version_info.DeviceFamily(); + return (device_family == L"Windows.Xbox"); +} + +UWPHostInterface::UWPHostInterface() = default; + +UWPHostInterface::~UWPHostInterface() = default; + +winrt::Windows::ApplicationModel::Core::IFrameworkView UWPHostInterface::CreateView() +{ + return *this; +} + +void UWPHostInterface::Initialize(const winrt::Windows::ApplicationModel::Core::CoreApplicationView& a) +{ + winrt::Windows::ApplicationModel::Core::CoreApplication::Suspending({this, &UWPHostInterface::OnSuspending}); + winrt::Windows::ApplicationModel::Core::CoreApplication::Resuming({this, &UWPHostInterface::OnResuming}); +} + +void UWPHostInterface::Load(const winrt::hstring&) {} + +void UWPHostInterface::Uninitialize() {} + +const char* UWPHostInterface::GetFrontendName() const +{ + return "DuckStation UWP Frontend"; +} + +bool UWPHostInterface::Initialize() +{ + Log::SetDebugOutputParams(true, nullptr, LOGLEVEL_DEBUG); + if (!SetDirectories()) + return false; + + m_settings_interface = std::make_unique(GetSettingsFileName()); + m_flags.force_fullscreen_ui = true; + m_fullscreen_ui_enabled = true; + + if (!CommonHostInterface::Initialize()) + return false; + + SetImGuiKeyMap(); + + const bool start_fullscreen = m_flags.start_fullscreen || g_settings.start_fullscreen; + if (!CreateDisplay(start_fullscreen)) + { + Log_ErrorPrintf("Failed to create host display"); + return false; + } + + return true; +} + +void UWPHostInterface::Shutdown() +{ + DestroyDisplay(); + + CommonHostInterface::Shutdown(); +} + +void UWPHostInterface::SetDefaultSettings(SettingsInterface& si) +{ + CommonHostInterface::SetDefaultSettings(si); + + si.SetStringValue("CPU", "FastmemMode", "LUT"); + si.SetStringValue("Main", "ControllerBackend", "XInput"); + si.AddToStringList("GameList", "RecursivePaths", GetUserDirectoryRelativePath("games").c_str()); + + if (IsRunningOnXbox()) + SetDefaultSettingsForXbox(si); +} + +bool UWPHostInterface::CreateDisplay(bool fullscreen) +{ + Assert(!m_display); + + m_appview = winrt::Windows::UI::ViewManagement::ApplicationView::GetForCurrentView(); + m_appview.PreferredLaunchWindowingMode( + fullscreen ? winrt::Windows::UI::ViewManagement::ApplicationViewWindowingMode::FullScreen : + winrt::Windows::UI::ViewManagement::ApplicationViewWindowingMode::Auto); + + m_window.Activate(); + + const auto di = winrt::Windows::Graphics::Display::DisplayInformation::GetForCurrentView(); + const auto hdi = winrt::Windows::Graphics::Display::Core::HdmiDisplayInformation::GetForCurrentView(); + const s32 resolution_scale = static_cast(di.ResolutionScale()); + + WindowInfo wi; + wi.type = WindowInfo::Type::WinRT; + wi.window_handle = winrt::get_unknown(m_window); + wi.surface_scale = static_cast(resolution_scale) / 100.0f; + wi.surface_width = static_cast(m_window.Bounds().Width * wi.surface_scale); + wi.surface_height = static_cast(m_window.Bounds().Height * wi.surface_scale); + if (hdi) + { + try + { + const auto dm = hdi.GetCurrentDisplayMode(); + const u32 hdmi_width = dm.ResolutionWidthInRawPixels(); + const u32 hdmi_height = dm.ResolutionHeightInRawPixels(); + wi.surface_refresh_rate = static_cast(dm.RefreshRate()); + Log_InfoPrintf("HDMI mode: %ux%u @ %.2f hz", hdmi_width, hdmi_height, wi.surface_refresh_rate); + + // If we're running on Xbox, use the HDMI mode instead of the CoreWindow size. + // In UWP, the CoreWindow is always 1920x1080, even when running at 4K. + if (IsRunningOnXbox()) + { + GAMING_DEVICE_MODEL_INFORMATION gdinfo = {}; + if (SUCCEEDED(GetGamingDeviceModelInformation(&gdinfo)) && gdinfo.vendorId == GAMING_DEVICE_VENDOR_ID_MICROSOFT) + { + if (gdinfo.deviceId != GAMING_DEVICE_DEVICE_ID_XBOX_ONE) + { + Log_InfoPrintf("Overriding core window size %ux%u with HDMI size %ux%u", wi.surface_width, + wi.surface_height, hdmi_width, hdmi_height); + wi.surface_scale *= static_cast(hdmi_width) / static_cast(wi.surface_width); + wi.surface_width = hdmi_width; + wi.surface_height = hdmi_height; + } + } + } + } + catch (const winrt::hresult_error&) + { + } + } + + if (g_settings.gpu_renderer == GPURenderer::HardwareD3D12) + m_display = std::make_unique(); + else + m_display = std::make_unique(); + + if (!m_display->CreateRenderDevice(wi, g_settings.gpu_adapter, g_settings.gpu_use_debug_device, + g_settings.gpu_threaded_presentation) || + !m_display->InitializeRenderDevice(GetShaderCacheBasePath(), g_settings.gpu_use_debug_device, + g_settings.gpu_threaded_presentation) || + !CreateHostDisplayResources()) + { + m_display->DestroyRenderDevice(); + m_display.reset(); + ReportError("Failed to create/initialize display render device"); + return false; + } + + if (!CreateHostDisplayResources()) + Log_WarningPrint("Failed to create host display resources"); + + Log_InfoPrintf("Host display initialized at %ux%u resolution", m_display->GetWindowWidth(), + m_display->GetWindowHeight()); + return true; +} + +void UWPHostInterface::DestroyDisplay() +{ + ReleaseHostDisplayResources(); + + if (m_display) + m_display->DestroyRenderDevice(); + + m_display.reset(); +} + +bool UWPHostInterface::AcquireHostDisplay() +{ + return true; +} + +void UWPHostInterface::ReleaseHostDisplay() +{ + // restore vsync, since we don't want to burn cycles at the menu + m_display->SetVSync(true); +} + +void UWPHostInterface::PollAndUpdate() +{ + CommonHostInterface::PollAndUpdate(); + + ImGuiIO& io = ImGui::GetIO(); + if (m_text_input_requested != io.WantTextInput) + { + const bool activate = io.WantTextInput; + Log_InfoPrintf("%s input pane...", activate ? "showing" : "hiding"); + + m_text_input_requested = activate; + m_dispatcher.RunAsync(winrt::Windows::UI::Core::CoreDispatcherPriority::Normal, [this, activate]() { + const auto input_pane = winrt::Windows::UI::ViewManagement::InputPane::GetForCurrentView(); + if (input_pane) + { + if (activate) + input_pane.TryShow(); + else + input_pane.TryHide(); + } + }); + } +} + +void UWPHostInterface::RequestExit() +{ + m_shutdown_flag.store(true); + m_dispatcher.RunAsync(winrt::Windows::UI::Core::CoreDispatcherPriority::Normal, + [this]() { winrt::Windows::ApplicationModel::Core::CoreApplication::Exit(); }); +} + +void UWPHostInterface::Run() +{ + if (!Initialize()) + { + Shutdown(); + return; + } + + m_emulation_thread = std::thread(&UWPHostInterface::EmulationThreadEntryPoint, this); + + m_dispatcher.ProcessEvents(winrt::Windows::UI::Core::CoreProcessEventsOption::ProcessUntilQuit); + m_shutdown_flag.store(true); + m_emulation_thread.join(); +} + +void UWPHostInterface::EmulationThreadEntryPoint() +{ + if (m_fullscreen_ui_enabled) + { + FullscreenUI::SetDebugMenuAllowed(true); + FullscreenUI::QueueGameListRefresh(); + } + + // process events to pick up controllers before updating input map + PollAndUpdate(); + UpdateInputMap(); + + if (m_was_running_on_suspend && ShouldSaveResumeState()) + ResumeSystemFromMostRecentState(); + + while (!m_shutdown_flag.load()) + { + RunCallbacks(); + PollAndUpdate(); + + ImGui::NewFrame(); + + if (System::IsRunning()) + { + if (m_display_all_frames) + System::RunFrame(); + else + System::RunFrames(); + + UpdateControllerMetaState(); + if (m_frame_step_request) + { + m_frame_step_request = false; + PauseSystem(true); + } + } + + // rendering + { + DrawImGuiWindows(); + ImGui::Render(); + ImGui::EndFrame(); + + m_display->Render(); + + if (System::IsRunning()) + { + System::UpdatePerformanceCounters(); + + if (m_throttler_enabled) + System::Throttle(); + } + } + } + + // Save state on exit so it can be resumed + if (!System::IsShutdown()) + PowerOffSystem(ShouldSaveResumeState()); +} + +void UWPHostInterface::ReportMessage(const char* message) +{ + Log_InfoPrint(message); + AddOSDMessage(message, 10.0f); +} + +void UWPHostInterface::ReportError(const char* message) +{ + Log_ErrorPrint(message); + + if (!m_display) + return; + + const bool was_in_frame = GImGui->FrameCount != GImGui->FrameCountEnded; + if (was_in_frame) + ImGui::EndFrame(); + + bool done = false; + while (!done) + { + RunCallbacks(); + PollAndUpdate(); + if (m_fullscreen_ui_enabled) + FullscreenUI::SetImGuiNavInputs(); + + ImGui::NewFrame(); + done = FullscreenUI::DrawErrorWindow(message); + ImGui::EndFrame(); + m_display->Render(); + } + + if (was_in_frame) + ImGui::NewFrame(); +} + +bool UWPHostInterface::ConfirmMessage(const char* message) +{ + Log_InfoPrintf("Confirm: %s", message); + + if (!m_display) + return true; + + const bool was_in_frame = GImGui->FrameCount != GImGui->FrameCountEnded; + if (was_in_frame) + ImGui::EndFrame(); + + bool done = false; + bool result = true; + while (!done) + { + RunCallbacks(); + PollAndUpdate(); + if (m_fullscreen_ui_enabled) + FullscreenUI::SetImGuiNavInputs(); + + ImGui::NewFrame(); + done = FullscreenUI::DrawConfirmWindow(message, &result); + ImGui::EndFrame(); + m_display->Render(); + } + + if (was_in_frame) + ImGui::NewFrame(); + + return result; +} + +void UWPHostInterface::RunLater(std::function callback) +{ + std::unique_lock lock(m_queued_callbacks_lock); + m_queued_callbacks.push_back(std::move(callback)); +} + +bool UWPHostInterface::IsFullscreen() const +{ + return m_appview.IsFullScreenMode(); +} + +bool UWPHostInterface::SetFullscreen(bool enabled) +{ + m_dispatcher.RunAsync(winrt::Windows::UI::Core::CoreDispatcherPriority::Normal, [this, enabled]() { + if (enabled) + m_appview.TryEnterFullScreenMode(); + else + m_appview.ExitFullScreenMode(); + }); + + return true; +} + +void UWPHostInterface::RunCallbacks() +{ + std::unique_lock lock(m_queued_callbacks_lock); + + while (!m_queued_callbacks.empty()) + { + auto callback = std::move(m_queued_callbacks.front()); + m_queued_callbacks.pop_front(); + lock.unlock(); + callback(); + lock.lock(); + } +} + +void UWPHostInterface::SetWindow(const winrt::Windows::UI::Core::CoreWindow& window) +{ + m_window = window; + m_dispatcher = m_window.Dispatcher(); + + window.Closed({this, &UWPHostInterface::OnClosed}); + window.SizeChanged({this, &UWPHostInterface::OnSizeChanged}); + window.KeyDown({this, &UWPHostInterface::OnKeyDown}); + window.KeyUp({this, &UWPHostInterface::OnKeyUp}); + window.CharacterReceived({this, &UWPHostInterface::OnCharacterReceived}); + window.PointerPressed({this, &UWPHostInterface::OnPointerPressed}); + window.PointerReleased({this, &UWPHostInterface::OnPointerPressed}); + window.PointerMoved({this, &UWPHostInterface::OnPointerMoved}); + window.PointerWheelChanged({this, &UWPHostInterface::OnPointerWheelChanged}); +} + +bool UWPHostInterface::SetDirectories() +{ + const auto install_location = winrt::Windows::ApplicationModel::Package::Current().InstalledLocation(); + m_program_directory = StringUtil::WideStringToUTF8String(install_location.Path()); + if (m_program_directory.empty()) + { + Log_ErrorPrintf("Failed to get install location"); + return false; + } + + Log_InfoPrintf("Program directory: %s", m_program_directory.c_str()); + + const auto local_location = winrt::Windows::Storage::ApplicationData::Current().LocalFolder(); + m_user_directory = StringUtil::WideStringToUTF8String(local_location.Path()); + if (m_user_directory.empty()) + { + Log_ErrorPrintf("Failed to get user directory"); + return false; + } + + Log_InfoPrintf("User directory: %s", m_user_directory.c_str()); + return true; +} + +void UWPHostInterface::OnSuspending(const IInspectable&, + const winrt::Windows::ApplicationModel::SuspendingEventArgs& args) +{ + if (IsEmulationThreadRunning()) + { + RunLater([this]() { + if (ShouldSaveResumeState()) + SaveResumeSaveState(); + + m_was_running_on_suspend.store(System::IsRunning()); + PauseSystem(true); + m_suspend_sync_event.Signal(); + }); + + m_suspend_sync_event.Wait(); + } +} + +void UWPHostInterface::OnResuming(const IInspectable&, const IInspectable&) +{ + if (IsEmulationThreadRunning()) + { + if (m_was_running_on_suspend.load()) + RunLater([this]() { PauseSystem(false); }); + } + else + { + RunLater([this]() { + if (ShouldSaveResumeState()) + ResumeSystemFromMostRecentState(); + }); + } +} + +void UWPHostInterface::OnClosed(const IInspectable&, const winrt::Windows::UI::Core::CoreWindowEventArgs& args) +{ + if (IsEmulationThreadRunning()) + { + m_shutdown_flag.store(true); + m_emulation_thread.join(); + } + args.Handled(true); +} + +void UWPHostInterface::OnSizeChanged(const IInspectable&, + const winrt::Windows::UI::Core::WindowSizeChangedEventArgs& args) +{ + const auto size = args.Size(); + const s32 width = static_cast(size.Width * m_display->GetWindowScale()); + const s32 height = static_cast(size.Height * m_display->GetWindowScale()); + if (IsEmulationThreadRunning()) + { + RunLater([this, width, height]() { + m_display->ResizeRenderWindow(width, height); + OnHostDisplayResized(); + }); + } + + args.Handled(true); +} + +void UWPHostInterface::OnKeyDown(const IInspectable&, const winrt::Windows::UI::Core::KeyEventArgs& args) +{ + const auto status = args.KeyStatus(); + if (!status.WasKeyDown && !status.IsKeyReleased && IsEmulationThreadRunning()) + { + const HostKeyCode code = static_cast(args.VirtualKey()); + RunLater([this, code]() { + ImGuiIO& io = ImGui::GetIO(); + if (code < countof(io.KeysDown)) + io.KeysDown[code] = true; + + if (!io.WantCaptureKeyboard) + HandleHostKeyEvent(code, 0, true); + }); + } + + args.Handled(true); +} + +void UWPHostInterface::OnKeyUp(const IInspectable&, const winrt::Windows::UI::Core::KeyEventArgs& args) +{ + const auto status = args.KeyStatus(); + if (status.WasKeyDown && status.IsKeyReleased && IsEmulationThreadRunning()) + { + const HostKeyCode code = static_cast(args.VirtualKey()); + RunLater([this, code]() { + ImGuiIO& io = ImGui::GetIO(); + if (code < countof(io.KeysDown)) + io.KeysDown[code] = false; + + if (!io.WantCaptureKeyboard) + HandleHostKeyEvent(code, 0, false); + }); + } + + args.Handled(true); +} + +void UWPHostInterface::OnCharacterReceived(const IInspectable&, + const winrt::Windows::UI::Core::CharacterReceivedEventArgs& args) +{ + if (IsEmulationThreadRunning()) + { + const u32 code = args.KeyCode(); + RunLater([this, code]() { ImGui::GetIO().AddInputCharacter(code); }); + } + + args.Handled(true); +} + +void UWPHostInterface::OnPointerPressed(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args) +{ + const auto pointer = args.CurrentPoint(); + if (pointer.PointerDevice().PointerDeviceType() == winrt::Windows::Devices::Input::PointerDeviceType::Mouse) + UpdateMouseButtonState(pointer); + + args.Handled(true); +} + +void UWPHostInterface::OnPointerReleased(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args) +{ + const auto pointer = args.CurrentPoint(); + if (pointer.PointerDevice().PointerDeviceType() == winrt::Windows::Devices::Input::PointerDeviceType::Mouse) + UpdateMouseButtonState(pointer); + + args.Handled(true); +} + +void UWPHostInterface::OnPointerMoved(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args) +{ + const auto pointer = args.CurrentPoint(); + if (pointer.PointerDevice().PointerDeviceType() == winrt::Windows::Devices::Input::PointerDeviceType::Mouse) + { + const auto pos = pointer.Position(); + const float x = pos.X * m_display->GetWindowScale(); + const float y = pos.Y * m_display->GetWindowScale(); + + if (IsEmulationThreadRunning()) + { + RunLater([this, x, y]() { + m_display->SetMousePosition(static_cast(x), static_cast(y)); + + if (ImGui::GetCurrentContext()) + { + ImGuiIO& io = ImGui::GetIO(); + io.MousePos.x = x; + io.MousePos.y = y; + } + }); + } + + UpdateMouseButtonState(pointer); + } + + args.Handled(true); +} + +void UWPHostInterface::OnPointerWheelChanged(const IInspectable&, + const winrt::Windows::UI::Core::PointerEventArgs& args) +{ + const auto pointer = args.CurrentPoint(); + const auto properties = pointer.Properties(); + const s32 delta = properties.MouseWheelDelta(); + const bool horizontal = properties.IsHorizontalMouseWheel(); + + if (IsEmulationThreadRunning()) + { + RunLater([this, delta, horizontal]() { + if (ImGui::GetCurrentContext()) + { + ImGuiIO& io = ImGui::GetIO(); + const float dw = static_cast(std::clamp(delta, -1, 1)); + if (horizontal) + io.MouseWheelH = dw; + else + io.MouseWheel = dw; + } + }); + } + + args.Handled(true); +} + +void UWPHostInterface::UpdateMouseButtonState(const winrt::Windows::UI::Input::PointerPoint& point) +{ + const auto properties = point.Properties(); + const bool states[3] = {properties.IsLeftButtonPressed(), properties.IsRightButtonPressed(), + properties.IsMiddleButtonPressed()}; + + if (IsEmulationThreadRunning()) + { + RunLater([this, states]() { + if (!ImGui::GetCurrentContext()) + return; + + ImGuiIO& io = ImGui::GetIO(); + for (u32 i = 0; i < countof(states); i++) + { + if (io.MouseDown[i] == states[i]) + continue; + + io.MouseDown[i] = states[i]; + HandleHostMouseEvent(static_cast(i), states[i]); + } + }); + } +} + +std::optional UWPHostInterface::GetHostKeyCode(const std::string_view key_code) const +{ + for (const auto& it : s_key_map) + { + if (key_code.compare(it.second) == 0) + return static_cast(it.first); + } + + return std::nullopt; +} + +const char* UWPHostInterface::GetKeyCodeName(int key_code) +{ + const auto it = s_key_map.find(key_code); + return (it != s_key_map.end()) ? it->second : nullptr; +} + +void UWPHostInterface::SetImGuiKeyMap() +{ + using namespace winrt::Windows::System; + + ImGuiIO& io = ImGui::GetIO(); + io.KeyMap[ImGuiKey_Tab] = static_cast(VirtualKey::Tab); + io.KeyMap[ImGuiKey_LeftArrow] = static_cast(VirtualKey::Left); + io.KeyMap[ImGuiKey_RightArrow] = static_cast(VirtualKey::Right); + io.KeyMap[ImGuiKey_UpArrow] = static_cast(VirtualKey::Up); + io.KeyMap[ImGuiKey_DownArrow] = static_cast(VirtualKey::Down); + io.KeyMap[ImGuiKey_PageUp] = static_cast(VirtualKey::PageUp); + io.KeyMap[ImGuiKey_PageDown] = static_cast(VirtualKey::PageDown); + io.KeyMap[ImGuiKey_Home] = static_cast(VirtualKey::Home); + io.KeyMap[ImGuiKey_End] = static_cast(VirtualKey::End); + io.KeyMap[ImGuiKey_Insert] = static_cast(VirtualKey::Insert); + io.KeyMap[ImGuiKey_Delete] = static_cast(VirtualKey::Delete); + io.KeyMap[ImGuiKey_Backspace] = static_cast(VirtualKey::Back); + io.KeyMap[ImGuiKey_Space] = static_cast(VirtualKey::Space); + io.KeyMap[ImGuiKey_Enter] = static_cast(VirtualKey::Enter); + io.KeyMap[ImGuiKey_Escape] = static_cast(VirtualKey::Escape); + io.KeyMap[ImGuiKey_A] = static_cast(VirtualKey::A); + io.KeyMap[ImGuiKey_C] = static_cast(VirtualKey::C); + io.KeyMap[ImGuiKey_V] = static_cast(VirtualKey::V); + io.KeyMap[ImGuiKey_X] = static_cast(VirtualKey::X); + io.KeyMap[ImGuiKey_Y] = static_cast(VirtualKey::Y); + io.KeyMap[ImGuiKey_Z] = static_cast(VirtualKey::Z); +} + +void UWPHostInterface::SetDefaultSettingsForXbox(SettingsInterface& si) +{ + si.SetStringValue("GPU", "Renderer", "D3D12"); + + si.SetBoolValue("Main", "SyncToHostRefreshRate", true); + si.SetBoolValue("Display", "VSync", true); + si.SetBoolValue("Display", "DisplayAllFrames", true); + si.SetFloatValue("Display", "MaxFPS", 60.0f); + + // Set up an analog controller in port 1. + si.SetStringValue("Controller1", "Type", "AnalogController"); + si.SetStringValue("Controller1", "ButtonUp", "Controller0/Button11"); + si.SetStringValue("Controller1", "ButtonDown", "Controller0/Button12"); + si.SetStringValue("Controller1", "ButtonLeft", "Controller0/Button13"); + si.SetStringValue("Controller1", "ButtonRight", "Controller0/Button14"); + si.SetStringValue("Controller1", "ButtonStart", "Controller0/Button6"); + si.SetStringValue("Controller1", "ButtonTriangle", "Controller0/Button3"); + si.SetStringValue("Controller1", "ButtonCross", "Controller0/Button0"); + si.SetStringValue("Controller1", "ButtonCircle", "Controller0/Button1"); + si.SetStringValue("Controller1", "ButtonSquare", "Controller0/Button2"); + si.SetStringValue("Controller1", "ButtonL1", "Controller0/Button9"); + si.SetStringValue("Controller1", "ButtonL2", "Controller0/+Axis4"); + si.SetStringValue("Controller1", "ButtonR1", "Controller0/Button10"); + si.SetStringValue("Controller1", "ButtonR2", "Controller0/+Axis5"); + si.SetStringValue("Controller1", "ButtonL3", "Controller0/Button7"); + si.SetStringValue("Controller1", "ButtonR3", "Controller0/Button8"); + si.SetStringValue("Controller1", "AxisLeftX", "Controller0/Axis0"); + si.SetStringValue("Controller1", "AxisLeftY", "Controller0/Axis1"); + si.SetStringValue("Controller1", "AxisRightX", "Controller0/Axis2"); + si.SetStringValue("Controller1", "AxisRightY", "Controller0/Axis3"); + si.SetStringValue("Controller1", "Rumble", "Controller0"); + si.SetStringValue("Controller1", "ForceAnalogOnReset", "true"); + si.SetStringValue("Controller1", "AnalogDPadInDigitalMode", "true"); + + // Repurpose the select button to open the menu. + // Not ideal, but all we can do until we have chords. + si.SetStringValue("Hotkeys", "OpenQuickMenu", "Controller0/Button4"); +} + +int __stdcall wWinMain(HINSTANCE, HINSTANCE, PWSTR, int) +{ + winrt::Windows::ApplicationModel::Core::CoreApplication::Run(winrt::make()); +} diff --git a/src/duckstation-uwp/uwp_host_interface.h b/src/duckstation-uwp/uwp_host_interface.h new file mode 100644 index 000000000..a0c2fc04b --- /dev/null +++ b/src/duckstation-uwp/uwp_host_interface.h @@ -0,0 +1,117 @@ +#pragma once +#include "common/event.h" +#include "common/window_info.h" +#include "common/windows_headers.h" +#include "core/host_display.h" +#include "core/host_interface.h" +#include "frontend-common/common_host_interface.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class INISettingsInterface; + +class UWPHostInterface + : public CommonHostInterface, + public winrt::implements +{ +public: + UWPHostInterface(); + ~UWPHostInterface(); + + const char* GetFrontendName() const override; + bool Initialize() override; + void Shutdown() override; + + void ReportMessage(const char* message) override; + void ReportError(const char* message) override; + bool ConfirmMessage(const char* message) override; + + void RunLater(std::function callback) override; + + bool IsFullscreen() const override; + bool SetFullscreen(bool enabled) override; + + winrt::Windows::ApplicationModel::Core::IFrameworkView CreateView(); + void Initialize(const winrt::Windows::ApplicationModel::Core::CoreApplicationView&); + void Load(const winrt::hstring&); + void Uninitialize(); + void Run(); + void SetWindow(const winrt::Windows::UI::Core::CoreWindow& window); + +protected: + enum : u32 + { + DEFAULT_WINDOW_WIDTH = 1280, + DEFAULT_WINDOW_HEIGHT = 720 + }; + + ALWAYS_INLINE bool IsEmulationThreadRunning() const { return m_emulation_thread.joinable(); } + + void SetDefaultSettings(SettingsInterface& si) override; + + bool AcquireHostDisplay() override; + void ReleaseHostDisplay() override; + + void PollAndUpdate() override; + void RequestExit() override; + + bool CreateDisplay(bool fullscreen); + void DestroyDisplay(); + void RunCallbacks(); + void EmulationThreadEntryPoint(); + + bool SetDirectories(); + void OnSuspending(const IInspectable&, const winrt::Windows::ApplicationModel::SuspendingEventArgs& args); + void OnResuming(const IInspectable&, const IInspectable&); + void OnClosed(const IInspectable&, const winrt::Windows::UI::Core::CoreWindowEventArgs& args); + void OnSizeChanged(const IInspectable&, const winrt::Windows::UI::Core::WindowSizeChangedEventArgs& args); + void OnKeyDown(const IInspectable&, const winrt::Windows::UI::Core::KeyEventArgs& args); + void OnKeyUp(const IInspectable&, const winrt::Windows::UI::Core::KeyEventArgs& args); + void OnCharacterReceived(const IInspectable&, const winrt::Windows::UI::Core::CharacterReceivedEventArgs& args); + void OnPointerPressed(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args); + void OnPointerReleased(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args); + void OnPointerMoved(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args); + void OnPointerWheelChanged(const IInspectable&, const winrt::Windows::UI::Core::PointerEventArgs& args); + void UpdateMouseButtonState(const winrt::Windows::UI::Input::PointerPoint& point); + + std::optional GetHostKeyCode(const std::string_view key_code) const override; + const char* GetKeyCodeName(int key_code); + void SetImGuiKeyMap(); + + void SetDefaultSettingsForXbox(SettingsInterface& si); + + std::deque> m_queued_callbacks; + std::mutex m_queued_callbacks_lock; + + winrt::Windows::UI::Core::CoreWindow m_window{nullptr}; + winrt::Windows::UI::Core::CoreDispatcher m_dispatcher{nullptr}; + winrt::Windows::UI::ViewManagement::ApplicationView m_appview{nullptr}; + + std::thread m_emulation_thread; + std::atomic_bool m_shutdown_flag{false}; + + bool m_text_input_requested = false; + + Common::Event m_suspend_sync_event; + std::atomic_bool m_was_running_on_suspend{false}; + std::atomic_bool m_was_running_on_background{false}; +}; diff --git a/src/duckstation-uwp/uwp_key_map.h b/src/duckstation-uwp/uwp_key_map.h new file mode 100644 index 000000000..8c5379455 --- /dev/null +++ b/src/duckstation-uwp/uwp_key_map.h @@ -0,0 +1,149 @@ +#include +#include + +static const std::map s_key_map = { + {static_cast(winrt::Windows::System::VirtualKey::LeftButton), "LeftButton"}, + {static_cast(winrt::Windows::System::VirtualKey::RightButton), "RightButton"}, + {static_cast(winrt::Windows::System::VirtualKey::Cancel), "Cancel"}, + {static_cast(winrt::Windows::System::VirtualKey::MiddleButton), "MiddleButton"}, + {static_cast(winrt::Windows::System::VirtualKey::XButton1), "XButton1"}, + {static_cast(winrt::Windows::System::VirtualKey::XButton2), "XButton2"}, + {static_cast(winrt::Windows::System::VirtualKey::Back), "Back"}, + {static_cast(winrt::Windows::System::VirtualKey::Tab), "Tab"}, + {static_cast(winrt::Windows::System::VirtualKey::Clear), "Clear"}, + {static_cast(winrt::Windows::System::VirtualKey::Enter), "Return"}, + {static_cast(winrt::Windows::System::VirtualKey::Shift), "Shift"}, + {static_cast(winrt::Windows::System::VirtualKey::Control), "Control"}, + {static_cast(winrt::Windows::System::VirtualKey::Menu), "Menu"}, + {static_cast(winrt::Windows::System::VirtualKey::Pause), "Pause"}, + {static_cast(winrt::Windows::System::VirtualKey::CapitalLock), "CapitalLock"}, + {static_cast(winrt::Windows::System::VirtualKey::Kana), "Kana"}, + {static_cast(winrt::Windows::System::VirtualKey::Hangul), "Hangul"}, + {static_cast(winrt::Windows::System::VirtualKey::Junja), "Junja"}, + {static_cast(winrt::Windows::System::VirtualKey::Final), "Final"}, + {static_cast(winrt::Windows::System::VirtualKey::Hanja), "Hanja"}, + {static_cast(winrt::Windows::System::VirtualKey::Kanji), "Kanji"}, + {static_cast(winrt::Windows::System::VirtualKey::Escape), "Escape"}, + {static_cast(winrt::Windows::System::VirtualKey::Convert), "Convert"}, + {static_cast(winrt::Windows::System::VirtualKey::NonConvert), "NonConvert"}, + {static_cast(winrt::Windows::System::VirtualKey::Accept), "Accept"}, + {static_cast(winrt::Windows::System::VirtualKey::ModeChange), "ModeChange"}, + {static_cast(winrt::Windows::System::VirtualKey::Space), "Space"}, + {static_cast(winrt::Windows::System::VirtualKey::PageUp), "PageUp"}, + {static_cast(winrt::Windows::System::VirtualKey::PageDown), "PageDown"}, + {static_cast(winrt::Windows::System::VirtualKey::End), "End"}, + {static_cast(winrt::Windows::System::VirtualKey::Home), "Home"}, + {static_cast(winrt::Windows::System::VirtualKey::Left), "Left"}, + {static_cast(winrt::Windows::System::VirtualKey::Up), "Up"}, + {static_cast(winrt::Windows::System::VirtualKey::Right), "Right"}, + {static_cast(winrt::Windows::System::VirtualKey::Down), "Down"}, + {static_cast(winrt::Windows::System::VirtualKey::Select), "Select"}, + {static_cast(winrt::Windows::System::VirtualKey::Print), "Print"}, + {static_cast(winrt::Windows::System::VirtualKey::Execute), "Execute"}, + {static_cast(winrt::Windows::System::VirtualKey::Snapshot), "Snapshot"}, + {static_cast(winrt::Windows::System::VirtualKey::Insert), "Insert"}, + {static_cast(winrt::Windows::System::VirtualKey::Delete), "Delete"}, + {static_cast(winrt::Windows::System::VirtualKey::Help), "Help"}, + {static_cast(winrt::Windows::System::VirtualKey::Number0), "Number0"}, + {static_cast(winrt::Windows::System::VirtualKey::Number1), "Number1"}, + {static_cast(winrt::Windows::System::VirtualKey::Number2), "Number2"}, + {static_cast(winrt::Windows::System::VirtualKey::Number3), "Number3"}, + {static_cast(winrt::Windows::System::VirtualKey::Number4), "Number4"}, + {static_cast(winrt::Windows::System::VirtualKey::Number5), "Number5"}, + {static_cast(winrt::Windows::System::VirtualKey::Number6), "Number6"}, + {static_cast(winrt::Windows::System::VirtualKey::Number7), "Number7"}, + {static_cast(winrt::Windows::System::VirtualKey::Number8), "Number8"}, + {static_cast(winrt::Windows::System::VirtualKey::Number9), "Number9"}, + {static_cast(winrt::Windows::System::VirtualKey::A), "A"}, + {static_cast(winrt::Windows::System::VirtualKey::B), "B"}, + {static_cast(winrt::Windows::System::VirtualKey::C), "C"}, + {static_cast(winrt::Windows::System::VirtualKey::D), "D"}, + {static_cast(winrt::Windows::System::VirtualKey::E), "E"}, + {static_cast(winrt::Windows::System::VirtualKey::F), "F"}, + {static_cast(winrt::Windows::System::VirtualKey::G), "G"}, + {static_cast(winrt::Windows::System::VirtualKey::H), "H"}, + {static_cast(winrt::Windows::System::VirtualKey::I), "I"}, + {static_cast(winrt::Windows::System::VirtualKey::J), "J"}, + {static_cast(winrt::Windows::System::VirtualKey::K), "K"}, + {static_cast(winrt::Windows::System::VirtualKey::L), "L"}, + {static_cast(winrt::Windows::System::VirtualKey::M), "M"}, + {static_cast(winrt::Windows::System::VirtualKey::N), "N"}, + {static_cast(winrt::Windows::System::VirtualKey::O), "O"}, + {static_cast(winrt::Windows::System::VirtualKey::P), "P"}, + {static_cast(winrt::Windows::System::VirtualKey::Q), "Q"}, + {static_cast(winrt::Windows::System::VirtualKey::R), "R"}, + {static_cast(winrt::Windows::System::VirtualKey::S), "S"}, + {static_cast(winrt::Windows::System::VirtualKey::T), "T"}, + {static_cast(winrt::Windows::System::VirtualKey::U), "U"}, + {static_cast(winrt::Windows::System::VirtualKey::V), "V"}, + {static_cast(winrt::Windows::System::VirtualKey::W), "W"}, + {static_cast(winrt::Windows::System::VirtualKey::X), "X"}, + {static_cast(winrt::Windows::System::VirtualKey::Y), "Y"}, + {static_cast(winrt::Windows::System::VirtualKey::Z), "Z"}, + {static_cast(winrt::Windows::System::VirtualKey::LeftWindows), "LeftWindows"}, + {static_cast(winrt::Windows::System::VirtualKey::RightWindows), "RightWindows"}, + {static_cast(winrt::Windows::System::VirtualKey::Application), "Application"}, + {static_cast(winrt::Windows::System::VirtualKey::Sleep), "Sleep"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad0), "Keypad+0"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad1), "Keypad+1"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad2), "Keypad+2"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad3), "Keypad+3"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad4), "Keypad+4"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad5), "Keypad+5"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad6), "Keypad+6"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad7), "Keypad+7"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad8), "Keypad+8"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberPad9), "Keypad+9"}, + {static_cast(winrt::Windows::System::VirtualKey::Multiply), "Multiply"}, + {static_cast(winrt::Windows::System::VirtualKey::Add), "Add"}, + {static_cast(winrt::Windows::System::VirtualKey::Separator), "Separator"}, + {static_cast(winrt::Windows::System::VirtualKey::Subtract), "Subtract"}, + {static_cast(winrt::Windows::System::VirtualKey::Decimal), "Decimal"}, + {static_cast(winrt::Windows::System::VirtualKey::Divide), "Divide"}, + {static_cast(winrt::Windows::System::VirtualKey::F1), "F1"}, + {static_cast(winrt::Windows::System::VirtualKey::F2), "F2"}, + {static_cast(winrt::Windows::System::VirtualKey::F3), "F3"}, + {static_cast(winrt::Windows::System::VirtualKey::F4), "F4"}, + {static_cast(winrt::Windows::System::VirtualKey::F5), "F5"}, + {static_cast(winrt::Windows::System::VirtualKey::F6), "F6"}, + {static_cast(winrt::Windows::System::VirtualKey::F7), "F7"}, + {static_cast(winrt::Windows::System::VirtualKey::F8), "F8"}, + {static_cast(winrt::Windows::System::VirtualKey::F9), "F9"}, + {static_cast(winrt::Windows::System::VirtualKey::F10), "F10"}, + {static_cast(winrt::Windows::System::VirtualKey::F11), "F11"}, + {static_cast(winrt::Windows::System::VirtualKey::F12), "F12"}, + {static_cast(winrt::Windows::System::VirtualKey::F13), "F13"}, + {static_cast(winrt::Windows::System::VirtualKey::F14), "F14"}, + {static_cast(winrt::Windows::System::VirtualKey::F15), "F15"}, + {static_cast(winrt::Windows::System::VirtualKey::F16), "F16"}, + {static_cast(winrt::Windows::System::VirtualKey::F17), "F17"}, + {static_cast(winrt::Windows::System::VirtualKey::F18), "F18"}, + {static_cast(winrt::Windows::System::VirtualKey::F19), "F19"}, + {static_cast(winrt::Windows::System::VirtualKey::F20), "F20"}, + {static_cast(winrt::Windows::System::VirtualKey::F21), "F21"}, + {static_cast(winrt::Windows::System::VirtualKey::F22), "F22"}, + {static_cast(winrt::Windows::System::VirtualKey::F23), "F23"}, + {static_cast(winrt::Windows::System::VirtualKey::F24), "F24"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationView), "NavigationView"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationMenu), "NavigationMenu"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationUp), "NavigationUp"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationDown), "NavigationDown"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationLeft), "NavigationLeft"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationRight), "NavigationRight"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationAccept), "NavigationAccept"}, + {static_cast(winrt::Windows::System::VirtualKey::NavigationCancel), "NavigationCancel"}, + {static_cast(winrt::Windows::System::VirtualKey::NumberKeyLock), "NumberKeyLock"}, + {static_cast(winrt::Windows::System::VirtualKey::Scroll), "Scroll"}, + {static_cast(winrt::Windows::System::VirtualKey::LeftShift), "LeftShift"}, + {static_cast(winrt::Windows::System::VirtualKey::RightShift), "RightShift"}, + {static_cast(winrt::Windows::System::VirtualKey::LeftControl), "LeftControl"}, + {static_cast(winrt::Windows::System::VirtualKey::RightControl), "RightControl"}, + {static_cast(winrt::Windows::System::VirtualKey::LeftMenu), "LeftMenu"}, + {static_cast(winrt::Windows::System::VirtualKey::RightMenu), "RightMenu"}, + {static_cast(winrt::Windows::System::VirtualKey::GoBack), "GoBack"}, + {static_cast(winrt::Windows::System::VirtualKey::GoForward), "GoForward"}, + {static_cast(winrt::Windows::System::VirtualKey::Refresh), "Refresh"}, + {static_cast(winrt::Windows::System::VirtualKey::Stop), "Stop"}, + {static_cast(winrt::Windows::System::VirtualKey::Search), "Search"}, + {static_cast(winrt::Windows::System::VirtualKey::Favorites), "Favorites"}, + {static_cast(winrt::Windows::System::VirtualKey::GoHome), "GoHome"}};