Mercurial > vba-clojure
diff temp-c-stuff @ 485:cd6a96a07d2e
added reference c program for converting vga rgb to vb rgb.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sun, 06 May 2012 20:54:09 -0500 |
parents | |
children |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/temp-c-stuff Sun May 06 20:54:09 2012 -0500 1.3 @@ -0,0 +1,72 @@ 1.4 +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1.5 + 1.6 + 1.7 +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1.8 + 1.9 + 1.10 +// This section of code is used to convert an RGB (pc) triplet into a RGB (gameboy) 1.11 +// triplet. This section of code was kindly donated by Brett Bibby (GameBrains). 1.12 + 1.13 +BYTE intensity[32] = 1.14 + { 1.15 + 0x00,0x10,0x20,0x30,0x40,0x50,0x5e,0x6c,0x7a,0x88,0x94,0xa0,0xae,0xb7,0xbf,0xc6, 1.16 + 0xce,0xd3,0xd9,0xdf,0xe3,0xe7,0xeb,0xef,0xf3,0xf6,0xf9,0xfb,0xfd,0xfe,0xff,0xff 1.17 + }; 1.18 + 1.19 +unsigned char influence[3][3] = 1.20 + { 1.21 + {16,4,4}, 1.22 + {8,16,8}, 1.23 + {0,8,16} 1.24 + }; 1.25 + 1.26 +RGBQUAD translate(BYTE rgb[3]) 1.27 +{ 1.28 + RGBQUAD color; 1.29 + BYTE tmp[3]; 1.30 + BYTE m[3][3]; 1.31 + BYTE i,j; 1.32 + 1.33 + for (i=0;i<3;i++) 1.34 + for (j=0;j<3;j++) 1.35 + m[i][j] = (intensity[rgb[i]>>3]*influence[i][j]) >> 5; 1.36 + 1.37 + for (i=0;i<3;i++) 1.38 + { 1.39 + if (m[0][i]>m[1][i]) 1.40 + { 1.41 + j=m[0][i]; 1.42 + m[0][i]=m[1][i]; 1.43 + m[1][i]=j; 1.44 + } 1.45 + 1.46 + if (m[1][i]>m[2][i]) 1.47 + { 1.48 + j=m[1][i]; 1.49 + m[1][i]=m[2][i]; 1.50 + m[2][i]=j; 1.51 + } 1.52 + 1.53 + if (m[0][i]>m[1][i]) 1.54 + { 1.55 + j=m[0][i]; 1.56 + m[0][i]=m[1][i]; 1.57 + m[1][i]=j; 1.58 + } 1.59 + 1.60 + tmp[i]=(((m[0][i]+m[1][i]*2+m[2][i]*4)*5) >> 4)+32; 1.61 + } 1.62 + 1.63 + color.rgbRed = tmp[0]; 1.64 + color.rgbGreen = tmp[1]; 1.65 + color.rgbBlue = tmp[2]; 1.66 + 1.67 + return color; 1.68 +} 1.69 + 1.70 + 1.71 + 1.72 + 1.73 + 1.74 +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1.75 +