diff options
Diffstat (limited to 'src/yuzu_cmd')
| -rw-r--r-- | src/yuzu_cmd/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | 20 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2.h | 3 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/yuzu.cpp | 2 |
7 files changed, 41 insertions, 3 deletions
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt index 0b3f2cb54..8461f8896 100644 --- a/src/yuzu_cmd/CMakeLists.txt +++ b/src/yuzu_cmd/CMakeLists.txt | |||
| @@ -1,5 +1,15 @@ | |||
| 1 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) | 1 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) |
| 2 | 2 | ||
| 3 | function(create_resource file output filename) | ||
| 4 | # Read hex data from file | ||
| 5 | file(READ ${file} filedata HEX) | ||
| 6 | # Convert hex data for C compatibility | ||
| 7 | string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata}) | ||
| 8 | # Write data to output file | ||
| 9 | set(RESOURCES_DIR "${PROJECT_BINARY_DIR}/dist" PARENT_SCOPE) | ||
| 10 | file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n") | ||
| 11 | endfunction() | ||
| 12 | |||
| 3 | add_executable(yuzu-cmd | 13 | add_executable(yuzu-cmd |
| 4 | config.cpp | 14 | config.cpp |
| 5 | config.h | 15 | config.h |
| @@ -24,6 +34,9 @@ if (MSVC) | |||
| 24 | endif() | 34 | endif() |
| 25 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) | 35 | target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads) |
| 26 | 36 | ||
| 37 | create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon") | ||
| 38 | target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR}) | ||
| 39 | |||
| 27 | target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) | 40 | target_include_directories(yuzu-cmd PRIVATE ../../externals/Vulkan-Headers/include) |
| 28 | 41 | ||
| 29 | if(UNIX AND NOT APPLE) | 42 | if(UNIX AND NOT APPLE) |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index f76102459..aa0a9f288 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -388,7 +388,7 @@ void Config::ReadValues() { | |||
| 388 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100))); | 388 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100))); |
| 389 | Settings::values.use_disk_shader_cache.SetValue( | 389 | Settings::values.use_disk_shader_cache.SetValue( |
| 390 | sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false)); | 390 | sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false)); |
| 391 | const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 0); | 391 | const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 1); |
| 392 | Settings::values.gpu_accuracy.SetValue(static_cast<Settings::GPUAccuracy>(gpu_accuracy_level)); | 392 | Settings::values.gpu_accuracy.SetValue(static_cast<Settings::GPUAccuracy>(gpu_accuracy_level)); |
| 393 | Settings::values.use_asynchronous_gpu_emulation.SetValue( | 393 | Settings::values.use_asynchronous_gpu_emulation.SetValue( |
| 394 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true)); | 394 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true)); |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp index 7843d5167..7e391ab89 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "input_common/mouse/mouse_input.h" | 12 | #include "input_common/mouse/mouse_input.h" |
| 13 | #include "input_common/sdl/sdl.h" | 13 | #include "input_common/sdl/sdl.h" |
| 14 | #include "yuzu_cmd/emu_window/emu_window_sdl2.h" | 14 | #include "yuzu_cmd/emu_window/emu_window_sdl2.h" |
| 15 | #include "yuzu_cmd/yuzu_icon.h" | ||
| 15 | 16 | ||
| 16 | EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_) | 17 | EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_) |
| 17 | : input_subsystem{input_subsystem_} { | 18 | : input_subsystem{input_subsystem_} { |
| @@ -30,7 +31,8 @@ EmuWindow_SDL2::~EmuWindow_SDL2() { | |||
| 30 | 31 | ||
| 31 | void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) { | 32 | void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) { |
| 32 | TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0), 0); | 33 | TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0), 0); |
| 33 | input_subsystem->GetMouse()->MouseMove(x, y); | 34 | |
| 35 | input_subsystem->GetMouse()->MouseMove(x, y, 0, 0); | ||
| 34 | } | 36 | } |
| 35 | 37 | ||
| 36 | void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) { | 38 | void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) { |
| @@ -193,6 +195,22 @@ void EmuWindow_SDL2::WaitEvent() { | |||
| 193 | } | 195 | } |
| 194 | } | 196 | } |
| 195 | 197 | ||
| 198 | void EmuWindow_SDL2::SetWindowIcon() { | ||
| 199 | SDL_RWops* const yuzu_icon_stream = SDL_RWFromConstMem((void*)yuzu_icon, yuzu_icon_size); | ||
| 200 | if (yuzu_icon_stream == nullptr) { | ||
| 201 | LOG_WARNING(Frontend, "Failed to create yuzu icon stream."); | ||
| 202 | return; | ||
| 203 | } | ||
| 204 | SDL_Surface* const window_icon = SDL_LoadBMP_RW(yuzu_icon_stream, 1); | ||
| 205 | if (window_icon == nullptr) { | ||
| 206 | LOG_WARNING(Frontend, "Failed to read BMP from stream."); | ||
| 207 | return; | ||
| 208 | } | ||
| 209 | // The icon is attached to the window pointer | ||
| 210 | SDL_SetWindowIcon(render_window, window_icon); | ||
| 211 | SDL_FreeSurface(window_icon); | ||
| 212 | } | ||
| 213 | |||
| 196 | void EmuWindow_SDL2::OnMinimalClientAreaChangeRequest(std::pair<unsigned, unsigned> minimal_size) { | 214 | void EmuWindow_SDL2::OnMinimalClientAreaChangeRequest(std::pair<unsigned, unsigned> minimal_size) { |
| 197 | SDL_SetWindowMinimumSize(render_window, minimal_size.first, minimal_size.second); | 215 | SDL_SetWindowMinimumSize(render_window, minimal_size.first, minimal_size.second); |
| 198 | } | 216 | } |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.h b/src/yuzu_cmd/emu_window/emu_window_sdl2.h index a93141240..51a12a6a9 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2.h +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.h | |||
| @@ -32,6 +32,9 @@ public: | |||
| 32 | /// Wait for the next event on the main thread. | 32 | /// Wait for the next event on the main thread. |
| 33 | void WaitEvent(); | 33 | void WaitEvent(); |
| 34 | 34 | ||
| 35 | // Sets the window icon from yuzu.bmp | ||
| 36 | void SetWindowIcon(); | ||
| 37 | |||
| 35 | protected: | 38 | protected: |
| 36 | /// Called by WaitEvent when a key is pressed or released. | 39 | /// Called by WaitEvent when a key is pressed or released. |
| 37 | void OnKeyEvent(int key, u8 state); | 40 | void OnKeyEvent(int key, u8 state); |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp index deddea9ee..a02485c14 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | |||
| @@ -107,6 +107,8 @@ EmuWindow_SDL2_GL::EmuWindow_SDL2_GL(InputCommon::InputSubsystem* input_subsyste | |||
| 107 | dummy_window = SDL_CreateWindow(NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, | 107 | dummy_window = SDL_CreateWindow(NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 0, 0, |
| 108 | SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL); | 108 | SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL); |
| 109 | 109 | ||
| 110 | SetWindowIcon(); | ||
| 111 | |||
| 110 | if (fullscreen) { | 112 | if (fullscreen) { |
| 111 | Fullscreen(); | 113 | Fullscreen(); |
| 112 | } | 114 | } |
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp index 3ba657c00..6f9b00461 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp | |||
| @@ -35,6 +35,8 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(InputCommon::InputSubsystem* input_subsyste | |||
| 35 | std::exit(EXIT_FAILURE); | 35 | std::exit(EXIT_FAILURE); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | SetWindowIcon(); | ||
| 39 | |||
| 38 | switch (wm.subsystem) { | 40 | switch (wm.subsystem) { |
| 39 | #ifdef SDL_VIDEO_DRIVER_WINDOWS | 41 | #ifdef SDL_VIDEO_DRIVER_WINDOWS |
| 40 | case SDL_SYSWM_TYPE::SDL_SYSWM_WINDOWS: | 42 | case SDL_SYSWM_TYPE::SDL_SYSWM_WINDOWS: |
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 0e1f3bdb3..982c41785 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp | |||
| @@ -215,7 +215,7 @@ int main(int argc, char** argv) { | |||
| 215 | // Core is loaded, start the GPU (makes the GPU contexts current to this thread) | 215 | // Core is loaded, start the GPU (makes the GPU contexts current to this thread) |
| 216 | system.GPU().Start(); | 216 | system.GPU().Start(); |
| 217 | 217 | ||
| 218 | system.Renderer().Rasterizer().LoadDiskResources( | 218 | system.Renderer().ReadRasterizer()->LoadDiskResources( |
| 219 | system.CurrentProcess()->GetTitleID(), false, | 219 | system.CurrentProcess()->GetTitleID(), false, |
| 220 | [](VideoCore::LoadCallbackStage, size_t value, size_t total) {}); | 220 | [](VideoCore::LoadCallbackStage, size_t value, size_t total) {}); |
| 221 | 221 | ||