Fixed tubepb regression (it uses a different tag for 3rd CPU)

This commit is contained in:
Fabio Priuli 2009-05-09 09:13:48 +00:00
parent 5932d858db
commit ed033f2799
2 changed files with 9 additions and 4 deletions

View File

@ -270,6 +270,7 @@ ADDRESS_MAP_END
static TIMER_CALLBACK( tubep_scanline_callback ) static TIMER_CALLBACK( tubep_scanline_callback )
{ {
int scanline = param; int scanline = param;
static const char *const cputags[] = { "mcu", "nsc" };
curr_scanline = scanline;//for debugging curr_scanline = scanline;//for debugging
@ -297,14 +298,14 @@ static TIMER_CALLBACK( tubep_scanline_callback )
{ {
logerror("/nmi CPU#3\n"); logerror("/nmi CPU#3\n");
tubep_vblank_end(); /* switch buffered sprite RAM page */ tubep_vblank_end(); /* switch buffered sprite RAM page */
cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, ASSERT_LINE); cputag_set_input_line(machine, cputags[(cputag_get_cpu(machine, "nsc") != NULL) ? 1 : 0], INPUT_LINE_NMI, ASSERT_LINE);
} }
/* CPU #3 MS2010-A NMI */ /* CPU #3 MS2010-A NMI */
/* deactivates at the start of VBLANK signal which happens at the beginning of scanline number 240*/ /* deactivates at the start of VBLANK signal which happens at the beginning of scanline number 240*/
if (scanline == 240) if (scanline == 240)
{ {
logerror("CPU#3 nmi clear\n"); logerror("CPU#3 nmi clear\n");
cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, CLEAR_LINE); cputag_set_input_line(machine, cputags[(cputag_get_cpu(machine, "nsc") != NULL) ? 1 : 0], INPUT_LINE_NMI, CLEAR_LINE);
} }

View File

@ -454,7 +454,9 @@ WRITE8_HANDLER( tubep_background_c000_w )
static TIMER_CALLBACK( sprite_timer_callback ) static TIMER_CALLBACK( sprite_timer_callback )
{ {
cputag_set_input_line(machine, "nsc", 0, ASSERT_LINE); static const char *const cputags[] = { "mcu", "nsc" };
cputag_set_input_line(machine, cputags[(cputag_get_cpu(machine, "nsc") != NULL) ? 1 : 0], 0, ASSERT_LINE);
} }
@ -529,6 +531,8 @@ static void draw_sprite(running_machine *machine)
WRITE8_HANDLER( tubep_sprite_control_w ) WRITE8_HANDLER( tubep_sprite_control_w )
{ {
static const char *const cputags[] = { "mcu", "nsc" };
if (offset < 10) if (offset < 10)
{ {
/*graph_ctrl[offset] = data;*/ /*graph_ctrl[offset] = data;*/
@ -583,7 +587,7 @@ WRITE8_HANDLER( tubep_sprite_control_w )
/SINT line will be reasserted in XSize * YSize cycles (RH0 signal cycles) /SINT line will be reasserted in XSize * YSize cycles (RH0 signal cycles)
*/ */
/* 1.clear the /SINT interrupt line */ /* 1.clear the /SINT interrupt line */
cputag_set_input_line(space->machine, "nsc", 0, CLEAR_LINE); cputag_set_input_line(space->machine, cputags[(cputag_get_cpu(space->machine, "nsc") != NULL) ? 1 : 0], 0, CLEAR_LINE);
/* 2.assert /SINT again after this time */ /* 2.assert /SINT again after this time */
timer_set( space->machine, attotime_mul(ATTOTIME_IN_HZ(19968000/8), (XSize+1)*(YSize+1)), NULL, 0, sprite_timer_callback); timer_set( space->machine, attotime_mul(ATTOTIME_IN_HZ(19968000/8), (XSize+1)*(YSize+1)), NULL, 0, sprite_timer_callback);