diff --git a/Assets/dll/melonDS.wbx.zst b/Assets/dll/melonDS.wbx.zst index a3f4403ec1..9c3ff58e3d 100644 Binary files a/Assets/dll/melonDS.wbx.zst and b/Assets/dll/melonDS.wbx.zst differ diff --git a/waterbox/melon/BizInterface.cpp b/waterbox/melon/BizInterface.cpp index 1062aa9e3a..7a441df24a 100644 --- a/waterbox/melon/BizInterface.cpp +++ b/waterbox/melon/BizInterface.cpp @@ -17,7 +17,6 @@ #include static bool SkipFW; -static time_t CurTime; static bool GLPresentation; struct NDSTime @@ -140,7 +139,6 @@ ECL_EXPORT const char* Init(InitConfig* initConfig, struct MyFrameInfo : public FrameInfo { - s64 Time; u32 Keys; u8 TouchX; u8 TouchY; @@ -190,7 +188,8 @@ ECL_EXPORT void FrameAdvance(MyFrameInfo* f) if (f->Keys & 0x1000) { - NDS::TouchScreen(f->TouchX, f->TouchY); + // move touch coords incrementally to our new touch point + NDS::MoveTouch(f->TouchX, f->TouchY); } else { @@ -222,10 +221,14 @@ ECL_EXPORT void FrameAdvance(MyFrameInfo* f) } } - CurTime = f->Time; - NDS::RunFrame(); + if (f->Keys & 0x1000) + { + // finalize touch after emulation finishes + NDS::TouchScreen(f->TouchX, f->TouchY); + } + if (!GPU3D::CurrentRenderer->Accelerated) { auto softRenderer = reinterpret_cast(GPU3D::CurrentRenderer.get()); diff --git a/waterbox/melon/melonDS b/waterbox/melon/melonDS index 0506a84cde..51e3886de1 160000 --- a/waterbox/melon/melonDS +++ b/waterbox/melon/melonDS @@ -1 +1 @@ -Subproject commit 0506a84cdede08a4ebc7f71799265d91ac1d79dc +Subproject commit 51e3886de1d01097b18dbc783eee175a012fc76c