summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-05-13 12:51:03 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-05-13 12:51:03 -0400
commit5b316c6d231e8ed95ea23317a897042930e1791e (patch)
tree9defe025da21bbb332691193911b7bde74bc56db
parent48b45768a0e452f055ed52249ec0f3161a7370bc (diff)
nes: CPU clock (well, phase 2 clock) also received by cartridge slot (nw)
-rw-r--r--src/devices/bus/nes/bandai.cpp6
-rw-r--r--src/devices/bus/nes/bootleg.cpp14
-rw-r--r--src/devices/bus/nes/cony.cpp4
-rw-r--r--src/devices/bus/nes/datach.cpp4
-rw-r--r--src/devices/bus/nes/disksys.cpp2
-rw-r--r--src/devices/bus/nes/event.cpp2
-rw-r--r--src/devices/bus/nes/ggenie.cpp2
-rw-r--r--src/devices/bus/nes/irem.cpp2
-rw-r--r--src/devices/bus/nes/jaleco.cpp2
-rw-r--r--src/devices/bus/nes/jy.cpp2
-rw-r--r--src/devices/bus/nes/kaiser.cpp4
-rw-r--r--src/devices/bus/nes/konami.cpp6
-rw-r--r--src/devices/bus/nes/legacy.cpp2
-rw-r--r--src/devices/bus/nes/namcot.cpp6
-rw-r--r--src/devices/bus/nes/nes_slot.cpp8
-rw-r--r--src/devices/bus/nes/nes_slot.h12
-rw-r--r--src/devices/bus/nes/pirate.cpp2
-rw-r--r--src/devices/bus/nes/sunsoft.cpp4
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.cpp2
-rw-r--r--src/devices/bus/nes/tengen.cpp2
-rw-r--r--src/mame/drivers/nes.cpp8
21 files changed, 47 insertions, 49 deletions
diff --git a/src/devices/bus/nes/bandai.cpp b/src/devices/bus/nes/bandai.cpp
index 22f1655521b..7d1027a39ae 100644
--- a/src/devices/bus/nes/bandai.cpp
+++ b/src/devices/bus/nes/bandai.cpp
@@ -126,7 +126,7 @@ void nes_fcg_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -147,7 +147,7 @@ void nes_lz93d50_24c01_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -170,7 +170,7 @@ void nes_fjump2_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_reg));
}
diff --git a/src/devices/bus/nes/bootleg.cpp b/src/devices/bus/nes/bootleg.cpp
index 42f08033bfb..ed62193f06c 100644
--- a/src/devices/bus/nes/bootleg.cpp
+++ b/src/devices/bus/nes/bootleg.cpp
@@ -214,7 +214,7 @@ void nes_mbaby_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
- timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(24576);
+ timer_freq = clocks_to_attotime(24576);
save_item(NAME(m_irq_enable));
save_item(NAME(m_latch));
@@ -249,7 +249,7 @@ void nes_smb3p_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -303,7 +303,7 @@ void nes_smb2j_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -326,7 +326,7 @@ void nes_smb2ja_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -349,7 +349,7 @@ void nes_smb2jb_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -435,7 +435,7 @@ void nes_lh53_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -516,7 +516,7 @@ void nes_shuiguan_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
// always running and checking for IRQ every 114 cycles? or resetting every frame?
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(114));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(114));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
diff --git a/src/devices/bus/nes/cony.cpp b/src/devices/bus/nes/cony.cpp
index 552941a6ac9..d0c61db0e9b 100644
--- a/src/devices/bus/nes/cony.cpp
+++ b/src/devices/bus/nes/cony.cpp
@@ -67,7 +67,7 @@ void nes_cony_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -103,7 +103,7 @@ void nes_yoko_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp
index 34d615c4504..1d8b22a87ba 100644
--- a/src/devices/bus/nes/datach.cpp
+++ b/src/devices/bus/nes/datach.cpp
@@ -233,8 +233,8 @@ void nes_datach_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
serial_timer = timer_alloc(TIMER_SERIAL);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
- serial_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1000));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
+ serial_timer->adjust(attotime::zero, 0, clocks_to_attotime(1000));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
diff --git a/src/devices/bus/nes/disksys.cpp b/src/devices/bus/nes/disksys.cpp
index 1d1643e7e59..4b10af9d9ac 100644
--- a/src/devices/bus/nes/disksys.cpp
+++ b/src/devices/bus/nes/disksys.cpp
@@ -117,7 +117,7 @@ void nes_disksys_device::device_start()
m_disk->floppy_install_unload_proc(nes_disksys_device::unload_proc);
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_fds_motor_on));
save_item(NAME(m_fds_door_closed));
diff --git a/src/devices/bus/nes/event.cpp b/src/devices/bus/nes/event.cpp
index 3f6065f449d..6fd85256f7e 100644
--- a/src/devices/bus/nes/event.cpp
+++ b/src/devices/bus/nes/event.cpp
@@ -52,7 +52,7 @@ void nes_event_device::device_start()
common_start();
event_timer = timer_alloc(TIMER_EVENT);
event_timer->adjust(attotime::never);
- timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(1);
+ timer_freq = clocks_to_attotime(1);
save_item(NAME(m_latch));
save_item(NAME(m_count));
diff --git a/src/devices/bus/nes/ggenie.cpp b/src/devices/bus/nes/ggenie.cpp
index 993fef98387..dc58fbf8205 100644
--- a/src/devices/bus/nes/ggenie.cpp
+++ b/src/devices/bus/nes/ggenie.cpp
@@ -259,6 +259,6 @@ READ8_MEMBER(nes_ggenie_device::nt_r)
//-------------------------------------------------
MACHINE_CONFIG_START(nes_ggenie_device::device_add_mconfig)
- MCFG_NES_CARTRIDGE_ADD("gg_slot", nes_cart, nullptr)
+ MCFG_NES_CARTRIDGE_ADD("gg_slot", DERIVED_CLOCK(1, 1), nes_cart, nullptr)
MCFG_NES_CARTRIDGE_NOT_MANDATORY
MACHINE_CONFIG_END
diff --git a/src/devices/bus/nes/irem.cpp b/src/devices/bus/nes/irem.cpp
index 17fd84643b7..07ac824c5be 100644
--- a/src/devices/bus/nes/irem.cpp
+++ b/src/devices/bus/nes/irem.cpp
@@ -130,7 +130,7 @@ void nes_h3001_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
diff --git a/src/devices/bus/nes/jaleco.cpp b/src/devices/bus/nes/jaleco.cpp
index 4ea0ea6dba5..7065b9b7139 100644
--- a/src/devices/bus/nes/jaleco.cpp
+++ b/src/devices/bus/nes/jaleco.cpp
@@ -210,7 +210,7 @@ void nes_ss88006_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_mmc_prg_bank));
save_item(NAME(m_mmc_vrom_bank));
diff --git a/src/devices/bus/nes/jy.cpp b/src/devices/bus/nes/jy.cpp
index 191892ef544..00f43a1b2f7 100644
--- a/src/devices/bus/nes/jy.cpp
+++ b/src/devices/bus/nes/jy.cpp
@@ -76,7 +76,7 @@ void nes_jy_typea_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
- timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(1);
+ timer_freq = clocks_to_attotime(1);
save_item(NAME(m_mul));
save_item(NAME(m_latch));
diff --git a/src/devices/bus/nes/kaiser.cpp b/src/devices/bus/nes/kaiser.cpp
index 5ec2355dba6..0d02aecdfd0 100644
--- a/src/devices/bus/nes/kaiser.cpp
+++ b/src/devices/bus/nes/kaiser.cpp
@@ -150,7 +150,7 @@ void nes_ks7032_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_latch));
save_item(NAME(m_irq_enable));
@@ -176,7 +176,7 @@ void nes_ks7017_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_latch));
save_item(NAME(m_irq_enable));
diff --git a/src/devices/bus/nes/konami.cpp b/src/devices/bus/nes/konami.cpp
index 4f1a4de66e2..75b540b72f2 100644
--- a/src/devices/bus/nes/konami.cpp
+++ b/src/devices/bus/nes/konami.cpp
@@ -126,7 +126,7 @@ void nes_konami_vrc3_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_enable));
@@ -154,7 +154,7 @@ void nes_konami_vrc4_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_prescale));
@@ -195,7 +195,7 @@ void nes_konami_vrc7_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_mode));
save_item(NAME(m_irq_prescale));
diff --git a/src/devices/bus/nes/legacy.cpp b/src/devices/bus/nes/legacy.cpp
index 73528ede404..a89991776bc 100644
--- a/src/devices/bus/nes/legacy.cpp
+++ b/src/devices/bus/nes/legacy.cpp
@@ -78,7 +78,7 @@ void nes_ffe4_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_exram));
save_item(NAME(m_exram_enabled));
diff --git a/src/devices/bus/nes/namcot.cpp b/src/devices/bus/nes/namcot.cpp
index 59778cbbaea..b9f594de75d 100644
--- a/src/devices/bus/nes/namcot.cpp
+++ b/src/devices/bus/nes/namcot.cpp
@@ -145,7 +145,7 @@ void nes_namcot340_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -171,7 +171,7 @@ void nes_namcot175_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
@@ -199,7 +199,7 @@ void nes_namcot163_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_count));
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index 2676ad357a7..5f6615c01fd 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -111,7 +111,9 @@ device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconf
, m_ciram(nullptr)
, m_prg_size(0)
, m_vrom_size(0)
- , m_maincpu(nullptr)
+ // HACK: to reduce tagmap lookups for PPU-related IRQs, we add a hook to the
+ // main NES CPU here, even if it does not belong to this device.
+ , m_maincpu(*this, ":maincpu")
, m_mapper_sram(nullptr)
, m_mapper_sram_size(0)
, m_ce_mask(0)
@@ -671,10 +673,6 @@ WRITE8_MEMBER(device_nes_cart_interface::write_h)
void device_nes_cart_interface::pcb_start(running_machine &machine, uint8_t *ciram_ptr, bool cart_mounted)
{
- // HACK: to reduce tagmap lookups for PPU-related IRQs, we add a hook to the
- // main NES CPU here, even if it does not belong to this device.
- m_maincpu = machine.device<cpu_device>("maincpu");
-
if (cart_mounted) // disksys expansion can arrive here without the memory banks!
{
// Setup PRG
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index 088c402803c..989f7e93d68 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -245,7 +245,7 @@ protected:
// HACK: to reduce tagmap lookups for PPU-related IRQs, we add a hook to the
// main NES CPU here, even if it does not belong to this device.
- cpu_device *m_maincpu;
+ required_device<cpu_device> m_maincpu;
// these are specific of some boards but must be accessible from the driver
// E.g. additional save ram for HKROM, X1-005 & X1-017 boards, or ExRAM for MMC5
@@ -414,18 +414,12 @@ DECLARE_DEVICE_TYPE(NES_CART_SLOT, nes_cart_slot_device)
#define NESSLOT_CHRROM_REGION_TAG ":cart:chr_rom"
-#define MCFG_NES_CARTRIDGE_ADD(_tag, _slot_intf, _def_slot) \
- MCFG_DEVICE_ADD(_tag, NES_CART_SLOT, 0) \
+#define MCFG_NES_CARTRIDGE_ADD(_tag, _clock, _slot_intf, _def_slot) \
+ MCFG_DEVICE_ADD(_tag, NES_CART_SLOT, _clock) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
#define MCFG_NES_CARTRIDGE_NOT_MANDATORY \
static_cast<nes_cart_slot_device *>(device)->set_must_be_loaded(false);
-// Hacky configuration to add a slot with fixed disksys interface
-#define MCFG_DISKSYS_ADD(_tag, _slot_intf, _def_slot) \
- MCFG_DEVICE_ADD(_tag, NES_CART_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, true) \
- MCFG_NES_CARTRIDGE_NOT_MANDATORY
-
#endif // MAME_BUS_NES_NES_SLOT_H
diff --git a/src/devices/bus/nes/pirate.cpp b/src/devices/bus/nes/pirate.cpp
index 88226aeed31..b280b8281b7 100644
--- a/src/devices/bus/nes/pirate.cpp
+++ b/src/devices/bus/nes/pirate.cpp
@@ -383,7 +383,7 @@ void nes_cityfight_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_prg_reg));
save_item(NAME(m_prg_mode));
diff --git a/src/devices/bus/nes/sunsoft.cpp b/src/devices/bus/nes/sunsoft.cpp
index 2b3b3169f5d..2e4325ddc1a 100644
--- a/src/devices/bus/nes/sunsoft.cpp
+++ b/src/devices/bus/nes/sunsoft.cpp
@@ -124,7 +124,7 @@ void nes_sunsoft_3_device::device_start()
{
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
- irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+ irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_irq_enable));
save_item(NAME(m_irq_toggle));
@@ -170,7 +170,7 @@ void nes_sunsoft_fme7_device::device_start()
irq_timer = timer_alloc(TIMER_IRQ);
// this has to be hardcoded because some some scanline code only suits NTSC... it will be fixed with PPU rewrite
irq_timer->adjust(attotime::zero, 0, attotime::from_hz((21477272.724 / 12)));
-// irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
+// irq_timer->adjust(attotime::zero, 0, clocks_to_attotime(1));
save_item(NAME(m_wram_bank));
save_item(NAME(m_latch));
diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp
index a933fdcfb5b..5df2c6557d2 100644
--- a/src/devices/bus/nes/sunsoft_dcs.cpp
+++ b/src/devices/bus/nes/sunsoft_dcs.cpp
@@ -169,7 +169,7 @@ void nes_sunsoft_dcs_device::device_start()
common_start();
ntb_enable_timer = timer_alloc(TIMER_PROTECT);
ntb_enable_timer->reset();
- timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(107520);
+ timer_freq = clocks_to_attotime(107520);
save_item(NAME(m_latch1));
save_item(NAME(m_latch2));
diff --git a/src/devices/bus/nes/tengen.cpp b/src/devices/bus/nes/tengen.cpp
index 7b171e77311..532dd9010d6 100644
--- a/src/devices/bus/nes/tengen.cpp
+++ b/src/devices/bus/nes/tengen.cpp
@@ -83,7 +83,7 @@ void nes_tengen032_device::device_start()
common_start();
irq_timer = timer_alloc(TIMER_IRQ);
irq_timer->reset();
- timer_freq = machine().device<cpu_device>("maincpu")->cycles_to_attotime(4);
+ timer_freq = clocks_to_attotime(4);
save_item(NAME(m_mmc_prg_bank));
save_item(NAME(m_mmc_vrom_bank));
diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp
index 9648e08b2fe..a6cc9a51b5d 100644
--- a/src/mame/drivers/nes.cpp
+++ b/src/mame/drivers/nes.cpp
@@ -79,7 +79,7 @@ MACHINE_CONFIG_START(nes_state::nes)
MCFG_NES_CONTROL_PORT_ADD("ctrl2", nes_control_port2_devices, "joypad")
MCFG_NESCTRL_BRIGHTPIXEL_CB(nes_state, bright_pixel)
- MCFG_NES_CARTRIDGE_ADD("nes_slot", nes_cart, nullptr)
+ MCFG_NES_CARTRIDGE_ADD("nes_slot", NTSC_APU_CLOCK, nes_cart, nullptr)
MCFG_SOFTWARE_LIST_ADD("cart_list", "nes")
MCFG_SOFTWARE_LIST_ADD("ade_list", "nes_ade") // Camerica/Codemasters Aladdin Deck Enhancer mini-carts
MCFG_SOFTWARE_LIST_ADD("ntb_list", "nes_ntbrom") // Sunsoft Nantettate! Baseball mini-carts
@@ -99,6 +99,9 @@ MACHINE_CONFIG_START(nes_state::nespal)
MCFG_PPU2C0X_CPU("maincpu")
MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVICE_MODIFY("nes_slot")
+ MCFG_DEVICE_CLOCK(PAL_APU_CLOCK)
+
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(50.0070)
@@ -132,6 +135,9 @@ MACHINE_CONFIG_START(nes_state::nespalc)
MCFG_PPU2C0X_CPU("maincpu")
MCFG_PPU2C0X_INT_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVICE_MODIFY("nes_slot")
+ MCFG_DEVICE_CLOCK(PALC_APU_CLOCK)
+
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(50.0070)