diff options
author | David Haywood <28625134+DavidHaywood@users.noreply.github.com> | 2019-12-05 16:54:07 +0000 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2019-12-05 17:54:07 +0100 |
commit | b96f87a6d627592b0d91ac4aae5b0e41f1c2d4c2 (patch) | |
tree | 32cbe57ee409be2a82e6d01a45492c217867cead /src/mame/drivers | |
parent | 9911cc61a0178dea1e7ee53eab65392130fbf938 (diff) |
new machines NOT WORKING (#6007)
-----
Fantasy Story [David Haywood, caius, The Dumping Union]
technically it's fully playable, but since there's no sound I've left it as NOT WORKING for now, as first impressions will be bad, sound is driven by a PIC.
Diffstat (limited to 'src/mame/drivers')
-rw-r--r-- | src/mame/drivers/esd16.cpp | 160 |
1 files changed, 148 insertions, 12 deletions
diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp index 2fb8df294f6..4f0c93e4ae5 100644 --- a/src/mame/drivers/esd16.cpp +++ b/src/mame/drivers/esd16.cpp @@ -87,8 +87,15 @@ ToDo: void esd16_state::sound_command_w(u8 data) { - m_soundlatch->write(data & 0xff); - m_maincpu->spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply + if (m_soundlatch) + { + m_soundlatch->write(data & 0xff); + m_maincpu->spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply + } + else + { + logerror("%s: sound_command_w %02x without soundlatch\n", machine().describe_context(), data); + } } template<unsigned Layer> @@ -441,6 +448,89 @@ static INPUT_PORTS_START( multchmp ) INPUT_PORTS_END +static INPUT_PORTS_START( fantstry ) + PORT_START("P1_P2") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("SYSTEM") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW") + PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x000e, 0x000e, "Game Level" ) + PORT_DIPSETTING( 0x000c, "1" ) + PORT_DIPSETTING( 0x000a, "2" ) + PORT_DIPSETTING( 0x000e, "3" ) + PORT_DIPSETTING( 0x0008, "4" ) + PORT_DIPSETTING( 0x0006, "5" ) + PORT_DIPSETTING( 0x0004, "6" ) + PORT_DIPSETTING( 0x0002, "7" ) + PORT_DIPSETTING( 0x0000, "8" ) + PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( On ) ) + + PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Language ) ) + PORT_DIPSETTING( 0x0100, "Korean" ) + PORT_DIPSETTING( 0x0000, "English" ) + PORT_DIPNAME( 0x1e00, 0x1e00, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x1800, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( 4C_2C ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( 4C_3C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 4C_4C ) ) + PORT_DIPSETTING( 0x1a00, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x1200, DEF_STR( 3C_2C ) ) + PORT_DIPSETTING( 0x0a00, DEF_STR( 3C_3C ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( 3C_4C ) ) + PORT_DIPSETTING( 0x1c00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x1400, DEF_STR( 2C_2C ) ) + PORT_DIPSETTING( 0x1e00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x1600, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0c00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( 2C_4C ) ) + PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0600, DEF_STR( 1C_4C ) ) + + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Free_Play ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) + PORT_SERVICE( 0x8000, IP_ACTIVE_LOW ) +INPUT_PORTS_END + + static INPUT_PORTS_START( hedpanic ) PORT_START("P1_P2") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) @@ -592,9 +682,11 @@ GFXDECODE_END void esd16_state::machine_start() { - uint8_t *AUDIO = memregion("audiocpu")->base(); - - m_audiobank->configure_entries(0, 16, &AUDIO[0x0000], 0x4000); + if (m_audiobank) + { + uint8_t* AUDIO = memregion("audiocpu")->base(); + m_audiobank->configure_entries(0, 16, &AUDIO[0x0000], 0x4000); + } save_item(NAME(m_tilemap_color)); } @@ -613,18 +705,13 @@ DECOSPR_PRIORITY_CB_MEMBER(esd16_state::pri_callback) return 0; // above everything } -void esd16_state::esd16(machine_config &config) +void esd16_state::esd16_nosound(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(16'000'000)); /* 16MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &esd16_state::multchmp_map); m_maincpu->set_vblank_int("screen", FUNC(esd16_state::irq6_line_hold)); - Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* 4MHz */ - m_audiocpu->set_addrmap(AS_PROGRAM, &esd16_state::sound_map); - m_audiocpu->set_addrmap(AS_IO, &esd16_state::sound_io_map); - m_audiocpu->set_periodic_int(FUNC(esd16_state::nmi_line_pulse), attotime::from_hz(32*60)); /* IRQ By Main CPU */ - /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); @@ -643,6 +730,29 @@ void esd16_state::esd16(machine_config &config) GFXDECODE(config, m_gfxdecode, "palette", gfx_esd16); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x1000/2); +} + +void esd16_state::fantstry(machine_config& config) +{ + esd16_nosound(config); + + // PIC16F84A-04/P for sound CPU + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + + OKIM6295(config, "okisfx", XTAL(16'000'000) / 8, okim6295_device::PIN7_LOW); + OKIM6295(config, "okimusic", XTAL(16'000'000) / 8, okim6295_device::PIN7_LOW); +} + +void esd16_state::esd16(machine_config& config) +{ + esd16_nosound(config); + + Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* 4MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &esd16_state::sound_map); + m_audiocpu->set_addrmap(AS_IO, &esd16_state::sound_io_map); + m_audiocpu->set_periodic_int(FUNC(esd16_state::nmi_line_pulse), attotime::from_hz(32*60)); /* IRQ By Main CPU */ /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -654,7 +764,6 @@ void esd16_state::esd16(machine_config &config) OKIM6295(config, "oki", XTAL(16'000'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); /* 1MHz */ } - void esd16_state::jumppop(machine_config &config) { esd16(config); @@ -991,6 +1100,7 @@ ROM_START( mchampdxb ) ROM_LOAD16_WORD_SWAP( "eeprom1114", 0x0000, 0x0080, CRC(427d90d2) SHA1(39983f9b22b1e9221f7f745f7e84ddcf44d03a08) ) ROM_END + /*************************************************************************** PCB Layout (Head Panic) @@ -1630,6 +1740,29 @@ ROM_START( jumppope ) /* Running on an original ESD 11-09-98 PCB with original E ROM_LOAD( "at27c020.su10", 0x00000, 0x40000, CRC(066f30a7) SHA1(6bdd0210001c597819f7132ffa1dc1b1d55b4e0a) ) // samples.bin IDENTICAL ROM_END +/* Fantasy Story - not an ESD PCB */ +ROM_START( fantstry ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "system_rom", 0x00000, 0x80000, CRC(3d7f19ce) SHA1(eb163489adda25a0ece1a21292bfe5818b52cddc) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* PIC16F84A-04/P Code */ + ROM_LOAD( "pic16f84a", 0x00000, 0x10000, NO_DUMP ) + + ROM_REGION( 0x040000, "okisfx", 0 ) + ROM_LOAD( "voice_rom", 0x00000, 0x040000, CRC(3353e8df) SHA1(22998100e0afa14927ab219dfdbf21c1fd7e27c6) ) // single bank + + ROM_REGION( 0x200000, "okimusic", 0 ) + ROM_LOAD( "sound_rom", 0x00000, 0x200000, CRC(46e3c7fd) SHA1(56ae5c67f05d01bf2679e2c3fe864a38d3bb7f9d) ) // multiple banks, one sample in each + + ROM_REGION( 0x400000, "bgs", 0 ) + ROM_LOAD32_WORD( "graphics_rom_4", 0x000000, 0x200000, CRC(82d5104a) SHA1(23067ca2698eb1ec39a77af75beb79431c054fa9) ) + ROM_LOAD32_WORD( "graphics_rom_5", 0x000002, 0x200000, CRC(9178c370) SHA1(2c0f29c62d36cdb29380a3e63945da1a80e8d170) ) + + ROM_REGION( 0x300000, "spr", ROMREGION_ERASE00 ) + ROM_LOAD16_WORD_SWAP( "graphics_rom_3", 0x000000, 0x100000, CRC(1bd2b5fc) SHA1(21f32e9d2673c376c0781137db0f2d267b64bc0c) ) // 2bpp + ROM_LOAD16_WORD_SWAP( "graphics_rom_2", 0x100000, 0x100000, CRC(2020add8) SHA1(a7d950c6485f6abdcf4fc609a85f60df2bafe34e) ) // 2bpp + ROM_LOAD16_BYTE( "graphics_rom_1", 0x200000, 0x080000, CRC(c8caa752) SHA1(cecc7a18a0bb59554316ed24ed0dc01d58d6ae53) ) // 1bpp +ROM_END /*************************************************************************** @@ -1668,3 +1801,6 @@ GAME( 2000, deluxe4u, deluxe5, tangtang, hedpanic, esd16_state, empty_init, RO GAME( 2000, tangtang, 0, tangtang, hedpanic, esd16_state, empty_init, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, swatpolc, 0, hedpanic, swatpolc, esd16_state, empty_init, ROT0, "ESD", "SWAT Police", MACHINE_SUPPORTS_SAVE ) + +/* Z Soft PCB, uses PIC instead of Z80 */ +GAME( 2002, fantstry, 0, fantstry, fantstry, esd16_state, empty_init, ROT0, "Z Soft", "Fantasy Story", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // playable, just no sound |