diff options
Diffstat (limited to 'src/mame/drivers/hh_ucom4.cpp')
-rw-r--r-- | src/mame/drivers/hh_ucom4.cpp | 103 |
1 files changed, 73 insertions, 30 deletions
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp index 10d4434981c..9565df83710 100644 --- a/src/mame/drivers/hh_ucom4.cpp +++ b/src/mame/drivers/hh_ucom4.cpp @@ -92,8 +92,6 @@ void hh_ucom4_state::machine_start() { - screenless_state::machine_start(); - // zerofill memset(m_port, 0, sizeof(m_port)); m_int = 0; @@ -131,7 +129,7 @@ u8 hh_ucom4_state::read_inputs(int columns) // read selected input rows for (int i = 0; i < columns; i++) if (m_inp_mux >> i & 1) - ret |= m_inp_matrix[i]->read(); + ret |= m_inputs[i]->read(); return ret; } @@ -210,7 +208,7 @@ void ufombs_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,3,2,1,0,4,5,6,7,8); u16 plate = bitswap<16>(m_plate,15,14,13,12,11,7,10,6,9,5,8,4,0,1,2,3); - display_matrix(10, 9, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(ufombs_state::grid_w) @@ -274,6 +272,8 @@ void ufombs_state::ufombs(machine_config &config) screen.set_size(243, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 10); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -330,7 +330,7 @@ public: void ssfball_state::prepare_display() { u32 plate = bitswap<24>(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,10,9,8,0,1,2,4,5,6); - display_matrix(16, 9, plate, m_grid); + m_display->matrix(m_grid, plate); } WRITE8_MEMBER(ssfball_state::grid_w) @@ -363,7 +363,7 @@ WRITE8_MEMBER(ssfball_state::plate_w) READ8_MEMBER(ssfball_state::input_b_r) { // B: input port 2, where B3 is multiplexed - return m_inp_matrix[2]->read() | read_inputs(2); + return m_inputs[2]->read() | read_inputs(2); } // config @@ -429,6 +429,8 @@ void ssfball_state::ssfball(machine_config &config) screen.set_size(1920, 482); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 16); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -490,7 +492,7 @@ public: void bmsoccer_state::prepare_display() { u32 plate = bitswap<24>(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,8,4,0,9,5,1,10,6,2); - display_matrix(16, 9, plate, m_grid); + m_display->matrix(m_grid, plate); } WRITE8_MEMBER(bmsoccer_state::grid_w) @@ -573,6 +575,8 @@ void bmsoccer_state::bmsoccer(machine_config &config) screen.set_size(271, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 16); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -622,7 +626,7 @@ void bmsafari_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8); u16 plate = bitswap<16>(m_plate,15,14,13,12,11,7,10,2,9,5,8,4,0,1,6,3); - display_matrix(10, 9, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(bmsafari_state::grid_w) @@ -688,6 +692,8 @@ void bmsafari_state::bmsafari(machine_config &config) screen.set_size(248, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 10); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -739,7 +745,7 @@ public: void splasfgt_state::prepare_display() { u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,17,13,1,0,8,6,0,10,11,14,15,16,9,5,7,4,2,3); - display_matrix(16, 9, plate, m_grid); + m_display->matrix(m_grid, plate); } WRITE8_MEMBER(splasfgt_state::grid_w) @@ -847,6 +853,8 @@ void splasfgt_state::splasfgt(machine_config &config) screen.set_size(1920, 476); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 16); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -900,7 +908,7 @@ void bcclimbr_state::prepare_display() { u8 grid = bitswap<8>(m_grid,7,6,0,1,2,3,4,5); u32 plate = bitswap<24>(m_plate,23,22,21,20,16,17,18,19,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0); - display_matrix(20, 6, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(bcclimbr_state::grid_w) @@ -959,6 +967,8 @@ void bcclimbr_state::bcclimbr(machine_config &config) screen.set_size(310, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(6, 20); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -1014,7 +1024,7 @@ WRITE8_MEMBER(tactix_state::leds_w) { // D,F: 4*4 led matrix m_port[offset] = data; - display_matrix(4, 4, m_port[NEC_UCOM4_PORTD], m_port[NEC_UCOM4_PORTF]); + m_display->matrix(m_port[NEC_UCOM4_PORTF], m_port[NEC_UCOM4_PORTD]); } WRITE8_MEMBER(tactix_state::speaker_w) @@ -1081,6 +1091,8 @@ void tactix_state::tactix(machine_config &config) m_maincpu->write_f().set(FUNC(tactix_state::leds_w)); m_maincpu->write_g().set(FUNC(tactix_state::speaker_w)); + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(4, 4); config.set_default_layout(layout_tactix); /* sound hardware */ @@ -1136,9 +1148,8 @@ void ctntune_state::prepare_display() u8 sel = m_port[NEC_UCOM4_PORTD] >> 3 & 1; // turn off display when power is off u8 lamps = m_port[NEC_UCOM4_PORTD] & 3; u8 digit = (m_port[NEC_UCOM4_PORTF] << 4 | m_port[NEC_UCOM4_PORTE]) & 0x7f; - set_display_segmask(1, 0x7f); - display_matrix(7+2, 1, lamps << 7 | digit, sel); + m_display->matrix(sel, lamps << 7 | digit); } WRITE8_MEMBER(ctntune_state::_7seg_w) @@ -1220,6 +1231,9 @@ void ctntune_state::ctntune(machine_config &config) m_maincpu->write_f().set(FUNC(ctntune_state::_7seg_w)); m_maincpu->write_g().set(FUNC(ctntune_state::speaker_w)); + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(1, 7+2); + m_display->set_segmask(1, 0x7f); config.set_default_layout(layout_ctntune); /* sound hardware */ @@ -1271,7 +1285,7 @@ void invspace_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,8,9,7,6,5,4,3,2,1,0); u32 plate = bitswap<24>(m_plate,23,22,21,20,19,9,14,13,8,15,11,10,7,11,3,2,6,10,1,5,9,0,4,8); - display_matrix(19, 9, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(invspace_state::grid_w) @@ -1329,6 +1343,8 @@ void invspace_state::invspace(machine_config &config) screen.set_size(289, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 19); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -1380,7 +1396,7 @@ public: void efball_state::prepare_display() { u16 plate = bitswap<16>(m_plate,15,14,13,12,11,4,3,0,2,1,6,10,9,5,8,7); - display_matrix(11, 10, plate, m_grid); + m_display->matrix(m_grid, plate); } WRITE8_MEMBER(efball_state::grid_w) @@ -1447,6 +1463,8 @@ void efball_state::efball(machine_config &config) m_maincpu->write_h().set(FUNC(efball_state::grid_w)); m_maincpu->write_i().set(FUNC(efball_state::plate_w)); + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(10, 11); config.set_default_layout(layout_efball); /* sound hardware */ @@ -1501,7 +1519,7 @@ void galaxy2_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9); u16 plate = bitswap<16>(m_plate,15,3,2,6,1,5,4,0,11,10,7,12,14,13,8,9); - display_matrix(15, 10, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(galaxy2_state::grid_w) @@ -1559,6 +1577,8 @@ void galaxy2_state::galaxy2(machine_config &config) screen.set_size(304, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(10, 15); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -1630,7 +1650,7 @@ void astrocmd_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,4,5,6,7,0,1,2,3); u32 plate = bitswap<24>(m_plate,23,22,21,20,19,3,2,12,13,14,15,16,17,18,0,1,4,8,5,9,7,11,6,10); - display_matrix(17, 9, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(astrocmd_state::grid_w) @@ -1695,6 +1715,8 @@ void astrocmd_state::astrocmd(machine_config &config) screen.set_size(1920, 525); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 17); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -1748,7 +1770,7 @@ WRITE8_MEMBER(edracula_state::grid_w) // C,D: vfd grid int shift = (offset - NEC_UCOM4_PORTC) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); - display_matrix(18, 8, m_plate, m_grid); + m_display->matrix(m_grid, m_plate); } WRITE8_MEMBER(edracula_state::plate_w) @@ -1760,7 +1782,7 @@ WRITE8_MEMBER(edracula_state::plate_w) // E,F,G,H,I01: vfd plate int shift = (offset - NEC_UCOM4_PORTE) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); - display_matrix(18, 8, m_plate, m_grid); + m_display->matrix(m_grid, m_plate); } // config @@ -1799,6 +1821,8 @@ void edracula_state::edracula(machine_config &config) screen.set_size(1920, 526); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(8, 18); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -1847,7 +1871,7 @@ public: WRITE32_MEMBER(mcompgin_state::lcd_output_w) { // uses ROW0-4, COL11-24 - display_matrix(24, 8, data, 1 << offset); + m_display->matrix(1 << offset, data); } WRITE8_MEMBER(mcompgin_state::lcd_w) @@ -1887,6 +1911,8 @@ void mcompgin_state::mcompgin(machine_config &config) HLCD0530(config, m_lcd, 500); // C=0.01uF m_lcd->write_cols().set(FUNC(mcompgin_state::lcd_output_w)); + PWM_DISPLAY(config, m_display).set_size(8, 24); + config.set_default_layout(layout_mcompgin); /* no sound! */ @@ -1932,7 +1958,7 @@ void mvbfree_state::prepare_display() { u16 grid = bitswap<16>(m_grid,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); u16 plate = bitswap<16>(m_plate,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9); - display_matrix(10, 14, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(mvbfree_state::grid_w) @@ -1993,6 +2019,8 @@ void mvbfree_state::mvbfree(machine_config &config) m_maincpu->write_h().set(FUNC(mvbfree_state::grid_w)); m_maincpu->write_i().set(FUNC(mvbfree_state::speaker_w)); + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(14, 10); config.set_default_layout(layout_mvbfree); /* sound hardware */ @@ -2058,7 +2086,7 @@ WRITE8_MEMBER(grobot9_state::lamps_w) // D,F,E0: lamps m_port[offset] = data; - display_matrix(9, 1, m_port[NEC_UCOM4_PORTD] | m_port[NEC_UCOM4_PORTF] << 4 | m_port[NEC_UCOM4_PORTE] << 8, 1); + m_display->matrix(1, m_port[NEC_UCOM4_PORTD] | m_port[NEC_UCOM4_PORTF] << 4 | m_port[NEC_UCOM4_PORTE] << 8); } WRITE8_MEMBER(grobot9_state::input_w) @@ -2114,6 +2142,9 @@ void grobot9_state::grobot9(machine_config &config) m_maincpu->write_e().set(FUNC(grobot9_state::lamps_w)); m_maincpu->write_f().set(FUNC(grobot9_state::lamps_w)); + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(1, 9); + m_display->set_bri_levels(0.25); config.set_default_layout(layout_grobot9); /* sound hardware */ @@ -2165,7 +2196,7 @@ void tccombat_state::prepare_display() { u16 grid = bitswap<16>(m_grid,15,14,13,12,11,10,9,8,3,2,1,0,7,6,5,4); u32 plate = bitswap<24>(m_plate,23,22,21,20,11,15,3,10,14,2,9,13,1,0,12,8,15,1,5,0,3,7,2,6); - display_matrix(20, 9, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(tccombat_state::grid_w) @@ -2219,6 +2250,8 @@ void tccombat_state::tccombat(machine_config &config) screen.set_size(300, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 20); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -2287,7 +2320,7 @@ void tmtennis_state::set_clock() // MCU clock is from an LC circuit oscillating by default at ~360kHz, // but on PRO1, the difficulty switch puts a capacitor across the LC circuit // to slow it down to ~260kHz. - m_maincpu->set_unscaled_clock((m_inp_matrix[1]->read() & 0x100) ? 260000 : 360000); + m_maincpu->set_unscaled_clock((m_inputs[1]->read() & 0x100) ? 260000 : 360000); } WRITE8_MEMBER(tmtennis_state::grid_w) @@ -2295,7 +2328,7 @@ WRITE8_MEMBER(tmtennis_state::grid_w) // G,H,I: vfd grid int shift = (offset - NEC_UCOM4_PORTG) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); - display_matrix(12, 12, m_plate, m_grid); + m_display->matrix(m_grid, m_plate); } WRITE8_MEMBER(tmtennis_state::plate_w) @@ -2303,7 +2336,7 @@ WRITE8_MEMBER(tmtennis_state::plate_w) // C,D,F: vfd plate int shift = (offset == NEC_UCOM4_PORTF) ? 8 : (offset - NEC_UCOM4_PORTC) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); - display_matrix(12, 12, m_plate, m_grid); + m_display->matrix(m_grid, m_plate); } WRITE8_MEMBER(tmtennis_state::port_e_w) @@ -2380,6 +2413,8 @@ void tmtennis_state::tmtennis(machine_config &config) screen.set_size(1920, 417); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(12, 12); + m_display->set_bri_levels(0.005); config.set_default_layout(layout_tmtennis); /* sound hardware */ @@ -2440,7 +2475,7 @@ void tmpacman_state::prepare_display() { u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7); u32 plate = bitswap<24>(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15) | 0x100; - display_matrix(19, 8, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(tmpacman_state::grid_w) @@ -2499,6 +2534,8 @@ void tmpacman_state::tmpacman(machine_config &config) screen.set_size(1920, 508); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(8, 19); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -2552,7 +2589,7 @@ public: void tmscramb_state::prepare_display() { u32 plate = bitswap<24>(m_plate,23,22,21,20,19,18,17,3,15,2,14,1,13,16,0,12,8,4,9,5,10,6,11,7) | 0x400; - display_matrix(17, 10, plate, m_grid); + m_display->matrix(m_grid, plate); } WRITE8_MEMBER(tmscramb_state::grid_w) @@ -2610,6 +2647,8 @@ void tmscramb_state::tmscramb(machine_config &config) screen.set_size(1920, 556); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(10, 17); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -2663,7 +2702,7 @@ void tcaveman_state::prepare_display() { u8 grid = bitswap<8>(m_grid,0,1,2,3,4,5,6,7); u32 plate = bitswap<24>(m_plate,23,22,21,20,19,10,11,5,6,7,8,0,9,2,18,17,16,3,15,14,13,12,4,1) | 0x40; - display_matrix(19, 8, plate, grid); + m_display->matrix(grid, plate); } WRITE8_MEMBER(tcaveman_state::grid_w) @@ -2717,6 +2756,8 @@ void tcaveman_state::tcaveman(machine_config &config) screen.set_size(1920, 559); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(8, 19); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); @@ -2790,7 +2831,7 @@ WRITE8_MEMBER(alnchase_state::output_w) m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2; } - display_matrix(17, 9, m_plate, m_grid); + m_display->matrix(m_grid, m_plate); } READ8_MEMBER(alnchase_state::input_r) @@ -2858,6 +2899,8 @@ void alnchase_state::alnchase(machine_config &config) screen.set_size(365, 1080); screen.set_visarea_full(); + PWM_DISPLAY(config, m_display).set_size(9, 17); + /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker); |