blit.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. * PicoDrive
  3. * (C) notaz, 2006,2009
  4. *
  5. * This work is licensed under the terms of MAME license.
  6. * See COPYING file in the top-level directory.
  7. */
  8. // Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
  9. // to 00000000 rrr00000 ggg00000 bbb00000 ...
  10. // TODO: rm when gp2x/emu.c is no longer used
  11. void bgr444_to_rgb32(void *to, void *from)
  12. {
  13. unsigned short *ps = from;
  14. unsigned int *pd = to;
  15. int pixels;
  16. for (pixels = 0x40; pixels; pixels--, ps++, pd++)
  17. {
  18. *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
  19. *pd |= *pd >> 3;
  20. }
  21. }
  22. void bgr444_to_rgb32_sh(void *to, void *from)
  23. {
  24. unsigned short *ps = from;
  25. unsigned int *pd = to;
  26. int pixels;
  27. pd += 0x40;
  28. for (pixels = 0x40; pixels; pixels--, ps++, pd++)
  29. {
  30. *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
  31. *pd >>= 1;
  32. *pd |= *pd >> 3;
  33. pd[0x40*2] = *pd;
  34. }
  35. ps -= 0x40;
  36. for (pixels = 0x40; pixels; pixels--, ps++, pd++)
  37. {
  38. *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
  39. continue;
  40. *pd += 0x00404040;
  41. if (*pd & 0x01000000) *pd |= 0x00e00000;
  42. if (*pd & 0x00010000) *pd |= 0x0000e000;
  43. if (*pd & 0x00000100) *pd |= 0x000000e0;
  44. *pd &= 0x00e0e0e0;
  45. *pd |= *pd >> 3;
  46. }
  47. }
  48. void vidcpy_m2(void *dest, void *src, int m32col, int with_32c_border)
  49. {
  50. unsigned char *pd = dest, *ps = src;
  51. int i, u;
  52. if (m32col) {
  53. for (i = 0; i < 224; i++)
  54. {
  55. ps += 8;
  56. pd += 32;
  57. for (u = 0; u < 256; u++)
  58. *pd++ = *ps++;
  59. ps += 64;
  60. pd += 32;
  61. }
  62. } else {
  63. for (i = 0; i < 224; i++)
  64. {
  65. ps += 8;
  66. for (u = 0; u < 320; u++)
  67. *pd++ = *ps++;
  68. }
  69. }
  70. }
  71. void vidcpy_m2_rot(void *dest, void *src, int m32col, int with_32c_border)
  72. {
  73. }
  74. void rotated_blit8 (void *dst, void *linesx4, int y, int is_32col)
  75. {
  76. }
  77. void rotated_blit16(void *dst, void *linesx4, int y, int is_32col)
  78. {
  79. }