撤销 减少timer gc

This commit is contained in:
sin365 2025-03-04 14:53:10 +08:00
parent 025dc5d413
commit b97f2fdd6e
7 changed files with 79 additions and 55 deletions

View File

@ -26,7 +26,6 @@ namespace MAME.Core
public Atime start; public Atime start;
public Atime expire; public Atime expire;
} }
public static emu_timer TempTimerData;
public class emu_timer2 public class emu_timer2
{ {
public int index; public int index;
@ -464,16 +463,17 @@ namespace MAME.Core
public static void timer_pulse_internal(Atime period, TIME_ACT action) 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);
timer_alloc_common(ref EmuTimer.TempTimerData, action, false); emu_timer timer = null;
timer_adjust_periodic(EmuTimer.TempTimerData, period, period); timer_alloc_common(ref timer, action, false);
timer_adjust_periodic(timer, period, period);
} }
public static void timer_set_internal(TIME_ACT action) 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);
timer_alloc_common(ref EmuTimer.TempTimerData, action, true); emu_timer timer = null;
timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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) public static void timer_list_insert(emu_timer timer1)
{ {
int i; int i;
@ -615,7 +615,7 @@ namespace MAME.Core
} }
} }
} }
public static emu_timer timer_alloc_common(ref emu_timer timer, 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(); Atime time = get_current_time();
if (timer == null) if (timer == null)

View File

@ -815,8 +815,9 @@ namespace MAME.Core
{ {
Cpuint.cpunum_set_input_line(1, (int)LineState.INPUT_LINE_NMI, LineState.CLEAR_LINE); 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.Konami68000_nmi_callback, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)50e12), Attotime.ATTOTIME_NEVER); 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() public static ushort punkshot_kludge_r()
{ {

View File

@ -46,17 +46,19 @@
{ {
Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time()));
setvector_param = 1; setvector_param = 1;
EmuTimer.emu_timer timer = null;
//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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true);
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER);
} }
else else
{ {
Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time()));
setvector_param = 2; setvector_param = 2;
EmuTimer.emu_timer timer = null;
//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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true);
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER);
} }
} }
public static void m72_sound_command_w(int offset, ushort data) public static void m72_sound_command_w(int offset, ushort data)
@ -67,8 +69,9 @@
Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time()));
setvector_param = 3; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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_command_byte_w(int offset, byte data) public static void m72_sound_command_byte_w(int offset, byte data)
@ -77,16 +80,18 @@
Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time()));
setvector_param = 3; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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) public static void m72_sound_irq_ack_w(int offset, byte data)
{ {
Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time()));
setvector_param = 4; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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) public static void m72_set_sample_start(int start)
{ {

View File

@ -515,8 +515,9 @@ namespace MAME.Core
Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(3, EmuTimer.get_current_time()));
setvector_param = 3; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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)); Sound.soundlatch_w((ushort)(data & 0xff));
} }
public static ushort m92_sound_status_r() public static ushort m92_sound_status_r()
@ -532,8 +533,9 @@ namespace MAME.Core
Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(4, EmuTimer.get_current_time()));
setvector_param = 4; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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) public static void m92_sound_status_w(ushort data)
{ {
@ -547,16 +549,18 @@ namespace MAME.Core
Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(1, EmuTimer.get_current_time()));
setvector_param = 1; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); EmuTimer.timer_alloc_common(ref timer, EmuTimer.TIME_ACT.setvector, true);
EmuTimer.timer_adjust_periodic(timer, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER);
} }
else else
{ {
Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time())); Cpuint.lvec.Add(new vec(2, EmuTimer.get_current_time()));
setvector_param = 2; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.setvector, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.ATTOTIME_ZERO, Attotime.ATTOTIME_NEVER); 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_sprite_interrupt() public static void m92_sprite_interrupt()

View File

