From a81587ec2123538478b3e09881d3297cd863cc58 Mon Sep 17 00:00:00 2001 From: CocoSimone Date: Sun, 12 Feb 2023 15:28:59 +0100 Subject: [PATCH] Only use /EHa in MSVC --- external/imgui/CMakeLists.txt | 10 ++++++---- external/parallel-rdp/CMakeLists.txt | 16 +++++++--------- src/CMakeLists.txt | 4 +++- src/backend/core/mmio/AI.cpp | 21 ++++++++++----------- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/external/imgui/CMakeLists.txt b/external/imgui/CMakeLists.txt index c656c4fc..176ca5f6 100644 --- a/external/imgui/CMakeLists.txt +++ b/external/imgui/CMakeLists.txt @@ -12,10 +12,12 @@ add_library(imgui imgui/backends/imgui_impl_vulkan.h imgui/backends/imgui_impl_vulkan.cpp) -#if(WIN32) -# target_compile_definitions(imgui PUBLIC NOMINMAX _CRT_SECURE_NO_WARNINGS) -# target_compile_options(imgui PUBLIC /EHa) -#endif() +if(WIN32) + target_compile_definitions(imgui PUBLIC NOMINMAX _CRT_SECURE_NO_WARNINGS) + if(MSVC) + target_compile_options(imgui PUBLIC /EHa) + endif() +endif() target_include_directories(imgui PUBLIC ../parallel-rdp/parallel-rdp-standalone/volk ../parallel-rdp/parallel-rdp-standalone/vulkan-headers/include) \ No newline at end of file diff --git a/external/parallel-rdp/CMakeLists.txt b/external/parallel-rdp/CMakeLists.txt index 68325111..b3de6b78 100644 --- a/external/parallel-rdp/CMakeLists.txt +++ b/external/parallel-rdp/CMakeLists.txt @@ -45,8 +45,12 @@ add_library(parallel-rdp ) if(WIN32) - target_compile_definitions(parallel-rdp PUBLIC NOMINMAX _CRT_SECURE_NO_WARNINGS) - target_compile_options(parallel-rdp PUBLIC /EHa) + target_compile_definitions(parallel-rdp PUBLIC NOMINMAX _CRT_SECURE_NO_WARNINGS VK_USE_PLATFORM_WIN32_KHR) + if(MSVC) + target_compile_options(parallel-rdp PUBLIC /EHa) + endif() +else() + target_link_libraries(parallel-rdp PUBLIC dl) endif() target_compile_definitions(parallel-rdp PUBLIC GRANITE_VULKAN_MT) @@ -58,10 +62,4 @@ target_include_directories(parallel-rdp PUBLIC parallel-rdp-standalone/vulkan parallel-rdp-standalone/vulkan-headers/include parallel-rdp-standalone/util -) - -if(WIN32) - target_compile_definitions(parallel-rdp PUBLIC VK_USE_PLATFORM_WIN32_KHR) -else() - target_link_libraries(parallel-rdp PUBLIC dl) -endif() \ No newline at end of file +) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dad5d0ae..5ab0f16a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,5 +66,7 @@ target_link_libraries(gadolinium PUBLIC frontend frontend-imgui if(WIN32) target_compile_definitions(gadolinium PUBLIC NOMINMAX _CRT_SECURE_NO_WARNINGS) - target_compile_options(gadolinium PUBLIC /EHa) + if(MSVC) + target_compile_options(parallel-rdp PUBLIC /EHa) + endif() endif() \ No newline at end of file diff --git a/src/backend/core/mmio/AI.cpp b/src/backend/core/mmio/AI.cpp index 1b814684..c625f563 100644 --- a/src/backend/core/mmio/AI.cpp +++ b/src/backend/core/mmio/AI.cpp @@ -80,20 +80,19 @@ void AI::Step(Mem& mem, Registers& regs, int cpuCycles, float volumeL, float vol return; } - if(dmaLen[0] && dmaEnable) { + if(dmaLen[0] && dmaEnable) {u32 addrHi = ((dmaAddr[0] >> 13) + dmaAddrCarry) & 0x7FF; + dmaAddr[0] = (addrHi << 13) | (dmaAddr[0] & 0x1FFF); + u32 data = Util::ReadAccess(mem.mmio.rdp.rdram.data(), dmaAddr[0] & RDRAM_DSIZE); + s16 l = s16(data >> 16); + s16 r = s16(data); + if(volumeR > 0 && volumeL > 0) { - u32 addrHi = ((dmaAddr[0] >> 13) + dmaAddrCarry) & 0x7FF; - dmaAddr[0] = (addrHi << 13) | (dmaAddr[0] & 0x1FFF); - u32 data = Util::ReadAccess(mem.mmio.rdp.rdram.data(), dmaAddr[0] & RDRAM_DSIZE); - s16 l = s16(data >> 16); - s16 r = s16(data); - PushSample((float) l / INT16_MAX, volumeL, (float) r / INT16_MAX, volumeR); - - u32 addrLo = (dmaAddr[0] + 4) & 0x1FFF; - dmaAddr[0] = (dmaAddr[0] & ~0x1FFF) | addrLo; - dmaAddrCarry = addrLo == 0; } + + u32 addrLo = (dmaAddr[0] + 4) & 0x1FFF; + dmaAddr[0] = (dmaAddr[0] & ~0x1FFF) | addrLo; + dmaAddrCarry = addrLo == 0; dmaLen[0] -= 4; }