summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pc88va.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc88va.cpp')
-rw-r--r--src/mame/drivers/pc88va.cpp108
1 files changed, 46 insertions, 62 deletions
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index 1f6cc8ea76c..a532443e380 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -39,26 +39,22 @@ void pc88va_state::video_start()
void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- uint16_t *tvram = m_tvram;
- int offs,i;
+ uint16_t const *const tvram = m_tvram;
- offs = m_tsp.spr_offset;
- for(i=0;i<(0x100);i+=(8))
+ int offs = m_tsp.spr_offset;
+ for(int i=0;i<(0x100);i+=(8))
{
- int xp,yp,sw,md,xsize,ysize,spda,fg_col,bc;
- int x_i,y_i,x_s;
int spr_count;
- int pen;
-
- ysize = (tvram[(offs + i + 0) / 2] & 0xfc00) >> 10;
- sw = (tvram[(offs + i + 0) / 2] & 0x200) >> 9;
- yp = (tvram[(offs + i + 0) / 2] & 0x1ff);
- xsize = (tvram[(offs + i + 2) / 2] & 0xf800) >> 11;
- md = (tvram[(offs + i + 2) / 2] & 0x400) >> 10;
- xp = (tvram[(offs + i + 2) / 2] & 0x3ff);
- spda = (tvram[(offs + i + 4) / 2] & 0xffff);
- fg_col = (tvram[(offs + i + 6) / 2] & 0xf0) >> 4;
- bc = (tvram[(offs + i + 6) / 2] & 0x08) >> 3;
+
+ int ysize = (tvram[(offs + i + 0) / 2] & 0xfc00) >> 10;
+ int sw = (tvram[(offs + i + 0) / 2] & 0x200) >> 9;
+ int yp = (tvram[(offs + i + 0) / 2] & 0x1ff);
+ int xsize = (tvram[(offs + i + 2) / 2] & 0xf800) >> 11;
+ int md = (tvram[(offs + i + 2) / 2] & 0x400) >> 10;
+ int xp = (tvram[(offs + i + 2) / 2] & 0x3ff);
+ int spda = (tvram[(offs + i + 4) / 2] & 0xffff);
+ int fg_col = (tvram[(offs + i + 6) / 2] & 0xf0) >> 4;
+ int bc = (tvram[(offs + i + 6) / 2] & 0x08) >> 3;
if(!sw)
continue;
@@ -86,18 +82,18 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
spr_count = 0;
- for(y_i=0;y_i<ysize;y_i++)
+ for(int y_i=0;y_i<ysize;y_i++)
{
- for(x_i=0;x_i<xsize;x_i+=16)
+ for(int x_i=0;x_i<xsize;x_i+=16)
{
- for(x_s=0;x_s<16;x_s++)
+ for(int x_s=0;x_s<16;x_s++)
{
- pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-x_s)) & 1;
+ int pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8) >> (15-x_s)) & 1;
pen = pen & 1 ? fg_col : (bc) ? 8 : -1;
if(pen != -1) //transparent pen
- bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
+ bitmap.pix(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
}
spr_count+=2;
}
@@ -113,16 +109,16 @@ void pc88va_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect)
spr_count = 0;
- for(y_i=0;y_i<ysize;y_i++)
+ for(int y_i=0;y_i<ysize;y_i++)
{
- for(x_i=0;x_i<xsize;x_i+=2)
+ for(int x_i=0;x_i<xsize;x_i+=2)
{
- for(x_s=0;x_s<2;x_s++)
+ for(int x_s=0;x_s<2;x_s++)
{
- pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8)) >> (16-(x_s*8)) & 0xf;
+ int pen = (bitswap<16>(tvram[(spda+spr_count) / 2],7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8)) >> (16-(x_s*8)) & 0xf;
//if(bc != -1) //transparent pen
- bitmap.pix32(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
+ bitmap.pix(yp+y_i, xp+x_i+(x_s)) = m_palette->pen(pen);
}
spr_count+=2;
}
@@ -148,41 +144,31 @@ uint32_t pc88va_state::calc_kanji_rom_addr(uint8_t jis1,uint8_t jis2,int x,int y
void pc88va_state::draw_text(bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- uint16_t *tvram = m_tvram;
+ uint16_t const *const tvram = m_tvram;
// TODO: PCG select won't work with this arrangement
- uint8_t *kanji = memregion("kanji")->base();
- int xi,yi;
- int x,y;
- int res_x,res_y;
- uint16_t lr_half_gfx;
- uint8_t jis1,jis2;
- uint32_t count;
- uint32_t tile_num;
- uint16_t attr;
- uint8_t attr_mode;
- uint8_t fg_col,bg_col,secret,reverse;
- //uint8_t blink,dwidc,dwid,uline,hline;
- uint8_t screen_fg_col,screen_bg_col;
-
- count = tvram[m_tsp.tvram_vreg_offset/2];
-
- attr_mode = tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0x1f;
+ uint8_t const *const kanji = memregion("kanji")->base();
+
+ uint32_t count = tvram[m_tsp.tvram_vreg_offset/2];
+
+ uint8_t attr_mode = tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0x1f;
/* Note: bug in docs has the following two reversed */
- screen_fg_col = (tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0xf000) >> 12;
- screen_bg_col = (tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0x0f00) >> 8;
+ uint8_t screen_fg_col = (tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0xf000) >> 12;
+ uint8_t screen_bg_col = (tvram[(m_tsp.tvram_vreg_offset+0xa) / 2] & 0x0f00) >> 8;
- for(y=0;y<13;y++)
+ for(int y=0;y<13;y++)
{
- for(x=0;x<80;x++)
+ for(int x=0;x<80;x++)
{
- jis1 = (tvram[count] & 0x7f) + 0x20;
- jis2 = (tvram[count] & 0x7f00) >> 8;
- lr_half_gfx = ((tvram[count] & 0x8000) >> 15);
+ uint8_t jis1 = (tvram[count] & 0x7f) + 0x20;
+ uint8_t jis2 = (tvram[count] & 0x7f00) >> 8;
+ uint16_t lr_half_gfx = ((tvram[count] & 0x8000) >> 15);
- tile_num = calc_kanji_rom_addr(jis1,jis2,x,y);
+ uint32_t tile_num = calc_kanji_rom_addr(jis1,jis2,x,y);
- attr = (tvram[count+(m_tsp.attr_offset/2)] & 0x00ff);
+ uint16_t attr = (tvram[count+(m_tsp.attr_offset/2)] & 0x00ff);
+ uint8_t fg_col,bg_col,secret,reverse;
+ //uint8_t blink,dwidc,dwid,uline,hline;
fg_col = bg_col = reverse = secret = 0; //blink = dwidc = dwid = uline = hline = 0;
switch(attr_mode)
@@ -296,19 +282,17 @@ void pc88va_state::draw_text(bitmap_rgb32 &bitmap, const rectangle &cliprect)
return;
}
- for(yi=0;yi<16;yi++)
+ for(int yi=0;yi<16;yi++)
{
- for(xi=0;xi<8;xi++)
+ for(int xi=0;xi<8;xi++)
{
- int pen;
-
- res_x = x*8+xi;
- res_y = y*16+yi;
+ int res_x = x*8+xi;
+ int res_y = y*16+yi;
if(!cliprect.contains(res_x, res_y))
continue;
- pen = kanji[((yi*2)+lr_half_gfx)+tile_num] >> (7-xi) & 1;
+ int pen = kanji[((yi*2)+lr_half_gfx)+tile_num] >> (7-xi) & 1;
if(reverse)
pen = pen & 1 ? bg_col : fg_col;
@@ -318,7 +302,7 @@ void pc88va_state::draw_text(bitmap_rgb32 &bitmap, const rectangle &cliprect)
if(secret) { pen = 0; } //hide text
if(pen != -1) //transparent
- bitmap.pix32(res_y, res_x) = m_palette->pen(pen);
+ bitmap.pix(res_y, res_x) = m_palette->pen(pen);
}
}