trunk/src/mess/video/gb.c
| r22057 | r22058 | |
| 526 | 526 | void gb_state::sgb_refresh_border() |
| 527 | 527 | { |
| 528 | 528 | UINT16 data, data2; |
| 529 | | UINT16 yidx, xidx, xindex; |
| 530 | | UINT8 *map, *tiles, *tiles2; |
| 531 | | UINT8 pal, i; |
| 532 | | bitmap_ind16 &bitmap = m_bitmap; |
| 529 | UINT8 *tiles, *tiles2; |
| 533 | 530 | |
| 534 | | map = m_sgb_tile_map - 64; |
| 535 | | |
| 536 | | for( yidx = 0; yidx < 224; yidx++ ) |
| 531 | for( UINT16 yidx = 0; yidx < 224; yidx++ ) |
| 537 | 532 | { |
| 538 | | xindex = 0; |
| 539 | | map += (yidx % 8) ? 0 : 64; |
| 540 | | for( xidx = 0; xidx < 64; xidx+=2 ) |
| 533 | UINT8 *map = m_sgb_tile_map + ( ( yidx >> 3 ) * 64 ); |
| 534 | UINT16 xindex = 0; |
| 535 | |
| 536 | for( UINT16 xidx = 0; xidx < 64; xidx+=2 ) |
| 541 | 537 | { |
| 542 | 538 | if( map[xidx+1] & 0x80 ) /* Vertical flip */ |
| 543 | 539 | tiles = m_sgb_tile_data + ( ( 7 - ( yidx % 8 ) ) << 1 ); |
| r22057 | r22058 | |
| 545 | 541 | tiles = m_sgb_tile_data + ( ( yidx % 8 ) << 1 ); |
| 546 | 542 | tiles2 = tiles + 16; |
| 547 | 543 | |
| 548 | | pal = (map[xidx+1] & 0x1C) >> 2; |
| 544 | UINT8 pal = (map[xidx+1] & 0x1C) >> 2; |
| 549 | 545 | if( pal == 0 ) |
| 550 | 546 | pal = 1; |
| 551 | 547 | pal <<= 4; |
| r22057 | r22058 | |
| 564 | 560 | data2 = tiles2[ map[xidx] * 32 ] | ( tiles2[ (map[xidx] * 32 ) + 1 ] << 8 ); |
| 565 | 561 | } |
| 566 | 562 | |
| 567 | | for( i = 0; i < 8; i++ ) |
| 563 | for( UINT8 i = 0; i < 8; i++ ) |
| 568 | 564 | { |
| 569 | 565 | register UINT8 colour; |
| 570 | 566 | if( (map[xidx+1] & 0x40) ) /* Horizontal flip */ |
| r22057 | r22058 | |
| 588 | 584 | if( !((yidx >= SGB_YOFFSET && yidx < SGB_YOFFSET + 144) && |
| 589 | 585 | (xindex >= SGB_XOFFSET && xindex < SGB_XOFFSET + 160)) ) |
| 590 | 586 | { |
| 591 | | gb_plot_pixel(bitmap, xindex, yidx, m_sgb_pal[pal + colour]); |
| 587 | gb_plot_pixel(m_bitmap, xindex, yidx, m_sgb_pal[pal + colour]); |
| 592 | 588 | } |
| 593 | 589 | xindex++; |
| 594 | 590 | } |