mirror of
https://github.com/holub/mame
synced 2025-10-09 09:44:40 +03:00
sknsspr.cpp : Add bitmap clearing disable bit
suprnova.cpp : Make bitmap draw related to cliprect, Minor cleanup
This commit is contained in:
parent
ee679254c5
commit
9edafeb048
@ -194,8 +194,6 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
|
|||||||
|
|
||||||
bitmap.fill(0, cliprect);
|
bitmap.fill(0, cliprect);
|
||||||
|
|
||||||
m_sprite_bitmap.fill(0x0000, cliprect);
|
|
||||||
|
|
||||||
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram32.get(), 0x4000, m_spc_regs.get() );
|
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram32.get(), 0x4000, m_spc_regs.get() );
|
||||||
|
|
||||||
// popmessage("%02x %02x", m_grap2[0]->m_framebuffer_bright2, m_grap2[1]->m_framebuffer_bright2);
|
// popmessage("%02x %02x", m_grap2[0]->m_framebuffer_bright2, m_grap2[1]->m_framebuffer_bright2);
|
||||||
|
@ -308,7 +308,6 @@ uint32_t jchan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
|
|||||||
|
|
||||||
for (int chip = 0; chip < 2; chip++)
|
for (int chip = 0; chip < 2; chip++)
|
||||||
{
|
{
|
||||||
m_sprite_bitmap[chip]->fill(0, cliprect);
|
|
||||||
m_spritegen[chip]->skns_draw_sprites(*m_sprite_bitmap[chip], cliprect, m_sprite_ram32[chip].get(), 0x4000, m_sprite_regs32[chip].get() );
|
m_spritegen[chip]->skns_draw_sprites(*m_sprite_bitmap[chip], cliprect, m_sprite_ram32[chip].get(), 0x4000, m_sprite_regs32[chip].get() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,6 +288,8 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
|
|||||||
int sprite_flip;
|
int sprite_flip;
|
||||||
int sprite_x_scroll;
|
int sprite_x_scroll;
|
||||||
int sprite_y_scroll;
|
int sprite_y_scroll;
|
||||||
|
/* galpani3 uses sprite trail effect (disable clearing sprite bitmap) */
|
||||||
|
int clear_bitmap = (~sprite_regs[0x04/4] & 0x04); // RWR1
|
||||||
int disabled = sprite_regs[0x04/4] & 0x08; // RWR1
|
int disabled = sprite_regs[0x04/4] & 0x08; // RWR1
|
||||||
int xsize,ysize, size, xpos=0,ypos=0, pri=0, romoffset, colour=0, xflip,yflip, joint;
|
int xsize,ysize, size, xpos=0,ypos=0, pri=0, romoffset, colour=0, xflip,yflip, joint;
|
||||||
int sx,sy;
|
int sx,sy;
|
||||||
@ -295,6 +297,10 @@ void sknsspr_device::skns_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cl
|
|||||||
int grow;
|
int grow;
|
||||||
uint16_t zoomx_m, zoomx_s, zoomy_m, zoomy_s;
|
uint16_t zoomx_m, zoomx_s, zoomy_m, zoomy_s;
|
||||||
|
|
||||||
|
if (clear_bitmap)
|
||||||
|
{
|
||||||
|
bitmap.fill(0x0000, cliprect);
|
||||||
|
}
|
||||||
|
|
||||||
if ((!disabled)){
|
if ((!disabled)){
|
||||||
group_enable = (sprite_regs[0x00/4] & 0x0040) >> 6; // RWR0
|
group_enable = (sprite_regs[0x00/4] & 0x0040) >> 6; // RWR0
|
||||||
|
@ -362,7 +362,6 @@ void skns_state::video_start()
|
|||||||
m_gfxdecode->gfx(2)->set_granularity(256);
|
m_gfxdecode->gfx(2)->set_granularity(256);
|
||||||
m_gfxdecode->gfx(3)->set_granularity(256);
|
m_gfxdecode->gfx(3)->set_granularity(256);
|
||||||
|
|
||||||
|
|
||||||
save_item(NAME(m_depthA));
|
save_item(NAME(m_depthA));
|
||||||
save_item(NAME(m_depthB));
|
save_item(NAME(m_depthB));
|
||||||
save_item(NAME(m_use_spc_bright));
|
save_item(NAME(m_use_spc_bright));
|
||||||
@ -404,7 +403,6 @@ void skns_state::draw_a( bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const
|
|||||||
int enable_a = (m_v3_regs[0x10/4] >> 0) & 0x0001;
|
int enable_a = (m_v3_regs[0x10/4] >> 0) & 0x0001;
|
||||||
int nowrap_a = (m_v3_regs[0x10/4] >> 0) & 0x0004;
|
int nowrap_a = (m_v3_regs[0x10/4] >> 0) & 0x0004;
|
||||||
|
|
||||||
|
|
||||||
uint32_t startx,starty;
|
uint32_t startx,starty;
|
||||||
int incxx,incxy,incyx,incyy;
|
int incxx,incxy,incyx,incyy;
|
||||||
int columnscroll;
|
int columnscroll;
|
||||||
@ -434,7 +432,6 @@ void skns_state::draw_b( bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const
|
|||||||
int enable_b = (m_v3_regs[0x34/4] >> 0) & 0x0001;
|
int enable_b = (m_v3_regs[0x34/4] >> 0) & 0x0001;
|
||||||
int nowrap_b = (m_v3_regs[0x34/4] >> 0) & 0x0004;
|
int nowrap_b = (m_v3_regs[0x34/4] >> 0) & 0x0004;
|
||||||
|
|
||||||
|
|
||||||
uint32_t startx,starty;
|
uint32_t startx,starty;
|
||||||
int incxx,incxy,incyx,incyy;
|
int incxx,incxy,incyx,incyy;
|
||||||
int columnscroll;
|
int columnscroll;
|
||||||
@ -451,11 +448,11 @@ void skns_state::draw_b( bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_flags, const
|
|||||||
incxy = m_v3_regs[0x4c/4];
|
incxy = m_v3_regs[0x4c/4];
|
||||||
incxx = m_v3_regs[0x48/4]&0x7ffff;
|
incxx = m_v3_regs[0x48/4]&0x7ffff;
|
||||||
if (incxx&0x40000) incxx = incxx-0x80000;
|
if (incxx&0x40000) incxx = incxx-0x80000;
|
||||||
|
|
||||||
columnscroll = (m_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll
|
columnscroll = (m_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll
|
||||||
|
|
||||||
draw_roz(bitmap,bitmap_flags, cliprect, m_tilemap_B, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, !nowrap_b, columnscroll, &m_v3slc_ram[0x1000/4]);
|
draw_roz(bitmap,bitmap_flags, cliprect, m_tilemap_B, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, !nowrap_b, columnscroll, &m_v3slc_ram[0x1000/4]);
|
||||||
|
|
||||||
//popmessage("%08x %08x %08x %08x %08x %08x", startx, starty, incxx, incyy, incxy, incyx);
|
//popmessage("%08x %08x %08x %08x %08x %08x", startx, starty, incxx, incyy, incxy, incyx);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,8 +490,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
const pen_t *clut = &m_palette->pen(0);
|
const pen_t *clut = &m_palette->pen(0);
|
||||||
// int drawpri;
|
// int drawpri;
|
||||||
|
|
||||||
|
for (y=cliprect.min_y;y<=cliprect.max_y;y++)
|
||||||
for (y=0;y<240;y++)
|
|
||||||
{
|
{
|
||||||
src = &m_tilemap_bitmap_lower.pix16(y);
|
src = &m_tilemap_bitmap_lower.pix16(y);
|
||||||
srcflags = &m_tilemap_bitmapflags_lower.pix8(y);
|
srcflags = &m_tilemap_bitmapflags_lower.pix8(y);
|
||||||
@ -506,8 +502,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
|
|
||||||
dst = &bitmap.pix32(y);
|
dst = &bitmap.pix32(y);
|
||||||
|
|
||||||
|
for (x=cliprect.min_x;x<=cliprect.max_x;x++)
|
||||||
for (x=0;x<320;x++)
|
|
||||||
{
|
{
|
||||||
uint16_t pendata = src[x]&0x7fff;
|
uint16_t pendata = src[x]&0x7fff;
|
||||||
uint16_t pendata2 = src2[x]&0x7fff;
|
uint16_t pendata2 = src2[x]&0x7fff;
|
||||||
@ -542,7 +537,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bgpendata = pendata2&0x7fff;
|
bgpendata = pendata2&0x7fff;
|
||||||
bgpri = 0;;
|
bgpri = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -560,7 +555,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bgpendata = 0;
|
bgpendata = 0;
|
||||||
bgpri = 0;;
|
bgpri = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -603,10 +598,7 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
if (b>255) b = 255;
|
if (b>255) b = 255;
|
||||||
|
|
||||||
dst[x] = (r << 0) | (g << 8) | (b << 16);
|
dst[x] = (r << 0) | (g << 8) | (b << 16);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
coldat = clut[pendata3];
|
coldat = clut[pendata3];
|
||||||
@ -624,17 +616,13 @@ uint32_t skns_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
coldat = clut[bgpendata];
|
coldat = clut[bgpendata];
|
||||||
dst[x] = coldat;
|
dst[x] = coldat;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sprite_bitmap.fill(0x0000, cliprect);
|
|
||||||
|
|
||||||
if (m_alt_enable_sprites)
|
if (m_alt_enable_sprites)
|
||||||
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram, m_spriteram.bytes(), m_spc_regs ); // TODO : not all 0x4000 of the sprite RAM area can be displayed on real hardware
|
m_spritegen->skns_draw_sprites(m_sprite_bitmap, cliprect, m_spriteram, m_spriteram.bytes(), m_spc_regs ); // TODO : not all 0x4000 of the sprite RAM area can be displayed on real hardware
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user