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);
|
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
|
void Write(uint32_t addr, uint8_t value) override
|
||||||
|
|
|
@ -445,7 +445,7 @@ uint8_t Cx4::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cx4::PeekBlock(uint8_t* output)
|
void Cx4::PeekBlock(uint32_t addr, uint8_t* output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,7 +122,7 @@ public:
|
||||||
void Serialize(Serializer &s) override;
|
void Serialize(Serializer &s) override;
|
||||||
|
|
||||||
uint8_t Peek(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;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
||||||
uint8_t* DebugGetDataRam();
|
uint8_t* DebugGetDataRam();
|
||||||
|
|
|
@ -583,7 +583,7 @@ uint8_t Gsu::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gsu::PeekBlock(uint8_t *output)
|
void Gsu::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,7 @@ public:
|
||||||
|
|
||||||
uint8_t Read(uint32_t addr) override;
|
uint8_t Read(uint32_t addr) override;
|
||||||
uint8_t Peek(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;
|
void Write(uint32_t addr, uint8_t value) override;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ public:
|
||||||
return Read(addr);
|
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++) {
|
for(int i = 0; i < 0x1000; i++) {
|
||||||
output[i] = Read(i);
|
output[i] = Read(i);
|
||||||
|
|
|
@ -43,7 +43,7 @@ public:
|
||||||
return Read(addr);
|
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++) {
|
for(int i = 0; i < 0x1000; i++) {
|
||||||
output[i] = Read(i);
|
output[i] = Read(i);
|
||||||
|
|
|
@ -10,7 +10,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
virtual uint8_t Read(uint32_t addr) = 0;
|
virtual uint8_t Read(uint32_t addr) = 0;
|
||||||
virtual uint8_t Peek(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;
|
virtual void Write(uint32_t addr, uint8_t value) = 0;
|
||||||
|
|
||||||
__forceinline SnesMemoryType GetMemoryType()
|
__forceinline SnesMemoryType GetMemoryType()
|
||||||
|
|
|
@ -78,7 +78,7 @@ void MemoryMappings::PeekBlock(uint32_t addr, uint8_t *dest)
|
||||||
{
|
{
|
||||||
IMemoryHandler* handler = GetHandler(addr);
|
IMemoryHandler* handler = GetHandler(addr);
|
||||||
if(handler) {
|
if(handler) {
|
||||||
handler->PeekBlock(dest);
|
handler->PeekBlock(addr & ~0xFFF, dest);
|
||||||
} else {
|
} else {
|
||||||
memset(dest, 0, 0x1000);
|
memset(dest, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,7 +223,7 @@ uint8_t NecDsp::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NecDsp::PeekBlock(uint8_t *output)
|
void NecDsp::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ public:
|
||||||
void Write(uint32_t addr, uint8_t value) override;
|
void Write(uint32_t addr, uint8_t value) override;
|
||||||
|
|
||||||
uint8_t Peek(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;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
||||||
uint8_t* DebugGetProgramRom();
|
uint8_t* DebugGetProgramRom();
|
||||||
|
|
|
@ -87,7 +87,7 @@ uint8_t Obc1::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Obc1::PeekBlock(uint8_t *output)
|
void Obc1::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,6 @@ public:
|
||||||
void Serialize(Serializer & s) override;
|
void Serialize(Serializer & s) override;
|
||||||
|
|
||||||
uint8_t Peek(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;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
};
|
};
|
|
@ -34,7 +34,7 @@ public:
|
||||||
return _ram[addr & _mask];
|
return _ram[addr & _mask];
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeekBlock(uint8_t *output) override
|
void PeekBlock(uint32_t addr, uint8_t *output) override
|
||||||
{
|
{
|
||||||
if(_mask != 0xFFF) {
|
if(_mask != 0xFFF) {
|
||||||
for(int i = 0; i < 0x1000; i++) {
|
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
|
//Avoid side effects for now
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
|
|
|
@ -48,7 +48,7 @@ uint8_t RegisterHandlerB::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegisterHandlerB::PeekBlock(uint8_t *output)
|
void RegisterHandlerB::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
//Avoid side effects for now
|
//Avoid side effects for now
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
|
|
|
@ -28,7 +28,7 @@ public:
|
||||||
|
|
||||||
uint8_t Read(uint32_t addr) override;
|
uint8_t Read(uint32_t addr) override;
|
||||||
uint8_t Peek(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;
|
void Write(uint32_t addr, uint8_t value) override;
|
||||||
|
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
|
@ -467,11 +467,9 @@ uint8_t Sa1::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sa1::PeekBlock(uint8_t *output)
|
void Sa1::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 0x1000; i++) {
|
memset(output, 0, 0x1000);
|
||||||
output[i] = Peek(i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sa1::Write(uint32_t addr, uint8_t value)
|
void Sa1::Write(uint32_t addr, uint8_t value)
|
||||||
|
|
|
@ -74,7 +74,7 @@ public:
|
||||||
void Serialize(Serializer & s) override;
|
void Serialize(Serializer & s) override;
|
||||||
uint8_t Read(uint32_t addr) override;
|
uint8_t Read(uint32_t addr) override;
|
||||||
uint8_t Peek(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;
|
void Write(uint32_t addr, uint8_t value) override;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
||||||
|
|
|
@ -20,15 +20,7 @@ private:
|
||||||
return ((_state->Sa1BwBank * 0x2000) | (addr & 0x1FFF));
|
return ((_state->Sa1BwBank * 0x2000) | (addr & 0x1FFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
__forceinline uint8_t InternalRead(uint32_t addr)
|
||||||
Sa1BwRamHandler(uint8_t* bwRam, uint32_t bwRamSize, Sa1State* state)
|
|
||||||
{
|
|
||||||
_ram = bwRam;
|
|
||||||
_mask = bwRamSize - 1;
|
|
||||||
_state = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t Read(uint32_t addr) override
|
|
||||||
{
|
{
|
||||||
if((addr & 0x600000) == 0x600000) {
|
if((addr & 0x600000) == 0x600000) {
|
||||||
return ReadBitmapMode(addr - 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++) {
|
for(int i = 0; i < 0x1000; i++) {
|
||||||
output[i] = Read(i);
|
output[i] = InternalRead(addr + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,9 +101,9 @@ public:
|
||||||
{
|
{
|
||||||
AddressInfo info;
|
AddressInfo info;
|
||||||
if((addr & 0x600000) == 0x600000) {
|
if((addr & 0x600000) == 0x600000) {
|
||||||
info.Address = addr - 0x600000;
|
info.Address = ((addr - 0x600000) >> (_state->BwRam2BppMode ? 2 : 1)) & _mask;
|
||||||
} else {
|
} else {
|
||||||
addr = GetBwRamAddress(addr);
|
addr = GetBwRamAddress(addr) & _mask;
|
||||||
}
|
}
|
||||||
info.Type = SnesMemoryType::SaveRam;
|
info.Type = SnesMemoryType::SaveRam;
|
||||||
return info;
|
return info;
|
||||||
|
|
|
@ -8,6 +8,15 @@ class Sa1IRamHandler : public IMemoryHandler
|
||||||
private:
|
private:
|
||||||
uint8_t * _ram;
|
uint8_t * _ram;
|
||||||
|
|
||||||
|
__forceinline uint8_t InternalRead(uint32_t addr)
|
||||||
|
{
|
||||||
|
if(addr & 0x800) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return _ram[addr & 0x7FF];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Sa1IRamHandler(uint8_t *ram)
|
Sa1IRamHandler(uint8_t *ram)
|
||||||
{
|
{
|
||||||
|
@ -17,22 +26,18 @@ public:
|
||||||
|
|
||||||
uint8_t Read(uint32_t addr) override
|
uint8_t Read(uint32_t addr) override
|
||||||
{
|
{
|
||||||
if(addr & 0x800) {
|
return InternalRead(addr);
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
return _ram[addr & 0x7FF];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t Peek(uint32_t addr) override
|
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++) {
|
for(int i = 0; i < 0x1000; i++) {
|
||||||
output[i] = Read(i);
|
output[i] = InternalRead(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,9 +58,9 @@ public:
|
||||||
return Read(addr);
|
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
|
void Write(uint32_t addr, uint8_t value) override
|
||||||
|
|
|
@ -109,7 +109,7 @@ uint8_t Sdd1::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sdd1::PeekBlock(uint8_t* output)
|
void Sdd1::PeekBlock(uint32_t addr, uint8_t* output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ public:
|
||||||
void Serialize(Serializer &s) override;
|
void Serialize(Serializer &s) override;
|
||||||
uint8_t Read(uint32_t addr) override;
|
uint8_t Read(uint32_t addr) override;
|
||||||
uint8_t Peek(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;
|
void Write(uint32_t addr, uint8_t value) override;
|
||||||
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
void Reset() override;
|
void Reset() override;
|
||||||
|
|
|
@ -68,7 +68,7 @@ uint8_t Sdd1Mmc::Peek(uint32_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sdd1Mmc::PeekBlock(uint8_t *output)
|
void Sdd1Mmc::PeekBlock(uint32_t addr, uint8_t *output)
|
||||||
{
|
{
|
||||||
memset(output, 0, 0x1000);
|
memset(output, 0, 0x1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public:
|
||||||
// Inherited via IMemoryHandler
|
// Inherited via IMemoryHandler
|
||||||
virtual uint8_t Read(uint32_t addr) override;
|
virtual uint8_t Read(uint32_t addr) override;
|
||||||
virtual uint8_t Peek(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 void Write(uint32_t addr, uint8_t value) override;
|
||||||
virtual AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
virtual AddressInfo GetAbsoluteAddress(uint32_t address) override;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue