--- nono/vm/gvram.cpp 2026/04/29 17:05:10 1.1.1.6 +++ nono/vm/gvram.cpp 2026/04/29 17:05:18 1.1.1.7 @@ -15,15 +15,11 @@ #include "mpu.h" #include "videoctlr.h" -// グローバル参照用 -GVRAMDevice *gGVRAM; - // コンストラクタ GVRAMDevice::GVRAMDevice() - : inherited("GVRAM") + : inherited(OBJ_GVRAM) { - devaddr = 0xc00000; - devlen = 0x200000; // XXX とりあえず + uint devlen = 0x20'0000; // XXX とりあえず mem.reset(new uint8[devlen]); } @@ -31,30 +27,29 @@ GVRAMDevice::GVRAMDevice() // デストラクタ GVRAMDevice::~GVRAMDevice() { - gGVRAM = NULL; } uint64 GVRAMDevice::Read8(uint32 addr) { - gMPU->AddCycle(9); // Inside/Out p.135 - uint32 offset = addr - devaddr; + mpu->AddCycle(9); // Inside/Out p.135 + uint32 offset = addr - baseaddr; return mem[HB(offset)]; } uint64 GVRAMDevice::Read16(uint32 addr) { - gMPU->AddCycle(9); // Inside/Out p.135 - uint32 offset = addr - devaddr; + mpu->AddCycle(9); // Inside/Out p.135 + uint32 offset = addr - baseaddr; return *(uint16 *)&mem[offset]; } uint64 GVRAMDevice::Write8(uint32 addr, uint32 data) { - gMPU->AddCycle(9); // Inside/Out p.135 - uint32 offset = addr - devaddr; + mpu->AddCycle(9); // Inside/Out p.135 + uint32 offset = addr - baseaddr; mem[HB(offset)] = data; return 0; } @@ -62,8 +57,8 @@ GVRAMDevice::Write8(uint32 addr, uint32 uint64 GVRAMDevice::Write16(uint32 addr, uint32 data) { - gMPU->AddCycle(9); // Inside/Out p.135 - uint32 offset = addr - devaddr; + mpu->AddCycle(9); // Inside/Out p.135 + uint32 offset = addr - baseaddr; *(uint16 *)&mem[offset] = data; return 0; } @@ -71,5 +66,5 @@ GVRAMDevice::Write16(uint32 addr, uint32 uint64 GVRAMDevice::Peek8(uint32 addr) { - return mem[HB(addr - devaddr)]; + return mem[HB(addr - baseaddr)]; }