bsnes/higan/sfc/coprocessor/sa1/iram.cpp

34 lines
856 B
C++

auto SA1::IRAM::conflict() const -> bool {
if(!cpu.r.rwb) return false;
if((cpu.r.mar & 0x40f800) == 0x003000) return true; //00-3f,80-bf:3000-37ff
return false;
}
auto SA1::IRAM::read(uint24 address, uint8 data) -> uint8 {
if(!size()) return data;
return _data[address & size() - 1];
}
auto SA1::IRAM::write(uint24 address, uint8 data) -> void {
if(!size()) return;
_data[address & size() - 1] = data;
}
auto SA1::IRAM::readCPU(uint24 address, uint8 data) -> uint8 {
cpu.synchronize(sa1);
return read(address, data);
}
auto SA1::IRAM::writeCPU(uint24 address, uint8 data) -> void {
cpu.synchronize(sa1);
return write(address, data);
}
auto SA1::IRAM::readSA1(uint24 address, uint8 data) -> uint8 {
return read(address, data);
}
auto SA1::IRAM::writeSA1(uint24 address, uint8 data) -> void {
return write(address, data);
}