From f3b6593ab65bafecfcd8c3418047010496450303 Mon Sep 17 00:00:00 2001 From: momocaoo <121313710+momocaoo@users.noreply.github.com> Date: Mon, 26 Dec 2022 03:13:37 +0100 Subject: [PATCH 01/15] Qt: Fix typo in Forwarder ui (#2764) --- src/platform/qt/ForwarderView.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/qt/ForwarderView.ui b/src/platform/qt/ForwarderView.ui index 1c72e3caa..f83facf1c 100644 --- a/src/platform/qt/ForwarderView.ui +++ b/src/platform/qt/ForwarderView.ui @@ -71,7 +71,7 @@ - Latest stable verison + Latest stable version From 61950a52dc976598424f69be3e0b6c5af5bcc9ea Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 27 Dec 2022 01:36:42 -0800 Subject: [PATCH 02/15] GBA Cheats: Clean up redundant variables --- src/gba/cheats.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/gba/cheats.c b/src/gba/cheats.c index 08848077b..04082d48a 100644 --- a/src/gba/cheats.c +++ b/src/gba/cheats.c @@ -105,36 +105,36 @@ static bool GBACheatAddAutodetect(struct GBACheatSet* set, uint32_t op1, uint32_ char line[18] = "XXXXXXXX XXXXXXXX"; snprintf(line, sizeof(line), "%08X %08X", op1, op2); - int gsaP, rgsaP, parP, rparP; + int nextProbability; int maxProbability = INT_MIN; switch (set->gsaVersion) { case 0: // Try to detect GameShark version GBACheatDecryptGameShark(&o1, &o2, GBACheatGameSharkSeeds); - gsaP = GBACheatGameSharkProbability(o1, o2); + nextProbability = GBACheatGameSharkProbability(o1, o2); o1 = op1; o2 = op2; - if (gsaP > maxProbability) { - maxProbability = gsaP; + if (nextProbability > maxProbability) { + maxProbability = nextProbability; GBACheatSetGameSharkVersion(set, GBA_GS_GSAV1); } GBACheatDecryptGameShark(&o1, &o2, GBACheatProActionReplaySeeds); - parP = GBACheatProActionReplayProbability(o1, o2); - if (parP > maxProbability) { - maxProbability = parP; + nextProbability = GBACheatProActionReplayProbability(o1, o2); + if (nextProbability > maxProbability) { + maxProbability = nextProbability; GBACheatSetGameSharkVersion(set, GBA_GS_PARV3); } - rgsaP = GBACheatGameSharkProbability(op1, op2); - if (rgsaP > maxProbability) { - maxProbability = rgsaP; + nextProbability = GBACheatGameSharkProbability(op1, op2); + if (nextProbability > maxProbability) { + maxProbability = nextProbability; GBACheatSetGameSharkVersion(set, GBA_GS_GSAV1_RAW); } - rparP = GBACheatProActionReplayProbability(op1, op2); - if (rparP > maxProbability) { - maxProbability = rparP; + nextProbability = GBACheatProActionReplayProbability(op1, op2); + if (nextProbability > maxProbability) { + maxProbability = nextProbability; GBACheatSetGameSharkVersion(set, GBA_GS_PARV3_RAW); } From 520609d12a2619adc10434179679e8f6c70fcb43 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 27 Dec 2022 03:22:08 -0800 Subject: [PATCH 03/15] Qt: Fix indentation --- src/platform/qt/OpenGLBug.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/qt/OpenGLBug.h b/src/platform/qt/OpenGLBug.h index fda0ed555..11b0bba43 100644 --- a/src/platform/qt/OpenGLBug.h +++ b/src/platform/qt/OpenGLBug.h @@ -8,8 +8,8 @@ namespace QGBA { enum class OpenGLBug { - // mgba.io/i/2761 - CROSS_THREAD_FLUSH + // mgba.io/i/2761 + CROSS_THREAD_FLUSH }; bool glContextHasBug(OpenGLBug); From 0a4cafcd57637b17c8efba9b607f81d5e4511584 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 27 Dec 2022 20:39:19 -0800 Subject: [PATCH 04/15] GB BIOS: Include timing in degenerate ArcTan2 cases (fixes #2763) --- CHANGES | 1 + src/gba/bios.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 00e8d7587..06b1a5235 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Emulation fixes: - GB Audio: Fix channel 3 volume being changed between samples (fixes mgba.io/i/1896) - GB Audio: Fix up boot sequence - GB Audio: Fix updating channels other than 2 when writing NR5x + - GB BIOS: Include timing in degenerate ArcTan2 cases (fixes mgba.io/i/2763) - GB Memory: Actually, HDMAs should start when LCD is off (fixes mgba.io/i/2662) - GB Serialize: Don't write BGP/OBP when loading SCGB state (fixes mgba.io/i/2694) - GB SIO: Further fix bidirectional transfer starting diff --git a/src/gba/bios.c b/src/gba/bios.c index d824830aa..1d0c0dd10 100644 --- a/src/gba/bios.c +++ b/src/gba/bios.c @@ -336,12 +336,14 @@ static int16_t _ArcTan(int32_t i, int32_t* r1, int32_t* r3, uint32_t* cycles) { static int16_t _ArcTan2(int32_t x, int32_t y, int32_t* r1, uint32_t* cycles) { if (!y) { + *cycles = 11; if (x >= 0) { return 0; } return 0x8000; } if (!x) { + *cycles = 11; if (y >= 0) { return 0x4000; } From 1c370f6ebebeb5b8af85099d59d614c166aada4b Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 31 Dec 2022 01:19:58 -0800 Subject: [PATCH 05/15] Scripting: Refactor out some testing code --- src/core/test/scripting.c | 18 ++---------------- src/script/test.h | 29 +++++++++++++++++++++++++++++ src/script/test/lua.c | 13 ++----------- src/script/test/stdlib.c | 22 ++-------------------- 4 files changed, 35 insertions(+), 47 deletions(-) create mode 100644 src/script/test.h diff --git a/src/core/test/scripting.c b/src/core/test/scripting.c index ddcb448c5..2e26b096f 100644 --- a/src/core/test/scripting.c +++ b/src/core/test/scripting.c @@ -12,6 +12,8 @@ #include #include +#include "script/test.h" + #ifdef M_CORE_GBA #include #define TEST_PLATFORM mPLATFORM_GBA @@ -66,22 +68,6 @@ static const uint8_t _fakeGBROM[0x4000] = { mCoreConfigDeinit(&core->config); \ core->deinit(core) -#define LOAD_PROGRAM(PROG) \ - do { \ - struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \ - assert_true(lua->load(lua, NULL, vf)); \ - vf->close(vf); \ - } while(0) - -#define TEST_VALUE(TYPE, NAME, VALUE) \ - do { \ - struct mScriptValue val = mSCRIPT_MAKE(TYPE, VALUE); \ - struct mScriptValue* global = lua->getGlobal(lua, NAME); \ - assert_non_null(global); \ - assert_true(global->type->equal(global, &val)); \ - mScriptValueDeref(global); \ - } while(0) - static void _mScriptTestLog(struct mLogger* log, int category, enum mLogLevel level, const char* format, va_list args) { UNUSED(category); struct mScriptTestLogger* logger = (struct mScriptTestLogger*) log; diff --git a/src/script/test.h b/src/script/test.h new file mode 100644 index 000000000..f526bce30 --- /dev/null +++ b/src/script/test.h @@ -0,0 +1,29 @@ +/* Copyright (c) 2013-2022 Jeffrey Pfau + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef M_SCRIPT_TEST_H +#define M_SCRIPT_TEST_H + +#define LOAD_PROGRAM(PROG) \ + do { \ + struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \ + assert_true(lua->load(lua, NULL, vf)); \ + vf->close(vf); \ + } while(0) + +#define TEST_VALUE(TYPE, NAME, VALUE) \ + do { \ + struct mScriptValue val = mSCRIPT_MAKE(TYPE, VALUE); \ + struct mScriptValue* global = lua->getGlobal(lua, NAME); \ + assert_non_null(global); \ + assert_true(global->type->equal(global, &val)); \ + mScriptValueDeref(global); \ + } while(0) + +#define TEST_PROGRAM(PROG) \ + LOAD_PROGRAM(PROG); \ + assert_true(lua->run(lua)); \ + +#endif diff --git a/src/script/test/lua.c b/src/script/test/lua.c index 2cc7fcbff..73954e91e 100644 --- a/src/script/test/lua.c +++ b/src/script/test/lua.c @@ -8,22 +8,13 @@ #include #include +#include "script/test.h" + #define SETUP_LUA \ struct mScriptContext context; \ mScriptContextInit(&context); \ struct mScriptEngineContext* lua = mScriptContextRegisterEngine(&context, mSCRIPT_ENGINE_LUA) -#define LOAD_PROGRAM(PROG) \ - do { \ - struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \ - assert_true(lua->load(lua, NULL, vf)); \ - vf->close(vf); \ - } while(0) - -#define TEST_PROGRAM(PROG) \ - LOAD_PROGRAM(PROG); \ - assert_true(lua->run(lua)); \ - struct Test { int32_t i; int32_t (*ifn0)(struct Test*); diff --git a/src/script/test/stdlib.c b/src/script/test/stdlib.c index d4c57605b..63ddda4fc 100644 --- a/src/script/test/stdlib.c +++ b/src/script/test/stdlib.c @@ -10,32 +10,14 @@ #include #include +#include "script/test.h" + #define SETUP_LUA \ struct mScriptContext context; \ mScriptContextInit(&context); \ struct mScriptEngineContext* lua = mScriptContextRegisterEngine(&context, mSCRIPT_ENGINE_LUA); \ mScriptContextAttachStdlib(&context) -#define LOAD_PROGRAM(PROG) \ - do { \ - struct VFile* vf = VFileFromConstMemory(PROG, strlen(PROG)); \ - assert_true(lua->load(lua, NULL, vf)); \ - vf->close(vf); \ - } while(0) - -#define TEST_PROGRAM(PROG) \ - LOAD_PROGRAM(PROG); \ - assert_true(lua->run(lua)); \ - -#define TEST_VALUE(TYPE, NAME, VALUE) \ - do { \ - struct mScriptValue val = mSCRIPT_MAKE(TYPE, VALUE); \ - struct mScriptValue* global = lua->getGlobal(lua, NAME); \ - assert_non_null(global); \ - assert_true(global->type->equal(global, &val)); \ - mScriptValueDeref(global); \ - } while(0) - M_TEST_SUITE_SETUP(mScriptStdlib) { if (mSCRIPT_ENGINE_LUA->init) { mSCRIPT_ENGINE_LUA->init(mSCRIPT_ENGINE_LUA); From bf3a2071b7f73e4dbfd2947e0e9a3c0521887ce4 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 31 Dec 2022 01:21:03 -0800 Subject: [PATCH 06/15] All: Add more build products to the gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 20c19fc41..0e5d801be 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,12 @@ *.a *.dylib *.dll +*.lib *.exe *.o *.so CMakeCache.txt CMakeFiles CMakeSettings.json +cmake_install.cmake version.c From 9f8679ffa66a047ba387067e72b28e1cd90d6e9a Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 31 Dec 2022 17:54:29 -0800 Subject: [PATCH 07/15] Qt: Fix initializing update revision info --- CHANGES | 1 + src/platform/qt/ApplicationUpdater.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 06b1a5235..703038081 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,7 @@ Other fixes: - Qt: Fix scanning specific e-Reader dotcodes (fixes mgba.io/i/2693) - Qt: Don't re-enable sync if GBA link modes aren't the same (fixes mgba.io/i/2044) - Qt: Improve handling of multiplayer syncing (fixes mgba.io/i/2720) + - Qt: Fix initializing update revision info - Res: Fix species name location in Ruby/Sapphire revs 1/2 (fixes mgba.io/i/2685) - VFS: Fix minizip write returning 0 on success instead of size Misc: diff --git a/src/platform/qt/ApplicationUpdater.cpp b/src/platform/qt/ApplicationUpdater.cpp index a0efca23d..e2d1e5e4c 100644 --- a/src/platform/qt/ApplicationUpdater.cpp +++ b/src/platform/qt/ApplicationUpdater.cpp @@ -174,7 +174,8 @@ const char* ApplicationUpdater::platform() { } ApplicationUpdater::UpdateInfo::UpdateInfo(const QString& prefix, const mUpdate* update) - : size(update->size) + : rev(-1) + , size(update->size) , url(prefix + update->path) { if (update->rev > 0) { From 819d19dddcba8f389bc266c2f39b2a173dd2bd6b Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 31 Dec 2022 18:15:47 -0800 Subject: [PATCH 08/15] Qt: Redo stable branch detection heuristic --- CHANGES | 2 +- src/platform/qt/ApplicationUpdater.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 703038081..8fe044973 100644 --- a/CHANGES +++ b/CHANGES @@ -18,11 +18,11 @@ Other fixes: - GBA: Fix forceskip BIOS logic for multiboot ROMs (fixes mgba.io/i/2753) - GBA Cheats: Fix issues detecting unencrypted cheats (fixes mgba.io/i/2724) - Qt: Manually split filename to avoid overzealous splitting (fixes mgba.io/i/2681) - - Qt: Expand criteria for tag branch names (fixes mgba.io/i/2679) - Qt: Fix scanning specific e-Reader dotcodes (fixes mgba.io/i/2693) - Qt: Don't re-enable sync if GBA link modes aren't the same (fixes mgba.io/i/2044) - Qt: Improve handling of multiplayer syncing (fixes mgba.io/i/2720) - Qt: Fix initializing update revision info + - Qt: Redo stable branch detection heuristic (fixes mgba.io/i/2679) - Res: Fix species name location in Ruby/Sapphire revs 1/2 (fixes mgba.io/i/2685) - VFS: Fix minizip write returning 0 on success instead of size Misc: diff --git a/src/platform/qt/ApplicationUpdater.cpp b/src/platform/qt/ApplicationUpdater.cpp index e2d1e5e4c..21def050c 100644 --- a/src/platform/qt/ApplicationUpdater.cpp +++ b/src/platform/qt/ApplicationUpdater.cpp @@ -7,6 +7,7 @@ #include #include +#include #include "ApplicationUpdatePrompt.h" #include "ConfigController.h" @@ -71,9 +72,10 @@ QStringList ApplicationUpdater::listChannels() { } QString ApplicationUpdater::currentChannel() { - QLatin1String version(projectVersion); - QLatin1String branch(gitBranch); - if (branch == QLatin1String("heads/") + version || branch == version) { + QString version(projectVersion); + QString branch(gitBranch); + QRegularExpression stable("^(?:(?:refs/)?(?:tags|heads)/)?[0-9]+\\.[0-9]+\\.[0-9]+$"); + if (branch.contains(stable) || (branch == "(unknown)" && version.contains(stable))) { return QLatin1String("stable"); } else { return QLatin1String("dev"); From 068e1fb612f1bb9f8f4baec6d3177fb8a637571d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 6 Jan 2023 14:26:14 -0800 Subject: [PATCH 09/15] GB Audio: Fix regression in channel updating with NR5x (fixes #2775) --- src/gb/audio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gb/audio.c b/src/gb/audio.c index 8bce46e07..d2d6a9260 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -499,7 +499,7 @@ void GBAudioRun(struct GBAudio* audio, int32_t timestamp, int channels) { if (!audio->enable) { return; } - if (audio->p && channels != 0xF && timestamp - audio->lastSample > (int) (SAMPLE_INTERVAL * audio->timingFactor)) { + if (audio->p && channels != 0x1F && timestamp - audio->lastSample > (int) (SAMPLE_INTERVAL * audio->timingFactor)) { GBAudioSample(audio, timestamp); } @@ -779,7 +779,7 @@ void GBAudioSample(struct GBAudio* audio, int32_t timestamp) { for (sample = audio->sampleIndex; timestamp >= interval && sample < GB_MAX_SAMPLES; ++sample, timestamp -= interval) { int16_t sampleLeft = 0; int16_t sampleRight = 0; - GBAudioRun(audio, sample * interval + audio->lastSample, 0xF); + GBAudioRun(audio, sample * interval + audio->lastSample, 0x1F); GBAudioSamplePSG(audio, &sampleLeft, &sampleRight); sampleLeft = (sampleLeft * audio->masterVolume * 6) >> 7; sampleRight = (sampleRight * audio->masterVolume * 6) >> 7; From fa3b0d087588713d3fa7240b2ceffc36b70bfbb3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 8 Jan 2023 15:49:23 -0800 Subject: [PATCH 10/15] Scripting: Fix internal socket header --- include/mgba/internal/script/socket.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/mgba/internal/script/socket.h b/include/mgba/internal/script/socket.h index 014a765bb..98953fb80 100644 --- a/include/mgba/internal/script/socket.h +++ b/include/mgba/internal/script/socket.h @@ -6,6 +6,10 @@ #ifndef M_SCRIPT_SOCKET_H #define M_SCRIPT_SOCKET_H +#include + +CXX_GUARD_START + enum mSocketErrorCode { mSCRIPT_SOCKERR_UNKNOWN_ERROR = -1, mSCRIPT_SOCKERR_OK = 0, @@ -22,4 +26,6 @@ enum mSocketErrorCode { mSCRIPT_SOCKERR_UNSUPPORTED, }; +CXX_GUARD_END + #endif From 70e6470e8bc792d31920733fb18753c38948441d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 8 Jan 2023 23:59:36 -0800 Subject: [PATCH 11/15] Qt: Fix minor leak --- src/platform/qt/ReportView.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform/qt/ReportView.cpp b/src/platform/qt/ReportView.cpp index 61a7a2cd1..494f45a64 100644 --- a/src/platform/qt/ReportView.cpp +++ b/src/platform/qt/ReportView.cpp @@ -308,6 +308,7 @@ void ReportView::generateReport() { deferredBinaries.append(qMakePair(QString("Save %1").arg(winId), save)); } mStateExtdataDeinit(&extdata); + vf->close(vf); } } } else { From 9df06383b575c0fad5fc4a2846bcb65cfcdd99c9 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 9 Jan 2023 00:09:25 -0800 Subject: [PATCH 12/15] Qt: Work around Mesa issue 8035 --- src/platform/qt/DisplayGL.cpp | 12 ++++++++++++ src/platform/qt/OpenGLBug.cpp | 5 +++++ src/platform/qt/OpenGLBug.h | 4 ++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index 0528922fb..896f3acaf 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -670,8 +670,20 @@ void PainterGL::filter(bool filter) { } } +#ifndef GL_DEBUG_OUTPUT_SYNCHRONOUS +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#endif + void PainterGL::start() { makeCurrent(); +#if defined(BUILD_GLES3) && !defined(Q_OS_MAC) + if (glContextHasBug(OpenGLBug::GLTHREAD_BLOCKS_SWAP)) { + // Suggested on Discord as a way to strongly hint that glthread should be disabled + // See https://gitlab.freedesktop.org/mesa/mesa/-/issues/8035 + QOpenGLFunctions_Baseline* fn = m_gl->versionFunctions(); + fn->glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + } +#endif #if defined(BUILD_GLES2) || defined(BUILD_GLES3) if (m_supportsShaders && m_shader.passes) { diff --git a/src/platform/qt/OpenGLBug.cpp b/src/platform/qt/OpenGLBug.cpp index e00310c56..df007c1cb 100644 --- a/src/platform/qt/OpenGLBug.cpp +++ b/src/platform/qt/OpenGLBug.cpp @@ -18,6 +18,7 @@ bool glContextHasBug(OpenGLBug bug) { QOpenGLFunctions* fn = context->functions(); QString vendor(reinterpret_cast(fn->glGetString(GL_VENDOR))); QString renderer(reinterpret_cast(fn->glGetString(GL_RENDERER))); + QString version(reinterpret_cast(fn->glGetString(GL_VERSION))); switch (bug) { case OpenGLBug::CROSS_THREAD_FLUSH: @@ -26,6 +27,10 @@ bool glContextHasBug(OpenGLBug bug) { #else return vendor == "Intel"; #endif + + case OpenGLBug::GLTHREAD_BLOCKS_SWAP: + return version.contains(" Mesa "); + default: return false; } diff --git a/src/platform/qt/OpenGLBug.h b/src/platform/qt/OpenGLBug.h index 11b0bba43..5b5bc7736 100644 --- a/src/platform/qt/OpenGLBug.h +++ b/src/platform/qt/OpenGLBug.h @@ -8,8 +8,8 @@ namespace QGBA { enum class OpenGLBug { - // mgba.io/i/2761 - CROSS_THREAD_FLUSH + CROSS_THREAD_FLUSH, // mgba.io/i/2761 + GLTHREAD_BLOCKS_SWAP, // mgba.io/i/2767 }; bool glContextHasBug(OpenGLBug); From 5bb12f9238d5806ad539cd70db3f0ae37e4c6c18 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 10 Jan 2023 19:56:08 -0800 Subject: [PATCH 13/15] CHANGES: Update for 0.10.1 --- CHANGES | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 8fe044973..574e11008 100644 --- a/CHANGES +++ b/CHANGES @@ -2,18 +2,24 @@ Features: - New unlicensed GB mappers: NT (older types 1 and 2), Li Cheng, GGB-81 - Debugger: Add range watchpoints +Emulation fixes: + - GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722) +Misc: + - GB Serialize: Add missing savestate support for MBC6 and NT (newer) + - GBA: Improve detection of valid ELF ROMs + +0.10.1: (2022-01-10) Emulation fixes: - GB Audio: Fix channels 1/2 not playing when resetting volume (fixes mgba.io/i/2614) - GB Audio: Fix channel 3 volume being changed between samples (fixes mgba.io/i/1896) - GB Audio: Fix up boot sequence - GB Audio: Fix updating channels other than 2 when writing NR5x - - GB BIOS: Include timing in degenerate ArcTan2 cases (fixes mgba.io/i/2763) - GB Memory: Actually, HDMAs should start when LCD is off (fixes mgba.io/i/2662) - GB Serialize: Don't write BGP/OBP when loading SCGB state (fixes mgba.io/i/2694) - GB SIO: Further fix bidirectional transfer starting - GBA: Fix resetting key IRQ state (fixes mgba.io/i/2716) + - GBA BIOS: Include timing in degenerate ArcTan2 cases (fixes mgba.io/i/2763) - GBA Video: Ignore disabled backgrounds as OBJ blend target (fixes mgba.io/i/2489) - - GBA Video: Disable BG target 1 blending when OBJ blending (fixes mgba.io/i/2722) Other fixes: - GBA: Fix forceskip BIOS logic for multiboot ROMs (fixes mgba.io/i/2753) - GBA Cheats: Fix issues detecting unencrypted cheats (fixes mgba.io/i/2724) @@ -26,8 +32,6 @@ Other fixes: - Res: Fix species name location in Ruby/Sapphire revs 1/2 (fixes mgba.io/i/2685) - VFS: Fix minizip write returning 0 on success instead of size Misc: - - GB Serialize: Add missing savestate support for MBC6 and NT (newer) - - GBA: Improve detection of valid ELF ROMs - macOS: Add category to plist (closes mgba.io/i/2691) - macOS: Fix modern build with libepoxy (fixes mgba.io/i/2700) - Qt: Keep track of current palette preset name (fixes mgba.io/i/2680) From fff9d1264ef9b82457cd8b2bc4785c6d105b8568 Mon Sep 17 00:00:00 2001 From: TheMechasaur <88063194+TheMechasaur@users.noreply.github.com> Date: Thu, 12 Jan 2023 00:59:17 -0500 Subject: [PATCH 14/15] Correct year of release date of 0.10.1 to 2023 (#2783) --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 574e11008..3829d23fa 100644 --- a/CHANGES +++ b/CHANGES @@ -8,7 +8,7 @@ Misc: - GB Serialize: Add missing savestate support for MBC6 and NT (newer) - GBA: Improve detection of valid ELF ROMs -0.10.1: (2022-01-10) +0.10.1: (2023-01-10) Emulation fixes: - GB Audio: Fix channels 1/2 not playing when resetting volume (fixes mgba.io/i/2614) - GB Audio: Fix channel 3 volume being changed between samples (fixes mgba.io/i/1896) From 941ad5072387f4679832c9a76f4e96c08fdef35e Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 14 Jan 2023 15:51:32 -0800 Subject: [PATCH 15/15] Qt: Attempt to shorten Game Boy settings pane --- src/platform/qt/SettingsView.ui | 76 +++++++++++++++------------------ 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/src/platform/qt/SettingsView.ui b/src/platform/qt/SettingsView.ui index f0869aca5..95f71565b 100644 --- a/src/platform/qt/SettingsView.ui +++ b/src/platform/qt/SettingsView.ui @@ -6,8 +6,8 @@ 0 0 - 885 - 797 + 880 + 700 @@ -95,7 +95,7 @@ - 9 + 1 @@ -2091,45 +2091,37 @@ - - - - Default color palette only - - - gbColors - - - - - - - SGB color palette if available - - - gbColors - - - - - - - GBC color palette if available - - - gbColors - - - - - - - SGB (preferred) or GBC color palette if available - - - gbColors - - + + + + + + SGB color palette if available + + + + + + + Default color palette only + + + + + + + GBC color palette if available + + + + + + + SGB (preferred) or GBC color palette if available + + + +