diff options
| author | 2026-04-27 16:43:21 +0300 | |
|---|---|---|
| committer | 2026-04-27 16:43:21 +0300 | |
| commit | 9a20965ce119233c14d0664b10f5af6e99058402 (patch) | |
| tree | 93e2fa6c9b93f1c00faee1a9f16d247befa8df35 | |
| parent | ebfb8a5eb7b4bfab786e445eb8d02fbb3833f4e4 (diff) | |
commodore/plus4: Added Diag264 v0.97 kernal ROMs. [Curt Coder]
mos7360: Fixed input clock handling. [Curt Coder]
New working software list items
-------------------------------
plus4_cart: Diag 264 (v0.97, PAL), Diag 264 (v0.97, NTSC) [Curt Coder]
| -rw-r--r-- | hash/plus4_cart.xml | 8 | ||||
| -rw-r--r-- | src/devices/sound/mos7360.cpp | 15 | ||||
| -rw-r--r-- | src/devices/sound/mos7360.h | 1 | ||||
| -rw-r--r-- | src/mame/commodore/plus4.cpp | 8 |
4 files changed, 22 insertions, 10 deletions
diff --git a/hash/plus4_cart.xml b/hash/plus4_cart.xml index 6f24ac3c96f..8bb12c75d45 100644 --- a/hash/plus4_cart.xml +++ b/hash/plus4_cart.xml @@ -149,27 +149,27 @@ license:CC0-1.0 </software> <software name="diag264p"> - <description>Diag 264 (PAL)</description> + <description>Diag 264 (v0.97, PAL)</description> <year>2012</year> <publisher>crock</publisher> <sharedfeat name="compatibility" value="PAL"/> <part name="cart" interface="plus4_cart"> <dataarea name="c1l" size="0x4000"> - <rom name="diag264c_pal.bin" size="0x4000" crc="c314c674" sha1="4acadaf84ecc3eb252ad765fdab583c45e771fd0" offset="0" /> + <rom name="diag264_097_pal_lowrom.bin" size="16384" crc="743eac8f" sha1="af4d1224199e7f68f3be7a845e4e3af97bbd6d06" offset="0" /> </dataarea> </part> </software> <software name="diag264n" cloneof="diag264p"> - <description>Diag 264 (NTSC)</description> + <description>Diag 264 (v0.97, NTSC)</description> <year>2012</year> <publisher>crock</publisher> <sharedfeat name="compatibility" value="NTSC"/> <part name="cart" interface="plus4_cart"> <dataarea name="c1l" size="0x4000"> - <rom name="diag264c_ntsc.bin" size="0x4000" crc="9398ae1c" sha1="d75a28a1a9727914620d57157768c3a84b23544a" offset="0" /> + <rom name="diag264_097_ntsc_lowrom.bin" size="16384" crc="b7f74cdf" sha1="efd6cecac83d5e7e44f7e56ec369b4d408c7c6a2" offset="0" /> </dataarea> </part> </software> diff --git a/src/devices/sound/mos7360.cpp b/src/devices/sound/mos7360.cpp index ae0054c451a..decc41af452 100644 --- a/src/devices/sound/mos7360.cpp +++ b/src/devices/sound/mos7360.cpp @@ -956,6 +956,7 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1) m_y_end = m_y_begin + 192; } m_chargenaddr = CHARGENADDR; + set_clocks(); } break; case 0xff07: @@ -975,6 +976,7 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1) } DBG_LOG(3, "port_w", ("%s %s\n", data & 0x40 ? "ntsc" : "pal", data & 0x20 ? "hori freeze" : "")); m_chargenaddr = CHARGENADDR; + set_clocks(); } break; case 0xff08: @@ -1036,10 +1038,6 @@ void mos7360_device::write(offs_t offset, uint8_t data, int &cs0, int &cs1) m_reg[offset & 0x1f] = data; m_chargenaddr = CHARGENADDR; DBG_LOG(3, "port_w", ("chargen %.4x %s %d\n", CHARGENADDR, data & 2 ? "" : "doubleclock", data & 1)); - if (BIT(data, 1)) - m_cpu->set_clock(clock()); - else - m_cpu->set_clock(clock() * 2); } break; case 0xff14: @@ -1187,3 +1185,12 @@ int mos7360_device::cs1_r(offs_t offset) return 1; } + +void mos7360_device::set_clocks() +{ + bool ntsc = BIT(m_reg[0x07], 6); + set_clock_scale(1.0 / ((5 - ntsc) * 4)); + + bool doubleclock = !BIT(m_reg[0x06], 4); + m_cpu->set_clock(clock() << doubleclock); +} diff --git a/src/devices/sound/mos7360.h b/src/devices/sound/mos7360.h index d09e6eab4b3..ddce8e11a6d 100644 --- a/src/devices/sound/mos7360.h +++ b/src/devices/sound/mos7360.h @@ -128,6 +128,7 @@ protected: TIMER_CALLBACK_MEMBER(raster_interrupt_gen); int cs0_r(offs_t offset); int cs1_r(offs_t offset); + void set_clocks(); const address_space_config m_videoram_space_config; diff --git a/src/mame/commodore/plus4.cpp b/src/mame/commodore/plus4.cpp index 1c69a43ebe5..ce9ec944467 100644 --- a/src/mame/commodore/plus4.cpp +++ b/src/mame/commodore/plus4.cpp @@ -940,7 +940,7 @@ void plus4_state::plus4p(machine_config &config) { plus4(config); m_maincpu->set_clock(XTAL(17'734'470)/20); - m_ted->set_clock(XTAL(17'734'470)/5/4); + m_ted->set_clock(XTAL(17'734'470)); // software list SOFTWARE_LIST(config, "cart_list").set_original("plus4_cart"); @@ -961,7 +961,7 @@ void plus4_state::plus4n(machine_config &config) { plus4(config); m_maincpu->set_clock(XTAL(14'318'181)/16); - m_ted->set_clock(XTAL(14'318'181)/4/4); + m_ted->set_clock(XTAL(14'318'181)); // software list SOFTWARE_LIST(config, "cart_list").set_original("plus4_cart"); @@ -1108,6 +1108,8 @@ ROM_START( plus4 ) ROMX_LOAD( "318005-05.u24", 0x4000, 0x4000, CRC(70295038) SHA1(a3d9e5be091b98de39a046ab167fb7632d053682), ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 2, "jiffydos", "JiffyDOS v6.01" ) ROMX_LOAD( "jiffydos plus4.u24", 0x0000, 0x8000, CRC(818d3f45) SHA1(9bc1b1c3da9ca642deae717905f990d8e36e6c3b), ROM_BIOS(2) ) // first half contains R5 kernal + ROM_SYSTEM_BIOS( 3, "diag264", "Diag264 v0.97" ) + ROMX_LOAD( "diag264_097_ntsc_kernal.u24", 0x4000, 0x4000, CRC(6423deaa) SHA1(6a3f63f6cb3cee2a0dd153fe3fb60968a834dd6c), ROM_BIOS(3) ) ROM_LOAD( "318006-01.u23", 0x0000, 0x4000, CRC(74eaae87) SHA1(161c96b4ad20f3a4f2321808e37a5ded26a135dd) ) @@ -1135,6 +1137,8 @@ ROM_START( plus4p ) ROMX_LOAD( "318004-04.u24", 0x4000, 0x4000, CRC(be54ed79) SHA1(514ad3c29d01a2c0a3b143d9c1d4143b1912b793), ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 2, "r5", "Revision 5" ) ROMX_LOAD( "318004-05.u24", 0x4000, 0x4000, CRC(71c07bd4) SHA1(7c7e07f016391174a557e790c4ef1cbe33512cdb), ROM_BIOS(2) ) + ROM_SYSTEM_BIOS( 3, "diag264", "Diag264 v0.97" ) + ROMX_LOAD( "diag264_097_pal_kernal.u24", 0x4000, 0x4000, CRC(bf0b3657) SHA1(47c731739f6c1bd1c8446b2cacfe1eaddb5df966), ROM_BIOS(3) ) ROM_REGION( 0x8000, "function", 0 ) ROM_LOAD( "317053-01.u25", 0x0000, 0x4000, CRC(4fd1d8cb) SHA1(3b69f6e7cb4c18bb08e203fb18b7dabfa853390f) ) |
