diff options
Diffstat (limited to 'src/devices/video/hp1ll3.h')
-rw-r--r-- | src/devices/video/hp1ll3.h | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/src/devices/video/hp1ll3.h b/src/devices/video/hp1ll3.h index b8c9b45e007..2360b190af6 100644 --- a/src/devices/video/hp1ll3.h +++ b/src/devices/video/hp1ll3.h @@ -43,16 +43,43 @@ protected: virtual void device_reset() override; private: + struct Point { + uint16_t x , y; + }; + struct Rectangle { + Point origin; + Point size; + }; + void command(int command); - inline void point(int x, int y, int px); + uint16_t get_pix_addr(uint16_t x , uint16_t y) const; + inline void point(int x, int y, bool pix, const uint16_t masks[]); void label(uint8_t chr, int width); - void fill(int x, int y, int w, int h, int arg); void line(int x_from, int y_from, int x_to, int y_to); - void bitblt(int dstx, int dsty, uint16_t srcaddr, int width, int height, int op); - - uint16_t m_conf[12], m_input[2]; - int m_input_ptr, m_memory_ptr, m_conf_ptr; + void wr_video(uint16_t addr , uint16_t v); + uint16_t rd_video(uint16_t addr) const; + static void get_rop_masks(uint16_t rop , uint16_t masks[]); + static uint16_t apply_rop(uint16_t old_pix , uint16_t new_pix , uint16_t glob_mask , const uint16_t masks[]); + void rmw_rop(uint16_t addr , uint16_t new_pix , uint16_t glob_mask , const uint16_t masks[]); + void clip_coord(int size_1 , int& p1 , int origin_clip , int size_clip , int& origin_2 , int& size_2) const; + bool bitblt(uint16_t src_base_addr , unsigned src_width , unsigned src_height , Point src_p , + const Rectangle& clip_rect , const Rectangle& dst_rect , uint16_t rop , bool use_m_org = true); + void rowbltpos(unsigned p1_pix , unsigned p2_pix , int width , const uint16_t masks[]); + void rowbltneg(unsigned p1_pix , unsigned p2_pix , int width , const uint16_t masks[]); + void fill(const Rectangle& fill_rect , uint16_t pattern_no); + uint16_t get_pattern_addr(uint16_t pattern_no) const; + void draw_cursor(); + void draw_sprite(); + void draw_cursor_sprite(); + void set_pen_pos(Point p); + void set_sprite_pos(Point p); + Rectangle get_window() const; + Rectangle get_screen() const; + void apply_conf(); + + uint16_t m_conf[ 11 ] , m_input[2] , m_io_word; + int m_io_ptr, m_memory_ptr; int m_command, m_horiz_pix_total, m_vert_pix_total; uint16_t m_sad; @@ -64,15 +91,20 @@ private: bool m_enable_video, m_enable_cursor, m_enable_sprite; uint16_t m_cursor_x, m_cursor_y, m_saved_x; + uint16_t m_cursor_pattern; + uint16_t m_cursor_offset; uint16_t m_sprite_x, m_sprite_y; + uint16_t m_sprite_pattern; struct { - uint16_t width, height, org_x, org_y, width_w; + uint16_t width, height, org_x, org_y; } m_window; std::unique_ptr<uint16_t[]> m_videoram; + uint16_t m_ram_addr_mask; + uint16_t m_rw_win_x , m_rw_win_y; bool m_busy; - bitmap_ind16 m_bitmap, m_cursor, m_sprite; + bitmap_ind16 m_bitmap; }; |