From ca80e0468172b43a3aa3b06df8ace09f5381f91c Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 7 Nov 2012 08:37:43 +0000 Subject: [PATCH] continued refactoring some video system sprite rendering, bringing code closer together for the 2nd sprite types by Haze (no whatsnew) --- src/mame/drivers/aerofgt.c | 14 +- src/mame/drivers/f1gp.c | 2 + src/mame/includes/aerofgt.h | 3 + src/mame/includes/f1gp.h | 2 + src/mame/video/aerofgt.c | 55 ++++---- src/mame/video/f1gp.c | 21 ++- src/mame/video/vsystem_spr2.c | 251 +++++++++++++++++----------------- src/mame/video/vsystem_spr2.h | 25 ++-- 8 files changed, 204 insertions(+), 169 deletions(-) diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c index 7608d6c347a..d69b90b834a 100644 --- a/src/mame/drivers/aerofgt.c +++ b/src/mame/drivers/aerofgt.c @@ -1347,6 +1347,8 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state ) MCFG_PALETTE_LENGTH(2048) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes) @@ -1447,6 +1449,7 @@ static MACHINE_CONFIG_START( pspikesc, aerofgt_state ) MCFG_PALETTE_LENGTH(2048) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VIDEO_START_OVERRIDE(aerofgt_state,pspikes) @@ -1484,7 +1487,10 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state ) MCFG_PALETTE_LENGTH(1024) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz) @@ -1527,6 +1533,7 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state ) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) MCFG_VIDEO_START_OVERRIDE(aerofgt_state,spinlbrk) @@ -1568,7 +1575,9 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state ) MCFG_PALETTE_LENGTH(1024) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc) @@ -1611,8 +1620,10 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state ) MCFG_PALETTE_LENGTH(1024) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0) - + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) + MCFG_VIDEO_START_OVERRIDE(aerofgt_state,turbofrc) /* sound hardware */ @@ -1760,6 +1771,7 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state ) MCFG_PALETTE_LENGTH(2048) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback ) MCFG_VIDEO_START_OVERRIDE(aerofgt_state,wbbc97) diff --git a/src/mame/drivers/f1gp.c b/src/mame/drivers/f1gp.c index ef18acf30d9..4382463b18e 100644 --- a/src/mame/drivers/f1gp.c +++ b/src/mame/drivers/f1gp.c @@ -477,7 +477,9 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state ) MCFG_PALETTE_LENGTH(2048) MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_old_tile_callback ) MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0) + MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( f1gp_state, f1gp_ol2_tile_callback ) MCFG_VIDEO_START_OVERRIDE(f1gp_state,f1gp) diff --git a/src/mame/includes/aerofgt.h b/src/mame/includes/aerofgt.h index 7525d744c9b..31cfc31ba6e 100644 --- a/src/mame/includes/aerofgt.h +++ b/src/mame/includes/aerofgt.h @@ -52,6 +52,9 @@ public: int m_spikes91_lookup; UINT32 aerofgt_tile_callback( UINT32 code ); + UINT32 aerofgt_old_tile_callback( UINT32 code ); + UINT32 aerofgt_ol2_tile_callback( UINT32 code ); + /* misc */ int m_pending_command; diff --git a/src/mame/includes/f1gp.h b/src/mame/includes/f1gp.h index 2728295534b..eb2a69138c6 100644 --- a/src/mame/includes/f1gp.h +++ b/src/mame/includes/f1gp.h @@ -54,6 +54,8 @@ public: int m_gfxctrl; int m_scroll[2]; UINT32 f1gp2_tile_callback( UINT32 code ); + UINT32 f1gp_old_tile_callback( UINT32 code ); + UINT32 f1gp_ol2_tile_callback( UINT32 code ); /* misc */ int m_pending_command; diff --git a/src/mame/video/aerofgt.c b/src/mame/video/aerofgt.c index 0127dc94ebc..ae53160ee84 100644 --- a/src/mame/video/aerofgt.c +++ b/src/mame/video/aerofgt.c @@ -119,8 +119,6 @@ VIDEO_START_MEMBER(aerofgt_state,karatblz) VIDEO_START_MEMBER(aerofgt_state,spinlbrk) { - int i; - m_bg1_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(aerofgt_state::spinlbrk_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_bg2_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); @@ -134,14 +132,6 @@ VIDEO_START_MEMBER(aerofgt_state,spinlbrk) /* enemy sprites use ROM instead of RAM */ m_spriteram2.set_target(reinterpret_cast(memregion("gfx5")->base()), 0x20000); - /* front sprites are direct maps */ - m_spriteram1.set_target(m_spriteram2 + m_spriteram2.bytes() / 2, 0x4000); - - for (i = 0; i < m_spriteram1.bytes() / 2; i++) - { - m_spriteram1[i] = i; - } - aerofgt_register_state_globals(machine()); } @@ -159,7 +149,7 @@ VIDEO_START_MEMBER(aerofgt_state,turbofrc) } - +/* new hw type */ UINT32 aerofgt_state::aerofgt_tile_callback( UINT32 code ) { return m_spriteram1[code&0x7fff]; @@ -168,6 +158,17 @@ UINT32 aerofgt_state::aerofgt_tile_callback( UINT32 code ) +/* old hw type */ +UINT32 aerofgt_state::aerofgt_old_tile_callback( UINT32 code ) +{ + return m_spriteram1[code % (m_spriteram1.bytes()/2)]; +} + +UINT32 aerofgt_state::aerofgt_ol2_tile_callback( UINT32 code ) +{ + return m_spriteram2[code % (m_spriteram2.bytes()/2)]; +} + /*************************************************************************** @@ -303,8 +304,8 @@ UINT32 aerofgt_state::screen_update_pspikes(screen_device &screen, bitmap_ind16 machine().priority_bitmap.fill(0, cliprect); m_bg1_tilemap->draw(bitmap, cliprect, 0, 0); - m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); - m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); return 0; } @@ -322,11 +323,11 @@ UINT32 aerofgt_state::screen_update_karatblz(screen_device &screen, bitmap_ind16 m_bg2_tilemap->draw(bitmap, cliprect, 0, 0); /* we use the priority buffer so sprites are drawn front to back */ - m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); - m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); - m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); - m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); return 0; } @@ -348,11 +349,11 @@ UINT32 aerofgt_state::screen_update_spinlbrk(screen_device &screen, bitmap_ind16 m_bg2_tilemap->draw(bitmap, cliprect, 0, 1); /* we use the priority buffer so sprites are drawn front to back */ - m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); - m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old->spinlbrk_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); - m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); - m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old2->spinlbrk_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); return 0; } @@ -375,11 +376,11 @@ UINT32 aerofgt_state::screen_update_turbofrc(screen_device &screen, bitmap_ind16 m_bg2_tilemap->draw(bitmap, cliprect, 0, 1); /* we use the priority buffer so sprites are drawn front to back */ - m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); //enemy - m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spriteram2,m_spriteram2.bytes(),m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); //enemy + m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, -1); //enemy + m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_sprite_gfx+1,m_spritepalettebank, machine(), bitmap, cliprect, 0); //enemy - m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); //ship - m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); //intro + m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, -1); //ship + m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_sprite_gfx+0,m_spritepalettebank, machine(), bitmap, cliprect, 0); //intro return 0; } @@ -846,7 +847,7 @@ UINT32 aerofgt_state::screen_update_wbbc97(screen_device &screen, bitmap_rgb32 & m_bg1_tilemap->draw(bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); } - m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); - m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spriteram1,m_spriteram1.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); + m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, -1); + m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_sprite_gfx,m_spritepalettebank, machine(), bitmap, cliprect, 0); return 0; } diff --git a/src/mame/video/f1gp.c b/src/mame/video/f1gp.c index bbbcedd05f8..091c17ea967 100644 --- a/src/mame/video/f1gp.c +++ b/src/mame/video/f1gp.c @@ -72,11 +72,24 @@ VIDEO_START_MEMBER(f1gp_state,f1gpb) // save_pointer(NAME(m_zoomdata), memregion("gfx4")->bytes()); } +/* new hw type */ UINT32 f1gp_state::f1gp2_tile_callback( UINT32 code ) { return m_sprcgram[code&0x3fff]; } +/* old hw type */ +UINT32 f1gp_state::f1gp_old_tile_callback( UINT32 code ) +{ + return m_spr1cgram[code % (m_spr1cgram.bytes()/2)]; +} + +UINT32 f1gp_state::f1gp_ol2_tile_callback( UINT32 code ) +{ + return m_spr2cgram[code % (m_spr2cgram.bytes()/2)]; +} + + VIDEO_START_MEMBER(f1gp_state,f1gp2) { @@ -186,13 +199,13 @@ UINT32 f1gp_state::screen_update_f1gp(screen_device &screen, bitmap_ind16 &bitma /* quick kludge for "continue" screen priority */ if (m_gfxctrl == 0x00) { - m_spr_old->f1gp_draw_sprites(1, m_spr1vram, m_spr1cgram ,m_spr1cgram.bytes(), machine(), bitmap, cliprect, 0x02); - m_spr_old2->f1gp_draw_sprites(2, m_spr2vram, m_spr2cgram, m_spr2cgram.bytes(), machine(), bitmap, cliprect, 0x02); + m_spr_old->f1gp_draw_sprites(1, m_spr1vram, machine(), bitmap, cliprect, 0x02); + m_spr_old2->f1gp_draw_sprites(2, m_spr2vram, machine(), bitmap, cliprect, 0x02); } else { - m_spr_old->f1gp_draw_sprites(1, m_spr1vram, m_spr1cgram, m_spr1cgram.bytes(), machine(), bitmap, cliprect, 0x00); - m_spr_old2->f1gp_draw_sprites(2, m_spr2vram, m_spr2cgram, m_spr2cgram.bytes(), machine(), bitmap, cliprect, 0x02); + m_spr_old->f1gp_draw_sprites(1, m_spr1vram, machine(), bitmap, cliprect, 0x00); + m_spr_old2->f1gp_draw_sprites(2, m_spr2vram, machine(), bitmap, cliprect, 0x02); } return 0; } diff --git a/src/mame/video/vsystem_spr2.c b/src/mame/video/vsystem_spr2.c index 9061cdb09ab..d907f581573 100644 --- a/src/mame/video/vsystem_spr2.c +++ b/src/mame/video/vsystem_spr2.c @@ -25,13 +25,25 @@ const device_type VSYSTEM_SPR2 = &device_creator; vsystem_spr2_device::vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, VSYSTEM_SPR2, "vsystem_spr2_device", tag, owner, clock) { + m_newtilecb = vsystem_tile2_indirection_delegate(FUNC(vsystem_spr2_device::tile_callback_noindirect), this); } +void vsystem_spr2_device::set_tile_indirect_cb(device_t &device,vsystem_tile2_indirection_delegate newtilecb) +{ + vsystem_spr2_device &dev = downcast(device); + dev.m_newtilecb = newtilecb; +} + +UINT32 vsystem_spr2_device::tile_callback_noindirect(UINT32 tile) +{ + return tile; +} void vsystem_spr2_device::device_start() { - + // bind our handler + m_newtilecb.bind_relative_to(*owner()); } void vsystem_spr2_device::device_reset() @@ -66,10 +78,16 @@ int vsystem_spr2_device::get_sprite_attributes(UINT16* ram) return 1; } - +void vsystem_spr2_device::handle_xsize_map_inc(void) +{ + if (curr_sprite.xsize == 2) curr_sprite.map += 1; + if (curr_sprite.xsize == 4) curr_sprite.map += 3; + if (curr_sprite.xsize == 5) curr_sprite.map += 2; + if (curr_sprite.xsize == 6) curr_sprite.map += 1; +} template -void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) { int attr_start, base, first; base = 0;//chip * 0x0200; @@ -121,7 +139,7 @@ void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int else sx = ((curr_sprite.ox + curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; - curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; + curr = m_newtilecb(curr_sprite.map++); pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx], curr, @@ -130,26 +148,21 @@ void vsystem_spr2_device::turbofrc_draw_sprites_common( UINT16* spriteram3, int sx,sy, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,curr_sprite.pri ? 0 : 2,15); - curr_sprite.map++; } - - if (curr_sprite.xsize == 2) curr_sprite.map += 1; - if (curr_sprite.xsize == 4) curr_sprite.map += 3; - if (curr_sprite.xsize == 5) curr_sprite.map += 2; - if (curr_sprite.xsize == 6) curr_sprite.map += 1; + handle_xsize_map_inc(); } } } -void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) -{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } +void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } -void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) -{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } +void vsystem_spr2_device::turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +{ turbofrc_draw_sprites_common( spriteram3, spriteram3_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } template -void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ) { int attr_start, base, first; base = 0;//chip * 0x0200; @@ -199,7 +212,7 @@ void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int else sx = ((curr_sprite.ox + curr_sprite.zoomx * x / 2 + 16) & 0x1ff) - 16; - curr = spriteram1[curr_sprite.map % (spriteram1_bytes/2)]; + curr = m_newtilecb(curr_sprite.map++); pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[sprite_gfx], curr, @@ -208,26 +221,21 @@ void vsystem_spr2_device::spinlbrk_draw_sprites_common( UINT16* spriteram3, int sx,sy, curr_sprite.zoomx << 11, curr_sprite.zoomy << 11, machine.priority_bitmap,curr_sprite.pri ? 2 : 0,15); - curr_sprite.map++; } - - if (curr_sprite.xsize == 2) curr_sprite.map += 1; - if (curr_sprite.xsize == 4) curr_sprite.map += 3; - if (curr_sprite.xsize == 5) curr_sprite.map += 2; - if (curr_sprite.xsize == 6) curr_sprite.map += 1; + handle_xsize_map_inc(); } } } -void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) -{ spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } +void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +{ spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } + +void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) +{ spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } -void vsystem_spr2_device::spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ) -{ spinlbrk_draw_sprites_common( spriteram3, spriteram3_bytes, spriteram1, spriteram1_bytes, sprite_gfx, spritepalettebank, machine, bitmap, cliprect, chip_disabled_pri ); } -// like above but no secondary indirection? void vsystem_spr2_device::welltris_draw_sprites( UINT16* spriteram, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect) { static const UINT8 zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 }; @@ -241,11 +249,8 @@ void vsystem_spr2_device::welltris_draw_sprites( UINT16* spriteram, int spritepa continue; curr_sprite.map&=0x1fff; - curr_sprite.ysize++; - curr_sprite.xsize++; curr_sprite.color += (0x10 * spritepalettebank); - int zoomed = (curr_sprite.zoomx | curr_sprite.zoomy); int xt, yt; @@ -259,77 +264,61 @@ void vsystem_spr2_device::welltris_draw_sprites( UINT16* spriteram, int spritepa /* normal case */ if (!curr_sprite.flipx && !curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) { - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) { - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 0, 0, - curr_sprite.ox + xt * 16, curr_sprite.oy + yt * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 0, 0, - curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr, curr_sprite.color, 0, 0, + curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); } - if (curr_sprite.xsize == 3) curr_sprite.map += 1; - if (curr_sprite.xsize == 5) curr_sprite.map += 3; - if (curr_sprite.xsize == 6) curr_sprite.map += 2; - if (curr_sprite.xsize == 7) curr_sprite.map += 1; + handle_xsize_map_inc(); } } /* curr_sprite.flipxped case */ else if (curr_sprite.flipx && !curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) { - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) { - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 1, 0, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * 16, curr_sprite.oy + yt * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 1, 0, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr, curr_sprite.color, 1, 0, + curr_sprite.ox + (curr_sprite.xsize - xt) * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); } - if (curr_sprite.xsize == 3) curr_sprite.map += 1; - if (curr_sprite.xsize == 5) curr_sprite.map += 3; - if (curr_sprite.xsize == 6) curr_sprite.map += 2; - if (curr_sprite.xsize == 7) curr_sprite.map += 1; + handle_xsize_map_inc(); } } /* curr_sprite.flipyped case */ else if (!curr_sprite.flipx && curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) { - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) { - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 0, 1, - curr_sprite.ox + xt * 16, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 0, 1, - curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr, curr_sprite.color, 0, 1, + curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - yt) * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); } - if (curr_sprite.xsize == 3) curr_sprite.map += 1; - if (curr_sprite.xsize == 5) curr_sprite.map += 3; - if (curr_sprite.xsize == 6) curr_sprite.map += 2; - if (curr_sprite.xsize == 7) curr_sprite.map += 1; + handle_xsize_map_inc(); } } /* x & curr_sprite.flipyped case */ else { - for (yt = 0; yt < curr_sprite.ysize; yt++) { - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) { - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 1, 1, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * 16, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr_sprite.map, curr_sprite.color, 1, 1, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, machine.gfx[1], curr, curr_sprite.color, 1, 1, + curr_sprite.ox + (curr_sprite.xsize - xt) * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - yt) * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); } - if (curr_sprite.xsize == 3) curr_sprite.map += 1; - if (curr_sprite.xsize == 5) curr_sprite.map += 3; - if (curr_sprite.xsize == 6) curr_sprite.map += 2; - if (curr_sprite.xsize == 7) curr_sprite.map += 1; + handle_xsize_map_inc(); } } } @@ -337,7 +326,7 @@ void vsystem_spr2_device::welltris_draw_sprites( UINT16* spriteram, int spritepa -void vsystem_spr2_device::f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16* sprcgram, int sprcgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ) +void vsystem_spr2_device::f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ) { int attr_start, first; UINT16 *spram = sprvram; @@ -372,7 +361,7 @@ void vsystem_spr2_device::f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16 if (curr_sprite.flipx) sx = ((curr_sprite.ox + curr_sprite.zoomx * (curr_sprite.xsize - x) + 16) & 0x1ff) - 16; else sx = ((curr_sprite.ox + curr_sprite.zoomx * x + 16) & 0x1ff) - 16; - curr = sprcgram[curr_sprite.map % (sprcgram_bytes / 2)]; + curr = m_newtilecb(curr_sprite.map++); pdrawgfxzoom_transpen(bitmap,cliprect,machine.gfx[gfxrgn], curr, @@ -383,13 +372,8 @@ void vsystem_spr2_device::f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16 machine.priority_bitmap, // pri ? 0 : 0x2); primask,15); - curr_sprite.map++; } - - if (curr_sprite.xsize == 2) curr_sprite.map += 1; - if (curr_sprite.xsize == 4) curr_sprite.map += 3; - if (curr_sprite.xsize == 5) curr_sprite.map += 2; - if (curr_sprite.xsize == 6) curr_sprite.map += 1; + handle_xsize_map_inc(); } } } @@ -414,8 +398,6 @@ void vsystem_spr2_device::draw_sprites_pipedrm( UINT8* spriteram, int spriteram_ if (!get_sprite_attributes((UINT16*)&spriteram[offs])) continue; - curr_sprite.ysize++; - curr_sprite.xsize++; curr_sprite.oy -= 6; curr_sprite.ox -= 13; @@ -424,7 +406,6 @@ void vsystem_spr2_device::draw_sprites_pipedrm( UINT8* spriteram, int spriteram_ int xt, yt; - int zoomed = (curr_sprite.zoomx | curr_sprite.zoomy); /* compute the zoom factor -- stolen from aerofgt.c */ curr_sprite.zoomx = 16 - zoomtable[curr_sprite.zoomx] / 8; @@ -448,57 +429,69 @@ void vsystem_spr2_device::draw_sprites_pipedrm( UINT8* spriteram, int spriteram_ /* normal case */ if (!curr_sprite.flipx && !curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 0, 0, - curr_sprite.ox + xt * 16, curr_sprite.oy + yt * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 0, 0, - curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) + { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr, curr_sprite.color, 0, 0, + curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + } + handle_xsize_map_inc(); + } } /* curr_sprite.flipxped case */ else if (curr_sprite.flipx && !curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 1, 0, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * 16, curr_sprite.oy + yt * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 1, 0, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) + { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr, curr_sprite.color, 1, 0, + curr_sprite.ox + (curr_sprite.xsize - xt) * curr_sprite.zoomx, curr_sprite.oy + yt * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + } + handle_xsize_map_inc(); + } } /* curr_sprite.flipyped case */ else if (!curr_sprite.flipx && curr_sprite.flipy) { - for (yt = 0; yt < curr_sprite.ysize; yt++) - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 0, 1, - curr_sprite.ox + xt * 16, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 0, 1, - curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) + { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr, curr_sprite.color, 0, 1, + curr_sprite.ox + xt * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - yt) * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + } + handle_xsize_map_inc(); + } } /* x & curr_sprite.flipyped case */ else { - for (yt = 0; yt < curr_sprite.ysize; yt++) - for (xt = 0; xt < curr_sprite.xsize; xt++, curr_sprite.map++) - if (!zoomed) - drawgfx_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 1, 1, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * 16, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * 16, 15); - else - drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr_sprite.map, curr_sprite.color, 1, 1, - curr_sprite.ox + (curr_sprite.xsize - 1 - xt) * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - 1 - yt) * curr_sprite.zoomy, - 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + for (yt = 0; yt <= curr_sprite.ysize; yt++) + { + for (xt = 0; xt <= curr_sprite.xsize; xt++) + { + int curr = m_newtilecb(curr_sprite.map++); + + drawgfxzoom_transpen(bitmap, cliprect, screen.machine().gfx[2], curr, curr_sprite.color, 1, 1, + curr_sprite.ox + (curr_sprite.xsize - xt) * curr_sprite.zoomx, curr_sprite.oy + (curr_sprite.ysize - yt) * curr_sprite.zoomy, + 0x1000 * curr_sprite.zoomx, 0x1000 * curr_sprite.zoomy, 15); + } + handle_xsize_map_inc(); + } } } } diff --git a/src/mame/video/vsystem_spr2.h b/src/mame/video/vsystem_spr2.h index f79aee2e186..064768bc0b5 100644 --- a/src/mame/video/vsystem_spr2.h +++ b/src/mame/video/vsystem_spr2.h @@ -1,11 +1,18 @@ // Video System Sprites +typedef device_delegate vsystem_tile2_indirection_delegate; + +#define MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( _class, _method) \ + vsystem_spr2_device::set_tile_indirect_cb(*device, vsystem_tile2_indirection_delegate(&_class::_method, #_class "::" #_method, NULL, (_class *)0)); \ + class vsystem_spr2_device : public device_t { public: vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + static void set_tile_indirect_cb(device_t &device,vsystem_tile2_indirection_delegate newtilecb); + struct vsystem_sprite_attributes { int ox; @@ -22,23 +29,25 @@ public: } curr_sprite; int get_sprite_attributes(UINT16* ram); - + void handle_xsize_map_inc(void); + vsystem_tile2_indirection_delegate m_newtilecb; + UINT32 tile_callback_noindirect(UINT32 tile); template - void turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void turbofrc_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); - void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); - void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void turbofrc_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); template - void spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void spinlbrk_draw_sprites_common( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, int chip_disabled_pri ); - void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); - void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, UINT16* spriteram1, int spriteram1_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); + void spinlbrk_draw_sprites( UINT16* spriteram3, int spriteram3_bytes, int sprite_gfx, int spritepalettebank, running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int chip_disabled_pri ); void welltris_draw_sprites( UINT16* spriteram, int spritepalettebank, running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect); - void f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, UINT16* sprcgram, int sprcgram_bytes, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ); + void f1gp_draw_sprites( int gfxrgn, UINT16* sprvram, running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int primask ); void draw_sprites_pipedrm( UINT8* spriteram, int spriteram_bytes, int flipscreen, screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int draw_priority ); protected: