Cleaned up many driver data structs to obtain two results:

* drop almost completely the use of generic sizes with struct members 
* reduce as much as possible accesses to cputag calls during emulation (they are now mainly concentrated at MACHINE_START & DRIVER_INIT)

unfortunately I had been away for half a day and I have found only now rev 7446 (which could have been used in many of these cases). too late to use the new macro, sorry (almost 3AM here)
This commit is contained in:
Fabio Priuli 2009-11-29 01:49:13 +00:00
parent 796b597e06
commit 1a309ff78b
221 changed files with 1018 additions and 527 deletions

View File

@ -97,7 +97,7 @@ static ADDRESS_MAP_START( c1942_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w)
AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w)
AM_RANGE(0xc806, 0xc806) AM_WRITE(c1942_bankswitch_w)
AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_BASE_MEMBER(_1942_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_BASE_MEMBER(_1942_state, spriteram) AM_SIZE_MEMBER(_1942_state, spriteram_size)
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_BASE_MEMBER(_1942_state, fg_videoram)
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_BASE_MEMBER(_1942_state, bg_videoram)
AM_RANGE(0xe000, 0xefff) AM_RAM
@ -234,6 +234,16 @@ static GFXDECODE_START( 1942 )
GFXDECODE_END
static MACHINE_START( 1942 )
{
_1942_state *state = (_1942_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->palette_bank);
state_save_register_global_array(machine, state->scroll);
}
static MACHINE_RESET( 1942 )
{
_1942_state *state = (_1942_state *)machine->driver_data;
@ -256,6 +266,7 @@ static MACHINE_DRIVER_START( 1942 )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
MDRV_MACHINE_START(1942)
MDRV_MACHINE_RESET(1942)
/* video hardware */

View File

@ -70,7 +70,7 @@ static ADDRESS_MAP_START( c1943_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd888, 0xd888) AM_WRITENOP // ???
AM_RANGE(0xd8a8, 0xd8a8) AM_WRITENOP // ???
AM_RANGE(0xe000, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_MEMBER(_1943_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_MEMBER(_1943_state, spriteram) AM_SIZE_MEMBER(_1943_state, spriteram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )

View File

@ -63,12 +63,13 @@
static WRITE8_HANDLER( irqack_w )
{
_20pacgal_state *state = (_20pacgal_state *)space->machine->driver_data;
int bit = data & 1;
cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
cpu_interrupt_enable(state->maincpu, bit);
if (!bit)
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -262,6 +263,10 @@ INPUT_PORTS_END
static MACHINE_START( 20pacgal )
{
_20pacgal_state *state = (_20pacgal_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->eeprom = devtag_get_device(machine, "eeprom");
state_save_register_global(machine, state->game_selected);
}

View File

@ -68,11 +68,14 @@ struct __2mindril_state
UINT16 * charram;
UINT16 * textram;
UINT16 * unkram;
// UINT16 * paletteram16; // currently this uses generic palette handling
// UINT16 * paletteram; // currently this uses generic palette handling
UINT16 * iodata;
/* input-related */
UINT16 defender_sensor, shutter_sensor;
/* devices */
const device_config *maincpu;
};
@ -415,7 +418,8 @@ static INTERRUPT_GEN( drill_interrupt )
/* WRONG,it does something with 60000c & 700002,likely to be called when the player throws the ball.*/
static void irqhandler(const device_config *device, int irq)
{
// cputag_set_input_line(device->machine, "maincpu", 5, irq ? ASSERT_LINE : CLEAR_LINE);
// _2mindril_state *state = (_2mindril_state *)machine->driver_data;
// cpu_set_input_line(state->maincpu, 5, irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym2610_interface ym2610_config =
@ -428,6 +432,8 @@ static MACHINE_START( drill )
{
_2mindril_state *state = (_2mindril_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->defender_sensor);
state_save_register_global(machine, state->shutter_sensor);
}

View File

@ -73,7 +73,7 @@ static WRITE8_DEVICE_HANDLER( sound_control_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE_MEMBER(_4enraya_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xd000, 0xdfff) AM_WRITE(fenraya_videoram_w) AM_BASE_MEMBER(_4enraya_state, videoram) AM_SIZE_MEMBER(_4enraya_state, videoram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )

View File

@ -56,8 +56,9 @@ static READ8_HANDLER( triothep_control_r )
static WRITE8_HANDLER( actfancr_sound_w )
{
actfancr_state *state = (actfancr_state *)space->machine->driver_data;
soundlatch_w(space, 0, data & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
/******************************************************************************/
@ -264,7 +265,8 @@ GFXDECODE_END
static void sound_irq(const device_config *device, int linestate)
{
cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* IRQ */
actfancr_state *state = (actfancr_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0, linestate); /* IRQ */
}
static const ym3812_interface ym3812_config =
@ -277,6 +279,10 @@ static const ym3812_interface ym3812_config =
static MACHINE_START( triothep )
{
actfancr_state *state = (actfancr_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->trio_control_select);
}

View File

@ -158,6 +158,7 @@ struct _adp_state
UINT8 register_active;
/* devices */
const device_config *maincpu;
const device_config *duart;
};
@ -170,7 +171,8 @@ struct _adp_state
static void duart_irq_handler( const device_config *device, UINT8 vector )
{
cputag_set_input_line_and_vector(device->machine, "maincpu", 4, HOLD_LINE, vector);
adp_state *state = (adp_state *)device->machine->driver_data;
cpu_set_input_line_and_vector(state->maincpu, 4, HOLD_LINE, vector);
};
static void duart_tx( const device_config *device, int channel, UINT8 data )
@ -197,6 +199,7 @@ static MACHINE_START( skattv )
adp_state *state = (adp_state *)machine->driver_data;
microtouch_init(machine, microtouch_tx, 0);
state->maincpu = devtag_get_device(machine, "maincpu");
state->duart = devtag_get_device(machine, "duart68681");
state_save_register_global(machine, state->mux_data);

View File

@ -76,7 +76,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1800, 0x183f) AM_RAM AM_BASE_MEMBER(aeroboto_state, hscroll) // horizontal scroll regs
AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(aeroboto_tilecolor_w) AM_BASE_MEMBER(aeroboto_state, tilecolor) // tile color RAM
AM_RANGE(0x1840, 0x27ff) AM_WRITENOP // cleared during custom LSI test
AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(aeroboto_state, spriteram) AM_SIZE_GENERIC(spriteram) // sprite RAM
AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(aeroboto_state, spriteram) AM_SIZE_MEMBER(aeroboto_state, spriteram_size) // sprite RAM
AM_RANGE(0x2900, 0x2fff) AM_WRITENOP // cleared along with sprite RAM
AM_RANGE(0x2973, 0x2973) AM_READ(aeroboto_2973_r) // protection read
AM_RANGE(0x3000, 0x3000) AM_READWRITE(aeroboto_in0_r, aeroboto_3000_w)

View File

@ -70,8 +70,8 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xc080, 0xc09f) AM_BASE_MEMBER(ambush_state, scrollram)
AM_RANGE(0xc100, 0xc1ff) AM_BASE_MEMBER(ambush_state, colorram)
AM_RANGE(0xc200, 0xc3ff) AM_BASE_MEMBER(ambush_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc400, 0xc7ff) AM_BASE_MEMBER(ambush_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xc200, 0xc3ff) AM_BASE_MEMBER(ambush_state, spriteram) AM_SIZE_MEMBER(ambush_state, spriteram)
AM_RANGE(0xc400, 0xc7ff) AM_BASE_MEMBER(ambush_state, videoram) AM_SIZE_MEMBER(ambush_state, videoram)
AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW1")
AM_RANGE(0xcc00, 0xcc03) AM_WRITENOP
AM_RANGE(0xcc04, 0xcc04) AM_WRITE(flip_screen_w)

View File

@ -514,9 +514,10 @@ static READ8_HANDLER( angelkds_sub_sound_r )
}
static void irqhandler(const device_config *device, int irq)
static void irqhandler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "sub", 0, irq ? ASSERT_LINE : CLEAR_LINE);
angelkds_state *state = (angelkds_state *)device->machine->driver_data;
cpu_set_input_line(state->subcpu, 0, irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym2203_interface ym2203_config =
@ -578,6 +579,8 @@ static MACHINE_START( angelkds )
{
angelkds_state *state = (angelkds_state *)machine->driver_data;
state->subcpu = devtag_get_device(machine, "sub");
state_save_register_global(machine, state->layer_ctrl);
state_save_register_global(machine, state->txbank);
state_save_register_global(machine, state->bgbotbank);

View File

@ -93,9 +93,10 @@ static WRITE8_HANDLER( aquarium_snd_ack_w )
static WRITE16_HANDLER( aquarium_sound_w )
{
// popmessage("sound write %04x",data);
aquarium_state *state = (aquarium_state *)space->machine->driver_data;
soundlatch_w(space, 1, data & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE );
}
static WRITE8_HANDLER( aquarium_z80_bank_w )
@ -138,7 +139,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(aquarium_mid_videoram_w) AM_BASE_MEMBER(aquarium_state, mid_videoram)
AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(aquarium_bak_videoram_w) AM_BASE_MEMBER(aquarium_state, bak_videoram)
AM_RANGE(0xc02000, 0xc03fff) AM_RAM_WRITE(aquarium_txt_videoram_w) AM_BASE_MEMBER(aquarium_state, txt_videoram)
AM_RANGE(0xc80000, 0xc81fff) AM_RAM AM_BASE_MEMBER(aquarium_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc80000, 0xc81fff) AM_RAM AM_BASE_MEMBER(aquarium_state, spriteram) AM_SIZE_MEMBER(aquarium_state, spriteram_size)
AM_RANGE(0xd00000, 0xd00fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0xd80014, 0xd8001f) AM_WRITEONLY AM_BASE_MEMBER(aquarium_state, scroll)
AM_RANGE(0xd80068, 0xd80069) AM_WRITENOP /* probably not used */
@ -327,7 +328,8 @@ GFXDECODE_END
static void irq_handler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE);
aquarium_state *state = (aquarium_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0 , irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym2151_interface ym2151_config =
@ -339,6 +341,9 @@ static const ym2151_interface ym2151_config =
static MACHINE_START( aquarium )
{
aquarium_state *state = (aquarium_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->aquarium_snd_ack);
}

View File

@ -523,7 +523,7 @@ static ADDRESS_MAP_START( arkanoid_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w)
AM_RANGE(0xd018, 0xd018) AM_READWRITE(arkanoid_Z80_mcu_r, arkanoid_Z80_mcu_w) /* input from the 68705 */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE_MEMBER(arkanoid_state, videoram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE_MEMBER(arkanoid_state, spriteram_size)
AM_RANGE(0xe840, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */
ADDRESS_MAP_END
@ -538,7 +538,7 @@ static ADDRESS_MAP_START( bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_WRITE(watchdog_reset_w)
AM_RANGE(0xd018, 0xd018) AM_READ_PORT("MUX") AM_WRITENOP
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_BASE_MEMBER(arkanoid_state, videoram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(arkanoid_state, spriteram) AM_SIZE_MEMBER(arkanoid_state, spriteram_size)
AM_RANGE(0xe840, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */
ADDRESS_MAP_END
@ -801,6 +801,8 @@ static MACHINE_START( arkanoid )
{
arkanoid_state *state = (arkanoid_state *)machine->driver_data;
state->mcu = devtag_get_device(machine, "mcu");
state_save_register_global(machine, state->bootleg_cmd);
state_save_register_global(machine, state->paddle_select);

View File

@ -274,9 +274,10 @@ static GFXDECODE_START( ashnojoe )
GFXDECODE_END
static void ym2203_irq_handler(const device_config *device, int irq)
static void ym2203_irq_handler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
ashnojoe_state *state = (ashnojoe_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE);
}
static WRITE8_DEVICE_HANDLER( ym2203_write_a )
@ -316,7 +317,7 @@ static void ashnojoe_vclk_cb( const device_config *device )
else
{
msm5205_data_w(device, state->adpcm_byte & 0xf);
cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
state->msm5205_vclk_toggle ^= 1;
@ -333,6 +334,8 @@ static MACHINE_START( ashnojoe )
{
ashnojoe_state *state = (ashnojoe_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->adpcm_byte);
state_save_register_global(machine, state->soundlatch_status);
state_save_register_global(machine, state->msm5205_vclk_toggle);

View File

@ -46,6 +46,7 @@ struct _astinvad_state
{
UINT8 * colorram;
UINT8 * videoram;
size_t videoram_size;
emu_timer *int_timer;
UINT8 sound_state[2];
@ -54,6 +55,7 @@ struct _astinvad_state
UINT8 flip_yoffs;
UINT8 color_latch;
const device_config *maincpu;
const device_config *ppi8255_0;
const device_config *ppi8255_1;
const device_config *samples;
@ -100,10 +102,10 @@ static const ppi8255_interface ppi8255_intf[2] =
static VIDEO_START( spaceint )
{
astinvad_state *state = (astinvad_state *)machine->driver_data;
state->colorram = auto_alloc_array(machine, UINT8, machine->generic.videoram_size);
state->colorram = auto_alloc_array(machine, UINT8, state->videoram_size);
state_save_register_global(machine, state->color_latch);
state_save_register_global_pointer(machine, state->colorram, machine->generic.videoram_size);
state_save_register_global_pointer(machine, state->colorram, state->videoram_size);
}
@ -172,7 +174,7 @@ static VIDEO_UPDATE( spaceint )
const UINT8 *color_prom = memory_region(screen->machine, "proms");
int offs;
for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
for (offs = 0; offs < state->videoram_size; offs++)
{
UINT8 data = state->videoram[offs];
UINT8 color = state->colorram[offs];
@ -200,7 +202,8 @@ static VIDEO_UPDATE( spaceint )
static TIMER_CALLBACK( kamikaze_int_off )
{
cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
astinvad_state *state = (astinvad_state *)machine->driver_data;
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -208,7 +211,7 @@ static TIMER_CALLBACK( kamizake_int_gen )
{
astinvad_state *state = (astinvad_state *)machine->driver_data;
/* interrupts are asserted on every state change of the 128V line */
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
param ^= 128;
timer_adjust_oneshot(state->int_timer, video_screen_get_time_until_pos(machine->primary_screen, param, 0), param);
@ -221,6 +224,7 @@ static MACHINE_START( kamikaze )
{
astinvad_state *state = (astinvad_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->ppi8255_0 = devtag_get_device(machine, "ppi8255_0");
state->ppi8255_1 = devtag_get_device(machine, "ppi8255_1");
state->samples = devtag_get_device(machine, "samples");
@ -248,6 +252,7 @@ static MACHINE_START( spaceint )
{
astinvad_state *state = (astinvad_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->samples = devtag_get_device(machine, "samples");
state_save_register_global(machine, state->screen_flip);
@ -267,8 +272,9 @@ static MACHINE_RESET( spaceint )
static INPUT_CHANGED( spaceint_coin_inserted )
{
astinvad_state *state = (astinvad_state *)field->port->machine->driver_data;
/* coin insertion causes an NMI */
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
}
@ -389,14 +395,14 @@ static ADDRESS_MAP_START( kamikaze_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x1bff) AM_ROM
AM_RANGE(0x1c00, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE_MEMBER(astinvad_state, videoram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( spaceint_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_RAM
AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE_MEMBER(astinvad_state, videoram) AM_SIZE_MEMBER(astinvad_state, videoram_size)
ADDRESS_MAP_END

View File

@ -20,8 +20,9 @@ typedef struct _astrocrp_state astrocrp_state;
struct _astrocrp_state
{
/* memory pointers */
UINT16 * spriteram16;
UINT16 * paletteram16;
UINT16 * spriteram;
UINT16 * paletteram;
size_t spriteram_size;
/* video-related */
UINT16 screen_enable;
@ -49,8 +50,8 @@ struct _astrocrp_state
static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect )
{
astrocrp_state *state = (astrocrp_state *)machine->driver_data;
UINT16 *source = state->spriteram16;
UINT16 *finish = state->spriteram16 + machine->generic.spriteram_size / 2;
UINT16 *source = state->spriteram;
UINT16 *finish = state->spriteram + state->spriteram_size / 2;
for ( ; source < finish; source += 8 / 2 )
{
@ -162,23 +163,23 @@ static READ16_HANDLER( astrocorp_unk_r )
static WRITE16_HANDLER( astrocorp_palette_w )
{
astrocrp_state *state = (astrocrp_state *)space->machine->driver_data;
COMBINE_DATA(&state->paletteram16[offset]);
COMBINE_DATA(&state->paletteram[offset]);
palette_set_color_rgb(space->machine, offset,
pal5bit((state->paletteram16[offset] >> 0) & 0x1f),
pal6bit((state->paletteram16[offset] >> 5) & 0x3f),
pal5bit((state->paletteram16[offset] >> 11) & 0x1f)
pal5bit((state->paletteram[offset] >> 0) & 0x1f),
pal6bit((state->paletteram[offset] >> 5) & 0x3f),
pal5bit((state->paletteram[offset] >> 11) & 0x1f)
);
}
static ADDRESS_MAP_START( showhand_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
AM_RANGE( 0x050000, 0x050fff ) AM_RAM AM_BASE_MEMBER(astrocrp_state, spriteram16) AM_SIZE_GENERIC(spriteram)
AM_RANGE( 0x050000, 0x050fff ) AM_RAM AM_BASE_MEMBER(astrocrp_state, spriteram) AM_SIZE_MEMBER(astrocrp_state, spriteram_size)
AM_RANGE( 0x052000, 0x052001 ) AM_WRITENOP
AM_RANGE( 0x054000, 0x054001 ) AM_READ_PORT("INPUTS")
AM_RANGE( 0x058000, 0x058001 ) AM_WRITE(astrocorp_eeprom_w)
AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE(astrocorp_outputs_w)
AM_RANGE( 0x05e000, 0x05e001 ) AM_READ_PORT("EEPROMIN")
AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocrp_state, paletteram16)
AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocrp_state, paletteram)
AM_RANGE( 0x070000, 0x073fff ) AM_RAM
AM_RANGE( 0x080000, 0x080001 ) AM_DEVWRITE("oki", astrocorp_sound_bank_w)
AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_enable_w)
@ -187,9 +188,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( showhanc_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocrp_state, paletteram16)
AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE_MEMBER(astrocrp_state, paletteram)
AM_RANGE( 0x070000, 0x070001 ) AM_DEVWRITE("oki", astrocorp_sound_bank_w)
AM_RANGE( 0x080000, 0x080fff ) AM_RAM AM_BASE_MEMBER(astrocrp_state, spriteram16) AM_SIZE_GENERIC(spriteram)
AM_RANGE( 0x080000, 0x080fff ) AM_RAM AM_BASE_MEMBER(astrocrp_state, spriteram) AM_SIZE_MEMBER(astrocrp_state, spriteram_size)
AM_RANGE( 0x082000, 0x082001 ) AM_WRITENOP
AM_RANGE( 0x084000, 0x084001 ) AM_READ_PORT("INPUTS")
AM_RANGE( 0x088000, 0x088001 ) AM_WRITE(astrocorp_eeprom_w)

View File

@ -154,7 +154,7 @@ static ADDRESS_MAP_START( atarifb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0260, 0x039f) AM_RAM
AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_MEMBER(atarifb_state, spriteram_size)
AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb_out1_w) /* OUT 1 */
AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
@ -174,7 +174,7 @@ static ADDRESS_MAP_START( atarifb4_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0260, 0x039f) AM_RAM
AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_MEMBER(atarifb_state, spriteram_size)
AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb4_out1_w) /* OUT 1 */
AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
@ -195,7 +195,7 @@ static ADDRESS_MAP_START( abaseb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0260, 0x039f) AM_RAM
AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_MEMBER(atarifb_state, spriteram_size)
AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
AM_RANGE(0x2001, 0x2001) AM_WRITE(abaseb_out1_w) /* OUT 1 */
AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */
@ -215,7 +215,7 @@ static ADDRESS_MAP_START( soccer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0260, 0x039f) AM_RAM
AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_BASE_MEMBER(atarifb_state, alphap2_videoram)
AM_RANGE(0x0800, 0x0bbf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_BASE_MEMBER(atarifb_state, field_videoram)
AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_BASE_MEMBER(atarifb_state, spriteram) AM_SIZE_MEMBER(atarifb_state, spriteram_size)
AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_BASE_MEMBER(atarifb_state, scroll_register) /* OUT 0 */
AM_RANGE(0x1001, 0x1001) AM_WRITE(soccer_out1_w) /* OUT 1 */
AM_RANGE(0x1002, 0x1002) AM_WRITE(soccer_out2_w) /* OUT 2 */
@ -509,6 +509,8 @@ static MACHINE_START( atarifb )
{
atarifb_state *state = (atarifb_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->CTRLD);
state_save_register_global(machine, state->sign_x_1);
state_save_register_global(machine, state->sign_x_2);

View File

@ -63,7 +63,7 @@ static VIDEO_UPDATE( avalnche )
avalnche_state *state = (avalnche_state *)screen->machine->driver_data;
offs_t offs;
for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
for (offs = 0; offs < state->videoram_size; offs++)
{
int i;
@ -132,7 +132,7 @@ static WRITE8_HANDLER( avalance_start_lamp_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_MEMBER(avalnche_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE_MEMBER(avalnche_state, videoram) AM_SIZE_MEMBER(avalnche_state, videoram_size)
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0")
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1")
AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE")

View File

@ -49,8 +49,8 @@ static WRITE8_HANDLER( battlane_cpu_command_w )
/*
if (~state->cpu_control & 0x08)
{
cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->subcpu, INPUT_LINE_NMI, PULSE_LINE);
}
*/
@ -58,7 +58,7 @@ static WRITE8_HANDLER( battlane_cpu_command_w )
CPU2's SWI will trigger an 6809 IRQ on the master by resetting 0x04
Master will respond by setting the bit back again
*/
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, data & 0x04 ? CLEAR_LINE : HOLD_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, data & 0x04 ? CLEAR_LINE : HOLD_LINE);
/*
Slave function call (e.g. ROM test):
@ -76,7 +76,7 @@ static WRITE8_HANDLER( battlane_cpu_command_w )
FA96: 27 FA BEQ $FA92 ; Wait for bit to be set
*/
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE);
}
static INTERRUPT_GEN( battlane_cpu1_interrupt )
@ -87,7 +87,7 @@ static INTERRUPT_GEN( battlane_cpu1_interrupt )
if (~state->cpu_control & 0x08)
{
cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->subcpu, INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -258,7 +258,8 @@ GFXDECODE_END
static void irqhandler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
battlane_state *state = (battlane_state *)device->machine->driver_data;
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym3526_interface ym3526_config =
@ -273,6 +274,17 @@ static const ym3526_interface ym3526_config =
*
*************************************/
static MACHINE_START( battlane )
{
battlane_state *state = (battlane_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->subcpu = devtag_get_device(machine, "sub");
state_save_register_global(machine, state->video_ctrl);
state_save_register_global(machine, state->cpu_control);
}
static MACHINE_RESET( battlane )
{
battlane_state *state = (battlane_state *)machine->driver_data;
@ -296,6 +308,7 @@ static MACHINE_DRIVER_START( battlane )
MDRV_QUANTUM_TIME(HZ(6000))
MDRV_MACHINE_START(battlane)
MDRV_MACHINE_RESET(battlane)
/* video hardware */

View File

@ -117,7 +117,7 @@ static TIMER_CALLBACK( nmi_callback )
bigevglf_state *state = (bigevglf_state *)machine->driver_data;
if (state->sound_nmi_enable)
cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
else
state->pending_nmi = 1;
state->sound_state &= ~1;
@ -149,7 +149,7 @@ static WRITE8_HANDLER( nmi_enable_w )
state->sound_nmi_enable = 1;
if (state->pending_nmi)
{
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
state->pending_nmi = 0;
}
}
@ -434,6 +434,9 @@ static MACHINE_START( bigevglf )
{
bigevglf_state *state = (bigevglf_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->mcu = devtag_get_device(machine, "mcu");
state_save_register_global(machine, state->vidram_bank);
state_save_register_global(machine, state->plane_selected);
state_save_register_global(machine, state->plane_visible);

View File

@ -124,9 +124,9 @@ struct _bigfghtr_state
UINT16 * text_videoram;
UINT16 * bg_videoram;
UINT16 * fg_videoram;
UINT16 * sharedram16;
// UINT16 * spriteram16; // currently this uses generic buffer_spriteram_w
// UINT16 * paletteram16; // currently this uses generic palette handling
UINT16 * sharedram;
// UINT16 * spriteram; // currently this uses generic buffer_spriteram_w
// UINT16 * paletteram; // currently this uses generic palette handling
/* video-related */
tilemap *bg_tilemap, *fg_tilemap, *tx_tilemap;
@ -243,18 +243,18 @@ static WRITE16_HANDLER( bg_scrolly_w )
static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority )
{
UINT16 *buffered_spriteram16 = machine->generic.buffered_spriteram.u16;
UINT16 *buffered_spriteram = machine->generic.buffered_spriteram.u16;
int offs;
for (offs = 0; offs < machine->generic.spriteram_size / 2; offs += 4)
{
int code = buffered_spriteram16[offs + 1]; /* ??YX?TTTTTTTTTTT */
int code = buffered_spriteram[offs + 1]; /* ??YX?TTTTTTTTTTT */
int flipx = code & 0x2000;
int flipy = code & 0x1000;
int color = (buffered_spriteram16[offs + 2] >> 8) & 0x1f;
int sx = buffered_spriteram16[offs + 3];
int sy = 240 - (buffered_spriteram16[offs + 0] & 0x1ff);
int color = (buffered_spriteram[offs + 2] >> 8) & 0x1f;
int sx = buffered_spriteram[offs + 3];
int sy = 240 - (buffered_spriteram[offs + 0] & 0x1ff);
if (((buffered_spriteram16[offs + 0] & 0x3000) >> 12) == priority)
if (((buffered_spriteram[offs + 0] & 0x3000) >> 12) == priority)
{
drawgfx_transpen(bitmap,cliprect,machine->gfx[3],
code & 0xfff,
@ -334,7 +334,7 @@ static READ16_HANDLER( latch_r )
static WRITE16_HANDLER( sharedram_w )
{
bigfghtr_state *state = (bigfghtr_state *)space->machine->driver_data;
COMBINE_DATA(&state->sharedram16[offset]);
COMBINE_DATA(&state->sharedram[offset]);
}
static READ16_HANDLER(sharedram_r)
@ -354,13 +354,13 @@ static READ16_HANDLER(sharedram_r)
return (input_port_read(space->machine, "P1") & 0xffff) ^ 0xffff;
}
return state->sharedram16[offset];
return state->sharedram[offset];
}
static ADDRESS_MAP_START( mainmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x080600, 0x080fff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(bigfghtr_state, sharedram16)
AM_RANGE(0x080600, 0x080fff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(bigfghtr_state, sharedram)
AM_RANGE(0x081000, 0x085fff) AM_RAM //??
AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(bg_videoram_w) AM_BASE_MEMBER(bigfghtr_state, bg_videoram)
AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(fg_videoram_w) AM_BASE_MEMBER(bigfghtr_state, fg_videoram)

View File

@ -159,7 +159,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_BASE_MEMBER(bionicc_state, txvideoram)
AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_BASE_MEMBER(bionicc_state, fgvideoram)
AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_BASE_MEMBER(bionicc_state, bgvideoram)
AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_BASE_MEMBER(bionicc_state, paletteram16)
AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_BASE_MEMBER(bionicc_state, paletteram)
AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */
AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */
AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */

View File

@ -35,14 +35,14 @@ static READ8_HANDLER( blktiger_from_mcu_r )
static WRITE8_HANDLER( blktiger_to_mcu_w )
{
blktiger_state *state = (blktiger_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, ASSERT_LINE);
cpu_set_input_line(state->mcu, MCS51_INT1_LINE, ASSERT_LINE);
state->z80_latch = data;
}
static READ8_HANDLER( blktiger_from_main_r )
{
blktiger_state *state = (blktiger_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, CLEAR_LINE);
cpu_set_input_line(state->mcu, MCS51_INT1_LINE, CLEAR_LINE);
//printf("%02x read\n",latch);
return state->z80_latch;
}
@ -263,9 +263,10 @@ GFXDECODE_END
/* handler called by the 2203 emulator when the internal timers cause an IRQ */
static void irqhandler(const device_config *device, int irq)
static void irqhandler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
blktiger_state *state = (blktiger_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym2203_interface ym2203_config =
@ -282,6 +283,9 @@ static MACHINE_START( blktiger )
{
blktiger_state *state = (blktiger_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->mcu = devtag_get_device(machine, "mcu");
/* configure bankswitching */
memory_configure_bank(machine, 1, 0, 16, memory_region(machine, "maincpu") + 0x10000, 0x4000);

View File

@ -112,10 +112,10 @@ static ADDRESS_MAP_START( blmbycar_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x10c004, 0x10c007) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, scroll_0) // Scroll 0
AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(blmbycar_palette_w) // Palette
AM_RANGE(0x200600, 0x203fff) AM_RAM
AM_RANGE(0x204000, 0x2045ff) AM_RAM_WRITE(blmbycar_palette_w) AM_BASE_MEMBER(blmbycar_state, paletteram16) // Palette
AM_RANGE(0x204000, 0x2045ff) AM_RAM_WRITE(blmbycar_palette_w) AM_BASE_MEMBER(blmbycar_state, paletteram) // Palette
AM_RANGE(0x204600, 0x207fff) AM_RAM
AM_RANGE(0x440000, 0x441fff) AM_RAM
AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, spriteram16) AM_SIZE_GENERIC(spriteram)// Sprites (size?)
AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, spriteram) AM_SIZE_MEMBER(blmbycar_state, spriteram_size)// Sprites (size?)
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2")
AM_RANGE(0x700004, 0x700005) AM_READ(blmbycar_opt_wheel_r) // Wheel (optical)
@ -147,10 +147,10 @@ static ADDRESS_MAP_START( watrball_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x10c004, 0x10c007) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, scroll_0) // Scroll 0
AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(blmbycar_palette_w) // Palette
AM_RANGE(0x200600, 0x203fff) AM_RAM
AM_RANGE(0x204000, 0x2045ff) AM_RAM_WRITE(blmbycar_palette_w) AM_BASE_MEMBER(blmbycar_state, paletteram16) // Palette
AM_RANGE(0x204000, 0x2045ff) AM_RAM_WRITE(blmbycar_palette_w) AM_BASE_MEMBER(blmbycar_state, paletteram) // Palette
AM_RANGE(0x204600, 0x207fff) AM_RAM
AM_RANGE(0x440000, 0x441fff) AM_RAM
AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, spriteram16) AM_SIZE_GENERIC(spriteram)// Sprites (size?)
AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_BASE_MEMBER(blmbycar_state, spriteram) AM_SIZE_MEMBER(blmbycar_state, spriteram_size)// Sprites (size?)
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2")
AM_RANGE(0x700006, 0x700007) AM_READNOP // read

View File

@ -83,10 +83,12 @@ static INTERRUPT_GEN( blockout_interrupt )
static WRITE16_HANDLER( blockout_sound_command_w )
{
blockout_state *state = (blockout_state *)space->machine->driver_data;
if (ACCESSING_BITS_0_7)
{
soundlatch_w(space,offset,data & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
soundlatch_w(space, offset, data & 0xff);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -112,7 +114,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_MEMBER(blockout_state, frontvideoram)
AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */
AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w)
AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_BASE_MEMBER(blockout_state, paletteram16)
AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_BASE_MEMBER(blockout_state, paletteram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
@ -235,7 +237,8 @@ INPUT_PORTS_END
/* handler called by the 2151 emulator when the internal timers cause an IRQ */
static void blockout_irq_handler(const device_config *device, int irq)
{
cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
blockout_state *state = (blockout_state *)device->machine->driver_data;
cpu_set_input_line_and_vector(state->audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
}
static const ym2151_interface ym2151_config =
@ -250,6 +253,15 @@ static const ym2151_interface ym2151_config =
*
*************************************/
static MACHINE_START( blockout )
{
blockout_state *state = (blockout_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->color);
}
static MACHINE_RESET( blockout )
{
blockout_state *state = (blockout_state *)machine->driver_data;
@ -270,6 +282,7 @@ static MACHINE_DRIVER_START( blockout )
MDRV_CPU_ADD("audiocpu", Z80, 3579545) /* 3.579545 MHz */
MDRV_CPU_PROGRAM_MAP(audio_map)
MDRV_MACHINE_START(blockout)
MDRV_MACHINE_RESET(blockout)
/* video hardware */

View File

@ -78,8 +78,9 @@ static READ8_HANDLER( blueprnt_sh_dipsw_r )
static WRITE8_HANDLER( blueprnt_sound_command_w )
{
blueprnt_state *state = (blueprnt_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
static WRITE8_HANDLER( blueprnt_coin_counter_w )
@ -99,7 +100,7 @@ static ADDRESS_MAP_START( blueprnt_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(blueprnt_videoram_w) AM_MIRROR(0x400) AM_BASE_MEMBER(blueprnt_state, videoram)
AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE_MEMBER(blueprnt_state, scrollram)
AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_BASE_MEMBER(blueprnt_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_BASE_MEMBER(blueprnt_state, spriteram) AM_SIZE_MEMBER(blueprnt_state, spriteram_size)
AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") AM_WRITE(blueprnt_coin_counter_w)
AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r)
@ -288,6 +289,8 @@ static MACHINE_START( blueprnt )
{
blueprnt_state *state = (blueprnt_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->dipsw);
}

View File

@ -54,7 +54,7 @@ static ADDRESS_MAP_START( bogeyman_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(bogeyman_colorram2_w) AM_BASE_MEMBER(bogeyman_state, colorram2)
AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(bogeyman_videoram_w) AM_BASE_MEMBER(bogeyman_state, videoram)
AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(bogeyman_colorram_w) AM_BASE_MEMBER(bogeyman_state, colorram)
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_BASE_MEMBER(bogeyman_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_BASE_MEMBER(bogeyman_state, spriteram) AM_SIZE_MEMBER(bogeyman_state, spriteram_size)
AM_RANGE(0x3000, 0x300f) AM_RAM_WRITE(bogeyman_paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(bogeyman_8910_control_w)
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(bogeyman_8910_latch_w)

View File

@ -135,7 +135,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(bombjack_videoram_w) AM_BASE_MEMBER(bombjack_state, videoram)
AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(bombjack_colorram_w) AM_BASE_MEMBER(bombjack_state, colorram)
AM_RANGE(0x9820, 0x987f) AM_WRITEONLY AM_BASE_MEMBER(bombjack_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x9820, 0x987f) AM_WRITEONLY AM_BASE_MEMBER(bombjack_state, spriteram) AM_SIZE_MEMBER(bombjack_state, spriteram_size)
AM_RANGE(0x9a00, 0x9a00) AM_WRITENOP
AM_RANGE(0x9c00, 0x9cff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x9e00, 0x9e00) AM_WRITE(bombjack_background_w)

View File

@ -30,6 +30,9 @@ struct _boxer_state
/* misc */
UINT8 pot_state;
UINT8 pot_latch;
/* devices */
const device_config *maincpu;
};
/*************************************
@ -44,7 +47,7 @@ static TIMER_CALLBACK( pot_interrupt )
int mask = param;
if (state->pot_latch & mask)
cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, ASSERT_LINE);
state->pot_state |= mask;
}
@ -55,7 +58,7 @@ static TIMER_CALLBACK( periodic_callback )
boxer_state *state = (boxer_state *)machine->driver_data;
int scanline = param;
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
if (scanline == 0)
{
@ -248,13 +251,14 @@ static WRITE8_HANDLER( boxer_pot_w )
state->pot_latch = data & 0x3f;
cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, CLEAR_LINE);
}
static WRITE8_HANDLER( boxer_irq_reset_w )
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
boxer_state *state = (boxer_state *)space->machine->driver_data;
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -412,6 +416,8 @@ static MACHINE_START( boxer )
{
boxer_state *state = (boxer_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->pot_state);
state_save_register_global(machine, state->pot_latch);
}

View File

@ -185,7 +185,8 @@ static WRITE8_HANDLER( track_reset_w )
static WRITE8_HANDLER( capbowl_sndcmd_w )
{
cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
capbowl_state *state = (capbowl_state *)space->machine->driver_data;
cpu_set_input_line(state->audiocpu, M6809_IRQ_LINE, HOLD_LINE);
soundlatch_w(space, offset, data);
}
@ -200,7 +201,8 @@ static WRITE8_HANDLER( capbowl_sndcmd_w )
static void firqhandler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", 1, irq ? ASSERT_LINE : CLEAR_LINE);
capbowl_state *state = (capbowl_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 1, irq ? ASSERT_LINE : CLEAR_LINE);
}
@ -347,6 +349,9 @@ static MACHINE_START( capbowl )
{
capbowl_state *state = (capbowl_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->blitter_addr);
state_save_register_global(machine, state->last_trackball_val[0]);
state_save_register_global(machine, state->last_trackball_val[1]);

View File

@ -63,7 +63,7 @@ static ADDRESS_MAP_START( carjmbre_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8fc1, 0x8fc1) AM_WRITENOP //overrun during initial screen clear
AM_RANGE(0x8fe1, 0x8fe1) AM_WRITENOP //overrun during initial screen clear
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(carjmbre_videoram_w) AM_BASE_MEMBER(carjmbre_state, videoram)
AM_RANGE(0x9800, 0x985f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(carjmbre_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x9800, 0x985f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(carjmbre_state, spriteram) AM_SIZE_MEMBER(carjmbre_state, spriteram_size)
AM_RANGE(0x9880, 0x98df) AM_WRITE(SMH_RAM) //spriteram mirror
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")

View File

@ -16,6 +16,9 @@ struct _cball_state
/* video-related */
tilemap* bg_tilemap;
/* devices */
const device_config *maincpu;
};
@ -64,9 +67,10 @@ static VIDEO_UPDATE( cball )
static TIMER_CALLBACK( interrupt_callback )
{
cball_state *state = (cball_state *)machine->driver_data;
int scanline = param;
generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), 0);
generic_pulse_irq_line(state->maincpu, 0);
scanline = scanline + 32;
@ -77,6 +81,12 @@ static TIMER_CALLBACK( interrupt_callback )
}
static MACHINE_START( cball )
{
cball_state *state = (cball_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
}
static MACHINE_RESET( cball )
{
timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 16, 0), NULL, 16, interrupt_callback);
@ -219,6 +229,7 @@ static MACHINE_DRIVER_START( cball )
MDRV_CPU_ADD("maincpu", M6800, 12096000 / 16) /* ? */
MDRV_CPU_PROGRAM_MAP(cpu_map)
MDRV_MACHINE_START(cball)
MDRV_MACHINE_RESET(cball)
/* video hardware */

View File

@ -168,7 +168,7 @@ static TIMER_CALLBACK( clock_irq )
/* assert the IRQ if not already asserted */
if (!state->irq_state)
{
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
state->irq_state = 1;
}
@ -201,6 +201,7 @@ static MACHINE_START( ccastles )
rectangle visarea;
/* initialize globals */
state->maincpu = devtag_get_device(machine, "maincpu");
state->syncprom = memory_region(machine, "proms") + 0x000;
/* find the start of VBLANK in the SYNC PROM */
@ -263,7 +264,7 @@ static WRITE8_HANDLER( irq_ack_w )
ccastles_state *state = (ccastles_state *)space->machine->driver_data;
if (state->irq_state)
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
state->irq_state = 0;
}
}

View File

@ -125,16 +125,18 @@ static CUSTOM_INPUT( champbas_watchdog_bit2 )
static WRITE8_HANDLER( irq_enable_w )
{
champbas_state *state = (champbas_state *)space->machine->driver_data;
int bit = data & 1;
cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
cpu_interrupt_enable(state->maincpu, bit);
if (!bit)
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
static TIMER_CALLBACK( exctsccr_fm_callback )
{
cputag_set_input_line_and_vector(machine, "audiocpu", 0, HOLD_LINE, 0xff);
champbas_state *state = (champbas_state *)machine->driver_data;
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
// Champion Baseball has only one DAC
@ -216,7 +218,7 @@ static ADDRESS_MAP_START( talbot_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_data_address_w)
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE_MEMBER(champbas_state, bg_videoram)
AM_RANGE(0x8800, 0x8fef) AM_RAM
AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE_MEMBER(champbas_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE_MEMBER(champbas_state, spriteram) AM_SIZE_MEMBER(champbas_state, spriteram_size)
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
AM_RANGE(0xa040, 0xa040) AM_READ_PORT("P2")
@ -244,7 +246,7 @@ static ADDRESS_MAP_START( champbas_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7800, 0x7fff) AM_ROM // champbb2 only
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(champbas_bg_videoram_w) AM_BASE_MEMBER(champbas_state, bg_videoram)
AM_RANGE(0x8800, 0x8fef) AM_RAM
AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE_MEMBER(champbas_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_BASE_MEMBER(champbas_state, spriteram) AM_SIZE_MEMBER(champbas_state, spriteram_size)
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
AM_RANGE(0xa040, 0xa040) AM_READ_PORT("P2")
@ -565,7 +567,8 @@ static MACHINE_START( champbas )
{
champbas_state *state = (champbas_state *)machine->driver_data;
state->mcu = cputag_get_cpu(machine, CPUTAG_MCU);
state->maincpu = devtag_get_device(machine, "maincpu");
state->mcu = devtag_get_device(machine, CPUTAG_MCU);
state_save_register_global(machine, state->watchdog_count);
state_save_register_global(machine, state->palette_bank);
@ -574,6 +577,9 @@ static MACHINE_START( champbas )
static MACHINE_START( exctsccr )
{
champbas_state *state = (champbas_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
// FIXME
timer_pulse(machine, ATTOTIME_IN_HZ(75), NULL, 0, exctsccr_fm_callback); /* updates fm */

View File

@ -64,6 +64,9 @@ struct _chanbara_state
/* video-related */
tilemap *bg_tilemap,*bg2_tilemap;
UINT8 scroll, scrollhi;
/* devices */
const device_config *maincpu;
};
@ -339,7 +342,8 @@ static WRITE8_DEVICE_HANDLER( chanbara_ay_out_1_w )
static void sound_irq( const device_config *device, int linestate )
{
cputag_set_input_line(device->machine, "maincpu", 0, linestate);
chanbara_state *state = (chanbara_state *)device->machine->driver_data;
cpu_set_input_line(state->maincpu, 0, linestate);
}
@ -361,6 +365,8 @@ static MACHINE_START( chanbara )
{
chanbara_state *state = (chanbara_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->scroll);
state_save_register_global(machine, state->scrollhi);
}

View File

@ -422,6 +422,7 @@ static const ay8910_interface ay8910_interface_2 =
static INTERRUPT_GEN( chl_interrupt )
{
changela_state *state = (changela_state *)device->machine->driver_data;
int vector = video_screen_get_vblank(device->machine->primary_screen) ? 0xdf : 0xcf; /* 4 irqs per frame: 3 times 0xcf, 1 time 0xdf */
// video_screen_update_partial(device->machine->primary_screen, video_screen_get_vpos(device->machine->primary_screen));
@ -432,7 +433,7 @@ static INTERRUPT_GEN( chl_interrupt )
//so we should cause an INT on the MCU cpu here, as well.
//but only once per frame !
if (vector == 0xdf) /* only on vblank */
generic_pulse_irq_line(cputag_get_cpu(device->machine, "mcu"), 0);
generic_pulse_irq_line(state->mcu, 0);
}
@ -440,6 +441,8 @@ static MACHINE_START(changela)
{
changela_state *state = (changela_state *)machine->driver_data;
state->mcu = devtag_get_device(machine, "mcu");
/* video */
state_save_register_global(machine, state->slopeROM_bank);
state_save_register_global(machine, state->tree_en);

View File

@ -14,9 +14,11 @@
static INPUT_CHANGED( coin_inserted )
{
cheekyms_state *state = (cheekyms_state *)field->port->machine->driver_data;
/* this starts a 556 one-shot timer (and triggers a sound effect) */
if (newval)
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, PULSE_LINE);
}
@ -111,6 +113,7 @@ static MACHINE_START( cheekyms )
{
cheekyms_state *state = (cheekyms_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->dac = devtag_get_device(machine, "dac");
}

View File

@ -110,6 +110,7 @@ INLINE int scanline_to_vcount( int scanline )
static TIMER_DEVICE_CALLBACK( chinagat_scanline )
{
ddragon_state *state = (ddragon_state *)timer->machine->driver_data;
int scanline = param;
int screen_height = video_screen_get_height(timer->machine->primary_screen);
int vcount_old = scanline_to_vcount((scanline == 0) ? screen_height - 1 : scanline - 1);
@ -117,27 +118,19 @@ static TIMER_DEVICE_CALLBACK( chinagat_scanline )
/* update to the current point */
if (scanline > 0)
{
video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
}
/* on the rising edge of VBLK (vcount == F8), signal an NMI */
if (vcount == 0xf8)
{
cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
}
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, ASSERT_LINE);
/* set 1ms signal on rising edge of vcount & 8 */
if (!(vcount_old & 8) && (vcount & 8))
{
cputag_set_input_line(timer->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
}
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, ASSERT_LINE);
/* adjust for next scanline */
if (++scanline >= screen_height)
{
scanline = 0;
}
}
static WRITE8_HANDLER( chinagat_interrupt_w )
@ -148,23 +141,23 @@ static WRITE8_HANDLER( chinagat_interrupt_w )
{
case 0: /* 3e00 - SND irq */
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "audiocpu", state->sound_irq, (state->sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
cpu_set_input_line(state->snd_cpu, state->sound_irq, (state->sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
break;
case 1: /* 3e01 - NMI ack */
cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, CLEAR_LINE);
break;
case 2: /* 3e02 - FIRQ ack */
cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, CLEAR_LINE);
break;
case 3: /* 3e03 - IRQ ack */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, CLEAR_LINE);
break;
case 4: /* 3e04 - sub CPU IRQ ack */
cputag_set_input_line(space->machine, "sub", state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
cpu_set_input_line(state->sub_cpu, state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
break;
}
}
@ -318,7 +311,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_BASE_MEMBER(ddragon_state, bgvideoram)
AM_RANGE(0x3000, 0x317f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x3400, 0x357f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
AM_RANGE(0x3800, 0x397f) AM_WRITE(SMH_BANK(3)) AM_BASE_MEMBER(ddragon_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x3800, 0x397f) AM_WRITE(SMH_BANK(3)) AM_BASE_MEMBER(ddragon_state, spriteram) AM_SIZE_MEMBER(ddragon_state, spriteram_size)
AM_RANGE(0x3e00, 0x3e04) AM_WRITE(chinagat_interrupt_w)
AM_RANGE(0x3e06, 0x3e06) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(ddragon_state, scrolly_lo)
AM_RANGE(0x3e07, 0x3e07) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(ddragon_state, scrollx_lo)
@ -501,7 +494,8 @@ GFXDECODE_END
static void chinagat_irq_handler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE );
ddragon_state *state = (ddragon_state *)device->machine->driver_data;
cpu_set_input_line(state->snd_cpu, 0, irq ? ASSERT_LINE : CLEAR_LINE );
}
static const ym2151_interface ym2151_config =
@ -532,6 +526,10 @@ static MACHINE_START( chinagat )
{
ddragon_state *state = (ddragon_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->sub_cpu = devtag_get_device(machine, "sub");
state->snd_cpu = devtag_get_device(machine, "audiocpu");
/* configure banks */
memory_configure_bank(machine, 1, 0, 8, memory_region(machine, "maincpu") + 0x10000, 0x4000);

View File

@ -475,6 +475,8 @@ static MACHINE_START( cidelsa )
{
cidelsa_state *state = (cidelsa_state *)machine->driver_data;
state->cdp1802 = devtag_get_device(machine, CDP1802_TAG);
/* reset the CPU */
state->cdp1802_mode = CDP1802_MODE_RESET;
timer_set(machine, ATTOTIME_IN_MSEC(200), NULL, 0, set_cpu_mode);

View File

@ -268,6 +268,7 @@ static MACHINE_START( circus )
{
circus_state *state = (circus_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->samples = devtag_get_device(machine, "samples");
state->discrete = devtag_get_device(machine, "discrete");

View File

@ -61,6 +61,7 @@ static MACHINE_START( circusc )
{
circusc_state *state = (circusc_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->sn1 = devtag_get_device(machine, "sn1");
state->sn2 = devtag_get_device(machine, "sn2");
state->dac = devtag_get_device(machine, "dac");
@ -97,7 +98,8 @@ static READ8_HANDLER( circusc_sh_timer_r )
static WRITE8_HANDLER( circusc_sh_irqtrigger_w )
{
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
circusc_state *state = (circusc_state *)space->machine->driver_data;
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
static WRITE8_HANDLER( circusc_coin_counter_w )
@ -162,7 +164,7 @@ static ADDRESS_MAP_START( circusc_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(circusc_colorram_w) AM_BASE_MEMBER(circusc_state, colorram) /* colorram */
AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(circusc_videoram_w) AM_BASE_MEMBER(circusc_state, videoram) /* videoram */
AM_RANGE(0x3800, 0x38ff) AM_RAM AM_BASE_MEMBER(circusc_state, spriteram_2) /* spriteram2 */
AM_RANGE(0x3900, 0x39ff) AM_RAM AM_BASE_MEMBER(circusc_state, spriteram) AM_SIZE_GENERIC(spriteram) /* spriteram */
AM_RANGE(0x3900, 0x39ff) AM_RAM AM_BASE_MEMBER(circusc_state, spriteram) AM_SIZE_MEMBER(circusc_state, spriteram_size) /* spriteram */
AM_RANGE(0x3a00, 0x3fff) AM_RAM
AM_RANGE(0x6000, 0xffff) AM_ROM
ADDRESS_MAP_END

View File

@ -21,7 +21,8 @@ static READ8_HANDLER( citycon_in_r )
static READ8_HANDLER( citycon_irq_ack_r )
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
citycon_state *state = (citycon_state *)space->machine->driver_data;
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
return 0;
}
@ -30,7 +31,7 @@ static ADDRESS_MAP_START( citycon_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(citycon_videoram_w) AM_BASE_MEMBER(citycon_state, videoram)
AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(citycon_linecolor_w) AM_BASE_MEMBER(citycon_state, linecolor)
AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(citycon_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x2800, 0x28ff) AM_RAM AM_BASE_MEMBER(citycon_state, spriteram) AM_SIZE_MEMBER(citycon_state, spriteram_size)
AM_RANGE(0x2800, 0x2fff) AM_NOP //0x2900-0x2fff cleared at post but unused
AM_RANGE(0x3000, 0x3000) AM_READWRITE(citycon_in_r, citycon_background_w) /* player 1 & 2 inputs multiplexed */
AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_WRITE(soundlatch_w)
@ -190,6 +191,8 @@ static MACHINE_START( citycon )
{
citycon_state *state = (citycon_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->bg_image);
}

View File

@ -137,7 +137,7 @@ static TIMER_CALLBACK( clock_irq )
/* assert the IRQ if not already asserted */
if (!state->irq_state)
{
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
state->irq_state = 1;
}
@ -170,6 +170,7 @@ static MACHINE_START( cloud9 )
rectangle visarea;
/* initialize globals */
state->maincpu = devtag_get_device(machine, "maincpu");
state->syncprom = memory_region(machine, "proms") + 0x000;
/* find the start of VBLANK in the SYNC PROM */
@ -228,7 +229,7 @@ static WRITE8_HANDLER( irq_ack_w )
cloud9_state *state = (cloud9_state *)space->machine->driver_data;
if (state->irq_state)
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
state->irq_state = 0;
}
}

View File

@ -50,6 +50,11 @@ struct _cntsteer_state
/* misc */
int nmimask; // zerotrgt only
/* devices */
const device_config *maincpu;
const device_config *audiocpu;
const device_config *subcpu;
};
@ -434,42 +439,47 @@ static WRITE8_HANDLER( cntsteer_background_w )
static WRITE8_HANDLER( gekitsui_sub_irq_ack )
{
cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, CLEAR_LINE);
cntsteer_state *state = (cntsteer_state *)space->machine->driver_data;
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, CLEAR_LINE);
}
static WRITE8_HANDLER( cntsteer_sound_w )
{
cntsteer_state *state = (cntsteer_state *)space->machine->driver_data;
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
cpu_set_input_line(state->audiocpu, 0, HOLD_LINE);
}
static WRITE8_HANDLER( zerotrgt_ctrl_w )
{
cntsteer_state *state = (cntsteer_state *)space->machine->driver_data;
/*TODO: check this.*/
logerror("CTRL: %04x: %04x: %04x\n", cpu_get_pc(space->cpu), offset, data);
// if (offset == 0) cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_RESET, ASSERT_LINE);
// if (offset == 0) cpu_set_input_line(state->subcpu, INPUT_LINE_RESET, ASSERT_LINE);
// Wrong - bits 0 & 1 used on this
if (offset == 1) cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, ASSERT_LINE);
// if (offset == 2) cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_RESET, CLEAR_LINE);
if (offset == 1) cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, ASSERT_LINE);
// if (offset == 2) cpu_set_input_line(state->subcpu, INPUT_LINE_RESET, CLEAR_LINE);
}
static WRITE8_HANDLER( cntsteer_sub_irq_w )
{
cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, ASSERT_LINE);
cntsteer_state *state = (cntsteer_state *)space->machine->driver_data;
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, ASSERT_LINE);
// printf("%02x IRQ\n", data);
}
static WRITE8_HANDLER( cntsteer_sub_nmi_w )
{
// if (data)
// cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_NMI, PULSE_LINE);
// cpu_set_input_line(state->subcpu, INPUT_LINE_NMI, PULSE_LINE);
// popmessage("%02x", data);
}
static WRITE8_HANDLER( cntsteer_main_irq_w )
{
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
cntsteer_state *state = (cntsteer_state *)space->machine->driver_data;
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, HOLD_LINE);
}
/* Convert weird input handling with MAME standards.*/
@ -640,7 +650,8 @@ INPUT_PORTS_END
static INPUT_CHANGED( coin_inserted )
{
cputag_set_input_line(field->port->machine, "subcpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
cntsteer_state *state = (cntsteer_state *)field->port->machine->driver_data;
cpu_set_input_line(state->subcpu, INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
}
static INPUT_PORTS_START( cntsteer )
@ -774,6 +785,10 @@ static MACHINE_START( cntsteer )
{
cntsteer_state *state = (cntsteer_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->subcpu = devtag_get_device(machine, "subcpu");
state_save_register_global(machine, state->flipscreen);
state_save_register_global(machine, state->bg_bank);
state_save_register_global(machine, state->scrolly);

View File

@ -228,6 +228,8 @@ static MACHINE_START( commando )
{
commando_state *state = (commando_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global_array(machine, state->scroll_x);
state_save_register_global_array(machine, state->scroll_y);
}

View File

@ -68,8 +68,9 @@ Mighty Guy board layout:
static WRITE8_HANDLER( cop01_sound_command_w )
{
cop01_state *state = (cop01_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
static READ8_HANDLER( cop01_sound_command_r )
@ -109,7 +110,7 @@ static ADDRESS_MAP_START( cop01_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM /* c000-c7ff in cop01 */
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(cop01_background_w) AM_BASE_MEMBER(cop01_state, bgvideoram)
AM_RANGE(0xe000, 0xe0ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cop01_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe000, 0xe0ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cop01_state, spriteram) AM_SIZE_MEMBER(cop01_state, spriteram_size)
AM_RANGE(0xf000, 0xf3ff) AM_WRITE(cop01_foreground_w) AM_BASE_MEMBER(cop01_state, fgvideoram)
ADDRESS_MAP_END
@ -415,6 +416,8 @@ static MACHINE_START( cop01 )
{
cop01_state *state = (cop01_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->pulse);
state_save_register_global(machine, state->timer);
state_save_register_global_array(machine, state->vreg);

View File

@ -118,7 +118,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0900, 0x0903) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(copsnrob_state, carimage)
AM_RANGE(0x0a00, 0x0a03) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(copsnrob_state, cary)
AM_RANGE(0x0b00, 0x0bff) AM_RAM
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_BASE_MEMBER(copsnrob_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_BASE_MEMBER(copsnrob_state, videoram) AM_SIZE_MEMBER(copsnrob_state, videoram_size)
// AM_RANGE(0x1000, 0x1003) AM_WRITENOP
// AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN0")
AM_RANGE(0x1000, 0x1000) AM_READ(copsnrob_misc_r)

View File

@ -429,8 +429,8 @@ static WRITE8_HANDLER( flip_screen_w )
static ADDRESS_MAP_START( panic_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_MEMBER(cosmic_state, videoram_size)
AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_MEMBER(cosmic_state, spriteram_size)
AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
@ -444,8 +444,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cosmica_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_MEMBER(cosmic_state, videoram_size)
AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_MEMBER(cosmic_state, spriteram_size)
AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
@ -458,7 +458,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cosmicg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_MEMBER(cosmic_state, videoram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( cosmicg_io_map, ADDRESS_SPACE_IO, 8 )
@ -472,7 +472,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( magspot_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3800, 0x3807) AM_READ(magspot_coinage_dip_r)
AM_RANGE(0x4000, 0x401f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x4000, 0x401f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(cosmic_state, spriteram) AM_SIZE_MEMBER(cosmic_state, spriteram_size)
AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("dac", dac_w)
AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w)
AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w)
@ -480,7 +480,7 @@ static ADDRESS_MAP_START( magspot_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1")
AM_RANGE(0x5002, 0x5002) AM_READ_PORT("IN2")
AM_RANGE(0x5003, 0x5003) AM_READ_PORT("IN3")
AM_RANGE(0x6000, 0x7fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x6000, 0x7fff) AM_RAM AM_BASE_MEMBER(cosmic_state, videoram) AM_SIZE_MEMBER(cosmic_state, videoram_size)
ADDRESS_MAP_END

View File

@ -52,6 +52,9 @@ static MACHINE_START( crgolf )
{
crgolf_state *state = (crgolf_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
/* configure the banking */
memory_configure_bank(machine, 1, 0, 16, memory_region(machine, "maincpu") + 0x10000, 0x2000);
memory_set_bank(machine, 1, 0);
@ -129,7 +132,7 @@ static TIMER_CALLBACK( main_to_sound_callback )
{
crgolf_state *state = (crgolf_state *)machine->driver_data;
cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, ASSERT_LINE);
state->main_to_sound_data = param;
}
@ -144,7 +147,7 @@ static READ8_HANDLER( main_to_sound_r )
{
crgolf_state *state = (crgolf_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
return state->main_to_sound_data;
}
@ -160,7 +163,7 @@ static TIMER_CALLBACK( sound_to_main_callback )
{
crgolf_state *state = (crgolf_state *)machine->driver_data;
cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, ASSERT_LINE);
state->sound_to_main_data = param;
}
@ -175,7 +178,7 @@ static READ8_HANDLER( sound_to_main_r )
{
crgolf_state *state = (crgolf_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, CLEAR_LINE);
return state->sound_to_main_data;
}

View File

@ -57,7 +57,7 @@ static ADDRESS_MAP_START( crospang_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_BASE_MEMBER(crospang_state, fg_videoram)
AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_BASE_MEMBER(crospang_state, bg_videoram)
AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE_MEMBER(crospang_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE_MEMBER(crospang_state, spriteram) AM_SIZE_MEMBER(crospang_state, spriteram_size)
AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
@ -77,7 +77,7 @@ static ADDRESS_MAP_START( bestri_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_BASE_MEMBER(crospang_state, fg_videoram)
AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_BASE_MEMBER(crospang_state, bg_videoram)
AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE_MEMBER(crospang_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE_MEMBER(crospang_state, spriteram) AM_SIZE_MEMBER(crospang_state, spriteram_size)
AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
AM_RANGE(0x270004, 0x270005) AM_WRITENOP
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
@ -275,7 +275,8 @@ GFXDECODE_END
static void irqhandler( const device_config *device, int linestate )
{
cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
crospang_state *state = (crospang_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0, linestate);
}
static const ym3812_interface ym3812_config =
@ -288,6 +289,8 @@ static MACHINE_START( crospang )
{
crospang_state *state = (crospang_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->bestri_tilebank);
state_save_register_global(machine, state->xsproff);
state_save_register_global(machine, state->ysproff);

View File

@ -31,6 +31,7 @@ struct _dacholer_state
UINT8 * bgvideoram;
UINT8 * fgvideoram;
UINT8 * spriteram;
size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap,*fg_tilemap;
@ -42,6 +43,9 @@ struct _dacholer_state
UINT8 snd_interrupt_enable;
UINT8 music_interrupt_enable;
UINT8 snd_ack;
/* devices */
const device_config *audiocpu;
};
@ -84,8 +88,9 @@ static WRITE8_HANDLER( coins_w )
static WRITE8_HANDLER(snd_w)
{
dacholer_state *state = (dacholer_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
@ -93,7 +98,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8800, 0x97ff) AM_RAM
AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(background_w) AM_BASE_MEMBER(dacholer_state, bgvideoram)
AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(foreground_w) AM_BASE_MEMBER(dacholer_state, fgvideoram)
AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_BASE_MEMBER(dacholer_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_BASE_MEMBER(dacholer_state, spriteram) AM_SIZE_MEMBER(dacholer_state, spriteram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
@ -326,7 +331,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
dacholer_state *state = (dacholer_state *)machine->driver_data;
int offs, code, attr, sx, sy, flipx, flipy;
for (offs = 0; offs < machine->generic.spriteram_size; offs += 4)
for (offs = 0; offs < state->spriteram_size; offs += 4)
{
code = state->spriteram[offs + 1];
attr = state->spriteram[offs + 2];
@ -411,7 +416,7 @@ static void adpcm_int( const device_config *device )
state->msm_toggle ^= 1;
if (state->msm_toggle == 0)
{
cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, HOLD_LINE, 0x38);
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0x38);
}
}
}
@ -428,6 +433,8 @@ static MACHINE_START( dacholer )
{
dacholer_state *state = (dacholer_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->bg_bank);
state_save_register_global(machine, state->msm_data);
state_save_register_global(machine, state->msm_toggle);

View File

@ -76,6 +76,9 @@ struct _ddayjlc_state
INT32 e00x_l[4];
INT32 e00x_d[4][2];
UINT8 prot_addr;
/* devices */
const device_config *audiocpu;
};
@ -195,8 +198,10 @@ static WRITE8_HANDLER( bg2_w )
static WRITE8_HANDLER( sound_w )
{
ddayjlc_state *state = (ddayjlc_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
static WRITE8_HANDLER( i8257_CH0_w )
@ -435,6 +440,8 @@ static MACHINE_START( ddayjlc )
{
ddayjlc_state *state = (ddayjlc_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->char_bank);
state_save_register_global(machine, state->bgadr);
state_save_register_global(machine, state->sound_nmi_enable);

View File

@ -118,6 +118,7 @@ INLINE int scanline_to_vcount( int scanline )
static TIMER_DEVICE_CALLBACK( ddragon_scanline )
{
ddragon_state *state = (ddragon_state *)timer->machine->driver_data;
int scanline = param;
int screen_height = video_screen_get_height(timer->machine->primary_screen);
int vcount_old = scanline_to_vcount((scanline == 0) ? screen_height - 1 : scanline - 1);
@ -129,11 +130,11 @@ static TIMER_DEVICE_CALLBACK( ddragon_scanline )
/* on the rising edge of VBLK (vcount == F8), signal an NMI */
if (vcount == 0xf8)
cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, ASSERT_LINE);
/* set 1ms signal on rising edge of vcount & 8 */
if (!(vcount_old & 8) && (vcount & 8))
cputag_set_input_line(timer->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, ASSERT_LINE);
}
@ -151,6 +152,7 @@ static MACHINE_START( ddragon )
/* configure banks */
memory_configure_bank(machine, 1, 0, 8, memory_region(machine, "maincpu") + 0x10000, 0x4000);
state->maincpu = devtag_get_device(machine, "maincpu");
state->sub_cpu = devtag_get_device(machine, "sub");
state->snd_cpu = devtag_get_device(machine, "soundcpu");
state->adpcm_1 = devtag_get_device(machine, "adpcm1");
@ -200,7 +202,7 @@ static WRITE8_HANDLER( ddragon_bankswitch_w )
if (data & 0x10)
state->dd_sub_cpu_busy = 0;
else if (state->dd_sub_cpu_busy == 0)
cputag_set_input_line(space->machine, "sub", state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
cpu_set_input_line(state->sub_cpu, state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
memory_set_bank(space->machine, 1, (data & 0xe0) >> 5);
}
@ -279,7 +281,7 @@ static WRITE8_HANDLER( darktowr_bankswitch_w )
if (data & 0x10)
state->dd_sub_cpu_busy = 0;
else if (state->dd_sub_cpu_busy == 0)
cputag_set_input_line(space->machine, "sub", state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
cpu_set_input_line(state->sub_cpu, state->sprite_irq, (state->sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
memory_set_bank(space->machine, 1, newbank);
if (newbank == 4 && oldbank != 4)
@ -302,15 +304,15 @@ static WRITE8_HANDLER( ddragon_interrupt_w )
switch (offset)
{
case 0: /* 380b - NMI ack */
cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, CLEAR_LINE);
break;
case 1: /* 380c - FIRQ ack */
cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, CLEAR_LINE);
break;
case 2: /* 380d - IRQ ack */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, CLEAR_LINE);
break;
case 3: /* 380e - SND irq */
@ -328,13 +330,14 @@ static WRITE8_HANDLER( ddragon_interrupt_w )
static WRITE8_HANDLER( ddragon2_sub_irq_ack_w )
{
ddragon_state *state = (ddragon_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "sub", state->sprite_irq, CLEAR_LINE );
cpu_set_input_line(state->sub_cpu, state->sprite_irq, CLEAR_LINE );
}
static WRITE8_HANDLER( ddragon2_sub_irq_w )
{
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
ddragon_state *state = (ddragon_state *)space->machine->driver_data;
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, ASSERT_LINE);
}
@ -386,8 +389,8 @@ static WRITE8_HANDLER( ddragon_hd63701_internal_registers_w )
it's quite obvious from the Double Dragon 2 code, below). */
if (data & 3)
{
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
cputag_set_input_line(space->machine, "sub", state->sprite_irq, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->sub_cpu, state->sprite_irq, CLEAR_LINE);
}
}
}
@ -574,8 +577,8 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( ddragnba_port_w )
{
ddragon_state *state = (ddragon_state *)space->machine->driver_data;
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
cputag_set_input_line(space->machine, "sub", state->sprite_irq, CLEAR_LINE );
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->sub_cpu, state->sprite_irq, CLEAR_LINE );
}
static ADDRESS_MAP_START( ddragnba_sub_portmap, ADDRESS_SPACE_IO, 8 )

View File

@ -173,25 +173,25 @@ static WRITE16_HANDLER( ddragon3_io_w )
case 1: /* soundlatch_w */
soundlatch_w(space, 1, state->io_reg[1] & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE );
break;
case 2:
/* this gets written to on startup and at the end of IRQ6
** possibly trigger IRQ on sound CPU
*/
cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 6, CLEAR_LINE);
break;
case 3:
/* this gets written to on startup,
** and at the end of IRQ5 (input port read) */
cputag_set_input_line(space->machine, "maincpu", 5, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 5, CLEAR_LINE);
break;
case 4:
/* this gets written to at the end of IRQ6 only */
cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 6, CLEAR_LINE);
break;
default:
@ -515,7 +515,8 @@ GFXDECODE_END
static void dd3_ymirq_handler(const device_config *device, int irq)
{
cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
ddragon3_state *state = (ddragon3_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0 , irq ? ASSERT_LINE : CLEAR_LINE );
}
static const ym2151_interface ym2151_config =
@ -531,6 +532,7 @@ static const ym2151_interface ym2151_config =
static TIMER_DEVICE_CALLBACK( ddragon3_scanline )
{
ddragon3_state *state = (ddragon3_state *)timer->machine->driver_data;
int scanline = param;
/* An interrupt is generated every 16 scanlines */
@ -538,14 +540,14 @@ static TIMER_DEVICE_CALLBACK( ddragon3_scanline )
{
if (scanline > 0)
video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
cputag_set_input_line(timer->machine, "maincpu", 5, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 5, ASSERT_LINE);
}
/* Vblank is raised on scanline 248 */
if (scanline == 248)
{
video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
cputag_set_input_line(timer->machine, "maincpu", 6, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 6, ASSERT_LINE);
}
}
@ -559,6 +561,9 @@ static MACHINE_START( ddragon3 )
{
ddragon3_state *state = (ddragon3_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->vreg);
state_save_register_global(machine, state->bg_scrollx);
state_save_register_global(machine, state->bg_scrolly);

View File

@ -124,7 +124,7 @@ static WRITE8_HANDLER( meikyuh_i8751_w )
break;
case 1: /* Low byte */
state->i8751_value = (state->i8751_value & 0xff00) | data;
cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, ASSERT_LINE);
cpu_set_input_line(state->mcu, MCS51_INT1_LINE, ASSERT_LINE);
break;
}
}
@ -241,7 +241,7 @@ static WRITE8_HANDLER( gondo_i8751_w )
case 0: /* High byte */
state->i8751_value = (state->i8751_value & 0xff) | (data << 8);
if (state->int_enable)
cputag_set_input_line (space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE); /* IRQ on *high* byte only */
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, HOLD_LINE); /* IRQ on *high* byte only */
break;
case 1: /* Low byte */
state->i8751_value = (state->i8751_value & 0xff00) | data;
@ -275,7 +275,7 @@ static WRITE8_HANDLER( shackled_i8751_w )
{
case 0: /* High byte */
state->i8751_value = (state->i8751_value & 0xff) | (data << 8);
cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
cpu_set_input_line(state->subcpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
break;
case 1: /* Low byte */
state->i8751_value = (state->i8751_value & 0xff00) | data;
@ -304,7 +304,7 @@ static WRITE8_HANDLER( lastmiss_i8751_w )
{
case 0: /* High byte */
state->i8751_value = (state->i8751_value & 0xff) | (data << 8);
cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
break;
case 1: /* Low byte */
state->i8751_value = (state->i8751_value & 0xff00) | data;
@ -336,7 +336,7 @@ static WRITE8_HANDLER( csilver_i8751_w )
{
case 0: /* High byte */
state->i8751_value = (state->i8751_value & 0xff) | (data << 8);
cputag_set_input_line (space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
break;
case 1: /* Low byte */
state->i8751_value = (state->i8751_value & 0xff00) | data;
@ -425,8 +425,9 @@ static WRITE8_HANDLER( csilver_control_w )
static WRITE8_HANDLER( dec8_sound_w )
{
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
dec8_state *state = (dec8_state *)space->machine->driver_data;
soundlatch_w(space, 0, data);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
static void csilver_adpcm_int( const device_config *device )
@ -434,7 +435,7 @@ static void csilver_adpcm_int( const device_config *device )
dec8_state *state = (dec8_state *)device->machine->driver_data;
state->toggle ^= 1;
if (state->toggle)
cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
cpu_set_input_line(state->audiocpu, M6502_IRQ_LINE, HOLD_LINE);
msm5205_data_w(device, state->msm5205next >> 4);
state->msm5205next <<= 4;
@ -461,20 +462,21 @@ static WRITE8_HANDLER( csilver_sound_bank_w )
static WRITE8_HANDLER( oscar_int_w )
{
dec8_state *state = (dec8_state *)space->machine->driver_data;
/* Deal with interrupts, coins also generate NMI to CPU 0 */
switch (offset)
{
case 0: /* IRQ2 */
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, ASSERT_LINE);
return;
case 1: /* IRC 1 */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, CLEAR_LINE);
return;
case 2: /* IRQ 1 */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, ASSERT_LINE);
return;
case 3: /* IRC 2 */
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, CLEAR_LINE);
return;
}
}
@ -482,6 +484,7 @@ static WRITE8_HANDLER( oscar_int_w )
/* Used by Shackled, Last Mission, Captain Silver */
static WRITE8_HANDLER( shackled_int_w )
{
dec8_state *state = (dec8_state *)space->machine->driver_data;
#if 0
/* This is correct, but the cpus in Shackled need an interleave of about 5000!
With lower interleave CPU 0 misses an interrupt at the start of the game
@ -489,18 +492,18 @@ static WRITE8_HANDLER( shackled_int_w )
switch (offset)
{
case 0: /* CPU 2 - IRQ acknowledge */
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, CLEAR_LINE);
return;
case 1: /* CPU 1 - IRQ acknowledge */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, CLEAR_LINE);
return;
case 2: /* i8751 - FIRQ acknowledge */
return;
case 3: /* IRQ 1 */
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, ASSERT_LINE);
return;
case 4: /* IRQ 2 */
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, ASSERT_LINE);
return;
}
#endif
@ -514,10 +517,10 @@ static WRITE8_HANDLER( shackled_int_w )
case 2: /* i8751 - FIRQ acknowledge */
return;
case 3: /* IRQ 1 */
cputag_set_input_line (space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, HOLD_LINE);
return;
case 4: /* IRQ 2 */
cputag_set_input_line (space->machine, "sub", M6809_IRQ_LINE, HOLD_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, HOLD_LINE);
return;
}
}
@ -535,7 +538,7 @@ static ADDRESS_MAP_START( cobra_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0800, 0x0fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x1000, 0x17ff) AM_READWRITE(dec8_pf1_data_r, dec8_pf1_data_w) AM_BASE_MEMBER(dec8_state, pf1_data)
AM_RANGE(0x1800, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x3200, 0x37ff) AM_WRITE(SMH_RAM) /* Unused */
@ -556,7 +559,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ghostb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x2800, 0x2bff) AM_RAM
AM_RANGE(0x2c00, 0x2dff) AM_RAM AM_BASE_MEMBER(dec8_state, row)
@ -580,7 +583,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( meikyuh_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x2800, 0x2bff) AM_RAM
AM_RANGE(0x2c00, 0x2dff) AM_RAM AM_BASE_MEMBER(dec8_state, row)
@ -626,7 +629,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gondo_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
@ -651,7 +654,7 @@ static ADDRESS_MAP_START( oscar_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE(1)
AM_RANGE(0x0f00, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE(2)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2800, 0x2fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */
AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram)
@ -696,7 +699,7 @@ static ADDRESS_MAP_START( lastmiss_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
AM_RANGE(0x180d, 0x180d) AM_WRITE(lastmiss_control_w) /* Bank switch + Scroll MSB */
AM_RANGE(0x180e, 0x180f) AM_WRITE(lastmiss_i8751_w)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
@ -766,7 +769,7 @@ static ADDRESS_MAP_START( shackled_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */
AM_RANGE(0x180e, 0x180f) AM_WRITE(shackled_i8751_w)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w)
@ -807,7 +810,7 @@ static ADDRESS_MAP_START( csilver_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(buffer_spriteram_w) /* DMA */
AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w)
@ -816,7 +819,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( garyoret_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x17ff) AM_RAM
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_MEMBER(dec8_state, videoram) AM_SIZE_MEMBER(dec8_state, videoram_size)
AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE_MEMBER(dec8_state, pf0_data)
AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2)
@ -888,7 +891,7 @@ static READ8_HANDLER( dec8_mcu_from_main_r )
case 0:
return ((state->i8751_value & 0xff00) >> 8);
case 1:
cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, CLEAR_LINE);
cpu_set_input_line(state->mcu, MCS51_INT1_LINE, CLEAR_LINE);
return state->i8751_value & 0xff;
}
@ -1094,8 +1097,9 @@ INPUT_PORTS_END
/* same but with coin latches hooked up with the irqs since we have a MCU dump. */
static INPUT_CHANGED( coin_inserted )
{
dec8_state *state = (dec8_state *)field->port->machine->driver_data;
if (newval)
cputag_set_input_line(field->port->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, HOLD_LINE);
}
static INPUT_PORTS_START( meikyuh )
@ -1926,9 +1930,10 @@ GFXDECODE_END
/******************************************************************************/
/* handler called by the 3812 emulator when the internal timers cause an IRQ */
static void irqhandler(const device_config *device, int linestate)
static void irqhandler( const device_config *device, int linestate )
{
cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* M6502_IRQ_LINE */
dec8_state *state = (dec8_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, 0, linestate); /* M6502_IRQ_LINE */
}
static const ym3526_interface ym3526_config =
@ -1994,6 +1999,11 @@ static MACHINE_START( dec8 )
{
dec8_state *state = (dec8_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->subcpu = devtag_get_device(machine, "sub");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->mcu = devtag_get_device(machine, "mcu");
state_save_register_global(machine, state->latch);
state_save_register_global(machine, state->nmi_enable);
state_save_register_global(machine, state->int_enable);

View File

@ -52,10 +52,11 @@ Notes:
static WRITE16_HANDLER( sound_command_w )
{
deniam_state *state = (deniam_state *)space->machine->driver_data;
if (ACCESSING_BITS_8_15)
{
soundlatch_w(space,offset, (data >> 8) & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audio_cpu, INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -75,7 +76,7 @@ static ADDRESS_MAP_START( deniam16b_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_BASE_MEMBER(deniam_state, videoram)
AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_BASE_MEMBER(deniam_state, textram)
AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(deniam_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(deniam_state, spriteram) AM_SIZE_MEMBER(deniam_state, spriteram_size)
AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE_MEMBER(deniam_state, paletteram)
AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_w)
AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
@ -105,7 +106,7 @@ static ADDRESS_MAP_START( deniam16c_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_BASE_MEMBER(deniam_state, videoram)
AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_BASE_MEMBER(deniam_state, textram)
AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(deniam_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(deniam_state, spriteram) AM_SIZE_MEMBER(deniam_state, spriteram_size)
AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE_MEMBER(deniam_state, paletteram)
AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
@ -218,7 +219,7 @@ static void irqhandler( const device_config *device, int linestate )
/* system 16c doesn't have the sound CPU */
if (state->audio_cpu != NULL)
cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
cpu_set_input_line(state->audio_cpu, 0, linestate);
}
static const ym3812_interface ym3812_config =

View File

@ -27,6 +27,9 @@ struct _destroyr_state
int attract;
int motor_speed;
int noise;
/* devices */
const device_config *maincpu;
};
@ -112,7 +115,7 @@ static TIMER_CALLBACK( destroyr_dial_callback )
if (state->potmask[dial])
{
cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -174,7 +177,8 @@ static WRITE8_HANDLER( destroyr_cursor_load_w )
static WRITE8_HANDLER( destroyr_interrupt_ack_w )
{
cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
destroyr_state *state = (destroyr_state *)space->machine->driver_data;
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -428,6 +432,8 @@ static MACHINE_START( destroyr )
{
destroyr_state *state = (destroyr_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->cursor);
state_save_register_global(machine, state->wavemod);
state_save_register_global(machine, state->attract);

View File

@ -58,6 +58,9 @@ struct _discoboy_state
UINT8 gfxbank;
UINT8 port_00;
int adpcm_data;
/* devices */
const device_config *audiocpu;
};
@ -210,10 +213,11 @@ static WRITE8_HANDLER( discoboy_port_01_w )
static WRITE8_HANDLER( discoboy_port_03_w ) // sfx? (to sound cpu)
{
// printf("unk discoboy_port_03_w %02x\n", data);
// cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, HOLD_LINE);
discoboy_state *state = (discoboy_state *)space->machine->driver_data;
// printf("unk discoboy_port_03_w %02x\n", data);
// cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, HOLD_LINE);
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
cpu_set_input_line(state->audiocpu, 0, HOLD_LINE);
}
static WRITE8_HANDLER( discoboy_port_06_w )
@ -437,6 +441,8 @@ static MACHINE_START( discoboy )
{
discoboy_state *state = (discoboy_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->ram_bank);
state_save_register_global(machine, state->port_00);
state_save_register_global(machine, state->gfxbank);

View File

@ -58,7 +58,11 @@ struct _diverboy_state
{
/* memory pointers */
UINT16 * spriteram;
// UINT16 * paletteram16; // currently this uses generic palette handling
// UINT16 * paletteram; // currently this uses generic palette handling
size_t spriteram_size;
/* devices */
const device_config *audiocpu;
};
@ -70,7 +74,7 @@ static void draw_sprites( running_machine* machine, bitmap_t *bitmap, const rect
{
diverboy_state *state = (diverboy_state *)machine->driver_data;
UINT16 *source = state->spriteram;
UINT16 *finish = source + (machine->generic.spriteram_size / 2);
UINT16 *finish = source + (state->spriteram_size / 2);
while (source < finish)
{
@ -112,10 +116,12 @@ VIDEO_UPDATE(diverboy)
static WRITE16_HANDLER( soundcmd_w )
{
diverboy_state *state = (diverboy_state *)space->machine->driver_data;
if (ACCESSING_BITS_0_7)
{
soundlatch_w(space, 0, data & 0xff);
cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
cpu_set_input_line(state->audiocpu, 0, HOLD_LINE);
}
}
@ -132,7 +138,7 @@ static WRITE8_DEVICE_HANDLER( okibank_w )
static ADDRESS_MAP_START( diverboy_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x04ffff) AM_RAM
AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE_MEMBER(diverboy_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE_MEMBER(diverboy_state, spriteram) AM_SIZE_MEMBER(diverboy_state, spriteram_size)
AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w)
AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2")
@ -232,6 +238,12 @@ static GFXDECODE_START( diverboy )
GFXDECODE_END
static MACHINE_START( diverboy )
{
diverboy_state *state = (diverboy_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
}
static MACHINE_DRIVER_START( diverboy )
MDRV_DRIVER_DATA(diverboy_state)
@ -243,8 +255,9 @@ static MACHINE_DRIVER_START( diverboy )
MDRV_CPU_ADD("audiocpu", Z80, 4000000)
MDRV_CPU_PROGRAM_MAP(snd_map)
MDRV_GFXDECODE(diverboy)
MDRV_MACHINE_START(diverboy)
MDRV_GFXDECODE(diverboy)
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)

View File

@ -213,7 +213,7 @@ static WRITE8_DEVICE_HANDLER( idsoccer_adpcm_w )
static ADDRESS_MAP_START( docastle_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x97ff) AM_RAM
AM_RANGE(0x9800, 0x99ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x9800, 0x99ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_MEMBER(docastle_state, spriteram_size)
AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
AM_RANGE(0xa800, 0xa800) AM_WRITE(watchdog_reset_w)
AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_videoram_w) AM_BASE_MEMBER(docastle_state, videoram)
@ -256,7 +256,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dorunrun_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x37ff) AM_RAM
AM_RANGE(0x3800, 0x39ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x3800, 0x39ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_MEMBER(docastle_state, spriteram_size)
AM_RANGE(0x4000, 0x9fff) AM_ROM
AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
AM_RANGE(0xa800, 0xa800) AM_WRITE(watchdog_reset_w)
@ -286,7 +286,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( idsoccer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x57ff) AM_RAM
AM_RANGE(0x5800, 0x59ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x5800, 0x59ff) AM_RAM AM_BASE_MEMBER(docastle_state, spriteram) AM_SIZE_MEMBER(docastle_state, spriteram_size)
AM_RANGE(0x6000, 0x9fff) AM_ROM
AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w)
AM_RANGE(0xa800, 0xa800) AM_WRITE(watchdog_reset_w)
@ -592,6 +592,8 @@ static MACHINE_START( docastle )
{
docastle_state *state = (docastle_state *)machine->driver_data;
state->slave = devtag_get_device(machine, "slave");
state_save_register_global(machine, state->adpcm_pos);
state_save_register_global(machine, state->adpcm_data);
state_save_register_global(machine, state->adpcm_idle);

View File

@ -29,14 +29,16 @@ static WRITE8_HANDLER( sharedram_w )
static WRITE8_HANDLER( subirqtrigger_w )
{
dogfgt_state *state = (dogfgt_state *)space->machine->driver_data;
/* bit 0 used but unknown */
if (data & 0x04)
cputag_set_input_line(space->machine, "sub", 0, ASSERT_LINE);
cpu_set_input_line(state->subcpu, 0, ASSERT_LINE);
}
static WRITE8_HANDLER( sub_irqack_w )
{
cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
dogfgt_state *state = (dogfgt_state *)space->machine->driver_data;
cpu_set_input_line(state->subcpu, 0, CLEAR_LINE);
}
static WRITE8_HANDLER( dogfgt_soundlatch_w )
@ -64,7 +66,7 @@ static WRITE8_HANDLER( dogfgt_soundcontrol_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(dogfgt_state, sharedram)
AM_RANGE(0x0f80, 0x0fdf) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(dogfgt_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x0f80, 0x0fdf) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(dogfgt_state, spriteram) AM_SIZE_MEMBER(dogfgt_state, spriteram_size)
AM_RANGE(0x1000, 0x17ff) AM_WRITE(dogfgt_bgvideoram_w) AM_BASE_MEMBER(dogfgt_state, bgvideoram)
AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
AM_RANGE(0x1800, 0x1800) AM_WRITE(dogfgt_1800_w) /* text color, flip screen & coin counters */
@ -215,6 +217,8 @@ static MACHINE_START( dogfgt )
{
dogfgt_state *state = (dogfgt_state *)machine->driver_data;
state->subcpu = devtag_get_device(machine, "sub");
state_save_register_global(machine, state->bm_plane);
state_save_register_global(machine, state->lastflip);
state_save_register_global(machine, state->pixcolor);

View File

@ -42,6 +42,7 @@ struct _dominob_state
UINT8 * videoram;
UINT8 * bgram;
// UINT8 * paletteram; // currently this uses generic palette handling
size_t spriteram_size;
/* input-related */
//UINT8 paddle_select;
@ -58,7 +59,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
dominob_state *state = (dominob_state *)machine->driver_data;
int offs;
for (offs = 0; offs < machine->generic.spriteram_size; offs += 4)
for (offs = 0; offs < state->spriteram_size; offs += 4)
{
int sx, sy, code;
@ -142,7 +143,7 @@ static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd018, 0xd018) AM_READ_PORT("IN2") AM_WRITENOP
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_MEMBER(dominob_state, videoram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(dominob_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xe83f) AM_RAM AM_BASE_MEMBER(dominob_state, spriteram) AM_SIZE_MEMBER(dominob_state, spriteram_size)
AM_RANGE(0xe840, 0xefff) AM_RAM
AM_RANGE(0xf000, 0xf07f) AM_RAM AM_BASE_MEMBER(dominob_state, bgram)
AM_RANGE(0xf080, 0xf7ff) AM_RAM

View File

@ -21,6 +21,7 @@ struct _dorachan_state
{
/* memory pointers */
UINT8 * videoram;
size_t videoram_size;
/* video-related */
UINT8 flip_screen;
@ -85,7 +86,7 @@ static VIDEO_UPDATE( dorachan )
color_map_base = memory_region(screen->machine, "proms");
for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
for (offs = 0; offs < state->videoram_size; offs++)
{
int i;
UINT8 fore_color;
@ -148,7 +149,7 @@ static ADDRESS_MAP_START( dorachan_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("SYSTEM")
AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READ_PORT("JOY")
AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ_PORT("V128")
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(dorachan_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_MEMBER(dorachan_state, videoram) AM_SIZE_MEMBER(dorachan_state, videoram_size)
AM_RANGE(0x6000, 0x77ff) AM_ROM
ADDRESS_MAP_END

View File

@ -29,6 +29,7 @@ struct _dotrikun_state
{
/* memory pointers */
UINT8 * videoram;
size_t videoram_size;
/* video-related */
UINT8 color;
@ -57,7 +58,7 @@ VIDEO_UPDATE( dotrikun )
pen_t back_pen = MAKE_RGB(pal1bit(state->color >> 3), pal1bit(state->color >> 4), pal1bit(state->color >> 5));
pen_t fore_pen = MAKE_RGB(pal1bit(state->color >> 0), pal1bit(state->color >> 1), pal1bit(state->color >> 2));
for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
for (offs = 0; offs < state->videoram_size; offs++)
{
int i;
UINT8 data = state->videoram[offs];
@ -92,7 +93,7 @@ VIDEO_UPDATE( dotrikun )
static ADDRESS_MAP_START( dotrikun_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(dotrikun_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(dotrikun_state, videoram) AM_SIZE_MEMBER(dotrikun_state, videoram_size)
ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )

View File

@ -212,7 +212,7 @@ static ADDRESS_MAP_START( drgnmst_main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(drgnmst_bg_videoram_w) AM_BASE_MEMBER(drgnmst_state, bg_videoram)
AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(drgnmst_fg_videoram_w) AM_BASE_MEMBER(drgnmst_state, fg_videoram)
AM_RANGE(0x920000, 0x923fff) AM_RAM AM_BASE_MEMBER(drgnmst_state, rowscrollram) // rowscroll ram
AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_BASE_MEMBER(drgnmst_state, spriteram) AM_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_BASE_MEMBER(drgnmst_state, spriteram) AM_SIZE_MEMBER(drgnmst_state, spriteram_size) // Sprites
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END

View File

@ -91,7 +91,7 @@ static WRITE8_DEVICE_HANDLER( misc_w )
/* bit 7 = di */
state->di = (data >> 7) & 1;
if (!state->di)
cputag_set_input_line(device->machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
/* bit 6 = parata */
@ -287,6 +287,7 @@ static MACHINE_START( dribling )
{
dribling_state *state = (dribling_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->ppi_0 = devtag_get_device(machine, "ppi8255_0");
state->ppi_1 = devtag_get_device(machine, "ppi8255_1");

View File

@ -61,8 +61,10 @@ struct _egghunt_state
/* misc */
UINT8 okibanking;
UINT8 gfx_banking;
};
/* devices */
const device_config *audiocpu;
};
static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect )
@ -196,8 +198,9 @@ static WRITE8_HANDLER( egghunt_vidram_bank_w )
static WRITE8_HANDLER( egghunt_soundlatch_w )
{
egghunt_state *state = (egghunt_state *)space->machine->driver_data;
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
cpu_set_input_line(state->audiocpu, 0, HOLD_LINE);
}
static READ8_DEVICE_HANDLER( egghunt_okibanking_r )
@ -386,6 +389,8 @@ static MACHINE_START( egghunt )
{
egghunt_state *state = (egghunt_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->gfx_banking);
state_save_register_global(machine, state->okibanking);
state_save_register_global(machine, state->vidram_bank);

View File

@ -13,6 +13,7 @@ struct _embargo_state
{
/* memory pointers */
UINT8 * videoram;
size_t videoram_size;
/* misc */
UINT8 dial_enable_1;
@ -32,7 +33,7 @@ static VIDEO_UPDATE( embargo )
embargo_state *state = (embargo_state *)screen->machine->driver_data;
offs_t offs;
for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
for (offs = 0; offs < state->videoram_size; offs++)
{
int i;
@ -151,7 +152,7 @@ static WRITE8_HANDLER( input_select_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1e00, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(embargo_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_MEMBER(embargo_state, videoram) AM_SIZE_MEMBER(embargo_state, videoram_size)
ADDRESS_MAP_END

View File

@ -69,6 +69,10 @@ struct _enigma2_state
emu_timer *interrupt_clear_timer;
emu_timer *interrupt_assert_timer;
/* devices */
const device_config *maincpu;
const device_config *audiocpu;
};
@ -93,7 +97,8 @@ INLINE int vysnc_chain_counter_to_vpos( UINT16 counter )
static TIMER_CALLBACK( interrupt_clear_callback )
{
cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
enigma2_state *state = (enigma2_state *)machine->driver_data;
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -107,7 +112,7 @@ static TIMER_CALLBACK( interrupt_assert_callback )
int vpos = video_screen_get_vpos(machine->primary_screen);
UINT16 counter = vpos_to_vysnc_chain_counter(vpos);
UINT8 vector = 0xc7 | ((counter & 0x80) >> 3) | ((~counter & 0x80) >> 4);
cputag_set_input_line_and_vector(machine, "maincpu", 0, ASSERT_LINE, vector);
cpu_set_input_line_and_vector(state->maincpu, 0, ASSERT_LINE, vector);
/* set up for next interrupt */
if (counter == INT_TRIGGER_COUNT_1)
@ -143,6 +148,9 @@ static MACHINE_START( enigma2 )
enigma2_state *state = (enigma2_state *)machine->driver_data;
create_interrupt_timers(machine);
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->blink_count);
state_save_register_global(machine, state->sound_latch);
state_save_register_global(machine, state->last_sound_data);
@ -372,7 +380,7 @@ static WRITE8_HANDLER( sound_data_w )
if (!(data & 0x04) && (state->last_sound_data & 0x04))
state->sound_latch = (state->sound_latch << 1) | (~data & 0x01);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
state->last_sound_data = data;
}

View File

@ -60,7 +60,7 @@ static WRITE8_HANDLER( dealer_decrypt_rom )
static ADDRESS_MAP_START( epos_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x77ff) AM_ROM
AM_RANGE(0x7800, 0x7fff) AM_RAM
AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE_MEMBER(epos_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE_MEMBER(epos_state, videoram) AM_SIZE_MEMBER(epos_state, videoram_size)
ADDRESS_MAP_END
@ -68,7 +68,7 @@ static ADDRESS_MAP_START( dealer_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROMBANK(1)
AM_RANGE(0x6000, 0x6fff) AM_ROMBANK(2)
AM_RANGE(0x7000, 0x7fff) AM_RAM
AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE_MEMBER(epos_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE_MEMBER(epos_state, videoram) AM_SIZE_MEMBER(epos_state, videoram_size)
ADDRESS_MAP_END
/*************************************

View File

@ -392,7 +392,8 @@ D
static TIMER_CALLBACK( equites_nmi_callback )
{
cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
equites_state *state = (equites_state *)machine->driver_data;
cpu_set_input_line(state->audio_cpu, INPUT_LINE_NMI, ASSERT_LINE);
}
static TIMER_CALLBACK( equites_frq_adjuster_callback )
@ -425,7 +426,7 @@ static WRITE8_HANDLER(equites_c0f8_w)
switch (offset)
{
case 0: // c0f8: NMI ack (written by NMI handler)
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
cpu_set_input_line(state->audio_cpu, INPUT_LINE_NMI, CLEAR_LINE);
break;
case 1: // c0f9: RST75 trigger (written by NMI handler)
@ -435,7 +436,7 @@ static WRITE8_HANDLER(equites_c0f8_w)
case 2: // c0fa: INTR trigger (written by NMI handler)
// verified on PCB:
cputag_set_input_line(space->machine, "audiocpu", I8085_INTR_LINE, HOLD_LINE);
cpu_set_input_line(state->audio_cpu, I8085_INTR_LINE, HOLD_LINE);
break;
case 3: // c0fb: n.c.
@ -681,12 +682,14 @@ static WRITE16_HANDLER(mcu_w)
static WRITE16_HANDLER( mcu_halt_assert_w )
{
cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
equites_state *state = (equites_state *)space->machine->driver_data;
cpu_set_input_line(state->mcu, INPUT_LINE_HALT, ASSERT_LINE);
}
static WRITE16_HANDLER( mcu_halt_clear_w )
{
cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
equites_state *state = (equites_state *)space->machine->driver_data;
cpu_set_input_line(state->mcu, INPUT_LINE_HALT, CLEAR_LINE);
}
@ -1182,6 +1185,7 @@ static MACHINE_START( equites )
{
equites_state *state = (equites_state *)machine->driver_data;
state->mcu = devtag_get_device(machine, "mcu");
state->audio_cpu = devtag_get_device(machine, "audiocpu");
state->msm = devtag_get_device(machine, "msm");
state->dac_1 = devtag_get_device(machine, "dac1");

View File

@ -61,7 +61,7 @@ Head Panic
static WRITE16_HANDLER( esd16_spriteram_w )
{
esd16_state *state = (esd16_state *)space->machine->driver_data;
COMBINE_DATA(&state->spriteram16[offset]);
COMBINE_DATA(&state->spriteram[offset]);
}
static WRITE16_HANDLER( esd16_sound_command_w )
@ -85,7 +85,7 @@ static ADDRESS_MAP_START( multchmp_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
/**/AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE_MEMBER(esd16_state, spriteram16) AM_SIZE_GENERIC(spriteram) // Sprites
/**/AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE_MEMBER(esd16_state, spriteram) AM_SIZE_MEMBER(esd16_state, spriteram_size) // Sprites
AM_RANGE(0x300800, 0x300807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored)
/**/AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(esd16_vram_0_w) AM_BASE_MEMBER(esd16_state, vram_0) // Layers
/**/AM_RANGE(0x420000, 0x423fff) AM_RAM_WRITE(esd16_vram_1_w) AM_BASE_MEMBER(esd16_state, vram_1) //
@ -137,7 +137,7 @@ static ADDRESS_MAP_START( hedpanic_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x900000, 0x9007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram16) AM_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x900000, 0x9007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram) AM_SIZE_MEMBER(esd16_state, spriteram_size) // Sprites
AM_RANGE(0x900800, 0x900807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored)
AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(esd16_vram_0_w) AM_BASE_MEMBER(esd16_state, vram_0) // Layers
AM_RANGE(0xa20000, 0xa23fff) AM_WRITE(esd16_vram_1_w) AM_BASE_MEMBER(esd16_state, vram_1) //
@ -176,7 +176,7 @@ static ADDRESS_MAP_START( mchampdx_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP // ? 2 not checked
AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w) // To Sound CPU // ok
AM_RANGE(0x50000e, 0x50000f) AM_WRITE(esd_eeprom_w)
AM_RANGE(0x600000, 0x6007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram16) AM_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x600000, 0x6007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram) AM_SIZE_MEMBER(esd16_state, spriteram_size) // Sprites
AM_RANGE(0x600800, 0x600807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored)
AM_RANGE(0x700000, 0x700003) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, scroll_0) // Scroll
AM_RANGE(0x700004, 0x700007) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, scroll_1) //
@ -192,7 +192,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tangtang_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // RAM
AM_RANGE(0x200000, 0x2007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram16) AM_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x200000, 0x2007ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(esd16_state, spriteram) AM_SIZE_MEMBER(esd16_state, spriteram_size) // Sprites
AM_RANGE(0x200800, 0x200807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored)
AM_RANGE(0x300000, 0x303fff) AM_WRITE(esd16_vram_0_w) AM_BASE_MEMBER(esd16_state, vram_0) // Layers
AM_RANGE(0x320000, 0x323fff) AM_WRITE(esd16_vram_1_w) AM_BASE_MEMBER(esd16_state, vram_1) //

View File

@ -16,8 +16,9 @@ Espial: The Orca logo is displayed, but looks to be "blacked out" via the
static TIMER_CALLBACK( interrupt_disable )
{
espial_state *state = (espial_state *)machine->driver_data;
//interrupt_enable = 0;
cpu_interrupt_enable(cputag_get_cpu(machine, "maincpu"), 0);
cpu_interrupt_enable(state->maincpu, 0);
}
MACHINE_RESET( espial )
@ -35,6 +36,9 @@ MACHINE_START( espial )
{
espial_state *state = (espial_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->audiocpu = devtag_get_device(machine, "audiocpu");
//state_save_register_global_array(machine, mcu_out[1]);
state_save_register_global(machine, state->sound_nmi_enabled);
}
@ -73,8 +77,9 @@ INTERRUPT_GEN( zodiac_master_interrupt )
WRITE8_HANDLER( zodiac_master_soundlatch_w )
{
espial_state *state = (espial_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
cpu_set_input_line(state->audiocpu, 0, HOLD_LINE);
}

View File

@ -35,8 +35,9 @@ static READ8_HANDLER( exerion_port01_r )
static INPUT_CHANGED( coin_inserted )
{
exerion_state *state = (exerion_state *)field->port->machine->driver_data;
/* coin insertion causes an NMI */
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
}
@ -91,8 +92,8 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6008, 0x600b) AM_READ(exerion_protection_r)
AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE_MEMBER(exerion_state, main_ram)
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(exerion_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x8800, 0x887f) AM_RAM AM_BASE_MEMBER(exerion_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(exerion_state, videoram) AM_SIZE_MEMBER(exerion_state, videoram_size)
AM_RANGE(0x8800, 0x887f) AM_RAM AM_BASE_MEMBER(exerion_state, spriteram) AM_SIZE_MEMBER(exerion_state, spriteram_size)
AM_RANGE(0x8800, 0x8bff) AM_RAM
AM_RANGE(0xa000, 0xa000) AM_READ(exerion_port01_r)
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("DSW0")
@ -278,6 +279,8 @@ static MACHINE_START( exerion )
{
exerion_state *state = (exerion_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->porta);
state_save_register_global(machine, state->portb);
state_save_register_global(machine, state->cocktail_flip);

View File

@ -233,8 +233,9 @@ static READ8_HANDLER( exprraid_protection_r )
static WRITE8_HANDLER( sound_cpu_command_w )
{
exprraid_state *state = (exprraid_state *)space->machine->driver_data;
soundlatch_w(space, 0, data);
cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->slave, INPUT_LINE_NMI, PULSE_LINE);
}
static READ8_HANDLER( vblank_r )
@ -244,7 +245,7 @@ static READ8_HANDLER( vblank_r )
static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x05ff) AM_RAM AM_BASE_MEMBER(exprraid_state, main_ram)
AM_RANGE(0x0600, 0x07ff) AM_RAM AM_BASE_MEMBER(exprraid_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x0600, 0x07ff) AM_RAM AM_BASE_MEMBER(exprraid_state, spriteram) AM_SIZE_MEMBER(exprraid_state, spriteram_size)
AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(exprraid_videoram_w) AM_BASE_MEMBER(exprraid_state, videoram)
AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(exprraid_colorram_w) AM_BASE_MEMBER(exprraid_state, colorram)
AM_RANGE(0x1317, 0x1317) AM_READNOP // ???
@ -279,12 +280,14 @@ ADDRESS_MAP_END
static INPUT_CHANGED( coin_inserted_deco16 )
{
cputag_set_input_line(field->port->machine, "maincpu", DECO16_IRQ_LINE, newval ? CLEAR_LINE : ASSERT_LINE);
exprraid_state *state = (exprraid_state *)field->port->machine->driver_data;
cpu_set_input_line(state->maincpu, DECO16_IRQ_LINE, newval ? CLEAR_LINE : ASSERT_LINE);
}
static INPUT_CHANGED( coin_inserted_nmi )
{
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
exprraid_state *state = (exprraid_state *)field->port->machine->driver_data;
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
}
static INPUT_PORTS_START( exprraid )
@ -438,7 +441,8 @@ GFXDECODE_END
/* handler called by the 3812 emulator when the internal timers cause an IRQ */
static void irqhandler( const device_config *device, int linestate )
{
cputag_set_input_line_and_vector(device->machine, "slave", 0, linestate, 0xff);
exprraid_state *state = (exprraid_state *)device->machine->driver_data;
cpu_set_input_line_and_vector(state->slave, 0, linestate, 0xff);
}
static const ym3526_interface ym3526_config =
@ -473,6 +477,9 @@ static MACHINE_START( exprraid )
{
exprraid_state *state = (exprraid_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->slave = devtag_get_device(machine, "slave");
state_save_register_global_array(machine, state->bg_index);
}

View File

@ -119,8 +119,8 @@ static WRITE8_HANDLER(ee00_w)
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER(fcombat_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(fcombat_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER(fcombat_state, videoram) AM_SIZE_MEMBER(fcombat_state, videoram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(fcombat_state, spriteram) AM_SIZE_MEMBER(fcombat_state, spriteram)
AM_RANGE(0xe000, 0xe000) AM_READ(fcombat_port01_r)
AM_RANGE(0xe100, 0xe100) AM_READ_PORT("DSW0")
AM_RANGE(0xe200, 0xe200) AM_READ_PORT("DSW1")

View File

@ -118,10 +118,10 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w) /* custom sound chip */
AM_RANGE(0x081d, 0x081d) AM_WRITE(soundlatch_w) /* custom sound chip */
AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE_MEMBER(finalizr_state, colorram)
AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE_MEMBER(finalizr_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE_MEMBER(finalizr_state, videoram) AM_SIZE_MEMBER(finalizr_state, videoram_size)
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_BASE_MEMBER(finalizr_state, colorram2)
AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_BASE_MEMBER(finalizr_state, videoram2)
AM_RANGE(0x3000, 0x31ff) AM_RAM AM_BASE_MEMBER(finalizr_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x3000, 0x31ff) AM_RAM AM_BASE_MEMBER(finalizr_state, spriteram) AM_SIZE_MEMBER(finalizr_state, spriteram_size)
AM_RANGE(0x3200, 0x37ff) AM_RAM
AM_RANGE(0x3800, 0x39ff) AM_RAM AM_BASE_MEMBER(finalizr_state, spriteram_2)
AM_RANGE(0x3a00, 0x3fff) AM_RAM

View File

@ -228,7 +228,7 @@ static ADDRESS_MAP_START( firetrap_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_BASE_MEMBER(firetrap_state, bg1videoram)
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_BASE_MEMBER(firetrap_state, bg2videoram)
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_BASE_MEMBER(firetrap_state, fgvideoram)
AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE_MEMBER(firetrap_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE_MEMBER(firetrap_state, spriteram) AM_SIZE_MEMBER(firetrap_state, spriteram_size)
AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* IRQ acknowledge */
AM_RANGE(0xf001, 0xf001) AM_WRITE(firetrap_sound_command_w)
AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w)
@ -254,7 +254,7 @@ static ADDRESS_MAP_START( firetrap_bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_BASE_MEMBER(firetrap_state, bg1videoram)
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_BASE_MEMBER(firetrap_state, bg2videoram)
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_BASE_MEMBER(firetrap_state, fgvideoram)
AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE_MEMBER(firetrap_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE_MEMBER(firetrap_state, spriteram) AM_SIZE_MEMBER(firetrap_state, spriteram_size)
AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* IRQ acknowledge */
AM_RANGE(0xf001, 0xf001) AM_WRITE(firetrap_sound_command_w)
AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w)

View File

@ -73,7 +73,7 @@ static WRITE8_HANDLER( nmi_enable_w )
static ADDRESS_MAP_START( flstory_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_MEMBER(flstory_state, videoram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM /* unknown */
AM_RANGE(0xd000, 0xd000) AM_READWRITE(flstory_mcu_r, flstory_mcu_w)
AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog? */
@ -89,7 +89,7 @@ static ADDRESS_MAP_START( flstory_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2")
// AM_RANGE(0xda00, 0xda00) AM_WRITE(SMH_RAM)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_MEMBER(flstory_state, spriteram_size)
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(flstory_scrlram_w) AM_BASE_MEMBER(flstory_state, scrlram)
AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(flstory_palette_r, flstory_palette_w)
@ -99,7 +99,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( onna34ro_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_MEMBER(flstory_state, videoram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM /* unknown */
AM_RANGE(0xd000, 0xd000) AM_READWRITE(onna34ro_mcu_r, onna34ro_mcu_w)
AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog? */
@ -115,7 +115,7 @@ static ADDRESS_MAP_START( onna34ro_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd805, 0xd805) AM_READ(onna34ro_mcu_status_r)
AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2")
// AM_RANGE(0xda00, 0xda00) AM_WRITE(SMH_RAM)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_MEMBER(flstory_state, spriteram_size)
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(flstory_scrlram_w) AM_BASE_MEMBER(flstory_state, scrlram)
AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */
AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(flstory_palette_r, flstory_palette_w)
@ -133,7 +133,7 @@ static CUSTOM_INPUT( victnine_mcu_status_bit01_r )
static ADDRESS_MAP_START( victnine_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_BASE_MEMBER(flstory_state, videoram) AM_SIZE_MEMBER(flstory_state, videoram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM /* unknown */
AM_RANGE(0xd000, 0xd000) AM_READWRITE(victnine_mcu_r, victnine_mcu_w)
AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog? */
@ -150,7 +150,7 @@ static ADDRESS_MAP_START( victnine_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2")
AM_RANGE(0xd807, 0xd807) AM_READ_PORT("EXTRA_P2")
// AM_RANGE(0xda00, 0xda00) AM_WRITE(SMH_RAM)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_BASE_MEMBER(flstory_state, spriteram) AM_SIZE_MEMBER(flstory_state, spriteram_size)
AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(flstory_scrlram_w) AM_BASE_MEMBER(flstory_state, scrlram)
AM_RANGE(0xdce0, 0xdce0) AM_READWRITE(victnine_gfxctrl_r, victnine_gfxctrl_w)
AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP /* unknown */

View File

@ -53,7 +53,7 @@ static WRITE8_HANDLER( flipscreen_w )
static WRITE8_HANDLER( coin_w )
{
coin_counter_w(space->machine, offset,~data & 1);
coin_counter_w(space->machine, offset, ~data & 1);
}
static WRITE8_HANDLER( spinner_select_w )
@ -167,7 +167,7 @@ static ADDRESS_MAP_START( pbillrd_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE_MEMBER(freekick_state, videoram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_MEMBER(freekick_state, spriteram_size)
AM_RANGE(0xd900, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
AM_RANGE(0xe000, 0xe001) AM_WRITE(flipscreen_w)
@ -186,7 +186,7 @@ static ADDRESS_MAP_START( freekckb_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xcfff) AM_ROM
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE_MEMBER(freekick_state, videoram) // tilemap
AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_GENERIC(spriteram) // sprites
AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_MEMBER(freekick_state, spriteram_size) // sprites
AM_RANGE(0xec00, 0xec03) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0") AM_WRITE(flipscreen_w)
@ -206,7 +206,7 @@ static ADDRESS_MAP_START( gigas_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE_MEMBER(freekick_state, videoram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE_MEMBER(freekick_state, spriteram) AM_SIZE_MEMBER(freekick_state, spriteram_size)
AM_RANGE(0xd900, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITENOP // probably not flipscreen
AM_RANGE(0xe002, 0xe003) AM_WRITE(coin_w)

View File

@ -60,7 +60,7 @@ static ADDRESS_MAP_START( hexa_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w)
AM_RANGE(0xd010, 0xd010) AM_WRITE(watchdog_reset_w) /* or IRQ acknowledge, or both */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE_MEMBER(hexa_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE_MEMBER(hexa_state, videoram) AM_SIZE_MEMBER(hexa_state, videoram_size)
ADDRESS_MAP_END

View File

@ -130,8 +130,9 @@ Notes (couriersud)
static WRITE8_DEVICE_HANDLER( ic8j1_output_changed )
{
m10_state *state = (m10_state *)device->machine->driver_data;
LOG(("ic8j1: %d %d\n", data, video_screen_get_vpos(device->machine->primary_screen)));
cputag_set_input_line(device->machine, "maincpu", 0, !data ? CLEAR_LINE : ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, !data ? CLEAR_LINE : ASSERT_LINE);
}
static WRITE8_DEVICE_HANDLER( ic8j2_output_changed )
@ -195,6 +196,7 @@ static MACHINE_START( m10 )
{
m10_state *state = (m10_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->ic8j1 = devtag_get_device(machine, "ic8j1");
state->ic8j2 = devtag_get_device(machine, "ic8j2");
state->samples = devtag_get_device(machine, "samples");
@ -491,7 +493,7 @@ static READ8_HANDLER( m11_a700_r )
{
m10_state *state = (m10_state *)space->machine->driver_data;
//LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen)));
//cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
//cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
LOG(("clear\n"));
ttl74123_clear_w(state->ic8j1, 0, 0);
ttl74123_clear_w(state->ic8j1, 0, 1);
@ -506,25 +508,27 @@ static READ8_HANDLER( m11_a700_r )
static INPUT_CHANGED( coin_inserted )
{
m10_state *state = (m10_state *)field->port->machine->driver_data;
/* coin insertion causes an NMI */
cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
}
static TIMER_CALLBACK( interrupt_callback )
{
m10_state *state = (m10_state *)machine->driver_data;
if (param == 0)
{
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART + 16, 0), NULL, 1, interrupt_callback);
}
if (param == 1)
{
cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
cpu_set_input_line(state->maincpu, 0, ASSERT_LINE);
timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART + 24, 0), NULL, 2, interrupt_callback);
}
if (param == -1)
cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
@ -556,7 +560,7 @@ static INTERRUPT_GEN( m15_interrupt )
static ADDRESS_MAP_START( m10_main, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
AM_RANGE(0x1000, 0x2fff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_MEMBER(m10_state, videoram_size)
AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour */
AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(m10_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW")
@ -570,7 +574,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( m11_main, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
AM_RANGE(0x1000, 0x2fff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_MEMBER(m10_state, videoram_size)
AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour */
AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
AM_RANGE(0xa100, 0xa100) AM_WRITE(m11_a100_w) /* sound writes ???? */
@ -584,7 +588,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( m15_main, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x02ff) AM_RAM AM_BASE_MEMBER(m10_state, memory) /* scratch ram */
AM_RANGE(0x1000, 0x33ff) AM_READ(SMH_ROM) AM_BASE_MEMBER(m10_state, rom)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE_MEMBER(m10_state, videoram) AM_SIZE_MEMBER(m10_state, videoram_size)
AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_BASE_MEMBER(m10_state, colorram) /* foreground colour */
AM_RANGE(0x5000, 0x57ff) AM_RAM_WRITE(m15_chargen_w) AM_BASE_MEMBER(m10_state, chargen) /* background ????? */
AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")

View File

@ -64,6 +64,9 @@ struct _m14_state
/* input-related */
UINT8 hop_mux;
/* devices */
const device_config *maincpu;
};
@ -216,16 +219,18 @@ ADDRESS_MAP_END
static INPUT_CHANGED( left_coin_inserted )
{
m14_state *state = (m14_state *)field->port->machine->driver_data;
/* left coin insertion causes a rst6.5 (vector 0x34) */
if (newval)
cputag_set_input_line(field->port->machine, "maincpu", I8085_RST65_LINE, HOLD_LINE);
cpu_set_input_line(state->maincpu, I8085_RST65_LINE, HOLD_LINE);
}
static INPUT_CHANGED( right_coin_inserted )
{
m14_state *state = (m14_state *)field->port->machine->driver_data;
/* right coin insertion causes a rst5.5 (vector 0x2c) */
if (newval)
cputag_set_input_line(field->port->machine, "maincpu", I8085_RST55_LINE, HOLD_LINE);
cpu_set_input_line(state->maincpu, I8085_RST55_LINE, HOLD_LINE);
}
static INPUT_PORTS_START( m14 )
@ -308,6 +313,8 @@ static MACHINE_START( m14 )
{
m14_state *state = (m14_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->hop_mux);
}

View File

@ -62,7 +62,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE_MEMBER(irem_z80_state, colorram)
AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r)
AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_WRITE(irem_sound_cmd_w)
AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */
AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0")
@ -78,7 +78,7 @@ static ADDRESS_MAP_START( alpha1v_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x6fff) AM_ROM
AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_BASE_MEMBER(irem_z80_state, colorram)
AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram) AM_SHARE(1) // bigger or mirrored?
AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size) AM_SHARE(1) // bigger or mirrored?
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_WRITE(irem_sound_cmd_w)
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w)
AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")

View File

@ -67,7 +67,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE_MEMBER(irem_z80_state, scrollram)
AM_RANGE(0xc820, 0xc8ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc820, 0xc8ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w) /* + coin counters */
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")

View File

@ -27,7 +27,7 @@ static ADDRESS_MAP_START( yard_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(yard_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
AM_RANGE(0x9000, 0x9fff) AM_WRITE(yard_scroll_panel_w)
AM_RANGE(0xc820, 0xc87f) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc820, 0xc87f) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xa000, 0xa000) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_x_low)
AM_RANGE(0xa200, 0xa200) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_x_high)
AM_RANGE(0xa400, 0xa400) AM_RAM AM_BASE_MEMBER(irem_z80_state, yard_scroll_y_low)

View File

@ -175,7 +175,7 @@ static ADDRESS_MAP_START( kungfum_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w)
AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
/* Kung Fu Master is the only game in this driver to have separated (but */
/* contiguous) videoram and colorram. They are interleaved in all the others. */
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
@ -194,7 +194,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( battroad_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
@ -215,7 +215,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ldrun_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
ADDRESS_MAP_END
@ -223,7 +223,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ldrun2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
ADDRESS_MAP_END
@ -244,7 +244,7 @@ static ADDRESS_MAP_START( ldrun3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r)
AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r)
AM_RANGE(0xcfff, 0xcfff) AM_READ(ldrun3_prot_7_r)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xd000, 0xefff) AM_RAM
ADDRESS_MAP_END
@ -263,7 +263,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ldrun4_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
@ -283,7 +283,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( lotlot_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
ADDRESS_MAP_END
@ -292,7 +292,7 @@ static ADDRESS_MAP_START( kidniki_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xe000, 0xefff) AM_RAM
ADDRESS_MAP_END
@ -316,7 +316,7 @@ static ADDRESS_MAP_START( spelunkr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w)
@ -332,7 +332,7 @@ static ADDRESS_MAP_START( spelunk2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(1)
AM_RANGE(0x9000, 0x9fff) AM_ROMBANK(2)
AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w)
@ -344,7 +344,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( youjyudn_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE_MEMBER(irem_z80_state, m62_textram)
AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM
@ -364,7 +364,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( horizon_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_BASE_MEMBER(irem_z80_state, scrollram)
AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE_MEMBER(irem_z80_state, m62_tileram)
AM_RANGE(0xe000, 0xefff) AM_RAM

View File

@ -129,6 +129,7 @@ struct _m63_state
UINT8 * spriteram;
UINT8 * videoram2;
UINT8 * scrollram;
size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap, *fg_tilemap;
@ -141,6 +142,7 @@ struct _m63_state
INT16 *samplebuf;
/* sound devices */
const device_config *soundcpu;
const device_config *ay1;
const device_config *ay2;
const device_config *samples;
@ -286,12 +288,12 @@ static VIDEO_START( m63 )
tilemap_set_transparent_pen(state->fg_tilemap, 0);
}
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
m63_state *state = (m63_state *)machine->driver_data;
int offs;
for (offs = 0; offs < machine->generic.spriteram_size; offs += 4)
for (offs = 0; offs < state->spriteram_size; offs += 4)
{
int code = state->spriteram[offs + 1] | ((state->spriteram[offs + 2] & 0x10) << 4);
int color = (state->spriteram[offs + 2] & 0x0f) + (state->pal_bank << 4);
@ -315,7 +317,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
sx, sy, 0);
/* sprite wrapping - verified on real hardware*/
if(sx>0xf0)
if (sx > 0xf0)
{
drawgfx_transpen(bitmap, cliprect,
machine->gfx[2],
@ -350,7 +352,8 @@ static WRITE8_HANDLER( coin_w )
static WRITE8_HANDLER( snd_irq_w )
{
cputag_set_input_line(space->machine, "soundcpu", 0, ASSERT_LINE);
m63_state *state = (m63_state *)space->machine->driver_data;
cpu_set_input_line(state->soundcpu, 0, ASSERT_LINE);
timer_call_after_resynch(space->machine, NULL, 0, NULL);
}
@ -383,7 +386,7 @@ static WRITE8_HANDLER( p2_w )
state->p2 = data;
if((state->p2 & 0xf0) == 0x50)
{
cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
cpu_set_input_line(state->soundcpu, 0, CLEAR_LINE);
}
}
@ -428,7 +431,7 @@ static ADDRESS_MAP_START( m63_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xd000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe1ff) AM_RAM
AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE_MEMBER(m63_state, spriteram_size)
AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_BASE_MEMBER(m63_state, scrollram)
AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, videoram2)
AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, videoram)
@ -449,7 +452,7 @@ static ADDRESS_MAP_START( fghtbskt_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xd000, 0xd1ff) AM_RAM
AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE_MEMBER(m63_state, spriteram) AM_SIZE_MEMBER(m63_state, spriteram_size)
AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_BASE_MEMBER(m63_state, scrollram)
AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, videoram2)
AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, videoram)
@ -696,6 +699,7 @@ static MACHINE_START( m63 )
{
m63_state *state = (m63_state *)machine->driver_data;
state->soundcpu = devtag_get_device(machine, "soundcpu");
state->ay1 = devtag_get_device(machine, "ay1");
state->ay2 = devtag_get_device(machine, "ay2");
state->samples = devtag_get_device(machine, "samples");

View File

@ -397,7 +397,7 @@ static TIMER_DEVICE_CALLBACK( rst1_tick )
int state = n8080->inte ? ASSERT_LINE : CLEAR_LINE;
/* V7 = 1, V6 = 0 */
cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xcf);
cpu_set_input_line_and_vector(n8080->maincpu, INPUT_LINE_IRQ0, state, 0xcf);
}
static TIMER_DEVICE_CALLBACK( rst2_tick )
@ -406,7 +406,7 @@ static TIMER_DEVICE_CALLBACK( rst2_tick )
int state = n8080->inte ? ASSERT_LINE : CLEAR_LINE;
/* vblank */
cputag_set_input_line_and_vector(timer->machine, "maincpu", INPUT_LINE_IRQ0, state, 0xd7);
cpu_set_input_line_and_vector(n8080->maincpu, INPUT_LINE_IRQ0, state, 0xd7);
}
static WRITE_LINE_DEVICE_HANDLER( n8080_inte_callback )
@ -436,6 +436,8 @@ static MACHINE_START( n8080 )
{
n8080_state *state = (n8080_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state_save_register_global(machine, state->shift_data);
state_save_register_global(machine, state->shift_bits);
state_save_register_global(machine, state->inte);

View File

@ -58,7 +58,7 @@ static WRITE8_HANDLER( pandoras_int_control_w )
switch (offset)
{
case 0x00: if (!data)
cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->maincpu, M6809_IRQ_LINE, CLEAR_LINE);
state->irq_enable_a = data;
break;
case 0x02: coin_counter_w(space->machine, 0,data & 0x01);
@ -68,10 +68,10 @@ static WRITE8_HANDLER( pandoras_int_control_w )
case 0x05: pandoras_flipscreen_w(space, 0, data);
break;
case 0x06: if (!data)
cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
cpu_set_input_line(state->subcpu, M6809_IRQ_LINE, CLEAR_LINE);
state->irq_enable_b = data;
break;
case 0x07: cputag_set_input_line(space->machine, "sub",INPUT_LINE_NMI,PULSE_LINE);
case 0x07: cpu_set_input_line(state->subcpu, INPUT_LINE_NMI, PULSE_LINE);
break;
default: logerror("%04x: (irq_ctrl) write %02x to %02x\n",cpu_get_pc(space->cpu), data, offset);
@ -84,9 +84,7 @@ static WRITE8_HANDLER( pandoras_cpua_irqtrigger_w )
pandoras_state *state = (pandoras_state *)space->machine->driver_data;
if (!state->firq_old_data_a && data)
{
cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
}
cpu_set_input_line(state->maincpu, M6809_FIRQ_LINE, HOLD_LINE);
state->firq_old_data_a = data;
}
@ -96,16 +94,15 @@ static WRITE8_HANDLER( pandoras_cpub_irqtrigger_w )
pandoras_state *state = (pandoras_state *)space->machine->driver_data;
if (!state->firq_old_data_b && data)
{
cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE);
}
cpu_set_input_line(state->subcpu, M6809_FIRQ_LINE, HOLD_LINE);
state->firq_old_data_b = data;
}
static WRITE8_HANDLER( pandoras_i8039_irqtrigger_w )
{
cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
pandoras_state *state = (pandoras_state *)space->machine->driver_data;
cpu_set_input_line(state->mcu, 0, ASSERT_LINE);
}
static WRITE8_HANDLER( i8039_irqen_and_status_w )
@ -114,7 +111,7 @@ static WRITE8_HANDLER( i8039_irqen_and_status_w )
/* bit 7 enables IRQ */
if ((data & 0x80) == 0)
cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
cpu_set_input_line(state->mcu, 0, CLEAR_LINE);
/* bit 5 goes to 8910 port A */
state->i8039_status = (data & 0x20) >> 5;
@ -122,7 +119,8 @@ static WRITE8_HANDLER( i8039_irqen_and_status_w )
static WRITE8_HANDLER( pandoras_z80_irqtrigger_w )
{
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
pandoras_state *state = (pandoras_state *)space->machine->driver_data;
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
@ -295,6 +293,11 @@ static MACHINE_START( pandoras )
{
pandoras_state *state = (pandoras_state *)machine->driver_data;
state->maincpu = devtag_get_device(machine, "maincpu");
state->subcpu = devtag_get_device(machine, "sub");
state->audiocpu = devtag_get_device(machine, "audiocpu");
state->mcu = devtag_get_device(machine, "mcu");
state_save_register_global(machine, state->firq_old_data_a);
state_save_register_global(machine, state->firq_old_data_b);
state_save_register_global(machine, state->irq_enable_a);
@ -323,7 +326,8 @@ static READ8_DEVICE_HANDLER( pandoras_portA_r )
static READ8_DEVICE_HANDLER( pandoras_portB_r )
{
return (cputag_get_total_cycles(device->machine, "audiocpu") / 512) & 0x0f;
pandoras_state *state = (pandoras_state *)device->machine->driver_data;
return (cpu_get_total_cycles(state->audiocpu) / 512) & 0x0f;
}
static const ay8910_interface ay8910_config =

View File

@ -141,7 +141,8 @@ static READ8_HANDLER( popper_input_ports_r )
static READ8_HANDLER( popper_soundcpu_nmi_r )
{
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
popper_state *state = (popper_state *)space->machine->driver_data;
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
return 0;
}
@ -160,7 +161,7 @@ static ADDRESS_MAP_START( popper_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc9c0, 0xc9ff) AM_RAM_WRITE(popper_ol_attribram_w) AM_BASE_MEMBER(popper_state, ol_attribram)
AM_RANGE(0xca00, 0xce1f) AM_RAM_WRITE(popper_attribram_w) AM_BASE_MEMBER(popper_state, attribram)
AM_RANGE(0xce20, 0xcfff) AM_RAM
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER(popper_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE_MEMBER(popper_state, spriteram) AM_SIZE_MEMBER(popper_state, spriteram_size)
AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
AM_RANGE(0xe000, 0xe007) AM_READ(popper_input_ports_r)
AM_RANGE(0xe000, 0xe000) AM_WRITE(interrupt_enable_w)
@ -304,6 +305,17 @@ GFXDECODE_END
*
*************************************/
static MACHINE_START( popper )
{
popper_state *state = (popper_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->flipscreen);
state_save_register_global(machine, state->e002);
state_save_register_global(machine, state->gfx_bank);
}
static MACHINE_RESET( popper )
{
popper_state *state = (popper_state *)machine->driver_data;
@ -329,6 +341,7 @@ static MACHINE_DRIVER_START( popper )
MDRV_QUANTUM_TIME(HZ(1800))
MDRV_MACHINE_START(popper)
MDRV_MACHINE_RESET(popper)
/* video hardware */

View File

@ -57,7 +57,7 @@ it as ASCII text.
static ADDRESS_MAP_START( dommy_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE_MEMBER(btime_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE_MEMBER(btime_state, videoram) AM_SIZE_MEMBER(btime_state, videoram_size)
AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE_MEMBER(btime_state, colorram)
AM_RANGE(0x2800, 0x2bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_WRITENOP
@ -73,7 +73,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( eggs_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE_MEMBER(btime_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE_MEMBER(btime_state, videoram) AM_SIZE_MEMBER(btime_state, videoram_size)
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_BASE_MEMBER(btime_state, colorram)
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r,btime_mirrorcolorram_w)

View File

@ -805,8 +805,9 @@ ADDRESS_MAP_END
static WRITE8_HANDLER( tnzsb_sound_command_w )
{
tnzs_state *state = (tnzs_state *)space->machine->driver_data;
soundlatch_w(space, offset, data);
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
static ADDRESS_MAP_START( tnzsb_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
@ -1551,9 +1552,10 @@ static const ym2203_interface ym2203_config =
/* handler called by the 2203 emulator when the internal timers cause an IRQ */
static void irqhandler(const device_config *device, int irq)
static void irqhandler( const device_config *device, int irq )
{
cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
tnzs_state *state = (tnzs_state *)device->machine->driver_data;
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
}
static const ym2203_interface kageki_ym2203_interface =

View File

@ -57,7 +57,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_BASE_MEMBER(irem_z80_state, videoram)
AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w)
AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w)
AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0xc800, 0xc9ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(irem_z80_state, spriteram) AM_SIZE_MEMBER(irem_z80_state, spriteram_size)
AM_RANGE(0xd000, 0xd000) AM_WRITE(irem_sound_cmd_w)
AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w) /* + coin counters - not written by shtrider */
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM") /* IN0 */

View File

@ -132,13 +132,14 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(yunsun16_vram_1_w) AM_BASE_MEMBER(yunsun16_state, vram_1) // Layer 1
AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(yunsun16_vram_0_w) AM_BASE_MEMBER(yunsun16_state, vram_0) // Layer 0
AM_RANGE(0x910000, 0x910fff) AM_RAM AM_BASE_MEMBER(yunsun16_state, spriteram16) AM_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0x910000, 0x910fff) AM_RAM AM_BASE_MEMBER(yunsun16_state, spriteram) AM_SIZE_MEMBER(yunsun16_state, spriteram_size) // Sprites
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
static WRITE16_HANDLER( magicbub_sound_command_w )
{
yunsun16_state *state = (yunsun16_state *)space->machine->driver_data;
if (ACCESSING_BITS_0_7)
{
/*
@ -148,7 +149,7 @@ number 0 on each voice. That sample is 00000-00000.
if ((data & 0xff) != 0x3a)
{
soundlatch_w(space, 0, data & 0xff);
cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, PULSE_LINE);
}
}
}
@ -554,6 +555,16 @@ GFXDECODE_END
***************************************************************************/
static MACHINE_START( yunsun16 )
{
yunsun16_state *state = (yunsun16_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->sprites_scrolldx);
state_save_register_global(machine, state->sprites_scrolldy);
}
static MACHINE_RESET( yunsun16 )
{
yunsun16_state *state = (yunsun16_state *)machine->driver_data;
@ -568,7 +579,8 @@ static MACHINE_RESET( yunsun16 )
static void soundirq(const device_config *device, int state)
{
cputag_set_input_line(device->machine, "audiocpu", 0, state);
yunsun16_state *yunsun16 = (yunsun16_state *)device->machine->driver_data;
cpu_set_input_line(yunsun16->audiocpu, 0, state);
}
static const ym3812_interface magicbub_ym3812_intf =
@ -590,6 +602,7 @@ static MACHINE_DRIVER_START( magicbub )
MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_CPU_IO_MAP(sound_port_map)
MDRV_MACHINE_START(yunsun16)
MDRV_MACHINE_RESET(yunsun16)
/* video hardware */
@ -635,6 +648,7 @@ static MACHINE_DRIVER_START( shocking )
MDRV_CPU_PROGRAM_MAP(main_map)
MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
MDRV_MACHINE_START(yunsun16)
MDRV_MACHINE_RESET(yunsun16)
/* video hardware */

View File

@ -54,10 +54,12 @@ static READ16_HANDLER( zerozone_input_r )
static WRITE16_HANDLER( zerozone_sound_w )
{
zerozone_state *state = (zerozone_state *)space->machine->driver_data;
if (ACCESSING_BITS_8_15)
{
soundlatch_w(space, offset, data >> 8);
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
cpu_set_input_line_and_vector(state->audiocpu, 0, HOLD_LINE, 0xff);
}
}
@ -67,7 +69,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x084000, 0x084001) AM_WRITE(zerozone_sound_w)
AM_RANGE(0x088000, 0x0881ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x098000, 0x098001) AM_RAM /* Watchdog? */
AM_RANGE(0x09ce00, 0x09ffff) AM_RAM_WRITE(zerozone_tilemap_w) AM_BASE_MEMBER(zerozone_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0x09ce00, 0x09ffff) AM_RAM_WRITE(zerozone_tilemap_w) AM_BASE_MEMBER(zerozone_state, videoram) AM_SIZE_MEMBER(zerozone_state, videoram_size)
AM_RANGE(0x0b4000, 0x0b4001) AM_WRITE(zerozone_tilebank_w)
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM
AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM /* Never read from */
@ -167,6 +169,15 @@ static GFXDECODE_START( zerozone )
GFXDECODE_END
static MACHINE_START( zerozone )
{
zerozone_state *state = (zerozone_state *)machine->driver_data;
state->audiocpu = devtag_get_device(machine, "audiocpu");
state_save_register_global(machine, state->tilebank);
}
static MACHINE_RESET( zerozone )
{
zerozone_state *state = (zerozone_state *)machine->driver_data;
@ -188,6 +199,7 @@ static MACHINE_DRIVER_START( zerozone )
MDRV_QUANTUM_TIME(HZ(600))
MDRV_MACHINE_START(zerozone)
MDRV_MACHINE_RESET(zerozone)
/* video hardware */

View File

@ -132,10 +132,10 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
AM_RANGE(0x7200, 0x7200) AM_WRITE(zodiack_flipscreen_w)
AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(zodiack_attributes_w) AM_BASE_MEMBER(espial_state, attributeram)
AM_RANGE(0x9040, 0x905f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram) AM_SIZE_GENERIC(spriteram)
AM_RANGE(0x9060, 0x907f) AM_RAM AM_BASE_MEMBER(espial_state, bulletsram) AM_SIZE(&zodiack_bulletsram_size)
AM_RANGE(0x9040, 0x905f) AM_RAM AM_BASE_MEMBER(espial_state, spriteram) AM_SIZE_MEMBER(espial_state, spriteram_size)
AM_RANGE(0x9060, 0x907f) AM_RAM AM_BASE_MEMBER(espial_state, bulletsram) AM_SIZE_MEMBER(espial_state, bulletsram_size)
AM_RANGE(0x9080, 0x93ff) AM_RAM
AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(zodiack_videoram_w) AM_BASE_MEMBER(espial_state, videoram) AM_SIZE_GENERIC(videoram)
AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(zodiack_videoram_w) AM_BASE_MEMBER(espial_state, videoram) AM_SIZE_MEMBER(espial_state, videoram_size)
AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(zodiack_videoram2_w) AM_BASE_MEMBER(espial_state, videoram_2)
AM_RANGE(0xc000, 0xcfff) AM_ROM
ADDRESS_MAP_END

View File

@ -11,11 +11,15 @@ struct __1942_state
UINT8 * fg_videoram;
UINT8 * bg_videoram;
UINT8 * spriteram;
size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg_tilemap;
int palette_bank;
UINT8 scroll[2];
/* devices */
const device_config *audiocpu;
};

View File

@ -14,6 +14,7 @@ struct __1943_state
UINT8 * scrollx;
UINT8 * scrolly;
UINT8 * bgscrollx;
size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg_tilemap, *bg2_tilemap;

View File

@ -22,6 +22,7 @@ struct __20pacgal_state
UINT8 game_selected; /* 0 = Ms. Pac-Man, 1 = Galaga */
/* devices */
const device_config *maincpu;
const device_config *eeprom;
};

View File

@ -9,6 +9,7 @@ struct __4enraya_state
{
/* memory pointers */
UINT8 * videoram;
size_t videoram_size;
/* video-related */
tilemap *bg_tilemap;

Some files were not shown because too many files have changed in this diff Show More