--- nono/vm/crtc.cpp 2026/04/29 17:04:41 1.1.1.5 +++ nono/vm/crtc.cpp 2026/04/29 17:04:50 1.1.1.6 @@ -48,31 +48,31 @@ CRTCDevice::ResetHard() } uint64 -CRTCDevice::Read(uint32 addr) +CRTCDevice::Read(uint32 offset) { uint64 data; gMPU->AddCycle(9); // InsideOut p.135 - if (addr < 0x400 / 2) { // CRTC レジスタ + if (offset < 0x400 / 2) { // CRTC レジスタ // 0x40 バイトでミラー - addr &= (0x40 / 2) - 1; + offset &= (0x40 / 2) - 1; // R20, R21 のみ読み出し可能 - switch (addr) { + switch (offset) { case 20: - data = crtc.r[addr]; - putlog(2, "R%02d -> $%04x", addr, (uint32)data); + data = crtc.r[offset]; + putlog(2, "R%02d -> $%04x", offset, (uint32)data); break; case 21: // R21 へのアクセスは多いのでログレベルを上げておく - data = crtc.r[addr]; - putlog(3, "R%02d -> $%04x", addr, (uint32)data); + data = crtc.r[offset]; + putlog(3, "R%02d -> $%04x", offset, (uint32)data); break; default: // それ以外は読み出し不可 ($00 が読める) data = 0; - if (addr < countof(crtc.r)) { - putlog(3, "R%02d -> $%04x", addr, (uint32)data); + if (offset < countof(crtc.r)) { + putlog(3, "R%02d -> $%04x", offset, (uint32)data); } else { putlog(3, "$%06x -> $%04x", gMPU->GetPaddr(), (uint32)data); } @@ -80,9 +80,9 @@ CRTCDevice::Read(uint32 addr) } } else { // 動作ポート - if ((addr & (0x80 / 2)) == 0) { // +$00..+$7f + if ((offset & (0x80 / 2)) == 0) { // +$00..+$7f data = (uint64)-1; - } else { // +$80..+$ff + } else { // +$80..+$ff data = crtc.op; } } @@ -91,22 +91,22 @@ CRTCDevice::Read(uint32 addr) } uint64 -CRTCDevice::Write(uint32 addr, uint32 data) +CRTCDevice::Write(uint32 offset, uint32 data) { gMPU->AddCycle(9); // InsideOut p.135 - if (addr < 0x400 / 2) { // CRTC レジスタ + if (offset < 0x400 / 2) { // CRTC レジスタ // 0x40 バイトでミラー - addr &= (0x40 / 2) - 1; - if (addr < countof(crtc.r)) { - SetReg(addr, data); + offset &= (0x40 / 2) - 1; + if (offset < countof(crtc.r)) { + SetReg(offset, data); } else { // ここ何がいるんだ? putlog(2, "$%06x <- $%04x", gMPU->GetPaddr(), data); } } else { // 動作ポート - if ((addr & (0x80 / 2)) == 0) { // +$00..+$7f + if ((offset & (0x80 / 2)) == 0) { // +$00..+$7f return (uint64)-1; } else { crtc.op = data & 0x0b; @@ -118,22 +118,22 @@ CRTCDevice::Write(uint32 addr, uint32 da } uint64 -CRTCDevice::Peek(uint32 addr) +CRTCDevice::Peek(uint32 offset) { uint64 data; - if (addr < 0x400 / 2) { // CRTC レジスタ + if (offset < 0x400 / 2) { // CRTC レジスタ // 0x40 バイトでミラー - addr &= (0x40 / 2) - 1; - if (addr == 20 || addr == 21) { + offset &= (0x40 / 2) - 1; + if (offset == 20 || offset == 21) { // R20, R21 のみ読み出し可能 - data = crtc.r[addr]; + data = crtc.r[offset]; } else { data = 0; } } else { // 動作ポート - if ((addr & (0x80 / 2)) == 0) { + if ((offset & (0x80 / 2)) == 0) { data = (uint64)-1; } else { data = crtc.op;