summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2009-11-29 01:49:13 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2009-11-29 01:49:13 +0000
commit1a309ff78bdcee422f903153b0d35a3db4d8a27c (patch)
treee10f8c554d22662e2dfe2f018214d0a488c81770
parent796b597e06269b9c62c39e06310621a6d4e1af65 (diff)
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)
-rw-r--r--src/mame/drivers/1942.c13
-rw-r--r--src/mame/drivers/1943.c2
-rw-r--r--src/mame/drivers/20pacgal.c9
-rw-r--r--src/mame/drivers/2mindril.c10
-rw-r--r--src/mame/drivers/4enraya.c2
-rw-r--r--src/mame/drivers/actfancr.c10
-rw-r--r--src/mame/drivers/adp.c5
-rw-r--r--src/mame/drivers/aeroboto.c2
-rw-r--r--src/mame/drivers/ambush.c4
-rw-r--r--src/mame/drivers/angelkds.c7
-rw-r--r--src/mame/drivers/aquarium.c11
-rw-r--r--src/mame/drivers/arkanoid.c6
-rw-r--r--src/mame/drivers/ashnojoe.c9
-rw-r--r--src/mame/drivers/astinvad.c22
-rw-r--r--src/mame/drivers/astrocorp.c25
-rw-r--r--src/mame/drivers/atarifb.c10
-rw-r--r--src/mame/drivers/avalnche.c4
-rw-r--r--src/mame/drivers/battlane.c25
-rw-r--r--src/mame/drivers/bigevglf.c7
-rw-r--r--src/mame/drivers/bigfghtr.c24
-rw-r--r--src/mame/drivers/bionicc.c2
-rw-r--r--src/mame/drivers/blktiger.c12
-rw-r--r--src/mame/drivers/blmbycar.c8
-rw-r--r--src/mame/drivers/blockout.c21
-rw-r--r--src/mame/drivers/blueprnt.c7
-rw-r--r--src/mame/drivers/bogeyman.c2
-rw-r--r--src/mame/drivers/bombjack.c2
-rw-r--r--src/mame/drivers/boxer.c14
-rw-r--r--src/mame/drivers/capbowl.c9
-rw-r--r--src/mame/drivers/carjmbre.c2
-rw-r--r--src/mame/drivers/cball.c13
-rw-r--r--src/mame/drivers/ccastles.c5
-rw-r--r--src/mame/drivers/champbas.c18
-rw-r--r--src/mame/drivers/chanbara.c8
-rw-r--r--src/mame/drivers/changela.c5
-rw-r--r--src/mame/drivers/cheekyms.c5
-rw-r--r--src/mame/drivers/chinagat.c32
-rw-r--r--src/mame/drivers/cidelsa.c2
-rw-r--r--src/mame/drivers/circus.c1
-rw-r--r--src/mame/drivers/circusc.c6
-rw-r--r--src/mame/drivers/citycon.c7
-rw-r--r--src/mame/drivers/cloud9.c5
-rw-r--r--src/mame/drivers/cntsteer.c33
-rw-r--r--src/mame/drivers/commando.c2
-rw-r--r--src/mame/drivers/cop01.c7
-rw-r--r--src/mame/drivers/copsnrob.c2
-rw-r--r--src/mame/drivers/cosmic.c14
-rw-r--r--src/mame/drivers/crgolf.c11
-rw-r--r--src/mame/drivers/crospang.c9
-rw-r--r--src/mame/drivers/dacholer.c15
-rw-r--r--src/mame/drivers/ddayjlc.c9
-rw-r--r--src/mame/drivers/ddragon.c29
-rw-r--r--src/mame/drivers/ddragon3.c19
-rw-r--r--src/mame/drivers/dec8.c72
-rw-r--r--src/mame/drivers/deniam.c9
-rw-r--r--src/mame/drivers/destroyr.c10
-rw-r--r--src/mame/drivers/discoboy.c12
-rw-r--r--src/mame/drivers/diverboy.c23
-rw-r--r--src/mame/drivers/docastle.c8
-rw-r--r--src/mame/drivers/dogfgt.c10
-rw-r--r--src/mame/drivers/dominob.c5
-rw-r--r--src/mame/drivers/dorachan.c5
-rw-r--r--src/mame/drivers/dotrikun.c5
-rw-r--r--src/mame/drivers/drgnmst.c2
-rw-r--r--src/mame/drivers/dribling.c3
-rw-r--r--src/mame/drivers/egghunt.c9
-rw-r--r--src/mame/drivers/embargo.c5
-rw-r--r--src/mame/drivers/enigma2.c14
-rw-r--r--src/mame/drivers/epos.c4
-rw-r--r--src/mame/drivers/equites.c14
-rw-r--r--src/mame/drivers/esd16.c10
-rw-r--r--src/mame/drivers/espial.c9
-rw-r--r--src/mame/drivers/exerion.c9
-rw-r--r--src/mame/drivers/exprraid.c17
-rw-r--r--src/mame/drivers/fcombat.c4
-rw-r--r--src/mame/drivers/finalizr.c4
-rw-r--r--src/mame/drivers/firetrap.c4
-rw-r--r--src/mame/drivers/flstory.c12
-rw-r--r--src/mame/drivers/freekick.c8
-rw-r--r--src/mame/drivers/hexa.c2
-rw-r--r--src/mame/drivers/m10.c22
-rw-r--r--src/mame/drivers/m14.c11
-rw-r--r--src/mame/drivers/m52.c4
-rw-r--r--src/mame/drivers/m57.c2
-rw-r--r--src/mame/drivers/m58.c2
-rw-r--r--src/mame/drivers/m62.c24
-rw-r--r--src/mame/drivers/m63.c18
-rw-r--r--src/mame/drivers/n8080.c6
-rw-r--r--src/mame/drivers/pandoras.c30
-rw-r--r--src/mame/drivers/popper.c17
-rw-r--r--src/mame/drivers/scregg.c4
-rw-r--r--src/mame/drivers/tnzs.c8
-rw-r--r--src/mame/drivers/travrusa.c2
-rw-r--r--src/mame/drivers/yunsun16.c20
-rw-r--r--src/mame/drivers/zerozone.c16
-rw-r--r--src/mame/drivers/zodiack.c6
-rw-r--r--src/mame/includes/1942.h4
-rw-r--r--src/mame/includes/1943.h1
-rw-r--r--src/mame/includes/20pacgal.h1
-rw-r--r--src/mame/includes/4enraya.h1
-rw-r--r--src/mame/includes/actfancr.h4
-rw-r--r--src/mame/includes/aeroboto.h1
-rw-r--r--src/mame/includes/ambush.h3
-rw-r--r--src/mame/includes/angelkds.h3
-rw-r--r--src/mame/includes/aquarium.h6
-rw-r--r--src/mame/includes/arkanoid.h4
-rw-r--r--src/mame/includes/armedf.h4
-rw-r--r--src/mame/includes/ashnojoe.h13
-rw-r--r--src/mame/includes/atarifb.h4
-rw-r--r--src/mame/includes/avalnche.h2
-rw-r--r--src/mame/includes/battlane.h4
-rw-r--r--src/mame/includes/bigevglf.h30
-rw-r--r--src/mame/includes/bionicc.h4
-rw-r--r--src/mame/includes/blktiger.h18
-rw-r--r--src/mame/includes/blmbycar.h5
-rw-r--r--src/mame/includes/blockout.h5
-rw-r--r--src/mame/includes/blueprnt.h4
-rw-r--r--src/mame/includes/bogeyman.h1
-rw-r--r--src/mame/includes/bombjack.h1
-rw-r--r--src/mame/includes/capbowl.h4
-rw-r--r--src/mame/includes/carjmbre.h1
-rw-r--r--src/mame/includes/ccastles.h3
-rw-r--r--src/mame/includes/champbas.h3
-rw-r--r--src/mame/includes/changela.h3
-rw-r--r--src/mame/includes/cheekyms.h1
-rw-r--r--src/mame/includes/cidelsa.h1
-rw-r--r--src/mame/includes/circus.h1
-rw-r--r--src/mame/includes/circusc.h4
-rw-r--r--src/mame/includes/citycon.h4
-rw-r--r--src/mame/includes/cloud9.h3
-rw-r--r--src/mame/includes/commando.h3
-rw-r--r--src/mame/includes/cop01.h4
-rw-r--r--src/mame/includes/copsnrob.h1
-rw-r--r--src/mame/includes/cosmic.h2
-rw-r--r--src/mame/includes/crgolf.h4
-rw-r--r--src/mame/includes/crospang.h6
-rw-r--r--src/mame/includes/ddragon.h2
-rw-r--r--src/mame/includes/ddragon3.h6
-rw-r--r--src/mame/includes/dec8.h7
-rw-r--r--src/mame/includes/deniam.h1
-rw-r--r--src/mame/includes/docastle.h4
-rw-r--r--src/mame/includes/dogfgt.h6
-rw-r--r--src/mame/includes/drgnmst.h3
-rw-r--r--src/mame/includes/dribling.h2
-rw-r--r--src/mame/includes/epos.h1
-rw-r--r--src/mame/includes/equites.h1
-rw-r--r--src/mame/includes/esd16.h5
-rw-r--r--src/mame/includes/espial.h8
-rw-r--r--src/mame/includes/exerion.h5
-rw-r--r--src/mame/includes/exprraid.h5
-rw-r--r--src/mame/includes/fcombat.h2
-rw-r--r--src/mame/includes/finalizr.h2
-rw-r--r--src/mame/includes/firetrap.h1
-rw-r--r--src/mame/includes/fitfight.h2
-rw-r--r--src/mame/includes/flstory.h2
-rw-r--r--src/mame/includes/freekick.h1
-rw-r--r--src/mame/includes/hexa.h1
-rw-r--r--src/mame/includes/iremz80.h1
-rw-r--r--src/mame/includes/m10.h2
-rw-r--r--src/mame/includes/n8080.h3
-rw-r--r--src/mame/includes/pandoras.h6
-rw-r--r--src/mame/includes/popper.h6
-rw-r--r--src/mame/includes/tnzs.h1
-rw-r--r--src/mame/includes/yunsun16.h8
-rw-r--r--src/mame/includes/zerozone.h6
-rw-r--r--src/mame/machine/atarifb.c3
-rw-r--r--src/mame/machine/bigevglf.c4
-rw-r--r--src/mame/machine/decocass.c27
-rw-r--r--src/mame/machine/decocass.h2
-rw-r--r--src/mame/machine/docastle.c3
-rw-r--r--src/mame/machine/tnzs.c3
-rw-r--r--src/mame/video/1942.c8
-rw-r--r--src/mame/video/1943.c2
-rw-r--r--src/mame/video/aeroboto.c2
-rw-r--r--src/mame/video/ambush.c4
-rw-r--r--src/mame/video/aquarium.c2
-rw-r--r--src/mame/video/arkanoid.c6
-rw-r--r--src/mame/video/armedf.c12
-rw-r--r--src/mame/video/battlane.c3
-rw-r--r--src/mame/video/bionicc.c12
-rw-r--r--src/mame/video/blktiger.c2
-rw-r--r--src/mame/video/blmbycar.c8
-rw-r--r--src/mame/video/blockout.c6
-rw-r--r--src/mame/video/blueprnt.c2
-rw-r--r--src/mame/video/bogeyman.c2
-rw-r--r--src/mame/video/bombjack.c2
-rw-r--r--src/mame/video/capbowl.c5
-rw-r--r--src/mame/video/carjmbre.c4
-rw-r--r--src/mame/video/champbas.c2
-rw-r--r--src/mame/video/cidelsa.c2
-rw-r--r--src/mame/video/circus.c4
-rw-r--r--src/mame/video/circusc.c2
-rw-r--r--src/mame/video/citycon.c2
-rw-r--r--src/mame/video/commando.c4
-rw-r--r--src/mame/video/cop01.c2
-rw-r--r--src/mame/video/copsnrob.c2
-rw-r--r--src/mame/video/cosmic.c4
-rw-r--r--src/mame/video/crospang.c2
-rw-r--r--src/mame/video/dec8.c4
-rw-r--r--src/mame/video/decocass.c2
-rw-r--r--src/mame/video/deniam.c2
-rw-r--r--src/mame/video/docastle.c2
-rw-r--r--src/mame/video/dogfgt.c2
-rw-r--r--src/mame/video/epos.c2
-rw-r--r--src/mame/video/esd16.c20
-rw-r--r--src/mame/video/exerion.c2
-rw-r--r--src/mame/video/exprraid.c2
-rw-r--r--src/mame/video/fcombat.c2
-rw-r--r--src/mame/video/finalizr.c2
-rw-r--r--src/mame/video/firetrap.c2
-rw-r--r--src/mame/video/flstory.c4
-rw-r--r--src/mame/video/freekick.c6
-rw-r--r--src/mame/video/m10.c4
-rw-r--r--src/mame/video/m57.c2
-rw-r--r--src/mame/video/m58.c2
-rw-r--r--src/mame/video/m62.c2
-rw-r--r--src/mame/video/popper.c6
-rw-r--r--src/mame/video/travrusa.c2
-rw-r--r--src/mame/video/yunsun16.c13
-rw-r--r--src/mame/video/zerozone.c2
-rw-r--r--src/mame/video/zodiack.c13
221 files changed, 1018 insertions, 527 deletions
diff --git a/src/mame/drivers/1942.c b/src/mame/drivers/1942.c
index ed0980d4a7d..d25f884c222 100644
--- a/src/mame/drivers/1942.c
+++ b/src/mame/drivers/1942.c
@@ -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 */
diff --git a/src/mame/drivers/1943.c b/src/mame/drivers/1943.c
index 1218acacba5..d1c2152e070 100644
--- a/src/mame/drivers/1943.c
+++ b/src/mame/drivers/1943.c
@@ -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 )
diff --git a/src/mame/drivers/20pacgal.c b/src/mame/drivers/20pacgal.c
index 65375f723f2..967942a6fd8 100644
--- a/src/mame/drivers/20pacgal.c
+++ b/src/mame/drivers/20pacgal.c
@@ -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);
}
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index bd52fff1941..117366da3f3 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -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);
}
diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c
index 17bfc363bca..5074e64a2da 100644
--- a/src/mame/drivers/4enraya.c
+++ b/src/mame/drivers/4enraya.c
@@ -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 )
diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c
index a6f63c61bbb..8425d82619e 100644
--- a/src/mame/drivers/actfancr.c
+++ b/src/mame/drivers/actfancr.c
@@ -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);
}
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index 1e2bb54714c..9fd29668050 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -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);
diff --git a/src/mame/drivers/aeroboto.c b/src/mame/drivers/aeroboto.c
index e4702527c0c..84a5cfc89cd 100644
--- a/src/mame/drivers/aeroboto.c
+++ b/src/mame/drivers/aeroboto.c
@@ -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)
diff --git a/src/mame/drivers/ambush.c b/src/mame/drivers/ambush.c
index 91cf9043d3b..8c9059a1586 100644
--- a/src/mame/drivers/ambush.c
+++ b/src/mame/drivers/ambush.c
@@ -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)
diff --git a/src/mame/drivers/angelkds.c b/src/mame/drivers/angelkds.c
index 09d40fb0c05..195eb396301 100644
--- a/src/mame/drivers/angelkds.c
+++ b/src/mame/drivers/angelkds.c
@@ -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);
diff --git a/src/mame/drivers/aquarium.c b/src/mame/drivers/aquarium.c
index 3150baf6e3d..ccdb061675e 100644
--- a/src/mame/drivers/aquarium.c
+++ b/src/mame/drivers/aquarium.c
@@ -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);
}
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 4dc44dab571..99d833ce999 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -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);
diff --git a/src/mame/drivers/ashnojoe.c b/src/mame/drivers/ashnojoe.c
index 9c215694ff5..d956036aa41 100644
--- a/src/mame/drivers/ashnojoe.c
+++ b/src/mame/drivers/ashnojoe.c
@@ -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);
diff --git a/src/mame/drivers/astinvad.c b/src/mame/drivers/astinvad.c
index 8063d327ef6..db5eb6fec83 100644
--- a/src/mame/drivers/astinvad.c
+++ b/src/mame/drivers/astinvad.c
@@ -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
diff --git a/src/mame/drivers/astrocorp.c b/src/mame/drivers/astrocorp.c
index 4003b1031b2..ebc5b39ec55 100644
--- a/src/mame/drivers/astrocorp.c
+++ b/src/mame/drivers/astrocorp.c
@@ -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)
diff --git a/src/mame/drivers/atarifb.c b/src/mame/drivers/atarifb.c
index f9bb3ed824a..a0538aa9ed5 100644
--- a/src/mame/drivers/atarifb.c
+++ b/src/mame/drivers/atarifb.c
@@ -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);
diff --git a/src/mame/drivers/avalnche.c b/src/mame/drivers/avalnche.c
index 0bf024ef997..a1fd66f888d 100644
--- a/src/mame/drivers/avalnche.c
+++ b/src/mame/drivers/avalnche.c
@@ -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")
diff --git a/src/mame/drivers/battlane.c b/src/mame/drivers/battlane.c
index 3b659aa35ad..fec8fca5f19 100644
--- a/src/mame/drivers/battlane.c
+++ b/src/mame/drivers/battlane.c
@@ -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 */
diff --git a/src/mame/drivers/bigevglf.c b/src/mame/drivers/bigevglf.c
index be488fa8dc4..14228131041 100644
--- a/src/mame/drivers/bigevglf.c
+++ b/src/mame/drivers/bigevglf.c
@@ -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);
diff --git a/src/mame/drivers/bigfghtr.c b/src/mame/drivers/bigfghtr.c
index 08408d74bfc..050563ad67c 100644
--- a/src/mame/drivers/bigfghtr.c
+++ b/src/mame/drivers/bigfghtr.c
@@ -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)
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index 5cb9fc28703..f483f01b88e 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -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 */
diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c
index 9194b9567a3..b629ce6fce5 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -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);
diff --git a/src/mame/drivers/blmbycar.c b/src/mame/drivers/blmbycar.c
index 3861a50d709..13d7b76a4e0 100644
--- a/src/mame/drivers/blmbycar.c
+++ b/src/mame/drivers/blmbycar.c
@@ -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
diff --git a/src/mame/drivers/blockout.c b/src/mame/drivers/blockout.c
index 4bf8f69a07f..f84ed7745e6 100644
--- a/src/mame/drivers/blockout.c
+++ b/src/mame/drivers/blockout.c
@@ -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 */
diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c
index 1d1667172ee..22a338edeb0 100644
--- a/src/mame/drivers/blueprnt.c
+++ b/src/mame/drivers/blueprnt.c
@@ -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);
}
diff --git a/src/mame/drivers/bogeyman.c b/src/mame/drivers/bogeyman.c
index 97a2e715f46..e6cc5037fe0 100644
--- a/src/mame/drivers/bogeyman.c
+++ b/src/mame/drivers/bogeyman.c
@@ -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)
diff --git a/src/mame/drivers/bombjack.c b/src/mame/drivers/bombjack.c
index ebfb4ffde82..b3e8babccb1 100644
--- a/src/mame/drivers/bombjack.c
+++ b/src/mame/drivers/bombjack.c
@@ -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)
diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c
index 723cc95b693..55856a5f126 100644
--- a/src/mame/drivers/boxer.c
+++ b/src/mame/drivers/boxer.c
@@ -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);
}
diff --git a/src/mame/drivers/capbowl.c b/src/mame/drivers/capbowl.c
index d53d4825a08..f8ad5e823fb 100644
--- a/src/mame/drivers/capbowl.c
+++ b/src/mame/drivers/capbowl.c
@@ -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]);
diff --git a/src/mame/drivers/carjmbre.c b/src/mame/drivers/carjmbre.c
index ffbd4e269d8..b1c02d898be 100644
--- a/src/mame/drivers/carjmbre.c
+++ b/src/mame/drivers/carjmbre.c
@@ -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")
diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c
index 59e1b576665..74844ffadfc 100644
--- a/src/mame/drivers/cball.c
+++ b/src/mame/drivers/cball.c
@@ -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 */
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index 7072d511f79..32738a49ac9 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -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;
}
}
diff --git a/src/mame/drivers/champbas.c b/src/mame/drivers/champbas.c
index 388f6268c40..89cee2194e6 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -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 */
diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c
index 206d87108fa..769bb988e5c 100644
--- a/src/mame/drivers/chanbara.c
+++ b/src/mame/drivers/chanbara.c
@@ -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);
}
diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c
index 18249941c1e..67242626b47 100644
--- a/src/mame/drivers/changela.c
+++ b/src/mame/drivers/changela.c
@@ -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);
diff --git a/src/mame/drivers/cheekyms.c b/src/mame/drivers/cheekyms.c
index 54b5f2f2ac5..13b18c6f393 100644
--- a/src/mame/drivers/cheekyms.c
+++ b/src/mame/drivers/cheekyms.c
@@ -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");
}
diff --git a/src/mame/drivers/chinagat.c b/src/mame/drivers/chinagat.c
index 067289d88e6..3beb0df2169 100644
--- a/src/mame/drivers/chinagat.c
+++ b/src/mame/drivers/chinagat.c
@@ -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);
diff --git a/src/mame/drivers/cidelsa.c b/src/mame/drivers/cidelsa.c
index 23a46fcdb05..8282603b83e 100644
--- a/src/mame/drivers/cidelsa.c
+++ b/src/mame/drivers/cidelsa.c
@@ -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);
diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c
index df6cf1ebf07..3cf8a4b1ef0 100644
--- a/src/mame/drivers/circus.c
+++ b/src/mame/drivers/circus.c
@@ -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");
diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c
index 33ead2f7edd..27a8071995e 100644
--- a/src/mame/drivers/circusc.c
+++ b/src/mame/drivers/circusc.c
@@ -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
diff --git a/src/mame/drivers/citycon.c b/src/mame/drivers/citycon.c
index 0e496f0bcc2..bf0b198fae5 100644
--- a/src/mame/drivers/citycon.c
+++ b/src/mame/drivers/citycon.c
@@ -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);
}
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 09fecfd3c55..a8a0d78438f 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -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;
}
}
diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c
index bd6d0119f9d..7b898c0a606 100644
--- a/src/mame/drivers/cntsteer.c
+++ b/src/mame/drivers/cntsteer.c
@@ -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);
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index 5637ddca317..3243d08aed0 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -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);
}
diff --git a/src/mame/drivers/cop01.c b/src/mame/drivers/cop01.c
index 8a0af04b58c..44ed097b922 100644
--- a/src/mame/drivers/cop01.c
+++ b/src/mame/drivers/cop01.c
@@ -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);
diff --git a/src/mame/drivers/copsnrob.c b/src/mame/drivers/copsnrob.c
index 1ce5e922d7f..4b4e619a544 100644
--- a/src/mame/drivers/copsnrob.c
+++ b/src/mame/drivers/copsnrob.c
@@ -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)
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index 4eb88df67c1..b0a7539396f 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -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
diff --git a/src/mame/drivers/crgolf.c b/src/mame/drivers/crgolf.c
index e427a221902..cf1937b4d16 100644
--- a/src/mame/drivers/crgolf.c
+++ b/src/mame/drivers/crgolf.c
@@ -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;
}
diff --git a/src/mame/drivers/crospang.c b/src/mame/drivers/crospang.c
index 79c4df14cc2..d407d124a88 100644
--- a/src/mame/drivers/crospang.c
+++ b/src/mame/drivers/crospang.c
@@ -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);
diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c
index aba8ae2c792..7a3f026b621 100644
--- a/src/mame/drivers/dacholer.c
+++ b/src/mame/drivers/dacholer.c
@@ -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);
diff --git a/src/mame/drivers/ddayjlc.c b/src/mame/drivers/ddayjlc.c
index afd11687e8a..14d47f07a08 100644
--- a/src/mame/drivers/ddayjlc.c
+++ b/src/mame/drivers/ddayjlc.c
@@ -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);
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index b5cb4957e46..b9d05118460 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -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 )
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index ea5e67f2459..e32ad6f879e 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -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);
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index a0bfb085299..3bce69cd164 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -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);
diff --git a/src/mame/drivers/deniam.c b/src/mame/drivers/deniam.c
index ea4b28d25ef..7c83cfacf4a 100644
--- a/src/mame/drivers/deniam.c
+++ b/src/mame/drivers/deniam.c
@@ -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 =
diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c
index e15572c5ef9..1cd8a10b7c8 100644
--- a/src/mame/drivers/destroyr.c
+++ b/src/mame/drivers/destroyr.c
@@ -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);
diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c
index dd8cdf8f90d..1a87fb266df 100644
--- a/src/mame/drivers/discoboy.c
+++ b/src/mame/drivers/discoboy.c
@@ -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);
diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c
index 8eb80eba2eb..724293f81c3 100644
--- a/src/mame/drivers/diverboy.c
+++ b/src/mame/drivers/diverboy.c
@@ -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)
diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c
index 702821ab6db..59d22235c20 100644
--- a/src/mame/drivers/docastle.c
+++ b/src/mame/drivers/docastle.c
@@ -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);
diff --git a/src/mame/drivers/dogfgt.c b/src/mame/drivers/dogfgt.c
index bfaa4c66090..6fbb1b3b3a5 100644
--- a/src/mame/drivers/dogfgt.c
+++ b/src/mame/drivers/dogfgt.c
@@ -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);
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index 40269d53cb5..dc3fa895bca 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -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
diff --git a/src/mame/drivers/dorachan.c b/src/mame/drivers/dorachan.c
index ef13188cba3..caa4ce24a78 100644
--- a/src/mame/drivers/dorachan.c
+++ b/src/mame/drivers/dorachan.c
@@ -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
diff --git a/src/mame/drivers/dotrikun.c b/src/mame/drivers/dotrikun.c
index f22ce45bc60..090976a4271 100644
--- a/src/mame/drivers/dotrikun.c
+++ b/src/mame/drivers/dotrikun.c
@@ -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 )
diff --git a/src/mame/drivers/drgnmst.c b/src/mame/drivers/drgnmst.c
index a9b48b65ec1..8742e962870 100644
--- a/src/mame/drivers/drgnmst.c
+++ b/src/mame/drivers/drgnmst.c
@@ -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
diff --git a/src/mame/drivers/dribling.c b/src/mame/drivers/dribling.c
index f78ee4f5565..da1e41c33f4 100644
--- a/src/mame/drivers/dribling.c
+++ b/src/mame/drivers/dribling.c
@@ -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");
diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c
index 3abc95b5c6c..88ec7cdcdec 100644
--- a/src/mame/drivers/egghunt.c
+++ b/src/mame/drivers/egghunt.c
@@ -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);
diff --git a/src/mame/drivers/embargo.c b/src/mame/drivers/embargo.c
index cde23abd32c..af38849f3f6 100644
--- a/src/mame/drivers/embargo.c
+++ b/src/mame/drivers/embargo.c
@@ -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
diff --git a/src/mame/drivers/enigma2.c b/src/mame/drivers/enigma2.c
index 4783d5ebebb..a508db1bc9b 100644
--- a/src/mame/drivers/enigma2.c
+++ b/src/mame/drivers/enigma2.c
@@ -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;
}
diff --git a/src/mame/drivers/epos.c b/src/mame/drivers/epos.c
index e527637b980..28140840d6e 100644
--- a/src/mame/drivers/epos.c
+++ b/src/mame/drivers/epos.c
@@ -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
/*************************************
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index f818340cec4..e16ef4b16ff 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -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");
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c
index d84459da9ac..cee48ab5dff 100644
--- a/src/mame/drivers/esd16.c
+++ b/src/mame/drivers/esd16.c
@@ -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) //
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c
index dbbd1b1fccf..9fd8d63b73c 100644
--- a/src/mame/drivers/espial.c
+++ b/src/mame/drivers/espial.c
@@ -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);
}
diff --git a/src/mame/drivers/exerion.c b/src/mame/drivers/exerion.c
index 69b6bc141bb..672acf13dc6 100644
--- a/src/mame/drivers/exerion.c
+++ b/src/mame/drivers/exerion.c
@@ -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);
diff --git a/src/mame/drivers/exprraid.c b/src/mame/drivers/exprraid.c
index fca09e21655..7c3aabbba35 100644
--- a/src/mame/drivers/exprraid.c
+++ b/src/mame/drivers/exprraid.c
@@ -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);
}
diff --git a/src/mame/drivers/fcombat.c b/src/mame/drivers/fcombat.c
index f0d9b9cc860..95522d39562 100644
--- a/src/mame/drivers/fcombat.c
+++ b/src/mame/drivers/fcombat.c
@@ -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")
diff --git a/src/mame/drivers/finalizr.c b/src/mame/drivers/finalizr.c
index e1d73caa17c..432e1d4e186 100644
--- a/src/mame/drivers/finalizr.c
+++ b/src/mame/drivers/finalizr.c
@@ -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
diff --git a/src/mame/drivers/firetrap.c b/src/mame/drivers/firetrap.c
index 1f022ddf71a..bc608addbf2 100644
--- a/src/mame/drivers/firetrap.c
+++ b/src/mame/drivers/firetrap.c
@@ -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)
diff --git a/src/mame/drivers/flstory.c b/src/mame/drivers/flstory.c
index b4f3fe0954f..097511bd4a3 100644
--- a/src/mame/drivers/flstory.c
+++ b/src/mame/drivers/flstory.c
@@ -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 */
diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c
index a913ed11bb6..449c329276e 100644
--- a/src/mame/drivers/freekick.c
+++ b/src/mame/drivers/freekick.c
@@ -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)
diff --git a/src/mame/drivers/hexa.c b/src/mame/drivers/hexa.c
index 6a8cf659454..843af203eb8 100644
--- a/src/mame/drivers/hexa.c
+++ b/src/mame/drivers/hexa.c
@@ -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
diff --git a/src/mame/drivers/m10.c b/src/mame/drivers/m10.c
index 6be7fbd587d..cdd5a377efa 100644
--- a/src/mame/drivers/m10.c
+++ b/src/mame/drivers/m10.c
@@ -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")
diff --git a/src/mame/drivers/m14.c b/src/mame/drivers/m14.c
index 0dd0750ab0a..16fbca89358 100644
--- a/src/mame/drivers/m14.c
+++ b/src/mame/drivers/m14.c
@@ -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);
}
diff --git a/src/mame/drivers/m52.c b/src/mame/drivers/m52.c
index d106ab7c34f..c7feb0f5bc5 100644
--- a/src/mame/drivers/m52.c
+++ b/src/mame/drivers/m52.c
@@ -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")
diff --git a/src/mame/drivers/m57.c b/src/mame/drivers/m57.c
index 26c4f44316e..561aee34d1d 100644
--- a/src/mame/drivers/m57.c
+++ b/src/mame/drivers/m57.c
@@ -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")
diff --git a/src/mame/drivers/m58.c b/src/mame/drivers/m58.c
index 19ed5c21a85..51c1a831c8e 100644
--- a/src/mame/drivers/m58.c
+++ b/src/mame/drivers/m58.c
@@ -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)
diff --git a/src/mame/drivers/m62.c b/src/mame/drivers/m62.c
index 04293fb851c..4caf3d3762a 100644
--- a/src/mame/drivers/m62.c
+++ b/src/mame/drivers/m62.c
@@ -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
diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c
index f44a48bd21c..efeb35b7d98 100644
--- a/src/mame/drivers/m63.c
+++ b/src/mame/drivers/m63.c
@@ -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");
diff --git a/src/mame/drivers/n8080.c b/src/mame/drivers/n8080.c
index a72f6944197..57bc906b2ba 100644
--- a/src/mame/drivers/n8080.c
+++ b/src/mame/drivers/n8080.c
@@ -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);
diff --git a/src/mame/drivers/pandoras.c b/src/mame/drivers/pandoras.c
index a28c26910d3..10f388bbd6b 100644
--- a/src/mame/drivers/pandoras.c
+++ b/src/mame/drivers/pandoras.c
@@ -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 =
diff --git a/src/mame/drivers/popper.c b/src/mame/drivers/popper.c
index 9a5eeeda134..4cdfc5664ff 100644
--- a/src/mame/drivers/popper.c
+++ b/src/mame/drivers/popper.c
@@ -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 */
diff --git a/src/mame/drivers/scregg.c b/src/mame/drivers/scregg.c
index 34081752df5..1d1059d8656 100644
--- a/src/mame/drivers/scregg.c
+++ b/src/mame/drivers/scregg.c
@@ -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)
diff --git a/src/mame/drivers/tnzs.c b/src/mame/drivers/tnzs.c
index f5c4fa05675..e4b417128e9 100644
--- a/src/mame/drivers/tnzs.c
+++ b/src/mame/drivers/tnzs.c
@@ -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 =
diff --git a/src/mame/drivers/travrusa.c b/src/mame/drivers/travrusa.c
index 0119d7d4234..dc2616c8ad1 100644
--- a/src/mame/drivers/travrusa.c
+++ b/src/mame/drivers/travrusa.c
@@ -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 */
diff --git a/src/mame/drivers/yunsun16.c b/src/mame/drivers/yunsun16.c
index d0319e599b7..00abd27a4f5 100644
--- a/src/mame/drivers/yunsun16.c
+++ b/src/mame/drivers/yunsun16.c
@@ -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 */
diff --git a/src/mame/drivers/zerozone.c b/src/mame/drivers/zerozone.c
index 1ea341a257a..bde2e7c656a 100644
--- a/src/mame/drivers/zerozone.c
+++ b/src/mame/drivers/zerozone.c
@@ -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 */
diff --git a/src/mame/drivers/zodiack.c b/src/mame/drivers/zodiack.c
index 6da904463cc..22182c57b02 100644
--- a/src/mame/drivers/zodiack.c
+++ b/src/mame/drivers/zodiack.c
@@ -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
diff --git a/src/mame/includes/1942.h b/src/mame/includes/1942.h
index 1d4954f8ccd..8470869d90f 100644
--- a/src/mame/includes/1942.h
+++ b/src/mame/includes/1942.h
@@ -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;
};
diff --git a/src/mame/includes/1943.h b/src/mame/includes/1943.h
index d746964ef2d..797eaf0a468 100644
--- a/src/mame/includes/1943.h
+++ b/src/mame/includes/1943.h
@@ -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;
diff --git a/src/mame/includes/20pacgal.h b/src/mame/includes/20pacgal.h
index 1f4223e90f7..38b93cf102d 100644
--- a/src/mame/includes/20pacgal.h
+++ b/src/mame/includes/20pacgal.h
@@ -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;
};
diff --git a/src/mame/includes/4enraya.h b/src/mame/includes/4enraya.h
index fcaf5c813d3..e8ef4951f11 100644
--- a/src/mame/includes/4enraya.h
+++ b/src/mame/includes/4enraya.h
@@ -9,6 +9,7 @@ struct __4enraya_state
{
/* memory pointers */
UINT8 * videoram;
+ size_t videoram_size;
/* video-related */
tilemap *bg_tilemap;
diff --git a/src/mame/includes/actfancr.h b/src/mame/includes/actfancr.h
index db4bfe6d4fc..3acd0c3286a 100644
--- a/src/mame/includes/actfancr.h
+++ b/src/mame/includes/actfancr.h
@@ -22,6 +22,10 @@ struct _actfancr_state
/* misc */
int trio_control_select;
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/aeroboto.h b/src/mame/includes/aeroboto.h
index 70a0dad6741..abebbd27beb 100644
--- a/src/mame/includes/aeroboto.h
+++ b/src/mame/includes/aeroboto.h
@@ -17,6 +17,7 @@ struct _aeroboto_state
UINT8 * starx;
UINT8 * stary;
UINT8 * bgcolor;
+ size_t spriteram_size;
/* stars layout */
UINT8 * stars_rom;
diff --git a/src/mame/includes/ambush.h b/src/mame/includes/ambush.h
index 622b521c93f..b6f5bac756b 100644
--- a/src/mame/includes/ambush.h
+++ b/src/mame/includes/ambush.h
@@ -13,6 +13,9 @@ struct _ambush_state
UINT8 * colorram;
UINT8 * scrollram;
UINT8 * colorbank;
+
+ size_t videoram_size;
+ size_t spriteram_size;
};
diff --git a/src/mame/includes/angelkds.h b/src/mame/includes/angelkds.h
index 1865367b76c..df5813f1339 100644
--- a/src/mame/includes/angelkds.h
+++ b/src/mame/includes/angelkds.h
@@ -22,6 +22,9 @@ struct _angelkds_state
UINT8 sound[4];
UINT8 sound2[4];
UINT8 layer_ctrl;
+
+ /* devices */
+ const device_config *subcpu;
};
diff --git a/src/mame/includes/aquarium.h b/src/mame/includes/aquarium.h
index 2c2dfb4cb0e..481523577b0 100644
--- a/src/mame/includes/aquarium.h
+++ b/src/mame/includes/aquarium.h
@@ -10,13 +10,17 @@ struct _aquarium_state
UINT16 * mid_videoram;
UINT16 * bak_videoram;
UINT16 * spriteram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *txt_tilemap, *mid_tilemap, *bak_tilemap;
/* misc */
int aquarium_snd_ack;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/arkanoid.h b/src/mame/includes/arkanoid.h
index c2397e4e573..3c10e99e112 100644
--- a/src/mame/includes/arkanoid.h
+++ b/src/mame/includes/arkanoid.h
@@ -16,6 +16,7 @@ struct _arkanoid_state
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap;
@@ -30,6 +31,9 @@ struct _arkanoid_state
UINT8 port_a_in, port_a_out, ddr_a;
UINT8 port_c_out, ddr_c;
UINT8 bootleg_cmd;
+
+ /* devices */
+ const device_config *mcu;
};
diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h
index 7b71db6ffb5..feae0031c34 100644
--- a/src/mame/includes/armedf.h
+++ b/src/mame/includes/armedf.h
@@ -10,8 +10,8 @@ struct _armedf_state
UINT16 * bg_videoram;
UINT16 * fg_videoram;
UINT16 * legion_cmd; // legion only!
-// UINT16 * spriteram16; // currently this uses generic buffered_spriteram
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * spriteram; // currently this uses generic buffered_spriteram
+// UINT16 * paletteram; // currently this uses generic palette handling
/* video-related */
tilemap *bg_tilemap,*fg_tilemap, *tx_tilemap;
diff --git a/src/mame/includes/ashnojoe.h b/src/mame/includes/ashnojoe.h
index 0df00208239..397d6336c1a 100644
--- a/src/mame/includes/ashnojoe.h
+++ b/src/mame/includes/ashnojoe.h
@@ -17,15 +17,18 @@ struct _ashnojoe_state
UINT16 * tileram_6;
UINT16 * tileram_7;
UINT16 * tilemap_reg;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
/* video-related */
- tilemap *joetilemap, *joetilemap2, *joetilemap3, *joetilemap4, *joetilemap5, *joetilemap6, *joetilemap7;
+ tilemap *joetilemap, *joetilemap2, *joetilemap3, *joetilemap4, *joetilemap5, *joetilemap6, *joetilemap7;
/* sound-related */
- UINT8 adpcm_byte;
- int soundlatch_status;
- int msm5205_vclk_toggle;
+ UINT8 adpcm_byte;
+ int soundlatch_status;
+ int msm5205_vclk_toggle;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h
index c8e88af4f1b..ffd825dbb13 100644
--- a/src/mame/includes/atarifb.h
+++ b/src/mame/includes/atarifb.h
@@ -24,6 +24,7 @@ struct _atarifb_state
UINT8 * field_videoram;
UINT8 * spriteram;
UINT8 * scroll_register;
+ size_t spriteram_size;
tilemap *alpha1_tilemap;
tilemap *alpha2_tilemap;
@@ -39,6 +40,9 @@ struct _atarifb_state
int counter_x_in0b, counter_y_in0b;
int counter_x_in2, counter_y_in2;
int counter_x_in2b, counter_y_in2b;
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/avalnche.h b/src/mame/includes/avalnche.h
index 483d0821606..3ba308886fe 100644
--- a/src/mame/includes/avalnche.h
+++ b/src/mame/includes/avalnche.h
@@ -12,6 +12,8 @@ struct _avalnche_state
{
/* video-related */
UINT8 * videoram;
+ size_t videoram_size;
+
UINT8 avalance_video_inverted;
};
diff --git a/src/mame/includes/battlane.h b/src/mame/includes/battlane.h
index 6f0b84b8653..a726defe830 100644
--- a/src/mame/includes/battlane.h
+++ b/src/mame/includes/battlane.h
@@ -16,6 +16,10 @@ struct _battlane_state
bitmap_t *screen_bitmap;
int video_ctrl;
int cpu_control; /* CPU interrupt control register */
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *subcpu;
};
diff --git a/src/mame/includes/bigevglf.h b/src/mame/includes/bigevglf.h
index 8122289bc2f..bcdfcb7f823 100644
--- a/src/mame/includes/bigevglf.h
+++ b/src/mame/includes/bigevglf.h
@@ -13,23 +13,27 @@ struct _bigevglf_state
UINT32 vidram_bank, plane_selected, plane_visible;
/* sound-related */
- int sound_nmi_enable, pending_nmi;
- UINT8 for_sound;
- UINT8 from_sound;
- UINT8 sound_state;
+ int sound_nmi_enable, pending_nmi;
+ UINT8 for_sound;
+ UINT8 from_sound;
+ UINT8 sound_state;
/* MCU related */
- UINT8 from_mcu;
- int mcu_sent, main_sent;
- UINT8 port_a_in, port_a_out, ddr_a;
- UINT8 port_b_in, port_b_out, ddr_b;
- UINT8 port_c_in, port_c_out, ddr_c;
- int mcu_coin_bit5;
+ UINT8 from_mcu;
+ int mcu_sent, main_sent;
+ UINT8 port_a_in, port_a_out, ddr_a;
+ UINT8 port_b_in, port_b_out, ddr_b;
+ UINT8 port_c_in, port_c_out, ddr_c;
+ int mcu_coin_bit5;
/* misc */
- UINT32 beg_bank;
- UINT8 beg13_ls74[2];
- UINT8 port_select; /* for muxed controls */
+ UINT32 beg_bank;
+ UINT8 beg13_ls74[2];
+ UINT8 port_select; /* for muxed controls */
+
+ /* devices */
+ const device_config *audiocpu;
+ const device_config *mcu;
};
diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h
index 2e17a9d7265..b21279c4a30 100644
--- a/src/mame/includes/bionicc.h
+++ b/src/mame/includes/bionicc.h
@@ -11,8 +11,8 @@ struct _bionicc_state
UINT16 * bgvideoram;
UINT16 * fgvideoram;
UINT16 * txvideoram;
- UINT16 * paletteram16;
-// UINT16 * spriteram16; // needed for EOF, but currently handled through buffer_spriteram16
+ UINT16 * paletteram;
+// UINT16 * spriteram; // needed for EOF, but currently handled through buffer_spriteram16
/* video-related */
tilemap *tx_tilemap, *bg_tilemap, *fg_tilemap;
diff --git a/src/mame/includes/blktiger.h b/src/mame/includes/blktiger.h
index 0010e8451a1..3918660ea06 100644
--- a/src/mame/includes/blktiger.h
+++ b/src/mame/includes/blktiger.h
@@ -15,15 +15,19 @@ struct _blktiger_state
/* video-related */
tilemap *tx_tilemap, *bg_tilemap8x4, *bg_tilemap4x8;
- UINT32 scroll_bank;
- UINT8 scroll_x[2];
- UINT8 scroll_y[2];
- UINT8 *scroll_ram;
- UINT8 screen_layout;
- UINT8 chon, objon, bgon;
+ UINT32 scroll_bank;
+ UINT8 scroll_x[2];
+ UINT8 scroll_y[2];
+ UINT8 *scroll_ram;
+ UINT8 screen_layout;
+ UINT8 chon, objon, bgon;
/* mcu-related */
- UINT8 z80_latch, i8751_latch;
+ UINT8 z80_latch, i8751_latch;
+
+ /* devices */
+ const device_config *mcu;
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/blmbycar.h b/src/mame/includes/blmbycar.h
index ca0670c4197..671a6e995fe 100644
--- a/src/mame/includes/blmbycar.h
+++ b/src/mame/includes/blmbycar.h
@@ -12,8 +12,9 @@ struct _blmbycar_state
UINT16 * scroll_0;
UINT16 * vram_1;
UINT16 * scroll_1;
- UINT16 * spriteram16;
- UINT16 * paletteram16;
+ UINT16 * spriteram;
+ UINT16 * paletteram;
+ size_t spriteram_size;
/* video-related */
tilemap *tilemap_0, *tilemap_1;
diff --git a/src/mame/includes/blockout.h b/src/mame/includes/blockout.h
index 7b87e2d4b96..4a1d9b3edc3 100644
--- a/src/mame/includes/blockout.h
+++ b/src/mame/includes/blockout.h
@@ -10,11 +10,14 @@ struct _blockout_state
/* memory pointers */
UINT16 * videoram;
UINT16 * frontvideoram;
- UINT16 * paletteram16;
+ UINT16 * paletteram;
/* video-related */
bitmap_t *tmpbitmap;
UINT16 color;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/blueprnt.h b/src/mame/includes/blueprnt.h
index 27453fabd86..e9c3443ab6e 100644
--- a/src/mame/includes/blueprnt.h
+++ b/src/mame/includes/blueprnt.h
@@ -12,6 +12,7 @@ struct _blueprnt_state
UINT8 * colorram;
UINT8 * spriteram;
UINT8 * scrollram;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap;
@@ -19,6 +20,9 @@ struct _blueprnt_state
/* misc */
int dipsw;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/bogeyman.h b/src/mame/includes/bogeyman.h
index edbb0a7d6c0..1bc0deb284f 100644
--- a/src/mame/includes/bogeyman.h
+++ b/src/mame/includes/bogeyman.h
@@ -14,6 +14,7 @@ struct _bogeyman_state
UINT8 * colorram2;
UINT8 * spriteram;
// UINT8 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap, *fg_tilemap;
diff --git a/src/mame/includes/bombjack.h b/src/mame/includes/bombjack.h
index 02e79404076..0310f728857 100644
--- a/src/mame/includes/bombjack.h
+++ b/src/mame/includes/bombjack.h
@@ -12,6 +12,7 @@ struct _bombjack_state
UINT8 * colorram;
UINT8 * spriteram;
// UINT8 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg_tilemap;
diff --git a/src/mame/includes/capbowl.h b/src/mame/includes/capbowl.h
index dee66c607ca..1d21ee88b3b 100644
--- a/src/mame/includes/capbowl.h
+++ b/src/mame/includes/capbowl.h
@@ -16,6 +16,10 @@ struct _capbowl_state
/* input-related */
UINT8 last_trackball_val[2];
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
};
/*----------- defined in video/capbowl.c -----------*/
diff --git a/src/mame/includes/carjmbre.h b/src/mame/includes/carjmbre.h
index e791fcab41f..46fcbd4d2ce 100644
--- a/src/mame/includes/carjmbre.h
+++ b/src/mame/includes/carjmbre.h
@@ -10,6 +10,7 @@ struct _carjmbre_state
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *cj_tilemap;
diff --git a/src/mame/includes/ccastles.h b/src/mame/includes/ccastles.h
index 5aa0ad0faea..8bb4d834f7d 100644
--- a/src/mame/includes/ccastles.h
+++ b/src/mame/includes/ccastles.h
@@ -30,6 +30,9 @@ struct _ccastles_state
emu_timer *irq_timer;
UINT8 irq_state;
UINT8 nvram_store[2];
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/champbas.h b/src/mame/includes/champbas.h
index 3eab86ede5b..9e90719c88d 100644
--- a/src/mame/includes/champbas.h
+++ b/src/mame/includes/champbas.h
@@ -15,6 +15,7 @@ struct _champbas_state
UINT8 * bg_videoram;
UINT8 * spriteram;
UINT8 * spriteram_2;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap;
@@ -25,6 +26,8 @@ struct _champbas_state
int watchdog_count;
/* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
const device_config *mcu;
};
diff --git a/src/mame/includes/changela.h b/src/mame/includes/changela.h
index 556792ddc6d..9826eba8cf3 100644
--- a/src/mame/includes/changela.h
+++ b/src/mame/includes/changela.h
@@ -41,6 +41,9 @@ struct _changela_state
UINT8 mcu_in;
UINT8 mcu_pc_1;
UINT8 mcu_pc_0;
+
+ /* devices */
+ const device_config *mcu;
};
/*----------- defined in video/changela.c -----------*/
diff --git a/src/mame/includes/cheekyms.h b/src/mame/includes/cheekyms.h
index 0d515ed764e..e79bb989982 100644
--- a/src/mame/includes/cheekyms.h
+++ b/src/mame/includes/cheekyms.h
@@ -18,6 +18,7 @@ struct _cheekyms_state
bitmap_t *bitmap_buffer;
/* devices */
+ const device_config *maincpu;
const device_config *dac;
};
diff --git a/src/mame/includes/cidelsa.h b/src/mame/includes/cidelsa.h
index 032d4acfbf7..1d798f5c286 100644
--- a/src/mame/includes/cidelsa.h
+++ b/src/mame/includes/cidelsa.h
@@ -45,6 +45,7 @@ struct _cidelsa_state
int draco_ay_latch;
/* devices */
+ const device_config *cdp1802;
const device_config *cdp1869;
};
diff --git a/src/mame/includes/circus.h b/src/mame/includes/circus.h
index 89b5826dc12..0071a02eb58 100644
--- a/src/mame/includes/circus.h
+++ b/src/mame/includes/circus.h
@@ -17,6 +17,7 @@ struct _circus_state
int clown_x, clown_y, clown_z;
/* devices */
+ const device_config *maincpu;
const device_config *samples;
const device_config *discrete;
diff --git a/src/mame/includes/circusc.h b/src/mame/includes/circusc.h
index 99adf666c49..3234bdbf211 100644
--- a/src/mame/includes/circusc.h
+++ b/src/mame/includes/circusc.h
@@ -14,14 +14,16 @@ struct _circusc_state
UINT8 * spriteram_2;
UINT8 * spritebank;
UINT8 * scroll;
+ size_t spriteram_size;
/* video-related */
- tilemap *bg_tilemap;
+ tilemap *bg_tilemap;
/* sound-related */
UINT8 sn_latch;
/* devices */
+ const device_config *audiocpu;
const device_config *sn1;
const device_config *sn2;
const device_config *dac;
diff --git a/src/mame/includes/citycon.h b/src/mame/includes/citycon.h
index 91c405be3bf..b1c76312db0 100644
--- a/src/mame/includes/citycon.h
+++ b/src/mame/includes/citycon.h
@@ -13,10 +13,14 @@ struct _citycon_state
UINT8 * scroll;
UINT8 * spriteram;
// UINT8 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap,*fg_tilemap;
int bg_image;
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/cloud9.h b/src/mame/includes/cloud9.h
index 71955e32ae4..33179ca36e5 100644
--- a/src/mame/includes/cloud9.h
+++ b/src/mame/includes/cloud9.h
@@ -28,6 +28,9 @@ struct _cloud9_state
int vblank_end;
emu_timer *irq_timer;
UINT8 irq_state;
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/commando.h b/src/mame/includes/commando.h
index d9d7785f1e6..fcf7eeda7c3 100644
--- a/src/mame/includes/commando.h
+++ b/src/mame/includes/commando.h
@@ -18,6 +18,9 @@ struct _commando_state
tilemap *bg_tilemap, *fg_tilemap;
UINT8 scroll_x[2];
UINT8 scroll_y[2];
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/cop01.h b/src/mame/includes/cop01.h
index 614f62b150b..8f4e258295a 100644
--- a/src/mame/includes/cop01.h
+++ b/src/mame/includes/cop01.h
@@ -11,6 +11,7 @@ struct _cop01_state
UINT8 * bgvideoram;
UINT8 * fgvideoram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap, *fg_tilemap;
@@ -19,6 +20,9 @@ struct _cop01_state
/* sound-related */
int pulse;
int timer; // kludge for ym3526 in mightguy
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/copsnrob.h b/src/mame/includes/copsnrob.h
index 8259af3d911..7bbb8a55f60 100644
--- a/src/mame/includes/copsnrob.h
+++ b/src/mame/includes/copsnrob.h
@@ -14,6 +14,7 @@ struct _copsnrob_state
UINT8 * bulletsram;
UINT8 * cary;
UINT8 * carimage;
+ size_t videoram_size;
/* misc */
UINT8 misc;
diff --git a/src/mame/includes/cosmic.h b/src/mame/includes/cosmic.h
index 4b19b8b071f..05dbc270b41 100644
--- a/src/mame/includes/cosmic.h
+++ b/src/mame/includes/cosmic.h
@@ -14,6 +14,8 @@ struct _cosmic_state
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
+ size_t videoram_size;
+ size_t spriteram_size;
/* video-related */
pen_t (*map_color)(running_machine *machine, UINT8 x, UINT8 y);
diff --git a/src/mame/includes/crgolf.h b/src/mame/includes/crgolf.h
index e0cae8603b0..535355e0fe7 100644
--- a/src/mame/includes/crgolf.h
+++ b/src/mame/includes/crgolf.h
@@ -24,6 +24,10 @@ struct _crgolf_state
UINT8 main_to_sound_data, sound_to_main_data;
UINT16 sample_offset;
UINT8 sample_count;
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
};
/*----------- defined in video/crgolf.c -----------*/
diff --git a/src/mame/includes/crospang.h b/src/mame/includes/crospang.h
index b70d12fbd64..a55f17a6023 100644
--- a/src/mame/includes/crospang.h
+++ b/src/mame/includes/crospang.h
@@ -11,12 +11,16 @@ struct _crospang_state
UINT16 * bg_videoram;
UINT16 * fg_videoram;
UINT16 * spriteram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *bg_layer,*fg_layer;
int xsproff, ysproff;
int bestri_tilebank;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/ddragon.h b/src/mame/includes/ddragon.h
index a292166e626..8530e061f18 100644
--- a/src/mame/includes/ddragon.h
+++ b/src/mame/includes/ddragon.h
@@ -18,6 +18,7 @@ struct _ddragon_state
UINT8 * darktowr_mcu_ports;
// UINT8 * paletteram; // currently this uses generic palette handling
// UINT8 * paletteram_2; // currently this uses generic palette handling
+ size_t spriteram_size; // FIXME: this appears in chinagat.c, but is it really used?
/* video-related */
tilemap *fg_tilemap, *bg_tilemap;
@@ -44,6 +45,7 @@ struct _ddragon_state
#endif
/* devices */
+ const device_config *maincpu;
const device_config *snd_cpu;
const device_config *sub_cpu;
const device_config *adpcm_1;
diff --git a/src/mame/includes/ddragon3.h b/src/mame/includes/ddragon3.h
index 474dbb327c5..9ec9d165cd5 100644
--- a/src/mame/includes/ddragon3.h
+++ b/src/mame/includes/ddragon3.h
@@ -12,7 +12,7 @@ struct _ddragon3_state
UINT16 * bg_videoram;
UINT16 * fg_videoram;
UINT16 * spriteram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
/* video-related */
tilemap *fg_tilemap, *bg_tilemap;
@@ -25,6 +25,10 @@ struct _ddragon3_state
/* misc */
UINT16 io_reg[8];
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/dec8.h b/src/mame/includes/dec8.h
index 6608c20404a..675f2af6857 100644
--- a/src/mame/includes/dec8.h
+++ b/src/mame/includes/dec8.h
@@ -10,6 +10,7 @@ struct _dec8_state
// UINT8 * paletteram; // currently this uses generic palette handling
// UINT8 * paletteram_2; // currently this uses generic palette handling
// UINT8 * spriteram; // currently this uses buffered_spriteram in some games
+ size_t videoram_size;
/* video-related */
tilemap *pf0_tilemap, *pf1_tilemap, *fix_tilemap;
@@ -24,6 +25,12 @@ struct _dec8_state
int coin1, coin2, latch, snd;
int msm5205next;
int toggle;
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *subcpu;
+ const device_config *audiocpu;
+ const device_config *mcu;
};
/*----------- defined in video/dec8.c -----------*/
diff --git a/src/mame/includes/deniam.h b/src/mame/includes/deniam.h
index cb3c0f2ca25..dc4162d4fc4 100644
--- a/src/mame/includes/deniam.h
+++ b/src/mame/includes/deniam.h
@@ -13,6 +13,7 @@ struct _deniam_state
UINT16 * textram;
UINT16 * spriteram;
UINT16 * paletteram;
+ size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg_tilemap, *tx_tilemap;
diff --git a/src/mame/includes/docastle.h b/src/mame/includes/docastle.h
index e76bebf4d3d..868f3375579 100644
--- a/src/mame/includes/docastle.h
+++ b/src/mame/includes/docastle.h
@@ -7,6 +7,7 @@ struct _docastle_state
UINT8 * videoram;
UINT8 * colorram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *do_tilemap;
@@ -16,6 +17,9 @@ struct _docastle_state
int adpcm_data;
int adpcm_status;
UINT8 buffer0[9], buffer1[9];
+
+ /* devices */
+ const device_config *slave;
};
diff --git a/src/mame/includes/dogfgt.h b/src/mame/includes/dogfgt.h
index 90b62489bbf..0f823fab6a2 100644
--- a/src/mame/includes/dogfgt.h
+++ b/src/mame/includes/dogfgt.h
@@ -7,10 +7,11 @@ typedef struct _dogfgt_state dogfgt_state;
struct _dogfgt_state
{
/* memory pointers */
- UINT8 * spriteram;
UINT8 * bgvideoram;
+ UINT8 * spriteram;
UINT8 * sharedram;
// UINT8 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
bitmap_t *pixbitmap;
@@ -22,6 +23,9 @@ struct _dogfgt_state
/* sound-related */
int soundlatch, last_snd_ctrl;
+
+ /* devices */
+ const device_config *subcpu;
};
diff --git a/src/mame/includes/drgnmst.h b/src/mame/includes/drgnmst.h
index f7a9bcc1abe..29667d9c69c 100644
--- a/src/mame/includes/drgnmst.h
+++ b/src/mame/includes/drgnmst.h
@@ -10,7 +10,8 @@ struct _drgnmst_state
UINT16 * rowscrollram;
UINT16 * vidregs2;
UINT16 * spriteram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap,*fg_tilemap, *md_tilemap;
diff --git a/src/mame/includes/dribling.h b/src/mame/includes/dribling.h
index b629a31d2ed..e6452b7a07b 100644
--- a/src/mame/includes/dribling.h
+++ b/src/mame/includes/dribling.h
@@ -19,8 +19,8 @@ struct _dribling_state
UINT8 input_mux;
UINT8 di;
-
/* devices */
+ const device_config *maincpu;
const device_config *ppi_0;
const device_config *ppi_1;
};
diff --git a/src/mame/includes/epos.h b/src/mame/includes/epos.h
index b753ce3c585..3889ce37f24 100644
--- a/src/mame/includes/epos.h
+++ b/src/mame/includes/epos.h
@@ -9,6 +9,7 @@ struct _epos_state
{
/* memory pointers */
UINT8 * videoram;
+ size_t videoram_size;
/* video-related */
UINT8 palette;
diff --git a/src/mame/includes/equites.h b/src/mame/includes/equites.h
index 9c9830c2874..008a70068f1 100644
--- a/src/mame/includes/equites.h
+++ b/src/mame/includes/equites.h
@@ -34,6 +34,7 @@ struct _equites_state
#endif
/* devices */
+ const device_config *mcu;
const device_config *audio_cpu;
const device_config *msm;
const device_config *dac_1;
diff --git a/src/mame/includes/esd16.h b/src/mame/includes/esd16.h
index 4f82eb70d4c..46c1e5d2d18 100644
--- a/src/mame/includes/esd16.h
+++ b/src/mame/includes/esd16.h
@@ -12,11 +12,12 @@ struct _esd16_state
UINT16 * vram_1;
UINT16 * scroll_0;
UINT16 * scroll_1;
- UINT16 * spriteram16;
+ UINT16 * spriteram;
UINT16 * head_layersize;
UINT16 * headpanic_platform_x;
UINT16 * headpanic_platform_y;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
+ size_t spriteram_size;
/* video-related */
tilemap *tilemap_0_16x16, *tilemap_1_16x16;
diff --git a/src/mame/includes/espial.h b/src/mame/includes/espial.h
index 8d13d3ab18e..981a7e4a208 100644
--- a/src/mame/includes/espial.h
+++ b/src/mame/includes/espial.h
@@ -17,6 +17,9 @@ struct _espial_state
UINT8 * spriteram; // zodiack, marineb (hoccer only)
UINT8 * videoram_2; // zodiack
UINT8 * bulletsram; // zodiack
+ size_t videoram_size; // zodiack
+ size_t spriteram_size; // zodiack
+ size_t bulletsram_size; // zodiack
/* video-related */
tilemap *bg_tilemap, *fg_tilemap;
@@ -32,6 +35,9 @@ struct _espial_state
/* misc */
int percuss_hardware; // zodiack
+ /* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
};
/*----------- defined in drivers/espial.c -----------*/
@@ -79,8 +85,6 @@ VIDEO_UPDATE( hopprobo );
/*----------- defined in video/zodiack.c -----------*/
-extern size_t zodiack_bulletsram_size;
-
WRITE8_HANDLER( zodiack_videoram_w );
WRITE8_HANDLER( zodiack_videoram2_w );
WRITE8_HANDLER( zodiack_attributes_w );
diff --git a/src/mame/includes/exerion.h b/src/mame/includes/exerion.h
index 2953e3c2f9d..5eff5856bc5 100644
--- a/src/mame/includes/exerion.h
+++ b/src/mame/includes/exerion.h
@@ -25,6 +25,8 @@ struct _exerion_state
UINT8 * main_ram;
UINT8 * videoram;
UINT8 * spriteram;
+ size_t videoram_size;
+ size_t spriteram_size;
/* video-related */
UINT8 cocktail_flip;
@@ -37,6 +39,9 @@ struct _exerion_state
/* protection? */
UINT8 porta;
UINT8 portb;
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/exprraid.h b/src/mame/includes/exprraid.h
index 81716ae1875..0b0c8b0c815 100644
--- a/src/mame/includes/exprraid.h
+++ b/src/mame/includes/exprraid.h
@@ -13,6 +13,7 @@ struct _exprraid_state
UINT8 * videoram;
UINT8 * colorram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap, *fg_tilemap;
@@ -20,6 +21,10 @@ struct _exprraid_state
/* misc */
//int coin; // used in the commented out INTERRUPT_GEN - can this be removed?
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *slave;
};
diff --git a/src/mame/includes/fcombat.h b/src/mame/includes/fcombat.h
index 4fed641982f..0e42a3fdddc 100644
--- a/src/mame/includes/fcombat.h
+++ b/src/mame/includes/fcombat.h
@@ -28,6 +28,8 @@ struct _fcombat_state
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
+ size_t videoram_size;
+ size_t spriteram_size;
/* video-related */
tilemap *bgmap;
diff --git a/src/mame/includes/finalizr.h b/src/mame/includes/finalizr.h
index 4ffde16039a..4381ae38959 100644
--- a/src/mame/includes/finalizr.h
+++ b/src/mame/includes/finalizr.h
@@ -15,6 +15,8 @@ struct _finalizr_state
UINT8 * scroll;
UINT8 * spriteram;
UINT8 * spriteram_2;
+ size_t videoram_size;
+ size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg_tilemap;
diff --git a/src/mame/includes/firetrap.h b/src/mame/includes/firetrap.h
index 61a5af2eb80..841daaf0ab4 100644
--- a/src/mame/includes/firetrap.h
+++ b/src/mame/includes/firetrap.h
@@ -12,6 +12,7 @@ struct _firetrap_state
UINT8 * bg2videoram;
UINT8 * fgvideoram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *fg_tilemap, *bg1_tilemap, *bg2_tilemap;
diff --git a/src/mame/includes/fitfight.h b/src/mame/includes/fitfight.h
index d1762dcf9b8..f50ee702225 100644
--- a/src/mame/includes/fitfight.h
+++ b/src/mame/includes/fitfight.h
@@ -13,7 +13,7 @@ struct _fitfight_state
UINT16 * fof_mid_tileram;
UINT16 * fof_txt_tileram;
UINT16 * spriteram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
/* video-related */
tilemap *fof_bak_tilemap, *fof_mid_tilemap, *fof_txt_tilemap;
diff --git a/src/mame/includes/flstory.h b/src/mame/includes/flstory.h
index b758a68165b..2c24dd21319 100644
--- a/src/mame/includes/flstory.h
+++ b/src/mame/includes/flstory.h
@@ -9,6 +9,8 @@ struct _flstory_state
UINT8 * spriteram;
// UINT8 * paletteram; // currently this uses generic palette handling
// UINT8 * paletteram_2; // currently this uses generic palette handling
+ size_t videoram_size;
+ size_t spriteram_size;
/* video-related */
tilemap *bg_tilemap;
diff --git a/src/mame/includes/freekick.h b/src/mame/includes/freekick.h
index a921d1b0f67..b4c46f93259 100644
--- a/src/mame/includes/freekick.h
+++ b/src/mame/includes/freekick.h
@@ -6,6 +6,7 @@ struct _freekick_state
/* memory pointers */
UINT8 * videoram;
UINT8 * spriteram;
+ size_t spriteram_size;
/* video-related */
tilemap *freek_tilemap;
diff --git a/src/mame/includes/hexa.h b/src/mame/includes/hexa.h
index 3b36efee320..fc549e3309f 100644
--- a/src/mame/includes/hexa.h
+++ b/src/mame/includes/hexa.h
@@ -5,6 +5,7 @@ struct _hexa_state
{
/* memory pointers */
UINT8 * videoram;
+ size_t videoram_size;
/* video-related */
tilemap *bg_tilemap;
diff --git a/src/mame/includes/iremz80.h b/src/mame/includes/iremz80.h
index fb6335a3aa4..1cc8b328cd2 100644
--- a/src/mame/includes/iremz80.h
+++ b/src/mame/includes/iremz80.h
@@ -12,6 +12,7 @@ struct _irem_z80_state
/* memory pointers */
UINT8 * videoram; // m52, m57, m58
UINT8 * spriteram; // m52, m57, m58, m62
+ size_t spriteram_size;
UINT8 * colorram; // m52
UINT8 * m62_tileram; // m62
diff --git a/src/mame/includes/m10.h b/src/mame/includes/m10.h
index ce95bca0cb2..530c9a70e4d 100644
--- a/src/mame/includes/m10.h
+++ b/src/mame/includes/m10.h
@@ -36,6 +36,7 @@ struct _m10_state
UINT8 * rom;
UINT8 * videoram;
UINT8 * colorram;
+ size_t videoram_size;
/* video-related */
tilemap * tx_tilemap;
@@ -52,6 +53,7 @@ struct _m10_state
int last;
/* devices */
+ const device_config *maincpu;
const device_config *ic8j1;
const device_config *ic8j2;
const device_config *samples;
diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h
index 67c6002a58b..b8f8e10bc8a 100644
--- a/src/mame/includes/n8080.h
+++ b/src/mame/includes/n8080.h
@@ -32,6 +32,9 @@ struct _n8080_state
unsigned shift_data;
unsigned shift_bits;
int inte;
+
+ /* devices */
+ const device_config *maincpu;
};
diff --git a/src/mame/includes/pandoras.h b/src/mame/includes/pandoras.h
index efaac8b881c..79f3b11cb8b 100644
--- a/src/mame/includes/pandoras.h
+++ b/src/mame/includes/pandoras.h
@@ -19,6 +19,12 @@ struct _pandoras_state
int irq_enable_a, irq_enable_b;
int firq_old_data_a, firq_old_data_b;
int i8039_status;
+
+ /* devices */
+ const device_config *maincpu;
+ const device_config *subcpu;
+ const device_config *audiocpu;
+ const device_config *mcu;
};
diff --git a/src/mame/includes/popper.h b/src/mame/includes/popper.h
index 0d0fec7235b..0ce84ada17a 100644
--- a/src/mame/includes/popper.h
+++ b/src/mame/includes/popper.h
@@ -13,13 +13,16 @@ struct _popper_state
UINT8 * attribram;
UINT8 * ol_attribram;
UINT8 * spriteram;
-// size_t spriteram_size;
+ size_t spriteram_size;
/* video-related */
tilemap *p123_tilemap, *p0_tilemap;
tilemap *ol_p123_tilemap, *ol_p0_tilemap;
INT32 flipscreen, e002, gfx_bank;
rectangle tilemap_clip;
+
+ /* devices */
+ const device_config *audiocpu;
};
@@ -37,4 +40,3 @@ PALETTE_INIT( popper );
VIDEO_START( popper );
VIDEO_UPDATE( popper );
-
diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h
index 2efd6a43818..b8f6f251fb6 100644
--- a/src/mame/includes/tnzs.h
+++ b/src/mame/includes/tnzs.h
@@ -52,6 +52,7 @@ struct _tnzs_state
/* devices */
+ const device_config *audiocpu;
const device_config *mcu;
};
diff --git a/src/mame/includes/yunsun16.h b/src/mame/includes/yunsun16.h
index 084c21ca9c0..a71b764a374 100644
--- a/src/mame/includes/yunsun16.h
+++ b/src/mame/includes/yunsun16.h
@@ -13,12 +13,16 @@ struct _yunsun16_state
UINT16 * scrollram_0;
UINT16 * scrollram_1;
UINT16 * priorityram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
- UINT16 * spriteram16;
+// UINT16 * paletteram; // currently this uses generic palette handling
+ UINT16 * spriteram;
+ size_t spriteram_size;
/* other video-related elements */
tilemap *tilemap_0, *tilemap_1;
int sprites_scrolldx, sprites_scrolldy;
+
+ /* devices */
+ const device_config *audiocpu;
};
diff --git a/src/mame/includes/zerozone.h b/src/mame/includes/zerozone.h
index 30dd43c0f8e..d922873bc58 100644
--- a/src/mame/includes/zerozone.h
+++ b/src/mame/includes/zerozone.h
@@ -9,11 +9,15 @@ struct _zerozone_state
{
/* memory pointers */
UINT16 * videoram;
-// UINT16 * paletteram16; // currently this uses generic palette handling
+// UINT16 * paletteram; // currently this uses generic palette handling
+ size_t videoram_size;
/* video-related */
UINT16 tilebank;
tilemap *zz_tilemap;
+
+ /* devices */
+ const device_config *audiocpu;
};
WRITE16_HANDLER( zerozone_tilemap_w );
diff --git a/src/mame/machine/atarifb.c b/src/mame/machine/atarifb.c
index 3158a685338..92b4263b43e 100644
--- a/src/mame/machine/atarifb.c
+++ b/src/mame/machine/atarifb.c
@@ -123,7 +123,8 @@ WRITE8_HANDLER( soccer_out2_w )
WRITE8_HANDLER( atarifb_out3_w )
{
- int loop = cpu_getiloops(cputag_get_cpu(space->machine, "maincpu"));
+ atarifb_state *state = (atarifb_state *)space->machine->driver_data;
+ int loop = cpu_getiloops(state->maincpu);
switch (loop)
{
diff --git a/src/mame/machine/bigevglf.c b/src/mame/machine/bigevglf.c
index 91c0cade24c..01f58e39fc6 100644
--- a/src/mame/machine/bigevglf.c
+++ b/src/mame/machine/bigevglf.c
@@ -41,7 +41,7 @@ WRITE8_HANDLER( bigevglf_68705_port_b_w )
if ((state->ddr_b & 0x02) && (~state->port_b_out & 0x02) && (data & 0x02)) /* positive going transition of the clock */
{
- cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
+ cpu_set_input_line(state->mcu, 0, CLEAR_LINE);
state->main_sent = 0;
}
@@ -91,7 +91,7 @@ WRITE8_HANDLER( bigevglf_mcu_w )
state->port_a_in = data;
state->main_sent = 1;
- cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
+ cpu_set_input_line(state->mcu, 0, ASSERT_LINE);
}
diff --git a/src/mame/machine/decocass.c b/src/mame/machine/decocass.c
index 69efdfa2007..0a15573ffbf 100644
--- a/src/mame/machine/decocass.c
+++ b/src/mame/machine/decocass.c
@@ -64,7 +64,7 @@ WRITE8_HANDLER( decocass_sound_command_w )
state->sound_ack |= 0x80;
/* remove snd cpu data ack bit. i don't see it in the schems, but... */
state->sound_ack &= ~0x40;
- cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, ASSERT_LINE);
+ cpu_set_input_line(state->audiocpu, M6502_IRQ_LINE, ASSERT_LINE);
}
READ8_HANDLER( decocass_sound_data_r )
@@ -95,7 +95,7 @@ READ8_HANDLER( decocass_sound_command_r )
decocass_state *state = (decocass_state *)space->machine->driver_data;
UINT8 data = soundlatch_r(space, 0);
LOG(4,("CPU %s sound command <- $%02x\n", space->cpu->tag, data));
- cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, M6502_IRQ_LINE, CLEAR_LINE);
state->sound_ack &= ~0x80;
return data;
}
@@ -105,21 +105,21 @@ TIMER_DEVICE_CALLBACK( decocass_audio_nmi_gen )
decocass_state *state = (decocass_state *)timer->machine->driver_data;
int scanline = param;
state->audio_nmi_state = scanline & 8;
- cputag_set_input_line(timer->machine, "audiocpu", INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
}
WRITE8_HANDLER( decocass_sound_nmi_enable_w )
{
decocass_state *state = (decocass_state *)space->machine->driver_data;
state->audio_nmi_enabled = 1;
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
}
READ8_HANDLER( decocass_sound_nmi_enable_r )
{
decocass_state *state = (decocass_state *)space->machine->driver_data;
state->audio_nmi_enabled = 1;
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
return 0xff;
}
@@ -141,7 +141,8 @@ WRITE8_HANDLER( decocass_sound_data_ack_reset_w )
WRITE8_HANDLER( decocass_nmi_reset_w )
{
- cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE );
+ decocass_state *state = (decocass_state *)space->machine->driver_data;
+ cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, CLEAR_LINE );
}
WRITE8_HANDLER( decocass_quadrature_decoder_reset_w )
@@ -211,17 +212,17 @@ WRITE8_HANDLER( decocass_reset_w )
state->decocass_reset = data;
/* CPU #1 active high reset */
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, data & 0x01);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_RESET, data & 0x01);
/* on reset also disable audio NMI */
if (data & 1)
{
state->audio_nmi_enabled = 0;
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_NMI, (state->audio_nmi_enabled && state->audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
}
/* 8041 active low reset */
- cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 0x08) ^ 0x08);
+ cpu_set_input_line(state->mcu, INPUT_LINE_RESET, (data & 0x08) ^ 0x08);
}
@@ -1171,7 +1172,7 @@ static READ8_HANDLER( decocass_nodong_r )
{
if (0 == (offset & E5XX_MASK))
{
- data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
+ data = upi41_master_r(state->mcu, 0);
LOG(3,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, (data >= 32) ? data : '.'));
}
else
@@ -1335,9 +1336,11 @@ void decocass_machine_state_save_init( running_machine *machine )
MACHINE_START( decocass )
{
decocass_state *state = (decocass_state *)machine->driver_data;
- state->cassette = devtag_get_device(machine, "cassette");
- state->mcu = cputag_get_cpu(machine, "mcu");
+ state->maincpu = devtag_get_device(machine, "maincpu");
+ state->audiocpu = devtag_get_device(machine, "audiocpu");
+ state->mcu = devtag_get_device(machine, "mcu");
+ state->cassette = devtag_get_device(machine, "cassette");
}
static void decocass_reset_common( running_machine *machine )
diff --git a/src/mame/machine/decocass.h b/src/mame/machine/decocass.h
index 40047df06c5..8b7553aa6f3 100644
--- a/src/mame/machine/decocass.h
+++ b/src/mame/machine/decocass.h
@@ -98,6 +98,8 @@ struct _decocass_state
INT32 type5_latch; /* latched enable PROM (1100xxxx written to E5x1) */
/* devices */
+ const device_config *maincpu;
+ const device_config *audiocpu;
const device_config *mcu;
const device_config *cassette;
};
diff --git a/src/mame/machine/docastle.c b/src/mame/machine/docastle.c
index 510d0b9b982..71e52dcd0db 100644
--- a/src/mame/machine/docastle.c
+++ b/src/mame/machine/docastle.c
@@ -80,5 +80,6 @@ WRITE8_HANDLER( docastle_shared1_w )
WRITE8_HANDLER( docastle_nmitrigger_w )
{
- cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
+ docastle_state *state = (docastle_state *)space->machine->driver_data;
+ cpu_set_input_line(state->slave, INPUT_LINE_NMI, PULSE_LINE);
}
diff --git a/src/mame/machine/tnzs.c b/src/mame/machine/tnzs.c
index 01e96179970..ab91d00431b 100644
--- a/src/mame/machine/tnzs.c
+++ b/src/mame/machine/tnzs.c
@@ -676,7 +676,8 @@ MACHINE_START( tnzs )
memory_set_bank(machine, 1, 2);
memory_set_bank(machine, 2, 0);
- state->mcu = cputag_get_cpu(machine, "mcu");
+ state->audiocpu = devtag_get_device(machine, "audiocpu");
+ state->mcu = devtag_get_device(machine, "mcu");
state_save_register_global(machine, state->screenflip);
state_save_register_global(machine, state->kageki_csport_sel);
diff --git a/src/mame/video/1942.c b/src/mame/video/1942.c
index b7ce0acb6bd..84aea89c0eb 100644
--- a/src/mame/video/1942.c
+++ b/src/mame/video/1942.c
@@ -131,9 +131,6 @@ VIDEO_START( 1942 )
state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols, 16, 16, 32, 16);
tilemap_set_transparent_pen(state->fg_tilemap,0);
-
- state_save_register_global(machine, state->palette_bank);
- state_save_register_global_array(machine, state->scroll);
}
@@ -182,13 +179,14 @@ WRITE8_HANDLER( c1942_scroll_w )
WRITE8_HANDLER( c1942_c804_w )
{
+ _1942_state *state = (_1942_state *)space->machine->driver_data;
/* bit 7: flip screen
bit 4: cpu B reset
bit 0: coin counter */
coin_counter_w(space->machine, 0,data & 0x01);
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
flip_screen_set(space->machine, data & 0x80);
}
@@ -205,7 +203,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
_1942_state *state = (_1942_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int i, code, col, sx, sy, dir;
diff --git a/src/mame/video/1943.c b/src/mame/video/1943.c
index 7520d072277..b663f68b4fd 100644
--- a/src/mame/video/1943.c
+++ b/src/mame/video/1943.c
@@ -229,7 +229,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
_1943_state *state = (_1943_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 32; offs >= 0; offs -= 32)
+ for (offs = state->spriteram_size - 32; offs >= 0; offs -= 32)
{
int attr = state->spriteram[offs + 1];
int code = state->spriteram[offs] + ((attr & 0xe0) << 3);
diff --git a/src/mame/video/aeroboto.c b/src/mame/video/aeroboto.c
index 4bbf8af0e56..2976e675411 100644
--- a/src/mame/video/aeroboto.c
+++ b/src/mame/video/aeroboto.c
@@ -134,7 +134,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
aeroboto_state *state = (aeroboto_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 x = state->spriteram[offs + 3];
int y = 240 - state->spriteram[offs];
diff --git a/src/mame/video/ambush.c b/src/mame/video/ambush.c
index 763b23b6ea1..36770316dce 100644
--- a/src/mame/video/ambush.c
+++ b/src/mame/video/ambush.c
@@ -54,7 +54,7 @@ static void draw_chars( running_machine *machine, bitmap_t *bitmap, const rectan
transpen = (priority == 0) ? -1 : 0;
- for (offs = 0; offs < machine->generic.videoram_size; offs++)
+ for (offs = 0; offs < state->videoram_size; offs++)
{
int code, sx, sy, col;
UINT8 scroll;
@@ -99,7 +99,7 @@ VIDEO_UPDATE( ambush )
draw_chars(screen->machine, bitmap, cliprect, 0x00);
/* Draw the sprites. */
- for (offs = screen->machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int code, col, sx, sy, flipx, flipy, gfx;
diff --git a/src/mame/video/aquarium.c b/src/mame/video/aquarium.c
index 8c42edab7f5..c5052ce64d5 100644
--- a/src/mame/video/aquarium.c
+++ b/src/mame/video/aquarium.c
@@ -12,7 +12,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
UINT8 col, flipx, flipy, chain;
UINT16 code;
- for (offs = 0; offs < machine->generic.spriteram_size / 2; offs += 8)
+ for (offs = 0; offs < state->spriteram_size / 2; offs += 8)
{
code = ((state->spriteram[offs + 5]) & 0xff) + (((state->spriteram[offs + 6]) & 0xff) << 8);
code &= 0x3fff;
diff --git a/src/mame/video/arkanoid.c b/src/mame/video/arkanoid.c
index 06973fe92e4..98f1f3d2766 100644
--- a/src/mame/video/arkanoid.c
+++ b/src/mame/video/arkanoid.c
@@ -68,8 +68,8 @@ WRITE8_HANDLER( arkanoid_d008_w )
leaving the tilt screen (as the MCU is now out of sync with main CPU
which resets itself). This bit is the likely candidate as it is flipped
early in bootup just prior to accessing the MCU for the first time. */
- if (cputag_get_cpu(space->machine, "mcu") != NULL) // Bootlegs don't have the MCU but still set this bit
- cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
+ if (state->mcu != NULL) // Bootlegs don't have the MCU but still set this bit
+ cpu_set_input_line(state->mcu, INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
}
/* different hook-up, everything except for bits 0-1 and 7 aren't tested afaik. */
@@ -142,7 +142,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
arkanoid_state *state = (arkanoid_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;
diff --git a/src/mame/video/armedf.c b/src/mame/video/armedf.c
index ee7f60a477d..49f83eba310 100644
--- a/src/mame/video/armedf.c
+++ b/src/mame/video/armedf.c
@@ -224,18 +224,18 @@ WRITE16_HANDLER( armedf_mcu_cmd )
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;
armedf_state *state = (armedf_state *)machine->driver_data;
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 = state->sprite_offy + 240 - (buffered_spriteram16[offs + 0] & 0x1ff);
+ int color = (buffered_spriteram[offs + 2] >> 8) & 0x1f;
+ int sx = buffered_spriteram[offs + 3];
+ int sy = state->sprite_offy + 240 - (buffered_spriteram[offs + 0] & 0x1ff);
if (flip_screen_get(machine))
{
@@ -245,7 +245,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
flipy = !flipy; /* in all the games supported by this driver */
}
- 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,
diff --git a/src/mame/video/battlane.c b/src/mame/video/battlane.c
index a4897868f7a..c2b29a6b87f 100644
--- a/src/mame/video/battlane.c
+++ b/src/mame/video/battlane.c
@@ -146,9 +146,6 @@ VIDEO_START( battlane )
battlane_state *state = (battlane_state *)machine->driver_data;
state->bg_tilemap = tilemap_create(machine, get_tile_info_bg, battlane_tilemap_scan_rows_2x2, 16, 16, 32, 32);
state->screen_bitmap = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
-
- state_save_register_global(machine, state->video_ctrl);
- state_save_register_global(machine, state->cpu_control);
}
static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
diff --git a/src/mame/video/bionicc.c b/src/mame/video/bionicc.c
index ebd32043474..5e24afcb065 100644
--- a/src/mame/video/bionicc.c
+++ b/src/mame/video/bionicc.c
@@ -142,7 +142,7 @@ WRITE16_HANDLER( bionicc_paletteram_w )
{
bionicc_state *state = (bionicc_state *)space->machine->driver_data;
int r, g, b, bright;
- data = COMBINE_DATA(&state->paletteram16[offset]);
+ data = COMBINE_DATA(&state->paletteram[offset]);
bright = (data & 0x0f);
@@ -209,22 +209,22 @@ WRITE16_HANDLER( bionicc_gfxctrl_w )
static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
- UINT16 *buffered_spriteram16 = machine->generic.buffered_spriteram.u16;
+ UINT16 *buffered_spriteram = machine->generic.buffered_spriteram.u16;
// bionicc_state *state = (bionicc_state *)machine->driver_data;
int offs;
const gfx_element *gfx = machine->gfx[3];
for (offs = (machine->generic.spriteram_size - 8) / 2; offs >= 0; offs -= 4)
{
- int tile_number = buffered_spriteram16[offs] & 0x7ff;
+ int tile_number = buffered_spriteram[offs] & 0x7ff;
if( tile_number != 0x7ff )
{
- int attr = buffered_spriteram16[offs + 1];
+ int attr = buffered_spriteram[offs + 1];
int color = (attr & 0x3c) >> 2;
int flipx = attr & 0x02;
int flipy = 0;
- int sx = (INT16)buffered_spriteram16[offs + 3]; /* signed */
- int sy = (INT16)buffered_spriteram16[offs + 2]; /* signed */
+ int sx = (INT16)buffered_spriteram[offs + 3]; /* signed */
+ int sy = (INT16)buffered_spriteram[offs + 2]; /* signed */
if (sy > 512 - 16)
sy -= 512;
diff --git a/src/mame/video/blktiger.c b/src/mame/video/blktiger.c
index 48d2f9ca21d..201a52c06b6 100644
--- a/src/mame/video/blktiger.c
+++ b/src/mame/video/blktiger.c
@@ -157,7 +157,7 @@ WRITE8_HANDLER( blktiger_video_control_w )
coin_counter_w(space->machine, 1,data & 2);
/* bit 5 resets the sound CPU */
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
/* bit 6 flips screen */
flip_screen_set(space->machine, data & 0x40);
diff --git a/src/mame/video/blmbycar.c b/src/mame/video/blmbycar.c
index 5572ce3913f..34ab41d6cee 100644
--- a/src/mame/video/blmbycar.c
+++ b/src/mame/video/blmbycar.c
@@ -46,7 +46,7 @@ WRITE16_HANDLER( blmbycar_palette_w )
{
blmbycar_state *state = (blmbycar_state *)space->machine->driver_data;
- data = COMBINE_DATA(&state->paletteram16[offset]);
+ data = COMBINE_DATA(&state->paletteram[offset]);
palette_set_color_rgb( space->machine, offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8));
}
@@ -170,8 +170,8 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
blmbycar_state *state = (blmbycar_state *)machine->driver_data;
UINT16 *source, *finish;
- source = state->spriteram16 + 0x6 / 2; // !
- finish = state->spriteram16 + machine->generic.spriteram_size / 2 - 8 / 2;
+ source = state->spriteram + 0x6 / 2; // !
+ finish = state->spriteram + state->spriteram_size / 2 - 8 / 2;
/* Find "the end of sprites" marker */
@@ -181,7 +181,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
/* Draw sprites in reverse order for pdrawfgfx */
source -= 8 / 2;
- finish = state->spriteram16;
+ finish = state->spriteram;
for ( ; source >= finish; source -= 8 / 2 )
{
diff --git a/src/mame/video/blockout.c b/src/mame/video/blockout.c
index e3afe0d264a..2642ebd1fb7 100644
--- a/src/mame/video/blockout.c
+++ b/src/mame/video/blockout.c
@@ -42,8 +42,8 @@ WRITE16_HANDLER( blockout_paletteram_w )
{
blockout_state *state = (blockout_state *)space->machine->driver_data;
- COMBINE_DATA(&state->paletteram16[offset]);
- setcolor(space->machine, offset, state->paletteram16[offset]);
+ COMBINE_DATA(&state->paletteram[offset]);
+ setcolor(space->machine, offset, state->paletteram[offset]);
}
WRITE16_HANDLER( blockout_frontcolor_w )
@@ -68,8 +68,6 @@ VIDEO_START( blockout )
/* Allocate temporary bitmaps */
state->tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
state_save_register_global_bitmap(machine, state->tmpbitmap);
-
- state_save_register_global(machine, state->color);
}
static void update_pixels( running_machine *machine, int x, int y )
diff --git a/src/mame/video/blueprnt.c b/src/mame/video/blueprnt.c
index 0de64ca2446..08c8d915d1e 100644
--- a/src/mame/video/blueprnt.c
+++ b/src/mame/video/blueprnt.c
@@ -103,7 +103,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
blueprnt_state *state = (blueprnt_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];
int sx = state->spriteram[offs + 3];
diff --git a/src/mame/video/bogeyman.c b/src/mame/video/bogeyman.c
index a5dc3922b50..3d6ca017475 100644
--- a/src/mame/video/bogeyman.c
+++ b/src/mame/video/bogeyman.c
@@ -109,7 +109,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
bogeyman_state *state = (bogeyman_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 attr = state->spriteram[offs];
diff --git a/src/mame/video/bombjack.c b/src/mame/video/bombjack.c
index 794089b4b10..adff89305c2 100644
--- a/src/mame/video/bombjack.c
+++ b/src/mame/video/bombjack.c
@@ -80,7 +80,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
bombjack_state *state = (bombjack_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
/*
diff --git a/src/mame/video/capbowl.c b/src/mame/video/capbowl.c
index 8cdf0c0d79e..cd358bd078c 100644
--- a/src/mame/video/capbowl.c
+++ b/src/mame/video/capbowl.c
@@ -16,9 +16,10 @@
*
*************************************/
-static void generate_interrupt(running_machine *machine, int state)
+static void generate_interrupt( running_machine *machine, int state )
{
- cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, state);
+ capbowl_state *driver = (capbowl_state *)machine->driver_data;
+ cpu_set_input_line(driver->maincpu, M6809_FIRQ_LINE, state);
}
static const struct tms34061_interface tms34061intf =
diff --git a/src/mame/video/carjmbre.c b/src/mame/video/carjmbre.c
index 981231fe208..f632f53cf4a 100644
--- a/src/mame/video/carjmbre.c
+++ b/src/mame/video/carjmbre.c
@@ -118,11 +118,11 @@ VIDEO_UPDATE( carjmbre )
//----x--- ?? probably colour
//-----xxx colour
//+3 x pos
- for (offs = screen->machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
//before copying the sprites to spriteram the game reorders the first
//sprite to last, sprite ordering is incorrect if this isn't undone
- troffs = (offs - 4 + screen->machine->generic.spriteram_size) % screen->machine->generic.spriteram_size;
+ troffs = (offs - 4 + state->spriteram_size) % state->spriteram_size;
//unused sprites are marked with ypos <= 0x02 (or >= 0xfd if screen flipped)
if (state->spriteram[troffs] > 0x02 && state->spriteram[troffs] < 0xfd)
diff --git a/src/mame/video/champbas.c b/src/mame/video/champbas.c
index 268c1e5d3c7..9747d9510f8 100644
--- a/src/mame/video/champbas.c
+++ b/src/mame/video/champbas.c
@@ -199,7 +199,7 @@ static void champbas_draw_sprites( running_machine *machine, bitmap_t *bitmap, c
int offs;
const gfx_element* const gfx = machine->gfx[1];
- for (offs = machine->generic.spriteram_size - 2; offs >= 0; offs -= 2)
+ for (offs = state->spriteram_size - 2; offs >= 0; offs -= 2)
{
int code = (state->spriteram[offs] >> 2) | (state->gfx_bank << 6);
int color = (state->spriteram[offs + 1] & 0x1f) | (state->palette_bank << 6);
diff --git a/src/mame/video/cidelsa.c b/src/mame/video/cidelsa.c
index 60118d73acc..6746ae25b49 100644
--- a/src/mame/video/cidelsa.c
+++ b/src/mame/video/cidelsa.c
@@ -130,7 +130,7 @@ static WRITE_LINE_DEVICE_HANDLER( cidelsa_prd_w )
cidelsa_state *driver_state = (cidelsa_state *)device->machine->driver_data;
/* invert PRD signal */
- cputag_set_input_line(device->machine, CDP1802_TAG, INPUT_LINE_IRQ0, !state);
+ cpu_set_input_line(driver_state->cdp1802, INPUT_LINE_IRQ0, !state);
driver_state->cdp1869_prd = !state;
}
diff --git a/src/mame/video/circus.c b/src/mame/video/circus.c
index 41b59ea3fd0..eed3f4826d7 100644
--- a/src/mame/video/circus.c
+++ b/src/mame/video/circus.c
@@ -248,8 +248,8 @@ static void ripcord_draw_skydiver( running_machine *machine, bitmap_t *bitmap, c
// report collision only when the character is not blank and within display area
if (collision && code != 0xf && state->clown_x > 0 && state->clown_x < 240 && state->clown_y > -12 && state->clown_y < 240)
{
- cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE); // interrupt accuracy is critical in Ripcord
- cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
+ cpu_set_input_line(state->maincpu, 0, ASSERT_LINE); // interrupt accuracy is critical in Ripcord
+ cpu_set_input_line(state->maincpu, 0, CLEAR_LINE);
}
}
diff --git a/src/mame/video/circusc.c b/src/mame/video/circusc.c
index 399c1366687..fefe7cf8778 100644
--- a/src/mame/video/circusc.c
+++ b/src/mame/video/circusc.c
@@ -172,7 +172,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
else
sr = state->spriteram_2;
- for (offs = 0; offs < machine->generic.spriteram_size; offs += 4)
+ for (offs = 0; offs < state->spriteram_size; offs += 4)
{
int code = sr[offs + 0] + 8 * (sr[offs + 1] & 0x20);
int color = sr[offs + 1] & 0x0f;
diff --git a/src/mame/video/citycon.c b/src/mame/video/citycon.c
index e053899794a..8831f4203c9 100644
--- a/src/mame/video/citycon.c
+++ b/src/mame/video/citycon.c
@@ -111,7 +111,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
citycon_state *state = (citycon_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int sx, sy, flipx;
diff --git a/src/mame/video/commando.c b/src/mame/video/commando.c
index 66f413c0706..c329f788434 100644
--- a/src/mame/video/commando.c
+++ b/src/mame/video/commando.c
@@ -60,12 +60,14 @@ WRITE8_HANDLER( commando_scrolly_w )
WRITE8_HANDLER( commando_c804_w )
{
+ commando_state *state = (commando_state *)space->machine->driver_data;
+
// bits 0 and 1 are coin counters
coin_counter_w(space->machine, 0, data & 0x01);
coin_counter_w(space->machine, 1, data & 0x02);
// bit 4 resets the sound CPU
- cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(state->audiocpu, INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
// bit 7 flips screen
flip_screen_set(space->machine, data & 0x80);
diff --git a/src/mame/video/cop01.c b/src/mame/video/cop01.c
index 3b6a196781d..f3bcc9c111b 100644
--- a/src/mame/video/cop01.c
+++ b/src/mame/video/cop01.c
@@ -171,7 +171,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
cop01_state *state = (cop01_state *)machine->driver_data;
int offs, code, attr, sx, sy, flipx, flipy, color;
- 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];
diff --git a/src/mame/video/copsnrob.c b/src/mame/video/copsnrob.c
index 28db793b9a2..8356f3069b0 100644
--- a/src/mame/video/copsnrob.c
+++ b/src/mame/video/copsnrob.c
@@ -15,7 +15,7 @@ VIDEO_UPDATE( copsnrob )
/* redrawing the entire display is faster in this case */
- for (offs = screen->machine->generic.videoram_size; offs >= 0; offs--)
+ for (offs = state->videoram_size; offs >= 0; offs--)
{
int sx,sy;
diff --git a/src/mame/video/cosmic.c b/src/mame/video/cosmic.c
index aad79d8875b..dad4a1d01cd 100644
--- a/src/mame/video/cosmic.c
+++ b/src/mame/video/cosmic.c
@@ -256,7 +256,7 @@ static void draw_bitmap( running_machine *machine, bitmap_t *bitmap, const recta
cosmic_state *state = (cosmic_state *)machine->driver_data;
offs_t offs;
- for (offs = 0; offs < machine->generic.videoram_size; offs++)
+ for (offs = 0; offs < state->videoram_size; offs++)
{
int i;
UINT8 data = state->videoram[offs];
@@ -288,7 +288,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
cosmic_state *state = (cosmic_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4;offs >= 0;offs -= 4)
+ for (offs = state->spriteram_size - 4;offs >= 0;offs -= 4)
{
if (state->spriteram[offs] != 0)
{
diff --git a/src/mame/video/crospang.c b/src/mame/video/crospang.c
index b7cc7214cd4..0fd50f20721 100644
--- a/src/mame/video/crospang.c
+++ b/src/mame/video/crospang.c
@@ -146,7 +146,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
int offs;
int flipscreen = 0;
- for (offs = 0; offs < machine->generic.spriteram_size / 2; offs += 4)
+ for (offs = 0; offs < state->spriteram_size / 2; offs += 4)
{
int x, y, sprite, colour, multi, fx, fy, inc, flash, mult;
diff --git a/src/mame/video/dec8.c b/src/mame/video/dec8.c
index b0044524aff..401be2d4043 100644
--- a/src/mame/video/dec8.c
+++ b/src/mame/video/dec8.c
@@ -199,9 +199,9 @@ WRITE8_HANDLER( lastmiss_control_w )
state->scroll2[2] = (data >> 6) & 1;
if (data & 0x80)
- cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
+ cpu_set_input_line(state->subcpu, INPUT_LINE_RESET, CLEAR_LINE);
else
- cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
+ cpu_set_input_line(state->subcpu, INPUT_LINE_RESET, ASSERT_LINE);
}
WRITE8_HANDLER( shackled_control_w )
diff --git a/src/mame/video/decocass.c b/src/mame/video/decocass.c
index 076f44fdb06..3f155a04968 100644
--- a/src/mame/video/decocass.c
+++ b/src/mame/video/decocass.c
@@ -526,7 +526,7 @@ VIDEO_UPDATE( decocass )
rectangle clip;
if (0xc0 != (input_port_read(screen->machine, "IN2") & 0xc0)) /* coin slots assert an NMI */
- cputag_set_input_line(screen->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
+ cpu_set_input_line(state->maincpu, INPUT_LINE_NMI, ASSERT_LINE);
if (0 == (state->watchdog_flip & 0x04))
watchdog_reset(screen->machine);
diff --git a/src/mame/video/deniam.c b/src/mame/video/deniam.c
index 4b077ad1148..0662c637a87 100644
--- a/src/mame/video/deniam.c
+++ b/src/mame/video/deniam.c
@@ -220,7 +220,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
int offs;
UINT8 *gfx = memory_region(machine, "gfx2");
- for (offs = machine->generic.spriteram_size / 2 - 8; offs >= 0; offs -= 8)
+ for (offs = state->spriteram_size / 2 - 8; offs >= 0; offs -= 8)
{
int sx, starty, endy, x, y, start, color, width, flipx, primask;
UINT8 *rom = gfx;
diff --git a/src/mame/video/docastle.c b/src/mame/video/docastle.c
index 29941a62d9f..5753bd875bf 100644
--- a/src/mame/video/docastle.c
+++ b/src/mame/video/docastle.c
@@ -139,7 +139,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
bitmap_fill(machine->priority_bitmap, NULL, 1);
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int sx, sy, flipx, flipy, code, color;
diff --git a/src/mame/video/dogfgt.c b/src/mame/video/dogfgt.c
index 561d6fc8853..7ae9a52bc83 100644
--- a/src/mame/video/dogfgt.c
+++ b/src/mame/video/dogfgt.c
@@ -189,7 +189,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta
dogfgt_state *state = (dogfgt_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)
{
if (state->spriteram[offs] & 0x01)
{
diff --git a/src/mame/video/epos.c b/src/mame/video/epos.c
index 3e2379a26b0..cc86c1f842f 100644
--- a/src/mame/video/epos.c
+++ b/src/mame/video/epos.c
@@ -80,7 +80,7 @@ VIDEO_UPDATE( epos )
get_pens(screen->machine, pens);
- for (offs = 0; offs < screen->machine->generic.videoram_size; offs++)
+ for (offs = 0; offs < state->videoram_size; offs++)
{
UINT8 data = state->videoram[offs];
diff --git a/src/mame/video/esd16.c b/src/mame/video/esd16.c
index 8d89112ff08..845b123b369 100644
--- a/src/mame/video/esd16.c
+++ b/src/mame/video/esd16.c
@@ -191,14 +191,14 @@ static void esd16_draw_sprites( running_machine *machine, bitmap_t *bitmap, cons
int max_x = video_screen_get_width(machine->primary_screen);
int max_y = video_screen_get_height(machine->primary_screen);
- for (offs = machine->generic.spriteram_size / 2 - 8 / 2; offs >= 0 ; offs -= 8 / 2)
+ for (offs = state->spriteram_size / 2 - 8 / 2; offs >= 0 ; offs -= 8 / 2)
{
int y, starty, endy, incy;
- int sy = state->spriteram16[offs + 0];
- int code = state->spriteram16[offs + 1];
- int sx = state->spriteram16[offs + 2];
- int attr = state->spriteram16[offs + 3];
+ int sy = state->spriteram[offs + 0];
+ int code = state->spriteram[offs + 1];
+ int sx = state->spriteram[offs + 2];
+ int attr = state->spriteram[offs + 3];
int dimy = 1 << ((sy >> 9) & 3);
@@ -255,14 +255,14 @@ static void hedpanic_draw_sprites( running_machine *machine, bitmap_t *bitmap, c
int max_x = video_screen_get_width(machine->primary_screen);
int max_y = video_screen_get_height(machine->primary_screen);
- for (offs = machine->generic.spriteram_size / 2 - 8 / 2; offs >= 0 ; offs -= 8 / 2)
+ for (offs = state->spriteram_size / 2 - 8 / 2; offs >= 0 ; offs -= 8 / 2)
{
int y, starty, endy, incy;
- int sy = state->spriteram16[offs + 0];
- int code = state->spriteram16[offs + 1];
- int sx = state->spriteram16[offs + 2];
-// int attr = state->spriteram16[offs + 3];
+ int sy = state->spriteram[offs + 0];
+ int code = state->spriteram[offs + 1];
+ int sx = state->spriteram[offs + 2];
+// int attr = state->spriteram[offs + 3];
int dimy = 1 << ((sy >> 9) & 3);
diff --git a/src/mame/video/exerion.c b/src/mame/video/exerion.c
index 53d41ac7d64..27872512714 100644
--- a/src/mame/video/exerion.c
+++ b/src/mame/video/exerion.c
@@ -359,7 +359,7 @@ VIDEO_UPDATE( exerion )
draw_background(screen->machine, bitmap, cliprect);
/* draw sprites */
- for (i = 0; i < screen->machine->generic.spriteram_size; i += 4)
+ for (i = 0; i < state->spriteram_size; i += 4)
{
int flags = state->spriteram[i + 0];
int y = state->spriteram[i + 1] ^ 255;
diff --git a/src/mame/video/exprraid.c b/src/mame/video/exprraid.c
index d4a34ed702a..dfaa59c9367 100644
--- a/src/mame/video/exprraid.c
+++ b/src/mame/video/exprraid.c
@@ -101,7 +101,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
exprraid_state *state = (exprraid_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 attr = state->spriteram[offs + 1];
int code = state->spriteram[offs + 3] + ((attr & 0xe0) << 3);
diff --git a/src/mame/video/fcombat.c b/src/mame/video/fcombat.c
index 3419dcec8f0..b66077d27e8 100644
--- a/src/mame/video/fcombat.c
+++ b/src/mame/video/fcombat.c
@@ -148,7 +148,7 @@ VIDEO_UPDATE( fcombat )
//draw_background(bitmap, cliprect);
/* draw sprites */
- for (i = 0; i < screen->machine->generic.spriteram_size; i += 4)
+ for (i = 0; i < state->spriteram_size; i += 4)
{
int flags = state->spriteram[i + 0];
int y = state->spriteram[i + 1] ^ 255;
diff --git a/src/mame/video/finalizr.c b/src/mame/video/finalizr.c
index f3cbc2c1710..46f66e844b6 100644
--- a/src/mame/video/finalizr.c
+++ b/src/mame/video/finalizr.c
@@ -104,7 +104,7 @@ VIDEO_UPDATE( finalizr )
UINT8 *sr = state->spriterambank ? state->spriteram_2 : state->spriteram;
- for (offs = 0; offs <= screen->machine->generic.spriteram_size - 5; offs += 5)
+ for (offs = 0; offs <= state->spriteram_size - 5; offs += 5)
{
int sx, sy, flipx, flipy, code, color, size;
diff --git a/src/mame/video/firetrap.c b/src/mame/video/firetrap.c
index 98d87125ba2..f19eb01d020 100644
--- a/src/mame/video/firetrap.c
+++ b/src/mame/video/firetrap.c
@@ -205,7 +205,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
firetrap_state *state = (firetrap_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, flipx, flipy, code, color;
diff --git a/src/mame/video/flstory.c b/src/mame/video/flstory.c
index 5088bd47c12..6c1f6bb3ba2 100644
--- a/src/mame/video/flstory.c
+++ b/src/mame/video/flstory.c
@@ -154,7 +154,7 @@ static void flstory_draw_sprites( running_machine *machine, bitmap_t *bitmap, co
for (i = 0; i < 0x20; i++)
{
- int pr = state->spriteram[machine->generic.spriteram_size - 1 - i];
+ int pr = state->spriteram[state->spriteram_size - 1 - i];
int offs = (pr & 0x1f) * 4;
if ((pr & 0x80) == pri)
@@ -211,7 +211,7 @@ static void victnine_draw_sprites( running_machine *machine, bitmap_t *bitmap, c
for (i = 0; i < 0x20; i++)
{
- int pr = state->spriteram[machine->generic.spriteram_size - 1 - i];
+ int pr = state->spriteram[state->spriteram_size - 1 - i];
int offs = (pr & 0x1f) * 4;
//if ((pr & 0x80) == pri)
diff --git a/src/mame/video/freekick.c b/src/mame/video/freekick.c
index 5cd6b615447..44e03df92fe 100644
--- a/src/mame/video/freekick.c
+++ b/src/mame/video/freekick.c
@@ -34,7 +34,7 @@ static void gigas_draw_sprites( running_machine *machine, bitmap_t *bitmap, cons
freekick_state *state = (freekick_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 xpos = state->spriteram[offs + 3];
int ypos = state->spriteram[offs + 2];
@@ -69,7 +69,7 @@ static void pbillrd_draw_sprites( running_machine *machine, bitmap_t *bitmap, co
freekick_state *state = (freekick_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 xpos = state->spriteram[offs + 3];
int ypos = state->spriteram[offs + 2];
@@ -105,7 +105,7 @@ static void freekick_draw_sprites( running_machine *machine, bitmap_t *bitmap, c
freekick_state *state = (freekick_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 xpos = state->spriteram[offs + 3];
int ypos = state->spriteram[offs + 0];
diff --git a/src/mame/video/m10.c b/src/mame/video/m10.c
index d803f422a47..9fbcad52b71 100644
--- a/src/mame/video/m10.c
+++ b/src/mame/video/m10.c
@@ -162,7 +162,7 @@ VIDEO_UPDATE( m10 )
plot_pixel_m10(screen->machine, bitmap, 16, y, 1);
}
- for (offs = screen->machine->generic.videoram_size - 1; offs >= 0; offs--)
+ for (offs = state->videoram_size - 1; offs >= 0; offs--)
tilemap_mark_tile_dirty(state->tx_tilemap, offs);
tilemap_set_flip(state->tx_tilemap, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
@@ -183,7 +183,7 @@ VIDEO_UPDATE( m15 )
m10_state *state = (m10_state *)screen->machine->driver_data;
int offs;
- for (offs = screen->machine->generic.videoram_size - 1; offs >= 0; offs--)
+ for (offs = state->videoram_size - 1; offs >= 0; offs--)
tilemap_mark_tile_dirty(state->tx_tilemap, offs);
//tilemap_mark_all_tiles_dirty(state->tx_tilemap);
diff --git a/src/mame/video/m57.c b/src/mame/video/m57.c
index 9614fc84ed6..b883577eb47 100644
--- a/src/mame/video/m57.c
+++ b/src/mame/video/m57.c
@@ -226,7 +226,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
irem_z80_state *state = (irem_z80_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
UINT8 attributes = state->spriteram[offs + 1];
int sx = state->spriteram[offs + 3];
diff --git a/src/mame/video/m58.c b/src/mame/video/m58.c
index 9cbe66f496d..50d0d7a4d8d 100644
--- a/src/mame/video/m58.c
+++ b/src/mame/video/m58.c
@@ -225,7 +225,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
int offs;
const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int attr = state->spriteram[offs + 1];
int bank = (attr & 0x20) >> 5;
diff --git a/src/mame/video/m62.c b/src/mame/video/m62.c
index e951caab3d8..92d9a17e8bb 100644
--- a/src/mame/video/m62.c
+++ b/src/mame/video/m62.c
@@ -338,7 +338,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
irem_z80_state *state = (irem_z80_state *)machine->driver_data;
int offs;
- for (offs = 0; offs < machine->generic.spriteram_size; offs += 8)
+ for (offs = 0; offs < state->spriteram_size; offs += 8)
{
int i, incr, code, col, flipx, flipy, sx, sy;
diff --git a/src/mame/video/popper.c b/src/mame/video/popper.c
index c0624602b72..1bc3c253d00 100644
--- a/src/mame/video/popper.c
+++ b/src/mame/video/popper.c
@@ -202,10 +202,6 @@ VIDEO_START( popper )
tilemap_set_transmask(state->ol_p0_tilemap, 1, 0x0e, 0x0f);
state->tilemap_clip = *video_screen_get_visible_area(machine->primary_screen);
-
- state_save_register_global(machine, state->flipscreen);
- state_save_register_global(machine, state->e002);
- state_save_register_global(machine, state->gfx_bank);
}
static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect )
@@ -213,7 +209,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap,const recta
popper_state *state = (popper_state *)machine->driver_data;
int offs, sx, sy, flipx, flipy;
- for (offs = 0; offs < machine->generic.spriteram_size - 4; offs += 4)
+ for (offs = 0; offs < state->spriteram_size - 4; offs += 4)
{
//if y position is in the current strip
if (state->spriteram[offs + 1] && (((state->spriteram[offs] + (state->flipscreen ? 2 : 0)) & 0xf0) == (0x0f - offs / 0x80) << 4))
diff --git a/src/mame/video/travrusa.c b/src/mame/video/travrusa.c
index ddfa5048569..cc998d47508 100644
--- a/src/mame/video/travrusa.c
+++ b/src/mame/video/travrusa.c
@@ -314,7 +314,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
sect_rect(&clip, &spritevisiblearea);
- for (offs = machine->generic.spriteram_size - 4;offs >= 0;offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int sx = ((state->spriteram[offs + 3] + 8) & 0xff) - 8;
int sy = 240 - state->spriteram[offs];
diff --git a/src/mame/video/yunsun16.c b/src/mame/video/yunsun16.c
index ed181a34961..c94774e44bd 100644
--- a/src/mame/video/yunsun16.c
+++ b/src/mame/video/yunsun16.c
@@ -105,9 +105,6 @@ VIDEO_START( yunsun16 )
state->tilemap_1 = tilemap_create(machine, get_tile_info_1,yunsun16_tilemap_scan_pages,
16,16, TILES_PER_PAGE_X*PAGES_PER_TMAP_X,TILES_PER_PAGE_Y*PAGES_PER_TMAP_Y);
- state_save_register_global(machine, state->sprites_scrolldx);
- state_save_register_global(machine, state->sprites_scrolldy);
-
tilemap_set_scrolldx(state->tilemap_0, -0x34, 0);
tilemap_set_scrolldx(state->tilemap_1, -0x38, 0);
@@ -165,12 +162,12 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap, const rect
break;
}
- for (offs = (machine->generic.spriteram_size - 8) / 2 ; offs >= 0; offs -= 8 / 2)
+ for (offs = (state->spriteram_size - 8) / 2 ; offs >= 0; offs -= 8 / 2)
{
- int x = state->spriteram16[offs + 0];
- int y = state->spriteram16[offs + 1];
- int code = state->spriteram16[offs + 2];
- int attr = state->spriteram16[offs + 3];
+ int x = state->spriteram[offs + 0];
+ int y = state->spriteram[offs + 1];
+ int code = state->spriteram[offs + 2];
+ int attr = state->spriteram[offs + 3];
int flipx = attr & 0x20;
int flipy = attr & 0x40;
diff --git a/src/mame/video/zerozone.c b/src/mame/video/zerozone.c
index ef4b70d9e15..1648322b282 100644
--- a/src/mame/video/zerozone.c
+++ b/src/mame/video/zerozone.c
@@ -44,8 +44,6 @@ VIDEO_START( zerozone )
// i'm not 100% sure it should be opaque, pink title screen looks strange in las vegas girls
// but if its transparent other things look incorrect
state->zz_tilemap = tilemap_create(machine, get_zerozone_tile_info, tilemap_scan_cols, 8, 8, 64, 32);
-
- state_save_register_global(machine, state->tilebank);
}
VIDEO_UPDATE( zerozone )
diff --git a/src/mame/video/zodiack.c b/src/mame/video/zodiack.c
index b63c6249544..26986606e75 100644
--- a/src/mame/video/zodiack.c
+++ b/src/mame/video/zodiack.c
@@ -9,9 +9,6 @@
#include "driver.h"
#include "includes/espial.h"
-size_t zodiack_bulletsram_size;
-
-
WRITE8_HANDLER( zodiack_videoram_w )
{
espial_state *state = (espial_state *)space->machine->driver_data;
@@ -36,7 +33,7 @@ WRITE8_HANDLER( zodiack_attributes_w )
{
int i;
- for (i = offset / 2; i < space->machine->generic.videoram_size; i += 32)
+ for (i = offset / 2; i < state->videoram_size; i += 32)
{
tilemap_mark_tile_dirty(state->bg_tilemap, i);
tilemap_mark_tile_dirty(state->fg_tilemap, i);
@@ -141,12 +138,12 @@ VIDEO_START( zodiack )
flip_screen_set_no_update(machine, 0);
}
-static void draw_bullets(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
+static void draw_bullets( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
espial_state *state = (espial_state *)machine->driver_data;
int offs;
- for (offs = 0; offs < zodiack_bulletsram_size; offs += 4)
+ for (offs = 0; offs < state->bulletsram_size; offs += 4)
{
int x, y;
@@ -168,12 +165,12 @@ static void draw_bullets(running_machine *machine, bitmap_t *bitmap, const recta
}
}
-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 )
{
espial_state *state = (espial_state *)machine->driver_data;
int offs;
- for (offs = machine->generic.spriteram_size - 4; offs >= 0; offs -= 4)
+ for (offs = state->spriteram_size - 4; offs >= 0; offs -= 4)
{
int flipx, flipy, sx, sy, spritecode;