blit.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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, unsigned entries)
  12. {
  13. unsigned short *ps = from;
  14. unsigned int *pd = to;
  15. int pixels;
  16. for (pixels = entries; 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. ps += 32;
  57. pd += 32;
  58. for (u = 0; u < 256; u++)
  59. *pd++ = *ps++;
  60. ps += 32;
  61. pd += 32;
  62. }
  63. } else {
  64. for (i = 0; i < 224; i++)
  65. {
  66. ps += 8;
  67. for (u = 0; u < 320; u++)
  68. *pd++ = *ps++;
  69. }
  70. }
  71. }
  72. void vidcpy_m2_rot(void *dest, void *src, int m32col, int with_32c_border)
  73. {
  74. }
  75. void rotated_blit8 (void *dst, void *linesx4, int y, int is_32col)
  76. {
  77. }
  78. void rotated_blit16(void *dst, void *linesx4, int y, int is_32col)
  79. {
  80. }