--- nono/vm/rom.cpp 2026/04/29 17:04:59 1.1.1.7 +++ nono/vm/rom.cpp 2026/04/29 17:05:10 1.1.1.9 @@ -4,8 +4,10 @@ // Licensed under nono-license.txt // -// ROM の共通部分 // +// ROM の基本クラス +// + // IODevice // | // | +-----------+ @@ -93,7 +95,6 @@ ROMDevice::LoadROM(const char *name, int // 大きすぎるほうはワーニングだけでいいか warnx("%s is too large (ignore %zd bytes)", filename.c_str(), (ssize_t)st.st_size - size); - return false; } // 読み込む @@ -117,7 +118,10 @@ uint64 ROMDevice::Read8(uint32 addr) { gMPU->AddCycle(wait); - return mem[addr & mask]; + uint32 data; + data = mem[addr & mask]; + putlog(4, "$%08x.B -> $%02x", addr, data); + return data; } uint64 @@ -125,8 +129,9 @@ ROMDevice::Read16(uint32 addr) { gMPU->AddCycle(wait); uint16 data; - data = *(uint16 *)&mem[addr & mask]; - return be16toh(data); + data = be16toh(*(uint16 *)&mem[addr & mask]); + putlog(4, "$%08x.W -> $%04x", addr, data); + return data; } uint64 @@ -134,14 +139,16 @@ ROMDevice::Read32(uint32 addr) { gMPU->AddCycle(wait); uint32 data; - data = *(uint32 *)&mem[addr & mask]; - return be32toh(data); + data = be32toh(*(uint32 *)&mem[addr & mask]); + putlog(4, "$%08x.L -> $%08x", addr, data); + return data; } uint64 ROMDevice::Write8(uint32 addr, uint32 data) { gMPU->AddCycle(wait); // ? + putlog(4, "$%08x.B <- $%02x", addr, data); return write_op; } @@ -149,6 +156,7 @@ uint64 ROMDevice::Write16(uint32 addr, uint32 data) { gMPU->AddCycle(wait); // ? + putlog(4, "$%08x.W <- $%04x", addr, data); return write_op; } @@ -156,6 +164,7 @@ uint64 ROMDevice::Write32(uint32 addr, uint32 data) { gMPU->AddCycle(wait); // ? + putlog(4, "$%08x.L <- $%08x", addr, data); return write_op; }