diff options
| author | 2020-04-27 18:46:54 +0200 | |
|---|---|---|
| committer | 2020-04-27 18:46:54 +0200 | |
| commit | 81b354e4edf733d6513b29b9e75dfbd0e99f5c12 (patch) | |
| tree | cc86fe8973e7f91220f45109adc44fca2d5d3949 | |
| parent | 6e6f4ba56ccbaefb43c1d05fb83fc6201f6dbd9c (diff) | |
New working clones
------------------
Prebillian (bootleg) [Kevin Eshbach]
| -rw-r--r-- | src/mame/drivers/superqix.cpp | 184 | ||||
| -rw-r--r-- | src/mame/includes/superqix.h | 54 | ||||
| -rw-r--r-- | src/mame/mame.lst | 1 | ||||
| -rw-r--r-- | src/mame/video/superqix.cpp | 12 |
4 files changed, 188 insertions, 63 deletions
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp index 7333bffe7f7..a745f3e2f4a 100644 --- a/src/mame/drivers/superqix.cpp +++ b/src/mame/drivers/superqix.cpp @@ -185,7 +185,7 @@ SAMPLES_START_CB_MEMBER(hotsmash_state::pbillian_sh_start) m_samplebuf[i] = s8(m_samples_region[i] ^ 0x80) * 256; } -WRITE8_MEMBER(hotsmash_state::pbillian_sample_trigger_w) +void hotsmash_state::pbillian_sample_trigger_w(u8 data) { //logerror("sample trigger write of %02x\n", data); @@ -299,18 +299,18 @@ TIMER_CALLBACK_MEMBER(superqix_state::z80_ay2_iob_w_cb) m_from_z80 = param; } -WRITE8_MEMBER(superqix_state::z80_ay1_sync_address_w) +void superqix_state::z80_ay1_sync_address_w(uint8_t data) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(superqix_state::z80_ay1_sync_address_w_cb), this), data); } -READ8_MEMBER(superqix_state::z80_ay2_iob_r) +uint8_t superqix_state::z80_ay2_iob_r() { // logerror("%0s: read mcu answer (%02x)\n",machine().describe_context(), m_from_mcu); return m_from_mcu; } -READ8_MEMBER(superqix_state::z80_semaphore_assert_r) +uint8_t superqix_state::z80_semaphore_assert_r() { if(!machine().side_effects_disabled()) { @@ -319,12 +319,12 @@ READ8_MEMBER(superqix_state::z80_semaphore_assert_r) return 0; } -WRITE8_MEMBER(superqix_state::z80_ay2_iob_w) +void superqix_state::z80_ay2_iob_w(uint8_t data) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(superqix_state::z80_ay2_iob_w_cb), this), data); } -WRITE8_MEMBER(superqix_state::mcu_port3_w) +void superqix_state::mcu_port3_w(uint8_t data) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(superqix_state::mcu_port3_w_cb), this), data); } @@ -358,12 +358,12 @@ TIMER_CALLBACK_MEMBER(superqix_state::bootleg_mcu_port1_w_cb) mcu_port2_w(m_bl_fake_port2); // finally write to port 2, which will do another synchronize } -WRITE8_MEMBER(superqix_state::bootleg_mcu_port1_w) +void superqix_state::bootleg_mcu_port1_w(uint8_t data) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(superqix_state::bootleg_mcu_port1_w_cb), this), data); } -READ8_MEMBER(superqix_state::bootleg_mcu_port3_r) +uint8_t superqix_state::bootleg_mcu_port3_r() { if ((m_bl_port1 & 0x10) == 0) { @@ -386,7 +386,7 @@ READ8_MEMBER(superqix_state::bootleg_mcu_port3_r) return 0xff; } -WRITE8_MEMBER(superqix_state::bootleg_mcu_port3_w) +void superqix_state::bootleg_mcu_port3_w(uint8_t data) { // unlike the 8751, the 8031 bootleg port3 does not directly connect to ay2 // iob; there is a 74ls374 octal latch next to the 8031 which probably @@ -400,14 +400,14 @@ void superqix_state::mcu_port2_w(uint8_t data) machine().scheduler().synchronize(timer_expired_delegate(FUNC(superqix_state::mcu_port2_w_cb), this), data); } -READ8_MEMBER(superqix_state::mcu_port3_r) +uint8_t superqix_state::mcu_port3_r() { // logerror("%s: read Z80 command %02x\n",machine().describe_context(), m_from_z80); return m_from_z80; } -READ8_MEMBER(superqix_state_base::nmi_ack_r) +uint8_t superqix_state_base::nmi_ack_r() { if(!machine().side_effects_disabled()) { @@ -419,12 +419,12 @@ READ8_MEMBER(superqix_state_base::nmi_ack_r) return ioport("SYSTEM")->read(); // only on the bootleg sets } -READ8_MEMBER(superqix_state::bootleg_in0_r) +uint8_t superqix_state::bootleg_in0_r() { return bitswap<8>(ioport("DSW1")->read(), 0,1,2,3,4,5,6,7); } -WRITE8_MEMBER(superqix_state::bootleg_flipscreen_w) +void superqix_state::bootleg_flipscreen_w(uint8_t data) { flip_screen_set(~data & 1); } @@ -795,17 +795,17 @@ int hotsmash_state::read_inputs(int player) // if called with player=1, we're mu return (launchbtn_state<<4 | ((m_dial_oldpos[player] & 1) << 3) | (m_dial_sign[player] << 2) | (newpos_plunger&2) | ((newpos_plunger^(newpos_plunger>>1))&1) ); } -READ8_MEMBER(hotsmash_state::hotsmash_68705_porta_r) +u8 hotsmash_state::hotsmash_68705_porta_r() { return m_porta_in; } -WRITE8_MEMBER(hotsmash_state::hotsmash_68705_portb_w) +void hotsmash_state::hotsmash_68705_portb_w(u8 data) { m_portb_out = data; } -WRITE8_MEMBER(hotsmash_state::hotsmash_68705_portc_w) +void hotsmash_state::hotsmash_68705_portc_w(u8 data) { u8 const changed_m_portc_out = m_portc_out ^ data; m_portc_out = data; @@ -863,7 +863,7 @@ WRITE8_MEMBER(hotsmash_state::hotsmash_68705_portc_w) } } -WRITE8_MEMBER(hotsmash_state::hotsmash_z80_mcu_w) +void hotsmash_state::hotsmash_z80_mcu_w(u8 data) { m_from_z80 = data; //if ((m_from_z80 != 0x04) && (m_from_z80 != 0x08)) @@ -873,7 +873,7 @@ WRITE8_MEMBER(hotsmash_state::hotsmash_z80_mcu_w) m_mcu->set_input_line(M68705_IRQ_LINE, ASSERT_LINE); } -READ8_MEMBER(hotsmash_state::hotsmash_z80_mcu_r) +u8 hotsmash_state::hotsmash_z80_mcu_r() { if(!machine().side_effects_disabled()) { @@ -1002,6 +1002,16 @@ void hotsmash_state::pbillian_port_map(address_map &map) map(0x041b, 0x041b).nopr(); // input related? but probably not used, may be 'sample has stopped playing' flag? used by prebillian } +void hotsmash_state::pbillianb_port_map(address_map &map) +{ + pbillian_port_map(map); + map(0x0408, 0x0408).unmaprw(); // no MCU on PCB, still reads/writes here + map(0x0c00, 0x0c00).portr("DSW1"); + map(0x0c01, 0x0c01).portr("DSW2"); + map(0x0c06, 0x0c06).portr("CONTROLS"); + map(0x0c07, 0x0c07).portr("CONTROLS2"); +} + void superqix_state::sqix_port_map(address_map &map) { map(0x0000, 0x00ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); @@ -1117,6 +1127,98 @@ static INPUT_PORTS_START( pbillian ) INPUT_PORTS_END +static INPUT_PORTS_START( pbillianb ) + PORT_START("DSW1") + PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3") + PORT_DIPSETTING( 0x03, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6") + PORT_DIPSETTING( 0x18, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x28, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x40, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x80, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + + PORT_START("DSW2") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") + PORT_DIPSETTING( 0x03, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4") + PORT_DIPSETTING( 0x0c, "10/20/300K Points" ) + PORT_DIPSETTING( 0x00, "10/30/500K Points" ) + PORT_DIPSETTING( 0x08, "20/30/400K Points" ) + PORT_DIPSETTING( 0x04, "30/40/500K Points" ) + PORT_DIPNAME( 0x30, 0x10, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6") + PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x30, DEF_STR( Very_Hard ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("SYSTEM") // ay port B (register F) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // hblank? + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") + + PORT_START("CONTROLS") // 0xc06: both players in upright, player 1 in cocktail + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("CONTROLS2") // 0xc07: player 2 in cocktail + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("BUTTONS") // ay port A (register E) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) // N/C + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) // P1 fire (M powerup) + high score initials + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) // N/C + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL // P2 fire (M powerup) + high score initials + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Z80 and MCU Semaphores for the parent, needs to be high in this MCU-less bootleg, too + +INPUT_PORTS_END + static INPUT_PORTS_START( hotsmash ) PORT_START("DSW1") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) @@ -1386,6 +1488,15 @@ void hotsmash_state::pbillian(machine_config &config) m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); } +void hotsmash_state::pbillianb(machine_config &config) +{ + pbillian(config); + + m_maincpu->set_addrmap(AS_IO, &hotsmash_state::pbillianb_port_map); + + config.device_remove("mcu"); +} + void superqix_state::sqix(machine_config &config) { /* basic machine hardware */ @@ -1482,6 +1593,20 @@ ROM_START( pbillian ) ROM_LOAD( "mitsubishi__electric__6.m5l27256k.1t", 0x10000, 0x08000, CRC(33b855b0) SHA1(5a1df4f82fc0d6f78883b759fd61f395942645eb) ) ROM_END +ROM_START( pbillianb ) // EV-97 PCB + ROM_REGION( 0x018000, "maincpu", 0 ) + ROM_LOAD( "1", 0x00000, 0x08000, CRC(cd8e34f0) SHA1(6598a594b4e305a6139d03e6d1d564c093da713a) ) // different + ROM_LOAD( "2", 0x10000, 0x08000, CRC(e60a2cb0) SHA1(949bb7ff5df36ee10d910a33f595e6a90350304e) ) // 2nd half identical to the corresponding ROM of the parent + + ROM_REGION( 0x8000, "samples", 0 ) // identical to the parent + ROM_LOAD( "3", 0x0000, 0x08000, CRC(3f9bc7f1) SHA1(0b0c2ec3bea6a7f3fc6c0c8b750318f3f9ec3d1f) ) + + ROM_REGION( 0x018000, "gfx1", 0 ) // only 5 differs from the parent + ROM_LOAD( "4", 0x00000, 0x08000, CRC(9c08a072) SHA1(25f31fcf72216cf42528b07ad8c09113aa69861a) ) + ROM_LOAD( "5", 0x08000, 0x08000, CRC(63f3437b) SHA1(a2234019bac27256692d4b059d39caaddfb9fb08) ) + ROM_LOAD( "6", 0x10000, 0x08000, CRC(33b855b0) SHA1(5a1df4f82fc0d6f78883b759fd61f395942645eb) ) +ROM_END + ROM_START( hotsmash ) ROM_REGION( 0x018000, "maincpu", 0 ) ROM_LOAD( "b18-04", 0x00000, 0x08000, CRC(981bde2c) SHA1(ebcc901a036cde16b33d534d423500d74523b781) ) @@ -1723,14 +1848,15 @@ void superqix_state_base::init_hotsmash() m_invert_p2_spinner = true; } -/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME */ -GAME( 1986, pbillian, 0, pbillian, pbillian, hotsmash_state, init_pbillian, ROT0, "Kaneko / Taito", "Prebillian", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, hotsmash, 0, pbillian, hotsmash, hotsmash_state, init_hotsmash, ROT90, "Kaneko / Taito", "Vs. Hot Smash", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqix, 0, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixr1, sqix, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixr0, sqix, sqix, superqix, superqix_state, init_sqixr0, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixu, sqix, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito (Romstar License)", "Super Qix (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixb1, sqix, sqix_8031, superqix, superqix_state, init_sqixr0, ROT90, "bootleg", "Super Qix (bootleg of V1.0, 8031 MCU)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, sqixb2, sqix, sqix_nomcu, superqix, superqix_state, init_sqix, ROT90, "bootleg", "Super Qix (bootleg, No MCU)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, perestro, 0, sqix_nomcu, superqix, superqix_state, init_perestro, ROT90, "Promat", "Perestroika Girls", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, perestrof,perestro, sqix_nomcu, superqix, superqix_state, init_perestro, ROT90, "Promat (Fuuki license)", "Perestroika Girls (Fuuki license)", MACHINE_SUPPORTS_SAVE ) +/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME */ +GAME( 1986, pbillian, 0, pbillian, pbillian, hotsmash_state, init_pbillian, ROT0, "Kaneko / Taito", "Prebillian", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, pbillianb, pbillian, pbillianb, pbillianb, hotsmash_state, init_pbillian, ROT0, "bootleg (Game Corp.)", "Prebillian (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, hotsmash, 0, pbillian, hotsmash, hotsmash_state, init_hotsmash, ROT90, "Kaneko / Taito", "Vs. Hot Smash", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqix, 0, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixr1, sqix, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixr0, sqix, sqix, superqix, superqix_state, init_sqixr0, ROT90, "Kaneko / Taito", "Super Qix (World/Japan, V1.0)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixu, sqix, sqix, superqix, superqix_state, init_sqix, ROT90, "Kaneko / Taito (Romstar License)", "Super Qix (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixb1, sqix, sqix_8031, superqix, superqix_state, init_sqixr0, ROT90, "bootleg", "Super Qix (bootleg of V1.0, 8031 MCU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, sqixb2, sqix, sqix_nomcu, superqix, superqix_state, init_sqix, ROT90, "bootleg", "Super Qix (bootleg, No MCU)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, perestro, 0, sqix_nomcu, superqix, superqix_state, init_perestro, ROT90, "Promat", "Perestroika Girls", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, perestrof, perestro, sqix_nomcu, superqix, superqix_state, init_perestro, ROT90, "Promat (Fuuki license)", "Perestroika Girls (Fuuki license)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/superqix.h b/src/mame/includes/superqix.h index 76c48e220ce..5f1fd0cfc79 100644 --- a/src/mame/includes/superqix.h +++ b/src/mame/includes/superqix.h @@ -63,11 +63,11 @@ protected: std::unique_ptr<bitmap_ind16> m_fg_bitmap[2]; tilemap_t *m_bg_tilemap; - DECLARE_READ8_MEMBER(nmi_ack_r); - DECLARE_WRITE8_MEMBER(superqix_videoram_w); - DECLARE_WRITE8_MEMBER(superqix_bitmapram_w); - DECLARE_WRITE8_MEMBER(superqix_bitmapram2_w); - DECLARE_WRITE8_MEMBER(superqix_0410_w); + uint8_t nmi_ack_r(); + void superqix_videoram_w(offs_t offset, uint8_t data); + void superqix_bitmapram_w(offs_t offset, uint8_t data); + void superqix_bitmapram2_w(offs_t offset, uint8_t data); + void superqix_0410_w(uint8_t data); DECLARE_VIDEO_START(superqix); static rgb_t BBGGRRII(uint32_t raw); @@ -109,20 +109,19 @@ private: uint8_t m_port2_raw; uint8_t m_bl_port3_out; - DECLARE_READ8_MEMBER(z80_semaphore_assert_r); - DECLARE_WRITE8_MEMBER(bootleg_mcu_port1_w); + uint8_t z80_semaphore_assert_r(); + void bootleg_mcu_port1_w(uint8_t data); void mcu_port2_w(uint8_t data); - DECLARE_WRITE8_MEMBER(mcu_port3_w); - DECLARE_READ8_MEMBER(mcu_port3_r); - DECLARE_READ8_MEMBER(bootleg_mcu_port3_r); - DECLARE_WRITE8_MEMBER(bootleg_mcu_port3_w); - DECLARE_WRITE8_MEMBER(z80_ay1_sync_address_w); - DECLARE_READ8_MEMBER(z80_ay2_iob_r); - DECLARE_WRITE8_MEMBER(z80_ay2_iob_w); - DECLARE_WRITE8_MEMBER(bootleg_flipscreen_w); - DECLARE_READ8_MEMBER(bootleg_in0_r); + void mcu_port3_w(u8 data); + uint8_t mcu_port3_r(); + uint8_t bootleg_mcu_port3_r(); + void bootleg_mcu_port3_w(uint8_t data); + void z80_ay1_sync_address_w(uint8_t data); + uint8_t z80_ay2_iob_r(); + void z80_ay2_iob_w(uint8_t data); + void bootleg_flipscreen_w(uint8_t data); + uint8_t bootleg_in0_r(); INTERRUPT_GEN_MEMBER(sqix_timer_irq); - DECLARE_MACHINE_START(superqix); DECLARE_MACHINE_RESET(superqix); void sqix_port_map(address_map &map); @@ -159,6 +158,7 @@ public: } void pbillian(machine_config &config); + void pbillianb(machine_config &config); DECLARE_CUSTOM_INPUT_MEMBER(pbillian_semaphore_input_r); @@ -167,14 +167,14 @@ protected: virtual void video_start() override; private: - DECLARE_READ8_MEMBER(hotsmash_68705_porta_r); - DECLARE_WRITE8_MEMBER(hotsmash_68705_portb_w); - DECLARE_WRITE8_MEMBER(hotsmash_68705_portc_w); - DECLARE_WRITE8_MEMBER(hotsmash_z80_mcu_w); - DECLARE_READ8_MEMBER(hotsmash_z80_mcu_r); + u8 hotsmash_68705_porta_r(); + void hotsmash_68705_portb_w(u8 data); + void hotsmash_68705_portc_w(u8 data); + void hotsmash_z80_mcu_w(u8 data); + u8 hotsmash_z80_mcu_r(); - DECLARE_WRITE8_MEMBER(pbillian_sample_trigger_w); - DECLARE_WRITE8_MEMBER(pbillian_0410_w); + void pbillian_sample_trigger_w(u8 data); + void pbillian_0410_w(u8 data); DECLARE_WRITE_LINE_MEMBER(vblank_irq); @@ -182,12 +182,10 @@ private: TILE_GET_INFO_MEMBER(pb_get_bg_tile_info); - DECLARE_MACHINE_START(pbillian); - DECLARE_VIDEO_START(pbillian); - u32 screen_update_pbillian(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void pbillian_port_map(address_map &map); + void pbillianb_port_map(address_map &map); virtual void machine_init_common() override; @@ -196,7 +194,7 @@ private: void pbillian_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); required_ioport_array<2> m_dsw; - required_ioport_array<2> m_dials; + optional_ioport_array<2> m_dials; optional_ioport_array<2> m_plungers; optional_ioport_array<2> m_launchbtns; optional_device<samples_device> m_samples; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0df4afc2156..ca35e085fa1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -38133,6 +38133,7 @@ kuzmich @source:superqix.cpp hotsmash // B18 (c) 1987 Taito pbillian // (c) 1986 Taito +pbillianb // bootleg perestro // (c) 1994 Promat perestrof // (c) 1993 Promat / Fuuki sqix // B03 1987 diff --git a/src/mame/video/superqix.cpp b/src/mame/video/superqix.cpp index f678c40eb12..99105c30c24 100644 --- a/src/mame/video/superqix.cpp +++ b/src/mame/video/superqix.cpp @@ -2,7 +2,7 @@ // copyright-holders:Mirko Buffoni, Nicola Salmoria, Tomasz Slanina /*************************************************************************** - video.c + superqix.cpp Functions to emulate the video hardware of the machine. @@ -84,13 +84,13 @@ rgb_t superqix_state_base::BBGGRRII(uint32_t raw) ***************************************************************************/ -WRITE8_MEMBER(superqix_state_base::superqix_videoram_w) +void superqix_state_base::superqix_videoram_w(offs_t offset, uint8_t data) { m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset & 0x3ff); } -WRITE8_MEMBER(superqix_state_base::superqix_bitmapram_w) +void superqix_state_base::superqix_bitmapram_w(offs_t offset, uint8_t data) { if (m_bitmapram[offset] != data) { @@ -104,7 +104,7 @@ WRITE8_MEMBER(superqix_state_base::superqix_bitmapram_w) } } -WRITE8_MEMBER(superqix_state_base::superqix_bitmapram2_w) +void superqix_state_base::superqix_bitmapram2_w(offs_t offset, uint8_t data) { if (data != m_bitmapram2[offset]) { @@ -118,7 +118,7 @@ WRITE8_MEMBER(superqix_state_base::superqix_bitmapram2_w) } } -WRITE8_MEMBER(hotsmash_state::pbillian_0410_w) +void hotsmash_state::pbillian_0410_w(u8 data) { /* -------0 ? [not used] @@ -140,7 +140,7 @@ WRITE8_MEMBER(hotsmash_state::pbillian_0410_w) flip_screen_set(BIT(data,5)); } -WRITE8_MEMBER(superqix_state_base::superqix_0410_w) +void superqix_state_base::superqix_0410_w(uint8_t data) { /* ------10 tile bank |
