CDL: add CARTROM logging for many more cases, including superfx (should fix #1597)
This commit is contained in:
parent
c7dbed306a
commit
fd960e03fe
|
@ -11,11 +11,16 @@ void HitachiDSP::bus_write(unsigned addr, uint8 data) {
|
|||
|
||||
uint8 HitachiDSP::rom_read(unsigned addr) {
|
||||
if(co_active() == cpu.thread) {
|
||||
if(state == State::Idle) return cartridge.rom.read(addr);
|
||||
if(state == State::Idle)
|
||||
{
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr);
|
||||
return cartridge.rom.read(addr);
|
||||
}
|
||||
if((addr & 0x40ffe0) == 0x00ffe0) return regs.vector[addr & 0x1f];
|
||||
return cpu.regs.mdr;
|
||||
}
|
||||
if(co_active() == hitachidsp.thread) {
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr);
|
||||
return cartridge.rom.read(addr);
|
||||
}
|
||||
return cpu.regs.mdr;
|
||||
|
|
|
@ -129,7 +129,9 @@ uint8 SA1::mmc_read(unsigned addr) {
|
|||
}
|
||||
|
||||
static auto read = [](unsigned addr) {
|
||||
return cartridge.rom.read(bus.mirror(addr, cartridge.rom.size()));
|
||||
auto myaddr = bus.mirror(addr, cartridge.rom.size());
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
};
|
||||
|
||||
if((addr & 0xe08000) == 0x008000) { //$00-1f:8000-ffff
|
||||
|
|
|
@ -84,7 +84,9 @@ void SDD1::mmio_write(unsigned addr, uint8 data) {
|
|||
}
|
||||
|
||||
uint8 SDD1::rom_read(unsigned addr) {
|
||||
return cartridge.rom.read(mmc[(addr >> 20) & 3] + (addr & 0x0fffff));
|
||||
auto myaddr = mmc[(addr >> 20) & 3] + (addr & 0x0fffff);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
}
|
||||
|
||||
//SDD1::mcu_read() is mapped to $c0-ff:0000-ffff
|
||||
|
@ -132,7 +134,9 @@ uint8 SDD1::mcu_read(unsigned addr) {
|
|||
} //S-DD1 decompressor enabled
|
||||
|
||||
//S-DD1 decompression mode inactive; return ROM data
|
||||
return cartridge.rom.read(mmc[(addr >> 20) & 3] + (addr & 0x0fffff));
|
||||
auto myaddr = mmc[(addr >> 20) & 3] + (addr & 0x0fffff);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
}
|
||||
|
||||
void SDD1::mcu_write(unsigned addr, uint8 data) {
|
||||
|
|
|
@ -26,7 +26,9 @@ void SPC7110::Decomp::write(uint8 data) {
|
|||
uint8 SPC7110::Decomp::dataread() {
|
||||
unsigned size = cartridge.rom.size() - spc7110.data_rom_offset;
|
||||
while(decomp_offset >= size) decomp_offset -= size;
|
||||
return cartridge.rom.read(spc7110.data_rom_offset + decomp_offset++);
|
||||
auto myaddr = spc7110.data_rom_offset + decomp_offset++;
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
}
|
||||
|
||||
void SPC7110::Decomp::init(unsigned mode, unsigned offset, unsigned index) {
|
||||
|
|
|
@ -238,7 +238,9 @@ uint8 SPC7110::mmio_read(unsigned addr) {
|
|||
set_data_adjust(adjust + 1);
|
||||
}
|
||||
|
||||
uint8 data = cartridge.rom.read(datarom_addr(adjustaddr));
|
||||
auto myaddr = datarom_addr(adjustaddr);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
uint8 data = cartridge.rom.read(myaddr);
|
||||
if(!(r4818 & 2)) {
|
||||
unsigned increment = (r4818 & 1) ? data_increment() : 1;
|
||||
if(r4818 & 4) increment = (int16)increment; //16-bit sign extend
|
||||
|
@ -267,7 +269,9 @@ uint8 SPC7110::mmio_read(unsigned addr) {
|
|||
unsigned adjust = data_adjust();
|
||||
if(r4818 & 8) adjust = (int16)adjust; //16-bit sign extend
|
||||
|
||||
uint8 data = cartridge.rom.read(datarom_addr(addr + adjust));
|
||||
auto myaddr = datarom_addr(addr + adjust);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
uint8 data = cartridge.rom.read(myaddr);
|
||||
if((r4818 & 0x60) == 0x60) {
|
||||
if((r4818 & 16) == 0) {
|
||||
set_data_pointer(addr + adjust);
|
||||
|
@ -357,6 +361,12 @@ void SPC7110::mmio_write(unsigned addr, uint8 data) {
|
|||
unsigned index = (r4804 << 2);
|
||||
unsigned length = (r4809 + (r480a << 8));
|
||||
unsigned addr = datarom_addr(table + index);
|
||||
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr + 0);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr + 1);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr + 2);
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr + 3);
|
||||
|
||||
unsigned mode = (cartridge.rom.read(addr + 0));
|
||||
unsigned offset = (cartridge.rom.read(addr + 1) << 16)
|
||||
+ (cartridge.rom.read(addr + 2) << 8)
|
||||
|
@ -650,9 +660,18 @@ void SPC7110::initialize()
|
|||
//============
|
||||
|
||||
uint8 SPC7110::mcu_read(unsigned addr) {
|
||||
if(addr <= 0xdfffff) return cartridge.rom.read(dx_offset + (addr & 0x0fffff));
|
||||
if(addr <= 0xefffff) return cartridge.rom.read(ex_offset + (addr & 0x0fffff));
|
||||
if(addr <= 0xffffff) return cartridge.rom.read(fx_offset + (addr & 0x0fffff));
|
||||
if(addr <= 0xdfffff) {
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, dx_offset + (addr & 0x0fffff));
|
||||
return cartridge.rom.read(dx_offset + (addr & 0x0fffff));
|
||||
}
|
||||
if(addr <= 0xefffff) {
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, ex_offset + (addr & 0x0fffff));
|
||||
return cartridge.rom.read(ex_offset + (addr & 0x0fffff));
|
||||
}
|
||||
if(addr <= 0xffffff) {
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, fx_offset + (addr & 0x0fffff));
|
||||
return cartridge.rom.read(fx_offset + (addr & 0x0fffff));
|
||||
}
|
||||
return cpu.regs.mdr;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ uint8 SuperFX::ROM::read(unsigned addr) {
|
|||
};
|
||||
return data[addr & 15];
|
||||
}
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr);
|
||||
return cartridge.rom.read(addr);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,9 @@ uint8 SuperFX::bus_read(unsigned addr) {
|
|||
add_clocks(6);
|
||||
synchronize_cpu();
|
||||
}
|
||||
return cartridge.rom.read((((addr & 0x3f0000) >> 1) | (addr & 0x7fff)) & rom_mask);
|
||||
auto myaddr = (((addr & 0x3f0000) >> 1) | (addr & 0x7fff)) & rom_mask;
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, addr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
}
|
||||
|
||||
if((addr & 0xe00000) == 0x400000) { //$40-5f:0000-ffff
|
||||
|
@ -14,7 +16,9 @@ uint8 SuperFX::bus_read(unsigned addr) {
|
|||
add_clocks(6);
|
||||
synchronize_cpu();
|
||||
}
|
||||
return cartridge.rom.read(addr & rom_mask);
|
||||
auto myaddr = addr & rom_mask;
|
||||
cdlInfo.set(eCDLog_AddrType_CARTROM, myaddr);
|
||||
return cartridge.rom.read(myaddr);
|
||||
}
|
||||
|
||||
if((addr & 0xe00000) == 0x600000) { //$60-7f:0000-ffff
|
||||
|
|
Loading…
Reference in New Issue