From bfe4aa26da84c7cc5261102a2a01016469f3deff Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 31 May 2021 18:09:36 +0200 Subject: New machines marked as NOT_WORKING ---------------------------------- Zooty Drum [xuserv] --- src/mame/drivers/pasha2.cpp | 218 ++++++++++++++++++++++++++++++++++++-------- src/mame/mame.lst | 1 + 2 files changed, 182 insertions(+), 37 deletions(-) diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp index 74735b174af..13a99346def 100644 --- a/src/mame/drivers/pasha2.cpp +++ b/src/mame/drivers/pasha2.cpp @@ -68,8 +68,15 @@ Notes: TODO: - eeprom - is it used? - irq2 - sound related? reads the 2 unmapped input registers. - - irq3 - it only writes a 0 into memory and changes a registe - - simulate music (DREAM chip) + - irq3 - it only writes a 0 into memory and changes a register + - pasha2: simulate music (DREAM chip) + - zdrum: with DRC it fatal errors with 'Unimplemented: generate_adds (c00013ae)' if let in attract for a while or at the end of the 'Flash memory check' in test mode) + with interpreter the game hangs itself with 'Assertion failed: file flash.dat' + - zdrum: proper inputs (coin seems to freeze the game - gets stuck in a loop at c0001386, can be forced out of it with do PC=c0001392 and the coin gets credited) - + right arrow not found yet, second left drum switch flickers on and off continuously in i/o test) + - zdrum: when coined up via debugger and then started, the game itself reports an assert with DRC, gets to the select character screen and then hangs with the interpreter + - zdrum: settings aren't kept after reset, possibly needs eeprom hook up + - zdrum: dump hard disc and emulate MP3 board *********************************************************************/ @@ -97,17 +104,22 @@ public: , m_lamps_g(*this, "lamp_p%u_g", 1U) , m_lamps_b(*this, "lamp_p%u_b", 1U) , m_maincpu(*this, "maincpu") - , m_audiocpu(*this, "audiocpu") , m_oki(*this, "oki%u", 1U) , m_palette(*this, "palette") { } void pasha2(machine_config &config); + void zdrum(machine_config &config); void init_pasha2(); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + private: - /* memory pointers */ + // memory pointers required_shared_ptr m_wram; required_shared_ptr m_paletteram; @@ -117,14 +129,14 @@ private: output_finder<3> m_lamps_g; output_finder<3> m_lamps_b; - /* video-related */ - int m_vbuffer; + // video-related + uint8_t m_vbuffer; - /* memory */ + // memory std::unique_ptr m_bitmap0[2]; std::unique_ptr m_bitmap1[2]; - void pasha2_misc_w(offs_t offset, uint16_t data); - void pasha2_palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void misc_w(offs_t offset, uint16_t data); + void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); void vbuffer_set_w(uint16_t data); void vbuffer_clear_w(uint16_t data); void bitmap_0_w(offs_t offset, uint8_t data, uint8_t mem_mask = ~0); @@ -132,20 +144,17 @@ private: void pasha2_lamps_w(uint16_t data); uint16_t pasha2_speedup_r(offs_t offset); template void oki_bank_w(offs_t offset, uint16_t data); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_pasha2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device m_maincpu; - required_device m_audiocpu; required_device_array m_oki; required_device m_palette; void pasha2_io(address_map &map); void pasha2_map(address_map &map); + void zdrum_audio_map(address_map &map); }; -void pasha2_state::pasha2_misc_w(offs_t offset, uint16_t data) +void pasha2_state::misc_w(offs_t offset, uint16_t data) { if (offset) { @@ -167,7 +176,7 @@ void pasha2_state::pasha2_misc_w(offs_t offset, uint16_t data) } } -void pasha2_state::pasha2_palette_w(offs_t offset, uint16_t data, uint16_t mem_mask) +void pasha2_state::palette_w(offs_t offset, uint16_t data, uint16_t mem_mask) { int color; @@ -236,7 +245,7 @@ void pasha2_state::pasha2_map(address_map &map) map(0x40074000, 0x40074001).w(FUNC(pasha2_state::vbuffer_set_w)); map(0x40078000, 0x40078001).nopw(); //once at startup -> to disable the eeprom? map(0x80000000, 0x803fffff).bankr("mainbank"); - map(0xe0000000, 0xe00003ff).ram().w(FUNC(pasha2_state::pasha2_palette_w)).share("paletteram"); //tilemap? palette? + map(0xe0000000, 0xe00003ff).ram().w(FUNC(pasha2_state::palette_w)).share("paletteram"); //tilemap? palette? map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); } @@ -249,13 +258,19 @@ void pasha2_state::pasha2_io(address_map &map) map(0x60, 0x63).portr("DSW"); map(0x80, 0x83).portr("INPUTS"); map(0xa0, 0xa3).nopw(); //soundlatch? - map(0xc0, 0xc3).w(FUNC(pasha2_state::pasha2_misc_w)); + map(0xc0, 0xc3).w(FUNC(pasha2_state::misc_w)); map(0xe3, 0xe3).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xe7, 0xe7).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xe8, 0xeb).w(FUNC(pasha2_state::oki_bank_w<0>)); map(0xec, 0xef).w(FUNC(pasha2_state::oki_bank_w<1>)); } +void pasha2_state::zdrum_audio_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram(); + map(0xfff80000, 0xffffffff).rom().region("audiocpu", 0); +} + static INPUT_PORTS_START( pasha2 ) PORT_START("COINS") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -343,6 +358,94 @@ static INPUT_PORTS_START( pasha2 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START3 ) INPUT_PORTS_END +static INPUT_PORTS_START( zdrum ) + PORT_START("COINS") // no apparent effects on gameplay or i/o test, but for otherwise noted + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) // coin, but game enters a loop when pressed + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service in i/o test, seems to have no effect during gameplay + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_SERVICE_NO_TOGGLE( 0x800, IP_ACTIVE_LOW ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + // 2 physical dip-switches, but the settings seem to be done via service mode, so possibly unused? + PORT_START("DSW") + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_START("INPUTS") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME( "Drum switch right 2" ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) // TODO: what's up with this? should probably be // PORT_NAME( "Drum switch left 3" ), but it flickers on and off regardless + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME( "Drum switch left 1" ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME( "Drum switch left 2" ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_PLAYER(1) PORT_NAME( "Drum switch right 3" ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME( "Drum switch right 1" ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME( "Left arrow" ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) // all the following but 0x800 don't seem to have any effect + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) // isn't shown in the i/o test but it's used to move between items in the service mode + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + void pasha2_state::video_start() { for (int i = 0; i < 2; i++) @@ -354,9 +457,9 @@ void pasha2_state::video_start() } } -uint32_t pasha2_state::screen_update_pasha2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t pasha2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - /* 2 512x256 bitmaps */ + // 2 512x256 bitmaps for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { @@ -387,6 +490,10 @@ void pasha2_state::machine_start() m_lamps_r.resolve(); m_lamps_g.resolve(); m_lamps_b.resolve(); + + m_mainbank->configure_entries(0, 6, memregion("bankeddata")->base(), 0x400000); + m_mainbank->set_entry(0); + save_item(NAME(m_vbuffer)); } @@ -397,29 +504,29 @@ void pasha2_state::machine_reset() void pasha2_state::pasha2(machine_config &config) { - /* basic machine hardware */ - E116XT(config, m_maincpu, 20000000*4); /* 4x internal multiplier */ + // basic machine hardware + E116XT(config, m_maincpu, 20000000*4); // 4x internal multiplier m_maincpu->set_addrmap(AS_PROGRAM, &pasha2_state::pasha2_map); m_maincpu->set_addrmap(AS_IO, &pasha2_state::pasha2_io); m_maincpu->set_vblank_int("screen", FUNC(pasha2_state::irq0_line_hold)); - AT89C52(config, m_audiocpu, 12000000); /* clock from docs */ - /* TODO : ports are unimplemented; P0,P1,P2,P3 and Serial Port Used */ + AT89C52(config, "audiocpu", 12000000); // clock from docs + // TODO : ports are unimplemented; P0,P1,P2,P3 and Serial Port Used EEPROM_93C46_16BIT(config, "eeprom"); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(512, 512); screen.set_visarea(0, 383, 0, 239); - screen.set_screen_update(FUNC(pasha2_state::screen_update_pasha2)); + screen.set_screen_update(FUNC(pasha2_state::screen_update)); screen.set_palette(m_palette); PALETTE(config, m_palette).set_entries(0x200); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); @@ -429,30 +536,69 @@ void pasha2_state::pasha2(machine_config &config) //and ATMEL DREAM SAM9773 } +void pasha2_state::zdrum(machine_config &config) +{ + pasha2(config); + + m_maincpu->set_force_no_drc(true); // gets a bit further + + e116xt_device &audiocpu(E116XT(config.replace(), "audiocpu", 45_MHz_XTAL)); // type unknown, but it does look like Hyperstone code + audiocpu.set_addrmap(AS_PROGRAM, &pasha2_state::zdrum_audio_map); + + // TODO: MP3 hw, also PCB should be stereo according to test mode +} + ROM_START( pasha2 ) - ROM_REGION16_BE( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */ + ROM_REGION16_BE( 0x80000, "maincpu", 0 ) // Hyperstone CPU Code ROM_LOAD( "pp2.u3", 0x00000, 0x80000, CRC(1c701273) SHA1(f465323a1d3f2fd752c51c178fafe4cc866e28d6) ) - ROM_REGION16_BE( 0x400000*6, "bankeddata", ROMREGION_ERASEFF ) /* data roms */ + ROM_REGION16_BE( 0x400000*6, "bankeddata", ROMREGION_ERASEFF ) // data roms ROM_LOAD16_BYTE( "pp2-u2.u101", 0x000000, 0x200000, CRC(85c4a2d0) SHA1(452b24b74bd0b65d2d6852486e2917f94e21ecc8) ) ROM_LOAD16_BYTE( "pp2-u1.u101", 0x000001, 0x200000, CRC(96cbd04e) SHA1(a4e7dd61194584b3c4217674d78ab2fd96b7b2e0) ) ROM_LOAD16_BYTE( "pp2-u2.u102", 0x400000, 0x200000, CRC(2097d88c) SHA1(7597578e6ddca00909feac35d9d7331f783b2bd6) ) ROM_LOAD16_BYTE( "pp2-u1.u102", 0x400001, 0x200000, CRC(7a3492fb) SHA1(de72c4d10e17eaf2b7531f637b42cbb3d07819b5) ) // empty space, but no empty sockets on the pcb - ROM_REGION( 0x2000, "audiocpu", 0 ) /* AT89C52 */ + ROM_REGION( 0x2000, "audiocpu", 0 ) // AT89C52 ROM_LOAD( "89c52.bin", 0x0000, 0x2000, CRC(9ce43ce4) SHA1(8027a3549b38e9a2e7bb8f518a0defcaf9743371) ) // music play 1.0 - ROM_REGION( 0x80000, "sam9773", 0 ) /* SAM9773 sound data */ + ROM_REGION( 0x80000, "sam9773", 0 ) // SAM9773 sound data ROM_LOAD( "pp2.um2", 0x00000, 0x80000, CRC(86814b37) SHA1(70f8a94410e362669570c39e00492c0d69de6b17) ) - ROM_REGION( 0x80000, "oki1", 0 ) /* Oki Samples */ + ROM_REGION( 0x80000, "oki1", 0 ) // Oki Samples ROM_LOAD( "pp2.um51", 0x00000, 0x80000, CRC(3b1b1a30) SHA1(1ea1266d280a2b96ac4ef9fe8ee7b1a5f7861672) ) - ROM_REGION( 0x80000, "oki2", 0 ) /* Oki Samples */ + ROM_REGION( 0x80000, "oki2", 0 ) // Oki Samples ROM_LOAD( "pp2.um53", 0x00000, 0x80000, CRC(8a29ad03) SHA1(3e9b0c86d8e3bb0b7691f68ad45431f6f9e8edbd) ) ROM_END +// PARA8B16 main PCB, very similar to the Pasha Pasha 2 PCB but with no AT89C52 and SAM9773 +// PARA MP3 MAIN Ver. 1.00 2000.1 plug in PCB (Xilinx XC9536, Micronas MAS3507D F10, Micronas DAC3550A C2, 14.7456 XTAL) +// MUTALISK V3.02 PCB which plugs in the MP3 PCB (stickered IC 'Catos Creative Staffs' - probably an Hyperstone core given the ROM content -, 45.0000000 MHz XTAL, GM71V65163CT5 RAM, D27C040 ROM) +ROM_START( zdrum ) + ROM_REGION16_BE( 0x80000, "maincpu", 0 ) // Hyperstone CPU Code + ROM_LOAD( "u3.bin", 0x00000, 0x80000, CRC(296c6ee8) SHA1(67814ac87828f578591ec2069ad96861fe29de6c) ) + + ROM_REGION16_BE( 0x400000*6, "bankeddata", ROMREGION_ERASEFF ) // data roms + ROM_LOAD16_WORD_SWAP( "u101.bin", 0x000000, 0x400000, CRC(e9bc892e) SHA1(f50cde278693a38cfad1185a89c41e2e2029c5ac) ) // Dumped as 27C322, but actually E28F916S5 * 2 + ROM_LOAD16_WORD_SWAP( "u102.bin", 0x400000, 0x400000, CRC(954e67a1) SHA1(cf1553fd70e27fab2d77df07ccd2866c198b5b35) ) // " + + ROM_REGION( 0x80000, "audiocpu", 0 ) // on the MUTALISK PCB + ROM_LOAD( "mutalisk_u6.bin", 0x00000, 0x80000, CRC(7d044372) SHA1(41c63644ce048cec2079fb5ec8a2da9c66841c48) ) // 27C4000DC + + ROM_REGION( 0x80000, "oki1", 0 ) + ROM_LOAD( "um51.bin", 0x00000, 0x80000, CRC(b1a22ea2) SHA1(2814d212faf99504bd19602c4183fd8a4763c44c) ) // AM29F040 + + ROM_REGION( 0x80000, "oki2", 0 ) + ROM_LOAD( "um53.bin", 0x00000, 0x80000, CRC(372022da) SHA1(809d103bdb365c9ff9e32b6a3032040b6a91ce88) ) // MBM29F040A + + ROM_REGION( 0x117, "plds", 0 ) + ROM_LOAD( "u507.bin", 0x000, 0x117, CRC(c89d2f52) SHA1(f9d52d9c42ef95b7b85bbf6d09888ebdeac11fd3) ) // PALCE16V8H, mostly 1, protected? + + DISK_REGION( "ide:0:hdd:image" ) // should contain the songs + DISK_IMAGE( "zdrum", 0, NO_DUMP ) +ROM_END + uint16_t pasha2_state::pasha2_speedup_r(offs_t offset) { if(m_maincpu->pc() == 0x8302) @@ -464,9 +610,7 @@ uint16_t pasha2_state::pasha2_speedup_r(offs_t offset) void pasha2_state::init_pasha2() { m_maincpu->space(AS_PROGRAM).install_read_handler(0x95744, 0x95747, read16sm_delegate(*this, FUNC(pasha2_state::pasha2_speedup_r))); - - m_mainbank->configure_entries(0, 6, memregion("bankeddata")->base(), 0x400000); - m_mainbank->set_entry(0); } -GAMEL( 1998, pasha2, 0, pasha2, pasha2, pasha2_state, init_pasha2, ROT0, "Dong Sung", "Pasha Pasha 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_pasha2 ) +GAMEL( 1998, pasha2, 0, pasha2, pasha2, pasha2_state, init_pasha2, ROT0, "Dong Sung", "Pasha Pasha 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_pasha2 ) +GAME ( 2000, zdrum, 0, zdrum, zdrum, pasha2_state, empty_init, ROT0, "PARA Enterprises", "Zooty Drum", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // missing HD dump, MP3 board emulation. Inputs seem to be read differently. diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a6935324fee..c0ba2a9010e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -33515,6 +33515,7 @@ partner // @source:pasha2.cpp pasha2 // (c) 1998 Dong Sung +zdrum // (c) 2000 PARA Enterprises @source:paso1600.cpp paso1600 // -- cgit v1.2.3