mirror of
https://github.com/holub/mame
synced 2025-05-30 09:33:05 +03:00
nes: CPU clock (well, phase 2 clock) also received by cartridge slot (nw)
This commit is contained in:
parent
48b45768a0
commit
5b316c6d23
@ -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));
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user