--- nono/vm/rom.cpp 2026/04/29 17:05:06 1.1.1.8 +++ nono/vm/rom.cpp 2026/04/29 17:05:14 1.1.1.10 @@ -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; } // 読み込む @@ -128,7 +129,7 @@ ROMDevice::Read16(uint32 addr) { gMPU->AddCycle(wait); uint16 data; - data = be16toh(*(uint16 *)&mem[addr & mask]); + data = be16toh(*(const uint16 *)&mem[addr & mask]); putlog(4, "$%08x.W -> $%04x", addr, data); return data; } @@ -138,7 +139,7 @@ ROMDevice::Read32(uint32 addr) { gMPU->AddCycle(wait); uint32 data; - data = be32toh(*(uint32 *)&mem[addr & mask]); + data = be32toh(*(const uint32 *)&mem[addr & mask]); putlog(4, "$%08x.L -> $%08x", addr, data); return data; } @@ -172,3 +173,14 @@ ROMDevice::Peek8(uint32 addr) { return mem[addr & mask]; } + +// ファイル名を返す。なければ NULL を返す。 +const char * +ROMDevice::GetFilename() const +{ + if (filename.empty()) { + return NULL; + } else { + return filename.c_str(); + } +}