--- nono/vm/lunafb.h 2026/04/29 17:05:25 1.1.1.5 +++ nono/vm/lunafb.h 2026/04/29 17:06:00 1.1.1.8 @@ -11,7 +11,6 @@ #pragma once #include "planevram.h" -#include "monitor.h" // VRAM の ROP (定数) struct ROP { @@ -43,7 +42,7 @@ class LunafbDevice : public PlaneVRAMDev static const uint32 fcset7end = 0xb1500000; // プレーン数の上限 - static const int MAX_PLANES = 8; + static const uint MAX_PLANES = 8; public: LunafbDevice(); @@ -52,14 +51,10 @@ class LunafbDevice : public PlaneVRAMDev bool Init() override; void ResetHard(bool poweron) override; - busdata Read8(uint32 addr) override; - busdata Read16(uint32 addr) override; - busdata Read32(uint32 addr) override; - busdata Write8(uint32 addr, uint32 data) override; - busdata Write16(uint32 addr, uint32 data) override; - busdata Write32(uint32 addr, uint32 data) override; - busdata Peek8(uint32 addr) override; - bool Poke8(uint32 addr, uint32 data) override; + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; + bool Poke1(uint32 addr, uint32 data) override; void UpdateInfo(TextScreen&, int x, int y) const override; @@ -67,7 +62,7 @@ class LunafbDevice : public PlaneVRAMDev void EmuInitScreen(); void EmuFill(uint x, uint y, uint w, uint h, uint32 data); void EmuPutc(uint x, uint y, uint c); - void EmuPutc(uint x, uint y, uint c, int rop); + void EmuPutc(uint x, uint y, uint c, uint rop); void EmuScrollY(uint dy, uint sy, uint h); void SetBMSEL(uint8 bmsel_) { bmsel = bmsel_; } @@ -78,6 +73,7 @@ class LunafbDevice : public PlaneVRAMDev // X 方向にはみ出したときに対応する仮想画面の Y 座標を返す。 int GetWrapY(int y) const override; + busdata WriteReg(busaddr addr, uint32 data); void WriteRFCNT(uint32); void WriteCommonBitmap8(uint32, uint32); void WriteCommonBitmap16(uint32, uint32); @@ -87,7 +83,7 @@ class LunafbDevice : public PlaneVRAMDev void WritePlane16(uint, uint32, uint32); void WritePlane32(uint, uint32, uint32); - DECLARE_MONITOR_CALLBACK(MonitorUpdate); + DECLARE_MONITOR_SCREEN(MonitorScreen); // 演算 static uint32 RasterOp(uint rop, uint32 vram, uint32 data); @@ -131,9 +127,9 @@ class LunafbDevice : public PlaneVRAMDev // ウェイト [nsec] busdata wait {}; - Monitor monitor { this }; + Monitor *monitor {}; }; -static inline LunafbDevice *GetLunafbDevice() { +inline LunafbDevice *GetLunafbDevice() { return Object::GetObject(OBJ_PLANEVRAM); }