trunk/src/mame/drivers/coolridr.c
| r21406 | r21407 | |
| 543 | 543 | UINT16 dot_data,pal_data; |
| 544 | 544 | int r,g,b; |
| 545 | 545 | |
| 546 | /* base tile scrolling */ |
| 546 | 547 | xsrc = ((xdst + scrollx) & (xsize_mask)) >> 4; |
| 547 | 548 | ysrc = ((ydst + scrolly) & (ysize_mask)) >> 4; |
| 549 | /* apply fractional scrolling */ |
| 548 | 550 | xisrc = (xdst + scrollx) & (xi_mask); |
| 549 | 551 | yisrc = (ydst + scrolly) & (yi_mask); |
| 552 | /* do the tile offset calc */ |
| 550 | 553 | src_offs = (xsrc + (ysrc*xsize)); |
| 551 | 554 | src_offs += base_offset; |
| 552 | 555 | |
| 556 | /* fetch tilemap data */ |
| 553 | 557 | cur_tile = m_h1_vram[src_offs]; |
| 554 | 558 | |
| 559 | /* split proper tile reading and apply color too */ |
| 555 | 560 | tile = cur_tile & 0x07ff; |
| 556 | 561 | color = m_color + ((cur_tile & 0x0800) >> 11) * 4; |
| 557 | 562 | |
| 558 | | /* we have a tile number, fetch into the PCG RAM */ |
| 563 | /* we have a tile number, fetch the PCG RAM */ |
| 559 | 564 | pcg_offs = (xisrc+yisrc*xi_size)+tile*xi_size*yi_size; |
| 565 | /* the dot offset calculation */ |
| 560 | 566 | dot_data = m_h1_pcg[pcg_offs/2]; |
| 561 | 567 | dot_data>>= ((pcg_offs & 1) ^ 1) * 8; |
| 562 | 568 | dot_data&= 0xff; |
| r21406 | r21407 | |
| 568 | 574 | g = pal5bit((pal_data >> 5) & 0x1f); |
| 569 | 575 | b = pal5bit((pal_data >> 0) & 0x1f); |
| 570 | 576 | |
| 577 | /* put on the screen */ |
| 571 | 578 | bitmap.pix32(ydst, xdst) = r<<16 | g<<8 | b; |
| 572 | 579 | } |
| 573 | 580 | } |