Debugger: Lua - Remove "debug" read/write API (replaced by cpuDebug & ppuDebug enum values)

This commit is contained in:
Souryo 2017-10-07 13:31:28 -04:00
parent ba8540e4f2
commit 4245561034
4 changed files with 45 additions and 88 deletions

View file

@ -803,9 +803,12 @@ uint8_t BaseMapper::InternalReadVRAM(uint16_t addr)
return _vramOpenBusValue >= 0 ? _vramOpenBusValue : addr;
}
uint8_t BaseMapper::DebugReadVRAM(uint16_t addr)
uint8_t BaseMapper::DebugReadVRAM(uint16_t addr, bool disableSideEffects)
{
ProcessVramAccess(addr);
if(!disableSideEffects) {
NotifyVRAMAddressChange(addr);
}
return InternalReadVRAM(addr);
}
@ -814,9 +817,13 @@ uint8_t BaseMapper::MapperReadVRAM(uint16_t addr, MemoryOperationType operationT
return InternalReadVRAM(addr);
}
void BaseMapper::InternalWriteVRAM(uint16_t addr, uint8_t value)
void BaseMapper::DebugWriteVRAM(uint16_t addr, uint8_t value, bool disableSideEffects)
{
if(_chrPages[addr >> 8]) {
ProcessVramAccess(addr);
if(!disableSideEffects) {
NotifyVRAMAddressChange(addr);
}
if(_chrPageAccessType[addr >> 8] & MemoryAccessType::Write) {
_chrPages[addr >> 8][(uint8_t)addr] = value;
}
}

View file

@ -186,11 +186,11 @@ public:
return value;
}
void InternalWriteVRAM(uint16_t addr, uint8_t value);
void DebugWriteVRAM(uint16_t addr, uint8_t value, bool disableSideEffects = true);
void WriteVRAM(uint16_t addr, uint8_t value);
__forceinline void ProcessVramAccess(uint16_t &addr);
uint8_t DebugReadVRAM(uint16_t addr);
uint8_t DebugReadVRAM(uint16_t addr, bool disableSideEffects = true);
static void InitializeRam(void* data, uint32_t length);

View file

@ -57,12 +57,8 @@ int LuaApi::GetLibrary(lua_State *lua)
static const luaL_Reg apilib[] = {
{ "read", LuaApi::ReadMemory },
{ "write", LuaApi::WriteMemory },
{ "debugRead", LuaApi::DebugReadMemory },
{ "debugWrite", LuaApi::DebugWriteMemory },
{ "readWord", LuaApi::ReadMemoryWord },
{ "writeWord", LuaApi::WriteMemoryWord },
{ "debugReadWord", LuaApi::DebugReadMemoryWord },
{ "debugWriteWord", LuaApi::DebugWriteMemoryWord },
{ "revertPrgChrChanges", LuaApi::RevertPrgChrChanges },
{ "addMemoryCallback", LuaApi::RegisterMemoryCallback },
{ "removeMemoryCallback", LuaApi::UnregisterMemoryCallback },
@ -114,6 +110,8 @@ int LuaApi::GetLibrary(lua_State *lua)
lua_pushintvalue(chrRam, DebugMemoryType::ChrRam);
lua_pushintvalue(workRam, DebugMemoryType::WorkRam);
lua_pushintvalue(saveRam, DebugMemoryType::SaveRam);
lua_pushintvalue(cpuDebug, DebugMemoryType::CpuMemory | 0x100);
lua_pushintvalue(ppuDebug, DebugMemoryType::PpuMemory | 0x100);
lua_settable(lua, -3);
lua_pushliteral(lua, "memCallbackType");
@ -150,11 +148,13 @@ int LuaApi::ReadMemory(lua_State *lua)
LuaCallHelper l(lua);
l.ForceParamCount(3);
bool returnSignedValue = l.ReadBool();
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int type = l.ReadInteger();
bool disableSideEffects = (type & 0x100) == 0x100;
DebugMemoryType memType = (DebugMemoryType)(type & 0xFF);
int address = l.ReadInteger();
checkminparams(2);
errorCond(address < 0, "address must be >= 0");
uint8_t value = _memoryDumper->GetMemoryValue(type, address, false);
uint8_t value = _memoryDumper->GetMemoryValue(memType, address, disableSideEffects);
l.Return(returnSignedValue ? (int8_t)value : value);
return l.ReturnCount();
}
@ -162,40 +162,15 @@ int LuaApi::ReadMemory(lua_State *lua)
int LuaApi::WriteMemory(lua_State *lua)
{
LuaCallHelper l(lua);
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int type = l.ReadInteger();
bool disableSideEffects = (type & 0x100) == 0x100;
DebugMemoryType memType = (DebugMemoryType)(type & 0xFF);
int value = l.ReadInteger();
int address = l.ReadInteger();
checkparams();
errorCond(value > 255 || value < -128, "value out of range");
errorCond(address < 0, "address must be >= 0");
_memoryDumper->SetMemoryValue(type, address, value, false, false);
return l.ReturnCount();
}
int LuaApi::DebugReadMemory(lua_State *lua)
{
LuaCallHelper l(lua);
l.ForceParamCount(3);
bool returnSignedValue = l.ReadBool();
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int address = l.ReadInteger();
checkminparams(2);
errorCond(address < 0, "address must be >= 0");
uint8_t value = _memoryDumper->GetMemoryValue(type, address, true);
l.Return(returnSignedValue ? (int8_t)value : value);
return l.ReturnCount();
}
int LuaApi::DebugWriteMemory(lua_State *lua)
{
LuaCallHelper l(lua);
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int value = l.ReadInteger();
int address = l.ReadInteger();
checkparams();
errorCond(value > 255 || value < -128, "value out of range");
errorCond(address < 0, "address must be >= 0");
_memoryDumper->SetMemoryValue(type, address, value, false, true);
_memoryDumper->SetMemoryValue(memType, address, value, false, disableSideEffects);
return l.ReturnCount();
}
@ -204,11 +179,13 @@ int LuaApi::ReadMemoryWord(lua_State *lua)
LuaCallHelper l(lua);
l.ForceParamCount(3);
bool returnSignedValue = l.ReadBool();
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int type = l.ReadInteger();
bool disableSideEffects = (type & 0x100) == 0x100;
DebugMemoryType memType = (DebugMemoryType)(type & 0xFF);
int address = l.ReadInteger();
checkminparams(2);
errorCond(address < 0, "address must be >= 0");
uint16_t value = _memoryDumper->GetMemoryValueWord(type, address, false);
uint16_t value = _memoryDumper->GetMemoryValueWord(memType, address, disableSideEffects);
l.Return(returnSignedValue ? (int16_t)value : value);
return l.ReturnCount();
}
@ -216,40 +193,15 @@ int LuaApi::ReadMemoryWord(lua_State *lua)
int LuaApi::WriteMemoryWord(lua_State *lua)
{
LuaCallHelper l(lua);
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int type = l.ReadInteger();
bool disableSideEffects = (type & 0x100) == 0x100;
DebugMemoryType memType = (DebugMemoryType)(type & 0xFF);
int value = l.ReadInteger();
int address = l.ReadInteger();
checkparams();
errorCond(value > 65535 || value < -32768, "value out of range");
errorCond(address < 0, "address must be >= 0");
_memoryDumper->SetMemoryValueWord(type, address, value, false, false);
return l.ReturnCount();
}
int LuaApi::DebugReadMemoryWord(lua_State *lua)
{
LuaCallHelper l(lua);
l.ForceParamCount(3);
bool returnSignedValue = l.ReadBool();
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int address = l.ReadInteger();
checkminparams(2);
errorCond(address < 0, "address must be >= 0");
uint16_t value = _memoryDumper->GetMemoryValueWord(type, address, true);
l.Return(returnSignedValue ? (int16_t)value : value);
return l.ReturnCount();
}
int LuaApi::DebugWriteMemoryWord(lua_State *lua)
{
LuaCallHelper l(lua);
DebugMemoryType type = (DebugMemoryType)l.ReadInteger();
int value = l.ReadInteger();
int address = l.ReadInteger();
checkparams();
errorCond(value > 65535 || value < -32768, "value out of range");
errorCond(address < 0, "address must be >= 0");
_memoryDumper->SetMemoryValueWord(type, address, value, false, true);
_memoryDumper->SetMemoryValueWord(memType, address, value, false, disableSideEffects);
return l.ReturnCount();
}

