Debugger: SA1 - Fixed display for BWRAM

This commit is contained in:
Sour 2019-12-08 11:54:19 -05:00
parent 4a7e6df39b
commit 234c494c3e
26 changed files with 60 additions and 52 deletions

View file

@ -36,9 +36,9 @@ public:
return Read(addr);
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
_handler->PeekBlock(output);
_handler->PeekBlock(addr, output);
}
void Write(uint32_t addr, uint8_t value) override

View file

@ -445,7 +445,7 @@ uint8_t Cx4::Peek(uint32_t addr)
return 0;
}
void Cx4::PeekBlock(uint8_t* output)
void Cx4::PeekBlock(uint32_t addr, uint8_t* output)
{
memset(output, 0, 0x1000);
}

View file

@ -122,7 +122,7 @@ public:
void Serialize(Serializer &s) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t* output) override;
void PeekBlock(uint32_t addr, uint8_t* output) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;
uint8_t* DebugGetDataRam();

View file

@ -583,7 +583,7 @@ uint8_t Gsu::Peek(uint32_t addr)
return 0;
}
void Gsu::PeekBlock(uint8_t *output)
void Gsu::PeekBlock(uint32_t addr, uint8_t *output)
{
memset(output, 0, 0x1000);
}

View file

@ -159,7 +159,7 @@ public:
uint8_t Read(uint32_t addr) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t *output) override;
void PeekBlock(uint32_t addr, uint8_t *output) override;
void Write(uint32_t addr, uint8_t value) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;

View file

@ -32,7 +32,7 @@ public:
return Read(addr);
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
for(int i = 0; i < 0x1000; i++) {
output[i] = Read(i);

View file

@ -43,7 +43,7 @@ public:
return Read(addr);
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
for(int i = 0; i < 0x1000; i++) {
output[i] = Read(i);

View file

@ -10,7 +10,7 @@ protected:
public:
virtual uint8_t Read(uint32_t addr) = 0;
virtual uint8_t Peek(uint32_t addr) = 0;
virtual void PeekBlock(uint8_t *output) = 0;
virtual void PeekBlock(uint32_t addr, uint8_t *output) = 0;
virtual void Write(uint32_t addr, uint8_t value) = 0;
__forceinline SnesMemoryType GetMemoryType()

View file

@ -78,7 +78,7 @@ void MemoryMappings::PeekBlock(uint32_t addr, uint8_t *dest)
{
IMemoryHandler* handler = GetHandler(addr);
if(handler) {
handler->PeekBlock(dest);
handler->PeekBlock(addr & ~0xFFF, dest);
} else {
memset(dest, 0, 0x1000);
}

View file

@ -223,7 +223,7 @@ uint8_t NecDsp::Peek(uint32_t addr)
return 0;
}
void NecDsp::PeekBlock(uint8_t *output)
void NecDsp::PeekBlock(uint32_t addr, uint8_t *output)
{
memset(output, 0, 0x1000);
}

View file

@ -63,7 +63,7 @@ public:
void Write(uint32_t addr, uint8_t value) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t * output) override;
void PeekBlock(uint32_t addr, uint8_t * output) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;
uint8_t* DebugGetProgramRom();

View file

@ -87,7 +87,7 @@ uint8_t Obc1::Peek(uint32_t addr)
return 0;
}
void Obc1::PeekBlock(uint8_t *output)
void Obc1::PeekBlock(uint32_t addr, uint8_t *output)
{
memset(output, 0, 0x1000);
}

View file

@ -28,6 +28,6 @@ public:
void Serialize(Serializer & s) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t * output) override;
void PeekBlock(uint32_t addr, uint8_t * output) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;
};

View file

@ -34,7 +34,7 @@ public:
return _ram[addr & _mask];
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
if(_mask != 0xFFF) {
for(int i = 0; i < 0x1000; i++) {

View file

@ -45,7 +45,7 @@ public:
}
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
//Avoid side effects for now
memset(output, 0, 0x1000);

View file

@ -48,7 +48,7 @@ uint8_t RegisterHandlerB::Peek(uint32_t addr)
return 0;
}
void RegisterHandlerB::PeekBlock(uint8_t *output)
void RegisterHandlerB::PeekBlock(uint32_t addr, uint8_t *output)
{
//Avoid side effects for now
memset(output, 0, 0x1000);

View file

@ -28,7 +28,7 @@ public:
uint8_t Read(uint32_t addr) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t *output) override;
void PeekBlock(uint32_t addr, uint8_t *output) override;
void Write(uint32_t addr, uint8_t value) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;

View file

@ -467,11 +467,9 @@ uint8_t Sa1::Peek(uint32_t addr)
return 0;
}
void Sa1::PeekBlock(uint8_t *output)
void Sa1::PeekBlock(uint32_t addr, uint8_t *output)
{
for(int i = 0; i < 0x1000; i++) {
output[i] = Peek(i);
}
memset(output, 0, 0x1000);
}
void Sa1::Write(uint32_t addr, uint8_t value)

