From 06e995de5f078fd446b9839f19d0e3711769e998 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Wed, 8 Sep 2010 15:45:46 +0000 Subject: [PATCH] Removed generic.videoram and generic.videoram_size. These generics have no core use, they are simply there for the convenience of drivers. Now that drivers are required to have devices, the data should move there. [Atari Ace] ---------- Forwarded message ---------- From: Atari Ace Date: Sun, Sep 5, 2010 at 4:45 PM Subject: [patch] Eliminate generic.videoramm generic.videoram_size To: submit@mamedev.org Cc: atariace@hotmail.com Hi mamedev, This set of patches removes generic.videoram and generic.videoram_size. These generics have no core use, they are simply there for the convenience of drivers. Now that drivers are required to have devices, the data should move there. The first patch sets the stage for the rest of the patch. It includes several changes. 1. It replaces all the uses of generic.videoram_size with appropriate constants. 2. It eliminates the write handlers from pc_video.c. These are unused in MAME and MESS appears to have a private copy. 3. It splits some drivers: a. It separates mcr68 from the mcr driver, mostly by dividing machine/mcr.c. b. It separates naughtyb from the phoenix driver by introducing an audio/pleiads.h include. c. It replaces video/system1.h with includes/system1.h. 4. It fixes some videoram related bugs. a. balsente, mole didn't need videoram. b. sbowling has a dangling reference to videoram from an earlier driver_data conversion 5. It expands some namcona functions to multiple lines so that later scripted-edits look sensible. The second patch is generated by vram01_1.pl. It introduces videoram local variables in function that use videoram read-only and removes AM_SIZE_GENERIC(videoram). The third patch is generated by vram01_2.pl. It replaces all occurances of generic.videoram with state->videoram, introducing/modifying driver_device classes as needed. The fourth patch then actually removes the generics, and fixes one issue the scripts didn't handle. ~aa --- .gitattributes | 5 +- src/emu/machine.h | 2 - src/emu/video/pc_video.c | 24 +- src/emu/video/pc_video.h | 4 - src/mame/audio/pleiads.c | 2 +- src/mame/drivers/ampoker2.c | 4 +- src/mame/drivers/astrocde.c | 12 +- src/mame/drivers/atetris.c | 6 +- src/mame/drivers/balsente.c | 2 +- src/mame/drivers/beezer.c | 4 +- src/mame/drivers/centiped.c | 16 +- src/mame/drivers/cloak.c | 4 +- src/mame/drivers/cmmb.c | 21 +- src/mame/drivers/coinmstr.c | 23 +- src/mame/drivers/darkmist.c | 4 +- src/mame/drivers/deadang.c | 4 +- src/mame/drivers/deco_ld.c | 23 +- src/mame/drivers/dlair.c | 21 +- src/mame/drivers/dynduke.c | 6 +- src/mame/drivers/galaxian.c | 24 +- src/mame/drivers/gatron.c | 4 +- src/mame/drivers/gottlieb.c | 6 +- src/mame/drivers/gridlee.c | 4 +- src/mame/drivers/gsword.c | 6 +- src/mame/drivers/irobot.c | 2 +- src/mame/drivers/magmax.c | 4 +- src/mame/drivers/mcr.c | 8 +- src/mame/drivers/mcr3.c | 6 +- src/mame/drivers/mcr68.c | 46 +- src/mame/drivers/meadows.c | 12 +- src/mame/drivers/missile.c | 44 +- src/mame/drivers/mole.c | 2 +- src/mame/drivers/mustache.c | 4 +- src/mame/drivers/namcona1.c | 6 +- src/mame/drivers/naughtyb.c | 11 +- src/mame/drivers/panicr.c | 21 +- src/mame/drivers/pcktgal.c | 4 +- src/mame/drivers/peplus.c | 23 +- src/mame/drivers/phoenix.c | 1 + src/mame/drivers/pitnrun.c | 4 +- src/mame/drivers/playch10.c | 4 +- src/mame/drivers/pokechmp.c | 4 +- src/mame/drivers/polyplay.c | 4 +- src/mame/drivers/progolf.c | 30 +- src/mame/drivers/pturn.c | 23 +- src/mame/drivers/quizo.c | 27 +- src/mame/drivers/raiden.c | 8 +- src/mame/drivers/raiden2.c | 18 +- src/mame/drivers/renegade.c | 4 +- src/mame/drivers/royalmah.c | 55 ++- src/mame/drivers/rpunch.c | 4 +- src/mame/drivers/sbowling.c | 2 +- src/mame/drivers/sbrkout.c | 39 +- src/mame/drivers/segag80r.c | 4 +- src/mame/drivers/shangkid.c | 10 +- src/mame/drivers/sprint4.c | 12 +- src/mame/drivers/statriv2.c | 31 +- src/mame/drivers/strnskil.c | 4 +- src/mame/drivers/subs.c | 4 +- src/mame/drivers/suprloco.c | 1 - src/mame/drivers/system1.c | 2 +- src/mame/drivers/taito_f3.c | 6 +- src/mame/drivers/tankbatt.c | 4 +- src/mame/drivers/tatsumi.c | 12 +- src/mame/drivers/terracre.c | 10 +- src/mame/drivers/tigeroad.c | 4 +- src/mame/drivers/timelimt.c | 4 +- src/mame/drivers/toki.c | 8 +- src/mame/drivers/truco.c | 4 +- src/mame/drivers/tryout.c | 4 +- src/mame/drivers/twin16.c | 16 +- src/mame/drivers/ultratnk.c | 12 +- src/mame/drivers/vigilant.c | 10 +- src/mame/drivers/vpoker.c | 24 +- src/mame/drivers/wallc.c | 23 +- src/mame/drivers/wink.c | 23 +- src/mame/drivers/wiz.c | 4 +- src/mame/drivers/xorworld.c | 4 +- src/mame/drivers/zac2650.c | 4 +- src/mame/includes/ampoker2.h | 10 + src/mame/includes/astrocde.h | 10 + src/mame/includes/atetris.h | 1 + src/mame/includes/beezer.h | 10 + src/mame/includes/centiped.h | 10 + src/mame/includes/cloak.h | 10 + src/mame/includes/darkmist.h | 10 + src/mame/includes/deadang.h | 10 + src/mame/includes/dynduke.h | 10 + src/mame/includes/galaxian.h | 10 + src/mame/includes/gatron.h | 10 + src/mame/includes/gottlieb.h | 10 + src/mame/includes/gridlee.h | 10 + src/mame/includes/gsword.h | 10 + src/mame/includes/irobot.h | 1 + src/mame/includes/itech32.h | 10 + src/mame/includes/magmax.h | 10 + src/mame/includes/mcr.h | 51 +- src/mame/includes/mcr68.h | 56 +++ src/mame/includes/meadows.h | 10 + src/mame/includes/mustache.h | 10 + src/mame/includes/namcona1.h | 10 + src/mame/includes/namcos21.h | 10 + src/mame/includes/naughtyb.h | 22 + src/mame/includes/pcktgal.h | 10 + src/mame/includes/phoenix.h | 23 - src/mame/includes/pitnrun.h | 10 + src/mame/includes/playch10.h | 10 + src/mame/includes/pokechmp.h | 10 + src/mame/includes/polyplay.h | 10 + src/mame/includes/raiden.h | 10 + src/mame/includes/raiden2.h | 10 + src/mame/includes/renegade.h | 10 + src/mame/includes/rpunch.h | 10 + src/mame/includes/segag80r.h | 10 + src/mame/includes/shangkid.h | 10 + src/mame/includes/sprint4.h | 10 + src/mame/includes/strnskil.h | 10 + src/mame/includes/subs.h | 10 + src/mame/{video => includes}/system1.h | 14 +- src/mame/includes/taito_f3.h | 10 + src/mame/includes/tankbatt.h | 10 + src/mame/includes/tatsumi.h | 10 + src/mame/includes/terracre.h | 10 + src/mame/includes/thief.h | 10 + src/mame/includes/tigeroad.h | 10 + src/mame/includes/timelimt.h | 10 + src/mame/includes/toki.h | 10 + src/mame/includes/truco.h | 10 + src/mame/includes/tryout.h | 10 + src/mame/includes/twin16.h | 10 + src/mame/includes/ultratnk.h | 10 + src/mame/includes/vigilant.h | 10 + src/mame/includes/wiz.h | 10 + src/mame/includes/xorworld.h | 10 + src/mame/includes/zac2650.h | 10 + src/mame/machine/mcr.c | 628 ----------------------- src/mame/machine/mcr68.c | 657 +++++++++++++++++++++++++ src/mame/mame.mak | 2 +- src/mame/video/ampoker2.c | 16 +- src/mame/video/astrocde.c | 4 +- src/mame/video/atetris.c | 10 +- src/mame/video/balsente.c | 2 - src/mame/video/beezer.c | 6 +- src/mame/video/centiped.c | 20 +- src/mame/video/cloak.c | 8 +- src/mame/video/darkmist.c | 6 +- src/mame/video/deadang.c | 10 +- src/mame/video/dynduke.c | 8 +- src/mame/video/galaxian.c | 8 +- src/mame/video/gatron.c | 8 +- src/mame/video/gottlieb.c | 12 +- src/mame/video/gridlee.c | 10 +- src/mame/video/gsword.c | 8 +- src/mame/video/irobot.c | 6 +- src/mame/video/itech32.c | 9 +- src/mame/video/magmax.c | 4 +- src/mame/video/mcr.c | 32 +- src/mame/video/mcr3.c | 20 +- src/mame/video/mcr68.c | 22 +- src/mame/video/meadows.c | 8 +- src/mame/video/mustache.c | 10 +- src/mame/video/namcona1.c | 47 +- src/mame/video/namcos21.c | 15 +- src/mame/video/naughtyb.c | 11 +- src/mame/video/pcktgal.c | 10 +- src/mame/video/phoenix.c | 1 + src/mame/video/pitnrun.c | 8 +- src/mame/video/playch10.c | 10 +- src/mame/video/pokechmp.c | 10 +- src/mame/video/polyplay.c | 6 +- src/mame/video/raiden.c | 8 +- src/mame/video/renegade.c | 8 +- src/mame/video/rpunch.c | 12 +- src/mame/video/segag80r.c | 12 +- src/mame/video/shangkid.c | 30 +- src/mame/video/sprint4.c | 34 +- src/mame/video/strnskil.c | 10 +- src/mame/video/subs.c | 6 +- src/mame/video/system1.c | 59 ++- src/mame/video/taito_f3.c | 16 +- src/mame/video/tankbatt.c | 10 +- src/mame/video/tatsumi.c | 8 +- src/mame/video/terracre.c | 8 +- src/mame/video/thief.c | 15 +- src/mame/video/tigeroad.c | 8 +- src/mame/video/timelimt.c | 8 +- src/mame/video/toki.c | 8 +- src/mame/video/truco.c | 4 +- src/mame/video/tryout.c | 10 +- src/mame/video/twin16.c | 4 +- src/mame/video/ultratnk.c | 18 +- src/mame/video/vigilant.c | 16 +- src/mame/video/wiz.c | 10 +- src/mame/video/xorworld.c | 8 +- src/mame/video/zac2650.c | 8 +- 195 files changed, 2328 insertions(+), 1215 deletions(-) create mode 100644 src/mame/includes/mcr68.h create mode 100644 src/mame/includes/naughtyb.h rename src/mame/{video => includes}/system1.h (71%) create mode 100644 src/mame/machine/mcr68.c 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); }