From 125e286bdaa0544c50a13126aedfc46acbcf7143 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Wed, 2 Apr 2008 08:27:45 +0000 Subject: [PATCH] From Dirk Best: Astrocade update: - Update src/mame/includes/astrocde.h to use an XTAL value - Clear interrupts if they are no longer valid - Add the knob inputs --- src/mame/includes/astrocde.h | 2 +- src/mame/video/astrocde.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h index df6ade4faf3..1f168bc3330 100644 --- a/src/mame/includes/astrocde.h +++ b/src/mame/includes/astrocde.h @@ -6,7 +6,7 @@ #include "sound/custom.h" -#define ASTROCADE_CLOCK (14318180/2) +#define ASTROCADE_CLOCK (XTAL_14_31818MHz/2) #define AC_SOUND_PRESENT (0x01) #define AC_LIGHTPEN_INTS (0x02) diff --git a/src/mame/video/astrocde.c b/src/mame/video/astrocde.c index 348ff733b5d..ef2e67502cc 100644 --- a/src/mame/video/astrocde.c +++ b/src/mame/video/astrocde.c @@ -439,7 +439,10 @@ static void astrocade_trigger_lightpen(running_machine *machine, UINT8 vfeedback { /* bit 0 controls the interrupt mode: mode 0 means assert until acknowledged */ if ((interrupt_enable & 0x01) == 0) + { cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, interrupt_vector & 0xf0); + timer_set(video_screen_get_time_until_vblank_end(machine->primary_screen), NULL, 0, interrupt_off); + } /* mode 1 means assert for 1 instruction */ else @@ -476,7 +479,10 @@ static TIMER_CALLBACK( scanline_callback ) { /* bit 2 controls the interrupt mode: mode 0 means assert until acknowledged */ if ((interrupt_enable & 0x04) == 0) + { cpunum_set_input_line_and_vector(machine, 0, 0, HOLD_LINE, interrupt_vector); + timer_set(video_screen_get_time_until_vblank_end(machine->primary_screen), NULL, 0, interrupt_off); + } /* mode 1 means assert for 1 instruction */ else @@ -556,6 +562,22 @@ READ8_HANDLER( astrocade_data_chip_register_r ) case 0x17: /* keypad column 3 */ result = readinputportbytag_safe("KEYPAD3", 0xff); break; + + case 0x1c: /* player 1 knob */ + result = readinputportbytag_safe("P1_KNOB", 0xff); + break; + + case 0x1d: /* player 2 knob */ + result = readinputportbytag_safe("P2_KNOB", 0xff); + break; + + case 0x1e: /* player 3 knob */ + result = readinputportbytag_safe("P3_KNOB", 0xff); + break; + + case 0x1f: /* player 4 knob */ + result = readinputportbytag_safe("P4_KNOB", 0xff); + break; } return result;