summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2009-11-28 19:33:18 +0000
committer Aaron Giles <aaron@aarongiles.com>2009-11-28 19:33:18 +0000
commit90560a421d444237e4422849fba83c20c1405c6d (patch)
tree4dad54a8d05035f23f4ea91d9e7e001ac0f95bd0 /src/mame
parentbd4199f31c981a58534ade70926beeb018b72d63 (diff)
From: Atari Ace <atari_ace@verizon.net>
Date: Sat, Nov 28, 2009 at 5:49 PM Subject: [patch] Eliminate spriteram3 To: submit@mamedev.org Cc: atariace@hotmail.com Aaron's patch to move the generic pointers into machine conflicts with a patch I'd worked on some time ago to start eliminating those globals altogether, so I've become motivated to finally submit it ;-). This patch eliminates spriteram3, which unlike the other spriteram variables, is only a convenience for some drivers. ~aa
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/mappy.c22
-rw-r--r--src/mame/drivers/mjkjidai.c78
-rw-r--r--src/mame/drivers/srmp2.c155
-rw-r--r--src/mame/drivers/toypop.c15
-rw-r--r--src/mame/drivers/vastar.c48
-rw-r--r--src/mame/video/digdug.c10
-rw-r--r--src/mame/video/galaga.c11
-rw-r--r--src/mame/video/gaplus.c10
-rw-r--r--src/mame/video/mappy.c27
-rw-r--r--src/mame/video/mjkjidai.c23
-rw-r--r--src/mame/video/pacland.c10
-rw-r--r--src/mame/video/retofinv.c10
-rw-r--r--src/mame/video/skykid.c10
-rw-r--r--src/mame/video/srmp2.c49
-rw-r--r--src/mame/video/toypop.c4
-rw-r--r--src/mame/video/vastar.c111
-rw-r--r--src/mame/video/xevious.c11
17 files changed, 265 insertions, 339 deletions
diff --git a/src/mame/drivers/mappy.c b/src/mame/drivers/mappy.c
index 8d0f02fbea9..419cbf3609c 100644
--- a/src/mame/drivers/mappy.c
+++ b/src/mame/drivers/mappy.c
@@ -548,30 +548,12 @@ TODO:
#include "driver.h"
#include "cpu/m6809/m6809.h"
-#include "machine/namcoio.h"
#include "sound/dac.h"
#include "sound/namco.h"
+#include "machine/namcoio.h"
+#include "includes/mappy.h"
-/* video functions */
-VIDEO_START( phozon );
-PALETTE_INIT( phozon );
-VIDEO_UPDATE( phozon );
-
-/* video driver data & functions */
-extern UINT8 *mappy_videoram;
-extern UINT8 *mappy_spriteram;
-PALETTE_INIT( superpac );
-PALETTE_INIT( mappy );
-VIDEO_START( superpac );
-VIDEO_START( mappy );
-VIDEO_UPDATE( superpac );
-VIDEO_UPDATE( mappy );
-WRITE8_HANDLER( superpac_videoram_w );
-WRITE8_HANDLER( mappy_videoram_w );
-WRITE8_HANDLER( mappy_scroll_w );
-READ8_HANDLER( superpac_flipscreen_r );
-WRITE8_HANDLER( superpac_flipscreen_w );
diff --git a/src/mame/drivers/mjkjidai.c b/src/mame/drivers/mjkjidai.c
index d82126f04fa..ab82c0f93e7 100644
--- a/src/mame/drivers/mjkjidai.c
+++ b/src/mame/drivers/mjkjidai.c
@@ -22,21 +22,15 @@ TODO:
***************************************************************************/
#include "driver.h"
-#include "cpu/z80/z80.h"
#include "streams.h"
+#include "cpu/z80/z80.h"
#include "sound/sn76496.h"
#include "sound/okim6295.h"
-
-extern UINT8 *mjkjidai_videoram;
-
-VIDEO_START( mjkjidai );
-VIDEO_UPDATE( mjkjidai );
-WRITE8_HANDLER( mjkjidai_videoram_w );
-WRITE8_HANDLER( mjkjidai_ctrl_w );
-
+#include "includes/mjkjidai.h"
/* Start of ADPCM custom chip code */
-static struct mjkjidai_adpcm_state
+typedef struct _mjkjidai_adpcm_state mjkjidai_adpcm_state;
+struct _mjkjidai_adpcm_state
{
struct adpcm_state adpcm;
sound_stream *stream;
@@ -44,11 +38,11 @@ static struct mjkjidai_adpcm_state
UINT8 nibble;
UINT8 playing;
UINT8 *base;
-} mjkjidai_adpcm;
+};
static STREAM_UPDATE( mjkjidai_adpcm_callback )
{
- struct mjkjidai_adpcm_state *state = (struct mjkjidai_adpcm_state *)param;
+ mjkjidai_adpcm_state *state = (mjkjidai_adpcm_state *)param;
stream_sample_t *dest = outputs[0];
while (state->playing && samples > 0)
@@ -76,7 +70,8 @@ static STREAM_UPDATE( mjkjidai_adpcm_callback )
static DEVICE_START( mjkjidai_adpcm )
{
running_machine *machine = device->machine;
- struct mjkjidai_adpcm_state *state = &mjkjidai_adpcm;
+ mjkjidai_adpcm_state *state = (mjkjidai_adpcm_state *)device->token;
+
state->playing = 0;
state->stream = stream_create(device, 0, 1, device->clock, state, mjkjidai_adpcm_callback);
state->base = memory_region(machine, "adpcm");
@@ -87,6 +82,8 @@ static DEVICE_GET_INFO( mjkjidai_adpcm )
{
switch (state)
{
+ case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(mjkjidai_adpcm_state); break;
+
/* --- the following bits of info are returned as pointers to data or functions --- */
case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(mjkjidai_adpcm);break;
@@ -99,25 +96,25 @@ static DEVICE_GET_INFO( mjkjidai_adpcm )
#define SOUND_MJKJIDAI DEVICE_GET_INFO_NAME(mjkjidai_adpcm)
-static void mjkjidai_adpcm_play (int offset, int lenght)
+static void mjkjidai_adpcm_play (mjkjidai_adpcm_state *state, int offset, int length)
{
- mjkjidai_adpcm.current = offset;
- mjkjidai_adpcm.end = offset + lenght/2;
- mjkjidai_adpcm.nibble = 4;
- mjkjidai_adpcm.playing = 1;
+ state->current = offset;
+ state->end = offset + length/2;
+ state->nibble = 4;
+ state->playing = 1;
}
-static WRITE8_HANDLER( adpcm_w )
+static WRITE8_DEVICE_HANDLER( adpcm_w )
{
- mjkjidai_adpcm_play ((data & 0x07) * 0x1000, 0x1000 * 2);
+ mjkjidai_adpcm_state *state = (mjkjidai_adpcm_state *)device->token;
+ mjkjidai_adpcm_play (state, (data & 0x07) * 0x1000, 0x1000 * 2);
}
/* End of ADPCM custom chip code */
-static int keyb,nvram_init_count;
-
static READ8_HANDLER( keyboard_r )
{
+ mjkjidai_state *state = (mjkjidai_state *)space->machine->driver_data;
int res = 0x3f,i;
static const char *const keynames[] = { "PL2_1", "PL2_2", "PL2_3", "PL2_4", "PL2_5", "PL2_6", "PL1_1", "PL1_2", "PL1_3", "PL1_4", "PL1_5", "PL1_6" };
@@ -125,7 +122,7 @@ static READ8_HANDLER( keyboard_r )
for (i = 0; i < 12; i++)
{
- if (~keyb & (1 << i))
+ if (~state->keyb & (1 << i))
{
res = input_port_read(space->machine, keynames[i]) & 0x3f;
break;
@@ -134,9 +131,9 @@ static READ8_HANDLER( keyboard_r )
res |= (input_port_read(space->machine, "IN3") & 0xc0);
- if (nvram_init_count)
+ if (state->nvram_init_count)
{
- nvram_init_count--;
+ state->nvram_init_count--;
res &= 0xbf;
}
@@ -145,27 +142,28 @@ static READ8_HANDLER( keyboard_r )
static WRITE8_HANDLER( keyboard_select_w )
{
+ mjkjidai_state *state = (mjkjidai_state *)space->machine->driver_data;
+
// logerror("%04x: keyboard_select %d = %02x\n",cpu_get_pc(space->cpu),offset,data);
switch (offset)
{
- case 0: keyb = (keyb & 0xff00) | (data); break;
- case 1: keyb = (keyb & 0x00ff) | (data << 8); break;
+ case 0: state->keyb = (state->keyb & 0xff00) | (data); break;
+ case 1: state->keyb = (state->keyb & 0x00ff) | (data << 8); break;
}
}
-static UINT8 *nvram;
-static size_t nvram_size;
-
static NVRAM_HANDLER( mjkjidai )
{
+ mjkjidai_state *state = (mjkjidai_state *)machine->driver_data;
+
if (read_or_write)
- mame_fwrite(file, nvram, nvram_size);
+ mame_fwrite(file, state->nvram, state->nvram_size);
else if (file)
- mame_fread(file, nvram, nvram_size);
+ mame_fread(file, state->nvram, state->nvram_size);
else
{
- nvram_init_count = 1;
+ state->nvram_init_count = 1;
}
}
@@ -175,11 +173,11 @@ static ADDRESS_MAP_START( mjkjidai_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
AM_RANGE(0xc000, 0xcfff) AM_RAM
- AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size) // cleared and initialized on startup if bit 6 if port 00 is 0
- AM_RANGE(0xe000, 0xe01f) AM_RAM AM_BASE_GENERIC(spriteram) // shared with tilemap ram
- AM_RANGE(0xe800, 0xe81f) AM_RAM AM_BASE_GENERIC(spriteram2) // shared with tilemap ram
- AM_RANGE(0xf000, 0xf01f) AM_RAM AM_BASE_GENERIC(spriteram3) // shared with tilemap ram
- AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mjkjidai_videoram_w) AM_BASE(&mjkjidai_videoram)
+ AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_MEMBER(mjkjidai_state,nvram) AM_SIZE_MEMBER(mjkjidai_state,nvram_size) // cleared and initialized on startup if bit 6 if port 00 is 0
+ AM_RANGE(0xe000, 0xe01f) AM_RAM AM_BASE_MEMBER(mjkjidai_state,spriteram1) // shared with tilemap ram
+ AM_RANGE(0xe800, 0xe81f) AM_RAM AM_BASE_MEMBER(mjkjidai_state,spriteram2) // shared with tilemap ram
+ AM_RANGE(0xf000, 0xf01f) AM_RAM AM_BASE_MEMBER(mjkjidai_state,spriteram3) // shared with tilemap ram
+ AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mjkjidai_videoram_w) AM_BASE_MEMBER(mjkjidai_state,videoram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( mjkjidai_io_map, ADDRESS_SPACE_IO, 8 )
@@ -193,7 +191,7 @@ static ADDRESS_MAP_START( mjkjidai_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x12, 0x12) AM_READ_PORT("IN1")
AM_RANGE(0x20, 0x20) AM_DEVWRITE("sn1", sn76496_w)
AM_RANGE(0x30, 0x30) AM_DEVWRITE("sn2", sn76496_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(adpcm_w)
+ AM_RANGE(0x40, 0x40) AM_DEVWRITE("adpcm", adpcm_w)
ADDRESS_MAP_END
@@ -375,6 +373,8 @@ GFXDECODE_END
static MACHINE_DRIVER_START( mjkjidai )
+ MDRV_DRIVER_DATA(mjkjidai_state)
+
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80,10000000/2) /* 5 MHz ??? */
MDRV_CPU_PROGRAM_MAP(mjkjidai_map)
diff --git a/src/mame/drivers/srmp2.c b/src/mame/drivers/srmp2.c
index e821e7083c7..34043469388 100644
--- a/src/mame/drivers/srmp2.c
+++ b/src/mame/drivers/srmp2.c
@@ -52,36 +52,12 @@ Note:
#include "driver.h"
+#include "deprecat.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
-#include "deprecat.h"
#include "sound/ay8910.h"
#include "sound/msm5205.h"
-
-
-/***************************************************************************
-
- Variables
-
-***************************************************************************/
-
-PALETTE_INIT( srmp2 );
-VIDEO_UPDATE( srmp2 );
-PALETTE_INIT( srmp3 );
-VIDEO_UPDATE( srmp3 );
-VIDEO_UPDATE( mjyuugi );
-
-
-extern int srmp2_color_bank;
-extern int srmp3_gfx_bank;
-extern int mjyuugi_gfx_bank;
-
-static int srmp2_adpcm_bank;
-static int srmp2_adpcm_data;
-static UINT32 srmp2_adpcm_sptr;
-static UINT32 srmp2_adpcm_eptr;
-
-static int srmp2_port_select;
+#include "includes/srmp2.h"
/***************************************************************************
@@ -133,12 +109,16 @@ static DRIVER_INIT( srmp3 )
static MACHINE_RESET( srmp2 )
{
- srmp2_port_select = 0;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+
+ state->port_select = 0;
}
static MACHINE_RESET( srmp3 )
{
- srmp2_port_select = 0;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+
+ state->port_select = 0;
}
@@ -157,10 +137,12 @@ static WRITE16_HANDLER( srmp2_flags_w )
x--- ---- : Palette Bank
*/
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
+
coin_counter_w( space->machine, 0, ((data & 0x01) >> 0) );
coin_lockout_w( space->machine, 0, (((~data) & 0x10) >> 4) );
- srmp2_adpcm_bank = ( (data & 0x20) >> 5 );
- srmp2_color_bank = ( (data & 0x80) >> 7 );
+ state->adpcm_bank = ( (data & 0x20) >> 5 );
+ state->color_bank = ( (data & 0x80) >> 7 );
}
@@ -182,8 +164,11 @@ static WRITE16_HANDLER( mjyuugi_adpcm_bank_w )
---- xxxx : ADPCM Bank
--xx ---- : GFX Bank
*/
- srmp2_adpcm_bank = (data & 0x0f);
- mjyuugi_gfx_bank = ((data >> 4) & 0x03);
+
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
+
+ state->adpcm_bank = (data & 0x0f);
+ state->gfx_bank = ((data >> 4) & 0x03);
}
@@ -196,17 +181,18 @@ static WRITE16_DEVICE_HANDLER( srmp2_adpcm_code_w )
table and plays the ADPCM for itself.
*/
+ srmp2_state *state = (srmp2_state *)device->machine->driver_data;
UINT8 *ROM = memory_region(device->machine, "adpcm");
- srmp2_adpcm_sptr = (ROM[((srmp2_adpcm_bank * 0x10000) + (data << 2) + 0)] << 8);
- srmp2_adpcm_eptr = (ROM[((srmp2_adpcm_bank * 0x10000) + (data << 2) + 1)] << 8);
- srmp2_adpcm_eptr = (srmp2_adpcm_eptr - 1) & 0x0ffff;
+ state->adpcm_sptr = (ROM[((state->adpcm_bank * 0x10000) + (data << 2) + 0)] << 8);
+ state->adpcm_eptr = (ROM[((state->adpcm_bank * 0x10000) + (data << 2) + 1)] << 8);
+ state->adpcm_eptr = (state->adpcm_eptr - 1) & 0x0ffff;
- srmp2_adpcm_sptr += (srmp2_adpcm_bank * 0x10000);
- srmp2_adpcm_eptr += (srmp2_adpcm_bank * 0x10000);
+ state->adpcm_sptr += (state->adpcm_bank * 0x10000);
+ state->adpcm_eptr += (state->adpcm_bank * 0x10000);
msm5205_reset_w(device, 0);
- srmp2_adpcm_data = -1;
+ state->adpcm_data = -1;
}
@@ -219,46 +205,48 @@ static WRITE8_DEVICE_HANDLER( srmp3_adpcm_code_w )
table and plays the ADPCM for itself.
*/
+ srmp2_state *state = (srmp2_state *)device->machine->driver_data;
UINT8 *ROM = memory_region(device->machine, "adpcm");
- srmp2_adpcm_sptr = (ROM[((srmp2_adpcm_bank * 0x10000) + (data << 2) + 0)] << 8);
- srmp2_adpcm_eptr = (ROM[((srmp2_adpcm_bank * 0x10000) + (data << 2) + 1)] << 8);
- srmp2_adpcm_eptr = (srmp2_adpcm_eptr - 1) & 0x0ffff;
+ state->adpcm_sptr = (ROM[((state->adpcm_bank * 0x10000) + (data << 2) + 0)] << 8);
+ state->adpcm_eptr = (ROM[((state->adpcm_bank * 0x10000) + (data << 2) + 1)] << 8);
+ state->adpcm_eptr = (state->adpcm_eptr - 1) & 0x0ffff;
- srmp2_adpcm_sptr += (srmp2_adpcm_bank * 0x10000);
- srmp2_adpcm_eptr += (srmp2_adpcm_bank * 0x10000);
+ state->adpcm_sptr += (state->adpcm_bank * 0x10000);
+ state->adpcm_eptr += (state->adpcm_bank * 0x10000);
msm5205_reset_w(device, 0);
- srmp2_adpcm_data = -1;
+ state->adpcm_data = -1;
}
static void srmp2_adpcm_int(const device_config *device)
{
+ srmp2_state *state = (srmp2_state *)device->machine->driver_data;
UINT8 *ROM = memory_region(device->machine, "adpcm");
- if (srmp2_adpcm_sptr)
+ if (state->adpcm_sptr)
{
- if (srmp2_adpcm_data == -1)
+ if (state->adpcm_data == -1)
{
- srmp2_adpcm_data = ROM[srmp2_adpcm_sptr];
+ state->adpcm_data = ROM[state->adpcm_sptr];
- if (srmp2_adpcm_sptr >= srmp2_adpcm_eptr)
+ if (state->adpcm_sptr >= state->adpcm_eptr)
{
msm5205_reset_w(device, 1);
- srmp2_adpcm_data = 0;
- srmp2_adpcm_sptr = 0;
+ state->adpcm_data = 0;
+ state->adpcm_sptr = 0;
}
else
{
- msm5205_data_w(device, ((srmp2_adpcm_data >> 4) & 0x0f));
+ msm5205_data_w(device, ((state->adpcm_data >> 4) & 0x0f));
}
}
else
{
- msm5205_data_w(device, ((srmp2_adpcm_data >> 0) & 0x0f));
- srmp2_adpcm_sptr++;
- srmp2_adpcm_data = -1;
+ msm5205_data_w(device, ((state->adpcm_data >> 0) & 0x0f));
+ state->adpcm_sptr++;
+ state->adpcm_data = -1;
}
}
else
@@ -286,6 +274,8 @@ static READ16_HANDLER( srmp2_input_1_r )
---x xxxx : Key code
--x- ---- : Player 1 and 2 side flag
*/
+
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3" };
if (!ACCESSING_BITS_0_7)
@@ -293,7 +283,7 @@ static READ16_HANDLER( srmp2_input_1_r )
return 0xffff;
}
- if (srmp2_port_select != 2) /* Panel keys */
+ if (state->port_select != 2) /* Panel keys */
{
int i, j, t;
@@ -333,27 +323,17 @@ static READ16_HANDLER( srmp2_input_2_r )
static WRITE16_HANDLER( srmp2_input_1_w )
{
- if (data != 0x0000)
- {
- srmp2_port_select = 1;
- }
- else
- {
- srmp2_port_select = 0;
- }
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
+
+ state->port_select = (data != 0x0000) ? 1 : 0;
}
static WRITE16_HANDLER( srmp2_input_2_w )
{
- if (data == 0x0000)
- {
- srmp2_port_select = 2;
- }
- else
- {
- srmp2_port_select = 0;
- }
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
+
+ state->port_select = (data == 0x0000) ? 2 : 0;
}
@@ -364,10 +344,11 @@ static WRITE8_HANDLER( srmp3_rombank_w )
xxx- ---- : ADPCM ROM bank
*/
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
UINT8 *ROM = memory_region(space->machine, "maincpu");
int addr;
- srmp2_adpcm_bank = ((data & 0xe0) >> 5);
+ state->adpcm_bank = ((data & 0xe0) >> 5);
if (data & 0x1f) addr = ((0x10000 + (0x2000 * (data & 0x0f))) - 0x8000);
else addr = 0x10000;
@@ -385,8 +366,8 @@ static WRITE8_HANDLER( srmp3_rombank_w )
static ADDRESS_MAP_START( srmp2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
- AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE_GENERIC(spriteram2) /* Sprites Code + X + Attr */
- AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE_GENERIC(spriteram) /* Sprites Y */
+ AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram2.u16) /* Sprites Code + X + Attr */
+ AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u16) /* Sprites Y */
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */
AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */
AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM") /* Coinage */
@@ -424,9 +405,9 @@ static ADDRESS_MAP_START( mjyuugi_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */
- AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE_GENERIC(spriteram) /* Sprites Y */
+ AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u16) /* Sprites Y */
AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_GENERIC(spriteram2) /* Sprites Code + X + Attr */
+ AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram2.u16) /* Sprites Code + X + Attr */
AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_BASE_SIZE_GENERIC(nvram)
ADDRESS_MAP_END
@@ -448,9 +429,10 @@ static WRITE8_HANDLER( srmp3_input_1_w )
---- -x-- : Player 2 side flag ?
*/
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
logerror("PC:%04X DATA:%02X srmp3_input_1_w\n", cpu_get_pc(space->cpu), data);
- srmp2_port_select = 0;
+ state->port_select = 0;
{
static int qqq01 = 0;
@@ -469,12 +451,13 @@ static WRITE8_HANDLER( srmp3_input_1_w )
static WRITE8_HANDLER( srmp3_input_2_w )
{
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
/* Key matrix reading related ? */
logerror("PC:%04X DATA:%02X srmp3_input_2_w\n", cpu_get_pc(space->cpu), data);
- srmp2_port_select = 1;
+ state->port_select = 1;
}
@@ -532,9 +515,11 @@ static WRITE8_HANDLER( srmp3_flags_w )
xx-- ---- : GFX Bank
*/
+ srmp2_state *state = (srmp2_state *)space->machine->driver_data;
+
coin_counter_w( space->machine, 0, ((data & 0x01) >> 0) );
coin_lockout_w( space->machine, 0, (((~data) & 0x10) >> 4) );
- srmp3_gfx_bank = (data >> 6) & 0x03;
+ state->gfx_bank = (data >> 6) & 0x03;
}
@@ -543,10 +528,10 @@ static ADDRESS_MAP_START( srmp3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1) /* rom bank */
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) /* work ram */
AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */
- AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE_GENERIC(spriteram) /* Sprites Y */
+ AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram1.u8) /* Sprites Y */
AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_GENERIC(spriteram2) /* Sprites Code + X + Attr */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE_GENERIC(spriteram3)
+ AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram2.u8) /* Sprites Code + X + Attr */
+ AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE_MEMBER(srmp2_state,spriteram3.u8)
ADDRESS_MAP_END
static ADDRESS_MAP_START( srmp3_io_map, ADDRESS_SPACE_IO, 8 )
@@ -1024,6 +1009,8 @@ GFXDECODE_END
static MACHINE_DRIVER_START( srmp2 )
+ MDRV_DRIVER_DATA(srmp2_state)
+
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */
MDRV_CPU_PROGRAM_MAP(srmp2_map)
@@ -1061,6 +1048,8 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( srmp3 )
+ MDRV_DRIVER_DATA(srmp2_state)
+
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 3500000) /* 3.50 MHz ? */
@@ -1101,6 +1090,8 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( mjyuugi )
+ MDRV_DRIVER_DATA(srmp2_state)
+
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", M68000,16000000/2) /* 8.00 MHz */
MDRV_CPU_PROGRAM_MAP(mjyuugi_map)
diff --git a/src/mame/drivers/toypop.c b/src/mame/drivers/toypop.c
index 1596d0b79a1..e20daee4e97 100644
--- a/src/mame/drivers/toypop.c
+++ b/src/mame/drivers/toypop.c
@@ -34,6 +34,7 @@ TODO:
#include "cpu/m68000/m68000.h"
#include "machine/namcoio.h"
#include "sound/namco.h"
+#include "includes/mappy.h"
// video\toypop.c
@@ -253,12 +254,7 @@ static WRITE16_HANDLER( toypop_m68000_interrupt_disable_w )
static ADDRESS_MAP_START( liblrabl_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(toypop_videoram_w) AM_BASE(&toypop_videoram) /* video RAM */
- AM_RANGE(0x0800, 0x0f7f) AM_RAM /* general RAM, area 1 */
- AM_RANGE(0x0f80, 0x0fff) AM_RAM AM_BASE_GENERIC(spriteram) /* sprite RAM, area 1 */
- AM_RANGE(0x1000, 0x177f) AM_RAM /* general RAM, area 2 */
- AM_RANGE(0x1780, 0x17ff) AM_RAM AM_BASE_GENERIC(spriteram2) /* sprite RAM, area 2 */
- AM_RANGE(0x1800, 0x1f7f) AM_RAM /* general RAM, area 3 */
- AM_RANGE(0x1f80, 0x1fff) AM_RAM AM_BASE_GENERIC(spriteram3) /* sprite RAM, area 3 */
+ AM_RANGE(0x0800, 0x1fff) AM_RAM AM_BASE(&mappy_spriteram) /* general RAM, area 1 */
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&toypop_m68000_sharedram) /* shared RAM with the 68000 CPU */
AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("namco", toypop_sound_sharedram_r, toypop_sound_sharedram_w) /* shared RAM with sound CPU */
AM_RANGE(0x6800, 0x683f) AM_READWRITE(namcoio_r, namcoio_w) /* custom I/O */
@@ -274,12 +270,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( toypop_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(toypop_videoram_w) AM_BASE(&toypop_videoram) /* video RAM */
- AM_RANGE(0x0800, 0x0f7f) AM_RAM /* general RAM, area 1 */
- AM_RANGE(0x0f80, 0x0fff) AM_RAM AM_BASE_GENERIC(spriteram) /* sprite RAM, area 1 */
- AM_RANGE(0x1000, 0x177f) AM_RAM /* general RAM, area 2 */
- AM_RANGE(0x1780, 0x17ff) AM_RAM AM_BASE_GENERIC(spriteram2) /* sprite RAM, area 2 */
- AM_RANGE(0x1800, 0x1f7f) AM_RAM /* general RAM, area 3 */
- AM_RANGE(0x1f80, 0x1fff) AM_RAM AM_BASE_GENERIC(spriteram3) /* sprite RAM, area 3 */
+ AM_RANGE(0x0800, 0x1fff) AM_RAM AM_BASE(&mappy_spriteram) /* general RAM, area 1 */
AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&toypop_m68000_sharedram) /* shared RAM with the 68000 CPU */
AM_RANGE(0x6000, 0x603f) AM_READWRITE(namcoio_r, namcoio_w) /* custom I/O */
AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", toypop_sound_sharedram_r, toypop_sound_sharedram_w) /* shared RAM with sound CPU */
diff --git a/src/mame/drivers/vastar.c b/src/mame/drivers/vastar.c
index 487c186b2ce..55733812444 100644
--- a/src/mame/drivers/vastar.c
+++ b/src/mame/drivers/vastar.c
@@ -65,23 +65,7 @@ write:
#include "cpu/z80/z80.h"
#include "deprecat.h"
#include "sound/ay8910.h"
-
-
-extern UINT8 *vastar_bg1videoram,*vastar_bg2videoram,*vastar_fgvideoram;
-extern UINT8 *vastar_bg1_scroll,*vastar_bg2_scroll;
-extern UINT8 *vastar_sprite_priority;
-
-WRITE8_HANDLER( vastar_bg1videoram_w );
-WRITE8_HANDLER( vastar_bg2videoram_w );
-WRITE8_HANDLER( vastar_fgvideoram_w );
-READ8_HANDLER( vastar_bg1videoram_r );
-READ8_HANDLER( vastar_bg2videoram_r );
-VIDEO_START( vastar );
-VIDEO_UPDATE( vastar );
-
-static UINT8 *vastar_sharedram;
-
-
+#include "includes/vastar.h"
static MACHINE_RESET( vastar )
{
@@ -100,12 +84,16 @@ static WRITE8_HANDLER( vastar_hold_cpu2_w )
static READ8_HANDLER( vastar_sharedram_r )
{
- return vastar_sharedram[offset];
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ return state->sharedram[offset];
}
static WRITE8_HANDLER( vastar_sharedram_w )
{
- vastar_sharedram[offset] = data;
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ state->sharedram[offset] = data;
}
static WRITE8_HANDLER( flip_screen_w )
@@ -117,22 +105,22 @@ static WRITE8_HANDLER( flip_screen_w )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(vastar_bg2videoram_r, vastar_bg2videoram_w) AM_BASE(&vastar_bg2videoram)
- AM_RANGE(0x9000, 0x9fff) AM_READWRITE(vastar_bg1videoram_r, vastar_bg1videoram_w) AM_BASE(&vastar_bg1videoram)
+ AM_RANGE(0x8000, 0x8fff) AM_READWRITE(vastar_bg2videoram_r, vastar_bg2videoram_w) AM_BASE_MEMBER(vastar_state,bg2videoram)
+ AM_RANGE(0x9000, 0x9fff) AM_READWRITE(vastar_bg1videoram_r, vastar_bg1videoram_w) AM_BASE_MEMBER(vastar_state,bg1videoram)
AM_RANGE(0xa000, 0xafff) AM_READWRITE(vastar_bg2videoram_r, vastar_bg2videoram_w) /* mirror address */
AM_RANGE(0xb000, 0xbfff) AM_READWRITE(vastar_bg1videoram_r, vastar_bg1videoram_w) /* mirror address */
- AM_RANGE(0xc000, 0xc000) AM_WRITE(SMH_RAM) AM_BASE(&vastar_sprite_priority) /* sprite/BG priority */
- AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(vastar_fgvideoram_w) AM_BASE(&vastar_fgvideoram)
+ AM_RANGE(0xc000, 0xc000) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,sprite_priority) /* sprite/BG priority */
+ AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(vastar_fgvideoram_w) AM_BASE_MEMBER(vastar_state,fgvideoram)
AM_RANGE(0xe000, 0xe000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)
- AM_RANGE(0xf000, 0xf0ff) AM_READWRITE(vastar_sharedram_r, vastar_sharedram_w) AM_BASE(&vastar_sharedram)
+ AM_RANGE(0xf000, 0xf0ff) AM_READWRITE(vastar_sharedram_r, vastar_sharedram_w) AM_BASE_MEMBER(vastar_state,sharedram)
AM_RANGE(0xf100, 0xf7ff) AM_RAM
/* in hidden portions of video RAM: (fallthrough) */
- AM_RANGE(0xc400, 0xc43f) AM_WRITE(SMH_RAM) AM_BASE_SIZE_GENERIC(spriteram) /* actually c410-c41f and c430-c43f */
- AM_RANGE(0xc7c0, 0xc7df) AM_WRITE(SMH_RAM) AM_BASE(&vastar_bg1_scroll)
- AM_RANGE(0xc7e0, 0xc7ff) AM_WRITE(SMH_RAM) AM_BASE(&vastar_bg2_scroll)
- AM_RANGE(0xc800, 0xc83f) AM_WRITE(SMH_RAM) AM_BASE_GENERIC(spriteram2) /* actually c810-c81f and c830-c83f */
- AM_RANGE(0xcc00, 0xcc3f) AM_WRITE(SMH_RAM) AM_BASE_GENERIC(spriteram3) /* actually cc10-cc1f and cc30-cc3f */
+ AM_RANGE(0xc400, 0xc43f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,spriteram1) /* actually c410-c41f and c430-c43f */
+ AM_RANGE(0xc7c0, 0xc7df) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,bg1_scroll)
+ AM_RANGE(0xc7e0, 0xc7ff) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,bg2_scroll)
+ AM_RANGE(0xc800, 0xc83f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,spriteram2) /* actually c810-c81f and c830-c83f */
+ AM_RANGE(0xcc00, 0xcc3f) AM_WRITE(SMH_RAM) AM_BASE_MEMBER(vastar_state,spriteram3) /* actually cc10-cc1f and cc30-cc3f */
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_port_map, ADDRESS_SPACE_IO, 8 )
@@ -306,6 +294,8 @@ static const ay8910_interface ay8910_config =
static MACHINE_DRIVER_START( vastar )
+ MDRV_DRIVER_DATA(vastar_state)
+
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz ???? */
MDRV_CPU_PROGRAM_MAP(main_map)
diff --git a/src/mame/video/digdug.c b/src/mame/video/digdug.c
index 91e91a27202..9ae40a63b02 100644
--- a/src/mame/video/digdug.c
+++ b/src/mame/video/digdug.c
@@ -154,10 +154,6 @@ VIDEO_START( digdug )
tilemap_set_transparent_pen(tx_tilemap, 0);
- machine->generic.spriteram.u8 = digdug_objram + 0x380;
- machine->generic.spriteram2.u8 = digdug_posram + 0x380;
- machine->generic.spriteram3.u8 = digdug_flpram + 0x380;
-
state_save_register_global(machine, bg_select);
state_save_register_global(machine, tx_color_mode);
state_save_register_global(machine, bg_disable);
@@ -256,9 +252,9 @@ static const rectangle spritevisiblearea =
static void draw_sprites(running_machine* machine, bitmap_t *bitmap, const rectangle *cliprect )
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = digdug_objram + 0x380;
+ UINT8 *spriteram_2 = digdug_posram + 0x380;
+ UINT8 *spriteram_3 = digdug_flpram + 0x380;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c
index 2a6f39111a9..440eb9f4608 100644
--- a/src/mame/video/galaga.c
+++ b/src/mame/video/galaga.c
@@ -445,11 +445,6 @@ VIDEO_START( galaga )
galaga_gfxbank = 0;
- machine->generic.spriteram.u8 = galaga_ram1 + 0x380;
- machine->generic.spriteram2.u8 = galaga_ram2 + 0x380;
- machine->generic.spriteram3.u8 = galaga_ram3 + 0x380;
-
-
state_save_register_global_array(machine, galaga_starcontrol);
state_save_register_global(machine, stars_scrollx);
state_save_register_global(machine, stars_scrolly);
@@ -496,9 +491,9 @@ WRITE8_HANDLER ( gatsbee_bank_w )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = galaga_ram1 + 0x380;
+ UINT8 *spriteram_2 = galaga_ram2 + 0x380;
+ UINT8 *spriteram_3 = galaga_ram3 + 0x380;
int offs;
diff --git a/src/mame/video/gaplus.c b/src/mame/video/gaplus.c
index 67aac9c2f82..a92ad830371 100644
--- a/src/mame/video/gaplus.c
+++ b/src/mame/video/gaplus.c
@@ -199,10 +199,6 @@ VIDEO_START( gaplus )
colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[0], 0xff);
- machine->generic.spriteram.u8 = gaplus_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x800;
-
starfield_init(machine);
}
@@ -267,9 +263,9 @@ static void starfield_render(running_machine *machine, bitmap_t *bitmap)
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = gaplus_spriteram + 0x780;
+ UINT8 *spriteram_2 = spriteram + 0x800;
+ UINT8 *spriteram_3 = spriteram_2 + 0x800;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
diff --git a/src/mame/video/mappy.c b/src/mame/video/mappy.c
index 3c52b6fc8de..d4c44443e85 100644
--- a/src/mame/video/mappy.c
+++ b/src/mame/video/mappy.c
@@ -1,5 +1,6 @@
#include "driver.h"
#include "video/resnet.h"
+#include "includes/mappy.h"
UINT8 *mappy_videoram;
@@ -326,10 +327,6 @@ VIDEO_START( superpac )
sprite_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[0], 31);
-
- machine->generic.spriteram.u8 = mappy_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x800;
}
VIDEO_START( phozon )
@@ -338,11 +335,7 @@ VIDEO_START( phozon )
colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[0], 15);
- machine->generic.spriteram.u8 = mappy_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x800;
-
- state_save_register_global(machine, mappy_scroll);
+ state_save_register_global(machine, mappy_scroll);
}
VIDEO_START( mappy )
@@ -351,10 +344,6 @@ VIDEO_START( mappy )
colortable_configure_tilemap_groups(machine->colortable, bg_tilemap, machine->gfx[0], 31);
tilemap_set_scroll_cols(bg_tilemap, 36);
-
- machine->generic.spriteram.u8 = mappy_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x800;
}
@@ -404,9 +393,9 @@ WRITE8_HANDLER( mappy_scroll_w )
/* also used by toypop.c */
void mappy_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int xoffs, int yoffs, int transcolor)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = mappy_spriteram + 0x780;
+ UINT8 *spriteram_2 = spriteram + 0x800;
+ UINT8 *spriteram_3 = spriteram_2 + 0x800;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
@@ -482,9 +471,9 @@ spriteram_3
static void phozon_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = mappy_spriteram + 0x780;
+ UINT8 *spriteram_2 = spriteram + 0x800;
+ UINT8 *spriteram_3 = spriteram_2 + 0x800;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
diff --git a/src/mame/video/mjkjidai.c b/src/mame/video/mjkjidai.c
index a81b74f0277..117ddf85abe 100644
--- a/src/mame/video/mjkjidai.c
+++ b/src/mame/video/mjkjidai.c
@@ -1,7 +1,5 @@
#include "driver.h"
-
-
-UINT8 *mjkjidai_videoram;
+#include "includes/mjkjidai.h"
static int display_enable;
static tilemap *bg_tilemap;
@@ -16,9 +14,11 @@ static tilemap *bg_tilemap;
static TILE_GET_INFO( get_tile_info )
{
- int attr = mjkjidai_videoram[tile_index + 0x800];
- int code = mjkjidai_videoram[tile_index] + ((attr & 0x1f) << 8);
- int color = mjkjidai_videoram[tile_index + 0x1000];
+ mjkjidai_state *state = (mjkjidai_state *)machine->driver_data;
+
+ int attr = state->videoram[tile_index + 0x800];
+ int code = state->videoram[tile_index] + ((attr & 0x1f) << 8);
+ int color = state->videoram[tile_index + 0x1000];
SET_TILE_INFO(0,code,color >> 3,0);
}
@@ -45,7 +45,9 @@ VIDEO_START( mjkjidai )
WRITE8_HANDLER( mjkjidai_videoram_w )
{
- mjkjidai_videoram[offset] = data;
+ mjkjidai_state *state = (mjkjidai_state *)space->machine->driver_data;
+
+ state->videoram[offset] = data;
tilemap_mark_tile_dirty(bg_tilemap,offset & 0x7ff);
}
@@ -89,9 +91,10 @@ WRITE8_HANDLER( mjkjidai_ctrl_w )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ mjkjidai_state *state = (mjkjidai_state *)machine->driver_data;
+ UINT8 *spriteram = state->spriteram1;
+ UINT8 *spriteram_2 = state->spriteram2;
+ UINT8 *spriteram_3 = state->spriteram3;
int offs;
for (offs = 0x20-2;offs >= 0;offs -= 2)
diff --git a/src/mame/video/pacland.c b/src/mame/video/pacland.c
index f0adf69ac59..844bf045f7f 100644
--- a/src/mame/video/pacland.c
+++ b/src/mame/video/pacland.c
@@ -220,10 +220,6 @@ VIDEO_START( pacland )
tilemap_set_transmask(fg_tilemap, color, mask, 0);
}
- machine->generic.spriteram.u8 = pacland_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x800;
-
state_save_register_global(machine, palette_bank);
state_save_register_global(machine, scroll0);
state_save_register_global(machine, scroll1);
@@ -287,9 +283,9 @@ WRITE8_HANDLER( pacland_bankswitch_w )
/* the sprite generator IC is the same as Mappy */
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int whichmask)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = pacland_spriteram + 0x780;
+ UINT8 *spriteram_2 = spriteram + 0x800;
+ UINT8 *spriteram_3 = spriteram_2 + 0x800;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
diff --git a/src/mame/video/retofinv.c b/src/mame/video/retofinv.c
index 8b83c24d252..ef69b3fb41d 100644
--- a/src/mame/video/retofinv.c
+++ b/src/mame/video/retofinv.c
@@ -115,10 +115,6 @@ VIDEO_START( retofinv )
fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan,8,8,36,28);
colortable_configure_tilemap_groups(machine->colortable, fg_tilemap, machine->gfx[0], 0);
-
- machine->generic.spriteram.u8 = retofinv_sharedram + 0x0780;
- machine->generic.spriteram2.u8 = retofinv_sharedram + 0x0f80;
- machine->generic.spriteram3.u8 = retofinv_sharedram + 0x1780;
}
@@ -177,9 +173,9 @@ WRITE8_HANDLER( retofinv_gfx_ctrl_w )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = retofinv_sharedram + 0x0780;
+ UINT8 *spriteram_2 = retofinv_sharedram + 0x0f80;
+ UINT8 *spriteram_3 = retofinv_sharedram + 0x1780;
int offs;
static const rectangle spritevisiblearea =
{
diff --git a/src/mame/video/skykid.c b/src/mame/video/skykid.c
index b0f8421f5dc..c4421027ec3 100644
--- a/src/mame/video/skykid.c
+++ b/src/mame/video/skykid.c
@@ -116,10 +116,6 @@ VIDEO_START( skykid )
tilemap_set_transparent_pen(tx_tilemap, 0);
- machine->generic.spriteram.u8 = skykid_spriteram + 0x780;
- machine->generic.spriteram2.u8 = machine->generic.spriteram.u8 + 0x0800;
- machine->generic.spriteram3.u8 = machine->generic.spriteram2.u8 + 0x0800;
-
state_save_register_global(machine, priority);
state_save_register_global(machine, scroll_x);
state_save_register_global(machine, scroll_y);
@@ -184,9 +180,9 @@ WRITE8_HANDLER( skykid_flipscreen_priority_w )
/* the sprite generator IC is the same as Mappy */
static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = skykid_spriteram + 0x780;
+ UINT8 *spriteram_2 = spriteram + 0x0800;
+ UINT8 *spriteram_3 = spriteram_2 + 0x0800;
int offs;
for (offs = 0;offs < 0x80;offs += 2)
diff --git a/src/mame/video/srmp2.c b/src/mame/video/srmp2.c
index ee52f5c8752..1bc84e1164e 100644
--- a/src/mame/video/srmp2.c
+++ b/src/mame/video/srmp2.c
@@ -8,14 +8,7 @@ Functions to emulate the video hardware of the machine.
#include "driver.h"
-
-
-
-
-int srmp2_color_bank;
-int srmp3_gfx_bank;
-int mjyuugi_gfx_bank;
-
+#include "includes/srmp2.h"
PALETTE_INIT( srmp2 )
{
@@ -68,7 +61,9 @@ static void srmp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
---- ---- -x-- ---- : Flip screen
*/
- UINT16 *spriteram16 = machine->generic.spriteram.u16;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+ UINT16 *spriteram16 = state->spriteram1.u16;
+ UINT16 *spriteram16_2 = state->spriteram2.u16;
int offs;
int xoffs, yoffs;
@@ -78,7 +73,7 @@ static void srmp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
int flip = ctrl & 0x40;
/* Sprites Banking and/or Sprites Buffering */
- UINT16 *src = machine->generic.spriteram2.u16 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
+ UINT16 *src = spriteram16_2 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
int max_y = video_screen_get_height(machine->primary_screen);
@@ -106,7 +101,7 @@ static void srmp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
code = code & 0x3fff;
- if (srmp2_color_bank) color |= 0x20;
+ if (state->color_bank) color |= 0x20;
drawgfx_transpen(bitmap, cliprect, machine->gfx[0],
code,
@@ -120,9 +115,10 @@ static void srmp2_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
static void srmp3_draw_sprites_map(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+ UINT8 *spriteram = state->spriteram1.u8;
+ UINT8 *spriteram_2 = state->spriteram2.u8;
+ UINT8 *spriteram_3 = state->spriteram3.u8;
int offs, col;
int xoffs, yoffs;
@@ -229,16 +225,17 @@ static void srmp3_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
-x-- ---- : Flip screen
*/
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+ UINT8 *spriteram = state->spriteram1.u8;
+ UINT8 *spriteram_2 = state->spriteram2.u8;
+ UINT8 *spriteram_3 = state->spriteram3.u8;
int offs;
int xoffs, yoffs;
int max_y = video_screen_get_height(machine->primary_screen);
int ctrl = spriteram[ 0x600/2 ];
-// int ctrl2 = spriteram[ 0x602/2 ];
+ //int ctrl2 = spriteram[ 0x602/2 ];
int flip = ctrl & 0x40;
@@ -261,7 +258,7 @@ static void srmp3_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
int flipy = code & 0x4000;
code = (code & 0x1fff);
- if (gfxbank) code += ((srmp3_gfx_bank + 1) * 0x2000);
+ if (gfxbank) code += ((state->gfx_bank + 1) * 0x2000);
if (flip)
{
@@ -282,7 +279,9 @@ static void srmp3_draw_sprites(running_machine *machine, bitmap_t *bitmap, const
static void mjyuugi_draw_sprites_map(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
{
- UINT16 *spriteram16 = machine->generic.spriteram.u16;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+ UINT16 *spriteram16 = state->spriteram1.u16;
+ UINT16 *spriteram16_2 = state->spriteram2.u16;
int offs, col;
int xoffs, yoffs;
@@ -295,7 +294,7 @@ static void mjyuugi_draw_sprites_map(running_machine *machine, bitmap_t *bitmap,
int numcol = ctrl2 & 0x000f;
/* Sprites Banking and/or Sprites Buffering */
- UINT16 *src = machine->generic.spriteram2.u16 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
+ UINT16 *src = spriteram16_2 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
int upper = ( spriteram16[ 0x604/2 ] & 0xFF ) +
( spriteram16[ 0x606/2 ] & 0xFF ) * 256;
@@ -385,7 +384,9 @@ static void mjyuugi_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
---- ---- -x-- ---- : Flip screen
*/
- UINT16 *spriteram16 = machine->generic.spriteram.u16;
+ srmp2_state *state = (srmp2_state *)machine->driver_data;
+ UINT16 *spriteram16 = state->spriteram1.u16;
+ UINT16 *spriteram16_2 = state->spriteram2.u16;
int offs;
int xoffs, yoffs;
@@ -395,7 +396,7 @@ static void mjyuugi_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
int flip = ctrl & 0x40;
/* Sprites Banking and/or Sprites Buffering */
- UINT16 *src = machine->generic.spriteram2.u16 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
+ UINT16 *src = spriteram16_2 + ( ((ctrl2 ^ (~ctrl2<<1)) & 0x40) ? 0x2000/2 : 0 );
int max_y = video_screen_get_height(machine->primary_screen);
@@ -418,7 +419,7 @@ static void mjyuugi_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
int flipy = code & 0x4000;
code = (code & 0x1fff);
- if (gfxbank) code += ((mjyuugi_gfx_bank + 1) * 0x2000);
+ if (gfxbank) code += ((state->gfx_bank + 1) * 0x2000);
if (flip)
{
diff --git a/src/mame/video/toypop.c b/src/mame/video/toypop.c
index f78b2aabcfa..a1bbeebaa4f 100644
--- a/src/mame/video/toypop.c
+++ b/src/mame/video/toypop.c
@@ -7,6 +7,7 @@
***************************************************************************/
#include "driver.h"
+#include "includes/mappy.h"
UINT8 *toypop_videoram;
@@ -218,9 +219,6 @@ static void draw_background(bitmap_t *bitmap)
***************************************************************************/
-/* from mappy.c */
-void mappy_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int xoffs, int yoffs, int transcolor);
-
VIDEO_UPDATE( toypop )
{
diff --git a/src/mame/video/vastar.c b/src/mame/video/vastar.c
index c6ddbad8722..e2ab49c4494 100644
--- a/src/mame/video/vastar.c
+++ b/src/mame/video/vastar.c
@@ -7,15 +7,7 @@
***************************************************************************/
#include "driver.h"
-
-
-
-UINT8 *vastar_bg1videoram,*vastar_bg2videoram,*vastar_fgvideoram;
-UINT8 *vastar_bg1_scroll,*vastar_bg2_scroll;
-UINT8 *vastar_sprite_priority;
-
-static tilemap *fg_tilemap, *bg1_tilemap, *bg2_tilemap;
-
+#include "includes/vastar.h"
/***************************************************************************
@@ -26,10 +18,12 @@ static tilemap *fg_tilemap, *bg1_tilemap, *bg2_tilemap;
static TILE_GET_INFO( get_fg_tile_info )
{
+ vastar_state *state = (vastar_state *)machine->driver_data;
+ UINT8 *videoram = state->fgvideoram;
int code, color;
- code = vastar_fgvideoram[tile_index + 0x800] | (vastar_fgvideoram[tile_index + 0x400] << 8);
- color = vastar_fgvideoram[tile_index];
+ code = videoram[tile_index + 0x800] | (videoram[tile_index + 0x400] << 8);
+ color = videoram[tile_index];
SET_TILE_INFO(
0,
code,
@@ -39,10 +33,12 @@ static TILE_GET_INFO( get_fg_tile_info )
static TILE_GET_INFO( get_bg1_tile_info )
{
+ vastar_state *state = (vastar_state *)machine->driver_data;
+ UINT8 *videoram = state->bg1videoram;
int code, color;
- code = vastar_bg1videoram[tile_index + 0x800] | (vastar_bg1videoram[tile_index] << 8);
- color = vastar_bg1videoram[tile_index + 0xc00];
+ code = videoram[tile_index + 0x800] | (videoram[tile_index] << 8);
+ color = videoram[tile_index + 0xc00];
SET_TILE_INFO(
4,
code,
@@ -52,10 +48,12 @@ static TILE_GET_INFO( get_bg1_tile_info )
static TILE_GET_INFO( get_bg2_tile_info )
{
+ vastar_state *state = (vastar_state *)machine->driver_data;
+ UINT8 *videoram = state->bg2videoram;
int code, color;
- code = vastar_bg2videoram[tile_index + 0x800] | (vastar_bg2videoram[tile_index] << 8);
- color = vastar_bg2videoram[tile_index + 0xc00];
+ code = videoram[tile_index + 0x800] | (videoram[tile_index] << 8);
+ color = videoram[tile_index + 0xc00];
SET_TILE_INFO(
3,
code,
@@ -72,16 +70,18 @@ static TILE_GET_INFO( get_bg2_tile_info )
VIDEO_START( vastar )
{
- fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,8,8,32,32);
- bg1_tilemap = tilemap_create(machine, get_bg1_tile_info,tilemap_scan_rows,8,8,32,32);
- bg2_tilemap = tilemap_create(machine, get_bg2_tile_info,tilemap_scan_rows,8,8,32,32);
+ vastar_state *state = (vastar_state *)machine->driver_data;
+
+ state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,8,8,32,32);
+ state->bg1_tilemap = tilemap_create(machine, get_bg1_tile_info,tilemap_scan_rows,8,8,32,32);
+ state->bg2_tilemap = tilemap_create(machine, get_bg2_tile_info,tilemap_scan_rows,8,8,32,32);
- tilemap_set_transparent_pen(fg_tilemap,0);
- tilemap_set_transparent_pen(bg1_tilemap,0);
- tilemap_set_transparent_pen(bg2_tilemap,0);
+ tilemap_set_transparent_pen(state->fg_tilemap,0);
+ tilemap_set_transparent_pen(state->bg1_tilemap,0);
+ tilemap_set_transparent_pen(state->bg2_tilemap,0);
- tilemap_set_scroll_cols(bg1_tilemap, 32);
- tilemap_set_scroll_cols(bg2_tilemap, 32);
+ tilemap_set_scroll_cols(state->bg1_tilemap, 32);
+ tilemap_set_scroll_cols(state->bg2_tilemap, 32);
}
@@ -93,31 +93,41 @@ VIDEO_START( vastar )
WRITE8_HANDLER( vastar_fgvideoram_w )
{
- vastar_fgvideoram[offset] = data;
- tilemap_mark_tile_dirty(fg_tilemap,offset & 0x3ff);
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ state->fgvideoram[offset] = data;
+ tilemap_mark_tile_dirty(state->fg_tilemap,offset & 0x3ff);
}
WRITE8_HANDLER( vastar_bg1videoram_w )
{
- vastar_bg1videoram[offset] = data;
- tilemap_mark_tile_dirty(bg1_tilemap,offset & 0x3ff);
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ state->bg1videoram[offset] = data;
+ tilemap_mark_tile_dirty(state->bg1_tilemap,offset & 0x3ff);
}
WRITE8_HANDLER( vastar_bg2videoram_w )
{
- vastar_bg2videoram[offset] = data;
- tilemap_mark_tile_dirty(bg2_tilemap,offset & 0x3ff);
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ state->bg2videoram[offset] = data;
+ tilemap_mark_tile_dirty(state->bg2_tilemap,offset & 0x3ff);
}
READ8_HANDLER( vastar_bg1videoram_r )
{
- return vastar_bg1videoram[offset];
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ return state->bg1videoram[offset];
}
READ8_HANDLER( vastar_bg2videoram_r )
{
- return vastar_bg2videoram[offset];
+ vastar_state *state = (vastar_state *)space->machine->driver_data;
+
+ return state->bg2videoram[offset];
}
@@ -129,13 +139,13 @@ READ8_HANDLER( vastar_bg2videoram_r )
static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ vastar_state *state = (vastar_state *)machine->driver_data;
+ UINT8 *spriteram = state->spriteram1;
+ UINT8 *spriteram_2 = state->spriteram2;
+ UINT8 *spriteram_3 = state->spriteram3;
int offs;
-
- for (offs = 0; offs < machine->generic.spriteram_size; offs += 2)
+ for (offs = 0; offs < 0x40; offs += 2)
{
int code, sx, sy, color, flipx, flipy;
@@ -188,41 +198,42 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
VIDEO_UPDATE( vastar )
{
+ vastar_state *state = (vastar_state *)screen->machine->driver_data;
int i;
for (i = 0;i < 32;i++)
{
- tilemap_set_scrolly(bg1_tilemap,i,vastar_bg1_scroll[i]);
- tilemap_set_scrolly(bg2_tilemap,i,vastar_bg2_scroll[i]);
+ tilemap_set_scrolly(state->bg1_tilemap,i,state->bg1_scroll[i]);
+ tilemap_set_scrolly(state->bg2_tilemap,i,state->bg2_scroll[i]);
}
- switch (*vastar_sprite_priority)
+ switch (*state->sprite_priority)
{
case 0:
- tilemap_draw(bitmap,cliprect, bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
+ tilemap_draw(bitmap,cliprect, state->bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
draw_sprites(screen->machine, bitmap,cliprect);
- tilemap_draw(bitmap,cliprect, bg2_tilemap, 0,0);
- tilemap_draw(bitmap,cliprect, fg_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->bg2_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->fg_tilemap, 0,0);
break;
case 2:
- tilemap_draw(bitmap,cliprect, bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
+ tilemap_draw(bitmap,cliprect, state->bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
draw_sprites(screen->machine, bitmap,cliprect);
- tilemap_draw(bitmap,cliprect, bg1_tilemap, 0,0);
- tilemap_draw(bitmap,cliprect, bg2_tilemap, 0,0);
- tilemap_draw(bitmap,cliprect, fg_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->bg1_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->bg2_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->fg_tilemap, 0,0);
break;
case 3:
- tilemap_draw(bitmap,cliprect, bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
- tilemap_draw(bitmap,cliprect, bg2_tilemap, 0,0);
- tilemap_draw(bitmap,cliprect, fg_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->bg1_tilemap, TILEMAP_DRAW_OPAQUE,0);
+ tilemap_draw(bitmap,cliprect, state->bg2_tilemap, 0,0);
+ tilemap_draw(bitmap,cliprect, state->fg_tilemap, 0,0);
draw_sprites(screen->machine, bitmap,cliprect);
break;
default:
- logerror("Unimplemented priority %X\n", *vastar_sprite_priority);
+ logerror("Unimplemented priority %X\n", *state->sprite_priority);
break;
}
return 0;
diff --git a/src/mame/video/xevious.c b/src/mame/video/xevious.c
index f17b650e490..090661affbb 100644
--- a/src/mame/video/xevious.c
+++ b/src/mame/video/xevious.c
@@ -230,10 +230,6 @@ VIDEO_START( xevious )
tilemap_set_scrolldy(fg_tilemap,-18,-10);
tilemap_set_transparent_pen(fg_tilemap,0);
- machine->generic.spriteram2.u8 = xevious_sr1 + 0x780;
- machine->generic.spriteram3.u8 = xevious_sr2 + 0x780;
- machine->generic.spriteram.u8 = xevious_sr3 + 0x780;
-
state_save_register_global_array(machine, xevious_bs);
}
@@ -426,12 +422,11 @@ ROM 3M,3L color replace table for sprite
static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect)
{
- UINT8 *spriteram = machine->generic.spriteram.u8;
- UINT8 *spriteram_2 = machine->generic.spriteram2.u8;
- UINT8 *spriteram_3 = machine->generic.spriteram3.u8;
+ UINT8 *spriteram = xevious_sr3 + 0x780;
+ UINT8 *spriteram_2 = xevious_sr1 + 0x780;
+ UINT8 *spriteram_3 = xevious_sr2 + 0x780;
int offs,sx,sy;
-
for (offs = 0;offs < 0x80;offs += 2)
{
if ((spriteram[offs + 1] & 0x40) == 0) /* I'm not sure about this one */