diff --git a/waterbox/libsnes/bsnes/snes/chip/hitachidsp/memory.cpp b/waterbox/libsnes/bsnes/snes/chip/hitachidsp/memory.cpp index 3c9c3af18d..fca7ec8729 100644 --- a/waterbox/libsnes/bsnes/snes/chip/hitachidsp/memory.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/hitachidsp/memory.cpp @@ -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; diff --git a/waterbox/libsnes/bsnes/snes/chip/sa1/memory/memory.cpp b/waterbox/libsnes/bsnes/snes/chip/sa1/memory/memory.cpp index e7da7add13..45a9d54c3d 100644 --- a/waterbox/libsnes/bsnes/snes/chip/sa1/memory/memory.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/sa1/memory/memory.cpp @@ -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 diff --git a/waterbox/libsnes/bsnes/snes/chip/sdd1/sdd1.cpp b/waterbox/libsnes/bsnes/snes/chip/sdd1/sdd1.cpp index f3f197daa0..01048e5ede 100644 --- a/waterbox/libsnes/bsnes/snes/chip/sdd1/sdd1.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/sdd1/sdd1.cpp @@ -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) { diff --git a/waterbox/libsnes/bsnes/snes/chip/spc7110/decomp.cpp b/waterbox/libsnes/bsnes/snes/chip/spc7110/decomp.cpp index d6b4cce5c5..dd4db59864 100644 --- a/waterbox/libsnes/bsnes/snes/chip/spc7110/decomp.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/spc7110/decomp.cpp @@ -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) { diff --git a/waterbox/libsnes/bsnes/snes/chip/spc7110/spc7110.cpp b/waterbox/libsnes/bsnes/snes/chip/spc7110/spc7110.cpp index 37e45f80b2..dc72258167 100644 --- a/waterbox/libsnes/bsnes/snes/chip/spc7110/spc7110.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/spc7110/spc7110.cpp @@ -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; } diff --git a/waterbox/libsnes/bsnes/snes/chip/superfx/bus/bus.cpp b/waterbox/libsnes/bsnes/snes/chip/superfx/bus/bus.cpp index 2ce33a7e5b..6983f8475b 100644 --- a/waterbox/libsnes/bsnes/snes/chip/superfx/bus/bus.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/superfx/bus/bus.cpp @@ -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); } diff --git a/waterbox/libsnes/bsnes/snes/chip/superfx/memory/memory.cpp b/waterbox/libsnes/bsnes/snes/chip/superfx/memory/memory.cpp index 06b62db489..7051ddb6da 100644 --- a/waterbox/libsnes/bsnes/snes/chip/superfx/memory/memory.cpp +++ b/waterbox/libsnes/bsnes/snes/chip/superfx/memory/memory.cpp @@ -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