From c0f1f79e7b80004be002cf8cab7f60f4d5a2b12e Mon Sep 17 00:00:00 2001 From: negunma <97546439+negunma@users.noreply.github.com> Date: Sun, 12 Mar 2023 12:03:19 +0900 Subject: sega/system1.cpp nob: fix SN76489A clock (#10866) * sega/system1.cpp: Fix SN76489A clocks for nob and gardia to match videos from PCB --- src/mame/dynax/ddenlovr.cpp | 18 +++++------ src/mame/sega/system1.cpp | 73 +++++++++++++++++++++++++-------------------- src/mame/sega/system1.h | 3 ++ 3 files changed, 52 insertions(+), 42 deletions(-) diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp index a9456a6e509..2aa6afb3571 100644 --- a/src/mame/dynax/ddenlovr.cpp +++ b/src/mame/dynax/ddenlovr.cpp @@ -10029,11 +10029,11 @@ WRITE_LINE_MEMBER(mmpanic_state::mmpanic_rtc_irq) void mmpanic_state::mmpanic(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(16'000'000) / 2); + Z80(config, m_maincpu, 16_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &mmpanic_state::mmpanic_map); m_maincpu->set_addrmap(AS_IO, &mmpanic_state::mmpanic_portmap); - Z80(config, m_soundcpu, XTAL(14'318'181) / 4); + Z80(config, m_soundcpu, 14.318181_MHz_XTAL / 4); m_soundcpu->set_addrmap(AS_PROGRAM, &mmpanic_state::mmpanic_sound_map); m_soundcpu->set_addrmap(AS_IO, &mmpanic_state::mmpanic_sound_portmap); @@ -10062,15 +10062,15 @@ void mmpanic_state::mmpanic(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); - YM2413(config, "ym2413", XTAL(14'318'181) / 4).add_route(ALL_OUTPUTS, "mono", 0.80); + YM2413(config, "ym2413", 14.318181_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 0.80); - AY8910(config, "aysnd", XTAL(14'318'181) / 8).add_route(ALL_OUTPUTS, "mono", 0.30); + AY8910(config, "aysnd", 14.318181_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.30); - OKIM6295(config, m_oki, XTAL(14'318'181) / 14, okim6295_device::PIN7_HIGH); + OKIM6295(config, m_oki, 14.318181_MHz_XTAL / 14, okim6295_device::PIN7_HIGH); m_oki->add_route(ALL_OUTPUTS, "mono", 0.80); /* devices */ - msm6242_device &rtc(MSM6242(config, "rtc", XTAL(32'768))); + msm6242_device &rtc(MSM6242(config, "rtc", 32.768_kHz_XTAL)); rtc.out_int_handler().set(FUNC(mmpanic_state::mmpanic_rtc_irq)); } @@ -10090,7 +10090,7 @@ void mmpanic_state::mmpanic(machine_config &config) void hanakanz_state::hanakanz(machine_config &config) { /* basic machine hardware */ - kl5c80a12_device &maincpu(KL5C80A12(config, m_maincpu, XTAL(20'000'000))); + kl5c80a12_device &maincpu(KL5C80A12(config, m_maincpu, 20_MHz_XTAL)); maincpu.set_addrmap(AS_PROGRAM, &hanakanz_state::hanakanz_map); maincpu.set_addrmap(AS_IO, &hanakanz_state::hanakanz_portmap); maincpu.in_p0_callback().set(FUNC(hanakanz_state::hanakanz_busy_r)); @@ -10122,9 +10122,9 @@ void hanakanz_state::hanakanz(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - YM2413(config, "ym2413", XTAL(28'375'160) / 8).add_route(ALL_OUTPUTS, "mono", 0.80); + YM2413(config, "ym2413", 28.37516_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.80); - OKIM6295(config, m_oki, XTAL(28'375'160) / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified + OKIM6295(config, m_oki, 28.37516_MHz_XTAL / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified m_oki->add_route(ALL_OUTPUTS, "mono", 0.80); /* devices */ diff --git a/src/mame/sega/system1.cpp b/src/mame/sega/system1.cpp index 68a8fadaad0..e884f8a7200 100644 --- a/src/mame/sega/system1.cpp +++ b/src/mame/sega/system1.cpp @@ -308,7 +308,6 @@ seem to have access to. #include "machine/segacrpt_device.h" #include "cpu/z80/mc8123.h" -#include "sound/sn76496.h" #include "speaker.h" @@ -2308,10 +2307,10 @@ void system1_state::sys1ppi(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - SN76489A(config, "sn1", SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489A(config, m_sn[0], SOUND_CLOCK/4).add_route(ALL_OUTPUTS, "mono", 0.50); /* 2nd SN's clock is selectable via jumper */ - SN76489A(config, "sn2", SOUND_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.50); + SN76489A(config, m_sn[1], SOUND_CLOCK/2).add_route(ALL_OUTPUTS, "mono", 0.50); } /* reduced visible area for scrolling games */ @@ -2453,6 +2452,8 @@ void system1_state::sys1piox_317_0006(machine_config &config) segacrp2_z80_device &z80(SEGA_317_0006(config.replace(), m_maincpu, MASTER_CLOCK)); encrypted_sys1pio_maps(config); z80.set_decrypted_tag(m_decrypted_opcodes); + + m_sn[1]->set_clock(SOUND_CLOCK / 4); } void system1_state::sys1piox_315_5135(machine_config &config) @@ -2598,6 +2599,8 @@ void system1_state::nob(machine_config &config) /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &system1_state::nobo_map); + + m_sn[1]->set_clock(SOUND_CLOCK / 4); } void system1_state::nobm(machine_config &config) @@ -2654,6 +2657,8 @@ void system1_state::sys2_317_0006(machine_config &config) segacrp2_z80_device &z80(SEGA_317_0006(config.replace(), m_maincpu, MASTER_CLOCK)); encrypted_sys1ppi_maps(config); z80.set_decrypted_tag(m_decrypted_opcodes); + + m_sn[1]->set_clock(SOUND_CLOCK / 4); } void system1_state::sys2_317_0007(machine_config &config) @@ -2662,6 +2667,8 @@ void system1_state::sys2_317_0007(machine_config &config) segacrp2_z80_device &z80(SEGA_317_0007(config.replace(), m_maincpu, MASTER_CLOCK)); encrypted_sys1ppi_maps(config); z80.set_decrypted_tag(m_decrypted_opcodes); + + m_sn[1]->set_clock(SOUND_CLOCK / 4); } void system1_state::sys2xb(machine_config &config) @@ -4671,9 +4678,9 @@ ROM_START( wbdeluxe ) ROM_END -ROM_START( gardia ) /* Factory conversion, Sega game ID# 834-6119-04 GARDIA (CVT) */ - ROM_REGION( 0x20000, "maincpu", 0 ) /* These 3 EPROMs located on a Sega 834-5764 daughter card with a 315-5134 PAL? */ - ROM_LOAD( "epr-10255.1", 0x00000, 0x8000, CRC(89282a6b) SHA1(f19e345e5fae6a518276cc1bd09d1e2083672b25) ) /* encrypted */ +ROM_START( gardia ) // Factory conversion, Sega game ID# 834-6119-04 GARDIA (CVT) + ROM_REGION( 0x20000, "maincpu", 0 ) // These 3 EPROMs located on a Sega 834-5764 daughter card with a 315-5134 PAL? + ROM_LOAD( "epr-10255.1", 0x00000, 0x8000, CRC(89282a6b) SHA1(f19e345e5fae6a518276cc1bd09d1e2083672b25) ) // encrypted ROM_LOAD( "epr-10254.2", 0x10000, 0x8000, CRC(2826b6d8) SHA1(de1faf33cca031b72052bf5244fcb0bd79d85659) ) ROM_LOAD( "epr-10253.3", 0x18000, 0x8000, CRC(7911260f) SHA1(44196f0a6c4c2b22a68609ddfc75be6a7877a69a) ) @@ -4691,18 +4698,18 @@ ROM_START( gardia ) /* Factory conversion, Sega game ID# 834-6119-04 GARDIA (CVT ROM_LOAD( "epr-10236.04", 0x10000, 0x8000, CRC(b35ab227) SHA1(616f6097afddffa9af89fe84d8b6df59c567c1e6) ) ROM_LOAD( "epr-10235.5", 0x18000, 0x8000, CRC(006a3151) SHA1(a575f9d5c026e6b18e990720ec7520b6b5ae94e3) ) - ROM_REGION( 0x0300, "color_proms", 0 ) /* BPROMs located on a Sega 834-5755 daughter card (N82S129AN or equivalent) */ - ROM_LOAD( "pr-7345.3", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* palette red component */ - ROM_LOAD( "pr-7344.2", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* palette green component */ - ROM_LOAD( "pr-7343.1", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* palette blue component */ + ROM_REGION( 0x0300, "color_proms", 0 ) // BPROMs located on a Sega 834-5755 daughter card (N82S129AN or equivalent) + ROM_LOAD( "pr-7345.3", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) // palette red component + ROM_LOAD( "pr-7344.2", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) // palette green component + ROM_LOAD( "pr-7343.1", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) // palette blue component - ROM_REGION( 0x0100, "lookup_proms", 0 ) /* BPROM located on a Sega 834-5755 daughter card */ + ROM_REGION( 0x0100, "lookup_proms", 0 ) // BPROM located on a Sega 834-5755 daughter card ROM_LOAD( "pr5317.4", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) ROM_END ROM_START( gardiab ) ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "gardiabl.5", 0x00000, 0x8000, CRC(207f9cbb) SHA1(647de15ac69a904344f3c18c9da8cefd626387db) ) /* encrypted */ + ROM_LOAD( "gardiabl.5", 0x00000, 0x8000, CRC(207f9cbb) SHA1(647de15ac69a904344f3c18c9da8cefd626387db) ) // encrypted ROM_LOAD( "gardiabl.6", 0x10000, 0x8000, CRC(b2ed05dc) SHA1(c520bf7024c85dc759c27eccb0a31998f4d72b5f) ) ROM_LOAD( "gardiabl.7", 0x18000, 0x8000, CRC(0a490588) SHA1(18df754ebdf062096f2d631a722b168901610345) ) @@ -4720,18 +4727,18 @@ ROM_START( gardiab ) ROM_LOAD( "epr-10236.04", 0x10000, 0x8000, CRC(b35ab227) SHA1(616f6097afddffa9af89fe84d8b6df59c567c1e6) ) ROM_LOAD( "epr-10235.5", 0x18000, 0x8000, CRC(006a3151) SHA1(a575f9d5c026e6b18e990720ec7520b6b5ae94e3) ) - ROM_REGION( 0x0300, "color_proms", 0 ) /* BPROMs are N82S129AN or equivalent */ - ROM_LOAD( "pr-7345.3", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* palette red component */ - ROM_LOAD( "pr-7344.2", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* palette green component */ - ROM_LOAD( "pr-7343.1", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* palette blue component */ + ROM_REGION( 0x0300, "color_proms", 0 ) // BPROMs are N82S129AN or equivalent + ROM_LOAD( "pr-7345.3", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) // palette red component + ROM_LOAD( "pr-7344.2", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) // palette green component + ROM_LOAD( "pr-7343.1", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) // palette blue component ROM_REGION( 0x0100, "lookup_proms", 0 ) ROM_LOAD( "pr5317.4", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) ROM_END -ROM_START( gardiaj ) /* Sega game ID# 834-6119-02 GARDIA */ +ROM_START( gardiaj ) // Sega game ID# 834-6119-02 GARDIA ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "epr-10250.ic90", 0x00000, 0x8000, CRC(c97943a7) SHA1(eb201987c7a78f7eb6838211c0af3394c0b2d95f) ) /* encrypted */ + ROM_LOAD( "epr-10250.ic90", 0x00000, 0x8000, CRC(c97943a7) SHA1(eb201987c7a78f7eb6838211c0af3394c0b2d95f) ) // encrypted ROM_LOAD( "epr-10251.ic91", 0x10000, 0x8000, CRC(b2ed05dc) SHA1(c520bf7024c85dc759c27eccb0a31998f4d72b5f) ) ROM_LOAD( "epr-10252.ic92", 0x18000, 0x8000, CRC(0a490588) SHA1(18df754ebdf062096f2d631a722b168901610345) ) @@ -4749,17 +4756,17 @@ ROM_START( gardiaj ) /* Sega game ID# 834-6119-02 GARDIA */ ROM_LOAD( "epr-10236.ic89", 0x10000, 0x8000, CRC(b35ab227) SHA1(616f6097afddffa9af89fe84d8b6df59c567c1e6) ) ROM_LOAD( "epr-10235.ic88", 0x18000, 0x8000, CRC(006a3151) SHA1(a575f9d5c026e6b18e990720ec7520b6b5ae94e3) ) - ROM_REGION( 0x0300, "color_proms", 0 ) /* BPROMs are N82S129AN or equivalent */ - ROM_LOAD( "pr-7345.ic20", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* palette red component */ - ROM_LOAD( "pr-7344.ic14", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* palette green component */ - ROM_LOAD( "pr-7343.ic8", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* palette blue component */ + ROM_REGION( 0x0300, "color_proms", 0 ) // BPROMs are N82S129AN or equivalent + ROM_LOAD( "pr-7345.ic20", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) // palette red component + ROM_LOAD( "pr-7344.ic14", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) // palette green component + ROM_LOAD( "pr-7343.ic8", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) // palette blue component ROM_REGION( 0x0100, "lookup_proms", 0 ) - ROM_LOAD( "pr5317.ic28", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) /* MB7114E */ + ROM_LOAD( "pr5317.ic28", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) // MB7114E ROM_REGION( 0x0400, "plds", 0 ) - ROM_LOAD( "315-5137.bin", 0x00000, 0x0104, CRC(6ffd9e6f) SHA1(a60a3a2ec5bc256b18bfff0fec0172ee2e4fd955) ) /* TI PAL16R4A-2CN Located at IC10 */ - ROM_LOAD( "315-5138.bin", 0x00000, 0x0104, CRC(dd223015) SHA1(8d70f91b118e8653dda1efee3eaea287ae63809f) ) /* TI PAL16R4ACN Located at IC11 */ + ROM_LOAD( "315-5137.bin", 0x00000, 0x0104, CRC(6ffd9e6f) SHA1(a60a3a2ec5bc256b18bfff0fec0172ee2e4fd955) ) // TI PAL16R4A-2CN Located at IC10 + ROM_LOAD( "315-5138.bin", 0x00000, 0x0104, CRC(dd223015) SHA1(8d70f91b118e8653dda1efee3eaea287ae63809f) ) // TI PAL16R4ACN Located at IC11 ROM_END @@ -5443,16 +5450,16 @@ ROM_START( nob ) ROM_LOAD( "dm07.5l", 0x18000, 0x8000, CRC(85e7a29f) SHA1(0ca77c66599650f157450d703682ec114f0453cf) ) ROM_REGION( 0x0300, "color_proms", 0 ) - /* the first 2 proms were missing from the dump, but are clearly needed... */ - ROM_LOAD( "nobo_pr.16d", 0x0000, 0x0100, CRC(95010ac2) SHA1(deaf84b408cd1f3396eb851ef04cc1654d5e9a46) ) /* palette red component */ - ROM_LOAD( "nobo_pr.15d", 0x0100, 0x0100, CRC(c55aac0c) SHA1(0f7f2d383a90e9f7f319626b4d5565805f44a1f9) ) /* palette green component */ - ROM_LOAD( "dm-12.ic3", 0x0200, 0x0100, CRC(de394cee) SHA1(511c53f22459e5e238b48685f85b10f5e15f2ac1) ) /* palette blue component */ + // the first 2 proms were missing from the dump, but are clearly needed... + ROM_LOAD( "nobo_pr.16d", 0x0000, 0x0100, CRC(95010ac2) SHA1(deaf84b408cd1f3396eb851ef04cc1654d5e9a46) ) // palette red component + ROM_LOAD( "nobo_pr.15d", 0x0100, 0x0100, CRC(c55aac0c) SHA1(0f7f2d383a90e9f7f319626b4d5565805f44a1f9) ) // palette green component + ROM_LOAD( "dm-12.ic3", 0x0200, 0x0100, CRC(de394cee) SHA1(511c53f22459e5e238b48685f85b10f5e15f2ac1) ) // palette blue component ROM_REGION( 0x0100, "lookup_proms", 0 ) ROM_LOAD( "dc-11.6a", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) ROM_END -/* the bootleg has different protection.. */ +// the bootleg has different protection.. ROM_START( nobb ) ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD( "nobo-t.bin", 0x00000, 0x8000, CRC(176fd168) SHA1(f262521f07e5340f175019e2a06a54120a4aa3b7) ) @@ -5474,9 +5481,9 @@ ROM_START( nobb ) ROM_LOAD( "nobo-n.bin", 0x18000, 0x8000, CRC(85e7a29f) SHA1(0ca77c66599650f157450d703682ec114f0453cf) ) ROM_REGION( 0x0300, "color_proms", 0 ) - ROM_LOAD( "nobo_pr.16d", 0x0000, 0x0100, CRC(95010ac2) SHA1(deaf84b408cd1f3396eb851ef04cc1654d5e9a46) ) /* palette red component */ - ROM_LOAD( "nobo_pr.15d", 0x0100, 0x0100, CRC(c55aac0c) SHA1(0f7f2d383a90e9f7f319626b4d5565805f44a1f9) ) /* palette green component */ - ROM_LOAD( "nobo_pr.14d", 0x0200, 0x0100, CRC(de394cee) SHA1(511c53f22459e5e238b48685f85b10f5e15f2ac1) ) /* palette blue component */ + ROM_LOAD( "nobo_pr.16d", 0x0000, 0x0100, CRC(95010ac2) SHA1(deaf84b408cd1f3396eb851ef04cc1654d5e9a46) ) // palette red component + ROM_LOAD( "nobo_pr.15d", 0x0100, 0x0100, CRC(c55aac0c) SHA1(0f7f2d383a90e9f7f319626b4d5565805f44a1f9) ) // palette green component + ROM_LOAD( "nobo_pr.14d", 0x0200, 0x0100, CRC(de394cee) SHA1(511c53f22459e5e238b48685f85b10f5e15f2ac1) ) // palette blue component ROM_REGION( 0x0100, "lookup_proms", 0 ) ROM_LOAD( "nobo_pr.13a", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) diff --git a/src/mame/sega/system1.h b/src/mame/sega/system1.h index 584eff8582f..e30396bc96d 100644 --- a/src/mame/sega/system1.h +++ b/src/mame/sega/system1.h @@ -7,6 +7,7 @@ #include "cpu/mcs51/mcs51.h" #include "cpu/z80/z80.h" +#include "sound/sn76496.h" #include "machine/z80pio.h" #include "machine/gen_latch.h" #include "machine/i8255.h" @@ -27,6 +28,7 @@ public: m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), m_mcu(*this, "mcu"), + m_sn(*this, "sn%u", 1U), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), @@ -204,6 +206,7 @@ private: required_device m_maincpu; required_device m_soundcpu; optional_device m_mcu; + required_device_array m_sn; required_device m_gfxdecode; required_device m_screen; required_device m_palette; -- cgit v1.2.3