rlm@485: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// rlm@485: rlm@485: rlm@485: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// rlm@485: rlm@485: rlm@485: // This section of code is used to convert an RGB (pc) triplet into a RGB (gameboy) rlm@485: // triplet. This section of code was kindly donated by Brett Bibby (GameBrains). rlm@485: rlm@485: BYTE intensity[32] = rlm@485: { rlm@485: 0x00,0x10,0x20,0x30,0x40,0x50,0x5e,0x6c,0x7a,0x88,0x94,0xa0,0xae,0xb7,0xbf,0xc6, rlm@485: 0xce,0xd3,0xd9,0xdf,0xe3,0xe7,0xeb,0xef,0xf3,0xf6,0xf9,0xfb,0xfd,0xfe,0xff,0xff rlm@485: }; rlm@485: rlm@485: unsigned char influence[3][3] = rlm@485: { rlm@485: {16,4,4}, rlm@485: {8,16,8}, rlm@485: {0,8,16} rlm@485: }; rlm@485: rlm@485: RGBQUAD translate(BYTE rgb[3]) rlm@485: { rlm@485: RGBQUAD color; rlm@485: BYTE tmp[3]; rlm@485: BYTE m[3][3]; rlm@485: BYTE i,j; rlm@485: rlm@485: for (i=0;i<3;i++) rlm@485: for (j=0;j<3;j++) rlm@485: m[i][j] = (intensity[rgb[i]>>3]*influence[i][j]) >> 5; rlm@485: rlm@485: for (i=0;i<3;i++) rlm@485: { rlm@485: if (m[0][i]>m[1][i]) rlm@485: { rlm@485: j=m[0][i]; rlm@485: m[0][i]=m[1][i]; rlm@485: m[1][i]=j; rlm@485: } rlm@485: rlm@485: if (m[1][i]>m[2][i]) rlm@485: { rlm@485: j=m[1][i]; rlm@485: m[1][i]=m[2][i]; rlm@485: m[2][i]=j; rlm@485: } rlm@485: rlm@485: if (m[0][i]>m[1][i]) rlm@485: { rlm@485: j=m[0][i]; rlm@485: m[0][i]=m[1][i]; rlm@485: m[1][i]=j; rlm@485: } rlm@485: rlm@485: tmp[i]=(((m[0][i]+m[1][i]*2+m[2][i]*4)*5) >> 4)+32; rlm@485: } rlm@485: rlm@485: color.rgbRed = tmp[0]; rlm@485: color.rgbGreen = tmp[1]; rlm@485: color.rgbBlue = tmp[2]; rlm@485: rlm@485: return color; rlm@485: } rlm@485: rlm@485: rlm@485: rlm@485: rlm@485: rlm@485: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// rlm@485: