From 04b9d9e0f9cdaf7eab3a9846278a07ba6168857f Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Tue, 11 Mar 2014 14:28:45 +0000 Subject: [PATCH] Checkpoint: gfx_elements now have a pointer to a palette_device (which is not actually initialized or used yet), and no longer have an unneeded pointer to the running_machine. Removed some gfx_element getter methods described in comments (by Aaron?) as 'a bit gross', and fixed the tiny handful of drivers that were using them (nw) --- src/emu/bus/iq151/video32.c | 5 +- src/emu/bus/iq151/video32.h | 1 + src/emu/bus/iq151/video64.c | 5 +- src/emu/bus/iq151/video64.h | 3 +- src/emu/drawgfx.c | 27 +-- src/emu/drawgfx.h | 22 ++- src/emu/machine/tc009xlvc.c | 2 +- src/mame/drivers/asuka.c | 6 + src/mame/drivers/btime.c | 5 +- src/mame/drivers/coolridr.c | 4 +- src/mame/drivers/cps3.c | 6 +- src/mame/drivers/galastrm.c | 2 + src/mame/drivers/groundfx.c | 2 + src/mame/drivers/gunbustr.c | 1 + src/mame/drivers/igs017.c | 2 +- src/mame/drivers/limenko.c | 8 +- src/mame/drivers/mpu4vid.c | 8 +- src/mame/drivers/namcoic.c | 2 +- src/mame/drivers/ninjaw.c | 8 + src/mame/drivers/othunder.c | 2 + src/mame/drivers/pgm.c | 2 +- src/mame/drivers/popobear.c | 2 +- src/mame/drivers/scregg.c | 2 - src/mame/drivers/slapshot.c | 2 + src/mame/drivers/srmp6.c | 2 +- src/mame/drivers/superchs.c | 1 + src/mame/drivers/taito_f2.c | 60 +++++++ src/mame/drivers/taito_h.c | 3 + src/mame/drivers/taito_o.c | 1 + src/mame/drivers/taito_z.c | 20 +++ src/mame/drivers/taitoair.c | 1 + src/mame/drivers/undrfire.c | 5 + src/mame/drivers/warriorb.c | 8 + src/mame/drivers/wgp.c | 2 + src/mame/includes/btime.h | 2 +- src/mame/includes/ssv.h | 1 + src/mame/includes/taito_f3.h | 3 + src/mame/includes/wecleman.h | 1 + src/mame/machine/megacd.c | 217 +++++++++++++++++++---- src/mame/machine/megacd.h | 166 ----------------- src/mame/video/atarisy1.c | 6 +- src/mame/video/btime.c | 11 +- src/mame/video/bwing.c | 11 -- src/mame/video/hyprduel.c | 4 +- src/mame/video/k001604.c | 4 +- src/mame/video/k037122.c | 2 +- src/mame/video/k054156_k054157_k056832.h | 2 + src/mame/video/konami_helper.c | 2 +- src/mame/video/m10.c | 4 +- src/mame/video/metro.c | 4 +- src/mame/video/mystwarr.c | 6 +- src/mame/video/namcona1.c | 6 +- src/mame/video/plygonet.c | 2 +- src/mame/video/rungun.c | 2 +- src/mame/video/segaic24.c | 2 +- src/mame/video/ssv.c | 5 +- src/mame/video/st0016.c | 2 +- src/mame/video/st0020.c | 2 +- src/mame/video/taito_f3.c | 47 +++-- src/mame/video/taitojc.c | 2 +- src/mame/video/tc0080vco.c | 15 +- src/mame/video/tc0080vco.h | 5 + src/mame/video/tc0100scn.c | 15 +- src/mame/video/tc0100scn.h | 7 + src/mame/video/tc0480scp.c | 14 +- src/mame/video/tc0480scp.h | 6 + src/mame/video/tceptor.c | 4 +- src/mame/video/wecleman.c | 14 +- src/mess/drivers/casloopy.c | 4 +- src/mess/drivers/megadriv.c | 13 +- src/mess/drivers/mz2500.c | 4 +- src/mess/drivers/smc777.c | 2 +- src/mess/drivers/x1.c | 2 +- src/mess/video/x68k.c | 4 +- 74 files changed, 496 insertions(+), 361 deletions(-) diff --git a/src/emu/bus/iq151/video32.c b/src/emu/bus/iq151/video32.c index 42a3caf637f..bcc0e84251d 100644 --- a/src/emu/bus/iq151/video32.c +++ b/src/emu/bus/iq151/video32.c @@ -60,7 +60,8 @@ const device_type IQ151_VIDEO32 = &device_creator; iq151_video32_device::iq151_video32_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, IQ151_VIDEO32, "IQ151 video32", tag, owner, clock, "iq151_video32", __FILE__), device_iq151cart_interface( mconfig, *this ), - m_gfxdecode(*this, "gfxdecode") + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, ":palette") { } @@ -74,7 +75,7 @@ void iq151_video32_device::device_start() m_videoram = (UINT8*)memregion("videoram")->base(); m_chargen = (UINT8*)memregion("chargen")->base(); - m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), iq151_video32_charlayout, m_chargen, 1, 0))); + m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(m_palette, iq151_video32_charlayout, m_chargen, 1, 0))); } //------------------------------------------------- diff --git a/src/emu/bus/iq151/video32.h b/src/emu/bus/iq151/video32.h index 627a4d0347f..f813ca6edb2 100644 --- a/src/emu/bus/iq151/video32.h +++ b/src/emu/bus/iq151/video32.h @@ -40,6 +40,7 @@ private: UINT8 * m_videoram; UINT8 * m_chargen; required_device m_gfxdecode; + required_device m_palette; }; diff --git a/src/emu/bus/iq151/video64.c b/src/emu/bus/iq151/video64.c index 91d7eb74a02..6b67da2bacf 100644 --- a/src/emu/bus/iq151/video64.c +++ b/src/emu/bus/iq151/video64.c @@ -60,7 +60,8 @@ const device_type IQ151_VIDEO64 = &device_creator; iq151_video64_device::iq151_video64_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, IQ151_VIDEO64, "IQ151 video64", tag, owner, clock, "iq151_video64", __FILE__), device_iq151cart_interface( mconfig, *this ), - m_gfxdecode(*this, "gfxdecode") + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, ":palette") { } @@ -73,7 +74,7 @@ void iq151_video64_device::device_start() m_videoram = (UINT8*)memregion("videoram")->base(); m_chargen = (UINT8*)memregion("chargen")->base(); - m_gfxdecode->set_gfx(0,auto_alloc(machine(), gfx_element(machine(), iq151_video64_charlayout, m_chargen, 1, 0))); + m_gfxdecode->set_gfx(0,auto_alloc(machine(), gfx_element(m_palette, iq151_video64_charlayout, m_chargen, 1, 0))); } //------------------------------------------------- diff --git a/src/emu/bus/iq151/video64.h b/src/emu/bus/iq151/video64.h index 5c625eb8a77..36487711acf 100644 --- a/src/emu/bus/iq151/video64.h +++ b/src/emu/bus/iq151/video64.h @@ -40,7 +40,8 @@ protected: private: UINT8 * m_videoram; UINT8 * m_chargen; - required_device m_gfxdecode; + required_device m_gfxdecode; + required_device m_palette; }; diff --git a/src/emu/drawgfx.c b/src/emu/drawgfx.c index 748017ad0da..7ed78b9906f 100644 --- a/src/emu/drawgfx.c +++ b/src/emu/drawgfx.c @@ -73,6 +73,7 @@ const device_type GFXDECODE = &device_creator; gfxdecode_device::gfxdecode_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, GFXDECODE, "gfxdecode", tag, owner, clock, "gfxdecode", __FILE__), + m_palette(NULL), m_gfxdecodeinfo(NULL) { memset(m_gfx, 0, sizeof(m_gfx)); @@ -243,7 +244,7 @@ void gfxdecode_device::device_start() glcopy.total = total; // allocate the graphics - m_gfx[curgfx] = auto_alloc(machine(), gfx_element(machine(), glcopy, (region_base != NULL) ? region_base + gfxdecode->start : NULL, gfxdecode->total_color_codes, gfxdecode->color_codes_start)); + m_gfx[curgfx] = auto_alloc(machine(), gfx_element(m_palette, glcopy, (region_base != NULL) ? region_base + gfxdecode->start : NULL, gfxdecode->total_color_codes, gfxdecode->color_codes_start)); } } @@ -336,8 +337,9 @@ void gfxdecode_device::device_validity_check(validity_checker &valid) const // gfx_element - constructor //------------------------------------------------- -gfx_element::gfx_element(running_machine &machine) - : m_width(0), +gfx_element::gfx_element() + : m_palette(NULL), + m_width(0), m_height(0), m_startx(0), m_starty(0), @@ -355,13 +357,13 @@ gfx_element::gfx_element(running_machine &machine) m_gfxdata(NULL), m_layout_is_raw(false), m_layout_planes(0), - m_layout_charincrement(0), - m_machine(machine) + m_layout_charincrement(0) { } -gfx_element::gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity) - : m_width(width), +gfx_element::gfx_element(palette_device *palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity) + : m_palette(palette), + m_width(width), m_height(height), m_startx(0), m_starty(0), @@ -379,13 +381,13 @@ gfx_element::gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UI m_gfxdata(base), m_layout_is_raw(true), m_layout_planes(0), - m_layout_charincrement(0), - m_machine(machine) + m_layout_charincrement(0) { } -gfx_element::gfx_element(running_machine &machine, const gfx_layout &gl, const UINT8 *srcdata, UINT32 total_colors, UINT32 color_base) - : m_width(0), +gfx_element::gfx_element(palette_device *palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 total_colors, UINT32 color_base) + : m_palette(palette), + m_width(0), m_height(0), m_startx(0), m_starty(0), @@ -403,8 +405,7 @@ gfx_element::gfx_element(running_machine &machine, const gfx_layout &gl, const U m_gfxdata(NULL), m_layout_is_raw(false), m_layout_planes(0), - m_layout_charincrement(0), - m_machine(machine) + m_layout_charincrement(0) { // set the layout set_layout(gl, srcdata); diff --git a/src/emu/drawgfx.h b/src/emu/drawgfx.h index b538fdb7640..5e82783f7d4 100644 --- a/src/emu/drawgfx.h +++ b/src/emu/drawgfx.h @@ -133,12 +133,12 @@ class gfx_element { public: // construction/destruction - gfx_element(running_machine &machine); - gfx_element(running_machine &machine, const gfx_layout &gl, const UINT8 *srcdata, UINT32 total_colors, UINT32 color_base); - gfx_element(running_machine &machine, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity); + gfx_element(); + gfx_element(palette_device *palette, const gfx_layout &gl, const UINT8 *srcdata, UINT32 total_colors, UINT32 color_base); + gfx_element(palette_device *palette, UINT8 *base, UINT32 width, UINT32 height, UINT32 rowbytes, UINT32 total_colors, UINT32 color_base, UINT32 color_granularity); // getters - running_machine &machine() const { return m_machine; } + palette_device *palette() const { return m_palette; } UINT16 width() const { return m_width; } UINT16 height() const { return m_height; } UINT32 elements() const { return m_total_elements; } @@ -149,15 +149,14 @@ public: UINT32 rowbytes() const { return m_line_modulo; } bool has_pen_usage() const { return (m_pen_usage.count() > 0); } - // a bit gross that people muck with this stuff... - const UINT8 *srcdata() const { return m_srcdata; } + // used by tilemaps UINT32 dirtyseq() const { return m_dirtyseq; } - UINT32 *pen_usage() { return &m_pen_usage[0]; } // setters void set_layout(const gfx_layout &gl, const UINT8 *srcdata); void set_raw_layout(const UINT8 *srcdata, UINT32 width, UINT32 height, UINT32 total, UINT32 linemod, UINT32 charmod); void set_source(const UINT8 *source) { m_srcdata = source; if (m_layout_is_raw) m_gfxdata = const_cast(source); memset(m_dirty, 1, elements()); } + void set_palette(palette_device *palette) { m_palette = palette; } void set_colors(UINT32 colors) { m_total_colors = colors; } void set_colorbase(UINT16 colorbase) { m_color_base = colorbase; } void set_granularity(UINT16 granularity) { m_color_granularity = granularity; } @@ -227,8 +226,6 @@ public: void prio_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable); void prio_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha); - - // ----- priority masked zoomed graphics drawing ----- // specific prio_zoom implementations for each transparency type @@ -244,13 +241,15 @@ public: void prio_zoom_transtable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, const UINT8 *pentable, const pen_t *shadowtable); void prio_zoom_alpha(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask, UINT32 transpen, UINT8 alpha); - + // implementations moved here from specific drivers void prio_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, bitmap_ind8 &priority, UINT32 pmask, UINT32 trans_pen); void prio_zoom_transpen_additive(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,UINT32 scalex, UINT32 scaley, bitmap_ind8 &priority, UINT32 pmask,UINT32 trans_pen); void alphastore(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect,UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,int fixedalpha, UINT8 *alphatable); void alphatable(palette_device &palette, bitmap_rgb32 &dest, const rectangle &cliprect, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, int fixedalpha ,UINT8 *alphatable); private: // internal state + palette_device *m_palette; // palette used for drawing + UINT16 m_width; // current pixel width of each element (changeble with source clipping) UINT16 m_height; // current pixel height of each element (changeble with source clipping) UINT16 m_startx; // current source clip X offset @@ -281,8 +280,6 @@ private: dynamic_array m_layout_planeoffset;// plane offsets dynamic_array m_layout_xoffset; // X offsets dynamic_array m_layout_yoffset; // Y offsets - - running_machine &m_machine; // pointer to the owning machine }; @@ -466,6 +463,7 @@ protected: private: // configuration state + palette_device * m_palette; const gfx_decode_entry *m_gfxdecodeinfo; // pointer to array of graphics decoding information gfx_element * m_gfx[MAX_GFX_ELEMENTS]; // array of pointers to graphic sets (chars, sprites) }; diff --git a/src/emu/machine/tc009xlvc.c b/src/emu/machine/tc009xlvc.c index 784937a5e21..5d14d701b8b 100644 --- a/src/emu/machine/tc009xlvc.c +++ b/src/emu/machine/tc009xlvc.c @@ -294,7 +294,7 @@ void tc0091lvc_device::device_start() //printf("m_gfx_index %d\n", m_gfx_index); - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)m_pcg_ram, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, char_layout, (UINT8 *)m_pcg_ram, m_palette->entries() / 16, 0))); } void tc0091lvc_device::device_reset() diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c index 265bb86908c..382d9a22106 100644 --- a/src/mame/drivers/asuka.c +++ b/src/mame/drivers/asuka.c @@ -898,6 +898,7 @@ static MACHINE_CONFIG_START( bonzeadv, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -945,6 +946,7 @@ static MACHINE_CONFIG_START( asuka, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -1000,6 +1002,7 @@ static MACHINE_CONFIG_START( cadash, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -1047,6 +1050,7 @@ static MACHINE_CONFIG_START( mofflott, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -1098,6 +1102,7 @@ static MACHINE_CONFIG_START( galmedes, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -1145,6 +1150,7 @@ static MACHINE_CONFIG_START( eto, asuka_state ) MCFG_PC090OJ_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") diff --git a/src/mame/drivers/btime.c b/src/mame/drivers/btime.c index 6ddde335845..e9fcea3cfb1 100644 --- a/src/mame/drivers/btime.c +++ b/src/mame/drivers/btime.c @@ -1323,8 +1323,6 @@ static MACHINE_CONFIG_START( btime, btime_state ) MCFG_PALETTE_INIT_OWNER(btime_state,btime) MCFG_PALETTE_FORMAT(BBGGGRRR) - MCFG_VIDEO_START_OVERRIDE(btime_state,btime) - /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1414,6 +1412,7 @@ static MACHINE_CONFIG_DERIVED( bnj, btime ) MCFG_GFXDECODE_MODIFY("gfxdecode", bnj) MCFG_VIDEO_START_OVERRIDE(btime_state,bnj) + MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_bnj) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // 256 * 240, confirmed @@ -1470,6 +1469,8 @@ static MACHINE_CONFIG_DERIVED( disco, btime ) MCFG_PALETTE_MODIFY("palette") MCFG_PALETTE_ENTRIES(32) + MCFG_VIDEO_START_OVERRIDE(btime_state,disco) + MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(btime_state, screen_update_disco) MACHINE_CONFIG_END diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c index 1e40bb8a7f3..f0fce39ea6d 100644 --- a/src/mame/drivers/coolridr.c +++ b/src/mame/drivers/coolridr.c @@ -321,6 +321,7 @@ public: m_io_an7(*this, "AN7"), m_io_config(*this, "CONFIG"), m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_screen(*this, "screen") { } @@ -365,6 +366,7 @@ public: required_ioport m_io_an7; required_ioport m_io_config; required_device m_gfxdecode; + required_device m_palette; required_device m_screen; bitmap_ind16 m_temp_bitmap_sprites; @@ -563,7 +565,7 @@ void coolridr_state::video_start() m_screen->register_screen_bitmap(m_screen1_bitmap); m_screen->register_screen_bitmap(m_screen2_bitmap); - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), h1_tile_layout, m_h1_pcg, 8, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, h1_tile_layout, m_h1_pcg, 8, 0))); } /* diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c index 90bac75cdcf..eda556159c4 100644 --- a/src/mame/drivers/cps3.c +++ b/src/mame/drivers/cps3.c @@ -667,7 +667,7 @@ inline void cps3_state::cps3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle if (c&0x02) dest[x] |= 0x4000; if (c&0x04) dest[x] |= 0x8000; if (c&0x08) dest[x] |= 0x10000; - if (c&0xf0) dest[x] |= gfx->machine().rand(); // ?? not used? + if (c&0xf0) dest[x] |= machine().rand(); // ?? not used? } else { @@ -904,12 +904,12 @@ void cps3_state::video_start() save_pointer(NAME(m_char_ram), 0x800000 /4); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), cps3_tiles8x8_layout, (UINT8 *)m_ss_ram, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(m_palette, cps3_tiles8x8_layout, (UINT8 *)m_ss_ram, m_palette->entries() / 16, 0))); //decode_ssram(); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(machine(), cps3_tiles16x16_layout, (UINT8 *)m_char_ram, m_palette->entries() / 64, 0))); + m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(m_palette, cps3_tiles16x16_layout, (UINT8 *)m_char_ram, m_palette->entries() / 64, 0))); m_gfxdecode->gfx(1)->set_granularity(64); //decode_charram(); diff --git a/src/mame/drivers/galastrm.c b/src/mame/drivers/galastrm.c index 4e086b5e86d..fd25c40ebda 100644 --- a/src/mame/drivers/galastrm.c +++ b/src/mame/drivers/galastrm.c @@ -318,8 +318,10 @@ static MACHINE_CONFIG_START( galastrm, galastrm_state ) MCFG_TC0100SCN_ADD("tc0100scn", galastrm_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0480SCP_ADD("tc0480scp", galastrm_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c index a1ad1451ee0..7ef54623ceb 100644 --- a/src/mame/drivers/groundfx.c +++ b/src/mame/drivers/groundfx.c @@ -372,8 +372,10 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state ) MCFG_TC0100SCN_ADD("tc0100scn", groundfx_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0480SCP_ADD("tc0480scp", groundfx_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c index 664d3ab45b2..2cbc9cb212d 100644 --- a/src/mame/drivers/gunbustr.c +++ b/src/mame/drivers/gunbustr.c @@ -317,6 +317,7 @@ static MACHINE_CONFIG_START( gunbustr, gunbustr_state ) MCFG_TC0480SCP_ADD("tc0480scp", gunbustr_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c index 010858256ec..f692af19737 100644 --- a/src/mame/drivers/igs017.c +++ b/src/mame/drivers/igs017.c @@ -360,7 +360,7 @@ void igs017_state::draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect, i if ( addr + dimx * dimy >= m_sprites_gfx_size ) return; - gfx_element gfx(machine(), m_sprites_gfx + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32); + gfx_element gfx(m_palette, m_sprites_gfx + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32); gfx.transpen(m_palette, bitmap,cliprect, 0, color, diff --git a/src/mame/drivers/limenko.c b/src/mame/drivers/limenko.c index af3b4b1c358..fa634b5c333 100644 --- a/src/mame/drivers/limenko.c +++ b/src/mame/drivers/limenko.c @@ -91,6 +91,7 @@ public: TILE_GET_INFO_MEMBER(get_fg_tile_info); virtual void video_start(); UINT32 screen_update_limenko(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,int priority); void draw_sprites(UINT32 *sprites, const rectangle &cliprect, int count); void copy_sprites(bitmap_ind16 &bitmap, bitmap_ind16 &sprites_bitmap, bitmap_ind8 &priority_bitmap, const rectangle &cliprect); required_device m_maincpu; @@ -310,11 +311,10 @@ TILE_GET_INFO_MEMBER(limenko_state::get_fg_tile_info) SET_TILE_INFO_MEMBER(0,tile,color,0); } -static void draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, +void limenko_state::draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy, int priority) { - limenko_state *state = gfx->machine().driver_data(); int pal_base = gfx->colorbase() + gfx->granularity() * (color % gfx->colors()); const UINT8 *source_base = gfx->get_data(code % gfx->elements()); @@ -385,7 +385,7 @@ static void draw_single_sprite(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_ { const UINT8 *source = source_base + (y_index>>16) * gfx->rowbytes(); UINT16 *dest = &dest_bmp.pix16(y); - UINT8 *pri = &state->m_sprites_bitmap_pri.pix8(y); + UINT8 *pri = &m_sprites_bitmap_pri.pix8(y); int x, x_index = x_index_base; for( x=sx; xentries(), 0, 256); + gfx_element gfx(m_palette, gfxdata, width, height, width, m_palette->entries(), 0, 256); draw_single_sprite(m_sprites_bitmap,cliprect,&gfx,0,color,flipx,flipy,x,y,pri); diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c index 45adf1ad16a..e01cd4694a8 100644 --- a/src/mame/drivers/mpu4vid.c +++ b/src/mame/drivers/mpu4vid.c @@ -482,10 +482,10 @@ VIDEO_START_MEMBER(mpu4vid_state,mpu4_vid) assert(m_gfx_index != MAX_GFX_ELEMENTS); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_gfx_index+0, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x8_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); - m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_8x16_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); - m_gfxdecode->set_gfx(m_gfx_index+2, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x8_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); - m_gfxdecode->set_gfx(m_gfx_index+3, auto_alloc(machine(), gfx_element(machine(), mpu4_vid_char_16x16_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index+0, auto_alloc(machine(), gfx_element(m_palette, mpu4_vid_char_8x8_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(m_palette, mpu4_vid_char_8x16_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index+2, auto_alloc(machine(), gfx_element(m_palette, mpu4_vid_char_16x8_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index+3, auto_alloc(machine(), gfx_element(m_palette, mpu4_vid_char_16x16_layout, reinterpret_cast(m_vid_vidram.target()), m_palette->entries() / 16, 0))); m_scn2674->init_stuff(); diff --git a/src/mame/drivers/namcoic.c b/src/mame/drivers/namcoic.c index ebae58bf318..38629fc7d4f 100644 --- a/src/mame/drivers/namcoic.c +++ b/src/mame/drivers/namcoic.c @@ -1443,7 +1443,7 @@ void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect void namco_c45_road_device::device_start() { // create a gfx_element describing the road graphics - m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), s_tile_layout, 0x10000 + (UINT8 *)&m_ram[0], 0x3f, 0xf00))); + m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(m_palette, s_tile_layout, 0x10000 + (UINT8 *)&m_ram[0], 0x3f, 0xf00))); // create a tilemap for the road m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(namco_c45_road_device::get_road_info), this), diff --git a/src/mame/drivers/ninjaw.c b/src/mame/drivers/ninjaw.c index 8c15df4bd11..3826577ceab 100644 --- a/src/mame/drivers/ninjaw.c +++ b/src/mame/drivers/ninjaw.c @@ -842,10 +842,14 @@ static MACHINE_CONFIG_START( ninjaw, ninjaw_state ) MCFG_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn_2", darius2_tc0100scn_intf_m) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette2") MCFG_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette3") + MCFG_TC0110PCR_ADD("tc0110pcr_1") MCFG_TC0110PCR_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr_2") @@ -933,10 +937,14 @@ static MACHINE_CONFIG_START( darius2, ninjaw_state ) MCFG_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0100SCN_ADD("tc0100scn_2", darius2_tc0100scn_intf_m) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette2") MCFG_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette3") + MCFG_TC0110PCR_ADD("tc0110pcr_1") MCFG_TC0110PCR_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr_2") diff --git a/src/mame/drivers/othunder.c b/src/mame/drivers/othunder.c index 1bbada73998..290196d72e7 100644 --- a/src/mame/drivers/othunder.c +++ b/src/mame/drivers/othunder.c @@ -693,6 +693,8 @@ static MACHINE_CONFIG_START( othunder, othunder_state ) MCFG_TC0100SCN_ADD("tc0100scn", othunder_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c index 789ec1948ca..584d615b8f6 100644 --- a/src/mame/drivers/pgm.c +++ b/src/mame/drivers/pgm.c @@ -4025,7 +4025,7 @@ void pgm_state::expand_32x32x5bpp() glcopy.total = (gfx2_size_needed / glcopy.charincrement)*8; - m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(machine(), glcopy, (UINT8 *)dst, 32, 0x400))); + m_gfxdecode->set_gfx(1, auto_alloc(machine(), gfx_element(m_palette, glcopy, (UINT8 *)dst, 32, 0x400))); } diff --git a/src/mame/drivers/popobear.c b/src/mame/drivers/popobear.c index 07aa0bc4f59..0ab4c9457bf 100644 --- a/src/mame/drivers/popobear.c +++ b/src/mame/drivers/popobear.c @@ -224,7 +224,7 @@ void popobear_state::video_start() /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), popobear_char_layout, (UINT8 *)m_vram_rearranged, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, popobear_char_layout, (UINT8 *)m_vram_rearranged, m_palette->entries() / 16, 0))); m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); diff --git a/src/mame/drivers/scregg.c b/src/mame/drivers/scregg.c index fd7178269f8..a3e48607edf 100644 --- a/src/mame/drivers/scregg.c +++ b/src/mame/drivers/scregg.c @@ -271,7 +271,6 @@ static MACHINE_CONFIG_START( dommy, scregg_state ) MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_INIT_OWNER(scregg_state,btime) - MCFG_VIDEO_START_OVERRIDE(scregg_state,btime) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -303,7 +302,6 @@ static MACHINE_CONFIG_START( scregg, scregg_state ) MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_INIT_OWNER(scregg_state,btime) - MCFG_VIDEO_START_OVERRIDE(scregg_state,btime) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/slapshot.c b/src/mame/drivers/slapshot.c index b0b64a6b2ed..d54f6c54896 100644 --- a/src/mame/drivers/slapshot.c +++ b/src/mame/drivers/slapshot.c @@ -552,6 +552,7 @@ static MACHINE_CONFIG_START( slapshot, slapshot_state ) MCFG_TC0480SCP_ADD("tc0480scp", slapshot_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") MCFG_TC0360PRI_ADD("tc0360pri") /* sound hardware */ @@ -599,6 +600,7 @@ static MACHINE_CONFIG_START( opwolf3, slapshot_state ) MCFG_TC0480SCP_ADD("tc0480scp", slapshot_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") MCFG_TC0360PRI_ADD("tc0360pri") /* sound hardware */ diff --git a/src/mame/drivers/srmp6.c b/src/mame/drivers/srmp6.c index d8ae68e3e4c..4b7d7ca02c1 100644 --- a/src/mame/drivers/srmp6.c +++ b/src/mame/drivers/srmp6.c @@ -169,7 +169,7 @@ void srmp6_state::video_start() m_sprram_old = auto_alloc_array_clear(machine(), UINT16, 0x80000/2); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), tiles8x8_layout, (UINT8*)m_tileram, m_palette->entries() / 256, 0))); + m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(m_palette, tiles8x8_layout, (UINT8*)m_tileram, m_palette->entries() / 256, 0))); m_gfxdecode->gfx(0)->set_granularity(256); m_brightness = 0x60; diff --git a/src/mame/drivers/superchs.c b/src/mame/drivers/superchs.c index ba9be62b178..79e8c9535f6 100644 --- a/src/mame/drivers/superchs.c +++ b/src/mame/drivers/superchs.c @@ -351,6 +351,7 @@ static MACHINE_CONFIG_START( superchs, superchs_state ) MCFG_TC0480SCP_ADD("tc0480scp", superchs_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) diff --git a/src/mame/drivers/taito_f2.c b/src/mame/drivers/taito_f2.c index 4b227f0d380..51eb4dfe032 100644 --- a/src/mame/drivers/taito_f2.c +++ b/src/mame/drivers/taito_f2.c @@ -3077,6 +3077,8 @@ static MACHINE_CONFIG_DERIVED( finalb, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") MACHINE_CONFIG_END @@ -3097,6 +3099,8 @@ static MACHINE_CONFIG_DERIVED( dondokod, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0280GRD_ADD("tc0280grd", taitof2_tc0280grd_intf) MCFG_TC0280GRD_GFXDECODE("gfxdecode"); MCFG_TC0360PRI_ADD("tc0360pri") @@ -3116,6 +3120,8 @@ static MACHINE_CONFIG_DERIVED( megab, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3135,8 +3141,12 @@ static MACHINE_CONFIG_DERIVED( thundfox, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn_1", thundfox_tc0100scn_intf_1) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0100SCN_ADD("tc0100scn_2", thundfox_tc0100scn_intf_2) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3155,6 +3165,8 @@ static MACHINE_CONFIG_DERIVED( cameltry, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0280GRD_ADD("tc0280grd", taitof2_tc0280grd_intf) MCFG_TC0280GRD_GFXDECODE("gfxdecode"); MCFG_TC0360PRI_ADD("tc0360pri") @@ -3174,6 +3186,8 @@ static MACHINE_CONFIG_DERIVED( qtorimon, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") MACHINE_CONFIG_END @@ -3193,6 +3207,8 @@ static MACHINE_CONFIG_DERIVED( liquidk, taito_f2_tc0220ioc ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3210,6 +3226,8 @@ static MACHINE_CONFIG_DERIVED( quizhq, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") MACHINE_CONFIG_END @@ -3232,6 +3250,7 @@ static MACHINE_CONFIG_DERIVED( ssi, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END @@ -3252,6 +3271,8 @@ static MACHINE_CONFIG_DERIVED( gunfront, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3269,6 +3290,8 @@ static MACHINE_CONFIG_DERIVED( growl, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3284,6 +3307,8 @@ static MACHINE_CONFIG_DERIVED( mjnquest, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") MACHINE_CONFIG_END @@ -3304,6 +3329,8 @@ static MACHINE_CONFIG_DERIVED( footchmp, taito_f2 ) MCFG_TC0480SCP_ADD("tc0480scp", footchmp_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3330,6 +3357,7 @@ static MACHINE_CONFIG_DERIVED( hthero, taito_f2 ) MCFG_TC0360PRI_ADD("tc0360pri") MCFG_TC0480SCP_ADD("tc0480scp", hthero_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") MACHINE_CONFIG_END @@ -3348,6 +3376,8 @@ static MACHINE_CONFIG_DERIVED( koshien, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", koshien_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3369,6 +3399,7 @@ static MACHINE_CONFIG_DERIVED( yuyugogo, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END @@ -3385,6 +3416,8 @@ static MACHINE_CONFIG_DERIVED( ninjak, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", finalb_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3402,6 +3435,8 @@ static MACHINE_CONFIG_DERIVED( solfigtr, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", solfigtr_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3418,6 +3453,7 @@ static MACHINE_CONFIG_DERIVED( qzquest, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", taitof2_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END @@ -3435,6 +3471,8 @@ static MACHINE_CONFIG_DERIVED( pulirula, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf) MCFG_TC0430GRW_GFXDECODE("gfxdecode") MCFG_TC0360PRI_ADD("tc0360pri") @@ -3458,6 +3496,8 @@ static MACHINE_CONFIG_DERIVED( metalb, taito_f2_tc0510nio ) MCFG_TC0480SCP_ADD("tc0480scp", metalb_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3475,6 +3515,7 @@ static MACHINE_CONFIG_DERIVED( qzchikyu, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", qzchikyu_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END @@ -3492,6 +3533,7 @@ static MACHINE_CONFIG_DERIVED( yesnoj, taito_f2 ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END @@ -3509,6 +3551,8 @@ static MACHINE_CONFIG_DERIVED( deadconx, taito_f2 ) MCFG_TC0480SCP_ADD("tc0480scp", deadconx_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3527,6 +3571,8 @@ static MACHINE_CONFIG_DERIVED( deadconxj, taito_f2 ) MCFG_TC0480SCP_ADD("tc0480scp", deadconxj_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3547,6 +3593,8 @@ static MACHINE_CONFIG_DERIVED( dinorex, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3567,6 +3615,8 @@ static MACHINE_CONFIG_DERIVED( qjinsei, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3587,6 +3637,8 @@ static MACHINE_CONFIG_DERIVED( qcrayon, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3607,6 +3659,8 @@ static MACHINE_CONFIG_DERIVED( qcrayon2, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", liquidk_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0360PRI_ADD("tc0360pri") MACHINE_CONFIG_END @@ -3625,6 +3679,8 @@ static MACHINE_CONFIG_DERIVED( driftout, taito_f2_tc0510nio ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf) MCFG_TC0430GRW_GFXDECODE("gfxdecode") MCFG_TC0360PRI_ADD("tc0360pri") @@ -3662,6 +3718,8 @@ static MACHINE_CONFIG_START( cameltrya, taitof2_state ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0280GRD_ADD("tc0280grd", taitof2_tc0280grd_intf) MCFG_TC0280GRD_GFXDECODE("gfxdecode"); MCFG_TC0360PRI_ADD("tc0360pri") @@ -3715,6 +3773,8 @@ static MACHINE_CONFIG_START( driveout, taitof2_state ) MCFG_TC0100SCN_ADD("tc0100scn", dondokod_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0430GRW_ADD("tc0430grw", taitof2_tc0430grw_intf) MCFG_TC0430GRW_GFXDECODE("gfxdecode") MCFG_TC0360PRI_ADD("tc0360pri") diff --git a/src/mame/drivers/taito_h.c b/src/mame/drivers/taito_h.c index 89626fd38c1..a2b55b505c6 100644 --- a/src/mame/drivers/taito_h.c +++ b/src/mame/drivers/taito_h.c @@ -700,6 +700,7 @@ static MACHINE_CONFIG_START( syvalion, taitoh_state ) MCFG_TC0080VCO_ADD("tc0080vco", syvalion_tc0080vco_intf) MCFG_TC0080VCO_GFXDECODE("gfxdecode") + MCFG_TC0080VCO_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -743,6 +744,7 @@ static MACHINE_CONFIG_START( recordbr, taitoh_state ) MCFG_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf) MCFG_TC0080VCO_GFXDECODE("gfxdecode") + MCFG_TC0080VCO_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -794,6 +796,7 @@ static MACHINE_CONFIG_START( dleague, taitoh_state ) MCFG_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf) MCFG_TC0080VCO_GFXDECODE("gfxdecode") + MCFG_TC0080VCO_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/taito_o.c b/src/mame/drivers/taito_o.c index 739ef164905..d5588f9f399 100644 --- a/src/mame/drivers/taito_o.c +++ b/src/mame/drivers/taito_o.c @@ -261,6 +261,7 @@ static MACHINE_CONFIG_START( parentj, taitoo_state ) MCFG_TC0080VCO_ADD("tc0080vco", parentj_intf) MCFG_TC0080VCO_GFXDECODE("gfxdecode") + MCFG_TC0080VCO_PALETTE("palette") MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/taito_z.c b/src/mame/drivers/taito_z.c index 2b30b60f841..96b63d584ce 100644 --- a/src/mame/drivers/taito_z.c +++ b/src/mame/drivers/taito_z.c @@ -3091,6 +3091,8 @@ static MACHINE_CONFIG_START( contcirc, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", taitoz_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3156,6 +3158,8 @@ static MACHINE_CONFIG_START( chasehq, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", chasehq_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3223,6 +3227,8 @@ static MACHINE_CONFIG_START( enforce, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", taitoz_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3286,6 +3292,8 @@ static MACHINE_CONFIG_START( bshark, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", taitoz_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) /* sound hardware */ @@ -3359,6 +3367,8 @@ static MACHINE_CONFIG_START( sci, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", taitoz_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) /* sound hardware */ @@ -3423,6 +3433,8 @@ static MACHINE_CONFIG_START( nightstr, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", chasehq_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3490,6 +3502,8 @@ static MACHINE_CONFIG_START( aquajack, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", taitoz_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3552,6 +3566,8 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state ) MCFG_TC0100SCN_ADD("tc0100scn", spacegun_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0110PCR_ADD("tc0110pcr") MCFG_TC0110PCR_PALETTE("palette") @@ -3617,6 +3633,8 @@ static MACHINE_CONFIG_START( dblaxle, taitoz_state ) MCFG_TC0480SCP_ADD("tc0480scp", taitoz_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) /* sound hardware */ @@ -3680,6 +3698,8 @@ static MACHINE_CONFIG_START( racingb, taitoz_state ) MCFG_TC0480SCP_ADD("tc0480scp", taitoz_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") + MCFG_TC0150ROD_ADD("tc0150rod", taitoz_tc0150rod_intf) /* sound hardware */ diff --git a/src/mame/drivers/taitoair.c b/src/mame/drivers/taitoair.c index 37be7b46e5e..4ec0d4a313b 100644 --- a/src/mame/drivers/taitoair.c +++ b/src/mame/drivers/taitoair.c @@ -723,6 +723,7 @@ static MACHINE_CONFIG_START( airsys, taitoair_state ) MCFG_TC0080VCO_ADD("tc0080vco", airsys_tc0080vco_intf) MCFG_TC0080VCO_GFXDECODE("gfxdecode") + MCFG_TC0080VCO_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/undrfire.c b/src/mame/drivers/undrfire.c index b228c3e0d74..f4c76faba11 100644 --- a/src/mame/drivers/undrfire.c +++ b/src/mame/drivers/undrfire.c @@ -738,8 +738,10 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state ) MCFG_TC0100SCN_ADD("tc0100scn", undrfire_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MCFG_TC0480SCP_ADD("tc0480scp", undrfire_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) @@ -775,8 +777,11 @@ static MACHINE_CONFIG_START( cbombers, undrfire_state ) MCFG_TC0100SCN_ADD("tc0100scn", undrfire_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0480SCP_ADD("tc0480scp", undrfire_tc0480scp_intf) MCFG_TC0480SCP_GFXDECODE("gfxdecode") + MCFG_TC0480SCP_PALETTE("palette") /* sound hardware */ MCFG_FRAGMENT_ADD(taito_en_sound) diff --git a/src/mame/drivers/warriorb.c b/src/mame/drivers/warriorb.c index a6ba7191619..1806597b40b 100644 --- a/src/mame/drivers/warriorb.c +++ b/src/mame/drivers/warriorb.c @@ -534,8 +534,12 @@ static MACHINE_CONFIG_START( darius2d, warriorb_state ) MCFG_TC0100SCN_ADD("tc0100scn_1", darius2d_tc0100scn_intf_l) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0100SCN_ADD("tc0100scn_2", darius2d_tc0100scn_intf_r) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette2") + MCFG_TC0110PCR_ADD("tc0110pcr_1") MCFG_TC0110PCR_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr_2") @@ -604,8 +608,12 @@ static MACHINE_CONFIG_START( warriorb, warriorb_state ) MCFG_TC0100SCN_ADD("tc0100scn_1", warriorb_tc0100scn_intf_l) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") + MCFG_TC0100SCN_ADD("tc0100scn_2", warriorb_tc0100scn_intf_r) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette2") + MCFG_TC0110PCR_ADD("tc0110pcr_1") MCFG_TC0110PCR_PALETTE("palette") MCFG_TC0110PCR_ADD("tc0110pcr_2") diff --git a/src/mame/drivers/wgp.c b/src/mame/drivers/wgp.c index 89eb23f3d16..7a008c6a5ad 100644 --- a/src/mame/drivers/wgp.c +++ b/src/mame/drivers/wgp.c @@ -995,6 +995,7 @@ static MACHINE_CONFIG_START( wgp, wgp_state ) MCFG_TC0100SCN_ADD("tc0100scn", wgp_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -1019,6 +1020,7 @@ static MACHINE_CONFIG_DERIVED( wgp2, wgp ) MCFG_DEVICE_REMOVE("tc0100scn") MCFG_TC0100SCN_ADD("tc0100scn", wgp2_tc0100scn_intf) MCFG_TC0100SCN_GFXDECODE("gfxdecode") + MCFG_TC0100SCN_PALETTE("palette") MACHINE_CONFIG_END diff --git a/src/mame/includes/btime.h b/src/mame/includes/btime.h index b9bb632092a..8b274682877 100644 --- a/src/mame/includes/btime.h +++ b/src/mame/includes/btime.h @@ -109,13 +109,13 @@ public: DECLARE_DRIVER_INIT(lnc); DECLARE_MACHINE_START(btime); DECLARE_MACHINE_RESET(btime); - DECLARE_VIDEO_START(btime); DECLARE_PALETTE_INIT(btime); DECLARE_MACHINE_RESET(lnc); DECLARE_PALETTE_INIT(lnc); DECLARE_MACHINE_START(mmonkey); DECLARE_MACHINE_RESET(mmonkey); DECLARE_VIDEO_START(bnj); + DECLARE_VIDEO_START(disco); UINT32 screen_update_btime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_cookrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_lnc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h index db7d32e99b7..c0457ce11ef 100644 --- a/src/mame/includes/ssv.h +++ b/src/mame/includes/ssv.h @@ -157,6 +157,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(gdfs_interrupt); void update_irq_state(); IRQ_CALLBACK_MEMBER(ssv_irq_callback); + void ssv_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,int shadow); void draw_row(bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int sy, int scroll); void draw_layer(bitmap_ind16 &bitmap, const rectangle &cliprect, int nr); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h index 7b206b66df4..a91ea49a56e 100644 --- a/src/mame/includes/taito_f3.h +++ b/src/mame/includes/taito_f3.h @@ -299,4 +299,7 @@ protected: private: inline void get_tile_info(tile_data &tileinfo, int tile_index, UINT16 *gfx_base); + inline void f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,UINT8 pri_dst); + inline void f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,int scalex,int scaley,UINT8 pri_dst); + void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect); }; diff --git a/src/mame/includes/wecleman.h b/src/mame/includes/wecleman.h index 3adb39cbb04..1a69fecf17d 100644 --- a/src/mame/includes/wecleman.h +++ b/src/mame/includes/wecleman.h @@ -96,6 +96,7 @@ public: INTERRUPT_GEN_MEMBER(hotchase_sound_timer); TIMER_DEVICE_CALLBACK_MEMBER(wecleman_scanline); TIMER_DEVICE_CALLBACK_MEMBER(hotchase_scanline); + void draw_cloud(bitmap_rgb32 &bitmap,gfx_element *gfx,UINT16 *tm_base,int x0,int y0,int xcount,int ycount,int scrollx,int scrolly,int tmw_l2,int tmh_l2,int alpha,int pal_offset); void wecleman_unpack_sprites(); void bitswap(UINT8 *src,size_t len,int _14,int _13,int _12,int _11,int _10,int _f,int _e,int _d,int _c,int _b,int _a,int _9,int _8,int _7,int _6,int _5,int _4,int _3,int _2,int _1,int _0); void hotchase_sprite_decode( int num16_banks, int bank_size ); diff --git a/src/mame/machine/megacd.c b/src/mame/machine/megacd.c index 5ca24fff605..c879860b3b2 100644 --- a/src/mame/machine/megacd.c +++ b/src/mame/machine/megacd.c @@ -26,7 +26,7 @@ const device_type SEGA_SEGACD_EUROPE = &device_creator(device).m_gfxdecode.set_tag(tag); -} - - TIMER_DEVICE_CALLBACK_MEMBER( sega_segacd_device::segacd_irq3_timer_callback ) { CHECK_SCD_LV3_INTERRUPT @@ -127,6 +116,186 @@ ADDRESS_MAP_START( segacd_map, AS_PROGRAM, 16, sega_segacd_device ) ADDRESS_MAP_END + +// the tiles in RAM are 8x8 tiles +// they are referenced in the cell look-up map as either 16x16 or 32x32 tiles (made of 4 / 16 8x8 tiles) + +#define SEGACD_BYTES_PER_TILE16 (128) +#define SEGACD_BYTES_PER_TILE32 (512) + +#define SEGACD_NUM_TILES16 (0x40000/SEGACD_BYTES_PER_TILE16) +#define SEGACD_NUM_TILES32 (0x40000/SEGACD_BYTES_PER_TILE32) + +#define _16x16_SEQUENCE_1 { 8,12,0,4,24,28,16,20, 512+8, 512+12, 512+0, 512+4, 512+24, 512+28, 512+16, 512+20 }, +#define _16x16_SEQUENCE_1_FLIP { 512+20,512+16,512+28,512+24,512+4,512+0, 512+12,512+8, 20,16,28,24,4,0,12,8 }, + +#define _16x16_SEQUENCE_2 { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32,10*32,11*32,12*32,13*32,14*32,15*32 }, +#define _16x16_SEQUENCE_2_FLIP { 15*32, 14*32, 13*32, 12*32, 11*32, 10*32, 9*32, 8*32, 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 }, + + +#define _16x16_START \ +{ \ + 16,16, \ + SEGACD_NUM_TILES16, \ + 4, \ + { 0,1,2,3 }, +#define _16x16_END \ + 8*128 \ +}; +#define _32x32_START \ +{ \ + 32,32, \ + SEGACD_NUM_TILES32, \ + 4, \ + { 0,1,2,3 }, + +#define _32x32_END \ + 8*512 \ +}; + + +#define _32x32_SEQUENCE_1 \ + { 8,12,0,4,24,28,16,20, \ + 1024+8, 1024+12, 1024+0, 1024+4, 1024+24, 1024+28, 1024+16, 1024+20, \ + 2048+8, 2048+12, 2048+0, 2048+4, 2048+24, 2048+28, 2048+16, 2048+20, \ + 3072+8, 3072+12, 3072+0, 3072+4, 3072+24, 3072+28, 3072+16, 3072+20 \ + }, +#define _32x32_SEQUENCE_1_FLIP \ +{ 3072+20, 3072+16, 3072+28, 3072+24, 3072+4, 3072+0, 3072+12, 3072+8, \ + 2048+20, 2048+16, 2048+28, 2048+24, 2048+4, 2048+0, 2048+12, 2048+8, \ + 1024+20, 1024+16, 1024+28, 1024+24, 1024+4, 1024+0, 1024+12, 1024+8, \ + 20, 16, 28, 24, 4, 0, 12, 8}, + +#define _32x32_SEQUENCE_2 \ + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, \ + 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32, \ + 16*32,17*32,18*32,19*32,20*32,21*32,22*32,23*32, \ + 24*32,25*32, 26*32, 27*32, 28*32, 29*32, 30*32, 31*32}, +#define _32x32_SEQUENCE_2_FLIP \ +{ 31*32, 30*32, 29*32, 28*32, 27*32, 26*32, 25*32, 24*32, \ + 23*32, 22*32, 21*32, 20*32, 19*32, 18*32, 17*32, 16*32, \ + 15*32, 14*32, 13*32, 12*32, 11*32, 10*32, 9*32 , 8*32 , \ + 7*32 , 6*32 , 5*32 , 4*32 , 3*32 , 2*32 , 1*32 , 0*32}, + +/* 16x16 decodes */ +static const gfx_layout sega_16x16_r00_f0_layout = +_16x16_START + _16x16_SEQUENCE_1 + _16x16_SEQUENCE_2 +_16x16_END + +static const gfx_layout sega_16x16_r01_f0_layout = +_16x16_START + _16x16_SEQUENCE_2 + _16x16_SEQUENCE_1_FLIP +_16x16_END + +static const gfx_layout sega_16x16_r10_f0_layout = +_16x16_START + _16x16_SEQUENCE_1_FLIP + _16x16_SEQUENCE_2_FLIP +_16x16_END + +static const gfx_layout sega_16x16_r11_f0_layout = +_16x16_START + _16x16_SEQUENCE_2_FLIP + _16x16_SEQUENCE_1 +_16x16_END + +static const gfx_layout sega_16x16_r00_f1_layout = +_16x16_START + _16x16_SEQUENCE_1_FLIP + _16x16_SEQUENCE_2 +_16x16_END + +static const gfx_layout sega_16x16_r01_f1_layout = +_16x16_START + _16x16_SEQUENCE_2 + _16x16_SEQUENCE_1 +_16x16_END + +static const gfx_layout sega_16x16_r10_f1_layout = +_16x16_START + _16x16_SEQUENCE_1 + _16x16_SEQUENCE_2_FLIP +_16x16_END + +static const gfx_layout sega_16x16_r11_f1_layout = +_16x16_START + _16x16_SEQUENCE_2_FLIP + _16x16_SEQUENCE_1_FLIP +_16x16_END + +/* 32x32 decodes */ +static const gfx_layout sega_32x32_r00_f0_layout = +_32x32_START + _32x32_SEQUENCE_1 + _32x32_SEQUENCE_2 +_32x32_END + +static const gfx_layout sega_32x32_r01_f0_layout = +_32x32_START + _32x32_SEQUENCE_2 + _32x32_SEQUENCE_1_FLIP +_32x32_END + +static const gfx_layout sega_32x32_r10_f0_layout = +_32x32_START + _32x32_SEQUENCE_1_FLIP + _32x32_SEQUENCE_2_FLIP +_32x32_END + +static const gfx_layout sega_32x32_r11_f0_layout = +_32x32_START + _32x32_SEQUENCE_2_FLIP + _32x32_SEQUENCE_1 +_32x32_END + +static const gfx_layout sega_32x32_r00_f1_layout = +_32x32_START + _32x32_SEQUENCE_1_FLIP + _32x32_SEQUENCE_2 +_32x32_END + +static const gfx_layout sega_32x32_r01_f1_layout = +_32x32_START + _32x32_SEQUENCE_2 + _32x32_SEQUENCE_1 +_32x32_END + +static const gfx_layout sega_32x32_r10_f1_layout = +_32x32_START + _32x32_SEQUENCE_1 + _32x32_SEQUENCE_2_FLIP +_32x32_END + +static const gfx_layout sega_32x32_r11_f1_layout = +_32x32_START + _32x32_SEQUENCE_2_FLIP + _32x32_SEQUENCE_1_FLIP +_32x32_END + +GFXDECODE_START( segacd ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r00_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r01_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r10_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r11_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r00_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r11_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r10_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_16x16_r01_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r00_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r01_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r10_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r11_f0_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r00_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r11_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r10_f1_layout, 0, 0 ) + GFXDECODE_ENTRY( NULL, 0, sega_32x32_r01_f1_layout, 0, 0 ) +GFXDECODE_END + + + static MACHINE_CONFIG_FRAGMENT( segacd_fragment ) MCFG_CPU_ADD("segacd_68k", M68000, SEGACD_CLOCK ) /* 12.5 MHz */ @@ -143,6 +312,7 @@ static MACHINE_CONFIG_FRAGMENT( segacd_fragment ) MCFG_TIMER_DRIVER_ADD("stamp_timer", sega_segacd_device, segacd_gfx_conversion_timer_callback) MCFG_TIMER_DRIVER_ADD("scd_dma_timer", sega_segacd_device, scd_dma_timer_callback) + MCFG_GFXDECODE_ADD("gfxdecode", segacd) MCFG_DEFAULT_LAYOUT( layout_megacd ) @@ -1605,28 +1775,9 @@ void sega_segacd_device::device_start() space.install_read_handler (0x0000070, 0x0000073, read16_delegate(FUNC(sega_segacd_device::scd_hint_vector_r),this) ); - - - - /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(0 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r00_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(1 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r01_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(2 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r10_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(3 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r11_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(4 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r00_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(5 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r11_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(6 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r10_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(7 , auto_alloc(machine(), gfx_element(machine(), sega_16x16_r01_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - - m_gfxdecode->set_gfx(8 , auto_alloc(machine(), gfx_element(machine(), sega_32x32_r00_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(9 , auto_alloc(machine(), gfx_element(machine(), sega_32x32_r01_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(10, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r10_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(11, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r11_f0_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(12, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r00_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(13, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r11_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(14, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r10_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); - m_gfxdecode->set_gfx(15, auto_alloc(machine(), gfx_element(machine(), sega_32x32_r01_f1_layout, (UINT8 *)segacd_dataram, 0, 0))); + for (int i = 0; i < 16; i++) + m_gfxdecode->gfx(i)->set_source((UINT8 *)segacd_dataram); segacd_stampmap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_16x16_1x1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); segacd_stampmap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_32x32_1x1_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 8, 8); diff --git a/src/mame/machine/megacd.h b/src/mame/machine/megacd.h index f3a0483cfc7..46095ac5aad 100644 --- a/src/mame/machine/megacd.h +++ b/src/mame/machine/megacd.h @@ -34,177 +34,11 @@ #define SEGACD_IRQ3_TIMER_SPEED (attotime::from_nsec(segacd_irq3_timer_reg*30720)) - -// the tiles in RAM are 8x8 tiles -// they are referenced in the cell look-up map as either 16x16 or 32x32 tiles (made of 4 / 16 8x8 tiles) - -#define SEGACD_BYTES_PER_TILE16 (128) -#define SEGACD_BYTES_PER_TILE32 (512) - -#define SEGACD_NUM_TILES16 (0x40000/SEGACD_BYTES_PER_TILE16) -#define SEGACD_NUM_TILES32 (0x40000/SEGACD_BYTES_PER_TILE32) - -#define _16x16_SEQUENCE_1 { 8,12,0,4,24,28,16,20, 512+8, 512+12, 512+0, 512+4, 512+24, 512+28, 512+16, 512+20 }, -#define _16x16_SEQUENCE_1_FLIP { 512+20,512+16,512+28,512+24,512+4,512+0, 512+12,512+8, 20,16,28,24,4,0,12,8 }, - -#define _16x16_SEQUENCE_2 { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32,10*32,11*32,12*32,13*32,14*32,15*32 }, -#define _16x16_SEQUENCE_2_FLIP { 15*32, 14*32, 13*32, 12*32, 11*32, 10*32, 9*32, 8*32, 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 }, - - -#define _16x16_START \ -{ \ - 16,16, \ - SEGACD_NUM_TILES16, \ - 4, \ - { 0,1,2,3 }, -#define _16x16_END \ - 8*128 \ -}; -#define _32x32_START \ -{ \ - 32,32, \ - SEGACD_NUM_TILES32, \ - 4, \ - { 0,1,2,3 }, - -#define _32x32_END \ - 8*512 \ -}; - - -#define _32x32_SEQUENCE_1 \ - { 8,12,0,4,24,28,16,20, \ - 1024+8, 1024+12, 1024+0, 1024+4, 1024+24, 1024+28, 1024+16, 1024+20, \ - 2048+8, 2048+12, 2048+0, 2048+4, 2048+24, 2048+28, 2048+16, 2048+20, \ - 3072+8, 3072+12, 3072+0, 3072+4, 3072+24, 3072+28, 3072+16, 3072+20 \ - }, -#define _32x32_SEQUENCE_1_FLIP \ -{ 3072+20, 3072+16, 3072+28, 3072+24, 3072+4, 3072+0, 3072+12, 3072+8, \ - 2048+20, 2048+16, 2048+28, 2048+24, 2048+4, 2048+0, 2048+12, 2048+8, \ - 1024+20, 1024+16, 1024+28, 1024+24, 1024+4, 1024+0, 1024+12, 1024+8, \ - 20, 16, 28, 24, 4, 0, 12, 8}, - -#define _32x32_SEQUENCE_2 \ - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, \ - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32, \ - 16*32,17*32,18*32,19*32,20*32,21*32,22*32,23*32, \ - 24*32,25*32, 26*32, 27*32, 28*32, 29*32, 30*32, 31*32}, -#define _32x32_SEQUENCE_2_FLIP \ -{ 31*32, 30*32, 29*32, 28*32, 27*32, 26*32, 25*32, 24*32, \ - 23*32, 22*32, 21*32, 20*32, 19*32, 18*32, 17*32, 16*32, \ - 15*32, 14*32, 13*32, 12*32, 11*32, 10*32, 9*32 , 8*32 , \ - 7*32 , 6*32 , 5*32 , 4*32 , 3*32 , 2*32 , 1*32 , 0*32}, - -/* 16x16 decodes */ -static const gfx_layout sega_16x16_r00_f0_layout = -_16x16_START - _16x16_SEQUENCE_1 - _16x16_SEQUENCE_2 -_16x16_END - -static const gfx_layout sega_16x16_r01_f0_layout = -_16x16_START - _16x16_SEQUENCE_2 - _16x16_SEQUENCE_1_FLIP -_16x16_END - -static const gfx_layout sega_16x16_r10_f0_layout = -_16x16_START - _16x16_SEQUENCE_1_FLIP - _16x16_SEQUENCE_2_FLIP -_16x16_END - -static const gfx_layout sega_16x16_r11_f0_layout = -_16x16_START - _16x16_SEQUENCE_2_FLIP - _16x16_SEQUENCE_1 -_16x16_END - -static const gfx_layout sega_16x16_r00_f1_layout = -_16x16_START - _16x16_SEQUENCE_1_FLIP - _16x16_SEQUENCE_2 -_16x16_END - -static const gfx_layout sega_16x16_r01_f1_layout = -_16x16_START - _16x16_SEQUENCE_2 - _16x16_SEQUENCE_1 -_16x16_END - -static const gfx_layout sega_16x16_r10_f1_layout = -_16x16_START - _16x16_SEQUENCE_1 - _16x16_SEQUENCE_2_FLIP -_16x16_END - -static const gfx_layout sega_16x16_r11_f1_layout = -_16x16_START - _16x16_SEQUENCE_2_FLIP - _16x16_SEQUENCE_1_FLIP -_16x16_END - -/* 32x32 decodes */ -static const gfx_layout sega_32x32_r00_f0_layout = -_32x32_START - _32x32_SEQUENCE_1 - _32x32_SEQUENCE_2 -_32x32_END - -static const gfx_layout sega_32x32_r01_f0_layout = -_32x32_START - _32x32_SEQUENCE_2 - _32x32_SEQUENCE_1_FLIP -_32x32_END - -static const gfx_layout sega_32x32_r10_f0_layout = -_32x32_START - _32x32_SEQUENCE_1_FLIP - _32x32_SEQUENCE_2_FLIP -_32x32_END - -static const gfx_layout sega_32x32_r11_f0_layout = -_32x32_START - _32x32_SEQUENCE_2_FLIP - _32x32_SEQUENCE_1 -_32x32_END - -static const gfx_layout sega_32x32_r00_f1_layout = -_32x32_START - _32x32_SEQUENCE_1_FLIP - _32x32_SEQUENCE_2 -_32x32_END - -static const gfx_layout sega_32x32_r01_f1_layout = -_32x32_START - _32x32_SEQUENCE_2 - _32x32_SEQUENCE_1 -_32x32_END - -static const gfx_layout sega_32x32_r10_f1_layout = -_32x32_START - _32x32_SEQUENCE_1 - _32x32_SEQUENCE_2_FLIP -_32x32_END - -static const gfx_layout sega_32x32_r11_f1_layout = -_32x32_START - _32x32_SEQUENCE_2_FLIP - _32x32_SEQUENCE_1_FLIP -_32x32_END - -#define MCFG_SEGACD_GFXDECODE(_gfxtag) \ - sega_segacd_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); - - class sega_segacd_device : public device_t { public: sega_segacd_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); - // static configuration - static void static_set_gfxdecode_tag(device_t &device, const char *tag); - required_device m_scdcpu; lc89510_temp_device *lc89510_temp; diff --git a/src/mame/video/atarisy1.c b/src/mame/video/atarisy1.c index b9942f4c3c2..bced2a446b7 100644 --- a/src/mame/video/atarisy1.c +++ b/src/mame/video/atarisy1.c @@ -617,15 +617,15 @@ int atarisy1_state::get_bank(UINT8 prom1, UINT8 prom2, int bpp) switch (bpp) { case 4: - m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(machine(), objlayout_4bpp, srcdata, 0x40, 256))); + m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(m_palette, objlayout_4bpp, srcdata, 0x40, 256))); break; case 5: - m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(machine(), objlayout_5bpp, srcdata, 0x40, 256))); + m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(m_palette, objlayout_5bpp, srcdata, 0x40, 256))); break; case 6: - m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(machine(), objlayout_6bpp, srcdata, 0x40, 256))); + m_gfxdecode->set_gfx(gfx_index,auto_alloc(machine(), gfx_element(m_palette, objlayout_6bpp, srcdata, 0x40, 256))); break; default: diff --git a/src/mame/video/btime.c b/src/mame/video/btime.c index a67e2a6ceec..0dd44126f97 100644 --- a/src/mame/video/btime.c +++ b/src/mame/video/btime.c @@ -114,12 +114,11 @@ Start the video hardware emulation. ***************************************************************************/ -VIDEO_START_MEMBER(btime_state,btime) +VIDEO_START_MEMBER(btime_state,disco) { - if (m_gfxdecode->gfx(0)->srcdata() == NULL) - m_gfxdecode->gfx(0)->set_source(m_deco_charram); - if (m_gfxdecode->gfx(1)->srcdata() == NULL) - m_gfxdecode->gfx(1)->set_source(m_deco_charram); + // graphics are in RAM + m_gfxdecode->gfx(0)->set_source(m_deco_charram); + m_gfxdecode->gfx(1)->set_source(m_deco_charram); } @@ -131,8 +130,6 @@ VIDEO_START_MEMBER(btime_state,bnj) m_background_bitmap = auto_bitmap_ind16_alloc(machine(), 2 * width, height); save_item(NAME(*m_background_bitmap)); - - VIDEO_START_CALL_MEMBER(btime); } diff --git a/src/mame/video/bwing.c b/src/mame/video/bwing.c index b0becb3258c..ae16bbbe27b 100644 --- a/src/mame/video/bwing.c +++ b/src/mame/video/bwing.c @@ -222,17 +222,6 @@ void bwing_state::video_start() // m_bgfx = m_gfxdecode->gfx(3); m_gfxdecode->gfx(3)->set_source(m_srbase[1] + 0x1000); -/* - WTF?? - - dwptr = m_gfxdecode->gfx(2)->pen_usage(); - if (dwptr) - { - dwptr[0] = 0; - for(i = 1; i < BW_NTILES; i++) - dwptr[i) = -1; - } -*/ } //**************************************************************************** diff --git a/src/mame/video/hyprduel.c b/src/mame/video/hyprduel.c index aa00883b8ba..8bfe72e0ffa 100644 --- a/src/mame/video/hyprduel.c +++ b/src/mame/video/hyprduel.c @@ -547,7 +547,7 @@ void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, if ((gfxstart + width * height - 1) >= gfx_size) continue; - gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256); + gfx_element gfx(m_palette, base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256); gfx.prio_zoom_transpen(m_palette, bitmap,cliprect, 0, @@ -563,7 +563,7 @@ void hyprduel_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, if ((gfxstart + width / 2 * height - 1) >= gfx_size) continue; - gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(), 0, 16); + gfx_element gfx(m_palette, base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(), 0, 16); gfx.prio_zoom_transpen(m_palette, bitmap,cliprect, 0, diff --git a/src/mame/video/k001604.c b/src/mame/video/k001604.c index 702d17fd8c5..3c70bc74947 100644 --- a/src/mame/video/k001604.c +++ b/src/mame/video/k001604.c @@ -120,8 +120,8 @@ void k001604_device::device_start() m_layer_8x8[0]->set_transparent_pen(0); m_layer_8x8[1]->set_transparent_pen(0); - m_gfxdecode->set_gfx(m_gfx_index[0], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0))); - m_gfxdecode->set_gfx(m_gfx_index[1], auto_alloc_clear(machine(), gfx_element(machine(), k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index[0], auto_alloc_clear(machine(), gfx_element(m_palette, k001604_char_layout_layer_8x8, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index[1], auto_alloc_clear(machine(), gfx_element(m_palette, k001604_char_layout_layer_16x16, (UINT8*)&m_char_ram[0], m_palette->entries() / 16, 0))); save_pointer(NAME(m_reg), 0x400 / 4); save_pointer(NAME(m_char_ram), 0x200000 / 4); diff --git a/src/mame/video/k037122.c b/src/mame/video/k037122.c index c3c3688939e..398adcf1ef5 100644 --- a/src/mame/video/k037122.c +++ b/src/mame/video/k037122.c @@ -72,7 +72,7 @@ void k037122_device::device_start() m_layer[0]->set_transparent_pen(0); m_layer[1]->set_transparent_pen(0); - m_gfxdecode->set_gfx(m_gfx_index,auto_alloc_clear(machine(), gfx_element(machine(), k037122_char_layout, (UINT8*)m_char_ram, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index,auto_alloc_clear(machine(), gfx_element(m_palette, k037122_char_layout, (UINT8*)m_char_ram, m_palette->entries() / 16, 0))); save_pointer(NAME(m_reg), 0x400 / 4); save_pointer(NAME(m_char_ram), 0x200000 / 4); diff --git a/src/mame/video/k054156_k054157_k056832.h b/src/mame/video/k054156_k054157_k056832.h index 1729e4fa656..7d5c8a89268 100644 --- a/src/mame/video/k054156_k054157_k056832.h +++ b/src/mame/video/k054156_k054157_k056832.h @@ -106,6 +106,8 @@ public: int get_lookup(int bits); /* Asterix */ void set_tile_bank(int bank); /* Asterix */ + int get_gfx_num() const { return m_gfx_num; } + DECLARE_READ32_MEMBER( ram_long_r ); DECLARE_READ32_MEMBER( rom_long_r ); DECLARE_WRITE32_MEMBER( ram_long_w ); diff --git a/src/mame/video/konami_helper.c b/src/mame/video/konami_helper.c index a6ad901a3cb..9556d28732d 100644 --- a/src/mame/video/konami_helper.c +++ b/src/mame/video/konami_helper.c @@ -82,7 +82,7 @@ void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, p memcpy(&gl, layout, sizeof(gl)); gl.total = total; - gfxdecode->set_gfx(gfx_index, auto_alloc(machine, gfx_element(machine, gl, data, palette.entries() >> bpp, 0))); + gfxdecode->set_gfx(gfx_index, auto_alloc(machine, gfx_element(&palette, gl, data, palette.entries() >> bpp, 0))); } diff --git a/src/mame/video/m10.c b/src/mame/video/m10.c index d727a3c7cdf..691921c72cb 100644 --- a/src/mame/video/m10.c +++ b/src/mame/video/m10.c @@ -98,7 +98,7 @@ VIDEO_START_MEMBER(m10_state,m10) m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(0); - m_back_gfx = auto_alloc(machine(), gfx_element(machine(), backlayout, m_chargen, 8, 0)); + m_back_gfx = auto_alloc(machine(), gfx_element(m_palette, backlayout, m_chargen, 8, 0)); m_gfxdecode->set_gfx(1, m_back_gfx); return ; @@ -106,7 +106,7 @@ VIDEO_START_MEMBER(m10_state,m10) VIDEO_START_MEMBER(m10_state,m15) { - m_gfxdecode->set_gfx(0,auto_alloc(machine(), gfx_element(machine(), charlayout, m_chargen, 8, 0))); + m_gfxdecode->set_gfx(0,auto_alloc(machine(), gfx_element(m_palette, charlayout, m_chargen, 8, 0))); m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32); diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c index 0eada3e707d..7076895beb5 100644 --- a/src/mame/video/metro.c +++ b/src/mame/video/metro.c @@ -500,7 +500,7 @@ void metro_state::metro_draw_sprites( screen_device &screen, bitmap_ind16 &bitma if ((gfxstart + width * height - 1) >= gfx_size) continue; - gfx_element gfx(machine(), base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256); + gfx_element gfx(m_palette, base_gfx8 + gfxstart, width, height, width, m_palette->entries(), 0, 256); gfx.prio_zoom_transpen(m_palette, bitmap,cliprect, 0, @@ -516,7 +516,7 @@ void metro_state::metro_draw_sprites( screen_device &screen, bitmap_ind16 &bitma if ((gfxstart + width / 2 * height - 1) >= gfx_size) continue; - gfx_element gfx(machine(), base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(),0, 16); + gfx_element gfx(m_palette, base_gfx4 + 2 * gfxstart, width, height, width, m_palette->entries(),0, 16); gfx.prio_zoom_transpen(m_palette, bitmap,cliprect, 0, diff --git a/src/mame/video/mystwarr.c b/src/mame/video/mystwarr.c index 160dccd814f..01db491bd7e 100644 --- a/src/mame/video/mystwarr.c +++ b/src/mame/video/mystwarr.c @@ -19,12 +19,8 @@ static void mystwarr_decode_tiles(running_machine &machine) int len = machine.root_device().memregion("gfx1")->bytes(); UINT8 *pFinish = s+len-3; UINT8 *d, *decoded; - int gfxnum; - for (gfxnum = 0; gfxnum < MAX_GFX_ELEMENTS; gfxnum++) - if (state->m_gfxdecode->gfx(gfxnum) != NULL && state->m_gfxdecode->gfx(gfxnum)->srcdata() == s) - break; - assert(gfxnum != ARRAY_LENGTH(state->m_gfxdecode->gfx())); + int gfxnum = state->m_k056832->get_gfx_num(); decoded = auto_alloc_array(machine, UINT8, len); d = decoded; diff --git a/src/mame/video/namcona1.c b/src/mame/video/namcona1.c index 1bfb3c4397a..a7f1f1a8199 100644 --- a/src/mame/video/namcona1.c +++ b/src/mame/video/namcona1.c @@ -289,9 +289,9 @@ void namcona1_state::video_start() m_shaperam = auto_alloc_array_clear(machine(), UINT16, 0x2000*4/2 ); m_cgram = auto_alloc_array_clear(machine(), UINT16, 0x1000*0x40/2 ); - m_gfxdecode->set_gfx(0, auto_alloc( machine(), gfx_element( machine(), cg_layout_8bpp, (UINT8 *)m_cgram, m_palette->entries()/256, 0 ))); - m_gfxdecode->set_gfx(1, auto_alloc( machine(), gfx_element( machine(), cg_layout_4bpp, (UINT8 *)m_cgram, m_palette->entries()/16, 0 ))); - m_gfxdecode->set_gfx(2, auto_alloc( machine(), gfx_element( machine(), shape_layout, (UINT8 *)m_shaperam, m_palette->entries()/2, 0 ))); + m_gfxdecode->set_gfx(0, auto_alloc( machine(), gfx_element(m_palette, cg_layout_8bpp, (UINT8 *)m_cgram, m_palette->entries()/256, 0 ))); + m_gfxdecode->set_gfx(1, auto_alloc( machine(), gfx_element(m_palette, cg_layout_4bpp, (UINT8 *)m_cgram, m_palette->entries()/16, 0 ))); + m_gfxdecode->set_gfx(2, auto_alloc( machine(), gfx_element(m_palette, shape_layout, (UINT8 *)m_shaperam, m_palette->entries()/2, 0 ))); } /* namcona1_vh_start */ diff --git a/src/mame/video/plygonet.c b/src/mame/video/plygonet.c index 6610abc104c..8f649332004 100644 --- a/src/mame/video/plygonet.c +++ b/src/mame/video/plygonet.c @@ -99,7 +99,7 @@ void polygonet_state::video_start() assert(m_ttl_gfx_index != MAX_GFX_ELEMENTS); /* decode the ttl layer's gfx */ - m_gfxdecode->set_gfx(m_ttl_gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx1")->base(), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_ttl_gfx_index, auto_alloc(machine(), gfx_element(m_palette, charlayout, memregion("gfx1")->base(), m_palette->entries() / 16, 0))); /* create the tilemap */ m_ttl_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(polygonet_state::ttl_get_tile_info),this), tilemap_mapper_delegate(FUNC(polygonet_state::plygonet_scan),this), 8, 8, 64, 32); diff --git a/src/mame/video/rungun.c b/src/mame/video/rungun.c index 854e68e7833..384cdd42b98 100644 --- a/src/mame/video/rungun.c +++ b/src/mame/video/rungun.c @@ -86,7 +86,7 @@ void rungun_state::video_start() assert(gfx_index != MAX_GFX_ELEMENTS); // decode the ttl layer's gfx - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, memregion("gfx3")->base(), m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, charlayout, memregion("gfx3")->base(), m_palette->entries() / 16, 0))); m_ttl_gfx_index = gfx_index; // create the tilemap diff --git a/src/mame/video/segaic24.c b/src/mame/video/segaic24.c index c10059c7f93..aaeec7698d1 100644 --- a/src/mame/video/segaic24.c +++ b/src/mame/video/segaic24.c @@ -117,7 +117,7 @@ void segas24_tile::device_start() memset(char_ram, 0, 0x80000); memset(tile_ram, 0, 0x10000); - m_gfxdecode->set_gfx(char_gfx_index, auto_alloc(machine(), gfx_element(machine(), char_layout, (UINT8 *)char_ram, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(char_gfx_index, auto_alloc(machine(), gfx_element(m_palette, char_layout, (UINT8 *)char_ram, m_palette->entries() / 16, 0))); save_pointer(NAME(tile_ram), 0x10000/2); save_pointer(NAME(char_ram), 0x80000/2); diff --git a/src/mame/video/ssv.c b/src/mame/video/ssv.c index 66643bf96e9..450aebc1aef 100644 --- a/src/mame/video/ssv.c +++ b/src/mame/video/ssv.c @@ -141,11 +141,10 @@ Note: press Z to show some info on each sprite (debug builds only) #endif -static void ssv_drawgfx( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, +void ssv_state::ssv_drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0, int shadow ) { - ssv_state *state = gfx->machine().driver_data(); const UINT8 *addr, *source; UINT8 pen; UINT16 *dest; @@ -183,7 +182,7 @@ static void ssv_drawgfx( bitmap_ind16 &bitmap, const rectangle &cliprect, gfx if (shadow) { - SSV_DRAWGFX( { dest[sx] = ((dest[sx] & state->m_shadow_pen_mask) | (pen << state->m_shadow_pen_shift)) & 0x7fff; } ) + SSV_DRAWGFX( { dest[sx] = ((dest[sx] & m_shadow_pen_mask) | (pen << m_shadow_pen_shift)) & 0x7fff; } ) } else { diff --git a/src/mame/video/st0016.c b/src/mame/video/st0016.c index 747a65220f1..bd13dfadccc 100644 --- a/src/mame/video/st0016.c +++ b/src/mame/video/st0016.c @@ -449,7 +449,7 @@ VIDEO_START_MEMBER(st0016_state,st0016) assert(gfx_index != MAX_GFX_ELEMENTS); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), charlayout, (UINT8 *) st0016_charram, 0x40, 0))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, charlayout, (UINT8 *) st0016_charram, 0x40, 0))); st0016_ramgfx = gfx_index; spr_dx=0; diff --git a/src/mame/video/st0020.c b/src/mame/video/st0020.c index ae9adc13387..0db93635c87 100644 --- a/src/mame/video/st0020.c +++ b/src/mame/video/st0020.c @@ -78,7 +78,7 @@ void st0020_device::device_start() if (m_gfxdecode->gfx(m_gfx_index) == 0) break; - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), layout_16x8x8_2, (UINT8 *)m_st0020_gfxram, m_palette->entries() / 64, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, layout_16x8x8_2, (UINT8 *)m_st0020_gfxram, m_palette->entries() / 64, 0))); m_gfxdecode->gfx(m_gfx_index)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */ diff --git a/src/mame/video/taito_f3.c b/src/mame/video/taito_f3.c index dff60cefabe..81bfcf3c973 100644 --- a/src/mame/video/taito_f3.c +++ b/src/mame/video/taito_f3.c @@ -2539,7 +2539,7 @@ static void scanline_draw(running_machine &machine, bitmap_rgb32 &bitmap, const /******************************************************************************/ #define PSET_T \ - c = *source & state->m_sprite_pen_mask; \ + c = *source & m_sprite_pen_mask; \ if(c) \ { \ p=*pri; \ @@ -2554,7 +2554,7 @@ static void scanline_draw(running_machine &machine, bitmap_rgb32 &bitmap, const p=*pri; \ if(!p || p==0xff) \ { \ - *dest = pal[*source & state->m_sprite_pen_mask]; \ + *dest = pal[*source & m_sprite_pen_mask]; \ *pri = pri_dst; \ } @@ -2563,15 +2563,14 @@ static void scanline_draw(running_machine &machine, bitmap_rgb32 &bitmap, const dest++; \ pri++; -INLINE void f3_drawgfx( - bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx, +inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip, + gfx_element *gfx, int code, int color, int flipx,int flipy, int sx,int sy, UINT8 pri_dst) { - taito_f3_state *state = gfx->machine().driver_data(); rectangle myclip; pri_dst=1<m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors())); + const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors())); const UINT8 *code_base = gfx->get_data(code % gfx->elements()); { @@ -2646,12 +2645,12 @@ INLINE void f3_drawgfx( // if (dest_bmp.bpp == 32) { int y=ey-sy; - int x=(ex-sx-1)|(state->m_tile_opaque_sp[code % gfx->elements()]<<4); + int x=(ex-sx-1)|(m_tile_opaque_sp[code % gfx->elements()]<<4); const UINT8 *source0 = code_base + y_index * 16 + x_index_base; UINT32 *dest0 = &dest_bmp.pix32(sy, sx); - UINT8 *pri0 = &state->m_pri_alp_bitmap.pix8(sy, sx); + UINT8 *pri0 = &m_pri_alp_bitmap.pix8(sy, sx); int yadv = dest_bmp.rowpixels(); - int yadvp = state->m_pri_alp_bitmap.rowpixels(); + int yadvp = m_pri_alp_bitmap.rowpixels(); dy=dy*16; while(1) { @@ -2713,8 +2712,8 @@ INLINE void f3_drawgfx( #undef NEXT_P -INLINE void f3_drawgfxzoom( - bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx, +inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip, + gfx_element *gfx, int code, int color, int flipx,int flipy, @@ -2722,7 +2721,6 @@ INLINE void f3_drawgfxzoom( int scalex, int scaley, UINT8 pri_dst) { - taito_f3_state *state = gfx->machine().driver_data(); rectangle myclip; pri_dst=1<m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors())); + const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors())); const UINT8 *code_base = gfx->get_data(code % gfx->elements()); { @@ -2801,12 +2799,12 @@ INLINE void f3_drawgfxzoom( { const UINT8 *source = code_base + (y_index>>16) * 16; UINT32 *dest = &dest_bmp.pix32(y); - UINT8 *pri = &state->m_pri_alp_bitmap.pix8(y); + UINT8 *pri = &m_pri_alp_bitmap.pix8(y); int x, x_index = x_index_base; for( x=sx; x>16] & state->m_sprite_pen_mask; + int c = source[x_index>>16] & m_sprite_pen_mask; if(c) { UINT8 p=pri[x]; @@ -3102,31 +3100,30 @@ static void get_sprite_info(running_machine &machine, const UINT16 *spriteram16_ #undef CALC_ZOOM -static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect) +void taito_f3_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect) { - taito_f3_state *state = machine.driver_data(); const struct tempsprite *sprite_ptr; - gfx_element *sprite_gfx = state->m_gfxdecode->gfx(2); + gfx_element *sprite_gfx = m_gfxdecode->gfx(2); - sprite_ptr = state->m_sprite_end; - state->m_sprite_pri_usage=0; + sprite_ptr = m_sprite_end; + m_sprite_pri_usage=0; // if sprites use more than 4bpp, the bottom bits of the color code must be masked out. // This fixes (at least) stage 1 battle ships and attract mode explosions in Ray Force. - while (sprite_ptr != state->m_spritelist) + while (sprite_ptr != m_spritelist) { int pri; sprite_ptr--; pri=sprite_ptr->pri; - state->m_sprite_pri_usage|=1<zoomx==16 && sprite_ptr->zoomy==16) f3_drawgfx( bitmap,cliprect,sprite_gfx, sprite_ptr->code, - sprite_ptr->color & (~state->m_sprite_extra_planes), + sprite_ptr->color & (~m_sprite_extra_planes), sprite_ptr->flipx,sprite_ptr->flipy, sprite_ptr->x,sprite_ptr->y, pri); @@ -3134,7 +3131,7 @@ static void draw_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const r f3_drawgfxzoom( bitmap,cliprect,sprite_gfx, sprite_ptr->code, - sprite_ptr->color & (~state->m_sprite_extra_planes), + sprite_ptr->color & (~m_sprite_extra_planes), sprite_ptr->flipx,sprite_ptr->flipy, sprite_ptr->x,sprite_ptr->y, sprite_ptr->zoomx,sprite_ptr->zoomy, @@ -3189,7 +3186,7 @@ UINT32 taito_f3_state::screen_update_f3(screen_device &screen, bitmap_rgb32 &bit get_sprite_info(machine(), m_spriteram); /* Update sprite buffer */ - draw_sprites(machine(), bitmap,cliprect); + draw_sprites(bitmap,cliprect); /* Parse sprite, alpha & clipping parts of lineram */ get_spritealphaclip_info(this); diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c index f0b60b3599f..bdf2c1b309c 100644 --- a/src/mame/video/taitojc.c +++ b/src/mame/video/taitojc.c @@ -315,7 +315,7 @@ void taitojc_state::video_start() m_tile_ram = auto_alloc_array_clear(machine(), UINT32, 0x4000/4); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), taitojc_char_layout, (UINT8 *)m_char_ram, m_palette->entries() / 16, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, taitojc_char_layout, (UINT8 *)m_char_ram, m_palette->entries() / 16, 0))); m_texture = auto_alloc_array(machine(), UINT8, 0x400000); diff --git a/src/mame/video/tc0080vco.c b/src/mame/video/tc0080vco.c index 5c74cb41b17..27626993216 100644 --- a/src/mame/video/tc0080vco.c +++ b/src/mame/video/tc0080vco.c @@ -95,7 +95,8 @@ tc0080vco_device::tc0080vco_device(const machine_config &mconfig, const char *ta m_bg1_scrollx(0), m_bg1_scrolly(0), m_flipscreen(0), - m_gfxdecode(*this) + m_gfxdecode(*this), + m_palette(*this) { } @@ -109,6 +110,16 @@ void tc0080vco_device::static_set_gfxdecode_tag(device_t &device, const char *ta downcast(device).m_gfxdecode.set_tag(tag); } +//------------------------------------------------- +// static_set_palette_tag: Set the tag of the +// palette device +//------------------------------------------------- + +void tc0080vco_device::static_set_palette_tag(device_t &device, const char *tag) +{ + downcast(device).m_palette.set_tag(tag); +} + //------------------------------------------------- // device_config_complete - perform any // operations now that the configuration is @@ -190,7 +201,7 @@ void tc0080vco_device::device_start() m_scroll_ram = m_ram + 0x20800 / 2; /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(machine(), charlayout, (UINT8 *)m_char_ram, 64, 0))); + m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(m_palette, charlayout, (UINT8 *)m_char_ram, 64, 0))); save_pointer(NAME(m_ram), TC0080VCO_RAM_SIZE / 2); machine().save().register_postload(save_prepost_delegate(FUNC(tc0080vco_device::postload), this)); diff --git a/src/mame/video/tc0080vco.h b/src/mame/video/tc0080vco.h index e0e03b77d5d..9dbac441101 100644 --- a/src/mame/video/tc0080vco.h +++ b/src/mame/video/tc0080vco.h @@ -21,6 +21,7 @@ public: // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); + static void static_set_palette_tag(device_t &device, const char *tag); DECLARE_READ16_MEMBER( word_r ); DECLARE_WRITE16_MEMBER( word_w ); @@ -69,6 +70,7 @@ public: INT32 m_flipscreen; required_device m_gfxdecode; + required_device m_palette; TILE_GET_INFO_MEMBER(get_bg0_tile_info); TILE_GET_INFO_MEMBER(get_bg1_tile_info); @@ -86,4 +88,7 @@ extern const device_type TC0080VCO; #define MCFG_TC0080VCO_GFXDECODE(_gfxtag) \ tc0080vco_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); +#define MCFG_TC0080VCO_PALETTE(_palette_tag) \ + tc0080vco_device::static_set_palette_tag(*device, "^" _palette_tag); + #endif diff --git a/src/mame/video/tc0100scn.c b/src/mame/video/tc0100scn.c index d6db084818d..4231a33968b 100644 --- a/src/mame/video/tc0100scn.c +++ b/src/mame/video/tc0100scn.c @@ -142,7 +142,8 @@ tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *ta m_bg1_colbank(0), m_tx_colbank(0), m_dblwidth(0), - m_gfxdecode(*this) + m_gfxdecode(*this), + m_palette(*this) { } @@ -156,6 +157,16 @@ void tc0100scn_device::static_set_gfxdecode_tag(device_t &device, const char *ta downcast(device).m_gfxdecode.set_tag(tag); } +//------------------------------------------------- +// static_set_palette_tag: Set the tag of the +// palette device +//------------------------------------------------- + +void tc0100scn_device::static_set_palette_tag(device_t &device, const char *tag) +{ + downcast(device).m_palette.set_tag(tag); +} + //------------------------------------------------- // device_config_complete - perform any // operations now that the configuration is @@ -272,7 +283,7 @@ void tc0100scn_device::device_start() /* we call this here, so that they can be modified at video_start*/ /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(machine(), tc0100scn_charlayout, (UINT8 *)m_char_ram, 64, 0))); + m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(m_palette, tc0100scn_charlayout, (UINT8 *)m_char_ram, 64, 0))); save_pointer(NAME(m_ram), TC0100SCN_RAM_SIZE / 2); save_item(NAME(m_ctrl)); diff --git a/src/mame/video/tc0100scn.h b/src/mame/video/tc0100scn.h index 7ee98d85cf4..c57453db6a6 100644 --- a/src/mame/video/tc0100scn.h +++ b/src/mame/video/tc0100scn.h @@ -23,6 +23,7 @@ public: // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); + static void static_set_palette_tag(device_t &device, const char *tag); #define TC0100SCN_SINGLE_VDU 1024 @@ -88,7 +89,9 @@ private: INT32 m_gfxbank, m_colbank; INT32 m_bg0_colbank, m_bg1_colbank, m_tx_colbank; int m_dblwidth; + required_device m_gfxdecode; + required_device m_palette; TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); @@ -113,4 +116,8 @@ extern const device_type TC0100SCN; #define MCFG_TC0100SCN_GFXDECODE(_gfxtag) \ tc0100scn_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); + +#define MCFG_TC0100SCN_PALETTE(_palette_tag) \ + tc0100scn_device::static_set_palette_tag(*device, "^" _palette_tag); + #endif diff --git a/src/mame/video/tc0480scp.c b/src/mame/video/tc0480scp.c index ac945d7f25d..1aabd0aaa2b 100644 --- a/src/mame/video/tc0480scp.c +++ b/src/mame/video/tc0480scp.c @@ -153,7 +153,8 @@ tc0480scp_device::tc0480scp_device(const machine_config &mconfig, const char *ta m_pri_reg(0), m_dblwidth(0), m_x_offs(0), - m_gfxdecode(*this) + m_gfxdecode(*this), + m_palette(*this) { } @@ -167,6 +168,15 @@ void tc0480scp_device::static_set_gfxdecode_tag(device_t &device, const char *ta downcast(device).m_gfxdecode.set_tag(tag); } +//------------------------------------------------- +// static_set_palette_tag: Set the tag of the +// palette device +//------------------------------------------------- + +void tc0480scp_device::static_set_palette_tag(device_t &device, const char *tag) +{ + downcast(device).m_palette.set_tag(tag); +} //------------------------------------------------- // device_config_complete - perform any @@ -282,7 +292,7 @@ void tc0480scp_device::device_start() set_layer_ptrs(); /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(machine(), tc0480scp_charlayout, (UINT8 *)m_char_ram, 64, 0))); + m_gfxdecode->set_gfx(m_txnum, auto_alloc_clear(machine(), gfx_element(m_palette, tc0480scp_charlayout, (UINT8 *)m_char_ram, 64, 0))); save_pointer(NAME(m_ram), TC0480SCP_RAM_SIZE / 2); save_item(NAME(m_ctrl)); diff --git a/src/mame/video/tc0480scp.h b/src/mame/video/tc0480scp.h index 6c287335829..e95a3cc68ee 100644 --- a/src/mame/video/tc0480scp.h +++ b/src/mame/video/tc0480scp.h @@ -24,6 +24,7 @@ public: // static configuration static void static_set_gfxdecode_tag(device_t &device, const char *tag); + static void static_set_palette_tag(device_t &device, const char *tag); /* When writing a driver, pass zero for the text and flip offsets initially: then tweak them once you have the 4 bg layer positions correct. Col_base @@ -78,7 +79,9 @@ private: tilemap_t *m_tilemap[5][2]; INT32 m_dblwidth; int m_x_offs; + required_device m_gfxdecode; + required_device m_palette; void common_get_tc0480bg_tile_info( tile_data &tileinfo, int tile_index, UINT16 *ram, int gfxnum ); void common_get_tc0480tx_tile_info( tile_data &tileinfo, int tile_index, UINT16 *ram, int gfxnum ); @@ -104,4 +107,7 @@ extern const device_type TC0480SCP; #define MCFG_TC0480SCP_GFXDECODE(_gfxtag) \ tc0480scp_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); +#define MCFG_TC0480SCP_PALETTE(_palette_tag) \ + tc0480scp_device::static_set_palette_tag(*device, "^" _palette_tag); + #endif diff --git a/src/mame/video/tceptor.c b/src/mame/video/tceptor.c index 41a5977f6f5..eadc92a29a9 100644 --- a/src/mame/video/tceptor.c +++ b/src/mame/video/tceptor.c @@ -253,13 +253,13 @@ void tceptor_state::decode_bg(const char * region) auto_free(machine(), buffer); /* decode the graphics */ - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), bg_layout, memregion(region)->base(), 64, 0x0a00))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, bg_layout, memregion(region)->base(), 64, 0x0a00))); } void tceptor_state::decode_sprite(int gfx_index, const gfx_layout *layout, const void *data) { /* decode the graphics */ - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), *layout, (const UINT8 *)data, 64, 1024))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, *layout, (const UINT8 *)data, 64, 1024))); } // fix sprite order diff --git a/src/mame/video/wecleman.c b/src/mame/video/wecleman.c index a26dae8ca1e..9fe99f1994b 100644 --- a/src/mame/video/wecleman.c +++ b/src/mame/video/wecleman.c @@ -651,7 +651,7 @@ static void wecleman_draw_road(running_machine &machine, bitmap_rgb32 &bitmap, c ------------------------------------------------------------------------*/ // blends two 8x8x16bpp direct RGB tilemaps -static void draw_cloud(bitmap_rgb32 &bitmap, +void wecleman_state::draw_cloud(bitmap_rgb32 &bitmap, gfx_element *gfx, UINT16 *tm_base, int x0, int y0, // target coordinate @@ -660,7 +660,6 @@ static void draw_cloud(bitmap_rgb32 &bitmap, int tmw_l2, int tmh_l2, // tilemap width and height in log(2) int alpha, int pal_offset ) // alpha(0-3f), # of color codes to shift { - wecleman_state *state = gfx->machine().driver_data(); const UINT8 *src_ptr; UINT16 *tmap_ptr; UINT32 *dst_base, *dst_ptr; @@ -689,7 +688,7 @@ static void draw_cloud(bitmap_rgb32 &bitmap, dst_base = &bitmap.pix32(y0+dy, x0+dx); - pal_base = state->m_palette->pens() + pal_offset * gfx->granularity(); + pal_base = m_palette->pens() + pal_offset * gfx->granularity(); alpha <<= 6; @@ -733,9 +732,9 @@ static void draw_cloud(bitmap_rgb32 &bitmap, dg = (dstrgb >> 11) & 0x1f; db = (dstrgb >> 19) & 0x1f; - dr = (state->m_t32x32pm[dr - sr + alpha] >> 5) + dr; - dg = (state->m_t32x32pm[dg - sg + alpha] >> 5) + dg; - db = (state->m_t32x32pm[db - sb + alpha] >> 5) + db; + dr = (m_t32x32pm[dr - sr + alpha] >> 5) + dr; + dg = (m_t32x32pm[dg - sg + alpha] >> 5) + dg; + db = (m_t32x32pm[db - sb + alpha] >> 5) + db; dst_ptr[tx] = rgb_t(pal5bit(db), pal5bit(dg), pal5bit(dr)); } @@ -1070,8 +1069,7 @@ UINT32 wecleman_state::screen_update_wecleman(screen_device &screen, bitmap_rgb3 ((pen_t *)mrct)[0] = ((pen_t *)mrct)[0x40] = ((pen_t *)mrct)[0x200] = ((pen_t *)mrct)[0x205]; if (video_on) - draw_cloud( - bitmap, + draw_cloud(bitmap, m_gfxdecode->gfx(0), m_pageram+0x1800, BMP_PAD, BMP_PAD, diff --git a/src/mess/drivers/casloopy.c b/src/mess/drivers/casloopy.c index 56aab0c00e0..426a8493892 100644 --- a/src/mess/drivers/casloopy.c +++ b/src/mess/drivers/casloopy.c @@ -228,8 +228,8 @@ void casloopy_state::video_start() for(int i=0;i<0x10000;i++) m_vram[i] = i & 0xff; - m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(machine(), casloopy_4bpp_layout, m_vram, 0x10, 0))); - m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(machine(), casloopy_8bpp_layout, m_vram, 1, 0))); + m_gfxdecode->set_gfx(m_gfx_index, auto_alloc(machine(), gfx_element(m_palette, casloopy_4bpp_layout, m_vram, 0x10, 0))); + m_gfxdecode->set_gfx(m_gfx_index+1, auto_alloc(machine(), gfx_element(m_palette, casloopy_8bpp_layout, m_vram, 1, 0))); } UINT32 casloopy_state::screen_update_casloopy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mess/drivers/megadriv.c b/src/mess/drivers/megadriv.c index 4de206b98f6..946cd186608 100644 --- a/src/mess/drivers/megadriv.c +++ b/src/mess/drivers/megadriv.c @@ -580,9 +580,6 @@ static MACHINE_CONFIG_START( genesis_scd, md_cons_state ) MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0) - MCFG_SEGACD_GFXDECODE("gfxdecode") - - MCFG_GFXDECODE_ADD("gfxdecode", empty) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) @@ -596,9 +593,6 @@ static MACHINE_CONFIG_START( md_scd, md_cons_state ) MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_EUROPE, 0) - MCFG_SEGACD_GFXDECODE("gfxdecode") - - MCFG_GFXDECODE_ADD("gfxdecode", empty) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) @@ -612,9 +606,6 @@ static MACHINE_CONFIG_START( mdj_scd, md_cons_state ) MCFG_MACHINE_RESET_OVERRIDE( md_cons_state, ms_megadriv ) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_JAPAN, 0) - MCFG_SEGACD_GFXDECODE("gfxdecode") - - MCFG_GFXDECODE_ADD("gfxdecode", empty) MCFG_CDROM_ADD( "cdrom",scd_cdrom ) @@ -625,9 +616,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( genesis_32x_scd, genesis_32x ) MCFG_DEVICE_ADD("segacd", SEGA_SEGACD_US, 0) - MCFG_SEGACD_GFXDECODE("gfxdecode") - - MCFG_GFXDECODE_ADD("gfxdecode", empty) + //MCFG_QUANTUM_PERFECT_CPU("32x_master_sh2") MACHINE_CONFIG_END diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c index 6801a91c3df..b27d96a6b30 100644 --- a/src/mess/drivers/mz2500.c +++ b/src/mess/drivers/mz2500.c @@ -1782,8 +1782,8 @@ void mz2500_state::machine_start() save_pointer(NAME(m_emm_ram), 0x100000); /* TODO: gfx[4] crashes as per now */ - m_gfxdecode->set_gfx(3, auto_alloc(machine(), gfx_element(machine(), mz2500_pcg_layout_1bpp, (UINT8 *)m_pcg_ram, 0x10, 0))); - m_gfxdecode->set_gfx(4, auto_alloc(machine(), gfx_element(machine(), mz2500_pcg_layout_3bpp, (UINT8 *)m_pcg_ram, 4, 0))); + m_gfxdecode->set_gfx(3, auto_alloc(machine(), gfx_element(m_palette, mz2500_pcg_layout_1bpp, (UINT8 *)m_pcg_ram, 0x10, 0))); + m_gfxdecode->set_gfx(4, auto_alloc(machine(), gfx_element(m_palette, mz2500_pcg_layout_3bpp, (UINT8 *)m_pcg_ram, 4, 0))); } void mz2500_state::machine_reset() diff --git a/src/mess/drivers/smc777.c b/src/mess/drivers/smc777.c index a9b4990a847..085139e4c6b 100644 --- a/src/mess/drivers/smc777.c +++ b/src/mess/drivers/smc777.c @@ -988,7 +988,7 @@ void smc777_state::machine_start() save_pointer(NAME(m_gvram), 0x8000); save_pointer(NAME(m_pcg), 0x800); - m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(machine(), smc777_charlayout, (UINT8 *)m_pcg, 8, 0))); + m_gfxdecode->set_gfx(0, auto_alloc(machine(), gfx_element(m_palette, smc777_charlayout, (UINT8 *)m_pcg, 8, 0))); } void smc777_state::machine_reset() diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c index 95e6d4858dd..f02def5cedd 100644 --- a/src/mess/drivers/x1.c +++ b/src/mess/drivers/x1.c @@ -2526,7 +2526,7 @@ MACHINE_START_MEMBER(x1_state,x1) save_pointer(NAME(m_emm_ram), 0x1000000); save_pointer(NAME(m_pcg_ram), 0x1800); - m_gfxdecode->set_gfx(3, auto_alloc(machine(), gfx_element(machine(), x1_pcg_8x8, (UINT8 *)m_pcg_ram, 1, 0))); + m_gfxdecode->set_gfx(3, auto_alloc(machine(), gfx_element(m_palette, x1_pcg_8x8, (UINT8 *)m_pcg_ram, 1, 0))); } PALETTE_INIT_MEMBER(x1_state,x1) diff --git a/src/mess/video/x68k.c b/src/mess/video/x68k.c index f34529ee16f..d7850fe262b 100644 --- a/src/mess/video/x68k.c +++ b/src/mess/video/x68k.c @@ -1094,11 +1094,11 @@ VIDEO_START_MEMBER(x68k_state,x68000) break; /* create the char set (gfx will then be updated dynamically from RAM) */ - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), x68k_pcg_8, memregion("user1")->base(), 32, 0))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, x68k_pcg_8, memregion("user1")->base(), 32, 0))); gfx_index++; - m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(machine(), x68k_pcg_16, memregion("user1")->base(), 32, 0))); + m_gfxdecode->set_gfx(gfx_index, auto_alloc(machine(), gfx_element(m_palette, x68k_pcg_16, memregion("user1")->base(), 32, 0))); m_gfxdecode->gfx(gfx_index)->set_colors(32); /* Tilemaps */