mirror of
https://github.com/holub/mame
synced 2025-05-22 05:38:52 +03:00
Fixed regressed flip screen support in Toaplan 2 games [David Haywood]
This commit is contained in:
parent
613213c894
commit
1a1ae4e415
@ -152,40 +152,40 @@ Pipi & Bibis | Fix Eight | V-Five | Snow Bros. 2 |
|
|||||||
#define GP9001_PRIMASK (0x000e)
|
#define GP9001_PRIMASK (0x000e)
|
||||||
|
|
||||||
|
|
||||||
static WRITE16_DEVICE_HANDLER( gp9001_bg_tilemap_w )
|
static WRITE16_DEVICE_HANDLER( gp9001_bg_tmap_w )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
COMBINE_DATA(&vdp->bgvideoram16[offset]);
|
COMBINE_DATA(&vdp->bgvideoram16[offset]);
|
||||||
tilemap_mark_tile_dirty(vdp->bg_tilemap,offset/2);
|
tilemap_mark_tile_dirty(vdp->bg.tmap,offset/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE16_DEVICE_HANDLER( gp9001_fg_tilemap_w )
|
static WRITE16_DEVICE_HANDLER( gp9001_fg_tmap_w )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
COMBINE_DATA(&vdp->fgvideoram16[offset]);
|
COMBINE_DATA(&vdp->fgvideoram16[offset]);
|
||||||
tilemap_mark_tile_dirty(vdp->fg_tilemap,offset/2);
|
tilemap_mark_tile_dirty(vdp->fg.tmap,offset/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE16_DEVICE_HANDLER( gp9001_top_tilemap_w )
|
static WRITE16_DEVICE_HANDLER( gp9001_top_tmap_w )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
COMBINE_DATA(&vdp->topvideoram16[offset]);
|
COMBINE_DATA(&vdp->topvideoram16[offset]);
|
||||||
tilemap_mark_tile_dirty(vdp->top_tilemap,offset/2);
|
tilemap_mark_tile_dirty(vdp->top.tmap,offset/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ16_DEVICE_HANDLER( gp9001_bg_tilemap_r )
|
static READ16_DEVICE_HANDLER( gp9001_bg_tmap_r )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
return vdp->bgvideoram16[offset];
|
return vdp->bgvideoram16[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ16_DEVICE_HANDLER( gp9001_fg_tilemap_r )
|
static READ16_DEVICE_HANDLER( gp9001_fg_tmap_r )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
return vdp->fgvideoram16[offset];
|
return vdp->fgvideoram16[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ16_DEVICE_HANDLER( gp9001_top_tilemap_r )
|
static READ16_DEVICE_HANDLER( gp9001_top_tmap_r )
|
||||||
{
|
{
|
||||||
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
gp9001vdp_device *vdp = (gp9001vdp_device*)device;
|
||||||
return vdp->topvideoram16[offset];
|
return vdp->topvideoram16[offset];
|
||||||
@ -204,9 +204,9 @@ static WRITE16_DEVICE_HANDLER( gp9001_spram_w )
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( gp9001vdp_map, 0, 16 )
|
static ADDRESS_MAP_START( gp9001vdp_map, 0, 16 )
|
||||||
AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_bg_tilemap_r, gp9001_bg_tilemap_w)
|
AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_bg_tmap_r, gp9001_bg_tmap_w)
|
||||||
AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_fg_tilemap_r, gp9001_fg_tilemap_w)
|
AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_fg_tmap_r, gp9001_fg_tmap_w)
|
||||||
AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_top_tilemap_r, gp9001_top_tilemap_w)
|
AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_top_tmap_r, gp9001_top_tmap_w)
|
||||||
AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_spram_r, gp9001_spram_w)
|
AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE(DEVICE_SELF, gp9001_spram_r, gp9001_spram_w)
|
||||||
AM_RANGE(0x3800, 0x3fff) AM_RAM // sprite mirror?
|
AM_RANGE(0x3800, 0x3fff) AM_RAM // sprite mirror?
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -335,13 +335,13 @@ void gp9001vdp_device::create_tilemaps(int region)
|
|||||||
{
|
{
|
||||||
tile_region = region;
|
tile_region = region;
|
||||||
|
|
||||||
top_tilemap = tilemap_create_device(this, get_top0_tile_info,tilemap_scan_rows,16,16,32,32);
|
top.tmap = tilemap_create_device(this, get_top0_tile_info,tilemap_scan_rows,16,16,32,32);
|
||||||
fg_tilemap = tilemap_create_device(this, get_fg0_tile_info,tilemap_scan_rows,16,16,32,32);
|
fg.tmap = tilemap_create_device(this, get_fg0_tile_info,tilemap_scan_rows,16,16,32,32);
|
||||||
bg_tilemap = tilemap_create_device(this, get_bg0_tile_info,tilemap_scan_rows,16,16,32,32);
|
bg.tmap = tilemap_create_device(this, get_bg0_tile_info,tilemap_scan_rows,16,16,32,32);
|
||||||
|
|
||||||
tilemap_set_transparent_pen(top_tilemap,0);
|
tilemap_set_transparent_pen(top.tmap,0);
|
||||||
tilemap_set_transparent_pen(fg_tilemap,0);
|
tilemap_set_transparent_pen(fg.tmap,0);
|
||||||
tilemap_set_transparent_pen(bg_tilemap,0);
|
tilemap_set_transparent_pen(bg.tmap,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -366,46 +366,46 @@ void gp9001vdp_device::device_start()
|
|||||||
|
|
||||||
state_save_register_device_item(this,0, gp9001_scroll_reg);
|
state_save_register_device_item(this,0, gp9001_scroll_reg);
|
||||||
state_save_register_device_item(this,0, gp9001_voffs);
|
state_save_register_device_item(this,0, gp9001_voffs);
|
||||||
state_save_register_device_item(this,0, bg_scrollx);
|
state_save_register_device_item(this,0, bg.scrollx);
|
||||||
state_save_register_device_item(this,0, bg_scrolly);
|
state_save_register_device_item(this,0, bg.scrolly);
|
||||||
state_save_register_device_item(this,0, fg_scrollx);
|
state_save_register_device_item(this,0, fg.scrollx);
|
||||||
state_save_register_device_item(this,0, fg_scrolly);
|
state_save_register_device_item(this,0, fg.scrolly);
|
||||||
state_save_register_device_item(this,0, top_scrollx);
|
state_save_register_device_item(this,0, top.scrollx);
|
||||||
state_save_register_device_item(this,0, top_scrolly);
|
state_save_register_device_item(this,0, top.scrolly);
|
||||||
state_save_register_device_item(this,0, sprite_scrollx);
|
state_save_register_device_item(this,0, sprite_scrollx);
|
||||||
state_save_register_device_item(this,0, sprite_scrolly);
|
state_save_register_device_item(this,0, sprite_scrolly);
|
||||||
state_save_register_device_item(this,0, bg_flip);
|
state_save_register_device_item(this,0, bg.flip);
|
||||||
state_save_register_device_item(this,0, fg_flip);
|
state_save_register_device_item(this,0, fg.flip);
|
||||||
state_save_register_device_item(this,0, top_flip);
|
state_save_register_device_item(this,0, top.flip);
|
||||||
state_save_register_device_item(this,0, sprite_flip);
|
state_save_register_device_item(this,0, sprite_flip);
|
||||||
|
|
||||||
gp9001_gfxrom_is_banked = 0;
|
gp9001_gfxrom_is_banked = 0;
|
||||||
gp9001_gfxrom_bank_dirty = 0;
|
gp9001_gfxrom_bank_dirty = 0;
|
||||||
state_save_register_device_item_array(this,0,gp9001_gfxrom_bank);
|
state_save_register_device_item_array(this,0,gp9001_gfxrom_bank);
|
||||||
|
|
||||||
extra_xoffset[0]=0;
|
bg.extra_xoffset=0;
|
||||||
extra_xoffset[1]=0;
|
fg.extra_xoffset=0;
|
||||||
extra_xoffset[2]=0;
|
top.extra_xoffset=0;
|
||||||
extra_xoffset[3]=0;
|
sp_extra_xoffset=0;
|
||||||
|
|
||||||
extra_yoffset[0]=0;
|
bg.extra_yoffset=0;
|
||||||
extra_yoffset[1]=0;
|
fg.extra_yoffset=0;
|
||||||
extra_yoffset[2]=0;
|
top.extra_yoffset=0;
|
||||||
extra_yoffset[3]=0;
|
sp_extra_yoffset=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gp9001vdp_device::device_reset()
|
void gp9001vdp_device::device_reset()
|
||||||
{
|
{
|
||||||
gp9001_voffs = 0;
|
gp9001_voffs = 0;
|
||||||
gp9001_scroll_reg = 0;
|
gp9001_scroll_reg = 0;
|
||||||
bg_scrollx = bg_scrolly = 0;
|
bg.scrollx = bg.scrolly = 0;
|
||||||
fg_scrollx = fg_scrolly = 0;
|
fg.scrollx = fg.scrolly = 0;
|
||||||
top_scrollx = top_scrolly = 0;
|
top.scrollx = top.scrolly = 0;
|
||||||
sprite_scrollx = sprite_scrolly = 0;
|
sprite_scrollx = sprite_scrolly = 0;
|
||||||
|
|
||||||
bg_flip = 0;
|
bg.flip = 0;
|
||||||
fg_flip = 0;
|
fg.flip = 0;
|
||||||
top_flip = 0;
|
top.flip = 0;
|
||||||
sprite_flip = 0;
|
sprite_flip = 0;
|
||||||
|
|
||||||
/* debug */
|
/* debug */
|
||||||
@ -478,6 +478,46 @@ static WRITE16_DEVICE_HANDLER( gp9001_scroll_reg_select_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gp9001_set_scrollx_reg(gp9001layer* layer, UINT16 data, UINT16 mem_mask, int xoffs_flip, int xoffs_normal, int flip)
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&layer->scrollx);
|
||||||
|
|
||||||
|
if (flip)
|
||||||
|
{
|
||||||
|
layer->flip |= TILEMAP_FLIPX;
|
||||||
|
layer->scrollx -= xoffs_flip;
|
||||||
|
tilemap_set_scrollx(layer->tmap,0,-(layer->scrollx+layer->extra_xoffset));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer->flip &= (~TILEMAP_FLIPX);
|
||||||
|
layer->scrollx -= xoffs_normal;
|
||||||
|
tilemap_set_scrollx(layer->tmap,0,layer->scrollx+layer->extra_xoffset);
|
||||||
|
}
|
||||||
|
tilemap_set_flip(layer->tmap,layer->flip);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gp9001_set_scrolly_reg(gp9001layer* layer, UINT16 data, UINT16 mem_mask, int yoffs_flip, int yoffs_normal, int flip)
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&layer->scrolly);
|
||||||
|
|
||||||
|
if (flip)
|
||||||
|
{
|
||||||
|
layer->flip |= TILEMAP_FLIPY;
|
||||||
|
layer->scrolly -= yoffs_flip;
|
||||||
|
tilemap_set_scrolly(layer->tmap,0,-(layer->scrolly+layer->extra_yoffset));
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
layer->flip &= (~TILEMAP_FLIPY);
|
||||||
|
layer->scrolly -= yoffs_normal;
|
||||||
|
tilemap_set_scrolly(layer->tmap,0,layer->scrolly+layer->extra_yoffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
tilemap_set_flip(layer->tmap,layer->flip);
|
||||||
|
}
|
||||||
|
|
||||||
static void gp9001_scroll_reg_data_w(gp9001vdp_device *vdp, offs_t offset, UINT16 data, UINT16 mem_mask)
|
static void gp9001_scroll_reg_data_w(gp9001vdp_device *vdp, offs_t offset, UINT16 data, UINT16 mem_mask)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -487,107 +527,60 @@ static void gp9001_scroll_reg_data_w(gp9001vdp_device *vdp, offs_t offset, UINT1
|
|||||||
|
|
||||||
//printf("gp9001_scroll_reg_data_w %04x %04x\n", offset, data);
|
//printf("gp9001_scroll_reg_data_w %04x %04x\n", offset, data);
|
||||||
|
|
||||||
|
// writes with 8x set turn on flip for the specified layer / axis
|
||||||
|
int flip = vdp->gp9001_scroll_reg & 0x80;
|
||||||
|
|
||||||
switch(vdp->gp9001_scroll_reg)
|
switch(vdp->gp9001_scroll_reg&0x7f)
|
||||||
{
|
{
|
||||||
case 0x00: data -= 0x1d6; /* 1D6h */
|
case 0x00: gp9001_set_scrollx_reg(&vdp->bg, data, mem_mask, 0x229, 0x1d6, flip); break;
|
||||||
COMBINE_DATA(&vdp->bg_scrollx);
|
case 0x01: gp9001_set_scrolly_reg(&vdp->bg, data, mem_mask, 0x210, 0x1ef, flip); break;
|
||||||
vdp->bg_flip &= (~TILEMAP_FLIPX);
|
|
||||||
tilemap_set_flip(vdp->bg_tilemap,vdp->bg_flip);
|
case 0x02: gp9001_set_scrollx_reg(&vdp->fg, data, mem_mask, 0x227, 0x1d8, flip); break;
|
||||||
tilemap_set_scrollx(vdp->bg_tilemap,0,vdp->bg_scrollx+vdp->extra_xoffset[0]);
|
case 0x03: gp9001_set_scrolly_reg(&vdp->fg, data, mem_mask, 0x210, 0x1ef, flip); break;
|
||||||
break;
|
|
||||||
case 0x01: data -= 0x1ef; /* 1EFh */
|
case 0x04: gp9001_set_scrollx_reg(&vdp->top,data, mem_mask, 0x225, 0x1da, flip); break;
|
||||||
COMBINE_DATA(&vdp->bg_scrolly);
|
case 0x05: gp9001_set_scrolly_reg(&vdp->top,data, mem_mask, 0x210, 0x1ef, flip); break;
|
||||||
vdp->bg_flip &= (~TILEMAP_FLIPY);
|
|
||||||
tilemap_set_flip(vdp->bg_tilemap,vdp->bg_flip);
|
case 0x06:
|
||||||
tilemap_set_scrolly(vdp->bg_tilemap,0,vdp->bg_scrolly+vdp->extra_yoffset[0]);
|
if (flip)
|
||||||
break;
|
{
|
||||||
case 0x02: data -= 0x1d8; /* 1D0h */
|
data -= 0x17b;
|
||||||
COMBINE_DATA(&vdp->fg_scrollx);
|
|
||||||
vdp->fg_flip &= (~TILEMAP_FLIPX);
|
|
||||||
tilemap_set_flip(vdp->fg_tilemap,vdp->fg_flip);
|
|
||||||
tilemap_set_scrollx(vdp->fg_tilemap,0,vdp->fg_scrollx+vdp->extra_xoffset[1]);
|
|
||||||
break;
|
|
||||||
case 0x03: data -= 0x1ef; /* 1EFh */
|
|
||||||
COMBINE_DATA(&vdp->fg_scrolly);
|
|
||||||
vdp->fg_flip &= (~TILEMAP_FLIPY);
|
|
||||||
tilemap_set_flip(vdp->fg_tilemap,vdp->fg_flip);
|
|
||||||
tilemap_set_scrolly(vdp->fg_tilemap,0,vdp->fg_scrolly+vdp->extra_yoffset[1]);
|
|
||||||
break;
|
|
||||||
case 0x04: data -= 0x1da; /* 1DAh */
|
|
||||||
COMBINE_DATA(&vdp->top_scrollx);
|
|
||||||
vdp->top_flip &= (~TILEMAP_FLIPX);
|
|
||||||
tilemap_set_flip(vdp->top_tilemap,vdp->top_flip);
|
|
||||||
tilemap_set_scrollx(vdp->top_tilemap,0,vdp->top_scrollx+vdp->extra_xoffset[2]);
|
|
||||||
break;
|
|
||||||
case 0x05: data -= 0x1ef; /* 1EFh */
|
|
||||||
COMBINE_DATA(&vdp->top_scrolly);
|
|
||||||
vdp->top_flip &= (~TILEMAP_FLIPY);
|
|
||||||
tilemap_set_flip(vdp->top_tilemap,vdp->top_flip);
|
|
||||||
tilemap_set_scrolly(vdp->top_tilemap,0,vdp->top_scrolly+vdp->extra_yoffset[2]);
|
|
||||||
break;
|
|
||||||
case 0x06: data -= 0x1cc; /* 1D4h */
|
|
||||||
COMBINE_DATA(&vdp->sprite_scrollx);
|
|
||||||
if (vdp->sprite_scrollx & 0x8000) vdp->sprite_scrollx |= 0xfffffe00;
|
|
||||||
else vdp->sprite_scrollx &= 0x1ff;
|
|
||||||
vdp->sprite_flip &= (~GP9001_SPRITE_FLIPX);
|
|
||||||
break;
|
|
||||||
case 0x07: data -= 0x1ef; /* 1F7h */
|
|
||||||
COMBINE_DATA(&vdp->sprite_scrolly);
|
|
||||||
if (vdp->sprite_scrolly & 0x8000) vdp->sprite_scrolly |= 0xfffffe00;
|
|
||||||
else vdp->sprite_scrolly &= 0x1ff;
|
|
||||||
vdp->sprite_flip &= (~GP9001_SPRITE_FLIPY);
|
|
||||||
break;
|
|
||||||
case 0x0f: break;
|
|
||||||
case 0x80: data -= 0x229; /* 169h */
|
|
||||||
COMBINE_DATA(&vdp->bg_scrollx);
|
|
||||||
vdp->bg_flip |= TILEMAP_FLIPX;
|
|
||||||
tilemap_set_flip(vdp->bg_tilemap,vdp->bg_flip);
|
|
||||||
tilemap_set_scrollx(vdp->bg_tilemap,0,vdp->bg_scrollx+vdp->extra_xoffset[0]);
|
|
||||||
break;
|
|
||||||
case 0x81: data -= 0x210; /* 100h */
|
|
||||||
COMBINE_DATA(&vdp->bg_scrolly);
|
|
||||||
vdp->bg_flip |= TILEMAP_FLIPY;
|
|
||||||
tilemap_set_flip(vdp->bg_tilemap,vdp->bg_flip);
|
|
||||||
tilemap_set_scrolly(vdp->bg_tilemap,0,vdp->bg_scrolly+vdp->extra_yoffset[0]);
|
|
||||||
break;
|
|
||||||
case 0x82: data -= 0x227; /* 15Fh */
|
|
||||||
COMBINE_DATA(&vdp->fg_scrollx);
|
|
||||||
vdp->fg_flip |= TILEMAP_FLIPX;
|
|
||||||
tilemap_set_flip(vdp->fg_tilemap,vdp->fg_flip);
|
|
||||||
tilemap_set_scrollx(vdp->fg_tilemap,0,vdp->fg_scrollx+vdp->extra_xoffset[1]);
|
|
||||||
break;
|
|
||||||
case 0x83: data -= 0x210; /* 100h */
|
|
||||||
COMBINE_DATA(&vdp->fg_scrolly);
|
|
||||||
vdp->fg_flip |= TILEMAP_FLIPY;
|
|
||||||
tilemap_set_flip(vdp->fg_tilemap,vdp->fg_flip);
|
|
||||||
tilemap_set_scrolly(vdp->fg_tilemap,0,vdp->fg_scrolly+vdp->extra_yoffset[1]);
|
|
||||||
break;
|
|
||||||
case 0x84: data -= 0x225; /* 165h */
|
|
||||||
COMBINE_DATA(&vdp->top_scrollx);
|
|
||||||
vdp->top_flip |= TILEMAP_FLIPX;
|
|
||||||
tilemap_set_flip(vdp->top_tilemap,vdp->top_flip);
|
|
||||||
tilemap_set_scrollx(vdp->top_tilemap,0,vdp->top_scrollx+vdp->extra_xoffset[2]);
|
|
||||||
break;
|
|
||||||
case 0x85: data -= 0x210; /* 100h */
|
|
||||||
COMBINE_DATA(&vdp->top_scrolly);
|
|
||||||
vdp->top_flip |= TILEMAP_FLIPY;
|
|
||||||
tilemap_set_flip(vdp->top_tilemap,vdp->top_flip);
|
|
||||||
tilemap_set_scrolly(vdp->top_tilemap,0,vdp->top_scrolly+vdp->extra_yoffset[2]);
|
|
||||||
break;
|
|
||||||
case 0x86: data -= 0x17b; /* 17Bh */
|
|
||||||
COMBINE_DATA(&vdp->sprite_scrollx);
|
COMBINE_DATA(&vdp->sprite_scrollx);
|
||||||
if (vdp->sprite_scrollx & 0x8000) vdp->sprite_scrollx |= 0xfffffe00;
|
if (vdp->sprite_scrollx & 0x8000) vdp->sprite_scrollx |= 0xfffffe00;
|
||||||
else vdp->sprite_scrollx &= 0x1ff;
|
else vdp->sprite_scrollx &= 0x1ff;
|
||||||
vdp->sprite_flip |= GP9001_SPRITE_FLIPX;
|
vdp->sprite_flip |= GP9001_SPRITE_FLIPX;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data -= 0x1cc;
|
||||||
|
COMBINE_DATA(&vdp->sprite_scrollx);
|
||||||
|
|
||||||
|
if (vdp->sprite_scrollx & 0x8000) vdp->sprite_scrollx |= 0xfffffe00;
|
||||||
|
else vdp->sprite_scrollx &= 0x1ff;
|
||||||
|
vdp->sprite_flip &= (~GP9001_SPRITE_FLIPX);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x87: data -= 0x108; /* 108h */
|
case 0x07:
|
||||||
|
if (flip)
|
||||||
|
{
|
||||||
|
data -= 0x108; /* 108h */
|
||||||
COMBINE_DATA(&vdp->sprite_scrolly);
|
COMBINE_DATA(&vdp->sprite_scrolly);
|
||||||
if (vdp->sprite_scrolly & 0x8000) vdp->sprite_scrolly |= 0xfffffe00;
|
if (vdp->sprite_scrolly & 0x8000) vdp->sprite_scrolly |= 0xfffffe00;
|
||||||
else vdp->sprite_scrolly &= 0x1ff;
|
else vdp->sprite_scrolly &= 0x1ff;
|
||||||
vdp->sprite_flip |= GP9001_SPRITE_FLIPY;
|
vdp->sprite_flip |= GP9001_SPRITE_FLIPY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data -= 0x1ef; /* 1F7h */
|
||||||
|
COMBINE_DATA(&vdp->sprite_scrolly);
|
||||||
|
if (vdp->sprite_scrolly & 0x8000) vdp->sprite_scrolly |= 0xfffffe00;
|
||||||
|
else vdp->sprite_scrolly &= 0x1ff;
|
||||||
|
vdp->sprite_flip &= (~GP9001_SPRITE_FLIPY);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x8f: break;
|
|
||||||
|
|
||||||
|
|
||||||
case 0x0e: /******* Initialise video controller register ? *******/
|
case 0x0e: /******* Initialise video controller register ? *******/
|
||||||
#if 0 // do we know this works on real hw?
|
#if 0 // do we know this works on real hw?
|
||||||
@ -604,78 +597,12 @@ static void gp9001_scroll_reg_data_w(gp9001vdp_device *vdp, offs_t offset, UINT1
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
case 0x0f: break;
|
||||||
|
|
||||||
|
|
||||||
default: logerror("Hmmm, writing %08x to unknown video control register (%08x) Video controller %01x !!!\n",data ,vdp->gp9001_scroll_reg,vdp->tile_region>>1);
|
default: logerror("Hmmm, writing %08x to unknown video control register (%08x) Video controller %01x !!!\n",data ,vdp->gp9001_scroll_reg,vdp->tile_region>>1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// enable / disable layer debug keys (broken at the moment)
|
|
||||||
#ifdef MAME_DEBUG
|
|
||||||
// 1st vdp
|
|
||||||
if (vdp->tile_region == 0)
|
|
||||||
{
|
|
||||||
/* this is non-vdp
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_W) )
|
|
||||||
{
|
|
||||||
display_tx += 1;
|
|
||||||
display_tx &= 1;
|
|
||||||
if (gp9001_txvideoram16 != 0)
|
|
||||||
tilemap_set_enable(tx_tilemap, display_tx);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_L) )
|
|
||||||
{
|
|
||||||
vdp->display_sp += 1;
|
|
||||||
vdp->display_sp &= 1;
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_K) )
|
|
||||||
{
|
|
||||||
vdp->display_top += 1;
|
|
||||||
vdp->display_top &= 1;
|
|
||||||
tilemap_set_enable(vdp->top_tilemap, vdp->display_top);
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_J) )
|
|
||||||
{
|
|
||||||
vdp->display_fg += 1;
|
|
||||||
vdp->display_fg &= 1;
|
|
||||||
tilemap_set_enable(vdp->fg_tilemap, vdp->display_fg);
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_H) )
|
|
||||||
{
|
|
||||||
vdp->display_bg += 1;
|
|
||||||
vdp->display_bg &= 1;
|
|
||||||
tilemap_set_enable(vdp->bg_tilemap, vdp->display_bg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2nd vdp
|
|
||||||
if (vdp->tile_region == 2)
|
|
||||||
{
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_O) )
|
|
||||||
{
|
|
||||||
vdp->display_sp += 1;
|
|
||||||
vdp->display_sp &= 1;
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_I) )
|
|
||||||
{
|
|
||||||
vdp->display_top += 1;
|
|
||||||
vdp->display_top &= 1;
|
|
||||||
tilemap_set_enable(vdp->top_tilemap, vdp->display_top);
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_U) )
|
|
||||||
{
|
|
||||||
vdp->display_fg += 1;
|
|
||||||
vdp->display_fg &= 1;
|
|
||||||
tilemap_set_enable(vdp->fg_tilemap, vdp->display_fg);
|
|
||||||
}
|
|
||||||
if ( input_code_pressed_once(vdp->machine, KEYCODE_Y) )
|
|
||||||
{
|
|
||||||
vdp->display_bg += 1;
|
|
||||||
vdp->display_bg &= 1;
|
|
||||||
tilemap_set_enable(vdp->bg_tilemap, vdp->display_bg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE16_DEVICE_HANDLER( gp9001_scroll_reg_devvdata_w )
|
static WRITE16_DEVICE_HANDLER( gp9001_scroll_reg_devvdata_w )
|
||||||
@ -862,7 +789,7 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
{
|
{
|
||||||
source_now0 = (UINT16 *)(vdp->spriteram16_now);
|
source_now0 = (UINT16 *)(vdp->spriteram16_now);
|
||||||
source_new0 = (UINT16 *)(vdp->spriteram16_new);
|
source_new0 = (UINT16 *)(vdp->spriteram16_new);
|
||||||
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vdp->tile_region == 2)
|
if (vdp->tile_region == 2)
|
||||||
@ -871,7 +798,7 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
source_new1 = (UINT16 *)(vdp->spriteram16_new);
|
source_new1 = (UINT16 *)(vdp->spriteram16_new);
|
||||||
|
|
||||||
logerror("Scrolls BG-X BG-Y FG-X FG-Y TOP-X TOP-Y Sprite-X Sprite-Y\n");
|
logerror("Scrolls BG-X BG-Y FG-X FG-Y TOP-X TOP-Y Sprite-X Sprite-Y\n");
|
||||||
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -917,11 +844,11 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
|
|
||||||
if (vdp->tile_region == 0)
|
if (vdp->tile_region == 0)
|
||||||
{
|
{
|
||||||
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
if (vdp->tile_region == 2)
|
if (vdp->tile_region == 2)
|
||||||
{
|
{
|
||||||
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -950,12 +877,12 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
|
|
||||||
if (vdp->tile_region == 0)
|
if (vdp->tile_region == 0)
|
||||||
{
|
{
|
||||||
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vdp->tile_region == 2)
|
if (vdp->tile_region == 2)
|
||||||
{
|
{
|
||||||
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -984,12 +911,12 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
|
|
||||||
if (vdp->tile_region == 0)
|
if (vdp->tile_region == 0)
|
||||||
{
|
{
|
||||||
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vdp->tile_region == 2)
|
if (vdp->tile_region == 2)
|
||||||
{
|
{
|
||||||
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( tile_voffs = 0; tile_voffs < (GP9001_BG_VRAM_SIZE/2); tile_voffs += 2 )
|
for ( tile_voffs = 0; tile_voffs < (GP9001_BG_VRAM_SIZE/2); tile_voffs += 2 )
|
||||||
@ -1024,12 +951,12 @@ void gp9001_log_vram(gp9001vdp_device* vdp, running_machine *machine)
|
|||||||
|
|
||||||
if (vdp->tile_region == 0)
|
if (vdp->tile_region == 0)
|
||||||
{
|
{
|
||||||
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---0--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vdp->tile_region == 2)
|
if (vdp->tile_region == 2)
|
||||||
{
|
{
|
||||||
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg_scrollx,vdp->bg_scrolly,vdp->fg_scrollx,vdp->fg_scrolly,vdp->top_scrollx,vdp->top_scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
logerror("---1--> %04x %04x %04x %04x %04x %04x %04x %04x\n", vdp->bg.scrollx,vdp->bg.scrolly,vdp->fg.scrollx,vdp->fg.scrolly,vdp->top.scrollx,vdp->top.scrolly,vdp->sprite_scrollx, vdp->sprite_scrolly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1050,8 +977,8 @@ void gp9001vdp_device::draw_sprites( running_machine *machine, bitmap_t *bitmap,
|
|||||||
|
|
||||||
UINT16 *source = (UINT16 *)(spriteram16_n);
|
UINT16 *source = (UINT16 *)(spriteram16_n);
|
||||||
|
|
||||||
old_x = (-(sprite_scrollx+extra_xoffset[3])) & 0x1ff;
|
old_x = (-(sprite_scrollx+sp_extra_xoffset)) & 0x1ff;
|
||||||
old_y = (-(sprite_scrolly+extra_yoffset[3])) & 0x1ff;
|
old_y = (-(sprite_scrolly+sp_extra_yoffset)) & 0x1ff;
|
||||||
|
|
||||||
for (offs = 0; offs < (GP9001_SPRITERAM_SIZE/2); offs += 4)
|
for (offs = 0; offs < (GP9001_SPRITERAM_SIZE/2); offs += 4)
|
||||||
{
|
{
|
||||||
@ -1084,8 +1011,8 @@ void gp9001vdp_device::draw_sprites( running_machine *machine, bitmap_t *bitmap,
|
|||||||
/***** find position to display sprite *****/
|
/***** find position to display sprite *****/
|
||||||
if (!(attrib & 0x4000))
|
if (!(attrib & 0x4000))
|
||||||
{
|
{
|
||||||
sx_base = ((source[offs + 2] >> 7) - (sprite_scrollx+extra_xoffset[3])) & 0x1ff;
|
sx_base = ((source[offs + 2] >> 7) - (sprite_scrollx+sp_extra_xoffset)) & 0x1ff;
|
||||||
sy_base = ((source[offs + 3] >> 7) - (sprite_scrolly+extra_yoffset[3])) & 0x1ff;
|
sy_base = ((source[offs + 3] >> 7) - (sprite_scrolly+sp_extra_yoffset)) & 0x1ff;
|
||||||
} else {
|
} else {
|
||||||
sx_base = (old_x + (source[offs + 2] >> 7)) & 0x1ff;
|
sx_base = (old_x + (source[offs + 2] >> 7)) & 0x1ff;
|
||||||
sy_base = (old_y + (source[offs + 3] >> 7)) & 0x1ff;
|
sy_base = (old_y + (source[offs + 3] >> 7)) & 0x1ff;
|
||||||
@ -1287,14 +1214,14 @@ void gp9001vdp_device::gp9001_render_vdp(running_machine* machine, bitmap_t* bit
|
|||||||
{
|
{
|
||||||
if (gp9001_gfxrom_is_banked && gp9001_gfxrom_bank_dirty)
|
if (gp9001_gfxrom_is_banked && gp9001_gfxrom_bank_dirty)
|
||||||
{
|
{
|
||||||
tilemap_mark_all_tiles_dirty(bg_tilemap);
|
tilemap_mark_all_tiles_dirty(bg.tmap);
|
||||||
tilemap_mark_all_tiles_dirty(fg_tilemap);
|
tilemap_mark_all_tiles_dirty(fg.tmap);
|
||||||
gp9001_gfxrom_bank_dirty = 0;
|
gp9001_gfxrom_bank_dirty = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gp9001_draw_custom_tilemap( machine, bitmap, bg_tilemap, gp9001_primap1, batsugun_prienable0);
|
gp9001_draw_custom_tilemap( machine, bitmap, bg.tmap, gp9001_primap1, batsugun_prienable0);
|
||||||
gp9001_draw_custom_tilemap( machine, bitmap, fg_tilemap, gp9001_primap1, batsugun_prienable0);
|
gp9001_draw_custom_tilemap( machine, bitmap, fg.tmap, gp9001_primap1, batsugun_prienable0);
|
||||||
gp9001_draw_custom_tilemap( machine, bitmap, top_tilemap, gp9001_primap1, batsugun_prienable0);
|
gp9001_draw_custom_tilemap( machine, bitmap, top.tmap, gp9001_primap1, batsugun_prienable0);
|
||||||
draw_sprites( machine,bitmap,cliprect, gp9001_sprprimap1);
|
draw_sprites( machine,bitmap,cliprect, gp9001_sprprimap1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,18 @@ protected:
|
|||||||
UINT8 m_gfxregion;
|
UINT8 m_gfxregion;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct gp9001layer
|
||||||
|
{
|
||||||
|
UINT8 flip;
|
||||||
|
UINT16 scrollx;
|
||||||
|
UINT16 scrolly;
|
||||||
|
tilemap_t *tmap;
|
||||||
|
|
||||||
|
// offset kludges, needed by fixeight bootleg
|
||||||
|
int extra_xoffset;
|
||||||
|
int extra_yoffset;
|
||||||
|
};
|
||||||
|
|
||||||
class gp9001vdp_device : public device_t,
|
class gp9001vdp_device : public device_t,
|
||||||
public device_memory_interface
|
public device_memory_interface
|
||||||
{
|
{
|
||||||
@ -32,22 +44,16 @@ public:
|
|||||||
UINT16 *spriteram16_n;
|
UINT16 *spriteram16_n;
|
||||||
|
|
||||||
UINT16 gp9001_scroll_reg;
|
UINT16 gp9001_scroll_reg;
|
||||||
UINT16 bg_scrollx;
|
|
||||||
UINT16 bg_scrolly;
|
|
||||||
UINT16 fg_scrollx;
|
|
||||||
UINT16 fg_scrolly;
|
|
||||||
UINT16 top_scrollx;
|
|
||||||
UINT16 top_scrolly;
|
|
||||||
UINT16 sprite_scrollx;
|
UINT16 sprite_scrollx;
|
||||||
UINT16 sprite_scrolly;
|
UINT16 sprite_scrolly;
|
||||||
|
int sp_extra_xoffset;
|
||||||
|
int sp_extra_yoffset;
|
||||||
|
UINT16 sprite_flip;
|
||||||
|
|
||||||
UINT8 bg_flip;
|
gp9001layer bg, top, fg;
|
||||||
UINT8 fg_flip;
|
|
||||||
UINT8 top_flip;
|
|
||||||
UINT8 sprite_flip;
|
|
||||||
|
|
||||||
int tile_region; // we also use this to figure out which vdp we're using in some debug logging features
|
int tile_region; // we also use this to figure out which vdp we're using in some debug logging features
|
||||||
tilemap_t *top_tilemap, *fg_tilemap, *bg_tilemap;
|
|
||||||
|
|
||||||
// debug
|
// debug
|
||||||
int display_bg;
|
int display_bg;
|
||||||
@ -69,9 +75,6 @@ public:
|
|||||||
void gp9001_video_eof(void);
|
void gp9001_video_eof(void);
|
||||||
void create_tilemaps(int region);
|
void create_tilemaps(int region);
|
||||||
|
|
||||||
// offset kludges, needed by fixeight bootleg
|
|
||||||
int extra_xoffset[4];
|
|
||||||
int extra_yoffset[4];
|
|
||||||
|
|
||||||
bitmap_t *custom_priority_bitmap;
|
bitmap_t *custom_priority_bitmap;
|
||||||
int *displog;
|
int *displog;
|
||||||
|
@ -129,15 +129,15 @@ VIDEO_START( fixeighb )
|
|||||||
VIDEO_START_CALL( truxton2 );
|
VIDEO_START_CALL( truxton2 );
|
||||||
|
|
||||||
/* This bootleg has additional layer offsets on the VDP */
|
/* This bootleg has additional layer offsets on the VDP */
|
||||||
state->vdp0->extra_xoffset[0]=-26;
|
state->vdp0->bg.extra_xoffset=-26;
|
||||||
state->vdp0->extra_xoffset[1]=-22;
|
state->vdp0->fg.extra_xoffset=-22;
|
||||||
state->vdp0->extra_xoffset[2]=-18;
|
state->vdp0->top.extra_xoffset=-18;
|
||||||
state->vdp0->extra_xoffset[3]=8;
|
state->vdp0->sp_extra_xoffset=8;
|
||||||
|
|
||||||
state->vdp0->extra_yoffset[0]=-15;
|
state->vdp0->bg.extra_yoffset=-15;
|
||||||
state->vdp0->extra_yoffset[1]=-15;
|
state->vdp0->fg.extra_yoffset=-15;
|
||||||
state->vdp0->extra_yoffset[2]=-15;
|
state->vdp0->top.extra_yoffset=-15;
|
||||||
state->vdp0->extra_yoffset[3]=8;
|
state->vdp0->sp_extra_yoffset=8;
|
||||||
|
|
||||||
tilemap_set_scrolldx(state->tx_tilemap, 0, 0);
|
tilemap_set_scrolldx(state->tx_tilemap, 0, 0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user