summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers
diff options
context:
space:
mode:
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
commitb96f87a6d627592b0d91ac4aae5b0e41f1c2d4c2 (patch)
tree32cbe57ee409be2a82e6d01a45492c217867cead /src/mame/drivers
parent9911cc61a0178dea1e7ee53eab65392130fbf938 (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.cpp160
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