From 09e15aac7c2fb275dd8e1457490af45b7552ea37 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 27 Jul 2020 23:47:30 -0700 Subject: [PATCH 1/5] CMake: Minor cleanup --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e38433735..24e5b96bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,15 @@ if(NOT MSVC) set(CMAKE_C_EXTENSIONS ON) endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-missing-field-initializers") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-missing-field-initializers") if(WIN32) # mingw32 likes to complain about using the "wrong" format strings despite them actually working set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format") endif() else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS /wd4003 /wd4244 /wd4146 /wd4267") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS /wd4003 /wd4244 /wd4146 /wd4267") endif() if(NOT DEFINED LIBMGBA_ONLY) @@ -165,10 +168,12 @@ set(PGO_POST_FLAGS "-fprofile-use=${PGO_DIR} -fbranch-probabilities") if(BUILD_PGO AND NOT PGO_STAGE_2) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${PGO_PRE_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PGO_PRE_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PGO_PRE_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PGO_PRE_FLAGS}") elseif(BUILD_PGO AND PGO_STAGE_2) set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${PGO_POST_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PGO_POST_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PGO_POST_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PGO_POST_FLAGS}") endif() @@ -244,7 +249,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm.*") enable_language(ASM) endif() -if(PSP2 OR WII) +if(PSP2) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format") endif() From 32e058a0df5d2c4f1a9ea4e6c5c4861a9e327fd9 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 27 Jul 2020 23:52:06 -0700 Subject: [PATCH 2/5] Third-Party: Disable some warnings in discord-rpc --- src/third-party/discord-rpc/src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/third-party/discord-rpc/src/CMakeLists.txt b/src/third-party/discord-rpc/src/CMakeLists.txt index ca2659846..cc2b2bbbd 100644 --- a/src/third-party/discord-rpc/src/CMakeLists.txt +++ b/src/third-party/discord-rpc/src/CMakeLists.txt @@ -70,6 +70,7 @@ if(UNIX) add_library(discord-rpc STATIC ${BASE_RPC_SRC}) target_link_libraries(discord-rpc PUBLIC pthread) + target_compile_options(discord-rpc PRIVATE -Wno-unknown-pragmas) if (${WARNINGS_AS_ERRORS}) target_compile_options(discord-rpc PRIVATE -Werror) From b38cac3be37fa05982bd3204f0822b95260040d7 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 28 Jul 2020 01:00:28 -0700 Subject: [PATCH 3/5] Wii: Fix pixelated filtering on interframe blending (fixes #1830) --- CHANGES | 1 + src/platform/wii/main.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGES b/CHANGES index 6c44264c9..3825b48b5 100644 --- a/CHANGES +++ b/CHANGES @@ -52,6 +52,7 @@ Other fixes: - Qt: Add missing option for Wisdom Tree in overrides list - Util: Fix crash if PNG header fails to write - SM83: Simplify register pair access on big endian + - Wii: Fix pixelated filtering on interframe blending (fixes mgba.io/i/1830) Misc: - Debugger: Keep track of global cycle count - FFmpeg: Add looping option for GIF/APNG diff --git a/src/platform/wii/main.c b/src/platform/wii/main.c index 769469b43..dd9311de9 100644 --- a/src/platform/wii/main.c +++ b/src/platform/wii/main.c @@ -877,9 +877,11 @@ void _unpaused(struct mGUIRunner* runner) { case FM_LINEAR_2x: default: GX_InitTexObjFilterMode(&tex, GX_NEAR, GX_NEAR); + GX_InitTexObjFilterMode(&interframeTex, GX_NEAR, GX_NEAR); break; case FM_LINEAR_1x: GX_InitTexObjFilterMode(&tex, GX_LINEAR, GX_LINEAR); + GX_InitTexObjFilterMode(&interframeTex, GX_LINEAR, GX_LINEAR); break; } } @@ -1071,9 +1073,11 @@ void _incrementScreenMode(struct mGUIRunner* runner) { case FM_LINEAR_2x: default: GX_InitTexObjFilterMode(&tex, GX_NEAR, GX_NEAR); + GX_InitTexObjFilterMode(&interframeTex, GX_NEAR, GX_NEAR); break; case FM_LINEAR_1x: GX_InitTexObjFilterMode(&tex, GX_LINEAR, GX_LINEAR); + GX_InitTexObjFilterMode(&interframeTex, GX_LINEAR, GX_LINEAR); break; } } From 5b2d797e6d8ebce898e0aa25f66d64b18fff4dc4 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 28 Jul 2020 15:43:01 -0700 Subject: [PATCH 4/5] GBA Video: Fix some undefined behavior in shifts --- src/feature/video-logger.c | 2 +- src/gba/renderers/video-software.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/feature/video-logger.c b/src/feature/video-logger.c index e25b1a44c..b0e3f470b 100644 --- a/src/feature/video-logger.c +++ b/src/feature/video-logger.c @@ -182,7 +182,7 @@ void mVideoLoggerRendererWriteVideoRegister(struct mVideoLogger* logger, uint32_ } void mVideoLoggerRendererWriteVRAM(struct mVideoLogger* logger, uint32_t address) { - int bit = 1 << (address >> 12); + int bit = 1U << (address >> 12); if (logger->vramDirtyBitmap[address >> 17] & bit) { return; } diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 035f10d6b..de0a2279b 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -13,8 +13,8 @@ #include #include -#define DIRTY_SCANLINE(R, Y) R->scanlineDirty[Y >> 5] |= (1 << (Y & 0x1F)) -#define CLEAN_SCANLINE(R, Y) R->scanlineDirty[Y >> 5] &= ~(1 << (Y & 0x1F)) +#define DIRTY_SCANLINE(R, Y) R->scanlineDirty[Y >> 5] |= (1U << (Y & 0x1F)) +#define CLEAN_SCANLINE(R, Y) R->scanlineDirty[Y >> 5] &= ~(1U << (Y & 0x1F)) static void GBAVideoSoftwareRendererInit(struct GBAVideoRenderer* renderer); static void GBAVideoSoftwareRendererDeinit(struct GBAVideoRenderer* renderer); @@ -519,7 +519,7 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render softwareRenderer->nextY = y + 1; } - bool dirty = softwareRenderer->scanlineDirty[y >> 5] & (1 << (y & 0x1F)); + bool dirty = softwareRenderer->scanlineDirty[y >> 5] & (1U << (y & 0x1F)); if (memcmp(softwareRenderer->nextIo, softwareRenderer->cache[y].io, sizeof(softwareRenderer->nextIo))) { memcpy(softwareRenderer->cache[y].io, softwareRenderer->nextIo, sizeof(softwareRenderer->nextIo)); dirty = true; From ec30e1f8ecdc3dea2bc474fe5fc8f0f56f7d26b3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 28 Jul 2020 16:14:15 -0700 Subject: [PATCH 5/5] Test: Fix testToPath breakage --- src/platform/test/cinema-main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/platform/test/cinema-main.c b/src/platform/test/cinema-main.c index 6d40ea41d..1bc317755 100644 --- a/src/platform/test/cinema-main.c +++ b/src/platform/test/cinema-main.c @@ -270,6 +270,10 @@ static void testToPath(const char* testName, char* path) { ++i; } } + if (i == PATH_MAX) { + --i; + } + path[i] = '\0'; } static void _loadConfigTree(struct Table* configTree, const char* testName) {