diff --git a/.gitattributes b/.gitattributes index ed7389e92c4..219f4f2b4f9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1319,6 +1319,8 @@ src/emu/video.c svneol=native#text/plain src/emu/video.h svneol=native#text/plain src/emu/video/315_5124.c svneol=native#text/plain src/emu/video/315_5124.h svneol=native#text/plain +src/emu/video/bufsprite.c svneol=native#text/plain +src/emu/video/bufsprite.h svneol=native#text/plain src/emu/video/cdp1861.c svneol=native#text/plain src/emu/video/cdp1861.h svneol=native#text/plain src/emu/video/cdp1862.c svneol=native#text/plain diff --git a/src/emu/device.c b/src/emu/device.c index e799185be2a..7e6301001b2 100644 --- a/src/emu/device.c +++ b/src/emu/device.c @@ -871,21 +871,9 @@ device_t *device_t::auto_finder_base::find_device(device_t &base, const char *ta // find_shared_ptr - find a shared pointer //------------------------------------------------- -void *device_t::auto_finder_base::find_shared_ptr(device_t &base, const char *tag) +void *device_t::auto_finder_base::find_shared_ptr(device_t &base, const char *tag, size_t &bytes) { - return memory_get_shared(base.machine(), tag); -} - - -//------------------------------------------------- -// find_shared_size - find a shared pointer size -//------------------------------------------------- - -size_t device_t::auto_finder_base::find_shared_size(device_t &base, const char *tag) -{ - size_t result = 0; - memory_get_shared(base.machine(), tag, result); - return result; + return memory_get_shared(base.machine(), tag, bytes); } diff --git a/src/emu/device.h b/src/emu/device.h index 81bae58c619..3decd2e6cf5 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -301,8 +301,7 @@ protected: // helpers device_t *find_device(device_t &device, const char *tag); - void *find_shared_ptr(device_t &device, const char *tag); - size_t find_shared_size(device_t &device, const char *tag); + void *find_shared_ptr(device_t &device, const char *tag, size_t &bytes); // internal state auto_finder_base *m_next; @@ -335,6 +334,7 @@ protected: throw emu_fatalerror("Unable to find required object '%s'", this->m_tag); } + protected: // internal state _TargetType m_target; }; @@ -362,8 +362,13 @@ protected: class optional_shared_ptr : public auto_finder_type<_PointerType *, false> { public: - optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag) { } - virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag))); } + optional_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, false>(base, tag), m_bytes(0) { } + virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); } + UINT32 bytes() const { return m_bytes; } + + private: + // internal state + size_t m_bytes; }; // required shared pointer finder @@ -371,24 +376,13 @@ protected: class required_shared_ptr : public auto_finder_type<_PointerType *, true> { public: - required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag) { } - virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag))); } - }; - - // optional shared pointer size finder - class optional_shared_size : public auto_finder_type - { - public: - optional_shared_size(device_t &base, const char *tag) : auto_finder_type(base, tag) { } - virtual void findit(device_t &base) { this->set_target(find_shared_size(base, this->m_tag)); } - }; - - // required shared pointer size finder - class required_shared_size : public auto_finder_type - { - public: - required_shared_size(device_t &base, const char *tag) : auto_finder_type(base, tag) { } - virtual void findit(device_t &base) { this->set_target(find_shared_size(base, this->m_tag)); } + required_shared_ptr(device_t &base, const char *tag) : auto_finder_type<_PointerType *, true>(base, tag), m_bytes(0) { } + virtual void findit(device_t &base) { this->set_target(reinterpret_cast<_PointerType *>(this->find_shared_ptr(base, this->m_tag, m_bytes))); } + UINT32 bytes() const { return m_bytes; } + + private: + // internal state + size_t m_bytes; }; // internal helpers diff --git a/src/emu/devlegcy.h b/src/emu/devlegcy.h index e8ec40da88b..1decd67b9ae 100644 --- a/src/emu/devlegcy.h +++ b/src/emu/devlegcy.h @@ -225,38 +225,6 @@ device_t *legacy_device_creator(const machine_config &mconfig, const char *tag, #define MCFG_DEVICE_CONFIG_DATA32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) \ MCFG_DEVICE_CONFIG_DATA32_EXPLICIT(structsizeof(_memstruct, _member), offsetof(_struct, _field) + (_index) * structsizeof(_struct, _field[0]) + offsetof(_memstruct, _member), _val) -#define MCFG_NEW_DEVICE_CONFIG_DATA32(_struct, _field, _val) \ - MCFG_DEVICE_CONFIG_DATA32_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field), DEVCONFIG_OFFSETOF(_struct, _field), _val) - -#define MCFG_NEW_DEVICE_CONFIG_DATA32_ARRAY(_struct, _field, _index, _val) \ - MCFG_DEVICE_CONFIG_DATA32_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field[0]), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]), _val) - -#define MCFG_NEW_DEVICE_CONFIG_DATA32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) \ - MCFG_DEVICE_CONFIG_DATA32_EXPLICIT(DEVCONFIG_SIZEOF(_memstruct, _member), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]) + DEVCONFIG_OFFSETOF(_memstruct, _member), _val) - - -// inline device configurations that require 32 bits of fixed-point storage in the token -#define MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(_size, _offset, _val, _fixbits) \ - legacy_device_base::static_set_inline_float(*device, _offset, _size, (float)(_val)); - -#define MCFG_DEVICE_CONFIG_DATAFP32(_struct, _field, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(structsizeof(_struct, _field), offsetof(_struct, _field), _val, _fixbits) - -#define MCFG_DEVICE_CONFIG_DATAFP32_ARRAY(_struct, _field, _index, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(structsizeof(_struct, _field[0]), offsetof(_struct, _field) + (_index) * structsizeof(_struct, _field[0]), _val, _fixbits) - -#define MCFG_DEVICE_CONFIG_DATAFP32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(structsizeof(_memstruct, _member), offsetof(_struct, _field) + (_index) * structsizeof(_struct, _field[0]) + offsetof(_memstruct, _member), _val, _fixbits) - -#define MCFG_DEVICE_NEW_CONFIG_DATAFP32(_struct, _field, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field), DEVCONFIG_OFFSETOF(_struct, _field), _val, _fixbits) - -#define MCFG_DEVICE_NEW_CONFIG_DATAFP32_ARRAY(_struct, _field, _index, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field[0]), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]), _val, _fixbits) - -#define MCFG_DEVICE_NEW_CONFIG_DATAFP32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val, _fixbits) \ - MCFG_DEVICE_CONFIG_DATAFP32_EXPLICIT(DEVCONFIG_SIZEOF(_memstruct, _member), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]) + DEVCONFIG_OFFSETOF(_memstruct, _member), _val, _fixbits) - // inline device configurations that require 64 bits of storage in the token #define MCFG_DEVICE_CONFIG_DATA64_EXPLICIT(_size, _offset, _val) \ @@ -271,15 +239,6 @@ device_t *legacy_device_creator(const machine_config &mconfig, const char *tag, #define MCFG_DEVICE_CONFIG_DATA64_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) \ MCFG_DEVICE_CONFIG_DATA64_EXPLICIT(structsizeof(_memstruct, _member), offsetof(_struct, _field) + (_index) * structsizeof(_struct, _field[0]) + offsetof(_memstruct, _member), _val) -#define MCFG_DEVICE_NEW_CONFIG_DATA64(_struct, _field, _val) \ - MCFG_DEVICE_CONFIG_DATA64_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field), DEVCONFIG_OFFSETOF(_struct, _field), _val) - -#define MCFG_DEVICE_NEW_CONFIG_DATA64_ARRAY(_struct, _field, _index, _val) \ - MCFG_DEVICE_CONFIG_DATA64_EXPLICIT(DEVCONFIG_SIZEOF(_struct, _field[0]), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]), _val) - -#define MCFG_DEVICE_NEW_CONFIG_DATA64_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) \ - MCFG_DEVICE_CONFIG_DATA64_EXPLICIT(DEVCONFIG_SIZEOF(_memstruct, _member), DEVCONFIG_OFFSETOF(_struct, _field) + (_index) * DEVCONFIG_SIZEOF(_struct, _field[0]) + DEVCONFIG_OFFSETOF(_memstruct, _member), _val) - // inline device configurations that require a pointer-sized amount of storage in the token #ifdef PTR64 @@ -287,17 +246,11 @@ device_t *legacy_device_creator(const machine_config &mconfig, const char *tag, #define MCFG_DEVICE_CONFIG_DATAPTR(_struct, _field, _val) MCFG_DEVICE_CONFIG_DATA64(_struct, _field, _val) #define MCFG_DEVICE_CONFIG_DATAPTR_ARRAY(_struct, _field, _index, _val) MCFG_DEVICE_CONFIG_DATA64_ARRAY(_struct, _field, _index, _val) #define MCFG_DEVICE_CONFIG_DATAPTR_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) MCFG_DEVICE_CONFIG_DATA64_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) -#define MCFG_DEVICE_NEW_CONFIG_DATAPTR(_struct, _field, _val) MCFG_DEVICE_NEW_CONFIG_DATA64(_struct, _field, _val) -#define MCFG_DEVICE_NEW_CONFIG_DATAPTR_ARRAY(_struct, _field, _index, _val) MCFG_DEVICE_NEW_CONFIG_DATA64_ARRAY(_struct, _field, _index, _val) -#define MCFG_DEVICE_NEW_CONFIG_DATAPTR_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) MCFG_DEVICE_NEW_CONFIG_DATA64_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) #else #define MCFG_DEVICE_CONFIG_DATAPTR_EXPLICIT(_struct, _size, _offset) MCFG_DEVICE_CONFIG_DATA32_EXPLICIT(_struct, _size, _offset) #define MCFG_DEVICE_CONFIG_DATAPTR(_struct, _field, _val) MCFG_DEVICE_CONFIG_DATA32(_struct, _field, _val) #define MCFG_DEVICE_CONFIG_DATAPTR_ARRAY(_struct, _field, _index, _val) MCFG_DEVICE_CONFIG_DATA32_ARRAY(_struct, _field, _index, _val) #define MCFG_DEVICE_CONFIG_DATAPTR_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) MCFG_DEVICE_CONFIG_DATA32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) -#define MCFG_DEVICE_CONFIG_NEW_DATAPTR(_struct, _field, _val) MCFG_DEVICE_NEW_CONFIG_DATA32(_struct, _field, _val) -#define MCFG_DEVICE_CONFIG_NEW_DATAPTR_ARRAY(_struct, _field, _index, _val) MCFG_DEVICE_NEW_CONFIG_DATA32_ARRAY(_struct, _field, _index, _val) -#define MCFG_DEVICE_CONFIG_NEW_DATAPTR_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) MCFG_DEVICE_NEW_CONFIG_DATA32_ARRAY_MEMBER(_struct, _field, _index, _memstruct, _member, _val) #endif diff --git a/src/emu/emu.mak b/src/emu/emu.mak index 5464c4003b0..03779bea239 100644 --- a/src/emu/emu.mak +++ b/src/emu/emu.mak @@ -267,6 +267,7 @@ EMUMACHINEOBJS = \ EMUVIDEOOBJS = \ $(EMUVIDEO)/315_5124.o \ + $(EMUVIDEO)/bufsprite.o \ $(EMUVIDEO)/cdp1861.o \ $(EMUVIDEO)/cdp1862.o \ $(EMUVIDEO)/crt9007.o \ diff --git a/src/emu/machine.h b/src/emu/machine.h index f4878516ff8..acdeb0f29f2 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -267,8 +267,6 @@ struct generic_pointers UINT32 spriteram_size; generic_ptr spriteram2; // secondary spriteram UINT32 spriteram2_size; - generic_ptr buffered_spriteram; // buffered spriteram - generic_ptr buffered_spriteram2;// secondary buffered spriteram generic_ptr paletteram; // palette RAM generic_ptr paletteram2; // secondary palette RAM }; diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h index b225bd5ea4d..c42051dca0a 100644 --- a/src/emu/mconfig.h +++ b/src/emu/mconfig.h @@ -72,9 +72,6 @@ // automatically extend the palette creating a brighter copy for highlights #define VIDEO_HAS_HIGHLIGHTS 0x0020 -// Mish 181099: See comments in video/generic.c for details -#define VIDEO_BUFFERS_SPRITERAM 0x0040 - // force VIDEO_UPDATE to be called even for skipped frames #define VIDEO_ALWAYS_UPDATE 0x0080 diff --git a/src/emu/video/bufsprite.c b/src/emu/video/bufsprite.c new file mode 100644 index 00000000000..fcd28ebc167 --- /dev/null +++ b/src/emu/video/bufsprite.c @@ -0,0 +1,71 @@ +/********************************************************************* + + bufsprite.h + + Buffered Sprite RAM device. + +**************************************************************************** + + Copyright Aaron Giles + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name 'MAME' nor the names of its contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*********************************************************************/ + +#include "emu.h" +#include "bufsprite.h" + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +// device type definition +extern const device_type BUFFERED_SPRITERAM8 = &device_creator; +extern const device_type BUFFERED_SPRITERAM16 = &device_creator; +extern const device_type BUFFERED_SPRITERAM32 = &device_creator; +extern const device_type BUFFERED_SPRITERAM64 = &device_creator; + + + +/* ----- sprite buffering ----- */ + +/* buffered sprite RAM write handlers */ +WRITE8_HANDLER( buffer_spriteram_w ) { } +WRITE16_HANDLER( buffer_spriteram16_w ) { } +WRITE32_HANDLER( buffer_spriteram32_w ) { } +WRITE8_HANDLER( buffer_spriteram_2_w ) { } +WRITE16_HANDLER( buffer_spriteram16_2_w ) { } +WRITE32_HANDLER( buffer_spriteram32_2_w ) { } + +/* perform the actual buffering */ +void buffer_spriteram(running_machine &machine, UINT8 *ptr, int length) { } +void buffer_spriteram_2(running_machine &machine, UINT8 *ptr, int length) { } + + + diff --git a/src/emu/video/bufsprite.h b/src/emu/video/bufsprite.h new file mode 100644 index 00000000000..44bad367f9f --- /dev/null +++ b/src/emu/video/bufsprite.h @@ -0,0 +1,177 @@ +/********************************************************************* + + bufsprite.h + + Buffered Sprite RAM device. + +**************************************************************************** + + Copyright Aaron Giles + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name 'MAME' nor the names of its contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*********************************************************************/ + +#pragma once + +#ifndef __BUFSPRITE_H__ +#define __BUFSPRITE_H__ + + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +// device type definition +extern const device_type BUFFERED_SPRITERAM8; +extern const device_type BUFFERED_SPRITERAM16; +extern const device_type BUFFERED_SPRITERAM32; +extern const device_type BUFFERED_SPRITERAM64; + + + +//************************************************************************** +// DEVICE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_BUFFERED_SPRITERAM8_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, BUFFERED_SPRITERAM8, 0) \ + +#define MCFG_BUFFERED_SPRITERAM16_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, BUFFERED_SPRITERAM16, 0) \ + +#define MCFG_BUFFERED_SPRITERAM32_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, BUFFERED_SPRITERAM32, 0) \ + +#define MCFG_BUFFERED_SPRITERAM64_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, BUFFERED_SPRITERAM64, 0) \ + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> buffered_spriteram_device + +// base class to manage buffered spriteram +template +class buffered_spriteram_device : public device_t +{ +public: + // construction + buffered_spriteram_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, type, "Buffered Sprite RAM", tag, owner, clock), + m_spriteram(*owner, tag) { } + + // getters + _Type *live() const { return m_spriteram; } + _Type *buffer() { return m_buffered; } + UINT32 bytes() const { return m_spriteram.bytes(); } + + // operations + _Type *copy(UINT32 srcoffset = 0, UINT32 srclength = 0x7fffffff) + { + assert(m_spriteram != NULL); + if (m_spriteram != NULL) + memcpy(m_buffered, m_spriteram + srcoffset, MIN(srclength, m_spriteram.bytes() / sizeof(_Type) - srcoffset) * sizeof(_Type)); + return m_buffered; + } + + // read/write handlers + void write(address_space &space, offs_t offset, _Type data, _Type mem_mask = ~_Type(0)) { copy(); } + + // VBLANK handlers + void vblank_copy_rising(screen_device &screen, bool state) { if (state) copy(); } + void vblank_copy_falling(screen_device &screen, bool state) { if (!state) copy(); } + +protected: + // first-time setup + virtual void device_start() + { + printf("tag=%s spriteram=%p size=%d\n", tag(), (void *)m_spriteram, UINT32(m_spriteram.bytes())); + if (m_spriteram != NULL) + { + m_buffered.resize(m_spriteram.bytes() / sizeof(_Type)); + save_item(NAME(m_buffered)); + } + } + +private: + // internal state + required_shared_ptr<_Type> m_spriteram; + dynamic_array<_Type> m_buffered; +}; + + +// ======================> buffered_spriteram8_device + +class buffered_spriteram8_device : public buffered_spriteram_device +{ +public: + // construction + buffered_spriteram8_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM8, tag, owner, clock) { } +}; + + +// ======================> buffered_spriteram16_device + +class buffered_spriteram16_device : public buffered_spriteram_device +{ +public: + // construction + buffered_spriteram16_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM16, tag, owner, clock) { } +}; + + +// ======================> buffered_spriteram32_device + +class buffered_spriteram32_device : public buffered_spriteram_device +{ +public: + // construction + buffered_spriteram32_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM32, tag, owner, clock) { } +}; + + +// ======================> buffered_spriteram64_device + +class buffered_spriteram64_device : public buffered_spriteram_device +{ +public: + // construction + buffered_spriteram64_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : buffered_spriteram_device(mconfig, BUFFERED_SPRITERAM64, tag, owner, clock) { } +}; + + +#endif /* __BUFSPRITE_H__ */ diff --git a/src/emu/video/generic.c b/src/emu/video/generic.c index c3aa492783f..04191c46d74 100644 --- a/src/emu/video/generic.c +++ b/src/emu/video/generic.c @@ -235,135 +235,6 @@ void generic_video_init(running_machine &machine) machine.save().save_item(NAME(state->flip_screen_x)); machine.save().save_item(NAME(state->flip_screen_y)); - - // create spriteram buffers if necessary - if (machine.config().m_video_attributes & VIDEO_BUFFERS_SPRITERAM) - { - assert_always(machine.generic.spriteram_size != 0, "Video buffers spriteram but spriteram size is 0"); - - // allocate memory for the back buffer - machine.generic.buffered_spriteram.u8 = auto_alloc_array(machine, UINT8, machine.generic.spriteram_size); - - // register for saving it - state_save_register_global_pointer(machine, machine.generic.buffered_spriteram.u8, machine.generic.spriteram_size); - - // do the same for the second back buffer, if present - if (machine.generic.spriteram2_size) - { - // allocate memory - machine.generic.buffered_spriteram2.u8 = auto_alloc_array(machine, UINT8, machine.generic.spriteram2_size); - - // register for saving it - state_save_register_global_pointer(machine, machine.generic.buffered_spriteram2.u8, machine.generic.spriteram2_size); - } - } -} - - - -/*************************************************************************** - GENERIC SPRITE BUFFERING -***************************************************************************/ - -/* Mish: 171099 - - 'Buffered spriteram' is where the graphics hardware draws the sprites -from private ram that the main CPU cannot access. The main CPU typically -prepares sprites for the next frame in it's own sprite ram as the graphics -hardware renders sprites for the current frame from private ram. Main CPU -sprite ram is usually copied across to private ram by setting some flag -in the VBL interrupt routine. - - The reason for this is to avoid sprite flicker or lag - if a game -is unable to prepare sprite ram within a frame (for example, lots of sprites -on screen) then it doesn't trigger the buffering hardware - instead the -graphics hardware will use the sprites from the last frame. An example is -Dark Seal - the buffer flag is only written to if the CPU is idle at the time -of the VBL interrupt. If the buffering is not emulated the sprites flicker -at busy scenes. - - Some games seem to use buffering because of hardware constraints - -Capcom games (Cps1, Last Duel, etc) render spriteram _1 frame ahead_ and -buffer this spriteram at the end of a frame, so the _next_ frame must be drawn -from the buffer. Presumably the graphics hardware and the main cpu cannot -share the same spriteram for whatever reason. - - Sprite buffering & Mame: - - To use sprite buffering in a driver use VIDEO_BUFFERS_SPRITERAM in the -machine driver. This will automatically create an area for buffered spriteram -equal to the size of normal spriteram. - - Spriteram size _must_ be declared in the memory map: - - AM_RANGE(0x120000, 0x1207ff) AM_RAMBANK("sprites") AM_BASE_SIZE_GENERIC(spriteram) - - Then the video driver must draw the sprites from the buffered_spriteram -pointer. The function buffer_spriteram_w() is used to simulate hardware -which buffers the spriteram from a memory location write. The function -buffer_spriteram(UINT8 *ptr, int length) can be used where -more control is needed over what is buffered. - - For examples see darkseal.c, contra.c, lastduel.c, bionicc.c etc. - -*/ - - -/*------------------------------------------------- - buffer_spriteram_w - triggered writes to - buffer spriteram --------------------------------------------------*/ - -WRITE8_HANDLER( buffer_spriteram_w ) -{ - memcpy(space->machine().generic.buffered_spriteram.u8, space->machine().generic.spriteram.u8, space->machine().generic.spriteram_size); -} - -WRITE16_HANDLER( buffer_spriteram16_w ) -{ - memcpy(space->machine().generic.buffered_spriteram.u16, space->machine().generic.spriteram.u16, space->machine().generic.spriteram_size); -} - -WRITE32_HANDLER( buffer_spriteram32_w ) -{ - memcpy(space->machine().generic.buffered_spriteram.u32, space->machine().generic.spriteram.u32, space->machine().generic.spriteram_size); -} - - -/*------------------------------------------------- - buffer_spriteram_2_w - triggered writes to - buffer spriteram_2 --------------------------------------------------*/ - -WRITE8_HANDLER( buffer_spriteram_2_w ) -{ - memcpy(space->machine().generic.buffered_spriteram2.u8, space->machine().generic.spriteram2.u8, space->machine().generic.spriteram2_size); -} - -WRITE16_HANDLER( buffer_spriteram16_2_w ) -{ - memcpy(space->machine().generic.buffered_spriteram2.u16, space->machine().generic.spriteram2.u16, space->machine().generic.spriteram2_size); -} - -WRITE32_HANDLER( buffer_spriteram32_2_w ) -{ - memcpy(space->machine().generic.buffered_spriteram2.u32, space->machine().generic.spriteram2.u32, space->machine().generic.spriteram2_size); -} - - -/*------------------------------------------------- - buffer_spriteram - for manually buffering - spriteram --------------------------------------------------*/ - -void buffer_spriteram(running_machine &machine, UINT8 *ptr, int length) -{ - memcpy(machine.generic.buffered_spriteram.u8, ptr, length); -} - -void buffer_spriteram_2(running_machine &machine, UINT8 *ptr, int length) -{ - memcpy(machine.generic.buffered_spriteram2.u8, ptr, length); } diff --git a/src/emu/video/generic.h b/src/emu/video/generic.h index 1accc6085c4..02cb22dfebc 100644 --- a/src/emu/video/generic.h +++ b/src/emu/video/generic.h @@ -42,22 +42,6 @@ void generic_video_init(running_machine &machine); -/* ----- sprite buffering ----- */ - -/* buffered sprite RAM write handlers */ -WRITE8_HANDLER( buffer_spriteram_w ); -WRITE16_HANDLER( buffer_spriteram16_w ); -WRITE32_HANDLER( buffer_spriteram32_w ); -WRITE8_HANDLER( buffer_spriteram_2_w ); -WRITE16_HANDLER( buffer_spriteram16_2_w ); -WRITE32_HANDLER( buffer_spriteram32_2_w ); - -/* perform the actual buffering */ -void buffer_spriteram(running_machine &machine, UINT8 *ptr, int length); -void buffer_spriteram_2(running_machine &machine, UINT8 *ptr, int length); - - - /* ----- global attributes ----- */ /* set global attributes */ diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c index e7ba3e66242..ffc53e99952 100644 --- a/src/mame/drivers/actfancr.c +++ b/src/mame/drivers/actfancr.c @@ -68,13 +68,11 @@ static WRITE8_HANDLER( actfancr_buffer_spriteram_w) { actfancr_state *state = space->machine().driver_data(); - UINT8* buffered_spriteram = space->machine().generic.buffered_spriteram.u8; - // make a buffered copy - memcpy(buffered_spriteram, space->machine().generic.spriteram.u8, 0x800); + UINT8 *src = reinterpret_cast(memory_get_shared(space->machine(), "spriteram")); // copy to a 16-bit region for our sprite draw code too for (int i=0;i<0x800/2;i++) { - state->m_spriteram16[i] = buffered_spriteram[i*2] | (buffered_spriteram[(i*2)+1] <<8); + state->m_spriteram16[i] = src[i*2] | (src[(i*2)+1] <<8); } } @@ -86,7 +84,7 @@ static ADDRESS_MAP_START( actfan_map, AS_PROGRAM, 8 ) AM_RANGE(0x070000, 0x070007) AM_DEVWRITE("tilegen2", deco_bac06_pf_control0_8bit_w) AM_RANGE(0x070010, 0x07001f) AM_DEVWRITE("tilegen2", deco_bac06_pf_control1_8bit_swap_w) AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_swap_r, deco_bac06_pf_data_8bit_swap_w) - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w) AM_RANGE(0x120000, 0x1205ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x130000, 0x130000) AM_READ_PORT("P1") @@ -110,7 +108,7 @@ static ADDRESS_MAP_START( triothep_map, AS_PROGRAM, 8 ) AM_RANGE(0x066400, 0x0667ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_swap_r, deco_bac06_pf_rowscroll_8bit_swap_w) AM_RANGE(0x100000, 0x100001) AM_WRITE(actfancr_sound_w) AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w) - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x130000, 0x1305ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140000, 0x140001) AM_READNOP /* Value doesn't matter */ AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_BASE_MEMBER(actfancr_state, m_main_ram) /* Main ram */ @@ -342,8 +340,6 @@ static MACHINE_CONFIG_START( actfancr, actfancr_state ) MCFG_MACHINE_RESET(actfancr) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) @@ -395,8 +391,6 @@ static MACHINE_CONFIG_START( triothep, actfancr_state ) MCFG_MACHINE_RESET(triothep) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c index 32bd0fa408b..9c9dec92eed 100644 --- a/src/mame/drivers/armedf.c +++ b/src/mame/drivers/armedf.c @@ -393,7 +393,7 @@ static WRITE16_HANDLER( irq_lv2_ack_w ) static ADDRESS_MAP_START( terraf_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x060400, 0x063fff) AM_RAM AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) @@ -414,7 +414,7 @@ static ADDRESS_MAP_START( terraf_map, AS_PROGRAM, 16 ) ADDRESS_MAP_END static ADDRESS_MAP_START( kozure_map, AS_PROGRAM, 16 ) - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x061000, 0x063fff) AM_RAM // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(kozure_io_w) // AM_RANGE(0x0c0000, 0x0c0001) AM_WRITENOP /* watchdog? */ @@ -424,7 +424,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( cclimbr2_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x061000, 0x063fff) AM_RAM AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) @@ -446,7 +446,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( legion_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x061000, 0x063fff) AM_RAM AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) @@ -480,7 +480,7 @@ static WRITE8_HANDLER( legiono_fg_scroll_w ) static ADDRESS_MAP_START( legiono_map, AS_PROGRAM, 16 ) AM_RANGE(0x040000, 0x04003f) AM_WRITE8(legiono_fg_scroll_w,0x00ff) AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x061000, 0x063fff) AM_RAM AM_RANGE(0x064000, 0x064fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) @@ -502,7 +502,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( armedf_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x061000, 0x065fff) AM_RAM AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram) AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram) @@ -679,7 +679,7 @@ static READ16_HANDLER(sharedram_r) static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x080600, 0x083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(bigfghtr_state, m_sharedram) AM_RANGE(0x084000, 0x085fff) AM_RAM //work ram AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram) @@ -1204,8 +1204,6 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1214,12 +1212,14 @@ static MACHINE_CONFIG_START( terraf, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1253,8 +1253,6 @@ static MACHINE_CONFIG_START( terrafb, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1263,10 +1261,12 @@ static MACHINE_CONFIG_START( terrafb, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1297,8 +1297,6 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1307,11 +1305,13 @@ static MACHINE_CONFIG_START( kozure, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1341,8 +1341,6 @@ static MACHINE_CONFIG_START( armedf, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1351,11 +1349,13 @@ static MACHINE_CONFIG_START( armedf, armedf_state ) MCFG_VIDEO_START(armedf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1385,8 +1385,6 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1395,11 +1393,13 @@ static MACHINE_CONFIG_START( cclimbr2, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1429,8 +1429,6 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1439,11 +1437,13 @@ static MACHINE_CONFIG_START( legion, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1473,8 +1473,6 @@ static MACHINE_CONFIG_START( legiono, armedf_state ) MCFG_MACHINE_RESET(armedf) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1483,11 +1481,13 @@ static MACHINE_CONFIG_START( legiono, armedf_state ) MCFG_VIDEO_START(terraf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1532,8 +1532,6 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) MCFG_MACHINE_RESET(bigfghtr) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1542,11 +1540,13 @@ static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) MCFG_VIDEO_START(armedf) MCFG_SCREEN_UPDATE_STATIC(armedf) - MCFG_SCREEN_VBLANK_STATIC(armedf) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(armedf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c index adbd7cfb751..4b992069849 100644 --- a/src/mame/drivers/bbusters.c +++ b/src/mame/drivers/bbusters.c @@ -331,9 +331,9 @@ static ADDRESS_MAP_START( bbusters_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_BASE_MEMBER(bbusters_state, m_ram) AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(bbusters_video_w) AM_BASE_MEMBER(bbusters_state, m_videoram) - AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0a1000, 0x0a7fff) AM_RAM /* service mode */ - AM_RANGE(0x0a8000, 0x0a8fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0x0a8000, 0x0a8fff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0x0a9000, 0x0affff) AM_RAM /* service mode */ AM_RANGE(0x0b0000, 0x0b1fff) AM_RAM_WRITE(bbusters_pf1_w) AM_BASE_MEMBER(bbusters_state, m_pf1_data) AM_RANGE(0x0b2000, 0x0b3fff) AM_RAM_WRITE(bbusters_pf2_w) AM_BASE_MEMBER(bbusters_state, m_pf2_data) @@ -361,7 +361,7 @@ static ADDRESS_MAP_START( mechatt_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x06ffff) AM_ROM AM_RANGE(0x070000, 0x07ffff) AM_RAM AM_BASE_MEMBER(bbusters_state, m_ram) AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(bbusters_video_w) AM_BASE_MEMBER(bbusters_state, m_videoram) - AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0a1000, 0x0a7fff) AM_WRITENOP AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(bbusters_pf1_w) AM_BASE_MEMBER(bbusters_state, m_pf1_data) AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_BASE_MEMBER(bbusters_state, m_pf1_scroll_data) @@ -666,24 +666,9 @@ static const ym2610_interface ym2610_config = static SCREEN_VBLANK( bbuster ) { - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space,0,0,0xffff); - buffer_spriteram16_2_w(space,0,0,0xffff); - } -} - -static SCREEN_VBLANK( mechatt ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram16_w(space,0,0,0xffff); - } + bbusters_state *state = screen.machine().driver_data(); + state->m_spriteram->vblank_copy_rising(screen, vblank_on); + state->m_spriteram2->vblank_copy_rising(screen, vblank_on); } static MACHINE_CONFIG_START( bbusters, bbusters_state ) @@ -700,8 +685,6 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state ) MCFG_NVRAM_ADD_0FILL("eeprom") /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(64*8, 32*8) @@ -713,6 +696,9 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state ) MCFG_PALETTE_LENGTH(2048) MCFG_VIDEO_START(bbuster) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -737,20 +723,20 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state ) MCFG_CPU_IO_MAP(sounda_portmap) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(mechatt) - MCFG_SCREEN_VBLANK_STATIC(mechatt) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(mechatt) MCFG_PALETTE_LENGTH(1024) MCFG_VIDEO_START(mechatt) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c index 63e1658f301..a59d4e4ca3d 100644 --- a/src/mame/drivers/bionicc.c +++ b/src/mame/drivers/bionicc.c @@ -149,7 +149,7 @@ static TIMER_DEVICE_CALLBACK( bionicc_scanline ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */ - AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfe0d00, 0xfe3fff) AM_RAM /* RAM? */ AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(bionicc_gfxctrl_w) /* + coin counters */ AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("SYSTEM") @@ -375,20 +375,20 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state ) MCFG_MACHINE_RESET(bionicc) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(bionicc) - MCFG_SCREEN_VBLANK_STATIC(bionicc) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(bionicc) MCFG_PALETTE_LENGTH(1024) MCFG_VIDEO_START(bionicc) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c index df021da7878..50d755d85fb 100644 --- a/src/mame/drivers/blktiger.c +++ b/src/mame/drivers/blktiger.c @@ -79,7 +79,7 @@ static ADDRESS_MAP_START( blktiger_map, AS_PROGRAM, 8 ) AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( blktiger_io_map, AS_IO, 8 ) @@ -337,20 +337,20 @@ static MACHINE_CONFIG_START( blktiger, blktiger_state ) MCFG_MACHINE_RESET(blktiger) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(blktiger) - MCFG_SCREEN_VBLANK_STATIC(blktiger) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(blktiger) MCFG_PALETTE_LENGTH(1024) MCFG_VIDEO_START(blktiger) + + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c index db0c72949b9..f415ecc0b7f 100644 --- a/src/mame/drivers/boogwing.c +++ b/src/mame/drivers/boogwing.c @@ -97,10 +97,10 @@ static ADDRESS_MAP_START( boogwing_map, AS_PROGRAM, 16 ) AM_RANGE(0x220000, 0x220001) AM_DEVWRITE("deco_common", decocomn_priority_w) AM_RANGE(0x220002, 0x22000f) AM_NOP - AM_RANGE(0x240000, 0x240001) AM_WRITE(buffer_spriteram16_w) - AM_RANGE(0x242000, 0x2427ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x244000, 0x244001) AM_WRITE(buffer_spriteram16_2_w) - AM_RANGE(0x246000, 0x2467ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0x240000, 0x240001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) + AM_RANGE(0x242000, 0x2427ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x244000, 0x244001) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) + AM_RANGE(0x246000, 0x2467ff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0x24e6c0, 0x24e6c1) AM_READ_PORT("DSW") AM_RANGE(0x24e138, 0x24e139) AM_READ_PORT("SYSTEM") @@ -350,8 +350,6 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state ) MCFG_CPU_PROGRAM_MAP(audio_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -363,6 +361,9 @@ static MACHINE_CONFIG_START( boogwing, boogwing_state ) MCFG_GFXDECODE(boogwing) MCFG_VIDEO_START(boogwing) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_DECOCOMN_ADD("deco_common", boogwing_decocomn_intf) diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c index afe258d8556..faee7d32e84 100644 --- a/src/mame/drivers/cninja.c +++ b/src/mame/drivers/cninja.c @@ -185,8 +185,8 @@ static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16 ) AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w) AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ - AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ + AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ + AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* DMA flag */ AM_RANGE(0x1bc000, 0x1bc0ff) AM_WRITE(deco16_104_cninja_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */ AM_RANGE(0x1bc000, 0x1bcfff) AM_READ(deco16_104_cninja_prot_r) AM_BASE(&deco16_prot_ram) /* Protection device */ @@ -196,7 +196,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* bootleg sprite-ram (sprites rewritten here in new format) */ + AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_SHARE("spriteram") /* bootleg sprite-ram (sprites rewritten here in new format) */ AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w) AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w) @@ -220,7 +220,7 @@ static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16 ) AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w) AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ + AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* DMA flag */ ADDRESS_MAP_END static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16 ) @@ -245,8 +245,8 @@ static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16 ) AM_RANGE(0x199750, 0x199751) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */ AM_RANGE(0x1a4000, 0x1a4007) AM_READWRITE(cninja_irq_r, cninja_irq_w) - AM_RANGE(0x1ac000, 0x1ac001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ - AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ + AM_RANGE(0x1ac000, 0x1ac001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* DMA flag */ + AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */ ADDRESS_MAP_END @@ -266,11 +266,11 @@ static ADDRESS_MAP_START( robocop2_map, AS_PROGRAM, 16 ) AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf3_rowscroll) AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE_MEMBER(cninja_state, m_pf4_rowscroll) - AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_SHARE("spriteram") // AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE(cninja_loopback_w) /* Protection writes */ AM_RANGE(0x18c000, 0x18c7ff) AM_READ(robocop2_prot_r) /* Protection device */ AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w) - AM_RANGE(0x198000, 0x198001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */ + AM_RANGE(0x198000, 0x198001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* DMA flag */ AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x1b0000, 0x1b0007) AM_READWRITE(cninja_irq_r, cninja_irq_w) AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_BASE_MEMBER(cninja_state, m_ram) /* Main ram */ @@ -281,14 +281,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mutantf_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("deco_common", decocomn_nonbuffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x180000, 0x180001) AM_DEVWRITE("deco_common", decocomn_priority_w) AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */ AM_RANGE(0x1a0000, 0x1a07ff) AM_READWRITE(deco16_66_prot_r, deco16_66_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */ - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) AM_DEVREAD("deco_common", decocomn_71_r) - AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w) + AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) AM_DEVREAD("deco_common", decocomn_71_r) + AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) AM_RANGE(0x300000, 0x30000f) AM_WRITE(cninja_pf12_control_w) AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w) @@ -924,8 +924,6 @@ static MACHINE_CONFIG_START( cninja, cninja_state ) MCFG_TIMER_ADD("raster_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_SIZE(32*8, 32*8) @@ -934,6 +932,8 @@ static MACHINE_CONFIG_START( cninja, cninja_state ) MCFG_GFXDECODE(cninja) MCFG_PALETTE_LENGTH(2048) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) @@ -978,8 +978,6 @@ static MACHINE_CONFIG_START( stoneage, cninja_state ) MCFG_TIMER_ADD("raster_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_SIZE(32*8, 32*8) @@ -991,6 +989,8 @@ static MACHINE_CONFIG_START( stoneage, cninja_state ) MCFG_VIDEO_START(stoneage) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf) @@ -1032,8 +1032,6 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state ) MCFG_TIMER_ADD("raster_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_SIZE(32*8, 32*8) @@ -1043,6 +1041,8 @@ static MACHINE_CONFIG_START( cninjabl, cninja_state ) MCFG_GFXDECODE(cninjabl) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) MCFG_DECO16IC_ADD("tilegen1", cninja_deco16ic_tilegen1_intf) @@ -1077,8 +1077,6 @@ static MACHINE_CONFIG_START( edrandy, cninja_state ) MCFG_TIMER_ADD("raster_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_SIZE(32*8, 32*8) @@ -1088,6 +1086,8 @@ static MACHINE_CONFIG_START( edrandy, cninja_state ) MCFG_GFXDECODE(cninja) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) MCFG_DECO16IC_ADD("tilegen1", edrandy_deco16ic_tilegen1_intf) @@ -1131,8 +1131,6 @@ static MACHINE_CONFIG_START( robocop2, cninja_state ) MCFG_TIMER_ADD("raster_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(40*8, 32*8) @@ -1142,6 +1140,8 @@ static MACHINE_CONFIG_START( robocop2, cninja_state ) MCFG_GFXDECODE(robocop2) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) MCFG_DECO16IC_ADD("tilegen1", robocop2_deco16ic_tilegen1_intf) @@ -1186,8 +1186,6 @@ static MACHINE_CONFIG_START( mutantf, cninja_state ) MCFG_MACHINE_RESET(cninja) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(40*8, 32*8) @@ -1199,6 +1197,9 @@ static MACHINE_CONFIG_START( mutantf, cninja_state ) MCFG_GFXDECODE(mutantf) MCFG_PALETTE_LENGTH(2048) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") + MCFG_DECOCOMN_ADD("deco_common", cninja_decocomn_intf) MCFG_DECO16IC_ADD("tilegen1", mutantf_deco16ic_tilegen1_intf) diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c index a1c4651a0e5..533d8c082f1 100644 --- a/src/mame/drivers/commando.c +++ b/src/mame/drivers/commando.c @@ -66,7 +66,7 @@ static ADDRESS_MAP_START( commando_map, AS_PROGRAM, 8 ) AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(commando_videoram_w) AM_BASE_MEMBER(commando_state, m_videoram) AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(commando_colorram_w) AM_BASE_MEMBER(commando_state, m_colorram) AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xff7f) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfe00, 0xff7f) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xff80, 0xffff) AM_RAM ADDRESS_MAP_END @@ -259,21 +259,21 @@ static MACHINE_CONFIG_START( commando, commando_state ) MCFG_MACHINE_RESET(commando) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(commando) - MCFG_SCREEN_VBLANK_STATIC(commando) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(commando) MCFG_PALETTE_LENGTH(256) MCFG_PALETTE_INIT(RRRR_GGGG_BBBB) MCFG_VIDEO_START(commando) + + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c index 294a145fcef..b559a9c4af1 100644 --- a/src/mame/drivers/crshrace.c +++ b/src/mame/drivers/crshrace.c @@ -127,7 +127,6 @@ Dip locations verified with Service Mode. ***************************************************************************/ #include "emu.h" -#include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" #include "sound/2610intf.h" #include "video/konicdev.h" @@ -168,7 +167,7 @@ static WRITE16_HANDLER( sound_command_w ) { state->m_pending_command = 1; soundlatch_w(space, offset, data & 0xff); - device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); + state->m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } } @@ -191,9 +190,9 @@ static ADDRESS_MAP_START( crshrace_map, AS_PROGRAM, 16 ) AM_RANGE(0x300000, 0x3fffff) AM_READ(extrarom1_r) AM_RANGE(0x400000, 0x4fffff) AM_READ(extrarom2_r) AM_RANGE(0x500000, 0x5fffff) AM_READ(extrarom2_r) /* mirror */ - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0xd00000, 0xd01fff) AM_RAM_WRITE(crshrace_videoram1_w) AM_BASE_MEMBER(crshrace_state, m_videoram1) - AM_RANGE(0xe00000, 0xe01fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xe00000, 0xe01fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w) AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(crshrace_videoram2_w) AM_BASE_MEMBER(crshrace_state, m_videoram2) @@ -428,7 +427,7 @@ GFXDECODE_END static void irqhandler( device_t *device, int irq ) { crshrace_state *state = device->machine().driver_data(); - device_set_input_line(state->m_audiocpu, 0, irq ? ASSERT_LINE : CLEAR_LINE); + state->m_audiocpu->set_input_line(0, irq ? ASSERT_LINE : CLEAR_LINE); } static const ym2610_interface ym2610_config = @@ -448,9 +447,6 @@ static MACHINE_START( crshrace ) memory_configure_bank(machine, "bank1", 0, 4, machine.region("audiocpu")->base() + 0x10000, 0x8000); - state->m_audiocpu = machine.device("audiocpu"); - state->m_k053936 = machine.device("k053936"); - state->save_item(NAME(state->m_roz_bank)); state->save_item(NAME(state->m_gfxctrl)); state->save_item(NAME(state->m_flipscreen)); @@ -482,8 +478,6 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state ) MCFG_MACHINE_RESET(crshrace) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(64*8, 32*8) @@ -493,6 +487,9 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state ) MCFG_GFXDECODE(crshrace) MCFG_PALETTE_LENGTH(2048) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_K053936_ADD("k053936", crshrace_k053936_intf) diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c index ee6c56cceef..41123c4bf6f 100644 --- a/src/mame/drivers/darkseal.c +++ b/src/mame/drivers/darkseal.c @@ -27,9 +27,10 @@ static WRITE16_HANDLER( darkseal_control_w ) { + darkseal_state *state = space->machine().driver_data(); switch (offset<<1) { case 6: /* DMA flag */ - buffer_spriteram16_w(space, 0, 0, 0xffff); + state->m_spriteram->copy(); return; case 8: /* Sound CPU write */ soundlatch_w(space, 0, data & 0xff); @@ -62,7 +63,7 @@ static READ16_HANDLER( darkseal_control_r ) static ADDRESS_MAP_START( darkseal_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE_MEMBER(darkseal_state, m_ram) - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(darkseal_palette_24bit_rg_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(darkseal_palette_24bit_b_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x180000, 0x18000f) AM_READWRITE(darkseal_control_r, darkseal_control_w) @@ -269,8 +270,6 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state ) MCFG_CPU_PROGRAM_MAP(sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) @@ -280,6 +279,8 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state ) MCFG_GFXDECODE(darkseal) MCFG_PALETTE_LENGTH(2048) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_DECO16IC_ADD("tilegen1", darkseal_deco16ic_tilegen1_intf) diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c index 4171c708ff6..02dacc51425 100644 --- a/src/mame/drivers/dassault.c +++ b/src/mame/drivers/dassault.c @@ -219,7 +219,7 @@ static ADDRESS_MAP_START( dassault_map, AS_PROGRAM, 16 ) AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r) AM_RANGE(0x1c000a, 0x1c000b) AM_DEVWRITE("deco_common", decocomn_priority_w) - AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(buffer_spriteram16_2_w) + AM_RANGE(0x1c000c, 0x1c000d) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w) AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_pf1_data_r, deco16ic_pf1_data_w) @@ -233,7 +233,7 @@ static ADDRESS_MAP_START( dassault_map, AS_PROGRAM, 16 ) AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen2", deco16ic_pf_control_w) AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE_MEMBER(dassault_state, m_ram) /* Main ram */ - AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) /* Spriteram (2nd) */ + AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram2") /* Spriteram (2nd) */ AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w) AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE_MEMBER(dassault_state, m_shared_ram) /* Shared ram */ ADDRESS_MAP_END @@ -241,12 +241,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dassault_sub_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_WRITE(buffer_spriteram16_w) + AM_RANGE(0x100000, 0x100001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) AM_RANGE(0x100002, 0x100007) AM_WRITENOP /* ? */ AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r) AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE_MEMBER(dassault_state, m_ram2) /* Sub cpu ram */ - AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprite ram */ + AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */ AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w) AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w) ADDRESS_MAP_END @@ -582,8 +582,6 @@ static MACHINE_CONFIG_START( dassault, dassault_state ) MCFG_QUANTUM_PERFECT_CPU("maincpu") // I was seeing random lockups.. let's see if this helps /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) @@ -595,6 +593,9 @@ static MACHINE_CONFIG_START( dassault, dassault_state ) MCFG_GFXDECODE(dassault) MCFG_PALETTE_LENGTH(4096) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_DECOCOMN_ADD("deco_common", dassault_decocomn_intf) diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c index fbc07a04b5e..50a85e81a23 100644 --- a/src/mame/drivers/dec8.c +++ b/src/mame/drivers/dec8.c @@ -56,7 +56,7 @@ To do: static WRITE8_HANDLER( dec8_mxc06_karn_buffer_spriteram_w) { dec8_state *state = space->machine().driver_data(); - UINT8* spriteram = space->machine().generic.spriteram.u8; + UINT8* spriteram = state->m_spriteram->live(); // copy to a 16-bit region for the sprite chip for (int i=0;i<0x800/2;i++) { @@ -498,8 +498,6 @@ static WRITE8_HANDLER( shackled_int_w ) /******************************************************************************/ -static READ8_HANDLER( shackled_sprite_r ) { return space->machine().generic.spriteram.u8[offset]; } -static WRITE8_HANDLER( shackled_sprite_w ) { space->machine().generic.spriteram.u8[offset] = data; } static WRITE8_HANDLER( flip_screen_w ) { flip_screen_set(space->machine(), data); } /******************************************************************************/ @@ -512,7 +510,7 @@ static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8 ) AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) AM_RANGE(0x1800, 0x1fff) AM_RAM AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */ AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ @@ -538,7 +536,7 @@ static ADDRESS_MAP_START( meikyuh_map, AS_PROGRAM, 8 ) AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror? AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_rowscroll_8bit_r, deco_bac06_pf_rowscroll_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w) AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ @@ -557,14 +555,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( srdarwin_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0600, 0x07ff) AM_RAM AM_BASE_GENERIC(spriteram) - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram) AM_SIZE_GENERIC(spriteram) + AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE_MEMBER(dec8_state, m_videoram) AM_RANGE(0x1000, 0x13ff) AM_RAM AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w) AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w) /* Maybe.. */ AM_RANGE(0x1803, 0x1803) AM_WRITENOP /* NMI ack */ - AM_RANGE(0x1804, 0x1804) AM_WRITE(buffer_spriteram_w) /* DMA */ + AM_RANGE(0x1804, 0x1804) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram8_device, write) /* DMA */ AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */ AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */ AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */ @@ -584,7 +582,7 @@ static ADDRESS_MAP_START( gondo_map, AS_PROGRAM, 8 ) AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r) /* Player 1 rotary */ @@ -607,7 +605,7 @@ static ADDRESS_MAP_START( oscar_map, AS_PROGRAM, 8 ) AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_pf_data_8bit_r, deco_bac06_pf_data_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0") AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1") @@ -652,7 +650,7 @@ static ADDRESS_MAP_START( lastmisn_map, AS_PROGRAM, 8 ) AM_RANGE(0x180d, 0x180d) AM_WRITE(lastmisn_control_w) /* Bank switch + Scroll MSB */ AM_RANGE(0x180e, 0x180f) AM_WRITE(lastmisn_i8751_w) AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") @@ -673,7 +671,7 @@ static ADDRESS_MAP_START( lastmisn_sub_map, AS_PROGRAM, 8 ) AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w) AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_WRITE(shackled_sprite_w) + AM_RANGE(0x2800, 0x2fff) AM_WRITEONLY AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_RANGE(0x4000, 0xffff) AM_ROM @@ -696,7 +694,7 @@ static ADDRESS_MAP_START( shackled_map, AS_PROGRAM, 8 ) AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */ AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_READWRITE(shackled_sprite_r, shackled_sprite_w) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") @@ -722,7 +720,7 @@ static ADDRESS_MAP_START( shackled_sub_map, AS_PROGRAM, 8 ) AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */ AM_RANGE(0x180e, 0x180f) AM_WRITE(shackled_i8751_w) AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_RANGE(0x4000, 0xffff) AM_ROM @@ -746,7 +744,7 @@ static ADDRESS_MAP_START( csilver_map, AS_PROGRAM, 8 ) AM_RANGE(0x1c00, 0x1c00) AM_READ(i8751_h_r) AM_RANGE(0x1e00, 0x1e00) AM_READ(i8751_l_r) AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_READWRITE(shackled_sprite_r, shackled_sprite_w) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") @@ -763,7 +761,7 @@ static ADDRESS_MAP_START( csilver_sub_map, AS_PROGRAM, 8 ) AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE_SIZE_MEMBER(dec8_state, m_videoram, m_videoram_size) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_RANGE(0x4000, 0xffff) AM_ROM @@ -775,7 +773,7 @@ static ADDRESS_MAP_START( garyoret_map, AS_PROGRAM, 8 ) AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_BASE_MEMBER(dec8_state, m_bg_data) AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprites */ + AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ AM_RANGE(0x3808, 0x3808) AM_READNOP /* ? */ @@ -2010,8 +2008,8 @@ static MACHINE_CONFIG_START( cobracom, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); MCFG_DEVICE_ADD("tilegen2", DECO_BAC06, 0) @@ -2065,8 +2063,8 @@ static MACHINE_CONFIG_START( ghostb, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); @@ -2121,8 +2119,8 @@ static MACHINE_CONFIG_START( oscar, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("tilegen1", DECO_BAC06, 0) deco_bac06_device::set_gfx_region_wide(*device, 2,2,0); @@ -2171,8 +2169,8 @@ static MACHINE_CONFIG_START( srdarwin, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529) /* 58Hz, 529ms Vblank duration */) @@ -2217,8 +2215,8 @@ static MACHINE_CONFIG_START( gondo, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) deco_karnovsprites_device::set_gfx_region(*device, 1); @@ -2267,8 +2265,8 @@ static MACHINE_CONFIG_START( lastmisn, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) deco_karnovsprites_device::set_gfx_region(*device, 1); @@ -2316,8 +2314,8 @@ static MACHINE_CONFIG_START( shackled, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) deco_karnovsprites_device::set_gfx_region(*device, 1); @@ -2366,8 +2364,8 @@ static MACHINE_CONFIG_START( csilver, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) deco_karnovsprites_device::set_gfx_region(*device, 1); @@ -2416,8 +2414,8 @@ static MACHINE_CONFIG_START( garyoret, dec8_state ) MCFG_MACHINE_RESET(dec8) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_DEVICE_ADD("spritegen", DECO_KARNOVSPRITES, 0) deco_karnovsprites_device::set_gfx_region(*device, 1); diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c index fd35905766b..de860d910d5 100644 --- a/src/mame/drivers/deco32.c +++ b/src/mame/drivers/deco32.c @@ -862,7 +862,7 @@ static ADDRESS_MAP_START( dragngun_map, AS_PROGRAM, 32 ) AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_layout_1_ram) AM_RANGE(0x210000, 0x217fff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_lookup_0_ram) AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_lookup_1_ram) - AM_RANGE(0x220000, 0x221fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Main spriteram */ + AM_RANGE(0x220000, 0x221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */ AM_RANGE(0x228000, 0x2283ff) AM_RAM //0x10 byte increments only @@ -911,7 +911,7 @@ static ADDRESS_MAP_START( lockload_map, AS_PROGRAM, 32 ) AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_layout_1_ram) AM_RANGE(0x210000, 0x217fff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_lookup_0_ram) AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_BASE_MEMBER(dragngun_state, m_dragngun_sprite_lookup_1_ram) - AM_RANGE(0x220000, 0x221fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Main spriteram */ + AM_RANGE(0x220000, 0x221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */ AM_RANGE(0x228000, 0x2283ff) AM_RAM //0x10 byte increments only AM_RANGE(0x230000, 0x230003) AM_WRITE(dragngun_spriteram_dma_w) @@ -1959,14 +1959,14 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state ) MCFG_TIMER_ADD("int_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(42*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_STATIC(dragngun) MCFG_SCREEN_VBLANK_STATIC(dragngun) + + MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") MCFG_DECO16IC_ADD("tilegen1", dragngun_deco16ic_tilegen1_intf) MCFG_DECO16IC_ADD("tilegen2", dragngun_deco16ic_tilegen2_intf) @@ -2032,14 +2032,14 @@ static MACHINE_CONFIG_START( lockload, dragngun_state ) MCFG_TIMER_ADD("int_timer", interrupt_gen) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(42*8, 32*8+22) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_STATIC(dragngun) MCFG_SCREEN_VBLANK_STATIC(dragngun) + + MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") MCFG_DECO16IC_ADD("tilegen1", lockload_deco16ic_tilegen1_intf) MCFG_DECO16IC_ADD("tilegen2", lockload_deco16ic_tilegen2_intf) diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c index 4a03344fb29..da203ca588c 100644 --- a/src/mame/drivers/dooyong.c +++ b/src/mame/drivers/dooyong.c @@ -131,14 +131,14 @@ static ADDRESS_MAP_START( lastday_map, AS_PROGRAM, 8 ) AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE_MEMBER(dooyong_state, m_txvideoram) AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE_MEMBER(dooyong_state, m_txvideoram) AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") AM_WRITE(lastday_bankswitch_w) AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB") @@ -156,7 +156,7 @@ static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE_MEMBER(dooyong_state, m_txvideoram) AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") AM_RANGE(0xf000, 0xf000) AM_WRITE(lastday_bankswitch_w) @@ -187,14 +187,14 @@ static ADDRESS_MAP_START( bluehawk_map, AS_PROGRAM, 8 ) AM_RANGE(0xc048, 0xc04f) AM_WRITE(dooyong_fgscroll8_w) AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE_MEMBER(dooyong_state, m_txvideoram) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xd000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe000) AM_READ_PORT("P1") AM_RANGE(0xe000, 0xe000) AM_WRITE(lastday_bankswitch_w) @@ -232,7 +232,7 @@ static ADDRESS_MAP_START( rshark_map, AS_PROGRAM, 16 ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) /* super-x needs this and is similar */ AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04cfff) AM_RAM - AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram16") AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW") AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2") @@ -250,7 +250,7 @@ static ADDRESS_MAP_START( superx_map, AS_PROGRAM, 16 ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x0d0000, 0x0dcfff) AM_RAM - AM_RANGE(0x0dd000, 0x0ddfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x0dd000, 0x0ddfff) AM_RAM AM_SHARE("spriteram16") AM_RANGE(0x0de000, 0x0dffff) AM_RAM AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW") AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P1_P2") @@ -268,7 +268,7 @@ static ADDRESS_MAP_START( popbingo_map, AS_PROGRAM, 16 ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04cfff) AM_RAM - AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram16") AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW") AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2") @@ -876,7 +876,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_state ) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -884,7 +884,7 @@ static MACHINE_CONFIG_START( lastday, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(lastday) - MCFG_SCREEN_VBLANK_STATIC(dooyong) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(lastday) MCFG_PALETTE_LENGTH(1024) @@ -918,7 +918,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state ) MCFG_MACHINE_RESET(sound_ym2203) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -926,7 +926,7 @@ static MACHINE_CONFIG_START( gulfstrm, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(gulfstrm) - MCFG_SCREEN_VBLANK_STATIC(dooyong) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(lastday) MCFG_PALETTE_LENGTH(1024) @@ -951,7 +951,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_state ) MCFG_MACHINE_RESET(sound_ym2203) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -959,7 +959,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(pollux) - MCFG_SCREEN_VBLANK_STATIC(dooyong) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(lastday) MCFG_PALETTE_LENGTH(1024) @@ -983,7 +983,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state ) MCFG_MACHINE_START(lastday) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -991,7 +991,7 @@ static MACHINE_CONFIG_START( bluehawk, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(bluehawk) - MCFG_SCREEN_VBLANK_STATIC(dooyong) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(bluehawk) MCFG_PALETTE_LENGTH(1024) @@ -1015,7 +1015,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state ) MCFG_MACHINE_START(lastday) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1023,7 +1023,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(flytiger) - MCFG_SCREEN_VBLANK_STATIC(dooyong) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(flytiger) MCFG_PALETTE_LENGTH(1024) @@ -1053,7 +1053,6 @@ static MACHINE_CONFIG_START( primella, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 ) MCFG_SCREEN_UPDATE_STATIC(primella) - MCFG_SCREEN_VBLANK_STATIC(dooyong) MCFG_GFXDECODE(primella) MCFG_PALETTE_LENGTH(1024) @@ -1087,7 +1086,7 @@ static MACHINE_CONFIG_START( rshark, dooyong_state ) MCFG_CPU_PROGRAM_MAP(bluehawk_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram16") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1095,7 +1094,7 @@ static MACHINE_CONFIG_START( rshark, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(rshark) - MCFG_SCREEN_VBLANK_STATIC(rshark) + MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(rshark) MCFG_PALETTE_LENGTH(2048) @@ -1117,7 +1116,7 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map MCFG_CPU_PROGRAM_MAP(bluehawk_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram16") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1125,7 +1124,7 @@ static MACHINE_CONFIG_START( superx, dooyong_state ) // dif mem map MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(rshark) - MCFG_SCREEN_VBLANK_STATIC(rshark) + MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(rshark) MCFG_PALETTE_LENGTH(2048) @@ -1147,7 +1146,7 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state ) MCFG_CPU_PROGRAM_MAP(bluehawk_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram16") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1155,7 +1154,7 @@ static MACHINE_CONFIG_START( popbingo, dooyong_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(popbingo) - MCFG_SCREEN_VBLANK_STATIC(rshark) + MCFG_SCREEN_VBLANK_DEVICE("spriteram16", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(popbingo) MCFG_PALETTE_LENGTH(2048) diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c index 30ea28de4df..22d82e3511b 100644 --- a/src/mame/drivers/dynduke.c +++ b/src/mame/drivers/dynduke.c @@ -74,7 +74,7 @@ Also, implemented conditional port for Coin Mode (SW1:1) static ADDRESS_MAP_START( master_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x08000, 0x080ff) AM_RAM AM_BASE_MEMBER(dynduke_state, m_scroll_ram) AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") @@ -100,7 +100,7 @@ ADDRESS_MAP_END /* Memory map used by DlbDyn - probably an addressing PAL is different */ static ADDRESS_MAP_START( masterj_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_MEMBER(dynduke_state, m_videoram) AM_RANGE(0x09000, 0x0900d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w) AM_RANGE(0x0c000, 0x0c0ff) AM_RAM AM_BASE_MEMBER(dynduke_state, m_scroll_ram) @@ -287,7 +287,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state ) MCFG_MACHINE_RESET(seibu_sound) // video hardware - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -295,7 +295,7 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(dynduke) - MCFG_SCREEN_VBLANK_STATIC(dynduke) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(dynduke) MCFG_PALETTE_LENGTH(2048) diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c index 67ee1bc2089..5707f5c8379 100644 --- a/src/mame/drivers/exedexes.c +++ b/src/mame/drivers/exedexes.c @@ -45,7 +45,7 @@ static ADDRESS_MAP_START( exedexes_map, AS_PROGRAM, 8 ) AM_RANGE(0xd804, 0xd805) AM_WRITEONLY AM_BASE_MEMBER(exedexes_state, m_bg_scroll) AM_RANGE(0xd807, 0xd807) AM_WRITE(exedexes_gfxctrl_w) /* layer enables */ AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */ - AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* Sprite RAM */ + AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ ADDRESS_MAP_END @@ -231,7 +231,7 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state ) MCFG_MACHINE_RESET(exedexes) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( exedexes, exedexes_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(exedexes) - MCFG_SCREEN_VBLANK_STATIC(exedexes) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(exedexes) MCFG_PALETTE_LENGTH(64*4+64*4+16*16+16*16) diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c index 3235eedacac..621889773c2 100644 --- a/src/mame/drivers/fuukifg3.c +++ b/src/mame/drivers/fuukifg3.c @@ -611,8 +611,6 @@ static MACHINE_CONFIG_START( fuuki32, fuuki32_state ) MCFG_MACHINE_RESET(fuuki32) /* video hardware */ - //MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) // Buffered by 2 frames - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(64*8, 32*8) diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c index 82873bfd15a..cdbbe3e7b93 100644 --- a/src/mame/drivers/gaelco2.c +++ b/src/mame/drivers/gaelco2.c @@ -20,7 +20,6 @@ ***************************************************************************/ #include "emu.h" -#include "cpu/m68000/m68000.h" #include "machine/eeprom.h" #include "sound/gaelco.h" #include "rendlay.h" @@ -58,7 +57,7 @@ GFXDECODEINFO(0x0400000, 128) static ADDRESS_MAP_START( maniacsq_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ @@ -161,7 +160,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state ) MCFG_CPU_VBLANK_INT("screen", irq6_line_hold) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.1) @@ -169,7 +168,7 @@ static MACHINE_CONFIG_START( maniacsq, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(0x0080000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ @@ -215,7 +214,7 @@ static READ16_HANDLER(p2_gun_y) {return (input_port_read(space->machine(), "LIGH static ADDRESS_MAP_START( bang_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x218004, 0x218009) AM_READONLY /* Video Registers */ AM_RANGE(0x218004, 0x218007) AM_WRITEONLY AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ @@ -294,7 +293,7 @@ static MACHINE_CONFIG_START( bang, gaelco2_state ) MCFG_EEPROM_ADD("eeprom", gaelco2_eeprom_interface) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.1) @@ -302,7 +301,7 @@ static MACHINE_CONFIG_START( bang, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(0x0200000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ @@ -433,7 +432,7 @@ ROM_END static ADDRESS_MAP_START( alighunt_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ @@ -535,7 +534,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state ) MCFG_CPU_VBLANK_INT("screen", irq6_line_hold) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.1) @@ -543,7 +542,7 @@ static MACHINE_CONFIG_START( alighunt, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(0x0400000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ @@ -644,7 +643,7 @@ static READ16_HANDLER ( dallas_kludge_r ) static ADDRESS_MAP_START( touchgo_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ @@ -777,7 +776,7 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state ) MCFG_CPU_VBLANK_INT("lscreen", irq6_line_hold) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_GFXDECODE(0x0400000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ MCFG_DEFAULT_LAYOUT(layout_dualhsxs) @@ -795,7 +794,7 @@ static MACHINE_CONFIG_START( touchgo, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2_right) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_VIDEO_START(gaelco2_dual) @@ -908,7 +907,7 @@ ROM_END static ADDRESS_MAP_START( snowboar_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */ AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ @@ -971,7 +970,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state ) MCFG_EEPROM_ADD("eeprom", gaelco2_eeprom_interface) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.1) @@ -979,7 +978,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state ) MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(0x0400000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ @@ -1093,7 +1092,7 @@ ROM_END static ADDRESS_MAP_START( wrally2_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE_SIZE_GENERIC(spriteram) /* Video RAM */ + AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */ AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE_MEMBER(gaelco2_state, m_vregs) /* Video Registers */ @@ -1212,7 +1211,7 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state ) MCFG_EEPROM_ADD("eeprom", gaelco2_eeprom_interface) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_GFXDECODE(0x0200000) MCFG_PALETTE_LENGTH(4096*16 - 16) /* game's palette is 4096 but we allocate 15 more for shadows & highlights */ MCFG_DEFAULT_LAYOUT(layout_dualhsxs) @@ -1230,7 +1229,7 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state ) MCFG_SCREEN_SIZE(384, 32*16) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 16, 256-1) MCFG_SCREEN_UPDATE_STATIC(gaelco2_right) - MCFG_SCREEN_VBLANK_STATIC(gaelco2) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_VIDEO_START(gaelco2_dual) diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c index d0cf1f8389a..5b9b10735a7 100644 --- a/src/mame/drivers/gng.c +++ b/src/mame/drivers/gng.c @@ -42,7 +42,7 @@ static WRITE8_HANDLER( gng_coin_counter_w ) static ADDRESS_MAP_START( gng_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1dff) AM_RAM - AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_BASE_MEMBER(gng_state, m_fgvideoram) AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_BASE_MEMBER(gng_state, m_bgvideoram) AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM") @@ -355,7 +355,7 @@ static MACHINE_CONFIG_START( gng, gng_state ) MCFG_MACHINE_RESET(gng) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.59) /* verified on pcb */ @@ -363,7 +363,7 @@ static MACHINE_CONFIG_START( gng, gng_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(gng) - MCFG_SCREEN_VBLANK_STATIC(gng) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(gng) MCFG_PALETTE_LENGTH(256) diff --git a/src/mame/drivers/hcastle.c b/src/mame/drivers/hcastle.c index 51808e852ad..88887f43bfe 100644 --- a/src/mame/drivers/hcastle.c +++ b/src/mame/drivers/hcastle.c @@ -55,9 +55,9 @@ static ADDRESS_MAP_START( hcastle_map, AS_PROGRAM, 8 ) AM_RANGE(0x0600, 0x06ff) AM_RAM AM_BASE_MEMBER(hcastle_state, m_paletteram) AM_RANGE(0x0700, 0x1fff) AM_RAM AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(hcastle_pf1_video_w) AM_BASE_MEMBER(hcastle_state, m_pf1_videoram) - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(hcastle_pf2_video_w) AM_BASE_MEMBER(hcastle_state, m_pf2_videoram) - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -220,7 +220,8 @@ static MACHINE_CONFIG_START( hcastle, hcastle_state ) MCFG_MACHINE_RESET(hcastle) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram2") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59) diff --git a/src/mame/drivers/karnov.c b/src/mame/drivers/karnov.c index d57fec2fee0..fada149e732 100644 --- a/src/mame/drivers/karnov.c +++ b/src/mame/drivers/karnov.c @@ -367,7 +367,7 @@ static WRITE16_HANDLER( karnov_control_w ) break; case 4: /* DM (DMA to buffer spriteram) */ - buffer_spriteram16_w(space, 0, 0, 0xffff); + state->m_spriteram->copy(); break; case 6: /* SECREQ (Interrupt & Data to i8751) */ @@ -430,7 +430,7 @@ static READ16_HANDLER( karnov_control_r ) static ADDRESS_MAP_START( karnov_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_RANGE(0x060000, 0x063fff) AM_RAM AM_BASE_MEMBER(karnov_state, m_ram) - AM_RANGE(0x080000, 0x080fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(karnov_videoram_w) AM_BASE_MEMBER(karnov_state, m_videoram) AM_RANGE(0x0a0800, 0x0a0fff) AM_WRITE(karnov_videoram_w) /* Wndrplnt Mirror */ AM_RANGE(0x0a1000, 0x0a17ff) AM_WRITEONLY AM_BASE_MEMBER(karnov_state, m_pf_data) @@ -819,7 +819,7 @@ static MACHINE_CONFIG_START( karnov, karnov_state ) MCFG_MACHINE_RESET(karnov) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -863,7 +863,7 @@ static MACHINE_CONFIG_START( wndrplnt, karnov_state ) MCFG_MACHINE_RESET(karnov) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/lastduel.c b/src/mame/drivers/lastduel.c index dd76d0b5d58..dd169ff7d53 100644 --- a/src/mame/drivers/lastduel.c +++ b/src/mame/drivers/lastduel.c @@ -135,7 +135,7 @@ static WRITE16_HANDLER( lastduel_sound_w ) static ADDRESS_MAP_START( lastduel_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_RANGE(0xfc0000, 0xfc0003) AM_WRITENOP /* Written rarely */ - AM_RANGE(0xfc0800, 0xfc0fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfc0800, 0xfc0fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("P1_P2") AM_WRITE(lastduel_flip_w) AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("SYSTEM") AM_WRITE(lastduel_sound_w) AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("DSW1") @@ -150,7 +150,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( madgear_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xfc1800, 0xfc1fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfc1800, 0xfc1fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("DSW1") AM_WRITE(lastduel_flip_w) AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("DSW2") AM_WRITE(lastduel_sound_w) AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("P1_P2") @@ -512,7 +512,7 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state ) MCFG_MACHINE_RESET(lastduel) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -520,7 +520,9 @@ static MACHINE_CONFIG_START( lastduel, lastduel_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(lastduel) - MCFG_SCREEN_VBLANK_STATIC(lastduel) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_GFXDECODE(lastduel) MCFG_PALETTE_LENGTH(1024) @@ -554,7 +556,7 @@ static MACHINE_CONFIG_START( madgear, lastduel_state ) MCFG_MACHINE_RESET(lastduel) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -562,7 +564,9 @@ static MACHINE_CONFIG_START( madgear, lastduel_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(madgear) - MCFG_SCREEN_VBLANK_STATIC(lastduel) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) + + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_GFXDECODE(madgear) MCFG_PALETTE_LENGTH(1024) diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c index d1bc44ea7f5..5c3104fe041 100644 --- a/src/mame/drivers/legionna.c +++ b/src/mame/drivers/legionna.c @@ -88,7 +88,7 @@ static ADDRESS_MAP_START( legionna_map, AS_PROGRAM, 16 ) AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_BASE_MEMBER(legionna_state, m_mid_data) AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_BASE_MEMBER(legionna_state, m_textram) AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) /* palette xRRRRxGGGGxBBBBx ? */ - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x106000, 0x107fff) AM_RAM AM_RANGE(0x108000, 0x11ffff) AM_RAM /* main ram */ ADDRESS_MAP_END @@ -102,7 +102,7 @@ static ADDRESS_MAP_START( heatbrl_map, AS_PROGRAM, 16 ) AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_BASE_MEMBER(legionna_state, m_fore_data) AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_BASE_MEMBER(legionna_state, m_mid_data) AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_BASE_MEMBER(legionna_state, m_textram) - AM_RANGE(0x103000, 0x103fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x108000, 0x11ffff) AM_RAM ADDRESS_MAP_END @@ -117,7 +117,7 @@ static ADDRESS_MAP_START( godzilla_map, AS_PROGRAM, 16 ) AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_BASE_MEMBER(legionna_state, m_textram) AM_RANGE(0x103800, 0x103fff) AM_RAM_WRITE(legionna_foreground_w) AM_BASE_MEMBER(legionna_state, m_fore_data) AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x106000, 0x1067ff) AM_RAM AM_RANGE(0x106800, 0x106fff) AM_RAM AM_RANGE(0x107000, 0x107fff) AM_RAM /*Ani-DSP ram*/ @@ -142,7 +142,7 @@ static ADDRESS_MAP_START( denjinmk_map, AS_PROGRAM, 16 ) AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_BASE_MEMBER(legionna_state, m_mid_data) AM_RANGE(0x102800, 0x103fff) AM_RAM_WRITE(legionna_text_w) AM_BASE_MEMBER(legionna_state, m_textram) AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x106000, 0x107fff) AM_RAM AM_RANGE(0x108000, 0x11dfff) AM_RAM AM_RANGE(0x11e000, 0x11efff) AM_RAM @@ -161,7 +161,7 @@ static ADDRESS_MAP_START( grainbow_map, AS_PROGRAM, 16 ) AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x105000, 0x105fff) AM_RAM AM_RANGE(0x106000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x107fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x107000, 0x107fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x108000, 0x11ffff) AM_RAM ADDRESS_MAP_END @@ -176,7 +176,7 @@ static ADDRESS_MAP_START( cupsoc_mem, AS_PROGRAM, 16 ) AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x104000, 0x104fff) AM_RAM AM_RANGE(0x105000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/ AM_RANGE(0x108000, 0x10ffff) AM_RAM AM_RANGE(0x110000, 0x119fff) AM_RAM @@ -195,7 +195,7 @@ static ADDRESS_MAP_START( cupsocs_mem, AS_PROGRAM, 16 ) AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x104000, 0x104fff) AM_RAM AM_RANGE(0x105000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/ AM_RANGE(0x108000, 0x10ffff) AM_RAM AM_RANGE(0x110000, 0x119fff) AM_RAM @@ -214,7 +214,7 @@ static ADDRESS_MAP_START( cupsocbl_mem, AS_PROGRAM, 16 ) AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x104000, 0x104fff) AM_RAM AM_RANGE(0x105000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/ AM_RANGE(0x108000, 0x10ffff) AM_RAM AM_RANGE(0x110000, 0x119fff) AM_RAM @@ -1058,8 +1058,6 @@ static MACHINE_CONFIG_START( legionna, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -1090,8 +1088,6 @@ static MACHINE_CONFIG_START( heatbrl, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -1121,8 +1117,6 @@ static MACHINE_CONFIG_START( godzilla, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(61) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -1152,8 +1146,6 @@ static MACHINE_CONFIG_START( denjinmk, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_REFRESH_RATE(61) @@ -1183,8 +1175,6 @@ static MACHINE_CONFIG_START( grainbow, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -1215,8 +1205,6 @@ static MACHINE_CONFIG_START( cupsoc, legionna_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -1255,8 +1243,6 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state ) //MCFG_MACHINE_INIT(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) diff --git a/src/mame/drivers/lemmings.c b/src/mame/drivers/lemmings.c index ae891e35357..6afbe03fb12 100644 --- a/src/mame/drivers/lemmings.c +++ b/src/mame/drivers/lemmings.c @@ -97,15 +97,15 @@ static WRITE8_HANDLER( lemmings_sound_ack_w ) static ADDRESS_MAP_START( lemmings_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) + AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2") AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(lemmings_palette_24bit_w) AM_BASE_MEMBER(lemmings_state, m_paletteram) AM_RANGE(0x170000, 0x17000f) AM_RAM_WRITE(lemmings_control_w) AM_BASE_MEMBER(lemmings_state, m_control_data) AM_RANGE(0x190000, 0x19000f) AM_READ(lemmings_trackball_r) AM_RANGE(0x1a0000, 0x1a07ff) AM_READ(lemmings_prot_r) AM_RANGE(0x1a0064, 0x1a0065) AM_WRITE(lemmings_sound_w) - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) /* 1 written once a frame */ - AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w) /* 1 written once a frame */ + AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* 1 written once a frame */ + AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) /* 1 written once a frame */ AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(lemmings_vram_w) AM_BASE_MEMBER(lemmings_state, m_vram_data) AM_RANGE(0x202000, 0x202fff) AM_RAM AM_RANGE(0x300000, 0x37ffff) AM_RAM_WRITE(lemmings_pixel_0_w) AM_BASE_MEMBER(lemmings_state, m_pixel_0_data) @@ -276,7 +276,8 @@ static MACHINE_CONFIG_START( lemmings, lemmings_state ) MCFG_MACHINE_START(lemmings) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c index 85686123f34..ddf1f46d362 100644 --- a/src/mame/drivers/lwings.c +++ b/src/mame/drivers/lwings.c @@ -291,7 +291,7 @@ static ADDRESS_MAP_START( avengers_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xdf80, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE_MEMBER(lwings_state, m_fgvideoram) AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE_MEMBER(lwings_state, m_bg1videoram) @@ -315,7 +315,7 @@ static ADDRESS_MAP_START( lwings_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE_MEMBER(lwings_state, m_fgvideoram) AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE_MEMBER(lwings_state, m_bg1videoram) AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE_GENERIC(paletteram2) @@ -336,7 +336,7 @@ static ADDRESS_MAP_START( trojan_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xdf80, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE_MEMBER(lwings_state, m_fgvideoram) AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE_MEMBER(lwings_state, m_bg1videoram) @@ -801,7 +801,7 @@ static MACHINE_CONFIG_START( lwings, lwings_state ) MCFG_MACHINE_RESET(lwings) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -809,7 +809,7 @@ static MACHINE_CONFIG_START( lwings, lwings_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_STATIC(lwings) - MCFG_SCREEN_VBLANK_STATIC(lwings) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(lwings) MCFG_PALETTE_LENGTH(1024) diff --git a/src/mame/drivers/m92.c b/src/mame/drivers/m92.c index e26d5e92c23..d439d741227 100644 --- a/src/mame/drivers/m92.c +++ b/src/mame/drivers/m92.c @@ -338,7 +338,7 @@ static ADDRESS_MAP_START( lethalth_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_RANGE(0x80000, 0x8ffff) AM_RAM_WRITE(m92_vram_w) AM_BASE_MEMBER(m92_state, m_vram_data) AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */ - AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_BASE_MEMBER(m92_state, m_spritecontrol) AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w) @@ -351,7 +351,7 @@ static ADDRESS_MAP_START( m92_map, AS_PROGRAM, 16 ) AM_RANGE(0xc0000, 0xcffff) AM_ROM AM_REGION("maincpu", 0x00000) /* Mirror used by In The Hunt as protection */ AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m92_vram_w) AM_BASE_MEMBER(m92_state, m_vram_data) AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */ - AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_BASE_MEMBER(m92_state, m_spritecontrol) AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w) @@ -912,7 +912,7 @@ static MACHINE_CONFIG_START( m92, m92_state ) MCFG_TIMER_ADD_SCANLINE("scantimer", m92_scanline_interrupt, "screen", 0, 1) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -998,7 +998,7 @@ static MACHINE_CONFIG_START( ppan, m92_state ) MCFG_TIMER_ADD_SCANLINE("scantimer", m92_scanline_interrupt, "screen", 0, 1) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) // not really... + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") // not really... MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c index 0c6b0363855..f8de562f95c 100644 --- a/src/mame/drivers/mirage.c +++ b/src/mame/drivers/mirage.c @@ -38,6 +38,7 @@ MR_01-.3A [a0b758aa] #include "includes/decoprot.h" #include "video/deco16ic.h" #include "sound/okim6295.h" +#include "video/bufsprite.h" #include "video/decospr.h" // mirage_state was also defined in mess/drivers/mirage.c @@ -49,14 +50,13 @@ public: m_maincpu(*this, "maincpu"), m_deco_tilegen1(*this, "tilegen1"), m_oki_sfx(*this, "oki_sfx"), - m_oki_bgm(*this, "oki_bgm") { } + m_oki_bgm(*this, "oki_bgm"), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT16 * m_pf1_rowscroll; UINT16 * m_pf2_rowscroll; -// UINT16 * m_spriteram; // UINT16 * m_paletteram; // currently this uses generic palette handling (in decocomn.c) -// size_t m_spriteram_size; /* misc */ UINT8 m_mux_data; @@ -66,6 +66,7 @@ public: required_device m_deco_tilegen1; required_device m_oki_sfx; required_device m_oki_bgm; + required_device m_spriteram; }; static VIDEO_START( mirage ) @@ -80,7 +81,7 @@ static SCREEN_UPDATE_RGB32( mirage ) flip_screen_set(screen.machine(), BIT(flip, 7)); - screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400); + screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400); deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll); @@ -94,16 +95,6 @@ static SCREEN_UPDATE_RGB32( mirage ) return 0; } -static SCREEN_VBLANK( mirage ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram16_w(space,0,0,0xffff); - } -} - static WRITE16_HANDLER( mirage_mux_w ) { @@ -148,7 +139,7 @@ static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 16 ) /* linescroll */ AM_RANGE(0x110000, 0x110bff) AM_RAM AM_BASE_MEMBER(miragemi_state, m_pf1_rowscroll) AM_RANGE(0x112000, 0x112bff) AM_RAM AM_BASE_MEMBER(miragemi_state, m_pf2_rowscroll) - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x130000, 0x1307ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x140000, 0x14000f) AM_DEVREADWRITE8_MODERN("oki_sfx", okim6295_device, read, write, 0x00ff) AM_RANGE(0x150000, 0x15000f) AM_DEVREADWRITE8_MODERN("oki_bgm", okim6295_device, read, write, 0x00ff) @@ -330,7 +321,7 @@ static MACHINE_CONFIG_START( mirage, miragemi_state ) MCFG_MACHINE_RESET(mirage) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) @@ -338,7 +329,7 @@ static MACHINE_CONFIG_START( mirage, miragemi_state ) MCFG_SCREEN_SIZE(40*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_STATIC(mirage) - MCFG_SCREEN_VBLANK_STATIC(mirage) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_VIDEO_START(mirage) diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c index f9cd2086848..4d027999902 100644 --- a/src/mame/drivers/psikyosh.c +++ b/src/mame/drivers/psikyosh.c @@ -516,7 +516,7 @@ static ADDRESS_MAP_START( ps3v1_map, AS_PROGRAM, 32 ) AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK("bank1") // data ROM // video chip - AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // video banks0-7 (sprites and sprite list) + AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list) AM_RANGE(0x03004000, 0x0300ffff) AM_RAM AM_BASE_MEMBER(psikyosh_state, m_bgram) // video banks 7-0x1f (backgrounds and other effects) AM_RANGE(0x03040000, 0x03044fff) AM_RAM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE_MEMBER(psikyosh_state, m_paletteram) // palette.. AM_RANGE(0x03050000, 0x030501ff) AM_RAM AM_BASE_MEMBER(psikyosh_state, m_zoomram) // sprite zoom lookup table @@ -544,7 +544,7 @@ static ADDRESS_MAP_START( ps5_map, AS_PROGRAM, 32 ) // sound chip AM_RANGE(0x03100000, 0x03100007) AM_DEVREADWRITE8("ymf", ymf278b_r, ymf278b_w, 0xffffffff) // video chip - AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // video banks0-7 (sprites and sprite list) + AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list) AM_RANGE(0x04004000, 0x0400ffff) AM_RAM AM_BASE_MEMBER(psikyosh_state, m_bgram) // video banks 7-0x1f (backgrounds and other effects) AM_RANGE(0x04040000, 0x04044fff) AM_RAM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE_MEMBER(psikyosh_state, m_paletteram) AM_RANGE(0x04050000, 0x040501ff) AM_RAM AM_BASE_MEMBER(psikyosh_state, m_zoomram) // sprite zoom lookup table @@ -819,7 +819,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state ) MCFG_EEPROM_DEFAULT_VALUE(0) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) /* If using alpha */ + MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") /* If using alpha */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -827,7 +827,7 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0, 40*8-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_STATIC(psikyosh) - MCFG_SCREEN_VBLANK_STATIC(psikyosh) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram32_device, vblank_copy_rising) MCFG_GFXDECODE(psikyosh) MCFG_PALETTE_LENGTH(0x5000/4) diff --git a/src/mame/drivers/raiden.c b/src/mame/drivers/raiden.c index d444312ea84..e02ad9346af 100644 --- a/src/mame/drivers/raiden.c +++ b/src/mame/drivers/raiden.c @@ -48,7 +48,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_BASE_MEMBER(raiden_state, m_shared_ram) AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") @@ -73,7 +73,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( alt_main_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1") AM_BASE_MEMBER(raiden_state, m_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_MEMBER(raiden_state, m_videoram) @@ -88,7 +88,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( raidenu_main_map, AS_PROGRAM, 16 ) AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x08000, 0x08035) AM_WRITEONLY AM_BASE_MEMBER(raiden_state, m_scroll_ram) AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") AM_BASE_MEMBER(raiden_state, m_shared_ram) AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") @@ -242,16 +242,6 @@ static INTERRUPT_GEN( raiden_interrupt ) device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc8/4); /* VBL */ } -static SCREEN_VBLANK( raiden ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram16_w(space,0,0,0xffff); /* Could be a memory location instead */ - } -} - static MACHINE_CONFIG_START( raiden, raiden_state ) /* basic machine hardware */ @@ -270,7 +260,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state ) MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.60) /* verified on pcb */ @@ -278,7 +268,7 @@ static MACHINE_CONFIG_START( raiden, raiden_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(raiden) - MCFG_SCREEN_VBLANK_STATIC(raiden) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(raiden) MCFG_PALETTE_LENGTH(2048) diff --git a/src/mame/drivers/rohga.c b/src/mame/drivers/rohga.c index 8de6cd2a45b..86999bdcdf4 100644 --- a/src/mame/drivers/rohga.c +++ b/src/mame/drivers/rohga.c @@ -161,7 +161,7 @@ static ADDRESS_MAP_START( rohga_map, AS_PROGRAM, 16 ) AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, m_pf3_rowscroll) AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, m_pf4_rowscroll) - AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_DEVWRITE("deco_common", decocomn_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */ ADDRESS_MAP_END @@ -185,10 +185,10 @@ static ADDRESS_MAP_START( wizdfire_map, AS_PROGRAM, 16 ) AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x350000, 0x350001) AM_WRITE(buffer_spriteram16_w) /* Triggers DMA for spriteram */ - AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) - AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */ + AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x350000, 0x350001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ + AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2") + AM_RANGE(0x370000, 0x370001) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_palette_dma_w) @@ -217,10 +217,10 @@ static ADDRESS_MAP_START( nitrobal_map, AS_PROGRAM, 16 ) AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x350000, 0x350001) AM_WRITE(buffer_spriteram16_w) /* Triggers DMA for spriteram */ - AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram2) - AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */ + AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0x350000, 0x350001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ + AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2") + AM_RANGE(0x370000, 0x370001) AM_DEVWRITE_MODERN("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_palette_dma_w) @@ -254,7 +254,7 @@ static ADDRESS_MAP_START( schmeisr_map, AS_PROGRAM, 16 ) AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, m_pf3_rowscroll) AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE_MEMBER(rohga_state, m_pf4_rowscroll) - AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_DEVWRITE("deco_common", decocomn_buffered_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xff0000, 0xff7fff) AM_RAM /* Main ram */ ADDRESS_MAP_END @@ -809,7 +809,7 @@ static MACHINE_CONFIG_START( rohga, rohga_state ) MCFG_CPU_PROGRAM_MAP(rohga_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) @@ -859,7 +859,8 @@ static MACHINE_CONFIG_START( wizdfire, rohga_state ) MCFG_CPU_PROGRAM_MAP(rohga_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) @@ -912,7 +913,8 @@ static MACHINE_CONFIG_START( nitrobal, rohga_state ) MCFG_CPU_PROGRAM_MAP(rohga_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM ) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) @@ -965,7 +967,7 @@ static MACHINE_CONFIG_START( schmeisr, rohga_state ) MCFG_CPU_PROGRAM_MAP(rohga_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) diff --git a/src/mame/drivers/sidearms.c b/src/mame/drivers/sidearms.c index 6e89dff4610..5cb692d13d6 100644 --- a/src/mame/drivers/sidearms.c +++ b/src/mame/drivers/sidearms.c @@ -87,14 +87,14 @@ static ADDRESS_MAP_START( sidearms_map, AS_PROGRAM, 8 ) AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sidearms_videoram_w) AM_BASE_MEMBER(sidearms_state,m_videoram) AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sidearms_colorram_w) AM_BASE_MEMBER(sidearms_state,m_colorram) AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( turtship_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0xe800, 0xe807) AM_READ(turtship_ports_r) @@ -160,7 +160,7 @@ static ADDRESS_MAP_START( whizz_map, AS_PROGRAM, 8 ) AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sidearms_videoram_w) AM_BASE_MEMBER(sidearms_state,m_videoram) AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sidearms_colorram_w) AM_BASE_MEMBER(sidearms_state,m_colorram) AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( whizz_sound_map, AS_PROGRAM, 8 ) @@ -663,7 +663,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state ) MCFG_CPU_PROGRAM_MAP(sidearms_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -671,7 +671,7 @@ static MACHINE_CONFIG_START( sidearms, sidearms_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_STATIC(sidearms) - MCFG_SCREEN_VBLANK_STATIC(sidearms) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(sidearms) MCFG_PALETTE_LENGTH(1024) @@ -707,14 +707,14 @@ static MACHINE_CONFIG_START( turtship, sidearms_state ) MCFG_CPU_PROGRAM_MAP(sidearms_sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_VBLANK_STATIC(sidearms) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_SCREEN_UPDATE_STATIC(sidearms) MCFG_GFXDECODE(turtship) @@ -754,7 +754,7 @@ static MACHINE_CONFIG_START( whizz, sidearms_state ) MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -762,7 +762,7 @@ static MACHINE_CONFIG_START( whizz, sidearms_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 ) MCFG_SCREEN_UPDATE_STATIC(sidearms) - MCFG_SCREEN_VBLANK_STATIC(sidearms) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(turtship) MCFG_PALETTE_LENGTH(1024) diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c index 4e349537bb0..68844cdfd6b 100644 --- a/src/mame/drivers/slapfght.c +++ b/src/mame/drivers/slapfght.c @@ -276,7 +276,7 @@ static ADDRESS_MAP_START( perfrman_map, AS_PROGRAM, 8 ) AM_RANGE(0x8810, 0x8fff) AM_RAMBANK("bank1") /* Shared RAM with sound CPU */ AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_videoram) AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_colorram) - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( tigerh_map, AS_PROGRAM, 8 ) @@ -286,7 +286,7 @@ static ADDRESS_MAP_START( tigerh_map, AS_PROGRAM, 8 ) AM_RANGE(0xc810, 0xcfff) AM_RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_videoram) AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_colorram) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_lo) AM_RANGE(0xe801, 0xe801) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_hi) AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrolly) @@ -302,7 +302,7 @@ static ADDRESS_MAP_START( slapfght_map, AS_PROGRAM, 8 ) AM_RANGE(0xc810, 0xcfff) AM_RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_videoram) AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_colorram) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_lo) AM_RANGE(0xe801, 0xe801) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_hi) AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrolly) @@ -319,7 +319,7 @@ static ADDRESS_MAP_START( slapfighb2_map, AS_PROGRAM, 8 ) AM_RANGE(0xc810, 0xcfff) AM_RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_videoram) AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE_MEMBER(slapfght_state, m_slapfight_colorram) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_hi) AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrolly) AM_RANGE(0xe803, 0xe803) AM_WRITEONLY AM_BASE_MEMBER(slapfght_state, m_slapfight_scrollx_lo) @@ -734,16 +734,6 @@ static const ay8910_interface ay8910_interface_2 = DEVCB_NULL }; -static SCREEN_VBLANK( perfrman ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram_w(space, 0, 0); - } -} - static INTERRUPT_GEN( vblank_irq ) { slapfght_state *state = device->machine().driver_data(); @@ -770,7 +760,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state ) MCFG_MACHINE_RESET(slapfight) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -778,7 +768,7 @@ static MACHINE_CONFIG_START( perfrman, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 34*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_STATIC(perfrman) - MCFG_SCREEN_VBLANK_STATIC(perfrman) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(perfrman) MCFG_PALETTE_LENGTH(256) @@ -816,7 +806,7 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state ) MCFG_MACHINE_RESET(slapfight) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -824,7 +814,7 @@ static MACHINE_CONFIG_START( tigerhb, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_STATIC(slapfight) - MCFG_SCREEN_VBLANK_STATIC(perfrman) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(slapfght) MCFG_PALETTE_LENGTH(256) @@ -864,7 +854,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state ) MCFG_MACHINE_RESET(slapfight) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -872,7 +862,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_STATIC(slapfight) - MCFG_SCREEN_VBLANK_STATIC(perfrman) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(slapfght) MCFG_PALETTE_LENGTH(256) @@ -913,7 +903,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state ) MCFG_MACHINE_RESET(slapfight) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -921,7 +911,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(1*8, 36*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_STATIC(slapfight) - MCFG_SCREEN_VBLANK_STATIC(perfrman) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(slapfght) MCFG_PALETTE_LENGTH(256) diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c index 8f08c03d1a9..0e4da96822b 100644 --- a/src/mame/drivers/srumbler.c +++ b/src/mame/drivers/srumbler.c @@ -74,7 +74,7 @@ Ignore the warnings about writing to unmapped memory. static ADDRESS_MAP_START( srumbler_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1dff) AM_RAM /* RAM (of 1 sort or another) */ - AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(srumbler_background_w) AM_BASE_MEMBER(srumbler_state, m_backgroundram) AM_RANGE(0x4008, 0x4008) AM_READ_PORT("SYSTEM") AM_WRITE(srumbler_bankswitch_w) AM_RANGE(0x4009, 0x4009) AM_READ_PORT("P1") AM_WRITE(srumbler_4009_w) @@ -248,7 +248,7 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state ) MCFG_MACHINE_START(srumbler) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM8_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -256,7 +256,7 @@ static MACHINE_CONFIG_START( srumbler, srumbler_state ) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(10*8, (64-10)*8-1, 1*8, 31*8-1 ) MCFG_SCREEN_UPDATE_STATIC(srumbler) - MCFG_SCREEN_VBLANK_STATIC(srumbler) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram8_device, vblank_copy_rising) MCFG_GFXDECODE(srumbler) MCFG_PALETTE_LENGTH(512) diff --git a/src/mame/drivers/tigeroad.c b/src/mame/drivers/tigeroad.c index 7b67d3033b5..87891e89241 100644 --- a/src/mame/drivers/tigeroad.c +++ b/src/mame/drivers/tigeroad.c @@ -169,7 +169,7 @@ static WRITE8_DEVICE_HANDLER( msm5205_w ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xfe0d00, 0xfe1807) AM_RAM /* still part of OBJ RAM */ AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE(tigeroad_videoctrl_w) /* char bank, coin counters, + ? */ AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") @@ -529,7 +529,7 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state ) /* IRQs are triggered by the YM2203 */ /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60.08) /* verified on pcb */ @@ -537,7 +537,7 @@ static MACHINE_CONFIG_START( tigeroad, tigeroad_state ) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_STATIC(tigeroad) - MCFG_SCREEN_VBLANK_STATIC(tigeroad) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(tigeroad) MCFG_PALETTE_LENGTH(576) diff --git a/src/mame/drivers/toki.c b/src/mame/drivers/toki.c index 4f4742042bb..e588de39b61 100644 --- a/src/mame/drivers/toki.c +++ b/src/mame/drivers/toki.c @@ -93,7 +93,7 @@ static WRITE8_HANDLER( toki_adpcm_data_w ) static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_RANGE(0x060000, 0x06d7ff) AM_RAM - AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram") 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_MEMBER(toki_state, m_background1_videoram16) AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE_MEMBER(toki_state, m_background2_videoram16) @@ -116,7 +116,7 @@ static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16 ) 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 */ - AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_SHARE("spriteram") AM_RANGE(0x072000, 0x072001) AM_READ(watchdog_reset16_r) /* probably */ AM_RANGE(0x075000, 0x075001) AM_WRITE(tokib_soundcommand16_w) AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_BASE_MEMBER(toki_state, m_scrollram16) @@ -425,14 +425,14 @@ static MACHINE_CONFIG_START( toki, toki_state ) /* KOYO 20.000MHz near the cpu * MCFG_MACHINE_RESET(seibu_sound) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(59.61) /* verified on pcb */ MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */ MCFG_SCREEN_UPDATE_STATIC(toki) - MCFG_SCREEN_VBLANK_STATIC(toki) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(toki) MCFG_PALETTE_LENGTH(1024) @@ -455,14 +455,14 @@ static MACHINE_CONFIG_START( tokib, toki_state ) MCFG_CPU_PROGRAM_MAP(tokib_audio_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) /* verified */ MCFG_SCREEN_UPDATE_STATIC(tokib) - MCFG_SCREEN_VBLANK_STATIC(tokib) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(tokib) MCFG_PALETTE_LENGTH(1024) diff --git a/src/mame/drivers/twin16.c b/src/mame/drivers/twin16.c index 068c5bdcf37..3521a741350 100644 --- a/src/mame/drivers/twin16.c +++ b/src/mame/drivers/twin16.c @@ -261,7 +261,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE_MEMBER(twin16_state, m_text_ram) // AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(twin16_state, m_videoram) - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("share1") AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram") ADDRESS_MAP_END static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16 ) @@ -271,7 +271,7 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16 ) AM_RANGE(0x060000, 0x063fff) AM_RAM AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r) AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w) - AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("share1") + AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x480000, 0x483fff) AM_READWRITE(videoram16_r, videoram16_w) AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_BASE_MEMBER(twin16_state, m_tile_gfx_ram) AM_RANGE(0x600000, 0x6fffff) AM_READ(twin16_gfx_rom1_r) @@ -293,7 +293,7 @@ static ADDRESS_MAP_START( fround_map, AS_PROGRAM, 16 ) AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(fround_gfx_bank_w) AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE_MEMBER(twin16_state, m_text_ram) AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE_MEMBER(twin16_state, m_videoram) - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x500000, 0x6fffff) AM_READ(twin16_gfx_rom1_r) ADDRESS_MAP_END @@ -746,7 +746,8 @@ static MACHINE_CONFIG_START( twin16, twin16_state ) MCFG_MACHINE_RESET(twin16) // video hardware - MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(((double)XTAL_18_432MHz / 2) / (576 * 264)) @@ -799,7 +800,8 @@ static MACHINE_CONFIG_START( fround, twin16_state ) MCFG_MACHINE_RESET(twin16) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/twincobr.c b/src/mame/drivers/twincobr.c index 012e5054c50..04aea49f748 100644 --- a/src/mame/drivers/twincobr.c +++ b/src/mame/drivers/twincobr.c @@ -277,7 +277,7 @@ Shark Zame static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x02ffff) AM_ROM AM_RANGE(0x030000, 0x033fff) AM_RAM /* 68K and DSP shared RAM */ - AM_RANGE(0x040000, 0x040fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x050000, 0x050dff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x060000, 0x060001) AM_DEVWRITE8_MODERN("crtc", mc6845_device, address_w, 0x00ff) AM_RANGE(0x060002, 0x060003) AM_DEVWRITE8_MODERN("crtc", mc6845_device, register_w, 0x00ff) @@ -582,12 +582,13 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state ) /* video hardware */ MCFG_MC6845_ADD("crtc", HD6845, XTAL_28MHz/8, twincobr_mc6845_intf) /* 3.5MHz measured on CLKin */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_28MHz/4, 446, 0, 320, 286, 0, 240) MCFG_SCREEN_UPDATE_STATIC(toaplan0) - MCFG_SCREEN_VBLANK_STATIC(toaplan0) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(twincobr) MCFG_PALETTE_LENGTH(1792) diff --git a/src/mame/drivers/vaportra.c b/src/mame/drivers/vaportra.c index 09686132534..fe48ccc10e9 100644 --- a/src/mame/drivers/vaportra.c +++ b/src/mame/drivers/vaportra.c @@ -62,8 +62,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x300000, 0x3009ff) AM_RAM_WRITE(vaportra_palette_24bit_rg_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x304000, 0x3049ff) AM_RAM_WRITE(vaportra_palette_24bit_b_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0x308000, 0x308001) AM_NOP - AM_RANGE(0x30c000, 0x30c001) AM_WRITE(buffer_spriteram16_w) - AM_RANGE(0xff8000, 0xff87ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x30c000, 0x30c001) AM_DEVWRITE_MODERN("spriteram", buffered_spriteram16_device, write) + AM_RANGE(0xff8000, 0xff87ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xffc000, 0xffffff) AM_RAM ADDRESS_MAP_END @@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( vaportra, vaportra_state ) MCFG_MACHINE_RESET(vaportra) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) diff --git a/src/mame/drivers/wardner.c b/src/mame/drivers/wardner.c index 50fba056454..e1c98843219 100644 --- a/src/mame/drivers/wardner.c +++ b/src/mame/drivers/wardner.c @@ -203,7 +203,7 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8 ) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") /* Overlapped RAM/Banked ROM - See below */ - AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) AM_SHARE("spriteram") AM_RANGE(0x9000, 0x9fff) AM_ROM AM_RANGE(0xa000, 0xadff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xae00, 0xafff) AM_RAM AM_BASE_MEMBER(wardner_state, m_rambase_ae00) @@ -427,12 +427,13 @@ static MACHINE_CONFIG_START( wardner, wardner_state ) /* video hardware */ MCFG_MC6845_ADD("crtc", HD6845, XTAL_14MHz/4, twincobr_mc6845_intf) /* 3.5MHz measured on CLKin */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM) + MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_14MHz/2, 446, 0, 320, 286, 0, 240) MCFG_SCREEN_UPDATE_STATIC(toaplan0) - MCFG_SCREEN_VBLANK_STATIC(toaplan0) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(wardner) MCFG_PALETTE_LENGTH(1792) diff --git a/src/mame/drivers/wwfwfest.c b/src/mame/drivers/wwfwfest.c index e4f8a11ddf0..aef42551287 100644 --- a/src/mame/drivers/wwfwfest.c +++ b/src/mame/drivers/wwfwfest.c @@ -69,7 +69,7 @@ static WRITE16_HANDLER ( wwfwfest_irq_ack_w ); static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_BASE_MEMBER(wwfwfest_state, m_fg0_videoram) /* FG0 Ram - 4 bytes per tile */ - AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* SPR Ram */ + AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */ AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(wwfwfest_bg0_videoram_w) AM_BASE_MEMBER(wwfwfest_state, m_bg0_videoram) /* BG0 Ram - 4 bytes per tile */ AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(wwfwfest_bg1_videoram_w) AM_BASE_MEMBER(wwfwfest_state, m_bg1_videoram) /* BG1 Ram - 2 bytes per tile */ AM_RANGE(0x100000, 0x100007) AM_WRITE(wwfwfest_scroll_write) @@ -381,17 +381,6 @@ static const ym2151_interface ym2151_config = dd3_ymirq_handler }; -static SCREEN_VBLANK( wwfwfest ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space,0,0,0xffff); - } -} - /******************************************************************************* Machine Driver(s) *******************************************************************************/ @@ -407,12 +396,12 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state ) MCFG_CPU_PROGRAM_MAP(sound_map) /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 320, 272, 8, 248) /* HTOTAL and VTOTAL are guessed */ MCFG_SCREEN_UPDATE_STATIC(wwfwfest) - MCFG_SCREEN_VBLANK_STATIC(wwfwfest) + MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising) MCFG_GFXDECODE(wwfwfest) MCFG_PALETTE_LENGTH(8192) diff --git a/src/mame/includes/actfancr.h b/src/mame/includes/actfancr.h index 3c2866c49a5..0460d7f25e4 100644 --- a/src/mame/includes/actfancr.h +++ b/src/mame/includes/actfancr.h @@ -12,12 +12,10 @@ public: /* memory pointers */ UINT8 * m_main_ram; -// UINT8 * m_spriteram; // currently this uses buffered_spriteram -// UINT8 * m_paletteram; // currently this uses generic palette handling UINT16 m_spriteram16[0x800/2]; // a 16-bit copy of spriteram for use with the MXC06 code /* video-related */ - int m_flipscreen; + int m_flipscreen; /* misc */ int m_trio_control_select; diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h index 570c2353dbb..650f36e6d34 100644 --- a/src/mame/includes/armedf.h +++ b/src/mame/includes/armedf.h @@ -1,9 +1,11 @@ +#include "video/bufsprite.h" class armedf_state : public driver_device { public: armedf_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_text_videoram; @@ -11,7 +13,6 @@ public: UINT16 * m_fg_videoram; UINT16 * m_spr_pal_clut; UINT16 m_legion_cmd[4]; // legiono only! -// UINT16 * m_spriteram; // currently this uses generic buffered_spriteram // UINT16 * m_paletteram; // currently this uses generic palette handling /* video-related */ @@ -28,6 +29,8 @@ public: int m_sprite_offy; int m_old_mcu_mode; int m_waiting_msb; + + required_device m_spriteram; }; class bigfghtr_state : public armedf_state @@ -47,7 +50,6 @@ public: /*----------- defined in video/armedf.c -----------*/ SCREEN_UPDATE_IND16( armedf ); -SCREEN_VBLANK( armedf ); VIDEO_START( armedf ); VIDEO_START( terraf ); diff --git a/src/mame/includes/bbusters.h b/src/mame/includes/bbusters.h index f6e10855cb4..54feb5aa4cc 100644 --- a/src/mame/includes/bbusters.h +++ b/src/mame/includes/bbusters.h @@ -1,9 +1,13 @@ +#include "video/bufsprite.h" + class bbusters_state : public driver_device { public: bbusters_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_eprom_data(*this, "eeprom") { } + m_eprom_data(*this, "eeprom"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } UINT16 *m_videoram; UINT16 *m_ram; @@ -21,6 +25,9 @@ public: UINT16 *m_pf2_data; UINT16 *m_pf1_scroll_data; UINT16 *m_pf2_scroll_data; + + required_device m_spriteram; + optional_device m_spriteram2; }; diff --git a/src/mame/includes/bionicc.h b/src/mame/includes/bionicc.h index 9964fb0acc0..c6736ecd4f8 100644 --- a/src/mame/includes/bionicc.h +++ b/src/mame/includes/bionicc.h @@ -4,18 +4,20 @@ ***************************************************************************/ +#include "video/bufsprite.h" + class bionicc_state : public driver_device { public: bionicc_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT16 * m_bgvideoram; UINT16 * m_fgvideoram; UINT16 * m_txvideoram; UINT16 * m_paletteram; -// UINT16 * m_spriteram; // needed for EOF, but currently handled through buffer_spriteram16 /* video-related */ tilemap_t *m_tx_tilemap; @@ -25,6 +27,8 @@ public: UINT16 m_inp[3]; UINT16 m_soundcommand; + + required_device m_spriteram; }; @@ -39,4 +43,3 @@ WRITE16_HANDLER( bionicc_gfxctrl_w ); VIDEO_START( bionicc ); SCREEN_UPDATE_IND16( bionicc ); -SCREEN_VBLANK( bionicc ); diff --git a/src/mame/includes/blktiger.h b/src/mame/includes/blktiger.h index 0dca3884382..9fdf3130221 100644 --- a/src/mame/includes/blktiger.h +++ b/src/mame/includes/blktiger.h @@ -4,15 +4,17 @@ ***************************************************************************/ +#include "video/bufsprite.h" + class blktiger_state : public driver_device { public: blktiger_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_txvideoram; -// UINT8 * m_spriteram; // currently this uses generic buffer_spriteram_w // UINT8 * m_paletteram; // currently this uses generic palette handling // UINT8 * m_paletteram2; // currently this uses generic palette handling @@ -36,6 +38,7 @@ public: /* devices */ device_t *m_mcu; device_t *m_audiocpu; + required_device m_spriteram; }; @@ -54,4 +57,3 @@ WRITE8_HANDLER( blktiger_scrolly_w ); VIDEO_START( blktiger ); SCREEN_UPDATE_IND16( blktiger ); -SCREEN_VBLANK( blktiger ); diff --git a/src/mame/includes/boogwing.h b/src/mame/includes/boogwing.h index fb6c4d0f180..9ad6b305eb2 100644 --- a/src/mame/includes/boogwing.h +++ b/src/mame/includes/boogwing.h @@ -7,6 +7,7 @@ #include "sound/okim6295.h" #include "video/deco16ic.h" #include "video/decocomn.h" +#include "video/bufsprite.h" class boogwing_state : public driver_device { @@ -19,7 +20,9 @@ public: m_deco_tilegen1(*this, "tilegen1"), m_deco_tilegen2(*this, "tilegen2"), m_oki1(*this, "oki1"), - m_oki2(*this, "oki2") { } + m_oki2(*this, "oki2"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_pf1_rowscroll; @@ -35,6 +38,8 @@ public: required_device m_deco_tilegen2; required_device m_oki1; required_device m_oki2; + required_device m_spriteram; + required_device m_spriteram2; }; diff --git a/src/mame/includes/cninja.h b/src/mame/includes/cninja.h index 20e9e49091d..f7f037de885 100644 --- a/src/mame/includes/cninja.h +++ b/src/mame/includes/cninja.h @@ -7,6 +7,7 @@ #include "sound/okim6295.h" #include "video/deco16ic.h" #include "video/decocomn.h" +#include "video/bufsprite.h" class cninja_state : public driver_device { @@ -19,7 +20,9 @@ public: m_deco_tilegen1(*this, "tilegen1"), m_deco_tilegen2(*this, "tilegen2"), m_raster_irq_timer(*this, "raster_timer"), - m_oki2(*this, "oki2") { } + m_oki2(*this, "oki2"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_ram; @@ -40,6 +43,8 @@ public: required_device m_deco_tilegen2; optional_device m_raster_irq_timer; optional_device m_oki2; + required_device m_spriteram; + optional_device m_spriteram2; }; /*----------- defined in video/cninja.c -----------*/ diff --git a/src/mame/includes/commando.h b/src/mame/includes/commando.h index 42240a31d1d..98d27d6c333 100644 --- a/src/mame/includes/commando.h +++ b/src/mame/includes/commando.h @@ -4,11 +4,14 @@ *************************************************************************/ +#include "video/bufsprite.h" + class commando_state : public driver_device { public: commando_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_videoram; @@ -25,6 +28,7 @@ public: /* devices */ device_t *m_audiocpu; + required_device m_spriteram; }; @@ -41,4 +45,3 @@ WRITE8_HANDLER( commando_c804_w ); VIDEO_START( commando ); SCREEN_UPDATE_IND16( commando ); -SCREEN_VBLANK( commando ); diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h index c92ab18ba36..bd43b58b7be 100644 --- a/src/mame/includes/crshrace.h +++ b/src/mame/includes/crshrace.h @@ -1,15 +1,19 @@ +#include "cpu/z80/z80.h" +#include "video/bufsprite.h" class crshrace_state : public driver_device { public: crshrace_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_audiocpu(*this, "audiocpu"), + m_k053936(*this, "k053936"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_videoram1; UINT16 * m_videoram2; -// UINT16 * m_spriteram1; // currently this uses generic buffered spriteram -// UINT16 * m_spriteram2; // currently this uses generic buffered spriteram // UINT16 * m_paletteram; // currently this uses generic palette handling /* video-related */ @@ -23,8 +27,10 @@ public: int m_pending_command; /* devices */ - device_t *m_audiocpu; - device_t *m_k053936; + required_device m_audiocpu; + required_device m_k053936; + required_device m_spriteram; + required_device m_spriteram2; }; /*----------- defined in video/crshrace.c -----------*/ diff --git a/src/mame/includes/darkseal.h b/src/mame/includes/darkseal.h index 2de441b4c2f..3a12625b75c 100644 --- a/src/mame/includes/darkseal.h +++ b/src/mame/includes/darkseal.h @@ -1,4 +1,5 @@ #include "video/deco16ic.h" +#include "video/bufsprite.h" class darkseal_state : public driver_device { @@ -6,7 +7,8 @@ public: darkseal_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_deco_tilegen1(*this, "tilegen1"), - m_deco_tilegen2(*this, "tilegen2") { } + m_deco_tilegen2(*this, "tilegen2"), + m_spriteram(*this, "spriteram") { } UINT16 *m_ram; UINT16 *m_pf1_rowscroll; @@ -16,6 +18,7 @@ public: required_device m_deco_tilegen1; required_device m_deco_tilegen2; + required_device m_spriteram; int m_flipscreen; }; diff --git a/src/mame/includes/dassault.h b/src/mame/includes/dassault.h index 57e79c45512..cb75db4ecd6 100644 --- a/src/mame/includes/dassault.h +++ b/src/mame/includes/dassault.h @@ -7,6 +7,7 @@ #include "sound/okim6295.h" #include "video/deco16ic.h" #include "video/decocomn.h" +#include "video/bufsprite.h" class dassault_state : public driver_device { @@ -19,7 +20,9 @@ public: m_decocomn(*this, "deco_common"), m_deco_tilegen1(*this, "tilegen1"), m_deco_tilegen2(*this, "tilegen2"), - m_oki2(*this, "oki2") { } + m_oki2(*this, "oki2"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_pf2_rowscroll; @@ -36,6 +39,8 @@ public: required_device m_deco_tilegen1; required_device m_deco_tilegen2; required_device m_oki2; + required_device m_spriteram; + required_device m_spriteram2; }; diff --git a/src/mame/includes/dec8.h b/src/mame/includes/dec8.h index 39040e360a4..dc03ee01807 100644 --- a/src/mame/includes/dec8.h +++ b/src/mame/includes/dec8.h @@ -1,9 +1,11 @@ +#include "video/bufsprite.h" class dec8_state : public driver_device { public: dec8_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_videoram; @@ -12,7 +14,6 @@ public: UINT8 * m_row; // UINT8 * m_paletteram; // currently this uses generic palette handling // UINT8 * m_paletteram_2; // currently this uses generic palette handling -// UINT8 * m_spriteram; // currently this uses buffered_spriteram in some games size_t m_videoram_size; UINT16 m_buffered_spriteram16[0x800/2]; // for the mxc06 sprite chip emulation (oscar, cobra) @@ -44,6 +45,7 @@ public: device_t *m_subcpu; device_t *m_audiocpu; device_t *m_mcu; + required_device m_spriteram; }; /*----------- defined in video/dec8.c -----------*/ diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h index 3418ad2d502..485906d78e5 100644 --- a/src/mame/includes/deco32.h +++ b/src/mame/includes/deco32.h @@ -1,4 +1,5 @@ #include "audio/decobsmt.h" +#include "video/bufsprite.h" class deco32_state : public driver_device { @@ -6,11 +7,13 @@ public: deco32_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_decobsmt(*this, "decobsmt") + m_decobsmt(*this, "decobsmt"), + m_spriteram(*this, "spriteram") { } required_device m_maincpu; optional_device m_decobsmt; + optional_device m_spriteram; UINT32 *m_ram; int m_raster_enable; diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h index 0d5b151d0f9..bb509e8bccf 100644 --- a/src/mame/includes/dooyong.h +++ b/src/mame/includes/dooyong.h @@ -1,8 +1,12 @@ +#include "video/bufsprite.h" + class dooyong_state : public driver_device { public: dooyong_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram"), + m_spriteram16(*this, "spriteram16") { } UINT8 *m_txvideoram; UINT8 *m_paletteram_flytiger; @@ -36,6 +40,8 @@ public: int m_interrupt_line_1; int m_interrupt_line_2; + optional_device m_spriteram; + optional_device m_spriteram16; }; @@ -76,6 +82,3 @@ VIDEO_START( flytiger ); VIDEO_START( primella ); VIDEO_START( rshark ); VIDEO_START( popbingo ); - -SCREEN_VBLANK( dooyong ); -SCREEN_VBLANK( rshark ); diff --git a/src/mame/includes/dynduke.h b/src/mame/includes/dynduke.h index 7748e6bee31..4e4e56253e8 100644 --- a/src/mame/includes/dynduke.h +++ b/src/mame/includes/dynduke.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class dynduke_state : public driver_device { public: dynduke_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_videoram; UINT16 *m_back_data; @@ -19,6 +22,7 @@ public: int m_txt_enable; int m_old_back; int m_old_fore; + required_device m_spriteram; }; @@ -32,4 +36,3 @@ WRITE16_HANDLER( dynduke_control_w ); WRITE16_HANDLER( dynduke_paletteram_w ); VIDEO_START( dynduke ); SCREEN_UPDATE_IND16( dynduke ); -SCREEN_VBLANK( dynduke ); diff --git a/src/mame/includes/exedexes.h b/src/mame/includes/exedexes.h index e56d05217ad..b3f2e323924 100644 --- a/src/mame/includes/exedexes.h +++ b/src/mame/includes/exedexes.h @@ -4,12 +4,14 @@ *************************************************************************/ +#include "video/bufsprite.h" class exedexes_state : public driver_device { public: exedexes_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_videoram; @@ -27,6 +29,8 @@ public: int m_objon; int m_sc1on; int m_sc2on; + + required_device m_spriteram; }; @@ -41,4 +45,3 @@ extern WRITE8_HANDLER( exedexes_gfxctrl_w ); extern PALETTE_INIT( exedexes ); extern VIDEO_START( exedexes ); extern SCREEN_UPDATE_IND16( exedexes ); -extern SCREEN_VBLANK( exedexes ); diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h index 85420cf2f1e..ce78f5eac3a 100644 --- a/src/mame/includes/gaelco2.h +++ b/src/mame/includes/gaelco2.h @@ -1,9 +1,13 @@ +#include "cpu/m68000/m68000.h" +#include "video/bufsprite.h" + class gaelco2_state : public driver_device { public: gaelco2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this,"maincpu") + m_maincpu(*this,"maincpu"), + m_spriteram(*this,"spriteram") { } UINT16 *m_snowboar_protection; @@ -14,7 +18,8 @@ public: tilemap_t *m_pant[2]; int m_dual_monitor; - required_device m_maincpu; + required_device m_maincpu; + required_device m_spriteram; }; @@ -44,7 +49,6 @@ WRITE16_HANDLER( snowboar_protection_w ); WRITE16_HANDLER( gaelco2_vram_w ); WRITE16_HANDLER( gaelco2_palette_w ); SCREEN_UPDATE_IND16( gaelco2 ); -SCREEN_VBLANK( gaelco2 ); VIDEO_START( gaelco2 ); SCREEN_UPDATE_IND16( gaelco2_left ); SCREEN_UPDATE_IND16( gaelco2_right ); diff --git a/src/mame/includes/gng.h b/src/mame/includes/gng.h index 5e660689bb9..58f617afdad 100644 --- a/src/mame/includes/gng.h +++ b/src/mame/includes/gng.h @@ -4,24 +4,28 @@ *************************************************************************/ +#include "video/bufsprite.h" + class gng_state : public driver_device { public: gng_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_bgvideoram; UINT8 * m_fgvideoram; // UINT8 * m_paletteram; // currently this uses generic palette handling // UINT8 * m_paletteram2; // currently this uses generic palette handling -// UINT8 * m_spriteram; // currently this uses generic buffered spriteram /* video-related */ tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; UINT8 m_scrollx[2]; UINT8 m_scrolly[2]; + + required_device m_spriteram; }; @@ -35,4 +39,3 @@ WRITE8_HANDLER( gng_flipscreen_w ); VIDEO_START( gng ); SCREEN_UPDATE_IND16( gng ); -SCREEN_VBLANK( gng ); diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h index 414382fb0c2..307bd0342aa 100644 --- a/src/mame/includes/gottlieb.h +++ b/src/mame/includes/gottlieb.h @@ -16,7 +16,7 @@ // set to 0 to enable Votrax device and disable samples -#define USE_FAKE_VOTRAX (1) +#define USE_FAKE_VOTRAX (0) #define GOTTLIEB_VIDEO_HCOUNT 318 diff --git a/src/mame/includes/hcastle.h b/src/mame/includes/hcastle.h index f4553bf00cf..6b6b15c22bb 100644 --- a/src/mame/includes/hcastle.h +++ b/src/mame/includes/hcastle.h @@ -4,18 +4,20 @@ *************************************************************************/ +#include "video/bufsprite.h" + class hcastle_state : public driver_device { public: hcastle_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT8 * m_pf1_videoram; UINT8 * m_pf2_videoram; UINT8 * m_paletteram; -// UINT8 * m_spriteram; -// UINT8 * m_spriteram2; /* video-related */ tilemap_t *m_fg_tilemap; @@ -30,6 +32,9 @@ public: device_t *m_audiocpu; device_t *m_k007121_1; device_t *m_k007121_2; + + required_device m_spriteram; + required_device m_spriteram2; }; diff --git a/src/mame/includes/karnov.h b/src/mame/includes/karnov.h index 6e4fea9e60d..8b99970b82a 100644 --- a/src/mame/includes/karnov.h +++ b/src/mame/includes/karnov.h @@ -4,17 +4,19 @@ *************************************************************************/ +#include "video/bufsprite.h" + class karnov_state : public driver_device { public: karnov_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT16 * m_videoram; UINT16 * m_ram; UINT16 * m_pf_data; -// UINT16 * m_spriteram; // currently this uses generic buffered spriteram /* video-related */ bitmap_ind16 *m_bitmap_f; @@ -35,6 +37,7 @@ public: /* devices */ device_t *m_maincpu; device_t *m_audiocpu; + required_device m_spriteram; }; enum { diff --git a/src/mame/includes/lastduel.h b/src/mame/includes/lastduel.h index 72ad7fc152b..855032ad8ee 100644 --- a/src/mame/includes/lastduel.h +++ b/src/mame/includes/lastduel.h @@ -4,13 +4,16 @@ *************************************************************************/ +#include "video/bufsprite.h" + class lastduel_state : public driver_device { public: lastduel_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu") + m_audiocpu(*this, "audiocpu"), + m_spriteram(*this, "spriteram") { } /* memory pointers */ @@ -32,6 +35,7 @@ public: /* devices */ required_device m_maincpu; required_device m_audiocpu; + required_device m_spriteram; }; /*----------- defined in video/lastduel.c -----------*/ @@ -49,4 +53,3 @@ VIDEO_START( lastduel ); VIDEO_START( madgear ); SCREEN_UPDATE_IND16( lastduel ); SCREEN_UPDATE_IND16( madgear ); -SCREEN_VBLANK( lastduel ); diff --git a/src/mame/includes/legionna.h b/src/mame/includes/legionna.h index dca9aa350f1..2056e7b99f8 100644 --- a/src/mame/includes/legionna.h +++ b/src/mame/includes/legionna.h @@ -2,7 +2,8 @@ class legionna_state : public driver_device { public: legionna_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_back_data; UINT16 *m_fore_data; @@ -21,6 +22,7 @@ public: UINT16 m_back_gfx_bank; UINT16 m_fore_gfx_bank; UINT16 m_mid_gfx_bank; + required_shared_ptr m_spriteram; }; diff --git a/src/mame/includes/lemmings.h b/src/mame/includes/lemmings.h index 102b85ac544..7c606940455 100644 --- a/src/mame/includes/lemmings.h +++ b/src/mame/includes/lemmings.h @@ -1,9 +1,13 @@ +#include "video/bufsprite.h" class lemmings_state : public driver_device { public: lemmings_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_bitmap0(2048, 256), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_pixel_0_data; @@ -11,18 +15,18 @@ public: UINT16 * m_vram_data; UINT16 * m_control_data; UINT16 * m_paletteram; -// UINT16 * m_spriteram; // this currently uses generic buffered spriteram -// UINT16 * m_spriteram2; // this currently uses generic buffered spriteram /* video-related */ - bitmap_ind16 *m_bitmap0; + bitmap_ind16 m_bitmap0; tilemap_t *m_vram_tilemap; - UINT16 *m_sprite_triple_buffer_0; - UINT16 *m_sprite_triple_buffer_1; - UINT8 *m_vram_buffer; + UINT16 m_sprite_triple_buffer_0[0x800]; + UINT16 m_sprite_triple_buffer_1[0x800]; + UINT8 m_vram_buffer[2048 * 64]; // 64 bytes per VRAM character /* devices */ device_t *m_audiocpu; + required_device m_spriteram; + required_device m_spriteram2; }; diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h index 7b884702836..515594b2455 100644 --- a/src/mame/includes/lwings.h +++ b/src/mame/includes/lwings.h @@ -1,15 +1,16 @@ +#include "video/bufsprite.h" class lwings_state : public driver_device { public: lwings_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT8 * m_fgvideoram; UINT8 * m_bg1videoram; UINT8 * m_soundlatch2; -// UINT8 * m_spriteram; // currently this uses generic buffered spriteram // UINT8 * m_paletteram; // currently this uses generic palette handling // UINT8 * m_paletteram2; // currently this uses generic palette handling @@ -28,6 +29,8 @@ public: UINT8 m_soundstate; UINT8 m_adpcm; UINT8 m_nmi_mask; + + required_device m_spriteram; }; @@ -45,4 +48,3 @@ VIDEO_START( trojan ); VIDEO_START( avengers ); SCREEN_UPDATE_IND16( lwings ); SCREEN_UPDATE_IND16( trojan ); -SCREEN_VBLANK( lwings ); diff --git a/src/mame/includes/m92.h b/src/mame/includes/m92.h index b456dc327ae..0ee562fefd2 100644 --- a/src/mame/includes/m92.h +++ b/src/mame/includes/m92.h @@ -4,8 +4,9 @@ *************************************************************************/ -typedef struct _pf_layer_info pf_layer_info; -struct _pf_layer_info +#include "video/bufsprite.h" + +struct pf_layer_info { tilemap_t * tmap; tilemap_t * wide_tmap; @@ -17,7 +18,8 @@ class m92_state : public driver_device { public: m92_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 m_sound_status; UINT8 m_irq_vectorbase; @@ -31,6 +33,8 @@ public: UINT16 m_pf_master_control[4]; INT32 m_sprite_list; UINT8 m_palette_bank; + + required_device m_spriteram; }; diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h index 69279db736c..1c21b8b34f2 100644 --- a/src/mame/includes/psikyosh.h +++ b/src/mame/includes/psikyosh.h @@ -1,3 +1,4 @@ +#include "video/bufsprite.h" #define MASTER_CLOCK 57272700 // main oscillator frequency @@ -20,7 +21,8 @@ class psikyosh_state : public driver_device { public: psikyosh_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT32 * m_bgram; @@ -28,8 +30,6 @@ public: UINT32 * m_vidregs; UINT32 * m_ram; UINT32 * m_paletteram; -// UINT32 * m_spriteram; // currently this uses generic buffered spriteram -// size_t m_spriteram_size; /* video-related */ bitmap_ind8 m_zoom_bitmap; @@ -40,6 +40,7 @@ public: /* devices */ device_t *m_maincpu; + required_device m_spriteram; }; /*----------- defined in video/psikyosh.c -----------*/ diff --git a/src/mame/includes/raiden.h b/src/mame/includes/raiden.h index 456299288a5..de975c4dc6f 100644 --- a/src/mame/includes/raiden.h +++ b/src/mame/includes/raiden.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class raiden_state : public driver_device { public: raiden_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_videoram; UINT16 *m_shared_ram; @@ -14,6 +17,7 @@ public: tilemap_t *m_tx_layer; int m_flipscreen; int m_alternate; + required_device m_spriteram; }; diff --git a/src/mame/includes/rohga.h b/src/mame/includes/rohga.h index 53228fb122b..e26dde63abf 100644 --- a/src/mame/includes/rohga.h +++ b/src/mame/includes/rohga.h @@ -7,6 +7,7 @@ #include "sound/okim6295.h" #include "video/deco16ic.h" #include "video/decocomn.h" +#include "video/bufsprite.h" class rohga_state : public driver_device { @@ -19,14 +20,15 @@ public: m_deco_tilegen1(*this, "tilegen1"), m_deco_tilegen2(*this, "tilegen2"), m_oki1(*this, "oki1"), - m_oki2(*this, "oki2") { } + m_oki2(*this, "oki2"), + m_spriteram(*this, "spriteram"), + m_spriteram2(*this, "spriteram2") { } /* memory pointers */ UINT16 * m_pf1_rowscroll; UINT16 * m_pf2_rowscroll; UINT16 * m_pf3_rowscroll; UINT16 * m_pf4_rowscroll; - UINT16 * m_spriteram; /* devices */ required_device m_maincpu; @@ -36,6 +38,8 @@ public: required_device m_deco_tilegen2; required_device m_oki1; required_device m_oki2; + required_device m_spriteram; + optional_device m_spriteram2; }; diff --git a/src/mame/includes/sidearms.h b/src/mame/includes/sidearms.h index d2dbb8fe8bd..5d46a6f77c3 100644 --- a/src/mame/includes/sidearms.h +++ b/src/mame/includes/sidearms.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class sidearms_state : public driver_device { public: sidearms_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } int m_gameid; @@ -24,6 +27,8 @@ public: UINT32 m_hcount_191; UINT32 m_vcount_191; UINT32 m_latch_374; + + required_device m_spriteram; }; /*----------- defined in video/sidearms.c -----------*/ @@ -37,4 +42,3 @@ WRITE8_HANDLER( sidearms_gfxctrl_w ); VIDEO_START( sidearms ); SCREEN_UPDATE_IND16( sidearms ); -SCREEN_VBLANK( sidearms ); diff --git a/src/mame/includes/slapfght.h b/src/mame/includes/slapfght.h index 390e027be2f..bbe7320bc6a 100644 --- a/src/mame/includes/slapfght.h +++ b/src/mame/includes/slapfght.h @@ -1,4 +1,5 @@ #include "cpu/z80/z80.h" +#include "video/bufsprite.h" /* This it the best way to allow game specific kludges until the system is fully understood */ @@ -15,7 +16,8 @@ class slapfght_state : public driver_device { public: slapfght_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } int m_getstar_id; UINT8 *m_slapfight_videoram; @@ -53,6 +55,7 @@ public: tilemap_t *m_pf1_tilemap; tilemap_t *m_fix_tilemap; UINT8 m_irq_mask; + required_device m_spriteram; }; diff --git a/src/mame/includes/srumbler.h b/src/mame/includes/srumbler.h index 474a79424b3..3addf7a2455 100644 --- a/src/mame/includes/srumbler.h +++ b/src/mame/includes/srumbler.h @@ -1,9 +1,12 @@ +#include "video/bufsprite.h" + class srumbler_state : public driver_device { public: srumbler_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this,"maincpu") + m_maincpu(*this,"maincpu"), + m_spriteram(*this,"spriteram") { } UINT8 *m_backgroundram; @@ -13,6 +16,7 @@ public: int m_scroll[4]; required_device m_maincpu; + required_device m_spriteram; }; diff --git a/src/mame/includes/tigeroad.h b/src/mame/includes/tigeroad.h index a6ebc0ff081..4606f3b5953 100644 --- a/src/mame/includes/tigeroad.h +++ b/src/mame/includes/tigeroad.h @@ -1,14 +1,18 @@ +#include "video/bufsprite.h" + class tigeroad_state : public driver_device { public: tigeroad_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_videoram; UINT16 *m_ram16; int m_bgcharbank; tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; + required_device m_spriteram; }; @@ -19,4 +23,3 @@ WRITE16_HANDLER( tigeroad_videoctrl_w ); WRITE16_HANDLER( tigeroad_scroll_w ); VIDEO_START( tigeroad ); SCREEN_UPDATE_IND16( tigeroad ); -SCREEN_VBLANK( tigeroad ); diff --git a/src/mame/includes/toki.h b/src/mame/includes/toki.h index fe45cf58e6a..6d6ba5c30c5 100644 --- a/src/mame/includes/toki.h +++ b/src/mame/includes/toki.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class toki_state : public driver_device { public: toki_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_videoram; int m_msm5205next; @@ -13,14 +16,13 @@ public: tilemap_t *m_background_layer; tilemap_t *m_foreground_layer; tilemap_t *m_text_layer; + required_device m_spriteram; }; /*----------- defined in video/toki.c -----------*/ VIDEO_START( toki ); -SCREEN_VBLANK( toki ); -SCREEN_VBLANK( tokib ); SCREEN_UPDATE_IND16( toki ); SCREEN_UPDATE_IND16( tokib ); WRITE16_HANDLER( toki_background1_videoram16_w ); diff --git a/src/mame/includes/twin16.h b/src/mame/includes/twin16.h index c3db4a7941e..8e63255afbf 100644 --- a/src/mame/includes/twin16.h +++ b/src/mame/includes/twin16.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class twin16_state : public driver_device { public: twin16_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_videoram; UINT16 m_CPUA_register; @@ -24,6 +27,7 @@ public: UINT16 m_scrolly[3]; UINT16 m_video_register; tilemap_t *m_text_tilemap; + required_device m_spriteram; }; diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h index 13171622e41..d3286dd6e7d 100644 --- a/src/mame/includes/twincobr.h +++ b/src/mame/includes/twincobr.h @@ -5,13 +5,15 @@ #include "video/mc6845.h" +#include "video/bufsprite.h" class twincobr_state : public driver_device { public: twincobr_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } int m_toaplan_main_cpu; int m_wardner_membank; @@ -48,6 +50,7 @@ public: tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; tilemap_t *m_tx_tilemap; + required_device m_spriteram; }; @@ -122,4 +125,3 @@ WRITE8_HANDLER( wardner_sprite_w ); VIDEO_START( toaplan0 ); SCREEN_UPDATE_IND16( toaplan0 ); -SCREEN_VBLANK( toaplan0 ); diff --git a/src/mame/includes/vaportra.h b/src/mame/includes/vaportra.h index 3b0dd67bae4..b0a91a5c614 100644 --- a/src/mame/includes/vaportra.h +++ b/src/mame/includes/vaportra.h @@ -4,11 +4,14 @@ *************************************************************************/ +#include "video/bufsprite.h" + class vaportra_state : public driver_device { public: vaportra_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } /* memory pointers */ UINT16 * m_pf1_rowscroll; @@ -24,6 +27,7 @@ public: device_t *m_audiocpu; device_t *m_deco_tilegen1; device_t *m_deco_tilegen2; + required_device m_spriteram; }; diff --git a/src/mame/includes/wwfwfest.h b/src/mame/includes/wwfwfest.h index 94094889be8..becee8654ea 100644 --- a/src/mame/includes/wwfwfest.h +++ b/src/mame/includes/wwfwfest.h @@ -1,8 +1,11 @@ +#include "video/bufsprite.h" + class wwfwfest_state : public driver_device { public: wwfwfest_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_spriteram(*this, "spriteram") { } UINT16 *m_fg0_videoram; UINT16 *m_bg0_videoram; @@ -18,6 +21,7 @@ public: UINT16 m_sprite_xoff; UINT16 m_bg0_dx; UINT16 m_bg1_dx[2]; + required_device m_spriteram; }; diff --git a/src/mame/includes/zerozone.h b/src/mame/includes/zerozone.h index fe1ff0fa8ba..46ec282dbaa 100644 --- a/src/mame/includes/zerozone.h +++ b/src/mame/includes/zerozone.h @@ -14,8 +14,7 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), - m_vram(*this, "videoram"), - m_vram_size(*this, "videoram") + m_vram(*this, "videoram") { } // in drivers/zerozone.c @@ -31,7 +30,6 @@ public: // shared pointers required_shared_ptr m_vram; - required_shared_size m_vram_size; // currently this driver uses generic palette handling // state diff --git a/src/mame/includes/zodiack.h b/src/mame/includes/zodiack.h index 1a8d1c3ec5e..9e873817ba0 100644 --- a/src/mame/includes/zodiack.h +++ b/src/mame/includes/zodiack.h @@ -13,10 +13,7 @@ public: m_videoram_2(*this, "videoram_2"), m_attributeram(*this, "attributeram"), m_spriteram(*this, "spriteram"), - m_bulletsram(*this, "bulletsram"), - m_videoram_size(*this, "videoram"), - m_spriteram_size(*this, "spriteram"), - m_bulletsram_size(*this, "bulletsram") + m_bulletsram(*this, "bulletsram") { m_percuss_hardware = 0; } // in drivers/zodiack.c @@ -44,9 +41,6 @@ public: required_shared_ptr m_attributeram; required_shared_ptr m_spriteram; required_shared_ptr m_bulletsram; - required_shared_size m_videoram_size; - required_shared_size m_spriteram_size; - required_shared_size m_bulletsram_size; // currently this driver uses generic palette handling // state diff --git a/src/mame/machine/atarigen.h b/src/mame/machine/atarigen.h index 5a7c2b9ae86..b314ed9626a 100644 --- a/src/mame/machine/atarigen.h +++ b/src/mame/machine/atarigen.h @@ -97,8 +97,7 @@ public: atarigen_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_earom(*this, "earom"), - m_eeprom(*this, "eeprom"), - m_eeprom_size(*this, "eeprom") { } + m_eeprom(*this, "eeprom") { } // users must call through to these virtual void machine_start(); @@ -115,7 +114,6 @@ public: UINT8 m_earom_control; optional_shared_ptr m_eeprom; - optional_shared_size m_eeprom_size; UINT8 m_scanline_int_state; UINT8 m_sound_int_state; diff --git a/src/mame/video/armedf.c b/src/mame/video/armedf.c index 956f98ef460..c6ba2a3b9ad 100644 --- a/src/mame/video/armedf.c +++ b/src/mame/video/armedf.c @@ -352,11 +352,11 @@ void armedf_drawgfx(running_machine &machine, bitmap_ind16 &dest_bmp,const recta static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ) { - UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16; armedf_state *state = machine.driver_data(); + UINT16 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = 0; offs < machine.generic.spriteram_size / 2; offs += 4) + for (offs = 0; offs < state->m_spriteram->bytes() / 2; offs += 4) { int code = buffered_spriteram[offs + 1]; /* ??YX?TTTTTTTTTTT */ int flipx = code & 0x2000; @@ -431,15 +431,3 @@ SCREEN_UPDATE_IND16( armedf ) return 0; } - - -SCREEN_VBLANK( armedf ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/bbusters.c b/src/mame/video/bbusters.c index 3c32c8a21d9..14a4ab2c288 100644 --- a/src/mame/video/bbusters.c +++ b/src/mame/video/bbusters.c @@ -289,10 +289,10 @@ SCREEN_UPDATE_IND16( bbuster ) state->m_pf2_tilemap->set_scrolly(0, state->m_pf2_scroll_data[1]); state->m_pf2_tilemap->draw(bitmap, cliprect, 0, 0); - //draw_sprites(screen.machine(), bitmap, screen.machine().generic.buffered_spriteram2.u16, 2, 0x8, 0x8); + //draw_sprites(screen.machine(), bitmap, state->m_spriteram2->buffer(), 2, 0x8, 0x8); state->m_pf1_tilemap->draw(bitmap, cliprect, 0, 0); - draw_sprites(screen.machine(), bitmap, screen.machine().generic.buffered_spriteram2.u16, 2, 0, 0); - draw_sprites(screen.machine(), bitmap, screen.machine().generic.buffered_spriteram.u16, 1, 0, 0); + draw_sprites(screen.machine(), bitmap, state->m_spriteram2->buffer(), 2, 0, 0); + draw_sprites(screen.machine(), bitmap, state->m_spriteram->buffer(), 1, 0, 0); state->m_fix_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } @@ -308,7 +308,7 @@ SCREEN_UPDATE_IND16( mechatt ) state->m_pf2_tilemap->draw(bitmap, cliprect, 0, 0); state->m_pf1_tilemap->draw(bitmap, cliprect, 0, 0); - draw_sprites(screen.machine(), bitmap, screen.machine().generic.buffered_spriteram.u16, 1, 0, 0); + draw_sprites(screen.machine(), bitmap, state->m_spriteram->buffer(), 1, 0, 0); state->m_fix_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/bionicc.c b/src/mame/video/bionicc.c index 2fd13eead8b..94682d2097b 100644 --- a/src/mame/video/bionicc.c +++ b/src/mame/video/bionicc.c @@ -209,12 +209,12 @@ WRITE16_HANDLER( bionicc_gfxctrl_w ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16; -// bionicc_state *state = machine.driver_data(); + bionicc_state *state = machine.driver_data(); + UINT16 *buffered_spriteram = state->m_spriteram->buffer(); int offs; const gfx_element *gfx = machine.gfx[3]; - for (offs = (machine.generic.spriteram_size - 8) / 2; offs >= 0; offs -= 4) + for (offs = (state->m_spriteram->bytes() - 8) / 2; offs >= 0; offs -= 4) { int tile_number = buffered_spriteram[offs] & 0x7ff; if( tile_number != 0x7ff ) @@ -259,14 +259,3 @@ SCREEN_UPDATE_IND16( bionicc ) state->m_tx_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( bionicc ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/blktiger.c b/src/mame/video/blktiger.c index b186b657276..73f7b46a737 100644 --- a/src/mame/video/blktiger.c +++ b/src/mame/video/blktiger.c @@ -201,12 +201,12 @@ WRITE8_HANDLER( blktiger_screen_layout_w ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { -// blktiger_state *state = machine.driver_data(); - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + blktiger_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; /* Draw the sprites. */ - for (offs = machine.generic.spriteram_size - 4;offs >= 0;offs -= 4) + for (offs = state->m_spriteram->bytes() - 4;offs >= 0;offs -= 4) { int attr = buffered_spriteram[offs+1]; int sx = buffered_spriteram[offs + 3] - ((attr & 0x10) << 4); @@ -250,14 +250,3 @@ SCREEN_UPDATE_IND16( blktiger ) return 0; } - -SCREEN_VBLANK( blktiger ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/boogwing.c b/src/mame/video/boogwing.c index 03b704889a5..f2426697b96 100644 --- a/src/mame/video/boogwing.c +++ b/src/mame/video/boogwing.c @@ -184,8 +184,8 @@ SCREEN_UPDATE_RGB32( boogwing ) UINT16 priority = decocomn_priority_r(state->m_decocomn, 0, 0xffff); /* Draw sprite planes to bitmaps for later mixing */ - screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, true); - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true); + screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram2->buffer(), 0x400, true); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, true); flip_screen_set(screen.machine(), BIT(flip, 7)); deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll); diff --git a/src/mame/video/cninja.c b/src/mame/video/cninja.c index 60bf79a8ba7..6eb76efab8b 100644 --- a/src/mame/video/cninja.c +++ b/src/mame/video/cninja.c @@ -28,7 +28,8 @@ VIDEO_START( stoneage ) /* The bootleg sprites are in a different format! */ static void cninjabl_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16; + cninja_state *state = machine.driver_data(); + UINT16 *buffered_spriteram = state->m_spriteram->buffer(); int offs; int endoffs; @@ -140,7 +141,7 @@ SCREEN_UPDATE_IND16( cninja ) deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 2); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 2); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 4); - screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400); + screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; } @@ -184,7 +185,7 @@ SCREEN_UPDATE_IND16( edrandy ) deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 2); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4); - screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400); + screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; } @@ -235,7 +236,7 @@ SCREEN_UPDATE_IND16( robocop2 ) break; } - screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400); + screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; } @@ -262,8 +263,8 @@ SCREEN_UPDATE_RGB32( mutantf ) screen.machine().device("spritegen1")->set_alt_format(true); screen.machine().device("spritegen2")->set_alt_format(true); - screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, true); - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true); + screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram2->buffer(), 0x400, true); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, true); /* There is no priority prom on this board, but there is a diff --git a/src/mame/video/commando.c b/src/mame/video/commando.c index 0faf0c957df..3acb70d5005 100644 --- a/src/mame/video/commando.c +++ b/src/mame/video/commando.c @@ -107,10 +107,11 @@ VIDEO_START( commando ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + commando_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = machine.generic.spriteram_size - 4; offs >= 0; offs -= 4) + for (offs = state->m_spriteram->bytes() - 4; offs >= 0; offs -= 4) { // bit 1 of attr is not used int attr = buffered_spriteram[offs + 1]; @@ -144,14 +145,3 @@ SCREEN_UPDATE_IND16( commando ) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( commando ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/crshrace.c b/src/mame/video/crshrace.c index 30493428a64..6ccf4b12185 100644 --- a/src/mame/video/crshrace.c +++ b/src/mame/video/crshrace.c @@ -102,8 +102,8 @@ WRITE16_HANDLER( crshrace_gfxctrl_w ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect) { crshrace_state *state = machine.driver_data(); - UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16; - UINT16 *buffered_spriteram_2 = machine.generic.buffered_spriteram2.u16; + UINT16 *buffered_spriteram = state->m_spriteram->buffer(); + UINT16 *buffered_spriteram_2 = state->m_spriteram2->buffer(); int offs; offs = 0; @@ -219,12 +219,7 @@ SCREEN_UPDATE_IND16( crshrace ) SCREEN_VBLANK( crshrace ) { - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); - buffer_spriteram16_2_w(space, 0, 0, 0xffff); - } + crshrace_state *state = screen.machine().driver_data(); + state->m_spriteram->vblank_copy_rising(screen, vblank_on); + state->m_spriteram2->vblank_copy_rising(screen, vblank_on); } diff --git a/src/mame/video/darkseal.c b/src/mame/video/darkseal.c index 5e15f5c3ddd..532d0e7bdf0 100644 --- a/src/mame/video/darkseal.c +++ b/src/mame/video/darkseal.c @@ -73,7 +73,7 @@ SCREEN_UPDATE_IND16( darkseal ) deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); - screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400); + screen.machine().device("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; diff --git a/src/mame/video/dassault.c b/src/mame/video/dassault.c index c552fc58a22..8e81c4220bd 100644 --- a/src/mame/video/dassault.c +++ b/src/mame/video/dassault.c @@ -80,8 +80,8 @@ SCREEN_UPDATE_RGB32( dassault ) UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff); UINT16 priority = decocomn_priority_r(state->m_decocomn, 0, 0xffff); - screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, false); - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, false); + screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram2->buffer(), 0x400, false); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, false); bitmap_ind16* sprite_bitmap1 = &screen.machine().device("spritegen1")->get_sprite_temp_bitmap(); bitmap_ind16* sprite_bitmap2 = &screen.machine().device("spritegen2")->get_sprite_temp_bitmap(); diff --git a/src/mame/video/dec8.c b/src/mame/video/dec8.c index 78e7a406bc0..23a07995cf7 100644 --- a/src/mame/video/dec8.c +++ b/src/mame/video/dec8.c @@ -224,7 +224,8 @@ WRITE8_HANDLER( gondo_scroll_w ) static void srdarwin_draw_sprites( running_machine& machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + dec8_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; /* Sprites */ diff --git a/src/mame/video/deco32.c b/src/mame/video/deco32.c index 1490408fe57..5ea9071c5a8 100644 --- a/src/mame/video/deco32.c +++ b/src/mame/video/deco32.c @@ -20,8 +20,9 @@ WRITE32_HANDLER( dragngun_sprite_control_w ) WRITE32_HANDLER( dragngun_spriteram_dma_w ) { /* DMA spriteram to private sprite chip area, and clear cpu ram */ - memcpy(space->machine().generic.buffered_spriteram.u32,space->machine().generic.spriteram.u32,space->machine().generic.spriteram_size); - memset(space->machine().generic.spriteram.u32,0,0x2000); + deco32_state *state = space->machine().driver_data(); + state->m_spriteram->copy(); + memset(state->m_spriteram->live(),0,0x2000); } WRITE32_HANDLER( deco32_ace_ram_w ) @@ -649,7 +650,7 @@ SCREEN_UPDATE_RGB32( dragngun ) { rectangle clip(cliprect.min_x, cliprect.max_x, 8, 247); - dragngun_draw_sprites(screen.machine(),bitmap,clip,screen.machine().generic.buffered_spriteram.u32); + dragngun_draw_sprites(screen.machine(),bitmap,clip,state->m_spriteram->buffer()); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, clip, 0, 0); } diff --git a/src/mame/video/dooyong.c b/src/mame/video/dooyong.c index f4c8fbbb338..c048c29ce25 100644 --- a/src/mame/video/dooyong.c +++ b/src/mame/video/dooyong.c @@ -375,10 +375,11 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r height only used by pollux, bluehawk and flytiger x flip and y flip only used by pollux and flytiger */ - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + dooyong_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = 0; offs < machine.generic.spriteram_size; offs += 32) + for (offs = 0; offs < state->m_spriteram->bytes(); offs += 32) { int sx, sy, code, color, pri; int flipx = 0, flipy = 0, height = 0, y; @@ -442,7 +443,8 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r static void rshark_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) { - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + dooyong_state *state = machine.driver_data(); + UINT16 *buffered_spriteram16 = state->m_spriteram16->buffer(); /* Sprites take 8 16-bit words each in memory: MSB LSB @@ -465,7 +467,7 @@ static void rshark_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, int offs; - for (offs = (machine.generic.spriteram_size / 2) - 8; offs >= 0; offs -= 8) + for (offs = (state->m_spriteram16->bytes() / 2) - 8; offs >= 0; offs -= 8) { if (buffered_spriteram16[offs] & 0x0001) /* enable */ { @@ -929,26 +931,3 @@ VIDEO_START( popbingo ) state_save_register_global_array(machine, state->m_fg2scroll8); // Not used atm state_save_register_global(machine, state->m_rshark_pri); } - - -SCREEN_VBLANK( dooyong ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} - -SCREEN_VBLANK( rshark ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/dynduke.c b/src/mame/video/dynduke.c index b2ce9176098..84b5d1f8efd 100644 --- a/src/mame/video/dynduke.c +++ b/src/mame/video/dynduke.c @@ -140,7 +140,7 @@ WRITE16_HANDLER( dynduke_control_w ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri) { dynduke_state *state = machine.driver_data(); - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); int offs,fx,fy,x,y,color,sprite; if (!state->m_sprite_enable) return; @@ -250,14 +250,3 @@ SCREEN_UPDATE_IND16( dynduke ) return 0; } - -SCREEN_VBLANK( dynduke ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); // Could be a memory location instead - } -} diff --git a/src/mame/video/exedexes.c b/src/mame/video/exedexes.c index ec75d01a751..be5a4bff887 100644 --- a/src/mame/video/exedexes.c +++ b/src/mame/video/exedexes.c @@ -187,7 +187,7 @@ VIDEO_START( exedexes ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ) { exedexes_state *state = machine.driver_data(); - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; if (!state->m_objon) @@ -195,7 +195,7 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const priority = priority ? 0x40 : 0x00; - for (offs = machine.generic.spriteram_size - 32;offs >= 0;offs -= 32) + for (offs = state->m_spriteram->bytes() - 32;offs >= 0;offs -= 32) { if ((buffered_spriteram[offs + 1] & 0x40) == priority) { @@ -244,14 +244,3 @@ SCREEN_UPDATE_IND16( exedexes ) return 0; } - -SCREEN_VBLANK( exedexes ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/gaelco2.c b/src/mame/video/gaelco2.c index c3fb9dcab3c..715a2aed0b1 100644 --- a/src/mame/video/gaelco2.c +++ b/src/mame/video/gaelco2.c @@ -264,7 +264,7 @@ WRITE16_HANDLER( gaelco2_palette_w ) VIDEO_START( gaelco2 ) { gaelco2_state *state = machine.driver_data(); - state->m_videoram = machine.generic.spriteram.u16; + state->m_videoram = state->m_spriteram->live(); /* create tilemaps */ state->m_pant[0] = tilemap_create(machine, get_tile_info_gaelco2_screen0,tilemap_scan_rows,16,16,64,32); @@ -285,7 +285,7 @@ VIDEO_START( gaelco2 ) VIDEO_START( gaelco2_dual ) { gaelco2_state *state = machine.driver_data(); - state->m_videoram = machine.generic.spriteram.u16; + state->m_videoram = state->m_spriteram->live(); /* create tilemaps */ state->m_pant[0] = tilemap_create(machine, get_tile_info_gaelco2_screen0_dual,tilemap_scan_rows,16,16,64,32); @@ -342,7 +342,7 @@ VIDEO_START( gaelco2_dual ) static void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int mask, int xoffs) { gaelco2_state *state = screen.machine().driver_data(); - UINT16 *buffered_spriteram16 = screen.machine().generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); int j, x, y, ex, ey, px, py; const gfx_element *gfx = screen.machine().gfx[0]; @@ -498,17 +498,3 @@ static UINT32 dual_update(screen_device &screen, bitmap_ind16 &bitmap, const rec SCREEN_UPDATE_IND16( gaelco2_left ) { return dual_update(screen, bitmap, cliprect, 0); } SCREEN_UPDATE_IND16( gaelco2_right ) { return dual_update(screen, bitmap, cliprect, 1); } - - - -SCREEN_VBLANK( gaelco2 ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - /* sprites are one frame ahead */ - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/gng.c b/src/mame/video/gng.c index 1960f086fd9..d22162b1311 100644 --- a/src/mame/video/gng.c +++ b/src/mame/video/gng.c @@ -110,12 +110,13 @@ WRITE8_HANDLER( gng_flipscreen_w ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + gng_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); const gfx_element *gfx = machine.gfx[2]; int offs; - for (offs = machine.generic.spriteram_size - 4; offs >= 0; offs -= 4) + for (offs = state->m_spriteram->bytes() - 4; offs >= 0; offs -= 4) { UINT8 attributes = buffered_spriteram[offs + 1]; int sx = buffered_spriteram[offs + 3] - 0x100 * (attributes & 0x01); @@ -149,14 +150,3 @@ SCREEN_UPDATE_IND16( gng ) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( gng ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/hcastle.c b/src/mame/video/hcastle.c index 351a8985515..ce103096bbb 100644 --- a/src/mame/video/hcastle.c +++ b/src/mame/video/hcastle.c @@ -179,9 +179,9 @@ WRITE8_HANDLER( hcastle_pf1_control_w ) if (offset == 3) { if ((data & 0x8) == 0) - buffer_spriteram(space->machine(), space->machine().generic.spriteram.u8 + 0x800, 0x800); + state->m_spriteram->copy(0x800, 0x800); else - buffer_spriteram(space->machine(), space->machine().generic.spriteram.u8, 0x800); + state->m_spriteram->copy(0x000, 0x800); } else if (offset == 7) { @@ -197,9 +197,9 @@ WRITE8_HANDLER( hcastle_pf2_control_w ) if (offset == 3) { if ((data & 0x8) == 0) - buffer_spriteram_2(space->machine(), space->machine().generic.spriteram2.u8 + 0x800, 0x800); + state->m_spriteram2->copy(0x800, 0x800); else - buffer_spriteram_2(space->machine(), space->machine().generic.spriteram2.u8, 0x800); + state->m_spriteram2->copy(0x000, 0x800); } else if (offset == 7) { @@ -264,16 +264,16 @@ SCREEN_UPDATE_IND16( hcastle ) if ((state->m_gfx_bank & 0x04) == 0) { state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0); - draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u8, 0); - draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u8, 1); + draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0); + draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram2->buffer(), 1); state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); } else { state->m_bg_tilemap->draw(bitmap, cliprect, 0, 0); state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); - draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u8, 0); - draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u8, 1); + draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0); + draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram2->buffer(), 1); } return 0; } diff --git a/src/mame/video/karnov.c b/src/mame/video/karnov.c index 85e5e2acb9c..674836b1f8d 100644 --- a/src/mame/video/karnov.c +++ b/src/mame/video/karnov.c @@ -127,7 +127,7 @@ SCREEN_UPDATE_IND16( karnov ) { karnov_state *state = screen.machine().driver_data(); draw_background(screen.machine(), bitmap, cliprect); - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x800, 0); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0x800, 0); state->m_fix_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/lastduel.c b/src/mame/video/lastduel.c index 5288a136c06..805d1082ea5 100644 --- a/src/mame/video/lastduel.c +++ b/src/mame/video/lastduel.c @@ -222,7 +222,7 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const { lastduel_state *state = machine.driver_data(); - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); int offs; if (!state->m_sprite_pri_mask) @@ -305,17 +305,3 @@ SCREEN_UPDATE_IND16( madgear ) state->m_tx_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( lastduel ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - /* Spriteram is always 1 frame ahead, suggesting buffering. I can't find - a register to control this so I assume it happens automatically - every frame at the end of vblank */ - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/legionna.c b/src/mame/video/legionna.c index eee24c248f1..1b6ed9ede08 100644 --- a/src/mame/video/legionna.c +++ b/src/mame/video/legionna.c @@ -254,7 +254,7 @@ VIDEO_START(godzilla) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect) { legionna_state *state = machine.driver_data(); - UINT16 *spriteram16 = machine.generic.spriteram.u16; + UINT16 *spriteram16 = state->m_spriteram; int offs,fx,fy,x,y,color,sprite,cur_pri; int dx,dy,ax,ay; int pri_mask; diff --git a/src/mame/video/lemmings.c b/src/mame/video/lemmings.c index 58719ba5281..d4ebd2713e8 100644 --- a/src/mame/video/lemmings.c +++ b/src/mame/video/lemmings.c @@ -33,25 +33,20 @@ static TILE_GET_INFO( get_tile_info ) VIDEO_START( lemmings ) { lemmings_state *state = machine.driver_data(); - state->m_bitmap0 = auto_bitmap_ind16_alloc(machine, 2048, 256); state->m_vram_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_cols, 8, 8, 64, 32); - state->m_vram_buffer = auto_alloc_array(machine, UINT8, 2048 * 64); /* 64 bytes per VRAM character */ - state->m_sprite_triple_buffer_0 = auto_alloc_array(machine, UINT16, 0x800 / 2); - state->m_sprite_triple_buffer_1 = auto_alloc_array(machine, UINT16, 0x800 / 2); - state->m_vram_tilemap->set_transparent_pen(0); - state->m_bitmap0->fill(0x100); + state->m_bitmap0.fill(0x100); gfx_element_set_source(machine.gfx[2], state->m_vram_buffer); machine.device("spritegen")->alloc_sprite_bitmap(); machine.device("spritegen2")->alloc_sprite_bitmap(); - state->save_item(NAME(*state->m_bitmap0)); - state->save_pointer(NAME(state->m_vram_buffer), 2048 * 64); - state->save_pointer(NAME(state->m_sprite_triple_buffer_0), 0x800 / 2); - state->save_pointer(NAME(state->m_sprite_triple_buffer_1), 0x800 / 2); + state->save_item(NAME(state->m_bitmap0)); + state->save_item(NAME(state->m_vram_buffer)); + state->save_item(NAME(state->m_sprite_triple_buffer_0)); + state->save_item(NAME(state->m_sprite_triple_buffer_1)); } SCREEN_VBLANK( lemmings ) @@ -60,9 +55,8 @@ SCREEN_VBLANK( lemmings ) if (vblank_on) { lemmings_state *state = screen.machine().driver_data(); - - memcpy(state->m_sprite_triple_buffer_0, screen.machine().generic.buffered_spriteram.u16, 0x800); - memcpy(state->m_sprite_triple_buffer_1, screen.machine().generic.buffered_spriteram2.u16, 0x800); + memcpy(state->m_sprite_triple_buffer_0, state->m_spriteram->buffer(), 0x800); + memcpy(state->m_sprite_triple_buffer_1, state->m_spriteram2->buffer(), 0x800); } } @@ -87,8 +81,8 @@ WRITE16_HANDLER( lemmings_pixel_0_w ) if (sx > 2047 || sy > 255) return; - state->m_bitmap0->pix16(sy, sx + 0) = ((src >> 8) & 0xf) | 0x100; - state->m_bitmap0->pix16(sy, sx + 1) = ((src >> 0) & 0xf) | 0x100; + state->m_bitmap0.pix16(sy, sx + 0) = ((src >> 8) & 0xf) | 0x100; + state->m_bitmap0.pix16(sy, sx + 1) = ((src >> 0) & 0xf) | 0x100; } // RAM based tiles for the FG tilemap @@ -158,17 +152,17 @@ SCREEN_UPDATE_RGB32( lemmings ) /* Pixel layer can be windowed in hardware (two player mode) */ if ((state->m_control_data[6] & 2) == 0) { - lemmings_copy_bitmap(screen.machine(), bitmap, *state->m_bitmap0, &x1, &y, cliprect); + lemmings_copy_bitmap(screen.machine(), bitmap, state->m_bitmap0, &x1, &y, cliprect); } else { rect.max_x = 159; rect.min_x = 0; - lemmings_copy_bitmap(screen.machine(), bitmap, *state->m_bitmap0, &x0, &y, rect); + lemmings_copy_bitmap(screen.machine(), bitmap, state->m_bitmap0, &x0, &y, rect); rect.max_x = 319; rect.min_x = 160; - lemmings_copy_bitmap(screen.machine(), bitmap, *state->m_bitmap0, &x1, &y, rect); + lemmings_copy_bitmap(screen.machine(), bitmap, state->m_bitmap0, &x1, &y, rect); } screen.machine().device("spritegen2")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 0x200, 0xff); diff --git a/src/mame/video/lwings.c b/src/mame/video/lwings.c index 0d17e330579..1b1e5830e1b 100644 --- a/src/mame/video/lwings.c +++ b/src/mame/video/lwings.c @@ -186,10 +186,11 @@ INLINE int is_sprite_on( UINT8 *buffered_spriteram, int offs ) static void lwings_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + lwings_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = machine.generic.spriteram_size - 4; offs >= 0; offs -= 4) + for (offs = state->m_spriteram->bytes() - 4; offs >= 0; offs -= 4) { if (is_sprite_on(buffered_spriteram, offs)) { @@ -223,10 +224,10 @@ static void lwings_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, static void trojan_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) { lwings_state *state = machine.driver_data(); - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = machine.generic.spriteram_size - 4; offs >= 0; offs -= 4) + for (offs = state->m_spriteram->bytes() - 4; offs >= 0; offs -= 4) { if (is_sprite_on(buffered_spriteram, offs)) { @@ -290,14 +291,3 @@ SCREEN_UPDATE_IND16( trojan ) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( lwings ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/m92.c b/src/mame/video/m92.c index d97cb544d78..ed633a869d2 100644 --- a/src/mame/video/m92.c +++ b/src/mame/video/m92.c @@ -78,7 +78,7 @@ WRITE16_HANDLER( m92_spritecontrol_w ) if (offset==4) { /* this implementation is not accurate: still some delayed sprites in gunforc2 (might be another issue?) */ - buffer_spriteram16_w(space,0,0,0xffff); + state->m_spriteram->copy(); state->m_sprite_buffer_busy = 0; /* Pixel clock is 26.6666MHz (some boards 27MHz??), we have 0x800 bytes, or 0x400 words to copy from @@ -289,8 +289,8 @@ VIDEO_START( m92 ) machine.generic.paletteram.u16 = auto_alloc_array(machine, UINT16, 0x1000/2); - memset(machine.generic.spriteram.u16,0,0x800); - memset(machine.generic.buffered_spriteram.u16,0,0x800); + memset(state->m_spriteram->live(),0,0x800); + memset(state->m_spriteram->buffer(),0,0x800); state->save_item(NAME(state->m_pf_master_control)); state->save_item(NAME(state->m_videocontrol)); @@ -326,7 +326,7 @@ VIDEO_START( ppan ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) { m92_state *state = machine.driver_data(); - UINT16 *source = machine.generic.buffered_spriteram.u16; + UINT16 *source = state->m_spriteram->buffer(); int offs, layer; for (layer = 0; layer < 8; layer++) @@ -400,7 +400,7 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r static void ppan_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) { m92_state *state = machine.driver_data(); - UINT16 *source = machine.generic.spriteram.u16; // sprite buffer control is never triggered + UINT16 *source = state->m_spriteram->buffer(); // sprite buffer control is never triggered int offs, layer; for (layer = 0; layer < 8; layer++) diff --git a/src/mame/video/psikyosh.c b/src/mame/video/psikyosh.c index b0a33096cdd..b1eccba73c0 100644 --- a/src/mame/video/psikyosh.c +++ b/src/mame/video/psikyosh.c @@ -1085,7 +1085,7 @@ static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const r psikyosh_state *state = machine.driver_data(); const gfx_element *gfx; - UINT32 *src = machine.generic.buffered_spriteram.u32; /* Use buffered spriteram */ + UINT32 *src = state->m_spriteram->buffer(); /* Use buffered spriteram */ UINT16 *list = (UINT16 *)src + 0x3800 / 2; UINT16 listlen = 0x800/2; UINT16 *zoom_table = (UINT16 *)state->m_zoomram; @@ -1306,14 +1306,3 @@ popmessage ("%08x %08x %08x %08x\n%08x %08x %08x %08x", } return 0; } - -SCREEN_VBLANK( psikyosh ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram32_w(space, 0, 0, 0xffffffff); - } -} - diff --git a/src/mame/video/raiden.c b/src/mame/video/raiden.c index b0a7085afdd..cd4c795ccb2 100644 --- a/src/mame/video/raiden.c +++ b/src/mame/video/raiden.c @@ -122,7 +122,7 @@ WRITE16_HANDLER( raidena_control_w ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect,int pri_mask) { raiden_state *state = machine.driver_data(); - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); int offs,fx,fy,x,y,color,sprite; for (offs = 0x1000/2-4;offs >= 0;offs -= 4) diff --git a/src/mame/video/rohga.c b/src/mame/video/rohga.c index 6d0f537b908..948c6365b1f 100644 --- a/src/mame/video/rohga.c +++ b/src/mame/video/rohga.c @@ -14,15 +14,11 @@ WRITE16_HANDLER( rohga_buffer_spriteram16_w ) // Spriteram seems to be triple buffered (no sprite lag on real pcb, but there // is on driver with only double buffering) rohga_state *state = space->machine().driver_data(); - memcpy(state->m_spriteram, space->machine().generic.buffered_spriteram.u16, 0x800); - memcpy(space->machine().generic.buffered_spriteram.u16, space->machine().generic.spriteram.u16, 0x800); + state->m_spriteram->copy(); } VIDEO_START( rohga ) { - rohga_state *state = machine.driver_data(); - state->m_spriteram = auto_alloc_array(machine, UINT16, 0x800/2); - state->save_pointer(NAME(state->m_spriteram), 0x800/2); machine.device("spritegen1")->set_col_callback(rohga_col_callback); machine.device("spritegen1")->set_pri_callback(rohga_pri_callback); } @@ -109,7 +105,7 @@ SCREEN_UPDATE_IND16( rohga ) break; } - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, true); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; @@ -176,8 +172,8 @@ SCREEN_UPDATE_RGB32( wizdfire ) UINT16 priority = decocomn_priority_r(state->m_decocomn, 0, 0xffff); /* draw sprite gfx to temp bitmaps */ - screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, true); - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, true); + screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram2->buffer(), 0x400, true); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, true); /* Update playfields */ flip_screen_set(screen.machine(), BIT(flip, 7)); @@ -213,8 +209,8 @@ SCREEN_UPDATE_RGB32( nitrobal ) /* draw sprite gfx to temp bitmaps */ screen.machine().device("spritegen1")->set_alt_format(true); screen.machine().device("spritegen2")->set_alt_format(true); - screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram2.u16, 0x400, false); - screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0x400, false); + screen.machine().device("spritegen2")->draw_sprites(bitmap, cliprect, state->m_spriteram2->buffer(), 0x400, false); + screen.machine().device("spritegen1")->draw_sprites(bitmap, cliprect, state->m_spriteram->buffer(), 0x400, false); /* Update playfields */ flip_screen_set(screen.machine(), BIT(flip, 7)); diff --git a/src/mame/video/sidearms.c b/src/mame/video/sidearms.c index 0d6a0a04533..da39e4c2572 100644 --- a/src/mame/video/sidearms.c +++ b/src/mame/video/sidearms.c @@ -176,10 +176,10 @@ VIDEO_START( sidearms ) static void draw_sprites_region(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset, int end_offset ) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + sidearms_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); const gfx_element *gfx = machine.gfx[2]; int offs, attr, color, code, x, y, flipx, flipy; - sidearms_state *state = machine.driver_data(); flipy = flipx = state->m_flipon; @@ -365,14 +365,3 @@ SCREEN_UPDATE_IND16( sidearms ) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } - -SCREEN_VBLANK( sidearms ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space, 0, 0); - } -} diff --git a/src/mame/video/slapfght.c b/src/mame/video/slapfght.c index ece21d346f2..9cd3c9c03e9 100644 --- a/src/mame/video/slapfght.c +++ b/src/mame/video/slapfght.c @@ -142,7 +142,7 @@ static void slapfght_log_vram(running_machine &machine) int i; for (i=0; i<0x800; i++) { - logerror("Offset:%03x TileRAM:%02x AttribRAM:%02x SpriteRAM:%02x\n",i, state->m_slapfight_videoram[i],state->m_slapfight_colorram[i],machine.generic.spriteram.u8[i]); + logerror("Offset:%03x TileRAM:%02x AttribRAM:%02x SpriteRAM:%02x\n",i, state->m_slapfight_videoram[i],state->m_slapfight_colorram[i],state->m_spriteram->live()[i]); } } #endif @@ -156,10 +156,10 @@ static void slapfght_log_vram(running_machine &machine) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority_to_display ) { slapfght_state *state = machine.driver_data(); - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; - for (offs = 0;offs < machine.generic.spriteram_size;offs += 4) + for (offs = 0;offs < state->m_spriteram->bytes();offs += 4) { int sx, sy; @@ -212,7 +212,7 @@ SCREEN_UPDATE_IND16( perfrman ) SCREEN_UPDATE_IND16( slapfight ) { slapfght_state *state = screen.machine().driver_data(); - UINT8 *buffered_spriteram = screen.machine().generic.buffered_spriteram.u8; + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; screen.machine().tilemap().set_flip_all(state->m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); @@ -232,7 +232,7 @@ SCREEN_UPDATE_IND16( slapfight ) state->m_pf1_tilemap->draw(bitmap, cliprect, 0,0); /* Draw the sprites */ - for (offs = 0;offs < screen.machine().generic.spriteram_size;offs += 4) + for (offs = 0;offs < state->m_spriteram->bytes();offs += 4) { if (state->m_flipscreen) drawgfx_transpen(bitmap,cliprect,screen.machine().gfx[2], diff --git a/src/mame/video/srumbler.c b/src/mame/video/srumbler.c index ac14eed191b..955f4b4a0aa 100644 --- a/src/mame/video/srumbler.c +++ b/src/mame/video/srumbler.c @@ -115,11 +115,12 @@ WRITE8_HANDLER( srumbler_scroll_w ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) { - UINT8 *buffered_spriteram = machine.generic.buffered_spriteram.u8; + srumbler_state *state = machine.driver_data(); + UINT8 *buffered_spriteram = state->m_spriteram->buffer(); int offs; /* Draw the sprites. */ - for (offs = machine.generic.spriteram_size-4; offs>=0;offs -= 4) + for (offs = state->m_spriteram->bytes()-4; offs>=0;offs -= 4) { /* SPRITES ===== @@ -169,14 +170,3 @@ SCREEN_UPDATE_IND16( srumbler ) state->m_fg_tilemap->draw(bitmap, cliprect, 0,0); return 0; } - -SCREEN_VBLANK( srumbler ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram_w(space,0,0); - } -} diff --git a/src/mame/video/tigeroad.c b/src/mame/video/tigeroad.c index 215ba126870..bc7e52b07da 100644 --- a/src/mame/video/tigeroad.c +++ b/src/mame/video/tigeroad.c @@ -69,8 +69,9 @@ WRITE16_HANDLER( tigeroad_scroll_w ) static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ) { - UINT16 *source = &machine.generic.buffered_spriteram.u16[machine.generic.spriteram_size/2] - 4; - UINT16 *finish = machine.generic.buffered_spriteram.u16; + tigeroad_state *state = machine.driver_data(); + UINT16 *source = &state->m_spriteram->buffer()[state->m_spriteram->bytes()/2] - 4; + UINT16 *finish = state->m_spriteram->buffer(); // TODO: The Track Map should probably be drawn on top of the background tilemap... // Also convert the below into a for loop! @@ -170,14 +171,3 @@ SCREEN_UPDATE_IND16( tigeroad ) state->m_fg_tilemap->draw(bitmap, cliprect, 0, 2); return 0; } - -SCREEN_VBLANK( tigeroad ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - buffer_spriteram16_w(space, 0, 0, 0xffff); - } -} diff --git a/src/mame/video/toki.c b/src/mame/video/toki.c index d7d5403eaa3..0d349b0790e 100644 --- a/src/mame/video/toki.c +++ b/src/mame/video/toki.c @@ -33,20 +33,6 @@ WRITE16_HANDLER( toki_control_w ) COMBINE_DATA(&state->m_scrollram16[offset]); } -SCREEN_VBLANK( toki ) -{ - // rising edge - if (vblank_on) - buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff); -} - -SCREEN_VBLANK( tokib ) -{ - // rising edge - if (vblank_on) - buffer_spriteram16_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff); -} - static TILE_GET_INFO( get_text_tile_info ) { toki_state *state = machine.driver_data(); @@ -187,12 +173,13 @@ WRITE16_HANDLER( toki_background2_videoram16_w ) static void toki_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect) { + toki_state *state = machine.driver_data(); int x,y,xoffs,yoffs,tile,flipx,flipy,color,offs; UINT16 *sprite_word; - for (offs = (machine.generic.spriteram_size/2)-4;offs >= 0;offs -= 4) + for (offs = (state->m_spriteram->bytes()/2)-4;offs >= 0;offs -= 4) { - sprite_word = &machine.generic.buffered_spriteram.u16[offs]; + sprite_word = &state->m_spriteram->buffer()[offs]; if ((sprite_word[2] != 0xf000) && (sprite_word[0] != 0xffff)) { @@ -230,12 +217,13 @@ static void toki_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,con static void tokib_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect) { + toki_state *state = machine.driver_data(); int x,y,tile,flipx,color,offs; UINT16 *sprite_word; - for (offs = 0;offs < machine.generic.spriteram_size / 2;offs += 4) + for (offs = 0;offs < state->m_spriteram->bytes() / 2;offs += 4) { - sprite_word = &machine.generic.buffered_spriteram.u16[offs]; + sprite_word = &state->m_spriteram->buffer()[offs]; if (sprite_word[0] == 0xf100) break; diff --git a/src/mame/video/twin16.c b/src/mame/video/twin16.c index 66eb8e74fa4..11c6e36504a 100644 --- a/src/mame/video/twin16.c +++ b/src/mame/video/twin16.c @@ -162,7 +162,7 @@ static int twin16_set_sprite_timer( running_machine &machine ) void twin16_spriteram_process( running_machine &machine ) { twin16_state *state = machine.driver_data(); - UINT16 *spriteram16 = machine.generic.spriteram.u16; + UINT16 *spriteram16 = state->m_spriteram->live(); UINT16 dx = state->m_scrollx[0]; UINT16 dy = state->m_scrolly[0]; @@ -224,8 +224,8 @@ void twin16_spriteram_process( running_machine &machine ) static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap ) { twin16_state *state = machine.driver_data(); - const UINT16 *source = 0x1800+machine.generic.buffered_spriteram.u16 + 0x800 - 4; - const UINT16 *finish = 0x1800+machine.generic.buffered_spriteram.u16; + const UINT16 *source = 0x1800+state->m_spriteram->buffer() + 0x800 - 4; + const UINT16 *finish = 0x1800+state->m_spriteram->buffer(); for (; source >= finish; source -= 4) { @@ -552,12 +552,11 @@ SCREEN_VBLANK( twin16 ) /* if the sprite preprocessor is used, sprite ram is copied to an external buffer first, as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably more to it than that */ - memcpy(&screen.machine().generic.buffered_spriteram.u16[0x1800],state->m_sprite_buffer,0x800*sizeof(UINT16)); - memcpy(state->m_sprite_buffer,&screen.machine().generic.spriteram.u16[0x1800],0x800*sizeof(UINT16)); + memcpy(&state->m_spriteram->buffer()[0x1800],state->m_sprite_buffer,0x800*sizeof(UINT16)); + memcpy(state->m_sprite_buffer,&state->m_spriteram->live()[0x1800],0x800*sizeof(UINT16)); } else { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram16_w(space,0,0,0xffff); + state->m_spriteram->copy(); } } } diff --git a/src/mame/video/twincobr.c b/src/mame/video/twincobr.c index ad639aba72a..6894c43d19e 100644 --- a/src/mame/video/twincobr.c +++ b/src/mame/video/twincobr.c @@ -364,13 +364,15 @@ WRITE8_HANDLER( wardner_videoram_w ) READ8_HANDLER( wardner_sprite_r ) { + twincobr_state *state = space->machine().driver_data(); int shift = (offset & 1) * 8; - return space->machine().generic.spriteram.u16[offset/2] >> shift; + return state->m_spriteram->live()[offset/2] >> shift; } WRITE8_HANDLER( wardner_sprite_w ) { - UINT16 *spriteram16 = space->machine().generic.spriteram.u16; + twincobr_state *state = space->machine().driver_data(); + UINT16 *spriteram16 = state->m_spriteram->live(); if (offset & 1) spriteram16[offset/2] = (spriteram16[offset/2] & 0x00ff) | (data << 8); else @@ -388,7 +390,7 @@ static void wardner_sprite_priority_hack(running_machine &machine) twincobr_state *state = machine.driver_data(); if (state->m_fgscrollx != state->m_bgscrollx) { - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); if ((state->m_fgscrollx==0x1c9) || (state->m_flip_screen && (state->m_fgscrollx==0x17a))) { /* in the shop ? */ int wardner_hack = buffered_spriteram16[0x0b04/2]; /* sprite position 0x6300 to 0x8700 -- hero on shop keeper (normal) */ @@ -465,8 +467,8 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r if (state->m_display_on) { - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; - for (offs = 0;offs < machine.generic.spriteram_size/2;offs += 4) + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); + for (offs = 0;offs < state->m_spriteram->bytes()/2;offs += 4) { int attribute,sx,sy,flipx,flipy; int sprite, color; @@ -515,17 +517,6 @@ SCREEN_UPDATE_IND16( toaplan0 ) return 0; } - -SCREEN_VBLANK( toaplan0 ) -{ - // rising edge - if (vblank_on) - { - address_space *space = screen.machine().device("maincpu")->memory().space(AS_PROGRAM); - - /* Spriteram is always 1 frame ahead, suggesting spriteram buffering. - There are no CPU output registers that control this so we - assume it happens automatically every frame, at the end of vblank */ - buffer_spriteram16_w(space,0,0,0xffff); - } -} +/* Spriteram is always 1 frame ahead, suggesting spriteram buffering. + There are no CPU output registers that control this so we + assume it happens automatically every frame, at the end of vblank */ diff --git a/src/mame/video/vaportra.c b/src/mame/video/vaportra.c index 4d197f7f495..507cd2a54eb 100644 --- a/src/mame/video/vaportra.c +++ b/src/mame/video/vaportra.c @@ -67,32 +67,32 @@ SCREEN_UPDATE_IND16( vaportra ) { deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0); - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0, state->m_priority[1], 0x0f); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0, state->m_priority[1], 0x0f); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); } else if (pri == 1) { deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0); - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0, state->m_priority[1], 0x0f); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0, state->m_priority[1], 0x0f); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); } else if (pri == 2) { deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0, state->m_priority[1], 0x0f); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0, state->m_priority[1], 0x0f); deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0); } else { deco16ic_tilemap_1_draw(state->m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 0, state->m_priority[1], 0x0f); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 0, state->m_priority[1], 0x0f); deco16ic_tilemap_2_draw(state->m_deco_tilegen2, bitmap, cliprect, 0, 0); } - screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, screen.machine().generic.buffered_spriteram.u16, 1, state->m_priority[1], 0x0f); + screen.machine().device("spritegen")->draw_sprites(screen.machine(), bitmap, cliprect, state->m_spriteram->buffer(), 1, state->m_priority[1], 0x0f); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; } diff --git a/src/mame/video/wwfwfest.c b/src/mame/video/wwfwfest.c index bd768b8129f..5a8c7552c6a 100644 --- a/src/mame/video/wwfwfest.c +++ b/src/mame/video/wwfwfest.c @@ -167,7 +167,7 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r **- End of Comments -*/ - UINT16 *buffered_spriteram16 = machine.generic.buffered_spriteram.u16; + UINT16 *buffered_spriteram16 = state->m_spriteram->buffer(); const gfx_element *gfx = machine.gfx[1]; UINT16 *source = buffered_spriteram16; UINT16 *finish = source + 0x2000/2; diff --git a/src/mame/video/zodiack.c b/src/mame/video/zodiack.c index 55321d91e40..383b81091e6 100644 --- a/src/mame/video/zodiack.c +++ b/src/mame/video/zodiack.c @@ -27,7 +27,7 @@ WRITE8_MEMBER( zodiack_state::attributes_w ) { int i; - for (i = offset / 2; i < m_videoram_size; i += 32) + for (i = offset / 2; i < m_videoram.bytes(); i += 32) { m_bg_tilemap->mark_tile_dirty(i); m_fg_tilemap->mark_tile_dirty(i); @@ -132,7 +132,7 @@ void zodiack_state::video_start() void zodiack_state::draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect ) { - for (int offs = 0; offs < m_bulletsram_size; offs += 4) + for (int offs = 0; offs < m_bulletsram.bytes(); offs += 4) { int x, y; @@ -156,7 +156,7 @@ void zodiack_state::draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprec void zodiack_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) { - for (int offs = m_spriteram_size - 4; offs >= 0; offs -= 4) + for (int offs = m_spriteram.bytes() - 4; offs >= 0; offs -= 4) { int flipx, flipy, sx, sy, spritecode;