|
|
nono 0.0.3
//
// nono
// Copyright (C) 2017 [email protected]
//
#pragma once
#include "device.h"
class ViconDevice
: public IODevice
{
typedef IODevice inherited;
private:
static const int baseaddr = 0xe82000;
struct vicon {
uint16 r0;
uint16 r1;
uint16 r2;
};
public:
ViconDevice();
virtual ~ViconDevice();
virtual uint64 Read8(uint32 addr);
virtual uint64 Read16(uint32 addr);
virtual uint64 Write8(uint32 addr, uint32 data);
virtual uint64 Write16(uint32 addr, uint32 data);
virtual uint64 Peek8(uint32 addr);
// パレットのバッファアドレスを取得
// レンダラとかからの参照用?
const uint16 *GetPalette() const { return &palette.w[0]; }
private:
// アドレスデコーダ
uint64 Decoder(uint32 addr) const;
uint32 read_r0() const;
uint32 read_r1H() const;
uint32 read_r1L() const;
uint32 read_r2H() const;
uint32 read_r2L() const;
void write_r0(uint32 data);
void write_r1H(uint32 data);
void write_r1L(uint32 data);
void write_r2H(uint32 data);
void write_r2L(uint32 data);
struct vicon vicon {};
union {
uint8 b[1024];
uint16 w[512];
} palette {};
};
extern std::unique_ptr<ViconDevice> gVicon;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.