summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/taito_f3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/taito_f3.cpp')
-rw-r--r--src/mame/video/taito_f3.cpp3011
1 files changed, 1453 insertions, 1558 deletions
diff --git a/src/mame/video/taito_f3.cpp b/src/mame/video/taito_f3.cpp
index d9ac891fe9a..0dedc16f81f 100644
--- a/src/mame/video/taito_f3.cpp
+++ b/src/mame/video/taito_f3.cpp
@@ -211,6 +211,8 @@ Playfield tile info:
#include "includes/taito_f3.h"
#include "render.h"
+#include <algorithm>
+
#define VERBOSE 0
#define DARIUSG_KLUDGE
//#define DEBUG_F3 1
@@ -265,42 +267,6 @@ static const struct F3config f3_config_table[] =
};
-struct tempsprite
-{
- int code,color;
- int flipx,flipy;
- int x,y;
- int zoomx,zoomy;
- int pri;
-};
-
-struct f3_playfield_line_inf
-{
- int alpha_mode[256];
- int pri[256];
-
- /* use for draw_scanlines */
- uint16_t *src[256],*src_s[256],*src_e[256];
- uint8_t *tsrc[256],*tsrc_s[256];
- int x_count[256];
- uint32_t x_zoom[256];
- uint32_t clip0[256];
- uint32_t clip1[256];
-};
-
-struct f3_spritealpha_line_inf
-{
- uint16_t alpha_level[256];
- uint16_t spri[256];
- uint16_t sprite_alpha[256];
- uint32_t sprite_clip0[256];
- uint32_t sprite_clip1[256];
- int16_t clip0_l[256];
- int16_t clip0_r[256];
- int16_t clip1_l[256];
- int16_t clip1_r[256];
-};
-
/*
alpha_mode
---- --xx 0:disable 1:nomal 2:alpha 7000 3:alpha b000
@@ -327,6 +293,7 @@ pri_alp_bitmap
void taito_f3_state::device_post_load()
{
/* force a reread of the dynamic tiles in the pixel layer */
+ m_gfxdecode->gfx(0)->mark_all_dirty();
m_gfxdecode->gfx(3)->mark_all_dirty();
}
@@ -334,180 +301,140 @@ void taito_f3_state::device_post_load()
void taito_f3_state::print_debug_info(bitmap_rgb32 &bitmap)
{
-/* uint16_t *f3_line_ram = m_f3_line_ram.get();
+/* u16 *line_ram = m_line_ram;
int l[16];
char buf[64*16];
char *bufptr = buf;
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n",m_f3_control_0[0]>>6,m_f3_control_0[1]>>6,m_f3_control_0[2]>>6,m_f3_control_0[3]>>6);
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n",m_f3_control_0[4]>>7,m_f3_control_0[5]>>7,m_f3_control_0[6]>>7,m_f3_control_0[7]>>7);
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n",m_f3_control_1[0],m_f3_control_1[1],m_f3_control_1[2],m_f3_control_1[3]);
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n",m_f3_control_1[4],m_f3_control_1[5],m_f3_control_1[6],m_f3_control_1[7]);
-
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n",m_spriteram16_buffered[0],m_spriteram16_buffered[1],m_spriteram16_buffered[2],m_spriteram16_buffered[3],m_spriteram16_buffered[4],m_spriteram16_buffered[5],m_spriteram16_buffered[6],m_spriteram16_buffered[7]);
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n",m_spriteram16_buffered[8],m_spriteram16_buffered[9],m_spriteram16_buffered[10],m_spriteram16_buffered[11],m_spriteram16_buffered[12],m_spriteram16_buffered[13],m_spriteram16_buffered[14],m_spriteram16_buffered[15]);
- bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n",m_spriteram16_buffered[16],m_spriteram16_buffered[17],m_spriteram16_buffered[18],m_spriteram16_buffered[19],m_spriteram16_buffered[20],m_spriteram16_buffered[21],m_spriteram16_buffered[22],m_spriteram16_buffered[23]);
-
- l[0]=f3_line_ram[0x0040*2]&0xffff;
- l[1]=f3_line_ram[0x00c0*2]&0xffff;
- l[2]=f3_line_ram[0x0140*2]&0xffff;
- l[3]=f3_line_ram[0x01c0*2]&0xffff;
- bufptr += sprintf(bufptr,"Ctr1: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x0240*2]&0xffff;
- l[1]=f3_line_ram[0x02c0*2]&0xffff;
- l[2]=f3_line_ram[0x0340*2]&0xffff;
- l[3]=f3_line_ram[0x03c0*2]&0xffff;
- bufptr += sprintf(bufptr,"Ctr2: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x2c60*2]&0xffff;
- l[1]=f3_line_ram[0x2ce0*2]&0xffff;
- l[2]=f3_line_ram[0x2d60*2]&0xffff;
- l[3]=f3_line_ram[0x2de0*2]&0xffff;
- bufptr += sprintf(bufptr,"Pri : %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x2060*2]&0xffff;
- l[1]=f3_line_ram[0x20e0*2]&0xffff;
- l[2]=f3_line_ram[0x2160*2]&0xffff;
- l[3]=f3_line_ram[0x21e0*2]&0xffff;
- bufptr += sprintf(bufptr,"Zoom: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x2860*2]&0xffff;
- l[1]=f3_line_ram[0x28e0*2]&0xffff;
- l[2]=f3_line_ram[0x2960*2]&0xffff;
- l[3]=f3_line_ram[0x29e0*2]&0xffff;
- bufptr += sprintf(bufptr,"Line: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x1c60*2]&0xffff;
- l[1]=f3_line_ram[0x1ce0*2]&0xffff;
- l[2]=f3_line_ram[0x1d60*2]&0xffff;
- l[3]=f3_line_ram[0x1de0*2]&0xffff;
- bufptr += sprintf(bufptr,"Sprt: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x1860*2]&0xffff;
- l[1]=f3_line_ram[0x18e0*2]&0xffff;
- l[2]=f3_line_ram[0x1960*2]&0xffff;
- l[3]=f3_line_ram[0x19e0*2]&0xffff;
- bufptr += sprintf(bufptr,"Pivt: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x1060*2]&0xffff;
- l[1]=f3_line_ram[0x10e0*2]&0xffff;
- l[2]=f3_line_ram[0x1160*2]&0xffff;
- l[3]=f3_line_ram[0x11e0*2]&0xffff;
- bufptr += sprintf(bufptr,"Colm: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- l[0]=f3_line_ram[0x1460*2]&0xffff;
- l[1]=f3_line_ram[0x14e0*2]&0xffff;
- l[2]=f3_line_ram[0x1560*2]&0xffff;
- l[3]=f3_line_ram[0x15e0*2]&0xffff;
- bufptr += sprintf(bufptr,"5000: %04x %04x %04x %04x\n",l[0],l[1],l[2],l[3]);
-
- machine().ui().draw_text(&machine().render().ui_container(), buf, 60, 40);*/
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n", m_control_0[0] >> 6, m_control_0[1] >> 6, m_control_0[2] >> 6, m_control_0[3] >> 6);
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n", m_control_0[4] >> 7, m_control_0[5] >> 7, m_control_0[6] >> 7, m_control_0[7] >> 7);
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n", m_control_1[0], m_control_1[1], m_control_1[2], m_control_1[3]);
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X\n", m_control_1[4], m_control_1[5], m_control_1[6], m_control_1[7]);
+
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n", m_spriteram16_buffered[0], m_spriteram16_buffered[1], m_spriteram16_buffered[2], m_spriteram16_buffered[3], m_spriteram16_buffered[4], m_spriteram16_buffered[5], m_spriteram16_buffered[6], m_spriteram16_buffered[7]);
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n", m_spriteram16_buffered[8], m_spriteram16_buffered[9], m_spriteram16_buffered[10], m_spriteram16_buffered[11], m_spriteram16_buffered[12], m_spriteram16_buffered[13], m_spriteram16_buffered[14], m_spriteram16_buffered[15]);
+ bufptr += sprintf(bufptr,"%04X %04X %04X %04X %04X %04X %04X %04X\n", m_spriteram16_buffered[16], m_spriteram16_buffered[17], m_spriteram16_buffered[18], m_spriteram16_buffered[19], m_spriteram16_buffered[20], m_spriteram16_buffered[21], m_spriteram16_buffered[22], m_spriteram16_buffered[23]);
+
+ l[0] = line_ram[0x0040*2] & 0xffff;
+ l[1] = line_ram[0x00c0*2] & 0xffff;
+ l[2] = line_ram[0x0140*2] & 0xffff;
+ l[3] = line_ram[0x01c0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Ctr1: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x0240*2] & 0xffff;
+ l[1] = line_ram[0x02c0*2] & 0xffff;
+ l[2] = line_ram[0x0340*2] & 0xffff;
+ l[3] = line_ram[0x03c0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Ctr2: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x2c60*2] & 0xffff;
+ l[1] = line_ram[0x2ce0*2] & 0xffff;
+ l[2] = line_ram[0x2d60*2] & 0xffff;
+ l[3] = line_ram[0x2de0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Pri : %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x2060*2] & 0xffff;
+ l[1] = line_ram[0x20e0*2] & 0xffff;
+ l[2] = line_ram[0x2160*2] & 0xffff;
+ l[3] = line_ram[0x21e0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Zoom: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x2860*2] & 0xffff;
+ l[1] = line_ram[0x28e0*2] & 0xffff;
+ l[2] = line_ram[0x2960*2] & 0xffff;
+ l[3] = line_ram[0x29e0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Line: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x1c60*2] & 0xffff;
+ l[1] = line_ram[0x1ce0*2] & 0xffff;
+ l[2] = line_ram[0x1d60*2] & 0xffff;
+ l[3] = line_ram[0x1de0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Sprt: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x1860*2] & 0xffff;
+ l[1] = line_ram[0x18e0*2] & 0xffff;
+ l[2] = line_ram[0x1960*2] & 0xffff;
+ l[3] = line_ram[0x19e0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Pivt: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x1060*2] & 0xffff;
+ l[1] = line_ram[0x10e0*2] & 0xffff;
+ l[2] = line_ram[0x1160*2] & 0xffff;
+ l[3] = line_ram[0x11e0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"Colm: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ l[0] = line_ram[0x1460*2] & 0xffff;
+ l[1] = line_ram[0x14e0*2] & 0xffff;
+ l[2] = line_ram[0x1560*2] & 0xffff;
+ l[3] = line_ram[0x15e0*2] & 0xffff;
+ bufptr += sprintf(bufptr,"5000: %04x %04x %04x %04x\n", l[0], l[1], l[2], l[3]);
+
+ machine().ui().draw_text(&machine().render().ui_container(), buf, 60, 40); */
}
/******************************************************************************/
-inline void taito_f3_state::get_tile_info(tile_data &tileinfo, int tile_index, uint16_t *gfx_base)
+template<unsigned Layer>
+TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info)
{
- uint32_t tile=(gfx_base[tile_index*2+0]<<16)|(gfx_base[tile_index*2+1]&0xffff);
- uint8_t abtype=(tile>>(16+9)) & 1;
+ const u32 tile = (m_pf_data[Layer][tile_index * 2 + 0] << 16) | (m_pf_data[Layer][tile_index * 2 + 1] & 0xffff);
+ const u8 abtype = (tile >> (16 + 9)) & 1;
// tiles can be configured to use 4, 5, or 6 bpp data.
// if tiles use more than 4bpp, the bottom bits of the color code must be masked out.
// This fixes (at least) the rain in round 6 of Arabian Magic.
- uint8_t extra_planes = ((tile>>(16+10)) & 3); // 0 = 4bpp, 1 = 5bpp, 2 = unused?, 3 = 6bpp
+ const u8 extra_planes = ((tile >> (16 + 10)) & 3); // 0 = 4bpp, 1 = 5bpp, 2 = unused?, 3 = 6bpp
SET_TILE_INFO_MEMBER(1,
- tile&0xffff,
- (tile>>16) & 0x1ff & (~extra_planes),
- TILE_FLIPYX( tile >> 30 ));
- tileinfo.category = abtype&1; /* alpha blending type */
+ tile & 0xffff,
+ (tile >> 16) & 0x1ff & (~extra_planes),
+ TILE_FLIPYX(tile >> 30));
+ tileinfo.category = abtype & 1; /* alpha blending type */
tileinfo.pen_mask = (extra_planes << 4) | 0x0f;
}
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info1)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_1);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info2)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_2);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info3)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_3);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info4)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_4);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info5)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_5);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info6)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_6);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info7)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_7);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info8)
-{
- get_tile_info(tileinfo,tile_index,m_f3_pf_data_8);
-}
-
-TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info_vram)
+TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info_text)
{
- int vram_tile;
- int flags=0;
+ int flags = 0;
- vram_tile = (m_videoram[tile_index]&0xffff);
+ const u16 vram_tile = (m_textram[tile_index] & 0xffff);
- if (vram_tile&0x0100) flags|=TILE_FLIPX;
- if (vram_tile&0x8000) flags|=TILE_FLIPY;
+ if (vram_tile & 0x0100) flags |= TILE_FLIPX;
+ if (vram_tile & 0x8000) flags |= TILE_FLIPY;
SET_TILE_INFO_MEMBER(0,
- vram_tile&0xff,
- (vram_tile>>9)&0x3f,
+ vram_tile & 0xff,
+ (vram_tile >> 9) & 0x3f,
flags);
}
TILE_GET_INFO_MEMBER(taito_f3_state::get_tile_info_pixel)
{
- int vram_tile,col_off;
- int flags=0;
- int y_offs=(m_f3_control_1[5]&0x1ff);
- if (m_flipscreen) y_offs+=0x100;
+ int col_off;
+ int flags = 0;
+ int y_offs = (m_control_1[5] & 0x1ff);
+ if (m_flipscreen) y_offs += 0x100;
/* Colour is shared with VRAM layer */
- if ((((tile_index%32)*8 + y_offs)&0x1ff)>0xff)
- col_off=0x800+((tile_index%32)*0x40)+((tile_index&0xfe0)>>5);
+ if ((((tile_index & 0x1f) * 8 + y_offs) & 0x1ff) > 0xff)
+ col_off = 0x800 + ((tile_index & 0x1f) << 6) + ((tile_index & 0xfe0) >> 5);
else
- col_off=((tile_index%32)*0x40)+((tile_index&0xfe0)>>5);
+ col_off = ((tile_index & 0x1f) << 6) + ((tile_index & 0xfe0) >> 5);
- vram_tile = (m_videoram[col_off]&0xffff);
+ const u16 vram_tile = (m_textram[col_off] & 0xffff);
- if (vram_tile&0x0100) flags|=TILE_FLIPX;
- if (vram_tile&0x8000) flags|=TILE_FLIPY;
+ if (vram_tile & 0x0100) flags |= TILE_FLIPX;
+ if (vram_tile & 0x8000) flags |= TILE_FLIPY;
SET_TILE_INFO_MEMBER(3,
tile_index,
- (vram_tile>>9)&0x3f,
+ (vram_tile >> 9) & 0x3f,
flags);
}
/******************************************************************************/
-WRITE_LINE_MEMBER(taito_f3_state::screen_vblank_f3)
+WRITE_LINE_MEMBER(taito_f3_state::screen_vblank)
{
// rising edge
if (state)
@@ -518,13 +445,13 @@ WRITE_LINE_MEMBER(taito_f3_state::screen_vblank_f3)
{
get_sprite_info(m_spriteram16_buffered.get());
}
- memcpy(m_spriteram16_buffered.get(),m_spriteram.get(),0x10000);
+ memcpy(m_spriteram16_buffered.get(), m_spriteram.target(), 0x10000);
}
- else if (m_sprite_lag==1)
+ else if (m_sprite_lag == 1)
{
if (machine().video().skip_this_frame() == 0)
{
- get_sprite_info(m_spriteram.get());
+ get_sprite_info(m_spriteram.target());
}
}
}
@@ -532,17 +459,16 @@ WRITE_LINE_MEMBER(taito_f3_state::screen_vblank_f3)
void taito_f3_state::video_start()
{
- const struct F3config *pCFG=&f3_config_table[0];
- int i;
-
- m_f3_alpha_level_2as=127;
- m_f3_alpha_level_2ad=127;
- m_f3_alpha_level_3as=127;
- m_f3_alpha_level_3ad=127;
- m_f3_alpha_level_2bs=127;
- m_f3_alpha_level_2bd=127;
- m_f3_alpha_level_3bs=127;
- m_f3_alpha_level_3bd=127;
+ const struct F3config *pCFG = &f3_config_table[0];
+
+ m_alpha_level_2as = 127;
+ m_alpha_level_2ad = 127;
+ m_alpha_level_3as = 127;
+ m_alpha_level_3ad = 127;
+ m_alpha_level_2bs = 127;
+ m_alpha_level_2bd = 127;
+ m_alpha_level_3bs = 127;
+ m_alpha_level_3bd = 127;
m_alpha_level_last = -1;
m_pdest_2a = 0x10;
@@ -554,95 +480,88 @@ void taito_f3_state::video_start()
m_tr_3a = 0;
m_tr_3b = 1;
- m_spritelist=nullptr;
- m_spriteram16_buffered=nullptr;
- m_pf_line_inf=nullptr;
- m_tile_opaque_sp=nullptr;
+ m_spritelist = nullptr;
+ m_spriteram16_buffered = nullptr;
+ m_pf_line_inf = nullptr;
+ m_tile_opaque_sp = nullptr;
/* Setup individual game */
do {
- if (pCFG->name==m_f3_game)
+ if (pCFG->name == m_game)
{
break;
}
pCFG++;
- } while(pCFG->name);
-
- m_f3_game_config=pCFG;
-
- m_f3_vram = make_unique_clear<uint16_t[]>(0x2000/2);
- m_f3_pf_data = make_unique_clear<uint16_t[]>(0xc000/2);
- m_videoram = make_unique_clear<uint16_t[]>(0x2000/2);
- m_f3_line_ram = make_unique_clear<uint16_t[]>(0x10000/2);
- m_f3_pivot_ram = make_unique_clear<uint16_t[]>(0x10000/2);
- m_spriteram = make_unique_clear<uint16_t[]>(0x10000/2);
-
- if (m_f3_game_config->extend) {
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,16,16,64,32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,16,16,64,32);
- m_pf3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,16,16,64,32);
- m_pf4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,16,16,64,32);
-
- m_f3_pf_data_1=m_f3_pf_data.get()+(0x0000/2);
- m_f3_pf_data_2=m_f3_pf_data.get()+(0x2000/2);
- m_f3_pf_data_3=m_f3_pf_data.get()+(0x4000/2);
- m_f3_pf_data_4=m_f3_pf_data.get()+(0x6000/2);
-
- m_width_mask=0x3ff;
- m_twidth_mask=0x7f;
- m_twidth_mask_bit=7;
-
- m_pf1_tilemap->set_transparent_pen(0);
- m_pf2_tilemap->set_transparent_pen(0);
- m_pf3_tilemap->set_transparent_pen(0);
- m_pf4_tilemap->set_transparent_pen(0);
-
-
- } else {
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf5_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf6_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info6),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf7_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info7),this),TILEMAP_SCAN_ROWS,16,16,32,32);
- m_pf8_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info8),this),TILEMAP_SCAN_ROWS,16,16,32,32);
-
- m_f3_pf_data_1=m_f3_pf_data.get()+(0x0000/2);
- m_f3_pf_data_2=m_f3_pf_data.get()+(0x1000/2);
- m_f3_pf_data_3=m_f3_pf_data.get()+(0x2000/2);
- m_f3_pf_data_4=m_f3_pf_data.get()+(0x3000/2);
- m_f3_pf_data_5=m_f3_pf_data.get()+(0x4000/2);
- m_f3_pf_data_6=m_f3_pf_data.get()+(0x5000/2);
- m_f3_pf_data_7=m_f3_pf_data.get()+(0x6000/2);
- m_f3_pf_data_8=m_f3_pf_data.get()+(0x7000/2);
-
- m_width_mask=0x1ff;
- m_twidth_mask=0x3f;
- m_twidth_mask_bit=6;
-
- m_pf1_tilemap->set_transparent_pen(0);
- m_pf2_tilemap->set_transparent_pen(0);
- m_pf3_tilemap->set_transparent_pen(0);
- m_pf4_tilemap->set_transparent_pen(0);
- m_pf5_tilemap->set_transparent_pen(0);
- m_pf6_tilemap->set_transparent_pen(0);
- m_pf7_tilemap->set_transparent_pen(0);
- m_pf8_tilemap->set_transparent_pen(0);
+ } while (pCFG->name);
+
+ m_game_config=pCFG;
+
+ if (m_game_config->extend)
+ {
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
+ m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<2>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
+ m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<3>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32);
+
+ m_pf_data[0] = m_pf_ram + (0x0000 / 2);
+ m_pf_data[1] = m_pf_ram + (0x2000 / 2);
+ m_pf_data[2] = m_pf_ram + (0x4000 / 2);
+ m_pf_data[3] = m_pf_ram + (0x6000 / 2);
+
+ m_width_mask = 0x3ff;
+ m_twidth_mask = 0x7f;
+ m_twidth_mask_bit = 7;
+
+ m_tilemap[0]->set_transparent_pen(0);
+ m_tilemap[1]->set_transparent_pen(0);
+ m_tilemap[2]->set_transparent_pen(0);
+ m_tilemap[3]->set_transparent_pen(0);
+ }
+ else
+ {
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<2>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<3>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<4>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<5>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[6] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<6>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+ m_tilemap[7] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<7>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32);
+
+ m_pf_data[0] = m_pf_ram + (0x0000 / 2);
+ m_pf_data[1] = m_pf_ram + (0x1000 / 2);
+ m_pf_data[2] = m_pf_ram + (0x2000 / 2);
+ m_pf_data[3] = m_pf_ram + (0x3000 / 2);
+ m_pf_data[4] = m_pf_ram + (0x4000 / 2);
+ m_pf_data[5] = m_pf_ram + (0x5000 / 2);
+ m_pf_data[6] = m_pf_ram + (0x6000 / 2);
+ m_pf_data[7] = m_pf_ram + (0x7000 / 2);
+
+ m_width_mask = 0x1ff;
+ m_twidth_mask = 0x3f;
+ m_twidth_mask_bit = 6;
+
+ m_tilemap[0]->set_transparent_pen(0);
+ m_tilemap[1]->set_transparent_pen(0);
+ m_tilemap[2]->set_transparent_pen(0);
+ m_tilemap[3]->set_transparent_pen(0);
+ m_tilemap[4]->set_transparent_pen(0);
+ m_tilemap[5]->set_transparent_pen(0);
+ m_tilemap[6]->set_transparent_pen(0);
+ m_tilemap[7]->set_transparent_pen(0);
}
- m_spriteram16_buffered = std::make_unique<uint16_t[]>(0x10000/2);
+ m_spriteram16_buffered = std::make_unique<u16[]>(0x10000 / 2);
m_spritelist = auto_alloc_array(machine(), struct tempsprite, 0x400);
m_sprite_end = m_spritelist;
- m_vram_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_vram),this),TILEMAP_SCAN_ROWS,8,8,64,64);
- m_pixel_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_pixel),this),TILEMAP_SCAN_COLS,8,8,64,32);
+ m_vram_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_text), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_pixel_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_pixel), this), TILEMAP_SCAN_COLS, 8, 8, 64, 32);
m_pf_line_inf = auto_alloc_array(machine(), struct f3_playfield_line_inf, 5);
m_sa_line_inf = auto_alloc_array(machine(), struct f3_spritealpha_line_inf, 1);
m_screen->register_screen_bitmap(m_pri_alp_bitmap);
- m_tile_opaque_sp = std::make_unique<uint8_t[]>(m_gfxdecode->gfx(2)->elements());
- for (i=0; i<8; i++)
- m_tile_opaque_pf[i] = std::make_unique<uint8_t[]>(m_gfxdecode->gfx(1)->elements());
-
+ m_tile_opaque_sp = std::make_unique<u8[]>(m_gfxdecode->gfx(2)->elements());
+ for (int i = 0; i < 8; i++)
+ m_tile_opaque_pf[i] = std::make_unique<u8[]>(m_gfxdecode->gfx(1)->elements());
m_vram_layer->set_transparent_pen(0);
m_pixel_layer->set_transparent_pen(0);
@@ -653,77 +572,64 @@ void taito_f3_state::video_start()
m_gfxdecode->gfx(2)->set_granularity(16);
m_flipscreen = 0;
- memset(m_spriteram16_buffered.get(),0,0x10000);
- memset(m_spriteram.get(),0,0x10000);
+ memset(m_spriteram16_buffered.get(), 0, 0x10000);
+ memset(&m_spriteram[0], 0, 0x10000);
- save_pointer(NAME(m_videoram), 0x2000/2);
- save_pointer(NAME(m_spriteram), 0x10000/2);
- save_pointer(NAME(m_f3_vram), 0x2000/2);
- save_pointer(NAME(m_f3_pf_data), 0xc000/2);
- save_pointer(NAME(m_f3_line_ram), 0x10000/2);
- save_pointer(NAME(m_f3_pivot_ram), 0x10000/2);
+ save_item(NAME(m_control_0));
+ save_item(NAME(m_control_1));
- save_item(NAME(m_f3_control_0));
- save_item(NAME(m_f3_control_1));
+ m_gfxdecode->gfx(0)->set_source((u8 *)m_charram.target());
+ m_gfxdecode->gfx(3)->set_source((u8 *)m_pivot_ram.target());
- m_gfxdecode->gfx(0)->set_source((uint8_t *)m_f3_vram.get());
- m_gfxdecode->gfx(3)->set_source((uint8_t *)m_f3_pivot_ram.get());
-
- m_sprite_lag=m_f3_game_config->sprite_lag;
+ m_sprite_lag = m_game_config->sprite_lag;
init_alpha_blend_func();
{
gfx_element *sprite_gfx = m_gfxdecode->gfx(2);
- int c;
- for (c = 0;c < sprite_gfx->elements();c++)
+ for (int c = 0; c < sprite_gfx->elements(); c++)
{
- int x,y;
- int chk_trans_or_opa=0;
- const uint8_t *dp = sprite_gfx->get_data(c);
- for (y = 0;y < sprite_gfx->height();y++)
+ int chk_trans_or_opa = 0;
+ const u8 *dp = sprite_gfx->get_data(c);
+ for (int y = 0; y < sprite_gfx->height(); y++)
{
- for (x = 0;x < sprite_gfx->width();x++)
+ for (int x = 0; x < sprite_gfx->width(); x++)
{
- if(!dp[x]) chk_trans_or_opa|=2;
- else chk_trans_or_opa|=1;
+ if (!dp[x]) chk_trans_or_opa |= 2;
+ else chk_trans_or_opa |= 1;
}
dp += sprite_gfx->rowbytes();
}
- if(chk_trans_or_opa==1) m_tile_opaque_sp[c]=1;
- else m_tile_opaque_sp[c]=0;
+ if (chk_trans_or_opa == 1) m_tile_opaque_sp[c] = 1;
+ else m_tile_opaque_sp[c] = 0;
}
}
-
{
gfx_element *pf_gfx = m_gfxdecode->gfx(1);
- int c;
- for (c = 0;c < pf_gfx->elements();c++)
+ for (int c = 0; c < pf_gfx->elements(); c++)
{
- int x,y;
- int extra_planes; /* 0 = 4bpp, 1=5bpp, 2=?, 3=6bpp */
-
- for (extra_planes=0; extra_planes<4; extra_planes++)
+ for (int extra_planes = 0; extra_planes < 4; extra_planes++)
{
- int chk_trans_or_opa=0;
- uint8_t extra_mask = ((extra_planes << 4) | 0x0f);
- const uint8_t *dp = pf_gfx->get_data(c);
+ int chk_trans_or_opa = 0;
+ /* 0 = 4bpp, 1=5bpp, 2=?, 3=6bpp */
+ const u8 extra_mask = ((extra_planes << 4) | 0x0f);
+ const u8 *dp = pf_gfx->get_data(c);
- for (y = 0;y < pf_gfx->height();y++)
+ for (int y = 0; y < pf_gfx->height(); y++)
{
- for (x = 0;x < pf_gfx->width();x++)
+ for (int x = 0; x < pf_gfx->width(); x++)
{
- if(!(dp[x] & extra_mask))
- chk_trans_or_opa|=2;
+ if (!(dp[x] & extra_mask))
+ chk_trans_or_opa |= 2;
else
- chk_trans_or_opa|=1;
+ chk_trans_or_opa |= 1;
}
dp += pf_gfx->rowbytes();
}
- m_tile_opaque_pf[extra_planes][c]=chk_trans_or_opa;
+ m_tile_opaque_pf[extra_planes][c] = chk_trans_or_opa;
}
}
}
@@ -731,103 +637,97 @@ void taito_f3_state::video_start()
/******************************************************************************/
-READ16_MEMBER(taito_f3_state::f3_pf_data_r)
+u16 taito_f3_state::pf_ram_r(offs_t offset)
{
- return m_f3_pf_data[offset];
+ return m_pf_ram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_pf_data_w)
+void taito_f3_state::pf_ram_w(offs_t offset, u16 data, u16 mem_mask)
{
- COMBINE_DATA(&m_f3_pf_data[offset]);
-
- if (m_f3_game_config->extend) {
- if (offset<0x1000) m_pf1_tilemap->mark_tile_dirty((offset & 0xfff) >> 1);
- else if (offset<0x2000) m_pf2_tilemap->mark_tile_dirty((offset & 0xfff) >> 1);
- else if (offset<0x3000) m_pf3_tilemap->mark_tile_dirty((offset & 0xfff) >> 1);
- else if (offset<0x4000) m_pf4_tilemap->mark_tile_dirty((offset & 0xfff) >> 1);
- } else {
- if (offset<0x0800) m_pf1_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x1000) m_pf2_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x1800) m_pf3_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x2000) m_pf4_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x2800) m_pf5_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x3000) m_pf6_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x3800) m_pf7_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
- else if (offset<0x4000) m_pf8_tilemap->mark_tile_dirty((offset & 0x7ff) >> 1);
+ COMBINE_DATA(&m_pf_ram[offset]);
+
+ if (m_game_config->extend)
+ {
+ if (offset < 0x4000)
+ m_tilemap[offset >> 12]->mark_tile_dirty((offset & 0xfff) >> 1);
+ }
+ else
+ {
+ if (offset < 0x4000)
+ m_tilemap[offset >> 11]->mark_tile_dirty((offset & 0x7ff) >> 1);
}
}
-WRITE16_MEMBER(taito_f3_state::f3_control_0_w)
+void taito_f3_state::control_0_w(offs_t offset, u16 data, u16 mem_mask)
{
- COMBINE_DATA(&m_f3_control_0[offset]);
+ COMBINE_DATA(&m_control_0[offset]);
}
-WRITE16_MEMBER(taito_f3_state::f3_control_1_w)
+void taito_f3_state::control_1_w(offs_t offset, u16 data, u16 mem_mask)
{
- COMBINE_DATA(&m_f3_control_1[offset]);
+ COMBINE_DATA(&m_control_1[offset]);
}
-READ16_MEMBER(taito_f3_state::f3_spriteram_r)
+u16 taito_f3_state::spriteram_r(offs_t offset)
{
return m_spriteram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_spriteram_w)
+void taito_f3_state::spriteram_w(offs_t offset, u16 data, u16 mem_mask)
{
COMBINE_DATA(&m_spriteram[offset]);
}
-READ16_MEMBER(taito_f3_state::f3_videoram_r)
+u16 taito_f3_state::textram_r(offs_t offset)
{
- return m_videoram[offset];
+ return m_textram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_videoram_w)
+void taito_f3_state::textram_w(offs_t offset, u16 data, u16 mem_mask)
{
- int tile,col_off;
- COMBINE_DATA(&m_videoram[offset]);
+ COMBINE_DATA(&m_textram[offset]);
m_vram_layer->mark_tile_dirty(offset);
- //m_vram_layer->mark_tile_dirty(offset+1);
+ //m_vram_layer->mark_tile_dirty(offset + 1);
- if (offset>0x7ff) offset-=0x800;
+ if (offset > 0x7ff) offset -= 0x800;
- tile=offset;
- col_off=((tile&0x3f)*32)+((tile&0xfc0)>>6);
+ const int tile = offset;
+ const int col_off = ((tile & 0x3f) << 5) + ((tile & 0xfc0) >> 6);
m_pixel_layer->mark_tile_dirty(col_off);
//m_pixel_layer->mark_tile_dirty(col_off+32);
}
-READ16_MEMBER(taito_f3_state::f3_vram_r)
+u16 taito_f3_state::charram_r(offs_t offset)
{
- return m_f3_vram[offset];
+ return m_charram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_vram_w)
+void taito_f3_state::charram_w(offs_t offset, u16 data, u16 mem_mask)
{
- COMBINE_DATA(&m_f3_vram[offset]);
- m_gfxdecode->gfx(0)->mark_dirty(offset/16);
+ COMBINE_DATA(&m_charram[offset]);
+ m_gfxdecode->gfx(0)->mark_dirty(offset >> 4);
}
-READ16_MEMBER(taito_f3_state::f3_pivot_r)
+u16 taito_f3_state::pivot_r(offs_t offset)
{
- return m_f3_pivot_ram[offset];
+ return m_pivot_ram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_pivot_w)
+void taito_f3_state::pivot_w(offs_t offset, u16 data, u16 mem_mask)
{
- COMBINE_DATA(&m_f3_pivot_ram[offset]);
- m_gfxdecode->gfx(3)->mark_dirty(offset/16);
+ COMBINE_DATA(&m_pivot_ram[offset]);
+ m_gfxdecode->gfx(3)->mark_dirty(offset >> 4);
}
-READ16_MEMBER(taito_f3_state::f3_lineram_r)
+u16 taito_f3_state::lineram_r(offs_t offset)
{
- return m_f3_line_ram[offset];
+ return m_line_ram[offset];
}
-WRITE16_MEMBER(taito_f3_state::f3_lineram_w)
+void taito_f3_state::lineram_w(offs_t offset, u16 data, u16 mem_mask)
{
#ifdef UNUSED_FUNCTION
/* DariusGX has an interesting bug at the start of Round D - the clearing of lineram
@@ -840,111 +740,123 @@ WRITE16_MEMBER(taito_f3_state::f3_lineram_w)
* fwiw PC=0x1768a0/0x1768a4 is where the game clears lineram in round D, which is a
* move.w Dn, (An,D7.w*2) , a kind of opcode that could've been bugged back then.
*/
- if (m_f3_game==DARIUSG) {
+ if (m_game == DARIUSG)
+ {
if (m_f3_skip_this_frame)
return;
- if (offset==0xb000/2 && data==0x003f) {
- m_f3_skip_this_frame=1;
+ if (offset == 0xb000 / 2 && data == 0x003f)
+ {
+ m_f3_skip_this_frame = 1;
return;
}
}
#endif
- COMBINE_DATA(&m_f3_line_ram[offset]);
+ COMBINE_DATA(&m_line_ram[offset]);
}
-WRITE32_MEMBER(taito_f3_state::f3_palette_24bit_w)
+void taito_f3_state::palette_24bit_w(offs_t offset, u32 data, u32 mem_mask)
{
- int r,g,b;
+ int r, g, b;
COMBINE_DATA(&m_paletteram32[offset]);
/* 12 bit palette games - there has to be a palette select bit somewhere */
- if (m_f3_game==SPCINVDX || m_f3_game==RIDINGF || m_f3_game==ARABIANM || m_f3_game==RINGRAGE) {
+ if (m_game == SPCINVDX || m_game == RIDINGF || m_game == ARABIANM || m_game == RINGRAGE)
+ {
b = 15 * ((m_paletteram32[offset] >> 4) & 0xf);
g = 15 * ((m_paletteram32[offset] >> 8) & 0xf);
r = 15 * ((m_paletteram32[offset] >> 12) & 0xf);
}
/* This is weird - why are only the sprites and VRAM palettes 21 bit? */
- else if (m_f3_game==CLEOPATR) {
- if (offset<0x100 || offset>0x1000) {
- r = ((m_paletteram32[offset] >>16) & 0x7f)<<1;
- g = ((m_paletteram32[offset] >> 8) & 0x7f)<<1;
- b = ((m_paletteram32[offset] >> 0) & 0x7f)<<1;
- } else {
- r = (m_paletteram32[offset] >>16) & 0xff;
+ else if (m_game == CLEOPATR)
+ {
+ if (offset < 0x100 || offset > 0x1000)
+ {
+ r = ((m_paletteram32[offset] >> 16) & 0x7f) << 1;
+ g = ((m_paletteram32[offset] >> 8) & 0x7f) << 1;
+ b = ((m_paletteram32[offset] >> 0) & 0x7f) << 1;
+ }
+ else
+ {
+ r = (m_paletteram32[offset] >> 16) & 0xff;
g = (m_paletteram32[offset] >> 8) & 0xff;
b = (m_paletteram32[offset] >> 0) & 0xff;
}
}
/* Another weird couple - perhaps this is alpha blending related? */
- else if (m_f3_game==TWINQIX || m_f3_game==RECALH) {
- if (offset>0x1c00) {
- r = ((m_paletteram32[offset] >>16) & 0x7f)<<1;
- g = ((m_paletteram32[offset] >> 8) & 0x7f)<<1;
- b = ((m_paletteram32[offset] >> 0) & 0x7f)<<1;
- } else {
- r = (m_paletteram32[offset] >>16) & 0xff;
+ else if (m_game == TWINQIX || m_game == RECALH)
+ {
+ if (offset > 0x1c00)
+ {
+ r = ((m_paletteram32[offset] >> 16) & 0x7f) << 1;
+ g = ((m_paletteram32[offset] >> 8) & 0x7f) << 1;
+ b = ((m_paletteram32[offset] >> 0) & 0x7f) << 1;
+ }
+ else
+ {
+ r = (m_paletteram32[offset] >> 16) & 0xff;
g = (m_paletteram32[offset] >> 8) & 0xff;
b = (m_paletteram32[offset] >> 0) & 0xff;
}
}
/* All other games - standard 24 bit palette */
- else {
- r = (m_paletteram32[offset] >>16) & 0xff;
+ else
+ {
+ r = (m_paletteram32[offset] >> 16) & 0xff;
g = (m_paletteram32[offset] >> 8) & 0xff;
b = (m_paletteram32[offset] >> 0) & 0xff;
}
- m_palette->set_pen_color(offset,rgb_t(r,g,b));
+ m_palette->set_pen_color(offset, rgb_t(r, g, b));
}
/******************************************************************************/
/*============================================================================*/
-#define SET_ALPHA_LEVEL(d,s) \
+#define SET_ALPHA_LEVEL(d, s) \
{ \
int level = s; \
- if(level == 0) level = -1; \
- d = level+1; \
-}
-
-inline void taito_f3_state::f3_alpha_set_level()
-{
-// SET_ALPHA_LEVEL(m_alpha_s_1_1, m_f3_alpha_level_2ad)
- SET_ALPHA_LEVEL(m_alpha_s_1_1, 255-m_f3_alpha_level_2as)
-// SET_ALPHA_LEVEL(m_alpha_s_1_2, m_f3_alpha_level_2bd)
- SET_ALPHA_LEVEL(m_alpha_s_1_2, 255-m_f3_alpha_level_2bs)
- SET_ALPHA_LEVEL(m_alpha_s_1_4, m_f3_alpha_level_3ad)
-// SET_ALPHA_LEVEL(m_alpha_s_1_5, m_f3_alpha_level_3ad*m_f3_alpha_level_2ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_1_5, m_f3_alpha_level_3ad*(255-m_f3_alpha_level_2as)/255)
-// SET_ALPHA_LEVEL(m_alpha_s_1_6, m_f3_alpha_level_3ad*m_f3_alpha_level_2bd/255)
- SET_ALPHA_LEVEL(m_alpha_s_1_6, m_f3_alpha_level_3ad*(255-m_f3_alpha_level_2bs)/255)
- SET_ALPHA_LEVEL(m_alpha_s_1_8, m_f3_alpha_level_3bd)
-// SET_ALPHA_LEVEL(m_alpha_s_1_9, m_f3_alpha_level_3bd*m_f3_alpha_level_2ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_1_9, m_f3_alpha_level_3bd*(255-m_f3_alpha_level_2as)/255)
-// SET_ALPHA_LEVEL(m_alpha_s_1_a, m_f3_alpha_level_3bd*m_f3_alpha_level_2bd/255)
- SET_ALPHA_LEVEL(m_alpha_s_1_a, m_f3_alpha_level_3bd*(255-m_f3_alpha_level_2bs)/255)
-
- SET_ALPHA_LEVEL(m_alpha_s_2a_0, m_f3_alpha_level_2as)
- SET_ALPHA_LEVEL(m_alpha_s_2a_4, m_f3_alpha_level_2as*m_f3_alpha_level_3ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_2a_8, m_f3_alpha_level_2as*m_f3_alpha_level_3bd/255)
-
- SET_ALPHA_LEVEL(m_alpha_s_2b_0, m_f3_alpha_level_2bs)
- SET_ALPHA_LEVEL(m_alpha_s_2b_4, m_f3_alpha_level_2bs*m_f3_alpha_level_3ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_2b_8, m_f3_alpha_level_2bs*m_f3_alpha_level_3bd/255)
-
- SET_ALPHA_LEVEL(m_alpha_s_3a_0, m_f3_alpha_level_3as)
- SET_ALPHA_LEVEL(m_alpha_s_3a_1, m_f3_alpha_level_3as*m_f3_alpha_level_2ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_3a_2, m_f3_alpha_level_3as*m_f3_alpha_level_2bd/255)
-
- SET_ALPHA_LEVEL(m_alpha_s_3b_0, m_f3_alpha_level_3bs)
- SET_ALPHA_LEVEL(m_alpha_s_3b_1, m_f3_alpha_level_3bs*m_f3_alpha_level_2ad/255)
- SET_ALPHA_LEVEL(m_alpha_s_3b_2, m_f3_alpha_level_3bs*m_f3_alpha_level_2bd/255)
+ if (level == 0) level = -1; \
+ d = level + 1; \
+}
+
+inline void taito_f3_state::alpha_set_level()
+{
+// SET_ALPHA_LEVEL(m_alpha_s_1_1, m_alpha_level_2ad)
+ SET_ALPHA_LEVEL(m_alpha_s_1_1, 255 - m_alpha_level_2as)
+// SET_ALPHA_LEVEL(m_alpha_s_1_2, m_alpha_level_2bd)
+ SET_ALPHA_LEVEL(m_alpha_s_1_2, 255 - m_alpha_level_2bs)
+ SET_ALPHA_LEVEL(m_alpha_s_1_4, m_alpha_level_3ad)
+// SET_ALPHA_LEVEL(m_alpha_s_1_5, m_alpha_level_3ad*m_alpha_level_2ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_1_5, m_alpha_level_3ad * (255 - m_alpha_level_2as) / 255)
+// SET_ALPHA_LEVEL(m_alpha_s_1_6, m_alpha_level_3ad*m_alpha_level_2bd / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_1_6, m_alpha_level_3ad * (255 - m_alpha_level_2bs) / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_1_8, m_alpha_level_3bd)
+// SET_ALPHA_LEVEL(m_alpha_s_1_9, m_alpha_level_3bd*m_alpha_level_2ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_1_9, m_alpha_level_3bd * (255 - m_alpha_level_2as) / 255)
+// SET_ALPHA_LEVEL(m_alpha_s_1_a, m_alpha_level_3bd*m_alpha_level_2bd / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_1_a, m_alpha_level_3bd * (255 - m_alpha_level_2bs) / 255)
+
+ SET_ALPHA_LEVEL(m_alpha_s_2a_0, m_alpha_level_2as)
+ SET_ALPHA_LEVEL(m_alpha_s_2a_4, m_alpha_level_2as * m_alpha_level_3ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_2a_8, m_alpha_level_2as * m_alpha_level_3bd / 255)
+
+ SET_ALPHA_LEVEL(m_alpha_s_2b_0, m_alpha_level_2bs)
+ SET_ALPHA_LEVEL(m_alpha_s_2b_4, m_alpha_level_2bs * m_alpha_level_3ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_2b_8, m_alpha_level_2bs * m_alpha_level_3bd / 255)
+
+ SET_ALPHA_LEVEL(m_alpha_s_3a_0, m_alpha_level_3as)
+ SET_ALPHA_LEVEL(m_alpha_s_3a_1, m_alpha_level_3as * m_alpha_level_2ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_3a_2, m_alpha_level_3as * m_alpha_level_2bd / 255)
+
+ SET_ALPHA_LEVEL(m_alpha_s_3b_0, m_alpha_level_3bs)
+ SET_ALPHA_LEVEL(m_alpha_s_3b_1, m_alpha_level_3bs * m_alpha_level_2ad / 255)
+ SET_ALPHA_LEVEL(m_alpha_s_3b_2, m_alpha_level_3bs * m_alpha_level_2bd / 255)
}
#undef SET_ALPHA_LEVEL
@@ -954,21 +866,19 @@ inline void taito_f3_state::f3_alpha_set_level()
#define COLOR2 BYTE4_XOR_LE(1)
#define COLOR3 BYTE4_XOR_LE(2)
-
-
-inline void taito_f3_state::f3_alpha_blend32_s(int alphas, uint32_t s)
+inline void taito_f3_state::alpha_blend32_s(int alphas, u32 s)
{
- uint8_t *sc = (uint8_t *)&s;
- uint8_t *dc = (uint8_t *)&m_dval;
+ u8 *sc = (u8 *)&s;
+ u8 *dc = (u8 *)&m_dval;
dc[COLOR1] = (alphas * sc[COLOR1]) >> 8;
dc[COLOR2] = (alphas * sc[COLOR2]) >> 8;
dc[COLOR3] = (alphas * sc[COLOR3]) >> 8;
}
-inline void taito_f3_state::f3_alpha_blend32_d(int alphas, uint32_t s)
+inline void taito_f3_state::alpha_blend32_d(int alphas, u32 s)
{
- uint8_t *sc = (uint8_t *)&s;
- uint8_t *dc = (uint8_t *)&m_dval;
+ u8 *sc = (u8 *)&s;
+ u8 *dc = (u8 *)&m_dval;
dc[COLOR1] = m_add_sat[dc[COLOR1]][(alphas * sc[COLOR1]) >> 8];
dc[COLOR2] = m_add_sat[dc[COLOR2]][(alphas * sc[COLOR2]) >> 8];
dc[COLOR3] = m_add_sat[dc[COLOR3]][(alphas * sc[COLOR3]) >> 8];
@@ -976,474 +886,466 @@ inline void taito_f3_state::f3_alpha_blend32_d(int alphas, uint32_t s)
/*============================================================================*/
-inline void taito_f3_state::f3_alpha_blend_1_1(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_1,s);}
-inline void taito_f3_state::f3_alpha_blend_1_2(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_2,s);}
-inline void taito_f3_state::f3_alpha_blend_1_4(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_4,s);}
-inline void taito_f3_state::f3_alpha_blend_1_5(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_5,s);}
-inline void taito_f3_state::f3_alpha_blend_1_6(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_6,s);}
-inline void taito_f3_state::f3_alpha_blend_1_8(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_8,s);}
-inline void taito_f3_state::f3_alpha_blend_1_9(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_9,s);}
-inline void taito_f3_state::f3_alpha_blend_1_a(uint32_t s){f3_alpha_blend32_d(m_alpha_s_1_a,s);}
+inline void taito_f3_state::alpha_blend_1_1(u32 s) { alpha_blend32_d(m_alpha_s_1_1, s); }
+inline void taito_f3_state::alpha_blend_1_2(u32 s) { alpha_blend32_d(m_alpha_s_1_2, s); }
+inline void taito_f3_state::alpha_blend_1_4(u32 s) { alpha_blend32_d(m_alpha_s_1_4, s); }
+inline void taito_f3_state::alpha_blend_1_5(u32 s) { alpha_blend32_d(m_alpha_s_1_5, s); }
+inline void taito_f3_state::alpha_blend_1_6(u32 s) { alpha_blend32_d(m_alpha_s_1_6, s); }
+inline void taito_f3_state::alpha_blend_1_8(u32 s) { alpha_blend32_d(m_alpha_s_1_8, s); }
+inline void taito_f3_state::alpha_blend_1_9(u32 s) { alpha_blend32_d(m_alpha_s_1_9, s); }
+inline void taito_f3_state::alpha_blend_1_a(u32 s) { alpha_blend32_d(m_alpha_s_1_a, s); }
-inline void taito_f3_state::f3_alpha_blend_2a_0(uint32_t s){f3_alpha_blend32_s(m_alpha_s_2a_0,s);}
-inline void taito_f3_state::f3_alpha_blend_2a_4(uint32_t s){f3_alpha_blend32_d(m_alpha_s_2a_4,s);}
-inline void taito_f3_state::f3_alpha_blend_2a_8(uint32_t s){f3_alpha_blend32_d(m_alpha_s_2a_8,s);}
+inline void taito_f3_state::alpha_blend_2a_0(u32 s) { alpha_blend32_s(m_alpha_s_2a_0, s); }
+inline void taito_f3_state::alpha_blend_2a_4(u32 s) { alpha_blend32_d(m_alpha_s_2a_4, s); }
+inline void taito_f3_state::alpha_blend_2a_8(u32 s) { alpha_blend32_d(m_alpha_s_2a_8, s); }
-inline void taito_f3_state::f3_alpha_blend_2b_0(uint32_t s){f3_alpha_blend32_s(m_alpha_s_2b_0,s);}
-inline void taito_f3_state::f3_alpha_blend_2b_4(uint32_t s){f3_alpha_blend32_d(m_alpha_s_2b_4,s);}
-inline void taito_f3_state::f3_alpha_blend_2b_8(uint32_t s){f3_alpha_blend32_d(m_alpha_s_2b_8,s);}
+inline void taito_f3_state::alpha_blend_2b_0(u32 s) { alpha_blend32_s(m_alpha_s_2b_0, s); }
+inline void taito_f3_state::alpha_blend_2b_4(u32 s) { alpha_blend32_d(m_alpha_s_2b_4, s); }
+inline void taito_f3_state::alpha_blend_2b_8(u32 s) { alpha_blend32_d(m_alpha_s_2b_8, s); }
-inline void taito_f3_state::f3_alpha_blend_3a_0(uint32_t s){f3_alpha_blend32_s(m_alpha_s_3a_0,s);}
-inline void taito_f3_state::f3_alpha_blend_3a_1(uint32_t s){f3_alpha_blend32_d(m_alpha_s_3a_1,s);}
-inline void taito_f3_state::f3_alpha_blend_3a_2(uint32_t s){f3_alpha_blend32_d(m_alpha_s_3a_2,s);}
+inline void taito_f3_state::alpha_blend_3a_0(u32 s) { alpha_blend32_s(m_alpha_s_3a_0, s); }
+inline void taito_f3_state::alpha_blend_3a_1(u32 s) { alpha_blend32_d(m_alpha_s_3a_1, s); }
+inline void taito_f3_state::alpha_blend_3a_2(u32 s) { alpha_blend32_d(m_alpha_s_3a_2, s); }
-inline void taito_f3_state::f3_alpha_blend_3b_0(uint32_t s){f3_alpha_blend32_s(m_alpha_s_3b_0,s);}
-inline void taito_f3_state::f3_alpha_blend_3b_1(uint32_t s){f3_alpha_blend32_d(m_alpha_s_3b_1,s);}
-inline void taito_f3_state::f3_alpha_blend_3b_2(uint32_t s){f3_alpha_blend32_d(m_alpha_s_3b_2,s);}
+inline void taito_f3_state::alpha_blend_3b_0(u32 s) { alpha_blend32_s(m_alpha_s_3b_0, s); }
+inline void taito_f3_state::alpha_blend_3b_1(u32 s) { alpha_blend32_d(m_alpha_s_3b_1, s); }
+inline void taito_f3_state::alpha_blend_3b_2(u32 s) { alpha_blend32_d(m_alpha_s_3b_2, s); }
/*============================================================================*/
-int taito_f3_state::dpix_1_noalpha(uint32_t s_pix) {m_dval = s_pix; return 1;}
-int taito_f3_state::dpix_ret1(uint32_t s_pix) {return 1;}
-int taito_f3_state::dpix_ret0(uint32_t s_pix) {return 0;}
-int taito_f3_state::dpix_1_1(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_1(s_pix); return 1;}
-int taito_f3_state::dpix_1_2(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_2(s_pix); return 1;}
-int taito_f3_state::dpix_1_4(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_4(s_pix); return 1;}
-int taito_f3_state::dpix_1_5(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_5(s_pix); return 1;}
-int taito_f3_state::dpix_1_6(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_6(s_pix); return 1;}
-int taito_f3_state::dpix_1_8(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_8(s_pix); return 1;}
-int taito_f3_state::dpix_1_9(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_9(s_pix); return 1;}
-int taito_f3_state::dpix_1_a(uint32_t s_pix) {if(s_pix) f3_alpha_blend_1_a(s_pix); return 1;}
-
-int taito_f3_state::dpix_2a_0(uint32_t s_pix)
-{
- if(s_pix) f3_alpha_blend_2a_0(s_pix);
+int taito_f3_state::dpix_1_noalpha(u32 s_pix) { m_dval = s_pix; return 1; }
+int taito_f3_state::dpix_ret1(u32 s_pix) { return 1; }
+int taito_f3_state::dpix_ret0(u32 s_pix) { return 0; }
+int taito_f3_state::dpix_1_1(u32 s_pix) { if (s_pix) alpha_blend_1_1(s_pix); return 1; }
+int taito_f3_state::dpix_1_2(u32 s_pix) { if (s_pix) alpha_blend_1_2(s_pix); return 1; }
+int taito_f3_state::dpix_1_4(u32 s_pix) { if (s_pix) alpha_blend_1_4(s_pix); return 1; }
+int taito_f3_state::dpix_1_5(u32 s_pix) { if (s_pix) alpha_blend_1_5(s_pix); return 1; }
+int taito_f3_state::dpix_1_6(u32 s_pix) { if (s_pix) alpha_blend_1_6(s_pix); return 1; }
+int taito_f3_state::dpix_1_8(u32 s_pix) { if (s_pix) alpha_blend_1_8(s_pix); return 1; }
+int taito_f3_state::dpix_1_9(u32 s_pix) { if (s_pix) alpha_blend_1_9(s_pix); return 1; }
+int taito_f3_state::dpix_1_a(u32 s_pix) { if (s_pix) alpha_blend_1_a(s_pix); return 1; }
+
+int taito_f3_state::dpix_2a_0(u32 s_pix)
+{
+ if (s_pix) alpha_blend_2a_0(s_pix);
else m_dval = 0;
- if(m_pdest_2a) {m_pval |= m_pdest_2a;return 0;}
+ if (m_pdest_2a) { m_pval |= m_pdest_2a; return 0; }
return 1;
}
-int taito_f3_state::dpix_2a_4(uint32_t s_pix)
+int taito_f3_state::dpix_2a_4(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_2a_4(s_pix);
- if(m_pdest_2a) {m_pval |= m_pdest_2a;return 0;}
+ if (s_pix) alpha_blend_2a_4(s_pix);
+ if (m_pdest_2a) { m_pval |= m_pdest_2a; return 0; }
return 1;
}
-int taito_f3_state::dpix_2a_8(uint32_t s_pix)
+int taito_f3_state::dpix_2a_8(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_2a_8(s_pix);
- if(m_pdest_2a) {m_pval |= m_pdest_2a;return 0;}
+ if (s_pix) alpha_blend_2a_8(s_pix);
+ if (m_pdest_2a) { m_pval |= m_pdest_2a; return 0; }
return 1;
}
-int taito_f3_state::dpix_3a_0(uint32_t s_pix)
+int taito_f3_state::dpix_3a_0(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3a_0(s_pix);
+ if (s_pix) alpha_blend_3a_0(s_pix);
else m_dval = 0;
- if(m_pdest_3a) {m_pval |= m_pdest_3a;return 0;}
+ if (m_pdest_3a) { m_pval |= m_pdest_3a; return 0; }
return 1;
}
-int taito_f3_state::dpix_3a_1(uint32_t s_pix)
+int taito_f3_state::dpix_3a_1(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3a_1(s_pix);
- if(m_pdest_3a) {m_pval |= m_pdest_3a;return 0;}
+ if (s_pix) alpha_blend_3a_1(s_pix);
+ if (m_pdest_3a) { m_pval |= m_pdest_3a; return 0; }
return 1;
}
-int taito_f3_state::dpix_3a_2(uint32_t s_pix)
+int taito_f3_state::dpix_3a_2(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3a_2(s_pix);
- if(m_pdest_3a) {m_pval |= m_pdest_3a;return 0;}
+ if (s_pix) alpha_blend_3a_2(s_pix);
+ if (m_pdest_3a) { m_pval |= m_pdest_3a; return 0; }
return 1;
}
-int taito_f3_state::dpix_2b_0(uint32_t s_pix)
+int taito_f3_state::dpix_2b_0(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_2b_0(s_pix);
+ if (s_pix) alpha_blend_2b_0(s_pix);
else m_dval = 0;
- if(m_pdest_2b) {m_pval |= m_pdest_2b;return 0;}
+ if (m_pdest_2b) { m_pval |= m_pdest_2b; return 0; }
return 1;
}
-int taito_f3_state::dpix_2b_4(uint32_t s_pix)
+int taito_f3_state::dpix_2b_4(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_2b_4(s_pix);
- if(m_pdest_2b) {m_pval |= m_pdest_2b;return 0;}
+ if (s_pix) alpha_blend_2b_4(s_pix);
+ if (m_pdest_2b) { m_pval |= m_pdest_2b; return 0; }
return 1;
}
-int taito_f3_state::dpix_2b_8(uint32_t s_pix)
+int taito_f3_state::dpix_2b_8(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_2b_8(s_pix);
- if(m_pdest_2b) {m_pval |= m_pdest_2b;return 0;}
+ if (s_pix) alpha_blend_2b_8(s_pix);
+ if (m_pdest_2b) { m_pval |= m_pdest_2b; return 0; }
return 1;
}
-int taito_f3_state::dpix_3b_0(uint32_t s_pix)
+int taito_f3_state::dpix_3b_0(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3b_0(s_pix);
+ if (s_pix) alpha_blend_3b_0(s_pix);
else m_dval = 0;
- if(m_pdest_3b) {m_pval |= m_pdest_3b;return 0;}
+ if (m_pdest_3b) { m_pval |= m_pdest_3b; return 0; }
return 1;
}
-int taito_f3_state::dpix_3b_1(uint32_t s_pix)
+int taito_f3_state::dpix_3b_1(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3b_1(s_pix);
- if(m_pdest_3b) {m_pval |= m_pdest_3b;return 0;}
+ if (s_pix) alpha_blend_3b_1(s_pix);
+ if (m_pdest_3b) { m_pval |= m_pdest_3b; return 0; }
return 1;
}
-int taito_f3_state::dpix_3b_2(uint32_t s_pix)
+int taito_f3_state::dpix_3b_2(u32 s_pix)
{
- if(s_pix) f3_alpha_blend_3b_2(s_pix);
- if(m_pdest_3b) {m_pval |= m_pdest_3b;return 0;}
+ if (s_pix) alpha_blend_3b_2(s_pix);
+ if (m_pdest_3b) { m_pval |= m_pdest_3b; return 0; }
return 1;
}
-int taito_f3_state::dpix_2_0(uint32_t s_pix)
+int taito_f3_state::dpix_2_0(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_2b) {f3_alpha_blend_2b_0(s_pix);if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {f3_alpha_blend_2a_0(s_pix);if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { alpha_blend_2b_0(s_pix); if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { alpha_blend_2a_0(s_pix); if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
else
{
- if(tr2==m_tr_2b) {m_dval = 0;if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {m_dval = 0;if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { m_dval = 0; if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { m_dval = 0; if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
return 0;
}
-int taito_f3_state::dpix_2_4(uint32_t s_pix)
+int taito_f3_state::dpix_2_4(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_2b) {f3_alpha_blend_2b_4(s_pix);if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {f3_alpha_blend_2a_4(s_pix);if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { alpha_blend_2b_4(s_pix); if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { alpha_blend_2a_4(s_pix); if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
else
{
- if(tr2==m_tr_2b) {if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
return 0;
}
-int taito_f3_state::dpix_2_8(uint32_t s_pix)
+int taito_f3_state::dpix_2_8(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_2b) {f3_alpha_blend_2b_8(s_pix);if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {f3_alpha_blend_2a_8(s_pix);if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { alpha_blend_2b_8(s_pix); if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { alpha_blend_2a_8(s_pix); if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
else
{
- if(tr2==m_tr_2b) {if(m_pdest_2b) m_pval |= m_pdest_2b;else return 1;}
- else if(tr2==m_tr_2a) {if(m_pdest_2a) m_pval |= m_pdest_2a;else return 1;}
+ if (tr2 == m_tr_2b) { if (m_pdest_2b) m_pval |= m_pdest_2b; else return 1; }
+ else if (tr2 == m_tr_2a) { if (m_pdest_2a) m_pval |= m_pdest_2a; else return 1; }
}
return 0;
}
-int taito_f3_state::dpix_3_0(uint32_t s_pix)
+int taito_f3_state::dpix_3_0(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_3b) {f3_alpha_blend_3b_0(s_pix);if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {f3_alpha_blend_3a_0(s_pix);if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { alpha_blend_3b_0(s_pix); if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { alpha_blend_3a_0(s_pix); if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
else
{
- if(tr2==m_tr_3b) {m_dval = 0;if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {m_dval = 0;if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { m_dval = 0; if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { m_dval = 0; if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
return 0;
}
-int taito_f3_state::dpix_3_1(uint32_t s_pix)
+int taito_f3_state::dpix_3_1(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_3b) {f3_alpha_blend_3b_1(s_pix);if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {f3_alpha_blend_3a_1(s_pix);if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { alpha_blend_3b_1(s_pix); if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { alpha_blend_3a_1(s_pix); if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
else
{
- if(tr2==m_tr_3b) {if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
return 0;
}
-int taito_f3_state::dpix_3_2(uint32_t s_pix)
+int taito_f3_state::dpix_3_2(u32 s_pix)
{
- uint8_t tr2=m_tval&1;
- if(s_pix)
+ const u8 tr2 = m_tval & 1;
+ if (s_pix)
{
- if(tr2==m_tr_3b) {f3_alpha_blend_3b_2(s_pix);if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {f3_alpha_blend_3a_2(s_pix);if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { alpha_blend_3b_2(s_pix); if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { alpha_blend_3a_2(s_pix); if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
else
{
- if(tr2==m_tr_3b) {if(m_pdest_3b) m_pval |= m_pdest_3b;else return 1;}
- else if(tr2==m_tr_3a) {if(m_pdest_3a) m_pval |= m_pdest_3a;else return 1;}
+ if (tr2 == m_tr_3b) { if (m_pdest_3b) m_pval |= m_pdest_3b; else return 1; }
+ else if (tr2 == m_tr_3a) { if (m_pdest_3a) m_pval |= m_pdest_3a; else return 1; }
}
return 0;
}
-inline void taito_f3_state::dpix_1_sprite(uint32_t s_pix)
+inline void taito_f3_state::dpix_1_sprite(u32 s_pix)
{
- if(s_pix)
+ if (s_pix)
{
- uint8_t p1 = m_pval&0xf0;
- if (p1==0x10) f3_alpha_blend_1_1(s_pix);
- else if(p1==0x20) f3_alpha_blend_1_2(s_pix);
- else if(p1==0x40) f3_alpha_blend_1_4(s_pix);
- else if(p1==0x50) f3_alpha_blend_1_5(s_pix);
- else if(p1==0x60) f3_alpha_blend_1_6(s_pix);
- else if(p1==0x80) f3_alpha_blend_1_8(s_pix);
- else if(p1==0x90) f3_alpha_blend_1_9(s_pix);
- else if(p1==0xa0) f3_alpha_blend_1_a(s_pix);
+ const u8 p1 = m_pval & 0xf0;
+ if (p1 == 0x10) alpha_blend_1_1(s_pix);
+ else if (p1 == 0x20) alpha_blend_1_2(s_pix);
+ else if (p1 == 0x40) alpha_blend_1_4(s_pix);
+ else if (p1 == 0x50) alpha_blend_1_5(s_pix);
+ else if (p1 == 0x60) alpha_blend_1_6(s_pix);
+ else if (p1 == 0x80) alpha_blend_1_8(s_pix);
+ else if (p1 == 0x90) alpha_blend_1_9(s_pix);
+ else if (p1 == 0xa0) alpha_blend_1_a(s_pix);
}
}
-inline void taito_f3_state::dpix_bg(uint32_t bgcolor)
+inline void taito_f3_state::dpix_bg(u32 bgcolor)
{
- uint8_t p1 = m_pval&0xf0;
- if(!p1) m_dval = bgcolor;
- else if(p1==0x10) f3_alpha_blend_1_1(bgcolor);
- else if(p1==0x20) f3_alpha_blend_1_2(bgcolor);
- else if(p1==0x40) f3_alpha_blend_1_4(bgcolor);
- else if(p1==0x50) f3_alpha_blend_1_5(bgcolor);
- else if(p1==0x60) f3_alpha_blend_1_6(bgcolor);
- else if(p1==0x80) f3_alpha_blend_1_8(bgcolor);
- else if(p1==0x90) f3_alpha_blend_1_9(bgcolor);
- else if(p1==0xa0) f3_alpha_blend_1_a(bgcolor);
+ const u8 p1 = m_pval & 0xf0;
+ if (!p1) m_dval = bgcolor;
+ else if (p1 == 0x10) alpha_blend_1_1(bgcolor);
+ else if (p1 == 0x20) alpha_blend_1_2(bgcolor);
+ else if (p1 == 0x40) alpha_blend_1_4(bgcolor);
+ else if (p1 == 0x50) alpha_blend_1_5(bgcolor);
+ else if (p1 == 0x60) alpha_blend_1_6(bgcolor);
+ else if (p1 == 0x80) alpha_blend_1_8(bgcolor);
+ else if (p1 == 0x90) alpha_blend_1_9(bgcolor);
+ else if (p1 == 0xa0) alpha_blend_1_a(bgcolor);
}
/******************************************************************************/
void taito_f3_state::init_alpha_blend_func()
{
- m_dpix_n[0][0x0]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x1]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x2]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x3]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x4]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x5]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x6]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x7]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x8]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0x9]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xa]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xb]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xc]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xd]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xe]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[0][0xf]=&taito_f3_state::dpix_1_noalpha;
-
- m_dpix_n[1][0x0]=&taito_f3_state::dpix_1_noalpha;
- m_dpix_n[1][0x1]=&taito_f3_state::dpix_1_1;
- m_dpix_n[1][0x2]=&taito_f3_state::dpix_1_2;
- m_dpix_n[1][0x3]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0x4]=&taito_f3_state::dpix_1_4;
- m_dpix_n[1][0x5]=&taito_f3_state::dpix_1_5;
- m_dpix_n[1][0x6]=&taito_f3_state::dpix_1_6;
- m_dpix_n[1][0x7]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0x8]=&taito_f3_state::dpix_1_8;
- m_dpix_n[1][0x9]=&taito_f3_state::dpix_1_9;
- m_dpix_n[1][0xa]=&taito_f3_state::dpix_1_a;
- m_dpix_n[1][0xb]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0xc]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0xd]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0xe]=&taito_f3_state::dpix_ret1;
- m_dpix_n[1][0xf]=&taito_f3_state::dpix_ret1;
-
- m_dpix_n[2][0x0]=&taito_f3_state::dpix_2a_0;
- m_dpix_n[2][0x1]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x2]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x4]=&taito_f3_state::dpix_2a_4;
- m_dpix_n[2][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0x8]=&taito_f3_state::dpix_2a_8;
- m_dpix_n[2][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[2][0xf]=&taito_f3_state::dpix_ret0;
-
- m_dpix_n[3][0x0]=&taito_f3_state::dpix_3a_0;
- m_dpix_n[3][0x1]=&taito_f3_state::dpix_3a_1;
- m_dpix_n[3][0x2]=&taito_f3_state::dpix_3a_2;
- m_dpix_n[3][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x4]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x8]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[3][0xf]=&taito_f3_state::dpix_ret0;
-
- m_dpix_n[4][0x0]=&taito_f3_state::dpix_2b_0;
- m_dpix_n[4][0x1]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x2]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x4]=&taito_f3_state::dpix_2b_4;
- m_dpix_n[4][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0x8]=&taito_f3_state::dpix_2b_8;
- m_dpix_n[4][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[4][0xf]=&taito_f3_state::dpix_ret0;
-
- m_dpix_n[5][0x0]=&taito_f3_state::dpix_3b_0;
- m_dpix_n[5][0x1]=&taito_f3_state::dpix_3b_1;
- m_dpix_n[5][0x2]=&taito_f3_state::dpix_3b_2;
- m_dpix_n[5][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x4]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x8]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[5][0xf]=&taito_f3_state::dpix_ret0;
-
- m_dpix_n[6][0x0]=&taito_f3_state::dpix_2_0;
- m_dpix_n[6][0x1]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x2]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x4]=&taito_f3_state::dpix_2_4;
- m_dpix_n[6][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0x8]=&taito_f3_state::dpix_2_8;
- m_dpix_n[6][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[6][0xf]=&taito_f3_state::dpix_ret0;
-
- m_dpix_n[7][0x0]=&taito_f3_state::dpix_3_0;
- m_dpix_n[7][0x1]=&taito_f3_state::dpix_3_1;
- m_dpix_n[7][0x2]=&taito_f3_state::dpix_3_2;
- m_dpix_n[7][0x3]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x4]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x5]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x6]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x7]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x8]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0x9]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xa]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xb]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xc]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xd]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xe]=&taito_f3_state::dpix_ret0;
- m_dpix_n[7][0xf]=&taito_f3_state::dpix_ret0;
-
- for(int i = 0; i < 256; i++)
- for(int j = 0; j < 256; j++)
- m_add_sat[i][j] = (i + j < 256) ? i + j : 255;
+ m_dpix_n[0][0x0] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x1] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x2] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x3] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x4] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x5] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x6] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x7] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x8] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0x9] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xa] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xb] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xc] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xd] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xe] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[0][0xf] = &taito_f3_state::dpix_1_noalpha;
+
+ m_dpix_n[1][0x0] = &taito_f3_state::dpix_1_noalpha;
+ m_dpix_n[1][0x1] = &taito_f3_state::dpix_1_1;
+ m_dpix_n[1][0x2] = &taito_f3_state::dpix_1_2;
+ m_dpix_n[1][0x3] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0x4] = &taito_f3_state::dpix_1_4;
+ m_dpix_n[1][0x5] = &taito_f3_state::dpix_1_5;
+ m_dpix_n[1][0x6] = &taito_f3_state::dpix_1_6;
+ m_dpix_n[1][0x7] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0x8] = &taito_f3_state::dpix_1_8;
+ m_dpix_n[1][0x9] = &taito_f3_state::dpix_1_9;
+ m_dpix_n[1][0xa] = &taito_f3_state::dpix_1_a;
+ m_dpix_n[1][0xb] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0xc] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0xd] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0xe] = &taito_f3_state::dpix_ret1;
+ m_dpix_n[1][0xf] = &taito_f3_state::dpix_ret1;
+
+ m_dpix_n[2][0x0] = &taito_f3_state::dpix_2a_0;
+ m_dpix_n[2][0x1] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x2] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x4] = &taito_f3_state::dpix_2a_4;
+ m_dpix_n[2][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0x8] = &taito_f3_state::dpix_2a_8;
+ m_dpix_n[2][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[2][0xf] = &taito_f3_state::dpix_ret0;
+
+ m_dpix_n[3][0x0] = &taito_f3_state::dpix_3a_0;
+ m_dpix_n[3][0x1] = &taito_f3_state::dpix_3a_1;
+ m_dpix_n[3][0x2] = &taito_f3_state::dpix_3a_2;
+ m_dpix_n[3][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x4] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x8] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[3][0xf] = &taito_f3_state::dpix_ret0;
+
+ m_dpix_n[4][0x0] = &taito_f3_state::dpix_2b_0;
+ m_dpix_n[4][0x1] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x2] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x4] = &taito_f3_state::dpix_2b_4;
+ m_dpix_n[4][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0x8] = &taito_f3_state::dpix_2b_8;
+ m_dpix_n[4][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[4][0xf] = &taito_f3_state::dpix_ret0;
+
+ m_dpix_n[5][0x0] = &taito_f3_state::dpix_3b_0;
+ m_dpix_n[5][0x1] = &taito_f3_state::dpix_3b_1;
+ m_dpix_n[5][0x2] = &taito_f3_state::dpix_3b_2;
+ m_dpix_n[5][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x4] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x8] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[5][0xf] = &taito_f3_state::dpix_ret0;
+
+ m_dpix_n[6][0x0] = &taito_f3_state::dpix_2_0;
+ m_dpix_n[6][0x1] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x2] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x4] = &taito_f3_state::dpix_2_4;
+ m_dpix_n[6][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0x8] = &taito_f3_state::dpix_2_8;
+ m_dpix_n[6][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[6][0xf] = &taito_f3_state::dpix_ret0;
+
+ m_dpix_n[7][0x0] = &taito_f3_state::dpix_3_0;
+ m_dpix_n[7][0x1] = &taito_f3_state::dpix_3_1;
+ m_dpix_n[7][0x2] = &taito_f3_state::dpix_3_2;
+ m_dpix_n[7][0x3] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x4] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x5] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x6] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x7] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x8] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0x9] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xa] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xb] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xc] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xd] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xe] = &taito_f3_state::dpix_ret0;
+ m_dpix_n[7][0xf] = &taito_f3_state::dpix_ret0;
+
+ for (int i = 0; i < 256; i++)
+ for (int j = 0; j < 256; j++)
+ m_add_sat[i][j] = std::min(i + j, 255);
}
/******************************************************************************/
#define GET_PIXMAP_POINTER(pf_num) \
{ \
- const struct f3_playfield_line_inf *line_tmp=line_t[pf_num]; \
- m_src##pf_num=line_tmp->src[y]; \
- m_src_s##pf_num=line_tmp->src_s[y]; \
- m_src_e##pf_num=line_tmp->src_e[y]; \
- m_tsrc##pf_num=line_tmp->tsrc[y]; \
- m_tsrc_s##pf_num=line_tmp->tsrc_s[y]; \
- m_x_count##pf_num=line_tmp->x_count[y]; \
- m_x_zoom##pf_num=line_tmp->x_zoom[y]; \
- m_clip_al##pf_num=line_tmp->clip0[y]&0xffff; \
- m_clip_ar##pf_num=line_tmp->clip0[y]>>16; \
- m_clip_bl##pf_num=line_tmp->clip1[y]&0xffff; \
- m_clip_br##pf_num=line_tmp->clip1[y]>>16; \
+ const struct f3_playfield_line_inf *line_tmp = line_t[pf_num]; \
+ m_src[pf_num] = line_tmp->src[y]; \
+ m_src_s[pf_num] = line_tmp->src_s[y]; \
+ m_src_e[pf_num] = line_tmp->src_e[y]; \
+ m_tsrc[pf_num] = line_tmp->tsrc[y]; \
+ m_tsrc_s[pf_num] = line_tmp->tsrc_s[y]; \
+ m_x_count[pf_num] = line_tmp->x_count[y]; \
+ m_x_zoom[pf_num] = line_tmp->x_zoom[y]; \
+ m_clip_al[pf_num] = line_tmp->clip0[y] & 0xffff; \
+ m_clip_ar[pf_num] = line_tmp->clip0[y] >> 16; \
+ m_clip_bl[pf_num] = line_tmp->clip1[y] & 0xffff; \
+ m_clip_br[pf_num] = line_tmp->clip1[y] >> 16; \
}
#define CULC_PIXMAP_POINTER(pf_num) \
{ \
- m_x_count##pf_num += m_x_zoom##pf_num; \
- if(m_x_count##pf_num>>16) \
+ m_x_count[pf_num] += m_x_zoom[pf_num]; \
+ if (m_x_count[pf_num] >> 16) \
{ \
- m_x_count##pf_num &= 0xffff; \
- m_src##pf_num++; \
- m_tsrc##pf_num++; \
- if(m_src##pf_num==m_src_e##pf_num) {m_src##pf_num=m_src_s##pf_num; m_tsrc##pf_num=m_tsrc_s##pf_num;} \
+ m_x_count[pf_num] &= 0xffff; \
+ m_src[pf_num]++; \
+ m_tsrc[pf_num]++; \
+ if (m_src[pf_num] == m_src_e[pf_num]) { m_src[pf_num] = m_src_s[pf_num]; m_tsrc[pf_num] = m_tsrc_s[pf_num]; } \
} \
}
#define UPDATE_PIXMAP_SP(pf_num) \
- if(cx>=clip_als && cx<clip_ars && !(cx>=clip_bls && cx<clip_brs)) \
+ if (cx >= clip_als && cx < clip_ars && !(cx >= clip_bls && cx < clip_brs)) \
{ \
- sprite_pri=sprite[pf_num]&m_pval; \
- if(sprite_pri) \
+ sprite_pri = sprite[pf_num] & m_pval; \
+ if (sprite_pri) \
{ \
- if(sprite[pf_num]&0x100) break; \
- if(!m_dpix_sp[sprite_pri]) \
+ if (sprite[pf_num] & 0x100) break; \
+ if (!m_dpix_sp[sprite_pri]) \
{ \
- if(!(m_pval&0xf0)) break; \
- else {dpix_1_sprite(*dsti);*dsti=m_dval;break;} \
+ if (!(m_pval & 0xf0)) break; \
+ else { dpix_1_sprite(*dsti); *dsti = m_dval; break; } \
} \
- if((this->*m_dpix_sp[sprite_pri][m_pval>>4])(*dsti)) {*dsti=m_dval;break;} \
+ if ((this->*m_dpix_sp[sprite_pri][m_pval >> 4])(*dsti)) { *dsti = m_dval; break; } \
} \
}
#define UPDATE_PIXMAP_LP(pf_num) \
- if (cx>=m_clip_al##pf_num && cx<m_clip_ar##pf_num && !(cx>=m_clip_bl##pf_num && cx<m_clip_br##pf_num)) \
+ if (cx >= m_clip_al[pf_num] && cx < m_clip_ar[pf_num] && !(cx >= m_clip_bl[pf_num] && cx < m_clip_br[pf_num])) \
{ \
- m_tval=*m_tsrc##pf_num; \
- if(m_tval&0xf0) \
- if((this->*m_dpix_lp[pf_num][m_pval>>4])(clut[*m_src##pf_num])) {*dsti=m_dval;break;} \
+ m_tval = *m_tsrc[pf_num]; \
+ if (m_tval & 0xf0) \
+ if ((this->*m_dpix_lp[pf_num][m_pval >> 4])(clut[*m_src[pf_num]])) { *dsti = m_dval; break; } \
}
/*============================================================================*/
inline void taito_f3_state::draw_scanlines(
- bitmap_rgb32 &bitmap,int xsize,int16_t *draw_line_num,
+ bitmap_rgb32 &bitmap, int xsize, s16 *draw_line_num,
const struct f3_playfield_line_inf **line_t,
const int *sprite,
- uint32_t orient,
+ u32 orient,
int skip_layer_num)
{
const pen_t *clut = &m_palette->pen(0);
- uint32_t bgcolor=clut[0];
- int length;
-
- const int x=46;
+ const u32 bgcolor = clut[0];
+ const int x = 46;
-
-
-
-
- uint16_t clip_als=0, clip_ars=0, clip_bls=0, clip_brs=0;
-
- uint8_t *dstp0,*dstp;
+ u16 clip_als = 0, clip_ars = 0, clip_bls = 0, clip_brs = 0;
int yadv = bitmap.rowpixels();
int yadvp = m_pri_alp_bitmap.rowpixels();
- int i=0,y=draw_line_num[0];
+ int i = 0, y = draw_line_num[0];
int ty = y;
if (orient & ORIENTATION_FLIP_Y)
@@ -1453,34 +1355,33 @@ inline void taito_f3_state::draw_scanlines(
yadvp = -yadvp;
}
- dstp0 = &m_pri_alp_bitmap.pix8(ty, x);
+ u8 *dstp0 = &m_pri_alp_bitmap.pix8(ty, x);
- m_pdest_2a = m_f3_alpha_level_2ad ? 0x10 : 0;
- m_pdest_2b = m_f3_alpha_level_2bd ? 0x20 : 0;
- m_tr_2a =(m_f3_alpha_level_2as==0 && m_f3_alpha_level_2ad==255) ? -1 : 0;
- m_tr_2b =(m_f3_alpha_level_2bs==0 && m_f3_alpha_level_2bd==255) ? -1 : 1;
- m_pdest_3a = m_f3_alpha_level_3ad ? 0x40 : 0;
- m_pdest_3b = m_f3_alpha_level_3bd ? 0x80 : 0;
- m_tr_3a =(m_f3_alpha_level_3as==0 && m_f3_alpha_level_3ad==255) ? -1 : 0;
- m_tr_3b =(m_f3_alpha_level_3bs==0 && m_f3_alpha_level_3bd==255) ? -1 : 1;
+ m_pdest_2a = m_alpha_level_2ad ? 0x10 : 0;
+ m_pdest_2b = m_alpha_level_2bd ? 0x20 : 0;
+ m_tr_2a =(m_alpha_level_2as == 0 && m_alpha_level_2ad == 255) ? -1 : 0;
+ m_tr_2b =(m_alpha_level_2bs == 0 && m_alpha_level_2bd == 255) ? -1 : 1;
+ m_pdest_3a = m_alpha_level_3ad ? 0x40 : 0;
+ m_pdest_3b = m_alpha_level_3bd ? 0x80 : 0;
+ m_tr_3a =(m_alpha_level_3as == 0 && m_alpha_level_3ad == 255) ? -1 : 0;
+ m_tr_3b =(m_alpha_level_3bs == 0 && m_alpha_level_3bd == 255) ? -1 : 1;
{
- uint32_t *dsti0,*dsti;
- dsti0 = &bitmap.pix32(ty, x);
- while(1)
+ u32 *dsti0 = &bitmap.pix32(ty, x);
+ while (1)
{
- int cx=0;
+ int cx = 0;
- clip_als=m_sa_line_inf[0].sprite_clip0[y]&0xffff;
- clip_ars=m_sa_line_inf[0].sprite_clip0[y]>>16;
- clip_bls=m_sa_line_inf[0].sprite_clip1[y]&0xffff;
- clip_brs=m_sa_line_inf[0].sprite_clip1[y]>>16;
+ clip_als = m_sa_line_inf[0].sprite_clip0[y] & 0xffff;
+ clip_ars = m_sa_line_inf[0].sprite_clip0[y] >> 16;
+ clip_bls = m_sa_line_inf[0].sprite_clip1[y] & 0xffff;
+ clip_brs = m_sa_line_inf[0].sprite_clip1[y] >> 16;
- length=xsize;
- dsti = dsti0;
- dstp = dstp0;
+ int length = xsize;
+ u32 *dsti = dsti0;
+ u8 *dstp = dstp0;
- switch(skip_layer_num)
+ switch (skip_layer_num)
{
case 0: GET_PIXMAP_POINTER(0)
case 1: GET_PIXMAP_POINTER(1)
@@ -1491,11 +1392,11 @@ inline void taito_f3_state::draw_scanlines(
while (1)
{
- m_pval=*dstp;
- if (m_pval!=0xff)
+ m_pval = *dstp;
+ if (m_pval != 0xff)
{
- uint8_t sprite_pri;
- switch(skip_layer_num)
+ u8 sprite_pri;
+ switch (skip_layer_num)
{
case 0: UPDATE_PIXMAP_SP(0) UPDATE_PIXMAP_LP(0)
case 1: UPDATE_PIXMAP_SP(1) UPDATE_PIXMAP_LP(1)
@@ -1503,18 +1404,18 @@ inline void taito_f3_state::draw_scanlines(
case 3: UPDATE_PIXMAP_SP(3) UPDATE_PIXMAP_LP(3)
case 4: UPDATE_PIXMAP_SP(4) UPDATE_PIXMAP_LP(4)
case 5: UPDATE_PIXMAP_SP(5)
- if(!bgcolor) {if(!(m_pval&0xf0)) {*dsti=0;break;}}
+ if (!bgcolor) { if (!(m_pval & 0xf0)) { *dsti = 0; break; } }
else dpix_bg(bgcolor);
- *dsti=m_dval;
+ *dsti = m_dval;
}
}
- if(!(--length)) break;
+ if (!(--length)) break;
dsti++;
dstp++;
cx++;
- switch(skip_layer_num)
+ switch (skip_layer_num)
{
case 0: CULC_PIXMAP_POINTER(0)
case 1: CULC_PIXMAP_POINTER(1)
@@ -1525,8 +1426,8 @@ inline void taito_f3_state::draw_scanlines(
}
i++;
- if(draw_line_num[i]<0) break;
- if(draw_line_num[i]==y+1)
+ if (draw_line_num[i] < 0) break;
+ if (draw_line_num[i] == y + 1)
{
dsti0 += yadv;
dstp0 += yadvp;
@@ -1535,9 +1436,9 @@ inline void taito_f3_state::draw_scanlines(
}
else
{
- dsti0 += (draw_line_num[i]-y)*yadv;
- dstp0 += (draw_line_num[i]-y)*yadvp;
- y=draw_line_num[i];
+ dsti0 += (draw_line_num[i] - y) * yadv;
+ dstp0 += (draw_line_num[i] - y) * yadvp;
+ y = draw_line_num[i];
}
}
}
@@ -1550,175 +1451,170 @@ inline void taito_f3_state::draw_scanlines(
void taito_f3_state::visible_tile_check(
struct f3_playfield_line_inf *line_t,
int line,
- uint32_t x_index_fx,uint32_t y_index,
- uint16_t *f3_pf_data_n)
+ u32 x_index_fx,u32 y_index,
+ u16 *pf_data_n)
{
- uint16_t *pf_base;
- int i,trans_all,tile_index,tile_num;
- int alpha_type,alpha_mode;
- int opaque_all;
- int total_elements;
+ u16 *pf_base;
- alpha_mode=line_t->alpha_mode[line];
- if(!alpha_mode) return;
+ int alpha_mode = line_t->alpha_mode[line];
+ if (!alpha_mode) return;
- total_elements=m_gfxdecode->gfx(1)->elements();
+ const u32 total_elements = m_gfxdecode->gfx(1)->elements();
- tile_index=x_index_fx>>16;
- tile_num=(((line_t->x_zoom[line]*320+(x_index_fx & 0xffff)+0xffff)>>16)+(tile_index%16)+15)/16;
- tile_index/=16;
+ int tile_index = x_index_fx >> 16;
+ const int tile_num = (((line_t->x_zoom[line] * 320 + (x_index_fx & 0xffff) + 0xffff) >> 16) + (tile_index & 0xf) + 15) >> 4;
+ tile_index >>= 4;
if (m_flipscreen)
{
- pf_base=f3_pf_data_n+((31-(y_index/16))<<m_twidth_mask_bit);
- tile_index=(m_twidth_mask-tile_index)-tile_num+1;
+ pf_base = pf_data_n + ((31 - (y_index >> 4)) << m_twidth_mask_bit);
+ tile_index = (m_twidth_mask - tile_index) - tile_num + 1;
}
- else pf_base=f3_pf_data_n+((y_index/16)<<m_twidth_mask_bit);
-
+ else pf_base = pf_data_n + ((y_index >> 4) << m_twidth_mask_bit);
- trans_all=1;
- opaque_all=1;
- alpha_type=0;
- for(i=0;i<tile_num;i++)
+ bool trans_all = true;
+ bool opaque_all = true;
+ int alpha_type = 0;
+ for (int i = 0; i < tile_num; i++)
{
- uint32_t tile=(pf_base[(tile_index*2+0)&m_twidth_mask]<<16)|(pf_base[(tile_index*2+1)&m_twidth_mask]);
- uint8_t extra_planes = (tile>>(16+10)) & 3;
- if(tile&0xffff)
+ const u32 tile = (pf_base[(tile_index * 2 + 0) & m_twidth_mask] << 16) | (pf_base[(tile_index * 2 + 1) & m_twidth_mask]);
+ const u8 extra_planes = (tile >> (16 + 10)) & 3;
+ if (tile & 0xffff)
{
- trans_all=0;
- if(opaque_all)
+ trans_all = false;
+ if (opaque_all)
{
- if(m_tile_opaque_pf[extra_planes][(tile&0xffff)%total_elements]!=1) opaque_all=0;
+ if (m_tile_opaque_pf[extra_planes][(tile & 0xffff) % total_elements] != 1) opaque_all = false;
}
- if(alpha_mode==1)
+ if (alpha_mode == 1)
{
- if(!opaque_all) return;
+ if (!opaque_all) return;
}
else
{
- if(alpha_type!=3)
+ if (alpha_type != 3)
{
- if((tile>>(16+9))&1) alpha_type|=2;
- else alpha_type|=1;
+ if ((tile >> (16 + 9)) & 1) alpha_type |= 2;
+ else alpha_type |= 1;
}
- else if(!opaque_all) break;
+ else if (!opaque_all) break;
}
}
- else if(opaque_all) opaque_all=0;
+ else if (opaque_all) opaque_all = false;
tile_index++;
}
- if(trans_all) {line_t->alpha_mode[line]=0;return;}
+ if (trans_all) { line_t->alpha_mode[line] = 0; return; }
- if(alpha_mode>1)
+ if (alpha_mode > 1)
{
- line_t->alpha_mode[line]|=alpha_type<<4;
+ line_t->alpha_mode[line] |= alpha_type << 4;
}
- if(opaque_all)
- line_t->alpha_mode[line]|=0x80;
+ if (opaque_all)
+ line_t->alpha_mode[line] |= 0x80;
}
/******************************************************************************/
-void taito_f3_state::calculate_clip(int y, uint16_t pri, uint32_t* clip0, uint32_t* clip1, int* line_enable)
+void taito_f3_state::calculate_clip(int y, u16 pri, u32 *clip0, u32 *clip1, int *line_enable)
{
- const struct f3_spritealpha_line_inf *sa_line_t=&m_sa_line_inf[0];
+ const struct f3_spritealpha_line_inf *sa_line_t = &m_sa_line_inf[0];
switch (pri)
{
case 0x0100: /* Clip plane 1 enable */
{
if (sa_line_t->clip0_l[y] > sa_line_t->clip0_r[y])
- *line_enable=0;
+ *line_enable = 0;
else
- *clip0=(sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y]<<16);
- *clip1=0;
+ *clip0 = (sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y] << 16);
+ *clip1 = 0;
}
break;
case 0x0110: /* Clip plane 1 enable, inverted */
{
- *clip1=(sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y]<<16);
- *clip0=0x7fff0000;
+ *clip1 = (sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y] << 16);
+ *clip0 = 0x7fff0000;
}
break;
case 0x0200: /* Clip plane 2 enable */
{
if (sa_line_t->clip1_l[y] > sa_line_t->clip1_r[y])
- *line_enable=0;
+ *line_enable = 0;
else
- *clip0=(sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y]<<16);
- *clip1=0;
+ *clip0 = (sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y] << 16);
+ *clip1 = 0;
}
break;
case 0x0220: /* Clip plane 2 enable, inverted */
{
- *clip1=(sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y]<<16);
- *clip0=0x7fff0000;
+ *clip1 = (sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y] << 16);
+ *clip0 = 0x7fff0000;
}
break;
case 0x0300: /* Clip plane 1 & 2 enable */
{
- int clipl=0,clipr=0;
+ int clipl = 0, clipr = 0;
if (sa_line_t->clip1_l[y] > sa_line_t->clip0_l[y])
- clipl=sa_line_t->clip1_l[y];
+ clipl = sa_line_t->clip1_l[y];
else
- clipl=sa_line_t->clip0_l[y];
+ clipl = sa_line_t->clip0_l[y];
if (sa_line_t->clip1_r[y] < sa_line_t->clip0_r[y])
- clipr=sa_line_t->clip1_r[y];
+ clipr = sa_line_t->clip1_r[y];
else
- clipr=sa_line_t->clip0_r[y];
+ clipr = sa_line_t->clip0_r[y];
if (clipl > clipr)
- *line_enable=0;
+ *line_enable = 0;
else
- *clip0=(clipl) | (clipr<<16);
- *clip1=0;
+ *clip0 = (clipl) | (clipr << 16);
+ *clip1 = 0;
}
break;
case 0x0310: /* Clip plane 1 & 2 enable, plane 1 inverted */
{
if (sa_line_t->clip1_l[y] > sa_line_t->clip1_r[y])
- line_enable=nullptr;
+ line_enable = nullptr;
else
- *clip0=(sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y]<<16);
+ *clip0 = (sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y] << 16);
- *clip1=(sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y]<<16);
+ *clip1 = (sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y] << 16);
}
break;
case 0x0320: /* Clip plane 1 & 2 enable, plane 2 inverted */
{
if (sa_line_t->clip0_l[y] > sa_line_t->clip0_r[y])
- line_enable=nullptr;
+ line_enable = nullptr;
else
- *clip0=(sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y]<<16);
+ *clip0 = (sa_line_t->clip0_l[y]) | (sa_line_t->clip0_r[y] << 16);
- *clip1=(sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y]<<16);
+ *clip1 = (sa_line_t->clip1_l[y]) | (sa_line_t->clip1_r[y] << 16);
}
break;
case 0x0330: /* Clip plane 1 & 2 enable, both inverted */
{
- int clipl=0,clipr=0;
+ int clipl = 0, clipr = 0;
if (sa_line_t->clip1_l[y] < sa_line_t->clip0_l[y])
- clipl=sa_line_t->clip1_l[y];
+ clipl = sa_line_t->clip1_l[y];
else
- clipl=sa_line_t->clip0_l[y];
+ clipl = sa_line_t->clip0_l[y];
if (sa_line_t->clip1_r[y] > sa_line_t->clip0_r[y])
- clipr=sa_line_t->clip1_r[y];
+ clipr = sa_line_t->clip1_r[y];
else
- clipr=sa_line_t->clip0_r[y];
+ clipr = sa_line_t->clip0_r[y];
if (clipl > clipr)
- *line_enable=0;
+ *line_enable = 0;
else
- *clip1=(clipl) | (clipr<<16);
- *clip0=0x7fff0000;
+ *clip1 = (clipl) | (clipr << 16);
+ *clip0 = 0x7fff0000;
}
break;
default:
@@ -1729,241 +1625,245 @@ void taito_f3_state::calculate_clip(int y, uint16_t pri, uint32_t* clip0, uint32
void taito_f3_state::get_spritealphaclip_info()
{
- struct f3_spritealpha_line_inf *line_t=&m_sa_line_inf[0];
+ struct f3_spritealpha_line_inf *line_t = &m_sa_line_inf[0];
- int y,y_end,y_inc;
+ int y, y_end, y_inc;
- int spri_base,clip_base_low,clip_base_high,inc;
+ int spri_base, clip_base_low, clip_base_high, inc;
- uint16_t spri=0;
- uint16_t sprite_clip=0;
- uint16_t clip0_low=0, clip0_high=0, clip1_low=0;
- int alpha_level=0;
- uint16_t sprite_alpha=0;
+ u16 spri = 0;
+ u16 sprite_clip = 0;
+ u16 clip0_low = 0, clip0_high = 0, clip1_low = 0;
+ int alpha_level = 0;
+ u16 sprite_alpha = 0;
if (m_flipscreen)
{
- spri_base=0x77fe;
- clip_base_low=0x51fe;
- clip_base_high=0x45fe;
- inc=-2;
- y=255;
- y_end=-1;
- y_inc=-1;
+ spri_base = 0x77fe;
+ clip_base_low = 0x51fe;
+ clip_base_high = 0x45fe;
+ inc = -2;
+ y = 255;
+ y_end = -1;
+ y_inc = -1;
}
else
{
- spri_base=0x7600;
- clip_base_low=0x5000;
- clip_base_high=0x4400;
- inc=2;
- y=0;
- y_end=256;
- y_inc=1;
+ spri_base = 0x7600;
+ clip_base_low = 0x5000;
+ clip_base_high = 0x4400;
+ inc = 2;
+ y = 0;
+ y_end = 256;
+ y_inc = 1;
}
- while(y!=y_end)
+ while (y != y_end)
{
/* The zoom, column and row values can latch according to control ram */
{
- if (m_f3_line_ram[0x100+(y)]&1)
- clip0_low=(m_f3_line_ram[clip_base_low/2]>> 0)&0xffff;
- if (m_f3_line_ram[0x000+(y)]&4)
- clip0_high=(m_f3_line_ram[clip_base_high/2]>> 0)&0xffff;
- if (m_f3_line_ram[0x100+(y)]&2)
- clip1_low=(m_f3_line_ram[(clip_base_low+0x200)/2]>> 0)&0xffff;
-
- if (m_f3_line_ram[(0x0600/2)+(y)]&0x8)
- spri=m_f3_line_ram[spri_base/2]&0xffff;
- if (m_f3_line_ram[(0x0600/2)+(y)]&0x4)
- sprite_clip=m_f3_line_ram[(spri_base-0x200)/2]&0xffff;
- if (m_f3_line_ram[(0x0400/2)+(y)]&0x1)
- sprite_alpha=m_f3_line_ram[(spri_base-0x1600)/2]&0xffff;
- if (m_f3_line_ram[(0x0400/2)+(y)]&0x2)
- alpha_level=m_f3_line_ram[(spri_base-0x1400)/2]&0xffff;
+ if (m_line_ram[0x100 + y] & 1)
+ clip0_low = (m_line_ram[clip_base_low / 2] >> 0) & 0xffff;
+ if (m_line_ram[0x000 + y] & 4)
+ clip0_high = (m_line_ram[clip_base_high / 2] >> 0) & 0xffff;
+ if (m_line_ram[0x100 + y] & 2)
+ clip1_low = (m_line_ram[(clip_base_low + 0x200) / 2] >> 0) & 0xffff;
+
+ if (m_line_ram[(0x0600 / 2) + y] & 0x8)
+ spri = m_line_ram[spri_base / 2] & 0xffff;
+ if (m_line_ram[(0x0600 / 2) + y] & 0x4)
+ sprite_clip = m_line_ram[(spri_base-0x200) / 2] & 0xffff;
+ if (m_line_ram[(0x0400 / 2) + y] & 0x1)
+ sprite_alpha = m_line_ram[(spri_base-0x1600) / 2] & 0xffff;
+ if (m_line_ram[(0x0400 / 2) + y] & 0x2)
+ alpha_level = m_line_ram[(spri_base-0x1400) / 2] & 0xffff;
}
- line_t->alpha_level[y]=alpha_level;
- line_t->spri[y]=spri;
- line_t->sprite_alpha[y]=sprite_alpha;
- line_t->clip0_l[y]=((clip0_low&0xff)|((clip0_high&0x1000)>>4)) - 47;
- line_t->clip0_r[y]=(((clip0_low&0xff00)>>8)|((clip0_high&0x2000)>>5)) - 47;
- line_t->clip1_l[y]=((clip1_low&0xff)|((clip0_high&0x4000)>>6)) - 47;
- line_t->clip1_r[y]=(((clip1_low&0xff00)>>8)|((clip0_high&0x8000)>>7)) - 47;
- if (line_t->clip0_l[y]<0) line_t->clip0_l[y]=0;
- if (line_t->clip0_r[y]<0) line_t->clip0_r[y]=0;
- if (line_t->clip1_l[y]<0) line_t->clip1_l[y]=0;
- if (line_t->clip1_r[y]<0) line_t->clip1_r[y]=0;
+ line_t->alpha_level[y] = alpha_level;
+ line_t->spri[y] = spri;
+ line_t->sprite_alpha[y] = sprite_alpha;
+ line_t->clip0_l[y] = ((clip0_low & 0xff) | ((clip0_high & 0x1000) >> 4)) - 47;
+ line_t->clip0_r[y] = (((clip0_low & 0xff00) >> 8) | ((clip0_high & 0x2000) >> 5)) - 47;
+ line_t->clip1_l[y] = ((clip1_low & 0xff) | ((clip0_high & 0x4000) >> 6)) - 47;
+ line_t->clip1_r[y] = (((clip1_low & 0xff00) >> 8) | ((clip0_high & 0x8000) >> 7)) - 47;
+ if (line_t->clip0_l[y] < 0) line_t->clip0_l[y] = 0;
+ if (line_t->clip0_r[y] < 0) line_t->clip0_r[y] = 0;
+ if (line_t->clip1_l[y] < 0) line_t->clip1_l[y] = 0;
+ if (line_t->clip1_r[y] < 0) line_t->clip1_r[y] = 0;
/* Evaluate sprite clipping */
- if (sprite_clip&0x080)
+ if (sprite_clip & 0x080)
{
- line_t->sprite_clip0[y]=0x7fff7fff;
- line_t->sprite_clip1[y]=0;
+ line_t->sprite_clip0[y] = 0x7fff7fff;
+ line_t->sprite_clip1[y] = 0;
}
- else if (sprite_clip&0x33)
+ else if (sprite_clip & 0x33)
{
- int line_enable=1;
- calculate_clip(y, ((sprite_clip&0x33)<<4), &line_t->sprite_clip0[y], &line_t->sprite_clip1[y], &line_enable);
- if (line_enable==0)
- line_t->sprite_clip0[y]=0x7fff7fff;
+ int line_enable = 1;
+ calculate_clip(y, ((sprite_clip & 0x33) << 4), &line_t->sprite_clip0[y], &line_t->sprite_clip1[y], &line_enable);
+ if (line_enable == 0)
+ line_t->sprite_clip0[y] = 0x7fff7fff;
}
else
{
- line_t->sprite_clip0[y]=0x7fff0000;
- line_t->sprite_clip1[y]=0;
+ line_t->sprite_clip0[y] = 0x7fff0000;
+ line_t->sprite_clip1[y] = 0;
}
- spri_base+=inc;
- clip_base_low+=inc;
- clip_base_high+=inc;
- y +=y_inc;
+ spri_base += inc;
+ clip_base_low += inc;
+ clip_base_high += inc;
+ y += y_inc;
}
}
/* sx and sy are 16.16 fixed point numbers */
-void taito_f3_state::get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, uint16_t *f3_pf_data_n)
+void taito_f3_state::get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, u16 *pf_data_n)
{
- struct f3_playfield_line_inf *line_t=&m_pf_line_inf[pos];
+ struct f3_playfield_line_inf *line_t = &m_pf_line_inf[pos];
- int y,y_start,y_end,y_inc;
- int line_base,zoom_base,col_base,pri_base,inc;
+ int y_start, y_end, y_inc;
+ int line_base, zoom_base, col_base, pri_base, inc;
int line_enable;
- int colscroll=0,x_offset=0,line_zoom=0;
- uint32_t _y_zoom[256];
- uint16_t pri=0;
- int bit_select=1<<pos;
+ int colscroll = 0, x_offset = 0, line_zoom = 0;
+ u32 _y_zoom[256];
+ u16 pri = 0;
+ int bit_select = 1 << pos;
int _colscroll[256];
- uint32_t _x_offset[256];
+ u32 _x_offset[256];
int y_index_fx;
- sx+=((46<<16));
+ sx += ((46 << 16));
if (m_flipscreen)
{
- line_base=0xa1fe + (pos*0x200);
- zoom_base=0x81fe;// + (pos*0x200);
- col_base =0x41fe + (pos*0x200);
- pri_base =0xb1fe + (pos*0x200);
- inc=-2;
- y_start=255;
- y_end=-1;
- y_inc=-1;
-
- if (m_f3_game_config->extend) sx=-sx+(((188-512)&0xffff)<<16); else sx=-sx+(188<<16); /* Adjust for flipped scroll position */
- y_index_fx=-sy-(256<<16); /* Adjust for flipped scroll position */
+ line_base = 0xa1fe + (pos << 9);
+ zoom_base = 0x81fe;// + (pos << 9);
+ col_base = 0x41fe + (pos << 9);
+ pri_base = 0xb1fe + (pos << 9);
+ inc = -2;
+ y_start = 255;
+ y_end = -1;
+ y_inc = -1;
+
+ /* Adjust for flipped scroll position */
+ if (m_game_config->extend)
+ sx = -sx + (((188 - 512) & 0xffff) << 16);
+ else
+ sx = -sx + (188 << 16);
+
+ y_index_fx = -sy - (256 << 16); /* Adjust for flipped scroll position */
}
else
{
- line_base=0xa000 + (pos*0x200);
- zoom_base=0x8000;// + (pos*0x200);
- col_base =0x4000 + (pos*0x200);
- pri_base =0xb000 + (pos*0x200);
- inc=2;
- y_start=0;
- y_end=256;
- y_inc=1;
-
- y_index_fx=sy;
+ line_base = 0xa000 + (pos << 9);
+ zoom_base = 0x8000;// + (pos << 9);
+ col_base = 0x4000 + (pos << 9);
+ pri_base = 0xb000 + (pos << 9);
+ inc = 2;
+ y_start = 0;
+ y_end = 256;
+ y_inc = 1;
+
+ y_index_fx = sy;
}
- y=y_start;
+ int y = y_start;
- while(y!=y_end)
+ while (y != y_end)
{
/* The zoom, column and row values can latch according to control ram */
{
- if (m_f3_line_ram[0x600+(y)]&bit_select)
- x_offset=(m_f3_line_ram[line_base/2]&0xffff)<<10;
- if (m_f3_line_ram[0x700+(y)]&bit_select)
- pri=m_f3_line_ram[pri_base/2]&0xffff;
+ if (m_line_ram[0x600 + y] & bit_select)
+ x_offset = (m_line_ram[line_base / 2] & 0xffff) << 10;
+ if (m_line_ram[0x700 + y] & bit_select)
+ pri = m_line_ram[pri_base / 2] & 0xffff;
// Zoom for playfields 1 & 3 is interleaved, as is the latch select
switch (pos)
{
case 0:
- if (m_f3_line_ram[0x400+(y)]&bit_select)
- line_zoom=m_f3_line_ram[(zoom_base+0x000)/2]&0xffff;
+ if (m_line_ram[0x400 + y] & bit_select)
+ line_zoom = m_line_ram[(zoom_base + 0x000) / 2] & 0xffff;
break;
case 1:
- if (m_f3_line_ram[0x400+(y)]&0x2)
- line_zoom=((m_f3_line_ram[(zoom_base+0x200)/2]&0xffff)&0xff00) | (line_zoom&0x00ff);
- if (m_f3_line_ram[0x400+(y)]&0x8)
- line_zoom=((m_f3_line_ram[(zoom_base+0x600)/2]&0xffff)&0x00ff) | (line_zoom&0xff00);
+ if (m_line_ram[0x400 + y] & 0x2)
+ line_zoom = ((m_line_ram[(zoom_base + 0x200) / 2] & 0xffff) & 0xff00) | (line_zoom & 0x00ff);
+ if (m_line_ram[0x400 + y] & 0x8)
+ line_zoom = ((m_line_ram[(zoom_base + 0x600) / 2] & 0xffff) & 0x00ff) | (line_zoom & 0xff00);
break;
case 2:
- if (m_f3_line_ram[0x400+(y)]&bit_select)
- line_zoom=m_f3_line_ram[(zoom_base+0x400)/2]&0xffff;
+ if (m_line_ram[0x400 + y] & bit_select)
+ line_zoom = m_line_ram[(zoom_base + 0x400) / 2] & 0xffff;
break;
case 3:
- if (m_f3_line_ram[0x400+(y)]&0x8)
- line_zoom=((m_f3_line_ram[(zoom_base+0x600)/2]&0xffff)&0xff00) | (line_zoom&0x00ff);
- if (m_f3_line_ram[0x400+(y)]&0x2)
- line_zoom=((m_f3_line_ram[(zoom_base+0x200)/2]&0xffff)&0x00ff) | (line_zoom&0xff00);
+ if (m_line_ram[0x400 + y] & 0x8)
+ line_zoom = ((m_line_ram[(zoom_base + 0x600) / 2] & 0xffff) & 0xff00) | (line_zoom & 0x00ff);
+ if (m_line_ram[0x400 + y] & 0x2)
+ line_zoom = ((m_line_ram[(zoom_base + 0x200) / 2] & 0xffff) & 0x00ff) | (line_zoom & 0xff00);
break;
default:
break;
}
// Column scroll only affects playfields 2 & 3
- if (pos>=2 && m_f3_line_ram[0x000+(y)]&bit_select)
- colscroll=(m_f3_line_ram[col_base/2]>> 0)&0x3ff;
+ if (pos >= 2 && m_line_ram[0x000 + y] & bit_select)
+ colscroll = (m_line_ram[col_base / 2] >> 0) & 0x3ff;
}
- if (!pri || (!m_flipscreen && y<24) || (m_flipscreen && y>231) ||
- (pri&0xc000)==0xc000 || !(pri&0x2000)/**/)
- line_enable=0;
- else if(pri&0x4000) //alpha1
- line_enable=2;
- else if(pri&0x8000) //alpha2
- line_enable=3;
+ if (!pri || (!m_flipscreen && y < 24) || (m_flipscreen && y > 231) ||
+ (pri & 0xc000) == 0xc000 || !(pri & 0x2000)/**/)
+ line_enable = 0;
+ else if (pri & 0x4000) //alpha1
+ line_enable = 2;
+ else if (pri & 0x8000) //alpha2
+ line_enable = 3;
else
- line_enable=1;
+ line_enable = 1;
- _colscroll[y]=colscroll;
- _x_offset[y]=(x_offset&0xffff0000) - (x_offset&0x0000ffff);
- _y_zoom[y] = (line_zoom&0xff) << 9;
+ _colscroll[y] = colscroll;
+ _x_offset[y] = (x_offset & 0xffff0000) - (x_offset & 0x0000ffff);
+ _y_zoom[y] = (line_zoom & 0xff) << 9;
/* Evaluate clipping */
- if (pri&0x0800)
- line_enable=0;
- else if (pri&0x0330)
+ if (pri & 0x0800)
+ line_enable = 0;
+ else if (pri & 0x0330)
{
//fast path todo - remove line enable
- calculate_clip(y, pri&0x0330, &line_t->clip0[y], &line_t->clip1[y], &line_enable);
+ calculate_clip(y, pri & 0x0330, &line_t->clip0[y], &line_t->clip1[y], &line_enable);
}
else
{
/* No clipping */
- line_t->clip0[y]=0x7fff0000;
- line_t->clip1[y]=0;
+ line_t->clip0[y] = 0x7fff0000;
+ line_t->clip1[y] = 0;
}
- line_t->x_zoom[y]=0x10000 - (line_zoom&0xff00);
- line_t->alpha_mode[y]=line_enable;
- line_t->pri[y]=pri;
+ line_t->x_zoom[y] = 0x10000 - (line_zoom & 0xff00);
+ line_t->alpha_mode[y] = line_enable;
+ line_t->pri[y] = pri;
- zoom_base+=inc;
- line_base+=inc;
- col_base +=inc;
- pri_base +=inc;
- y +=y_inc;
+ zoom_base += inc;
+ line_base += inc;
+ col_base += inc;
+ pri_base += inc;
+ y += y_inc;
}
-
tilemap_t* tm = tmap;
- y=y_start;
- while(y!=y_end)
+ y = y_start;
+ while (y != y_end)
{
- uint32_t x_index_fx;
- uint32_t y_index;
+ u32 x_index_fx;
+ u32 y_index;
- /* The football games use values in the range 0x200-0x3ff where the crowd should be drawn - !?
+ /* The football games use values in the range 0x200 - 0x3ff where the crowd should be drawn - !?
This appears to cause it to reference outside of the normal tilemap RAM area into the unused
area on the 32x32 tilemap configuration.. but exactly how isn't understood
@@ -1974,14 +1874,14 @@ void taito_f3_state::get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos,
the crowd area still seems to 'lag' behind the pitch area however.. but these are the values
in ram??
*/
- int cs = _colscroll[y];
+ const int cs = _colscroll[y];
- if (cs&0x200)
+ if (cs & 0x200)
{
- if (m_pf5_tilemap && m_pf6_tilemap)
+ if (m_tilemap[4] && m_tilemap[5])
{
- if (tmap == m_pf3_tilemap) tmap = m_pf5_tilemap; // pitch -> crowd
- if (tmap == m_pf4_tilemap) tmap = m_pf6_tilemap; // corruption on goals -> blank (hthero94)
+ if (tmap == m_tilemap[2]) tmap = m_tilemap[4]; // pitch -> crowd
+ if (tmap == m_tilemap[3]) tmap = m_tilemap[5]; // corruption on goals -> blank (hthero94)
}
}
else
@@ -1993,115 +1893,114 @@ void taito_f3_state::get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos,
bitmap_ind16 &srcbitmap = tmap->pixmap();
bitmap_ind8 &flagsbitmap = tmap->flagsmap();
- if(line_t->alpha_mode[y]!=0)
+ if (line_t->alpha_mode[y] != 0)
{
- uint16_t *src_s;
- uint8_t *tsrc_s;
+ u16 *src_s;
+ u8 *tsrc_s;
- x_index_fx = (sx+_x_offset[y]-(10*0x10000)+(10*line_t->x_zoom[y]))&((m_width_mask<<16)|0xffff);
- y_index = ((y_index_fx>>16)+_colscroll[y])&0x1ff;
+ x_index_fx = (sx+_x_offset[y]-(10*0x10000) + (10*line_t->x_zoom[y]))&((m_width_mask << 16)|0xffff);
+ y_index = ((y_index_fx >> 16)+_colscroll[y]) & 0x1ff;
/* check tile status */
- visible_tile_check(line_t,y,x_index_fx,y_index,f3_pf_data_n);
+ visible_tile_check(line_t, y, x_index_fx, y_index, pf_data_n);
/* If clipping enabled for this line have to disable 'all opaque' optimisation */
- if (line_t->clip0[y]!=0x7fff0000 || line_t->clip1[y]!=0)
- line_t->alpha_mode[y]&=~0x80;
+ if (line_t->clip0[y] != 0x7fff0000 || line_t->clip1[y] != 0)
+ line_t->alpha_mode[y] &= ~0x80;
/* set pixmap index */
line_t->x_count[y]=x_index_fx & 0xffff; // Fractional part
- line_t->src_s[y]=src_s=&srcbitmap.pix16(y_index);
- line_t->src_e[y]=&src_s[m_width_mask+1];
- line_t->src[y]=&src_s[x_index_fx>>16];
+ line_t->src_s[y] = src_s = &srcbitmap.pix16(y_index);
+ line_t->src_e[y] = &src_s[m_width_mask + 1];
+ line_t->src[y] = &src_s[x_index_fx >> 16];
- line_t->tsrc_s[y]=tsrc_s=&flagsbitmap.pix8(y_index);
- line_t->tsrc[y]=&tsrc_s[x_index_fx>>16];
+ line_t->tsrc_s[y]=tsrc_s = &flagsbitmap.pix8(y_index);
+ line_t->tsrc[y] = &tsrc_s[x_index_fx >> 16];
}
y_index_fx += _y_zoom[y];
- y +=y_inc;
+ y += y_inc;
}
}
void taito_f3_state::get_vram_info(tilemap_t *vram_tilemap, tilemap_t *pixel_tilemap, int sx, int sy)
{
- const struct f3_spritealpha_line_inf *sprite_alpha_line_t=&m_sa_line_inf[0];
- struct f3_playfield_line_inf *line_t=&m_pf_line_inf[4];
+ const struct f3_spritealpha_line_inf *sprite_alpha_line_t = &m_sa_line_inf[0];
+ struct f3_playfield_line_inf *line_t = &m_pf_line_inf[4];
- int y,y_start,y_end,y_inc;
- int pri_base,inc;
+ int y_start, y_end, y_inc;
+ int pri_base, inc;
int line_enable;
- uint16_t pri=0;
+ u16 pri = 0;
- const int vram_width_mask=0x3ff;
+ const int vram_width_mask = 0x3ff;
if (m_flipscreen)
{
- pri_base =0x73fe;
- inc=-2;
- y_start=255;
- y_end=-1;
- y_inc=-1;
+ pri_base = 0x73fe;
+ inc = -2;
+ y_start = 255;
+ y_end = -1;
+ y_inc = -1;
}
else
{
- pri_base =0x7200;
- inc=2;
- y_start=0;
- y_end=256;
- y_inc=1;
+ pri_base = 0x7200;
+ inc = 2;
+ y_start = 0;
+ y_end = 256;
+ y_inc = 1;
}
- y=y_start;
- while(y!=y_end)
+ int y = y_start;
+ while (y != y_end)
{
/* The zoom, column and row values can latch according to control ram */
{
- if (m_f3_line_ram[(0x0600/2)+(y)]&0x2)
- pri=(m_f3_line_ram[pri_base/2]&0xffff);
+ if (m_line_ram[(0x0600 / 2) + y] & 0x2)
+ pri = (m_line_ram[pri_base / 2] & 0xffff);
}
-
- if (!pri || (!m_flipscreen && y<24) || (m_flipscreen && y>231) ||
- (pri&0xc000)==0xc000 || !(pri&0x2000)/**/)
- line_enable=0;
- else if(pri&0x4000) //alpha1
- line_enable=2;
- else if(pri&0x8000) //alpha2
- line_enable=3;
+ if (!pri || (!m_flipscreen && y < 24) || (m_flipscreen && y > 231) ||
+ (pri & 0xc000) == 0xc000 || !(pri & 0x2000)/**/)
+ line_enable = 0;
+ else if (pri & 0x4000) //alpha1
+ line_enable = 2;
+ else if (pri & 0x8000) //alpha2
+ line_enable = 3;
else
- line_enable=1;
+ line_enable = 1;
- line_t->pri[y]=pri;
+ line_t->pri[y] = pri;
/* Evaluate clipping */
- if (pri&0x0800)
- line_enable=0;
- else if (pri&0x0330)
+ if (pri & 0x0800)
+ line_enable = 0;
+ else if (pri & 0x0330)
{
//fast path todo - remove line enable
- calculate_clip(y, pri&0x0330, &line_t->clip0[y], &line_t->clip1[y], &line_enable);
+ calculate_clip(y, pri & 0x0330, &line_t->clip0[y], &line_t->clip1[y], &line_enable);
}
else
{
/* No clipping */
- line_t->clip0[y]=0x7fff0000;
- line_t->clip1[y]=0;
+ line_t->clip0[y] = 0x7fff0000;
+ line_t->clip1[y] = 0;
}
- line_t->x_zoom[y]=0x10000;
- line_t->alpha_mode[y]=line_enable;
- if (line_t->alpha_mode[y]>1)
- line_t->alpha_mode[y]|=0x10;
+ line_t->x_zoom[y] = 0x10000;
+ line_t->alpha_mode[y] = line_enable;
+ if (line_t->alpha_mode[y] > 1)
+ line_t->alpha_mode[y] |= 0x10;
- pri_base +=inc;
- y +=y_inc;
+ pri_base += inc;
+ y += y_inc;
}
- sx&=0x1ff;
+ sx &= 0x1ff;
/* set pixmap pointer */
bitmap_ind16 &srcbitmap_pixel = pixel_tilemap->pixmap();
@@ -2109,32 +2008,32 @@ void taito_f3_state::get_vram_info(tilemap_t *vram_tilemap, tilemap_t *pixel_til
bitmap_ind16 &srcbitmap_vram = vram_tilemap->pixmap();
bitmap_ind8 &flagsbitmap_vram = vram_tilemap->flagsmap();
- y=y_start;
- while(y!=y_end)
+ y = y_start;
+ while (y != y_end)
{
- if(line_t->alpha_mode[y]!=0)
+ if (line_t->alpha_mode[y] != 0)
{
- uint16_t *src_s;
- uint8_t *tsrc_s;
+ u16 *src_s;
+ u8 *tsrc_s;
// These bits in control ram indicate whether the line is taken from
// the VRAM tilemap layer or pixel layer.
- const int usePixelLayer=((sprite_alpha_line_t->sprite_alpha[y]&0xa000)==0xa000);
+ const bool usePixelLayer = ((sprite_alpha_line_t->sprite_alpha[y] & 0xa000) == 0xa000);
/* set pixmap index */
- line_t->x_count[y]=0xffff;
+ line_t->x_count[y] = 0xffff;
if (usePixelLayer)
- line_t->src_s[y]=src_s=&srcbitmap_pixel.pix16(sy&0xff);
+ line_t->src_s[y] = src_s = &srcbitmap_pixel.pix16(sy & 0xff);
else
- line_t->src_s[y]=src_s=&srcbitmap_vram.pix16(sy&0x1ff);
- line_t->src_e[y]=&src_s[vram_width_mask+1];
- line_t->src[y]=&src_s[sx];
+ line_t->src_s[y] = src_s = &srcbitmap_vram.pix16(sy & 0x1ff);
+ line_t->src_e[y] = &src_s[vram_width_mask + 1];
+ line_t->src[y] = &src_s[sx];
if (usePixelLayer)
- line_t->tsrc_s[y]=tsrc_s=&flagsbitmap_pixel.pix8(sy&0xff);
+ line_t->tsrc_s[y]=tsrc_s = &flagsbitmap_pixel.pix8(sy & 0xff);
else
- line_t->tsrc_s[y]=tsrc_s=&flagsbitmap_vram.pix8(sy&0x1ff);
- line_t->tsrc[y]=&tsrc_s[sx];
+ line_t->tsrc_s[y]=tsrc_s = &flagsbitmap_vram.pix8(sy & 0x1ff);
+ line_t->tsrc[y] = &tsrc_s[sx];
}
sy++;
@@ -2146,353 +2045,338 @@ void taito_f3_state::get_vram_info(tilemap_t *vram_tilemap, tilemap_t *pixel_til
void taito_f3_state::scanline_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- int i,j,y,ys,ye;
- int y_start,y_end,y_start_next,y_end_next;
- uint8_t draw_line[256];
- int16_t draw_line_num[256];
+ int i, ys, ye;
+ int y_start, y_end, y_start_next, y_end_next;
+ u8 draw_line[256];
+ s16 draw_line_num[256];
- uint32_t rot=0;
+ u32 rot = 0;
if (m_flipscreen)
{
- rot=ORIENTATION_FLIP_Y;
- ys=0;
- ye=232;
+ rot = ORIENTATION_FLIP_Y;
+ ys = 0;
+ ye = 232;
}
else
{
- ys=24;
- ye=256;
+ ys = 24;
+ ye = 256;
}
- y_start=ys;
- y_end=ye;
- memset(draw_line,0,256);
+ y_start = ys;
+ y_end = ye;
+ std::fill(std::begin(draw_line), std::end(draw_line), 0);
- while(1)
+ while (1)
{
int pos;
- int pri[5],alpha_mode[5],alpha_mode_flag[5],alpha_level;
- uint16_t sprite_alpha;
- uint8_t sprite_alpha_check;
- uint8_t sprite_alpha_all_2a;
- int spri;
- int alpha;
+ int pri[5],alpha_mode[5],alpha_mode_flag[5];
+ u8 sprite_alpha_check;
+ u8 sprite_alpha_all_2a;
int layer_tmp[5];
struct f3_playfield_line_inf *pf_line_inf = m_pf_line_inf;
struct f3_spritealpha_line_inf *sa_line_inf = m_sa_line_inf;
- int count_skip_layer=0;
- int sprite[6]={0,0,0,0,0,0};
+ int count_skip_layer = 0;
+ int sprite[6] = {0, 0, 0, 0, 0, 0};
const struct f3_playfield_line_inf *line_t[5];
-
/* find same status of scanlines */
- pri[0]=pf_line_inf[0].pri[y_start];
- pri[1]=pf_line_inf[1].pri[y_start];
- pri[2]=pf_line_inf[2].pri[y_start];
- pri[3]=pf_line_inf[3].pri[y_start];
- pri[4]=pf_line_inf[4].pri[y_start];
- alpha_mode[0]=pf_line_inf[0].alpha_mode[y_start];
- alpha_mode[1]=pf_line_inf[1].alpha_mode[y_start];
- alpha_mode[2]=pf_line_inf[2].alpha_mode[y_start];
- alpha_mode[3]=pf_line_inf[3].alpha_mode[y_start];
- alpha_mode[4]=pf_line_inf[4].alpha_mode[y_start];
- alpha_level=sa_line_inf[0].alpha_level[y_start];
- spri=sa_line_inf[0].spri[y_start];
- sprite_alpha=sa_line_inf[0].sprite_alpha[y_start];
-
- draw_line[y_start]=1;
- draw_line_num[i=0]=y_start;
- y_start_next=-1;
- y_end_next=-1;
- for(y=y_start+1;y<y_end;y++)
+ pri[0] = pf_line_inf[0].pri[y_start];
+ pri[1] = pf_line_inf[1].pri[y_start];
+ pri[2] = pf_line_inf[2].pri[y_start];
+ pri[3] = pf_line_inf[3].pri[y_start];
+ pri[4] = pf_line_inf[4].pri[y_start];
+ alpha_mode[0] = pf_line_inf[0].alpha_mode[y_start];
+ alpha_mode[1] = pf_line_inf[1].alpha_mode[y_start];
+ alpha_mode[2] = pf_line_inf[2].alpha_mode[y_start];
+ alpha_mode[3] = pf_line_inf[3].alpha_mode[y_start];
+ alpha_mode[4] = pf_line_inf[4].alpha_mode[y_start];
+ const int alpha_level = sa_line_inf[0].alpha_level[y_start];
+ const int spri = sa_line_inf[0].spri[y_start];
+ const u16 sprite_alpha = sa_line_inf[0].sprite_alpha[y_start];
+
+ draw_line[y_start] = 1;
+ draw_line_num[i = 0] = y_start;
+ y_start_next = -1;
+ y_end_next = -1;
+ for (int y = y_start + 1; y < y_end; y++)
{
- if(!draw_line[y])
+ if (!draw_line[y])
{
- if(pri[0]!=pf_line_inf[0].pri[y]) y_end_next=y+1;
- else if(pri[1]!=pf_line_inf[1].pri[y]) y_end_next=y+1;
- else if(pri[2]!=pf_line_inf[2].pri[y]) y_end_next=y+1;
- else if(pri[3]!=pf_line_inf[3].pri[y]) y_end_next=y+1;
- else if(pri[4]!=pf_line_inf[4].pri[y]) y_end_next=y+1;
- else if(alpha_mode[0]!=pf_line_inf[0].alpha_mode[y]) y_end_next=y+1;
- else if(alpha_mode[1]!=pf_line_inf[1].alpha_mode[y]) y_end_next=y+1;
- else if(alpha_mode[2]!=pf_line_inf[2].alpha_mode[y]) y_end_next=y+1;
- else if(alpha_mode[3]!=pf_line_inf[3].alpha_mode[y]) y_end_next=y+1;
- else if(alpha_mode[4]!=pf_line_inf[4].alpha_mode[y]) y_end_next=y+1;
- else if(alpha_level!=sa_line_inf[0].alpha_level[y]) y_end_next=y+1;
- else if(spri!=sa_line_inf[0].spri[y]) y_end_next=y+1;
- else if(sprite_alpha!=sa_line_inf[0].sprite_alpha[y]) y_end_next=y+1;
+ if (pri[0] != pf_line_inf[0].pri[y]) y_end_next = y + 1;
+ else if (pri[1] != pf_line_inf[1].pri[y]) y_end_next = y + 1;
+ else if (pri[2] != pf_line_inf[2].pri[y]) y_end_next = y + 1;
+ else if (pri[3] != pf_line_inf[3].pri[y]) y_end_next = y + 1;
+ else if (pri[4] != pf_line_inf[4].pri[y]) y_end_next = y + 1;
+ else if (alpha_mode[0] != pf_line_inf[0].alpha_mode[y]) y_end_next = y + 1;
+ else if (alpha_mode[1] != pf_line_inf[1].alpha_mode[y]) y_end_next = y + 1;
+ else if (alpha_mode[2] != pf_line_inf[2].alpha_mode[y]) y_end_next = y + 1;
+ else if (alpha_mode[3] != pf_line_inf[3].alpha_mode[y]) y_end_next = y + 1;
+ else if (alpha_mode[4] != pf_line_inf[4].alpha_mode[y]) y_end_next = y + 1;
+ else if (alpha_level!=sa_line_inf[0].alpha_level[y]) y_end_next = y + 1;
+ else if (spri!=sa_line_inf[0].spri[y]) y_end_next = y + 1;
+ else if (sprite_alpha!=sa_line_inf[0].sprite_alpha[y]) y_end_next = y + 1;
else
{
- draw_line[y]=1;
- draw_line_num[++i]=y;
+ draw_line[y] = 1;
+ draw_line_num[++i] = y;
continue;
}
- if(y_start_next<0) y_start_next=y;
+ if (y_start_next < 0) y_start_next = y;
}
}
- y_end=y_end_next;
- y_start=y_start_next;
- draw_line_num[++i]=-1;
+ y_end = y_end_next;
+ y_start = y_start_next;
+ draw_line_num[++i] = -1;
/* alpha blend */
- alpha_mode_flag[0]=alpha_mode[0]&~3;
- alpha_mode_flag[1]=alpha_mode[1]&~3;
- alpha_mode_flag[2]=alpha_mode[2]&~3;
- alpha_mode_flag[3]=alpha_mode[3]&~3;
- alpha_mode_flag[4]=alpha_mode[4]&~3;
- alpha_mode[0]&=3;
- alpha_mode[1]&=3;
- alpha_mode[2]&=3;
- alpha_mode[3]&=3;
- alpha_mode[4]&=3;
- if( alpha_mode[0]>1 ||
- alpha_mode[1]>1 ||
- alpha_mode[2]>1 ||
- alpha_mode[3]>1 ||
- alpha_mode[4]>1 ||
- (sprite_alpha&0xff) != 0xff )
+ alpha_mode_flag[0] = alpha_mode[0] & ~3;
+ alpha_mode_flag[1] = alpha_mode[1] & ~3;
+ alpha_mode_flag[2] = alpha_mode[2] & ~3;
+ alpha_mode_flag[3] = alpha_mode[3] & ~3;
+ alpha_mode_flag[4] = alpha_mode[4] & ~3;
+ alpha_mode[0] &= 3;
+ alpha_mode[1] &= 3;
+ alpha_mode[2] &= 3;
+ alpha_mode[3] &= 3;
+ alpha_mode[4] &= 3;
+ if (alpha_mode[0] > 1 ||
+ alpha_mode[1] > 1 ||
+ alpha_mode[2] > 1 ||
+ alpha_mode[3] > 1 ||
+ alpha_mode[4] > 1 ||
+ (sprite_alpha & 0xff) != 0xff)
{
/* set alpha level */
- if(alpha_level!=m_alpha_level_last)
+ if (alpha_level != m_alpha_level_last)
{
- int al_s,al_d;
- int a=alpha_level;
- int b=(a>>8)&0xf;
- int c=(a>>4)&0xf;
- int d=(a>>0)&0xf;
- a>>=12;
+ int a = alpha_level;
+ const int b = (a >> 8) & 0xf;
+ const int c = (a >> 4) & 0xf;
+ const int d = (a >> 0) & 0xf;
+ a >>= 12;
/* b000 7000 */
- al_s = ( (15-d)*256) / 8;
- al_d = ( (15-b)*256) / 8;
- if(al_s>255) al_s = 255;
- if(al_d>255) al_d = 255;
- m_f3_alpha_level_3as = al_s;
- m_f3_alpha_level_3ad = al_d;
- m_f3_alpha_level_2as = al_d;
- m_f3_alpha_level_2ad = al_s;
-
- al_s = ( (15-c)*256) / 8;
- al_d = ( (15-a)*256) / 8;
- if(al_s>255) al_s = 255;
- if(al_d>255) al_d = 255;
- m_f3_alpha_level_3bs = al_s;
- m_f3_alpha_level_3bd = al_d;
- m_f3_alpha_level_2bs = al_d;
- m_f3_alpha_level_2bd = al_s;
-
- f3_alpha_set_level();
- m_alpha_level_last=alpha_level;
+ int al_s = std::min(255, ((15 - d) * 256) / 8);
+ int al_d = std::min(255, ((15 - b) * 256) / 8);
+ m_alpha_level_3as = al_s;
+ m_alpha_level_3ad = al_d;
+ m_alpha_level_2as = al_d;
+ m_alpha_level_2ad = al_s;
+
+ al_s = std::min(255, ((15 - c) * 256) / 8);
+ al_d = std::min(255, ((15 - a) * 256) / 8);
+ m_alpha_level_3bs = al_s;
+ m_alpha_level_3bd = al_d;
+ m_alpha_level_2bs = al_d;
+ m_alpha_level_2bd = al_s;
+
+ alpha_set_level();
+ m_alpha_level_last = alpha_level;
}
/* set sprite alpha mode */
- sprite_alpha_check=0;
+ sprite_alpha_check = 0;
sprite_alpha_all_2a=1;
- m_dpix_sp[1]=nullptr;
- m_dpix_sp[2]=nullptr;
- m_dpix_sp[4]=nullptr;
- m_dpix_sp[8]=nullptr;
- for(i=0;i<4;i++) /* i = sprite priority offset */
+ m_dpix_sp[1] = nullptr;
+ m_dpix_sp[2] = nullptr;
+ m_dpix_sp[4] = nullptr;
+ m_dpix_sp[8] = nullptr;
+ for (i = 0; i < 4; i++) /* i = sprite priority offset */
{
- uint8_t sprite_alpha_mode=(sprite_alpha>>(i*2))&3;
- uint8_t sftbit=1<<i;
- if(m_sprite_pri_usage&sftbit)
+ const u8 sprite_alpha_mode = (sprite_alpha >> (i * 2)) & 3;
+ const u8 sftbit = 1 << i;
+ if (m_sprite_pri_usage & sftbit)
{
- if(sprite_alpha_mode==1)
+ if (sprite_alpha_mode == 1)
{
- if(m_f3_alpha_level_2as==0 && m_f3_alpha_level_2ad==255)
- m_sprite_pri_usage&=~sftbit; // Disable sprite priority block
+ if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255)
+ m_sprite_pri_usage &= ~sftbit; // Disable sprite priority block
else
{
- m_dpix_sp[sftbit]=m_dpix_n[2];
- sprite_alpha_check|=sftbit;
+ m_dpix_sp[sftbit] = m_dpix_n[2];
+ sprite_alpha_check |= sftbit;
}
}
- else if(sprite_alpha_mode==2)
+ else if (sprite_alpha_mode == 2)
{
- if(sprite_alpha&0xff00)
+ if (sprite_alpha & 0xff00)
{
- if(m_f3_alpha_level_3as==0 && m_f3_alpha_level_3ad==255) m_sprite_pri_usage&=~sftbit;
+ if (m_alpha_level_3as == 0 && m_alpha_level_3ad == 255) m_sprite_pri_usage &= ~sftbit;
else
{
- m_dpix_sp[sftbit]=m_dpix_n[3];
- sprite_alpha_check|=sftbit;
- sprite_alpha_all_2a=0;
+ m_dpix_sp[sftbit] = m_dpix_n[3];
+ sprite_alpha_check |= sftbit;
+ sprite_alpha_all_2a = 0;
}
}
else
{
- if(m_f3_alpha_level_3bs==0 && m_f3_alpha_level_3bd==255) m_sprite_pri_usage&=~sftbit;
+ if (m_alpha_level_3bs == 0 && m_alpha_level_3bd == 255) m_sprite_pri_usage &= ~sftbit;
else
{
- m_dpix_sp[sftbit]=m_dpix_n[5];
- sprite_alpha_check|=sftbit;
- sprite_alpha_all_2a=0;
+ m_dpix_sp[sftbit] = m_dpix_n[5];
+ sprite_alpha_check |= sftbit;
+ sprite_alpha_all_2a = 0;
}
}
}
}
}
-
/* check alpha level */
- for(i=0;i<5;i++) /* i = playfield num (pos) */
+ for (i = 0; i < 5; i++) /* i = playfield num (pos) */
{
- int alpha_type = (alpha_mode_flag[i]>>4)&3;
+ const int alpha_type = (alpha_mode_flag[i] >> 4) & 3;
- if(alpha_mode[i]==2)
+ if (alpha_mode[i] == 2)
{
- if(alpha_type==1)
+ if (alpha_type == 1)
{
- /* if (m_f3_alpha_level_2as==0 && m_f3_alpha_level_2ad==255)
- * alpha_mode[i]=3; alpha_mode_flag[i] |= 0x80;}
+ /* if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255)
+ * alpha_mode[i]=3; alpha_mode_flag[i] |= 0x80; }
* will display continue screen in gseeker (mt 00026) */
- if (m_f3_alpha_level_2as==0 && m_f3_alpha_level_2ad==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_2as==255 && m_f3_alpha_level_2ad==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_2as == 255 && m_alpha_level_2ad == 0) alpha_mode[i] = 1;
}
- else if(alpha_type==2)
+ else if (alpha_type == 2)
{
- if (m_f3_alpha_level_2bs==0 && m_f3_alpha_level_2bd==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_2as==255 && m_f3_alpha_level_2ad==0 &&
- m_f3_alpha_level_2bs==255 && m_f3_alpha_level_2bd==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_2bs == 0 && m_alpha_level_2bd == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_2as == 255 && m_alpha_level_2ad == 0 &&
+ m_alpha_level_2bs == 255 && m_alpha_level_2bd == 0) alpha_mode[i] = 1;
}
- else if(alpha_type==3)
+ else if (alpha_type == 3)
{
- if (m_f3_alpha_level_2as==0 && m_f3_alpha_level_2ad==255 &&
- m_f3_alpha_level_2bs==0 && m_f3_alpha_level_2bd==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_2as==255 && m_f3_alpha_level_2ad==0 &&
- m_f3_alpha_level_2bs==255 && m_f3_alpha_level_2bd==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_2as == 0 && m_alpha_level_2ad == 255 &&
+ m_alpha_level_2bs == 0 && m_alpha_level_2bd == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_2as == 255 && m_alpha_level_2ad == 0 &&
+ m_alpha_level_2bs == 255 && m_alpha_level_2bd == 0) alpha_mode[i] = 1;
}
}
- else if(alpha_mode[i]==3)
+ else if (alpha_mode[i] == 3)
{
- if(alpha_type==1)
+ if (alpha_type == 1)
{
- if (m_f3_alpha_level_3as==0 && m_f3_alpha_level_3ad==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_3as==255 && m_f3_alpha_level_3ad==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_3as == 0 && m_alpha_level_3ad == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_3as == 255 && m_alpha_level_3ad == 0) alpha_mode[i] = 1;
}
- else if(alpha_type==2)
+ else if (alpha_type == 2)
{
- if (m_f3_alpha_level_3bs==0 && m_f3_alpha_level_3bd==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_3as==255 && m_f3_alpha_level_3ad==0 &&
- m_f3_alpha_level_3bs==255 && m_f3_alpha_level_3bd==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_3bs == 0 && m_alpha_level_3bd == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_3as == 255 && m_alpha_level_3ad == 0 &&
+ m_alpha_level_3bs == 255 && m_alpha_level_3bd == 0) alpha_mode[i] = 1;
}
- else if(alpha_type==3)
+ else if (alpha_type == 3)
{
- if (m_f3_alpha_level_3as==0 && m_f3_alpha_level_3ad==255 &&
- m_f3_alpha_level_3bs==0 && m_f3_alpha_level_3bd==255) alpha_mode[i]=0;
- else if(m_f3_alpha_level_3as==255 && m_f3_alpha_level_3ad==0 &&
- m_f3_alpha_level_3bs==255 && m_f3_alpha_level_3bd==0 ) alpha_mode[i]=1;
+ if (m_alpha_level_3as == 0 && m_alpha_level_3ad == 255 &&
+ m_alpha_level_3bs == 0 && m_alpha_level_3bd == 255) alpha_mode[i] = 0;
+ else if (m_alpha_level_3as == 255 && m_alpha_level_3ad == 0 &&
+ m_alpha_level_3bs == 255 && m_alpha_level_3bd == 0) alpha_mode[i] = 1;
}
}
}
- if ( (alpha_mode[0]==1 || alpha_mode[0]==2 || !alpha_mode[0]) &&
- (alpha_mode[1]==1 || alpha_mode[1]==2 || !alpha_mode[1]) &&
- (alpha_mode[2]==1 || alpha_mode[2]==2 || !alpha_mode[2]) &&
- (alpha_mode[3]==1 || alpha_mode[3]==2 || !alpha_mode[3]) &&
- (alpha_mode[4]==1 || alpha_mode[4]==2 || !alpha_mode[4]) &&
- sprite_alpha_all_2a )
+ if ((alpha_mode[0] == 1 || alpha_mode[0] == 2 || !alpha_mode[0]) &&
+ (alpha_mode[1] == 1 || alpha_mode[1] == 2 || !alpha_mode[1]) &&
+ (alpha_mode[2] == 1 || alpha_mode[2] == 2 || !alpha_mode[2]) &&
+ (alpha_mode[3] == 1 || alpha_mode[3] == 2 || !alpha_mode[3]) &&
+ (alpha_mode[4] == 1 || alpha_mode[4] == 2 || !alpha_mode[4]) &&
+ sprite_alpha_all_2a)
{
- int alpha_type = (alpha_mode_flag[0] | alpha_mode_flag[1] | alpha_mode_flag[2] | alpha_mode_flag[3])&0x30;
- if( (alpha_type==0x10 && m_f3_alpha_level_2as==255) ||
- (alpha_type==0x20 && m_f3_alpha_level_2as==255 && m_f3_alpha_level_2bs==255) ||
- (alpha_type==0x30 && m_f3_alpha_level_2as==255 && m_f3_alpha_level_2bs==255) )
+ int alpha_type = (alpha_mode_flag[0] | alpha_mode_flag[1] | alpha_mode_flag[2] | alpha_mode_flag[3]) & 0x30;
+ if ((alpha_type == 0x10 && m_alpha_level_2as == 255) ||
+ (alpha_type == 0x20 && m_alpha_level_2as == 255 && m_alpha_level_2bs == 255) ||
+ (alpha_type == 0x30 && m_alpha_level_2as == 255 && m_alpha_level_2bs == 255))
{
- if(alpha_mode[0]>1) alpha_mode[0]=1;
- if(alpha_mode[1]>1) alpha_mode[1]=1;
- if(alpha_mode[2]>1) alpha_mode[2]=1;
- if(alpha_mode[3]>1) alpha_mode[3]=1;
- if(alpha_mode[4]>1) alpha_mode[4]=1;
- sprite_alpha_check=0;
- m_dpix_sp[1]=nullptr;
- m_dpix_sp[2]=nullptr;
- m_dpix_sp[4]=nullptr;
- m_dpix_sp[8]=nullptr;
+ if (alpha_mode[0] > 1) alpha_mode[0] = 1;
+ if (alpha_mode[1] > 1) alpha_mode[1] = 1;
+ if (alpha_mode[2] > 1) alpha_mode[2] = 1;
+ if (alpha_mode[3] > 1) alpha_mode[3] = 1;
+ if (alpha_mode[4] > 1) alpha_mode[4] = 1;
+ sprite_alpha_check = 0;
+ m_dpix_sp[1] = nullptr;
+ m_dpix_sp[2] = nullptr;
+ m_dpix_sp[4] = nullptr;
+ m_dpix_sp[8] = nullptr;
}
}
}
else
{
- sprite_alpha_check=0;
- m_dpix_sp[1]=nullptr;
- m_dpix_sp[2]=nullptr;
- m_dpix_sp[4]=nullptr;
- m_dpix_sp[8]=nullptr;
+ sprite_alpha_check = 0;
+ m_dpix_sp[1] = nullptr;
+ m_dpix_sp[2] = nullptr;
+ m_dpix_sp[4] = nullptr;
+ m_dpix_sp[8] = nullptr;
}
-
-
/* set scanline priority */
{
- int pri_max_opa=-1;
- for(i=0;i<5;i++) /* i = playfield num (pos) */
+ int pri_max_opa = -1;
+ for (i = 0; i < 5; i++) /* i = playfield num (pos) */
{
- int p0=pri[i];
- int pri_sl1=p0&0x0f;
+ const int p0 = pri[i];
+ const int pri_sl1 = p0 & 0x0f;
- layer_tmp[i]=i + (pri_sl1<<3);
+ layer_tmp[i] = i + (pri_sl1 << 3);
- if(!alpha_mode[i])
+ if (!alpha_mode[i])
{
- layer_tmp[i]|=0x80;
+ layer_tmp[i] |= 0x80;
count_skip_layer++;
}
- else if(alpha_mode[i]==1 && (alpha_mode_flag[i]&0x80))
+ else if (alpha_mode[i] == 1 && (alpha_mode_flag[i] & 0x80))
{
- if(layer_tmp[i]>pri_max_opa) pri_max_opa=layer_tmp[i];
+ if (layer_tmp[i] > pri_max_opa) pri_max_opa = layer_tmp[i];
}
}
- if(pri_max_opa!=-1)
+ if (pri_max_opa != -1)
{
- if(pri_max_opa>layer_tmp[0]) {layer_tmp[0]|=0x80;count_skip_layer++;}
- if(pri_max_opa>layer_tmp[1]) {layer_tmp[1]|=0x80;count_skip_layer++;}
- if(pri_max_opa>layer_tmp[2]) {layer_tmp[2]|=0x80;count_skip_layer++;}
- if(pri_max_opa>layer_tmp[3]) {layer_tmp[3]|=0x80;count_skip_layer++;}
- if(pri_max_opa>layer_tmp[4]) {layer_tmp[4]|=0x80;count_skip_layer++;}
+ if (pri_max_opa > layer_tmp[0]) { layer_tmp[0] |= 0x80; count_skip_layer++; }
+ if (pri_max_opa > layer_tmp[1]) { layer_tmp[1] |= 0x80; count_skip_layer++; }
+ if (pri_max_opa > layer_tmp[2]) { layer_tmp[2] |= 0x80; count_skip_layer++; }
+ if (pri_max_opa > layer_tmp[3]) { layer_tmp[3] |= 0x80; count_skip_layer++; }
+ if (pri_max_opa > layer_tmp[4]) { layer_tmp[4] |= 0x80; count_skip_layer++; }
}
}
-
/* sort layer_tmp */
- for(i=0;i<4;i++)
+ for (i = 0; i < 4; i++)
{
- for(j=i+1;j<5;j++)
+ for (int j = i + 1; j < 5; j++)
{
- if(layer_tmp[i]<layer_tmp[j])
+ if (layer_tmp[i] < layer_tmp[j])
{
- int temp = layer_tmp[i];
+ const int temp = layer_tmp[i];
layer_tmp[i] = layer_tmp[j];
layer_tmp[j] = temp;
}
}
}
-
/* check sprite & layer priority */
{
- int l0,l1,l2,l3,l4;
int pri_sp[5];
- l0=layer_tmp[0]>>3;
- l1=layer_tmp[1]>>3;
- l2=layer_tmp[2]>>3;
- l3=layer_tmp[3]>>3;
- l4=layer_tmp[4]>>3;
+ const int l0 = layer_tmp[0] >> 3;
+ const int l1 = layer_tmp[1] >> 3;
+ const int l2 = layer_tmp[2] >> 3;
+ const int l3 = layer_tmp[3] >> 3;
+ const int l4 = layer_tmp[4] >> 3;
- pri_sp[0]=spri&0xf;
- pri_sp[1]=(spri>>4)&0xf;
- pri_sp[2]=(spri>>8)&0xf;
- pri_sp[3]=spri>>12;
+ pri_sp[0] = spri & 0xf;
+ pri_sp[1] = (spri >> 4) & 0xf;
+ pri_sp[2] = (spri >> 8) & 0xf;
+ pri_sp[3] = spri >> 12;
- for(i=0;i<4;i++) /* i = sprite priority offset */
+ for (i = 0; i < 4; i++) /* i = sprite priority offset */
{
- int sp,sflg=1<<i;
- if(!(m_sprite_pri_usage & sflg)) continue;
- sp=pri_sp[i];
+ const int sflg = 1 << i;
+ if (!(m_sprite_pri_usage & sflg)) continue;
+ int sp = pri_sp[i];
/*
sprite priority==playfield priority
@@ -2501,46 +2385,46 @@ void taito_f3_state::scanline_draw(bitmap_rgb32 &bitmap, const rectangle &clipre
DARIUSG (ZONE V' BOSS) ---> playfield
*/
- if (m_f3_game == BUBSYMPH ) sp++; //BUBSYMPH (title)
- if (m_f3_game == GSEEKER ) sp++; //GSEEKER (plane leaving hangar)
+ if (m_game == BUBSYMPH) sp++; //BUBSYMPH (title)
+ if (m_game == GSEEKER) sp++; //GSEEKER (plane leaving hangar)
- if( sp>l0) sprite[0]|=sflg;
- else if(sp<=l0 && sp>l1) sprite[1]|=sflg;
- else if(sp<=l1 && sp>l2) sprite[2]|=sflg;
- else if(sp<=l2 && sp>l3) sprite[3]|=sflg;
- else if(sp<=l3 && sp>l4) sprite[4]|=sflg;
- else if(sp<=l4 ) sprite[5]|=sflg;
+ if ( sp > l0) sprite[0] |= sflg;
+ else if (sp <= l0 && sp > l1) sprite[1] |= sflg;
+ else if (sp <= l1 && sp > l2) sprite[2] |= sflg;
+ else if (sp <= l2 && sp > l3) sprite[3] |= sflg;
+ else if (sp <= l3 && sp > l4) sprite[4] |= sflg;
+ else if (sp <= l4 ) sprite[5] |= sflg;
}
}
/* draw scanlines */
- alpha=0;
- for(i=count_skip_layer;i<5;i++)
+ bool alpha = false;
+ for (i = count_skip_layer; i < 5; i++)
{
- pos=layer_tmp[i]&7;
- line_t[i]=&pf_line_inf[pos];
+ pos = layer_tmp[i] & 7;
+ line_t[i] = &pf_line_inf[pos];
- if(sprite[i]&sprite_alpha_check) alpha=1;
- else if(!alpha) sprite[i]|=0x100;
+ if (sprite[i] & sprite_alpha_check) alpha = true;
+ else if (!alpha) sprite[i] |= 0x100;
- if(alpha_mode[pos]>1)
+ if (alpha_mode[pos] > 1)
{
- int alpha_type=(((alpha_mode_flag[pos]>>4)&3)-1)*2;
- m_dpix_lp[i]=m_dpix_n[alpha_mode[pos]+alpha_type];
- alpha=1;
+ int alpha_type = (((alpha_mode_flag[pos] >> 4) & 3) - 1) * 2;
+ m_dpix_lp[i] = m_dpix_n[alpha_mode[pos]+alpha_type];
+ alpha = true;
}
else
{
- if(alpha) m_dpix_lp[i]=m_dpix_n[1];
- else m_dpix_lp[i]=m_dpix_n[0];
+ if (alpha) m_dpix_lp[i] = m_dpix_n[1];
+ else m_dpix_lp[i] = m_dpix_n[0];
}
}
- if(sprite[5]&sprite_alpha_check) alpha=1;
- else if(!alpha) sprite[5]|=0x100;
+ if (sprite[5] & sprite_alpha_check) alpha = true;
+ else if (!alpha) sprite[5] |= 0x100;
- draw_scanlines(bitmap,320,draw_line_num,line_t,sprite,rot,count_skip_layer);
- if(y_start<0) break;
+ draw_scanlines(bitmap, 320, draw_line_num, line_t, sprite, rot, count_skip_layer);
+ if (y_start < 0) break;
}
}
@@ -2548,10 +2432,10 @@ void taito_f3_state::scanline_draw(bitmap_rgb32 &bitmap, const rectangle &clipre
#define PSET_T \
c = *source & m_sprite_pen_mask; \
- if(c) \
+ if (c) \
{ \
- p=*pri; \
- if(!p || p==0xff) \
+ p = *pri; \
+ if (!p || p == 0xff) \
{ \
*dest = pal[c]; \
*pri = pri_dst; \
@@ -2559,8 +2443,8 @@ void taito_f3_state::scanline_draw(bitmap_rgb32 &bitmap, const rectangle &clipre
}
#define PSET_O \
- p=*pri; \
- if(!p || p==0xff) \
+ p = *pri; \
+ if (!p || p == 0xff) \
{ \
*dest = pal[*source & m_sprite_pen_mask]; \
*pri = pri_dst; \
@@ -2571,40 +2455,39 @@ void taito_f3_state::scanline_draw(bitmap_rgb32 &bitmap, const rectangle &clipre
dest++; \
pri++;
-inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,
+inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp, const rectangle &clip,
gfx_element *gfx,
int code,
int color,
- int flipx,int flipy,
- int sx,int sy,
- uint8_t pri_dst)
+ int flipx, int flipy,
+ int sx, int sy,
+ u8 pri_dst)
{
rectangle myclip;
- pri_dst=1<<pri_dst;
+ pri_dst = 1 << pri_dst;
/* KW 991012 -- Added code to force clip to bitmap boundary */
myclip = clip;
myclip &= dest_bmp.cliprect();
-
- if( gfx )
+ if (gfx)
{
const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
- const uint8_t *code_base = gfx->get_data(code % gfx->elements());
+ const u8 *code_base = gfx->get_data(code % gfx->elements());
{
/* compute sprite increment per screen pixel */
int dx = 1;
int dy = 1;
- int ex = sx+16;
- int ey = sy+16;
+ int ex = sx + 16;
+ int ey = sy + 16;
int x_index_base;
int y_index;
- if( flipx )
+ if (flipx)
{
x_index_base = 15;
dx = -1;
@@ -2614,7 +2497,7 @@ inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &c
x_index_base = 0;
}
- if( flipy )
+ if (flipy)
{
y_index = 15;
dy = -1;
@@ -2624,52 +2507,52 @@ inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &c
y_index = 0;
}
- if( sx < myclip.min_x)
+ if (sx < myclip.min_x)
{ /* clip left */
- int pixels = myclip.min_x-sx;
+ int pixels = myclip.min_x - sx;
sx += pixels;
- x_index_base += pixels*dx;
+ x_index_base += pixels * dx;
}
- if( sy < myclip.min_y )
+ if (sy < myclip.min_y)
{ /* clip top */
- int pixels = myclip.min_y-sy;
+ int pixels = myclip.min_y - sy;
sy += pixels;
- y_index += pixels*dy;
+ y_index += pixels * dy;
}
/* NS 980211 - fixed incorrect clipping */
- if( ex > myclip.max_x+1 )
+ if (ex > myclip.max_x + 1)
{ /* clip right */
- int pixels = ex-myclip.max_x-1;
+ int pixels = ex - myclip.max_x - 1;
ex -= pixels;
}
- if( ey > myclip.max_y+1 )
+ if (ey > myclip.max_y + 1)
{ /* clip bottom */
- int pixels = ey-myclip.max_y-1;
+ int pixels = ey - myclip.max_y - 1;
ey -= pixels;
}
- if( ex>sx && ey>sy)
+ if (ex > sx && ey > sy)
{ /* skip if inner loop doesn't draw anything */
// if (dest_bmp.bpp == 32)
{
- int y=ey-sy;
- int x=(ex-sx-1)|(m_tile_opaque_sp[code % gfx->elements()]<<4);
- const uint8_t *source0 = code_base + y_index * 16 + x_index_base;
- uint32_t *dest0 = &dest_bmp.pix32(sy, sx);
- uint8_t *pri0 = &m_pri_alp_bitmap.pix8(sy, sx);
- int yadv = dest_bmp.rowpixels();
- int yadvp = m_pri_alp_bitmap.rowpixels();
- dy=dy*16;
- while(1)
+ int y = ey - sy;
+ const int x = (ex - sx - 1) | (m_tile_opaque_sp[code % gfx->elements()] << 4);
+ const u8 *source0 = code_base + y_index * 16 + x_index_base;
+ u32 *dest0 = &dest_bmp.pix32(sy, sx);
+ u8 *pri0 = &m_pri_alp_bitmap.pix8(sy, sx);
+ const int yadv = dest_bmp.rowpixels();
+ const int yadvp = m_pri_alp_bitmap.rowpixels();
+ dy = dy * 16;
+ while (1)
{
- const uint8_t *source = source0;
- uint32_t *dest = dest0;
- uint8_t *pri = pri0;
+ const u8 *source = source0;
+ u32 *dest = dest0;
+ u8 *pri = pri0;
- switch(x)
+ switch (x)
{
int c;
- uint8_t p;
+ u8 p;
case 31: PSET_O NEXT_P
case 30: PSET_O NEXT_P
case 29: PSET_O NEXT_P
@@ -2705,10 +2588,10 @@ inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &c
case 0: PSET_T
}
- if(!(--y)) break;
+ if (!(--y)) break;
source0 += dy;
- dest0+=yadv;
- pri0+=yadvp;
+ dest0 += yadv;
+ pri0 += yadvp;
}
}
}
@@ -2720,43 +2603,42 @@ inline void taito_f3_state::f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &c
#undef NEXT_P
-inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,
+inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp, const rectangle &clip,
gfx_element *gfx,
int code,
int color,
- int flipx,int flipy,
- int sx,int sy,
+ int flipx, int flipy,
+ int sx, int sy,
int scalex, int scaley,
- uint8_t pri_dst)
+ u8 pri_dst)
{
rectangle myclip;
- pri_dst=1<<pri_dst;
+ pri_dst = 1 << pri_dst;
/* KW 991012 -- Added code to force clip to bitmap boundary */
myclip = clip;
myclip &= dest_bmp.cliprect();
-
- if( gfx )
+ if (gfx)
{
const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors()));
- const uint8_t *code_base = gfx->get_data(code % gfx->elements());
+ const u8 *code_base = gfx->get_data(code % gfx->elements());
{
/* compute sprite increment per screen pixel */
- int dx = (16<<16)/scalex;
- int dy = (16<<16)/scaley;
+ int dx = (16 << 16) / scalex;
+ int dy = (16 << 16) / scaley;
- int ex = sx+scalex;
- int ey = sy+scaley;
+ int ex = sx + scalex;
+ int ey = sy + scaley;
int x_index_base;
int y_index;
- if( flipx )
+ if (flipx)
{
- x_index_base = (scalex-1)*dx;
+ x_index_base = (scalex - 1) * dx;
dx = -dx;
}
else
@@ -2764,9 +2646,9 @@ inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangl
x_index_base = 0;
}
- if( flipy )
+ if (flipy)
{
- y_index = (scaley-1)*dy;
+ y_index = (scaley - 1) * dy;
dy = -dy;
}
else
@@ -2774,48 +2656,47 @@ inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangl
y_index = 0;
}
- if( sx < myclip.min_x)
+ if (sx < myclip.min_x)
{ /* clip left */
- int pixels = myclip.min_x-sx;
+ int pixels = myclip.min_x - sx;
sx += pixels;
- x_index_base += pixels*dx;
+ x_index_base += pixels * dx;
}
- if( sy < myclip.min_y )
+ if (sy < myclip.min_y)
{ /* clip top */
- int pixels = myclip.min_y-sy;
+ int pixels = myclip.min_y - sy;
sy += pixels;
- y_index += pixels*dy;
+ y_index += pixels * dy;
}
/* NS 980211 - fixed incorrect clipping */
- if( ex > myclip.max_x+1 )
+ if (ex > myclip.max_x + 1)
{ /* clip right */
- int pixels = ex-myclip.max_x-1;
+ int pixels = ex - myclip.max_x - 1;
ex -= pixels;
}
- if( ey > myclip.max_y+1 )
+ if (ey > myclip.max_y + 1)
{ /* clip bottom */
- int pixels = ey-myclip.max_y-1;
+ int pixels = ey - myclip.max_y - 1;
ey -= pixels;
}
- if( ex>sx )
+ if (ex > sx)
{ /* skip if inner loop doesn't draw anything */
// if (dest_bmp.bpp == 32)
{
- int y;
- for( y=sy; y<ey; y++ )
+ for (int y = sy; y < ey; y++)
{
- const uint8_t *source = code_base + (y_index>>16) * 16;
- uint32_t *dest = &dest_bmp.pix32(y);
- uint8_t *pri = &m_pri_alp_bitmap.pix8(y);
+ const u8 *source = code_base + (y_index >> 16) * 16;
+ u32 *dest = &dest_bmp.pix32(y);
+ u8 *pri = &m_pri_alp_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] & m_sprite_pen_mask;
- if(c)
+ int c = source[x_index >> 16] & m_sprite_pen_mask;
+ if (c)
{
- uint8_t p=pri[x];
+ const u8 p = pri[x];
if (p == 0 || p == 0xff)
{
dest[x] = pal[c];
@@ -2837,222 +2718,240 @@ inline void taito_f3_state::f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangl
p##_addition = 0x100 - block_zoom_##p + p##_addition_left; \
p##_addition_left = p##_addition & 0xf; \
p##_addition = p##_addition >> 4; \
- /*zoom##p = p##_addition << 12;*/ \
+ /*zoom##p = p##_addition << 12; */ \
}
-void taito_f3_state::get_sprite_info(const uint16_t *spriteram16_ptr)
+void taito_f3_state::get_sprite_info(const u16 *spriteram16_ptr)
{
const rectangle &visarea = m_screen->visible_area();
- const int min_x=visarea.min_x,max_x=visarea.max_x;
- const int min_y=visarea.min_y,max_y=visarea.max_y;
- int offs,spritecont,flipx,flipy,/*old_x,*/color,x,y;
- int sprite,global_x=0,global_y=0,subglobal_x=0,subglobal_y=0;
- int block_x=0, block_y=0;
- int last_color=0,last_x=0,last_y=0,block_zoom_x=0,block_zoom_y=0;
- int this_x,this_y;
- int y_addition=16, x_addition=16;
- int multi=0;
- int sprite_top;
+ const int min_x = visarea.min_x, max_x = visarea.max_x;
+ const int min_y = visarea.min_y, max_y = visarea.max_y;
+ int global_x = 0,global_y = 0, subglobal_x = 0, subglobal_y = 0;
+ int block_x = 0, block_y = 0;
+ int last_color = 0, last_x = 0, last_y = 0,block_zoom_x = 0,block_zoom_y = 0;
+ int this_x, this_y;
+ int y_addition = 16, x_addition = 16;
+ int multi = 0;
int x_addition_left = 8, y_addition_left = 8;
struct tempsprite *sprite_ptr = m_spritelist;
- int total_sprites=0;
+ int total_sprites = 0;
- color=0;
- flipx=flipy=0;
- //old_x=0;
- y=x=0;
+ int color = 0;
+ int flipx = 0, flipy = 0;
+ //int old_x = 0;
+ int y = 0, x = 0;
- sprite_top=0x2000;
- for (offs = 0; offs < sprite_top && (total_sprites < 0x400); offs += 8)
+ int sprite_top = 0x2000;
+ for (int offs = 0; offs < sprite_top && (total_sprites < 0x400); offs += 8)
{
- const int current_offs=offs; /* Offs can change during loop, current_offs cannot */
+ const int current_offs = offs; /* Offs can change during loop, current_offs cannot */
/* Check if the sprite list jump command bit is set */
- if ((spriteram16_ptr[current_offs+6+0]) & 0x8000) {
- uint32_t jump = (spriteram16_ptr[current_offs+6+0])&0x3ff;
+ if ((spriteram16_ptr[current_offs + 6 + 0]) & 0x8000)
+ {
+ const u32 jump = (spriteram16_ptr[current_offs + 6 + 0]) & 0x3ff;
- uint32_t new_offs=((offs&0x4000)|((jump<<4)/2));
- if (new_offs==offs)
+ const u32 new_offs = ((offs & 0x4000) | ((jump << 4) / 2));
+ if (new_offs == offs)
break;
- offs=new_offs - 8;
+ offs = new_offs - 8;
}
/* Check if special command bit is set */
- if (spriteram16_ptr[current_offs+2+1] & 0x8000) {
- uint32_t cntrl=(spriteram16_ptr[current_offs+4+1])&0xffff;
- m_flipscreen=cntrl&0x2000;
+ if (spriteram16_ptr[current_offs + 2 + 1] & 0x8000)
+ {
+ const u32 cntrl = (spriteram16_ptr[current_offs + 4 + 1]) & 0xffff;
+ m_flipscreen = cntrl & 0x2000;
- /* cntrl&0x1000 = disabled? (From F2 driver, doesn't seem used anywhere)
- cntrl&0x0010 = ???
- cntrl&0x0020 = ???
+ /* cntrl & 0x1000 = disabled? (From F2 driver, doesn't seem used anywhere)
+ cntrl & 0x0010 = ???
+ cntrl & 0x0020 = ???
*/
m_sprite_extra_planes = (cntrl & 0x0300) >> 8; // 0 = 4bpp, 1 = 5bpp, 2 = unused?, 3 = 6bpp
m_sprite_pen_mask = (m_sprite_extra_planes << 4) | 0x0f;
/* Sprite bank select */
- if (cntrl&1) {
- offs=offs|0x4000;
- sprite_top=sprite_top|0x4000;
+ if (cntrl & 1)
+ {
+ offs = offs | 0x4000;
+ sprite_top = sprite_top | 0x4000;
}
}
/* Set global sprite scroll */
- if (((spriteram16_ptr[current_offs+2+0]) & 0xf000) == 0xa000) {
- global_x = (spriteram16_ptr[current_offs+2+0]) & 0xfff;
+ if (((spriteram16_ptr[current_offs + 2 + 0]) & 0xf000) == 0xa000)
+ {
+ global_x = (spriteram16_ptr[current_offs + 2 + 0]) & 0xfff;
if (global_x >= 0x800) global_x -= 0x1000;
- global_y = spriteram16_ptr[current_offs+2+1] & 0xfff;
+ global_y = spriteram16_ptr[current_offs + 2 + 1] & 0xfff;
if (global_y >= 0x800) global_y -= 0x1000;
}
/* And sub-global sprite scroll */
- if (((spriteram16_ptr[current_offs+2+0]) & 0xf000) == 0x5000) {
- subglobal_x = (spriteram16_ptr[current_offs+2+0]) & 0xfff;
+ if (((spriteram16_ptr[current_offs + 2 + 0]) & 0xf000) == 0x5000)
+ {
+ subglobal_x = (spriteram16_ptr[current_offs + 2 + 0]) & 0xfff;
if (subglobal_x >= 0x800) subglobal_x -= 0x1000;
- subglobal_y = spriteram16_ptr[current_offs+2+1] & 0xfff;
+ subglobal_y = spriteram16_ptr[current_offs + 2 + 1] & 0xfff;
if (subglobal_y >= 0x800) subglobal_y -= 0x1000;
}
- if (((spriteram16_ptr[current_offs+2+0]) & 0xf000) == 0xb000) {
- subglobal_x = (spriteram16_ptr[current_offs+2+0]) & 0xfff;
+ if (((spriteram16_ptr[current_offs + 2 + 0]) & 0xf000) == 0xb000)
+ {
+ subglobal_x = (spriteram16_ptr[current_offs + 2 + 0]) & 0xfff;
if (subglobal_x >= 0x800) subglobal_x -= 0x1000;
- subglobal_y = spriteram16_ptr[current_offs+2+1] & 0xfff;
+ subglobal_y = spriteram16_ptr[current_offs + 2 + 1] & 0xfff;
if (subglobal_y >= 0x800) subglobal_y -= 0x1000;
- global_y=subglobal_y;
- global_x=subglobal_x;
+ global_y = subglobal_y;
+ global_x = subglobal_x;
}
/* A real sprite to process! */
- sprite = (spriteram16_ptr[current_offs+0+0]) | ((spriteram16_ptr[current_offs+4+1]&1)<<16);
- spritecont = spriteram16_ptr[current_offs+4+0]>>8;
+ const int sprite = (spriteram16_ptr[current_offs + 0 + 0]) | ((spriteram16_ptr[current_offs + 4 + 1] & 1) << 16);
+ const int spritecont = spriteram16_ptr[current_offs + 4 + 0] >> 8;
/* These games either don't set the XY control bits properly (68020 bug?), or
have some different mode from the others */
#ifdef DARIUSG_KLUDGE
- if (m_f3_game==DARIUSG || m_f3_game==GEKIRIDO || m_f3_game==CLEOPATR || m_f3_game==RECALH)
- multi=spritecont&0xf0;
+ if (m_game == DARIUSG || m_game == GEKIRIDO || m_game == CLEOPATR || m_game == RECALH)
+ multi = spritecont & 0xf0;
#endif
/* Check if this sprite is part of a continued block */
- if (multi) {
+ if (multi)
+ {
/* Bit 0x4 is 'use previous colour' for this block part */
- if (spritecont&0x4) color=last_color;
- else color=(spriteram16_ptr[current_offs+4+0])&0xff;
+ if (spritecont & 0x4) color=last_color;
+ else color = (spriteram16_ptr[current_offs + 4 + 0]) & 0xff;
#ifdef DARIUSG_KLUDGE
- if (m_f3_game==DARIUSG || m_f3_game==GEKIRIDO || m_f3_game==CLEOPATR || m_f3_game==RECALH) {
+ if (m_game == DARIUSG || m_game == GEKIRIDO || m_game == CLEOPATR || m_game == RECALH)
+ {
/* Adjust X Position */
- if ((spritecont & 0x40) == 0) {
- if (spritecont & 0x4) {
+ if ((spritecont & 0x40) == 0)
+ {
+ if (spritecont & 0x4)
x = block_x;
- } else {
- this_x = spriteram16_ptr[current_offs+2+0];
- if (this_x&0x800) this_x= 0 - (0x800 - (this_x&0x7ff)); else this_x&=0x7ff;
-
- if ((spriteram16_ptr[current_offs+2+0])&0x8000) {
- this_x+=0;
- } else if ((spriteram16_ptr[current_offs+2+0])&0x4000) {
- /* Ignore subglobal (but apply global) */
- this_x+=global_x;
- } else { /* Apply both scroll offsets */
- this_x+=global_x+subglobal_x;
- }
+ else
+ {
+ this_x = spriteram16_ptr[current_offs + 2 + 0];
+ if (this_x & 0x800) this_x = 0 - (0x800 - (this_x & 0x7ff)); else this_x &= 0x7ff;
+
+ if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x8000)
+ this_x += 0;
+ else if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x4000) /* Ignore subglobal (but apply global) */
+ this_x += global_x;
+ else /* Apply both scroll offsets */
+ this_x += global_x + subglobal_x;
x = block_x = this_x;
}
x_addition_left = 8;
CALC_ZOOM(x)
}
- else if ((spritecont & 0x80) != 0) {
- x = last_x+x_addition;
+ else if ((spritecont & 0x80) != 0)
+ {
+ x = last_x + x_addition;
CALC_ZOOM(x)
}
/* Adjust Y Position */
- if ((spritecont & 0x10) == 0) {
- if (spritecont & 0x4) {
+ if ((spritecont & 0x10) == 0)
+ {
+ if (spritecont & 0x4)
y = block_y;
- } else {
- this_y = spriteram16_ptr[current_offs+2+1]&0xffff;
- if (this_y&0x800) this_y= 0 - (0x800 - (this_y&0x7ff)); else this_y&=0x7ff;
-
- if ((spriteram16_ptr[current_offs+2+0])&0x8000) {
- this_y+=0;
- } else if ((spriteram16_ptr[current_offs+2+0])&0x4000) {
- /* Ignore subglobal (but apply global) */
- this_y+=global_y;
- } else { /* Apply both scroll offsets */
- this_y+=global_y+subglobal_y;
- }
+ else
+ {
+ this_y = spriteram16_ptr[current_offs + 2 + 1] & 0xffff;
+ if (this_y & 0x800) this_y = 0 - (0x800 - (this_y & 0x7ff)); else this_y &= 0x7ff;
+
+ if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x8000)
+ this_y += 0;
+ else if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x4000) /* Ignore subglobal (but apply global) */
+ this_y += global_y;
+ else /* Apply both scroll offsets */
+ this_y += global_y + subglobal_y;
y = block_y = this_y;
}
y_addition_left = 8;
CALC_ZOOM(y)
}
- else if ((spritecont & 0x20) != 0) {
- y = last_y+y_addition;
+ else if ((spritecont & 0x20) != 0)
+ {
+ y = last_y + y_addition;
CALC_ZOOM(y)
}
- } else
+ }
+ else
#endif
{
/* Adjust X Position */
- if ((spritecont & 0x40) == 0) {
+ if ((spritecont & 0x40) == 0)
+ {
x = block_x;
x_addition_left = 8;
CALC_ZOOM(x)
}
- else if ((spritecont & 0x80) != 0) {
- x = last_x+x_addition;
+ else if ((spritecont & 0x80) != 0)
+ {
+ x = last_x + x_addition;
CALC_ZOOM(x)
}
/* Adjust Y Position */
- if ((spritecont & 0x10) == 0) {
+ if ((spritecont & 0x10) == 0)
+ {
y = block_y;
y_addition_left = 8;
CALC_ZOOM(y)
}
- else if ((spritecont & 0x20) != 0) {
- y = last_y+y_addition;
+ else if ((spritecont & 0x20) != 0)
+ {
+ y = last_y + y_addition;
CALC_ZOOM(y)
}
/* Both zero = reread block latch? */
}
}
/* Else this sprite is the possible start of a block */
- else {
- color = (spriteram16_ptr[current_offs+4+0])&0xff;
- last_color=color;
+ else
+ {
+ color = (spriteram16_ptr[current_offs + 4 + 0]) & 0xff;
+ last_color = color;
/* Sprite positioning */
- this_y = spriteram16_ptr[current_offs+2+1]&0xffff;
- this_x = spriteram16_ptr[current_offs+2+0]&0xffff;
- if (this_y&0x800) this_y= 0 - (0x800 - (this_y&0x7ff)); else this_y&=0x7ff;
- if (this_x&0x800) this_x= 0 - (0x800 - (this_x&0x7ff)); else this_x&=0x7ff;
+ this_y = spriteram16_ptr[current_offs + 2 + 1] & 0xffff;
+ this_x = spriteram16_ptr[current_offs + 2 + 0] & 0xffff;
+ if (this_y & 0x800) this_y = 0 - (0x800 - (this_y & 0x7ff)); else this_y &= 0x7ff;
+ if (this_x & 0x800) this_x = 0 - (0x800 - (this_x & 0x7ff)); else this_x &= 0x7ff;
/* Ignore both scroll offsets for this block */
- if ((spriteram16_ptr[current_offs+2+0])&0x8000) {
- this_x+=0;
- this_y+=0;
- } else if ((spriteram16_ptr[current_offs+2+0])&0x4000) {
- /* Ignore subglobal (but apply global) */
- this_x+=global_x;
- this_y+=global_y;
- } else { /* Apply both scroll offsets */
- this_x+=global_x+subglobal_x;
- this_y+=global_y+subglobal_y;
+ if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x8000)
+ {
+ this_x += 0;
+ this_y += 0;
+ }
+ else if ((spriteram16_ptr[current_offs + 2 + 0]) & 0x4000) /* Ignore subglobal (but apply global) */
+ {
+ this_x += global_x;
+ this_y += global_y;
+ }
+ else /* Apply both scroll offsets */
+ {
+ this_x += global_x + subglobal_x;
+ this_y += global_y + subglobal_y;
}
block_y = y = this_y;
block_x = x = this_x;
- block_zoom_x=spriteram16_ptr[current_offs+0+1];
- block_zoom_y=(block_zoom_x>>8)&0xff;
- block_zoom_x&=0xff;
+ block_zoom_x = spriteram16_ptr[current_offs + 0 + 1];
+ block_zoom_y = (block_zoom_x >> 8) & 0xff;
+ block_zoom_x &= 0xff;
x_addition_left = 8;
CALC_ZOOM(x)
@@ -3062,23 +2961,21 @@ void taito_f3_state::get_sprite_info(const uint16_t *spriteram16_ptr)
}
/* These features are common to sprite and block parts */
- flipx = spritecont&0x1;
- flipy = spritecont&0x2;
- multi = spritecont&0x8;
+ flipx = spritecont & 0x1;
+ flipy = spritecont & 0x2;
+ multi = spritecont & 0x8;
last_x=x;
- last_y=y;
+ last_y = y;
if (!sprite) continue;
if (!x_addition || !y_addition) continue;
if (m_flipscreen)
{
- int tx,ty;
-
- tx = 512-x_addition-x;
- ty = 256-y_addition-y;
+ const int tx = 512 - x_addition - x;
+ const int ty = 256 - y_addition - y;
- if (tx+x_addition<=min_x || tx>max_x || ty+y_addition<=min_y || ty>max_y) continue;
+ if (tx + x_addition <= min_x || tx > max_x || ty + y_addition <= min_y || ty > max_y) continue;
sprite_ptr->x = tx;
sprite_ptr->y = ty;
sprite_ptr->flipx = !flipx;
@@ -3086,14 +2983,13 @@ void taito_f3_state::get_sprite_info(const uint16_t *spriteram16_ptr)
}
else
{
- if (x+x_addition<=min_x || x>max_x || y+y_addition<=min_y || y>max_y) continue;
+ if (x + x_addition <= min_x || x > max_x || y + y_addition <= min_y || y > max_y) continue;
sprite_ptr->x = x;
sprite_ptr->y = y;
sprite_ptr->flipx = flipx;
sprite_ptr->flipy = flipy;
}
-
sprite_ptr->code = sprite;
sprite_ptr->color = color;
sprite_ptr->zoomx = x_addition;
@@ -3113,99 +3009,98 @@ void taito_f3_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec
gfx_element *sprite_gfx = m_gfxdecode->gfx(2);
sprite_ptr = m_sprite_end;
- m_sprite_pri_usage=0;
+ m_sprite_pri_usage = 0;
// if sprites use more than 4bpp, the bottom bits of the color code must be masked out.
// This fixes (at least) stage 1 battle ships and attract mode explosions in Ray Force.
while (sprite_ptr != m_spritelist)
{
- int pri;
sprite_ptr--;
- pri=sprite_ptr->pri;
- m_sprite_pri_usage|=1<<pri;
+ const int pri = sprite_ptr->pri;
+ m_sprite_pri_usage |= 1 << pri;
- if(sprite_ptr->zoomx==16 && sprite_ptr->zoomy==16)
+ if (sprite_ptr->zoomx == 16 && sprite_ptr->zoomy == 16)
f3_drawgfx(
- bitmap,cliprect,sprite_gfx,
+ bitmap, cliprect, sprite_gfx,
sprite_ptr->code,
sprite_ptr->color & (~m_sprite_extra_planes),
- sprite_ptr->flipx,sprite_ptr->flipy,
- sprite_ptr->x,sprite_ptr->y,
+ sprite_ptr->flipx, sprite_ptr->flipy,
+ sprite_ptr->x, sprite_ptr->y,
pri);
else
f3_drawgfxzoom(
- bitmap,cliprect,sprite_gfx,
+ bitmap, cliprect, sprite_gfx,
sprite_ptr->code,
sprite_ptr->color & (~m_sprite_extra_planes),
- sprite_ptr->flipx,sprite_ptr->flipy,
- sprite_ptr->x,sprite_ptr->y,
- sprite_ptr->zoomx,sprite_ptr->zoomy,
+ sprite_ptr->flipx, sprite_ptr->flipy,
+ sprite_ptr->x, sprite_ptr->y,
+ sprite_ptr->zoomx, sprite_ptr->zoomy,
pri);
}
}
/******************************************************************************/
-uint32_t taito_f3_state::screen_update_f3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+u32 taito_f3_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- uint32_t sy_fix[5],sx_fix[5];
+ u32 sy_fix[5], sx_fix[5];
machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
/* Setup scroll */
- sy_fix[0]=((m_f3_control_0[4]&0xffff)<< 9) + (1<<16);
- sy_fix[1]=((m_f3_control_0[5]&0xffff)<< 9) + (1<<16);
- sy_fix[2]=((m_f3_control_0[6]&0xffff)<< 9) + (1<<16);
- sy_fix[3]=((m_f3_control_0[7]&0xffff)<< 9) + (1<<16);
- sx_fix[0]=((m_f3_control_0[0]&0xffc0)<<10) - (6<<16);
- sx_fix[1]=((m_f3_control_0[1]&0xffc0)<<10) - (10<<16);
- sx_fix[2]=((m_f3_control_0[2]&0xffc0)<<10) - (14<<16);
- sx_fix[3]=((m_f3_control_0[3]&0xffc0)<<10) - (18<<16);
- sx_fix[4]=-(m_f3_control_1[4])+41;
- sy_fix[4]=-(m_f3_control_1[5]&0x1ff);
-
- sx_fix[0]-=((m_f3_control_0[0]&0x003f)<<10)+0x0400-0x10000;
- sx_fix[1]-=((m_f3_control_0[1]&0x003f)<<10)+0x0400-0x10000;
- sx_fix[2]-=((m_f3_control_0[2]&0x003f)<<10)+0x0400-0x10000;
- sx_fix[3]-=((m_f3_control_0[3]&0x003f)<<10)+0x0400-0x10000;
+ sy_fix[0] = ((m_control_0[4] & 0xffff) << 9) + (1 << 16);
+ sy_fix[1] = ((m_control_0[5] & 0xffff) << 9) + (1 << 16);
+ sy_fix[2] = ((m_control_0[6] & 0xffff) << 9) + (1 << 16);
+ sy_fix[3] = ((m_control_0[7] & 0xffff) << 9) + (1 << 16);
+ sx_fix[0] = ((m_control_0[0] & 0xffc0) << 10) - (6 << 16);
+ sx_fix[1] = ((m_control_0[1] & 0xffc0) << 10) - (10 << 16);
+ sx_fix[2] = ((m_control_0[2] & 0xffc0) << 10) - (14 << 16);
+ sx_fix[3] = ((m_control_0[3] & 0xffc0) << 10) - (18 << 16);
+ sx_fix[4] = -(m_control_1[4]) + 41;
+ sy_fix[4] = -(m_control_1[5] & 0x1ff);
+
+ sx_fix[0]-=((m_control_0[0] & 0x003f) << 10) + 0x0400 - 0x10000;
+ sx_fix[1]-=((m_control_0[1] & 0x003f) << 10) + 0x0400 - 0x10000;
+ sx_fix[2]-=((m_control_0[2] & 0x003f) << 10) + 0x0400 - 0x10000;
+ sx_fix[3]-=((m_control_0[3] & 0x003f) << 10) + 0x0400 - 0x10000;
if (m_flipscreen)
{
- sy_fix[0]= 0x3000000-sy_fix[0];
- sy_fix[1]= 0x3000000-sy_fix[1];
- sy_fix[2]= 0x3000000-sy_fix[2];
- sy_fix[3]= 0x3000000-sy_fix[3];
- sx_fix[0]=-0x1a00000-sx_fix[0];
- sx_fix[1]=-0x1a00000-sx_fix[1];
- sx_fix[2]=-0x1a00000-sx_fix[2];
- sx_fix[3]=-0x1a00000-sx_fix[3];
- sx_fix[4]=-sx_fix[4] + 75;
- sy_fix[4]=-sy_fix[4];
+ sy_fix[0] = 0x3000000 - sy_fix[0];
+ sy_fix[1] = 0x3000000 - sy_fix[1];
+ sy_fix[2] = 0x3000000 - sy_fix[2];
+ sy_fix[3] = 0x3000000 - sy_fix[3];
+ sx_fix[0] = -0x1a00000 - sx_fix[0];
+ sx_fix[1] = -0x1a00000 - sx_fix[1];
+ sx_fix[2] = -0x1a00000 - sx_fix[2];
+ sx_fix[3] = -0x1a00000 - sx_fix[3];
+ sx_fix[4] = -sx_fix[4] + 75;
+ sy_fix[4] = -sy_fix[4];
}
m_pri_alp_bitmap.fill(0, cliprect);
/* sprites */
- if (m_sprite_lag==0)
- get_sprite_info(m_spriteram.get());
+ if (m_sprite_lag == 0)
+ get_sprite_info(m_spriteram.target());
/* Update sprite buffer */
- draw_sprites(bitmap,cliprect);
+ draw_sprites(bitmap, cliprect);
/* Parse sprite, alpha & clipping parts of lineram */
get_spritealphaclip_info();
/* Parse playfield effects */
- get_line_ram_info(m_pf1_tilemap,sx_fix[0],sy_fix[0],0,m_f3_pf_data_1);
- get_line_ram_info(m_pf2_tilemap,sx_fix[1],sy_fix[1],1,m_f3_pf_data_2);
- get_line_ram_info(m_pf3_tilemap,sx_fix[2],sy_fix[2],2,m_f3_pf_data_3);
- get_line_ram_info(m_pf4_tilemap,sx_fix[3],sy_fix[3],3,m_f3_pf_data_4);
- get_vram_info(m_vram_layer,m_pixel_layer,sx_fix[4],sy_fix[4]);
+ get_line_ram_info(m_tilemap[0], sx_fix[0], sy_fix[0], 0, m_pf_data[0]);
+ get_line_ram_info(m_tilemap[1], sx_fix[1], sy_fix[1], 1, m_pf_data[1]);
+ get_line_ram_info(m_tilemap[2], sx_fix[2], sy_fix[2], 2, m_pf_data[2]);
+ get_line_ram_info(m_tilemap[3], sx_fix[3], sy_fix[3], 3, m_pf_data[3]);
+ get_vram_info(m_vram_layer, m_pixel_layer, sx_fix[4], sy_fix[4]);
/* Draw final framebuffer */
- scanline_draw(bitmap,cliprect);
+ scanline_draw(bitmap, cliprect);
if (VERBOSE)
print_debug_info(bitmap);