From 80ae08ac7c816ee2ac1b1202bee34d2b0054b523 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 20 Jun 2017 01:08:50 -0400 Subject: [PATCH 1/5] ultrsprt.cpp: Use uPD4701A device for trackball inputs (nw) --- src/mame/drivers/ultrsprt.cpp | 143 ++++++++++++++++++++-------------- 1 file changed, 85 insertions(+), 58 deletions(-) diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp index f0580d34fd6..e6e0c519e11 100644 --- a/src/mame/drivers/ultrsprt.cpp +++ b/src/mame/drivers/ultrsprt.cpp @@ -10,6 +10,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/powerpc/ppc.h" #include "machine/eepromser.h" +#include "machine/upd4701.h" #include "sound/k054539.h" #include "sound/k056800.h" #include "screen.h" @@ -25,7 +26,10 @@ public: m_audiocpu(*this, "audiocpu"), m_k056800(*this, "k056800"), m_workram(*this, "workram"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_eeprom(*this, "eeprom"), + m_upd(*this, "upd%u", 1), + m_service(*this, "SERVICE") { } static const uint32_t VRAM_PAGES = 2; static const uint32_t VRAM_PAGE_BYTES = 512 * 1024; @@ -35,9 +39,15 @@ public: required_device m_k056800; required_shared_ptr m_workram; required_device m_palette; + required_device m_eeprom; + required_device_array m_upd; - DECLARE_READ32_MEMBER(eeprom_r); - DECLARE_WRITE32_MEMBER(eeprom_w); + required_ioport m_service; + + DECLARE_READ8_MEMBER(eeprom_r); + DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_READ16_MEMBER(upd1_r); + DECLARE_READ16_MEMBER(upd2_r); DECLARE_WRITE32_MEMBER(int_ack_w); uint32_t screen_update_ultrsprt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -86,52 +96,60 @@ WRITE32_MEMBER(ultrsprt_state::int_ack_w) } -READ32_MEMBER(ultrsprt_state::eeprom_r) +READ8_MEMBER(ultrsprt_state::eeprom_r) { - uint32_t r = 0; - - if (ACCESSING_BITS_24_31) - r |= ioport("SERVICE")->read(); - - return r; + return m_service->read(); } -WRITE32_MEMBER(ultrsprt_state::eeprom_w) +WRITE8_MEMBER(ultrsprt_state::eeprom_w) { - if (ACCESSING_BITS_24_31) + /* + .... ...x - EEPROM DI + .... ..x. - EEPROM CLK + .... .x.. - EEPROM /CS + .... x... - VRAM page (CPU access) + ...x .... - Coin counter + ..x. .... - Watchdog /Reset + .x.. .... - Trackball /Reset + x... .... - Sound CPU /Reset + */ + m_eeprom->di_write(BIT(data, 0)); + m_eeprom->clk_write(!BIT(data, 1)); + m_eeprom->cs_write(BIT(data, 2)); + + uint32_t vram_page = (data & 0x08) >> 3; + if (vram_page != m_cpu_vram_page) { - /* - .... ...x - EEPROM DI - .... ..x. - EEPROM CLK - .... .x.. - EEPROM /CS - .... x... - VRAM page (CPU access) - ...x .... - Coin counter - ..x. .... - Watchdog /Reset - .x.. .... - Trackball /Reset - x... .... - Sound CPU /Reset - */ - ioport("EEPROMOUT")->write(data, 0xffffffff); - - uint32_t vram_page = (data & 0x08000000) >> 27; - - if (vram_page != m_cpu_vram_page) - { - membank("vram")->set_entry(vram_page); - m_cpu_vram_page = vram_page; - } - - machine().bookkeeping().coin_counter_w(0, data & 0x10000000); - m_audiocpu->set_input_line(INPUT_LINE_RESET, data & 0x80000000 ? CLEAR_LINE : ASSERT_LINE); + membank("vram")->set_entry(vram_page); + m_cpu_vram_page = vram_page; } + + machine().bookkeeping().coin_counter_w(0, BIT(data, 4)); + for (auto &upd : m_upd) + { + upd->resetx_w(!BIT(data, 6)); + upd->resety_w(!BIT(data, 6)); + } + m_audiocpu->set_input_line(INPUT_LINE_RESET, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE); +} + +READ16_MEMBER(ultrsprt_state::upd1_r) +{ + return m_upd[0]->read_xy(space, offset * 2) | (m_upd[0]->read_xy(space, offset * 2 + 1) << 8); +} + +READ16_MEMBER(ultrsprt_state::upd2_r) +{ + return m_upd[1]->read_xy(space, offset * 2) | (m_upd[1]->read_xy(space, offset * 2 + 1) << 8); } /*****************************************************************************/ static ADDRESS_MAP_START( ultrsprt_map, AS_PROGRAM, 32, ultrsprt_state ) AM_RANGE(0x00000000, 0x0007ffff) AM_RAMBANK("vram") - AM_RANGE(0x70000000, 0x70000003) AM_READWRITE(eeprom_r, eeprom_w) - AM_RANGE(0x70000020, 0x70000023) AM_READ_PORT("P1") - AM_RANGE(0x70000040, 0x70000043) AM_READ_PORT("P2") + AM_RANGE(0x70000000, 0x70000003) AM_READWRITE8(eeprom_r, eeprom_w, 0xff000000) + AM_RANGE(0x70000020, 0x70000023) AM_READ16(upd1_r, 0xffffffff) + AM_RANGE(0x70000040, 0x70000043) AM_READ16(upd2_r, 0xffffffff) AM_RANGE(0x70000080, 0x7000008f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) AM_RANGE(0x700000c0, 0x700000cf) AM_WRITENOP // Written following DMA interrupt - unused int ack? AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w) @@ -154,30 +172,31 @@ ADDRESS_MAP_END /*****************************************************************************/ static INPUT_PORTS_START( ultrsprt ) - PORT_START("P1") - PORT_BIT( 0x00000fff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_PLAYER(1) - PORT_BIT( 0x0fff0000, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_REVERSE PORT_PLAYER(1) - PORT_BIT( 0x40000000, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_START("P1X") + PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_RESET PORT_REVERSE PORT_PLAYER(1) - PORT_START("P2") - PORT_BIT( 0x00000fff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_PLAYER(2) - PORT_BIT( 0x0fff0000, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_REVERSE PORT_PLAYER(2) - PORT_BIT( 0x40000000, IP_ACTIVE_HIGH, IPT_SERVICE1 ) - PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_START("P1Y") + PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_RESET PORT_PLAYER(1) + + PORT_START("P2X") + PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_X ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_RESET PORT_REVERSE PORT_PLAYER(2) + + PORT_START("P2Y") + PORT_BIT( 0xfff, 0x000, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(70) PORT_KEYDELTA(80) PORT_RESET PORT_PLAYER(2) + + PORT_START("BUTTONS") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_WRITE_LINE_DEVICE_MEMBER("upd1", upd4701_device, left_w) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_WRITE_LINE_DEVICE_MEMBER("upd1", upd4701_device, right_w) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_WRITE_LINE_DEVICE_MEMBER("upd1", upd4701_device, middle_w) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_WRITE_LINE_DEVICE_MEMBER("upd2", upd4701_device, left_w) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_WRITE_LINE_DEVICE_MEMBER("upd2", upd4701_device, right_w) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_WRITE_LINE_DEVICE_MEMBER("upd2", upd4701_device, middle_w) PORT_START("SERVICE") - PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) - PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) // VRAM page flip status? - PORT_SERVICE_NO_TOGGLE( 0x08000000, IP_ACTIVE_LOW ) - - PORT_START("EEPROMOUT") - PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) - PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) // VRAM page flip status? + PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) INPUT_PORTS_END @@ -221,6 +240,14 @@ static MACHINE_CONFIG_START( ultrsprt ) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_DEVICE_ADD("upd1", UPD4701A, 0) + MCFG_UPD4701_PORTX("P1X") + MCFG_UPD4701_PORTY("P1Y") + + MCFG_DEVICE_ADD("upd2", UPD4701A, 0) + MCFG_UPD4701_PORTX("P2X") + MCFG_UPD4701_PORTY("P2Y") + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) // TODO: Determine correct timings From ca53581776af2268e0513cd42dfb8c5b2040939f Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 20 Jun 2017 15:48:48 +1000 Subject: [PATCH 2/5] svmu: Added two English BIOS versions and a newer Japanese BIOS version [Kingizor] --- src/mame/drivers/svmu.cpp | 49 ++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index a39703b1fca..94659c29695 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -341,19 +341,42 @@ MACHINE_CONFIG_END /* ROM definition */ ROM_START( svmu ) - ROM_REGION( 0x10000, "bios", 0 ) - ROM_DEFAULT_BIOS("jp1004") - // these ROMs come from the Sega Katana SDK and are scrambled, a simple way to restore it is to remove the first 4 bytes and xor the whole file for the xor key. - ROM_SYSTEM_BIOS(0, "jp1001", "VMS Japanese BIOS (v1.001)") - ROMX_LOAD("vmu1001.bin", 0x0000, 0x10000, CRC(e6339f4a) SHA1(688b2e1ff8c60bde6e8b07a2d2695cdacc07bd0c), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(1, "jp1002", "VMS Japanese BIOS (v1.002)") - ROMX_LOAD("vmu1002.bin", 0x0000, 0x10000, CRC(6c020d48) SHA1(9ee7c87d7b033235e0b315a0b421e70deb547c7a), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(2, "jp1004", "VMS Japanese BIOS (v1.004)") - ROMX_LOAD("vmu1004.bin", 0x0000, 0x10000, CRC(8e0f867a) SHA1(dc2fa2963138a1049a43f7f36439ad0a416ee8b4), ROM_BIOS(3)) // from Sega Katana SDK (original file: fbios.sbf, CRC: c7c77b3c, xor key: 0x37) - ROM_SYSTEM_BIOS(3, "jp1005", "VMS Japanese BIOS (v1.005)") - ROMX_LOAD("vmu1005.bin", 0x0000, 0x10000, CRC(47623324) SHA1(fca1aceff8a2f8c6826f3a865f4d5ef88dfd9ed1), ROM_BIOS(4)) - ROM_SYSTEM_BIOS(4, "dev1004", "VMS Japanese Dev BIOS (v1.004)") // automatically boot the first game found in the flash - ROMX_LOAD( "vmsdev1004.bin", 0x0000, 0x10000, CRC(395e25f2) SHA1(37dea034322b5b80b35b2de784298d32c71ba7a3), ROM_BIOS(5)) // from Sega Katana SDK (original file: qbios.sbf, CRC: eed5524c, xor key: 0x43) + // some ROMs come from the Sega Katana SDK and are scrambled, a simple way to restore them is to remove the first 4 bytes and xor the whole file for the xor key. + + ROM_REGION(0x10000, "bios", 0) + ROM_DEFAULT_BIOS("en1005b") + + // Version 1.005,1999/04/28,315-6124-07,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(0, "en1005a", "VMS English BIOS (1.005 1999/04/28)") + ROMX_LOAD("en1005-19990428-315-6124-07.bin", 0x0000, 0x10000, CRC(dfd77f4e) SHA1(4a7bfd1b8eb599d87883312df0bb48e0edd13034), ROM_BIOS(1)) // extracted with trojan + + // Version 1.005,1999/10/26,315-6208-05,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(1, "en1005b", "VMS English BIOS (1.005 1999/10/26)") + ROMX_LOAD("en1005-19991026-315-6208-05.bin", 0x0000, 0x10000, CRC(c825003a) SHA1(6242320d705c156f8369969d6caa8c737f01e4f3), ROM_BIOS(2)) // extracted with trojan + + // Version 1.001,1998/05/28,315-6124-02,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(2, "jp1001", "VMS Japanese BIOS (1.001 1998/05/28)") + ROMX_LOAD("jp1001-19980528-315-6124-02.bin", 0x0000, 0x10000, CRC(e6339f4a) SHA1(688b2e1ff8c60bde6e8b07a2d2695cdacc07bd0c), ROM_BIOS(3)) + + // Version 1.002,1998/06/04,315-6124-03,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(3, "jp1002", "VMS Japanese BIOS (1.002 1998/06/04)") + ROMX_LOAD("jp1002-19980604-315-6124-03.bin", 0x0000, 0x10000, CRC(6c020d48) SHA1(9ee7c87d7b033235e0b315a0b421e70deb547c7a), ROM_BIOS(4)) + + // Version 1.004,1998/09/30,315-6208-01,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(4, "jp1004", "VMS Japanese BIOS (1.004, 1998/09/30)") + ROMX_LOAD("jp1004-19980930-315-6208-01.bin", 0x0000, 0x10000, CRC(8e0f867a) SHA1(dc2fa2963138a1049a43f7f36439ad0a416ee8b4), ROM_BIOS(5)) // from Sega Katana SDK (original file: fbios.sbf, CRC: c7c77b3c, xor key: 0x37) + + // Version 1.005,1998/12/09,315-6124-05,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(5, "jp1005a", "VMS Japanese BIOS (1.005 1998/12/09)") + ROMX_LOAD("jp1005-19981209-315-6124-05.bin", 0x0000, 0x10000, CRC(47623324) SHA1(fca1aceff8a2f8c6826f3a865f4d5ef88dfd9ed1), ROM_BIOS(6)) + + // Version 1.005,1999/10/26,315-6028-04,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(6, "jp1005b", "VMS Japanese BIOS (1.005 1999/10/26)") + ROMX_LOAD("jp1005-19991026-315-6028-04.bin", 0x0000, 0x10000, CRC(6cab02c2) SHA1(6cc2fbf4a67770988922117c300d006aa20899ac), ROM_BIOS(7)) // extracted with trojan + + // Version 1.004,1998/09/30,315-6208-01,SEGA Visual Memory System BIOS Produced by Sue + ROM_SYSTEM_BIOS(7, "dev1004", "VMS Japanese Development BIOS (1.004 1998/09/30)") // automatically boot the first game found in the flash + ROMX_LOAD( "jp1004-19980930-315-6208-01-dev.bin", 0x0000, 0x10000, CRC(395e25f2) SHA1(37dea034322b5b80b35b2de784298d32c71ba7a3), ROM_BIOS(8)) // from Sega Katana SDK (original file: qbios.sbf, CRC: eed5524c, xor key: 0x43) ROM_END From d13c7623cf0dbdf2e723f1916229fe57264d03d0 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 20 Jun 2017 05:01:11 +0100 Subject: [PATCH 3/5] Onna Sansirou - Typhoon Gal - use 68705 dump, replace inaccurate protection sim [ShouTime, brizzo] also set 2 seems to be a bootleg, it's unprotected at the very least. --- src/mame/drivers/flstory.cpp | 40 ++++++++++++++++++++-------------- src/mame/includes/flstory.h | 3 --- src/mame/machine/flstory.cpp | 42 ------------------------------------ 3 files changed, 24 insertions(+), 61 deletions(-) diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp index 8c5fd46ff7a..a564caed845 100644 --- a/src/mame/drivers/flstory.cpp +++ b/src/mame/drivers/flstory.cpp @@ -100,7 +100,7 @@ static ADDRESS_MAP_START( onna34ro_map, AS_PROGRAM, 8, flstory_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_SHARE("videoram") AM_RANGE(0xc800, 0xcfff) AM_RAM /* unknown */ - AM_RANGE(0xd000, 0xd000) AM_READWRITE(onna34ro_mcu_r, onna34ro_mcu_w) +// AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog? */ AM_RANGE(0xd002, 0xd002) AM_WRITENOP /* coin lock out? */ AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w) @@ -111,7 +111,7 @@ static ADDRESS_MAP_START( onna34ro_map, AS_PROGRAM, 8, flstory_state ) AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2") AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM") AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1") - AM_RANGE(0xd805, 0xd805) AM_READ(onna34ro_mcu_status_r) +// AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2") // AM_RANGE(0xda00, 0xda00) AM_WRITEONLY AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") @@ -122,6 +122,12 @@ static ADDRESS_MAP_START( onna34ro_map, AS_PROGRAM, 8, flstory_state ) AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("workram") /* work RAM */ ADDRESS_MAP_END +static ADDRESS_MAP_START( onna34ro_mcu_map, AS_PROGRAM, 8, flstory_state ) + AM_IMPORT_FROM(onna34ro_map) + AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) + AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) +ADDRESS_MAP_END + CUSTOM_INPUT_MEMBER(flstory_state::victnine_mcu_status_bit01_r) { address_space &space = m_maincpu->space(AS_PROGRAM); @@ -895,9 +901,6 @@ static MACHINE_CONFIG_START( onna34ro ) MCFG_CPU_PERIODIC_INT_DRIVER(flstory_state, irq0_line_hold, 2*60) /* IRQ generated by ??? */ /* NMI generated by the main CPU */ -// MCFG_CPU_ADD("mcu", M68705, XTAL_18_432MHz/6) /* ??? */ -// MCFG_CPU_PROGRAM_MAP(m68705_map) - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */ /* synchronization of the CPUs */ MCFG_MACHINE_RESET_OVERRIDE(flstory_state,flstory) @@ -946,6 +949,13 @@ static MACHINE_CONFIG_START( onna34ro ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( onna34ro_mcu, onna34ro ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(onna34ro_mcu_map) + + MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, XTAL_18_432MHz/6) /* ? */ +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( victnine ) /* basic machine hardware */ @@ -1140,8 +1150,8 @@ ROM_START( onna34ro ) ROM_LOAD( "a52-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) ) ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) ) - ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ - ROM_LOAD( "a52-17.54c", 0x0000, 0x0800, NO_DUMP ) + ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ + ROM_LOAD( "a52_17.54c", 0x0000, 0x0800, CRC(0ab2612e) SHA1(2bc74e9ef5b9dd51d733dc62902d92c269f7d6a7) ) ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) ROM_LOAD( "a52-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) ) @@ -1167,9 +1177,6 @@ ROM_START( onna34roa ) ROM_LOAD( "a52-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) ) ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) ) - ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ - ROM_LOAD( "a52-17.54c", 0x0000, 0x0800, NO_DUMP ) - ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) ROM_LOAD( "a52-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) ) ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) ) @@ -1340,6 +1347,7 @@ Dumped by Corrado Tomaselli on 9/12/2010 */ + ROM_START( rumba ) ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for the first CPU */ ROM_LOAD( "a23_01-1.bin", 0x0000, 0x4000, CRC(4bea6e18) SHA1(b9a85e65105773b5f93dcc5fc1e7c588b2d25056) ) @@ -1362,9 +1370,9 @@ ROM_START( rumba ) ROM_END -GAME( 1985, flstory, 0, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flstoryj, flstory, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34ro, 0, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, victnine, 0, victnine, victnine, flstory_state, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, rumba, 0, rumba, rumba, flstory_state, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND ) +GAME( 1985, flstory, 0, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flstoryj, flstory, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34ro, 0, onna34ro_mcu, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, victnine, 0, victnine, victnine, flstory_state, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // MCU still simulated +GAME( 1984, rumba, 0, rumba, rumba, flstory_state, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/flstory.h b/src/mame/includes/flstory.h index 0ceedda2127..0826b4bd05a 100644 --- a/src/mame/includes/flstory.h +++ b/src/mame/includes/flstory.h @@ -67,9 +67,6 @@ public: DECLARE_WRITE8_MEMBER(nmi_disable_w); DECLARE_WRITE8_MEMBER(nmi_enable_w); DECLARE_READ8_MEMBER(flstory_mcu_status_r); - DECLARE_WRITE8_MEMBER(onna34ro_mcu_w); - DECLARE_READ8_MEMBER(onna34ro_mcu_r); - DECLARE_READ8_MEMBER(onna34ro_mcu_status_r); DECLARE_WRITE8_MEMBER(victnine_mcu_w); DECLARE_READ8_MEMBER(victnine_mcu_r); DECLARE_READ8_MEMBER(victnine_mcu_status_r); diff --git a/src/mame/machine/flstory.cpp b/src/mame/machine/flstory.cpp index c3ffc7d1ff1..042f8a1cdd2 100644 --- a/src/mame/machine/flstory.cpp +++ b/src/mame/machine/flstory.cpp @@ -21,48 +21,6 @@ READ8_MEMBER(flstory_state::flstory_mcu_status_r) ((CLEAR_LINE != m_bmcu->mcu_semaphore_r()) ? 0x02 : 0x00); } -WRITE8_MEMBER(flstory_state::onna34ro_mcu_w) -{ - uint16_t score_adr = m_workram[0x29e] * 0x100 + m_workram[0x29d]; - - switch (data) - { - case 0x0e: - m_from_mcu = 0xff; - break; - case 0x01: - m_from_mcu = 0x6a; - break; - case 0x40: - if(score_adr >= 0xe000 && score_adr < 0xe800) - m_from_mcu = m_workram[score_adr - 0xe000]; /* score l*/ - break; - case 0x41: - if(score_adr >= 0xe000 && score_adr < 0xe800) - m_from_mcu = m_workram[(score_adr + 1) - 0xe000]; /* score m*/ - break; - case 0x42: - if(score_adr >= 0xe000 && score_adr < 0xe800) - m_from_mcu = m_workram[(score_adr + 2) - 0xe000] & 0x0f; /* score h*/ - break; - default: - m_from_mcu = 0x80; - } -} - -READ8_MEMBER(flstory_state::onna34ro_mcu_r) -{ - return m_from_mcu; -} - -READ8_MEMBER(flstory_state::onna34ro_mcu_status_r) -{ - int res = 3; - - return res; -} - - #define VICTNINE_MCU_SEED (m_workram[0x685]) static const uint8_t victnine_mcu_data[0x100] = From f7662fb1fbcb33a943902de232bba86b3c71c99a Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 20 Jun 2017 06:36:23 +0100 Subject: [PATCH 4/5] new clones - Power Instinct (USA, prototype) [ShouTime] --- src/mame/drivers/powerins.cpp | 55 +++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 1 + 2 files changed, 56 insertions(+) diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index 6f4d633d39c..364e4e8dc41 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -521,6 +521,60 @@ ROM_START( powerinsj ) ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) ROM_END +ROM_START( powerinsp ) + ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */ + ROM_LOAD16_WORD_SWAP( "3.P000.V4.0A.U116.27C240", 0x000000, 0x80000, CRC(d1dd5a3f) SHA1(b2a52a2bbdf63eddc04bae2b4322d6d320f35e89) ) + ROM_LOAD16_WORD_SWAP( "4.P000.V3.8.U117.27C4-96", 0x080000, 0x80000, CRC(9c0f23cf) SHA1(9ac78939a743c340aa51ff1b05817866124acd34) ) + + ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */ + ROM_LOAD( "2.SOUND 9.20.U74.27C1001", 0x000000, 0x20000, CRC(4b123cc6) SHA1(ed61d3a2ab20c86b91fd7bafa717be3ce26159be) ) + + ROM_REGION( 0x280000, "gfx1", 0 ) /* Layer 0 */ + ROM_LOAD( "BA0.S0.27C040", 0x000000, 0x80000, CRC(1975b4b8) SHA1(cb400967744fa602df1bd2d88950dfdbdc77073f) ) + ROM_LOAD( "BA1.S1.27C040", 0x080000, 0x80000, CRC(376e4919) SHA1(12baa17382c176838df1b5ef86f1fa6dbcb978dd) ) + ROM_LOAD( "BA2.S2.27C040", 0x100000, 0x80000, CRC(0d5ff532) SHA1(4febdb9cdacd85903a4a28e8df945dee0ce85558) ) + ROM_LOAD( "BA3.S3.27C040", 0x180000, 0x80000, CRC(99b25791) SHA1(82f4bb5780826773d2e5f7143afb3ba209f57652) ) + ROM_LOAD( "BA4.S4.27C040", 0x200000, 0x80000, CRC(2dd76149) SHA1(975e4d371fdfbbd9a568da4d4c91ffd3f0ae636e) ) + + ROM_REGION( 0x100000, "gfx2", 0 ) /* Layer 1 */ + ROM_LOAD( "1.TEXT 1080.U16.27C010", 0x000000, 0x20000, CRC(6a579ee0) SHA1(438e87b930e068e0cf7352e614a14049ebde6b8a) ) + + ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */ + ROM_LOAD16_BYTE( "FO0.MO0.27C040", 0x000000, 0x80000, CRC(8b9b89c9) SHA1(f1d39d1a62e40a14642d8f22fc38b764465a8daa) ) + ROM_LOAD16_BYTE( "FE0.ME0.27C040", 0x000001, 0x80000, CRC(4d127bdf) SHA1(26a7c277e7660a7c7c0c11cacadf815d2487ba8a) ) + ROM_LOAD16_BYTE( "FO1.MO1.27C040", 0x100000, 0x80000, CRC(298eb50e) SHA1(2b922c1473bb559a1e8bd6221619141658179bb9) ) + ROM_LOAD16_BYTE( "FE1.ME1.27C040", 0x100001, 0x80000, CRC(57e6d283) SHA1(4701576c8663ba47f388a02e61ef078a9dbbd212) ) + ROM_LOAD16_BYTE( "FO2.MO2.27C040", 0x200000, 0x80000, CRC(fb184167) SHA1(20924d3f35509f2f6af61f565b852ea72326d02c) ) + ROM_LOAD16_BYTE( "FE2.ME2.27C040", 0x200001, 0x80000, CRC(1b752a4d) SHA1(1b13f28af208542bee9da298d6e9db676cbc0845) ) + ROM_LOAD16_BYTE( "FO3.MO3.27C040", 0x300000, 0x80000, CRC(2f26ba7b) SHA1(026f960fa4de09ed940dd83a3db467c3676c5024) ) + ROM_LOAD16_BYTE( "FE3.ME3.27C040", 0x300001, 0x80000, CRC(0263d89b) SHA1(526b8ed05dffcbe98a44372bd55ad7b0ba91fc0f) ) + ROM_LOAD16_BYTE( "FO4.MO4.27C040", 0x400000, 0x80000, CRC(c4633294) SHA1(9578f516eaf09e743ee0262ce227f811bea1be8f) ) + ROM_LOAD16_BYTE( "FE4.ME4.27C040", 0x400001, 0x80000, CRC(5e4b5655) SHA1(f86509e75ec0c68f728715a5a325f6d1a30cfd93) ) + ROM_LOAD16_BYTE( "FO5.MO5.27C040", 0x500000, 0x80000, CRC(4d4b0e4e) SHA1(782c5edc533f10757cb18d2411046e44aa075ba1) ) + ROM_LOAD16_BYTE( "FE5.ME5.27C040", 0x500001, 0x80000, CRC(7e9f2d2b) SHA1(cfee03c38a6c781ad370638748244a164b83d588) ) + ROM_LOAD16_BYTE( "FO6.MO6.27C040", 0x600000, 0x80000, CRC(0e7671f2) SHA1(301af5c4229451cba9fdf40285dd7243626ffed4) ) + ROM_LOAD16_BYTE( "FE6.ME6.27C040", 0x600001, 0x80000, CRC(ee59b1ec) SHA1(437bc50c3b32c2edee549f5021345f1c924896b4) ) + ROM_LOAD16_BYTE( "FO7.MO7.27C040", 0x700000, 0x80000, CRC(9ab1998c) SHA1(fadaa4a46cefe0093ee1ebeddbae63143fa7bb5a) ) + ROM_LOAD16_BYTE( "FE7.ME7.27C040", 0x700001, 0x80000, CRC(1ab0c88a) SHA1(8bc72732f5911e0d4e0cf12fd2fb12d67e03299e) ) + + ROM_REGION( 0x240000, "oki1", 0 ) /* 8 bit adpcm (banked) */ + ROM_LOAD( "AO0.AD00.27C040", 0x040000, 0x80000, CRC(8cd6824e) SHA1(aa6d8917558de4f2aa8d80527209b9fe91122eb3) ) + ROM_LOAD( "AO1.AD01.27C040", 0x0c0000, 0x80000, CRC(e31ae04d) SHA1(c08d58a4250d8bdb68b8e5012624f345936520e1) ) + ROM_LOAD( "AO2.AD02.27C040", 0x140000, 0x80000, CRC(c4c9f599) SHA1(1d74acd626406052bec533a918ca24e14a2578f2) ) + ROM_LOAD( "AO3.AD03.27C040", 0x1c0000, 0x80000, CRC(f0a9f0e1) SHA1(4221e0824cdc8bcd6ea1c3811f4e3b7cd99478f2) ) + + ROM_REGION( 0x240000, "oki2", 0 ) /* 8 bit adpcm (banked) */ + ROM_LOAD( "AD10.AD10.27C040", 0x040000, 0x80000, CRC(62557502) SHA1(d72abdaec1c6f55f9b0099b7a8a297e0e14f920c) ) + ROM_LOAD( "AD11.AD11.27C040", 0x0c0000, 0x80000, CRC(dbc86bd7) SHA1(6f1bc3c7e6976fdcd4b2341cea07002fb0cefb14) ) + ROM_LOAD( "AD12.AD12.27C040", 0x140000, 0x80000, CRC(5839a2bd) SHA1(53988086ef97b2671044f6da9d97b1886900b64d) ) + ROM_LOAD( "AD13.AD13.27C040", 0x1c0000, 0x80000, CRC(446f9dc3) SHA1(5c81eb9a7cbea995db9a10d3b6460d02e104825f) ) + + ROM_REGION( 0x0220, "proms", 0 ) /* unknown */ + ROM_LOAD( "22.u81", 0x000000, 0x0020, CRC(67d5ec4b) SHA1(87d32948a0c88277dcdd0eaa035bde40fc7db5fe) ) + ROM_LOAD( "21.u71", 0x000020, 0x0100, CRC(182cd81f) SHA1(3a76bea81b34ea7ccf56044206721058aa5b03e6) ) + ROM_LOAD( "20.u54", 0x000100, 0x0100, CRC(38bd0e2f) SHA1(20d311869642cd96bb831fdf4a458e0d872f03eb) ) +ROM_END + /*************************************************************************** Power Instinct @@ -681,5 +735,6 @@ ROM_END /* all supported sets give a 93.10.20 date */ GAME( 1993, powerins, 0, powerins, powerins, powerins_state, 0, ROT0, "Atlus", "Power Instinct (USA)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, powerinsj, powerins, powerins, powerinj, powerins_state, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, powerinsp, powerins, powerins, powerinj, powerins_state, 0, ROT0, "Atlus", "Power Instinct (USA, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different GAME( 1993, powerinsa, powerins, powerinsa, powerins, powerins_state, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, powerinsb, powerins, powerinsb, powerins, powerins_state, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 75e52fd7b9f..ca5b165b37b 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -31484,6 +31484,7 @@ powerins // (c) 1993 Atlus (USA) powerinsa // (c) 1993 Atlus (bootleg of USA version) powerinsb // (c) 1993 Atlus (bootleg of USA version) powerinsj // (c) 1993 Atlus (Japan) +powerinsp // prototype @source:pp01.cpp pp01 // From c579e0a71afcaefd300b10e0277e89032c8095b4 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 20 Jun 2017 17:53:14 +1000 Subject: [PATCH 5/5] more conventional romaji --- src/mame/drivers/flstory.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp index a564caed845..6ae78cd3d74 100644 --- a/src/mame/drivers/flstory.cpp +++ b/src/mame/drivers/flstory.cpp @@ -1137,6 +1137,11 @@ ROM_START( flstoryj ) ROM_LOAD( "vid-a45.21", 0x1c000, 0x4000, CRC(fc382bd1) SHA1(a773c87454a3d7b80374a6d38ecb8633af2cd990) ) ROM_END +/* +女三四郎 +(Onna Sanshirou) +Taito, 1985 +*/ ROM_START( onna34ro ) ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for the first CPU */ ROM_LOAD( "a52-01-1.40c", 0x0000, 0x4000, CRC(ffddcb02) SHA1(d7002e8a577a5f9c2f63ec8d93076cd720443e05) ) @@ -1372,7 +1377,7 @@ ROM_END GAME( 1985, flstory, 0, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1985, flstoryj, flstory, flstory, flstory, flstory_state, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34ro, 0, onna34ro_mcu, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34ro, 0, onna34ro_mcu, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, 0, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1984, victnine, 0, victnine, victnine, flstory_state, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // MCU still simulated GAME( 1984, rumba, 0, rumba, rumba, flstory_state, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )