--- nono/vm/tvram.h 2026/04/29 17:05:17 1.1.1.9 +++ nono/vm/tvram.h 2026/04/29 17:05:50 1.1.1.13 @@ -12,16 +12,16 @@ #include "planevram.h" -class Renderer; +class VideoCtlrDevice; class TVRAMDevice : public PlaneVRAMDevice { using inherited = PlaneVRAMDevice; - static const int baseaddr = 0xe00000; + static const uint32 baseaddr = 0xe00000; // プレーン数は4枚固定 - static const int NPLANE = 4; + static const uint NPLANE = 4; struct tvram { bool sa; // 同時アクセス @@ -33,17 +33,14 @@ class TVRAMDevice : public PlaneVRAMDevi public: TVRAMDevice(); - virtual ~TVRAMDevice() override; + ~TVRAMDevice() override; bool Init() override; - void ResetHard(bool poweron) override; - uint64 Read8(uint32 addr) override; - uint64 Read16(uint32 addr) override; - uint64 Write8(uint32 addr, uint32 data) override; - uint64 Write16(uint32 addr, uint32 data) override; - uint64 Peek8(uint32 addr) override; - uint64 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; @@ -51,12 +48,14 @@ class TVRAMDevice : public PlaneVRAMDevi void SetAccessMask(uint16 data); void SetScrollX(int x); void SetScrollY(int y); - void RasterCopy(int src_ras, int dst_ras); + void RasterCopy(uint src_ras, uint dst_ras); private: // アドレスデコーダ - uint64 Decoder(uint32 addr) const; + uint32 Decoder(uint32 addr) const; + void Set8(uint32 offset, uint32 poffset, uint32 data, uint32 mask); + void Set16(uint32 offset, uint32 poffset, uint32 data, uint32 mask); inline void SetDirty(uint32 offset); // X 方向にはみ出したときに対応する仮想画面の Y 座標を返す。 @@ -64,7 +63,9 @@ class TVRAMDevice : public PlaneVRAMDevi struct tvram tvram {}; - Renderer *renderer {}; + VideoCtlrDevice *videoctlr {}; + + static const busdata wait; }; static inline TVRAMDevice *GetTVRAMDevice() {