Debugger: SA1 - Fixed display for BWRAM
This commit is contained in:
parent
4a7e6df39b
commit
234c494c3e
26 changed files with 60 additions and 52 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
|
@ -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++) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue