mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
continued refactoring some video system sprite rendering, bringing code closer together for the 2nd sprite types by Haze (no whatsnew)
This commit is contained in:
parent
001d14eba9
commit
ca80e04681
@ -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,7 +1620,9 @@ 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)
|
||||
|
||||
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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<UINT16 *>(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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -25,13 +25,25 @@ const device_type VSYSTEM_SPR2 = &device_creator<vsystem_spr2_device>;
|
||||
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<vsystem_spr2_device &>(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<class _BitmapClass>
|
||||
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<class _BitmapClass>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,18 @@
|
||||
// Video System Sprites
|
||||
|
||||
typedef device_delegate<UINT32 (UINT32)> 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<class _BitmapClass>
|
||||
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<class _BitmapClass>
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user