mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
allow wraparound to be turned off (sarukani..)
This commit is contained in:
parent
d478cd3b1a
commit
817d64eede
@ -35,8 +35,8 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
|
|||||||
bitmap_t *srcbitmapflags = tilemap_get_flagsmap(tmap);
|
bitmap_t *srcbitmapflags = tilemap_get_flagsmap(tmap);
|
||||||
const int xmask = srcbitmap->width-1;
|
const int xmask = srcbitmap->width-1;
|
||||||
const int ymask = srcbitmap->height-1;
|
const int ymask = srcbitmap->height-1;
|
||||||
//const int widthshifted = srcbitmap->width << 16;
|
const int widthshifted = srcbitmap->width << 16;
|
||||||
//const int heightshifted = srcbitmap->height << 16;
|
const int heightshifted = srcbitmap->height << 16;
|
||||||
UINT32 cx;
|
UINT32 cx;
|
||||||
UINT32 cy;
|
UINT32 cy;
|
||||||
int x;
|
int x;
|
||||||
@ -61,7 +61,6 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
|
|||||||
ex = cliprect->max_x;
|
ex = cliprect->max_x;
|
||||||
ey = cliprect->max_y;
|
ey = cliprect->max_y;
|
||||||
|
|
||||||
/* wraparound case */
|
|
||||||
{
|
{
|
||||||
/* loop over rows */
|
/* loop over rows */
|
||||||
while (sy <= ey)
|
while (sy <= ey)
|
||||||
@ -78,6 +77,8 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
|
|||||||
|
|
||||||
/* loop over columns */
|
/* loop over columns */
|
||||||
while (x <= ex)
|
while (x <= ex)
|
||||||
|
{
|
||||||
|
if ((wraparound) || (cx < widthshifted && cy < heightshifted)) // not sure how this will cope with no wraparound, but row/col scroll..
|
||||||
{
|
{
|
||||||
if (columnscroll)
|
if (columnscroll)
|
||||||
{
|
{
|
||||||
@ -89,6 +90,7 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
|
|||||||
dest[0] = BITMAP_ADDR16(srcbitmap, (cy >> 16) & ymask, ((cx >> 16) - scrollram[(cy>>16)&0x3ff]) & xmask)[0];
|
dest[0] = BITMAP_ADDR16(srcbitmap, (cy >> 16) & ymask, ((cx >> 16) - scrollram[(cy>>16)&0x3ff]) & xmask)[0];
|
||||||
destflags[0] = BITMAP_ADDR8(srcbitmapflags, (cy >> 16) & ymask, ((cx >> 16) - scrollram[(cy>>16)&0x3ff]) & xmask)[0];
|
destflags[0] = BITMAP_ADDR8(srcbitmapflags, (cy >> 16) & ymask, ((cx >> 16) - scrollram[(cy>>16)&0x3ff]) & xmask)[0];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* advance in X */
|
/* advance in X */
|
||||||
cx += incxx;
|
cx += incxx;
|
||||||
@ -122,17 +124,18 @@ static int old_depthA=0, depthA=0;
|
|||||||
static int old_depthB=0, depthB=0;
|
static int old_depthB=0, depthB=0;
|
||||||
|
|
||||||
static int sprite_kludge_x=0, sprite_kludge_y=0;
|
static int sprite_kludge_x=0, sprite_kludge_y=0;
|
||||||
static int use_spc_bright, use_v3_bright;
|
static int use_spc_bright = 1, use_v3_bright = 1; // makes sarukani rather dark, but should be default..
|
||||||
static UINT8 bright_spc_b=0x00, bright_spc_g=0x00, bright_spc_r=0x00;
|
static UINT8 bright_spc_b=0x00, bright_spc_g=0x00, bright_spc_r=0x00;
|
||||||
|
|
||||||
static UINT8 bright_spc_b_trans=0x00, bright_spc_g_trans=0x00, bright_spc_r_trans=0x00;
|
static UINT8 bright_spc_b_trans=0x00, bright_spc_g_trans=0x00, bright_spc_r_trans=0x00;
|
||||||
|
|
||||||
|
|
||||||
static UINT8 bright_v3_b=0x00, bright_v3_g=0x00, bright_v3_r=0x00;
|
static UINT8 bright_v3_b=0x00, bright_v3_g=0x00, bright_v3_r=0x00;
|
||||||
|
static UINT8 bright_v3_b_trans = 0x00, bright_v3_g_trans = 0x00, bright_v3_r_trans = 0x00;
|
||||||
|
|
||||||
// This ignores the alpha values atm.
|
// This ignores the alpha values atm.
|
||||||
static int spc_changed=0, v3_changed=0, palette_updated=0;
|
static int spc_changed=0, v3_changed=0, palette_updated=0;
|
||||||
|
int suprnova_alt_enable_background = 1, suprnova_alt_enable_sprites = 1;
|
||||||
|
|
||||||
WRITE32_HANDLER ( skns_pal_regs_w )
|
WRITE32_HANDLER ( skns_pal_regs_w )
|
||||||
{
|
{
|
||||||
@ -141,11 +144,16 @@ WRITE32_HANDLER ( skns_pal_regs_w )
|
|||||||
|
|
||||||
switch ( offset )
|
switch ( offset )
|
||||||
{
|
{
|
||||||
|
/* RWRA regs are for SPRITES */
|
||||||
|
|
||||||
case (0x00/4): // RWRA0
|
case (0x00/4): // RWRA0
|
||||||
if( use_spc_bright != (data&1) ) {
|
if( use_spc_bright != (data&1) ) {
|
||||||
use_spc_bright = data&1;
|
use_spc_bright = data&1;
|
||||||
spc_changed = 1;
|
spc_changed = 1;
|
||||||
}
|
}
|
||||||
|
suprnova_alt_enable_sprites = (data>>8)&1;
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case (0x04/4): // RWRA1
|
case (0x04/4): // RWRA1
|
||||||
if( bright_spc_g != (data&0xff) ) {
|
if( bright_spc_g != (data&0xff) ) {
|
||||||
@ -174,29 +182,43 @@ WRITE32_HANDLER ( skns_pal_regs_w )
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* RWRB regs are for BACKGROUND */
|
||||||
|
|
||||||
case (0x10/4): // RWRB0
|
case (0x10/4): // RWRB0
|
||||||
if( use_v3_bright != (data&1) ) {
|
if( use_v3_bright != (data&1) ) {
|
||||||
use_v3_bright = data&1;
|
use_v3_bright = data&1;
|
||||||
v3_changed = 1;
|
v3_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suprnova_alt_enable_background = (data>>8)&1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case (0x14/4): // RWRB1
|
case (0x14/4): // RWRB1
|
||||||
if( bright_v3_g != (data&0xff) ) {
|
if( bright_v3_g != (data&0xff) ) {
|
||||||
bright_v3_g = data&0xff;
|
bright_v3_g = data&0xff;
|
||||||
v3_changed = 1;
|
v3_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bright_v3_g_trans = (data>>8)&0xff;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case (0x18/4): // RWRB2
|
case (0x18/4): // RWRB2
|
||||||
if( bright_v3_r != (data&0xff) ) {
|
if( bright_v3_r != (data&0xff) ) {
|
||||||
bright_v3_r = data&0xff;
|
bright_v3_r = data&0xff;
|
||||||
v3_changed = 1;
|
v3_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bright_v3_r_trans = (data>>8)&0xff;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case (0x1C/4): // RWRB3
|
case (0x1C/4): // RWRB3
|
||||||
if( bright_v3_b != (data&0xff) ) {
|
if( bright_v3_b != (data&0xff) ) {
|
||||||
bright_v3_b = data&0xff;
|
bright_v3_b = data&0xff;
|
||||||
v3_changed = 1;
|
v3_changed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bright_v3_b_trans = (data>>8)&0xff;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -548,7 +570,7 @@ void skns_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectang
|
|||||||
UINT16 zoomx, zoomy;
|
UINT16 zoomx, zoomy;
|
||||||
|
|
||||||
|
|
||||||
if (!disabled){
|
if ((!disabled) && suprnova_alt_enable_sprites){
|
||||||
|
|
||||||
group_enable = (skns_spc_regs[0x00/4] & 0x0040) >> 6; // RWR0
|
group_enable = (skns_spc_regs[0x00/4] & 0x0040) >> 6; // RWR0
|
||||||
|
|
||||||
@ -912,11 +934,16 @@ VIDEO_START(skns)
|
|||||||
static void supernova_draw_a( bitmap_t *bitmap, bitmap_t* bitmap_flags, const rectangle *cliprect, int tran )
|
static void supernova_draw_a( bitmap_t *bitmap, bitmap_t* bitmap_flags, const rectangle *cliprect, int tran )
|
||||||
{
|
{
|
||||||
int enable_a = (skns_v3_regs[0x10/4] >> 0) & 0x0001;
|
int enable_a = (skns_v3_regs[0x10/4] >> 0) & 0x0001;
|
||||||
|
int nowrap_a = (skns_v3_regs[0x10/4] >> 0) & 0x0004;
|
||||||
|
|
||||||
|
|
||||||
UINT32 startx,starty;
|
UINT32 startx,starty;
|
||||||
int incxx,incxy,incyx,incyy;
|
int incxx,incxy,incyx,incyy;
|
||||||
int columnscroll;
|
int columnscroll;
|
||||||
|
|
||||||
if (enable_a)
|
//if(nowrap_a) printf("a\n");
|
||||||
|
|
||||||
|
if (enable_a && suprnova_alt_enable_background)
|
||||||
{
|
{
|
||||||
startx = skns_v3_regs[0x1c/4];
|
startx = skns_v3_regs[0x1c/4];
|
||||||
incyy = skns_v3_regs[0x30/4]; // was xx, changed for sarukani
|
incyy = skns_v3_regs[0x30/4]; // was xx, changed for sarukani
|
||||||
@ -927,7 +954,7 @@ static void supernova_draw_a( bitmap_t *bitmap, bitmap_t* bitmap_flags, const re
|
|||||||
|
|
||||||
columnscroll = (skns_v3_regs[0x0c/4] >> 1) & 0x0001;
|
columnscroll = (skns_v3_regs[0x0c/4] >> 1) & 0x0001;
|
||||||
|
|
||||||
suprnova_draw_roz(bitmap,bitmap_flags,cliprect, skns_tilemap_A, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, 1, columnscroll, &skns_v3slc_ram[0]);
|
suprnova_draw_roz(bitmap,bitmap_flags,cliprect, skns_tilemap_A, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, !nowrap_a, columnscroll, &skns_v3slc_ram[0]);
|
||||||
//tilemap_copy_bitmap(bitmap, tilemap_bitmap_lower, tilemap_bitmapflags_lower);
|
//tilemap_copy_bitmap(bitmap, tilemap_bitmap_lower, tilemap_bitmapflags_lower);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -935,11 +962,16 @@ static void supernova_draw_a( bitmap_t *bitmap, bitmap_t* bitmap_flags, const re
|
|||||||
static void supernova_draw_b( bitmap_t *bitmap, bitmap_t* bitmap_flags, const rectangle *cliprect, int tran )
|
static void supernova_draw_b( bitmap_t *bitmap, bitmap_t* bitmap_flags, const rectangle *cliprect, int tran )
|
||||||
{
|
{
|
||||||
int enable_b = (skns_v3_regs[0x34/4] >> 0) & 0x0001;
|
int enable_b = (skns_v3_regs[0x34/4] >> 0) & 0x0001;
|
||||||
|
int nowrap_b = (skns_v3_regs[0x34/4] >> 0) & 0x0004;
|
||||||
|
|
||||||
|
|
||||||
UINT32 startx,starty;
|
UINT32 startx,starty;
|
||||||
int incxx,incxy,incyx,incyy;
|
int incxx,incxy,incyx,incyy;
|
||||||
int columnscroll;
|
int columnscroll;
|
||||||
|
|
||||||
if (enable_b)
|
//if(nowrap_b) printf("b\n");
|
||||||
|
|
||||||
|
if (enable_b && suprnova_alt_enable_background)
|
||||||
{
|
{
|
||||||
startx = skns_v3_regs[0x40/4];
|
startx = skns_v3_regs[0x40/4];
|
||||||
incyy = skns_v3_regs[0x54/4];
|
incyy = skns_v3_regs[0x54/4];
|
||||||
@ -948,7 +980,7 @@ static void supernova_draw_b( bitmap_t *bitmap, bitmap_t* bitmap_flags, const re
|
|||||||
incxy = skns_v3_regs[0x4c/4];
|
incxy = skns_v3_regs[0x4c/4];
|
||||||
incxx = skns_v3_regs[0x48/4];
|
incxx = skns_v3_regs[0x48/4];
|
||||||
columnscroll = (skns_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll
|
columnscroll = (skns_v3_regs[0x0c/4] >> 9) & 0x0001; // selects column scroll or rowscroll
|
||||||
suprnova_draw_roz(bitmap,bitmap_flags, cliprect, skns_tilemap_B, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, 1, columnscroll, &skns_v3slc_ram[0x1000/4]);
|
suprnova_draw_roz(bitmap,bitmap_flags, cliprect, skns_tilemap_B, startx << 8,starty << 8, incxx << 8,incxy << 8,incyx << 8,incyy << 8, !nowrap_b, columnscroll, &skns_v3slc_ram[0x1000/4]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user