From 24f873d6482818c5d46bfc8e7527a2e9b759a1b2 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 12 May 2023 18:27:59 +0200 Subject: New systems marked not working ------------------------------ Victory Shoot [Hammy] --- src/mame/mame.lst | 5 +- src/mame/taito/pkspirit.cpp | 4 +- src/mame/taito/vicshoot.cpp | 165 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 src/mame/taito/vicshoot.cpp diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6d7bf876226..e2e9ccdeeeb 100755 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -42465,7 +42465,7 @@ pitnruna // PR (c) 1984 Taito Corporation jumpkun // prototype @source:taito/pkspirit.cpp -pkspirit // +pkspirit // D41 @source:taito/qix.cpp complexx // CX (c) 1984 Taito America Corporation @@ -43046,6 +43046,9 @@ undrfire // D67 (c) 1993 Taito Corporation Japan (World) undrfirej // D67 (c) 1993 Taito Corporation (Japan) undrfireu // D67 (c) 1993 Taito America Corporation (US) +@source:taito/vicshoot.cpp +vicshoot // D97 + @source:taito/volfied.cpp volfied // C04 (c) 1989 Taito Corporation Japan (World) volfiedj // C04 (c) 1989 Taito Corporation (Japan) diff --git a/src/mame/taito/pkspirit.cpp b/src/mame/taito/pkspirit.cpp index 5c3812cc791..b78a69dba14 100644 --- a/src/mame/taito/pkspirit.cpp +++ b/src/mame/taito/pkspirit.cpp @@ -74,7 +74,7 @@ void pkspirit_state::main_map(address_map &map) // TODO: verify everything { map(0x000000, 0x01ffff).rom().region("maincpu", 0); map(0x100000, 0x10001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff); // maybe - map(0x200000, 0x200001).lr16(NAME([] () -> uint16_t { return 0xffff; })); + // map(0x200000, 0x200001).r //? map(0x300000, 0x30ffff).ram(); // main RAM? map(0x800001, 0x800001).w("ciu", FUNC(pc060ha_device::master_port_w)); map(0x800003, 0x800003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); @@ -91,7 +91,7 @@ void pkspirit_state::sound_map(address_map &map) // TODO: verify everything map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); map(0xc000, 0xc001).rw("opn", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); - //map(0xe000, 0xe000).w // bank set? + map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } diff --git a/src/mame/taito/vicshoot.cpp b/src/mame/taito/vicshoot.cpp new file mode 100644 index 00000000000..1b0b2cd8544 --- /dev/null +++ b/src/mame/taito/vicshoot.cpp @@ -0,0 +1,165 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* + Victory Shoot (c) 19?? Taito + MAIN PCB-B (stickered K11J0817A VICTORY SHOOT) + + Main components: + + 2 x Z80A + 1 x PC060HA CIU + 1 x YM2203 + 2 x OKIM6295 + 2 x TC5563 CMOS static RAM + 2 x M66500 programmable buffered I/O expander + 1 x 8 MHz XTAL + 2 x 8-dip banks +*/ + +#include "emu.h" + +#include "taitosnd.h" + +#include "cpu/z80/z80.h" +#include "sound/okim6295.h" +#include "sound/ymopn.h" + +#include "speaker.h" + + +namespace { + +class vicshoot_state : public driver_device +{ +public: + vicshoot_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void vicshoot(machine_config &config); + +private: + required_device m_maincpu; + + void main_map(address_map &map); + void sound_map(address_map &map); +}; + + +void vicshoot_state::main_map(address_map &map) // TODO: verify everything +{ + map(0x0000, 0x3fff).rom().region("maincpu", 0); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe00f).lr8(NAME([this] () -> uint8_t { return machine().rand(); })); + map(0xf000, 0xf000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); +} + +void vicshoot_state::sound_map(address_map &map) // TODO: verify everything +{ + map(0x0000, 0x7fff).rom().region("audiocpu", 0); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xe001, 0xe001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xe800, 0xe801).rw("opn", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf000, 0xf000).rw("oki0", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf800, 0xf800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + + +static INPUT_PORTS_START( vicshoot ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + 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_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + 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_LOW, IPT_UNKNOWN ) + + PORT_START("DSW1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8") + + PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") +INPUT_PORTS_END + + +void vicshoot_state::vicshoot(machine_config &config) +{ + // basic machine hardware + Z80(config, m_maincpu, 8_MHz_XTAL / 2); // divider not verified + m_maincpu->set_addrmap(AS_PROGRAM, &vicshoot_state::main_map); + + z80_device &audiocpu(Z80(config, "audiocpu", 8_MHz_XTAL / 2)); + audiocpu.set_addrmap(AS_PROGRAM, &vicshoot_state::sound_map); + + // M66500(config, "io0"); + // M66500(config, "io1"); + + // sound hardware + SPEAKER(config, "mono").front_center(); + + pc060ha_device &ciu(PC060HA(config, "ciu", 0)); + ciu.set_master_tag(m_maincpu); + ciu.set_slave_tag("audiocpu"); + + ym2203_device &opn(YM2203(config, "opn", 36_MHz_XTAL / 9)); // divider not verified + opn.irq_handler().set_inputline("audiocpu", 0); + opn.add_route(ALL_OUTPUTS, "mono", 0.30); + + OKIM6295(config, "oki0", 1'000'000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); // resonator and pin7 not verified + + OKIM6295(config, "oki1", 1'000'000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); // resonator and pin7 not verified +} + + +ROM_START( vicshoot ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "d97_03.mainprg.ic27", 0x00000, 0x10000, CRC(df845776) SHA1(f5fe4430218de2a3f92f8b0a299152cf264b3c89) ) // 11xxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "d97_04.sndprg.ic46", 0x00000, 0x10000, CRC(d95ebcc4) SHA1(41e1239495092af4acc91b36a7d9beb7206a00bc) ) // 1xxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x40000, "oki0", 0 ) // two ROMs with identical content + ROM_LOAD( "d97_05.1padpcm.ic41", 0x00000, 0x40000, CRC(1491186c) SHA1(e51618a47526f2e3c78e74652a9bb848fc692210) ) + + ROM_REGION( 0x40000, "oki1", 0 ) + ROM_LOAD( "d97_05.2padpcm.ic40", 0x00000, 0x40000, CRC(1491186c) SHA1(e51618a47526f2e3c78e74652a9bb848fc692210) ) + + ROM_REGION( 0x400, "plds", 0 ) + ROM_LOAD( "d97_02.ic43", 0x000, 0x104, NO_DUMP ) // PAL16L8A + ROM_LOAD( "d97_0x.ic13", 0x200, 0x144, NO_DUMP ) // unreadable marking, PAL16L8A +ROM_END + +} // anonymous namespace + + +GAME( 19??, vicshoot, 0, vicshoot, vicshoot, vicshoot_state, empty_init, ROT0, "Taito Corporation", "Victory Shoot", MACHINE_IS_SKELETON ) -- cgit v1.2.3