File:  [Isaki's NoNo m68k/m88k emulator] / nono / vm / vicon.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:04:32 2026 UTC (2 months, 3 weeks ago) by root
Branches: MAIN, Isaki
CVS tags: v003, HEAD
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;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.