summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/ygv608.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/ygv608.h')
-rw-r--r--src/mame/video/ygv608.h314
1 files changed, 0 insertions, 314 deletions
diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h
deleted file mode 100644
index 586cf44597c..00000000000
--- a/src/mame/video/ygv608.h
+++ /dev/null
@@ -1,314 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Mark McDougall
-/*
- * Yamaha YGV608 - PVDC2 Pattern mode Video Display Controller 2
- * - Mark McDougall
- */
-
-#ifndef MAME_VIDEO_YGV608_H
-#define MAME_VIDEO_YGV608_H
-
-#pragma once
-
-#include "tilemap.h"
-#include "screen.h"
-
-class ygv608_device : public device_t,
- public device_gfx_interface,
- public device_memory_interface,
- public device_palette_interface,
- public device_video_interface
-{
-public:
- // construction/destruction
- ygv608_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- void port_map(address_map &map);
-
- // ports section
- uint8_t pattern_name_table_r();
- uint8_t sprite_data_r();
- uint8_t scroll_data_r();
- uint8_t palette_data_r();
- uint8_t register_data_r();
-// uint8_t register_select_r();
- uint8_t status_port_r();
- uint8_t system_control_r();
- void pattern_name_table_w(uint8_t data);
- void sprite_data_w(uint8_t data);
- void scroll_data_w(uint8_t data);
- void palette_data_w(uint8_t data);
- void register_data_w(uint8_t data);
- void register_select_w(uint8_t data);
- void status_port_w(uint8_t data);
- void system_control_w(uint8_t data);
-
- // register section
- uint8_t pattern_name_table_x_r();
- void pattern_name_table_x_w(uint8_t data);
- uint8_t pattern_name_table_y_r();
- void pattern_name_table_y_w(uint8_t data);
- uint8_t ram_access_ctrl_r();
- void ram_access_ctrl_w(uint8_t data);
- uint8_t sprite_address_r();
- void sprite_address_w(uint8_t data);
- uint8_t scroll_address_r();
- void scroll_address_w(uint8_t data);
- uint8_t palette_address_r();
- void palette_address_w(uint8_t data);
- uint8_t sprite_bank_r();
- void sprite_bank_w(uint8_t data);
- uint8_t screen_ctrl_7_r();
- void screen_ctrl_7_w(uint8_t data);
- uint8_t screen_ctrl_8_r();
- void screen_ctrl_8_w(uint8_t data);
- uint8_t screen_ctrl_9_r();
- void screen_ctrl_9_w(uint8_t data);
- uint8_t screen_ctrl_10_r();
- void screen_ctrl_10_w(uint8_t data);
- uint8_t screen_ctrl_11_r();
- void screen_ctrl_11_w(uint8_t data);
- uint8_t screen_ctrl_12_r();
- void screen_ctrl_12_w(uint8_t data);
- uint8_t irq_mask_r();
- void irq_mask_w(uint8_t data);
- uint8_t irq_ctrl_r(offs_t offset);
- void irq_ctrl_w(offs_t offset, uint8_t data);
- void crtc_w(offs_t offset, uint8_t data);
- void base_address_w(offs_t offset, uint8_t data);
- void roz_ax_w(offs_t offset, uint8_t data);
- void roz_dx_w(offs_t offset, uint8_t data);
- void roz_dxy_w(offs_t offset, uint8_t data);
- void roz_ay_w(offs_t offset, uint8_t data);
- void roz_dy_w(offs_t offset, uint8_t data);
- void roz_dyx_w(offs_t offset, uint8_t data);
- void border_color_w(uint8_t data);
-
- // TODO: is this even a real connection?
- void set_gfxbank(uint8_t gfxbank);
-
- uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
-
- auto vblank_callback() { return m_vblank_handler.bind(); }
-
- auto raster_callback() { return m_raster_handler.bind(); }
-
- void regs_map(address_map &map);
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_post_load() override;
-
- virtual space_config_vector memory_space_config() const override;
-
- virtual uint32_t palette_entries() const override { return 256; }
-
- void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- address_space *m_iospace;
-
-private:
- const address_space_config m_io_space_config;
- static constexpr unsigned SPRITE_ATTR_TABLE_SIZE = 256;
-
- static constexpr unsigned MAX_SPRITES = SPRITE_ATTR_TABLE_SIZE >> 2;
-
- struct SPRITE_ATTR {
- uint8_t sy; // y dot position 7:0
- uint8_t sx; // x dot position 7:0
- uint8_t attr; // 0xf0 = color, 0x0c = size, reverse, 0x02 = x hi bit, 0x01 = y hi bit
- uint8_t sn; // pattern name (0-255)
- };
-
- TILEMAP_MAPPER_MEMBER(get_tile_offset);
- TILE_GET_INFO_MEMBER(get_tile_info_A_8);
- TILE_GET_INFO_MEMBER(get_tile_info_B_8);
- TILE_GET_INFO_MEMBER(get_tile_info_A_16);
- TILE_GET_INFO_MEMBER(get_tile_info_B_16);
-
- void register_state_save();
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_layer_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *source_tilemap);
- void ygv608_draw_mosaic(bitmap_ind16 &bitmap, const rectangle &cliprect, int n);
-
- uint8_t m_namcond1_gfxbank;
-
- tilemap_t *m_tilemap_A_cache_8[3];
- tilemap_t *m_tilemap_A_cache_16[3];
- tilemap_t *m_tilemap_B_cache_8[3];
- tilemap_t *m_tilemap_B_cache_16[3];
- tilemap_t *m_tilemap_A;
- tilemap_t *m_tilemap_B;
- bitmap_ind16 m_work_bitmap;
-
- void HandleReset();
- void HandleRomTransfers(uint8_t type);
-
-
- /*
- * Built in ram
- */
-
- uint8_t m_pattern_name_table[4096];
-
- union {
- uint8_t b[SPRITE_ATTR_TABLE_SIZE];
- SPRITE_ATTR s[MAX_SPRITES];
- } m_sprite_attribute_table;
-
- uint8_t m_scroll_data_table[2][256];
- uint8_t m_colour_palette[256][3];
-
- /*
- * Shortcut variables
- */
-
- uint32_t m_bits16; // bits per pattern (8/16)
- uint32_t m_page_x, m_page_y; // pattern page size
- uint32_t m_pny_shift; // y coord multiplier
- uint8_t m_na8_mask; // mask on/off na11/9:8
- int m_col_shift; // shift in scroll table column index
-
-
- // base address shortcuts
- uint32_t m_base_addr[2][8];
- uint32_t m_base_y_shift; // for extracting pattern y coord 'base'
-
- bool m_screen_resize; // screen requires resize
- bool m_tilemap_resize; // tilemap requires resize
-
- /* These were statically allocated in the r/w routines */
- int m_color_state_r;
- int m_color_state_w;
- int m_p0_state;
- int m_pattern_name_base_r,m_pattern_name_base_w; /* pattern name table base address */
-
- // === new variable handling starts here ===
- uint8_t m_screen_status; /**< port #6: status port r/w */
- uint8_t m_dma_status; /**< port #7: system control port r/w */
-
- uint8_t m_register_address; /**< RN: Register address select */
- bool m_register_autoinc_r; /**< RRAI: Register address auto-increment on read */
- bool m_register_autoinc_w; /**< RWAI: Register address auto-increment on write */
-
- bool m_raster_irq_mask; /**< IEP: raster irq mask (INT1 occurs if 1) */
- bool m_vblank_irq_mask; /**< IEV: vblank irq mask (INT0 occurs if 1) */
- int m_raster_irq_hpos; /**< IH: horizontal position where raster irq occurs x 32 */
- int m_raster_irq_vpos; /**< IV: vertical position where raster irq occurs */
- bool m_raster_irq_mode; /**< FPM: if 1 vertical position becomes invalid for raster irqs (irqs occur for every line) */
-
- uint8_t m_scroll_address; /**< SCA: scroll table access pointer */
- uint8_t m_palette_address; /**< CC: color palette access pointer */
- uint8_t m_sprite_address; /**< SAA: sprite attribute table access pointer */
- uint8_t m_sprite_bank; /**< SBA: sprite generator base address (MA20 to MA13) */
- uint8_t m_xtile_ptr; /**< PNX: X coordinate of pattern space */
- uint8_t m_ytile_ptr; /**< PNY: Y coordinate of pattern space */
- bool m_xtile_autoinc; /**< PNXA: Permits auto-increment in X coordinate */
- bool m_ytile_autoinc; /**< PNXA: Permits auto-increment in Y coordinate */
- bool m_plane_select_access; /**< B/(A): A/B plane access select */
-
- uint8_t m_mosaic_aplane; /**< MCA: mosaic factor applied to A plane */
- uint8_t m_mosaic_bplane; /**< MCA: mosaic factor applied to B plane */
- bool m_sprite_disable; /**< SPRD: disables the sprite plane display */
- bool m_sprite_aux_mode; /**< SPAS: if 0 aux bits selects size, if 1 selects flipping */
- uint8_t m_sprite_aux_reg; /**< SPA: auxiliary bits of sprite attribute table */
- uint8_t m_border_color; /**< BDC: border color */
-
- bool m_saar; /**< SAAR: Address autoinc after reading sprite attribute table */
- bool m_saaw; /**< SAAW: Address autoinc after writing sprite attribute table */
- bool m_scar; /**< SCAR: Address autoinc after reading scroll data table */
- bool m_scaw; /**< SCAW: Address autoinc after writing scroll data table */
- bool m_cpar; /**< CPAR: Address autoinc after reading color palette */
- bool m_cpaw; /**< CPAW: Address autoinc after writing color palette */
- bool m_ba_plane_scroll_select; /**< B/(A) P#2 gains access to scroll data table in A/B plane */
-
- bool m_dspe; /**< DSPE: display permission of pattern plane(s) (screen blanked if 0) */
- uint8_t m_md; /**< MDx: mode for pattern planes */
- bool m_zron; /**< ZRON: enable ROZ features */
- bool m_flip; /**< FLIP: enable flip for attribute bits 11 & 10 */
- bool m_dckm; /**< DCKM: dot clock frequency select */
-
- bool m_page_size; /**< PGS: page size setter */
- uint8_t m_h_display_size; /**< HDS: horizontal display domain */
- uint8_t m_v_display_size; /**< VDS: vertical display domain */
- bool m_roz_wrap_disable; /**< RLRT: ROZ wraparound disable */
- bool m_scroll_wrap_disable; /**< RLSC: ROZ wraparound disable */
-
- uint8_t m_pattern_size; /**< PTS: pattern size of pattern plane */
- uint8_t m_h_div_size; /**< SLH: size of horizontal division in screen division scrolling */
- uint8_t m_v_div_size; /**< SLV: size of vertical division in screen division scrolling */
-
- bool m_planeA_trans_enable; /**< CTPA: enable transparency for plane A */
- bool m_planeB_trans_enable; /**< CTPA: enable transparency for plane B */
- uint8_t m_priority_mode; /**< PRM: priority mode select */
- bool m_cbdr; /**< CBDR: color bus terminals CB7 to 0 and SPRT */
- bool m_yse; /**< YSE: permission control of trasparency timing output of YS terminal */
- uint8_t m_scm; /**< SCM: output frequency of clock signal output from terminal FSC */
-
- uint8_t m_planeA_color_fetch; /**< APF: A plane color fetch mode */
- uint8_t m_planeB_color_fetch; /**< BPF: B plane color fetch mode */
- uint8_t m_sprite_color_fetch; /**< SPF: sprite color fetch mode */
-
- // screen section
- devcb_write_line m_vblank_handler;
- devcb_write_line m_raster_handler;
- emu_timer *m_vblank_timer;
- emu_timer *m_raster_timer;
-
- void screen_configure(); /**< Adjust screen parameters based off CRTC ones */
- attotime raster_sync_offset(); /**< Adjust timing based off raster & CRTC parameters */
- void vblank_irq_check(); /**< mask + pend check for vblank irq */
- void raster_irq_check(); /**< mask + pend check for raster irq */
- void pattern_name_autoinc_check(); /**< check autoinc for tile pointers */
- void pattern_mode_setup(); /**< refresh pattern mode at register 7/8 change*/
- int get_col_division(int raw_col); /**< calculate column scroll */
- int get_row_division(int raw_row); /**< calculate row scroll */
-
- enum
- {
- VBLANK_TIMER,
- RASTER_TIMER
- };
-
- struct {
- int htotal = 0; /**< HTL: horizontal total number of dots x 2 */
- int vtotal = 0; /**< VTL: vertical total number of lines x 1 */
- int display_hstart = 0; /**< HDS: horizontal display starting position x 2*/
- int display_vstart = 0; /**< VDS: vertical display starting position x 1 */
- int display_width = 0; /**< HDW: horizontal display size x 16 */
- int display_height = 0; /**< VDW: vertical display size x 8 */
- int display_hsync = 0; /**< HSW: horizontal sync signal x 16 */
- int display_vsync = 0; /**< VSW: vertical sync signal x 1 */
- int border_width = 0; /**< HBW: horizontal border size x 16 */
- int border_height = 0; /**< VBW: vertical border size x 8 */
- }m_crtc;
-
- // rotation, zoom shortcuts
- uint32_t m_ax; /**< AX */
- uint32_t m_dx; /**< DX */
- uint32_t m_dxy; /**< DXY */
- uint32_t m_ay; /**< AY */
- uint32_t m_dy; /**< DY */
- uint32_t m_dyx; /**< DYX */
-
- // raw register versions of above
- uint32_t m_raw_ax;
- uint16_t m_raw_dx;
- uint16_t m_raw_dxy;
- uint32_t m_raw_ay;
- uint16_t m_raw_dy;
- uint16_t m_raw_dyx;
-
- // inline helpers
- // for raw to ROZ conversion
- uint32_t roz_convert_raw24(uint32_t *raw_reg, uint8_t offset, uint8_t data);
- uint32_t roz_convert_raw16(uint16_t *raw_reg, uint8_t offset, uint8_t data);
-
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(YGV608, ygv608_device)
-
-
-#endif