trunk/src/mess/video/upd7220.c
| r19795 | r19796 | |
| 866 | 866 | // draw_pixel - |
| 867 | 867 | //------------------------------------------------- |
| 868 | 868 | |
| 869 | | void upd7220_device::draw_pixel(int x, int y, UINT16 tile_data) |
| 869 | void upd7220_device::draw_pixel(int x, int y, UINT8 tile_data) |
| 870 | 870 | { |
| 871 | 871 | UINT32 addr = (y * m_pitch * 2 + (x >> 3)) & 0x3ffff; |
| 872 | | |
| 873 | 872 | int dad = x & 0x7; |
| 874 | | |
| 875 | 873 | UINT8 data = readbyte(addr); |
| 874 | UINT8 new_pixel = (tile_data) & (0x80 >> (dad)); |
| 876 | 875 | |
| 877 | | if((m_bitmap_mod & 3) == 1) |
| 876 | switch(m_bitmap_mod) |
| 878 | 877 | { |
| 879 | | writebyte(addr, data ^ ((tile_data) & (0x80 >> (dad)))); |
| 878 | case 0: //replace |
| 879 | writebyte(addr, data & ~(0x80 >> (dad))); |
| 880 | writebyte(addr, data | new_pixel); |
| 881 | break; |
| 882 | case 1: //complement |
| 883 | writebyte(addr, data ^ (new_pixel)); |
| 884 | break; |
| 885 | case 2: //reset |
| 886 | writebyte(addr, data & ((new_pixel) ? 0xff : ~(0x80 >> (dad)))); |
| 887 | break; |
| 888 | case 3: //set |
| 889 | writebyte(addr, data | new_pixel); |
| 890 | break; |
| 880 | 891 | } |
| 881 | | else |
| 882 | | { |
| 883 | | writebyte(addr, data & ~(0x80 >> (dad))); |
| 884 | | writebyte(addr, data | ((tile_data) & (0x80 >> (dad)))); |
| 885 | | } |
| 886 | 892 | } |
| 887 | 893 | |
| 888 | 894 | |
trunk/src/mess/video/upd7220.h
| r19795 | r19796 | |
| 144 | 144 | inline void get_text_partition(int index, UINT32 *sad, UINT16 *len, int *im, int *wd); |
| 145 | 145 | inline void get_graphics_partition(int index, UINT32 *sad, UINT16 *len, int *im, int *wd); |
| 146 | 146 | |
| 147 | | void draw_pixel(int x, int y, UINT16 tile_data); |
| 147 | void draw_pixel(int x, int y, UINT8 tile_data); |
| 148 | 148 | void draw_line(int x, int y); |
| 149 | 149 | void draw_rectangle(int x, int y); |
| 150 | 150 | void draw_char(int x, int y); |