Fixed SRAM related issues - Caused Metroid/Kirby slowdowns. Fixed console object destruction to allow save to disk at destruction time.
This commit is contained in:
parent
88d57ec12e
commit
7180c64d50
3 changed files with 16 additions and 12 deletions
|
@ -167,7 +167,7 @@ class BaseMapper : public IMemoryHandler, public Snapshotable
|
|||
InitMapper();
|
||||
}
|
||||
|
||||
~BaseMapper()
|
||||
virtual ~BaseMapper()
|
||||
{
|
||||
delete[] _prgRAM;
|
||||
delete[] _chrRAM;
|
||||
|
|
|
@ -27,11 +27,16 @@ MemoryManager::MemoryManager(shared_ptr<BaseMapper> mapper)
|
|||
memset(_vramWriteHandlers, 0, VRAMSize * sizeof(IMemoryHandler*));
|
||||
|
||||
//Load battery data if present
|
||||
_mapper->LoadBattery(_SRAM);
|
||||
if(_mapper->HasBattery()) {
|
||||
_mapper->LoadBattery(_SRAM);
|
||||
}
|
||||
}
|
||||
|
||||
MemoryManager::~MemoryManager()
|
||||
{
|
||||
if(_mapper->HasBattery()) {
|
||||
_mapper->SaveBattery(_SRAM);
|
||||
}
|
||||
delete[] _internalRAM;
|
||||
delete[] _videoRAM;
|
||||
delete[] _SRAM;
|
||||
|
@ -120,10 +125,7 @@ void MemoryManager::Write(uint16_t addr, uint8_t value)
|
|||
} else if(addr <= 0x5FFF) {
|
||||
_expansionRAM[addr & 0x1FFF] = value;
|
||||
} else if(addr <= 0x7FFF) {
|
||||
if(_SRAM[addr & 0x1FFF] != value) {
|
||||
_SRAM[addr & 0x1FFF] = value;
|
||||
_mapper->SaveBattery(_SRAM);
|
||||
}
|
||||
_SRAM[addr & 0x1FFF] = value;
|
||||
} else {
|
||||
WriteRegister(addr, value);
|
||||
}
|
||||
|
|
|
@ -213,15 +213,17 @@ namespace NES {
|
|||
_soundManager->Reset();
|
||||
if(_console) {
|
||||
_console->Stop();
|
||||
if(powerOff) {
|
||||
_console.release();
|
||||
} else {
|
||||
_renderer->SetFlags(UIFlags::ShowPauseScreen);
|
||||
}
|
||||
}
|
||||
if(_emuThread) {
|
||||
_emuThread->join();
|
||||
_emuThread.release();
|
||||
|
||||
if(powerOff) {
|
||||
_console.reset(nullptr);
|
||||
} else {
|
||||
_renderer->SetFlags(UIFlags::ShowPauseScreen);
|
||||
}
|
||||
|
||||
_emuThread.reset(nullptr);
|
||||
}
|
||||
|
||||
SetMenuEnabled(ID_NES_PAUSE, false);
|
||||
|
|
Loading…
Add table
Reference in a new issue