1 // license:BSD-3-Clause
2 // copyright-holders:R. Belmont
3 #ifndef MAME_BUS_NUBUS_LASERVIEW_H
4 #define MAME_BUS_NUBUS_LASERVIEW_H
5 
6 #pragma once
7 
8 #include "nubus.h"
9 
10 //**************************************************************************
11 //  TYPE DEFINITIONS
12 //**************************************************************************
13 
14 // ======================> nubus_laserview_device
15 
16 class nubus_laserview_device :
17 		public device_t,
18 		public device_nubus_card_interface
19 {
20 public:
21 	// construction/destruction
22 	nubus_laserview_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
23 
24 protected:
25 	nubus_laserview_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
26 
27 	// device-level overrides
28 	virtual void device_start() override;
29 	virtual void device_reset() override;
30 
31 	// optional information overrides
32 	virtual void device_add_mconfig(machine_config &config) override;
33 	virtual const tiny_rom_entry *device_rom_region() const override;
34 
35 private:
36 	uint32_t regs_r(offs_t offset, uint32_t mem_mask = ~0);
37 	void regs_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
38 
39 	uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
40 
41 	std::vector<uint8_t> m_vram;
42 	uint32_t m_vbl_disable, m_palette[2];
43 	int m_prot_state;
44 	int m_toggle;
45 };
46 
47 // device type definition
48 DECLARE_DEVICE_TYPE(NUBUS_LASERVIEW, nubus_laserview_device)
49 
50 #endif // MAME_BUS_NUBUS_LASERVIEW_H
51