diff options
Diffstat (limited to 'src/mess/drivers/hh_ucom4.c')
-rw-r--r-- | src/mess/drivers/hh_ucom4.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/mess/drivers/hh_ucom4.c b/src/mess/drivers/hh_ucom4.c index 19059d222d0..8d406157cc5 100644 --- a/src/mess/drivers/hh_ucom4.c +++ b/src/mess/drivers/hh_ucom4.c @@ -87,6 +87,7 @@ public: DECLARE_INPUT_CHANGED_MEMBER(tmtennis_difficulty_switch); DECLARE_MACHINE_RESET(tmtennis); + void tmpacman_display(); DECLARE_WRITE8_MEMBER(tmpacman_grid_w); DECLARE_WRITE8_MEMBER(tmpacman_plate_w); DECLARE_WRITE8_MEMBER(tmpacman_port_e_w); @@ -236,7 +237,7 @@ UINT8 hh_ucom4_state::read_inputs(int columns) WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w) { - // ports C,D: vfd matrix grid + // C,D: vfd matrix grid int shift = (offset - NEC_UCOM4_PORTC) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); @@ -245,7 +246,7 @@ WRITE8_MEMBER(hh_ucom4_state::edracula_grid_w) WRITE8_MEMBER(hh_ucom4_state::edracula_plate_w) { - // ports E-H,I01: vfd matrix plate + // E-H,I01: vfd matrix plate int shift = (offset - NEC_UCOM4_PORTE) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -325,13 +326,13 @@ MACHINE_CONFIG_END READ8_MEMBER(hh_ucom4_state::tmtennis_input_r) { - // ports A,B: buttons + // A,B: buttons return ~read_inputs(2) >> (offset*4); } WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w) { - // ports G-I: vfd matrix grid + // G-I: vfd matrix grid int shift = (offset - NEC_UCOM4_PORTG) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); @@ -340,7 +341,7 @@ WRITE8_MEMBER(hh_ucom4_state::tmtennis_grid_w) WRITE8_MEMBER(hh_ucom4_state::tmtennis_plate_w) { - // ports C-F: vfd matrix plate + // C-F: vfd matrix plate if (offset == NEC_UCOM4_PORTF) offset--; int shift = (offset - NEC_UCOM4_PORTC) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -452,29 +453,37 @@ MACHINE_CONFIG_END known releases: - Japan: Puck Man - USA: Pac Man - - UK: Puckman (Tomy), and also as Munchman, published by Grandstand + - UK: Puckman (Tomy), and also published by Grandstand as Munchman - Australia: Pac Man-1, published by Futuretronics NOTE!: MESS external artwork is recommended ***************************************************************************/ +void hh_ucom4_state::tmpacman_display() +{ + UINT8 grid = BITSWAP8((UINT8)m_grid,0,1,2,3,4,5,6,7); + UINT32 plate = BITSWAP24(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); + + display_matrix(19, 8, plate | 0x100, grid); +} + WRITE8_MEMBER(hh_ucom4_state::tmpacman_grid_w) { - // ports C,D: vfd matrix grid + // C,D: vfd matrix grid int shift = (offset - NEC_UCOM4_PORTC) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); - display_matrix(19, 8, m_plate, m_grid); + tmpacman_display(); } WRITE8_MEMBER(hh_ucom4_state::tmpacman_plate_w) { - // ports E-I: vfd matrix plate + // E023,F-I: vfd matrix plate int shift = (offset - NEC_UCOM4_PORTE) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); - display_matrix(19, 8, m_plate, m_grid); + tmpacman_display(); } WRITE8_MEMBER(hh_ucom4_state::tmpacman_port_e_w) @@ -494,7 +503,7 @@ static INPUT_PORTS_START( tmpacman ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY PORT_START("IN.1") // port B - PORT_CONFNAME( 0x00, 0x00, DEF_STR( Difficulty ) ) + PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CONFSETTING( 0x00, "Amateur" ) PORT_CONFSETTING( 0x01, "Professional" ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) @@ -548,7 +557,7 @@ MACHINE_CONFIG_END READ8_MEMBER(hh_ucom4_state::alnchase_input_r) { - // port A: buttons + // A: buttons return read_inputs(2); } @@ -556,7 +565,7 @@ WRITE8_MEMBER(hh_ucom4_state::alnchase_display_w) { if (offset <= NEC_UCOM4_PORTE) { - // ports C,D,E0: vfd matrix grid + // C,D,E0: vfd matrix grid int shift = (offset - NEC_UCOM4_PORTC) * 4; m_grid = (m_grid & ~(0xf << shift)) | (data << shift); @@ -567,7 +576,7 @@ WRITE8_MEMBER(hh_ucom4_state::alnchase_display_w) if (offset >= NEC_UCOM4_PORTE) { - // ports F-I,E23: vfd matrix plate + // E23,F-I: vfd matrix plate int shift = (offset - NEC_UCOM4_PORTE) * 4; m_plate = ((m_plate << 2 & ~(0xf << shift)) | (data << shift)) >> 2; } @@ -684,5 +693,5 @@ ROM_END CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) -CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) +CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |