diff options
Diffstat (limited to 'src/mame/video/newport.h')
-rw-r--r-- | src/mame/video/newport.h | 113 |
1 files changed, 44 insertions, 69 deletions
diff --git a/src/mame/video/newport.h b/src/mame/video/newport.h index 8e050eeff5b..a5a3b4a0918 100644 --- a/src/mame/video/newport.h +++ b/src/mame/video/newport.h @@ -9,10 +9,9 @@ #pragma once +#include "cpu/mips/mips3.h" #include "machine/hpc3.h" -#define ENABLE_NEWVIEW_LOG (0) - class newport_video_device : public device_t { public: @@ -26,8 +25,8 @@ public: newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_READ64_MEMBER(rex3_r); - DECLARE_WRITE64_MEMBER(rex3_w); + DECLARE_READ32_MEMBER(rex3_r); + DECLARE_WRITE32_MEMBER(rex3_w); uint32_t screen_update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -94,7 +93,6 @@ private: { uint32_t m_draw_mode0; uint32_t m_draw_mode1; - uint32_t m_write_width; uint32_t m_ls_mode; uint32_t m_ls_pattern; uint32_t m_ls_pattern_saved; @@ -102,16 +100,16 @@ private: uint32_t m_color_back; uint32_t m_color_vram; uint32_t m_alpha_ref; + uint32_t m_smask0_x; + uint32_t m_smask0_y; uint32_t m_setup; uint32_t m_step_z; - int32_t m_x_start; - int32_t m_y_start; - int32_t m_x_end; - int32_t m_y_end; - int16_t m_x_save; + uint32_t m_x_start; + uint32_t m_y_start; + uint32_t m_x_end; + uint32_t m_y_end; + uint32_t m_x_save; uint32_t m_xy_move; - int16_t m_x_move; - int16_t m_y_move; uint32_t m_bres_d; uint32_t m_bres_s1; uint32_t m_bres_octant_inc1; @@ -124,98 +122,75 @@ private: uint32_t m_y_start_f; uint32_t m_x_end_f; uint32_t m_y_end_f; - int16_t m_x_start_i; + uint32_t m_x_start_i; uint32_t m_xy_start_i; - int16_t m_y_start_i; uint32_t m_xy_end_i; - int16_t m_x_end_i; - int16_t m_y_end_i; uint32_t m_x_start_end_i; - int32_t m_color_red; - int32_t m_color_alpha; - int32_t m_color_green; - int32_t m_color_blue; - int32_t m_slope_red; - int32_t m_slope_alpha; - int32_t m_slope_green; - int32_t m_slope_blue; + uint32_t m_color_red; + uint32_t m_color_alpha; + uint32_t m_color_green; + uint32_t m_color_blue; + uint32_t m_slope_red; + uint32_t m_slope_alpha; + uint32_t m_slope_green; + uint32_t m_slope_blue; uint32_t m_write_mask; - uint32_t m_color_i; + uint32_t m_zero_fract; uint32_t m_zero_overflow; - uint64_t m_host_dataport; + uint32_t m_host_dataport_msw; + uint32_t m_host_dataport_lsw; uint32_t m_dcb_mode; uint32_t m_dcb_reg_select; uint32_t m_dcb_slave_select; uint32_t m_dcb_data_msw; uint32_t m_dcb_data_lsw; - uint32_t m_smask_x[5]; - uint32_t m_smask_y[5]; + uint32_t m_s_mask1_x; + uint32_t m_s_mask1_y; + uint32_t m_s_mask2_x; + uint32_t m_s_mask2_y; + uint32_t m_s_mask3_x; + uint32_t m_s_mask3_y; + uint32_t m_s_mask4_x; + uint32_t m_s_mask4_y; uint32_t m_top_scanline; uint32_t m_xy_window; - int16_t m_x_window; - int16_t m_y_window; uint32_t m_clip_mode; uint32_t m_config; uint32_t m_status; uint8_t m_xfer_width; - bool m_read_active; + uint32_t m_skipline_kludge; }; + struct cmap_t { uint16_t m_palette_idx; uint32_t m_palette[0x10000]; }; - uint8_t get_cursor_pixel(int x, int y); + uint32_t get_cursor_pixel(int x, int y); // internal state - uint32_t cmap0_read(); - void cmap0_write(uint32_t data); - uint32_t cmap1_read(); - uint32_t xmap0_read(); - void xmap0_write(uint32_t data); - uint32_t xmap1_read(); - void xmap1_write(uint32_t data); - uint32_t vc2_read(); - void vc2_write(uint32_t data); - - void write_x_start(int32_t val); - void write_y_start(int32_t val); - void write_x_end(int32_t val); - void write_y_end(int32_t val); - - bool pixel_clip_pass(int16_t x, int16_t y); - void write_pixel(uint8_t color, bool shade); - void write_pixel(int16_t x, int16_t y, uint8_t color); - void store_pixel(uint8_t *dest_buf, uint8_t src); - - void do_v_iline(uint8_t color, bool skip_last, bool shade); - void do_h_iline(uint8_t color, bool skip_last, bool shade); - void do_iline(uint8_t color, bool skip_last, bool shade); - uint8_t do_pixel_read(); - uint64_t do_pixel_word_read(); + DECLARE_READ32_MEMBER(cmap0_r); + DECLARE_WRITE32_MEMBER(cmap0_w); + DECLARE_READ32_MEMBER(cmap1_r); + DECLARE_READ32_MEMBER(xmap0_r); + DECLARE_WRITE32_MEMBER(xmap0_w); + DECLARE_READ32_MEMBER(xmap1_r); + DECLARE_WRITE32_MEMBER(xmap1_w); + DECLARE_READ32_MEMBER(vc2_r); + DECLARE_WRITE32_MEMBER(vc2_w); void do_rex3_command(); - required_device<cpu_device> m_maincpu; + required_device<mips3_device> m_maincpu; required_device<hpc3_device> m_hpc3; vc2_t m_vc2; xmap_t m_xmap0; xmap_t m_xmap1; rex3_t m_rex3; - std::unique_ptr<uint8_t[]> m_rgbci; - std::unique_ptr<uint8_t[]> m_olay; - std::unique_ptr<uint8_t[]> m_pup; - std::unique_ptr<uint8_t[]> m_cid; + std::unique_ptr<uint32_t[]> m_base; cmap_t m_cmap0; - -#if ENABLE_NEWVIEW_LOG - void start_logging(); - void stop_logging(); - - FILE *m_newview_log; -#endif }; DECLARE_DEVICE_TYPE(NEWPORT_VIDEO, newport_video_device) |