diff --git a/CHANGES b/CHANGES index 98592cc77..f4512cdbf 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Other fixes: - Qt: Fix saved scale not getting set on resize (fixes mgba.io/i/1074) - CMake: Fix .deb imagemagick dependencies - Qt: Fix crash in sprite viewer magnification (fixes mgba.io/i/1362) + - 3DS: Ensure core 2 can be used for threaded renderer (fixes mgba.io/i/1371) Misc: - Qt: Add missing HEVC NVENC option (fixes mgba.io/i/1323) - Qt: Improve camera initialization diff --git a/src/platform/3ds/main.c b/src/platform/3ds/main.c index f08290edc..760d84d87 100644 --- a/src/platform/3ds/main.c +++ b/src/platform/3ds/main.c @@ -103,6 +103,7 @@ static C3D_RenderTarget* upscaleBuffer; static C3D_Tex upscaleBufferTex; static aptHookCookie cookie; +static bool core2; extern bool allocateRomBuffer(void); @@ -252,9 +253,7 @@ static void _resetCamera(struct m3DSImageSource* imageSource) { } static void _setup(struct mGUIRunner* runner) { - bool n3ds = false; - APT_CheckNew3DS(&n3ds); - if (n3ds) { + if (core2) { mCoreConfigSetDefaultIntValue(&runner->config, "threadedVideo", 1); mCoreLoadForeignConfig(runner->core, &runner->config); } @@ -746,6 +745,10 @@ static void _postAudioBuffer(struct mAVStream* stream, blip_t* left, blip_t* rig } } +THREAD_ENTRY _core2Test(void* context) { + UNUSED(context); +} + int main() { rotation.d.sample = _sampleRotation; rotation.d.readTiltX = _readTiltX; @@ -946,6 +949,12 @@ int main() { APT_SetAppCpuTimeLimit(20); runner.autosave.thread = threadCreate(mGUIAutosaveThread, &runner.autosave, 0x4000, 0x1F, 1, true); + Thread thread2; + if (ThreadCreate(&thread2, _core2Test, NULL) == 0) { + core2 = true; + ThreadJoin(thread2); + } + mGUIInit(&runner, "3ds"); _map3DSKey(&runner.params.keyMap, KEY_X, GUI_INPUT_CANCEL);