#include "common_processor.hpp" #define MAX_LINES_PER_DIRECTION 128 // ------------------------------------------------------------------------ CommonDisasmProcessor::CommonDisasmProcessor(CommonDisasmProcessor::Source source) { setSource(source); } // ------------------------------------------------------------------------ string CommonDisasmProcessor::getBreakpointBusName() { switch (source) { case CPU: return "cpu"; case SMP: return "smp"; case SFX: return "sfx"; case SA1: return "sa1"; case SGB: return "sgb"; } return ""; } // ------------------------------------------------------------------------ uint32_t CommonDisasmProcessor::getCurrentAddress() { switch (source) { case CPU: return SNES::cpu.opcode_pc; case SMP: return SNES::smp.opcode_pc; case SFX: return SNES::superfx.opcode_pc; case SA1: return SNES::sa1.opcode_pc; case SGB: return SNES::supergameboy.opcode_pc; } return 0; } // ------------------------------------------------------------------------ void CommonDisasmProcessor::setSource(Source source) { this->source = source; switch (source) { case CPU: usagePointer = SNES::cpu.usage; memorySource = SNES::Debugger::MemorySource::CPUBus; mask = (1 << 24) - 1; break; case SMP: usagePointer = SNES::smp.usage; memorySource = SNES::Debugger::MemorySource::APUBus; mask = (1 << 16) - 1; break; case SA1: usagePointer = SNES::sa1.usage; memorySource = SNES::Debugger::MemorySource::SA1Bus; mask = (1 << 24) - 1; break; case SFX: usagePointer = SNES::superfx.usage; memorySource = SNES::Debugger::MemorySource::SFXBus; mask = (1 << 23) - 1; break; case SGB: usagePointer = SNES::supergameboy.usage; memorySource = SNES::Debugger::MemorySource::SGBBus; mask = (1 << 16) - 1; break; } } // ------------------------------------------------------------------------ uint32_t CommonDisasmProcessor::findStartLineAddress(uint32_t currentAddress, uint32_t linesBelow) { unsigned line, i; for (line=0; line