diff --git a/Core/Gameboy/Carts/GbMbc3.h b/Core/Gameboy/Carts/GbMbc3.h index c4f6fd77..d6624517 100644 --- a/Core/Gameboy/Carts/GbMbc3.h +++ b/Core/Gameboy/Carts/GbMbc3.h @@ -26,6 +26,7 @@ public: void InitCart() override { _memoryManager->MapRegisters(0x0000, 0x7FFF, RegisterAccess::Write); + _rtc.Init(); } void RefreshMappings() override diff --git a/Core/Gameboy/Carts/GbMbc3Rtc.h b/Core/Gameboy/Carts/GbMbc3Rtc.h index 37d469fb..f28fd2ad 100644 --- a/Core/Gameboy/Carts/GbMbc3Rtc.h +++ b/Core/Gameboy/Carts/GbMbc3Rtc.h @@ -26,8 +26,7 @@ public: GbMbc3Rtc(Emulator* emu) { _emu = emu; - _lastMasterClock = 0; - LoadBattery(); + Init(); } ~GbMbc3Rtc() @@ -35,6 +34,12 @@ public: SaveBattery(); } + void Init() + { + _lastMasterClock = 0; + LoadBattery(); + } + void LoadBattery() { vector rtcData = _emu->GetBatteryManager()->LoadBattery(".rtc"); diff --git a/Core/SNES/Coprocessors/SGB/SuperGameboy.cpp b/Core/SNES/Coprocessors/SGB/SuperGameboy.cpp index 3bc1d069..a29ab4e6 100644 --- a/Core/SNES/Coprocessors/SGB/SuperGameboy.cpp +++ b/Core/SNES/Coprocessors/SGB/SuperGameboy.cpp @@ -46,8 +46,11 @@ SuperGameboy::~SuperGameboy() void SuperGameboy::Reset() { - _control = 0; + _control = 0x01; + _effectiveClockRate = 0; + _clockOffset = 0; _resetClock = 0; + UpdateClockRatio(); memset(_input, 0, sizeof(_input)); _inputIndex = 0;