142 memset(dst, color, right); |
142 memset(dst, color, right); |
143 dst += dpi->pitch; |
143 dst += dpi->pitch; |
144 } while (--bottom); |
144 } while (--bottom); |
145 } else { |
145 } else { |
146 /* use colortable mode */ |
146 /* use colortable mode */ |
147 ctab = GetSpritePtr(color & 0x3FFF) + 1; |
147 ctab = GetNonSprite(color & 0x3FFF) + 1; |
148 do { |
148 do { |
149 int i; |
149 int i; |
150 for(i=0; i!=right;i++) |
150 for(i=0; i!=right;i++) |
151 dst[i] = ctab[dst[i]]; |
151 dst[i] = ctab[dst[i]]; |
152 dst += dpi->pitch; |
152 dst += dpi->pitch; |
526 return x; |
526 return x; |
527 } |
527 } |
528 if (c >= ASCII_LETTERSTART) { |
528 if (c >= ASCII_LETTERSTART) { |
529 if (x >= dpi->left + dpi->width) goto skip_char; |
529 if (x >= dpi->left + dpi->width) goto skip_char; |
530 if (x + 26 >= dpi->left) { |
530 if (x + 26 >= dpi->left) { |
531 GfxMainBlitter(GetSpritePtr(base + 2 + c - ASCII_LETTERSTART), x, y, 1); |
531 GfxMainBlitter(GetSprite(base + 2 + c - ASCII_LETTERSTART), x, y, 1); |
532 } |
532 } |
533 x += _stringwidth_table[base + c - ' ']; |
533 x += _stringwidth_table[base + c - ' ']; |
534 } else if (c == ASCII_NL) { // newline = {} |
534 } else if (c == ASCII_NL) { // newline = {} |
535 x = xo; |
535 x = xo; |
536 y += 10; |
536 y += 10; |
558 } |
558 } |
559 } |
559 } |
560 |
560 |
561 void DrawSprite(uint32 img, int x, int y) { |
561 void DrawSprite(uint32 img, int x, int y) { |
562 if (img & 0x8000) { |
562 if (img & 0x8000) { |
563 _color_remap_ptr = GetSpritePtr(img >> 16) + 1; |
563 _color_remap_ptr = GetNonSprite(img >> 16) + 1; |
564 GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 1); |
564 GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 1); |
565 } else if (img & 0x4000) { |
565 } else if (img & 0x4000) { |
566 _color_remap_ptr = GetSpritePtr(img >> 16) + 1; |
566 _color_remap_ptr = GetNonSprite(img >> 16) + 1; |
567 GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 2); |
567 GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 2); |
568 } else { |
568 } else { |
569 GfxMainBlitter(GetSpritePtr(img & 0x3FFF), x, y, 0); |
569 GfxMainBlitter(GetSprite(img & 0x3FFF), x, y, 0); |
570 } |
570 } |
571 } |
571 } |
572 |
572 |
573 typedef struct BlitterParams { |
573 typedef struct BlitterParams { |
574 int start_x, start_y; |
574 int start_x, start_y; |
1626 |
1626 |
1627 b = _stringwidth_table; |
1627 b = _stringwidth_table; |
1628 |
1628 |
1629 // 2 equals space. |
1629 // 2 equals space. |
1630 for(i=2; i != 0xE2; i++) { |
1630 for(i=2; i != 0xE2; i++) { |
1631 *b++ = (byte)((i < 93 || i >= 129 || i == 98) ? GetSpritePtr(i)[2] : 0); |
1631 *b++ = (byte)((i < 93 || i >= 129 || i == 98) ? TO_LE16(GetSprite(i)->width) : 0); |
1632 } |
1632 } |
1633 |
1633 |
1634 for(i=0xE2; i != 0x1C2; i++) { |
1634 for(i=0xE2; i != 0x1C2; i++) { |
1635 *b++ = (byte)((i < 317 || i >= 353) ? GetSpritePtr(i)[2]+1 : 0); |
1635 *b++ = (byte)((i < 317 || i >= 353) ? TO_LE16(GetSprite(i)->width) + 1 : 0); |
1636 } |
1636 } |
1637 |
1637 |
1638 for(i=0x1C2; i != 0x2A2; i++) { |
1638 for(i=0x1C2; i != 0x2A2; i++) { |
1639 *b++ = (byte)((i < 541 || i >= 577) ? GetSpritePtr(i)[2]+1 : 0); |
1639 *b++ = (byte)((i < 541 || i >= 577) ? TO_LE16(GetSprite(i)->width) + 1 : 0); |
1640 } |
1640 } |
1641 } |
1641 } |
1642 |
1642 |
1643 void ScreenSizeChanged(void) |
1643 void ScreenSizeChanged(void) |
1644 { |
1644 { |
1909 const Sprite *p; |
1909 const Sprite *p; |
1910 |
1910 |
1911 if (cv->sprite == cursor) |
1911 if (cv->sprite == cursor) |
1912 return; |
1912 return; |
1913 |
1913 |
1914 p = GetSpritePtr(cursor & 0x3FFF); |
1914 p = GetSprite(cursor & 0x3FFF); |
1915 cv->sprite = cursor; |
1915 cv->sprite = cursor; |
1916 cv->size.y = p->height; |
1916 cv->size.y = p->height; |
1917 cv->size.x = TO_LE16(p->width); |
1917 cv->size.x = TO_LE16(p->width); |
1918 cv->offs.x = (int16)TO_LE16(p->x_offs); |
1918 cv->offs.x = (int16)TO_LE16(p->x_offs); |
1919 cv->offs.y = (int16)TO_LE16(p->y_offs); |
1919 cv->offs.y = (int16)TO_LE16(p->y_offs); |