trunk/src/mess/video/mos6566.c
r17699 | r17700 | |
471 | 471 | c = 0; |
472 | 472 | break; |
473 | 473 | } |
474 | | m_bitmap->plot_box(m_graphic_x, VIC2_RASTER_2_EMU(m_rasterline), 8, 1, c); |
| 474 | m_bitmap.plot_box(m_graphic_x, VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[c]); |
475 | 475 | } |
476 | 476 | } |
477 | 477 | |
r17699 | r17700 | |
483 | 483 | c[0] = c0; |
484 | 484 | c[1] = c1; |
485 | 485 | |
486 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = c[data & 1]; |
| 486 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[c[data & 1]]; |
487 | 487 | m_fore_coll_buf[p + 7] = data & 1; data >>= 1; |
488 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = c[data & 1]; |
| 488 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[c[data & 1]]; |
489 | 489 | m_fore_coll_buf[p + 6] = data & 1; data >>= 1; |
490 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = c[data & 1]; |
| 490 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[c[data & 1]]; |
491 | 491 | m_fore_coll_buf[p + 5] = data & 1; data >>= 1; |
492 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = c[data & 1]; |
| 492 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[c[data & 1]]; |
493 | 493 | m_fore_coll_buf[p + 4] = data & 1; data >>= 1; |
494 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = c[data & 1]; |
| 494 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[c[data & 1]]; |
495 | 495 | m_fore_coll_buf[p + 3] = data & 1; data >>= 1; |
496 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = c[data & 1]; |
| 496 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[c[data & 1]]; |
497 | 497 | m_fore_coll_buf[p + 2] = data & 1; data >>= 1; |
498 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = c[data & 1]; |
| 498 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[c[data & 1]]; |
499 | 499 | m_fore_coll_buf[p + 1] = data & 1; data >>= 1; |
500 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = c[data]; |
| 500 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[c[data]]; |
501 | 501 | m_fore_coll_buf[p + 0] = data & 1; |
502 | 502 | } |
503 | 503 | |
r17699 | r17700 | |
511 | 511 | c[2] = c2; |
512 | 512 | c[3] = c3; |
513 | 513 | |
514 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = c[data & 3]; |
| 514 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[c[data & 3]]; |
515 | 515 | m_fore_coll_buf[p + 7] = data & 2; |
516 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = c[data & 3]; |
| 516 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[c[data & 3]]; |
517 | 517 | m_fore_coll_buf[p + 6] = data & 2; data >>= 2; |
518 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = c[data & 3]; |
| 518 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[c[data & 3]]; |
519 | 519 | m_fore_coll_buf[p + 5] = data & 2; |
520 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = c[data & 3]; |
| 520 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[c[data & 3]]; |
521 | 521 | m_fore_coll_buf[p + 4] = data & 2; data >>= 2; |
522 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = c[data & 3]; |
| 522 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[c[data & 3]]; |
523 | 523 | m_fore_coll_buf[p + 3] = data & 2; |
524 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = c[data & 3]; |
| 524 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[c[data & 3]]; |
525 | 525 | m_fore_coll_buf[p + 2] = data & 2; data >>= 2; |
526 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = c[data]; |
| 526 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[c[data]]; |
527 | 527 | m_fore_coll_buf[p + 1] = data & 2; |
528 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = c[data]; |
| 528 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[c[data]]; |
529 | 529 | m_fore_coll_buf[p + 0] = data & 2; |
530 | 530 | } |
531 | 531 | |
r17699 | r17700 | |
626 | 626 | m_cpu = machine().device<cpu_device>(m_cpu_tag); |
627 | 627 | |
628 | 628 | m_screen = machine().device<screen_device>(m_screen_tag); |
629 | | int width = m_screen->width(); |
630 | | int height = m_screen->height(); |
| 629 | m_screen->register_screen_bitmap(m_bitmap); |
631 | 630 | |
632 | | m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height); |
633 | | |
634 | | // initialize palette |
635 | | palette_set_colors(machine(), 0, PALETTE, ARRAY_LENGTH(PALETTE)); |
636 | | |
637 | 631 | for (int i = 0; i < 256; i++) |
638 | 632 | { |
639 | 633 | m_expandx[i] = 0; |
r17699 | r17700 | |
749 | 743 | |
750 | 744 | void mos6566_device::device_reset() |
751 | 745 | { |
752 | | int i, j; |
753 | | |
754 | 746 | memset(m_reg, 0, ARRAY_LENGTH(m_reg)); |
755 | 747 | |
756 | | for (i = 0; i < ARRAY_LENGTH(m_mc); i++) |
| 748 | for (int i = 0; i < ARRAY_LENGTH(m_mc); i++) |
757 | 749 | m_mc[i] = 63; |
758 | 750 | |
759 | 751 | // from 0 to 311 (0 first, PAL) or from 0 to 261 (? first, NTSC 6567R56A) or from 0 to 262 (? first, NTSC 6567R8) |
r17699 | r17700 | |
802 | 794 | memset(m_border_on_sample, 0, ARRAY_LENGTH(m_border_on_sample)); |
803 | 795 | memset(m_border_color_sample, 0, ARRAY_LENGTH(m_border_color_sample)); |
804 | 796 | |
805 | | for (i = 0; i < 8; i++) |
| 797 | for (int i = 0; i < 8; i++) |
806 | 798 | { |
807 | 799 | m_spr_ptr[i] = 0; |
808 | 800 | m_mc_base[i] = 0; |
809 | 801 | m_mc[i] = 0; |
810 | | for (j = 0; j < 4; j++) |
| 802 | |
| 803 | for (int j = 0; j < 4; j++) |
811 | 804 | { |
812 | 805 | m_spr_draw_data[i][j] = 0; |
813 | 806 | m_spr_data[i][j] = 0; |
814 | 807 | } |
815 | 808 | } |
| 809 | |
| 810 | for (int i = 0; i < 4; i++) |
| 811 | { |
| 812 | m_colors[i] = 0; |
| 813 | m_spritemulti[i] = 0; |
| 814 | } |
816 | 815 | } |
817 | 816 | |
818 | 817 | |
r17699 | r17700 | |
1325 | 1324 | |
1326 | 1325 | if (m_border_on_sample[0]) |
1327 | 1326 | for (i = 0; i < 4; i++) |
1328 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1327 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1329 | 1328 | |
1330 | 1329 | if (m_border_on_sample[1]) |
1331 | | m_bitmap->plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[4]); |
| 1330 | m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[4]]); |
1332 | 1331 | |
1333 | 1332 | if (m_border_on_sample[2]) |
1334 | 1333 | for (i = 5; i < 43; i++) |
1335 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1334 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1336 | 1335 | |
1337 | 1336 | if (m_border_on_sample[3]) |
1338 | | m_bitmap->plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[43]); |
| 1337 | m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[43]]); |
1339 | 1338 | |
1340 | 1339 | if (m_border_on_sample[4]) |
1341 | 1340 | { |
1342 | 1341 | for (i = 44; i < 48; i++) |
1343 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1342 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1344 | 1343 | for (i = 48; i < 53; i++) |
1345 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[47]); |
| 1344 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[47]]); |
1346 | 1345 | } |
1347 | 1346 | } |
1348 | 1347 | |
r17699 | r17700 | |
1948 | 1947 | |
1949 | 1948 | if (m_border_on_sample[0]) |
1950 | 1949 | for (i = 0; i < 4; i++) |
1951 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1950 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1952 | 1951 | |
1953 | 1952 | if (m_border_on_sample[1]) |
1954 | | m_bitmap->plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[4]); |
| 1953 | m_bitmap.plot_box(VIC2_X_2_EMU(4 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[4]]); |
1955 | 1954 | |
1956 | 1955 | if (m_border_on_sample[2]) |
1957 | 1956 | for (i = 5; i < 43; i++) |
1958 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1957 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1959 | 1958 | |
1960 | 1959 | if (m_border_on_sample[3]) |
1961 | | m_bitmap->plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[43]); |
| 1960 | m_bitmap.plot_box(VIC2_X_2_EMU(43 * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[43]]); |
1962 | 1961 | |
1963 | 1962 | if (m_border_on_sample[4]) |
1964 | 1963 | { |
1965 | 1964 | for (i = 44; i < 48; i++) |
1966 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[i]); |
| 1965 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[i]]); |
1967 | 1966 | for (i = 48; i < 51; i++) |
1968 | | m_bitmap->plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, m_border_color_sample[47]); |
| 1967 | m_bitmap.plot_box(VIC2_X_2_EMU(i * 8), VIC2_RASTER_2_EMU(m_rasterline), 8, 1, PALETTE[m_border_color_sample[47]]); |
1969 | 1968 | } |
1970 | 1969 | } |
1971 | 1970 | |
r17699 | r17700 | |
2098 | 2097 | vic2_draw_mono(p, tmp_col, m_color_data & 0x0f); |
2099 | 2098 | break; |
2100 | 2099 | case 5: |
2101 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = 0; |
| 2100 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0]; |
2102 | 2101 | m_fore_coll_buf[p + 7] = 0; |
2103 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = 0; |
| 2102 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0]; |
2104 | 2103 | m_fore_coll_buf[p + 6] = 0; |
2105 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = 0; |
| 2104 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0]; |
2106 | 2105 | m_fore_coll_buf[p + 5] = 0; |
2107 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = 0; |
| 2106 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0]; |
2108 | 2107 | m_fore_coll_buf[p + 4] = 0; |
2109 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = 0; |
| 2108 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0]; |
2110 | 2109 | m_fore_coll_buf[p + 3] = 0; |
2111 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = 0; |
| 2110 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0]; |
2112 | 2111 | m_fore_coll_buf[p + 2] = 0; |
2113 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = 0; |
| 2112 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0]; |
2114 | 2113 | m_fore_coll_buf[p + 1] = 0; |
2115 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = 0; |
| 2114 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0]; |
2116 | 2115 | m_fore_coll_buf[p + 0] = 0; |
2117 | 2116 | break; |
2118 | 2117 | case 6: |
2119 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = 0; |
| 2118 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0]; |
2120 | 2119 | m_fore_coll_buf[p + 7] = 0; |
2121 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = 0; |
| 2120 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0]; |
2122 | 2121 | m_fore_coll_buf[p + 6] = 0; |
2123 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = 0; |
| 2122 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0]; |
2124 | 2123 | m_fore_coll_buf[p + 5] = 0; |
2125 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = 0; |
| 2124 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0]; |
2126 | 2125 | m_fore_coll_buf[p + 4] = 0; |
2127 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = 0; |
| 2126 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0]; |
2128 | 2127 | m_fore_coll_buf[p + 3] = 0; |
2129 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = 0; |
| 2128 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0]; |
2130 | 2129 | m_fore_coll_buf[p + 2] = 0; |
2131 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = 0; |
| 2130 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0]; |
2132 | 2131 | m_fore_coll_buf[p + 1] = 0; |
2133 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = 0; |
| 2132 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0]; |
2134 | 2133 | m_fore_coll_buf[p + 0] = 0; |
2135 | 2134 | break; |
2136 | 2135 | case 7: |
2137 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = 0; |
| 2136 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 7) = PALETTE[0]; |
2138 | 2137 | m_fore_coll_buf[p + 7] = 0; |
2139 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = 0; |
| 2138 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 6) = PALETTE[0]; |
2140 | 2139 | m_fore_coll_buf[p + 6] = 0; |
2141 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = 0; |
| 2140 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 5) = PALETTE[0]; |
2142 | 2141 | m_fore_coll_buf[p + 5] = 0; |
2143 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = 0; |
| 2142 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 4) = PALETTE[0]; |
2144 | 2143 | m_fore_coll_buf[p + 4] = 0; |
2145 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = 0; |
| 2144 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 3) = PALETTE[0]; |
2146 | 2145 | m_fore_coll_buf[p + 3] = 0; |
2147 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = 0; |
| 2146 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 2) = PALETTE[0]; |
2148 | 2147 | m_fore_coll_buf[p + 2] = 0; |
2149 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = 0; |
| 2148 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 1) = PALETTE[0]; |
2150 | 2149 | m_fore_coll_buf[p + 1] = 0; |
2151 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = 0; |
| 2150 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + 0) = PALETTE[0]; |
2152 | 2151 | m_fore_coll_buf[p + 0] = 0; |
2153 | 2152 | break; |
2154 | 2153 | } |
r17699 | r17700 | |
2223 | 2222 | if (SPRITE_PRIORITY(snum)) |
2224 | 2223 | { |
2225 | 2224 | if (m_fore_coll_buf[p + i] == 0) |
2226 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2225 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2227 | 2226 | m_spr_coll_buf[p + i] = sbit; |
2228 | 2227 | } |
2229 | 2228 | else |
2230 | 2229 | { |
2231 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2230 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2232 | 2231 | m_spr_coll_buf[p + i] = sbit; |
2233 | 2232 | } |
2234 | 2233 | } |
r17699 | r17700 | |
2271 | 2270 | if (SPRITE_PRIORITY(snum)) |
2272 | 2271 | { |
2273 | 2272 | if (m_fore_coll_buf[p + i] == 0) |
2274 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2273 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2275 | 2274 | m_spr_coll_buf[p + i] = sbit; |
2276 | 2275 | } |
2277 | 2276 | else |
2278 | 2277 | { |
2279 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2278 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2280 | 2279 | m_spr_coll_buf[p + i] = sbit; |
2281 | 2280 | } |
2282 | 2281 | } |
r17699 | r17700 | |
2302 | 2301 | if (SPRITE_PRIORITY(snum)) |
2303 | 2302 | { |
2304 | 2303 | if (m_fore_coll_buf[p + i] == 0) |
2305 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2304 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2306 | 2305 | m_spr_coll_buf[p + i] = sbit; |
2307 | 2306 | } |
2308 | 2307 | else |
2309 | 2308 | { |
2310 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2309 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2311 | 2310 | m_spr_coll_buf[p + i] = sbit; |
2312 | 2311 | } |
2313 | 2312 | } |
r17699 | r17700 | |
2328 | 2327 | if (SPRITE_PRIORITY(snum)) |
2329 | 2328 | { |
2330 | 2329 | if (m_fore_coll_buf[p + i] == 0) |
2331 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2330 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2332 | 2331 | m_spr_coll_buf[p + i] = sbit; |
2333 | 2332 | } |
2334 | 2333 | else |
2335 | 2334 | { |
2336 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2335 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2337 | 2336 | m_spr_coll_buf[p + i] = sbit; |
2338 | 2337 | } |
2339 | 2338 | } |
r17699 | r17700 | |
2383 | 2382 | if (SPRITE_PRIORITY(snum)) |
2384 | 2383 | { |
2385 | 2384 | if (m_fore_coll_buf[p + i] == 0) |
2386 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2385 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2387 | 2386 | m_spr_coll_buf[p + i] = sbit; |
2388 | 2387 | } |
2389 | 2388 | else |
2390 | 2389 | { |
2391 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = col; |
| 2390 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[col]; |
2392 | 2391 | m_spr_coll_buf[p + i] = sbit; |
2393 | 2392 | } |
2394 | 2393 | } |
r17699 | r17700 | |
2413 | 2412 | if (SPRITE_PRIORITY(snum)) |
2414 | 2413 | { |
2415 | 2414 | if (m_fore_coll_buf[p + i] == 0) |
2416 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2415 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2417 | 2416 | m_spr_coll_buf[p + i] = sbit; |
2418 | 2417 | } |
2419 | 2418 | else |
2420 | 2419 | { |
2421 | | m_bitmap->pix16(VIC2_RASTER_2_EMU(m_rasterline), p + i) = color; |
| 2420 | m_bitmap.pix32(VIC2_RASTER_2_EMU(m_rasterline), p + i) = PALETTE[color]; |
2422 | 2421 | m_spr_coll_buf[p + i] = sbit; |
2423 | 2422 | } |
2424 | 2423 | } |
r17699 | r17700 | |
2453 | 2452 | // screen_update - |
2454 | 2453 | //------------------------------------------------- |
2455 | 2454 | |
2456 | | UINT32 mos6566_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 2455 | UINT32 mos6566_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
2457 | 2456 | { |
| 2457 | bitmap.fill(PALETTE[0], cliprect); |
| 2458 | |
2458 | 2459 | if (m_on) |
2459 | | copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect); |
| 2460 | copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect); |
2460 | 2461 | |
2461 | 2462 | return 0; |
2462 | 2463 | } |
r17699 | r17700 | |
2793 | 2794 | if (IS_VICIIE) |
2794 | 2795 | { |
2795 | 2796 | m_reg[offset] = data; |
| 2797 | m_on = !BIT(data, 0); |
2796 | 2798 | } |
2797 | 2799 | break; |
2798 | 2800 | |
trunk/src/mess/video/mos6566.h
r17699 | r17700 | |
100 | 100 | MCFG_SCREEN_REFRESH_RATE(VIC6566_VRETRACERATE) \ |
101 | 101 | MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \ |
102 | 102 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \ |
103 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6566_device, screen_update) \ |
104 | | MCFG_PALETTE_LENGTH(16) |
| 103 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6566_device, screen_update) |
105 | 104 | |
106 | 105 | #define MCFG_MOS6567_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
107 | 106 | MCFG_DEVICE_ADD(_tag, MOS6567, _clock) \ |
r17699 | r17700 | |
112 | 111 | MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \ |
113 | 112 | MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \ |
114 | 113 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \ |
115 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6567_device, screen_update) \ |
116 | | MCFG_PALETTE_LENGTH(16) |
| 114 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6567_device, screen_update) |
117 | 115 | |
118 | 116 | #define MCFG_MOS8562_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
119 | 117 | MCFG_DEVICE_ADD(_tag, MOS8562, _clock) \ |
r17699 | r17700 | |
124 | 122 | MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \ |
125 | 123 | MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \ |
126 | 124 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \ |
127 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8562_device, screen_update) \ |
128 | | MCFG_PALETTE_LENGTH(16) |
| 125 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8562_device, screen_update) |
129 | 126 | |
130 | 127 | #define MCFG_MOS8564_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
131 | 128 | MCFG_DEVICE_ADD(_tag, MOS8564, _clock) \ |
r17699 | r17700 | |
136 | 133 | MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \ |
137 | 134 | MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \ |
138 | 135 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \ |
139 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8562_device, screen_update) \ |
140 | | MCFG_PALETTE_LENGTH(16+16) // 16 for VIC, 16 for VDC |
| 136 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8562_device, screen_update) |
141 | 137 | |
142 | 138 | #define MCFG_MOS6569_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
143 | 139 | MCFG_DEVICE_ADD(_tag, MOS6569, _clock) \ |
r17699 | r17700 | |
148 | 144 | MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \ |
149 | 145 | MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \ |
150 | 146 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \ |
151 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6569_device, screen_update) \ |
152 | | MCFG_PALETTE_LENGTH(16) |
| 147 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6569_device, screen_update) |
153 | 148 | |
154 | 149 | #define MCFG_MOS8565_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
155 | 150 | MCFG_DEVICE_ADD(_tag, MOS8565, _clock) \ |
r17699 | r17700 | |
160 | 155 | MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \ |
161 | 156 | MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \ |
162 | 157 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \ |
163 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8565_device, screen_update) \ |
164 | | MCFG_PALETTE_LENGTH(16) |
| 158 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8565_device, screen_update) |
165 | 159 | |
166 | 160 | #define MCFG_MOS8566_ADD(_tag, _screen_tag, _clock, _config, _videoram_map, _colorram_map) \ |
167 | 161 | MCFG_DEVICE_ADD(_tag, MOS8566, _clock) \ |
r17699 | r17700 | |
172 | 166 | MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \ |
173 | 167 | MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \ |
174 | 168 | MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \ |
175 | | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8565_device, screen_update) \ |
176 | | MCFG_PALETTE_LENGTH(16+16) // 16 for VIC, 16 for VDC |
| 169 | MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8565_device, screen_update) |
177 | 170 | |
178 | 171 | |
179 | 172 | #define MOS6566_INTERFACE(_name) \ |
r17699 | r17700 | |
327 | 320 | |
328 | 321 | UINT8 bus_r(); |
329 | 322 | |
330 | | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 323 | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
331 | 324 | |
332 | 325 | protected: |
333 | 326 | enum |
r17699 | r17700 | |
390 | 383 | |
391 | 384 | UINT16 m_chargenaddr, m_videoaddr, m_bitmapaddr; |
392 | 385 | |
393 | | bitmap_ind16 *m_bitmap; |
| 386 | bitmap_rgb32 m_bitmap; |
394 | 387 | |
395 | 388 | UINT16 m_colors[4], m_spritemulti[4]; |
396 | 389 | |