diff --git a/.gitattributes b/.gitattributes index 0370cc02a2a..21290ab876c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2756,6 +2756,7 @@ src/mame/includes/markham.h svneol=native#text/plain src/mame/includes/matmania.h svneol=native#text/plain src/mame/includes/mcatadv.h svneol=native#text/plain src/mame/includes/mcr.h svneol=native#text/plain +src/mame/includes/mcr68.h svneol=native#text/plain src/mame/includes/meadows.h svneol=native#text/plain src/mame/includes/megadriv.h svneol=native#text/plain src/mame/includes/megasys1.h svneol=native#text/plain @@ -2806,6 +2807,7 @@ src/mame/includes/namcos22.h svneol=native#text/plain src/mame/includes/namcos86.h svneol=native#text/plain src/mame/includes/naomi.h svneol=native#text/plain src/mame/includes/naomibd.h svneol=native#text/plain +src/mame/includes/naughtyb.h svneol=native#text/plain src/mame/includes/nb1413m3.h svneol=native#text/plain src/mame/includes/nbmj8688.h svneol=native#text/plain src/mame/includes/nbmj8891.h svneol=native#text/plain @@ -2978,6 +2980,7 @@ src/mame/includes/suprnova.h svneol=native#text/plain src/mame/includes/suprridr.h svneol=native#text/plain src/mame/includes/suprslam.h svneol=native#text/plain src/mame/includes/surpratk.h svneol=native#text/plain +src/mame/includes/system1.h svneol=native#text/plain src/mame/includes/system16.h svneol=native#text/plain src/mame/includes/tagteam.h svneol=native#text/plain src/mame/includes/tail2nos.h svneol=native#text/plain @@ -3309,6 +3312,7 @@ src/mame/machine/mathbox.h svneol=native#text/plain src/mame/machine/mc8123.c svneol=native#text/plain src/mame/machine/mc8123.h svneol=native#text/plain src/mame/machine/mcr.c svneol=native#text/plain +src/mame/machine/mcr68.c svneol=native#text/plain src/mame/machine/meters.c svneol=native#text/plain src/mame/machine/meters.h svneol=native#text/plain src/mame/machine/mexico86.c svneol=native#text/plain @@ -4041,7 +4045,6 @@ src/mame/video/suprridr.c svneol=native#text/plain src/mame/video/suprslam.c svneol=native#text/plain src/mame/video/surpratk.c svneol=native#text/plain src/mame/video/system1.c svneol=native#text/plain -src/mame/video/system1.h svneol=native#text/plain src/mame/video/system16.c svneol=native#text/plain src/mame/video/tagteam.c svneol=native#text/plain src/mame/video/tail2nos.c svneol=native#text/plain diff --git a/src/emu/machine.h b/src/emu/machine.h index a367cef1e7e..8d1cf3709fe 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -278,8 +278,6 @@ private: // holds generic pointers that are commonly used struct generic_pointers { - generic_ptr videoram; // videoram - UINT32 videoram_size; generic_ptr spriteram; // spriteram UINT32 spriteram_size; generic_ptr spriteram2; // secondary spriteram diff --git a/src/emu/video/pc_video.c b/src/emu/video/pc_video.c index de69ca583a2..97ce140ed7a 100644 --- a/src/emu/video/pc_video.c +++ b/src/emu/video/pc_video.c @@ -48,9 +48,7 @@ void pc_video_start(running_machine *machine, pc_current_width = -1; machine->generic.tmpbitmap = NULL; - machine->generic.videoram_size = vramsize; - - if (machine->generic.videoram_size) + if (vramsize) { video_start_generic_bitmapped(machine); } @@ -102,23 +100,3 @@ VIDEO_UPDATE( pc_video ) } return rc; } - - - -WRITE8_HANDLER ( pc_video_videoram_w ) -{ - if (space->machine->generic.videoram.u8 && space->machine->generic.videoram.u8[offset] != data) - { - space->machine->generic.videoram.u8[offset] = data; - pc_anythingdirty = 1; - } -} - - -WRITE16_HANDLER( pc_video_videoram16le_w ) { write16le_with_write8_handler(pc_video_videoram_w, space, offset, data, mem_mask); } - -WRITE32_HANDLER( pc_video_videoram32_w ) -{ - COMBINE_DATA(space->machine->generic.videoram.u32 + offset); - pc_anythingdirty = 1; -} diff --git a/src/emu/video/pc_video.h b/src/emu/video/pc_video.h index b8f0532bdab..25611035797 100644 --- a/src/emu/video/pc_video.h +++ b/src/emu/video/pc_video.h @@ -17,8 +17,4 @@ void pc_video_start(running_machine *machine, VIDEO_UPDATE( pc_video ); -WRITE8_HANDLER( pc_video_videoram_w ); -WRITE16_HANDLER( pc_video_videoram16le_w ); -WRITE32_HANDLER( pc_video_videoram32_w ); - #endif /* PC_VIDEO_H */ diff --git a/src/mame/audio/pleiads.c b/src/mame/audio/pleiads.c index 46fcb18c93c..94797471a54 100644 --- a/src/mame/audio/pleiads.c +++ b/src/mame/audio/pleiads.c @@ -9,7 +9,7 @@ #include "emu.h" #include "streams.h" #include "sound/tms36xx.h" -#include "includes/phoenix.h" +#include "audio/pleiads.h" #define VMIN 0 #define VMAX 32767 diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c index f82a3d7dd85..7ed2b034e33 100644 --- a/src/mame/drivers/ampoker2.c +++ b/src/mame/drivers/ampoker2.c @@ -580,7 +580,7 @@ static WRITE8_HANDLER( ampoker2_watchdog_reset_w ) static ADDRESS_MAP_START( ampoker2_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_BASE_MEMBER(ampoker2_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( ampoker2_io_map, ADDRESS_SPACE_IO, 8 ) @@ -1050,7 +1050,7 @@ static const ay8910_interface ay8910_config = * Machine Driver * *************************/ -static MACHINE_CONFIG_START( ampoker2, driver_device ) +static MACHINE_CONFIG_START( ampoker2, ampoker2_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/2) /* 3 MHz */ diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c index 5e0ef9d1510..06383d74a2f 100644 --- a/src/mame/drivers/astrocde.c +++ b/src/mame/drivers/astrocde.c @@ -584,7 +584,7 @@ static WRITE8_HANDLER( tenpindx_lights_w ) static ADDRESS_MAP_START( seawolf2_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(astrocde_state, videoram) AM_RANGE(0xc000, 0xc3ff) AM_RAM ADDRESS_MAP_END @@ -592,14 +592,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ebases_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(astrocde_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( spacezap_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(astrocde_state, videoram) AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_BASE(&protected_ram) AM_RANGE(0xd040, 0xd7ff) AM_RAM ADDRESS_MAP_END @@ -608,7 +608,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( wow_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(astrocde_state, videoram) AM_RANGE(0x8000, 0xcfff) AM_ROM AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_BASE(&protected_ram) AM_RANGE(0xd040, 0xdfff) AM_RAM @@ -618,7 +618,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( robby_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(astrocde_state, videoram) AM_RANGE(0x8000, 0xdfff) AM_ROM AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_BASE(&protected_ram) AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") @@ -1271,7 +1271,7 @@ static const z80_daisy_config tenpin_daisy_chain[] = * *************************************/ -static MACHINE_CONFIG_START( astrocade_base, driver_device ) +static MACHINE_CONFIG_START( astrocade_base, astrocde_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, ASTROCADE_CLOCK/4) diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c index 67e6790ca59..3b1d6e95a2b 100644 --- a/src/mame/drivers/atetris.c +++ b/src/mame/drivers/atetris.c @@ -207,7 +207,7 @@ static WRITE8_HANDLER( nvram_enable_w ) /* full address map derived from schematics */ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_MEMBER(atetris_state, videoram) AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey1", pokey_r, pokey_w) @@ -224,7 +224,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( atetrisb2_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(atetris_videoram_w) AM_BASE_MEMBER(atetris_state, videoram) AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76496_w) @@ -376,7 +376,7 @@ static MACHINE_CONFIG_START( atetris, atetris_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( atetrisb2, driver_device ) +static MACHINE_CONFIG_START( atetrisb2, atetris_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502,BOOTLEG_CLOCK/8) diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c index fed140df55a..92916a3c678 100644 --- a/src/mame/drivers/balsente.c +++ b/src/mame/drivers/balsente.c @@ -244,7 +244,7 @@ DIP locations verified for: static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_GENERIC(spriteram) - AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(balsente_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(balsente_videoram_w) AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(balsente_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x9000, 0x9007) AM_WRITE(balsente_adc_select_w) AM_RANGE(0x9400, 0x9401) AM_READ(balsente_adc_data_r) diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c index 5c39cd1f958..699d8c043e7 100644 --- a/src/mame/drivers/beezer.c +++ b/src/mame/drivers/beezer.c @@ -15,7 +15,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x0000, 0xbfff) AM_RAM AM_BASE_MEMBER(beezer_state, videoram) AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("bank1") AM_RANGE(0xd000, 0xffff) AM_ROM AM_WRITE(beezer_bankswitch_w) ADDRESS_MAP_END @@ -72,7 +72,7 @@ static INPUT_PORTS_START( beezer ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( beezer, driver_device ) +static MACHINE_CONFIG_START( beezer, beezer_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6809, 1000000) /* 1 MHz */ diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c index ece4c9d9c11..59b0728e71f 100644 --- a/src/mame/drivers/centiped.c +++ b/src/mame/drivers/centiped.c @@ -674,7 +674,7 @@ static READ8_DEVICE_HANDLER( caterplr_AY8910_r ) static ADDRESS_MAP_START( centiped_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x03ff) AM_RAM AM_BASE(&rambase) - AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1") /* DSW1 */ AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2") /* DSW2 */ @@ -699,7 +699,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( centipdb_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x0400, 0x07bf) AM_MIRROR(0x4000) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0400, 0x07bf) AM_MIRROR(0x4000) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x07c0, 0x07ff) AM_MIRROR(0x4000) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x4000) AM_READ_PORT("DSW1") /* DSW1 */ AM_RANGE(0x0801, 0x0801) AM_MIRROR(0x4000) AM_READ_PORT("DSW2") /* DSW2 */ @@ -735,7 +735,7 @@ static ADDRESS_MAP_START( milliped_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x03ff) AM_RAM AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_r, pokey_w) AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w) - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x2000, 0x2000) AM_READ(centiped_IN0_r) AM_RANGE(0x2001, 0x2001) AM_READ(milliped_IN1_r) @@ -766,7 +766,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( warlords_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1") /* DSW1 */ AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2") /* DSW2 */ @@ -793,7 +793,7 @@ static ADDRESS_MAP_START( mazeinv_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x03ff) AM_RAM AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_r, pokey_w) AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w) - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0") AM_RANGE(0x2001, 0x2001) AM_READ_PORT("IN1") @@ -837,7 +837,7 @@ static ADDRESS_MAP_START( bullsdrt_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1487, 0x1487) AM_MIRROR(0x6000) AM_WRITE(centiped_flip_screen_w) AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_WRITE(watchdog_reset_w) AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_NOP - AM_RANGE(0x1800, 0x1bbf) AM_MIRROR(0x6000) AM_WRITE(centiped_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x1800, 0x1bbf) AM_MIRROR(0x6000) AM_WRITE(centiped_videoram_w) AM_BASE_MEMBER(centiped_state, videoram) AM_RANGE(0x1bc0, 0x1bff) AM_MIRROR(0x6000) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_RANGE(0x2000, 0x2fff) AM_ROM @@ -1586,7 +1586,7 @@ static const pokey_interface warlords_pokey_interface = * *************************************/ -static MACHINE_CONFIG_START( centiped, driver_device ) +static MACHINE_CONFIG_START( centiped, centiped_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 12096000/8) /* 1.512 MHz (slows down to 0.75MHz while accessing playfield RAM) */ @@ -1710,7 +1710,7 @@ static MACHINE_CONFIG_DERIVED( mazeinv, milliped ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bullsdrt, driver_device ) +static MACHINE_CONFIG_START( bullsdrt, centiped_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", S2650, 12096000/8) diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c index d27000bac0d..fc9d5a8dc6b 100644 --- a/src/mame/drivers/cloak.c +++ b/src/mame/drivers/cloak.c @@ -168,7 +168,7 @@ static WRITE8_HANDLER( cloak_nvram_enable_w ) static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(cloak_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(cloak_videoram_w) AM_BASE_MEMBER(cloak_state, videoram) AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey1", pokey_r, pokey_w) /* DSW0 also */ AM_RANGE(0x1800, 0x180f) AM_DEVREADWRITE("pokey2", pokey_r, pokey_w) /* DSW1 also */ @@ -331,7 +331,7 @@ static const pokey_interface pokey_interface_2 = * *************************************/ -static MACHINE_CONFIG_START( cloak, driver_device ) +static MACHINE_CONFIG_START( cloak, cloak_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 1000000) /* 1 MHz ???? */ diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c index 4b192f1708c..ebfcec33b68 100644 --- a/src/mame/drivers/cmmb.c +++ b/src/mame/drivers/cmmb.c @@ -30,6 +30,17 @@ CYC1399 #include "emu.h" #include "cpu/m6502/m6502.h" + +class cmmb_state : public driver_device +{ +public: + cmmb_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static VIDEO_START( cmmb ) { @@ -37,6 +48,8 @@ static VIDEO_START( cmmb ) static VIDEO_UPDATE( cmmb ) { + cmmb_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; const gfx_element *gfx = screen->machine->gfx[0]; int count = 0x00000; @@ -47,8 +60,8 @@ static VIDEO_UPDATE( cmmb ) { for (x=0;x<32;x++) { - int tile = screen->machine->generic.videoram.u8[count] & 0x3f; - int colour = (screen->machine->generic.videoram.u8[count] & 0xc0)>>6; + int tile = videoram[count] & 0x3f; + int colour = (videoram[count] & 0xc0)>>6; drawgfx_opaque(bitmap,cliprect,gfx,tile,colour,0,0,x*8,y*8); count++; @@ -142,7 +155,7 @@ static READ8_HANDLER( kludge_r ) static ADDRESS_MAP_START( cmmb_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x01ff) AM_RAM /* zero page address */ // AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE_MEMBER(cmmb_state, videoram) AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE(cmmb_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //i/o AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r) @@ -270,7 +283,7 @@ static MACHINE_RESET( cmmb ) { } -static MACHINE_CONFIG_START( cmmb, driver_device ) +static MACHINE_CONFIG_START( cmmb, cmmb_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu",M65C02,8000000/2) // unknown clock diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c index 76e8ea52521..31a238dfb3f 100644 --- a/src/mame/drivers/coinmstr.c +++ b/src/mame/drivers/coinmstr.c @@ -29,6 +29,17 @@ x #include "sound/ay8910.h" +class coinmstr_state : public driver_device +{ +public: + coinmstr_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + + static UINT8 *attr_ram1, *attr_ram2, *attr_ram3; static tilemap_t *bg_tilemap; @@ -36,7 +47,9 @@ static UINT8 question_adr[4]; static WRITE8_HANDLER( quizmstr_bg_w ) { - space->machine->generic.videoram.u8[offset] = data; + coinmstr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; if(offset >= 0x0240) tilemap_mark_tile_dirty(bg_tilemap,offset - 0x0240); @@ -184,7 +197,7 @@ static READ8_HANDLER( ff_r ) static ADDRESS_MAP_START( coinmstr_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_BASE_MEMBER(coinmstr_state, videoram) AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_BASE(&attr_ram1) AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_BASE(&attr_ram2) AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_BASE(&attr_ram3) @@ -878,7 +891,9 @@ GFXDECODE_END static TILE_GET_INFO( get_bg_tile_info ) { - int tile = machine->generic.videoram.u8[tile_index + 0x0240]; + coinmstr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int tile = videoram[tile_index + 0x0240]; int color = tile_index; tile |= (attr_ram1[tile_index + 0x0240] & 0x80) << 1; @@ -980,7 +995,7 @@ static const mc6845_interface h46505_intf = }; -static MACHINE_CONFIG_START( coinmstr, driver_device ) +static MACHINE_CONFIG_START( coinmstr, coinmstr_state ) MDRV_CPU_ADD("maincpu",Z80,8000000) // ? MDRV_CPU_PROGRAM_MAP(coinmstr_map) MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c index d361f2ca6f2..f843d73f0a9 100644 --- a/src/mame/drivers/darkmist.c +++ b/src/mame/drivers/darkmist.c @@ -70,7 +70,7 @@ static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xd681, 0xd681) AM_READ(t5182_sharedram_semaphore_snd_r) AM_RANGE(0xd682, 0xd682) AM_WRITE(t5182_sharedram_semaphore_main_acquire_w) AM_RANGE(0xd683, 0xd683) AM_WRITE(t5182_sharedram_semaphore_main_release_w) - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0xd800, 0xdfff) AM_RAM AM_BASE_MEMBER(darkmist_state, videoram) AM_RANGE(0xe000, 0xefff) AM_RAM AM_BASE(&darkmist_workram) AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) ADDRESS_MAP_END @@ -240,7 +240,7 @@ static INTERRUPT_GEN( darkmist_interrupt ) -static MACHINE_CONFIG_START( darkmist, driver_device ) +static MACHINE_CONFIG_START( darkmist, darkmist_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */ MDRV_CPU_PROGRAM_MAP(memmap) diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c index 811ca1fd8ba..146e0edace5 100644 --- a/src/mame/drivers/deadang.c +++ b/src/mame/drivers/deadang.c @@ -64,7 +64,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY AM_RANGE(0x06000, 0x0600f) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY - AM_RANGE(0x08000, 0x087ff) AM_WRITE(deadang_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x08000, 0x087ff) AM_WRITE(deadang_text_w) AM_BASE_MEMBER(deadang_state, videoram) AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2") AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW") @@ -217,7 +217,7 @@ static INTERRUPT_GEN( deadang_interrupt ) /* Machine Drivers */ -static MACHINE_CONFIG_START( deadang, driver_device ) +static MACHINE_CONFIG_START( deadang, deadang_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c index a4fe554ffd9..1b7453d6b9c 100644 --- a/src/mame/drivers/deco_ld.c +++ b/src/mame/drivers/deco_ld.c @@ -106,12 +106,25 @@ Sound processor - 6502 #include "sound/ay8910.h" #include "machine/laserdsc.h" + +class deco_ld_state : public driver_device +{ +public: + deco_ld_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static UINT8 vram_bank; static running_device *laserdisc; static UINT8 laserdisc_data; static VIDEO_UPDATE( rblaster ) { + deco_ld_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; const gfx_element *gfx = screen->machine->gfx[0]; int count = 0x0000; @@ -121,7 +134,7 @@ static VIDEO_UPDATE( rblaster ) { for (x=0;x<32;x++) { - int tile = screen->machine->generic.videoram.u8[count]; + int tile = videoram[count]; int colour = (vram_bank & 0x7); drawgfx_opaque(bitmap,cliprect,gfx,tile,colour,0,0,x*8,y*8); @@ -177,7 +190,7 @@ static ADDRESS_MAP_START( begas_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_MEMBER(deco_ld_state, videoram) AM_RANGE(0x3000, 0x3fff) AM_RAM AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -196,7 +209,7 @@ static ADDRESS_MAP_START( cobra_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2000, 0x2fff) AM_RAM AM_RANGE(0x3000, 0x37ff) AM_RAM //vram attr? - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE_MEMBER(deco_ld_state, videoram) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -210,7 +223,7 @@ static ADDRESS_MAP_START( rblaster_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_MEMBER(deco_ld_state, videoram) AM_RANGE(0x3000, 0x3fff) AM_RAM AM_RANGE(0xc000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -487,7 +500,7 @@ static MACHINE_START( rblaster ) laserdisc = machine->device("laserdisc"); } -static MACHINE_CONFIG_START( rblaster, driver_device ) +static MACHINE_CONFIG_START( rblaster, deco_ld_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu",M6502,8000000/2) diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c index 661d31992f5..db314eba2dc 100644 --- a/src/mame/drivers/dlair.c +++ b/src/mame/drivers/dlair.c @@ -44,6 +44,17 @@ #include "dlair.lh" +class dlair_state : public driver_device +{ +public: + dlair_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + + /************************************* * @@ -161,13 +172,15 @@ static PALETTE_INIT( dleuro ) static VIDEO_UPDATE( dleuro ) { + dlair_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int x, y; /* redraw the overlay */ for (y = 0; y < 32; y++) for (x = 0; x < 32; x++) { - UINT8 *base = &screen->machine->generic.videoram.u8[y * 64 + x * 2 + 1]; + UINT8 *base = &videoram[y * 64 + x * 2 + 1]; drawgfx_opaque(bitmap, cliprect, screen->machine->gfx[0], base[0], base[1], 0, 0, 10 * x, 16 * y); } @@ -378,7 +391,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dleuro_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x9fff) AM_ROM AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_BASE_MEMBER(dlair_state, videoram) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1f47) // WT LED 1 AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1f47) // WT LED 2 AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1f47) AM_WRITE(led_den1_w) // WT EXT LED 1 @@ -669,7 +682,7 @@ static const ay8910_interface ay8910_config = * *************************************/ -static MACHINE_CONFIG_START( dlair_base, driver_device ) +static MACHINE_CONFIG_START( dlair_base, dlair_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK_US/4) @@ -706,7 +719,7 @@ static MACHINE_CONFIG_DERIVED( dlair_ldv1000, dlair_base ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( dleuro, driver_device ) +static MACHINE_CONFIG_START( dleuro, dlair_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK_EURO/4) diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c index 7b2ffdd96f4..73847cce20d 100644 --- a/src/mame/drivers/dynduke.c +++ b/src/mame/drivers/dynduke.c @@ -81,7 +81,7 @@ static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP AM_RANGE(0x0b006, 0x0b007) AM_WRITE(dynduke_control_w) - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_MEMBER(dynduke_state, videoram) AM_RANGE(0x0d000, 0x0d00d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0xa0000, 0xfffff) AM_ROM ADDRESS_MAP_END @@ -101,7 +101,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( masterj_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_MEMBER(dynduke_state, videoram) AM_RANGE(0x09000, 0x0900d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0x0c000, 0x0c0ff) AM_RAM AM_BASE(&dynduke_scroll_ram) AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_SHARE("share1") @@ -270,7 +270,7 @@ static INTERRUPT_GEN( dynduke_interrupt ) /* Machine Driver */ -static MACHINE_CONFIG_START( dynduke, driver_device ) +static MACHINE_CONFIG_START( dynduke, dynduke_state ) // basic machine hardware MDRV_CPU_ADD("maincpu", V30, 16000000/2) // NEC V30-8 CPU MDRV_CPU_PROGRAM_MAP(master_map) diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index 8009256673d..53b7b04bcd6 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -1363,7 +1363,7 @@ static ADDRESS_MAP_START( galaxian_map_base, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w) @@ -1398,7 +1398,7 @@ static ADDRESS_MAP_START( mooncrst_map_base, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w) @@ -1430,7 +1430,7 @@ static ADDRESS_MAP_START( dambustr_map, ADDRESS_SPACE_PROGRAM, 8 ) // AM_RANGE(0x8000, 0x8000) AM_WRITE(dambustr_bg_color_w) // AM_RANGE(0x8001, 0x8001) AM_WRITE(dambustr_bg_split_line_w) AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xd000, 0xd3ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0xd800, 0xd8ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") AM_RANGE(0xe004, 0xe007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_lfo_freq_w) @@ -1452,7 +1452,7 @@ static ADDRESS_MAP_START( theend_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) @@ -1471,7 +1471,7 @@ static ADDRESS_MAP_START( scobra_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x9800, 0x9803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w) @@ -1492,7 +1492,7 @@ static ADDRESS_MAP_START( frogger_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r) - AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xb808, 0xb808) AM_MIRROR(0x07e3) AM_WRITE(irq_enable_w) AM_RANGE(0xb80c, 0xb80c) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_y_w) @@ -1508,7 +1508,7 @@ static ADDRESS_MAP_START( turtles_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_red_w) AM_RANGE(0xa008, 0xa008) AM_MIRROR(0x47c7) AM_WRITE(irq_enable_w) @@ -1529,7 +1529,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sfx_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_red_w) AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) @@ -1558,7 +1558,7 @@ static ADDRESS_MAP_START( jumpbug_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x00ff) AM_DEVWRITE("aysnd", ay8910_data_w) AM_RANGE(0x5900, 0x5900) AM_MIRROR(0x00ff) AM_DEVWRITE("aysnd", ay8910_address_w) @@ -1580,7 +1580,7 @@ static ADDRESS_MAP_START( frogf_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07f1) AM_WRITE(galaxian_flip_screen_x_w) AM_RANGE(0xa804, 0xa804) AM_MIRROR(0x07f1) AM_WRITE(irq_enable_w) @@ -1597,7 +1597,7 @@ static ADDRESS_MAP_START( mshuttle_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_BASE_MEMBER(galaxian_state, videoram) AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") AM_RANGE(0xa000, 0xa000) AM_WRITE(irq_enable_w) @@ -1956,7 +1956,7 @@ DISCRETE_SOUND_END * *************************************/ -static MACHINE_CONFIG_START( galaxian_base, driver_device ) +static MACHINE_CONFIG_START( galaxian_base, galaxian_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, GALAXIAN_PIXEL_CLOCK/3/2) diff --git a/src/mame/drivers/gatron.c b/src/mame/drivers/gatron.c index 6118aab105c..9280d69ca4d 100644 --- a/src/mame/drivers/gatron.c +++ b/src/mame/drivers/gatron.c @@ -339,7 +339,7 @@ static const ppi8255_interface ppi8255_intf = static ADDRESS_MAP_START( gat_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_BASE_MEMBER(gatron_state, videoram) AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76496_w) /* PSG */ AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */ @@ -432,7 +432,7 @@ GFXDECODE_END * Machine Drivers * *************************/ -static MACHINE_CONFIG_START( gat, driver_device ) +static MACHINE_CONFIG_START( gat, gatron_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/24) /* 666.66 kHz, guess */ diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c index 3f1ede6d691..7809b1189dc 100644 --- a/src/mame/drivers/gottlieb.c +++ b/src/mame/drivers/gottlieb.c @@ -717,7 +717,7 @@ static ADDRESS_MAP_START( reactor_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xffff) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0f00) AM_WRITEONLY AM_BASE_GENERIC(spriteram) /* FRSEL */ - AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM_WRITE(gottlieb_videoram_w) AM_BASE_GENERIC(videoram) /* BRSEL */ + AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM_WRITE(gottlieb_videoram_w) AM_BASE_MEMBER(gottlieb_state, videoram) /* BRSEL */ AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_BASE(&gottlieb_charram) /* BOJRSEL1 */ /* AM_RANGE(0x5000, 0x5fff) AM_WRITE() */ /* BOJRSEL2 */ AM_RANGE(0x6000, 0x601f) AM_MIRROR(0x0fe0) AM_WRITE(gottlieb_paletteram_w) AM_BASE_GENERIC(paletteram) /* COLSEL */ @@ -740,7 +740,7 @@ static ADDRESS_MAP_START( gottlieb_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1000, 0x1fff) AM_RAM AM_REGION("maincpu", 0x1000) /* or ROM */ AM_RANGE(0x2000, 0x2fff) AM_RAM AM_REGION("maincpu", 0x2000) /* or ROM */ AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0700) AM_WRITEONLY AM_BASE_GENERIC(spriteram) /* FRSEL */ - AM_RANGE(0x3800, 0x3bff) AM_MIRROR(0x0400) AM_RAM_WRITE(gottlieb_videoram_w) AM_BASE_GENERIC(videoram) /* BRSEL */ + AM_RANGE(0x3800, 0x3bff) AM_MIRROR(0x0400) AM_RAM_WRITE(gottlieb_videoram_w) AM_BASE_MEMBER(gottlieb_state, videoram) /* BRSEL */ AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_BASE(&gottlieb_charram) /* BOJRSEL1 */ AM_RANGE(0x5000, 0x501f) AM_MIRROR(0x07e0) AM_WRITE(gottlieb_paletteram_w) AM_BASE_GENERIC(paletteram) /* COLSEL */ AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_WRITE(watchdog_reset_w) @@ -1916,7 +1916,7 @@ static const samples_interface reactor_samples_interface = * *************************************/ -static MACHINE_CONFIG_START( gottlieb_core, driver_device ) +static MACHINE_CONFIG_START( gottlieb_core, gottlieb_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", I8088, CPU_CLOCK/3) diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c index 75409bab2c7..aafacd65397 100644 --- a/src/mame/drivers/gridlee.c +++ b/src/mame/drivers/gridlee.c @@ -317,7 +317,7 @@ static WRITE8_HANDLER( gridlee_coin_counter_w ) /* CPU 1 read addresses */ static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE_GENERIC(spriteram) - AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(gridlee_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(gridlee_videoram_w) AM_BASE_MEMBER(gridlee_state, videoram) AM_RANGE(0x9000, 0x9000) AM_WRITE(led_0_w) AM_RANGE(0x9010, 0x9010) AM_WRITE(led_1_w) AM_RANGE(0x9020, 0x9020) AM_WRITE(gridlee_coin_counter_w) @@ -434,7 +434,7 @@ static const samples_interface gridlee_samples_interface = * *************************************/ -static MACHINE_CONFIG_START( gridlee, driver_device ) +static MACHINE_CONFIG_START( gridlee, gridlee_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6809, BALSENTE_CPU_CLOCK) diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c index 15df58e0058..6966cd9786a 100644 --- a/src/mame/drivers/gsword.c +++ b/src/mame/drivers/gsword.c @@ -358,7 +358,7 @@ static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM , 8 ) AM_RANGE(0xaa80, 0xaa80) AM_WRITE(gsword_videoctrl_w) /* flip screen, char palette bank */ AM_RANGE(0xab00, 0xab00) AM_WRITE(gsword_scroll_w) AM_RANGE(0xab80, 0xabff) AM_WRITEONLY AM_BASE(&gsword_spriteattrib_ram) - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(gsword_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(gsword_videoram_w) AM_BASE_MEMBER(gsword_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( cpu1_io_map, ADDRESS_SPACE_IO, 8 ) @@ -676,7 +676,7 @@ static const msm5205_interface msm5205_config = MSM5205_SEX_4B /* vclk input mode */ }; -static MACHINE_CONFIG_START( gsword, driver_device ) +static MACHINE_CONFIG_START( gsword, gsword_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, XTAL_18MHz/6) /* verified on pcb */ @@ -731,7 +731,7 @@ static MACHINE_CONFIG_START( gsword, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( josvolly, driver_device ) +static MACHINE_CONFIG_START( josvolly, gsword_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 18000000/6) /* ? */ diff --git a/src/mame/drivers/irobot.c b/src/mame/drivers/irobot.c index ab81d8b0866..2aeb2d70d17 100644 --- a/src/mame/drivers/irobot.c +++ b/src/mame/drivers/irobot.c @@ -143,7 +143,7 @@ static ADDRESS_MAP_START( irobot_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1900, 0x19ff) AM_WRITEONLY /* Watchdog reset */ AM_RANGE(0x1a00, 0x1a00) AM_WRITE(irobot_clearfirq_w) AM_RANGE(0x1b00, 0x1bff) AM_WRITE(irobot_control_w) - AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_BASE_MEMBER(irobot_state, videoram) AM_RANGE(0x2000, 0x3fff) AM_READWRITE(irobot_sharedmem_r, irobot_sharedmem_w) AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") AM_RANGE(0x6000, 0xffff) AM_ROM diff --git a/src/mame/drivers/magmax.c b/src/mame/drivers/magmax.c index e47b7b157f9..6fac3740fc8 100644 --- a/src/mame/drivers/magmax.c +++ b/src/mame/drivers/magmax.c @@ -206,7 +206,7 @@ static WRITE16_HANDLER( magmax_vreg_w ) static ADDRESS_MAP_START( magmax_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x013fff) AM_ROM AM_RANGE(0x018000, 0x018fff) AM_RAM - AM_RANGE(0x020000, 0x0207ff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x020000, 0x0207ff) AM_RAM AM_BASE_MEMBER(magmax_state, videoram) AM_RANGE(0x028000, 0x0281ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x030000, 0x030001) AM_READ_PORT("P1") AM_RANGE(0x030002, 0x030003) AM_READ_PORT("P2") @@ -348,7 +348,7 @@ static const ay8910_interface ay8910_config = }; -static MACHINE_CONFIG_START( magmax, driver_device ) +static MACHINE_CONFIG_START( magmax, magmax_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */ diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c index 52a8d0ca76d..a3afc45b725 100644 --- a/src/mame/drivers/mcr.c +++ b/src/mame/drivers/mcr.c @@ -622,7 +622,7 @@ static ADDRESS_MAP_START( cpu_90009_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xf000, 0xf1ff) AM_MIRROR(0x0200) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_WRITE(paletteram_xxxxRRRRBBBBGGGG_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(mcr_90009_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(mcr_90009_videoram_w) AM_BASE_MEMBER(mcr_state, videoram) ADDRESS_MAP_END /* upper I/O map determined by PAL; only SSIO ports are verified from schematics */ @@ -649,7 +649,7 @@ static ADDRESS_MAP_START( cpu_90010_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") AM_RANGE(0xe000, 0xe1ff) AM_MIRROR(0x1600) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0xe800, 0xefff) AM_MIRROR(0x1000) AM_RAM_WRITE(mcr_90010_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xe800, 0xefff) AM_MIRROR(0x1000) AM_RAM_WRITE(mcr_90010_videoram_w) AM_BASE_MEMBER(mcr_state, videoram) ADDRESS_MAP_END /* upper I/O map determined by PAL; only SSIO ports are verified from schematics */ @@ -676,7 +676,7 @@ static ADDRESS_MAP_START( cpu_91490_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0xdfff) AM_ROM AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xe800, 0xe9ff) AM_MIRROR(0x0200) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr_91490_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr_91490_videoram_w) AM_BASE_MEMBER(mcr_state, videoram) AM_RANGE(0xf800, 0xf87f) AM_MIRROR(0x0780) AM_WRITE(mcr_91490_paletteram_w) AM_BASE_GENERIC(paletteram) ADDRESS_MAP_END @@ -1567,7 +1567,7 @@ static const samples_interface journey_samples_interface = *************************************/ /* 90009 CPU board plus 90908/90913/91483 sound board */ -static MACHINE_CONFIG_START( mcr_90009, driver_device ) +static MACHINE_CONFIG_START( mcr_90009, mcr_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MAIN_OSC_MCR_I/8) diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c index 4c389460fcc..8380eb6acf4 100644 --- a/src/mame/drivers/mcr3.c +++ b/src/mame/drivers/mcr3.c @@ -482,7 +482,7 @@ static ADDRESS_MAP_START( mcrmono_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0xea00, 0xebff) AM_RAM AM_RANGE(0xec00, 0xec7f) AM_MIRROR(0x0380) AM_WRITE(mcr3_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr3_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr3_videoram_w) AM_BASE_MEMBER(mcr_state, videoram) AM_RANGE(0xf800, 0xffff) AM_ROM /* schematics show a 2716 @ 2B here, but nobody used it */ ADDRESS_MAP_END @@ -512,7 +512,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( spyhunt_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_BASE_MEMBER(mcr_state, videoram) AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_BASE(&spyhunt_alpharam) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) @@ -1074,7 +1074,7 @@ GFXDECODE_END *************************************/ /* Core MCR3 system with no sound */ -static MACHINE_CONFIG_START( mcr3_base, driver_device ) +static MACHINE_CONFIG_START( mcr3_base, mcr_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4) diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c index c7d422868e6..7156029e8a0 100644 --- a/src/mame/drivers/mcr68.c +++ b/src/mame/drivers/mcr68.c @@ -58,7 +58,7 @@ #include "audio/mcr.h" #include "audio/williams.h" #include "machine/nvram.h" -#include "includes/mcr.h" +#include "includes/mcr68.h" @@ -315,7 +315,7 @@ static ADDRESS_MAP_START( mcr68_map, ADDRESS_SPACE_PROGRAM, 16 ) ADDRESS_MAP_GLOBAL_MASK(0x1fffff) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_MEMBER(mcr68_state, videoram) AM_RANGE(0x071000, 0x071fff) AM_RAM AM_RANGE(0x080000, 0x080fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x090000, 0x09007f) AM_WRITE(mcr68_paletteram_w) AM_BASE_GENERIC(paletteram) @@ -343,7 +343,7 @@ static ADDRESS_MAP_START( zwackery_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x104000, 0x104007) AM_DEVREADWRITE8("pia0", pia6821_r, pia6821_w, 0xff00) AM_RANGE(0x108000, 0x108007) AM_DEVREADWRITE8("pia1", pia6821_r, pia6821_w, 0x00ff) AM_RANGE(0x10c000, 0x10c007) AM_DEVREADWRITE8("pia2", pia6821_r, pia6821_w, 0x00ff) - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(zwackery_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(zwackery_videoram_w) AM_BASE_MEMBER(mcr68_state, videoram) AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(zwackery_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(zwackery_spriteram_w) AM_BASE_SIZE_GENERIC(spriteram) ADDRESS_MAP_END @@ -364,7 +364,7 @@ static ADDRESS_MAP_START( pigskin_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0a0000, 0x0affff) AM_READ(pigskin_port_2_r) AM_RANGE(0x0c0000, 0x0c007f) AM_WRITE(mcr68_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x0e0000, 0x0effff) AM_WRITE(watchdog_reset16_w) - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_MEMBER(mcr68_state, videoram) AM_RANGE(0x120000, 0x120001) AM_READWRITE(pigskin_protection_r, pigskin_protection_w) AM_RANGE(0x140000, 0x143fff) AM_RAM AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) @@ -390,7 +390,7 @@ static ADDRESS_MAP_START( trisport_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x120000, 0x12007f) AM_WRITE(mcr68_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(mcr68_videoram_w) AM_BASE_MEMBER(mcr68_state, videoram) AM_RANGE(0x180000, 0x18000f) AM_READWRITE(mcr68_6840_upper_r, mcr68_6840_upper_w) AM_RANGE(0x1a0000, 0x1affff) AM_WRITE(archrivl_control_w) AM_RANGE(0x1c0000, 0x1cffff) AM_WRITE(watchdog_reset16_w) @@ -887,6 +887,32 @@ INPUT_PORTS_END * *************************************/ +static const gfx_layout mcr68_bg_layout = +{ + 8,8, + RGN_FRAC(1,2), + 4, + { STEP2(RGN_FRAC(1,2),1), STEP2(RGN_FRAC(0,2),1) }, + { STEP8(0,2) }, + { STEP8(0,16) }, + 16*8 +}; + + +static const gfx_layout mcr68_sprite_layout = +{ + 32,32, + RGN_FRAC(1,4), + 4, + { STEP4(0,1) }, + { STEP2(RGN_FRAC(0,4)+0,4), STEP2(RGN_FRAC(1,4)+0,4), STEP2(RGN_FRAC(2,4)+0,4), STEP2(RGN_FRAC(3,4)+0,4), + STEP2(RGN_FRAC(0,4)+8,4), STEP2(RGN_FRAC(1,4)+8,4), STEP2(RGN_FRAC(2,4)+8,4), STEP2(RGN_FRAC(3,4)+8,4), + STEP2(RGN_FRAC(0,4)+16,4), STEP2(RGN_FRAC(1,4)+16,4), STEP2(RGN_FRAC(2,4)+16,4), STEP2(RGN_FRAC(3,4)+16,4), + STEP2(RGN_FRAC(0,4)+24,4), STEP2(RGN_FRAC(1,4)+24,4), STEP2(RGN_FRAC(2,4)+24,4), STEP2(RGN_FRAC(3,4)+24,4) }, + { STEP32(0,32) }, + 32*32 +}; + static const gfx_layout zwackery_layout = { 16,16, @@ -900,13 +926,13 @@ static const gfx_layout zwackery_layout = }; static GFXDECODE_START( mcr68 ) - GFXDECODE_SCALE( "gfx1", 0, mcr_bg_layout, 0, 4, 2, 2 ) - GFXDECODE_ENTRY( "gfx2", 0, mcr_sprite_layout, 0, 4 ) + GFXDECODE_SCALE( "gfx1", 0, mcr68_bg_layout, 0, 4, 2, 2 ) + GFXDECODE_ENTRY( "gfx2", 0, mcr68_sprite_layout, 0, 4 ) GFXDECODE_END static GFXDECODE_START( zwackery ) GFXDECODE_ENTRY( "gfx1", 0, zwackery_layout, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, mcr_sprite_layout, 0x800, 32 ) + GFXDECODE_ENTRY( "gfx2", 0, mcr68_sprite_layout, 0x800, 32 ) GFXDECODE_ENTRY( "gfx1", 0, zwackery_layout, 0, 16 ) /* yes, an extra copy */ GFXDECODE_END @@ -946,7 +972,7 @@ GFXDECODE_END =================================================================*/ -static MACHINE_CONFIG_START( zwackery, driver_device ) +static MACHINE_CONFIG_START( zwackery, mcr68_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 7652400) /* should be XTAL_16MHz/2 */ @@ -980,7 +1006,7 @@ static MACHINE_CONFIG_START( zwackery, driver_device ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( mcr68, driver_device ) +static MACHINE_CONFIG_START( mcr68, mcr68_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 7723800) diff --git a/src/mame/drivers/meadows.c b/src/mame/drivers/meadows.c index c0b34598aa4..7e74ceb6d69 100644 --- a/src/mame/drivers/meadows.c +++ b/src/mame/drivers/meadows.c @@ -354,7 +354,7 @@ static ADDRESS_MAP_START( meadows_main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x0e00, 0x0eff) AM_RAM AM_RANGE(0x1000, 0x1bff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_MEMBER(meadows_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( bowl3d_main_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -367,12 +367,12 @@ static ADDRESS_MAP_START( bowl3d_main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_BASE_GENERIC(spriteram) AM_RANGE(0x0e00, 0x0eff) AM_RAM AM_RANGE(0x1000, 0x1bff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_MEMBER(meadows_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( minferno_main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1c00, 0x1eff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x1c00, 0x1eff) AM_RAM_WRITE(meadows_videoram_w) AM_BASE_MEMBER(meadows_state, videoram) AM_RANGE(0x1f00, 0x1f00) AM_READ_PORT("JOY1") AM_RANGE(0x1f01, 0x1f01) AM_READ_PORT("JOY2") AM_RANGE(0x1f02, 0x1f02) AM_READ_PORT("BUTTONS") @@ -648,7 +648,7 @@ static const samples_interface bowl3d_samples_interface = * *************************************/ -static MACHINE_CONFIG_START( meadows, driver_device ) +static MACHINE_CONFIG_START( meadows, meadows_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ @@ -687,7 +687,7 @@ static MACHINE_CONFIG_START( meadows, driver_device ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( minferno, driver_device ) +static MACHINE_CONFIG_START( minferno, meadows_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", S2650, MASTER_CLOCK/24) /* 5MHz / 8 / 3 = 208.33 kHz */ @@ -713,7 +713,7 @@ static MACHINE_CONFIG_START( minferno, driver_device ) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bowl3d, driver_device ) +static MACHINE_CONFIG_START( bowl3d, meadows_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ MDRV_CPU_PROGRAM_MAP(bowl3d_main_map) diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c index 550c71b54ae..80de3894b31 100644 --- a/src/mame/drivers/missile.c +++ b/src/mame/drivers/missile.c @@ -332,6 +332,17 @@ Notes: #include "sound/pokey.h" +class missile_state : public driver_device +{ +public: + missile_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + + #define MASTER_CLOCK XTAL_10MHz #define PIXEL_CLOCK (MASTER_CLOCK/2) @@ -454,7 +465,8 @@ DIRECT_UPDATE_HANDLER( missile_direct_handler ) /* RAM? */ if (address < 0x4000) { - direct.explicit_configure(0x0000 | offset, 0x3fff | offset, 0x3fff, direct.space().m_machine.generic.videoram.u8); + missile_state *state = direct.space().m_machine.driver_data(); + direct.explicit_configure(0x0000 | offset, 0x3fff | offset, 0x3fff, state->videoram); return ~0; } @@ -551,6 +563,8 @@ INLINE offs_t get_bit3_addr(offs_t pixaddr) static void write_vram(address_space *space, offs_t address, UINT8 data) { + missile_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; static const UINT8 data_lookup[4] = { 0x00, 0x0f, 0xf0, 0xff }; offs_t vramaddr; UINT8 vramdata; @@ -562,7 +576,7 @@ static void write_vram(address_space *space, offs_t address, UINT8 data) vramaddr = address >> 2; vramdata = data_lookup[data >> 6]; vrammask = writeprom[(address & 7) | 0x10]; - space->machine->generic.videoram.u8[vramaddr] = (space->machine->generic.videoram.u8[vramaddr] & vrammask) | (vramdata & ~vrammask); + videoram[vramaddr] = (videoram[vramaddr] & vrammask) | (vramdata & ~vrammask); /* 3-bit VRAM writes use an extra clock to write the 3rd bit elsewhere */ /* on the schematics, this is the MUSHROOM == 1 case */ @@ -571,7 +585,7 @@ static void write_vram(address_space *space, offs_t address, UINT8 data) vramaddr = get_bit3_addr(address); vramdata = -((data >> 5) & 1); vrammask = writeprom[(address & 7) | 0x18]; - space->machine->generic.videoram.u8[vramaddr] = (space->machine->generic.videoram.u8[vramaddr] & vrammask) | (vramdata & ~vrammask); + videoram[vramaddr] = (videoram[vramaddr] & vrammask) | (vramdata & ~vrammask); /* account for the extra clock cycle */ cpu_adjust_icount(space->cpu, -1); @@ -581,6 +595,8 @@ static void write_vram(address_space *space, offs_t address, UINT8 data) static UINT8 read_vram(address_space *space, offs_t address) { + missile_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; offs_t vramaddr; UINT8 vramdata; UINT8 vrammask; @@ -591,7 +607,7 @@ static UINT8 read_vram(address_space *space, offs_t address) /* this should only be called if MADSEL == 1 */ vramaddr = address >> 2; vrammask = 0x11 << (address & 3); - vramdata = space->machine->generic.videoram.u8[vramaddr] & vrammask; + vramdata = videoram[vramaddr] & vrammask; if ((vramdata & 0xf0) == 0) result &= ~0x80; if ((vramdata & 0x0f) == 0) @@ -603,7 +619,7 @@ static UINT8 read_vram(address_space *space, offs_t address) { vramaddr = get_bit3_addr(address); vrammask = 1 << (address & 7); - vramdata = space->machine->generic.videoram.u8[vramaddr] & vrammask; + vramdata = videoram[vramaddr] & vrammask; if (vramdata == 0) result &= ~0x20; @@ -623,6 +639,8 @@ static UINT8 read_vram(address_space *space, offs_t address) static VIDEO_UPDATE( missile ) { + missile_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int x, y; /* draw the bitmap to the screen, looping over Y */ @@ -631,12 +649,12 @@ static VIDEO_UPDATE( missile ) UINT16 *dst = (UINT16 *)bitmap->base + y * bitmap->rowpixels; int effy = flipscreen ? ((256+24 - y) & 0xff) : y; - UINT8 *src = &screen->machine->generic.videoram.u8[effy * 64]; + UINT8 *src = &videoram[effy * 64]; UINT8 *src3 = NULL; /* compute the base of the 3rd pixel row */ if (effy >= 224) - src3 = &screen->machine->generic.videoram.u8[get_bit3_addr(effy << 8)]; + src3 = &videoram[get_bit3_addr(effy << 8)]; /* loop over X */ for (x = cliprect->min_x; x <= cliprect->max_x; x++) @@ -664,6 +682,8 @@ static VIDEO_UPDATE( missile ) static WRITE8_HANDLER( missile_w ) { + missile_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; /* if we're in MADSEL mode, write to video RAM */ if (get_madsel(space)) { @@ -676,7 +696,7 @@ static WRITE8_HANDLER( missile_w ) /* RAM */ if (offset < 0x4000) - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; /* POKEY */ else if (offset < 0x4800) @@ -720,6 +740,8 @@ static WRITE8_HANDLER( missile_w ) static READ8_HANDLER( missile_r ) { + missile_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; UINT8 result = 0xff; /* if we're in MADSEL mode, read from video RAM */ @@ -731,7 +753,7 @@ static READ8_HANDLER( missile_r ) /* RAM */ if (offset < 0x4000) - result = space->machine->generic.videoram.u8[offset]; + result = videoram[offset]; /* ROM */ else if (offset >= 0x5000) @@ -779,7 +801,7 @@ static READ8_HANDLER( missile_r ) /* complete memory map derived from schematics (implemented above) */ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(missile_r, missile_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0000, 0xffff) AM_READWRITE(missile_r, missile_w) AM_BASE_MEMBER(missile_state, videoram) ADDRESS_MAP_END @@ -975,7 +997,7 @@ static const pokey_interface pokey_config = * *************************************/ -static MACHINE_CONFIG_START( missile, driver_device ) +static MACHINE_CONFIG_START( missile, missile_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8) diff --git a/src/mame/drivers/mole.c b/src/mame/drivers/mole.c index 3b943e47641..0305579ea89 100644 --- a/src/mame/drivers/mole.c +++ b/src/mame/drivers/mole.c @@ -198,7 +198,7 @@ static ADDRESS_MAP_START( mole_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0800, 0x0800) AM_WRITENOP // ??? AM_RANGE(0x0820, 0x0820) AM_WRITENOP // ??? AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(mole_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(mole_videoram_w) AM_RANGE(0x8400, 0x8400) AM_WRITE(mole_tilebank_w) AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE("aysnd", ay8910_data_address_w) AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ??? diff --git a/src/mame/drivers/mustache.c b/src/mame/drivers/mustache.c index 222daeb623a..a6a47e40993 100644 --- a/src/mame/drivers/mustache.c +++ b/src/mame/drivers/mustache.c @@ -56,7 +56,7 @@ static WRITE8_HANDLER(t5182shared_w) static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(mustache_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(mustache_videoram_w) AM_BASE_MEMBER(mustache_state, videoram) AM_RANGE(0xd000, 0xd000) AM_WRITE(t5182_sound_irq_w) AM_RANGE(0xd001, 0xd001) AM_READ(t5182_sharedram_semaphore_snd_r) AM_RANGE(0xd002, 0xd002) AM_WRITE(t5182_sharedram_semaphore_main_acquire_w) @@ -188,7 +188,7 @@ static INTERRUPT_GEN( assert_irq ) */ } -static MACHINE_CONFIG_START( mustache, driver_device ) +static MACHINE_CONFIG_START( mustache, mustache_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, CPU_CLOCK) diff --git a/src/mame/drivers/namcona1.c b/src/mame/drivers/namcona1.c index 16ace557937..97b94dc50de 100644 --- a/src/mame/drivers/namcona1.c +++ b/src/mame/drivers/namcona1.c @@ -751,7 +751,7 @@ static ADDRESS_MAP_START( namcona1_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xefff00, 0xefffff) AM_READWRITE(namcona1_vreg_r, namcona1_vreg_w) AM_BASE(&namcona1_vreg) AM_RANGE(0xf00000, 0xf01fff) AM_READWRITE(namcona1_paletteram_r, namcona1_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(namcona1_gfxram_r, namcona1_gfxram_w) - AM_RANGE(0xff0000, 0xffbfff) AM_READWRITE(namcona1_videoram_r, namcona1_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xff0000, 0xffbfff) AM_READWRITE(namcona1_videoram_r, namcona1_videoram_w) AM_BASE_MEMBER(namcona1_state, videoram) AM_RANGE(0xffd000, 0xffdfff) AM_RAM /* unknown */ AM_RANGE(0xffe000, 0xffefff) AM_RAM AM_BASE(&namcona1_scroll) /* scroll registers */ AM_RANGE(0xfff000, 0xffffff) AM_RAM AM_BASE_GENERIC(spriteram) /* spriteram */ @@ -773,7 +773,7 @@ static ADDRESS_MAP_START( namcona2_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xefff00, 0xefffff) AM_READWRITE(namcona1_vreg_r, namcona1_vreg_w) AM_BASE(&namcona1_vreg) AM_RANGE(0xf00000, 0xf01fff) AM_READWRITE(namcona1_paletteram_r, namcona1_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(namcona1_gfxram_r, namcona1_gfxram_w) - AM_RANGE(0xff0000, 0xffbfff) AM_READWRITE(namcona1_videoram_r, namcona1_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xff0000, 0xffbfff) AM_READWRITE(namcona1_videoram_r, namcona1_videoram_w) AM_BASE_MEMBER(namcona1_state, videoram) AM_RANGE(0xffd000, 0xffdfff) AM_RAM /* unknown */ AM_RANGE(0xffe000, 0xffefff) AM_RAM AM_BASE(&namcona1_scroll) /* scroll registers */ AM_RANGE(0xfff000, 0xffffff) AM_RAM AM_BASE_GENERIC(spriteram) /* spriteram */ @@ -1004,7 +1004,7 @@ static const c140_interface C140_interface_typeA = }; /* cropped at sides */ -static MACHINE_CONFIG_START( namcona1, driver_device ) +static MACHINE_CONFIG_START( namcona1, namcona1_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 50113000/4) MDRV_CPU_PROGRAM_MAP(namcona1_main_map) diff --git a/src/mame/drivers/naughtyb.c b/src/mame/drivers/naughtyb.c index d9c695a3161..dbd674014dc 100644 --- a/src/mame/drivers/naughtyb.c +++ b/src/mame/drivers/naughtyb.c @@ -105,7 +105,8 @@ TODO: #include "emu.h" #include "cpu/z80/z80.h" #include "sound/tms36xx.h" -#include "includes/phoenix.h" +#include "audio/pleiads.h" +#include "includes/naughtyb.h" #define CLOCK_XTAL 12000000 @@ -249,7 +250,7 @@ static WRITE8_HANDLER( popflame_protection_w ) static ADDRESS_MAP_START( naughtyb_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(naughtyb_state, videoram) AM_RANGE(0x8800, 0x8fff) AM_RAM AM_BASE(&naughtyb_videoram2) AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(naughtyb_videoreg_w) AM_RANGE(0x9800, 0x9fff) AM_RAM AM_BASE(&naughtyb_scrollreg) @@ -262,7 +263,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( popflame_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE_MEMBER(naughtyb_state, videoram) AM_RANGE(0x8800, 0x8fff) AM_RAM AM_BASE(&naughtyb_videoram2) AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(popflame_videoreg_w) AM_RANGE(0x9800, 0x9fff) AM_RAM AM_BASE(&naughtyb_scrollreg) @@ -433,7 +434,7 @@ static const tms36xx_interface tms3615_interface = -static MACHINE_CONFIG_START( naughtyb, driver_device ) +static MACHINE_CONFIG_START( naughtyb, naughtyb_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, CLOCK_XTAL / 4) /* 12 MHz clock, divided by 4. CPU is a Z80A */ @@ -469,7 +470,7 @@ MACHINE_CONFIG_END /* Exactly the same but for certain address writes */ -static MACHINE_CONFIG_START( popflame, driver_device ) +static MACHINE_CONFIG_START( popflame, naughtyb_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, CLOCK_XTAL / 4) /* 12 MHz clock, divided by 4. CPU is a Z80A */ diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c index 02d75c14346..8c312fd4f93 100644 --- a/src/mame/drivers/panicr.c +++ b/src/mame/drivers/panicr.c @@ -65,6 +65,17 @@ D.9B [f99cac4b] / #include "deprecat.h" #include "audio/t5182.h" + +class panicr_state : public driver_device +{ +public: + panicr_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + #define MASTER_CLOCK XTAL_16MHz #define SOUND_CLOCK XTAL_14_31818MHz #define TC15_CLOCK XTAL_12MHz @@ -144,8 +155,10 @@ static TILE_GET_INFO( get_bgtile_info ) static TILE_GET_INFO( get_txttile_info ) { - int code=machine->generic.videoram.u8[tile_index*4]; - int attr=machine->generic.videoram.u8[tile_index*4+2]; + panicr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code=videoram[tile_index*4]; + int attr=videoram[tile_index*4+2]; int color = attr & 0x07; tileinfo->group = color; @@ -177,7 +190,7 @@ static ADDRESS_MAP_START( panicr_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x02000, 0x02fff) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0x03000, 0x03fff) AM_RAM AM_RANGE(0x08000, 0x0bfff) AM_RAM AM_REGION("user3", 0) //attribue map ? - AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_BASE_MEMBER(panicr_state, videoram) AM_RANGE(0x0d000, 0x0d000) AM_WRITE(t5182_sound_irq_w) AM_RANGE(0x0d002, 0x0d002) AM_READ(t5182_sharedram_semaphore_snd_r) AM_RANGE(0x0d004, 0x0d004) AM_WRITE(t5182_sharedram_semaphore_main_acquire_w) @@ -361,7 +374,7 @@ static GFXDECODE_START( panicr ) GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x200, 16 ) GFXDECODE_END -static MACHINE_CONFIG_START( panicr, driver_device ) +static MACHINE_CONFIG_START( panicr, panicr_state ) MDRV_CPU_ADD("maincpu", V20,MASTER_CLOCK/2) /* Sony 8623h9 CXQ70116D-8 (V20 compatible) */ MDRV_CPU_PROGRAM_MAP(panicr_map) MDRV_CPU_VBLANK_INT_HACK(panicr_interrupt,2) diff --git a/src/mame/drivers/pcktgal.c b/src/mame/drivers/pcktgal.c index 6a210bebe1f..2161f4286a7 100644 --- a/src/mame/drivers/pcktgal.c +++ b/src/mame/drivers/pcktgal.c @@ -72,7 +72,7 @@ static READ8_DEVICE_HANDLER( pcktgal_adpcm_reset_r ) static ADDRESS_MAP_START( pcktgal_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pcktgal_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pcktgal_videoram_w) AM_BASE_MEMBER(pcktgal_state, videoram) AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") AM_RANGE(0x1801, 0x1801) AM_WRITE(pcktgal_flipscreen_w) @@ -215,7 +215,7 @@ static const msm5205_interface msm5205_config = /***************************************************************************/ -static MACHINE_CONFIG_START( pcktgal, driver_device ) +static MACHINE_CONFIG_START( pcktgal, pcktgal_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 2000000) diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c index 32d3a394045..38a1748117d 100644 --- a/src/mame/drivers/peplus.c +++ b/src/mame/drivers/peplus.c @@ -173,6 +173,17 @@ Stephh's log (2007.11.28) : #include "pe_keno.lh" #include "pe_slots.lh" + +class peplus_state : public driver_device +{ +public: + peplus_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + #define MASTER_CLOCK XTAL_20MHz #define CPU_CLOCK ((MASTER_CLOCK)/2) /* divided by 2 - 7474 */ #define MC6845_CLOCK ((MASTER_CLOCK)/8/3) @@ -357,7 +368,9 @@ static WRITE_LINE_DEVICE_HANDLER(crtc_vsync) static WRITE8_DEVICE_HANDLER( peplus_crtc_display_w ) { - device->machine->generic.videoram.u8[vid_address] = data; + peplus_state *state = device->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[vid_address] = data; palette_ram[vid_address] = io_port[1]; palette_ram2[vid_address] = io_port[3]; @@ -644,9 +657,11 @@ static READ8_DEVICE_HANDLER( peplus_input_bank_a_r ) static TILE_GET_INFO( get_bg_tile_info ) { + peplus_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int pr = palette_ram[tile_index]; int pr2 = palette_ram2[tile_index]; - int vr = machine->generic.videoram.u8[tile_index]; + int vr = videoram[tile_index]; int code = ((pr & 0x0f)*256) | vr; int color = (pr>>4) & 0x0f; @@ -755,7 +770,7 @@ static ADDRESS_MAP_START( peplus_iomap, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w) // Bogus Location for Video RAM - AM_RANGE(0x06001, 0x06400) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x06001, 0x06400) AM_RAM AM_BASE_MEMBER(peplus_state, videoram) // Superboard Data AM_RANGE(0x7000, 0x7fff) AM_READWRITE(peplus_s7000_r, peplus_s7000_w) AM_BASE(&s7000_ram) @@ -1021,7 +1036,7 @@ static MACHINE_RESET( peplus ) * Machine Driver * *************************/ -static MACHINE_CONFIG_START( peplus, driver_device ) +static MACHINE_CONFIG_START( peplus, peplus_state ) // basic machine hardware MDRV_CPU_ADD("maincpu", I80C32, CPU_CLOCK) MDRV_CPU_PROGRAM_MAP(peplus_map) diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c index b2d84124ec2..133fd0007b2 100644 --- a/src/mame/drivers/phoenix.c +++ b/src/mame/drivers/phoenix.c @@ -34,6 +34,7 @@ Pleiads: #include "sound/tms36xx.h" #include "cpu/i8085/i8085.h" #include "sound/ay8910.h" +#include "audio/pleiads.h" #include "includes/phoenix.h" diff --git a/src/mame/drivers/pitnrun.c b/src/mame/drivers/pitnrun.c index 1b630e152fe..22af290541e 100644 --- a/src/mame/drivers/pitnrun.c +++ b/src/mame/drivers/pitnrun.c @@ -94,7 +94,7 @@ static WRITE8_HANDLER(pitnrun_vflip_w) static ADDRESS_MAP_START( pitnrun_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(pitnrun_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(pitnrun_videoram_w) AM_BASE_MEMBER(pitnrun_state, videoram) AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(pitnrun_videoram2_w) AM_BASE(&pitnrun_videoram2) AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") @@ -228,7 +228,7 @@ static GFXDECODE_START( pitnrun ) GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( pitnrun, driver_device ) +static MACHINE_CONFIG_START( pitnrun, pitnrun_state ) MDRV_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6) /* verified on pcb */ MDRV_CPU_PROGRAM_MAP(pitnrun_map) MDRV_CPU_VBLANK_INT("screen", pitnrun_nmi_source) diff --git a/src/mame/drivers/playch10.c b/src/mame/drivers/playch10.c index 08d17385c3b..6eca1acbee5 100644 --- a/src/mame/drivers/playch10.c +++ b/src/mame/drivers/playch10.c @@ -383,7 +383,7 @@ static ADDRESS_MAP_START( bios_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM // 8V AM_RANGE(0x8800, 0x8fff) AM_READWRITE(ram_8w_r, ram_8w_w) AM_BASE(&ram_8w) // 8W - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(playch10_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(playch10_videoram_w) AM_BASE_MEMBER(playch10_state, videoram) AM_RANGE(0xc000, 0xdfff) AM_ROM AM_RANGE(0xe000, 0xffff) AM_READWRITE(pc10_prot_r, pc10_prot_w) ADDRESS_MAP_END @@ -684,7 +684,7 @@ static const nes_interface nes_config = }; -static MACHINE_CONFIG_START( playch10, driver_device ) +static MACHINE_CONFIG_START( playch10, playch10_state ) // basic machine hardware MDRV_CPU_ADD("maincpu", Z80, 8000000/2) // 4 MHz MDRV_CPU_PROGRAM_MAP(bios_map) diff --git a/src/mame/drivers/pokechmp.c b/src/mame/drivers/pokechmp.c index 45cdd6ec558..bf58261d748 100644 --- a/src/mame/drivers/pokechmp.c +++ b/src/mame/drivers/pokechmp.c @@ -107,7 +107,7 @@ static WRITE8_HANDLER( pokechmp_paletteram_w ) static ADDRESS_MAP_START( pokechmp_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pokechmp_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pokechmp_videoram_w) AM_BASE_MEMBER(pokechmp_state, videoram) AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") @@ -222,7 +222,7 @@ static GFXDECODE_START( pokechmp ) GFXDECODE_END -static MACHINE_CONFIG_START( pokechmp, driver_device ) +static MACHINE_CONFIG_START( pokechmp, pokechmp_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 4000000) diff --git a/src/mame/drivers/polyplay.c b/src/mame/drivers/polyplay.c index 425140d49d8..5031104b512 100644 --- a/src/mame/drivers/polyplay.c +++ b/src/mame/drivers/polyplay.c @@ -156,7 +156,7 @@ static ADDRESS_MAP_START( polyplay_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1000, 0x8fff) AM_ROM AM_RANGE(0xe800, 0xebff) AM_ROM AM_REGION("gfx1", 0) AM_RANGE(0xec00, 0xf7ff) AM_RAM_WRITE(polyplay_characterram_w) AM_BASE(&polyplay_characterram) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE_MEMBER(polyplay_state, videoram) ADDRESS_MAP_END @@ -276,7 +276,7 @@ GFXDECODE_END /* the machine driver */ -static MACHINE_CONFIG_START( polyplay, driver_device ) +static MACHINE_CONFIG_START( polyplay, polyplay_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 9830400/4) diff --git a/src/mame/drivers/progolf.c b/src/mame/drivers/progolf.c index 2dbd5385e88..36e138c1004 100644 --- a/src/mame/drivers/progolf.c +++ b/src/mame/drivers/progolf.c @@ -55,6 +55,17 @@ Twenty four 8116 rams. #include "sound/ay8910.h" #include "video/mc6845.h" + +class progolf_state : public driver_device +{ +public: + progolf_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static UINT8 char_pen,char_pen_vreg; static UINT8 *progolf_fg_fb; static UINT8 *progolf_fbram; @@ -66,16 +77,19 @@ static UINT8 sound_cmd; static VIDEO_START( progolf ) { + progolf_state *state = machine->driver_data(); scrollx_hi = 0; scrollx_lo = 0; progolf_fg_fb = auto_alloc_array(machine, UINT8, 0x2000*8); - machine->generic.videoram.u8 = auto_alloc_array(machine, UINT8, 0x1000); + state->videoram = auto_alloc_array(machine, UINT8, 0x1000); } static VIDEO_UPDATE( progolf ) { + progolf_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int count,color,x,y,xi,yi; { @@ -87,7 +101,7 @@ static VIDEO_UPDATE( progolf ) { for(y=0;y<32;y++) { - int tile = screen->machine->generic.videoram.u8[count]; + int tile = videoram[count]; drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[0],tile,1,0,0,(256-x*8)+scroll,y*8); /* wrap-around */ @@ -185,6 +199,8 @@ static READ8_HANDLER( audio_command_r ) static READ8_HANDLER( progolf_videoram_r ) { + progolf_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; UINT8 *gfx_rom = memory_region(space->machine, "gfx1"); if (offset >= 0x0800) @@ -196,7 +212,7 @@ static READ8_HANDLER( progolf_videoram_r ) else if (progolf_gfx_switch == 0x70) return gfx_rom[offset + 0x2000]; else - return space->machine->generic.videoram.u8[offset]; + return videoram[offset]; } else { if (progolf_gfx_switch == 0x10) return gfx_rom[offset]; @@ -205,14 +221,16 @@ static READ8_HANDLER( progolf_videoram_r ) else if (progolf_gfx_switch == 0x30) return gfx_rom[offset + 0x2000]; else - return space->machine->generic.videoram.u8[offset]; + return videoram[offset]; } } static WRITE8_HANDLER( progolf_videoram_w ) { + progolf_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; //if(progolf_gfx_switch & 0x40) - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; } static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 8 ) @@ -425,7 +443,7 @@ static PALETTE_INIT( progolf ) } } -static MACHINE_CONFIG_START( progolf, driver_device ) +static MACHINE_CONFIG_START( progolf, progolf_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 3000000/2) /* guess, 3 Mhz makes the game to behave worse? */ MDRV_CPU_PROGRAM_MAP(main_cpu) diff --git a/src/mame/drivers/pturn.c b/src/mame/drivers/pturn.c index e67a19c18b1..b7c895f3fb8 100644 --- a/src/mame/drivers/pturn.c +++ b/src/mame/drivers/pturn.c @@ -79,6 +79,17 @@ ROMS: All ROM labels say only "PROM" and a number. #include "deprecat.h" #include "sound/ay8910.h" + +class pturn_state : public driver_device +{ +public: + pturn_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static tilemap_t *pturn_fgmap,*pturn_bgmap; static int bgbank=0; static int fgbank=0; @@ -97,8 +108,10 @@ static const UINT8 tile_lookup[0x10]= static TILE_GET_INFO( get_pturn_tile_info ) { + pturn_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int tileno; - tileno = machine->generic.videoram.u8[tile_index]; + tileno = videoram[tile_index]; tileno=tile_lookup[tileno>>4]|(tileno&0xf)|(fgbank<<8); @@ -184,7 +197,9 @@ READ8_HANDLER (pturn_protection2_r) static WRITE8_HANDLER( pturn_videoram_w ) { - space->machine->generic.videoram.u8[offset]=data; + pturn_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset]=data; tilemap_mark_tile_dirty(pturn_fgmap,offset); } @@ -280,7 +295,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xdfe0, 0xdfe0) AM_NOP - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(pturn_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(pturn_videoram_w) AM_BASE_MEMBER(pturn_state, videoram) AM_RANGE(0xe400, 0xe400) AM_WRITE(fgpalette_w) AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_w) @@ -444,7 +459,7 @@ static MACHINE_RESET( pturn ) soundlatch_clear_w(space,0,0); } -static MACHINE_CONFIG_START( pturn, driver_device ) +static MACHINE_CONFIG_START( pturn, pturn_state ) MDRV_CPU_ADD("maincpu", Z80, 12000000/3) MDRV_CPU_PROGRAM_MAP(main_map) MDRV_CPU_VBLANK_INT("screen", pturn_main_intgen) diff --git a/src/mame/drivers/quizo.c b/src/mame/drivers/quizo.c index 8ecba83d494..957a3c94746 100644 --- a/src/mame/drivers/quizo.c +++ b/src/mame/drivers/quizo.c @@ -27,6 +27,17 @@ Xtals 8MHz, 21.47727MHz #include "cpu/z80/z80.h" #include "sound/ay8910.h" + +class quizo_state : public driver_device +{ +public: + quizo_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + #define XTAL1 8000000 #define XTAL2 21477270 @@ -65,13 +76,15 @@ static PALETTE_INIT(quizo) static VIDEO_UPDATE( quizo ) { + quizo_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int x,y; for(y=0;y<200;y++) { for(x=0;x<80;x++) { - int data=screen->machine->generic.videoram.u8[y*80+x]; - int data1=screen->machine->generic.videoram.u8[y*80+x+0x4000]; + int data=videoram[y*80+x]; + int data1=videoram[y*80+x+0x4000]; int pix; pix=(data&1)|(((data>>4)&1)<<1)|((data1&1)<<2)|(((data1>>4)&1)<<3); @@ -95,8 +108,10 @@ static VIDEO_UPDATE( quizo ) static WRITE8_HANDLER(vram_w) { + quizo_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; int bank=(port70&8)?1:0; - space->machine->generic.videoram.u8[offset+bank*0x4000]=data; + videoram[offset+bank*0x4000]=data; } static WRITE8_HANDLER(port70_w) @@ -183,7 +198,7 @@ static INPUT_PORTS_START( quizo ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END -static MACHINE_CONFIG_START( quizo, driver_device ) +static MACHINE_CONFIG_START( quizo, quizo_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80,XTAL1/2) MDRV_CPU_PROGRAM_MAP(memmap) @@ -244,7 +259,9 @@ ROM_END static DRIVER_INIT(quizo) { - machine->generic.videoram.u8=auto_alloc_array(machine, UINT8, 0x4000*2); + quizo_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram=auto_alloc_array(machine, UINT8, 0x4000*2); } GAME( 1985, quizo, 0, quizo, quizo, quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", 0 ) diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c index 27db93287e2..9f938729d37 100644 --- a/src/mame/drivers/raiden.c +++ b/src/mame/drivers/raiden.c @@ -54,7 +54,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") AM_RANGE(0x0b000, 0x0b007) AM_WRITE(raiden_control_w) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_MEMBER(raiden_state, videoram) AM_RANGE(0x0d000, 0x0d00d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0x0d060, 0x0d067) AM_WRITEONLY AM_BASE(&raiden_scroll_ram) AM_RANGE(0xa0000, 0xfffff) AM_ROM @@ -77,7 +77,7 @@ static ADDRESS_MAP_START( alt_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1") AM_BASE(&raiden_shared_ram) AM_RANGE(0x0a000, 0x0a00d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_MEMBER(raiden_state, videoram) AM_RANGE(0x0e000, 0x0e001) AM_READ_PORT("P1_P2") AM_RANGE(0x0e000, 0x0e007) AM_WRITE(raidena_control_w) AM_RANGE(0x0e002, 0x0e003) AM_READ_PORT("DSW") @@ -95,7 +95,7 @@ static ADDRESS_MAP_START( raidenu_main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") AM_RANGE(0x0b000, 0x0b007) AM_WRITE(raidena_control_w) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_BASE_MEMBER(raiden_state, videoram) AM_RANGE(0x0d000, 0x0d00d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0xa0000, 0xfffff) AM_ROM ADDRESS_MAP_END @@ -249,7 +249,7 @@ static VIDEO_EOF( raiden ) buffer_spriteram16_w(space,0,0,0xffff); /* Could be a memory location instead */ } -static MACHINE_CONFIG_START( raiden, driver_device ) +static MACHINE_CONFIG_START( raiden, raiden_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V30,XTAL_20MHz/2) /* NEC V30 CPU, 20MHz verified on pcb */ diff --git a/src/mame/drivers/raiden2.c b/src/mame/drivers/raiden2.c index 8aff7858fb1..557bf83456c 100644 --- a/src/mame/drivers/raiden2.c +++ b/src/mame/drivers/raiden2.c @@ -280,7 +280,9 @@ static WRITE16_HANDLER(raiden2_foreground_w) static WRITE16_HANDLER(raiden2_text_w) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + raiden2_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(text_layer, offset); } @@ -320,7 +322,9 @@ static TILE_GET_INFO( get_fore_tile_info ) static TILE_GET_INFO( get_text_tile_info ) { - int tile = machine->generic.videoram.u16[tile_index]; + raiden2_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tile = videoram[tile_index]; int color = (tile>>12)&0xf; tile &= 0xfff; @@ -845,7 +849,7 @@ static ADDRESS_MAP_START( raiden2_mem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(&back_data) AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(&fore_data) AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(&mid_data) - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_MEMBER(raiden2_state, videoram) AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ AM_RANGE(0x10000, 0x1efff) AM_RAM_WRITE(w1x) AM_BASE(&w1ram) @@ -953,7 +957,7 @@ static ADDRESS_MAP_START( nzerotea_mem, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(&back_data) AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(&fore_data) AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(&mid_data) - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_MEMBER(raiden2_state, videoram) AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ AM_RANGE(0x10000, 0x1efff) AM_RAM_WRITE(w1x) AM_BASE(&w1ram) @@ -1184,7 +1188,7 @@ GFXDECODE_END /* MACHINE DRIVERS */ -static MACHINE_CONFIG_START( raiden2, driver_device ) +static MACHINE_CONFIG_START( raiden2, raiden2_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V30,XTAL_32MHz/2) /* verified on pcb */ @@ -2162,7 +2166,7 @@ static ADDRESS_MAP_START( rdx_v33_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_BASE(&back_data) AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_BASE(&fore_data) AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_BASE(&mid_data) - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_BASE_MEMBER(raiden2_state, videoram) AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ AM_RANGE(0x10000, 0x1efff) AM_RAM AM_RANGE(0x1f000, 0x1ffff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) @@ -2273,7 +2277,7 @@ static MACHINE_RESET( rdx_v33 ) common_reset(); } -static MACHINE_CONFIG_START( rdx_v33, driver_device ) +static MACHINE_CONFIG_START( rdx_v33, raiden2_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V33, 32000000/2 ) // ? diff --git a/src/mame/drivers/renegade.c b/src/mame/drivers/renegade.c index 2b27519f4db..f885efa50f9 100644 --- a/src/mame/drivers/renegade.c +++ b/src/mame/drivers/renegade.c @@ -668,7 +668,7 @@ static ADDRESS_MAP_START( renegade_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x17ff) AM_RAM AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(renegade_videoram2_w) AM_BASE(&renegade_videoram2) AM_RANGE(0x2000, 0x27ff) AM_RAM AM_BASE_GENERIC(spriteram) - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(renegade_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(renegade_videoram_w) AM_BASE_MEMBER(renegade_state, videoram) AM_RANGE(0x3000, 0x30ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3100, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(renegade_scroll0_w) /* Player#1 controls, P1,P2 start */ @@ -918,7 +918,7 @@ static MACHINE_RESET( renegade ) } -static MACHINE_CONFIG_START( renegade, driver_device ) +static MACHINE_CONFIG_START( renegade, renegade_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 12000000/8) /* 1.5 MHz (measured) */ diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c index 6727af99f5d..e16b799c992 100644 --- a/src/mame/drivers/royalmah.c +++ b/src/mame/drivers/royalmah.c @@ -98,6 +98,17 @@ Stephh's notes (based on the games Z80 code and some tests) : #include "machine/nvram.h" +class royalmah_state : public driver_device +{ +public: + royalmah_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + + static UINT8 input_port_select, dsw_select, rombank; static int palette_base; static UINT8 *janptr96_nvram; @@ -186,6 +197,8 @@ static WRITE8_HANDLER( mjderngr_palbank_w ) static VIDEO_UPDATE( royalmah ) { + royalmah_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; offs_t offs; @@ -193,8 +206,8 @@ static VIDEO_UPDATE( royalmah ) { int i; - UINT8 data1 = screen->machine->generic.videoram.u8[offs + 0x0000]; - UINT8 data2 = screen->machine->generic.videoram.u8[offs + 0x4000]; + UINT8 data1 = videoram[offs + 0x0000]; + UINT8 data2 = videoram[offs + 0x4000]; UINT8 y = 255 - (offs >> 6); UINT8 x = 255 - (offs << 2); @@ -424,7 +437,7 @@ static ADDRESS_MAP_START( royalmah_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE( royalmah_rom_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) // banked ROMs not present in royalmah - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END @@ -434,7 +447,7 @@ static ADDRESS_MAP_START( mjapinky_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x7800, 0x7fff ) AM_RAM AM_RANGE( 0x8000, 0x8000 ) AM_READ( mjapinky_dsw_r ) AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END @@ -566,7 +579,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( janho_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE( royalmah_rom_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("share1") AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END @@ -688,7 +701,7 @@ static ADDRESS_MAP_START( jansou_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(jansou_sound_w) AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( jansou_sub_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -711,7 +724,7 @@ static ADDRESS_MAP_START( janptr96_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("bank2") // banked nvram AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END static WRITE8_HANDLER( janptr96_dswsel_w ) @@ -809,9 +822,11 @@ static READ8_HANDLER( mjifb_rom_io_r ) static WRITE8_HANDLER( mjifb_rom_io_w ) { + royalmah_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; if (mjifb_rom_enable) { - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; return; } @@ -836,13 +851,15 @@ static WRITE8_HANDLER( mjifb_rom_io_w ) static WRITE8_HANDLER( mjifb_videoram_w ) { - space->machine->generic.videoram.u8[offset + 0x4000] = data; + royalmah_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset + 0x4000] = data; } static ADDRESS_MAP_START( mjifb_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_BASE_MEMBER(royalmah_state, videoram) AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) // AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work ADDRESS_MAP_END @@ -916,9 +933,11 @@ static READ8_HANDLER( mjdejavu_rom_io_r ) static WRITE8_HANDLER( mjdejavu_rom_io_w ) { + royalmah_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; if (mjifb_rom_enable) { - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; return; } @@ -941,7 +960,7 @@ static WRITE8_HANDLER( mjdejavu_rom_io_w ) static ADDRESS_MAP_START( mjdejavu_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_BASE_MEMBER(royalmah_state, videoram) AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) ADDRESS_MAP_END @@ -983,7 +1002,7 @@ static ADDRESS_MAP_START( mjtensin_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE( mjtensin_6ff3_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( mjtensin_iomap, ADDRESS_SPACE_IO, 8 ) @@ -1053,7 +1072,7 @@ static ADDRESS_MAP_START( cafetime_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ( cafetime_7fe4_r ) AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_GENERIC(videoram) + AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE_MEMBER(royalmah_state, videoram) ADDRESS_MAP_END @@ -1116,9 +1135,11 @@ static READ8_HANDLER( mjvegasa_rom_io_r ) static WRITE8_HANDLER( mjvegasa_rom_io_w ) { + royalmah_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; if ((rombank & 0x70) != 0x70) { - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; return; } @@ -1174,7 +1195,7 @@ static ADDRESS_MAP_START( mjvegasa_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE( 0x00000, 0x05fff ) AM_ROM AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE_GENERIC(videoram) + AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE_MEMBER(royalmah_state, videoram) AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD( "aysnd", ay8910_r ) AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE( "aysnd", ay8910_data_address_w ) @@ -3094,7 +3115,7 @@ static const ay8910_interface ay8910_config = DEVCB_HANDLER(royalmah_player_2_port_r) }; -static MACHINE_CONFIG_START( royalmah, driver_device ) +static MACHINE_CONFIG_START( royalmah, royalmah_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ diff --git a/src/mame/drivers/rpunch.c b/src/mame/drivers/rpunch.c index 8628c55c192..53bb2511e50 100644 --- a/src/mame/drivers/rpunch.c +++ b/src/mame/drivers/rpunch.c @@ -230,7 +230,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_BASE(&rpunch_bitmapram) AM_SIZE(&rpunch_bitmapram_size) AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_GENERIC(spriteram) - AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_BASE_MEMBER(rpunch_state, videoram) AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w) AM_RANGE(0x0c0008, 0x0c0009) AM_WRITE(rpunch_crtc_data_w) @@ -464,7 +464,7 @@ static const ym2151_interface ym2151_config = * *************************************/ -static MACHINE_CONFIG_START( rpunch, driver_device ) +static MACHINE_CONFIG_START( rpunch, rpunch_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2) diff --git a/src/mame/drivers/sbowling.c b/src/mame/drivers/sbowling.c index f878680bce5..2e9bf01c166 100644 --- a/src/mame/drivers/sbowling.c +++ b/src/mame/drivers/sbowling.c @@ -177,7 +177,7 @@ static WRITE8_HANDLER (system_w) { int offs; for (offs = 0;offs < 0x4000; offs++) - sbw_videoram_w(space, offs, space->machine->generic.videoram.u8[offs]); + sbw_videoram_w(space, offs, state->videoram[offs]); } state->sbw_system = data; } diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c index bc30859b4c8..dded0b561ad 100644 --- a/src/mame/drivers/sbrkout.c +++ b/src/mame/drivers/sbrkout.c @@ -37,6 +37,17 @@ #include "sbrkout.lh" +class sbrkout_state : public driver_device +{ +public: + sbrkout_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + + /************************************* * @@ -85,7 +96,9 @@ static TIMER_CALLBACK( pot_trigger_callback ); static MACHINE_START( sbrkout ) { - memory_set_bankptr(machine, "bank1", &machine->generic.videoram.u8[0x380]); + sbrkout_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + memory_set_bankptr(machine, "bank1", &videoram[0x380]); scanline_timer = timer_alloc(machine, scanline_callback, NULL); pot_timer = timer_alloc(machine, pot_trigger_callback, NULL); @@ -110,6 +123,8 @@ static MACHINE_RESET( sbrkout ) static TIMER_CALLBACK( scanline_callback ) { + sbrkout_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int scanline = param; /* force a partial update before anything happens */ @@ -120,7 +135,7 @@ static TIMER_CALLBACK( scanline_callback ) cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE); /* update the DAC state */ - dac_data_w(machine->device("dac"), (machine->generic.videoram.u8[0x380 + 0x11] & (scanline >> 2)) ? 255 : 0); + dac_data_w(machine->device("dac"), (videoram[0x380 + 0x11] & (scanline >> 2)) ? 255 : 0); /* on the VBLANK, read the pot and schedule an interrupt time for it */ if (scanline == machine->primary_screen->visible_area().max_y + 1) @@ -279,7 +294,9 @@ static READ8_HANDLER( sync2_r ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = (machine->generic.videoram.u8[tile_index] & 0x80) ? machine->generic.videoram.u8[tile_index] : 0; + sbrkout_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = (videoram[tile_index] & 0x80) ? videoram[tile_index] : 0; SET_TILE_INFO(0, code, 0, 0); } @@ -292,7 +309,9 @@ static VIDEO_START( sbrkout ) static WRITE8_HANDLER( sbrkout_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + sbrkout_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -306,15 +325,17 @@ static WRITE8_HANDLER( sbrkout_videoram_w ) static VIDEO_UPDATE( sbrkout ) { + sbrkout_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int ball; tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); for (ball = 2; ball >= 0; ball--) { - int code = ((screen->machine->generic.videoram.u8[0x380 + 0x18 + ball * 2 + 1] & 0x80) >> 7); - int sx = 31 * 8 - screen->machine->generic.videoram.u8[0x380 + 0x10 + ball * 2]; - int sy = 30 * 8 - screen->machine->generic.videoram.u8[0x380 + 0x18 + ball * 2]; + int code = ((videoram[0x380 + 0x18 + ball * 2 + 1] & 0x80) >> 7); + int sx = 31 * 8 - videoram[0x380 + 0x10 + ball * 2]; + int sy = 30 * 8 - videoram[0x380 + 0x18 + ball * 2]; drawgfx_transpen(bitmap, cliprect, screen->machine->gfx[1], code, 0, 0, 0, sx, sy, 0); } @@ -333,7 +354,7 @@ static VIDEO_UPDATE( sbrkout ) static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1") - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_BASE_MEMBER(sbrkout_state, videoram) AM_RANGE(0x0800, 0x083f) AM_READ(switches_r) AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN") AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START") @@ -475,7 +496,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( sbrkout, driver_device ) +static MACHINE_CONFIG_START( sbrkout, sbrkout_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502,MAIN_CLOCK/16) /* 375 KHz? Should be 750KHz? */ diff --git a/src/mame/drivers/segag80r.c b/src/mame/drivers/segag80r.c index 4e50b1a04da..08afa941749 100644 --- a/src/mame/drivers/segag80r.c +++ b/src/mame/drivers/segag80r.c @@ -347,7 +347,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0800, 0x7fff) AM_ROM /* PROM board ROM area */ AM_RANGE(0x8000, 0xbfff) AM_ROM /* PROM board ROM area */ AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_BASE(&mainram) - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_BASE_MEMBER(segag80r_state, videoram) ADDRESS_MAP_END @@ -829,7 +829,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( g80r_base, driver_device ) +static MACHINE_CONFIG_START( g80r_base, segag80r_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, VIDEO_CLOCK/4) diff --git a/src/mame/drivers/shangkid.c b/src/mame/drivers/shangkid.c index 3f2ac0df4da..0ad125cd6d8 100644 --- a/src/mame/drivers/shangkid.c +++ b/src/mame/drivers/shangkid.c @@ -247,7 +247,7 @@ static ADDRESS_MAP_START( chinhero_main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_BASE(&shangkid_videoreg) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(shangkid_videoram_w) AM_BASE_GENERIC(videoram) AM_SHARE("share1") + AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(shangkid_videoram_w) AM_BASE_MEMBER(shangkid_state, videoram) AM_SHARE("share1") AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE_GENERIC(spriteram) AM_SHARE("share3") ADDRESS_MAP_END @@ -268,7 +268,7 @@ static ADDRESS_MAP_START( shangkid_main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_BASE(&shangkid_videoreg) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(shangkid_videoram_w) AM_BASE_GENERIC(videoram) AM_SHARE("share1") + AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(shangkid_videoram_w) AM_BASE_MEMBER(shangkid_state, videoram) AM_SHARE("share1") AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE_GENERIC(spriteram) AM_SHARE("share3") ADDRESS_MAP_END @@ -363,7 +363,7 @@ static const ay8910_interface shangkid_ay8910_interface = }; -static MACHINE_CONFIG_START( chinhero, driver_device ) +static MACHINE_CONFIG_START( chinhero, shangkid_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, XTAL_18_432MHz/6) /* verified on pcb */ @@ -436,7 +436,7 @@ MACHINE_CONFIG_END static ADDRESS_MAP_START( dynamski_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_GENERIC(videoram) /* tilemap */ + AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE_MEMBER(shangkid_state, videoram) /* tilemap */ AM_RANGE(0xc800, 0xcbff) AM_RAM AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_RANGE(0xd800, 0xdbff) AM_RAM @@ -455,7 +455,7 @@ static ADDRESS_MAP_START( dynamski_portmap, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_data_address_w) ADDRESS_MAP_END -static MACHINE_CONFIG_START( dynamski, driver_device ) +static MACHINE_CONFIG_START( dynamski, shangkid_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 3000000) /* ? */ diff --git a/src/mame/drivers/sprint4.c b/src/mame/drivers/sprint4.c index c2403ce03e0..d8e3ae8cd6a 100644 --- a/src/mame/drivers/sprint4.c +++ b/src/mame/drivers/sprint4.c @@ -135,7 +135,9 @@ static MACHINE_RESET( sprint4 ) static READ8_HANDLER( sprint4_wram_r ) { - return space->machine->generic.videoram.u8[0x380 + offset]; + sprint4_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + return videoram[0x380 + offset]; } @@ -161,7 +163,9 @@ static READ8_HANDLER( sprint4_options_r ) static WRITE8_HANDLER( sprint4_wram_w ) { - space->machine->generic.videoram.u8[0x380 + offset] = data; + sprint4_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[0x380 + offset] = data; } @@ -234,7 +238,7 @@ static ADDRESS_MAP_START( sprint4_cpu_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(sprint4_wram_r, sprint4_wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(sprint4_video_ram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(sprint4_video_ram_w) AM_BASE_MEMBER(sprint4_state, videoram) AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(sprint4_analog_r) AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(sprint4_coin_r) @@ -394,7 +398,7 @@ static GFXDECODE_START( sprint4 ) GFXDECODE_END -static MACHINE_CONFIG_START( sprint4, driver_device ) +static MACHINE_CONFIG_START( sprint4, sprint4_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, PIXEL_CLOCK / 8) diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c index 5d5f821adba..2d305ef7e45 100644 --- a/src/mame/drivers/statriv2.c +++ b/src/mame/drivers/statriv2.c @@ -75,6 +75,17 @@ quaquiz2 - no inputs, needs NVRAM #include "video/tms9927.h" #include "machine/nvram.h" + +class statriv2_state : public driver_device +{ +public: + statriv2_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + #define MASTER_CLOCK 12440000 @@ -98,16 +109,20 @@ static UINT8 last_coin; static TILE_GET_INFO( horizontal_tile_info ) { - int code = machine->generic.videoram.u8[0x400+tile_index]; - int attr = machine->generic.videoram.u8[tile_index] & 0x3f; + statriv2_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[0x400+tile_index]; + int attr = videoram[tile_index] & 0x3f; SET_TILE_INFO(0, code, attr, 0); } static TILE_GET_INFO( vertical_tile_info ) { - int code = machine->generic.videoram.u8[0x400+tile_index]; - int attr = machine->generic.videoram.u8[tile_index] & 0x3f; + statriv2_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[0x400+tile_index]; + int attr = videoram[tile_index] & 0x3f; SET_TILE_INFO(0, ((code & 0x7f) << 1) | ((code & 0x80) >> 7), attr, 0); } @@ -151,7 +166,9 @@ static VIDEO_START( vertical ) static WRITE8_HANDLER( statriv2_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + statriv2_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(statriv2_tilemap, offset & 0x3ff); } @@ -273,7 +290,7 @@ static ADDRESS_MAP_START( statriv2_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM AM_RANGE(0x4800, 0x48ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(statriv2_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(statriv2_videoram_w) AM_BASE_MEMBER(statriv2_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( statriv2_io_map, ADDRESS_SPACE_IO, 8 ) @@ -568,7 +585,7 @@ static const tms9927_interface tms9927_intf = * *************************************/ -static MACHINE_CONFIG_START( statriv2, driver_device ) +static MACHINE_CONFIG_START( statriv2, statriv2_state ) /* basic machine hardware */ /* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */ MDRV_CPU_ADD("maincpu", I8085A, MASTER_CLOCK) diff --git a/src/mame/drivers/strnskil.c b/src/mame/drivers/strnskil.c index e1e3565545b..85efdbc495c 100644 --- a/src/mame/drivers/strnskil.c +++ b/src/mame/drivers/strnskil.c @@ -82,7 +82,7 @@ static ADDRESS_MAP_START( strnskil_map1, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(strnskil_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(strnskil_videoram_w) AM_BASE_MEMBER(strnskil_state, videoram) AM_RANGE(0xd800, 0xd800) AM_READ(strnskil_d800_r) AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1") @@ -315,7 +315,7 @@ static GFXDECODE_START( strnskil ) GFXDECODE_END -static MACHINE_CONFIG_START( strnskil, driver_device ) +static MACHINE_CONFIG_START( strnskil, strnskil_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80,8000000/2) /* 4.000MHz */ diff --git a/src/mame/drivers/subs.c b/src/mame/drivers/subs.c index 33530dbd634..a454729d354 100644 --- a/src/mame/drivers/subs.c +++ b/src/mame/drivers/subs.c @@ -65,7 +65,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x006e, 0x006f) AM_WRITE(subs_invert2_w) AM_RANGE(0x0090, 0x009f) AM_BASE_GENERIC(spriteram) AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0bff) AM_RAM AM_BASE_MEMBER(subs_state, videoram) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END @@ -175,7 +175,7 @@ GFXDECODE_END * *************************************/ -static MACHINE_CONFIG_START( subs, driver_device ) +static MACHINE_CONFIG_START( subs, subs_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502,12096000/16) /* clock input is the "4H" signal */ diff --git a/src/mame/drivers/suprloco.c b/src/mame/drivers/suprloco.c index 17891feb8b0..ee0b1da1220 100644 --- a/src/mame/drivers/suprloco.c +++ b/src/mame/drivers/suprloco.c @@ -13,7 +13,6 @@ TODO: #include "emu.h" #include "deprecat.h" -#include "video/system1.h" #include "cpu/z80/z80.h" #include "machine/segacrpt.h" #include "sound/sn76496.h" diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c index c424e656b9a..5f3a2b5ecd3 100644 --- a/src/mame/drivers/system1.c +++ b/src/mame/drivers/system1.c @@ -188,7 +188,6 @@ Notes: ******************************************************************************/ #include "emu.h" -#include "video/system1.h" #include "cpu/z80/z80.h" #include "cpu/mcs51/mcs51.h" #include "machine/z80pio.h" @@ -197,6 +196,7 @@ Notes: #include "machine/segacrp2.h" #include "machine/mc8123.h" #include "sound/sn76496.h" +#include "includes/system1.h" #define MASTER_CLOCK XTAL_20MHz diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c index 48e850a39ea..67d50eed1fd 100644 --- a/src/mame/drivers/taito_f3.c +++ b/src/mame/drivers/taito_f3.c @@ -158,7 +158,7 @@ static ADDRESS_MAP_START( f3_map, ADDRESS_SPACE_PROGRAM, 32 ) AM_RANGE(0x4a0000, 0x4a001f) AM_READWRITE(f3_control_r, f3_control_w) AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x610000, 0x61bfff) AM_RAM_WRITE(f3_pf_data_w) AM_BASE(&f3_pf_data) - AM_RANGE(0x61c000, 0x61dfff) AM_RAM_WRITE(f3_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x61c000, 0x61dfff) AM_RAM_WRITE(f3_videoram_w) AM_BASE_MEMBER(taito_f3_state, videoram) AM_RANGE(0x61e000, 0x61ffff) AM_RAM_WRITE(f3_vram_w) AM_BASE(&f3_vram) AM_RANGE(0x620000, 0x62ffff) AM_RAM_WRITE(f3_lineram_w) AM_BASE(&f3_line_ram) AM_RANGE(0x630000, 0x63ffff) AM_RAM_WRITE(f3_pivot_w) AM_BASE(&f3_pivot_ram) @@ -389,7 +389,7 @@ static MACHINE_START(f3) state_save_register_global_array(machine, coin_word); } -static MACHINE_CONFIG_START( f3, driver_device ) +static MACHINE_CONFIG_START( f3, taito_f3_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) @@ -485,7 +485,7 @@ static GFXDECODE_START( bubsympb ) GFXDECODE_ENTRY( NULL, 0x000000, pivotlayout, 0, 64 ) /* Dynamically modified */ GFXDECODE_END -static MACHINE_CONFIG_START( bubsympb, driver_device ) +static MACHINE_CONFIG_START( bubsympb, taito_f3_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68EC020, XTAL_16MHz) MDRV_CPU_PROGRAM_MAP(f3_map) diff --git a/src/mame/drivers/tankbatt.c b/src/mame/drivers/tankbatt.c index 9d71e32265f..a26228ad1bd 100644 --- a/src/mame/drivers/tankbatt.c +++ b/src/mame/drivers/tankbatt.c @@ -162,7 +162,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x000f) AM_RAM AM_BASE(&tankbatt_bulletsram) AM_SIZE(&tankbatt_bulletsram_size) AM_RANGE(0x0010, 0x01ff) AM_RAM AM_RANGE(0x0200, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(tankbatt_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(tankbatt_videoram_w) AM_BASE_MEMBER(tankbatt_state, videoram) AM_RANGE(0x0c00, 0x0c07) AM_READ(tankbatt_in0_r) AM_RANGE(0x0c00, 0x0c01) AM_WRITE(tankbatt_led_w) AM_RANGE(0x0c02, 0x0c02) AM_WRITE(tankbatt_coin_counter_w) @@ -289,7 +289,7 @@ static const samples_interface tankbatt_samples_interface = -static MACHINE_CONFIG_START( tankbatt, driver_device ) +static MACHINE_CONFIG_START( tankbatt, tankbatt_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 1000000) /* 1 MHz ???? */ diff --git a/src/mame/drivers/tatsumi.c b/src/mame/drivers/tatsumi.c index f5d3af16745..91298ea3a0b 100644 --- a/src/mame/drivers/tatsumi.c +++ b/src/mame/drivers/tatsumi.c @@ -197,7 +197,7 @@ static ADDRESS_MAP_START( apache3_v30_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x00000, 0x03fff) AM_RAM AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x08000, 0x08fff) AM_RAM_WRITE(apache3_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x0c000, 0x0dfff) AM_RAM_WRITE(roundup5_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0c000, 0x0dfff) AM_RAM_WRITE(roundup5_text_w) AM_BASE_MEMBER(tatsumi_state, videoram) AM_RANGE(0x0e800, 0x0e803) AM_WRITENOP // CRT AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("DSW") AM_RANGE(0x0f000, 0x0f001) AM_WRITENOP // todo @@ -238,7 +238,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( roundup5_v30_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x00000, 0x07fff) AM_RAM - AM_RANGE(0x08000, 0x0bfff) AM_RAM_WRITE(roundup5_text_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x08000, 0x0bfff) AM_RAM_WRITE(roundup5_text_w) AM_BASE_MEMBER(tatsumi_state, videoram) AM_RANGE(0x0c000, 0x0c003) AM_WRITE(roundup5_crt_w) AM_RANGE(0x0d000, 0x0d001) AM_READ_PORT("DSW") AM_RANGE(0x0d400, 0x0d40f) AM_WRITEONLY AM_BASE(&roundup5_unknown0) @@ -856,7 +856,7 @@ static MACHINE_RESET( apache3 ) } -static MACHINE_CONFIG_START( apache3, driver_device ) +static MACHINE_CONFIG_START( apache3, tatsumi_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V30, CLOCK_1 / 2) @@ -902,7 +902,7 @@ static MACHINE_CONFIG_START( apache3, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( roundup5, driver_device ) +static MACHINE_CONFIG_START( roundup5, tatsumi_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", V30, CLOCK_1 / 2) @@ -944,7 +944,7 @@ static MACHINE_CONFIG_START( roundup5, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cyclwarr, driver_device ) +static MACHINE_CONFIG_START( cyclwarr, tatsumi_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, CLOCK_2 / 4) @@ -987,7 +987,7 @@ static MACHINE_CONFIG_START( cyclwarr, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( bigfight, driver_device ) +static MACHINE_CONFIG_START( bigfight, tatsumi_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, CLOCK_2 / 4) diff --git a/src/mame/drivers/terracre.c b/src/mame/drivers/terracre.c index 64615150eea..17d83e702b9 100644 --- a/src/mame/drivers/terracre.c +++ b/src/mame/drivers/terracre.c @@ -211,7 +211,7 @@ static ADDRESS_MAP_START( terracre_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w) AM_RANGE(0x026004, 0x026005) AM_WRITE(amazon_scrolly_w) AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_BASE_MEMBER(terracre_state, videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( amazon_map, ADDRESS_SPACE_PROGRAM, 16 ) @@ -227,7 +227,7 @@ static ADDRESS_MAP_START( amazon_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w) AM_RANGE(0x046004, 0x046005) AM_WRITE(amazon_scrolly_w) AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_BASE_MEMBER(terracre_state, videoram) AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w) ADDRESS_MAP_END @@ -529,7 +529,7 @@ static GFXDECODE_START( terracre ) GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 1*16+16*16, 256 ) GFXDECODE_END -static MACHINE_CONFIG_START( amazon, driver_device ) +static MACHINE_CONFIG_START( amazon, terracre_state ) MDRV_CPU_ADD("maincpu", M68000, 8000000 ) MDRV_CPU_PROGRAM_MAP(amazon_map) MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) @@ -568,7 +568,7 @@ static MACHINE_CONFIG_START( amazon, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ym3526, driver_device ) +static MACHINE_CONFIG_START( ym3526, terracre_state ) MDRV_CPU_ADD("maincpu", M68000, 8000000 ) MDRV_CPU_PROGRAM_MAP(terracre_map) MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) @@ -605,7 +605,7 @@ static MACHINE_CONFIG_START( ym3526, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( ym2203, driver_device ) +static MACHINE_CONFIG_START( ym2203, terracre_state ) MDRV_CPU_ADD("maincpu", M68000, 8000000) /* 8 MHz?? */ MDRV_CPU_PROGRAM_MAP(terracre_map) MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c index 4425d88d841..901e4274c90 100644 --- a/src/mame/drivers/tigeroad.c +++ b/src/mame/drivers/tigeroad.c @@ -174,7 +174,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") /* AM_RANGE(0xfe4002, 0xfe4003) AM_WRITE(tigeroad_soundcmd_w) added by init_tigeroad() */ AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW") - AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_BASE_MEMBER(tigeroad_state, videoram) AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(tigeroad_scroll_w) AM_RANGE(0xfe800e, 0xfe800f) AM_WRITEONLY /* fe800e = watchdog or IRQ acknowledge */ AM_RANGE(0xff8200, 0xff867f) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) @@ -514,7 +514,7 @@ static const msm5205_interface msm5205_config = }; -static MACHINE_CONFIG_START( tigeroad, driver_device ) +static MACHINE_CONFIG_START( tigeroad, tigeroad_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* verified on pcb */ diff --git a/src/mame/drivers/timelimt.c b/src/mame/drivers/timelimt.c index e31a15214f9..644cbd7b60a 100644 --- a/src/mame/drivers/timelimt.c +++ b/src/mame/drivers/timelimt.c @@ -45,7 +45,7 @@ static WRITE8_HANDLER( sound_reset_w ) static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM /* rom */ AM_RANGE(0x8000, 0x87ff) AM_RAM /* ram */ - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(timelimt_videoram_w) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) /* video ram */ + AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(timelimt_videoram_w) AM_BASE_MEMBER(timelimt_state, videoram) /* video ram */ AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(timelimt_bg_videoram_w) AM_BASE(&timelimt_bg_videoram) AM_SIZE(&timelimt_bg_videoram_size)/* background ram */ AM_RANGE(0x9800, 0x98ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* sprite ram */ AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS") @@ -228,7 +228,7 @@ static INTERRUPT_GEN( timelimt_irq ) { /***************************************************************************/ -static MACHINE_CONFIG_START( timelimt, driver_device ) +static MACHINE_CONFIG_START( timelimt, timelimt_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 5000000) /* 5.000 MHz */ diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c index 0d272263e74..a8caf689e7e 100644 --- a/src/mame/drivers/toki.c +++ b/src/mame/drivers/toki.c @@ -97,7 +97,7 @@ static ADDRESS_MAP_START( toki_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE(&toki_background1_videoram16) AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE(&toki_background2_videoram16) - AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, videoram) AM_RANGE(0x080000, 0x08000d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_BASE(&toki_scrollram16) AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW") @@ -112,7 +112,7 @@ static ADDRESS_MAP_START( tokib_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE(&toki_background1_videoram16) AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE(&toki_background2_videoram16) - AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, videoram) AM_RANGE(0x071000, 0x071001) AM_WRITENOP /* sprite related? seems another scroll register */ /* gets written the same value as 75000a (bg2 scrollx) */ AM_RANGE(0x071804, 0x071807) AM_WRITENOP /* sprite related, always 01be0100 */ @@ -413,7 +413,7 @@ static const msm5205_interface msm5205_config = }; -static MACHINE_CONFIG_START( toki, driver_device ) /* KOYO 20.000MHz near the cpu */ +static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu */ /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000,XTAL_20MHz /2) /* verified on pcb */ @@ -445,7 +445,7 @@ static MACHINE_CONFIG_START( toki, driver_device ) /* KOYO 20.000MHz near the cp MACHINE_CONFIG_END -static MACHINE_CONFIG_START( tokib, driver_device ) +static MACHINE_CONFIG_START( tokib, toki_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 12000000) /* 10MHz causes bad slowdowns with monkey machine rd1 */ diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c index d0ef968508e..83ec423c157 100644 --- a/src/mame/drivers/truco.c +++ b/src/mame/drivers/truco.c @@ -28,7 +28,7 @@ static UINT8 *battery_ram; static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x17ff) AM_RAM /* general purpose ram */ - AM_RANGE(0x1800, 0x7bff) AM_RAM AM_BASE_GENERIC(videoram) /* video ram */ + AM_RANGE(0x1800, 0x7bff) AM_RAM AM_BASE_MEMBER(truco_state, videoram) /* video ram */ AM_RANGE(0x7c00, 0x7fff) AM_RAM AM_BASE(&battery_ram) /* battery backed ram */ AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P1") AM_WRITENOP /* controls (and irq ack?) */ AM_RANGE(0x8001, 0x8001) AM_NOP /* unknown */ @@ -132,7 +132,7 @@ static INTERRUPT_GEN( truco_interrupt ) } -static MACHINE_CONFIG_START( truco, driver_device ) +static MACHINE_CONFIG_START( truco, truco_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6809, 750000) /* ?? guess */ diff --git a/src/mame/drivers/tryout.c b/src/mame/drivers/tryout.c index 14f193ccb04..cc69d37f575 100644 --- a/src/mame/drivers/tryout.c +++ b/src/mame/drivers/tryout.c @@ -54,7 +54,7 @@ static WRITE8_HANDLER( tryout_bankswitch_w ) static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(tryout_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(tryout_videoram_w) AM_BASE_MEMBER(tryout_state, videoram) AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") AM_RANGE(0x4000, 0xbfff) AM_ROM AM_RANGE(0xc800, 0xc87f) AM_RAM AM_BASE_GENERIC(spriteram) @@ -185,7 +185,7 @@ static GFXDECODE_START( tryout ) GFXDECODE_ENTRY( NULL, 0, vramlayout, 0, 4 ) GFXDECODE_END -static MACHINE_CONFIG_START( tryout, driver_device ) +static MACHINE_CONFIG_START( tryout, tryout_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, 2000000) /* ? */ MDRV_CPU_PROGRAM_MAP(main_cpu) diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c index 50d6bab2fa1..de525b6053d 100644 --- a/src/mame/drivers/twin16.c +++ b/src/mame/drivers/twin16.c @@ -84,12 +84,16 @@ int twin16_spriteram_process_enable( void ) static READ16_HANDLER( videoram16_r ) { - return space->machine->generic.videoram.u16[offset]; + twin16_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + return videoram[offset]; } static WRITE16_HANDLER( videoram16_w ) { - COMBINE_DATA(space->machine->generic.videoram.u16 + offset); + twin16_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(videoram + offset); } static READ16_HANDLER( extra_rom_r ) @@ -255,7 +259,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r) AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram) // AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(twin16_state, videoram) AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("share1") AM_BASE_SIZE_GENERIC(spriteram) ADDRESS_MAP_END @@ -287,7 +291,7 @@ static ADDRESS_MAP_START( fround_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r) AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(fround_gfx_bank_w) AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_GENERIC(videoram) + AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(twin16_state, videoram) AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0x500000, 0x6fffff) AM_READ(twin16_gfx_rom1_r) ADDRESS_MAP_END @@ -715,7 +719,7 @@ static MACHINE_START( twin16 ) state_save_register_global_array(machine, cuebrickj_nvram); } -static MACHINE_CONFIG_START( twin16, driver_device ) +static MACHINE_CONFIG_START( twin16, twin16_state ) // basic machine hardware MDRV_CPU_ADD("maincpu", M68000, XTAL_18_432MHz/2) MDRV_CPU_PROGRAM_MAP(main_map) @@ -773,7 +777,7 @@ static MACHINE_CONFIG_DERIVED( devilw, twin16 ) MDRV_QUANTUM_TIME(HZ(60000)) // watchdog reset otherwise MACHINE_CONFIG_END -static MACHINE_CONFIG_START( fround, driver_device ) +static MACHINE_CONFIG_START( fround, twin16_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M68000, 10000000) MDRV_CPU_PROGRAM_MAP(fround_map) diff --git a/src/mame/drivers/ultratnk.c b/src/mame/drivers/ultratnk.c index 515d49512a6..2f70b93db55 100644 --- a/src/mame/drivers/ultratnk.c +++ b/src/mame/drivers/ultratnk.c @@ -70,7 +70,9 @@ static MACHINE_RESET( ultratnk ) static READ8_HANDLER( ultratnk_wram_r ) { - return space->machine->generic.videoram.u8[0x380 + offset]; + ultratnk_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + return videoram[0x380 + offset]; } @@ -96,7 +98,9 @@ static READ8_HANDLER( ultratnk_options_r ) static WRITE8_HANDLER( ultratnk_wram_w ) { - space->machine->generic.videoram.u8[0x380 + offset] = data; + ultratnk_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[0x380 + offset] = data; } @@ -152,7 +156,7 @@ static ADDRESS_MAP_START( ultratnk_cpu_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x700) AM_RAM AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(ultratnk_wram_r, ultratnk_wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(ultratnk_video_ram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(ultratnk_video_ram_w) AM_BASE_MEMBER(ultratnk_state, videoram) AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0") AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1") @@ -287,7 +291,7 @@ static GFXDECODE_START( ultratnk ) GFXDECODE_END -static MACHINE_CONFIG_START( ultratnk, driver_device ) +static MACHINE_CONFIG_START( ultratnk, ultratnk_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", M6502, PIXEL_CLOCK / 8) diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c index 1a629bb9dba..410494f946f 100644 --- a/src/mame/drivers/vigilant.c +++ b/src/mame/drivers/vigilant.c @@ -66,7 +66,7 @@ static ADDRESS_MAP_START( vigilant_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc020, 0xc0df) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vigilant_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_MEMBER(vigilant_state, videoram) AM_RANGE(0xe000, 0xefff) AM_RAM ADDRESS_MAP_END @@ -87,7 +87,7 @@ static ADDRESS_MAP_START( kikcubic_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(vigilant_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) + AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_MEMBER(vigilant_state, videoram) AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -513,7 +513,7 @@ static const ym2203_interface ym2203_config = }; -static MACHINE_CONFIG_START( vigilant, driver_device ) +static MACHINE_CONFIG_START( vigilant, vigilant_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 3579645) /* 3.579645 MHz */ @@ -557,7 +557,7 @@ static MACHINE_CONFIG_START( vigilant, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( buccanrs, driver_device ) +static MACHINE_CONFIG_START( buccanrs, vigilant_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 5688800) /* 5.688800 MHz */ @@ -617,7 +617,7 @@ static MACHINE_CONFIG_START( buccanrs, driver_device ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( kikcubic, driver_device ) +static MACHINE_CONFIG_START( kikcubic, vigilant_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 3579645) /* 3.579645 MHz */ diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c index e67c4523abe..b3a13dde3b5 100644 --- a/src/mame/drivers/vpoker.c +++ b/src/mame/drivers/vpoker.c @@ -82,13 +82,27 @@ mm74c920J/mmc6551j-9 x2 #include "cpu/m6809/m6809.h" #include "machine/6840ptm.h" + +class vpoker_state : public driver_device +{ +public: + vpoker_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static VIDEO_START( vpoker ) { - machine->generic.videoram.u8 = auto_alloc_array(machine, UINT8, 0x200); + vpoker_state *state = machine->driver_data(); + state->videoram = auto_alloc_array(machine, UINT8, 0x200); } static VIDEO_UPDATE( vpoker ) { + vpoker_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; const gfx_element *gfx = screen->machine->gfx[0]; int count = 0x0000; @@ -98,7 +112,7 @@ static VIDEO_UPDATE( vpoker ) { for (x=0;x<0x20;x++) { - int tile = screen->machine->generic.videoram.u8[count]; + int tile = videoram[count]; //int colour = tile>>12; drawgfx_opaque(bitmap,cliprect,gfx,tile,0,0,0,x*16,y*16); @@ -119,6 +133,8 @@ static READ8_HANDLER( blitter_r ) static WRITE8_HANDLER( blitter_w ) { + vpoker_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; static UINT8 blit_ram[8]; blit_ram[offset] = data; @@ -129,7 +145,7 @@ static WRITE8_HANDLER( blitter_w ) blit_offs = (blit_ram[1] & 0x01)<<8|(blit_ram[2] & 0xff); - space->machine->generic.videoram.u8[blit_offs] = blit_ram[0]; + videoram[blit_offs] = blit_ram[0]; // printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3],blit_ram[4],blit_ram[5],blit_ram[6],blit_ram[7]); } } @@ -394,7 +410,7 @@ static const ptm6840_interface ptm_intf = DEVCB_LINE(ptm_irq) }; -static MACHINE_CONFIG_START( vpoker, driver_device ) +static MACHINE_CONFIG_START( vpoker, vpoker_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu",M6809,XTAL_4MHz) diff --git a/src/mame/drivers/wallc.c b/src/mame/drivers/wallc.c index a43c19568d0..593ccc0d550 100644 --- a/src/mame/drivers/wallc.c +++ b/src/mame/drivers/wallc.c @@ -52,6 +52,17 @@ Thanks to HIGHWAYMAN for providing info on how to get to these epoxies #include "video/resnet.h" #include "sound/ay8910.h" + +class wallc_state : public driver_device +{ +public: + wallc_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static tilemap_t *bg_tilemap; /*************************************************************************** @@ -117,13 +128,17 @@ static PALETTE_INIT( wallc ) static WRITE8_HANDLER( wallc_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + wallc_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } static TILE_GET_INFO( get_bg_tile_info ) { - SET_TILE_INFO(0, machine->generic.videoram.u8[tile_index] + 0x100, 1, 0); + wallc_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + SET_TILE_INFO(0, videoram[tile_index] + 0x100, 1, 0); } static VIDEO_START( wallc ) @@ -144,7 +159,7 @@ static WRITE8_HANDLER( wallc_coin_counter_w ) static ADDRESS_MAP_START( wallc_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(wallc_videoram_w) AM_MIRROR(0xc00) AM_BASE_GENERIC(videoram) /* 2114, 2114 */ + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(wallc_videoram_w) AM_MIRROR(0xc00) AM_BASE_MEMBER(wallc_state, videoram) /* 2114, 2114 */ AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */ AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1") @@ -275,7 +290,7 @@ static DRIVER_INIT( wallca ) -static MACHINE_CONFIG_START( wallc, driver_device ) +static MACHINE_CONFIG_START( wallc, wallc_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 12288000 / 4) /* 3.072 MHz ? */ MDRV_CPU_PROGRAM_MAP(wallc_map) diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c index d50e08f88b3..85ecdfb8e5a 100644 --- a/src/mame/drivers/wink.c +++ b/src/mame/drivers/wink.c @@ -16,6 +16,17 @@ #include "sound/ay8910.h" #include "machine/nvram.h" + +class wink_state : public driver_device +{ +public: + wink_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + static tilemap_t *bg_tilemap; static UINT8 sound_flag; static UINT8 tile_bank = 0; @@ -23,7 +34,9 @@ static UINT8 tile_bank = 0; static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; + wink_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; code |= 0x200 * tile_bank; // the 2 parts of the screen use different tile banking @@ -48,7 +61,9 @@ static VIDEO_UPDATE( wink ) static WRITE8_HANDLER( bgram_w ) { - space->machine->generic.videoram.u8[offset] = data; + wink_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -90,7 +105,7 @@ static ADDRESS_MAP_START( wink_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_BASE_MEMBER(wink_state, videoram) ADDRESS_MAP_END @@ -312,7 +327,7 @@ static MACHINE_RESET( wink ) sound_flag = 0; } -static MACHINE_CONFIG_START( wink, driver_device ) +static MACHINE_CONFIG_START( wink, wink_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 12000000 / 4) MDRV_CPU_PROGRAM_MAP(wink_map) diff --git a/src/mame/drivers/wiz.c b/src/mame/drivers/wiz.c index 6977665be5d..c072b231bfa 100644 --- a/src/mame/drivers/wiz.c +++ b/src/mame/drivers/wiz.c @@ -222,7 +222,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0xd800, 0xd83f) AM_BASE(&wiz_attributesram2) AM_RANGE(0xd840, 0xd85f) AM_BASE_GENERIC(spriteram2) AM_SIZE_GENERIC(spriteram) AM_RANGE(0xd000, 0xd85f) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_BASE_GENERIC(videoram) AM_SIZE_GENERIC(videoram) /* Fallthrough */ + AM_RANGE(0xe000, 0xe3ff) AM_BASE_MEMBER(wiz_state, videoram) /* Fallthrough */ AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_RANGE(0xe800, 0xe83f) AM_BASE(&wiz_attributesram) AM_RANGE(0xe840, 0xe85f) AM_BASE_GENERIC(spriteram) @@ -679,7 +679,7 @@ static MACHINE_RESET( wiz ) dsc0 = dsc1 = 1; } -static MACHINE_CONFIG_START( wiz, driver_device ) +static MACHINE_CONFIG_START( wiz, wiz_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz ??? */ diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c index 55885e94d8a..7f05eaa8f3b 100644 --- a/src/mame/drivers/xorworld.c +++ b/src/mame/drivers/xorworld.c @@ -77,7 +77,7 @@ static ADDRESS_MAP_START( xorworld_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xa00008, 0xa00009) AM_DEVWRITE("eeprom", eeprom_chip_select_w) AM_RANGE(0xa0000a, 0xa0000b) AM_DEVWRITE("eeprom", eeprom_serial_clock_w) AM_RANGE(0xa0000c, 0xa0000d) AM_DEVWRITE("eeprom", eeprom_data_w) - AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_BASE_MEMBER(xorworld_state, videoram) AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_BASE_GENERIC(spriteram) AM_RANGE(0xffc880, 0xffc881) AM_WRITENOP AM_RANGE(0xffc882, 0xffc883) AM_WRITENOP @@ -173,7 +173,7 @@ static INTERRUPT_GEN( xorworld_interrupt ) } -static MACHINE_CONFIG_START( xorworld, driver_device ) +static MACHINE_CONFIG_START( xorworld, xorworld_state ) // basic machine hardware MDRV_CPU_ADD("maincpu", M68000, 10000000) // 10 MHz MDRV_CPU_PROGRAM_MAP(xorworld_map) diff --git a/src/mame/drivers/zac2650.c b/src/mame/drivers/zac2650.c index 5155f7a27b9..80de36052aa 100644 --- a/src/mame/drivers/zac2650.c +++ b/src/mame/drivers/zac2650.c @@ -19,7 +19,7 @@ static WRITE8_HANDLER( tinvader_sound_w ); static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tinvader_videoram_w) AM_BASE_GENERIC(videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tinvader_videoram_w) AM_BASE_MEMBER(zac2650_state, videoram) AM_RANGE(0x1c00, 0x1cff) AM_RAM AM_RANGE(0x1d00, 0x1dff) AM_RAM AM_RANGE(0x1e80, 0x1e80) AM_READWRITE(tinvader_port_0_r, tinvader_sound_w) @@ -231,7 +231,7 @@ static GFXDECODE_START( tinvader ) GFXDECODE_SCALE( NULL, 0x1F00, s2636_character, 0, 2, 8, 6 ) /* dynamic */ GFXDECODE_END -static MACHINE_CONFIG_START( tinvader, driver_device ) +static MACHINE_CONFIG_START( tinvader, zac2650_state ) /* basic machine hardware */ MDRV_CPU_ADD("maincpu", S2650, 3800000/4) diff --git a/src/mame/includes/ampoker2.h b/src/mame/includes/ampoker2.h index cbb2618fb4f..e7b68e65c3d 100644 --- a/src/mame/includes/ampoker2.h +++ b/src/mame/includes/ampoker2.h @@ -1,3 +1,13 @@ +class ampoker2_state : public driver_device +{ +public: + ampoker2_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/ampoker2.c -----------*/ WRITE8_HANDLER( ampoker2_videoram_w ); diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h index a5c7de1c5fc..8c4c407aca5 100644 --- a/src/mame/includes/astrocde.h +++ b/src/mame/includes/astrocde.h @@ -11,6 +11,16 @@ #define AC_STARS (0x04) +class astrocde_state : public driver_device +{ +public: + astrocde_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/astrocde.c -----------*/ extern UINT8 astrocade_video_config; diff --git a/src/mame/includes/atetris.h b/src/mame/includes/atetris.h index 63d9c127393..1c35f10cdb5 100644 --- a/src/mame/includes/atetris.h +++ b/src/mame/includes/atetris.h @@ -12,6 +12,7 @@ public: m_nvram(*this, "nvram") { } required_shared_ptr m_nvram; + UINT8 *videoram; }; /*----------- defined in video/atetris.c -----------*/ diff --git a/src/mame/includes/beezer.h b/src/mame/includes/beezer.h index b06a62c1733..fccc304ec2f 100644 --- a/src/mame/includes/beezer.h +++ b/src/mame/includes/beezer.h @@ -1,3 +1,13 @@ +class beezer_state : public driver_device +{ +public: + beezer_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in machine/beezer.c -----------*/ extern const via6522_interface b_via_0_interface; diff --git a/src/mame/includes/centiped.h b/src/mame/includes/centiped.h index 61942aa536a..225f3e3390e 100644 --- a/src/mame/includes/centiped.h +++ b/src/mame/includes/centiped.h @@ -4,6 +4,16 @@ *************************************************************************/ +class centiped_state : public driver_device +{ +public: + centiped_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/centiped.c -----------*/ extern UINT8 centiped_flipscreen, *bullsdrt_tiles_bankram; diff --git a/src/mame/includes/cloak.h b/src/mame/includes/cloak.h index 31780077d5a..9c9db7ce57a 100644 --- a/src/mame/includes/cloak.h +++ b/src/mame/includes/cloak.h @@ -4,6 +4,16 @@ *************************************************************************/ +class cloak_state : public driver_device +{ +public: + cloak_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/cloak.c -----------*/ WRITE8_HANDLER( cloak_videoram_w ); diff --git a/src/mame/includes/darkmist.h b/src/mame/includes/darkmist.h index fffecb1c394..af22e0d333b 100644 --- a/src/mame/includes/darkmist.h +++ b/src/mame/includes/darkmist.h @@ -1,3 +1,13 @@ +class darkmist_state : public driver_device +{ +public: + darkmist_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in drivers/darkmist.c -----------*/ extern int darkmist_hw; diff --git a/src/mame/includes/deadang.h b/src/mame/includes/deadang.h index e21d3d81da6..1a0c71b64a2 100644 --- a/src/mame/includes/deadang.h +++ b/src/mame/includes/deadang.h @@ -1,3 +1,13 @@ +class deadang_state : public driver_device +{ +public: + deadang_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/deadang.c -----------*/ extern UINT16 *deadang_video_data, *deadang_scroll_ram; diff --git a/src/mame/includes/dynduke.h b/src/mame/includes/dynduke.h index f3c0b711868..3102b6a701f 100644 --- a/src/mame/includes/dynduke.h +++ b/src/mame/includes/dynduke.h @@ -1,3 +1,13 @@ +class dynduke_state : public driver_device +{ +public: + dynduke_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/dynduke.c -----------*/ extern UINT16 *dynduke_back_data, *dynduke_fore_data, *dynduke_scroll_ram; diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index 2f46a5997d1..8e878d4c0f6 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -28,6 +28,16 @@ #define GAL_AUDIO "discrete" +class galaxian_state : public driver_device +{ +public: + galaxian_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/galaxian.c -----------*/ extern UINT8 galaxian_frogger_adjust; diff --git a/src/mame/includes/gatron.h b/src/mame/includes/gatron.h index 0e67a3f7e1b..89b82715f3f 100644 --- a/src/mame/includes/gatron.h +++ b/src/mame/includes/gatron.h @@ -1,3 +1,13 @@ +class gatron_state : public driver_device +{ +public: + gatron_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/gatron.c -----------*/ WRITE8_HANDLER( gat_videoram_w ); diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h index fce5c9cb967..597895e7962 100644 --- a/src/mame/includes/gottlieb.h +++ b/src/mame/includes/gottlieb.h @@ -13,6 +13,16 @@ #define GOTTLIEB_VIDEO_VBLANK 240 +class gottlieb_state : public driver_device +{ +public: + gottlieb_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in audio/gottlieb.c -----------*/ WRITE8_HANDLER( gottlieb_sh_w ); diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h index f9ae8cb985b..8976d59bcdf 100644 --- a/src/mame/includes/gridlee.h +++ b/src/mame/includes/gridlee.h @@ -9,6 +9,16 @@ #include "devlegcy.h" +class gridlee_state : public driver_device +{ +public: + gridlee_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in audio/gridlee.c -----------*/ WRITE8_HANDLER( gridlee_sound_w ); diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h index 7bd56f293e1..cb26b7dee0a 100644 --- a/src/mame/includes/gsword.h +++ b/src/mame/includes/gsword.h @@ -1,3 +1,13 @@ +class gsword_state : public driver_device +{ +public: + gsword_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/gsword.c -----------*/ extern size_t gsword_spritexy_size; diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h index d01e7054a75..f674fd92d78 100644 --- a/src/mame/includes/irobot.h +++ b/src/mame/includes/irobot.h @@ -12,6 +12,7 @@ public: m_nvram(*this, "nvram") { } required_shared_ptr m_nvram; + UINT8 *videoram; }; /*----------- defined in machine/irobot.c -----------*/ diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h index 6e8fbd7b257..bac1e794749 100644 --- a/src/mame/includes/itech32.h +++ b/src/mame/includes/itech32.h @@ -12,6 +12,16 @@ #define TMS_CLOCK XTAL_40MHz /* TMS320C31 clocks on drivedge */ +class itech32_state : public driver_device +{ +public: + itech32_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in drivers/itech32.c -----------*/ void itech32_update_interrupts(running_machine *machine, int vint, int xint, int qint); diff --git a/src/mame/includes/magmax.h b/src/mame/includes/magmax.h index 77587aa87fd..3e91c502b77 100644 --- a/src/mame/includes/magmax.h +++ b/src/mame/includes/magmax.h @@ -1,3 +1,13 @@ +class magmax_state : public driver_device +{ +public: + magmax_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/magmax.c -----------*/ extern UINT16 *magmax_vreg; diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h index f03a865d34f..48bb8fe6f06 100644 --- a/src/mame/includes/mcr.h +++ b/src/mame/includes/mcr.h @@ -8,26 +8,28 @@ #include "machine/z80ctc.h" #include "machine/z80pio.h" #include "machine/z80sio.h" -#include "machine/6821pia.h" /* constants */ #define MAIN_OSC_MCR_I XTAL_19_968MHz +class mcr_state : public driver_device +{ +public: + mcr_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in drivers/mcr.c -----------*/ WRITE8_DEVICE_HANDLER( mcr_ipu_sio_transmit ); -/*----------- defined in drivers/mcr68.c -----------*/ - -READ8_DEVICE_HANDLER( zwackery_port_2_r ); - - /*----------- defined in machine/mcr.c -----------*/ -extern attotime mcr68_timing_factor; - extern const z80_daisy_config mcr_daisy_chain[]; extern const z80_daisy_config mcr_ipu_daisy_chain[]; extern const z80ctc_interface mcr_ctc_intf; @@ -43,31 +45,17 @@ extern UINT32 mcr_cpu_board; extern UINT32 mcr_sprite_board; extern UINT32 mcr_ssio_board; -extern const pia6821_interface zwackery_pia0_intf; -extern const pia6821_interface zwackery_pia1_intf; -extern const pia6821_interface zwackery_pia2_intf; - MACHINE_START( mcr ); MACHINE_RESET( mcr ); MACHINE_START( nflfoot ); -MACHINE_START( mcr68 ); -MACHINE_RESET( mcr68 ); -MACHINE_START( zwackery ); -MACHINE_RESET( zwackery ); INTERRUPT_GEN( mcr_interrupt ); INTERRUPT_GEN( mcr_ipu_interrupt ); -INTERRUPT_GEN( mcr68_interrupt ); WRITE8_HANDLER( mcr_control_port_w ); WRITE8_HANDLER( mcrmono_control_port_w ); WRITE8_HANDLER( mcr_scroll_value_w ); -WRITE16_HANDLER( mcr68_6840_upper_w ); -WRITE16_HANDLER( mcr68_6840_lower_w ); -READ16_HANDLER( mcr68_6840_upper_r ); -READ16_HANDLER( mcr68_6840_lower_r ); - WRITE8_HANDLER( mcr_ipu_laserdisk_w ); READ8_HANDLER( mcr_ipu_watchdog_r ); WRITE8_HANDLER( mcr_ipu_watchdog_w ); @@ -111,22 +99,3 @@ PALETTE_INIT( spyhunt ); VIDEO_UPDATE( mcr3 ); VIDEO_UPDATE( spyhunt ); - - -/*----------- defined in video/mcr68.c -----------*/ - -extern UINT8 mcr68_sprite_clip; -extern INT8 mcr68_sprite_xoffset; - -WRITE16_HANDLER( mcr68_paletteram_w ); -WRITE16_HANDLER( mcr68_videoram_w ); - -VIDEO_START( mcr68 ); -VIDEO_UPDATE( mcr68 ); - -WRITE16_HANDLER( zwackery_paletteram_w ); -WRITE16_HANDLER( zwackery_videoram_w ); -WRITE16_HANDLER( zwackery_spriteram_w ); - -VIDEO_START( zwackery ); -VIDEO_UPDATE( zwackery ); diff --git a/src/mame/includes/mcr68.h b/src/mame/includes/mcr68.h new file mode 100644 index 00000000000..8616d92a042 --- /dev/null +++ b/src/mame/includes/mcr68.h @@ -0,0 +1,56 @@ +#include "machine/6821pia.h" + +class mcr68_state : public driver_device +{ +public: + mcr68_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + +/*----------- defined in drivers/mcr68.c -----------*/ + +READ8_DEVICE_HANDLER( zwackery_port_2_r ); + + +/*----------- defined in machine/mcr68.c -----------*/ + +extern attotime mcr68_timing_factor; + +extern const pia6821_interface zwackery_pia0_intf; +extern const pia6821_interface zwackery_pia1_intf; +extern const pia6821_interface zwackery_pia2_intf; + + +MACHINE_START( mcr68 ); +MACHINE_RESET( mcr68 ); +MACHINE_START( zwackery ); +MACHINE_RESET( zwackery ); + +WRITE16_HANDLER( mcr68_6840_upper_w ); +WRITE16_HANDLER( mcr68_6840_lower_w ); +READ16_HANDLER( mcr68_6840_upper_r ); +READ16_HANDLER( mcr68_6840_lower_r ); + +INTERRUPT_GEN( mcr68_interrupt ); + + +/*----------- defined in video/mcr68.c -----------*/ + +extern UINT8 mcr68_sprite_clip; +extern INT8 mcr68_sprite_xoffset; + +WRITE16_HANDLER( mcr68_paletteram_w ); +WRITE16_HANDLER( mcr68_videoram_w ); + +VIDEO_START( mcr68 ); +VIDEO_UPDATE( mcr68 ); + +WRITE16_HANDLER( zwackery_paletteram_w ); +WRITE16_HANDLER( zwackery_videoram_w ); +WRITE16_HANDLER( zwackery_spriteram_w ); + +VIDEO_START( zwackery ); +VIDEO_UPDATE( zwackery ); diff --git a/src/mame/includes/meadows.h b/src/mame/includes/meadows.h index e294c043e49..a63fc5daae9 100644 --- a/src/mame/includes/meadows.h +++ b/src/mame/includes/meadows.h @@ -6,6 +6,16 @@ #include "sound/samples.h" +class meadows_state : public driver_device +{ +public: + meadows_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in audio/meadows.c -----------*/ SAMPLES_START( meadows_sh_start ); diff --git a/src/mame/includes/mustache.h b/src/mame/includes/mustache.h index 6d04f1161c1..70c1c38cf8f 100644 --- a/src/mame/includes/mustache.h +++ b/src/mame/includes/mustache.h @@ -1,3 +1,13 @@ +class mustache_state : public driver_device +{ +public: + mustache_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/mustache.c -----------*/ WRITE8_HANDLER( mustache_videoram_w ); diff --git a/src/mame/includes/namcona1.h b/src/mame/includes/namcona1.h index 83d2ab22d41..33ee61124e8 100644 --- a/src/mame/includes/namcona1.h +++ b/src/mame/includes/namcona1.h @@ -1,3 +1,13 @@ +class namcona1_state : public driver_device +{ +public: + namcona1_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/namcona1.c -----------*/ enum diff --git a/src/mame/includes/namcos21.h b/src/mame/includes/namcos21.h index d3bf9e00d42..cd6485564db 100644 --- a/src/mame/includes/namcos21.h +++ b/src/mame/includes/namcos21.h @@ -5,6 +5,16 @@ #define NAMCOS21_POLY_FRAME_WIDTH 496 #define NAMCOS21_POLY_FRAME_HEIGHT 480 +class namcos21_state : public driver_device +{ +public: + namcos21_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in drivers/namcos21.c -----------*/ extern void namcos21_kickstart(running_machine *, int); diff --git a/src/mame/includes/naughtyb.h b/src/mame/includes/naughtyb.h new file mode 100644 index 00000000000..8332c270afb --- /dev/null +++ b/src/mame/includes/naughtyb.h @@ -0,0 +1,22 @@ +class naughtyb_state : public driver_device +{ +public: + naughtyb_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + +/*----------- defined in video/naughtyb.c -----------*/ + +extern UINT8 *naughtyb_videoram2; +extern UINT8 *naughtyb_scrollreg; +extern int naughtyb_cocktail; + +WRITE8_HANDLER( naughtyb_videoreg_w ); +WRITE8_HANDLER( popflame_videoreg_w ); + +VIDEO_START( naughtyb ); +PALETTE_INIT( naughtyb ); +VIDEO_UPDATE( naughtyb ); diff --git a/src/mame/includes/pcktgal.h b/src/mame/includes/pcktgal.h index 2c0c788f6ff..957b4aed68d 100644 --- a/src/mame/includes/pcktgal.h +++ b/src/mame/includes/pcktgal.h @@ -1,3 +1,13 @@ +class pcktgal_state : public driver_device +{ +public: + pcktgal_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/pcktgal.c -----------*/ WRITE8_HANDLER( pcktgal_videoram_w ); diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h index c9be40c698c..9050990607f 100644 --- a/src/mame/includes/phoenix.h +++ b/src/mame/includes/phoenix.h @@ -27,29 +27,6 @@ WRITE8_DEVICE_HANDLER( phoenix_sound_control_b_w ); DECLARE_LEGACY_SOUND_DEVICE(PHOENIX, phoenix_sound); -/*----------- defined in audio/pleiads.c -----------*/ - -WRITE8_HANDLER( pleiads_sound_control_a_w ); -WRITE8_HANDLER( pleiads_sound_control_b_w ); -WRITE8_HANDLER( pleiads_sound_control_c_w ); - -DECLARE_LEGACY_SOUND_DEVICE(PLEIADS, pleiads_sound); -DECLARE_LEGACY_SOUND_DEVICE(NAUGHTYB, naughtyb_sound); -DECLARE_LEGACY_SOUND_DEVICE(POPFLAME, popflame_sound); - -/*----------- defined in video/naughtyb.c -----------*/ - -extern UINT8 *naughtyb_videoram2; -extern UINT8 *naughtyb_scrollreg; -extern int naughtyb_cocktail; - -WRITE8_HANDLER( naughtyb_videoreg_w ); -WRITE8_HANDLER( popflame_videoreg_w ); - -VIDEO_START( naughtyb ); -PALETTE_INIT( naughtyb ); -VIDEO_UPDATE( naughtyb ); - /*----------- defined in video/phoenix.c -----------*/ diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h index a5a7c14c667..db58711e76d 100644 --- a/src/mame/includes/pitnrun.h +++ b/src/mame/includes/pitnrun.h @@ -1,3 +1,13 @@ +class pitnrun_state : public driver_device +{ +public: + pitnrun_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in machine/pitnrun.c -----------*/ WRITE8_HANDLER (pitnrun_68705_portA_w); diff --git a/src/mame/includes/playch10.h b/src/mame/includes/playch10.h index fde6b271a29..1b9dfb16ce7 100644 --- a/src/mame/includes/playch10.h +++ b/src/mame/includes/playch10.h @@ -1,3 +1,13 @@ +class playch10_state : public driver_device +{ +public: + playch10_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in machine/playch10.c -----------*/ MACHINE_RESET( pc10 ); diff --git a/src/mame/includes/pokechmp.h b/src/mame/includes/pokechmp.h index 6b81b615fb5..42f6bbfb3a0 100644 --- a/src/mame/includes/pokechmp.h +++ b/src/mame/includes/pokechmp.h @@ -1,3 +1,13 @@ +class pokechmp_state : public driver_device +{ +public: + pokechmp_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/pokechmp.c -----------*/ WRITE8_HANDLER( pokechmp_videoram_w ); diff --git a/src/mame/includes/polyplay.h b/src/mame/includes/polyplay.h index 898bd29ff8a..05fd847051b 100644 --- a/src/mame/includes/polyplay.h +++ b/src/mame/includes/polyplay.h @@ -1,5 +1,15 @@ #include "sound/samples.h" +class polyplay_state : public driver_device +{ +public: + polyplay_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in audio/polyplay.c -----------*/ void polyplay_set_channel1(int active); diff --git a/src/mame/includes/raiden.h b/src/mame/includes/raiden.h index d87f9ce200f..e4ab873df0f 100644 --- a/src/mame/includes/raiden.h +++ b/src/mame/includes/raiden.h @@ -1,3 +1,13 @@ +class raiden_state : public driver_device +{ +public: + raiden_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/raiden.c -----------*/ extern UINT16 *raiden_back_data,*raiden_fore_data,*raiden_scroll_ram; diff --git a/src/mame/includes/raiden2.h b/src/mame/includes/raiden2.h index 5627814de6b..68e3fd9e1b9 100644 --- a/src/mame/includes/raiden2.h +++ b/src/mame/includes/raiden2.h @@ -1,3 +1,13 @@ +class raiden2_state : public driver_device +{ +public: + raiden2_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in drivers/raiden2.c -----------*/ WRITE16_HANDLER( sprcpt_val_1_w ); diff --git a/src/mame/includes/renegade.h b/src/mame/includes/renegade.h index 5d724cf32a3..e119402af0c 100644 --- a/src/mame/includes/renegade.h +++ b/src/mame/includes/renegade.h @@ -1,3 +1,13 @@ +class renegade_state : public driver_device +{ +public: + renegade_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/renegade.c -----------*/ extern UINT8 *renegade_videoram2; diff --git a/src/mame/includes/rpunch.h b/src/mame/includes/rpunch.h index b48826a1348..a2886ac12e2 100644 --- a/src/mame/includes/rpunch.h +++ b/src/mame/includes/rpunch.h @@ -1,3 +1,13 @@ +class rpunch_state : public driver_device +{ +public: + rpunch_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/rpunch.c -----------*/ extern UINT16 *rpunch_bitmapram; diff --git a/src/mame/includes/segag80r.h b/src/mame/includes/segag80r.h index b6f7d8d661f..6a78a64547b 100644 --- a/src/mame/includes/segag80r.h +++ b/src/mame/includes/segag80r.h @@ -4,6 +4,16 @@ *************************************************************************/ +class segag80r_state : public driver_device +{ +public: + segag80r_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in machine/segag80.c -----------*/ extern UINT8 (*sega_decrypt)(offs_t, UINT8); diff --git a/src/mame/includes/shangkid.h b/src/mame/includes/shangkid.h index 17add79ea97..f6204bc603c 100644 --- a/src/mame/includes/shangkid.h +++ b/src/mame/includes/shangkid.h @@ -1,3 +1,13 @@ +class shangkid_state : public driver_device +{ +public: + shangkid_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/shangkid.c -----------*/ extern UINT8 *shangkid_videoreg; diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h index 0fc2c455603..983e6eada7c 100644 --- a/src/mame/includes/sprint4.h +++ b/src/mame/includes/sprint4.h @@ -1,3 +1,13 @@ +class sprint4_state : public driver_device +{ +public: + sprint4_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/sprint4.c -----------*/ extern int sprint4_collision[4]; diff --git a/src/mame/includes/strnskil.h b/src/mame/includes/strnskil.h index 0f8735a4ce7..b19f1ff55df 100644 --- a/src/mame/includes/strnskil.h +++ b/src/mame/includes/strnskil.h @@ -1,3 +1,13 @@ +class strnskil_state : public driver_device +{ +public: + strnskil_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/strnskil.c -----------*/ extern UINT8 *strnskil_xscroll; diff --git a/src/mame/includes/subs.h b/src/mame/includes/subs.h index 47b7de4d5a4..3b75b5ceb03 100644 --- a/src/mame/includes/subs.h +++ b/src/mame/includes/subs.h @@ -16,6 +16,16 @@ #define SUBS_NOISE_RESET NODE_07 +class subs_state : public driver_device +{ +public: + subs_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in machine/subs.c -----------*/ MACHINE_RESET( subs ); diff --git a/src/mame/video/system1.h b/src/mame/includes/system1.h similarity index 71% rename from src/mame/video/system1.h rename to src/mame/includes/system1.h index 315907e23b3..097d4cf6a16 100644 --- a/src/mame/video/system1.h +++ b/src/mame/includes/system1.h @@ -1,6 +1,14 @@ -#ifndef _system1_H_ -#define _system1_H_ +class system1_state : public driver_device +{ +public: + system1_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + UINT8 *videoram; +}; + + +/*----------- defined in video/system1.c -----------*/ VIDEO_START( system1 ); VIDEO_START( system2 ); @@ -23,5 +31,3 @@ WRITE8_HANDLER( system1_sprite_collision_reset_w ); VIDEO_UPDATE( system1 ); VIDEO_UPDATE( system2 ); VIDEO_UPDATE( system2_rowscroll ); - -#endif diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h index 47b792fcb8a..614302f059f 100644 --- a/src/mame/includes/taito_f3.h +++ b/src/mame/includes/taito_f3.h @@ -39,6 +39,16 @@ enum { COMMANDW /* prototype */ }; +class taito_f3_state : public driver_device +{ +public: + taito_f3_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT32 *videoram; +}; + + /*----------- defined in drivers/taito_f3.c -----------*/ extern UINT32 *f3_shared_ram; diff --git a/src/mame/includes/tankbatt.h b/src/mame/includes/tankbatt.h index dc122fb3f5e..3e2a3f275fb 100644 --- a/src/mame/includes/tankbatt.h +++ b/src/mame/includes/tankbatt.h @@ -1,3 +1,13 @@ +class tankbatt_state : public driver_device +{ +public: + tankbatt_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/tankbatt.c -----------*/ extern UINT8 *tankbatt_bulletsram; diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h index 5e61e60b48f..db5545c0c0c 100644 --- a/src/mame/includes/tatsumi.h +++ b/src/mame/includes/tatsumi.h @@ -1,3 +1,13 @@ +class tatsumi_state : public driver_device +{ +public: + tatsumi_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in drivers/tatsumi.c -----------*/ extern UINT16 *apache3_g_ram; diff --git a/src/mame/includes/terracre.h b/src/mame/includes/terracre.h index af9ed578de2..c20036df438 100644 --- a/src/mame/includes/terracre.h +++ b/src/mame/includes/terracre.h @@ -1,3 +1,13 @@ +class terracre_state : public driver_device +{ +public: + terracre_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/terracre.c -----------*/ extern UINT16 *amazon_videoram; diff --git a/src/mame/includes/thief.h b/src/mame/includes/thief.h index f22f5630e1b..9e7b35f6102 100644 --- a/src/mame/includes/thief.h +++ b/src/mame/includes/thief.h @@ -1,3 +1,13 @@ +class thief_state : public driver_device +{ +public: + thief_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/thief.c -----------*/ READ8_HANDLER( thief_context_ram_r ); diff --git a/src/mame/includes/tigeroad.h b/src/mame/includes/tigeroad.h index 20caa3fc90d..829b0f41532 100644 --- a/src/mame/includes/tigeroad.h +++ b/src/mame/includes/tigeroad.h @@ -1,3 +1,13 @@ +class tigeroad_state : public driver_device +{ +public: + tigeroad_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/tigeroad.c -----------*/ WRITE16_HANDLER( tigeroad_videoram_w ); diff --git a/src/mame/includes/timelimt.h b/src/mame/includes/timelimt.h index 547c5cf1871..cc8d87b65ec 100644 --- a/src/mame/includes/timelimt.h +++ b/src/mame/includes/timelimt.h @@ -1,3 +1,13 @@ +class timelimt_state : public driver_device +{ +public: + timelimt_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/timelimt.c -----------*/ extern UINT8 *timelimt_bg_videoram; diff --git a/src/mame/includes/toki.h b/src/mame/includes/toki.h index cf06cbe1a2e..ec5f907c08d 100644 --- a/src/mame/includes/toki.h +++ b/src/mame/includes/toki.h @@ -1,3 +1,13 @@ +class toki_state : public driver_device +{ +public: + toki_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/toki.c -----------*/ extern UINT16 *toki_background1_videoram16; diff --git a/src/mame/includes/truco.h b/src/mame/includes/truco.h index b9b8a4f10b3..3bf0f8b9ccf 100644 --- a/src/mame/includes/truco.h +++ b/src/mame/includes/truco.h @@ -1,3 +1,13 @@ +class truco_state : public driver_device +{ +public: + truco_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/truco.c -----------*/ VIDEO_UPDATE( truco ); diff --git a/src/mame/includes/tryout.h b/src/mame/includes/tryout.h index d6fa06e277f..eed751b86e9 100644 --- a/src/mame/includes/tryout.h +++ b/src/mame/includes/tryout.h @@ -1,3 +1,13 @@ +class tryout_state : public driver_device +{ +public: + tryout_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/tryout.c -----------*/ extern UINT8 *tryout_gfx_control; diff --git a/src/mame/includes/twin16.h b/src/mame/includes/twin16.h index 05f6fc63270..b410dc1ea6d 100644 --- a/src/mame/includes/twin16.h +++ b/src/mame/includes/twin16.h @@ -1,3 +1,13 @@ +class twin16_state : public driver_device +{ +public: + twin16_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in drivers/twin16.c -----------*/ extern UINT16 twin16_custom_video; diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h index 5df5c138462..7c0d34a909d 100644 --- a/src/mame/includes/ultratnk.h +++ b/src/mame/includes/ultratnk.h @@ -5,6 +5,16 @@ *************************************************************************/ +class ultratnk_state : public driver_device +{ +public: + ultratnk_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/ultratnk.c -----------*/ extern int ultratnk_collision[4]; diff --git a/src/mame/includes/vigilant.h b/src/mame/includes/vigilant.h index f0fbc620060..b95370f9de4 100644 --- a/src/mame/includes/vigilant.h +++ b/src/mame/includes/vigilant.h @@ -1,3 +1,13 @@ +class vigilant_state : public driver_device +{ +public: + vigilant_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/vigilant.c -----------*/ VIDEO_START( vigilant ); diff --git a/src/mame/includes/wiz.h b/src/mame/includes/wiz.h index d833895f45a..d97b0c6e6e9 100644 --- a/src/mame/includes/wiz.h +++ b/src/mame/includes/wiz.h @@ -1,3 +1,13 @@ +class wiz_state : public driver_device +{ +public: + wiz_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/wiz.c -----------*/ extern UINT8 *wiz_videoram2; diff --git a/src/mame/includes/xorworld.h b/src/mame/includes/xorworld.h index d5eb8c96cc7..b423249c72e 100644 --- a/src/mame/includes/xorworld.h +++ b/src/mame/includes/xorworld.h @@ -1,3 +1,13 @@ +class xorworld_state : public driver_device +{ +public: + xorworld_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT16 *videoram; +}; + + /*----------- defined in video/xorworld.c -----------*/ WRITE16_HANDLER( xorworld_videoram16_w ); diff --git a/src/mame/includes/zac2650.h b/src/mame/includes/zac2650.h index 0c6dd157d64..28c66729809 100644 --- a/src/mame/includes/zac2650.h +++ b/src/mame/includes/zac2650.h @@ -1,3 +1,13 @@ +class zac2650_state : public driver_device +{ +public: + zac2650_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config) { } + + UINT8 *videoram; +}; + + /*----------- defined in video/zac2650.c -----------*/ extern UINT8 *zac2650_s2636_0_ram; diff --git a/src/mame/machine/mcr.c b/src/mame/machine/mcr.c index 17e61cec033..c5357bbdfc1 100644 --- a/src/mame/machine/mcr.c +++ b/src/mame/machine/mcr.c @@ -6,14 +6,7 @@ #include "emu.h" #include "deprecat.h" -#include "machine/z80ctc.h" -#include "machine/z80pio.h" -#include "machine/z80sio.h" #include "audio/mcr.h" -#include "cpu/m6800/m6800.h" -#include "cpu/m6809/m6809.h" -#include "cpu/z80/z80.h" -#include "cpu/z80/z80daisy.h" #include "includes/mcr.h" #define VERBOSE 0 @@ -26,8 +19,6 @@ * *************************************/ -attotime mcr68_timing_factor; - UINT8 mcr_cocktail_flip; UINT32 mcr_cpu_board; @@ -42,33 +33,6 @@ UINT32 mcr_ssio_board; * *************************************/ -static UINT8 m6840_status; -static UINT8 m6840_status_read_since_int; -static UINT8 m6840_msb_buffer; -static UINT8 m6840_lsb_buffer; -static struct counter_state -{ - UINT8 control; - UINT16 latch; - UINT16 count; - emu_timer * timer; - UINT8 timer_active; - attotime period; -} m6840_state[3]; - -/* MCR/68k interrupt states */ -static UINT8 m6840_irq_state; -static UINT8 m6840_irq_vector; -static UINT8 v493_irq_state; -static UINT8 v493_irq_vector; - -static timer_fired_func v493_callback; - -static UINT8 zwackery_sound_data; - -static attotime m6840_counter_periods[3]; -static attotime m6840_internal_counter_period; /* 68000 CLK / 10 */ - static emu_timer *ipu_watchdog_timer; @@ -78,18 +42,6 @@ static emu_timer *ipu_watchdog_timer; * *************************************/ -static void subtract_from_counter(running_machine *machine, int counter, int count); - -static TIMER_CALLBACK( mcr68_493_callback ); -static TIMER_CALLBACK( zwackery_493_callback ); - -static WRITE8_DEVICE_HANDLER( zwackery_pia0_w ); -static WRITE8_DEVICE_HANDLER( zwackery_pia1_w ); -static WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w ); -static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq ); - -static void reload_count(int counter); -static TIMER_CALLBACK( counter_fired_callback ); static TIMER_CALLBACK( ipu_watchdog_reset ); static WRITE8_DEVICE_HANDLER( ipu_break_changed ); @@ -129,84 +81,6 @@ const gfx_layout mcr_sprite_layout = -/************************************* - * - * 6821 PIA declarations - * - *************************************/ - -static READ8_DEVICE_HANDLER( zwackery_port_1_r ) -{ - UINT8 ret = input_port_read(device->machine, "IN1"); - - pia6821_set_port_a_z_mask(device, ret); - - return ret; -} - - -static READ8_DEVICE_HANDLER( zwackery_port_3_r ) -{ - UINT8 ret = input_port_read(device->machine, "IN3"); - - pia6821_set_port_a_z_mask(device, ret); - - return ret; -} - - -const pia6821_interface zwackery_pia0_intf = -{ - DEVCB_NULL, /* port A in */ - DEVCB_INPUT_PORT("IN0"), /* port B in */ - DEVCB_NULL, /* line CA1 in */ - DEVCB_NULL, /* line CB1 in */ - DEVCB_NULL, /* line CA2 in */ - DEVCB_NULL, /* line CB2 in */ - DEVCB_HANDLER(zwackery_pia0_w), /* port A out */ - DEVCB_NULL, /* port B out */ - DEVCB_NULL, /* line CA2 out */ - DEVCB_NULL, /* port CB2 out */ - DEVCB_LINE(zwackery_pia_irq), /* IRQA */ - DEVCB_LINE(zwackery_pia_irq) /* IRQB */ -}; - - -const pia6821_interface zwackery_pia1_intf = -{ - DEVCB_HANDLER(zwackery_port_1_r), /* port A in */ - DEVCB_HANDLER(zwackery_port_2_r), /* port B in */ - DEVCB_NULL, /* line CA1 in */ - DEVCB_NULL, /* line CB1 in */ - DEVCB_NULL, /* line CA2 in */ - DEVCB_NULL, /* line CB2 in */ - DEVCB_HANDLER(zwackery_pia1_w), /* port A out */ - DEVCB_NULL, /* port B out */ - DEVCB_LINE(zwackery_ca2_w), /* line CA2 out */ - DEVCB_NULL, /* port CB2 out */ - DEVCB_NULL, /* IRQA */ - DEVCB_NULL /* IRQB */ -}; - - -const pia6821_interface zwackery_pia2_intf = -{ - DEVCB_HANDLER(zwackery_port_3_r), /* port A in */ - DEVCB_INPUT_PORT("DSW"), /* port B in */ - DEVCB_NULL, /* line CA1 in */ - DEVCB_NULL, /* line CB1 in */ - DEVCB_NULL, /* line CA2 in */ - DEVCB_NULL, /* line CB2 in */ - DEVCB_NULL, /* port A out */ - DEVCB_NULL, /* port B out */ - DEVCB_NULL, /* line CA2 out */ - DEVCB_NULL, /* port CB2 out */ - DEVCB_NULL, /* IRQA */ - DEVCB_NULL /* IRQB */ -}; - - - /************************************* * * Generic MCR CTC interface @@ -309,106 +183,6 @@ MACHINE_RESET( mcr ) -/************************************* - * - * Generic MCR/68k machine initialization - * - *************************************/ - -MACHINE_START( mcr68 ) -{ - int i; - - for (i = 0; i < 3; i++) - { - struct counter_state *m6840 = &m6840_state[i]; - - m6840->timer = timer_alloc(machine, counter_fired_callback, NULL); - - state_save_register_item(machine, "m6840", NULL, i, m6840->control); - state_save_register_item(machine, "m6840", NULL, i, m6840->latch); - state_save_register_item(machine, "m6840", NULL, i, m6840->count); - state_save_register_item(machine, "m6840", NULL, i, m6840->timer_active); - } - - state_save_register_global(machine, m6840_status); - state_save_register_global(machine, m6840_status_read_since_int); - state_save_register_global(machine, m6840_msb_buffer); - state_save_register_global(machine, m6840_lsb_buffer); - state_save_register_global(machine, m6840_irq_state); - state_save_register_global(machine, v493_irq_state); - state_save_register_global(machine, zwackery_sound_data); - - state_save_register_global(machine, mcr_cocktail_flip); -} - - -static void mcr68_common_init(running_machine *machine) -{ - int i; - - /* reset the 6840's */ - m6840_counter_periods[0] = ATTOTIME_IN_HZ(30); /* clocked by /VBLANK */ - m6840_counter_periods[1] = attotime_never; /* grounded */ - m6840_counter_periods[2] = ATTOTIME_IN_HZ(512 * 30); /* clocked by /HSYNC */ - - m6840_status = 0x00; - m6840_status_read_since_int = 0x00; - m6840_msb_buffer = m6840_lsb_buffer = 0; - for (i = 0; i < 3; i++) - { - struct counter_state *m6840 = &m6840_state[i]; - - m6840->control = 0x00; - m6840->latch = 0xffff; - m6840->count = 0xffff; - timer_enable(m6840->timer, FALSE); - m6840->timer_active = 0; - m6840->period = m6840_counter_periods[i]; - } - - /* initialize the clock */ - m6840_internal_counter_period = ATTOTIME_IN_HZ(cputag_get_clock(machine, "maincpu") / 10); - - /* reset cocktail flip */ - mcr_cocktail_flip = 0; - - /* initialize the sound */ - mcr_sound_reset(machine); -} - - -MACHINE_RESET( mcr68 ) -{ - /* for the most part all MCR/68k games are the same */ - mcr68_common_init(machine); - v493_callback = mcr68_493_callback; - - /* vectors are 1 and 2 */ - v493_irq_vector = 1; - m6840_irq_vector = 2; -} - - -MACHINE_START( zwackery ) -{ - MACHINE_START_CALL(mcr68); -} - - -MACHINE_RESET( zwackery ) -{ - /* for the most part all MCR/68k games are the same */ - mcr68_common_init(machine); - v493_callback = zwackery_493_callback; - - /* vectors are 5 and 6 */ - v493_irq_vector = 5; - m6840_irq_vector = 6; -} - - - /************************************* * * Generic MCR interrupt handler @@ -448,52 +222,6 @@ INTERRUPT_GEN( mcr_ipu_interrupt ) } -INTERRUPT_GEN( mcr68_interrupt ) -{ - /* update the 6840 VBLANK clock */ - if (!m6840_state[0].timer_active) - subtract_from_counter(device->machine, 0, 1); - - logerror("--- VBLANK ---\n"); - - /* also set a timer to generate the 493 signal at a specific time before the next VBLANK */ - /* the timing of this is crucial for Blasted and Tri-Sports, which check the timing of */ - /* VBLANK and 493 using counter 2 */ - timer_set(device->machine, attotime_sub(ATTOTIME_IN_HZ(30), mcr68_timing_factor), NULL, 0, v493_callback); -} - - - -/************************************* - * - * MCR/68k interrupt central - * - *************************************/ - -static void update_mcr68_interrupts(running_machine *machine) -{ - cputag_set_input_line(machine, "maincpu", v493_irq_vector, v493_irq_state ? ASSERT_LINE : CLEAR_LINE); - cputag_set_input_line(machine, "maincpu", m6840_irq_vector, m6840_irq_state ? ASSERT_LINE : CLEAR_LINE); -} - - -static TIMER_CALLBACK( mcr68_493_off_callback ) -{ - v493_irq_state = 0; - update_mcr68_interrupts(machine); -} - - -static TIMER_CALLBACK( mcr68_493_callback ) -{ - v493_irq_state = 1; - update_mcr68_interrupts(machine); - timer_set(machine, machine->primary_screen->scan_period(), NULL, 0, mcr68_493_off_callback); - logerror("--- (INT1) ---\n"); -} - - - /************************************* * * Generic MCR port write handlers @@ -563,362 +291,6 @@ WRITE8_HANDLER( mcr_scroll_value_w ) } - -/************************************* - * - * Zwackery-specific interfaces - * - *************************************/ - -WRITE8_DEVICE_HANDLER( zwackery_pia0_w ) -{ - /* bit 7 is the watchdog */ - if (!(data & 0x80)) watchdog_reset(device->machine); - - /* bits 5 and 6 control hflip/vflip */ - /* bits 3 and 4 control coin counters? */ - /* bits 0, 1 and 2 control meters? */ -} - - -WRITE8_DEVICE_HANDLER( zwackery_pia1_w ) -{ - zwackery_sound_data = (data >> 4) & 0x0f; -} - - -WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w ) -{ - address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM); - csdeluxe_data_w(space, 0, (state << 4) | zwackery_sound_data); -} - - -static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq ) -{ - v493_irq_state = pia6821_get_irq_a(device) | pia6821_get_irq_b(device); - update_mcr68_interrupts(device->machine); -} - - -static TIMER_CALLBACK( zwackery_493_off_callback ) -{ - running_device *pia = machine->device("pia0"); - pia6821_ca1_w(pia, 0); -} - - -static TIMER_CALLBACK( zwackery_493_callback ) -{ - running_device *pia = machine->device("pia0"); - - pia6821_ca1_w(pia, 1); - timer_set(machine, machine->primary_screen->scan_period(), NULL, 0, zwackery_493_off_callback); -} - - - -/************************************* - * - * M6840 timer utilities - * - *************************************/ - -INLINE void update_interrupts(running_machine *machine) -{ - m6840_status &= ~0x80; - - if ((m6840_status & 0x01) && (m6840_state[0].control & 0x40)) m6840_status |= 0x80; - if ((m6840_status & 0x02) && (m6840_state[1].control & 0x40)) m6840_status |= 0x80; - if ((m6840_status & 0x04) && (m6840_state[2].control & 0x40)) m6840_status |= 0x80; - - m6840_irq_state = m6840_status >> 7; - update_mcr68_interrupts(machine); -} - - -static void subtract_from_counter(running_machine *machine, int counter, int count) -{ - /* dual-byte mode */ - if (m6840_state[counter].control & 0x04) - { - int lsb = m6840_state[counter].count & 0xff; - int msb = m6840_state[counter].count >> 8; - - /* count the clocks */ - lsb -= count; - - /* loop while we're less than zero */ - while (lsb < 0) - { - /* borrow from the MSB */ - lsb += (m6840_state[counter].latch & 0xff) + 1; - msb--; - - /* if MSB goes less than zero, we've expired */ - if (msb < 0) - { - m6840_status |= 1 << counter; - m6840_status_read_since_int &= ~(1 << counter); - update_interrupts(machine); - msb = (m6840_state[counter].latch >> 8) + 1; - LOG(("** Counter %d fired\n", counter)); - } - } - - /* store the result */ - m6840_state[counter].count = (msb << 8) | lsb; - } - - /* word mode */ - else - { - int word = m6840_state[counter].count; - - /* count the clocks */ - word -= count; - - /* loop while we're less than zero */ - while (word < 0) - { - /* borrow from the MSB */ - word += m6840_state[counter].latch + 1; - - /* we've expired */ - m6840_status |= 1 << counter; - m6840_status_read_since_int &= ~(1 << counter); - update_interrupts(machine); - LOG(("** Counter %d fired\n", counter)); - } - - /* store the result */ - m6840_state[counter].count = word; - } -} - - -static TIMER_CALLBACK( counter_fired_callback ) -{ - int count = param >> 2; - int counter = param & 3; - - /* reset the timer */ - m6840_state[counter].timer_active = 0; - - /* subtract it all from the counter; this will generate an interrupt */ - subtract_from_counter(machine, counter, count); -} - - -static void reload_count(int counter) -{ - attotime period; - attotime total_period; - int count; - - /* copy the latched value in */ - m6840_state[counter].count = m6840_state[counter].latch; - - /* counter 0 is self-updating if clocked externally */ - if (counter == 0 && !(m6840_state[counter].control & 0x02)) - { - timer_adjust_oneshot(m6840_state[counter].timer, attotime_never, 0); - m6840_state[counter].timer_active = 0; - return; - } - - /* determine the clock period for this timer */ - if (m6840_state[counter].control & 0x02) - period = m6840_internal_counter_period; - else - period = m6840_counter_periods[counter]; - - /* determine the number of clock periods before we expire */ - count = m6840_state[counter].count; - if (m6840_state[counter].control & 0x04) - count = ((count >> 8) + 1) * ((count & 0xff) + 1); - else - count = count + 1; - - /* set the timer */ - total_period = attotime_make(0, attotime_to_attoseconds(period) * count); -LOG(("reload_count(%d): period = %f count = %d\n", counter, attotime_to_double(period), count)); - timer_adjust_oneshot(m6840_state[counter].timer, total_period, (count << 2) + counter); - m6840_state[counter].timer_active = 1; -} - - -static UINT16 compute_counter(int counter) -{ - attotime period; - int remaining; - - /* if there's no timer, return the count */ - if (!m6840_state[counter].timer_active) - return m6840_state[counter].count; - - /* determine the clock period for this timer */ - if (m6840_state[counter].control & 0x02) - period = m6840_internal_counter_period; - else - period = m6840_counter_periods[counter]; - - /* see how many are left */ - remaining = attotime_to_attoseconds(timer_timeleft(m6840_state[counter].timer)) / attotime_to_attoseconds(period); - - /* adjust the count for dual byte mode */ - if (m6840_state[counter].control & 0x04) - { - int divisor = (m6840_state[counter].count & 0xff) + 1; - int msb = remaining / divisor; - int lsb = remaining % divisor; - remaining = (msb << 8) | lsb; - } - - return remaining; -} - - - -/************************************* - * - * M6840 timer I/O - * - *************************************/ - -static WRITE8_HANDLER( mcr68_6840_w_common ) -{ - int i; - - /* offsets 0 and 1 are control registers */ - if (offset < 2) - { - int counter = (offset == 1) ? 1 : (m6840_state[1].control & 0x01) ? 0 : 2; - UINT8 diffs = data ^ m6840_state[counter].control; - - m6840_state[counter].control = data; - - /* reset? */ - if (counter == 0 && (diffs & 0x01)) - { - /* holding reset down */ - if (data & 0x01) - { - for (i = 0; i < 3; i++) - { - timer_adjust_oneshot(m6840_state[i].timer, attotime_never, 0); - m6840_state[i].timer_active = 0; - } - } - - /* releasing reset */ - else - { - for (i = 0; i < 3; i++) - reload_count(i); - } - - m6840_status = 0; - update_interrupts(space->machine); - } - - /* changing the clock source? (needed for Zwackery) */ - if (diffs & 0x02) - reload_count(counter); - - LOG(("%06X:Counter %d control = %02X\n", cpu_get_previouspc(space->cpu), counter, data)); - } - - /* offsets 2, 4, and 6 are MSB buffer registers */ - else if ((offset & 1) == 0) - { - LOG(("%06X:MSB = %02X\n", cpu_get_previouspc(space->cpu), data)); - m6840_msb_buffer = data; - } - - /* offsets 3, 5, and 7 are Write Timer Latch commands */ - else - { - int counter = (offset - 2) / 2; - m6840_state[counter].latch = (m6840_msb_buffer << 8) | (data & 0xff); - - /* clear the interrupt */ - m6840_status &= ~(1 << counter); - update_interrupts(space->machine); - - /* reload the count if in an appropriate mode */ - if (!(m6840_state[counter].control & 0x10)) - reload_count(counter); - - LOG(("%06X:Counter %d latch = %04X\n", cpu_get_previouspc(space->cpu), counter, m6840_state[counter].latch)); - } -} - - -static READ16_HANDLER( mcr68_6840_r_common ) -{ - /* offset 0 is a no-op */ - if (offset == 0) - return 0; - - /* offset 1 is the status register */ - else if (offset == 1) - { - LOG(("%06X:Status read = %04X\n", cpu_get_previouspc(space->cpu), m6840_status)); - m6840_status_read_since_int |= m6840_status & 0x07; - return m6840_status; - } - - /* offsets 2, 4, and 6 are Read Timer Counter commands */ - else if ((offset & 1) == 0) - { - int counter = (offset - 2) / 2; - int result = compute_counter(counter); - - /* clear the interrupt if the status has been read */ - if (m6840_status_read_since_int & (1 << counter)) - m6840_status &= ~(1 << counter); - update_interrupts(space->machine); - - m6840_lsb_buffer = result & 0xff; - - LOG(("%06X:Counter %d read = %04X\n", cpu_get_previouspc(space->cpu), counter, result)); - return result >> 8; - } - - /* offsets 3, 5, and 7 are LSB buffer registers */ - else - return m6840_lsb_buffer; -} - - -WRITE16_HANDLER( mcr68_6840_upper_w ) -{ - if (ACCESSING_BITS_8_15) - mcr68_6840_w_common(space, offset, (data >> 8) & 0xff); -} - - -WRITE16_HANDLER( mcr68_6840_lower_w ) -{ - if (ACCESSING_BITS_0_7) - mcr68_6840_w_common(space, offset, data & 0xff); -} - - -READ16_HANDLER( mcr68_6840_upper_r ) -{ - return (mcr68_6840_r_common(space,offset,0) << 8) | 0x00ff; -} - - -READ16_HANDLER( mcr68_6840_lower_r ) -{ - return mcr68_6840_r_common(space,offset,0) | 0xff00; -} - - - /************************************* * * NFL Football IPU board diff --git a/src/mame/machine/mcr68.c b/src/mame/machine/mcr68.c new file mode 100644 index 00000000000..f00bfdc74d1 --- /dev/null +++ b/src/mame/machine/mcr68.c @@ -0,0 +1,657 @@ +/*************************************************************************** + + Midway MCR system + +***************************************************************************/ + +#include "emu.h" +#include "audio/mcr.h" +#include "includes/mcr68.h" + +#define VERBOSE 0 +#define LOG(x) do { if (VERBOSE) logerror x; } while (0) + + +/************************************* + * + * Global variables + * + *************************************/ + +attotime mcr68_timing_factor; + + + +/************************************* + * + * Statics + * + *************************************/ + +static UINT8 m6840_status; +static UINT8 m6840_status_read_since_int; +static UINT8 m6840_msb_buffer; +static UINT8 m6840_lsb_buffer; +static struct counter_state +{ + UINT8 control; + UINT16 latch; + UINT16 count; + emu_timer * timer; + UINT8 timer_active; + attotime period; +} m6840_state[3]; + +/* MCR/68k interrupt states */ +static UINT8 m6840_irq_state; +static UINT8 m6840_irq_vector; +static UINT8 v493_irq_state; +static UINT8 v493_irq_vector; + +static timer_fired_func v493_callback; + +static UINT8 zwackery_sound_data; + +static attotime m6840_counter_periods[3]; +static attotime m6840_internal_counter_period; /* 68000 CLK / 10 */ + + +/************************************* + * + * Function prototypes + * + *************************************/ + +static void subtract_from_counter(running_machine *machine, int counter, int count); + +static TIMER_CALLBACK( mcr68_493_callback ); +static TIMER_CALLBACK( zwackery_493_callback ); + +static WRITE8_DEVICE_HANDLER( zwackery_pia0_w ); +static WRITE8_DEVICE_HANDLER( zwackery_pia1_w ); +static WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w ); +static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq ); + +static void reload_count(int counter); +static TIMER_CALLBACK( counter_fired_callback ); + + + +/************************************* + * + * 6821 PIA declarations + * + *************************************/ + +static READ8_DEVICE_HANDLER( zwackery_port_1_r ) +{ + UINT8 ret = input_port_read(device->machine, "IN1"); + + pia6821_set_port_a_z_mask(device, ret); + + return ret; +} + + +static READ8_DEVICE_HANDLER( zwackery_port_3_r ) +{ + UINT8 ret = input_port_read(device->machine, "IN3"); + + pia6821_set_port_a_z_mask(device, ret); + + return ret; +} + + +const pia6821_interface zwackery_pia0_intf = +{ + DEVCB_NULL, /* port A in */ + DEVCB_INPUT_PORT("IN0"), /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_HANDLER(zwackery_pia0_w), /* port A out */ + DEVCB_NULL, /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, /* port CB2 out */ + DEVCB_LINE(zwackery_pia_irq), /* IRQA */ + DEVCB_LINE(zwackery_pia_irq) /* IRQB */ +}; + + +const pia6821_interface zwackery_pia1_intf = +{ + DEVCB_HANDLER(zwackery_port_1_r), /* port A in */ + DEVCB_HANDLER(zwackery_port_2_r), /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_HANDLER(zwackery_pia1_w), /* port A out */ + DEVCB_NULL, /* port B out */ + DEVCB_LINE(zwackery_ca2_w), /* line CA2 out */ + DEVCB_NULL, /* port CB2 out */ + DEVCB_NULL, /* IRQA */ + DEVCB_NULL /* IRQB */ +}; + + +const pia6821_interface zwackery_pia2_intf = +{ + DEVCB_HANDLER(zwackery_port_3_r), /* port A in */ + DEVCB_INPUT_PORT("DSW"), /* port B in */ + DEVCB_NULL, /* line CA1 in */ + DEVCB_NULL, /* line CB1 in */ + DEVCB_NULL, /* line CA2 in */ + DEVCB_NULL, /* line CB2 in */ + DEVCB_NULL, /* port A out */ + DEVCB_NULL, /* port B out */ + DEVCB_NULL, /* line CA2 out */ + DEVCB_NULL, /* port CB2 out */ + DEVCB_NULL, /* IRQA */ + DEVCB_NULL /* IRQB */ +}; + + + +/************************************* + * + * Generic MCR/68k machine initialization + * + *************************************/ + +MACHINE_START( mcr68 ) +{ + int i; + + for (i = 0; i < 3; i++) + { + struct counter_state *m6840 = &m6840_state[i]; + + m6840->timer = timer_alloc(machine, counter_fired_callback, NULL); + + state_save_register_item(machine, "m6840", NULL, i, m6840->control); + state_save_register_item(machine, "m6840", NULL, i, m6840->latch); + state_save_register_item(machine, "m6840", NULL, i, m6840->count); + state_save_register_item(machine, "m6840", NULL, i, m6840->timer_active); + } + + state_save_register_global(machine, m6840_status); + state_save_register_global(machine, m6840_status_read_since_int); + state_save_register_global(machine, m6840_msb_buffer); + state_save_register_global(machine, m6840_lsb_buffer); + state_save_register_global(machine, m6840_irq_state); + state_save_register_global(machine, v493_irq_state); + state_save_register_global(machine, zwackery_sound_data); +} + + +static void mcr68_common_init(running_machine *machine) +{ + int i; + + /* reset the 6840's */ + m6840_counter_periods[0] = ATTOTIME_IN_HZ(30); /* clocked by /VBLANK */ + m6840_counter_periods[1] = attotime_never; /* grounded */ + m6840_counter_periods[2] = ATTOTIME_IN_HZ(512 * 30); /* clocked by /HSYNC */ + + m6840_status = 0x00; + m6840_status_read_since_int = 0x00; + m6840_msb_buffer = m6840_lsb_buffer = 0; + for (i = 0; i < 3; i++) + { + struct counter_state *m6840 = &m6840_state[i]; + + m6840->control = 0x00; + m6840->latch = 0xffff; + m6840->count = 0xffff; + timer_enable(m6840->timer, FALSE); + m6840->timer_active = 0; + m6840->period = m6840_counter_periods[i]; + } + + /* initialize the clock */ + m6840_internal_counter_period = ATTOTIME_IN_HZ(cputag_get_clock(machine, "maincpu") / 10); + + /* initialize the sound */ + mcr_sound_reset(machine); +} + + +MACHINE_RESET( mcr68 ) +{ + /* for the most part all MCR/68k games are the same */ + mcr68_common_init(machine); + v493_callback = mcr68_493_callback; + + /* vectors are 1 and 2 */ + v493_irq_vector = 1; + m6840_irq_vector = 2; +} + + +MACHINE_START( zwackery ) +{ + MACHINE_START_CALL(mcr68); +} + + +MACHINE_RESET( zwackery ) +{ + /* for the most part all MCR/68k games are the same */ + mcr68_common_init(machine); + v493_callback = zwackery_493_callback; + + /* vectors are 5 and 6 */ + v493_irq_vector = 5; + m6840_irq_vector = 6; +} + + + +/************************************* + * + * Generic MCR interrupt handler + * + *************************************/ + +INTERRUPT_GEN( mcr68_interrupt ) +{ + /* update the 6840 VBLANK clock */ + if (!m6840_state[0].timer_active) + subtract_from_counter(device->machine, 0, 1); + + logerror("--- VBLANK ---\n"); + + /* also set a timer to generate the 493 signal at a specific time before the next VBLANK */ + /* the timing of this is crucial for Blasted and Tri-Sports, which check the timing of */ + /* VBLANK and 493 using counter 2 */ + timer_set(device->machine, attotime_sub(ATTOTIME_IN_HZ(30), mcr68_timing_factor), NULL, 0, v493_callback); +} + + + +/************************************* + * + * MCR/68k interrupt central + * + *************************************/ + +static void update_mcr68_interrupts(running_machine *machine) +{ + cputag_set_input_line(machine, "maincpu", v493_irq_vector, v493_irq_state ? ASSERT_LINE : CLEAR_LINE); + cputag_set_input_line(machine, "maincpu", m6840_irq_vector, m6840_irq_state ? ASSERT_LINE : CLEAR_LINE); +} + + +static TIMER_CALLBACK( mcr68_493_off_callback ) +{ + v493_irq_state = 0; + update_mcr68_interrupts(machine); +} + + +static TIMER_CALLBACK( mcr68_493_callback ) +{ + v493_irq_state = 1; + update_mcr68_interrupts(machine); + timer_set(machine, machine->primary_screen->scan_period(), NULL, 0, mcr68_493_off_callback); + logerror("--- (INT1) ---\n"); +} + + + +/************************************* + * + * Zwackery-specific interfaces + * + *************************************/ + +WRITE8_DEVICE_HANDLER( zwackery_pia0_w ) +{ + /* bit 7 is the watchdog */ + if (!(data & 0x80)) watchdog_reset(device->machine); + + /* bits 5 and 6 control hflip/vflip */ + /* bits 3 and 4 control coin counters? */ + /* bits 0, 1 and 2 control meters? */ +} + + +WRITE8_DEVICE_HANDLER( zwackery_pia1_w ) +{ + zwackery_sound_data = (data >> 4) & 0x0f; +} + + +WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w ) +{ + address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM); + csdeluxe_data_w(space, 0, (state << 4) | zwackery_sound_data); +} + + +static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq ) +{ + v493_irq_state = pia6821_get_irq_a(device) | pia6821_get_irq_b(device); + update_mcr68_interrupts(device->machine); +} + + +static TIMER_CALLBACK( zwackery_493_off_callback ) +{ + running_device *pia = machine->device("pia0"); + pia6821_ca1_w(pia, 0); +} + + +static TIMER_CALLBACK( zwackery_493_callback ) +{ + running_device *pia = machine->device("pia0"); + + pia6821_ca1_w(pia, 1); + timer_set(machine, machine->primary_screen->scan_period(), NULL, 0, zwackery_493_off_callback); +} + + + +/************************************* + * + * M6840 timer utilities + * + *************************************/ + +INLINE void update_interrupts(running_machine *machine) +{ + m6840_status &= ~0x80; + + if ((m6840_status & 0x01) && (m6840_state[0].control & 0x40)) m6840_status |= 0x80; + if ((m6840_status & 0x02) && (m6840_state[1].control & 0x40)) m6840_status |= 0x80; + if ((m6840_status & 0x04) && (m6840_state[2].control & 0x40)) m6840_status |= 0x80; + + m6840_irq_state = m6840_status >> 7; + update_mcr68_interrupts(machine); +} + + +static void subtract_from_counter(running_machine *machine, int counter, int count) +{ + /* dual-byte mode */ + if (m6840_state[counter].control & 0x04) + { + int lsb = m6840_state[counter].count & 0xff; + int msb = m6840_state[counter].count >> 8; + + /* count the clocks */ + lsb -= count; + + /* loop while we're less than zero */ + while (lsb < 0) + { + /* borrow from the MSB */ + lsb += (m6840_state[counter].latch & 0xff) + 1; + msb--; + + /* if MSB goes less than zero, we've expired */ + if (msb < 0) + { + m6840_status |= 1 << counter; + m6840_status_read_since_int &= ~(1 << counter); + update_interrupts(machine); + msb = (m6840_state[counter].latch >> 8) + 1; + LOG(("** Counter %d fired\n", counter)); + } + } + + /* store the result */ + m6840_state[counter].count = (msb << 8) | lsb; + } + + /* word mode */ + else + { + int word = m6840_state[counter].count; + + /* count the clocks */ + word -= count; + + /* loop while we're less than zero */ + while (word < 0) + { + /* borrow from the MSB */ + word += m6840_state[counter].latch + 1; + + /* we've expired */ + m6840_status |= 1 << counter; + m6840_status_read_since_int &= ~(1 << counter); + update_interrupts(machine); + LOG(("** Counter %d fired\n", counter)); + } + + /* store the result */ + m6840_state[counter].count = word; + } +} + + +static TIMER_CALLBACK( counter_fired_callback ) +{ + int count = param >> 2; + int counter = param & 3; + + /* reset the timer */ + m6840_state[counter].timer_active = 0; + + /* subtract it all from the counter; this will generate an interrupt */ + subtract_from_counter(machine, counter, count); +} + + +static void reload_count(int counter) +{ + attotime period; + attotime total_period; + int count; + + /* copy the latched value in */ + m6840_state[counter].count = m6840_state[counter].latch; + + /* counter 0 is self-updating if clocked externally */ + if (counter == 0 && !(m6840_state[counter].control & 0x02)) + { + timer_adjust_oneshot(m6840_state[counter].timer, attotime_never, 0); + m6840_state[counter].timer_active = 0; + return; + } + + /* determine the clock period for this timer */ + if (m6840_state[counter].control & 0x02) + period = m6840_internal_counter_period; + else + period = m6840_counter_periods[counter]; + + /* determine the number of clock periods before we expire */ + count = m6840_state[counter].count; + if (m6840_state[counter].control & 0x04) + count = ((count >> 8) + 1) * ((count & 0xff) + 1); + else + count = count + 1; + + /* set the timer */ + total_period = attotime_make(0, attotime_to_attoseconds(period) * count); +LOG(("reload_count(%d): period = %f count = %d\n", counter, attotime_to_double(period), count)); + timer_adjust_oneshot(m6840_state[counter].timer, total_period, (count << 2) + counter); + m6840_state[counter].timer_active = 1; +} + + +static UINT16 compute_counter(int counter) +{ + attotime period; + int remaining; + + /* if there's no timer, return the count */ + if (!m6840_state[counter].timer_active) + return m6840_state[counter].count; + + /* determine the clock period for this timer */ + if (m6840_state[counter].control & 0x02) + period = m6840_internal_counter_period; + else + period = m6840_counter_periods[counter]; + + /* see how many are left */ + remaining = attotime_to_attoseconds(timer_timeleft(m6840_state[counter].timer)) / attotime_to_attoseconds(period); + + /* adjust the count for dual byte mode */ + if (m6840_state[counter].control & 0x04) + { + int divisor = (m6840_state[counter].count & 0xff) + 1; + int msb = remaining / divisor; + int lsb = remaining % divisor; + remaining = (msb << 8) | lsb; + } + + return remaining; +} + + + +/************************************* + * + * M6840 timer I/O + * + *************************************/ + +static WRITE8_HANDLER( mcr68_6840_w_common ) +{ + int i; + + /* offsets 0 and 1 are control registers */ + if (offset < 2) + { + int counter = (offset == 1) ? 1 : (m6840_state[1].control & 0x01) ? 0 : 2; + UINT8 diffs = data ^ m6840_state[counter].control; + + m6840_state[counter].control = data; + + /* reset? */ + if (counter == 0 && (diffs & 0x01)) + { + /* holding reset down */ + if (data & 0x01) + { + for (i = 0; i < 3; i++) + { + timer_adjust_oneshot(m6840_state[i].timer, attotime_never, 0); + m6840_state[i].timer_active = 0; + } + } + + /* releasing reset */ + else + { + for (i = 0; i < 3; i++) + reload_count(i); + } + + m6840_status = 0; + update_interrupts(space->machine); + } + + /* changing the clock source? (needed for Zwackery) */ + if (diffs & 0x02) + reload_count(counter); + + LOG(("%06X:Counter %d control = %02X\n", cpu_get_previouspc(space->cpu), counter, data)); + } + + /* offsets 2, 4, and 6 are MSB buffer registers */ + else if ((offset & 1) == 0) + { + LOG(("%06X:MSB = %02X\n", cpu_get_previouspc(space->cpu), data)); + m6840_msb_buffer = data; + } + + /* offsets 3, 5, and 7 are Write Timer Latch commands */ + else + { + int counter = (offset - 2) / 2; + m6840_state[counter].latch = (m6840_msb_buffer << 8) | (data & 0xff); + + /* clear the interrupt */ + m6840_status &= ~(1 << counter); + update_interrupts(space->machine); + + /* reload the count if in an appropriate mode */ + if (!(m6840_state[counter].control & 0x10)) + reload_count(counter); + + LOG(("%06X:Counter %d latch = %04X\n", cpu_get_previouspc(space->cpu), counter, m6840_state[counter].latch)); + } +} + + +static READ16_HANDLER( mcr68_6840_r_common ) +{ + /* offset 0 is a no-op */ + if (offset == 0) + return 0; + + /* offset 1 is the status register */ + else if (offset == 1) + { + LOG(("%06X:Status read = %04X\n", cpu_get_previouspc(space->cpu), m6840_status)); + m6840_status_read_since_int |= m6840_status & 0x07; + return m6840_status; + } + + /* offsets 2, 4, and 6 are Read Timer Counter commands */ + else if ((offset & 1) == 0) + { + int counter = (offset - 2) / 2; + int result = compute_counter(counter); + + /* clear the interrupt if the status has been read */ + if (m6840_status_read_since_int & (1 << counter)) + m6840_status &= ~(1 << counter); + update_interrupts(space->machine); + + m6840_lsb_buffer = result & 0xff; + + LOG(("%06X:Counter %d read = %04X\n", cpu_get_previouspc(space->cpu), counter, result)); + return result >> 8; + } + + /* offsets 3, 5, and 7 are LSB buffer registers */ + else + return m6840_lsb_buffer; +} + + +WRITE16_HANDLER( mcr68_6840_upper_w ) +{ + if (ACCESSING_BITS_8_15) + mcr68_6840_w_common(space, offset, (data >> 8) & 0xff); +} + + +WRITE16_HANDLER( mcr68_6840_lower_w ) +{ + if (ACCESSING_BITS_0_7) + mcr68_6840_w_common(space, offset, data & 0xff); +} + + +READ16_HANDLER( mcr68_6840_upper_r ) +{ + return (mcr68_6840_r_common(space,offset,0) << 8) | 0x00ff; +} + + +READ16_HANDLER( mcr68_6840_lower_r ) +{ + return mcr68_6840_r_common(space,offset,0) | 0xff00; +} + diff --git a/src/mame/mame.mak b/src/mame/mame.mak index ae89b36b4b8..909c2275ffc 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -892,7 +892,7 @@ $(MAMEOBJ)/midway.a: \ $(DRIVERS)/gridlee.o $(AUDIO)/gridlee.o $(VIDEO)/gridlee.o \ $(DRIVERS)/mcr.o $(MACHINE)/mcr.o $(AUDIO)/mcr.o $(VIDEO)/mcr.o \ $(DRIVERS)/mcr3.o $(VIDEO)/mcr3.o \ - $(DRIVERS)/mcr68.o $(VIDEO)/mcr68.o \ + $(DRIVERS)/mcr68.o $(MACHINE)/mcr68.o $(VIDEO)/mcr68.o \ $(DRIVERS)/midtunit.o $(MACHINE)/midtunit.o $(VIDEO)/midtunit.o \ $(DRIVERS)/midvunit.o $(VIDEO)/midvunit.o \ $(DRIVERS)/midwunit.o $(MACHINE)/midwunit.o \ diff --git a/src/mame/video/ampoker2.c b/src/mame/video/ampoker2.c index 28ba4f6a533..5d2f4c59c92 100644 --- a/src/mame/video/ampoker2.c +++ b/src/mame/video/ampoker2.c @@ -115,15 +115,19 @@ PALETTE_INIT( ampoker2 ) WRITE8_HANDLER( ampoker2_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + ampoker2_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } static TILE_GET_INFO( get_bg_tile_info ) { + ampoker2_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offs = tile_index * 2; - int attr = machine->generic.videoram.u8[offs + 1]; - int code = machine->generic.videoram.u8[offs]; + int attr = videoram[offs + 1]; + int code = videoram[offs]; int color = attr; code = code + (256 * (color & 0x03)); /* code = color.bit1 + color.bit0 + code */ color = color >> 1; /* color = color - bit0 (bit1..bit7) */ @@ -133,9 +137,11 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( s2k_get_bg_tile_info ) { + ampoker2_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offs = tile_index * 2; - int attr = machine->generic.videoram.u8[offs + 1]; - int code = machine->generic.videoram.u8[offs]; + int attr = videoram[offs + 1]; + int code = videoram[offs]; int color = attr; code = code + (256 * (color & 0x0f)); /* the game uses 2 extra bits */ color = color >> 1; diff --git a/src/mame/video/astrocde.c b/src/mame/video/astrocde.c index 08c639cf510..ae22395eb0f 100644 --- a/src/mame/video/astrocde.c +++ b/src/mame/video/astrocde.c @@ -303,6 +303,8 @@ static void init_savestate(running_machine *machine) VIDEO_UPDATE( astrocde ) { + astrocde_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int xystep = 2 - video_mode; UINT32 sparklebase = 0; int y; @@ -341,7 +343,7 @@ VIDEO_UPDATE( astrocde ) int xx; /* select either video data or background data */ - data = (effx >= 0 && effx < 80 && effy >= 0 && effy < vblank) ? screen->machine->generic.videoram.u8[offset++] : bgdata; + data = (effx >= 0 && effx < 80 && effy >= 0 && effy < vblank) ? videoram[offset++] : bgdata; /* iterate over the 4 pixels */ for (xx = 0; xx < 4; xx++) diff --git a/src/mame/video/atetris.c b/src/mame/video/atetris.c index 0712b90b182..285ff7d29f3 100644 --- a/src/mame/video/atetris.c +++ b/src/mame/video/atetris.c @@ -19,8 +19,10 @@ static tilemap_t *bg_tilemap; static TILE_GET_INFO( get_tile_info ) { - int code = machine->generic.videoram.u8[tile_index * 2] | ((machine->generic.videoram.u8[tile_index * 2 + 1] & 7) << 8); - int color = (machine->generic.videoram.u8[tile_index * 2 + 1] & 0xf0) >> 4; + atetris_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index * 2] | ((videoram[tile_index * 2 + 1] & 7) << 8); + int color = (videoram[tile_index * 2 + 1] & 0xf0) >> 4; SET_TILE_INFO(0, code, color, 0); } @@ -35,7 +37,9 @@ static TILE_GET_INFO( get_tile_info ) WRITE8_HANDLER( atetris_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + atetris_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } diff --git a/src/mame/video/balsente.c b/src/mame/video/balsente.c index 012dcb58427..2e6f83e5362 100644 --- a/src/mame/video/balsente.c +++ b/src/mame/video/balsente.c @@ -46,8 +46,6 @@ WRITE8_HANDLER( balsente_videoram_w ) { balsente_state *state = space->machine->driver_data(); - space->machine->generic.videoram.u8[offset] = data; - /* expand the two pixel values into two bytes */ state->videoram[offset * 2 + 0] = data >> 4; state->videoram[offset * 2 + 1] = data & 15; diff --git a/src/mame/video/beezer.c b/src/mame/video/beezer.c index dc34cfbdd9d..7c314462a6a 100644 --- a/src/mame/video/beezer.c +++ b/src/mame/video/beezer.c @@ -19,13 +19,15 @@ INTERRUPT_GEN( beezer_interrupt ) VIDEO_UPDATE( beezer ) { + beezer_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int x,y; for (y = cliprect->min_y; y <= cliprect->max_y; y+=2) for (x = cliprect->min_x; x <= cliprect->max_x; x++) { - *BITMAP_ADDR16(bitmap, y+1, x) = screen->machine->generic.videoram.u8[0x80*y+x] & 0x0f; - *BITMAP_ADDR16(bitmap, y, x) = screen->machine->generic.videoram.u8[0x80*y+x] >> 4; + *BITMAP_ADDR16(bitmap, y+1, x) = videoram[0x80*y+x] & 0x0f; + *BITMAP_ADDR16(bitmap, y, x) = videoram[0x80*y+x] >> 4; } return 0; diff --git a/src/mame/video/centiped.c b/src/mame/video/centiped.c index fe19a16cc2d..aefc8ee4ffc 100644 --- a/src/mame/video/centiped.c +++ b/src/mame/video/centiped.c @@ -23,14 +23,18 @@ static UINT8 penmask[64]; static TILE_GET_INFO( centiped_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index]; + centiped_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index]; SET_TILE_INFO(0, (data & 0x3f) + 0x40, 0, TILE_FLIPYX(data >> 6)); } static TILE_GET_INFO( warlords_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index]; + centiped_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index]; int color = ((tile_index & 0x10) >> 4) | ((tile_index & 0x200) >> 8) | (centiped_flipscreen >> 5); SET_TILE_INFO(0, data & 0x3f, color, TILE_FLIPYX(data >> 6)); } @@ -38,7 +42,9 @@ static TILE_GET_INFO( warlords_get_tile_info ) static TILE_GET_INFO( milliped_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index]; + centiped_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index]; int bank = (data >> 6) & 1; int color = (data >> 6) & 3; /* Flip both x and y if flipscreen is non-zero */ @@ -49,7 +55,9 @@ static TILE_GET_INFO( milliped_get_tile_info ) static TILE_GET_INFO( bullsdrt_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index]; + centiped_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index]; int bank = bullsdrt_tiles_bankram[tile_index & 0x1f] & 0x0f; SET_TILE_INFO(0, (data & 0x3f) + 0x40 * bank, 0, TILE_FLIPYX(data >> 6)); } @@ -136,7 +144,9 @@ VIDEO_START( bullsdrt ) WRITE8_HANDLER( centiped_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + centiped_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } diff --git a/src/mame/video/cloak.c b/src/mame/video/cloak.c index 12868d3978e..c950043c587 100644 --- a/src/mame/video/cloak.c +++ b/src/mame/video/cloak.c @@ -149,7 +149,9 @@ WRITE8_HANDLER( graph_processor_w ) WRITE8_HANDLER( cloak_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + cloak_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -160,7 +162,9 @@ WRITE8_HANDLER( cloak_flipscreen_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; + cloak_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; SET_TILE_INFO(0, code, 0, 0); } diff --git a/src/mame/video/darkmist.c b/src/mame/video/darkmist.c index 6d5d8d367d5..32c82dfad95 100644 --- a/src/mame/video/darkmist.c +++ b/src/mame/video/darkmist.c @@ -53,10 +53,12 @@ static TILE_GET_INFO( get_fgtile_info ) static TILE_GET_INFO( get_txttile_info ) { + darkmist_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int code,attr,pal; - code=machine->generic.videoram.u8[tile_index]; - attr=machine->generic.videoram.u8[tile_index+0x400]; + code=videoram[tile_index]; + attr=videoram[tile_index+0x400]; pal=(attr>>1); code+=(attr&1)<<8; diff --git a/src/mame/video/deadang.c b/src/mame/video/deadang.c index a61fad2cb46..f08b374c1ed 100644 --- a/src/mame/video/deadang.c +++ b/src/mame/video/deadang.c @@ -15,7 +15,9 @@ WRITE16_HANDLER( deadang_foreground_w ) WRITE16_HANDLER( deadang_text_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + deadang_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty( text_layer, offset ); } @@ -64,8 +66,10 @@ static TILE_GET_INFO( get_pf1_tile_info ) static TILE_GET_INFO( get_text_tile_info ) { - int tile=(machine->generic.videoram.u16[tile_index] & 0xff) | ((machine->generic.videoram.u16[tile_index] >> 6) & 0x300); - int color=(machine->generic.videoram.u16[tile_index] >> 8)&0xf; + deadang_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tile=(videoram[tile_index] & 0xff) | ((videoram[tile_index] >> 6) & 0x300); + int color=(videoram[tile_index] >> 8)&0xf; SET_TILE_INFO(0,tile,color,0); } diff --git a/src/mame/video/dynduke.c b/src/mame/video/dynduke.c index de0b46158bc..945e9c93e32 100644 --- a/src/mame/video/dynduke.c +++ b/src/mame/video/dynduke.c @@ -32,7 +32,9 @@ WRITE16_HANDLER( dynduke_foreground_w ) WRITE16_HANDLER( dynduke_text_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + dynduke_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(tx_layer,offset); } @@ -66,7 +68,9 @@ static TILE_GET_INFO( get_fg_tile_info ) static TILE_GET_INFO( get_tx_tile_info ) { - int tile=machine->generic.videoram.u16[tile_index]; + dynduke_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tile=videoram[tile_index]; int color=(tile >> 8) & 0x0f; tile = (tile & 0xff) | ((tile & 0xc000) >> 6); diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c index f46e35a46b2..63ce65190bd 100644 --- a/src/mame/video/galaxian.c +++ b/src/mame/video/galaxian.c @@ -528,9 +528,11 @@ VIDEO_UPDATE( galaxian ) static TILE_GET_INFO( bg_get_tile_info ) { + galaxian_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; UINT8 x = tile_index & 0x1f; - UINT16 code = machine->generic.videoram.u8[tile_index]; + UINT16 code = videoram[tile_index]; UINT8 attrib = machine->generic.spriteram.u8[x*2+1]; UINT8 color = attrib & 7; @@ -543,11 +545,13 @@ static TILE_GET_INFO( bg_get_tile_info ) WRITE8_HANDLER( galaxian_videoram_w ) { + galaxian_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; /* update any video up to the current scanline */ space->machine->primary_screen->update_now(); /* store the data and mark the corresponding tile dirty */ - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } diff --git a/src/mame/video/gatron.c b/src/mame/video/gatron.c index cc7d22a2753..ebe76f96cf3 100644 --- a/src/mame/video/gatron.c +++ b/src/mame/video/gatron.c @@ -25,12 +25,16 @@ static tilemap_t *bg_tilemap; WRITE8_HANDLER( gat_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + gatron_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } static TILE_GET_INFO( get_bg_tile_info ) { + gatron_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; /* - bits - 7654 3210 xxxx xxxx tiles code. @@ -38,7 +42,7 @@ static TILE_GET_INFO( get_bg_tile_info ) only one color code */ - int code = machine->generic.videoram.u8[tile_index]; + int code = videoram[tile_index]; SET_TILE_INFO(0, code, 0, 0); } diff --git a/src/mame/video/gottlieb.c b/src/mame/video/gottlieb.c index 9621236281d..3afb1a1cb73 100644 --- a/src/mame/video/gottlieb.c +++ b/src/mame/video/gottlieb.c @@ -112,7 +112,9 @@ WRITE8_HANDLER( gottlieb_laserdisc_video_control_w ) WRITE8_HANDLER( gottlieb_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + gottlieb_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -136,7 +138,9 @@ WRITE8_HANDLER( gottlieb_charram_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; + gottlieb_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; if ((code & 0x80) == 0) SET_TILE_INFO(gottlieb_gfxcharlo, code, 0, 0); else @@ -145,7 +149,9 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( get_screwloo_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; + gottlieb_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; if ((code & 0xc0) == 0) SET_TILE_INFO(gottlieb_gfxcharlo, code, 0, 0); else diff --git a/src/mame/video/gridlee.c b/src/mame/video/gridlee.c index c0aaae1adf4..338d5e17d50 100644 --- a/src/mame/video/gridlee.c +++ b/src/mame/video/gridlee.c @@ -62,12 +62,14 @@ PALETTE_INIT( gridlee ) static STATE_POSTLOAD( expand_pixels ) { + gridlee_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offset = 0; for(offset = 0; offset < 0x77ff; offset++) { - local_videoram[offset * 2 + 0] = machine->generic.videoram.u8[offset] >> 4; - local_videoram[offset * 2 + 1] = machine->generic.videoram.u8[offset] & 15; + local_videoram[offset * 2 + 0] = videoram[offset] >> 4; + local_videoram[offset * 2 + 1] = videoram[offset] & 15; } } @@ -115,7 +117,9 @@ WRITE8_HANDLER( gridlee_cocktail_flip_w ) WRITE8_HANDLER( gridlee_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + gridlee_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; /* expand the two pixel values into two bytes */ local_videoram[offset * 2 + 0] = data >> 4; diff --git a/src/mame/video/gsword.c b/src/mame/video/gsword.c index d5b9695496a..44fde9f32a5 100644 --- a/src/mame/video/gsword.c +++ b/src/mame/video/gsword.c @@ -103,7 +103,9 @@ PALETTE_INIT( gsword ) WRITE8_HANDLER( gsword_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + gsword_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -151,7 +153,9 @@ WRITE8_HANDLER( gsword_scroll_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index] + ((charbank & 0x03) << 8); + gsword_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index] + ((charbank & 0x03) << 8); int color = ((code & 0x3c0) >> 6) + 16 * charpalbank; int flags = flipscreen ? (TILE_FLIPX | TILE_FLIPY) : 0; diff --git a/src/mame/video/irobot.c b/src/mame/video/irobot.c index ba28fbf093e..a7f7bb413fe 100644 --- a/src/mame/video/irobot.c +++ b/src/mame/video/irobot.c @@ -348,6 +348,8 @@ void irobot_run_video(void) VIDEO_UPDATE( irobot ) { + irobot_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; UINT8 *bitmap_base = irobot_bufsel ? polybitmap1 : polybitmap2; int x, y, offs; @@ -359,8 +361,8 @@ VIDEO_UPDATE( irobot ) for (y = offs = 0; y < 32; y++) for (x = 0; x < 32; x++, offs++) { - int code = screen->machine->generic.videoram.u8[offs] & 0x3f; - int color = ((screen->machine->generic.videoram.u8[offs] & 0xc0) >> 6) | (irobot_alphamap >> 3); + int code = videoram[offs] & 0x3f; + int color = ((videoram[offs] & 0xc0) >> 6) | (irobot_alphamap >> 3); drawgfx_transpen(bitmap,cliprect,screen->machine->gfx[0], code, color, diff --git a/src/mame/video/itech32.c b/src/mame/video/itech32.c index 19c2e47fe4d..3b81e40215f 100644 --- a/src/mame/video/itech32.c +++ b/src/mame/video/itech32.c @@ -201,15 +201,16 @@ INLINE void enable_clipping(void) VIDEO_START( itech32 ) { + itech32_state *state = machine->driver_data(); int i; /* allocate memory */ - machine->generic.videoram.u16 = auto_alloc_array(machine, UINT16, VRAM_WIDTH * (itech32_vram_height + 16) * 2); - memset(machine->generic.videoram.u16, 0xff, VRAM_WIDTH * (itech32_vram_height + 16) * 2 * 2); + state->videoram = auto_alloc_array(machine, UINT16, VRAM_WIDTH * (itech32_vram_height + 16) * 2); + memset(state->videoram, 0xff, VRAM_WIDTH * (itech32_vram_height + 16) * 2 * 2); /* videoplane[0] is the foreground; videoplane[1] is the background */ - videoplane[0] = &machine->generic.videoram.u16[0 * VRAM_WIDTH * (itech32_vram_height + 16) + 8 * VRAM_WIDTH]; - videoplane[1] = &machine->generic.videoram.u16[1 * VRAM_WIDTH * (itech32_vram_height + 16) + 8 * VRAM_WIDTH]; + videoplane[0] = &state->videoram[0 * VRAM_WIDTH * (itech32_vram_height + 16) + 8 * VRAM_WIDTH]; + videoplane[1] = &state->videoram[1 * VRAM_WIDTH * (itech32_vram_height + 16) + 8 * VRAM_WIDTH]; /* set the masks */ vram_mask = VRAM_WIDTH * itech32_vram_height - 1; diff --git a/src/mame/video/magmax.c b/src/mame/video/magmax.c index 22ecb953d4f..848e42751ce 100644 --- a/src/mame/video/magmax.c +++ b/src/mame/video/magmax.c @@ -92,6 +92,8 @@ VIDEO_START( magmax ) VIDEO_UPDATE( magmax ) { + magmax_state *state = screen->machine->driver_data(); + UINT16 *videoram = state->videoram; UINT16 *spriteram16 = screen->machine->generic.spriteram.u16; int offs; @@ -223,7 +225,7 @@ VIDEO_UPDATE( magmax ) //int page = (*magmax_vreg>>3) & 0x1; int code; - code = screen->machine->generic.videoram.u16[offs /*+ page*/] & 0xff; + code = videoram[offs /*+ page*/] & 0xff; if (code) { int sx = (offs % 32); diff --git a/src/mame/video/mcr.c b/src/mame/video/mcr.c index db8ea6eb471..e3b528bd2c9 100644 --- a/src/mame/video/mcr.c +++ b/src/mame/video/mcr.c @@ -28,7 +28,9 @@ static tilemap_t *bg_tilemap; */ static TILE_GET_INFO( mcr_90009_get_tile_info ) { - SET_TILE_INFO(0, machine->generic.videoram.u8[tile_index], 0, 0); + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + SET_TILE_INFO(0, videoram[tile_index], 0, 0); /* sprite color base is constant 0x10 */ tileinfo->category = 1; @@ -50,7 +52,9 @@ static TILE_GET_INFO( mcr_90009_get_tile_info ) */ static TILE_GET_INFO( mcr_90010_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index * 2] | (machine->generic.videoram.u8[tile_index * 2 + 1] << 8); + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8); int code = data & 0x1ff; int color = (data >> 11) & 3; SET_TILE_INFO(0, code, color, TILE_FLIPYX((data >> 9) & 3)); @@ -75,7 +79,9 @@ static TILE_GET_INFO( mcr_90010_get_tile_info ) */ static TILE_GET_INFO( mcr_91490_get_tile_info ) { - int data = machine->generic.videoram.u8[tile_index * 2] | (machine->generic.videoram.u8[tile_index * 2 + 1] << 8); + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8); int code = data & 0x3ff; int color = (data >> 12) & 3; SET_TILE_INFO(0, code, color, TILE_FLIPYX((data >> 10) & 3)); @@ -179,14 +185,18 @@ WRITE8_HANDLER( mcr_91490_paletteram_w ) WRITE8_HANDLER( mcr_90009_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } WRITE8_HANDLER( mcr_90010_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); /* palette RAM is mapped into the upper 0x80 bytes here */ @@ -202,17 +212,21 @@ WRITE8_HANDLER( mcr_90010_videoram_w ) READ8_HANDLER( twotiger_videoram_r ) { + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; /* Two Tigers swizzles the address bits on videoram */ int effoffs = ((offset << 1) & 0x7fe) | ((offset >> 10) & 1); - return space->machine->generic.videoram.u8[effoffs]; + return videoram[effoffs]; } WRITE8_HANDLER( twotiger_videoram_w ) { + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; /* Two Tigers swizzles the address bits on videoram */ int effoffs = ((offset << 1) & 0x7fe) | ((offset >> 10) & 1); - space->machine->generic.videoram.u8[effoffs] = data; + videoram[effoffs] = data; tilemap_mark_tile_dirty(bg_tilemap, effoffs / 2); /* palette RAM is mapped into the upper 0x80 bytes here */ @@ -223,7 +237,9 @@ WRITE8_HANDLER( twotiger_videoram_w ) WRITE8_HANDLER( mcr_91490_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } diff --git a/src/mame/video/mcr3.c b/src/mame/video/mcr3.c index 8142e179cd0..65c72f42f9b 100644 --- a/src/mame/video/mcr3.c +++ b/src/mame/video/mcr3.c @@ -45,7 +45,9 @@ static tilemap_t *alpha_tilemap; #ifdef UNUSED_FUNCTION static TILE_GET_INFO( get_bg_tile_info ) { - int data = machine->generic.videoram.u8[tile_index * 2] | (machine->generic.videoram.u8[tile_index * 2 + 1] << 8); + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8); int code = (data & 0x3ff) | ((data >> 4) & 0x400); int color = (data >> 12) & 3; SET_TILE_INFO(0, code, color, TILE_FLIPYX((data >> 10) & 3)); @@ -55,7 +57,9 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( mcrmono_get_bg_tile_info ) { - int data = machine->generic.videoram.u8[tile_index * 2] | (machine->generic.videoram.u8[tile_index * 2 + 1] << 8); + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index * 2] | (videoram[tile_index * 2 + 1] << 8); int code = (data & 0x3ff) | ((data >> 4) & 0x400); int color = ((data >> 12) & 3) ^ 3; SET_TILE_INFO(0, code, color, TILE_FLIPYX((data >> 10) & 3)); @@ -71,7 +75,9 @@ static TILEMAP_MAPPER( spyhunt_bg_scan ) static TILE_GET_INFO( spyhunt_get_bg_tile_info ) { - int data = machine->generic.videoram.u8[tile_index]; + mcr_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int data = videoram[tile_index]; int code = (data & 0x3f) | ((data >> 1) & 0x40); SET_TILE_INFO(0, code, 0, (data & 0x40) ? TILE_FLIPY : 0); } @@ -166,14 +172,18 @@ WRITE8_HANDLER( mcr3_paletteram_w ) WRITE8_HANDLER( mcr3_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } WRITE8_HANDLER( spyhunt_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mcr_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } diff --git a/src/mame/video/mcr68.c b/src/mame/video/mcr68.c index 0bb0ff9483b..69574bb6bd0 100644 --- a/src/mame/video/mcr68.c +++ b/src/mame/video/mcr68.c @@ -5,7 +5,7 @@ ***************************************************************************/ #include "emu.h" -#include "includes/mcr.h" +#include "includes/mcr68.h" #define LOW_BYTE(x) ((x) & 0xff) @@ -27,7 +27,9 @@ static tilemap_t *fg_tilemap; static TILE_GET_INFO( get_bg_tile_info ) { - int data = LOW_BYTE(machine->generic.videoram.u16[tile_index * 2]) | (LOW_BYTE(machine->generic.videoram.u16[tile_index * 2 + 1]) << 8); + mcr68_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = LOW_BYTE(videoram[tile_index * 2]) | (LOW_BYTE(videoram[tile_index * 2 + 1]) << 8); int code = (data & 0x3ff) | ((data >> 4) & 0xc00); int color = (~data >> 12) & 3; SET_TILE_INFO(0, code, color, TILE_FLIPYX((data >> 10) & 3)); @@ -38,7 +40,9 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( zwackery_get_bg_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + mcr68_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; int color = (data >> 13) & 7; SET_TILE_INFO(0, data & 0x3ff, color, TILE_FLIPYX((data >> 11) & 3)); } @@ -46,7 +50,9 @@ static TILE_GET_INFO( zwackery_get_bg_tile_info ) static TILE_GET_INFO( zwackery_get_fg_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + mcr68_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; int color = (data >> 13) & 7; SET_TILE_INFO(2, data & 0x3ff, color, TILE_FLIPYX((data >> 11) & 3)); tileinfo->category = (color != 0); @@ -178,14 +184,18 @@ WRITE16_HANDLER( zwackery_paletteram_w ) WRITE16_HANDLER( mcr68_videoram_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + mcr68_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } WRITE16_HANDLER( zwackery_videoram_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + mcr68_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(bg_tilemap, offset); tilemap_mark_tile_dirty(fg_tilemap, offset); } diff --git a/src/mame/video/meadows.c b/src/mame/video/meadows.c index a9a7e0b58fb..a2b3044811a 100644 --- a/src/mame/video/meadows.c +++ b/src/mame/video/meadows.c @@ -23,7 +23,9 @@ static tilemap_t *bg_tilemap; static TILE_GET_INFO( get_tile_info ) { - SET_TILE_INFO(0, machine->generic.videoram.u8[tile_index] & 0x7f, 0, 0); + meadows_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + SET_TILE_INFO(0, videoram[tile_index] & 0x7f, 0, 0); } @@ -49,7 +51,9 @@ VIDEO_START( meadows ) WRITE8_HANDLER( meadows_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + meadows_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } diff --git a/src/mame/video/mustache.c b/src/mame/video/mustache.c index a8faf47f942..0f4bd90f6a9 100644 --- a/src/mame/video/mustache.c +++ b/src/mame/video/mustache.c @@ -47,7 +47,9 @@ PALETTE_INIT(mustache) WRITE8_HANDLER( mustache_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + mustache_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } @@ -78,8 +80,10 @@ WRITE8_HANDLER( mustache_scroll_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int attr = machine->generic.videoram.u8[2 * tile_index + 1]; - int code = machine->generic.videoram.u8[2 * tile_index] + ((attr & 0x60) << 3) + ((control_byte & 0x08) << 7); + mustache_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int attr = videoram[2 * tile_index + 1]; + int code = videoram[2 * tile_index] + ((attr & 0x60) << 3) + ((control_byte & 0x08) << 7); int color = attr & 0x0f; SET_TILE_INFO(0, code, color, ((attr & 0x10) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0) ); diff --git a/src/mame/video/namcona1.c b/src/mame/video/namcona1.c index 4fe73057371..eac8bc189d3 100644 --- a/src/mame/video/namcona1.c +++ b/src/mame/video/namcona1.c @@ -78,19 +78,44 @@ static void tilemap_get_info( } } /* tilemap_get_info */ -static TILE_GET_INFO( tilemap_get_info0 ){ tilemap_get_info(machine,tileinfo,tile_index,0*0x1000+machine->generic.videoram.u16,tilemap_palette_bank[0],namcona1_vreg[0xbc/2]&1); } -static TILE_GET_INFO( tilemap_get_info1 ){ tilemap_get_info(machine,tileinfo,tile_index,1*0x1000+machine->generic.videoram.u16,tilemap_palette_bank[1],namcona1_vreg[0xbc/2]&2); } -static TILE_GET_INFO( tilemap_get_info2 ){ tilemap_get_info(machine,tileinfo,tile_index,2*0x1000+machine->generic.videoram.u16,tilemap_palette_bank[2],namcona1_vreg[0xbc/2]&4); } -static TILE_GET_INFO( tilemap_get_info3 ){ tilemap_get_info(machine,tileinfo,tile_index,3*0x1000+machine->generic.videoram.u16,tilemap_palette_bank[3],namcona1_vreg[0xbc/2]&8); } +static TILE_GET_INFO( tilemap_get_info0 ) +{ + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + tilemap_get_info(machine,tileinfo,tile_index,0*0x1000+videoram,tilemap_palette_bank[0],namcona1_vreg[0xbc/2]&1); +} + +static TILE_GET_INFO( tilemap_get_info1 ) +{ + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + tilemap_get_info(machine,tileinfo,tile_index,1*0x1000+videoram,tilemap_palette_bank[1],namcona1_vreg[0xbc/2]&2); +} + +static TILE_GET_INFO( tilemap_get_info2 ) +{ + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + tilemap_get_info(machine,tileinfo,tile_index,2*0x1000+videoram,tilemap_palette_bank[2],namcona1_vreg[0xbc/2]&4); +} + +static TILE_GET_INFO( tilemap_get_info3 ) +{ + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + tilemap_get_info(machine,tileinfo,tile_index,3*0x1000+videoram,tilemap_palette_bank[3],namcona1_vreg[0xbc/2]&8); +} static TILE_GET_INFO( roz_get_info ) { + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; /* each logical tile is constructed from 4*4 normal tiles */ int tilemap_color = roz_palette; int use_4bpp_gfx = namcona1_vreg[0xbc/2]&16; /* ? */ int c = tile_index%0x40; int r = tile_index/0x40; - int data = machine->generic.videoram.u16[0x8000/2+(r/4)*0x40+c/4]&0xfbf; /* mask out bit 0x40 - patch for Emeraldia Japan */ + int data = videoram[0x8000/2+(r/4)*0x40+c/4]&0xfbf; /* mask out bit 0x40 - patch for Emeraldia Japan */ int tile = (data+(c%4)+(r%4)*0x40)&0xfff; int gfx = use_4bpp_gfx; if( use_4bpp_gfx ) @@ -129,7 +154,9 @@ static TILE_GET_INFO( roz_get_info ) WRITE16_HANDLER( namcona1_videoram_w ) { - COMBINE_DATA( &space->machine->generic.videoram.u16[offset] ); + namcona1_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA( &videoram[offset] ); if( offset<0x8000/2 ) { tilemap_mark_tile_dirty( bg_tilemap[offset/0x1000], offset&0xfff ); @@ -142,7 +169,9 @@ WRITE16_HANDLER( namcona1_videoram_w ) READ16_HANDLER( namcona1_videoram_r ) { - return space->machine->generic.videoram.u16[offset]; + namcona1_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + return videoram[offset]; } /* namcona1_videoram_r */ /*************************************************************************/ @@ -537,6 +566,8 @@ static void draw_pixel_line( UINT16 *pDest, UINT8 *pPri, UINT16 *pSource, const static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int which, int primask ) { + namcona1_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; /* scrollx lineselect * tmap0 ffe000 ffe200 * tmap1 ffe400 ffe600 @@ -587,7 +618,7 @@ static void draw_background(running_machine *machine, bitmap_t *bitmap, const re draw_pixel_line( BITMAP_ADDR16(bitmap, line, 0), BITMAP_ADDR8(machine->priority_bitmap, line, 0), - machine->generic.videoram.u16 + ydata + 25, + videoram + ydata + 25, paldata ); } else diff --git a/src/mame/video/namcos21.c b/src/mame/video/namcos21.c index a72a10e25a5..8498b43ce2b 100644 --- a/src/mame/video/namcos21.c +++ b/src/mame/video/namcos21.c @@ -46,6 +46,8 @@ WRITE16_HANDLER(winrun_gpu_register_w) WRITE16_HANDLER( winrun_gpu_videoram_w) { + namcos21_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; int color = data>>8; int mask = data&0xff; int i; @@ -53,14 +55,16 @@ WRITE16_HANDLER( winrun_gpu_videoram_w) { if( mask&(0x01<machine->generic.videoram.u8[(offset+i)&0x7ffff] = color; + videoram[(offset+i)&0x7ffff] = color; } } } /* winrun_gpu_videoram_w */ READ16_HANDLER( winrun_gpu_videoram_r ) { - return space->machine->generic.videoram.u8[offset]<<8; + namcos21_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + return videoram[offset]<<8; } /* winrun_gpu_videoram_r */ static void @@ -127,9 +131,10 @@ static int objcode2tile( int code ) VIDEO_START( namcos21 ) { + namcos21_state *state = machine->driver_data(); if( namcos2_gametype == NAMCOS21_WINRUN91 ) { - machine->generic.videoram.u8 = auto_alloc_array(machine, UINT8, 0x80000); + state->videoram = auto_alloc_array(machine, UINT8, 0x80000); } AllocatePolyFrameBuffer(machine); namco_obj_init(machine, @@ -178,6 +183,8 @@ update_palette( running_machine *machine ) VIDEO_UPDATE( namcos21 ) { + namcos21_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int pivot = 3; int pri; update_palette(screen->machine); @@ -215,7 +222,7 @@ VIDEO_UPDATE( namcos21 ) int sx,sy; for( sy=cliprect->min_y; sy<=cliprect->max_y; sy++ ) { - const UINT8 *pSource = &screen->machine->generic.videoram.u8[((yscroll+sy)&0x3ff)*0x200]; + const UINT8 *pSource = &videoram[((yscroll+sy)&0x3ff)*0x200]; UINT16 *pDest = BITMAP_ADDR16(bitmap, sy, 0); for( sx=cliprect->min_x; sx<=cliprect->max_x; sx++ ) { diff --git a/src/mame/video/naughtyb.c b/src/mame/video/naughtyb.c index 2238b2567a2..79a658fd7b2 100644 --- a/src/mame/video/naughtyb.c +++ b/src/mame/video/naughtyb.c @@ -8,7 +8,8 @@ #include "emu.h" #include "video/resnet.h" -#include "includes/phoenix.h" +#include "audio/pleiads.h" +#include "includes/naughtyb.h" UINT8 *naughtyb_videoram2; @@ -211,11 +212,13 @@ WRITE8_HANDLER( popflame_videoreg_w ) ***************************************************************************/ VIDEO_UPDATE( naughtyb ) { + naughtyb_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int offs; // for every character in the Video RAM - for (offs = screen->machine->generic.videoram_size - 1;offs >= 0;offs--) + for (offs = 0x800 - 1; offs >= 0; offs--) { int sx,sy; @@ -253,8 +256,8 @@ VIDEO_UPDATE( naughtyb ) 8*sx,8*sy); drawgfx_transpen(screen->machine->generic.tmpbitmap,0,screen->machine->gfx[1], - screen->machine->generic.videoram.u8[offs] + 256*bankreg, - (screen->machine->generic.videoram.u8[offs] >> 5) + 8 * palreg, + videoram[offs] + 256*bankreg, + (videoram[offs] >> 5) + 8 * palreg, naughtyb_cocktail,naughtyb_cocktail, 8*sx,8*sy,0); } diff --git a/src/mame/video/pcktgal.c b/src/mame/video/pcktgal.c index 9a2364fd6b3..eb5a3ea7ce5 100644 --- a/src/mame/video/pcktgal.c +++ b/src/mame/video/pcktgal.c @@ -33,7 +33,9 @@ PALETTE_INIT( pcktgal ) WRITE8_HANDLER( pcktgal_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + pcktgal_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } @@ -48,8 +50,10 @@ WRITE8_HANDLER( pcktgal_flipscreen_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index*2+1] + ((machine->generic.videoram.u8[tile_index*2] & 0x0f) << 8); - int color = machine->generic.videoram.u8[tile_index*2] >> 4; + pcktgal_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index*2+1] + ((videoram[tile_index*2] & 0x0f) << 8); + int color = videoram[tile_index*2] >> 4; SET_TILE_INFO(0, code, color, 0); } diff --git a/src/mame/video/phoenix.c b/src/mame/video/phoenix.c index e784a0dd3e5..693b6be307b 100644 --- a/src/mame/video/phoenix.c +++ b/src/mame/video/phoenix.c @@ -8,6 +8,7 @@ #include "emu.h" #include "video/resnet.h" +#include "audio/pleiads.h" #include "includes/phoenix.h" static UINT8 *videoram_pg[2]; diff --git a/src/mame/video/pitnrun.c b/src/mame/video/pitnrun.c index 06b7ae9955b..3fd7d2c7eaa 100644 --- a/src/mame/video/pitnrun.c +++ b/src/mame/video/pitnrun.c @@ -32,8 +32,10 @@ UINT8* pitnrun_videoram2; static TILE_GET_INFO( get_tile_info1 ) { + pitnrun_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int code; - code = machine->generic.videoram.u8[tile_index]; + code = videoram[tile_index]; SET_TILE_INFO( 0, code, @@ -54,7 +56,9 @@ static TILE_GET_INFO( get_tile_info2 ) WRITE8_HANDLER( pitnrun_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + pitnrun_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_all_tiles_dirty( fg ); } diff --git a/src/mame/video/playch10.c b/src/mame/video/playch10.c index 4fecf9aa8c3..be19efc71de 100644 --- a/src/mame/video/playch10.c +++ b/src/mame/video/playch10.c @@ -8,9 +8,11 @@ static tilemap_t *bg_tilemap; WRITE8_HANDLER( playch10_videoram_w ) { + playch10_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; if (pc10_sdcs) { - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } } @@ -85,9 +87,11 @@ const ppu2c0x_interface playch10_ppu_interface_hboard = static TILE_GET_INFO( get_bg_tile_info ) { + playch10_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offs = tile_index * 2; - int code = machine->generic.videoram.u8[offs] + ((machine->generic.videoram.u8[offs + 1] & 0x07) << 8); - int color = (machine->generic.videoram.u8[offs + 1] >> 3) & 0x1f; + int code = videoram[offs] + ((videoram[offs + 1] & 0x07) << 8); + int color = (videoram[offs + 1] >> 3) & 0x1f; SET_TILE_INFO(0, code, color, 0); } diff --git a/src/mame/video/pokechmp.c b/src/mame/video/pokechmp.c index 573f41b42d4..9227e819210 100644 --- a/src/mame/video/pokechmp.c +++ b/src/mame/video/pokechmp.c @@ -7,7 +7,9 @@ static tilemap_t *bg_tilemap; WRITE8_HANDLER( pokechmp_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + pokechmp_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } @@ -22,8 +24,10 @@ WRITE8_HANDLER( pokechmp_flipscreen_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index*2+1] + ((machine->generic.videoram.u8[tile_index*2] & 0x3f) << 8); - int color = machine->generic.videoram.u8[tile_index*2] >> 6; + pokechmp_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index*2+1] + ((videoram[tile_index*2] & 0x3f) << 8); + int color = videoram[tile_index*2] >> 6; SET_TILE_INFO(0, code, color, 0); } diff --git a/src/mame/video/polyplay.c b/src/mame/video/polyplay.c index 93b8d7ac058..0159e7db7a0 100644 --- a/src/mame/video/polyplay.c +++ b/src/mame/video/polyplay.c @@ -51,14 +51,16 @@ VIDEO_START( polyplay ) VIDEO_UPDATE( polyplay ) { + polyplay_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; offs_t offs; - for (offs = 0; offs < screen->machine->generic.videoram_size; offs++) + for (offs = 0; offs < 0x800; offs++) { int sx = (offs & 0x3f) << 3; int sy = offs >> 6 << 3; - UINT8 code = screen->machine->generic.videoram.u8[offs]; + UINT8 code = videoram[offs]; drawgfx_opaque(bitmap,cliprect, screen->machine->gfx[(code >> 7) & 0x01], code, 0, 0, 0, sx, sy); diff --git a/src/mame/video/raiden.c b/src/mame/video/raiden.c index 34d1519847e..671be4a0df1 100644 --- a/src/mame/video/raiden.c +++ b/src/mame/video/raiden.c @@ -22,7 +22,9 @@ WRITE16_HANDLER( raiden_foreground_w ) WRITE16_HANDLER( raiden_text_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + raiden_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(tx_layer, offset); } @@ -56,7 +58,9 @@ static TILE_GET_INFO( get_fore_tile_info ) static TILE_GET_INFO( get_text_tile_info ) { - int tiledata = machine->generic.videoram.u16[tile_index]; + raiden_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tiledata = videoram[tile_index]; int tile = (tiledata & 0xff) | ((tiledata >> 6) & 0x300); int color = (tiledata >> 8) & 0x0f; diff --git a/src/mame/video/renegade.c b/src/mame/video/renegade.c index ff5fed5b6d2..521fefb7ce1 100644 --- a/src/mame/video/renegade.c +++ b/src/mame/video/renegade.c @@ -14,7 +14,9 @@ static tilemap_t *fg_tilemap; WRITE8_HANDLER( renegade_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + renegade_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; offset = offset % (64 * 16); tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -43,7 +45,9 @@ WRITE8_HANDLER( renegade_scroll1_w ) static TILE_GET_INFO( get_bg_tilemap_info ) { - const UINT8 *source = &machine->generic.videoram.u8[tile_index]; + renegade_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + const UINT8 *source = &videoram[tile_index]; UINT8 attributes = source[0x400]; /* CCC??BBB */ SET_TILE_INFO( 1 + (attributes & 0x7), diff --git a/src/mame/video/rpunch.c b/src/mame/video/rpunch.c index 29a9bd49d97..d5cff954c15 100644 --- a/src/mame/video/rpunch.c +++ b/src/mame/video/rpunch.c @@ -42,7 +42,9 @@ static UINT8 bins, gins; static TILE_GET_INFO( get_bg0_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + rpunch_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; int code; if (videoflags & 0x0400) code = (data & 0x0fff) | 0x2000; else code = (data & 0x1fff); @@ -56,7 +58,9 @@ static TILE_GET_INFO( get_bg0_tile_info ) static TILE_GET_INFO( get_bg1_tile_info ) { - int data = machine->generic.videoram.u16[machine->generic.videoram_size / 4 + tile_index]; + rpunch_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[0x4000 / 2 + tile_index]; int code; if (videoflags & 0x0800) code = (data & 0x0fff) | 0x2000; else code = (data & 0x1fff); @@ -109,9 +113,11 @@ VIDEO_START( rpunch ) WRITE16_HANDLER( rpunch_videoram_w ) { + rpunch_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; int tmap = offset >> 12; int tile_index = offset & 0xfff; - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(background[tmap],tile_index); } diff --git a/src/mame/video/segag80r.c b/src/mame/video/segag80r.c index 5a45df4f15b..49edd46d11d 100644 --- a/src/mame/video/segag80r.c +++ b/src/mame/video/segag80r.c @@ -199,6 +199,8 @@ static TILE_GET_INFO( bg_get_tile_info ) VIDEO_START( segag80r ) { + segag80r_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; static const int rg_resistances[3] = { 4700, 2400, 1200 }; static const int b_resistances[2] = { 2000, 1000 }; @@ -208,7 +210,7 @@ VIDEO_START( segag80r ) 3, rg_resistances, gweights, 220, 0, 2, b_resistances, bweights, 220, 0); - gfx_element_set_source(machine->gfx[0], &machine->generic.videoram.u8[0x800]); + gfx_element_set_source(machine->gfx[0], &videoram[0x800]); /* allocate paletteram */ machine->generic.paletteram.u8 = auto_alloc_array(machine, UINT8, 0x80); @@ -271,6 +273,8 @@ VIDEO_START( segag80r ) WRITE8_HANDLER( segag80r_videoram_w ) { + segag80r_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; /* accesses to the upper half of VRAM go to paletteram if selected */ if ((offset & 0x1000) && (video_control & 0x02)) { @@ -281,7 +285,7 @@ WRITE8_HANDLER( segag80r_videoram_w ) } /* all other accesses go to videoram */ - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; /* track which characters are dirty */ if (offset & 0x800) @@ -643,6 +647,8 @@ WRITE8_HANDLER( sindbadm_back_port_w ) static void draw_videoram(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *transparent_pens) { + segag80r_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int flipmask = video_flip ? 0x1f : 0x00; int x, y; @@ -653,7 +659,7 @@ static void draw_videoram(running_machine *machine, bitmap_t *bitmap, const rect for (x = cliprect->min_x / 8; x <= cliprect->max_x / 8; x++) { int offs = effy * 32 + (x ^ flipmask); - UINT8 tile = machine->generic.videoram.u8[offs]; + UINT8 tile = videoram[offs]; /* draw the tile */ drawgfx_transmask(bitmap, cliprect, machine->gfx[0], tile, tile >> 4, video_flip, video_flip, x*8, y*8, transparent_pens[tile >> 4]); diff --git a/src/mame/video/shangkid.c b/src/mame/video/shangkid.c index ce2c03a66e0..f8ac89894b9 100644 --- a/src/mame/video/shangkid.c +++ b/src/mame/video/shangkid.c @@ -11,8 +11,10 @@ int shangkid_gfx_type; static TILE_GET_INFO( get_bg_tile_info ){ - int attributes = machine->generic.videoram.u8[tile_index+0x800]; - int tile_number = machine->generic.videoram.u8[tile_index]+0x100*(attributes&0x3); + shangkid_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int attributes = videoram[tile_index+0x800]; + int tile_number = videoram[tile_index]+0x100*(attributes&0x3); int color; if( shangkid_gfx_type==1 ) @@ -56,7 +58,9 @@ VIDEO_START( shangkid ) WRITE8_HANDLER( shangkid_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + shangkid_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty( background, offset&0x7ff ); } @@ -215,6 +219,8 @@ PALETTE_INIT( dynamski ) static void dynamski_draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri ) { + shangkid_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int i; int sx,sy; int tile; @@ -243,8 +249,8 @@ static void dynamski_draw_background(running_machine *machine, bitmap_t *bitmap, sx+=16; } - tile = machine->generic.videoram.u8[i]; - attr = machine->generic.videoram.u8[i+0x400]; + tile = videoram[i]; + attr = videoram[i+0x400]; /* x---.---- priority? -xx-.---- bank @@ -267,6 +273,8 @@ static void dynamski_draw_background(running_machine *machine, bitmap_t *bitmap, static void dynamski_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) { + shangkid_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int i; int sx,sy; int tile; @@ -275,13 +283,13 @@ static void dynamski_draw_sprites(running_machine *machine, bitmap_t *bitmap, co int color; for( i=0x7e; i>=0x00; i-=2 ) { - bank = machine->generic.videoram.u8[0x1b80+i]; - attr = machine->generic.videoram.u8[0x1b81+i]; - tile = machine->generic.videoram.u8[0xb80+i]; - color = machine->generic.videoram.u8[0xb81+i]; - sy = 240-machine->generic.videoram.u8[0x1380+i]; + bank = videoram[0x1b80+i]; + attr = videoram[0x1b81+i]; + tile = videoram[0xb80+i]; + color = videoram[0xb81+i]; + sy = 240-videoram[0x1380+i]; - sx = machine->generic.videoram.u8[0x1381+i]-64+8+16; + sx = videoram[0x1381+i]-64+8+16; if( attr&1 ) sx += 0x100; drawgfx_transpen( diff --git a/src/mame/video/sprint4.c b/src/mame/video/sprint4.c index a82ee58ca13..4bc1eb33811 100644 --- a/src/mame/video/sprint4.c +++ b/src/mame/video/sprint4.c @@ -43,7 +43,9 @@ PALETTE_INIT( sprint4 ) static TILE_GET_INFO( sprint4_tile_info ) { - UINT8 code = machine->generic.videoram.u8[tile_index]; + sprint4_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + UINT8 code = videoram[tile_index]; if ((code & 0x30) == 0x30) SET_TILE_INFO(0, code & ~0x40, (code >> 6) ^ 3, 0); @@ -62,6 +64,8 @@ VIDEO_START( sprint4 ) VIDEO_UPDATE( sprint4 ) { + sprint4_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int i; tilemap_draw(bitmap, cliprect, playfield, 0, 0); @@ -70,10 +74,10 @@ VIDEO_UPDATE( sprint4 ) { int bank = 0; - UINT8 horz = screen->machine->generic.videoram.u8[0x390 + 2 * i + 0]; - UINT8 attr = screen->machine->generic.videoram.u8[0x390 + 2 * i + 1]; - UINT8 vert = screen->machine->generic.videoram.u8[0x398 + 2 * i + 0]; - UINT8 code = screen->machine->generic.videoram.u8[0x398 + 2 * i + 1]; + UINT8 horz = videoram[0x390 + 2 * i + 0]; + UINT8 attr = videoram[0x390 + 2 * i + 1]; + UINT8 vert = videoram[0x398 + 2 * i + 0]; + UINT8 code = videoram[0x398 + 2 * i + 1]; if (i & 1) bank = 32; @@ -91,6 +95,8 @@ VIDEO_UPDATE( sprint4 ) VIDEO_EOF( sprint4 ) { + sprint4_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int i; /* check for sprite-playfield collisions */ @@ -106,9 +112,9 @@ VIDEO_EOF( sprint4 ) int bank = 0; - UINT8 horz = machine->generic.videoram.u8[0x390 + 2 * i + 0]; - UINT8 vert = machine->generic.videoram.u8[0x398 + 2 * i + 0]; - UINT8 code = machine->generic.videoram.u8[0x398 + 2 * i + 1]; + UINT8 horz = videoram[0x390 + 2 * i + 0]; + UINT8 vert = videoram[0x398 + 2 * i + 0]; + UINT8 code = videoram[0x398 + 2 * i + 1]; rect.min_x = horz - 15; rect.min_y = vert - 15; @@ -137,15 +143,17 @@ VIDEO_EOF( sprint4 ) /* update sound status */ - discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_1, machine->generic.videoram.u8[0x391] & 15); - discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_2, machine->generic.videoram.u8[0x393] & 15); - discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_3, machine->generic.videoram.u8[0x395] & 15); - discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_4, machine->generic.videoram.u8[0x397] & 15); + discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15); + discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15); + discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15); + discrete_sound_w(discrete, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15); } WRITE8_HANDLER( sprint4_video_ram_w ) { - space->machine->generic.videoram.u8[offset] = data; + sprint4_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(playfield, offset); } diff --git a/src/mame/video/strnskil.c b/src/mame/video/strnskil.c index 2f1877c1049..4dbe26c8d7e 100644 --- a/src/mame/video/strnskil.c +++ b/src/mame/video/strnskil.c @@ -49,7 +49,9 @@ PALETTE_INIT( strnskil ) WRITE8_HANDLER( strnskil_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + strnskil_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset / 2); } @@ -66,8 +68,10 @@ WRITE8_HANDLER( strnskil_scrl_ctrl_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int attr = machine->generic.videoram.u8[tile_index * 2]; - int code = machine->generic.videoram.u8[(tile_index * 2) + 1] + ((attr & 0x60) << 3); + strnskil_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int attr = videoram[tile_index * 2]; + int code = videoram[(tile_index * 2) + 1] + ((attr & 0x60) << 3); int color = (attr & 0x1f) | ((attr & 0x80) >> 2); SET_TILE_INFO(0, code, color, 0); diff --git a/src/mame/video/subs.c b/src/mame/video/subs.c index 083023c7949..528fe9e833d 100644 --- a/src/mame/video/subs.c +++ b/src/mame/video/subs.c @@ -39,6 +39,8 @@ WRITE8_HANDLER( subs_invert2_w ) VIDEO_UPDATE( subs ) { + subs_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; UINT8 *spriteram = screen->machine->generic.spriteram.u8; int offs; @@ -48,7 +50,7 @@ VIDEO_UPDATE( subs ) /* for every character in the Video RAM, check if it has been modified */ /* since last time and update it accordingly. */ - for (offs = screen->machine->generic.videoram_size - 1;offs >= 0;offs--) + for (offs = 0x400 - 1; offs >= 0; offs--) { int charcode; int sx,sy; @@ -58,7 +60,7 @@ VIDEO_UPDATE( subs ) left_sonar_window = 0; right_sonar_window = 0; - charcode = screen->machine->generic.videoram.u8[offs]; + charcode = videoram[offs]; /* Which monitor is this for? */ right_enable = charcode & 0x40; diff --git a/src/mame/video/system1.c b/src/mame/video/system1.c index d7ce3a6c5f1..cc98c133bdf 100644 --- a/src/mame/video/system1.c +++ b/src/mame/video/system1.c @@ -79,7 +79,7 @@ *************************************************************************/ #include "emu.h" -#include "system1.h" +#include "includes/system1.h" static UINT8 *mix_collide; static UINT8 mix_collide_summary; @@ -123,6 +123,7 @@ static TILE_GET_INFO( tile_get_info ) static void video_start_common(running_machine *machine, int pagecount) { + system1_state *state = machine->driver_data(); int pagenum; /* allocate memory for the collision arrays */ @@ -131,14 +132,14 @@ static void video_start_common(running_machine *machine, int pagecount) /* allocate memory for videoram */ tilemap_pages = pagecount; - machine->generic.videoram.u8 = auto_alloc_array_clear(machine, UINT8, 0x800 * pagecount); + state->videoram = auto_alloc_array_clear(machine, UINT8, 0x800 * pagecount); /* create the tilemap pages */ for (pagenum = 0; pagenum < pagecount; pagenum++) { tilemap_page[pagenum] = tilemap_create(machine, tile_get_info, tilemap_scan_rows, 8,8, 32,32); tilemap_set_transparent_pen(tilemap_page[pagenum], 0); - tilemap_set_user_data(tilemap_page[pagenum], machine->generic.videoram.u8 + 0x800 * pagenum); + tilemap_set_user_data(tilemap_page[pagenum], state->videoram + 0x800 * pagenum); } /* allocate a temporary bitmap for sprite rendering */ @@ -148,7 +149,7 @@ static void video_start_common(running_machine *machine, int pagecount) state_save_register_global(machine, system1_video_mode); state_save_register_global(machine, mix_collide_summary); state_save_register_global(machine, sprite_collide_summary); - state_save_register_global_pointer(machine, machine->generic.videoram.u8, 0x800 * pagecount); + state_save_register_global_pointer(machine, state->videoram, 0x800 * pagecount); state_save_register_global_pointer(machine, mix_collide, 64); state_save_register_global_pointer(machine, sprite_collide, 1024); } @@ -261,16 +262,20 @@ INLINE void videoram_wait_states(cpu_device *cpu) READ8_HANDLER( system1_videoram_r ) { + system1_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; videoram_wait_states(space->machine->firstcpu); offset |= 0x1000 * ((videoram_bank >> 1) % (tilemap_pages / 2)); - return space->machine->generic.videoram.u8[offset]; + return videoram[offset]; } WRITE8_HANDLER( system1_videoram_w ) { + system1_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; videoram_wait_states(space->machine->firstcpu); offset |= 0x1000 * ((videoram_bank >> 1) % (tilemap_pages / 2)); - space->machine->generic.videoram.u8[offset] = data; + videoram[offset] = data; tilemap_mark_tile_dirty(tilemap_page[offset / 0x800], (offset % 0x800) / 2); @@ -555,6 +560,8 @@ static void video_update_common(running_device *screen, bitmap_t *bitmap, const VIDEO_UPDATE( system1 ) { + system1_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; bitmap_t *bgpixmaps[4], *fgpixmap; int bgrowscroll[32]; int xscroll, yscroll; @@ -567,8 +574,8 @@ VIDEO_UPDATE( system1 ) fgpixmap = tilemap_get_pixmap(tilemap_page[1]); /* get fixed scroll offsets */ - xscroll = (screen->machine->generic.videoram.u8[0xffc] | (screen->machine->generic.videoram.u8[0xffd] << 8)) / 2 + 14; - yscroll = screen->machine->generic.videoram.u8[0xfbd]; + xscroll = (videoram[0xffc] | (videoram[0xffd] << 8)) / 2 + 14; + yscroll = videoram[0xfbd]; /* adjust for flipping */ if (flip_screen_get(screen->machine)) @@ -589,6 +596,8 @@ VIDEO_UPDATE( system1 ) VIDEO_UPDATE( system2 ) { + system1_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; bitmap_t *bgpixmaps[4], *fgpixmap; int rowscroll[32]; int xscroll, yscroll; @@ -596,10 +605,10 @@ VIDEO_UPDATE( system2 ) int y; /* 4 independent background pages */ - bgpixmaps[0] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x740] & 7]); - bgpixmaps[1] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x742] & 7]); - bgpixmaps[2] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x744] & 7]); - bgpixmaps[3] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x746] & 7]); + bgpixmaps[0] = tilemap_get_pixmap(tilemap_page[videoram[0x740] & 7]); + bgpixmaps[1] = tilemap_get_pixmap(tilemap_page[videoram[0x742] & 7]); + bgpixmaps[2] = tilemap_get_pixmap(tilemap_page[videoram[0x744] & 7]); + bgpixmaps[3] = tilemap_get_pixmap(tilemap_page[videoram[0x746] & 7]); /* foreground is fixed to page 0 */ fgpixmap = tilemap_get_pixmap(tilemap_page[0]); @@ -607,14 +616,14 @@ VIDEO_UPDATE( system2 ) /* get scroll offsets */ if (!flip_screen_get(screen->machine)) { - xscroll = (((screen->machine->generic.videoram.u8[0x7c0] | (screen->machine->generic.videoram.u8[0x7c1] << 8)) / 2) & 0xff) - 256 + 5; - yscroll = screen->machine->generic.videoram.u8[0x7ba]; + xscroll = (((videoram[0x7c0] | (videoram[0x7c1] << 8)) / 2) & 0xff) - 256 + 5; + yscroll = videoram[0x7ba]; sprxoffset = 7; } else { - xscroll = 262+256 - ((((screen->machine->generic.videoram.u8[0x7f6] | (screen->machine->generic.videoram.u8[0x7f7] << 8)) / 2) & 0xff) - 256 + 5); - yscroll = 256+256 - screen->machine->generic.videoram.u8[0x784]; + xscroll = 262+256 - ((((videoram[0x7f6] | (videoram[0x7f7] << 8)) / 2) & 0xff) - 256 + 5); + yscroll = 256+256 - videoram[0x784]; sprxoffset = -7; } @@ -630,16 +639,18 @@ VIDEO_UPDATE( system2 ) VIDEO_UPDATE( system2_rowscroll ) { + system1_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; bitmap_t *bgpixmaps[4], *fgpixmap; int rowscroll[32]; int yscroll; int y; /* 4 independent background pages */ - bgpixmaps[0] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x740] & 7]); - bgpixmaps[1] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x742] & 7]); - bgpixmaps[2] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x744] & 7]); - bgpixmaps[3] = tilemap_get_pixmap(tilemap_page[screen->machine->generic.videoram.u8[0x746] & 7]); + bgpixmaps[0] = tilemap_get_pixmap(tilemap_page[videoram[0x740] & 7]); + bgpixmaps[1] = tilemap_get_pixmap(tilemap_page[videoram[0x742] & 7]); + bgpixmaps[2] = tilemap_get_pixmap(tilemap_page[videoram[0x744] & 7]); + bgpixmaps[3] = tilemap_get_pixmap(tilemap_page[videoram[0x746] & 7]); /* foreground is fixed to page 0 */ fgpixmap = tilemap_get_pixmap(tilemap_page[0]); @@ -648,14 +659,14 @@ VIDEO_UPDATE( system2_rowscroll ) if (!flip_screen_get(screen->machine)) { for (y = 0; y < 32; y++) - rowscroll[y] = (((screen->machine->generic.videoram.u8[0x7c0 + y * 2] | (screen->machine->generic.videoram.u8[0x7c1 + y * 2] << 8)) / 2) & 0xff) - 256 + 5; - yscroll = screen->machine->generic.videoram.u8[0x7ba]; + rowscroll[y] = (((videoram[0x7c0 + y * 2] | (videoram[0x7c1 + y * 2] << 8)) / 2) & 0xff) - 256 + 5; + yscroll = videoram[0x7ba]; } else { for (y = 0; y < 32; y++) - rowscroll[y] = 262+256 - ((((screen->machine->generic.videoram.u8[0x7fe - y * 2] | (screen->machine->generic.videoram.u8[0x7ff - y * 2] << 8)) / 2) & 0xff) - 256 + 5); - yscroll = 256+256 - screen->machine->generic.videoram.u8[0x784]; + rowscroll[y] = 262+256 - ((((videoram[0x7fe - y * 2] | (videoram[0x7ff - y * 2] << 8)) / 2) & 0xff) - 256 + 5); + yscroll = 256+256 - videoram[0x784]; } /* common update */ diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c index 083e3abe03a..bfc14a1f8aa 100644 --- a/src/mame/video/taito_f3.c +++ b/src/mame/video/taito_f3.c @@ -525,13 +525,15 @@ static TILE_GET_INFO( get_tile_info4 ) static TILE_GET_INFO( get_tile_info_vram ) { + taito_f3_state *state = machine->driver_data(); + UINT32 *videoram = state->videoram; int vram_tile; int flags=0; if (tile_index&1) - vram_tile = (machine->generic.videoram.u32[tile_index>>1]&0xffff); + vram_tile = (videoram[tile_index>>1]&0xffff); else - vram_tile = (machine->generic.videoram.u32[tile_index>>1]>>16); + vram_tile = (videoram[tile_index>>1]>>16); if (vram_tile&0x0100) flags|=TILE_FLIPX; if (vram_tile&0x8000) flags|=TILE_FLIPY; @@ -545,6 +547,8 @@ static TILE_GET_INFO( get_tile_info_vram ) static TILE_GET_INFO( get_tile_info_pixel ) { + taito_f3_state *state = machine->driver_data(); + UINT32 *videoram = state->videoram; int vram_tile,col_off; int flags=0; int y_offs=(f3_control_1[2]&0x1ff); @@ -557,9 +561,9 @@ static TILE_GET_INFO( get_tile_info_pixel ) col_off=((tile_index%32)*0x40)+((tile_index&0xfe0)>>5); if (col_off&1) - vram_tile = (machine->generic.videoram.u32[col_off>>1]&0xffff); + vram_tile = (videoram[col_off>>1]&0xffff); else - vram_tile = (machine->generic.videoram.u32[col_off>>1]>>16); + vram_tile = (videoram[col_off>>1]>>16); if (vram_tile&0x0100) flags|=TILE_FLIPX; if (vram_tile&0x8000) flags|=TILE_FLIPY; @@ -793,8 +797,10 @@ WRITE32_HANDLER( f3_control_1_w ) WRITE32_HANDLER( f3_videoram_w ) { + taito_f3_state *state = space->machine->driver_data(); + UINT32 *videoram = state->videoram; int tile,col_off; - COMBINE_DATA(&space->machine->generic.videoram.u32[offset]); + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(vram_layer,offset<<1); tilemap_mark_tile_dirty(vram_layer,(offset<<1)+1); diff --git a/src/mame/video/tankbatt.c b/src/mame/video/tankbatt.c index e43976ca062..2d56d103fed 100644 --- a/src/mame/video/tankbatt.c +++ b/src/mame/video/tankbatt.c @@ -64,14 +64,18 @@ PALETTE_INIT( tankbatt ) WRITE8_HANDLER( tankbatt_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + tankbatt_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; - int color = machine->generic.videoram.u8[tile_index] | 0x01; + tankbatt_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; + int color = videoram[tile_index] | 0x01; SET_TILE_INFO(0, code, color, 0); } diff --git a/src/mame/video/tatsumi.c b/src/mame/video/tatsumi.c index 4caf152a3bf..f91d24008a8 100644 --- a/src/mame/video/tatsumi.c +++ b/src/mame/video/tatsumi.c @@ -130,7 +130,9 @@ bit 0: 3.9kOhm resistor WRITE16_HANDLER( roundup5_text_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + tatsumi_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty( tx_layer,offset); } @@ -179,7 +181,9 @@ WRITE16_HANDLER( roundup5_crt_w ) static TILE_GET_INFO( get_text_tile_info ) { - int tile = machine->generic.videoram.u16[tile_index]; + tatsumi_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tile = videoram[tile_index]; SET_TILE_INFO( 1, tile & 0xfff, diff --git a/src/mame/video/terracre.c b/src/mame/video/terracre.c index 70dcb029d03..770085a7784 100644 --- a/src/mame/video/terracre.c +++ b/src/mame/video/terracre.c @@ -29,7 +29,9 @@ TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( get_fg_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + terracre_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; SET_TILE_INFO( 0,data&0xff,0,0 ); } @@ -160,7 +162,9 @@ WRITE16_HANDLER( amazon_background_w ) WRITE16_HANDLER( amazon_foreground_w ) { - COMBINE_DATA( &space->machine->generic.videoram.u16[offset] ); + terracre_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA( &videoram[offset] ); tilemap_mark_tile_dirty( foreground, offset ); } diff --git a/src/mame/video/thief.c b/src/mame/video/thief.c index 2cac8503f6e..f95028fc125 100644 --- a/src/mame/video/thief.c +++ b/src/mame/video/thief.c @@ -81,13 +81,17 @@ WRITE8_HANDLER( thief_color_plane_w ){ } READ8_HANDLER( thief_videoram_r ){ - UINT8 *source = &space->machine->generic.videoram.u8[offset]; + thief_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + UINT8 *source = &videoram[offset]; if( thief_video_control&0x02 ) source+=0x2000*4; /* foreground/background */ return source[thief_read_mask*0x2000]; } WRITE8_HANDLER( thief_videoram_w ){ - UINT8 *dest = &space->machine->generic.videoram.u8[offset]; + thief_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + UINT8 *dest = &videoram[offset]; if( thief_video_control&0x02 ) dest+=0x2000*4; /* foreground/background */ if( thief_write_mask&0x1 ) dest[0x2000*0] = data; @@ -99,18 +103,21 @@ WRITE8_HANDLER( thief_videoram_w ){ /***************************************************************************/ VIDEO_START( thief ){ + thief_state *state = machine->driver_data(); memset( &thief_coprocessor, 0x00, sizeof(thief_coprocessor) ); - machine->generic.videoram.u8 = auto_alloc_array_clear(machine, UINT8, 0x2000*4*2 ); + state->videoram = auto_alloc_array_clear(machine, UINT8, 0x2000*4*2 ); thief_coprocessor.image_ram = auto_alloc_array(machine, UINT8, 0x2000 ); thief_coprocessor.context_ram = auto_alloc_array(machine, UINT8, 0x400 ); } VIDEO_UPDATE( thief ){ + thief_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; UINT32 offs; int flipscreen = thief_video_control&1; - const UINT8 *source = screen->machine->generic.videoram.u8; + const UINT8 *source = videoram; if (tms9927_screen_reset(screen->machine->device("tms"))) { diff --git a/src/mame/video/tigeroad.c b/src/mame/video/tigeroad.c index c5f0a95c3bf..62ec7953588 100644 --- a/src/mame/video/tigeroad.c +++ b/src/mame/video/tigeroad.c @@ -6,7 +6,9 @@ static tilemap_t *bg_tilemap, *fg_tilemap; WRITE16_HANDLER( tigeroad_videoram_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + tigeroad_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(fg_tilemap, offset); } @@ -125,7 +127,9 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( get_fg_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + tigeroad_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; int attr = data >> 8; int code = (data & 0xff) + ((attr & 0xc0) << 2) + ((attr & 0x20) << 5); int color = attr & 0x0f; diff --git a/src/mame/video/timelimt.c b/src/mame/video/timelimt.c index 32c88ad64aa..a94e304fa53 100644 --- a/src/mame/video/timelimt.c +++ b/src/mame/video/timelimt.c @@ -68,7 +68,9 @@ static TILE_GET_INFO( get_bg_tile_info ) static TILE_GET_INFO( get_fg_tile_info ) { - SET_TILE_INFO(0, machine->generic.videoram.u8[tile_index], 0, 0); + timelimt_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + SET_TILE_INFO(0, videoram[tile_index], 0, 0); } VIDEO_START( timelimt ) @@ -86,7 +88,9 @@ VIDEO_START( timelimt ) WRITE8_HANDLER( timelimt_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + timelimt_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(fg_tilemap, offset); } diff --git a/src/mame/video/toki.c b/src/mame/video/toki.c index 87bb1193c27..8a487ff27c2 100644 --- a/src/mame/video/toki.c +++ b/src/mame/video/toki.c @@ -49,7 +49,9 @@ VIDEO_EOF( tokib ) static TILE_GET_INFO( get_text_tile_info ) { - int tile = machine->generic.videoram.u16[tile_index]; + toki_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int tile = videoram[tile_index]; int color = (tile >> 12) & 0xf; tile &= 0xfff; @@ -111,7 +113,9 @@ VIDEO_START( toki ) WRITE16_HANDLER( toki_foreground_videoram16_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + toki_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(text_layer,offset); } diff --git a/src/mame/video/truco.c b/src/mame/video/truco.c index e62a6789ae4..5113f9137ea 100644 --- a/src/mame/video/truco.c +++ b/src/mame/video/truco.c @@ -33,7 +33,9 @@ PALETTE_INIT( truco ) VIDEO_UPDATE( truco ) { - UINT8 *vid = screen->machine->generic.videoram.u8; + truco_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; + UINT8 *vid = videoram; int x, y; for( y = 0; y < 192; y++ ) diff --git a/src/mame/video/tryout.c b/src/mame/video/tryout.c index ef2cd51686c..0e4ccf4051f 100644 --- a/src/mame/video/tryout.c +++ b/src/mame/video/tryout.c @@ -43,10 +43,12 @@ PALETTE_INIT( tryout ) static TILE_GET_INFO( get_fg_tile_info ) { + tryout_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int code, attr, color; - code = machine->generic.videoram.u8[tile_index]; - attr = machine->generic.videoram.u8[tile_index + 0x400]; + code = videoram[tile_index]; + attr = videoram[tile_index + 0x400]; code |= ((attr & 0x03) << 8); color = ((attr & 0x4)>>2)+6; @@ -65,7 +67,9 @@ READ8_HANDLER( tryout_vram_r ) WRITE8_HANDLER( tryout_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + tryout_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(fg_tilemap, offset & 0x3ff); } diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c index fc0f7e7f482..d3523b65c65 100644 --- a/src/mame/video/twin16.c +++ b/src/mame/video/twin16.c @@ -346,8 +346,10 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap ) static void draw_layer( running_machine *machine, bitmap_t *bitmap, int opaque ) { + twin16_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; const UINT16 *gfx_base; - const UINT16 *source = machine->generic.videoram.u16; + const UINT16 *source = videoram; int i, xxor, yxor; int bank_table[4]; int dx, dy, palette; diff --git a/src/mame/video/ultratnk.c b/src/mame/video/ultratnk.c index fb91024410e..3d650226015 100644 --- a/src/mame/video/ultratnk.c +++ b/src/mame/video/ultratnk.c @@ -41,7 +41,9 @@ PALETTE_INIT( ultratnk ) static TILE_GET_INFO( ultratnk_tile_info ) { - UINT8 code = machine->generic.videoram.u8[tile_index]; + ultratnk_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + UINT8 code = videoram[tile_index]; if (code & 0x20) SET_TILE_INFO(0, code, code >> 6, 0); @@ -60,7 +62,8 @@ VIDEO_START( ultratnk ) VIDEO_UPDATE( ultratnk ) { - UINT8 *videoram = screen->machine->generic.videoram.u8; + ultratnk_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int i; tilemap_draw(bitmap, cliprect, playfield, 0, 0); @@ -94,10 +97,11 @@ VIDEO_UPDATE( ultratnk ) VIDEO_EOF( ultratnk ) { + ultratnk_state *state = machine->driver_data(); int i; UINT16 BG = colortable_entry_get_value(machine->colortable, 0); running_device *discrete = machine->device("discrete"); - UINT8 *videoram = machine->generic.videoram.u8; + UINT8 *videoram = state->videoram; /* check for sprite-playfield collisions */ @@ -141,13 +145,15 @@ VIDEO_EOF( ultratnk ) /* update sound status */ - discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_1, machine->generic.videoram.u8[0x391] & 15); - discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_2, machine->generic.videoram.u8[0x393] & 15); + discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15); + discrete_sound_w(discrete, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15); } WRITE8_HANDLER( ultratnk_video_ram_w ) { - space->machine->generic.videoram.u8[offset] = data; + ultratnk_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(playfield, offset); } diff --git a/src/mame/video/vigilant.c b/src/mame/video/vigilant.c index e3d1ed026ba..206423eedac 100644 --- a/src/mame/video/vigilant.c +++ b/src/mame/video/vigilant.c @@ -182,17 +182,19 @@ WRITE8_HANDLER( vigilant_rear_color_w ) static void draw_foreground(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority, int opaque ) { + vigilant_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offs; int scroll = -(horiz_scroll_low + horiz_scroll_high); - for (offs = 0; offsgeneric.videoram_size; offs+=2 ) + for (offs = 0; offs < 0x1000; offs += 2) { int sy = 8 * ((offs/2) / 64); int sx = 8 * ((offs/2) % 64); - int attributes = machine->generic.videoram.u8[offs+1]; + int attributes = videoram[offs+1]; int color = attributes & 0x0F; - int tile_number = machine->generic.videoram.u8[offs] | ((attributes & 0xF0) << 4); + int tile_number = videoram[offs] | ((attributes & 0xF0) << 4); if (priority) /* foreground */ { @@ -280,15 +282,17 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan VIDEO_UPDATE( kikcubic ) { + vigilant_state *state = screen->machine->driver_data(); + UINT8 *videoram = state->videoram; int offs; - for (offs = 0; offsmachine->generic.videoram_size; offs+=2 ) + for (offs = 0; offs < 0x1000; offs += 2) { int sy = 8 * ((offs/2) / 64); int sx = 8 * ((offs/2) % 64); - int attributes = screen->machine->generic.videoram.u8[offs+1]; + int attributes = videoram[offs+1]; int color = (attributes & 0xF0) >> 4; - int tile_number = screen->machine->generic.videoram.u8[offs] | ((attributes & 0x0F) << 8); + int tile_number = videoram[offs] | ((attributes & 0x0F) << 8); drawgfx_opaque(bitmap,cliprect,screen->machine->gfx[0], tile_number, diff --git a/src/mame/video/wiz.c b/src/mame/video/wiz.c index 34bfaa3d4b1..7fd409d621c 100644 --- a/src/mame/video/wiz.c +++ b/src/mame/video/wiz.c @@ -119,12 +119,14 @@ WRITE8_HANDLER( wiz_flipy_w ) static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int bank, int colortype) { + wiz_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; int offs; /* for every character in the Video RAM, check if it has been modified */ /* since last time and update it accordingly. */ - for (offs = machine->generic.videoram_size - 1;offs >= 0;offs--) + for (offs = 0x400 - 1; offs >= 0; offs--) { int scroll,sx,sy,col; @@ -137,7 +139,7 @@ static void draw_background(running_machine *machine, bitmap_t *bitmap, const re } else { - col = (wiz_attributesram[2 * (offs % 32) + 1] & 0x04) + (machine->generic.videoram.u8[offs] & 3); + col = (wiz_attributesram[2 * (offs % 32) + 1] & 0x04) + (videoram[offs] & 3); } scroll = (8*sy + 256 - wiz_attributesram[2 * sx]) % 256; @@ -149,7 +151,7 @@ static void draw_background(running_machine *machine, bitmap_t *bitmap, const re drawgfx_transpen(bitmap,cliprect,machine->gfx[bank], - machine->generic.videoram.u8[offs], + videoram[offs], col + 8 * palette_bank, flipx,flipy, 8*sx,scroll,0); @@ -161,7 +163,7 @@ static void draw_foreground(running_machine *machine, bitmap_t *bitmap, const re int offs; /* draw the frontmost playfield. They are characters, but draw them as sprites. */ - for (offs = machine->generic.videoram_size - 1;offs >= 0;offs--) + for (offs = 0x400 - 1; offs >= 0; offs--) { int scroll,sx,sy,col; diff --git a/src/mame/video/xorworld.c b/src/mame/video/xorworld.c index d8d2a2ef480..62fc0a82643 100644 --- a/src/mame/video/xorworld.c +++ b/src/mame/video/xorworld.c @@ -51,7 +51,9 @@ PALETTE_INIT( xorworld ) WRITE16_HANDLER( xorworld_videoram16_w ) { - COMBINE_DATA(&space->machine->generic.videoram.u16[offset]); + xorworld_state *state = space->machine->driver_data(); + UINT16 *videoram = state->videoram; + COMBINE_DATA(&videoram[offset]); tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -67,7 +69,9 @@ WRITE16_HANDLER( xorworld_videoram16_w ) static TILE_GET_INFO( get_bg_tile_info ) { - int data = machine->generic.videoram.u16[tile_index]; + xorworld_state *state = machine->driver_data(); + UINT16 *videoram = state->videoram; + int data = videoram[tile_index]; int code = data & 0x0fff; SET_TILE_INFO(0, code, data >> 12, 0); diff --git a/src/mame/video/zac2650.c b/src/mame/video/zac2650.c index a6ee64bf784..4421f106e6a 100644 --- a/src/mame/video/zac2650.c +++ b/src/mame/video/zac2650.c @@ -25,7 +25,9 @@ static tilemap_t *bg_tilemap; WRITE8_HANDLER( tinvader_videoram_w ) { - space->machine->generic.videoram.u8[offset] = data; + zac2650_state *state = space->machine->driver_data(); + UINT8 *videoram = state->videoram; + videoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap, offset); } @@ -133,7 +135,9 @@ static int SpriteCollision(running_machine *machine, int first,int second) static TILE_GET_INFO( get_bg_tile_info ) { - int code = machine->generic.videoram.u8[tile_index]; + zac2650_state *state = machine->driver_data(); + UINT8 *videoram = state->videoram; + int code = videoram[tile_index]; SET_TILE_INFO(0, code, 0, 0); }