Previous 199869 Revisions Next

r19796 Tuesday 25th December, 2012 at 03:42:39 UTC by Angelo Salese
Added reset/set functions to uPD7220
[src/mess/video]upd7220.c upd7220.h

trunk/src/mess/video/upd7220.c
r19795r19796
866866//  draw_pixel -
867867//-------------------------------------------------
868868
869void upd7220_device::draw_pixel(int x, int y, UINT16 tile_data)
869void upd7220_device::draw_pixel(int x, int y, UINT8 tile_data)
870870{
871871   UINT32 addr = (y * m_pitch * 2 + (x >> 3)) & 0x3ffff;
872
873872   int dad = x & 0x7;
874
875873   UINT8 data = readbyte(addr);
874   UINT8 new_pixel = (tile_data) & (0x80 >> (dad));
876875
877   if((m_bitmap_mod & 3) == 1)
876   switch(m_bitmap_mod)
878877   {
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;
880891   }
881   else
882   {
883      writebyte(addr, data & ~(0x80 >> (dad)));
884      writebyte(addr, data | ((tile_data) & (0x80 >> (dad))));
885   }
886892}
887893
888894
trunk/src/mess/video/upd7220.h
r19795r19796
144144   inline void get_text_partition(int index, UINT32 *sad, UINT16 *len, int *im, int *wd);
145145   inline void get_graphics_partition(int index, UINT32 *sad, UINT16 *len, int *im, int *wd);
146146
147   void draw_pixel(int x, int y, UINT16 tile_data);
147   void draw_pixel(int x, int y, UINT8 tile_data);
148148   void draw_line(int x, int y);
149149   void draw_rectangle(int x, int y);
150150   void draw_char(int x, int y);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team