From 916e4c99ac423648641ea1c3cb1179f9fb228c19 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Mon, 3 Mar 2025 14:08:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8Demu=5Ftimer=E5=8F=8D=E5=A4=8D?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Plugins/UMAME/cpu/m6800/M6800.cs | 12 ++-- .../Assets/Plugins/UMAME/emu/Cpuexec.cs | 21 ++++--- .../Assets/Plugins/UMAME/emu/EmuTimer.cs | 15 +++-- MAME.Unity/Assets/Plugins/UMAME/emu/Mame.cs | 3 +- MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs | 42 ++++++++----- .../Assets/Plugins/UMAME/emu/Watchdog.cs | 3 +- .../UMAME/mame/konami68000/Konami68000.cs | 4 +- .../Assets/Plugins/UMAME/mame/m72/Audio.cs | 20 +++++-- .../Assets/Plugins/UMAME/mame/m72/M72.cs | 3 +- .../Assets/Plugins/UMAME/mame/m92/M92.cs | 19 ++++-- .../Assets/Plugins/UMAME/mame/m92/Video.cs | 12 +++- .../Plugins/UMAME/mame/neogeo/Neogeo.cs | 9 ++- .../Assets/Plugins/UMAME/mame/neogeo/Video.cs | 8 ++- .../Assets/Plugins/UMAME/mame/taito/Opwolf.cs | 4 +- .../Plugins/UMAME/mame/taitob/Taitob.cs | 40 +++++++++---- .../Assets/Plugins/UMAME/sound/ICS2115.cs | 6 +- .../Assets/Plugins/UMAME/sound/MSM5205.cs | 6 +- .../Assets/Plugins/UMAME/sound/Sound.cs | 60 ++++++++++++------- .../Assets/Plugins/UMAME/sound/Upd7759.cs | 3 +- .../Assets/Plugins/UMAME/sound/YM2151.cs | 6 +- .../Assets/Plugins/UMAME/sound/YM2203.cs | 12 ++-- .../Assets/Plugins/UMAME/sound/YM2610.cs | 6 +- .../Assets/Plugins/UMAME/sound/YM3812.cs | 12 ++-- 23 files changed, 224 insertions(+), 102 deletions(-) diff --git a/MAME.Unity/Assets/Plugins/UMAME/cpu/m6800/M6800.cs b/MAME.Unity/Assets/Plugins/UMAME/cpu/m6800/M6800.cs index ed7c5c6..5a7b48b 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/cpu/m6800/M6800.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/cpu/m6800/M6800.cs @@ -246,8 +246,10 @@ namespace cpu.m6800 cycles = cycles_63701; clock = 1536000; irq_callback = null; - m6800_rx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_rx, false); - m6800_tx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_tx, false); + //m6800_rx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_rx, false); + //m6800_tx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_tx, false); + EmuTimer.timer_alloc_common(ref m6800_rx_timer, EmuTimer.TIME_ACT.M6800_action_rx, false); + EmuTimer.timer_alloc_common(ref m6800_tx_timer, EmuTimer.TIME_ACT.M6800_action_tx, false); } public override void Reset() { @@ -1345,8 +1347,10 @@ namespace cpu.m6800 }; clock = 1000000; irq_callback = Cpuint.cpu_3_irq_callback; - m6800_rx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_rx, false); - m6800_tx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_tx, false); + //m6800_rx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_rx, false); + //m6800_tx_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M6800_action_tx, false); + EmuTimer.timer_alloc_common(ref m6800_rx_timer, EmuTimer.TIME_ACT.M6800_action_rx, false); + EmuTimer.timer_alloc_common(ref m6800_tx_timer, EmuTimer.TIME_ACT.M6800_action_tx, false); } public override int ExecuteCycles(int cycles) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Cpuexec.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Cpuexec.cs index 9b278c8..261f5b8 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Cpuexec.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Cpuexec.cs @@ -2246,12 +2246,15 @@ namespace MAME.Core case "CPS-1(QSound)": case "CPS2": timedint_period = new Atime(0, (long)(1e18 / 250)); - timedint_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Generic_irq_1_0_line_hold, false); + //timedint_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Generic_irq_1_0_line_hold, false); + EmuTimer.timer_alloc_common(ref timedint_timer ,EmuTimer.TIME_ACT.Generic_irq_1_0_line_hold, false); EmuTimer.timer_adjust_periodic(timedint_timer, timedint_period, timedint_period); break; case "Neo Geo": - interleave_boost_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_null_callback, false); - interleave_boost_timer_end = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_end_interleave_boost, false); + //interleave_boost_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_null_callback, false); + EmuTimer.timer_alloc_common(ref interleave_boost_timer, EmuTimer.TIME_ACT.Cpuexec_null_callback, false); + //interleave_boost_timer_end = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_end_interleave_boost, false); + EmuTimer.timer_alloc_common(ref interleave_boost_timer_end, EmuTimer.TIME_ACT.Cpuexec_end_interleave_boost, false); break; case "CPS1": case "Namco System 1": @@ -2297,7 +2300,8 @@ namespace MAME.Core case "bublcave11": case "bublcave10": timeslice_period = new Atime(0, Video.screenstate.frame_period / 100); - timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + //timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + EmuTimer.timer_alloc_common(ref timeslice_timer, EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); EmuTimer.timer_adjust_periodic(timeslice_timer, timeslice_period, timeslice_period); break; case "opwolf": @@ -2307,14 +2311,16 @@ namespace MAME.Core case "opwolfb": case "opwolfp": timeslice_period = new Atime(0, Video.screenstate.frame_period / 10); - timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + //timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + EmuTimer.timer_alloc_common(ref timeslice_timer, EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); EmuTimer.timer_adjust_periodic(timeslice_timer, timeslice_period, timeslice_period); break; } break; case "Taito B": timeslice_period = new Atime(0, Video.screenstate.frame_period / 10); - timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + //timeslice_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); + EmuTimer.timer_alloc_common(ref timeslice_timer, EmuTimer.TIME_ACT.Cpuexec_cpu_timeslicecallback, false); EmuTimer.timer_adjust_periodic(timeslice_timer, timeslice_period, timeslice_period); break; case "Capcom": @@ -2340,7 +2346,8 @@ namespace MAME.Core case "sfan": case "sfp": timedint_period = new Atime(0, (long)(1e18 / 8000)); - timedint_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Generic_irq_2_0_line_hold, false); + //timedint_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Generic_irq_2_0_line_hold, false); + EmuTimer.timer_alloc_common(ref timedint_timer, EmuTimer.TIME_ACT.Generic_irq_2_0_line_hold, false); EmuTimer.timer_adjust_periodic(timedint_timer, timedint_period, timedint_period); break; } diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/EmuTimer.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/EmuTimer.cs index 5bfcf85..040f01d 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/EmuTimer.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/EmuTimer.cs @@ -462,12 +462,16 @@ namespace MAME.Core } public static void timer_pulse_internal(Atime period, TIME_ACT action) { - emu_timer timer = timer_alloc_common(action, false); + //emu_timer timer = timer_alloc_common(action, false); + emu_timer timer = null; + timer_alloc_common(ref timer, action, false); timer_adjust_periodic(timer, period, period); } public static void timer_set_internal(TIME_ACT action) { - emu_timer timer = timer_alloc_common(action, true); + //emu_timer timer = timer_alloc_common(action, true); + emu_timer timer = null; + timer_alloc_common(ref timer,action, true); timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } public static void timer_list_insert(emu_timer timer1) @@ -611,10 +615,13 @@ namespace MAME.Core } } } - public static emu_timer timer_alloc_common(TIME_ACT action, bool temp) + public static emu_timer timer_alloc_common(ref emu_timer timer,TIME_ACT action, bool temp) { Atime time = get_current_time(); - emu_timer timer = new emu_timer(); + if (timer == null) + timer = new emu_timer(); + + //emu_timer timer = new emu_timer(); timer.action = action; timer.enabled = false; timer.temporary = temp; diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Mame.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Mame.cs index 93f050b..9a4995b 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Mame.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Mame.cs @@ -170,7 +170,8 @@ namespace MAME.Core Palette.palette_init(); Generic.generic_machine_init(); EmuTimer.timer_init(); - soft_reset_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Mame_soft_reset, false); + //soft_reset_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Mame_soft_reset, false); + EmuTimer.timer_alloc_common(ref soft_reset_timer ,EmuTimer.TIME_ACT.Mame_soft_reset, false); Window.osd_init(); Inptport.input_port_init(); Cpuexec.cpuexec_init(); diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs index 9397fb7..664d1c0 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Video.cs @@ -705,14 +705,14 @@ namespace MAME.Core /** end **/ - - - - vblank_begin_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_vblank_begin_callback, false); + //vblank_begin_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_vblank_begin_callback, false); + EmuTimer.timer_alloc_common(ref vblank_begin_timer, EmuTimer.TIME_ACT.Video_vblank_begin_callback, false); EmuTimer.timer_adjust_periodic(vblank_begin_timer, video_screen_get_time_until_vblank_start(), Attotime.ATTOTIME_NEVER); - scanline0_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_scanline0_callback, false); + //scanline0_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_scanline0_callback, false); + EmuTimer.timer_alloc_common(ref scanline0_timer, EmuTimer.TIME_ACT.Video_scanline0_callback, false); EmuTimer.timer_adjust_periodic(scanline0_timer, video_screen_get_time_until_pos(0, 0), Attotime.ATTOTIME_NEVER); - vblank_end_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_vblank_end_callback, false); + //vblank_end_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Video_vblank_end_callback, false); + EmuTimer.timer_alloc_common(ref vblank_end_timer, EmuTimer.TIME_ACT.Video_vblank_end_callback, false); switch (Machine.sBoard) { case "CPS-1": @@ -723,19 +723,23 @@ namespace MAME.Core break; case "CPS2": Cpuexec.cpu[0].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 262); - Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[0].partial_frame_timer ,EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; case "Tehkan": Cpuexec.cpu[1].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 2); - Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[1].partial_frame_timer ,EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; case "Neo Geo": break; case "SunA8": Cpuexec.cpu[0].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 0x100); - Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[0].partial_frame_timer ,EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); Cpuexec.cpu[1].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 4); - Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger2, false); + //Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger2, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[1].partial_frame_timer ,EmuTimer.TIME_ACT.Cpuexec_trigger2, false); break; case "IGS011": switch (Machine.sName) @@ -750,27 +754,31 @@ namespace MAME.Core case "drgnwrldv40k": case "lhb2": Cpuexec.cpu[0].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 5); - Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[0].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; case "lhb": case "lhbv33c": case "dbc": case "ryukobou": Cpuexec.cpu[0].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 4); - Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[0].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; } break; case "M72": Cpuexec.cpu[1].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 128); - Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[1].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; case "Taito": switch (Machine.sName) { case "bub68705": Cpuexec.cpu[3].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 2); - Cpuexec.cpu[3].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[3].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[3].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; } break; @@ -779,7 +787,8 @@ namespace MAME.Core { case "cuebrick": Cpuexec.cpu[0].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 10); - Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[0].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[0].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; } break; @@ -798,7 +807,8 @@ namespace MAME.Core case "makaimurg": case "diamond": Cpuexec.cpu[1].partial_frame_period = Attotime.attotime_div(Video.frame_update_time, 4); - Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + //Cpuexec.cpu[1].partial_frame_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); + EmuTimer.timer_alloc_common(ref Cpuexec.cpu[1].partial_frame_timer, EmuTimer.TIME_ACT.Cpuexec_trigger_partial_frame_interrupt, false); break; } break; diff --git a/MAME.Unity/Assets/Plugins/UMAME/emu/Watchdog.cs b/MAME.Unity/Assets/Plugins/UMAME/emu/Watchdog.cs index 1b49f61..b5a4af4 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/emu/Watchdog.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/emu/Watchdog.cs @@ -7,7 +7,8 @@ public static Atime watchdog_time; public static void watchdog_init() { - watchdog_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Watchdog_watchdog_callback, false); + //watchdog_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Watchdog_watchdog_callback, false); + EmuTimer.timer_alloc_common(ref watchdog_timer, EmuTimer.TIME_ACT.Watchdog_watchdog_callback, false); switch (Machine.sBoard) { case "CPS-1": diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs index 57c6596..434edcc 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/konami68000/Konami68000.cs @@ -814,7 +814,9 @@ namespace MAME.Core public static void sound_arm_nmi_w() { Cpuint.cpunum_set_input_line(1, (int)LineState.INPUT_LINE_NMI, LineState.CLEAR_LINE); - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Konami68000_nmi_callback, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Konami68000_nmi_callback, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.Konami68000_nmi_callback, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)50e12), Attotime.ATTOTIME_NEVER); } public static ushort punkshot_kludge_r() diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Audio.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Audio.cs index 2b1fa17..d7c54ec 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Audio.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/Audio.cs @@ -46,14 +46,18 @@ { Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time())); setvector_param = 1; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } else { Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time())); setvector_param = 2; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } } @@ -64,7 +68,9 @@ Sound.soundlatch_w(data); Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); setvector_param = 3; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } } @@ -73,14 +79,18 @@ Sound.soundlatch_w(data); Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); setvector_param = 3; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } public static void m72_sound_irq_ack_w(int offset, byte data) { Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time())); setvector_param = 4; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } public static void m72_set_sample_start(int start) diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs index 48509fc..3659faa 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m72/M72.cs @@ -297,7 +297,8 @@ namespace MAME.Core } public static void machine_start_m72() { - scanline_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M72_m72_scanline_interrupt, false); + //scanline_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M72_m72_scanline_interrupt, false); + EmuTimer.timer_alloc_common(ref scanline_timer, EmuTimer.TIME_ACT.M72_m72_scanline_interrupt, false); } public static void machine_reset_m72() { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs index be39015..a769078 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/M92.cs @@ -399,7 +399,8 @@ namespace MAME.Core { setvector_param = 0; setvector_callback(); - scanline_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_m92_scanline_interrupt, false); + //scanline_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_m92_scanline_interrupt, false); + EmuTimer.timer_alloc_common(ref scanline_timer, EmuTimer.TIME_ACT.M92_m92_scanline_interrupt, false); } public static void machine_reset_m92() { @@ -513,7 +514,9 @@ namespace MAME.Core { Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); setvector_param = 3; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); Sound.soundlatch_w((ushort)(data & 0xff)); } @@ -529,7 +532,9 @@ namespace MAME.Core { Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time())); setvector_param = 4; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } public static void m92_sound_status_w(ushort data) @@ -543,14 +548,18 @@ namespace MAME.Core { Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time())); setvector_param = 1; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } else { Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time())); setvector_param = 2; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.setvector, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); } } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Video.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Video.cs index 71543a2..cfe8003 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Video.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/m92/Video.cs @@ -45,7 +45,9 @@ namespace MAME.Core { Generic.buffer_spriteram16_w(); m92_sprite_buffer_busy = 0; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.timer_adjust_periodic(timer, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); } } @@ -67,7 +69,9 @@ namespace MAME.Core { Generic.buffer_spriteram16_w(); m92_sprite_buffer_busy = 0; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.timer_adjust_periodic(timer, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); } } @@ -89,7 +93,9 @@ namespace MAME.Core { Generic.buffer_spriteram16_w(); m92_sprite_buffer_busy = 0; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.timer_adjust_periodic(timer, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); } } diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs index a68c0ee..30bfc1a 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Neogeo.cs @@ -366,9 +366,12 @@ namespace MAME.Core audio_cpu_banks[1] = 0x0e; audio_cpu_banks[2] = 0x06; audio_cpu_banks[3] = 0x02; - display_position_interrupt_timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Neogeo_display_position_interrupt_callback, false); - display_position_vblank_timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Neogeo_display_position_vblank_callback, false); - vblank_interrupt_timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Neogeo_vblank_interrupt_callback, false); + //display_position_interrupt_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_display_position_interrupt_callback, false); + EmuTimer.timer_alloc_common(ref display_position_interrupt_timer ,EmuTimer.TIME_ACT.Neogeo_display_position_interrupt_callback, false); + //display_position_vblank_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_display_position_vblank_callback, false); + EmuTimer.timer_alloc_common(ref display_position_vblank_timer ,EmuTimer.TIME_ACT.Neogeo_display_position_vblank_callback, false); + //vblank_interrupt_timer = EmuTimer.timer_alloc_common( EmuTimer.TIME_ACT.Neogeo_vblank_interrupt_callback, false); + EmuTimer.timer_alloc_common(ref vblank_interrupt_timer, EmuTimer.TIME_ACT.Neogeo_vblank_interrupt_callback, false); Pd4900a.pd4990a_init(); calendar_init(); irq3_pending = 1; diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Video.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Video.cs index aee7fa0..9834221 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Video.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/neogeo/Video.cs @@ -130,7 +130,8 @@ namespace MAME.Core } private static void create_auto_animation_timer() { - auto_animation_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_auto_animation_timer_callback, false); + //auto_animation_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_auto_animation_timer_callback, false); + EmuTimer.timer_alloc_common(ref auto_animation_timer, EmuTimer.TIME_ACT.Neogeo_auto_animation_timer_callback, false); } private static void start_auto_animation_timer() { @@ -516,7 +517,7 @@ namespace MAME.Core } } } - + //private static void draw_sprites(int iBitmap, int scanline) //{ // int x_2, code_2; @@ -735,7 +736,8 @@ namespace MAME.Core } private static void create_sprite_line_timer() { - sprite_line_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_sprite_line_timer_callback, false); + //sprite_line_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Neogeo_sprite_line_timer_callback, false); + EmuTimer.timer_alloc_common(ref sprite_line_timer ,EmuTimer.TIME_ACT.Neogeo_sprite_line_timer_callback, false); } private static void start_sprite_line_timer() { diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs index 29c25c6..a942342 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taito/Opwolf.cs @@ -981,7 +981,9 @@ namespace MAME.Core if (cchip_ram[0x7a] == 0 && cchip_last_7a != 0 && current_cmd != 0xf5) { current_cmd = 0xf5; - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Taito_opwolf_timer_callback, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Taito_opwolf_timer_callback, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.Taito_opwolf_timer_callback, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(80000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); } cchip_last_7a = cchip_ram[0x7a]; diff --git a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs index 50587bb..f6abe31 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/mame/taitob/Taitob.cs @@ -186,7 +186,9 @@ namespace MAME.Core } public static void rastansaga2_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_rsaga2_interrupt2, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_rsaga2_interrupt2, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_rsaga2_interrupt2, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE); } @@ -196,7 +198,9 @@ namespace MAME.Core } public static void crimec_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_crimec_interrupt3, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_crimec_interrupt3, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_crimec_interrupt3, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 5, LineState.HOLD_LINE); } @@ -206,7 +210,9 @@ namespace MAME.Core } public static void hitice_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_hitice_interrupt6, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_hitice_interrupt6, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_hitice_interrupt6, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE); } @@ -216,7 +222,9 @@ namespace MAME.Core } public static void rambo3_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_rambo3_interrupt1, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_rambo3_interrupt1, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_rambo3_interrupt1, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE); } @@ -226,7 +234,9 @@ namespace MAME.Core } public static void pbobble_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_pbobble_interrupt5, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_pbobble_interrupt5, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_pbobble_interrupt5, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 3, LineState.HOLD_LINE); } @@ -236,7 +246,9 @@ namespace MAME.Core } public static void viofight_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_viofight_interrupt1, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_viofight_interrupt1, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_viofight_interrupt1, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE); } @@ -246,7 +258,9 @@ namespace MAME.Core } public static void masterw_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_masterw_interrupt4, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_masterw_interrupt4, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_masterw_interrupt4, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 5, LineState.HOLD_LINE); } @@ -256,7 +270,9 @@ namespace MAME.Core } public static void silentd_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_silentd_interrupt4, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_silentd_interrupt4, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_silentd_interrupt4, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE); } @@ -266,7 +282,9 @@ namespace MAME.Core } public static void selfeena_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_selfeena_interrupt4, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_selfeena_interrupt4, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_selfeena_interrupt4, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE); } @@ -276,7 +294,9 @@ namespace MAME.Core } public static void sbm_interrupt() { - EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_sbm_interrupt5, true); + //EmuTimer.emu_timer timer = EmuTimer.timer_alloc_common(TIME_ACT.Taitob_sbm_interrupt5, true); + EmuTimer.emu_timer timer = null; + EmuTimer.timer_alloc_common(ref timer, TIME_ACT.Taitob_sbm_interrupt5, true); EmuTimer.timer_adjust_periodic(timer, new Atime(0, (long)(10000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE); } diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/ICS2115.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/ICS2115.cs index 14bef48..7a600f3 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/ICS2115.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/ICS2115.cs @@ -334,8 +334,10 @@ namespace MAME.Core int i; voice2 = new voice_struct[32]; timer = new timer_struct[2]; - timer[0].timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.ICS2115_timer_cb_0, false); - timer[1].timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.ICS2115_timer_cb_1, false); + //timer[0].timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.ICS2115_timer_cb_0, false); + //timer[1].timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.ICS2115_timer_cb_1, false); + EmuTimer.timer_alloc_common(ref timer[0].timer,EmuTimer.TIME_ACT.ICS2115_timer_cb_0, false); + EmuTimer.timer_alloc_common(ref timer[1].timer,EmuTimer.TIME_ACT.ICS2115_timer_cb_1, false); ulaw = new short[256]; for (i = 0; i < 256; i++) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/MSM5205.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/MSM5205.cs index 5d94b31..7187b40 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/MSM5205.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/MSM5205.cs @@ -177,11 +177,13 @@ namespace MAME.Core mm1[sndindex].voice.stream = new sound_stream(clock, 0, 1, mm1[sndindex].MSM5205_update); if (sndindex == 0) { - timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback0, false); + //timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback0, false); + EmuTimer.timer_alloc_common(ref timer[0], EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback0, false); } else if (sndindex == 1) { - timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback1, false); + //timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback1, false); + EmuTimer.timer_alloc_common(ref timer[1], EmuTimer.TIME_ACT.MSM5205_MSM5205_vclk_callback1, false); } mm1[sndindex].msm5205_reset(); } diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/Sound.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/Sound.cs index 39f114d..682911c 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/Sound.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/Sound.cs @@ -74,7 +74,8 @@ namespace MAME.Core latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateC; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2151.ym2151_init(3579545); OKI6295.okim6295_start(); ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one); @@ -84,7 +85,8 @@ namespace MAME.Core case "CPS-1(QSound)": case "CPS2": sound_update = sound_updateQ; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); QSound.qsound_start(); qsoundstream = new sound_stream(4000000 / 166, 0, 2, QSound.qsound_update); mixerstream = new sound_stream(48000, 2, 0, null); @@ -93,7 +95,8 @@ namespace MAME.Core latched_value = new ushort[1]; utempdata = new ushort[1]; sound_update = sound_updateDataeast_pcktgal; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2203.ym2203_start(0, 1500000); YM3812.ym3812_start(3000000); MSM5205.msm5205_start(0, 384000, Dataeast.pcktgal_adpcm_int, 5); @@ -104,7 +107,8 @@ namespace MAME.Core latched_value = new ushort[1]; utempdata = new ushort[1]; sound_update = sound_updateTehkan_pbaction; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); AY8910.ay8910_interface generic_ay8910 = new AY8910.ay8910_interface(); generic_ay8910.flags = 1; generic_ay8910.res_load = new int[3] { 1000, 1000, 1000 }; @@ -121,7 +125,8 @@ namespace MAME.Core latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateN; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer ,EmuTimer.TIME_ACT.Sound_sound_update, false); YM2610.ym2610_start(8000000); ym2610stream = new sound_stream(111111, 0, 2, YM2610.F2610.ym2610_update_one); mixerstream = new sound_stream(48000, 3, 0, null); @@ -130,7 +135,8 @@ namespace MAME.Core latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateSunA8; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM3812.ym3812_start(4000000); AY8910.ay8910_interface starfigh_ay8910_interface = new AY8910.ay8910_interface(); starfigh_ay8910_interface.flags = 1; @@ -147,7 +153,8 @@ namespace MAME.Core break; case "Namco System 1": sound_update = sound_updateNa; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2151.ym2151_init(3579580); Namco.namco_start(); DAC.dac_start(); @@ -168,7 +175,8 @@ namespace MAME.Core case "drgnwrldv11h": case "drgnwrldv40k": sound_update = sound_updateIGS011_drgnwrld; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); OKI6295.okim6295_start(); YM3812.ym3812_start(3579545); okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update); @@ -182,7 +190,8 @@ namespace MAME.Core case "xymg": case "wlcc": sound_update = sound_updateIGS011_lhb; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); OKI6295.okim6295_start(); okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update); mixerstream = new sound_stream(48000, 1, 0, null); @@ -190,7 +199,8 @@ namespace MAME.Core case "lhb2": case "nkishusp": sound_update = sound_updateIGS011_lhb2; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); OKI6295.okim6295_start(); YM2413.ym2413_start(3579545); okistream = new sound_stream(1047600 / 132, 0, 1, OKI6295.okim6295_update); @@ -200,7 +210,8 @@ namespace MAME.Core case "vbowl": case "vbowlj": sound_update = sound_updateIGS011_vbowl; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); ICS2115.ics2115_start(); ics2115stream = new sound_stream(33075, 0, 2, ICS2115.ics2115_update); mixerstream = new sound_stream(48000, 2, 0, null); @@ -211,7 +222,8 @@ namespace MAME.Core latched_value = new ushort[3]; utempdata = new ushort[3]; sound_update = sound_updatePGM; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); ICS2115.ics2115_start(); ics2115stream = new sound_stream(33075, 0, 2, ICS2115.ics2115_update); mixerstream = new sound_stream(48000, 2, 0, null); @@ -220,7 +232,8 @@ namespace MAME.Core latched_value = new ushort[1]; utempdata = new ushort[1]; sound_update = sound_updateM72; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2151.ym2151_init(3579545); DAC.dac_start(); ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one); @@ -231,7 +244,8 @@ namespace MAME.Core latched_value = new ushort[1]; utempdata = new ushort[1]; sound_update = sound_updateM92; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2151.ym2151_init(3579545); Iremga20.iremga20_start(); ym2151stream = new sound_stream(55930, 0, 2, YM2151.ym2151_update_one); @@ -248,7 +262,8 @@ namespace MAME.Core latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateTaito_tokio; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2203.ym2203_start(0, 3000000); mixerstream = new sound_stream(48000, 4, 0, null); break; @@ -273,7 +288,8 @@ namespace MAME.Core latched_value = new ushort[2]; utempdata = new ushort[2]; sound_update = sound_updateTaito_bublbobl; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2203.ym2203_start(0, 3000000); YM3812.ym3526_start(3000000); ym3526stream = new sound_stream(41666, 0, 1, FMOpl.ym3526_update_one); @@ -288,7 +304,8 @@ namespace MAME.Core latched_value = new ushort[1]; utempdata = new ushort[1]; sound_update = sound_updateTaito_opwolf; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); YM2151.ym2151_init(4000000); ym2151stream = new sound_stream(62500, 0, 2, YM2151.ym2151_update_one); MSM5205.msm5205_start(0, 384000, Taito.opwolf_msm5205_vck, 5); @@ -315,7 +332,8 @@ namespace MAME.Core AY8910.AA8910[0].stream.gain = 0x100; ym2610stream.gain = 0x100; sound_update = sound_updateTaitoB; - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); mixerstream = new sound_stream(48000, 3, 0, null); break; case "Konami 68000": @@ -441,7 +459,8 @@ namespace MAME.Core mixerstream = new sound_stream(48000, 2, 0, null); break; } - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); break; case "Capcom": latched_value = new ushort[1]; @@ -480,7 +499,8 @@ namespace MAME.Core mixerstream = new sound_stream(48000, 4, 0, null); break; } - sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + //sound_update_timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Sound_sound_update, false); + EmuTimer.timer_alloc_common(ref sound_update_timer, EmuTimer.TIME_ACT.Sound_sound_update, false); break; } EmuTimer.timer_adjust_periodic(sound_update_timer, update_frequency, update_frequency); diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/Upd7759.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/Upd7759.cs index 153ecb0..4fcb8c2 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/Upd7759.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/Upd7759.cs @@ -303,7 +303,8 @@ namespace MAME.Core chip.rombase = 0; if (updrom == null) { - chip.timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Upd7759_upd7759_slave_update, false); + //chip.timer = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.Upd7759_upd7759_slave_update, false); + EmuTimer.timer_alloc_common(ref chip.timer, EmuTimer.TIME_ACT.Upd7759_upd7759_slave_update, false); } chip.reset = 1; chip.start = 1; diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2151.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2151.cs index ad395a8..8c139ee 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2151.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2151.cs @@ -934,8 +934,10 @@ namespace MAME.Core PSG.eg_timer_add = (uint)(0x10000 * (clock / 64.0) / PSG.sampfreq); PSG.eg_timer_overflow = 0x30000; /* this must be done _before_ a call to ym2151_reset_chip() */ - PSG.timer_A = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2151_timer_callback_a, false); - PSG.timer_B = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2151_timer_callback_b, false); + //PSG.timer_A = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2151_timer_callback_a, false); + //PSG.timer_B = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2151_timer_callback_b, false); + EmuTimer.timer_alloc_common(ref PSG.timer_A ,EmuTimer.TIME_ACT.YM2151_timer_callback_a, false); + EmuTimer.timer_alloc_common(ref PSG.timer_B ,EmuTimer.TIME_ACT.YM2151_timer_callback_b, false); ym2151_reset_chip(); switch (Machine.sBoard) { diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2203.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2203.cs index 7b1478b..f3ea534 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2203.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2203.cs @@ -143,13 +143,17 @@ namespace MAME.Core FF2203[sndindex].timer = new EmuTimer.emu_timer[2]; if (sndindex == 0) { - FF2203[sndindex].timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_0, false); - FF2203[sndindex].timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_1, false); + //FF2203[sndindex].timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_0, false); + //FF2203[sndindex].timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_1, false); + EmuTimer.timer_alloc_common(ref FF2203[sndindex].timer[0],EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_0, false); + EmuTimer.timer_alloc_common(ref FF2203[sndindex].timer[1],EmuTimer.TIME_ACT.YM2203_timer_callback_2203_0_1, false); } else if (sndindex == 1) { - FF2203[sndindex].timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_0, false); - FF2203[sndindex].timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_1, false); + //FF2203[sndindex].timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_0, false); + //FF2203[sndindex].timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_1, false); + EmuTimer.timer_alloc_common(ref FF2203[sndindex].timer[0] ,EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_0, false); + EmuTimer.timer_alloc_common(ref FF2203[sndindex].timer[1] ,EmuTimer.TIME_ACT.YM2203_timer_callback_2203_1_1, false); } FF2203[sndindex].stream = new sound_stream(rate, 0, 1, FF2203[sndindex].ym2203_update_one); ym2203_init(sndindex, clock, rate); diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2610.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2610.cs index 607f7e5..8bbc869 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/YM2610.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/YM2610.cs @@ -100,8 +100,10 @@ namespace MAME.Core int rate = clock / 72; AY8910.ay8910_start_ym(17, 0, clock, generic_ay8910); timer = new EmuTimer.emu_timer[2]; - timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_0, false); - timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_1, false); + //timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_0, false); + //timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_1, false); + EmuTimer.timer_alloc_common(ref timer[0], EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_0, false); + EmuTimer.timer_alloc_common(ref timer[1], EmuTimer.TIME_ACT.YM2610_F2610_timer_callback_1, false); ym2610_init(clock, rate); } public static void ym2610_init(int clock, int rate) diff --git a/MAME.Unity/Assets/Plugins/UMAME/sound/YM3812.cs b/MAME.Unity/Assets/Plugins/UMAME/sound/YM3812.cs index 8611b4d..d5eaffb 100644 --- a/MAME.Unity/Assets/Plugins/UMAME/sound/YM3812.cs +++ b/MAME.Unity/Assets/Plugins/UMAME/sound/YM3812.cs @@ -74,8 +74,10 @@ namespace MAME.Core FMOpl.ym3812_set_timer_handler(TimerHandler_3812); FMOpl.ym3812_set_irq_handler(IRQHandler_3812); FMOpl.ym3812_set_update_handler(_stream_update_3812); - timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3812_0, false); - timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3812_1, false); + //timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3812_0, false); + //timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3812_1, false); + EmuTimer.timer_alloc_common(ref timer[0], EmuTimer.TIME_ACT.YM3812_timer_callback_3812_0, false); + EmuTimer.timer_alloc_common(ref timer[1], EmuTimer.TIME_ACT.YM3812_timer_callback_3812_1, false); } public static void ym3812_control_port_0_w(byte data) { @@ -233,8 +235,10 @@ namespace MAME.Core FMOpl.ym3526_set_timer_handler(TimerHandler_3526); FMOpl.ym3526_set_irq_handler(IRQHandler_3526); FMOpl.ym3526_set_update_handler(_stream_update_3526); - timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3526_0, false); - timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3526_1, false); + //timer[0] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3526_0, false); + //timer[1] = EmuTimer.timer_alloc_common(EmuTimer.TIME_ACT.YM3812_timer_callback_3526_1, false); + EmuTimer.timer_alloc_common(ref timer[0], EmuTimer.TIME_ACT.YM3812_timer_callback_3526_0, false); + EmuTimer.timer_alloc_common(ref timer[1], EmuTimer.TIME_ACT.YM3812_timer_callback_3526_1, false); } public static void ym3526_control_port_0_w(byte data) {