From d77fd4db55c99df68d1bf8cbc39c7893877b75a8 Mon Sep 17 00:00:00 2001 From: angelosa Date: Thu, 28 Sep 2017 01:42:58 +0200 Subject: ygv608.cpp: kill legacy ports variables (nw) --- src/mame/video/ygv608.cpp | 64 ++++++++++++++++++----------------------------- src/mame/video/ygv608.h | 24 +++++------------- 2 files changed, 31 insertions(+), 57 deletions(-) diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 35c126e36ab..172fb3b82a0 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -54,28 +54,6 @@ #include "screen.h" -// Fundamental constants -enum { - p5_rwai = 0x80, // increment register select on reads - p5_rrai = 0x40, // increment register select on writes - p5_rn = 0x3f, // register select - -// p6_res6 = 0xe0, - p6_fp = 0x10, // position detection flag - p6_fv = 0x08, // vertical border interval flag - p6_fc = 0x04, - p6_hb = 0x02, // horizontal blanking flag? - p6_vb = 0x01, // vertical blanking flag? - -// p7_res7 = 0xc0, - p7_tr = 0x20, - p7_tc = 0x10, - p7_tl = 0x08, - p7_ts = 0x04, - p7_tn = 0x02, - p7_sr = 0x01, -}; - // TODO: move these into enums // R#7(md) @@ -322,7 +300,7 @@ DEVICE_ADDRESS_MAP_START( port_map, 8, ygv608_device ) AM_RANGE(0x02, 0x02) AM_READWRITE(scroll_data_r,scroll_data_w) AM_RANGE(0x03, 0x03) AM_READWRITE(palette_data_r,palette_data_w) AM_RANGE(0x04, 0x04) AM_READWRITE(register_data_r,register_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(register_select_w) + AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE(register_select_w) AM_RANGE(0x06, 0x06) AM_READWRITE(status_port_r,status_port_w) AM_RANGE(0x07, 0x07) AM_READWRITE(system_control_r,system_control_w) ADDRESS_MAP_END @@ -347,7 +325,7 @@ ygv608_device::ygv608_device( const machine_config &mconfig, const char *tag, de //------------------------------------------------- void ygv608_device::device_start() { - memset(&m_ports, 0, sizeof(m_ports)); +// memset(&m_ports, 0, sizeof(m_ports)); // memset(&m_regs, 0, sizeof(m_regs)); memset(&m_pattern_name_table, 0, sizeof(m_pattern_name_table)); memset(&m_sprite_attribute_table, 0, sizeof(m_sprite_attribute_table)); @@ -870,7 +848,7 @@ void ygv608_device::postload() void ygv608_device::register_state_save() { - save_item(NAME(m_ports.b)); +// save_item(NAME(m_ports.b)); // save_item(NAME(m_regs.b)); save_item(NAME(m_pattern_name_table)); save_item(NAME(m_sprite_attribute_table.b)); @@ -1254,14 +1232,14 @@ READ8_MEMBER( ygv608_device::sprite_data_r ) // P#2R - scroll data port READ8_MEMBER( ygv608_device::scroll_data_r ) { - uint8_t res = m_scroll_data_table[m_ba_plane_select][m_scroll_address]; + uint8_t res = m_scroll_data_table[m_ba_plane_scroll_select][m_scroll_address]; if (m_scar == true) { m_scroll_address++; /* handle wrap to next plane */ if (m_scroll_address == 0) - m_ba_plane_select ^= 1; + m_ba_plane_scroll_select ^= 1; } return res; @@ -1324,7 +1302,7 @@ READ8_MEMBER( ygv608_device::status_port_r ) // P#7R - system control port READ8_MEMBER( ygv608_device::system_control_r ) { - return (uint8_t)(m_ports.b[7]); + return m_dma_status; } // P#0W - pattern name table data write @@ -1427,14 +1405,14 @@ WRITE8_MEMBER( ygv608_device::sprite_data_w ) // P#2W - scroll data port WRITE8_MEMBER( ygv608_device::scroll_data_w ) { - m_scroll_data_table[m_ba_plane_select][m_scroll_address] = data; + m_scroll_data_table[m_ba_plane_scroll_select][m_scroll_address] = data; if (m_scaw == true) { m_scroll_address++; /* handle wrap to next plane */ if (m_scroll_address == 0) - m_ba_plane_select ^= 1; + m_ba_plane_scroll_select ^= 1; } } @@ -1505,21 +1483,27 @@ WRITE8_MEMBER( ygv608_device::status_port_w ) // P#7W - system control port WRITE8_MEMBER( ygv608_device::system_control_w ) { - m_ports.b[7] = data; - if (m_ports.b[7] & 0x3e) + m_dma_status = data; + if (m_dma_status & 0x3e) HandleRomTransfers(data & 0x3e); - if (m_ports.b[7] & 0x01) - HandleYGV608Reset(); + if (m_dma_status & 0x01) + HandleReset(); } // TODO: actual timing of this -void ygv608_device::HandleYGV608Reset() +void ygv608_device::HandleReset() { int i; /* Clear ports #0-7 */ - memset( &m_ports.b[0], 0, 8 ); - + //memset( &m_ports.b[0], 0, 8 ); + // most likely variables to be reset here from ports, there might be more + pattern_name_base_w = 0; + pattern_name_base_r = 0; + m_register_address = 0; + m_register_autoinc_r = false; + m_register_autoinc_w = false; + /* Clear registers #0-38, #47-49 */ for(i=0;i<39;i++) m_iospace->write_byte(i, 0x00); @@ -1620,6 +1604,7 @@ WRITE8_MEMBER( ygv608_device::pattern_name_table_y_w ) m_ytile_ptr &= m_page_y -1; m_ytile_autoinc = BIT(data,7); m_plane_select_access = BIT(data,6); + // TODO: done by Dig Dug Original if(m_ytile_autoinc == true && m_xtile_autoinc == true) logerror("%s: Warning both X/Y Tiles autoinc enabled!\n",this->tag()); } @@ -1639,6 +1624,7 @@ WRITE8_MEMBER( ygv608_device::pattern_name_table_x_w ) // xTile, m_page_x ); m_xtile_ptr &= m_page_x -1; m_xtile_autoinc = BIT(data,7); + // TODO: done by Dig Dug Original if(m_ytile_autoinc == true && m_xtile_autoinc == true) logerror("%s: Warning both X/Y Tiles autoinc enabled!\n",this->tag()); } @@ -1656,7 +1642,7 @@ WRITE8_MEMBER( ygv608_device::pattern_name_table_x_w ) READ8_MEMBER( ygv608_device::ram_access_ctrl_r ) { return (m_cpaw<<7) | (m_cpar<<6) | - (m_ba_plane_select<<4) | + (m_ba_plane_scroll_select<<4) | (m_scaw<<3) | (m_scar<<2) | (m_saaw<<1) | (m_saar<<0); } @@ -1667,7 +1653,7 @@ WRITE8_MEMBER( ygv608_device::ram_access_ctrl_w ) m_saaw = BIT(data,1); m_scar = BIT(data,2); m_scaw = BIT(data,3); - m_ba_plane_select = BIT(data,4); + m_ba_plane_scroll_select = BIT(data,4); m_cpar = BIT(data,6); m_cpaw = BIT(data,7); } diff --git a/src/mame/video/ygv608.h b/src/mame/video/ygv608.h index 5ad738acad7..25043a604e9 100644 --- a/src/mame/video/ygv608.h +++ b/src/mame/video/ygv608.h @@ -109,17 +109,6 @@ private: const address_space_config m_io_space_config; static constexpr unsigned SPRITE_ATTR_TABLE_SIZE = 256; - struct YGV_PORTS { - uint8_t na; // P#0 - pattern name table data port (read/write) - uint8_t p1; // P#1 - sprite data port (read/write) - uint8_t p2; // P#2 - scroll data port (read/write) - uint8_t p3; // P#3 - colour palette data port (read/write) - uint8_t p4; // P#4 - register data port (read/write) - uint8_t p5; // P#5 - register select port (write only) - uint8_t p6; // P#6 - status port (read/write) - uint8_t p7; // P#7 - system control port (read/write) - }; - static constexpr unsigned MAX_SPRITES = SPRITE_ATTR_TABLE_SIZE >> 2; struct SPRITE_ATTR { @@ -149,13 +138,9 @@ private: tilemap_t *m_tilemap_B; bitmap_ind16 m_work_bitmap; - void HandleYGV608Reset(); + void HandleReset(); void HandleRomTransfers(uint8_t type); - union { - uint8_t b[8]; - YGV_PORTS s; - } m_ports; /* * Built in ram @@ -181,6 +166,7 @@ private: 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' @@ -194,10 +180,12 @@ private: int pattern_name_base_r,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 */ - uint8_t m_screen_status; /**< CD: status port r/w */ 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) */ @@ -228,7 +216,7 @@ private: 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_select; /**< B/(A) P#2 gains access to scroll data table in A/B plane */ + 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 */ -- cgit v1.2.3