some misc Kaneko refactor, preparation for further work (nw)

This commit is contained in:
David Haywood 2014-04-04 00:51:15 +00:00
parent 48967d0006
commit c469068273
7 changed files with 217 additions and 52 deletions

View File

@ -232,6 +232,32 @@ WRITE16_MEMBER(kaneko16_state::kaneko16_eeprom_w)
The Berlin Wall
***************************************************************************/
READ16_MEMBER(kaneko16_berlwall_state::berlwall_oki_r)
{
UINT16 ret;
if (mem_mask == 0xff00) // reads / writes to the upper byte only appear to act as a mirror to the lower byte, 16-bit reads/writes only access the lower byte.
{
mem_mask >>= 8;
}
ret = m_oki->read(space, offset, mem_mask);
ret = ret | ret << 8;
return ret;
}
WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_oki_w)
{
if (mem_mask == 0xff00) // reads / writes to the upper byte only appear to act as a mirror to the lower byte, 16-bit reads/writes only access the lower byte.
{
data >>= 8;
mem_mask >>= 8;
}
m_oki->write(space, offset, data, mem_mask);
}
static ADDRESS_MAP_START( berlwall, AS_PROGRAM, 16, kaneko16_berlwall_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM
@ -251,7 +277,7 @@ static ADDRESS_MAP_START( berlwall, AS_PROGRAM, 16, kaneko16_berlwall_state )
AM_RANGE(0x800000, 0x80001f) AM_READWRITE(kaneko16_ay1_YM2149_r, kaneko16_ay1_YM2149_w) // Sound
AM_RANGE(0x800200, 0x80021f) AM_READWRITE(kaneko16_ay2_YM2149_r, kaneko16_ay2_YM2149_w)
AM_RANGE(0x8003fe, 0x8003ff) AM_NOP // for OKI when accessed as .l
AM_RANGE(0x800400, 0x800401) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x800400, 0x800401) AM_READWRITE( berlwall_oki_r, berlwall_oki_w )
AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w )
AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w)
ADDRESS_MAP_END
@ -1630,10 +1656,13 @@ static MACHINE_CONFIG_START( berlwall, kaneko16_berlwall_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 240-1)
MCFG_SCREEN_UPDATE_DRIVER(kaneko16_berlwall_state, screen_update_berlwall)
MCFG_SCREEN_PALETTE("palette")
// MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", 1x4bit_1x4bit)
MCFG_PALETTE_ADD("palette", 2048 + 32768) /* 32768 static colors for the bg */
MCFG_PALETTE_ADD("palette", 2048 )
MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_PALETTE_ADD("bgpalette", 32768) /* 32768 static colors for the bg */
MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_PALETTE_INIT_OWNER(kaneko16_berlwall_state,berlwall)
@ -1764,7 +1793,7 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", 1x4bit_1x4bit)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MCFG_DEVICE_ADD("view2_0", KANEKO_TMAP, 0)
kaneko_view2_tilemap_device::set_gfx_region(*device, 1);
kaneko_view2_tilemap_device::set_offset(*device, 0x33, 0x8, 320, 240);
@ -2486,6 +2515,7 @@ ROM_START( berlwallt )
ROM_END
/***************************************************************************
Blaze On (Japan version)
@ -3854,6 +3884,7 @@ DRIVER_INIT_MEMBER( kaneko16_shogwarr_state, brapboys )
GAME( 1991, berlwall, 0, berlwall, berlwall, kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall", 0 )
GAME( 1991, berlwallt,berlwall, berlwall, berlwalt, kaneko16_berlwall_state, berlwall, ROT0, "Kaneko", "The Berlin Wall (bootleg ?)", 0 )
GAME( 1991, mgcrystl, 0, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 92/01/10)", 0 )
GAME( 1991, mgcrystlo,mgcrystl, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko", "Magical Crystals (World, 91/12/10)", 0 )
GAME( 1991, mgcrystlj,mgcrystl, mgcrystl, mgcrystl, kaneko16_state, kaneko16, ROT0, "Kaneko (Atlus license)", "Magical Crystals (Japan, 92/01/13)", 0 )

View File

@ -31,7 +31,8 @@ public:
m_view2_0(*this, "view2_0"),
m_view2_1(*this, "view2_1"),
m_kaneko_spr(*this, "kan_spr"),
m_pandora(*this, "pandora")
m_pandora(*this, "pandora"),
m_palette(*this, "palette")
{ }
required_device<cpu_device> m_maincpu;
@ -45,6 +46,7 @@ public:
optional_device<kaneko_view2_tilemap_device> m_view2_1;
optional_device<kaneko16_sprite_device> m_kaneko_spr;
optional_device<kaneko_pandora_device> m_pandora;
required_device<palette_device> m_palette;
UINT16 m_disp_enable;
@ -72,10 +74,19 @@ public:
DECLARE_VIDEO_START(kaneko16);
DECLARE_MACHINE_RESET(mgcrystl);
UINT32 screen_update_kaneko16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
template<class _BitmapClass>
UINT32 screen_update_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(kaneko16_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(shogwarr_interrupt);
void kaneko16_fill_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
template<class _BitmapClass>
void kaneko16_fill_bitmap(palette_device* palette, _BitmapClass &bitmap, const rectangle &cliprect);
void kaneko16_common_oki_bank_w( const char *bankname, const char* tag, int bank, size_t fixedsize, size_t bankedsize );
void kaneko16_unscramble_tiles(const char *region);
void kaneko16_expand_sample_banks(const char *region);
@ -111,12 +122,15 @@ public:
kaneko16_berlwall_state(const machine_config &mconfig, device_type type, const char *tag)
: kaneko16_state(mconfig, type, tag),
m_bg15_reg(*this, "bg15_reg"),
m_bg15_select(*this, "bg15_select")
m_bg15_select(*this, "bg15_select"),
m_bgpalette(*this, "bgpalette")
{
}
optional_shared_ptr<UINT16> m_bg15_reg;
optional_shared_ptr<UINT16> m_bg15_select;
required_device<palette_device> m_bgpalette;
bitmap_ind16 m_bg15_bitmap;
@ -125,11 +139,14 @@ public:
DECLARE_READ16_MEMBER(kaneko16_bg15_reg_r);
DECLARE_WRITE16_MEMBER(kaneko16_bg15_reg_w);
DECLARE_READ16_MEMBER(berlwall_oki_r);
DECLARE_WRITE16_MEMBER(berlwall_oki_w);
DECLARE_DRIVER_INIT(berlwall);
DECLARE_PALETTE_INIT(berlwall);
DECLARE_VIDEO_START(berlwall);
UINT32 screen_update_berlwall(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void kaneko16_render_15bpp_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_berlwall(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void kaneko16_render_15bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
};
class kaneko16_shogwarr_state : public kaneko16_state

View File

@ -24,25 +24,40 @@ VIDEO_START_MEMBER(kaneko16_state,kaneko16)
void kaneko16_state::kaneko16_fill_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
/* Fill the bitmap with a single colour. This is wrong, but will work most of
the times. To do it right, each pixel should be drawn with pen 0
of the bottomost tile that covers it (which is pretty tricky to do) */
template<class _BitmapClass>
void kaneko16_state::kaneko16_fill_bitmap(palette_device* palette, _BitmapClass &bitmap, const rectangle &cliprect)
{
int pen = 0;
if (m_kaneko_spr)
if(m_kaneko_spr->get_sprite_type()== 1)
{
if (m_kaneko_spr->get_sprite_type() == 1)
{
bitmap.fill(0x7f00, cliprect);
return;
pen = 0x7f00;
}
}
/* Fill the bitmap with pen 0. This is wrong, but will work most of
the times. To do it right, each pixel should be drawn with pen 0
of the bottomost tile that covers it (which is pretty tricky to do) */
bitmap.fill(0, cliprect);
typename _BitmapClass::pixel_t *dest;
if (sizeof(*dest) == 2)
{
bitmap.fill(pen, cliprect);
}
else
{
const pen_t *pal = palette->pens();
bitmap.fill(pal[pen], cliprect);
}
}
UINT32 kaneko16_state::screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
template<class _BitmapClass>
UINT32 kaneko16_state::screen_update_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect)
{
int i;
@ -66,7 +81,7 @@ UINT32 kaneko16_state::screen_update_common(screen_device &screen, bitmap_ind16
UINT32 kaneko16_state::screen_update_kaneko16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
kaneko16_fill_bitmap(bitmap,cliprect);
kaneko16_fill_bitmap(m_palette, bitmap,cliprect);
// if the display is disabled, do nothing?
if (!m_disp_enable) return 0;
@ -91,7 +106,7 @@ PALETTE_INIT_MEMBER(kaneko16_berlwall_state,berlwall)
/* initialize 555 RGB lookup */
for (i = 0; i < 32768; i++)
palette.set_pen_color(2048 + i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
palette.set_pen_color(i,pal5bit(i >> 5),pal5bit(i >> 10),pal5bit(i >> 0));
}
VIDEO_START_MEMBER(kaneko16_berlwall_state,berlwall)
@ -134,7 +149,7 @@ VIDEO_START_MEMBER(kaneko16_berlwall_state,berlwall)
if ((r & 0x10) && (b & 0x10))
g = (g - 1) & 0x1f; /* decrease with wraparound */
m_bg15_bitmap.pix16(y, sx * 256 + x) = 2048 + ((g << 10) | (r << 5) | b);
m_bg15_bitmap.pix16(y, sx * 256 + x) = ((g << 10) | (r << 5) | b);
}
VIDEO_START_CALL_MEMBER(kaneko16);
@ -164,29 +179,50 @@ READ16_MEMBER(kaneko16_berlwall_state::kaneko16_bg15_reg_r)
WRITE16_MEMBER(kaneko16_berlwall_state::kaneko16_bg15_reg_w)
{
COMBINE_DATA(&m_bg15_reg[0]);
// printf("kaneko16_bg15_reg_w %04x\n", m_bg15_reg[0]);
double brt1 = data & 0xff;
brt1 = brt1 / 255.0;
for (int i = 0; i < 0x8000;i++)
m_bgpalette->set_pen_contrast(i, brt1);
}
void kaneko16_berlwall_state::kaneko16_render_15bpp_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
void kaneko16_berlwall_state::kaneko16_render_15bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
if (m_bg15_bitmap.valid())
{
int select = m_bg15_select[ 0 ];
// int reg = m_bg15_reg[ 0 ];
int flip = select & 0x20;
int sx, sy;
int sx;//, sy;
if (flip) select ^= 0x1f;
// if (flip) select ^= 0x1f;
sx = (select & 0x1f) * 256;
sy = 0;
// sy = 0;
copybitmap(bitmap, m_bg15_bitmap, flip, flip, -sx, -sy, cliprect);
const pen_t *pal = m_bgpalette->pens();
UINT16* srcbitmap;
UINT32* dstbitmap;
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
if (!flip) srcbitmap = &m_bg15_bitmap.pix16(y);
else srcbitmap = &m_bg15_bitmap.pix16(255-y);
dstbitmap = &bitmap.pix32(y);
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
UINT16 pix = srcbitmap[x + sx];
dstbitmap[x] = pal[pix&0x7fff];
}
}
// flag = 0;
}
}
UINT32 kaneko16_berlwall_state::screen_update_berlwall(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
UINT32 kaneko16_berlwall_state::screen_update_berlwall(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// berlwall uses a 15bpp bitmap as a bg, not a solid fill
kaneko16_render_15bpp_bitmap(bitmap,cliprect);

View File

@ -229,7 +229,12 @@ int kaneko16_sprite_device::kaneko16_parse_sprite_type012(running_machine &machi
}
// custom function to draw a single sprite. needed to keep correct sprites - sprites and sprites - tilemaps priorities
void kaneko16_sprite_device::kaneko16_draw_sprites_custom(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,
template<class _BitmapClass>
void kaneko16_sprite_device::kaneko16_draw_sprites_custom(_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
bitmap_ind8 &priority_bitmap, int priority)
{
@ -294,25 +299,36 @@ void kaneko16_sprite_device::kaneko16_draw_sprites_custom(bitmap_ind16 &dest_bmp
ey -= pixels;
}
if( ex>sx )
if (ex > sx)
{ /* skip if inner loop doesn't draw anything */
int y;
for( y=sy; y<ey; y++ )
typename _BitmapClass::pixel_t *dest;
int rgb;
if (sizeof(*dest) == 2) rgb = 0;
else rgb = 1;
const pen_t *pal = gfx->palette()->pens();
for (int y = sy; y < ey; y++)
{
const UINT8 *source = source_base + (y_index>>16) * gfx->rowbytes();
UINT16 *dest = &dest_bmp.pix16(y);
const UINT8 *source = source_base + (y_index >> 16) * gfx->rowbytes();
dest = &dest_bmp.pix(y);
UINT8 *pri = &priority_bitmap.pix8(y);
int x, x_index = x_index_base;
for( x=sx; x<ex; x++ )
int x_index = x_index_base;
for (int x = sx; x < ex; x++)
{
int c = source[x_index>>16];
if( c != 0 )
int c = source[x_index >> 16];
if (c != 0)
{
if (pri[x] < priority)
dest[x] = pen_base + c;
pri[x] = 0xff; // mark it "already drawn"
{
if (!rgb) dest[x] = pen_base + c;
else dest[x] = pal[pen_base + c];
pri[x] = 0xff; // mark it "already drawn"
}
}
x_index += dx;
}
@ -323,9 +339,12 @@ void kaneko16_sprite_device::kaneko16_draw_sprites_custom(bitmap_ind16 &dest_bmp
}
}
/* Build a list of sprites to display & draw them */
void kaneko16_sprite_device::kaneko16_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes)
/* Build a list of sprites to display & draw them */
template<class _BitmapClass>
void kaneko16_sprite_device::kaneko16_draw_sprites(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes)
{
/* Sprites *must* be parsed from the first in RAM to the last,
because of the multisprite feature. But they *must* be drawn
@ -550,17 +569,46 @@ WRITE16_MEMBER(kaneko16_sprite_device::kaneko16_sprites_regs_w)
}
void kaneko16_sprite_device::kaneko16_copybitmap(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
copybitmap_trans(bitmap,m_sprites_bitmap,0,0,0,0,cliprect,0);
}
void kaneko16_sprite_device::kaneko16_render_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes)
void kaneko16_sprite_device::kaneko16_copybitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *pal = m_gfxdecode->gfx(0)->palette()->pens();
UINT16* srcbitmap;
UINT32* dstbitmap;
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
srcbitmap = &m_sprites_bitmap.pix16(y);
dstbitmap = &bitmap.pix32(y);
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
UINT16 pix = srcbitmap[x];
if (pix) dstbitmap[x] = pal[pix];
}
}
}
void kaneko16_sprite_device::kaneko16_render_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes) { kaneko16_render_sprites_common(machine, bitmap, cliprect, priority_bitmap, spriteram16, spriteram16_bytes); }
void kaneko16_sprite_device::kaneko16_render_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes) { kaneko16_render_sprites_common(machine, bitmap, cliprect, priority_bitmap, spriteram16, spriteram16_bytes); }
template<class _BitmapClass>
void kaneko16_sprite_device::kaneko16_render_sprites_common(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes)
{
/* Sprites last (rendered with pdrawgfx, so they can slip
in between the layers) */
if(m_keep_sprites)
{
/* keep sprites on screen */
/* keep sprites on screen - used by mgcrystl when you get the first gem and it shows instructions */
kaneko16_draw_sprites(machine,m_sprites_bitmap, cliprect, priority_bitmap, spriteram16, spriteram16_bytes);
copybitmap_trans(bitmap,m_sprites_bitmap,0,0,0,0,cliprect,0);
kaneko16_copybitmap(bitmap,cliprect);
}
else
{

View File

@ -42,6 +42,11 @@ public:
virtual int get_sprite_type(void) =0;
void kaneko16_render_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes);
void kaneko16_render_sprites(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes);
template<class _BitmapClass>
void kaneko16_render_sprites_common(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes);
DECLARE_READ16_MEMBER(kaneko16_sprites_regs_r);
@ -81,14 +86,20 @@ private:
int m_keep_sprites;
bitmap_ind16 m_sprites_bitmap;
void kaneko16_draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes);
void kaneko16_draw_sprites_custom(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,
template<class _BitmapClass>
void kaneko16_draw_sprites(running_machine &machine, _BitmapClass &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, UINT16* spriteram16, int spriteram16_bytes);
template<class _BitmapClass>
void kaneko16_draw_sprites_custom(_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
bitmap_ind8 &priority_bitmap, int priority);
int kaneko16_parse_sprite_type012(running_machine &machine, int i, struct tempsprite *s, UINT16* spriteram16, int spriteram16_bytes);
void kaneko16_copybitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
void kaneko16_copybitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<gfxdecode_device> m_gfxdecode;

View File

@ -195,8 +195,11 @@ void kaneko_view2_tilemap_device::kaneko16_vram_w(offs_t offset, UINT16 data, UI
m_tmap[_N_]->mark_tile_dirty(offset/2);
}
void kaneko_view2_tilemap_device::kaneko16_prepare(bitmap_ind16 &bitmap, const rectangle &cliprect) { kaneko16_prepare_common(bitmap, cliprect); };
void kaneko_view2_tilemap_device::kaneko16_prepare(bitmap_rgb32 &bitmap, const rectangle &cliprect) { kaneko16_prepare_common(bitmap, cliprect); };
void kaneko_view2_tilemap_device::kaneko16_prepare(bitmap_ind16 &bitmap, const rectangle &cliprect)
template<class _BitmapClass>
void kaneko_view2_tilemap_device::kaneko16_prepare_common(_BitmapClass &bitmap, const rectangle &cliprect)
{
int layers_flip_0;
UINT16 layer0_scrollx, layer0_scrolly;
@ -244,13 +247,21 @@ void kaneko_view2_tilemap_device::kaneko16_prepare(bitmap_ind16 &bitmap, const r
}
}
void kaneko_view2_tilemap_device::render_tilemap_chip(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
void kaneko_view2_tilemap_device::render_tilemap_chip(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri) { render_tilemap_chip_common(screen, bitmap, cliprect, pri); }
void kaneko_view2_tilemap_device::render_tilemap_chip(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri) { render_tilemap_chip_common(screen, bitmap, cliprect, pri); }
template<class _BitmapClass>
void kaneko_view2_tilemap_device::render_tilemap_chip_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri)
{
m_tmap[0]->draw(screen, bitmap, cliprect, pri, pri, 0);
m_tmap[1]->draw(screen, bitmap, cliprect, pri, pri, 0);
}
void kaneko_view2_tilemap_device::render_tilemap_chip_alt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int v2pri)
void kaneko_view2_tilemap_device::render_tilemap_chip_alt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int v2pri) { render_tilemap_chip_alt_common(screen, bitmap, cliprect, pri, v2pri); }
void kaneko_view2_tilemap_device::render_tilemap_chip_alt(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri, int v2pri) { render_tilemap_chip_alt_common(screen, bitmap, cliprect, pri, v2pri); }
template<class _BitmapClass>
void kaneko_view2_tilemap_device::render_tilemap_chip_alt_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri, int v2pri)
{
m_tmap[0]->draw(screen, bitmap, cliprect, pri, v2pri ? pri : 0, 0);
m_tmap[1]->draw(screen, bitmap, cliprect, pri, v2pri ? pri : 0, 0);

View File

@ -26,9 +26,20 @@ public:
void kaneko16_vram_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _N_);
// call to do the rendering etc.
template<class _BitmapClass>
void kaneko16_prepare_common(_BitmapClass &bitmap, const rectangle &cliprect);
template<class _BitmapClass>
void render_tilemap_chip_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri);
template<class _BitmapClass>
void render_tilemap_chip_alt_common(screen_device &screen, _BitmapClass &bitmap, const rectangle &cliprect, int pri, int v2pri);
void kaneko16_prepare(bitmap_ind16 &bitmap, const rectangle &cliprect);
void kaneko16_prepare(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void render_tilemap_chip(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri);
void render_tilemap_chip(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri);
void render_tilemap_chip_alt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, int v2pri);
void render_tilemap_chip_alt(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri, int v2pri);
// access
DECLARE_READ16_MEMBER( kaneko_tmap_vram_r );