From 04bcfde38b1a45537967776d60b20bb62d36efe7 Mon Sep 17 00:00:00 2001 From: Helloyunho Date: Sun, 6 Jul 2025 23:28:00 +0900 Subject: [PATCH] Add Xbox One/Series X|S port (#526) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update README.md * ✨ feat: got the audio working * 🔧 feat: add appxmanifest * 🩹 fix: remove opengl stuff * ⚗️ feat: add button support * ⚗️ chore: try to make less modification from upstream * 🩹 fix: doesnt compile * ✨ feat: forcibly draw cursor and map right joystick to cursor * 🩹 fix: remap joystick * 🎨 fix: formatting * 🎨 fix: cmakelists formatting * 🩹 fix: 3ds build * 👷 feat: add xbox one ci build * 💚 fix: github hates xbox series naming * 💚 fix: dont run cpack for xbox one, vs does that for you * 💚 fix: xbox one need to use vs as generator * 💚 fix: please * 💚 fix: it could be msix not bundle * 💚 fix: try recursive directory search when upload release * 🔨 feat: support cpack * 👷 feat: better packaging * 💚 fix: ignore if mv fails * 🔧 feat: add mouse sensitivity config * 🔥 chore: dont need you * ⚗️ chore: use d3d11 * ✨ feat: hardware acceleration!! * 🚸 chore: change default cd path so user can easily copy the assets to xbox * 🧑‍💻 chore: improve reusability * 🚨 fix: formatting error * 🚸 chore: draw cursor by default * 🎨 chore: cmakelists formatting * chore: match with upstream * chore: more matching with upstream * chore: don't need you * 🩹 fix: apply changes * 🔥 fix: we don't need controller map anymore * 🩹 fix: use isle style include guard * 🩹 fix: last newline fix * 👷 chore: use cpack * 💚 fix: try to fix ci * 💚 fix: i tried my best... --- .github/workflows/ci.yml | 23 +- CMakeLists.txt | 137 +++++++----- ISLE/isleapp.cpp | 9 +- ISLE/xbox_one_series/config.cpp | 18 ++ ISLE/xbox_one_series/config.h | 8 + LEGO1/lego/legoomni/src/race/carrace.cpp | 2 +- LEGO1/lego/legoomni/src/race/jetskirace.cpp | 2 +- LEGO1/omni/src/stream/mxramstreamprovider.cpp | 2 +- miniwin/CMakeLists.txt | 10 +- .../src/d3drm/backends/sdl3gpu/renderer.cpp | 2 +- .../shaders/generated/PositionColor.vert.h | 102 ++++++++- .../sdl3gpu/shaders/generated/ShaderIndex.cpp | 36 ++++ .../shaders/generated/SolidColor.frag.h | 204 +++++++++++++++++- .../backends/sdl3gpu/shaders/src/Common.hlsl | 6 + .../shaders/src/PositionColor.vert.hlsl | 2 +- .../sdl3gpu/shaders/src/SolidColor.frag.hlsl | 6 +- miniwin/src/d3drm/d3drm.cpp | 2 +- miniwin/src/ddraw/ddraw.cpp | 6 +- packaging/CMakeLists.txt | 4 + packaging/UWP/CMakeLists.txt | 15 ++ packaging/UWP/Package.appxmanifest | 47 ++++ packaging/UWP/assets/LargeTile.scale-100.png | Bin 0 -> 2046 bytes packaging/UWP/assets/LargeTile.scale-125.png | Bin 0 -> 2648 bytes packaging/UWP/assets/LargeTile.scale-150.png | Bin 0 -> 3354 bytes packaging/UWP/assets/LargeTile.scale-200.png | Bin 0 -> 5425 bytes packaging/UWP/assets/LargeTile.scale-400.png | Bin 0 -> 14676 bytes .../UWP/assets/SplashScreen.scale-100.png | Bin 0 -> 2498 bytes .../UWP/assets/SplashScreen.scale-125.png | Bin 0 -> 3167 bytes .../UWP/assets/SplashScreen.scale-150.png | Bin 0 -> 4174 bytes .../UWP/assets/SplashScreen.scale-200.png | Bin 0 -> 6410 bytes .../UWP/assets/SplashScreen.scale-400.png | Bin 0 -> 19945 bytes .../assets/Square150x150Logo.scale-100.png | Bin 0 -> 944 bytes .../assets/Square150x150Logo.scale-125.png | Bin 0 -> 1172 bytes .../assets/Square150x150Logo.scale-150.png | Bin 0 -> 1363 bytes .../assets/Square150x150Logo.scale-200.png | Bin 0 -> 2079 bytes .../assets/Square150x150Logo.scale-400.png | Bin 0 -> 4825 bytes ...go.altform-lightunplated_targetsize-16.png | Bin 0 -> 229 bytes ...go.altform-lightunplated_targetsize-24.png | Bin 0 -> 305 bytes ...o.altform-lightunplated_targetsize-256.png | Bin 0 -> 3676 bytes ...go.altform-lightunplated_targetsize-32.png | Bin 0 -> 371 bytes ...go.altform-lightunplated_targetsize-48.png | Bin 0 -> 585 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 0 -> 229 bytes ...x44Logo.altform-unplated_targetsize-24.png | Bin 0 -> 305 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 0 -> 3676 bytes ...x44Logo.altform-unplated_targetsize-32.png | Bin 0 -> 371 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 0 -> 585 bytes .../UWP/assets/Square44x44Logo.scale-100.png | Bin 0 -> 407 bytes .../UWP/assets/Square44x44Logo.scale-125.png | Bin 0 -> 514 bytes .../UWP/assets/Square44x44Logo.scale-150.png | Bin 0 -> 627 bytes .../UWP/assets/Square44x44Logo.scale-200.png | Bin 0 -> 842 bytes .../UWP/assets/Square44x44Logo.scale-400.png | Bin 0 -> 1805 bytes .../assets/Square44x44Logo.targetsize-16.png | Bin 0 -> 203 bytes .../assets/Square44x44Logo.targetsize-24.png | Bin 0 -> 279 bytes .../assets/Square44x44Logo.targetsize-256.png | Bin 0 -> 2884 bytes .../assets/Square44x44Logo.targetsize-32.png | Bin 0 -> 309 bytes .../assets/Square44x44Logo.targetsize-48.png | Bin 0 -> 436 bytes .../UWP/assets/Square71x71Logo.scale-100.png | Bin 0 -> 578 bytes .../UWP/assets/Square71x71Logo.scale-125.png | Bin 0 -> 683 bytes .../UWP/assets/Square71x71Logo.scale-150.png | Bin 0 -> 808 bytes .../UWP/assets/Square71x71Logo.scale-200.png | Bin 0 -> 1057 bytes .../UWP/assets/Square71x71Logo.scale-400.png | Bin 0 -> 2488 bytes packaging/UWP/assets/StoreLogo.scale-100.png | Bin 0 -> 541 bytes packaging/UWP/assets/StoreLogo.scale-125.png | Bin 0 -> 710 bytes packaging/UWP/assets/StoreLogo.scale-150.png | Bin 0 -> 809 bytes packaging/UWP/assets/StoreLogo.scale-200.png | Bin 0 -> 1190 bytes packaging/UWP/assets/StoreLogo.scale-400.png | Bin 0 -> 2823 bytes .../UWP/assets/Wide310x150Logo.scale-100.png | Bin 0 -> 1043 bytes .../UWP/assets/Wide310x150Logo.scale-125.png | Bin 0 -> 1320 bytes .../UWP/assets/Wide310x150Logo.scale-150.png | Bin 0 -> 1595 bytes .../UWP/assets/Wide310x150Logo.scale-200.png | Bin 0 -> 2498 bytes .../UWP/assets/Wide310x150Logo.scale-400.png | Bin 0 -> 6410 bytes 71 files changed, 563 insertions(+), 80 deletions(-) create mode 100644 ISLE/xbox_one_series/config.cpp create mode 100644 ISLE/xbox_one_series/config.h create mode 100644 packaging/UWP/CMakeLists.txt create mode 100644 packaging/UWP/Package.appxmanifest create mode 100644 packaging/UWP/assets/LargeTile.scale-100.png create mode 100644 packaging/UWP/assets/LargeTile.scale-125.png create mode 100644 packaging/UWP/assets/LargeTile.scale-150.png create mode 100644 packaging/UWP/assets/LargeTile.scale-200.png create mode 100644 packaging/UWP/assets/LargeTile.scale-400.png create mode 100644 packaging/UWP/assets/SplashScreen.scale-100.png create mode 100644 packaging/UWP/assets/SplashScreen.scale-125.png create mode 100644 packaging/UWP/assets/SplashScreen.scale-150.png create mode 100644 packaging/UWP/assets/SplashScreen.scale-200.png create mode 100644 packaging/UWP/assets/SplashScreen.scale-400.png create mode 100644 packaging/UWP/assets/Square150x150Logo.scale-100.png create mode 100644 packaging/UWP/assets/Square150x150Logo.scale-125.png create mode 100644 packaging/UWP/assets/Square150x150Logo.scale-150.png create mode 100644 packaging/UWP/assets/Square150x150Logo.scale-200.png create mode 100644 packaging/UWP/assets/Square150x150Logo.scale-400.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-16.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-24.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-256.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-32.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-48.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-16.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-24.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-256.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-32.png create mode 100644 packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-48.png create mode 100644 packaging/UWP/assets/Square44x44Logo.scale-100.png create mode 100644 packaging/UWP/assets/Square44x44Logo.scale-125.png create mode 100644 packaging/UWP/assets/Square44x44Logo.scale-150.png create mode 100644 packaging/UWP/assets/Square44x44Logo.scale-200.png create mode 100644 packaging/UWP/assets/Square44x44Logo.scale-400.png create mode 100644 packaging/UWP/assets/Square44x44Logo.targetsize-16.png create mode 100644 packaging/UWP/assets/Square44x44Logo.targetsize-24.png create mode 100644 packaging/UWP/assets/Square44x44Logo.targetsize-256.png create mode 100644 packaging/UWP/assets/Square44x44Logo.targetsize-32.png create mode 100644 packaging/UWP/assets/Square44x44Logo.targetsize-48.png create mode 100644 packaging/UWP/assets/Square71x71Logo.scale-100.png create mode 100644 packaging/UWP/assets/Square71x71Logo.scale-125.png create mode 100644 packaging/UWP/assets/Square71x71Logo.scale-150.png create mode 100644 packaging/UWP/assets/Square71x71Logo.scale-200.png create mode 100644 packaging/UWP/assets/Square71x71Logo.scale-400.png create mode 100644 packaging/UWP/assets/StoreLogo.scale-100.png create mode 100644 packaging/UWP/assets/StoreLogo.scale-125.png create mode 100644 packaging/UWP/assets/StoreLogo.scale-150.png create mode 100644 packaging/UWP/assets/StoreLogo.scale-200.png create mode 100644 packaging/UWP/assets/StoreLogo.scale-400.png create mode 100644 packaging/UWP/assets/Wide310x150Logo.scale-100.png create mode 100644 packaging/UWP/assets/Wide310x150Logo.scale-125.png create mode 100644 packaging/UWP/assets/Wide310x150Logo.scale-150.png create mode 100644 packaging/UWP/assets/Wide310x150Logo.scale-200.png create mode 100644 packaging/UWP/assets/Wide310x150Logo.scale-400.png diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 97b338c8..26d7fe64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,15 +34,16 @@ jobs: fail-fast: false matrix: include: - - { name: 'Linux', os: 'ubuntu-latest', dx5: false, config: true, linux: true, werror: true, clang-tidy: true } - - { name: 'MSVC (x86)', os: 'windows-latest', dx5: true, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_x86' } - - { name: 'MSVC (x64)', os: 'windows-latest', dx5: false, config: true, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64' } - - { name: 'MSVC (arm64)', os: 'windows-latest', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_arm64' } - - { name: 'msys2 mingw32', os: 'windows-latest', dx5: false, config: false, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw32', msys-env: 'mingw-w64-i686', shell: 'msys2 {0}' } - - { name: 'msys2 mingw64', os: 'windows-latest', dx5: false, config: true, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw64', msys-env: 'mingw-w64-x86_64', shell: 'msys2 {0}' } - - { name: 'macOS', os: 'macos-latest', dx5: false, config: true, brew: true, werror: true, clang-tidy: false } - - { name: 'Emscripten', os: 'ubuntu-latest', dx5: false, config: false, emsdk: true, werror: true, clang-tidy: false, cmake-wrapper: 'emcmake' } - - { name: 'Nintendo 3DS', os: 'ubuntu-latest', dx5: false, config: false, n3ds: true, werror: true, clang-tidy: false, container: 'devkitpro/devkitarm:latest', cmake-args: '-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake' } + - { name: 'Linux', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: true, linux: true, werror: true, clang-tidy: true } + - { name: 'MSVC (x86)', os: 'windows-latest', generator: 'Ninja', dx5: true, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_x86' } + - { name: 'MSVC (x64)', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64' } + - { name: 'MSVC (arm64)', os: 'windows-latest', generator: 'Ninja', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_arm64' } + - { name: 'msys2 mingw32', os: 'windows-latest', generator: 'Ninja', dx5: false, config: false, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw32', msys-env: 'mingw-w64-i686', shell: 'msys2 {0}' } + - { name: 'msys2 mingw64', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw64', msys-env: 'mingw-w64-x86_64', shell: 'msys2 {0}' } + - { name: 'macOS', os: 'macos-latest', generator: 'Ninja', dx5: false, config: true, brew: true, werror: true, clang-tidy: false } + - { name: 'Emscripten', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, emsdk: true, werror: true, clang-tidy: false, cmake-wrapper: 'emcmake' } + - { name: 'Nintendo 3DS', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, n3ds: true, werror: true, clang-tidy: false, container: 'devkitpro/devkitarm:latest', cmake-args: '-DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake' } + - { name: 'Xbox One', os: 'windows-latest', generator: 'Visual Studio 17 2022', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64', cmake-args: '-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0', xbox-one: true} steps: - name: Setup vcvars if: ${{ !!matrix.msvc }} @@ -95,7 +96,7 @@ jobs: - name: Configure (CMake) run: | - ${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -GNinja \ + ${{ matrix.cmake-wrapper || '' }} cmake -S . -B build -G "${{ matrix.generator }}" \ ${{ matrix.cmake-args || '' }} \ -DCMAKE_BUILD_TYPE=Release \ -DISLE_USE_DX5=${{ !!matrix.dx5 }} \ @@ -106,7 +107,7 @@ jobs: -Werror=dev - name: Build (CMake) - run: cmake --build build --verbose + run: cmake --build build --verbose --config Release - name: Package (CPack) if: ${{ !matrix.n3ds }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 00d087df..f9669bad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR) project(isle LANGUAGES CXX C VERSION 0.1) +if (WINDOWS_STORE) + add_compile_definitions(WINDOWS_STORE) +endif() + if (EMSCRIPTEN) add_compile_options(-pthread) add_link_options(-sALLOW_MEMORY_GROWTH=1 -sMAXIMUM_MEMORY=2gb -sUSE_PTHREADS=1 -sPROXY_TO_PTHREAD=1 -sOFFSCREENCANVAS_SUPPORT=1 -sPTHREAD_POOL_SIZE_STRICT=0 -sFORCE_FILESYSTEM=1 -sWASMFS=1 -sEXIT_RUNTIME=1) @@ -38,7 +42,7 @@ option(ISLE_WERROR "Treat warnings as errors" OFF) option(ISLE_DEBUG "Enable imgui debug" ON) cmake_dependent_option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" "${NOT_MINGW}" "WIN32;CMAKE_SIZEOF_VOID_P EQUAL 4" OFF) cmake_dependent_option(ISLE_MINIWIN "Use miniwin" ON "NOT ISLE_USE_DX5" OFF) -cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN;NOT NINTENDO_3DS" OFF) +cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN;NOT NINTENDO_3DS;NOT WINDOWS_STORE" OFF) cmake_dependent_option(ISLE_COMPILE_SHADERS "Compile shaders" ON "SDL_SHADERCROSS_BIN;TARGET Python3::Interpreter" OFF) option(CMAKE_POSITION_INDEPENDENT_CODE "Build with -fPIC" ON) option(ENABLE_CLANG_TIDY "Enable clang-tidy") @@ -57,44 +61,53 @@ message(STATUS "Compile shaders: ${ISLE_COMPILE_SHADERS}") add_library(Isle::iniparser INTERFACE IMPORTED) if (DOWNLOAD_DEPENDENCIES) - # FetchContent downloads and configures dependencies - message(STATUS "Fetching SDL3 and iniparser. This might take a while...") - include(FetchContent) + # FetchContent downloads and configures dependencies + message(STATUS "Fetching SDL3 and iniparser. This might take a while...") + include(FetchContent) + if (WINDOWS_STORE) + FetchContent_Declare( + SDL3 + GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" + GIT_TAG "main" + EXCLUDE_FROM_ALL + ) + else() FetchContent_Declare( SDL3 GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" GIT_TAG "main" EXCLUDE_FROM_ALL ) - FetchContent_MakeAvailable(SDL3) + endif() + FetchContent_MakeAvailable(SDL3) - FetchContent_Declare( - iniparser - GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git" - GIT_TAG "main" - EXCLUDE_FROM_ALL - ) - block() - set(BUILD_DOCS off) - set(BUILD_SHARED_LIBS off) - FetchContent_MakeAvailable(iniparser) - target_link_libraries(Isle::iniparser INTERFACE iniparser-static) - endblock() + FetchContent_Declare( + iniparser + GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git" + GIT_TAG "main" + EXCLUDE_FROM_ALL + ) + block() + set(BUILD_DOCS off) + set(BUILD_SHARED_LIBS off) + FetchContent_MakeAvailable(iniparser) + target_link_libraries(Isle::iniparser INTERFACE iniparser-static) + endblock() else() - # find_package looks for already-installed system packages. - # Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"` - # to add search paths. - find_package(SDL3 CONFIG REQUIRED) + # find_package looks for already-installed system packages. + # Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"` + # to add search paths. + find_package(SDL3 CONFIG REQUIRED) - find_package(iniparser REQUIRED CONFIG COMPONENTS shared) - target_link_libraries(Isle::iniparser INTERFACE iniparser-shared) + find_package(iniparser REQUIRED CONFIG COMPONENTS shared) + target_link_libraries(Isle::iniparser INTERFACE iniparser-shared) endif() set(CMAKE_EXPORT_COMPILE_COMMANDS ON) if (ENABLE_CLANG_TIDY) - find_program(CLANG_TIDY_BIN NAMES "clang-tidy" ENV "LLVM_ROOT" REQUIRED) - set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}") - set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}") + find_program(CLANG_TIDY_BIN NAMES "clang-tidy" ENV "LLVM_ROOT" REQUIRED) + set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}") + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}") endif() if (ISLE_ASAN) @@ -112,26 +125,26 @@ add_subdirectory(miniwin EXCLUDE_FROM_ALL) set(isle_targets) function(add_cxx_warning WARNING) - if (ISLE_WERROR) - set(compiler_option "-Werror=${WARNING}") - else() - set(compiler_option "-W${WARNING}") - endif() - string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname) + if (ISLE_WERROR) + set(compiler_option "-Werror=${WARNING}") + else() + set(compiler_option "-W${WARNING}") + endif() + string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname) - cmake_push_check_state(RESET) - set(CMAKE_REQUIRED_FLAGS "${compiler_option} ") - if (MSVC) - string(APPEND CMAKE_REQUIRED_FLAGS "/WX") - else() - string(APPEND CMAKE_REQUIRED_FLAGS "-Werror") - endif() - check_cxx_source_compiles("int main() { return 0; }" ${varname}) - cmake_pop_check_state() + cmake_push_check_state(RESET) + set(CMAKE_REQUIRED_FLAGS "${compiler_option} ") + if (MSVC) + string(APPEND CMAKE_REQUIRED_FLAGS "/WX") + else() + string(APPEND CMAKE_REQUIRED_FLAGS "-Werror") + endif() + check_cxx_source_compiles("int main() { return 0; }" ${varname}) + cmake_pop_check_state() - if (${varname}) - add_compile_options(${compiler_option}) - endif() + if (${varname}) + add_compile_options(${compiler_option}) + endif() endfunction() add_subdirectory(3rdparty EXCLUDE_FROM_ALL SYSTEM) @@ -532,6 +545,11 @@ if (ISLE_BUILD_APP) ISLE/3ds/config.cpp ) endif() + if(WINDOWS_STORE) + target_sources(isle PRIVATE + ISLE/xbox_one_series/config.cpp + ) + endif() if(Python3_FOUND) if(NOT DEFINED PYTHON_PIL_AVAILABLE) execute_process( @@ -612,6 +630,12 @@ if (MSVC) if (TARGET isle-config) target_compile_definitions(isle-config PRIVATE "_CRT_SECURE_NO_WARNINGS") endif() + if (TARGET iniparser-static) + target_compile_definitions(iniparser-static PRIVATE "_CRT_SECURE_NO_WARNINGS") + endif() + if (TARGET libsmacker) + target_compile_definitions(libsmacker PRIVATE "_CRT_SECURE_NO_WARNINGS") + endif() endif() # Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428") @@ -671,14 +695,20 @@ endif() string(REPLACE ";" "-" ISLE_CPUS_STRING "${ISLE_CPUS}") string(TOLOWER "${ISLE_CPUS_STRING}" ISLE_CPUS_STRING) -set(ISLE_PACKAGE_NAME "${CMAKE_SYSTEM_NAME}-${ISLE_CPUS_STRING}" CACHE STRING "Platform name of the package") +if (WINDOWS_STORE) + set(ISLE_PACKAGE_NAME "Xbox_One_Series_XS-${ISLE_CPUS_STRING}" CACHE STRING "Platform name of the package") +else() + set(ISLE_PACKAGE_NAME "${CMAKE_SYSTEM_NAME}-${ISLE_CPUS_STRING}" CACHE STRING "Platform name of the package") +endif() if(BUILD_SHARED_LIBS) list(APPEND install_extra_targets lego1) endif() -install(TARGETS isle ${install_extra_targets} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" -) +if (NOT (NINTENDO_3DS OR WINDOWS_STORE)) + install(TARGETS isle ${install_extra_targets} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) +endif() if (ISLE_BUILD_CONFIG) if(WIN32) find_program(WINDEPLOYQT_EXECUTABLE windeployqt) @@ -726,6 +756,15 @@ if(NINTENDO_3DS) ctr_create_3dsx(isle SMDH isle.smdh) install(FILES "$/isle.3dsx" DESTINATION "${CMAKE_INSTALL_BINDIR}") endif() +if(WINDOWS_STORE) + install( + DIRECTORY + "${CMAKE_BINARY_DIR}/AppPackages/isle/" + DESTINATION "${CMAKE_INSTALL_BINDIR}" + FILES_MATCHING PATTERN "*/Dependencies/x64/Microsoft.VCLibs.x64*.14.00.appx" + PATTERN "*/*.msix" + PATTERN "*/*.msixbundle") +endif() if(MSVC) set(CPACK_GENERATOR ZIP) else() diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 2478f2b1..09dcaab2 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -58,6 +58,10 @@ #include "3ds/config.h" #endif +#ifdef WINDOWS_STORE +#include "xbox_one_series/config.h" +#endif + DECOMP_SIZE_ASSERT(IsleApp, 0x8c) // GLOBAL: ISLE 0x410030 @@ -801,7 +805,7 @@ MxResult IsleApp::SetupWindow() SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, g_targetHeight); SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN, m_fullScreen); SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, WINDOW_TITLE); -#if defined(MINIWIN) && !defined(__3DS__) +#if defined(MINIWIN) && !defined(__3DS__) && !defined(WINDOWS_STORE) SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, true); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); @@ -982,6 +986,9 @@ bool IsleApp::LoadConfig() #ifdef __3DS__ N3DS_SetupDefaultConfigOverrides(dict); +#endif +#ifdef WINDOWS_STORE + XBONE_SetupDefaultConfigOverrides(dict); #endif iniparser_dump_ini(dict, iniFP); SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "New config written at '%s'", iniConfig); diff --git a/ISLE/xbox_one_series/config.cpp b/ISLE/xbox_one_series/config.cpp new file mode 100644 index 00000000..72ea32af --- /dev/null +++ b/ISLE/xbox_one_series/config.cpp @@ -0,0 +1,18 @@ +#include "config.h" + +#include +#include + +void XBONE_SetupDefaultConfigOverrides(dictionary* p_dictionary) +{ + SDL_Log("Overriding default config for Xbox One/Series"); + + // Use DevelopmentFiles path for disk and cd paths + // It's good to use that path since user can easily + // connect through SMB and copy the files + iniparser_set(p_dictionary, "isle:diskpath", "D:\\DevelopmentFiles\\isle\\"); + iniparser_set(p_dictionary, "isle:cdpath", "D:\\DevelopmentFiles\\isle\\"); + + // Enable cursor by default + iniparser_set(p_dictionary, "isle:Draw Cursor", "true"); +} diff --git a/ISLE/xbox_one_series/config.h b/ISLE/xbox_one_series/config.h new file mode 100644 index 00000000..bdfcb010 --- /dev/null +++ b/ISLE/xbox_one_series/config.h @@ -0,0 +1,8 @@ +#ifndef XBOX_ONE_SERIES_CONFIG_H +#define XBOX_ONE_SERIES_CONFIG_H + +#include "dictionary.h" + +void XBONE_SetupDefaultConfigOverrides(dictionary* p_dictionary); + +#endif // XBOX_ONE_SERIES_CONFIG_H diff --git a/LEGO1/lego/legoomni/src/race/carrace.cpp b/LEGO1/lego/legoomni/src/race/carrace.cpp index 62701294..c59cd6de 100644 --- a/LEGO1/lego/legoomni/src/race/carrace.cpp +++ b/LEGO1/lego/legoomni/src/race/carrace.cpp @@ -386,7 +386,7 @@ MxLong CarRace::HandleType0Notification(MxNotificationParam&) void CarRace::FUN_10017820(MxS32 p_param1, MxS16 p_param2) { MxS32 local4; - MxStillPresenter* presenter; + MxStillPresenter* presenter = NULL; MxS32 x, y; if (p_param1 == 11) { diff --git a/LEGO1/lego/legoomni/src/race/jetskirace.cpp b/LEGO1/lego/legoomni/src/race/jetskirace.cpp index 7081d8eb..6ea02f86 100644 --- a/LEGO1/lego/legoomni/src/race/jetskirace.cpp +++ b/LEGO1/lego/legoomni/src/race/jetskirace.cpp @@ -263,7 +263,7 @@ MxLong JetskiRace::HandlePathStruct(LegoPathStructNotificationParam& p_param) void JetskiRace::FUN_10016930(MxS32 p_param1, MxS16 p_param2) { MxS32 local4; - MxStillPresenter* presenter; + MxStillPresenter* presenter = NULL; MxS32 x, y; if (p_param1 == 11) { diff --git a/LEGO1/omni/src/stream/mxramstreamprovider.cpp b/LEGO1/omni/src/stream/mxramstreamprovider.cpp index 71fa256c..966bec95 100644 --- a/LEGO1/omni/src/stream/mxramstreamprovider.cpp +++ b/LEGO1/omni/src/stream/mxramstreamprovider.cpp @@ -108,7 +108,7 @@ MxU32 ReadData(MxU8* p_buffer, MxU32 p_size) { MxU32 id; MxU8* data = p_buffer; - MxU8* data2; + MxU8* data2 = NULL; while (data < p_buffer + p_size) { if (data + sizeof(MxU32) <= p_buffer + p_size && UnalignedRead(data) == FOURCC('M', 'x', 'O', 'b')) { diff --git a/miniwin/CMakeLists.txt b/miniwin/CMakeLists.txt index c2aa0bd6..1ed5e909 100644 --- a/miniwin/CMakeLists.txt +++ b/miniwin/CMakeLists.txt @@ -32,7 +32,7 @@ target_compile_definitions(miniwin PRIVATE ) find_package(OpenGL) -if(OpenGL_FOUND) +if(OpenGL_FOUND AND NOT WINDOWS_STORE) message(STATUS "Found OpenGL: enabling OpenGL 1.x renderer") target_sources(miniwin PRIVATE src/d3drm/backends/opengl1/actual.cpp @@ -45,7 +45,7 @@ else() endif() find_library(OPENGL_ES2_LIBRARY NAMES GLESv2) -if(EMSCRIPTEN OR OPENGL_ES2_LIBRARY) +if(EMSCRIPTEN OR OPENGL_ES2_LIBRARY AND NOT WINDOWS_STORE) message(STATUS "Found OpenGL: enabling OpenGL ES 2.x renderer") target_sources(miniwin PRIVATE src/d3drm/backends/opengles2/renderer.cpp) target_compile_definitions(miniwin PRIVATE USE_OPENGLES2) @@ -73,7 +73,7 @@ if(NINTENDO_3DS) endif() endif() -if(WIN32) +if(WIN32 AND NOT WINDOWS_STORE) target_sources(miniwin PRIVATE src/d3drm/backends/directx9/actual.cpp src/d3drm/backends/directx9/renderer.cpp @@ -81,6 +81,10 @@ if(WIN32) target_link_libraries(miniwin PRIVATE d3d9) endif() +if(WINDOWS_STORE) + add_compile_definitions(WINDOWS_STORE) +endif() + target_compile_definitions(miniwin PUBLIC MINIWIN) target_include_directories(miniwin diff --git a/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp b/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp index 7a6589f0..8039c147 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp +++ b/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp @@ -190,7 +190,7 @@ static SDL_GPUGraphicsPipeline* InitializeGraphicsPipeline( Direct3DRMRenderer* Direct3DRMSDL3GPURenderer::Create(DWORD width, DWORD height) { ScopedDevice device{SDL_CreateGPUDevice( - SDL_GPU_SHADERFORMAT_SPIRV | SDL_GPU_SHADERFORMAT_DXIL | SDL_GPU_SHADERFORMAT_MSL, + SDL_GPU_SHADERFORMAT_SPIRV | SDL_GPU_SHADERFORMAT_DXBC | SDL_GPU_SHADERFORMAT_DXIL | SDL_GPU_SHADERFORMAT_MSL, #ifdef DEBUG true, #else diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h index 46e7964d..08204e9e 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h @@ -8,7 +8,7 @@ #include -// DXIL only makes sense on Windows platforms +// DX only makes sense on Windows platforms #if defined(SDL_PLATFORM_WINDOWS) static const Uint8 PositionColor_vert_dxil[5132] = { 0x44, 0x58, 0x42, 0x43, 0x4a, 0x28, 0x54, 0x85, 0x4b, 0xb0, 0x04, 0x11, 0x56, 0x33, 0x94, 0x85, @@ -333,6 +333,104 @@ static const Uint8 PositionColor_vert_dxil[5132] = { 0x83, 0x3f, 0xcc, 0xc3, 0x37, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x49, 0xb8, 0x83, 0x3e, 0xf8, 0x03, 0x3d, 0x6c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +static const Uint8 PositionColor_vert_dxbc[1528] = { + 0x44, 0x58, 0x42, 0x43, 0x26, 0x81, 0xf8, 0x51, 0x4d, 0x47, 0xfd, 0xfd, 0xa8, 0xbd, 0xce, 0x70, + 0x72, 0xe8, 0x3f, 0x4e, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, + 0x5c, 0x05, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xb8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfe, 0xff, + 0x00, 0x01, 0x00, 0x00, 0x8f, 0x01, 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x56, 0x69, 0x65, + 0x77, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0xab, 0xab, + 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, + 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x34, 0x78, 0x34, 0x00, 0xab, 0xab, 0xab, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x56, 0x69, 0x65, 0x77, + 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x77, 0x6f, 0x72, + 0x6c, 0x64, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0x56, 0x69, 0x65, + 0x77, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5f, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, + 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, + 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, + 0x2e, 0x31, 0x00, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x5c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, + 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x80, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, + 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0xab, 0xab, 0xab, + 0x53, 0x48, 0x45, 0x58, 0x74, 0x02, 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x6a, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, + 0x32, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, + 0xf2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, + 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x12, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x32, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, + 0x94, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; #endif // MSL only makes sense on Apple platforms @@ -557,4 +655,4 @@ static const Uint8 PositionColor_vert_spirv[1924] = { 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, -}; +}; \ No newline at end of file diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp index a092dd6d..fefcfa80 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp @@ -24,6 +24,20 @@ static const SDL_GPUShaderCreateInfo VertexShaderDXILCodes[] = { /* num_uniform_buffers */ 1, }, }; +static const SDL_GPUShaderCreateInfo VertexShaderDXBCCodes[] = { + // VertexShaderId::PositionColor + { + /* code_size */ sizeof(PositionColor_vert_dxbc), + /* code */ PositionColor_vert_dxbc, + /* entrypoint */ "main", + /* format */ SDL_GPU_SHADERFORMAT_DXBC, + /* stage */ SDL_GPU_SHADERSTAGE_VERTEX, + /* num_samplers */ 0, + /* num_storage_textures */ 0, + /* num_storage_buffers */ 0, + /* num_uniform_buffers */ 1, + }, +}; #endif #if defined(SDL_PLATFORM_APPLE) @@ -71,6 +85,20 @@ static const SDL_GPUShaderCreateInfo FragmentShaderDXILCodes[] = { /* num_uniform_buffers */ 1, }, }; +static const SDL_GPUShaderCreateInfo FragmentShaderDXBCCodes[] = { + // FragmentShaderId::SolidColor + { + /* code_size */ sizeof(SolidColor_frag_dxbc), + /* code */ SolidColor_frag_dxbc, + /* entrypoint */ "main", + /* format */ SDL_GPU_SHADERFORMAT_DXBC, + /* stage */ SDL_GPU_SHADERSTAGE_FRAGMENT, + /* num_samplers */ 1, + /* num_storage_textures */ 0, + /* num_storage_buffers */ 0, + /* num_uniform_buffers */ 1, + }, +}; #endif #if defined(SDL_PLATFORM_APPLE) @@ -109,6 +137,10 @@ const SDL_GPUShaderCreateInfo* GetVertexShaderCode(VertexShaderId id, SDL_GPUSha SDL_assert(id < SDL_arraysize(VertexShaderDXILCodes)); return &VertexShaderDXILCodes[id]; } + if (formats & SDL_GPU_SHADERFORMAT_DXBC) { + SDL_assert(id < SDL_arraysize(VertexShaderDXBCCodes)); + return &VertexShaderDXBCCodes[id]; + } #endif #if defined(SDL_PLATFORM_APPLE) if (formats & SDL_GPU_SHADERFORMAT_MSL) { @@ -130,6 +162,10 @@ const SDL_GPUShaderCreateInfo* GetFragmentShaderCode(FragmentShaderId id, SDL_GP SDL_assert(id < SDL_arraysize(FragmentShaderDXILCodes)); return &FragmentShaderDXILCodes[id]; } + if (formats & SDL_GPU_SHADERFORMAT_DXBC) { + SDL_assert(id < SDL_arraysize(FragmentShaderDXBCCodes)); + return &FragmentShaderDXBCCodes[id]; + } #endif #if defined(SDL_PLATFORM_APPLE) if (formats & SDL_GPU_SHADERFORMAT_MSL) { diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h index ebdbe79d..beb316f4 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h @@ -8,7 +8,7 @@ #include -// DXIL only makes sense on Windows platforms +// DX only makes sense on Windows platforms #if defined(SDL_PLATFORM_WINDOWS) static const Uint8 SolidColor_frag_dxil[6648] = { 0x44, 0x58, 0x42, 0x43, 0xd8, 0xfe, 0x4c, 0xec, 0x17, 0x1b, 0x52, 0xee, 0xf7, 0xc8, 0x8d, 0xcf, @@ -428,6 +428,206 @@ static const Uint8 SolidColor_frag_dxil[6648] = { 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xe9, 0xe1, 0x17, 0xe1, 0x01, 0x1e, 0xb5, 0x81, 0x16, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +static const Uint8 SolidColor_frag_dxbc[3160] = { + 0x44, 0x58, 0x42, 0x43, 0xe8, 0x49, 0xcf, 0x45, 0xf9, 0x5a, 0x8f, 0xd1, 0xe0, 0x69, 0x77, 0x8f, + 0x38, 0xc7, 0x7b, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x58, 0x0c, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x94, 0x04, 0x00, 0x00, + 0xbc, 0x0b, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x7c, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0xff, + 0x00, 0x01, 0x00, 0x00, 0x53, 0x03, 0x00, 0x00, 0x52, 0x44, 0x31, 0x31, 0x3c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x00, + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x46, 0x72, 0x61, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x00, 0xab, 0xab, 0xab, 0xac, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xec, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x00, 0xab, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0xab, + 0xce, 0x01, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0xdc, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x69, 0x67, 0x68, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x00, 0x69, 0x6e, 0x74, 0x00, 0xab, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, + 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x5f, 0x53, 0x68, 0x69, 0x6e, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x00, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x5f, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x52, 0x61, 0x77, 0x00, 0x64, 0x77, 0x6f, 0x72, 0x64, 0x00, 0xab, 0x00, 0x00, 0x13, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, + 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x5f, 0x55, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x00, 0x4d, + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, + 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, + 0x72, 0x20, 0x31, 0x30, 0x2e, 0x31, 0x00, 0xab, 0x49, 0x53, 0x47, 0x4e, 0x80, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, + 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0xab, 0xab, 0xab, + 0x4f, 0x53, 0x47, 0x4e, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x0e, 0x00, 0x00, + 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x53, 0x56, 0x5f, 0x44, 0x65, 0x70, + 0x74, 0x68, 0x00, 0xab, 0x53, 0x48, 0x45, 0x58, 0x20, 0x07, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xc8, 0x01, 0x00, 0x00, 0x6a, 0x08, 0x00, 0x01, 0x59, 0x08, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x03, 0x00, 0x60, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x04, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x55, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0x10, 0x00, 0x03, 0x32, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x10, 0x00, 0x03, + 0x72, 0x10, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x20, 0x00, 0x04, 0x82, 0x10, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0xf2, 0x20, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x02, 0x01, 0xc0, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, + 0x04, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x09, 0x01, 0xc0, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x3f, + 0x3a, 0x10, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x80, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x12, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x01, 0x21, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x80, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, 0x00, 0xd0, 0x00, 0x00, 0x82, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x80, 0x20, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x1f, 0x00, 0x04, 0x03, + 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x3a, 0x80, 0x20, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x09, + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x86, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x12, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf6, 0x0f, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x04, 0x03, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf6, 0x0f, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x07, + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x05, + 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x0b, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, + 0x32, 0x00, 0x00, 0x0b, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, + 0x1e, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x2a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x10, 0x92, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xa6, 0x8a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x05, 0x92, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x06, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x03, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x32, 0x20, 0x00, 0x0c, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x81, 0x80, 0x80, 0x3b, 0x81, 0x80, 0x80, 0x3b, + 0x81, 0x80, 0x80, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x04, 0x04, 0x3a, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x8b, 0xc2, 0x00, 0x00, 0x80, 0x43, 0x55, 0x15, 0x00, 0xf2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x7e, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x20, 0x00, 0x07, + 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x82, 0x20, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, + 0x55, 0x00, 0x00, 0x08, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x80, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x81, 0x80, 0x80, 0x3b, + 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x3e, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, + 0x94, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; #endif // MSL only makes sense on Apple platforms @@ -938,4 +1138,4 @@ static const Uint8 SolidColor_frag_spirv[4616] = { 0xb0, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, -}; +}; \ No newline at end of file diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/Common.hlsl b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/Common.hlsl index c4d9d361..6330aa9b 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/Common.hlsl +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/Common.hlsl @@ -18,3 +18,9 @@ struct SceneLight { float4 position; float4 direction; }; + +#ifdef NO_REGISTER_SPACE + #define REGISTER_SPACE(REG, SPACE) register(REG) +#else + #define REGISTER_SPACE(REG, SPACE) register(REG, SPACE) +#endif \ No newline at end of file diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/PositionColor.vert.hlsl b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/PositionColor.vert.hlsl index cbf14c6b..598b8f09 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/PositionColor.vert.hlsl +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/PositionColor.vert.hlsl @@ -1,6 +1,6 @@ #include "Common.hlsl" -cbuffer ViewportUniforms : register(b0, space1) +cbuffer ViewportUniforms : REGISTER_SPACE(b0, space1) { float4x4 projection; float4x4 worldViewMatrix; diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/SolidColor.frag.hlsl b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/SolidColor.frag.hlsl index 6a6608ba..8f9a269e 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/SolidColor.frag.hlsl +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/src/SolidColor.frag.hlsl @@ -5,7 +5,7 @@ struct FS_Output { float Depth : SV_Depth; }; -cbuffer FragmentShadingData : register(b0, space3) +cbuffer FragmentShadingData : REGISTER_SPACE(b0, space3) { SceneLight lights[3]; int lightCount; @@ -24,8 +24,8 @@ float4 unpackColor(uint packed) return color; } -Texture2D Texture : register(t0, space2); -SamplerState Sampler : register(s0, space2); +Texture2D Texture : REGISTER_SPACE(t0, space2); +SamplerState Sampler : REGISTER_SPACE(s0, space2); FS_Output main(FS_Input input) { diff --git a/miniwin/src/d3drm/d3drm.cpp b/miniwin/src/d3drm/d3drm.cpp index 45a4e3ad..1088a943 100644 --- a/miniwin/src/d3drm/d3drm.cpp +++ b/miniwin/src/d3drm/d3drm.cpp @@ -167,7 +167,7 @@ HRESULT Direct3DRMImpl::CreateDeviceFromSurface( DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(WINDOWS_STORE) else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) { DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); } diff --git a/miniwin/src/ddraw/ddraw.cpp b/miniwin/src/ddraw/ddraw.cpp index a3bc5d4d..f9dabada 100644 --- a/miniwin/src/ddraw/ddraw.cpp +++ b/miniwin/src/ddraw/ddraw.cpp @@ -7,7 +7,7 @@ #ifdef __3DS__ #include "d3drmrenderer_citro3d.h" #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(WINDOWS_STORE) #include "d3drmrenderer_directx9.h" #endif #include "d3drmrenderer_sdl3gpu.h" @@ -238,7 +238,7 @@ HRESULT DirectDrawImpl::EnumDevices(LPD3DENUMDEVICESCALLBACK cb, void* ctx) #ifdef __3DS__ Citro3DRenderer_EnumDevice(cb, ctx); #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(WINDOWS_STORE) DirectX9Renderer_EnumDevice(cb, ctx); #endif Direct3DRMSoftware_EnumDevice(cb, ctx); @@ -357,7 +357,7 @@ HRESULT DirectDrawImpl::CreateDevice( DDRenderer = new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(WINDOWS_STORE) else if (SDL_memcmp(&guid, &DirectX9_GUID, sizeof(GUID)) == 0) { DDRenderer = DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); } diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index d6fc19f0..3ec9d174 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -20,3 +20,7 @@ endif() if(LINUX) add_subdirectory(linux) endif() + +if(WINDOWS_STORE) + add_subdirectory(UWP) +endif() diff --git a/packaging/UWP/CMakeLists.txt b/packaging/UWP/CMakeLists.txt new file mode 100644 index 00000000..dedad8d8 --- /dev/null +++ b/packaging/UWP/CMakeLists.txt @@ -0,0 +1,15 @@ +file(GLOB_RECURSE GENERATED_ASSETS + "assets/*" +) +set(ASSET_FILES ${GENERATED_ASSETS}) +set_source_files_properties(${ASSET_FILES} PROPERTIES + VS_DEPLOYMENT_CONTENT 1 + VS_DEPLOYMENT_LOCATION "assets" +) + +set(MANIFEST_FILE Package.appxmanifest) +set_source_files_properties(${MANIFEST_FILE} PROPERTIES + VS_DEPLOYMENT_CONTENT 1 +) + +target_sources(isle PRIVATE ${ASSET_FILES} ${MANIFEST_FILE}) diff --git a/packaging/UWP/Package.appxmanifest b/packaging/UWP/Package.appxmanifest new file mode 100644 index 00000000..c0023051 --- /dev/null +++ b/packaging/UWP/Package.appxmanifest @@ -0,0 +1,47 @@ + + + + + + LEGO® Island + Helloyunho + StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packaging/UWP/assets/LargeTile.scale-100.png b/packaging/UWP/assets/LargeTile.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..94b280c2e82370c200eae83d38a87e296d5ebc35 GIT binary patch literal 2046 zcmeHIYgE!_7zZuIoL5p?VzDwkYgWz_yd}~~x@lfIX9i}`oSOTi5sIcFwUOP_oTt*# z)M;v47aS#*L`ZX?X?mQf)QA(`%Y-nYgh3t$&zMJz`E#4Phg9AJH)1h5Q z=DnoMj-Nxj1F>Du?!sI6-LNZyQe$5bEKMyKobU{B4H;0D>~vCpm9Hc{}(MqHxsUcevY)B3VYV218@ zWD^_0WZo4D`1cl63Jtf(hipvDpmK_Q6LA1twy?$r@QWaWgO*3F+2>vc?@y{LQ$i!8 z`ibC`mH}|~%C%`_pln8AAwUA=tKU5+=8_9)x3s_ZoSl9T$4wpu+t9*jOtdH>qC1YZ zEz_Dv$meM9?;sBge7FH$&*7X5}^zda;#Z- zh+7>*Fb+ygNbuE>gObdVz)vrCD>NyZ8fB-jK~tpH423qJZz0@HQG{)=36I^IQ00Y% zJyzg)Oq3cy>3B~@@LbI5;)H9)`q`!>n?PXWD z)D!U|RRiq=MccMxCjJdRDOU!AvoCNe(CEZDkt}HohM_+J1H;?(3;3AX(Yx!+T>+v2 z^g*EkbaEOf?EU-i0d|AwWxV@lDEl!^U}&8r^OAU$RztlvNPLKShqsEH{4?Lfghfw(c*izY{9&-2{A1si~yku%M|vwti%BtY4E}-PJ!c)O;T&u~)Q5&d(LF{E;#6 zZ^wky+&UPz^9{zS!4u(bOEmZOaQ6IU zD`1X&ycpBI8Q$|wTHcfZj*>Y8fqAu1pC*%Gm}CCN4;36#&a;DT_<9~QCcS3p`ef7v;Y0;9?XDM6t2RHYX#H-RydvEyA zxgl($^ZNR{0}@pLsl2#H8FFM6Ak2?G`{7ZRfYWk=v1Rf)mT+lc@PPE03*e4jT0fp@ zR9tFvFE8#%${Lqc7a(e?Kh(?#{f|N83em;9V2PaSsEDP2+cVwd$zQNgp2W-bDdOwL zb*TjA2p5vDfo}C_}K;|We9}C=e%l#O5%UCam@uzDaJUTUIh3@vIG|!^r RhJg;*yE|mpgPq5I{2Niso_7EM literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/LargeTile.scale-125.png b/packaging/UWP/assets/LargeTile.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..e8531486bbf41c57e8d8436fd8e18c74cd416bad GIT binary patch literal 2648 zcmeHJc~H}58vYR@IfRfxiV+Z!QY0O&AXhj;AaV+bESG>up$KRMN+}``NFpeQ9J^ae z3?N7gRHY^imP^91>PA~2SQZj6G)jR8%C!)MK*)xf-I?u7JG=kw{?R|)`R4t;Z{Fj1 z-kIkuITh@y4L5)T0HE#fM?MVz8io4?)l}a&@*~I92Q1w$`ZEAPJlr=8LE1N;0012B zPbU2#yKZ@gUty7?A$Yld4EYLM%;JDxAEmquZY;bnfy*_%p9^?pO7af6f|vvOF&yj) zCLtzV!AtYN3!1mg3UX+IC^26pNfblsJ40s^{C<(xTH5k7;|A!d3 zI2+$hc)p6bwuG1U0f|tM(+qrQKEc>tOV%JX?Jvk8BfIYeLZ@$TG=7|1=h5LySJCP) zYu{I)V?73};6mX<+H0xu-0gAI|JU5dBB=%!LkUVmL`U?C*uZ3a?oLa;QZbufTO|gQsF4vo@12gCS|yxT zfk8HRt`don(t?~jd!g~u7NSnrVyk>vxFJMH%%P}on|2jHC;GUD6~Cr9#C=5gdTlpj zX|W>H3SMv~-ly>piJE00ZnJA0&$Uu$Td-Le{DY!PyVmp5)1bCe48C?F=!8rqjW$YM zc1tZ|9UW~`|0r_-h`s9%_>W#@zukyHjhf`{NvsAgWqBfTOEiY+LXBV*kD&i_1;@jY zFr1;T&D&;*X{u2Rf&0g=YNM~K1GEoKoib844f}i4LDGx*+ag_S$ja@O0*;SzgAx)l z(Ip7xGO#iS-Gln-CZ2Vo3i4HA!r#UflWf^x$4_MKdUNeK(hK)6%f}+2DoG@A$sKJJ zNd|4TyEL~u1(e+D-yJN~1D`#jR}>@i>~=^G=~>`;c_RWkU?o#9P^7l=>KOmfY$pHF zxduX8-tr4cRalg`@KGC>SsQ#{W#cnBU!mfTo|$&UNDZFs&=#g%a=fKxs)aq`WLHCV z-ABn#P`#UbI3--qx;iT^hR}8EJ7%uJdRw(SYg=wI*)a)|UJa8{EWMCy37;vM_ARtI*JP?meQZ2iB~eC1=OAt`F8$8dNI!Z`{C~dQ>$Y78S!tgn{mUdg0=&z}N~W z$8U{XtP{D320Zm(e)04kE6aeavnsuuQ$8weh&P6xKbt^{A{U(oGvj+x9nT*v)*08% zr)$pIj=$2au341OhuPZp%zSn=)sd5nw019k3k!Q5 zdQKQFU-jUc!%zAnad$3ugi4zgokM9Qbckr7+4#wTfvZV*PLs*?`orh|BztCzlo#Y$ zVa}dn4Jy6C*xXTc%1t-s%VRpY%=PT3G1GrI|CVTgjg`c~V$|n_8s1SokIu+V|tz z_kZjOJ}$VwM0^5~o2(E6g^<_g(Adw99JCeRU&usH>UIYrlP6^G#CTq+mn_(kI>We!8#_qGj-K{GJW8xC%){@4(J4vI{J~-F7v~WLEqVkl&CH zMs8hqH3SQN6H;R5;aX;|xw(kE8g)pG#jSS~O?&H)*9i}c zGCB!!BfLsQx_Hj~Aq&j>;2dm7MJco33@~wH*D!+>CHoluI@14<13$#SI6z;g#{5@} h{JtstFSn&F8;313!>r-71L{=~@IMhuzUM_{{R3#jYA*l) literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/LargeTile.scale-150.png b/packaging/UWP/assets/LargeTile.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..b73fc6b574ebeb5d3a8bea1ad96cc25294d3bcbd GIT binary patch literal 3354 zcmeHKdsNcd7RF37&5Xn>y*YuF!PQKDH! z7>2JDXY3*=VrfkjRw`*$iulNkYhaBSV~jGi?ppKD+_mnyv*yqK*z2sb&sl4K`<(Bb z{p|ujUr&8q6I}=dqVMemU?C8Vfv={ct@hYII9H_}R>ymVCP5%;AAB_pKC%8d1hVF- zH?Ti2?YdOt+A?)S<58q#n1yak8^E9x8{FSOh4s7rh*E`FAs2P}<2(!34RW>gwLsm6 z*(+H&9#< zf`5kVoe)p2B>gbYe|b#X5bD1nGR95GvaAikyR`9DinQ*P0CiGGiC`V@@`Pe5DIj(b zrhz&-%r5m!#~rXn{+lmNlXP)T%oxBs=yf&M>>uoi*wVbv)C}+GN z>+B>zMPPs;%V7`Zq>gz3(!ep*&DN8$^<38Xd&J_oDtbl7l39SyT+h1#O@_2Zu)OHrpgL(vrWu%bO$h8bo~G zhcwFokyWidcTqwEy75464gkA5=*ZIxU+3>I#cT*Se-SZ^K2>L)wvBNbEhgVIMIoN{ zn|J)Oan0x!MqnTOCCg;}gIMz1awo3KdBLMQOdXV6(RZ3)U9ZTbPCNGjBU`lQV6vl6_6H_$Lftr1^1n{n7Hs~5V@(BF(8+b$xA?p4N$j5&8cSC7s6xOYwK zm_V6mW!Aj3S4=}VhIAUIeCW3;9_gH`P~D3kYre$frM}(=WrFP;_Az#K@W%c!au>LqHWtF2 zb~JBUbsNsGel*elYm?rH!Yl!Ymv<%fjs45WbAGELSI)5wSDi78Glp5J;kY!;E-U3x z@02?NYs6)y+#2Bp*NRq)1FqWhk(|!ms(1INK%_f<^_b*Np`+~?;!6I9WS|8;SEh>` zQd4v`k(ws0te&|-HY+ky5$<)&e11P&bz%G}h-L1`=PN`WXS9dvlVRlX)^r5M=!?fC zzIgN6XSZd^gJM#RusbsVTD6T4NW4dMA?>rbqJ7Q(An^L4{O{UDm{q%Zz3)Ke(8l## z^_*_2s*!zhZ9itn8GmyEb8|03aOzO{;FWm1t84?5Cw(K|5$F!QZaN-#>QpMM#Bj*a zzwt6aU}@%RE*Sa;N3q8BH50fEFT))bmmu#=AE8sGeZa zUL~@jr!Oz`c;4hIcar3nNfCufsgFjKwTr_`IPKmojHc&<0UaTp$LX{axv3qar6dEq zcwa%ny_c@`$WxyiCwky*lJ-BE?6V zOtbghh%W+LofH=zvUnd4Z!U9co4-No64`vm43WWaHPJw9^Of44L{m57Hob73)FvPyZ0IyeS;9cNRMF6!CRTRjxZpklgbwCIjMc0K3iJg1V zf@>gh;pbhQVQ7K+*)1#va55X@9`UyDD1CrBM2^EKzAK^xzwO_1Z_M%8@Im4#In=-L zBMeI(53V!K&u-4j$Ut$d%fQwn$JU~@RR_&#->M~rZi6!GyLho&G0&u9twu9l;TdWL zW!`-O&cg!C{UQ*ztS^DB8;?zTf@TTVZk6Q51D5c~Pi-G9zPv(lCj9?Uupnkt_d~OkwVlhFptQ zD22FgYNk@NcPk?>T6JD#aNfQlpVE37fg!!Aqwi|rvAZTY)3Q+RZABz=1p*V~vKncB zGLNcd_$Osiq%@^?|5_%9d>W^q9Efz8bf7qbzsoCY(Hw>d`O2hL@|Tm>K18p(3wJ9ghw;y>k*1&pi3P}@?VJ4GC1m>MQJH_C2*U)WaHEIYd~g}gmCrvp+3@uH sJ%NT|WBm9Z3H40@eiO!jK||2bzZMV5e|5vAtD7B&x4SRELjU9JZ@Wpw7ytkO literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/LargeTile.scale-200.png b/packaging/UWP/assets/LargeTile.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..0230084965d628ae8e7f6c3e8f1aa44a7601ca4c GIT binary patch literal 5425 zcmeHLdpuP87T-e+V!}}pG9+~zlIjd1Nhqc0(1{w%lv2!$p~;&eQ(h6BQ<2xiIq7!t z7!6Zsun{HCqIqmXlE=Z!oDvhmxZ6E_?&o~&=ibk`f86`Wy`TQrpS}0`t-XKi@m*{E z)=D|*dH}UbdldixsDsXq?f@W1T)q^MFlFz}B_sHz6zqJ00syOh1*)`1M3X=%TcDsy%d&XCvqn%zX0flLTOG zZ9Fn|3VtdbESM;x9zg*5e8Q+6ELE$L1rQ&cfCBXM@bZA-7A^oZej$Ca#1~Bb4~GJ6 z{gmWv+}p8jRisGjFYkfOBMi{d)rntNY@9LiAtQ(reQa3h*{ZYtoOO&|E^j}An2M)e z&({ca^B5N14QeT+&h1;Ae|jnLskx{CJA_O-!~mVcYCnj~Sjhf&%9#F|^BM}%kzd!< zilcqwdlW6Sz$#|oJ=Rvf|MdGPDPMuQng2I3H@hP2aR#NR)NILSMpUhy)C)EGO;5Hp zF^PAroK~edGQjxaDMF6zFr`94cfIt{z3#F43b^Yq zAGb{iOMgs5dZ9q1Nl4tSQmM7=W+?3D63TilY0#&gg*bO|IL;I?y1d8NAkx#B4jw8v z3q2!<=JPfR8ixVzgAA~3Lt;;mr;O5BQAwI>+a?huKCW&z> z0aez`8ewCCj;|voHACM!>MWbpWV_Shlt=d_D2JwPCWK@KKHcMIhCR%C%y4uI;mN{$ z|8O?{)RVq)9EUZsG^*Rx?&<^$>Y7@vf&Xc+%;zxDgz*|(%|bt3N;kGUP$`<+IY5e< zj$ZO&FTTEhwll>Pt*^R!GZznFjt_V`jEs%(;{=ie=ufhDXj$F+SH<3JgiU0-bs&9+Fs#E9WepM!NIC^xXjruz7~G!O%1@De zS!c@6HB$oO(MP4?lJL0D4z0+W+lz#LGqWti7jP(;7;y2M{2U<%#B4X!ET8ww27nO>V74QZgt$EU3;DNop~vyM6?@pzj0hP9;bS9K*xMPpg} zJ)i;a9dFGB>MCnT`9{!?QmjAJ8S9Xsnwhj#gJ^!qrHSGiHEAbKo#i)wk+0xM)-MarxE=cV44SO_Azp7w8GiiJ1&lK_g?AF z<`IW>)>cw~Ad@Hs{aU+IF8)xYz_6y-mqN%WE(=>ZI<> ziAT91gn|pndOP?N!kr{+0Xq!q-Jwt?Z@EIpw2P)NUTD^feKc*&Bz-sUt;M0NG=b4} zC2ymT5#1lqfuAqIIgbe4azkT_l}l^-p~*$MH**`=Ir*inLcKdV`-3w7L?0m}77 z%pdzT@Zup@LZ@GoJ#g=bK|7PoKKAnoe<9s zL`ht1H5aFAn#Ai*(;MdDRP=cJKDfcf=2Bx*EWGqVB#-)Jfa;fq!fC9h=zhG?vaU~ID4kOxuDCn`JE|n0jVzKZ zCJ6Ih6*;trSnB`3_HK`GT|E0X_GdXlK<)nQm}hNx{skk(O)vj+pP+i_&V76ijD@ z$;bo9T}Bdx0Oc@p5jn*Rt<~##))Mj_7?0qtp0G%UR= zOR*eV(s3fOF)`U9n~tYlsjfcLDhs>SVQ?b_rexu1w|mFupSo~D^D(3PeEc4`iqAHy zaMejz>g>zdWX$MBK3*>YrMbUkyJZjZ6`Yt7G?>J$Ub@(fSLS8tv?wpT$GSnzi`HeV zO+f8`=>%m$8iY;vh$)fQv*;nzjry8Wg_9bB63Z0UMx-)1O=7B7bqNoc)c4*desp0W#`QhQZ-di6Q z`u#3#h2tH6I^7s^clS35D1X@ah_Q6> zlhhe4-=Lm=%Es+$-;{=UgZLvz#!IW`6tZ)EZ?*AY4ewg4v0*)1-S<=&YIIp8(dwdF zpELt{6tZeW4SWGMxg{un#cO#-llzL>q)O4tJxO#_#inu z1y5Uv-B(hfCm75CL!P7?Ipp&a(**<*2UjdJsPsRWM literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/LargeTile.scale-400.png b/packaging/UWP/assets/LargeTile.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..e447517671b5aca3525c56889dedd703f4a2ff0d GIT binary patch literal 14676 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 PC5w@PxjyBH%kTdNyb?JQ literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/SplashScreen.scale-100.png b/packaging/UWP/assets/SplashScreen.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..ba958235fc0f45c4a8a400db0d5735660cd5dd9c GIT binary patch literal 2498 zcmeHJX;4#F7=0n(u|`%Ah*(A0Lw&eD zyJ%e;-Xv)R+8r{`Ho`!9XKU`AeJ@xmMUOt zY~(hPk-y4gA6~L(90{7)HBn8eA#qf+Hr}$Mw45lB_DS!qBR#Z)ZowhByU*RrZ`N%b zxi)F_8LfqX*{WqcR+%{zqY;irb%Ik_Skx-{f(o5GfE@q>ONq!$KDOC!%zKlL4{r=R zI^UJUB};!!U2Y#-L6oUccp;IFlj|A#aX81NpCh9((?1T1i1OA~2hX)Ed$Y zidtQbY-1FP2=lE**{78hyaJAI>0jO`+?D9Q71C3V?Mtfk^^>lY zO0<6oT-3s1WhLlXc;=Rxn!O#grOdhKOQVwc*`9?iw0{;6Syp7(o1_~MAC7C?Wk1{H zN-LKJ%rsRz2EyUJS$b7cjT!9Aq9ndpBs}ZdtfNi6`b#dhe0wMOQdfi8O^^I)u0gUo zS|d)Tw(z^VSIwyQ4_ybjyAR&o>1Uh1heuwMZqS5Z=2hOnX*eq^Rcd%9y=IixP#>zv zM=kI|P?(s3sdJ1%uVO@1#KrSvO9@p$<+gBoLEF5jTKrif1Am z*;S!NUIZLBc!ASm8tm+ur-X)l6tKkRA+jCUnsqXH9Ahv6-IK=>)yzU!{CgE^WHF02 zd_LiuB2P-oZ zx2zp0bw67AneYx7j6spEX8KR_nk!yONCYbyc#u_HZ%M*I25|jCldWMMA@uLX|H>?J;9IsvtzFy;XR{8%T4(ewCX-9*a~;T}Z&0oYmrky&$EI$_8s zsuX;pN)>JJcbx&y4c=owibtMnVUq*K95$VxP=7-%mbjx6yd$ycHQaX^o+x*Mnr$|j z=`Xe2S%|ABOn=lJH;@6A5?BZWSP$Qx_VN(wUfA;bV^Gh{Be+VmHvHyt^GIqX+Qx~A zsLHj165)Sdvg7rC? z@Xb^tKVN3ig^BpV?b4zGr2bwyNcwo@7_U^7!V?u?h%)P15C6SL>prh^m{S!QKPuO% z{=o~wJMMKNclIaX!sao6aod27*Xabko1z60rz89+=^`>t0SlRqw|s+{1~p;k*Go^? z{~7zQJ*~9~O>i6=R9U@Q)JU;z)2{>?daY0Y_1j8~^|S literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/SplashScreen.scale-125.png b/packaging/UWP/assets/SplashScreen.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..f63eb9e8a392978a7d6f5af2982e27d99f1b67ae GIT binary patch literal 3167 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/SplashScreen.scale-200.png b/packaging/UWP/assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..24263c2446710eceb49cea80fca63476c0be1f9c GIT binary patch literal 6410 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/SplashScreen.scale-400.png b/packaging/UWP/assets/SplashScreen.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..f622b917af1f95dc4c6b677f16929d4c536f9792 GIT binary patch literal 19945 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square150x150Logo.scale-100.png b/packaging/UWP/assets/Square150x150Logo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..2bce23c58bdbd316dfef03912905ee2c0c1cc665 GIT binary patch literal 944 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}oCO|{#S9F5he4R}c>anM1_tIN zPZ!6KiaBrZyv@61z|eLv<<-}m@AZRXc3){~%;{wR%MT2%?&5qsDLZLr;gMC3rS2Id ziaz`qX8G+yA+LB?^~suqjIXH$KfE6sB<8Y)w3nr)>|fSDan;--+i&l>?i=APa(&O^ z=;}ATlfT{iUNqxnvCrY&IG_a)-D%m;vKN%^2l~lRKe#pb@R6&b5#6?n{eI6l(6X<# z-NOI%!P3>MH=H^Vd`R>AX^zl-pYphG-?H3SDY~t84NuI~6kL0B>m9ibEQVK73k+Q% zwr;h&&bauxfum?_d+EEmk9O8B&(bq751dl__M7)_x67pwTgyVK`XAiiyI1kbLEZZ6 z=c8|K|FtLk-1k#$oU5<>Tm0JN+}mjDbDP%Jp4(ZhTjziIeE#JxkGF;Ym)gbu`f^LH za#Qx>8-;sbEvxjE?_PQLmED?KJ01GU@>Jd&6iD3LALTC+da*brwsq@I$IrrUpQM*6)i3 z-=);n?2li#)8>EWoqVac)0QXboFyt=akR{0Gx)GmH+?% literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square150x150Logo.scale-125.png b/packaging/UWP/assets/Square150x150Logo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..906a3f487cbe81b5413bf5dfd7c580f9f4091816 GIT binary patch literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^dq9|j4M-mHJhB={aTa()7BevL9R^{>sYkdjiK%0w9`9}zu9z>chckM95Y=v&1&{>Wpr2R$n;U>RQ|j_eDNkn ziOoOmT+K^7o873ezB-jxJ>n?M$Sk-^Ore_m|q|9!6C(=Erhmi)@T`MO$u z)&pjldH##~veu=?`Mv*_K0lp&LvLzsSQpiNbm zEc+*__Di<=&+7e8pFXbG@|>?JK6AO{UkEGFYFEC@|B`)qU7s16_8zr=E60u;ve;657hI_P8GR4x$m2aP>t(%?w8j;AA0qN@B7scK!04^`QO~9 zRBQ2@%1wE8wrRg=P8%BQZ=dIWUiz&#N1dB_RsDOnkJnE>55GJ$v*Yi#pd8)fKK<+8 z?6x|ndwrtc2jg9tXZ^Qodg~tf{%yVGvX3&0`M(x-)XjSkp27J^62y?MopytL(R$%O z*8ieAe=fP%@z1?Ue&xEw^`Bx~>U}??{tLZy-mG_~@~{7#b;kmeBm~rJFVMZS-exKSi~_;qe&es z*t}V#()RjD3{`{ErdH5F4u|djX@-O a%Kos-r{7UZem{W441=eupUXO@geCyXWg-y( literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square150x150Logo.scale-150.png b/packaging/UWP/assets/Square150x150Logo.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..10cd54dcf8abd87d4729647ebabf4226faf1e744 GIT binary patch literal 1363 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-256.png b/packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-256.png new file mode 100644 index 0000000000000000000000000000000000000000..05e20da7bd4e4443c2363f9312118b136700a901 GIT binary patch literal 3676 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-32.png b/packaging/UWP/assets/Square44x44Logo.altform-lightunplated_targetsize-32.png new file mode 100644 index 0000000000000000000000000000000000000000..34f380b781b31245930c59ebf19509882cff7d46 GIT binary patch literal 371 zcmV-(0gV2MP)pGB}qgozHAe^YkofAxgkmFnqB+Y|-Zw3@q3mL+iXo%)@18@NdqF9`Rp{OYXHh`9H za!BLsdcR!4&9NyR^Cf8k$RRnA_r=P#ELSfg;S4+XH2^O>o(*0LZ`1@|l16F`@Fmc) zF)6bfDgapzUOP@gs509S6SpG`$f3{qJamJbssiaD6B?h>raN`d$rhA!g}Qfg~cp z4nbb)5Xr}x)kIXf92QXpRX}E~Ph6xit3;>*@a*GNXdp&%nN0!it?ohlG!Rpod9#S( z3SeTTY?R`}VvsWfxd*Y*=^gF^ XgnZlPKJyl+00000NkvXXu0mjfanMpx|^* z7srr_Icq0BHo!@we?llCZN(!Q9*n-sQ$D+?P3 zEEL)+@s(xvBZov5B{9XQW}ATB7DsRIf98Jne8Pf7{V$vrYqaeyd9-8Z1kw19-CG07 zCw$K2Ygty;v-@anMpx|Rq z7srr_IeVwv}yYV}p~g8VzuVdjPZ8j{khg)V2c@b_)y^Alur6j4&RA^K?7 z@7Q@ZuA$ko8g3l>w=?wSylJt{=#pXT+4l6L>+TrYGo9+^niO}rmTpayJNBfpnZ--2 zFp0BBPw1FK*R&^}b&|6u2C;n%^Yggs_^en<&VC2S3gOtmdmq^+?3q`3he6YdgZt9a z!;CXp=IzY*Dkt(uF5$M7^cSw22Kz5I41oq$_V4mMG9zR5+UARzk literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-256.png b/packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-256.png new file mode 100644 index 0000000000000000000000000000000000000000..05e20da7bd4e4443c2363f9312118b136700a901 GIT binary patch literal 3676 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-32.png b/packaging/UWP/assets/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 0000000000000000000000000000000000000000..34f380b781b31245930c59ebf19509882cff7d46 GIT binary patch literal 371 zcmV-(0gV2MP)pGB}qgozHAe^YkofAxgkmFnqB+Y|-Zw3@q3mL+iXo%)@18@NdqF9`Rp{OYXHh`9H za!BLsdcR!4&9NyR^Cf8k$RRnA_r=P#ELSfg;S4+XH2^O>o(*0LZ`1@|l16F`@Fmc) zF)6bfDgapzUOP@gs509S6SpG`$f3{qJamJbssiaD6B?h>raN`d$rhA!g}Qfg~cp z4nbb)5Xr}x)kIXf92QXpRX}E~Ph6xit3;>*@a*GNXdp&%nN0!it?ohlG!Rpod9#S( z3SeTTY?R`}VvsWfxd*Y*=^gF^ XgnZlPKJyl+00000NkvXXu0mjfpGNl8RORCt{2n9&ZyAP7Y@>Hq&Si&<$IQ3TZ08t=>0RXtKb?Gaw4 z<7oh^Ht=X|;L#F+0Rmt-#t_Hj)Kvtguvkyfyq&7DDC`%{vdaJ_mq2LGMBxT3E?6V8 z4>!08S`{tqQV}@!`VkP@jqn_lx=1@PLLd|`U$Y86of{In70PYEG|(s*_2mYirY@qE z$%m;+002ovPDHLkV1go> BxCHpGv`IukRCt{2nbCH_APhjk}YNiLf4(cKj!@I0A}KHR&hD2xLishf#cih6h0MW$a6=<`Bu7eP%IN;_{d|+XRN=g z$>$Ja$mc*oHQA88%?)V*}>JCwaBvpM#iN z!OZoZm%HCzb}8S) zHxSy%)Q&^EFTUoi;&N7Txfh($ literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.scale-150.png b/packaging/UWP/assets/Square44x44Logo.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..8f5e6d9ebe11fd2ac2de029828f7e5c0041ea1b6 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|1|%PcFuVX#oCO|{#S9F5he4R}c>anM1_mZo zPZ!6KiaBp*Mduw>5O6J=di2ZcyZ?=T-8_3m^qQ-rpq#NmK=>~Ash1>f8yshzXHm&g z^zp}Q#yhNC3?hsgOaUwlI2;5WbRXFqo|$jmSMY=H`PSPv&OWl!3sLeCy7WzD@wWby zfEc~x&N=Hid>f*cSg01>H_kcH^V0N?(47P~56RO7(K_Pm#b4ezowB3z#PSJ?B`kHP z`A*Fg+}f~ohNtHHhch{UE}EGyy-Zt)Epeyvly9;TDysJ%md>3Jd{ossL^67nW zH9Z)2k)7ILMg{W0+u>l{yl~9(MX>FwWd?J3aTxZd&c+_DEj0e|A< z!ZWnx(qFD`dHuPgCc$V$SoBMqjk@;Bu7*ERZ&|-xz|Q@cozA1w#x*>*qM^W&+b*6y-_MBL)O;{{%K-|1onZ4n%lnlz1n^iq;L;#~7uY=$LN0&2^Z`~LEHu^8}``7F9@%!&{yf~Ngwm+B|VnD-G)daVO zO2JcHN!1GzeRR^maoC{5;L6a&aJsJh@BIWfAPW(_55%p7&Y5{G<9rKDMGT&-`m8(}kLzx2|90&} z>$+Xyg0qC)bIwlq^zf1U8yn3-$N!pd7fQ}dX_9s-<}XtG#l2B8Ul?7y z(fy25WwAn2@}nX(t@MR6ABa@GK0SXjV{__U^I7_h8rnI+@6I1A%z9a-f5?93g_V0U zKi_yZufkRO|GVE03!@r1|E+K7zB1zo=h1uG+kLfXaq%tfTs%2bRb^xE<}Uf=PhH)E zUCw)CdU~In^C0qBcI%c&cVa$d&#G8H@%3e=qK|jCM69hA+c_=j*a^6G7|dY$?LBF`J45A>WkY`4TN}%mp?F7Jba_3=*qM+)|_WF zf4CsxSfS~^=yT1b2WH#eE`N6LZQ0FVp$3;%yb%^Ts9JQsGl&J4AkJu7q<=H5SXOpq zPLpY<*h;WwhoGx(Dyx1~(%nX@tMUpi-MNq_FNcvtOWDdEuY!kv+9tJ$$?r!P-wp+k( r1IN4<$NSqBi7+Z31bPOOsAv3T#vd;*H@Os;IT$=${an^LB{Ts5`>u=! literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.scale-400.png b/packaging/UWP/assets/Square44x44Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7d9c85a5e9f3a9caf65d3f64f68340a141f9fe GIT binary patch literal 1805 zcmbW2X;c!37RNzSQd88@)WI!Ns!_}>6*4k+r^EqE3yvabxu9S+E~x|7WG#- zKWM(3wZII|A+>5eSR4E07zIc%=H=UkH!W1?RTBE^s-EfrYNC$X9bwWejwM#@6*BBA z%H(5~uUr*W={)S`6N3p**nA(OP`Wn*YP}RHH3s}e2cbE z;oV7%wskXCV0b4(^iNqvyNf*|TCtx}ff1Mv$ti0mhtc;ZD8PPvg6@Va4me-E>- zgqIuRCbD2X9mqV3EmG<scHBf0U zYk$vjuomMc-x|M;>b(eqI?gY+hh4tcEo#ED?yz=@zLW>vh%OH zJsq)V2~#;4r`MW1(OCj{yZ-mBW>LzU6U@NrwOKoX|I)|Eq9tsBLp>drp#6c&D~kV|Ha5vE7JNI{8!Y<^zQ+O}2^Jlu_N% zJ6Zk9eyzD>pBIL@`*Wn|snssHhxzUaopMC9w5+YXGsQ~uxsp433)RlRqzu*e2VV;L zHqP~o!+m#!XgF&zQmCPry5-2m1WCXnY!KP3-@SV{P6v#PjYs1THdh{d?}1^_&@g2? zWKmDV6;pe&Yz ze7a~XhsUlnd_CB*yfLl$wP6j!v$b&T9(S%D3EC9$sbTz6Zz3FTEASk(yLUu6?z(Y)sn5^Nvk4Vzby0!#0Rp2qUJ8~Pwz z^3AT$G~mw0mX}!VG@x&EUxBviOQGiBjRS?3oyy6NWM|JT<1>v;DF$MMno#~Gl2CA* z$1~8#chd-ErC;!JV~JQokj*qF1m#-&_2bbzTl@cgg|IqncGL~_#}J+gomTVwZ;zJ; zyq}1zcJ1Fu;ek!X806&91Jjhb5YFtWM_VM5q-tWB{P#ekLd_l7p;n%wsxyn?s~YFD zNLWQN@>zB*(97W9eM2=X_}6_cJqc@h(V@ExC`C{f^f0e^yXnjAnM}tzh*#7pE8Mcr ze{%m_@h`8fnWGYL-d2i}fVdwtQlgtVPRe(lcfIpQKt`pHRF=CQ(xP+n@$}8d8|ZUa z(>Tqj=k+5XPVY7$EK?k=xc)ncPRp~|wj<&HaX5l$3tqG;-&aDjQFFq6n$l}|EnLh8 zO0^5dZi?kv7~s^t8%|{v2_E2I6ke$cxmoJF>)N+6lXXy4)wNCk9k+Voe+He#x5anMpkS@1 zi(^Q|oUK8Qds%xL$1|>NupCi*Y zJ+fjJRyL1%URgFJ?5@;?9X9N4_S!#H#Nrh{?>+zC?8w>U8C=ChJX$}PtB$#{YQNjg yqVX=U`p8$#0}H-?sPLa|U%2p)>n)>-D0ZnP)lgltKrf&}7(8A5T-G@yGywq4iAg8` literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.targetsize-24.png b/packaging/UWP/assets/Square44x44Logo.targetsize-24.png new file mode 100644 index 0000000000000000000000000000000000000000..24711949132b88ecf7fdae78771a43f4215f90a1 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMpx{YQ z7srr_Id`YtbHOWyKV>Fb?bHy*>uC?<<6iGySi1eFH&^BGj&XOF=M90 z^8&N=3)k{HSo(E8nW9XFHHRVQefXNA1yW=dPhyQ1pMv2*X_jJ%T%sKi$C|NGD0!mzo- bDuJ0j!lwLy56d>7rx-k4{an^LB{Ts5c*Jrq literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.targetsize-256.png b/packaging/UWP/assets/Square44x44Logo.targetsize-256.png new file mode 100644 index 0000000000000000000000000000000000000000..e93cd58dd234b9f2ddeb41a6027fece29aa35ffa GIT binary patch literal 2884 zcmcImcTm$?7QVj(LX?ugqZ%RMAqp-Cs33@tfK)~BF{mJdk*3l_iH{N>KZ+oVkS7o6 zMFATEDjh_EBB)4z^eR=vkN{E>$i~^-nfKT3+u7Ma?tJ&ooVn+Gr_6U^Pgj4Jbg0NAHRcni$e>KO-CiGG8bVe3uCvaHp9syt(3rMmM zh!X$5gSH$z(IH^f_eU=K;L^rDDBqBYnS7kU1l_kjj0J}JpsHpNaB>M($ zX64X(3Rn@_T5?}+u8XcW_}w$r-hCiBih(VGEcDj)gh{i>_WMf0pQeb)y6gvfDBk*_ z>(6wm{^_;Y(UH-fk(*L)e5lOw!5xr?cx4{N=By=>A7}#~i#;eUW%4f6vyh7@F zaAhcMMnl77A1iQ$b@aHTCHIa)xS^-aytttnYH+1Is zmE&>I*>!zX3pTSfJu)^G{4tJa66H~=Ndtq5gx)1YU%d(NwBFoQdKx=OYB6Og>2PVcc{TikH)DkuXN1tU9A!tsDa-;dh=2 zF$U(C6JNq!%y44s_o@o*6Yt9j25RicmDUfu*BO3Q4P#keO-rhe7A`mxZ!{N6s2xW@ z?CAQ<#mP~d>6G8FkuEl0hhJBzj5HRcqT#Z)@KBU1eLv#WF*+Oz{y6AwOm{Joh%;J~ zdt0*6))Hbcq`+ElKBSavD)6i3Pr$1L-Z7~3T>&*(x2_w&G5kC(q%kAgS8oM;L%wNX zlF#;clJqyL^L4LB9gX8qlVv2 zi9<`e>3~Gd$Bi8ZpNU&OZTt6yhFzx5>q+lH)ih+tz-P8eXyReA?CU_M!0tFgcj6^g z=QKwg^8Ox>%-(C{aYA6s?rV7M^oD9rs5(l7d;6Ff$=V-!th%i6RdX!&9aqnfK29gy zngySZ7_B}f?&{m@b*4IB#!@q1D^op?cR5|&U>fxZA6T*3>#OmqEMTq5&|p1lQvb}C z-d`O{bP%0ZDDuwXi;i^xEzQBIVWV(ANjtw)t6e)0Vk156t6THKD-NcF+B>hrV2U#e z|7I!h(4FZZc6uUpGt&x1kRg(2Oya9+pO-AdW^eYBq)f;$zKAjW@aRxYoLvb-TaU@U ze55>pid7e33vs6sQ;YpAG;`BIU|Zw4%d@{6e&@~5n81BP-Kv>O5q;Kk0&tb)D{Ohg zqzC^IyFF|gO*-v_%K80vRxpUY9x(_Z~s(BYM8M_Se_)s^UaF7Nuz3y#d<#a>8x>-I zb7qNuF$9iUYg)5<2!XK%iY#NSsmfW2AP#HCKq6tEX0;F!(9NFiB2%$iQy5rP_vgR& zq0AT7SK)g{;w9Y>e#@G0eS#Esc*?x2LQyIed~#vCMmmcL<{{Ym4y2_TjP^1X;*T!x z4ymg~^mM60xCiq2+_|up`F-|(TobTDF*-jSfn^KL7;YfKOZTjTj zSj5$A^=21#ZdA|DwO?$Hi}Po-R+jtteiE7@4^Tu;PesHq3a-ZpKQqs% z0c*GrHr}wHR-WNTng50Mi2Hoy*K?gtU}q%0aV>_2$>?w(B|rfCqy|JysK@gzY-@ug zrTrs&137GMF%Q=M>pM@d3J=y5+a68ko5k?OJua7eS#~IMVDN?XpVSqWo(ee@GCLKM zHfMHCAV<6EJVv-V8+TK?_l_DG5aIxM^OxZ=w{`{PZ3JL}==xeGDz2OWV9kCIwN&Xy zy8=q@cdrVd-H=!-{dg?-_C293lf$4(ugE*=#>YvsQ~tUs-rrly`dWw`^AVwTDMWkP5bZ66$vW#YXLf7|S61PwjsSTJ%LBOQf`4N1*LNPcXVNfrq3oxjo^yv@5`g+s zy_2$ePKrOsf?b-r0gqO6_@w|BUP9=Zt24Dwj;gwhs9RSdP-k@8Z9DTob zRPaY}|CQccpwAM8CC`T1z;u~3uS*3l7y9|66YCn=)HUv71yB2C?Fgpt4R~JL}=FjhDu087~9mBCetV^W)49kbpw`Nx` zEPCzmPC?hlfWi5oaW2#GZ%m$v`ss36=gwwmF)$o_=g5>KuR86g><(E5*4GIW8tuJyod8va_85-|zNM<~@PW%D0-d(@eS*v8-fL>Hq)$ literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square44x44Logo.targetsize-48.png b/packaging/UWP/assets/Square44x44Logo.targetsize-48.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc66b30bd9ce3cc6692a9a88bdb5be571b5ca18 GIT binary patch literal 436 zcmV;l0ZaagP)pGW=TXrRCt{2m^&F83abhHr!4nc5Zm+itfeUAOWzk#~H?LxKv6t`%$7Czz_f+44s_Rxu8zstNlPT zq^6S^AjF?f)NR&yW?i-~M{EF?@paY-!xeR?*q-A;$URW(D~1*qLI&_7<0WG611a}^ zTO2R&bHMGF&*U=-4+UacILq^YA81rcO=)yZuHLBOf!Y!Scuy@x@{q8O*PjP2l}pS5 z37gVbg=(umfYY}$k|rRm+@4qjIv#(}x~YkKe3+ za4LYWp@?A$^8y)$rwkhG4wek37_kVgIK_F8wesEG&+gNEPRqnR&b{*FNz$bVk&s#5 zCM?HxPWbyy?e&#SRfd}%naZEL${Kw!^xW*!X`5Wr0>yWon)r09b4Z-urZYZ)lY?LB zX6kfK_+0d7>eIXb?4>4XYmLpX7;brKgB&`#F0`2;3pFd8Y6321H$Hh}x?p+#Rmu&bZsNa;+<9RIegzhv3?T1HpYAAQOmuBW{zSbqb z^tngMvL}q&nAY{So_+XUO55?-%wVotkL1Lft~|||m3!RZjoUHpy``;@ntSww*z<)y zvTJsxrAsVa82wN*@$k>tv6V+oM&#~MetvqV!4zhLsh4lDUfDPO+pJ?Vg_-h1e?R&t zSH*X$w=~(hZt!rjI_!yWd7(8A5T-G@yGywpOGy@p` literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square71x71Logo.scale-125.png b/packaging/UWP/assets/Square71x71Logo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..076c070376a051998b5821aa8fdcc2f10b62e5a7 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^ks!>$1|&ndJJtg!&H|6fVg?4j!ywFfJby(B0|Qg6 zr;B4q#hkaZ63Y%L2(Wq1|Ni1+)y{isY(0WE@_QR9n7w;r_xD-2v%sSrdfi_pv{({BC-B&{@D;94oPt@8e8gr}b#oFJ#_peW%{-yHtl$YTp z5--yxxie*7RPL*_yR>J;oqXTMCt@+hn;c)QSZu+wZj$#F>63iIR~1)vTWx(K5_c?e zmRb14v`L%S#Kq|;ZU6PA=bcs4=~AzAi+q(Uy_4=v`@b$VZnat3a^LBeJM#{wD!*JL zJ~j8sJwx++*Dup*Sl0OEea@>spE3E8UW1<)eB@#}@@l8o&h^Ljl_|J1y=<4Ldy`)|hMQZ>iLJq<+9KAZR_{kDupL8HJ~ zy_(E-E>EtMKffKPZtr*a@do2}s&|Y9;*0cEidXc%V^!MsgdH5<2V6g$@2boFdw+WP z^wed05+-dARyi*gaqY?T4dQD{7zN@#X gpu+4y8galpTWITytJ<=CftT-05Jn!s->VfNbIvPj=*?pgQ^F4r8G zLTk3g+~hrw`E$#?_S4sQF8}=a`h#7|o@bfQI9Rpd)Khlz$p@!>;QS`j@-=@ihwv?? z;`ys5PMuxy=hW>FpBQ(|@?O*IZ}(|e^2Z*DRK1PYrdC)V*jfaw(FTy_uRRyyx}e(~~;+xJY_^XrsJ`QkGv<`L4OlBu>;d~LhUPTgsknXuOI z)WwjboLG0+nq@oKil_dR?I|+3df?LMmdii4{JXv&`C0_$vl1@*bLaCbZ}paIyZxSN zEEOi*LLmC z&pN()=Cs(wU(T$~`yBNC{Mi$%*RHKA_`B@tvajd%8?CSS^{Y7UKup5a+66l+vh6-I zJ>xt5Pxt0I<{8p!`ePS{Q@6Z`68 zukSZIy?Bnc&Q(8n(&*}6dfV6RsKJNz4SjWnTY2urCR+X~choCxU3!a?d&&j}7@@6m qdjAE5CtTiJg+ZHK7*&LpUXO@geCwvh;|_W literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square71x71Logo.scale-200.png b/packaging/UWP/assets/Square71x71Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..3805d16b095425c7f06747bbef559de74fe5d63a GIT binary patch literal 1057 zcmeAS@N?(olHy`uVBq!ia0vp^eIU%i1|*;VHQ)eJoCO|{#S9F5he4R}c>anM1_tKK zo-U3d6?5L+Nt`se>2fNUr#+CvFMHvt3GgWFVP8;byE&gnCHa*AN_0~3x+eIrjJiO9$ zGG2LJaVyVqQQv(&a{lM5z2*zVSN;F=G2(yi-6f}r4|7QRtv8iZo%QFhwRv)H`mDH& zFP!3iRz-769>s*4?v1c{cqow7;#p*UyLy-?gGlz~;}D zRC&MCj)GgytywqwQpMSz9R*XE@6P*fW4Y)Whw+ma!g_O-n9s9m(7j$VuY_?U&yugR zYHbt`d&(W%{O-ps$B*~8o2{RuhpoN-<}s(VUl3bBpU~FkM@2KET-aqyzWc;p``E&} z+(zx?-J5GOUmOYkdaba3DbQzEl2-Y;Hm-ZA@{{B9^G`pf+2)_tnltNDgu3{P=r5-8 z)=&N^vUL;h@}5PezhdO}-@CVL{_(try$jE+$vM1or}?j#dH)N47M59bmg-opF4z`x z-|~mapQjP6!Mn(9mdYb`wA_w}67l{;PVZ}z$zyH^_{+KNphO#Bx2u}x4PgIf8qJ>fuARrAK#?>QDJ+NNn~rY1t?9uoEdzr zGWYbRW@VH#w&t+p$7Ln$-SwTN7BBxq*#EA5_itwU&gVxT&benJGp7}pCguwf5E0RTb@J90`uUc{aY5u%5W{-c^8=H89ZJ6T-G@yGywo1 CSlO5W literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Square71x71Logo.scale-400.png b/packaging/UWP/assets/Square71x71Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..020b9307e8410217786c94a7dd6638029291355b GIT binary patch literal 2488 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/StoreLogo.scale-125.png b/packaging/UWP/assets/StoreLogo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..24dcfe0550806d47b462a14a825f7ca2885965d1 GIT binary patch literal 710 zcmV;%0y+JOP)j{00009a7bBm000id z000id0mpBsWB>pHcu7P-RCt{2T3u4aAPlBXUw!mV58*ZR9_yVvh}ZBE-ay}xc4Q}} z352x3?uKt>XJ;ut`Mv}QWoHNAz4H!Xn%soT8e*}h+W7N%6oPmx?QYdO_Z)|JTLGdCyF{6#WI9H`GG-JY{yqeAz6!D=2vFkvg9M8LIPkq2#pG8@ z`bEHke&n&&8wi2tJB|YN_$tpsKrt!`k(%#n0cPnOj>J;+D+!VEG+Yde$6GzGUBpst z4&EK$e8*!#0lvcLN!sZ->^T7_qA&_#nP&f207d~-{^$y#;NP5=dW!OD!ySN|2AnV~ z$n+L_n?F=S-cgeV`822Zbd0K=?io`evU)qln?K(Go0epz)GE za2?zSha~yCJNM(6p(&#zgTgu*asJxDfTL4wfh|RIK8AkEXpN_oeSj~%pOgSu@`3Ps zAbeVXJm|gE3n>Az`&Q{Al)kH7-( z2b&us9svd5b9k!Q^#aWmQF)VkAcD$_ s=c(&=Gvp}@@>Vg(Tg4!60n~NXFQP62R@Z|N;{X5v07*qoM6N<$g3&8SoB#j- literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/StoreLogo.scale-150.png b/packaging/UWP/assets/StoreLogo.scale-150.png new file mode 100644 index 0000000000000000000000000000000000000000..db730a3191d925df60a8772eeff17a56fb513414 GIT binary patch literal 809 zcmeAS@N?(olHy`uVBq!ia0vp^-XP4u1|%)~s$Kyp&H|6fVg?4j!ywFfJby(B0|V1- zPZ!6KiaBp*-!8muAmGZ#|NoNPsSUderu#|0bjnrPzs%L`fy3;hj~}Ua>`OnUJd?%o zLxwnuL#AOk?&@s|pI^)nK&e!+>}z9m;UvOT;aj31oHa%|ss{_6AP zsl}^Od~ZDb9e8byR-_THyo&#_IP=7#o3{Krb>GY*X2tqRe`gr-{@S!O+}+kgMrrA; z&+W>mV|P@a6}(#+@VflnJ5#aLqq#RypSn#i+o;R7viHIwoo)Qn%3Q*{W{7zP-D7!_ zG`CudY4V+=inG)GF95Tev3|kU!}Cp@5foM^H;@8 zTN9wAWTf`I|76FyPe=EE?znZ*^SDu@aqk?dNkY?fUwa&#+*Nd>W#y)(#qTC}7qzt9 z)%~|r>&3+lkr!K1mp&{PemddMq)q!)Yqaa@*xsGE_(RvpO|mzhubnEt@tUsflihsh zxl$Qz{KEX^{ivKhJ6yJS?nG9HNQNnJqV@iHEm`?~=|j=cRxR=M(w{#qd#l;8=2qvC zH#e@=U;pvHp*NEQsH1;!tDm=to;1` zqMzF|r%#AxpziNe283V)^ g&zopr0GpO^Z2$lO literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/StoreLogo.scale-200.png b/packaging/UWP/assets/StoreLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f30bf41752d3834b15b618c95177c85627784c GIT binary patch literal 1190 zcmV;X1X=ruP)pJSV=@dRCt{2oIjG&FcgRFkdhhtE$HABP{42ixWH1u3>TuHvza80W!d`j^w*nx6QJvwZfbkmHf<;kkhAwU zghcqCuUw3Kji#>SOvs!Jf8Ui$8R)Os%ypcEq{wj7_)>C?6QZE-{LE({$4aWK zQC7`Z$_sjYsg(Z-^$5|DvOtHyufjf8&i_b}Dr@DvFF#tUqAtXZ4to8O8s*p8c~oFA zDXK#Js){1znzmg#@2y2nY=G!jVO6@nDnh8x@0j~_|DL~6Ro-J$E%ri#iXcKS($QgyY7E_>X6S4}UQ=>qTHf1}3} zZ-3QuJ_?aUiC>7rdm3fm(d%8xu@;^m;|vg=I-kY%%jOgzIZ|SUN7dN9;Wf$mPWwLM z9Mhl_?tUugd{$+pNO2$HVKn;~VISP0ewI_Tx@avKh4@a}$LVRn(RH zer~mmK~#-oMXHBLq( zB=&9RL<@~!KF}EDt>hdQMtz!|EkrVskBn*F(9@cQ^w@1fLTInGZyB)=ZX-Pln%3^s|d~E-$BGbLo#4$}g7Jp=oYH)77zb5|Kr#tk_A%3Tf_` zQ|YuN_E07dLgx@mmwRnJT1&X&TS^%PGa$mDxa8?;9Vzk2h=#ROC}^Gxeb8~J*K2234siKd?{=pkWmNzieYH_ zT6y8AHP&Kb!muv{3shi9AjB9DVhji|hEPb~`eFJ+6GTXL;$1lT zZ=ER5&RQGB)xJJNNM(}#r7h>+lJsBnqTwJ1^e+G9~*dt#qE+1o(K510YdHNCL(8GTDHBI0$u4i5Epn6_Ogl zi|P(Fl5{(KuT+fTjx-Q$Cn&fA&PLJVDu2x855{Bt1?K{fBFA)!@xtNIhRanu3H6ax zAN>H%`9kDtrw=&3+ka3qxLc!|!4Z`d@_Rq7=H8{ESnHcgq5$_s$yF2JK zWN^h==hC;aW1rQ+1igcIpv4HQHuns@fCF|d=e zc)G|~!70pJUvYF`b zU8Gk^24fjatX$+BpS%?;HZE?O6DEc#L{{+B8HC)_dv;>Yq(*b%MoWT<+g#4VkL$ZK zAI9G{?y}T(l`bbVj>IDdkcNY#o*UcfV>5$A;m^C)sgUL@$gE zC4HZk>Iv4522s8(B+8V7|iOHh#czfj?5&6EkvIM%C zsX-CXS*E+6T1+&TG)g@)fUBo;y1P;kt_jR0TdBD=M!fnVL*^cOcQeq;nCQ;#wF_0z zt!0c$W&J*e(&V*qoJ5iOr}n^3PMLjNz5l*A(3I{Q|Cz$vqK9`{FVQy^27J_KN52vA z-3A-as~vf197QTeNwi0iKDRP1N*h>CdJhV+kbYvB)GlqXd)f7(f~RXu zz6(2AZ&trC%UvH*x4bs|++%zf$C64=@iWo?@B)Layfj(T8&8XMfm3=)UCX0MVp?&^ zGj8lFbsU^MMh$ZEtnkwM1iLXW0*l^zL1Jt3i#EQ}^m2NhzVx*R{W=VZUq{FshX8W3 zR|bz%E&M;UXbU9+By**CZD?C-05U zCjKnU?<>p6{>yVQKL5tAt zjX#5dcA5bXaSnxr{o#s}qZtWI#{R6_Y}rhsy|xRpUN1x)xpcS0%W5^st&pzV=hZ#J zs98ygX7{!3;;1n6Q9rR%VGm;|wf-hrtY0Wp8Y40or}#K_koL5-=MrdSuDF8pioIh^ z)W8jkw)Ds5o}77WlW(8PY=>4;?~~=tI@V(sXgm;Ej~oGC1VHjE z(4y+Tix`;Z_PB6|E#c`Bgcud61@fzW(&c2;M-|;7V-{s9>KOL%f(v?fSyvQ_(h4wj z{A3}EwB|%E+Dp;;_uvmDq%uZGT6l4J9_bqHouf(zw~#5^!S7f>`14E>>3|q;3V*f@ ztPB$G;O>hvby#7x5CC#{LKfszez5H4)PwtF4xQjRCm{~ChbXqCyw#TBJRRvpE8C~! zJEI~D1IJ!?>d&FvmsG!4(|i<7Y1`xeFnZ_Mkqi|65X^xt zx4elJH%-iRXa`qgp?p;%^WY5*rg};Ji>}G#MW6b*ZD!6dJud(^Yifn^`Q1nAbkeY{ zA^|{^{tUwpPlxrHLb>*Fb06U4wG$VI!u}GFSK+fY>y`Pm(ya3)Ul=p#4b`2A5~K^& zGJ}%mTYf<${%3cnXY$uNq$D3!R1QJ~>tUqr)AU=uCPs;wpxR`UfWUcl8>5Nu&EHD@ zE|Ngt~#~)Zt)qBy{TT^V^REUDovMq2>jO|{u}3i?0Cvg*ry&p2)dK3 zfAY7#fe9C8f((4#;e|OW)AJF>ZAL$xs9n=ug#iUDEn7{(*6_kq8BB0}oqaAG5mr=Y zb82#a#BEfe_qQ=;OS@5K%f0aDjq^r8yV0-bWXEp(A0YoSl7Hj2XL~VyHFl=4WSU_p onxpk+H-eiFo;^`0KRLOpu8P$NgA0`J{cO1`&f1z$Og$6-02Xo`i~s-t literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Wide310x150Logo.scale-100.png b/packaging/UWP/assets/Wide310x150Logo.scale-100.png new file mode 100644 index 0000000000000000000000000000000000000000..82e3a2e62640438a52f4ccd25175ada95efa4f63 GIT binary patch literal 1043 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=r*W_W$&l+yJ_9Mv0*}aI1_r*vAk26?e?r^ou9!Uh(BU6>v>RY@WMk&gaPzIUlaeHnzmG zH5llh|Hs5oEo`RHw}G*+g||aF$3Z5M`4NY-fcuRGi$iQj1P6=MJa8ogWtJNZ#+5{+tTa%%KMtEv-y6W(#%spuAVpJ?Dlu(PVD8&SKeAB zwD2C=>XzQknqJXqHqr0*CSFQ-mu`9HgJGImevVR3%$7x4x8%xguuTtX-+ubSHM7FS z-5WmoonNuK?mVL~*H@mG7F(LxeSt2Ntejdf^?GWHnf%PVl{as$mRl*g_M+>J9jjc{ zh;D!Ro_Sis4xUuu#N^4>Y`3%b++*qWZRvH*HeQzPfNmdF!_IrE@al|IXZ6?E8=B@O$~g zA6{?EKVPnpv*wpU;s$|*YYSgl+y8}hD4jo&xUcfX%&`fM^bo#ZQ+;Wfo9xn?{50d|| zM=O59hQgkuMpHk<-sUeCKus@;Pg{Ij_vgm*Xa5(UcNc@DEQ@1Xzh+!pU8s=wSVHW@ zCl^>cyO_Dl?M^$!qFFw6j?^$>M|E<@2H&=f4cz5EW5^B;sW@uA+K$sJhP+wf$ z+4S}y_g$Vp8EDo+Q}PR=KC!S5rGqe4W9GZ(`WKzgx6Wo?;Rwv-44$rjF6*2Ung9!U BzkdJ# literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Wide310x150Logo.scale-125.png b/packaging/UWP/assets/Wide310x150Logo.scale-125.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3315fc9490b0cf8c8897785855536276121868 GIT binary patch literal 1320 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 literal 0 HcmV?d00001 diff --git a/packaging/UWP/assets/Wide310x150Logo.scale-400.png b/packaging/UWP/assets/Wide310x150Logo.scale-400.png new file mode 100644 index 0000000000000000000000000000000000000000..24263c2446710eceb49cea80fca63476c0be1f9c GIT binary patch literal 6410 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 literal 0 HcmV?d00001