diff options
Diffstat (limited to 'src/mame/drivers/pc88va.cpp')
-rw-r--r-- | src/mame/drivers/pc88va.cpp | 108 |
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); } } |