--- nono/vm/mainram.h 2026/04/29 17:05:25 1.1.1.2 +++ nono/vm/mainram.h 2026/04/29 17:06:01 1.1.1.5 @@ -23,40 +23,39 @@ class MainRAMDevice : public IODevice 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 ReadBurst16(busaddr addr, uint32 *dst) override; + busdata WriteBurst16(busaddr addr, const uint32 *dst) override; + busdata Peek1(uint32 addr) override; + bool Poke1(uint32 addr, uint32 data) override; + + // 領域アクセス + bool ReadMem(uint32 addr, void *dst, uint32 len); + bool WriteMem(uint32 addr, const void *src, uint32 len); // RAM 容量(バイト単位)を取得 - int GetSize() const { return ram_size; } + size_t GetSize() const { return ram_size; } // RAM 容量(MB単位)を取得 - int GetSizeMB() const { return (uint)ram_size / 1024 / 1024; } + uint GetSizeMB() const { return (uint)(ram_size / 1024 / 1024); } // アクセスウェイト [clock] を設定 - void SetWait(uint32 wait); - - // info で指定された実行ファイルをロードする - bool LoadExec(LoadInfo *); - - // info で指定されたデータファイルをロードする - bool LoadData(LoadInfo *); - - static std::unique_ptr mainram; + void SetWait(uint32 wait_clock); private: + std::unique_ptr mainram {}; + // RAM 容量(バイト単位)。ram[] の確保したバイト数 - int ram_size {}; + size_t ram_size {}; // アクセスウェイト - busdata read_wait {}; - busdata write_wait {}; + busdata normal_wait {}; + busdata burst_wait {}; + + // 電源オン時にメモリをクリアする。 + bool clear_on_boot {}; }; -static inline MainRAMDevice *GetMainRAMDevice() { +inline MainRAMDevice *GetMainRAMDevice() { return Object::GetObject(OBJ_MAINRAM); }