1 // license:BSD-3-Clause 2 // copyright-holders:Sandro Ronco 3 /*************************************************************************** 4 5 Hitachi HD44352 LCD controller 6 7 ***************************************************************************/ 8 9 #ifndef MAME_VIDEO_HD44352_H 10 #define MAME_VIDEO_HD44352_H 11 12 #pragma once 13 14 //************************************************************************** 15 // TYPE DEFINITIONS 16 //************************************************************************** 17 18 // ======================> hd44352_device 19 20 class hd44352_device : public device_t 21 { 22 public: 23 // construction/destruction 24 hd44352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 25 on_cb()26 auto on_cb() { return m_on_cb.bind(); } 27 28 // device interface 29 uint8_t data_read(); 30 void data_write(uint8_t data); 31 void control_write(uint8_t data); 32 33 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 34 35 protected: 36 // device-level overrides 37 virtual void device_start() override; 38 virtual void device_reset() override; 39 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 40 virtual void device_validity_check(validity_checker &valid) const override; 41 42 private: 43 uint8_t compute_newval(uint8_t type, uint8_t oldval, uint8_t newval); 44 uint8_t get_char(uint16_t pos); 45 46 static const device_timer_id ON_TIMER = 1; 47 emu_timer *m_on_timer; 48 49 uint8_t m_video_ram[2][0x180]; 50 uint8_t m_control_lines; 51 uint8_t m_data_bus; 52 uint8_t m_par[3]; 53 uint8_t m_state; 54 uint16_t m_bank; 55 uint16_t m_offset; 56 uint8_t m_char_width; 57 uint8_t m_lcd_on; 58 uint8_t m_scroll; 59 uint32_t m_contrast; 60 61 uint8_t m_custom_char[4][8]; // 4 chars * 8 bytes 62 uint8_t m_byte_count; 63 uint8_t m_cursor_status; 64 uint8_t m_cursor[8]; 65 uint8_t m_cursor_x; 66 uint8_t m_cursor_y; 67 uint8_t m_cursor_lcd; 68 69 devcb_write_line m_on_cb; // ON line callback 70 required_region_ptr<uint8_t> m_char_rom; 71 }; 72 73 // device type definition 74 DECLARE_DEVICE_TYPE(HD44352, hd44352_device) 75 76 #endif // MAME_VIDEO_HD44352_H 77