View file

@ -74,7 +74,7 @@ public:
void Serialize(Serializer & s) override;
uint8_t Read(uint32_t addr) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t * output) override;
void PeekBlock(uint32_t addr, uint8_t *output) override;
void Write(uint32_t addr, uint8_t value) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;

View file

@ -20,15 +20,7 @@ private:
return ((_state->Sa1BwBank * 0x2000) | (addr & 0x1FFF));
}
public:
Sa1BwRamHandler(uint8_t* bwRam, uint32_t bwRamSize, Sa1State* state)
{
_ram = bwRam;
_mask = bwRamSize - 1;
_state = state;
}
uint8_t Read(uint32_t addr) override
__forceinline uint8_t InternalRead(uint32_t addr)
{
if((addr & 0x600000) == 0x600000) {
return ReadBitmapMode(addr - 0x600000);
@ -44,15 +36,28 @@ public:
}
}
uint8_t Peek(uint32_t addr) override
public:
Sa1BwRamHandler(uint8_t* bwRam, uint32_t bwRamSize, Sa1State* state)
{
return Read(addr);
_ram = bwRam;
_mask = bwRamSize - 1;
_state = state;
}
void PeekBlock(uint8_t *output) override
uint8_t Read(uint32_t addr) override
{
return InternalRead(addr);
}
uint8_t Peek(uint32_t addr) override
{
return InternalRead(addr);
}
void PeekBlock(uint32_t addr, uint8_t *output) override
{
for(int i = 0; i < 0x1000; i++) {
output[i] = Read(i);
output[i] = InternalRead(addr + i);
}
}
@ -96,9 +101,9 @@ public:
{
AddressInfo info;
if((addr & 0x600000) == 0x600000) {
info.Address = addr - 0x600000;
info.Address = ((addr - 0x600000) >> (_state->BwRam2BppMode ? 2 : 1)) & _mask;
} else {
addr = GetBwRamAddress(addr);
addr = GetBwRamAddress(addr) & _mask;
}
info.Type = SnesMemoryType::SaveRam;
return info;

View file

@ -8,6 +8,15 @@ class Sa1IRamHandler : public IMemoryHandler
private:
uint8_t * _ram;
__forceinline uint8_t InternalRead(uint32_t addr)
{
if(addr & 0x800) {
return 0;
} else {
return _ram[addr & 0x7FF];
}
}
public:
Sa1IRamHandler(uint8_t *ram)
{
@ -17,22 +26,18 @@ public:
uint8_t Read(uint32_t addr) override
{
if(addr & 0x800) {
return 0;
} else {
return _ram[addr & 0x7FF];
}
return InternalRead(addr);
}
uint8_t Peek(uint32_t addr) override
{
return Read(addr);
return InternalRead(addr);
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
for(int i = 0; i < 0x1000; i++) {
output[i] = Read(i);
output[i] = InternalRead(i);
}
}

View file

@ -58,9 +58,9 @@ public:
return Read(addr);
}
void PeekBlock(uint8_t *output) override
void PeekBlock(uint32_t addr, uint8_t *output) override
{
_handler->PeekBlock(output);
_handler->PeekBlock(addr, output);
}
void Write(uint32_t addr, uint8_t value) override

View file

@ -109,7 +109,7 @@ uint8_t Sdd1::Peek(uint32_t addr)
return 0;
}
void Sdd1::PeekBlock(uint8_t* output)
void Sdd1::PeekBlock(uint32_t addr, uint8_t* output)
{
memset(output, 0, 0x1000);
}

View file

@ -19,7 +19,7 @@ public:
void Serialize(Serializer &s) override;
uint8_t Read(uint32_t addr) override;
uint8_t Peek(uint32_t addr) override;
void PeekBlock(uint8_t* output) override;
void PeekBlock(uint32_t addr, uint8_t* output) override;
void Write(uint32_t addr, uint8_t value) override;
AddressInfo GetAbsoluteAddress(uint32_t address) override;
void Reset() override;

View file

@ -68,7 +68,7 @@ uint8_t Sdd1Mmc::Peek(uint32_t addr)
return 0;
}
void Sdd1Mmc::PeekBlock(uint8_t *output)
void Sdd1Mmc::PeekBlock(uint32_t addr, uint8_t *output)
{
memset(output, 0, 0x1000);
}

View file

@ -25,7 +25,7 @@ public:
// Inherited via IMemoryHandler
virtual uint8_t Read(uint32_t addr) override;
virtual uint8_t Peek(uint32_t addr) override;
virtual void PeekBlock(uint8_t * output) override;
virtual void PeekBlock(uint32_t addr, uint8_t * output) override;
virtual void Write(uint32_t addr, uint8_t value) override;
virtual AddressInfo GetAbsoluteAddress(uint32_t address) override;