mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
temp workaround for regression issue (nw)
This commit is contained in:
parent
abbb4acf04
commit
8a4f24f66f
@ -23,7 +23,15 @@ public:
|
||||
, m_screen(*this, "screen")
|
||||
, m_palette(*this, "palette")
|
||||
, m_rtc(*this, "rtc")
|
||||
, m_gfx_region(*this, "gfx")
|
||||
, m_gfx_region1(*this, "gfx1")
|
||||
, m_gfx_region2(*this, "gfx2")
|
||||
, m_gfx_region3(*this, "gfx3")
|
||||
, m_gfx_region4(*this, "gfx4")
|
||||
, m_gfx_region5(*this, "gfx5")
|
||||
, m_gfx_region6(*this, "gfx6")
|
||||
, m_gfx_region7(*this, "gfx7")
|
||||
, m_gfx_region8(*this, "gfx8")
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
@ -36,7 +44,16 @@ public:
|
||||
optional_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<msm6242_device> m_rtc;
|
||||
optional_region_ptr<UINT8> m_gfx_region;
|
||||
optional_region_ptr<UINT8> m_gfx_region1;
|
||||
optional_region_ptr<UINT8> m_gfx_region2;
|
||||
optional_region_ptr<UINT8> m_gfx_region3;
|
||||
optional_region_ptr<UINT8> m_gfx_region4;
|
||||
optional_region_ptr<UINT8> m_gfx_region5;
|
||||
optional_region_ptr<UINT8> m_gfx_region6;
|
||||
optional_region_ptr<UINT8> m_gfx_region7;
|
||||
optional_region_ptr<UINT8> m_gfx_region8;
|
||||
|
||||
static memory_region * gfxregions[];
|
||||
|
||||
// up to 8 layers, 2 images per layer (interleaved on screen)
|
||||
std::unique_ptr<UINT8[]> m_pixmap[8][2];
|
||||
@ -286,7 +303,7 @@ public:
|
||||
DECLARE_VIDEO_START(neruton);
|
||||
|
||||
inline void blitter_plot_pixel( int layer, int mask, int x, int y, int pen, int wrap, int flags );
|
||||
int blitter_drawgfx( int layer, int mask, const char *gfx, int src, int pen, int x, int y, int wrap, int flags );
|
||||
int blitter_drawgfx( int layer, int mask, memory_region *gfx, int src, int pen, int x, int y, int wrap, int flags );
|
||||
void dynax_blitter_start( int flags );
|
||||
void jantouki_blitter_start( int flags );
|
||||
void jantouki_blitter2_start( int flags );
|
||||
|
@ -275,18 +275,18 @@ WRITE8_MEMBER(dynax_state::dynax_flipscreen_w)
|
||||
}
|
||||
|
||||
|
||||
static const char *const gfxregions[] = { "gfx1", "gfx2", "gfx3", "gfx4", "gfx5", "gfx6", "gfx7", "gfx8" };
|
||||
|
||||
|
||||
WRITE8_MEMBER(dynax_state::dynax_blit_romregion_w)
|
||||
{
|
||||
if (data < ARRAY_LENGTH(gfxregions))
|
||||
if (data < 8)
|
||||
m_blit_romregion = data;
|
||||
LOG(("GFX%X ", data + 1));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(dynax_state::dynax_blit2_romregion_w)
|
||||
{
|
||||
if (data + 1 < ARRAY_LENGTH(gfxregions))
|
||||
if (data + 1 < 8)
|
||||
m_blit2_romregion = data + 1;
|
||||
LOG(("GFX%X' ", data + 2));
|
||||
}
|
||||
@ -391,9 +391,13 @@ void dynax_state::blitter_plot_pixel( int layer, int mask, int x, int y, int pen
|
||||
---- --1- 0 = Ignore the pens specified in ROM, draw everything with the pen supplied as parameter
|
||||
---- ---0 Clear
|
||||
*/
|
||||
int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src, int pen, int x, int y, int wrap, int flags )
|
||||
int dynax_state::blitter_drawgfx( int layer, int mask, memory_region *gfx, int src, int pen, int x, int y, int wrap, int flags )
|
||||
{
|
||||
size_t rom_size = m_gfx_region.bytes();
|
||||
if (!gfx)
|
||||
return 0;
|
||||
|
||||
size_t rom_size = gfx->bytes();
|
||||
UINT8* rom_data = gfx->base();
|
||||
|
||||
if (m_layer_layout == LAYOUT_HNORIDUR) // e.g. yarunara
|
||||
pen = ((pen >> 4) & 0xf) | ((mask & 0x10) ? ((pen & 0x08) << 1) : 0);
|
||||
@ -474,7 +478,7 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
|
||||
return src;
|
||||
}
|
||||
|
||||
UINT8 cmd = m_gfx_region[src++];
|
||||
UINT8 cmd = rom_data[src++];
|
||||
src &= 0xfffff;
|
||||
if (!(flags & 0x02)) // Ignore the pens specified in ROM, draw everything with the pen supplied as parameter
|
||||
pen = (pen & 0xf0) | ((cmd & 0xf0) >> 4);
|
||||
@ -501,7 +505,7 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
|
||||
LOG(("\nGFXROM %s OVER %08x",gfx,src));
|
||||
return src;
|
||||
}
|
||||
x = sx + m_gfx_region[src++];
|
||||
x = sx + rom_data[src++];
|
||||
src &= 0xfffff;
|
||||
/* fall through into next case */
|
||||
|
||||
@ -512,7 +516,7 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
|
||||
LOG(("\nGFXROM %s OVER %08x",gfx,src));
|
||||
return src;
|
||||
}
|
||||
cmd = m_gfx_region[src++];
|
||||
cmd = rom_data[src++];
|
||||
src &= 0xfffff;
|
||||
/* fall through into next case */
|
||||
|
||||
@ -542,6 +546,7 @@ int dynax_state::blitter_drawgfx( int layer, int mask, const char *gfx, int src,
|
||||
void dynax_state::dynax_blitter_start(int flags )
|
||||
{
|
||||
int blit_newsrc;
|
||||
memory_region * gfxregions[] = { memregion("gfx1"), memregion("gfx2"), memregion("gfx3"), memregion("gfx4"), memregion("gfx5"), memregion("gfx6"), memregion("gfx7"), memregion("gfx8") };
|
||||
|
||||
LOG(("XY=%X,%X SRC=%X BLIT=%X\n", m_blit_x, m_blit_y, m_blit_src, flags));
|
||||
|
||||
@ -569,6 +574,7 @@ void dynax_state::dynax_blitter_start(int flags )
|
||||
void dynax_state::jantouki_blitter_start( int flags )
|
||||
{
|
||||
int blit_newsrc;
|
||||
memory_region * gfxregions[] = { memregion("gfx1"), memregion("gfx2"), memregion("gfx3"), memregion("gfx4"), memregion("gfx5"), memregion("gfx6"), memregion("gfx7"), memregion("gfx8") };
|
||||
|
||||
LOG(("XY=%X,%X SRC=%X BLIT=%X\n", m_blit_x, m_blit_y, m_blit_src, flags));
|
||||
|
||||
@ -596,6 +602,7 @@ void dynax_state::jantouki_blitter_start( int flags )
|
||||
void dynax_state::jantouki_blitter2_start( int flags )
|
||||
{
|
||||
int blit2_newsrc;
|
||||
memory_region * gfxregions[] = { memregion("gfx1"), memregion("gfx2"), memregion("gfx3"), memregion("gfx4"), memregion("gfx5"), memregion("gfx6"), memregion("gfx7"), memregion("gfx8") };
|
||||
|
||||
LOG(("XY'=%X,%X SRC'=%X BLIT'=%02X\n", m_blit2_x, m_blit2_y, m_blit2_src, flags));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user