Merge remote-tracking branch 'upstream/master'
25
.github/workflows/ci.yml
vendored
@ -34,16 +34,17 @@ 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: 'Vita', os: 'ubuntu-latest', dx5: false, config: false, vita: true, werror: true, clang-tidy: false, cmake-args: '--preset vita'}
|
||||
- { 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}
|
||||
- { name: 'Vita', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: false, vita: true, werror: true, clang-tidy: false, cmake-args: '--preset vita'}
|
||||
steps:
|
||||
- name: Setup vcvars
|
||||
if: ${{ !!matrix.msvc }}
|
||||
@ -108,7 +109,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 }} \
|
||||
@ -119,7 +120,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 && !matrix.vita }}
|
||||
|
||||
149
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;NOT VITA" OFF)
|
||||
cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN;NOT NINTENDO_3DS;NOT WINDOWS_STORE;NOT VITA" 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")
|
||||
@ -63,9 +67,17 @@ 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"
|
||||
@ -73,42 +85,43 @@ if (DOWNLOAD_DEPENDENCIES)
|
||||
UPDATE_DISCONNECTED TRUE
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
endif()
|
||||
|
||||
block()
|
||||
if(VITA)
|
||||
set(SDL_RENDER OFF)
|
||||
set(SDL_GPU OFF)
|
||||
endif()
|
||||
FetchContent_MakeAvailable(SDL3)
|
||||
endblock()
|
||||
block()
|
||||
if(VITA)
|
||||
set(SDL_RENDER OFF)
|
||||
set(SDL_GPU OFF)
|
||||
endif()
|
||||
FetchContent_MakeAvailable(SDL3)
|
||||
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()
|
||||
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)
|
||||
@ -126,26 +139,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)
|
||||
@ -551,6 +564,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(VITA)
|
||||
target_sources(isle PRIVATE
|
||||
ISLE/vita/config.cpp
|
||||
@ -637,6 +655,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")
|
||||
@ -696,14 +720,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)
|
||||
@ -751,6 +781,15 @@ if(NINTENDO_3DS)
|
||||
ctr_create_3dsx(isle SMDH isle.smdh)
|
||||
install(FILES "$<TARGET_FILE_DIR:isle>/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(VITA)
|
||||
include("${VITASDK}/share/vita.cmake" REQUIRED)
|
||||
|
||||
|
||||
@ -16,7 +16,4 @@ void N3DS_SetupDefaultConfigOverrides(dictionary* p_dictionary)
|
||||
// TODO: Save path: can we use libctru FS save data functions? Would be neat, especially for CIA install
|
||||
// Extra / at the end causes some issues
|
||||
iniparser_set(p_dictionary, "isle:savepath", "sdmc:/3ds/isle");
|
||||
|
||||
// Use e_noAnimation/cut transition
|
||||
iniparser_set(p_dictionary, "isle:Transition Type", "7");
|
||||
}
|
||||
|
||||
@ -58,6 +58,10 @@
|
||||
#include "3ds/config.h"
|
||||
#endif
|
||||
|
||||
#ifdef WINDOWS_STORE
|
||||
#include "xbox_one_series/config.h"
|
||||
#endif
|
||||
|
||||
#ifdef __vita__
|
||||
#include "vita/config.h"
|
||||
#include "vita/messagebox.h"
|
||||
@ -581,7 +585,7 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
||||
g_lastJoystickMouseY = ((MxFloat) axisValue) / SDL_JOYSTICK_AXIS_MAX * g_isle->GetCursorSensitivity();
|
||||
}
|
||||
else if (event->gaxis.axis == SDL_GAMEPAD_AXIS_RIGHT_TRIGGER) {
|
||||
if (axisValue != 0) {
|
||||
if (axisValue != 0 && !g_mousedown) {
|
||||
g_mousedown = TRUE;
|
||||
|
||||
if (InputManager()) {
|
||||
@ -594,7 +598,7 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
|
||||
);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (axisValue == 0 && g_mousedown) {
|
||||
g_mousedown = FALSE;
|
||||
|
||||
if (InputManager()) {
|
||||
@ -828,7 +832,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__) && !defined(__vita__)
|
||||
#if defined(MINIWIN) && !defined(__3DS__) && !defined(WINDOWS_STORE) && !defined(__vita__)
|
||||
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);
|
||||
@ -1010,6 +1014,9 @@ bool IsleApp::LoadConfig()
|
||||
#ifdef __3DS__
|
||||
N3DS_SetupDefaultConfigOverrides(dict);
|
||||
#endif
|
||||
#ifdef WINDOWS_STORE
|
||||
XBONE_SetupDefaultConfigOverrides(dict);
|
||||
#endif
|
||||
#ifdef __vita__
|
||||
VITA_SetupDefaultConfigOverrides(dict);
|
||||
#endif
|
||||
|
||||
18
ISLE/xbox_one_series/config.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <SDL3/SDL_log.h>
|
||||
#include <iniparser.h>
|
||||
|
||||
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");
|
||||
}
|
||||
8
ISLE/xbox_one_series/config.h
Normal file
@ -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
|
||||
@ -66,27 +66,33 @@ class LegoControlManager : public MxCore {
|
||||
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
|
||||
}
|
||||
|
||||
void FUN_10028df0(MxPresenterList* p_presenterList);
|
||||
void SetPresenterList(MxPresenterList* p_presenterList);
|
||||
void Register(MxCore* p_listener);
|
||||
void Unregister(MxCore* p_listener);
|
||||
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||
void FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS16 p_unk0x4e);
|
||||
MxControlPresenter* FUN_100294e0(MxS32 p_x, MxS32 p_y);
|
||||
MxBool FUN_10029630();
|
||||
MxBool FUN_10029750();
|
||||
void FUN_100292e0();
|
||||
MxBool HandleButtonDown(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||
void UpdateEnabledChild(MxU32 p_objectId, const char* p_atom, MxS16 p_enabledChild);
|
||||
MxControlPresenter* GetControlAt(MxS32 p_x, MxS32 p_y);
|
||||
MxBool HandleButtonDown();
|
||||
MxBool HandleButtonUp();
|
||||
void Notify();
|
||||
|
||||
undefined4 GetUnknown0x0c() { return m_unk0x0c; }
|
||||
undefined GetUnknown0x10() { return m_unk0x10; }
|
||||
MxU32 HandleUpNextTickle() { return m_handleUpNextTickle; }
|
||||
MxBool IsSecondButtonDown() { return m_secondButtonDown; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028d40
|
||||
// LegoControlManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxBool m_unk0x10; // 0x10
|
||||
MxPresenter* m_unk0x14; // 0x14
|
||||
enum {
|
||||
e_idle = 0,
|
||||
e_waitNextTickle = 1,
|
||||
e_tickled = 2,
|
||||
};
|
||||
|
||||
MxU32 m_buttonDownState; // 0x08
|
||||
MxU32 m_handleUpNextTickle; // 0x0c
|
||||
MxBool m_secondButtonDown; // 0x10
|
||||
MxPresenter* m_handledPresenter; // 0x14
|
||||
LegoControlManagerNotificationParam m_event; // 0x18
|
||||
MxPresenterList* m_presenterList; // 0x44
|
||||
LegoNotifyList m_notifyList; // 0x48
|
||||
|
||||
@ -22,8 +22,8 @@ class LegoCameraController;
|
||||
class LegoControlManager;
|
||||
class LegoWorld;
|
||||
|
||||
extern MxS32 g_unk0x100f31b0;
|
||||
extern const char* g_unk0x100f31b4;
|
||||
extern MxS32 g_clickedObjectId;
|
||||
extern const char* g_clickedAtom;
|
||||
|
||||
// VTABLE: LEGO1 0x100d87b8
|
||||
// class MxCollection<LegoEventNotificationParam>
|
||||
|
||||
@ -47,7 +47,7 @@ class LegoModelPresenter : public MxVideoPresenter {
|
||||
void ReadyTickle() override; // vtable+0x18
|
||||
void ParseExtra() override; // vtable+0x30
|
||||
|
||||
MxResult FUN_1007ff70(MxDSChunk& p_chunk, LegoEntity* p_entity, MxBool p_roiVisible, LegoWorld* p_world);
|
||||
MxResult CreateROI(MxDSChunk& p_chunk, LegoEntity* p_entity, MxBool p_roiVisible, LegoWorld* p_world);
|
||||
|
||||
void Reset()
|
||||
{
|
||||
|
||||
@ -17,10 +17,10 @@ DECOMP_SIZE_ASSERT(LegoEventNotificationParam, 0x20)
|
||||
LegoControlManager::LegoControlManager()
|
||||
{
|
||||
m_presenterList = NULL;
|
||||
m_unk0x08 = 0;
|
||||
m_unk0x0c = 0;
|
||||
m_unk0x10 = FALSE;
|
||||
m_unk0x14 = NULL;
|
||||
m_buttonDownState = e_idle;
|
||||
m_handleUpNextTickle = 0;
|
||||
m_secondButtonDown = FALSE;
|
||||
m_handledPresenter = NULL;
|
||||
TickleManager()->RegisterClient(this, 10);
|
||||
}
|
||||
|
||||
@ -31,11 +31,11 @@ LegoControlManager::~LegoControlManager()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10028df0
|
||||
void LegoControlManager::FUN_10028df0(MxPresenterList* p_presenterList)
|
||||
void LegoControlManager::SetPresenterList(MxPresenterList* p_presenterList)
|
||||
{
|
||||
m_presenterList = p_presenterList;
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10028e10
|
||||
@ -56,10 +56,10 @@ void LegoControlManager::Unregister(MxCore* p_listener)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10029210
|
||||
MxBool LegoControlManager::FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter)
|
||||
MxBool LegoControlManager::HandleButtonDown(LegoEventNotificationParam& p_param, MxPresenter* p_presenter)
|
||||
{
|
||||
if (m_presenterList != NULL && m_presenterList->GetNumElements() != 0) {
|
||||
m_unk0x14 = p_presenter;
|
||||
m_handledPresenter = p_presenter;
|
||||
|
||||
if (p_param.GetNotification() == c_notificationButtonUp ||
|
||||
p_param.GetNotification() == c_notificationButtonDown) {
|
||||
@ -71,28 +71,28 @@ MxBool LegoControlManager::FUN_10029210(LegoEventNotificationParam& p_param, MxP
|
||||
m_event.SetKey(p_param.GetKey());
|
||||
|
||||
if (p_param.GetNotification() == c_notificationButtonUp) {
|
||||
if (m_unk0x10 == TRUE) {
|
||||
m_unk0x10 = FALSE;
|
||||
if (m_secondButtonDown == TRUE) {
|
||||
m_secondButtonDown = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (g_unk0x100f31b0 != -1 && g_unk0x100f31b4 != NULL) {
|
||||
if (m_unk0x08 == 2) {
|
||||
return FUN_10029750();
|
||||
if (g_clickedObjectId != -1 && g_clickedAtom != NULL) {
|
||||
if (m_buttonDownState == e_tickled) {
|
||||
return HandleButtonUp();
|
||||
}
|
||||
else {
|
||||
m_unk0x0c = 1;
|
||||
m_handleUpNextTickle = 1;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (p_param.GetNotification() == c_notificationButtonDown) {
|
||||
if (m_unk0x0c == 1) {
|
||||
m_unk0x10 = TRUE;
|
||||
if (m_handleUpNextTickle == 1) {
|
||||
m_secondButtonDown = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
return FUN_10029630();
|
||||
return HandleButtonDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -100,15 +100,15 @@ MxBool LegoControlManager::FUN_10029210(LegoEventNotificationParam& p_param, MxP
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100292e0
|
||||
void LegoControlManager::FUN_100292e0()
|
||||
void LegoControlManager::Notify()
|
||||
{
|
||||
LegoNotifyListCursor cursor(&m_notifyList);
|
||||
MxCore* target;
|
||||
@ -121,7 +121,7 @@ void LegoControlManager::FUN_100292e0()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100293c0
|
||||
void LegoControlManager::FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS16 p_unk0x4e)
|
||||
void LegoControlManager::UpdateEnabledChild(MxU32 p_objectId, const char* p_atom, MxS16 p_enabledChild)
|
||||
{
|
||||
if (m_presenterList) {
|
||||
MxPresenterListCursor cursor(m_presenterList);
|
||||
@ -131,11 +131,11 @@ void LegoControlManager::FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS1
|
||||
MxDSAction* action = control->GetAction();
|
||||
|
||||
if (action->GetObjectId() == p_objectId && action->GetAtomId().GetInternal() == p_atom) {
|
||||
((MxControlPresenter*) control)->UpdateEnabledChild(p_unk0x4e);
|
||||
((MxControlPresenter*) control)->UpdateEnabledChild(p_enabledChild);
|
||||
|
||||
if (((MxControlPresenter*) control)->GetEnabledChild() == 0) {
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -145,7 +145,7 @@ void LegoControlManager::FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS1
|
||||
|
||||
// FUNCTION: LEGO1 0x100294e0
|
||||
// FUNCTION: BETA10 0x1007c92f
|
||||
MxControlPresenter* LegoControlManager::FUN_100294e0(MxS32 p_x, MxS32 p_y)
|
||||
MxControlPresenter* LegoControlManager::GetControlAt(MxS32 p_x, MxS32 p_y)
|
||||
{
|
||||
if (m_presenterList) {
|
||||
MxPresenterListCursor cursor(m_presenterList);
|
||||
@ -167,29 +167,29 @@ MxControlPresenter* LegoControlManager::FUN_100294e0(MxS32 p_x, MxS32 p_y)
|
||||
// FUNCTION: LEGO1 0x10029600
|
||||
MxResult LegoControlManager::Tickle()
|
||||
{
|
||||
if (m_unk0x08 == 2 && m_unk0x0c == 1) {
|
||||
if (m_buttonDownState == e_tickled && m_handleUpNextTickle == 1) {
|
||||
m_event.SetNotification(c_notificationButtonUp);
|
||||
FUN_10029750();
|
||||
HandleButtonUp();
|
||||
return 0;
|
||||
}
|
||||
else if (m_unk0x08 == 1) {
|
||||
m_unk0x08 = 2;
|
||||
else if (m_buttonDownState == e_waitNextTickle) {
|
||||
m_buttonDownState = e_tickled;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10029630
|
||||
MxBool LegoControlManager::FUN_10029630()
|
||||
MxBool LegoControlManager::HandleButtonDown()
|
||||
{
|
||||
MxPresenterListCursor cursor(m_presenterList);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (cursor.Next(presenter)) {
|
||||
if (((MxControlPresenter*) presenter)->Notify(&m_event, m_unk0x14)) {
|
||||
g_unk0x100f31b0 = m_event.m_clickedObjectId;
|
||||
g_unk0x100f31b4 = m_event.GetClickedAtom();
|
||||
FUN_100292e0();
|
||||
m_unk0x08 = 1;
|
||||
if (((MxControlPresenter*) presenter)->Notify(&m_event, m_handledPresenter)) {
|
||||
g_clickedObjectId = m_event.m_clickedObjectId;
|
||||
g_clickedAtom = m_event.GetClickedAtom();
|
||||
Notify();
|
||||
m_buttonDownState = e_waitNextTickle;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@ -198,29 +198,29 @@ MxBool LegoControlManager::FUN_10029630()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10029750
|
||||
MxBool LegoControlManager::FUN_10029750()
|
||||
MxBool LegoControlManager::HandleButtonUp()
|
||||
{
|
||||
MxPresenterListCursor cursor(m_presenterList);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (cursor.Next(presenter)) {
|
||||
if (presenter->GetAction() && presenter->GetAction()->GetObjectId() == g_unk0x100f31b0 &&
|
||||
presenter->GetAction()->GetAtomId().GetInternal() == g_unk0x100f31b4) {
|
||||
if (((MxControlPresenter*) presenter)->Notify(&m_event, m_unk0x14)) {
|
||||
FUN_100292e0();
|
||||
if (presenter->GetAction() && presenter->GetAction()->GetObjectId() == g_clickedObjectId &&
|
||||
presenter->GetAction()->GetAtomId().GetInternal() == g_clickedAtom) {
|
||||
if (((MxControlPresenter*) presenter)->Notify(&m_event, m_handledPresenter)) {
|
||||
Notify();
|
||||
}
|
||||
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
|
||||
m_unk0x08 = 0;
|
||||
m_unk0x0c = 0;
|
||||
m_buttonDownState = e_idle;
|
||||
m_handleUpNextTickle = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||
}
|
||||
|
||||
SetCurrentWorld(this);
|
||||
ControlManager()->FUN_10028df0(&m_controlPresenters);
|
||||
ControlManager()->SetPresenterList(&m_controlPresenters);
|
||||
}
|
||||
|
||||
SetIsWorldActive(TRUE);
|
||||
@ -98,7 +98,7 @@ void LegoWorld::Destroy(MxBool p_fromDestructor)
|
||||
m_destroyed = TRUE;
|
||||
|
||||
if (CurrentWorld() == this) {
|
||||
ControlManager()->FUN_10028df0(NULL);
|
||||
ControlManager()->SetPresenterList(NULL);
|
||||
SetCurrentWorld(NULL);
|
||||
}
|
||||
|
||||
@ -724,7 +724,7 @@ void LegoWorld::Enable(MxBool p_enable)
|
||||
}
|
||||
|
||||
SetCurrentWorld(this);
|
||||
ControlManager()->FUN_10028df0(&m_controlPresenters);
|
||||
ControlManager()->SetPresenterList(&m_controlPresenters);
|
||||
InputManager()->SetCamera(m_cameraController);
|
||||
|
||||
if (m_cameraController) {
|
||||
@ -781,7 +781,7 @@ void LegoWorld::Enable(MxBool p_enable)
|
||||
}
|
||||
|
||||
if (CurrentWorld() && CurrentWorld() == this) {
|
||||
ControlManager()->FUN_10028df0(NULL);
|
||||
ControlManager()->SetPresenterList(NULL);
|
||||
Lego()->SetCurrentWorld(NULL);
|
||||
}
|
||||
|
||||
|
||||
@ -393,7 +393,7 @@ MxResult LegoWorldPresenter::LoadWorldModel(ModelDbModel& p_model, SDL_IOStream*
|
||||
}
|
||||
|
||||
modelPresenter.SetAction(&action);
|
||||
modelPresenter.FUN_1007ff70(chunk, createdEntity, p_model.m_visible, p_world);
|
||||
modelPresenter.CreateROI(chunk, createdEntity, p_model.m_visible, p_world);
|
||||
delete[] buff;
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
@ -17,10 +17,10 @@ DECOMP_SIZE_ASSERT(LegoNotifyListCursor, 0x10)
|
||||
DECOMP_SIZE_ASSERT(LegoEventQueue, 0x18)
|
||||
|
||||
// GLOBAL: LEGO1 0x100f31b0
|
||||
MxS32 g_unk0x100f31b0 = -1;
|
||||
MxS32 g_clickedObjectId = -1;
|
||||
|
||||
// GLOBAL: LEGO1 0x100f31b4
|
||||
const char* g_unk0x100f31b4 = NULL;
|
||||
const char* g_clickedAtom = NULL;
|
||||
|
||||
// GLOBAL: LEGO1 0x100f67b8
|
||||
MxBool g_unk0x100f67b8 = TRUE;
|
||||
@ -354,23 +354,23 @@ MxBool LegoInputManager::ProcessOneEvent(LegoEventNotificationParam& p_param)
|
||||
if (presenter->GetDisplayZ() < 0) {
|
||||
processRoi = FALSE;
|
||||
|
||||
if (m_controlManager->FUN_10029210(p_param, presenter)) {
|
||||
if (m_controlManager->HandleButtonDown(p_param, presenter)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY());
|
||||
|
||||
if (roi == NULL && m_controlManager->FUN_10029210(p_param, presenter)) {
|
||||
if (roi == NULL && m_controlManager->HandleButtonDown(p_param, presenter)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (p_param.GetNotification() == c_notificationButtonUp) {
|
||||
if (g_unk0x100f31b0 != -1 || m_controlManager->GetUnknown0x10() ||
|
||||
m_controlManager->GetUnknown0x0c() == 1) {
|
||||
MxBool result = m_controlManager->FUN_10029210(p_param, NULL);
|
||||
if (g_clickedObjectId != -1 || m_controlManager->IsSecondButtonDown() ||
|
||||
m_controlManager->HandleUpNextTickle() == 1) {
|
||||
MxBool result = m_controlManager->HandleButtonDown(p_param, NULL);
|
||||
StopAutoDragTimer();
|
||||
|
||||
m_unk0x80 = FALSE;
|
||||
@ -522,8 +522,8 @@ void LegoInputManager::StopAutoDragTimer()
|
||||
void LegoInputManager::EnableInputProcessing()
|
||||
{
|
||||
m_unk0x88 = FALSE;
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
g_clickedObjectId = -1;
|
||||
g_clickedAtom = NULL;
|
||||
}
|
||||
|
||||
MxResult LegoInputManager::GetNavigationTouchStates(MxU32& p_keyStates)
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -197,7 +197,7 @@ MxResult LegoModelPresenter::CreateROI(MxDSChunk* p_chunk)
|
||||
|
||||
// FUNCTION: LEGO1 0x1007ff70
|
||||
// FUNCTION: BETA10 0x10099061
|
||||
MxResult LegoModelPresenter::FUN_1007ff70(
|
||||
MxResult LegoModelPresenter::CreateROI(
|
||||
MxDSChunk& p_chunk,
|
||||
LegoEntity* p_entity,
|
||||
MxBool p_roiVisible,
|
||||
|
||||
@ -342,7 +342,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
|
||||
}
|
||||
|
||||
if (action->GetObjectId() == InfomainScript::c_iicx26in_RunAnim - Lego()->IsVersion10()) {
|
||||
ControlManager()->FUN_100293c0(InfomainScript::c_BigInfo_Ctl, action->GetAtomId().GetInternal(), 0);
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, action->GetAtomId().GetInternal(), 0);
|
||||
m_unk0x1d6 = 0;
|
||||
}
|
||||
|
||||
@ -754,7 +754,7 @@ MxLong Infocenter::HandleKeyPress(SDL_Keycode p_key)
|
||||
MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
|
||||
{
|
||||
if (m_dragPresenter) {
|
||||
MxControlPresenter* control = InputManager()->GetControlManager()->FUN_100294e0(p_x - 1, p_y - 1);
|
||||
MxControlPresenter* control = InputManager()->GetControlManager()->GetControlAt(p_x - 1, p_y - 1);
|
||||
|
||||
switch (m_dragPresenter->GetAction()->GetObjectId()) {
|
||||
case InfomainScript::c_PepperHot_Bitmap:
|
||||
@ -1243,16 +1243,16 @@ MxResult Infocenter::Tickle()
|
||||
m_unk0x1d6 += 100;
|
||||
|
||||
if (m_unk0x1d6 > 3400 && m_unk0x1d6 < 3650) {
|
||||
ControlManager()->FUN_100293c0(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
}
|
||||
else if (m_unk0x1d6 > 3650 && m_unk0x1d6 < 3900) {
|
||||
ControlManager()->FUN_100293c0(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
}
|
||||
else if (m_unk0x1d6 > 3900 && m_unk0x1d6 < 4150) {
|
||||
ControlManager()->FUN_100293c0(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 1);
|
||||
}
|
||||
else if (m_unk0x1d6 > 4400) {
|
||||
ControlManager()->FUN_100293c0(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
ControlManager()->UpdateEnabledChild(InfomainScript::c_BigInfo_Ctl, m_atomId.GetInternal(), 0);
|
||||
m_unk0x1d6 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<MxU32>(data) == FOURCC('M', 'x', 'O', 'b')) {
|
||||
|
||||
@ -15,6 +15,7 @@ Please note: this project is dedicated to achieving platform independence withou
|
||||
| macOS | [](https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml) |
|
||||
| [Web](https://isle.pizza) | [](https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml) |
|
||||
| Nintendo 3DS | [](https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml) |
|
||||
| Xbox One | [](https://github.com/isledecomp/isle-portable/actions/workflows/ci.yml) |
|
||||
|
||||
We are actively working to support more platforms. If you have experience with a particular platform, we encourage you to contribute to `isle-portable`. You can find a [list of ongoing efforts](https://github.com/isledecomp/isle-portable/wiki/Work%E2%80%90in%E2%80%90progress-ports) in our Wiki.
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ target_compile_definitions(miniwin PRIVATE
|
||||
list(APPEND GRAPHICS_BACKENDS USE_SOFTWARE_RENDER)
|
||||
list(APPEND GRAPHICS_BACKENDS USE_SDL_GPU)
|
||||
|
||||
if(NOT VITA)
|
||||
if(NOT VITA AND NOT WINDOWS_STORE)
|
||||
find_package(OpenGL)
|
||||
if(OpenGL_FOUND)
|
||||
message(STATUS "Found OpenGL: enabling OpenGL 1.x renderer")
|
||||
@ -56,7 +56,7 @@ if(NOT VITA)
|
||||
if(OPENGL_ES2_LIBRARY)
|
||||
target_link_libraries(miniwin PRIVATE ${OPENGL_ES2_LIBRARY})
|
||||
endif()
|
||||
else()
|
||||
else()
|
||||
message(STATUS "🧩 OpenGL ES 2.x support not enabled")
|
||||
endif()
|
||||
endif()
|
||||
@ -77,7 +77,6 @@ if(VITA)
|
||||
list(REMOVE_ITEM GRAPHICS_BACKENDS USE_SOFTWARE_RENDER USE_SDL_GPU)
|
||||
# for shaders incbin
|
||||
target_include_directories(miniwin PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/d3drm/backends/gxm)
|
||||
#target_link_directories(miniwin PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/d3drm/backends/gxm)
|
||||
endif()
|
||||
|
||||
if(NINTENDO_3DS)
|
||||
@ -97,7 +96,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
|
||||
@ -105,6 +104,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
|
||||
|
||||
@ -637,5 +637,51 @@ void Citro3DRenderer::SetDither(bool dither)
|
||||
|
||||
void Citro3DRenderer::Download(SDL_Surface* target)
|
||||
{
|
||||
MINIWIN_NOT_IMPLEMENTED();
|
||||
u16 width, height;
|
||||
u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, &width, &height);
|
||||
if (!fb) {
|
||||
SDL_Log("Failed to get framebuffer");
|
||||
return;
|
||||
}
|
||||
|
||||
SDL_Surface* srcSurface = SDL_CreateSurfaceFrom(width, height, SDL_PIXELFORMAT_BGR24, fb, width * 3);
|
||||
if (!srcSurface) {
|
||||
SDL_Log("SDL_CreateSurfaceFrom failed: %s", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
|
||||
SDL_Surface* convertedSurface = SDL_ConvertSurface(srcSurface, target->format);
|
||||
SDL_DestroySurface(srcSurface);
|
||||
if (!convertedSurface) {
|
||||
SDL_Log("SDL_ConvertSurface failed: %s", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
|
||||
int rotatedWidth = height;
|
||||
int rotatedHeight = width;
|
||||
SDL_Surface* rotatedSurface = SDL_CreateSurface(rotatedWidth, rotatedHeight, target->format);
|
||||
if (!rotatedSurface) {
|
||||
SDL_Log("SDL_CreateSurface failed: %s", SDL_GetError());
|
||||
SDL_DestroySurface(convertedSurface);
|
||||
return;
|
||||
}
|
||||
|
||||
Uint32* srcPixels = (Uint32*) convertedSurface->pixels;
|
||||
Uint32* dstPixels = (Uint32*) rotatedSurface->pixels;
|
||||
for (int y = 0; y < height; ++y) {
|
||||
for (int x = 0; x < width; ++x) {
|
||||
Uint32 pixel = srcPixels[y * width + x];
|
||||
int newX = y;
|
||||
int newY = width - 1 - x;
|
||||
dstPixels[newY * rotatedWidth + newX] = pixel;
|
||||
}
|
||||
}
|
||||
|
||||
SDL_DestroySurface(convertedSurface);
|
||||
|
||||
SDL_Rect srcRect = {0, 0, rotatedSurface->w, rotatedSurface->h};
|
||||
SDL_Rect dstRect = {0, 0, target->w, target->h};
|
||||
SDL_BlitSurfaceScaled(rotatedSurface, &srcRect, target, &dstRect, SDL_SCALEMODE_NEAREST);
|
||||
|
||||
SDL_DestroySurface(rotatedSurface);
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
// 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,
|
||||
};
|
||||
};
|
||||
@ -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) {
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
// 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,
|
||||
};
|
||||
};
|
||||
@ -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
|
||||
@ -1,6 +1,6 @@
|
||||
#include "Common.hlsl"
|
||||
|
||||
cbuffer ViewportUniforms : register(b0, space1)
|
||||
cbuffer ViewportUniforms : REGISTER_SPACE(b0, space1)
|
||||
{
|
||||
float4x4 projection;
|
||||
float4x4 worldViewMatrix;
|
||||
|
||||
@ -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<float4> Texture : register(t0, space2);
|
||||
SamplerState Sampler : register(s0, space2);
|
||||
Texture2D<float4> Texture : REGISTER_SPACE(t0, space2);
|
||||
SamplerState Sampler : REGISTER_SPACE(s0, space2);
|
||||
|
||||
FS_Output main(FS_Input input)
|
||||
{
|
||||
|
||||
@ -180,7 +180,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);
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
#ifdef __3DS__
|
||||
#include "d3drmrenderer_citro3d.h"
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#if defined(_WIN32) && !defined(WINDOWS_STORE)
|
||||
#include "d3drmrenderer_directx9.h"
|
||||
#endif
|
||||
#ifdef __vita__
|
||||
@ -247,7 +247,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
|
||||
#ifdef __vita__
|
||||
@ -374,7 +374,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);
|
||||
}
|
||||
|
||||
@ -20,3 +20,7 @@ endif()
|
||||
if(LINUX)
|
||||
add_subdirectory(linux)
|
||||
endif()
|
||||
|
||||
if(WINDOWS_STORE)
|
||||
add_subdirectory(UWP)
|
||||
endif()
|
||||
|
||||
15
packaging/UWP/CMakeLists.txt
Normal file
@ -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})
|
||||
47
packaging/UWP/Package.appxmanifest
Normal file
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
|
||||
xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
|
||||
IgnorableNamespaces="uap mp">
|
||||
<Identity Name="org.legoisland.Isle" Publisher="CN=Helloyunho" Version="0.1.0.0" />
|
||||
<mp:PhoneIdentity PhoneProductId="077047DC-73D0-4EE7-9359-EDFF0ED96127" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
||||
<Properties>
|
||||
<DisplayName>LEGO® Island</DisplayName>
|
||||
<PublisherDisplayName>Helloyunho</PublisherDisplayName>
|
||||
<Logo>StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||
</Dependencies>
|
||||
<Resources>
|
||||
<Resource Language="x-generate" />
|
||||
</Resources>
|
||||
<Applications>
|
||||
<Application
|
||||
Id="App"
|
||||
Executable="isle.exe"
|
||||
EntryPoint="isle.App">
|
||||
<uap:VisualElements
|
||||
DisplayName="LEGO® Island"
|
||||
Description="LEGO® Island Xbox One/Series X|S port"
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="Square150x150Logo.png"
|
||||
Square44x44Logo="Square44x44Logo.png">
|
||||
<uap:SplashScreen Image="SplashScreen.png" uap5:Optional="true" BackgroundColor="black"/>
|
||||
<uap:DefaultTile
|
||||
ShortName="LEGO® Island"
|
||||
Wide310x150Logo="Wide310x150Logo.png"
|
||||
Square310x310Logo="LargeTile.png" Square71x71Logo="Square71x71Logo.png">
|
||||
<uap:ShowNameOnTiles>
|
||||
<uap:ShowOn Tile="square150x150Logo"/>
|
||||
<uap:ShowOn Tile="wide310x150Logo"/>
|
||||
<uap:ShowOn Tile="square310x310Logo"/>
|
||||
</uap:ShowNameOnTiles>
|
||||
</uap:DefaultTile>
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
</Package>
|
||||
BIN
packaging/UWP/assets/LargeTile.scale-100.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
packaging/UWP/assets/LargeTile.scale-125.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
packaging/UWP/assets/LargeTile.scale-150.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
packaging/UWP/assets/LargeTile.scale-200.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
packaging/UWP/assets/LargeTile.scale-400.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
packaging/UWP/assets/SplashScreen.scale-100.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
packaging/UWP/assets/SplashScreen.scale-125.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
packaging/UWP/assets/SplashScreen.scale-150.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
packaging/UWP/assets/SplashScreen.scale-200.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
packaging/UWP/assets/SplashScreen.scale-400.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
packaging/UWP/assets/Square150x150Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 944 B |
BIN
packaging/UWP/assets/Square150x150Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
packaging/UWP/assets/Square150x150Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
packaging/UWP/assets/Square150x150Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
packaging/UWP/assets/Square150x150Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 229 B |
|
After Width: | Height: | Size: 305 B |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 371 B |
|
After Width: | Height: | Size: 585 B |
|
After Width: | Height: | Size: 229 B |
|
After Width: | Height: | Size: 305 B |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 371 B |
|
After Width: | Height: | Size: 585 B |
BIN
packaging/UWP/assets/Square44x44Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 407 B |
BIN
packaging/UWP/assets/Square44x44Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 514 B |
BIN
packaging/UWP/assets/Square44x44Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 627 B |
BIN
packaging/UWP/assets/Square44x44Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 842 B |
BIN
packaging/UWP/assets/Square44x44Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
packaging/UWP/assets/Square44x44Logo.targetsize-16.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
packaging/UWP/assets/Square44x44Logo.targetsize-24.png
Normal file
|
After Width: | Height: | Size: 279 B |
BIN
packaging/UWP/assets/Square44x44Logo.targetsize-256.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
packaging/UWP/assets/Square44x44Logo.targetsize-32.png
Normal file
|
After Width: | Height: | Size: 309 B |
BIN
packaging/UWP/assets/Square44x44Logo.targetsize-48.png
Normal file
|
After Width: | Height: | Size: 436 B |
BIN
packaging/UWP/assets/Square71x71Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 578 B |
BIN
packaging/UWP/assets/Square71x71Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 683 B |
BIN
packaging/UWP/assets/Square71x71Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 808 B |
BIN
packaging/UWP/assets/Square71x71Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
packaging/UWP/assets/Square71x71Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
packaging/UWP/assets/StoreLogo.scale-100.png
Normal file
|
After Width: | Height: | Size: 541 B |
BIN
packaging/UWP/assets/StoreLogo.scale-125.png
Normal file
|
After Width: | Height: | Size: 710 B |
BIN
packaging/UWP/assets/StoreLogo.scale-150.png
Normal file
|
After Width: | Height: | Size: 809 B |
BIN
packaging/UWP/assets/StoreLogo.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
packaging/UWP/assets/StoreLogo.scale-400.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
packaging/UWP/assets/Wide310x150Logo.scale-100.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
packaging/UWP/assets/Wide310x150Logo.scale-125.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
packaging/UWP/assets/Wide310x150Logo.scale-150.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
packaging/UWP/assets/Wide310x150Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
packaging/UWP/assets/Wide310x150Logo.scale-400.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |