From 354531eefcb862d6becaf9ef661474617123bd8f Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 31 Mar 2014 13:56:26 +0000 Subject: [PATCH] (MESS) c128: Fixed clocks. (nw) --- src/emu/video/mc6845.c | 4 +++- src/emu/video/mos6566.h | 8 ++++++++ src/mess/drivers/c128.c | 36 ++++++++++++++++++------------------ 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/emu/video/mc6845.c b/src/emu/video/mc6845.c index 0aac5609cfb..64deade0cb4 100644 --- a/src/emu/video/mc6845.c +++ b/src/emu/video/mc6845.c @@ -43,7 +43,7 @@ #include "mc6845.h" -#define LOG (1) +#define LOG (0) const device_type MC6845 = &device_creator; @@ -1445,6 +1445,7 @@ mos8563_device::mos8563_device(const machine_config &mconfig, device_type type, m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, NULL, *ADDRESS_MAP_NAME(mos8563_videoram_map)), m_palette(*this, "palette") { + set_clock_scale(1.0/8); } @@ -1454,6 +1455,7 @@ mos8563_device::mos8563_device(const machine_config &mconfig, const char *tag, d m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 16, 0, NULL, *ADDRESS_MAP_NAME(mos8563_videoram_map)), m_palette(*this, "palette") { + set_clock_scale(1.0/8); } diff --git a/src/emu/video/mos6566.h b/src/emu/video/mos6566.h index e5996a59ba2..fea6c0465f3 100644 --- a/src/emu/video/mos6566.h +++ b/src/emu/video/mos6566.h @@ -397,6 +397,10 @@ class mos8564_device : public mos6567_device public: // construction/destruction mos8564_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device_execute_interface overrides + virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks / 8); } + virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 8); } }; @@ -431,6 +435,10 @@ class mos8566_device : public mos6569_device public: // construction/destruction mos8566_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device_execute_interface overrides + virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks / 8); } + virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 8); } }; diff --git a/src/mess/drivers/c128.c b/src/mess/drivers/c128.c index e21b2f96493..956ddc67e57 100644 --- a/src/mess/drivers/c128.c +++ b/src/mess/drivers/c128.c @@ -1443,20 +1443,20 @@ void c128_state::machine_reset() static MACHINE_CONFIG_START( ntsc, c128_state ) // basic hardware - MCFG_CPU_ADD(Z80A_TAG, Z80, VIC6567_CLOCK*2) + MCFG_CPU_ADD(Z80A_TAG, Z80, XTAL_14_31818MHz*2/3.5/2) MCFG_CPU_PROGRAM_MAP(z80_mem) MCFG_CPU_IO_MAP(z80_io) MCFG_QUANTUM_PERFECT_CPU(Z80A_TAG) - MCFG_CPU_ADD(M8502_TAG, M8502, VIC6567_CLOCK) + MCFG_CPU_ADD(M8502_TAG, M8502, XTAL_14_31818MHz*2/3.5/8) MCFG_M8502_PORT_CALLBACKS(READ8(c128_state, cpu_r), WRITE8(c128_state, cpu_w)) MCFG_M8502_PORT_PULLS(0x07, 0x20) MCFG_CPU_PROGRAM_MAP(m8502_mem) MCFG_QUANTUM_PERFECT_CPU(M8502_TAG) // video hardware - MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6567_CLOCK*2, vdc_intf, vdc_videoram_map) - MCFG_DEVICE_ADD(MOS8564_TAG, MOS8564, VIC6567_CLOCK) + MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, XTAL_16MHz, vdc_intf, vdc_videoram_map) + MCFG_DEVICE_ADD(MOS8564_TAG, MOS8564, XTAL_14_31818MHz*2/3.5) MCFG_MOS6566_CPU(M8502_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w)) MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w)) @@ -1473,7 +1473,7 @@ static MACHINE_CONFIG_START( ntsc, c128_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_14_31818MHz*2/3.5/8) MCFG_MOS6581_POTX_CALLBACK(READ8(c128_state, sid_potx_r)) MCFG_MOS6581_POTY_CALLBACK(READ8(c128_state, sid_poty_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) @@ -1481,14 +1481,14 @@ static MACHINE_CONFIG_START( ntsc, c128_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_DEVICE_ADD(MOS8722_TAG, MOS8722, VIC6567_CLOCK) + MCFG_DEVICE_ADD(MOS8722_TAG, MOS8722, XTAL_14_31818MHz*2/3.5/8) MCFG_MOS8722_Z80EN_CALLBACK(WRITELINE(c128_state, mmu_z80en_w)) MCFG_MOS8722_FSDIR_CALLBACK(WRITELINE(c128_state, mmu_fsdir_w)) MCFG_MOS8722_GAME_CALLBACK(READLINE(c128_state, mmu_game_r)) MCFG_MOS8722_EXROM_CALLBACK(READLINE(c128_state, mmu_exrom_r)) MCFG_MOS8722_SENSE40_CALLBACK(READLINE(c128_state, mmu_sense40_r)) MCFG_MOS8721_ADD(MOS8721_TAG) - MCFG_DEVICE_ADD(MOS6526_1_TAG, MOS6526, VIC6567_CLOCK) + MCFG_DEVICE_ADD(MOS6526_1_TAG, MOS6526, XTAL_14_31818MHz*2/3.5/8) MCFG_MOS6526_TOD(60) MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c128_state, cia1_irq_w)) MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c128_state, cia1_cnt_w)) @@ -1496,7 +1496,7 @@ static MACHINE_CONFIG_START( ntsc, c128_state ) MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c128_state, cia1_pa_r)) MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c128_state, cia1_pb_r)) MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pb_w)) - MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, VIC6567_CLOCK) + MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_14_31818MHz*2/3.5/8) MCFG_MOS6526_TOD(60) MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c128_state, cia2_irq_w)) MCFG_MOS6526_CNT_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_6)) @@ -1510,7 +1510,7 @@ static MACHINE_CONFIG_START( ntsc, c128_state ) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL) MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS8564_TAG, mos8564_device, lp_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy") - MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, c64_expansion_cards, NULL) + MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, XTAL_14_31818MHz*2/3.5/8, c64_expansion_cards, NULL) MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(c128_state, exp_irq_w), WRITELINE(c128_state, exp_nmi_w), WRITELINE(c128_state, exp_reset_w)) MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(READ8(c128_state, exp_dma_cd_r), WRITE8(c128_state, exp_dma_cd_w), WRITELINE(c128_state, exp_dma_w)) @@ -1603,20 +1603,20 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( pal, c128_state ) // basic hardware - MCFG_CPU_ADD(Z80A_TAG, Z80, VIC6569_CLOCK*2) + MCFG_CPU_ADD(Z80A_TAG, Z80, XTAL_17_734472MHz*2/4.5/2) MCFG_CPU_PROGRAM_MAP(z80_mem) MCFG_CPU_IO_MAP(z80_io) MCFG_QUANTUM_PERFECT_CPU(Z80A_TAG) - MCFG_CPU_ADD(M8502_TAG, M8502, VIC6569_CLOCK) + MCFG_CPU_ADD(M8502_TAG, M8502, XTAL_17_734472MHz*2/4.5/8) MCFG_M8502_PORT_CALLBACKS(READ8(c128_state, cpu_r), WRITE8(c128_state, cpu_w)) MCFG_M8502_PORT_PULLS(0x07, 0x20) MCFG_CPU_PROGRAM_MAP(m8502_mem) MCFG_QUANTUM_PERFECT_CPU(M8502_TAG) // video hardware - MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6569_CLOCK*2, vdc_intf, vdc_videoram_map) - MCFG_DEVICE_ADD(MOS8566_TAG, MOS8566, VIC6569_CLOCK) + MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, XTAL_16MHz, vdc_intf, vdc_videoram_map) + MCFG_DEVICE_ADD(MOS8566_TAG, MOS8566, XTAL_17_734472MHz*2/4.5) MCFG_MOS6566_CPU(M8502_TAG) MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w)) MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w)) @@ -1633,7 +1633,7 @@ static MACHINE_CONFIG_START( pal, c128_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_17_734472MHz*2/4.5/8) MCFG_MOS6581_POTX_CALLBACK(READ8(c128_state, sid_potx_r)) MCFG_MOS6581_POTY_CALLBACK(READ8(c128_state, sid_poty_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) @@ -1641,14 +1641,14 @@ static MACHINE_CONFIG_START( pal, c128_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_DEVICE_ADD(MOS8722_TAG, MOS8722, VIC6569_CLOCK) + MCFG_DEVICE_ADD(MOS8722_TAG, MOS8722, XTAL_17_734472MHz*2/4.5/8) MCFG_MOS8722_Z80EN_CALLBACK(WRITELINE(c128_state, mmu_z80en_w)) MCFG_MOS8722_FSDIR_CALLBACK(WRITELINE(c128_state, mmu_fsdir_w)) MCFG_MOS8722_GAME_CALLBACK(READLINE(c128_state, mmu_game_r)) MCFG_MOS8722_EXROM_CALLBACK(READLINE(c128_state, mmu_exrom_r)) MCFG_MOS8722_SENSE40_CALLBACK(READLINE(c128_state, mmu_sense40_r)) MCFG_MOS8721_ADD(MOS8721_TAG) - MCFG_DEVICE_ADD(MOS6526_1_TAG, MOS6526, VIC6569_CLOCK) + MCFG_DEVICE_ADD(MOS6526_1_TAG, MOS6526, XTAL_17_734472MHz*2/4.5/8) MCFG_MOS6526_TOD(50) MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c128_state, cia1_irq_w)) MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c128_state, cia1_cnt_w)) @@ -1656,7 +1656,7 @@ static MACHINE_CONFIG_START( pal, c128_state ) MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c128_state, cia1_pa_r)) MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c128_state, cia1_pb_r)) MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pb_w)) - MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, VIC6569_CLOCK) + MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_17_734472MHz*2/4.5/8) MCFG_MOS6526_TOD(50) MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(c128_state, cia2_irq_w)) MCFG_MOS6526_CNT_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_6)) @@ -1670,7 +1670,7 @@ static MACHINE_CONFIG_START( pal, c128_state ) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL) MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS8566_TAG, mos8566_device, lp_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy") - MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL) + MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, XTAL_17_734472MHz*2/4.5/8, c64_expansion_cards, NULL) MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(c128_state, exp_irq_w), WRITELINE(c128_state, exp_nmi_w), WRITELINE(c128_state, exp_reset_w)) MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(READ8(c128_state, exp_dma_cd_r), WRITE8(c128_state, exp_dma_cd_w), WRITELINE(c128_state, exp_dma_w))