|
|
nono 0.0.3
//
// nono
// Copyright (C) 2018 [email protected]
//
#pragma once
#include "device.h"
class ROMDevice
: public IODevice
{
typedef IODevice inherited;
public:
ROMDevice();
virtual ~ROMDevice();
virtual uint64 Read8(uint32 addr);
virtual uint64 Read16(uint32 addr);
virtual uint64 Read32(uint32 addr);
virtual uint64 Write8(uint32 addr, uint32 data);
virtual uint64 Write16(uint32 addr, uint32 data);
virtual uint64 Write32(uint32 addr, uint32 data);
virtual uint64 Peek8(uint32 addr);
protected:
bool LoadROM(const char *name, int size);
// アドレスマスク
uint32 mask = 0;
// オープンしているファイルのパスとディスクリプタ
std::string filename {};
int fd = 0;
// mmap される領域とサイズ
uint8 *file = NULL;
size_t filesize = 0;
// メモリ領域をさすポインタ。
// 通常は ROM イメージファイルを読み込むだけなので mem = file となる。
// ROM イメージを自分で用意したい場合はこれを適当なところにむけてどうぞ。
uint8 *mem = NULL;
};
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.