@ -46,8 +46,9 @@ namespace MAME.Core
Generic.buffer_spriteram16_w(); Generic.buffer_spriteram16_w();
m92_sprite_buffer_busy = 0; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); 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);
} }
} }
public static void m92_spritecontrol_w2(int offset, byte data) public static void m92_spritecontrol_w2(int offset, byte data)
@ -69,8 +70,9 @@ namespace MAME.Core
Generic.buffer_spriteram16_w(); Generic.buffer_spriteram16_w();
m92_sprite_buffer_busy = 0; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); 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);
} }
} }
public static void m92_spritecontrol_w(int offset, ushort data) public static void m92_spritecontrol_w(int offset, ushort data)
@ -92,8 +94,9 @@ namespace MAME.Core
Generic.buffer_spriteram16_w(); Generic.buffer_spriteram16_w();
m92_sprite_buffer_busy = 0; 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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.M92_spritebuffer_callback, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, Attotime.attotime_mul(new Atime(0, (long)(1e18 / 26666000)), 0x400), Attotime.ATTOTIME_NEVER); 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);
} }
} }
public static void m92_videocontrol_w(byte data) public static void m92_videocontrol_w(byte data)

View File

@ -982,8 +982,9 @@ namespace MAME.Core
{ {
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.timer_alloc_common(ref EmuTimer.TempTimerData, EmuTimer.TIME_ACT.Taito_opwolf_timer_callback, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(80000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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]; cchip_last_7a = cchip_ram[0x7a];
if (cchip_ram[0x7f] == 0xa) if (cchip_ram[0x7f] == 0xa)

View File

@ -187,8 +187,9 @@ namespace MAME.Core
public static void rastansaga2_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_rsaga2_interrupt2, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE);
} }
public static void crimec_interrupt3() public static void crimec_interrupt3()
@ -198,8 +199,9 @@ namespace MAME.Core
public static void crimec_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_crimec_interrupt3, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 5, LineState.HOLD_LINE);
} }
public static void hitice_interrupt6() public static void hitice_interrupt6()
@ -209,8 +211,9 @@ namespace MAME.Core
public static void hitice_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_hitice_interrupt6, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE);
} }
public static void rambo3_interrupt1() public static void rambo3_interrupt1()
@ -220,8 +223,9 @@ namespace MAME.Core
public static void rambo3_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_rambo3_interrupt1, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE);
} }
public static void pbobble_interrupt5() public static void pbobble_interrupt5()
@ -231,8 +235,9 @@ namespace MAME.Core
public static void pbobble_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_pbobble_interrupt5, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 3, LineState.HOLD_LINE);
} }
public static void viofight_interrupt1() public static void viofight_interrupt1()
@ -242,8 +247,9 @@ namespace MAME.Core
public static void viofight_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_viofight_interrupt1, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE);
} }
public static void masterw_interrupt4() public static void masterw_interrupt4()
@ -253,8 +259,9 @@ namespace MAME.Core
public static void masterw_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_masterw_interrupt4, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 5, LineState.HOLD_LINE);
} }
public static void silentd_interrupt4() public static void silentd_interrupt4()
@ -264,8 +271,9 @@ namespace MAME.Core
public static void silentd_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_silentd_interrupt4, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE);
} }
public static void selfeena_interrupt4() public static void selfeena_interrupt4()
@ -275,8 +283,9 @@ namespace MAME.Core
public static void selfeena_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_selfeena_interrupt4, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(5000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 6, LineState.HOLD_LINE);
} }
public static void sbm_interrupt5() public static void sbm_interrupt5()
@ -286,8 +295,9 @@ namespace MAME.Core
public static void sbm_interrupt() 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.timer_alloc_common(ref EmuTimer.TempTimerData, TIME_ACT.Taitob_sbm_interrupt5, true); EmuTimer.emu_timer timer = null;
EmuTimer.timer_adjust_periodic(EmuTimer.TempTimerData, new Atime(0, (long)(10000 * Cpuexec.cpu[0].attoseconds_per_cycle)), Attotime.ATTOTIME_NEVER); 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); Cpuint.cpunum_set_input_line(0, 4, LineState.HOLD_LINE);
} }
public static void mb87078_gain_changed(int channel, int percent) public static void mb87078_gain_changed(int channel, int percent)