From 239ce987daa3bf8689152cbeae9298896298f54e Mon Sep 17 00:00:00 2001 From: goyuken Date: Sat, 1 Feb 2014 03:45:28 +0000 Subject: [PATCH] GB: fix problems with STOP opcode? maybe? maybe not? --- libgambatte/src/memory.cpp | 7 +++++-- output/dll/libgambatte.dll | Bin 176640 -> 176640 bytes 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/libgambatte/src/memory.cpp b/libgambatte/src/memory.cpp index 66b4c6c5a2..0c231426cb 100644 --- a/libgambatte/src/memory.cpp +++ b/libgambatte/src/memory.cpp @@ -322,11 +322,14 @@ unsigned long Memory::stop(unsigned long cycleCounter) { intreq.setEventTime(cycleCounter + (isDoubleSpeed() ? (intreq.eventTime(END) - cycleCounter) << 1 : (intreq.eventTime(END) - cycleCounter) >> 1)); } + // when switching speed, it seems that the CPU spontaneously restarts soon? + // otherwise, the cpu should be allowed to stay halted as long as needed + // so only execute this line when switching speed + intreq.setEventTime(cycleCounter + 0x20000 + isDoubleSpeed() * 8); } intreq.halt(); - intreq.setEventTime(cycleCounter + 0x20000 + isDoubleSpeed() * 8); - + return cycleCounter; } diff --git a/output/dll/libgambatte.dll b/output/dll/libgambatte.dll index 68495d184db106289ab6e77e45ddfadc60d0fba4..d523ae44dd057e5f6c47f88c59a2a71beed62942 100644 GIT binary patch delta 6607 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