1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 /********************************************************************** 4 5 RCA CDP1862 COS/MOS Color Generator Controller emulation 6 7 ********************************************************************** 8 _____ _____ 9 RD 1 |* \_/ | 24 Vdd 10 _RESET 2 | | 23 R LUM 11 _CON 3 | | 22 G LUM 12 B CHR 4 | | 21 GD 13 B LUM 5 | | 20 BKG LUM 14 BKG 6 | CDP1862 | 19 G CHR 15 _LD CLK 7 | | 18 R CHR 16 STP 8 | | 17 BKG CHR 17 CLK OUT 9 | | 16 BD 18 _SYNC 10 | | 15 BURST 19 LUM IN 11 | | 14 _XTAL 20 Vss 12 |_____________| 13 XTAL 21 22 **********************************************************************/ 23 24 #ifndef MAME_VIDEO_CDP1862_H 25 #define MAME_VIDEO_CDP1862_H 26 27 #pragma once 28 29 30 31 32 //************************************************************************** 33 // TYPE DEFINITIONS 34 //************************************************************************** 35 36 // ======================> cdp1862_device 37 38 class cdp1862_device : public device_t, 39 public device_video_interface 40 { 41 public: 42 // construction/destruction 43 cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 44 rdata_cb()45 auto rdata_cb() { return m_read_rd.bind(); } bdata_cb()46 auto bdata_cb() { return m_read_bd.bind(); } gdata_cb()47 auto gdata_cb() { return m_read_gd.bind(); } 48 set_luminance(double r,double b,double g,double bkg)49 void set_luminance(double r, double b, double g, double bkg) { m_lum_r = r; m_lum_b = b; m_lum_g = g; m_lum_bkg = bkg; } set_chrominance(double r,double b,double g,double bkg)50 void set_chrominance(double r, double b, double g, double bkg) { m_chr_r = r; m_chr_b = b; m_chr_g = g; m_chr_bkg = bkg; } 51 52 void dma_w(uint8_t data); 53 void bkg_w(int state); 54 void con_w(int state); 55 56 uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 57 58 protected: 59 // device-level overrides 60 virtual void device_start() override; 61 virtual void device_reset() override; 62 63 private: 64 inline void initialize_palette(); 65 66 devcb_read_line m_read_rd; 67 devcb_read_line m_read_bd; 68 devcb_read_line m_read_gd; 69 70 bitmap_rgb32 m_bitmap; // bitmap 71 72 double m_lum_r; // red luminance resistor value 73 double m_lum_b; // blue luminance resistor value 74 double m_lum_g; // green luminance resistor value 75 double m_lum_bkg; // background luminance resistor value 76 77 double m_chr_r; // red chrominance resistor value 78 double m_chr_b; // blue chrominance resistor value 79 double m_chr_g; // green chrominance resistor value 80 double m_chr_bkg; // background chrominance resistor value 81 82 rgb_t m_palette[16]; 83 int m_bgcolor; // background color 84 int m_con; // color on 85 }; 86 87 88 // device type definition 89 DECLARE_DEVICE_TYPE(CDP1862, cdp1862_device) 90 91 #endif // MAME_VIDEO_CDP1862_H 92