summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/konamigx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/konamigx.c')
-rw-r--r--src/mame/video/konamigx.c437
1 files changed, 187 insertions, 250 deletions
diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c
index 1128d55655b..6886673f1d8 100644
--- a/src/mame/video/konamigx.c
+++ b/src/mame/video/konamigx.c
@@ -11,71 +11,8 @@
//#define GX_DEBUG
#define VERBOSE 0
-/***************************************************************************/
-/* */
-/* 2nd-Tier GX/MW Graphics Functions */
-/* */
-/***************************************************************************/
-
-
-static UINT8 *gx_objzbuf, *gx_shdzbuf;
-
-
-
-static int layer_colorbase[4];
-static INT32 gx_tilebanks[8], gx_oldbanks[8];
-static int gx_tilemode, gx_rozenable, psac_colorbase, last_psac_colorbase;
-static int gx_specialrozenable; // type 1 roz, with voxel height-map, rendered from 2 source tilemaps (which include height data) to temp bitmap for further processing
-static int gx_rushingheroes_hack;
-static int gx_le2_textcolour_hack;
-static tilemap_t *gx_psac_tilemap, *gx_psac_tilemap2;
-static bitmap_ind16* type3_roz_temp_bitmap;
-static tilemap_t* gx_psac_tilemap_alt;
-
-static int konamigx_has_dual_screen;
INLINE void set_color_555(palette_device &palette, pen_t color, int rshift, int gshift, int bshift, UINT16 data);
-static int konamigx_palformat;
-static bitmap_rgb32* dualscreen_left_tempbitmap;
-static bitmap_rgb32* dualscreen_right_tempbitmap;
-
-/* On Type-1 the K053936 output is rendered to these temporary bitmaps as raw data
- the 'voxel' effect to give the pixels height is a post-process operation on the
- output of the K053936 (this can clearly be seen in videos as large chunks of
- scenary flicker when in the distance due to single pixels in the K053936 output
- becoming visible / invisible due to drawing precision.
-
- -- however, progress on this has stalled as our K053936 doesn't seem to give
- the right output for post processing, I suspect the game is using some
- unsupported flipping modes (probably due to the way it's hooked up to the
- rest of the chips) which is causing entirely the wrong output.
-
- -- furthermore machine/konamigx.c (!) contains it's own implementation of
- the K053936_zoom_draw named K053936GP_zoom_draw ... It really shouldn't do,
- epsecially not in 'machine', which isn't meant to be video related.
-
-
- */
-static bitmap_ind16 *gxtype1_roz_dstbitmap;
-static bitmap_ind16 *gxtype1_roz_dstbitmap2;
-static rectangle gxtype1_roz_dstbitmapclip;
-
-/***************************************************************************/
-/* */
-/* 1st-Tier GX/MW Variables and Functions */
-/* */
-/***************************************************************************/
-
-// global system ports access
-UINT8 konamigx_wrport1_0, konamigx_wrport1_1;
-UINT16 konamigx_wrport2;
-
-// frequently used registers
-static int k053247_vrcbk[4];
-static int k053247_coreg, k053247_coregshift, k053247_opset;
-static int opri, oinprion;
-static int vcblk[6], ocblk;
-static int vinmix, vmixon, osinmix, osmixon;
void konamigx_state::konamigx_precache_registers(void)
@@ -86,68 +23,68 @@ void konamigx_state::konamigx_precache_registers(void)
int i;
i = m_k055673->k053247_read_register(0x8/2);
- k053247_vrcbk[0] = (i & 0x000f) << 14;
- k053247_vrcbk[1] = (i & 0x0f00) << 6;
+ m_k053247_vrcbk[0] = (i & 0x000f) << 14;
+ m_k053247_vrcbk[1] = (i & 0x0f00) << 6;
i = m_k055673->k053247_read_register(0xa/2);
- k053247_vrcbk[2] = (i & 0x000f) << 14;
- k053247_vrcbk[3] = (i & 0x0f00) << 6;
+ m_k053247_vrcbk[2] = (i & 0x000f) << 14;
+ m_k053247_vrcbk[3] = (i & 0x0f00) << 6;
// COREG == OBJSET2+1C == bit8-11 of OPSET ??? (see p.50 last table, needs p.49 to confirm)
- k053247_opset = m_k055673->k053247_read_register(0xc/2);
-
- i = k053247_opset & 7; if (i > 4) i = 4;
-
- k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
- k053247_coreg =(k053247_coreg & coregmasks[i]) << 12;
-
- k053247_coregshift = coregshifts[i];
-
- opri = m_k055555->K055555_read_register(K55_PRIINP_8);
- oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
- vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
- vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
- vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
- vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
- vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
- vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
- ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
- vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
- vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
- osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
- osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
+ m_k053247_opset = m_k055673->k053247_read_register(0xc/2);
+
+ i = m_k053247_opset & 7; if (i > 4) i = 4;
+
+ m_k053247_coreg = m_k055673->k053247_read_register(0xc/2)>>8 & 0xf;
+ m_k053247_coreg =(m_k053247_coreg & coregmasks[i]) << 12;
+
+ m_k053247_coregshift = coregshifts[i];
+
+ m_opri = m_k055555->K055555_read_register(K55_PRIINP_8);
+ m_oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
+ m_vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
+ m_vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
+ m_vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
+ m_vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
+ m_vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
+ m_vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
+ m_ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
+ m_vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
+ m_vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
+ m_osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
+ m_osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
}
-INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
+inline int konamigx_state::K053247GX_combine_c18(int attrib) // (see p.46)
{
int c18;
- c18 = (attrib & 0xff)<<k053247_coregshift | k053247_coreg;
+ c18 = (attrib & 0xff)<<m_k053247_coregshift | m_k053247_coreg;
- if (konamigx_wrport2 & 4) c18 &= 0x3fff; else
- if (!(konamigx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
+ if (m_gx_wrport2 & 4) c18 &= 0x3fff; else
+ if (!(m_gx_wrport2 & 8)) c18 = (c18 & 0x3fff) | (attrib<<6 & 0xc000);
return(c18);
}
-INLINE int K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
+inline int konamigx_state::K055555GX_decode_objcolor(int c18) // (see p.59 7.2.2)
{
int ocb, opon;
- opon = oinprion<<8 | 0xff;
- ocb = (ocblk & 7) << 10;
+ opon = m_oinprion<<8 | 0xff;
+ ocb = (m_ocblk & 7) << 10;
c18 &= opon;
ocb &=~opon;
- return((ocb | c18) >> k053247_coregshift);
+ return((ocb | c18) >> m_k053247_coregshift);
}
-INLINE int K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
+inline int konamigx_state::K055555GX_decode_inpri(int c18) // (see p.59 7.2.2)
{
- int op = opri;
+ int op = m_opri;
c18 >>= 8;
- op &= oinprion;
- c18 &=~oinprion;
+ op &= m_oinprion;
+ c18 &=~m_oinprion;
return(c18 | op);
}
@@ -157,7 +94,7 @@ K055673_CB_MEMBER(konamigx_state::type2_sprite_callback)
int num = *code;
int c18 = *color;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = K053247GX_combine_c18(c18);
*color = K055555GX_decode_objcolor(c18);
*priority_mask = K055555GX_decode_inpri(c18);
@@ -168,13 +105,13 @@ K055673_CB_MEMBER(konamigx_state::dragoonj_sprite_callback)
int num, op, pri, c18;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = pri = *color;
- op = opri;
+ op = m_opri;
pri = (pri & 0x200) ? 4 : pri>>4 & 0xf;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
c18 = K053247GX_combine_c18(c18);
@@ -186,13 +123,13 @@ K055673_CB_MEMBER(konamigx_state::salmndr2_sprite_callback)
int num, op, pri, c18;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
c18 = pri = *color;
- op = opri;
+ op = m_opri;
pri = pri>>4 & 0x3f;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
c18 = K053247GX_combine_c18(c18);
@@ -204,27 +141,27 @@ K055673_CB_MEMBER(konamigx_state::le2_sprite_callback)
int num, op, pri;
num = *code;
- *code = k053247_vrcbk[num>>14] | (num & 0x3fff);
+ *code = m_k053247_vrcbk[num>>14] | (num & 0x3fff);
pri = *color;
*color &= 0x1f;
- op = opri;
+ op = m_opri;
pri &= 0xf0;
- op &= oinprion;
- pri &=~oinprion;
+ op &= m_oinprion;
+ pri &=~m_oinprion;
*priority_mask = pri | op;
}
-static int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
+int konamigx_state::K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6 and p.27 3.3)
{
int vcb, shift, pal, vmx, von, pl45, emx;
- vcb = vcblk[layer]<<6;
+ vcb = m_vcblk[layer]<<6;
shift = layer<<1;
pal = *color;
- vmx = vinmix>>shift & 3;
- von = vmixon>>shift & 3;
+ vmx = m_vinmix>>shift & 3;
+ von = m_vmixon>>shift & 3;
emx = pl45 = pal>>4 & 3;
pal &= 0xf;
pl45 &= von;
@@ -235,7 +172,7 @@ static int K055555GX_decode_vmixcolor(int layer, int *color) // (see p.62 7.2.6
emx |= vmx;
pal |= vcb;
- if (gx_le2_textcolour_hack)
+ if (m_gx_le2_textcolour_hack)
if (layer==0)
pal |= 0x1c0;
@@ -252,13 +189,13 @@ int K055555GX_decode_osmixcolor(int layer, int *color) // (see p.63, p.49-50 and
shift = layer<<1;
pal = *color;
- osmx = osinmix>>shift & 3;
- oson = osmixon>>shift & 3;
+ osmx = m_osinmix>>shift & 3;
+ oson = m_osmixon>>shift & 3;
if (layer)
{
// layer 1-3 are external tile layers
- scb = vcblk[layer+3]<<6;
+ scb = m_vcblk[layer+3]<<6;
emx = pl45 = pal>>4 & 3;
pal &= 0xf;
pl45 &= oson;
@@ -292,14 +229,14 @@ void konamigx_state::wipezbuf(int noshadow)
int w = visarea.width();
int h = visarea.height();
- UINT8 *zptr = gx_objzbuf;
+ UINT8 *zptr = m_gx_objzbuf;
int ecx = h;
do { memset(zptr, -1, w); zptr += GX_ZBUFW; } while (--ecx);
if (!noshadow)
{
- zptr = gx_shdzbuf;
+ zptr = m_gx_shdzbuf;
w <<= 1;
ecx = h;
do { memset(zptr, -1, w); zptr += (GX_ZBUFW<<1); } while (--ecx);
@@ -350,8 +287,8 @@ void konamigx_state::konamigx_mixer_init(screen_device &screen, int objdma)
m_gx_objdma = 0;
m_gx_primode = 0;
- gx_objzbuf = &screen.priority().pix8(0);
- gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
+ m_gx_objzbuf = &screen.priority().pix8(0);
+ m_gx_shdzbuf = auto_alloc_array(machine(), UINT8, GX_ZBUFSIZE);
gx_objpool = auto_alloc_array(machine(), struct GX_OBJ, GX_MAX_OBJECTS);
m_k054338->export_config(&K054338_shdRGB);
@@ -393,14 +330,14 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
int cltc_shdpri, /*prflp,*/ disp;
// buffer can move when it's resized, so refresh the pointer
- gx_objzbuf = &screen.priority().pix8(0);
+ m_gx_objzbuf = &screen.priority().pix8(0);
// abort if object database failed to initialize
objpool = gx_objpool;
if (!objpool) return;
// clear screen with backcolor and update flicker pulse
- if (konamigx_wrport1_0 & 0x20)
+ if (m_gx_wrport1_0 & 0x20)
m_k054338->fill_backcolor(bitmap,
cliprect,
m_palette->pens() + (m_k055555->K055555_read_register(0) << 9),
@@ -564,7 +501,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
int zcode = gx_spriteram[offs] & 0xff;
// invert z-order when opset_pri is set (see p.51 OPSET PRI)
- if (k053247_opset & 0x10) zcode = 0xff - zcode;
+ if (m_k053247_opset & 0x10) zcode = 0xff - zcode;
int code = gx_spriteram[offs+1];
int color = k = gx_spriteram[offs+6];
@@ -635,7 +572,7 @@ void konamigx_state::konamigx_mixer(screen_device &screen, bitmap_rgb32 &bitmap,
if (temp3)
{
// determine shadow priority
- spri = (k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
+ spri = (m_k053247_opset & 0x20) ? pri : shdpri[shadow]; // (see p.51 OPSET SDSEL)
}
}
@@ -732,13 +669,13 @@ void konamigx_state::gx_draw_basic_tilemaps(screen_device &screen, bitmap_rgb32
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>(i+16); temp3 = 3; }
else
{
- temp1 = vinmix;
- temp2 = vinmix>>i & 3;
- temp3 = vmixon>>i & 3;
+ temp1 = m_vinmix;
+ temp2 = m_vinmix>>i & 3;
+ temp3 = m_vmixon>>i & 3;
}
/* blend layer only when:
- 1) vinmix != 0xff
+ 1) m_vinmix != 0xff
2) its internal mix code is set
3) all mix code bits are internal(overriden until tile blending has been implemented)
4) 0 > alpha < 255;
@@ -775,9 +712,9 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_1(screen_device &screen, bi
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>24; temp3 = 3; }
else
{
- temp1 = osinmix;
- temp2 = osinmix>>2 & 3;
- temp3 = osmixon>>2 & 3;
+ temp1 = m_osinmix;
+ temp2 = m_osinmix>>2 & 3;
+ temp3 = m_osmixon>>2 & 3;
}
if (temp1!=0xff && temp2 /*&& temp3==3*/)
@@ -803,7 +740,7 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_1(screen_device &screen, bi
}
else
{
- machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, vcblk[4]<<l, 0, screen.priority(), 0);
+ machine().device<k053250_device>("k053250_1")->draw(bitmap, cliprect, m_vcblk[4]<<l, 0, screen.priority(), 0);
}
}
}
@@ -825,9 +762,9 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_2(screen_device &screen, bi
if (j == GXMIX_BLEND_FORCE) { temp1 = 0x00; temp2 = mixerflags>>26; temp3 = 3; }
else
{
- temp1 = osinmix;
- temp2 = osinmix>>4 & 3;
- temp3 = osmixon>>4 & 3;
+ temp1 = m_osinmix;
+ temp2 = m_osinmix>>4 & 3;
+ temp3 = m_osmixon>>4 & 3;
}
if (temp1!=0xff && temp2 /*&& temp3==3*/)
@@ -875,7 +812,7 @@ void konamigx_state::gx_draw_basic_extended_tilemaps_2(screen_device &screen, bi
}
}
else
- machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, vcblk[5]<<l, 0, screen.priority(), 0);
+ machine().device<k053250_device>("k053250_2")->draw(bitmap, cliprect, m_vcblk[5]<<l, 0, screen.priority(), 0);
}
}
@@ -932,7 +869,7 @@ void konamigx_state::konamigx_mixer_draw(screen_device &screen, bitmap_rgb32 &bi
m_k055673->k053247_draw_single_sprite_gxcore(bitmap, cliprect,
- gx_objzbuf, gx_shdzbuf, code, gx_spriteram, offs,
+ m_gx_objzbuf, m_gx_shdzbuf, code, gx_spriteram, offs,
color, alpha, drawmode, zcode, pri,
/* non-gx only */
0,0,NULL,NULL,0
@@ -985,7 +922,7 @@ TILE_GET_INFO_MEMBER(konamigx_state::get_gx_psac_tile_info)
}
- colour = (psac_colorbase << 4) + col;
+ colour = (m_psac_colorbase << 4) + col;
SET_TILE_INFO_MEMBER(0, tileno, colour, TILE_FLIPYX(flip));
}
@@ -1003,7 +940,7 @@ WRITE32_MEMBER(konamigx_state::konamigx_type3_psac2_bank_w)
/* handle this by creating 2 roz tilemaps instead, otherwise performance dies completely on dual screen mode
if (konamigx_type3_psac2_actual_bank!=konamigx_type3_psac2_actual_last_bank)
{
- gx_psac_tilemap->mark_all_dirty();
+ m_gx_psac_tilemap->mark_all_dirty();
konamigx_type3_psac2_actual_last_bank = konamigx_type3_psac2_actual_bank;
}
*/
@@ -1106,7 +1043,7 @@ K056832_CB_MEMBER(konamigx_state::type2_tile_callback)
{
int d = *code;
- *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
+ *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
K055555GX_decode_vmixcolor(layer, color);
}
@@ -1118,7 +1055,7 @@ K056832_CB_MEMBER(konamigx_state::alpha_tile_callback)
mixcode = K055555GX_decode_vmixcolor(layer, color);
if (mixcode < 0)
- *code = (gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
+ *code = (m_gx_tilebanks[(d & 0xe000)>>13]<<13) + (d & 0x1fff);
else
{
/* save mixcode and mark tile alpha (unimplemented) */
@@ -1165,17 +1102,17 @@ void konamigx_state::common_init()
for (int i = 0; i < 8; i++)
{
- gx_tilebanks[i] = gx_oldbanks[i] = 0;
+ m_gx_tilebanks[i] = m_gx_oldbanks[i] = 0;
}
- machine().save().save_item(NAME(gx_tilebanks));
+ machine().save().save_item(NAME(m_gx_tilebanks));
- gx_tilemode = 0;
+ m_gx_tilemode = 0;
- gx_rozenable = 0;
- gx_specialrozenable = 0;
- gx_rushingheroes_hack = 0;
- gx_le2_textcolour_hack = 0;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 0;
+ m_gx_rushingheroes_hack = 0;
+ m_gx_le2_textcolour_hack = 0;
// Documented relative offsets of non-flipped games are (-2, 0, 2, 3),(0, 0, 0, 0).
// (+ve values move layers to the right and -ve values move layers to the left)
@@ -1187,7 +1124,7 @@ void konamigx_state::common_init()
m_k056832->set_layer_offs(2, 2, 0);
m_k056832->set_layer_offs(3, 3, 0);
- konamigx_has_dual_screen = 0;
+ m_konamigx_has_dual_screen = 0;
m_konamigx_current_frame = 0;
}
@@ -1197,7 +1134,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_5bpp)
common_init();
if (!strcmp(machine().system().name,"tbyahhoo"))
- gx_tilemode = 1;
+ m_gx_tilemode = 1;
else if (!strcmp(machine().system().name,"crzcross") || !strcmp(machine().system().name,"puzldama"))
konamigx_mixer_primode(5);
else if (!strcmp(machine().system().name,"daiskiss"))
@@ -1220,7 +1157,7 @@ VIDEO_START_MEMBER(konamigx_state, le2)
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
- gx_le2_textcolour_hack = 1; // force text layer to use the right palette
+ m_gx_le2_textcolour_hack = 1; // force text layer to use the right palette
}
VIDEO_START_MEMBER(konamigx_state, konamigx_6bpp)
@@ -1234,23 +1171,23 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
- gx_psac_tilemap_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_alt_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
+ m_gx_psac_tilemap_alt = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_alt_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256);
- gx_rozenable = 0;
- gx_specialrozenable = 2;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 2;
/* set up tile layers */
- type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_type3_roz_temp_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
- //gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
+ //m_gx_psac_tilemap->set_flip(TILEMAP_FLIPX| TILEMAP_FLIPY);
K053936_wraparound_enable(0, 1);
// K053936GP_set_offset(0, -30, -1);
@@ -1261,8 +1198,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3)
m_k056832->set_layer_offs(2, -48, 0);
m_k056832->set_layer_offs(3, -48, 0);
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 1;
}
VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
@@ -1270,14 +1207,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -27, 0);
m_k056832->set_layer_offs(1, -25, 0);
@@ -1287,9 +1224,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4)
K053936_wraparound_enable(0, 0);
K053936GP_set_offset(0, -36, 1);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
@@ -1298,14 +1235,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -52, 0);
m_k056832->set_layer_offs(1, -48, 0);
@@ -1315,9 +1252,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn)
K053936_wraparound_enable(0, 1); // wraparound doesn't work properly with the custom drawing function anyway, see the crowd in vsnet and rushhero
K053936GP_set_offset(0, -30, 0);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
@@ -1325,14 +1262,14 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
int width = m_screen->width();
int height = m_screen->height();
- dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
- dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
+ m_dualscreen_right_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height);
common_init();
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_rozenable = 0;
- gx_specialrozenable = 3;
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 3;
m_k056832->set_layer_offs(0, -29, -1);
@@ -1344,9 +1281,9 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2)
K053936_wraparound_enable(0, 0);
K053936GP_set_offset(0, -36, -1);
- gx_rushingheroes_hack = 1;
- konamigx_has_dual_screen = 1;
- konamigx_palformat = 0;
+ m_gx_rushingheroes_hack = 1;
+ m_konamigx_has_dual_screen = 1;
+ m_konamigx_palformat = 0;
}
@@ -1359,21 +1296,21 @@ VIDEO_START_MEMBER(konamigx_state, opengolf)
m_k056832->set_layer_offs(2, 2+1, 0);
m_k056832->set_layer_offs(3, 3+1, 0);
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
// transparency will be handled manually in post-processing
- //gx_psac_tilemap->set_transparent_pen(0);
- //gx_psac_tilemap2->set_transparent_pen(0);
+ //m_gx_psac_tilemap->set_transparent_pen(0);
+ //m_gx_psac_tilemap2->set_transparent_pen(0);
- gx_rozenable = 0;
- gx_specialrozenable = 1;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
+ m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
K053936_wraparound_enable(0, 1);
@@ -1394,21 +1331,21 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc)
m_k056832->set_layer_offs(2, 2+1, 0);
m_k056832->set_layer_offs(3, 3+1, 0);
- gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
- gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
+ m_gx_psac_tilemap2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128);
// transparency will be handled manually in post-processing
- //gx_psac_tilemap->set_transparent_pen(0);
- //gx_psac_tilemap2->set_transparent_pen(0);
+ //m_gx_psac_tilemap->set_transparent_pen(0);
+ //m_gx_psac_tilemap2->set_transparent_pen(0);
- gx_rozenable = 0;
- gx_specialrozenable = 1;
+ m_gx_rozenable = 0;
+ m_gx_specialrozenable = 1;
- gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
+ m_gxtype1_roz_dstbitmap2 = auto_bitmap_ind16_alloc(machine(),512,512); // BITMAP_FORMAT_IND16 because we NEED the raw pen data for post-processing
- gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
+ m_gxtype1_roz_dstbitmapclip.set(0, 512-1, 0, 512-1);
K053936_wraparound_enable(0, 1);
@@ -1428,20 +1365,20 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
/* if any banks are different from last render, we need to flush the planes */
for (dirty = 0, i = 0; i < 8; i++)
{
- newbank = gx_tilebanks[i];
- if (gx_oldbanks[i] != newbank) { gx_oldbanks[i] = newbank; dirty = 1; }
+ newbank = m_gx_tilebanks[i];
+ if (m_gx_oldbanks[i] != newbank) { m_gx_oldbanks[i] = newbank; dirty = 1; }
}
- if (gx_tilemode == 0)
+ if (m_gx_tilemode == 0)
{
// driver approximates tile update in mode 0 for speed
unchained = m_k056832->get_layer_association();
for (i=0; i<4; i++)
{
newbase = m_k055555->K055555_get_palette_index(i)<<6;
- if (layer_colorbase[i] != newbase)
+ if (m_layer_colorbase[i] != newbase)
{
- layer_colorbase[i] = newbase;
+ m_layer_colorbase[i] = newbase;
if (unchained)
m_k056832->mark_plane_dirty(i);
@@ -1456,17 +1393,17 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
}
// sub2 is PSAC colorbase on GX
- if (gx_rozenable)
+ if (m_gx_rozenable)
{
- last_psac_colorbase = psac_colorbase;
- psac_colorbase = m_k055555->K055555_get_palette_index(6);
+ m_last_psac_colorbase = m_psac_colorbase;
+ m_psac_colorbase = m_k055555->K055555_get_palette_index(6);
- if (psac_colorbase != last_psac_colorbase)
+ if (m_psac_colorbase != m_last_psac_colorbase)
{
- gx_psac_tilemap->mark_all_dirty();
- if (gx_rozenable == 3)
+ m_gx_psac_tilemap->mark_all_dirty();
+ if (m_gx_rozenable == 3)
{
- gx_psac_tilemap2->mark_all_dirty();
+ m_gx_psac_tilemap2->mark_all_dirty();
}
}
}
@@ -1474,42 +1411,42 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
if (dirty) m_k056832->mark_all_tilemaps_dirty();
// Type-1
- if (gx_specialrozenable == 1)
+ if (m_gx_specialrozenable == 1)
{
- K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap, gxtype1_roz_dstbitmapclip,gx_psac_tilemap, 0,0,0); // height data
- K053936_0_zoom_draw(screen, *gxtype1_roz_dstbitmap2,gxtype1_roz_dstbitmapclip,gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
+ K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap, m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap, 0,0,0); // height data
+ K053936_0_zoom_draw(screen, *m_gxtype1_roz_dstbitmap2,m_gxtype1_roz_dstbitmapclip,m_gx_psac_tilemap2,0,0,0); // colour data (+ some voxel height data?)
}
- if (gx_specialrozenable==3)
+ if (m_gx_specialrozenable==3)
{
- konamigx_mixer(screen, bitmap, cliprect, gx_psac_tilemap, GXSUB_8BPP,0,0, 0, 0, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, m_gx_psac_tilemap, GXSUB_8BPP,0,0, 0, 0, m_gx_rushingheroes_hack);
}
// hack, draw the roz tilemap if W is held
// todo: fix so that it works with the mixer without crashing(!)
- else if (gx_specialrozenable == 2)
+ else if (m_gx_specialrozenable == 2)
{
// we're going to throw half of this away anyway in post-process, so only render what's needed
rectangle temprect;
temprect = cliprect;
temprect.max_x = cliprect.min_x+320;
- if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *type3_roz_temp_bitmap, temprect,gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
- else K053936_0_zoom_draw(screen, *type3_roz_temp_bitmap, temprect,gx_psac_tilemap, 0,0,0); // soccerss playfield
+ if (konamigx_type3_psac2_actual_bank == 1) K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap_alt, 0,0,0); // soccerss playfield
+ else K053936_0_zoom_draw(screen, *m_type3_roz_temp_bitmap, temprect,m_gx_psac_tilemap, 0,0,0); // soccerss playfield
- konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, type3_roz_temp_bitmap, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, m_type3_roz_temp_bitmap, m_gx_rushingheroes_hack);
}
else
{
- konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, gx_rushingheroes_hack);
+ konamigx_mixer(screen, bitmap, cliprect, 0, 0, 0, 0, 0, 0, m_gx_rushingheroes_hack);
}
/* Hack! draw type-1 roz layer here for testing purposes only */
- if (gx_specialrozenable == 1)
+ if (m_gx_specialrozenable == 1)
{
const pen_t *paldata = m_palette->pens();
@@ -1522,12 +1459,12 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
{
for (y=0;y<256;y++)
{
- //UINT16* src = &gxtype1_roz_dstbitmap->pix16(y);
+ //UINT16* src = &m_gxtype1_roz_dstbitmap->pix16(y);
//UINT32* dst = &bitmap.pix32(y);
// ths K053936 rendering should probably just be flipped
// this is just kludged to align the racing force 2d logo
- UINT16* src = &gxtype1_roz_dstbitmap2->pix16(y+30);
+ UINT16* src = &m_gxtype1_roz_dstbitmap2->pix16(y+30);
UINT32* dst = &bitmap.pix32(256-y);
for (x=0;x<512;x++)
@@ -1554,7 +1491,7 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
{
int offset=0;
- if (konamigx_palformat==1)
+ if (m_konamigx_palformat==1)
{
for (offset=0;offset<0x4000/4;offset++)
{
@@ -1578,12 +1515,12 @@ UINT32 konamigx_state::screen_update_konamigx_left(screen_device &screen, bitmap
}
}
- screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*dualscreen_left_tempbitmap), cliprect);
- copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
+ screen_update_konamigx( screen, downcast<bitmap_rgb32 &>(*m_dualscreen_left_tempbitmap), cliprect);
+ copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
}
else
{
- copybitmap(bitmap, *dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, *m_dualscreen_left_tempbitmap, 0, 0, 0, 0, cliprect);
}
return 0;
@@ -1593,13 +1530,13 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
{
if (m_konamigx_current_frame==1)
{
- copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
+ copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
}
else
{
int offset=0;
- if (konamigx_palformat==1)
+ if (m_konamigx_palformat==1)
{
for (offset=0;offset<0x4000/4;offset++)
{
@@ -1623,8 +1560,8 @@ UINT32 konamigx_state::screen_update_konamigx_right(screen_device &screen, bitma
}
}
- screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*dualscreen_right_tempbitmap), cliprect);
- copybitmap(bitmap, *dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
+ screen_update_konamigx(screen, downcast<bitmap_rgb32 &>(*m_dualscreen_right_tempbitmap), cliprect);
+ copybitmap(bitmap, *m_dualscreen_right_tempbitmap, 0, 0, 0, 0, cliprect);
}
return 0;
@@ -1697,21 +1634,21 @@ WRITE32_MEMBER(konamigx_state::konamigx_555_palette2_w)
WRITE32_MEMBER(konamigx_state::konamigx_tilebank_w)
{
if (ACCESSING_BITS_24_31)
- gx_tilebanks[offset*4] = (data>>24)&0xff;
+ m_gx_tilebanks[offset*4] = (data>>24)&0xff;
if (ACCESSING_BITS_16_23)
- gx_tilebanks[offset*4+1] = (data>>16)&0xff;
+ m_gx_tilebanks[offset*4+1] = (data>>16)&0xff;
if (ACCESSING_BITS_8_15)
- gx_tilebanks[offset*4+2] = (data>>8)&0xff;
+ m_gx_tilebanks[offset*4+2] = (data>>8)&0xff;
if (ACCESSING_BITS_0_7)
- gx_tilebanks[offset*4+3] = data&0xff;
+ m_gx_tilebanks[offset*4+3] = data&0xff;
}
// type 1 RAM-based PSAC tilemap
WRITE32_MEMBER(konamigx_state::konamigx_t1_psacmap_w)
{
COMBINE_DATA(&m_psacram[offset]);
- gx_psac_tilemap->mark_tile_dirty(offset/2);
- gx_psac_tilemap2->mark_tile_dirty(offset/2);
+ m_gx_psac_tilemap->mark_tile_dirty(offset/2);
+ m_gx_psac_tilemap2->mark_tile_dirty(offset/2);
}
// type 4 RAM-based PSAC tilemap
@@ -1719,6 +1656,6 @@ WRITE32_MEMBER(konamigx_state::konamigx_t4_psacmap_w)
{
COMBINE_DATA(&m_psacram[offset]);
- gx_psac_tilemap->mark_tile_dirty(offset*2);
- gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
+ m_gx_psac_tilemap->mark_tile_dirty(offset*2);
+ m_gx_psac_tilemap->mark_tile_dirty((offset*2)+1);
}