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 | |