|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2017 [email protected]
4: //
5:
6: #pragma once
7:
8: #include "device.h"
9:
10: class ViconDevice
11: : public IODevice
12: {
13: typedef IODevice inherited;
14: private:
15: static const int baseaddr = 0xe82000;
16:
17: struct vicon {
18: uint16 r0;
19: uint16 r1;
20: uint16 r2;
21: };
22:
23: public:
24: ViconDevice();
25: virtual ~ViconDevice();
26:
27: virtual uint64 Read8(uint32 addr);
28: virtual uint64 Read16(uint32 addr);
29: virtual uint64 Write8(uint32 addr, uint32 data);
30: virtual uint64 Write16(uint32 addr, uint32 data);
31: virtual uint64 Peek8(uint32 addr);
32:
33: // パレットのバッファアドレスを取得
34: // レンダラとかからの参照用?
35: const uint16 *GetPalette() const { return &palette.w[0]; }
36:
37: private:
1.1.1.2 ! root 38: // アドレスデコーダ
! 39: uint64 Decoder(uint32 addr) const;
! 40:
! 41: uint32 read_r0() const;
! 42: uint32 read_r1H() const;
! 43: uint32 read_r1L() const;
! 44: uint32 read_r2H() const;
! 45: uint32 read_r2L() const;
1.1 root 46: void write_r0(uint32 data);
47: void write_r1H(uint32 data);
48: void write_r1L(uint32 data);
49: void write_r2H(uint32 data);
50: void write_r2L(uint32 data);
51:
52: struct vicon vicon {};
53: union {
54: uint8 b[1024];
55: uint16 w[512];
56: } palette {};
57: };
58:
1.1.1.2 ! root 59: 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.