summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/newport.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/newport.h')
-rw-r--r--src/mame/video/newport.h113
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)