View file

@ -146,27 +146,26 @@ void MemoryDumper::SetMemoryValue(DebugMemoryType memoryType, uint32_t address,
}
break;
case DebugMemoryType::InternalRam: _memoryManager->DebugWrite(address, value, disableSideEffects); break;
case DebugMemoryType::PpuMemory: _mapper->DebugWriteVRAM(address, value, disableSideEffects); break;
case DebugMemoryType::PaletteMemory: _ppu->WritePaletteRAM(address, value); break;
case DebugMemoryType::SpriteMemory: _ppu->GetSpriteRam()[address] = value; break;
case DebugMemoryType::SecondarySpriteMemory: _ppu->GetSecondarySpriteRam()[address] = value; break;
case DebugMemoryType::PpuMemory: _mapper->InternalWriteVRAM(address, value); break;
case DebugMemoryType::ChrRam:
case DebugMemoryType::WorkRam:
case DebugMemoryType::SaveRam:
case DebugMemoryType::ChrRom:
_mapper->SetMemoryValue(memoryType, address, value);
break;
case DebugMemoryType::PrgRom:
_mapper->SetMemoryValue(memoryType, address, value);
if(!preventRebuildCache) {
_disassembler->RebuildPrgRomCache(address, 1);
}
break;
case DebugMemoryType::ChrRom:
case DebugMemoryType::ChrRam:
case DebugMemoryType::WorkRam:
case DebugMemoryType::SaveRam:
_mapper->SetMemoryValue(memoryType, address, value);
break;
case DebugMemoryType::InternalRam: _memoryManager->DebugWrite(address, value); break;
}
}
@ -201,20 +200,19 @@ uint8_t MemoryDumper::GetMemoryValue(DebugMemoryType memoryType, uint32_t addres
}
break;
case DebugMemoryType::InternalRam: return _memoryManager->DebugRead(address, disableSideEffects);
case DebugMemoryType::PpuMemory: return _mapper->DebugReadVRAM(address, disableSideEffects);
case DebugMemoryType::PaletteMemory: return _ppu->ReadPaletteRAM(address);
case DebugMemoryType::SpriteMemory: return _ppu->GetSpriteRam()[address];
case DebugMemoryType::SecondarySpriteMemory: return _ppu->GetSecondarySpriteRam()[address];
case DebugMemoryType::PpuMemory: return _mapper->InternalReadVRAM(address);
case DebugMemoryType::PrgRom:
case DebugMemoryType::ChrRom:
case DebugMemoryType::ChrRam:
case DebugMemoryType::WorkRam:
case DebugMemoryType::SaveRam:
case DebugMemoryType::PrgRom:
case DebugMemoryType::ChrRom:
return _mapper->GetMemoryValue(memoryType, address);
case DebugMemoryType::InternalRam: return _memoryManager->DebugRead(address);
}
return 0;