From 90560a421d444237e4422849fba83c20c1405c6d Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Sat, 28 Nov 2009 19:33:18 +0000 Subject: [PATCH] From: Atari Ace 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 --- src/emu/mame.h | 2 - src/mame/drivers/mappy.c | 22 +---- src/mame/drivers/mjkjidai.c | 78 +++++++++--------- src/mame/drivers/srmp2.c | 155 +++++++++++++++++------------------- src/mame/drivers/toypop.c | 15 +--- src/mame/drivers/vastar.c | 48 +++++------ src/mame/video/digdug.c | 10 +-- src/mame/video/galaga.c | 11 +-- src/mame/video/gaplus.c | 10 +-- src/mame/video/mappy.c | 27 ++----- src/mame/video/mjkjidai.c | 23 +++--- src/mame/video/pacland.c | 10 +-- src/mame/video/retofinv.c | 10 +-- src/mame/video/skykid.c | 10 +-- src/mame/video/srmp2.c | 49 ++++++------ src/mame/video/toypop.c | 4 +- src/mame/video/vastar.c | 111 ++++++++++++++------------ src/mame/video/xevious.c | 11 +-- 18 files changed, 265 insertions(+), 341 deletions(-) diff --git a/src/emu/mame.h b/src/emu/mame.h index 39a698b70a6..aa699fc7885 100644 --- a/src/emu/mame.h +++ b/src/emu/mame.h @@ -171,8 +171,6 @@ struct _generic_pointers UINT32 spriteram_size; generic_ptr spriteram2; /* secondary spriteram */ UINT32 spriteram2_size; - generic_ptr spriteram3; /* tertiary spriteram */ - UINT32 spriteram3_size; generic_ptr buffered_spriteram; /* buffered spriteram */ generic_ptr buffered_spriteram2;/* secondary buffered spriteram */ generic_ptr buffered_spriteram3;/* tertiary buffered spriteram */ 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; - tilemap_set_transparent_pen(fg_tilemap,0); - tilemap_set_transparent_pen(bg1_tilemap,0); - tilemap_set_transparent_pen(bg2_tilemap,0); + 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_scroll_cols(bg1_tilemap, 32); - tilemap_set_scroll_cols(bg2_tilemap, 32); + 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(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 */