Debugger: GB - Fixed crash when debugger accessed APU registers while running
This commit is contained in:
parent
15f2ee6012
commit
4c4d3c75d6
4 changed files with 17 additions and 0 deletions
|
@ -90,6 +90,9 @@ public:
|
|||
case SnesMemoryType::GbBootRom:
|
||||
case SnesMemoryType::SaveRam: //Include save ram here to avoid uninit memory read warnings on save ram
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -161,10 +161,19 @@ void GbApu::ClockFrameSequencer()
|
|||
_state.FrameSequenceStep = (_state.FrameSequenceStep + 1) & 0x07;
|
||||
}
|
||||
|
||||
uint8_t GbApu::Peek(uint16_t addr)
|
||||
{
|
||||
return InternalRead(addr);
|
||||
}
|
||||
|
||||
uint8_t GbApu::Read(uint16_t addr)
|
||||
{
|
||||
Run();
|
||||
return InternalRead(addr);
|
||||
}
|
||||
|
||||
uint8_t GbApu::InternalRead(uint16_t addr)
|
||||
{
|
||||
switch(addr) {
|
||||
case 0xFF10: case 0xFF11: case 0xFF12: case 0xFF13: case 0xFF14:
|
||||
return _square1->Read(addr - 0xFF10);
|
||||
|
|
|
@ -40,6 +40,8 @@ private:
|
|||
|
||||
GbApuState _state = {};
|
||||
|
||||
uint8_t InternalRead(uint16_t addr);
|
||||
|
||||
public:
|
||||
GbApu();
|
||||
virtual ~GbApu();
|
||||
|
@ -54,6 +56,7 @@ public:
|
|||
|
||||
void ClockFrameSequencer();
|
||||
|
||||
uint8_t Peek(uint16_t addr);
|
||||
uint8_t Read(uint16_t addr);
|
||||
void Write(uint16_t addr, uint8_t value);
|
||||
|
||||
|
|
|
@ -231,6 +231,8 @@ uint8_t GbMemoryManager::PeekRegister(uint16_t addr)
|
|||
return _ppu->PeekOam((uint8_t)addr);
|
||||
} else if(addr >= 0x8000 && addr <= 0x9FFF) {
|
||||
return _ppu->PeekVram(addr);
|
||||
} else if(addr >= 0xFF10 && addr <= 0xFF3F) {
|
||||
return _apu->Peek(addr);
|
||||
} else {
|
||||
return ReadRegister(addr);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue