mirror of
https://github.com/holub/mame
synced 2025-05-23 22:20:01 +03:00
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:
parent
796b597e06
commit
1a309ff78b
@ -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 */
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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")
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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]);
|
||||
|
@ -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")
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 =
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
/*************************************
|
||||
|
@ -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");
|
||||
|
@ -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) //
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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 =
|
||||
|
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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 =
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user