避免emu_timer反复创建

This commit is contained in:
sin365 2025-03-03 14:08:26 +08:00
parent 63ad9ff456
commit 916e4c99ac
23 changed files with 224 additions and 102 deletions

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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":

View File

@ -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()

View File

@ -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)

View File

@ -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()
{

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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()
{
@ -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()
{

View File

@ -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];

View File

@ -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);
}

View File

@ -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++)
{

View File

@ -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();
}

View File

@ -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);

View File

@ -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;

View File

@ -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)
{

View File

@ -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);

View File

@ -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)

View File

@ -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)
{