Hooked up irq line handlers, and removed an hack for Hexion, nw

This commit is contained in:
Angelo Salese 2011-05-15 19:28:10 +00:00
parent f882605d74
commit e82c21b8e2
10 changed files with 70 additions and 20 deletions

View File

@ -328,7 +328,11 @@ static const k053936_interface dbz_k053936_intf =
static const k053252_interface dbz_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_START( dbz )

View File

@ -102,15 +102,14 @@ static WRITE8_HANDLER( coincntr_w )
if ((data & 0xdc) != 0x10) popmessage("coincntr %02x",data);
}
/* probably not? */
static WRITE8_HANDLER( hexion_irq_ack_w )
static WRITE_LINE_DEVICE_HANDLER( hexion_irq_ack_w )
{
cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE);
cputag_set_input_line(device->machine(), "maincpu", 0, CLEAR_LINE);
}
static WRITE8_HANDLER( hexion_nmi_ack_w )
static WRITE_LINE_DEVICE_HANDLER( hexion_nmi_ack_w )
{
cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
cputag_set_input_line(device->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
}
static ADDRESS_MAP_START( hexion_map, AS_PROGRAM, 8 )
@ -123,9 +122,7 @@ static ADDRESS_MAP_START( hexion_map, AS_PROGRAM, 8 )
AM_RANGE(0xe880, 0xe889) AM_DEVWRITE("konami", k051649_frequency_w)
AM_RANGE(0xe88a, 0xe88e) AM_DEVWRITE("konami", k051649_volume_w)
AM_RANGE(0xe88f, 0xe88f) AM_DEVWRITE("konami", k051649_keyonoff_w)
AM_RANGE(0xf000, 0xf00d) AM_DEVREADWRITE("k053252",k053252_r,k053252_w) /* 053252? f00e = IRQ ack, f00f = NMI ack */
AM_RANGE(0xf00e, 0xf00e) AM_WRITE(hexion_irq_ack_w) // - TODO: move these two into the above hook-up
AM_RANGE(0xf00f, 0xf00f) AM_WRITE(hexion_nmi_ack_w) // /
AM_RANGE(0xf000, 0xf00f) AM_DEVREADWRITE("k053252",k053252_r,k053252_w)
AM_RANGE(0xf200, 0xf200) AM_DEVWRITE_MODERN("oki", okim6295_device, write)
AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1")
AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2")
@ -231,7 +228,11 @@ static TIMER_DEVICE_CALLBACK( hexion_scanline )
static const k053252_interface hexion_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_LINE(hexion_irq_ack_w),
DEVCB_LINE(hexion_nmi_ack_w)
};
static MACHINE_CONFIG_START( hexion, hexion_state )

View File

@ -345,9 +345,13 @@ static const k053250_interface overdriv_k053250_intf_2 =
0, 0 //TODO
};
static const k053250_interface overdriv_k053252_intf =
static const k053252_interface overdriv_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};

View File

@ -613,7 +613,11 @@ static const k056832_interface qdrmfgp2_k056832_intf =
static const k053252_interface qdrmfgp_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_START( qdrmfgp )

View File

@ -236,7 +236,11 @@ static const k051316_interface rollerg_k051316_intf =
static const k053252_interface rollerg_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_START( rollerg )

View File

@ -360,7 +360,11 @@ static const k053247_interface rng_k055673_intf =
static const k053252_interface rng_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_START( rng )

View File

@ -454,7 +454,11 @@ static const k053247_interface esckids_k053246_intf =
static const k053252_interface esckids_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static MACHINE_START( vendetta )

View File

@ -456,7 +456,11 @@ static const k053247_interface xexex_k053246_intf =
static const k053252_interface xexex_k053252_intf =
{
"screen"
"screen",
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL
};
static void xexex_postload(running_machine &machine)

View File

@ -9040,6 +9040,11 @@ struct _k053252_state
UINT8 vsw,hsw;
screen_device *screen;
devcb_resolved_write_line int1_en;
devcb_resolved_write_line int2_en;
devcb_resolved_write_line int1_ack;
devcb_resolved_write_line int2_ack;
//devcb_resolved_write8 int_time;
};
/*****************************************************************************
@ -9057,7 +9062,8 @@ INLINE k053252_state *k053252_get_safe_token( device_t *device )
INLINE const k053252_interface *k053252_get_interface( device_t *device )
{
assert(device != NULL);
assert((device->type() == K053252));
assert(device->type() == K053252);
return (const k053252_interface *) device->static_config();
}
@ -9087,8 +9093,8 @@ static void k053252_res_change( device_t *device )
//VC - VFP - VBP - (VSW+1)
attoseconds_t refresh = HZ_TO_ATTOSECONDS(device->clock()) * (k053252->hc) * k053252->vc;
printf("H %d %d %d %d\n",k053252->hc,k053252->hfp,k053252->hbp,k053252->hsw);
printf("V %d %d %d %d\n",k053252->vc,k053252->vfp,k053252->vbp,k053252->vsw);
//printf("H %d %d %d %d\n",k053252->hc,k053252->hfp,k053252->hbp,k053252->hsw);
//printf("V %d %d %d %d\n",k053252->vc,k053252->vfp,k053252->vbp,k053252->vsw);
visarea.min_x = 0;
visarea.min_y = 0;
@ -9132,6 +9138,8 @@ WRITE8_DEVICE_HANDLER( k053252_w )
logerror("%d (%04x) HBP set\n",k053252->hbp,k053252->hbp);
k053252_res_change(device);
break;
case 0x06: k053252->int1_en(data); break;
case 0x07: k053252->int2_en(data); break;
case 0x08:
case 0x09:
k053252->vc = (k053252->regs[9]&0xff);
@ -9155,6 +9163,9 @@ WRITE8_DEVICE_HANDLER( k053252_w )
logerror("%02x VSW / %02x HSW set\n",k053252->vsw,k053252->hsw);
k053252_res_change(device);
break;
//case 0x0d: k053252->int_time(data); break;
case 0x0e: k053252->int1_ack(1); break;
case 0x0f: k053252->int2_ack(1); break;
}
}
@ -9171,6 +9182,11 @@ static DEVICE_START( k053252 )
device->save_item(NAME(k053252->regs));
k053252->screen = device->machine().device<screen_device>(intf->screen);
k053252->int1_en.resolve(intf->int1_en, *device);
k053252->int2_en.resolve(intf->int2_en, *device);
k053252->int1_ack.resolve(intf->int1_ack, *device);
k053252->int2_ack.resolve(intf->int2_ack, *device);
//k053252->int_time.resolve(intf->int_time, *device);
}
static DEVICE_RESET( k053252 )

View File

@ -133,6 +133,11 @@ typedef struct _k053252_interface k053252_interface;
struct _k053252_interface
{
const char *screen;
devcb_write_line int1_en;
devcb_write_line int2_en;
devcb_write_line int1_ack;
devcb_write_line int2_ack;
// devcb_write8 int_time;
};
typedef struct _k001006_interface k001006_interface;