Mercurial > vba-clojure
view 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 source
1 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7 // This section of code is used to convert an RGB (pc) triplet into a RGB (gameboy)8 // triplet. This section of code was kindly donated by Brett Bibby (GameBrains).10 BYTE intensity[32] =11 {12 0x00,0x10,0x20,0x30,0x40,0x50,0x5e,0x6c,0x7a,0x88,0x94,0xa0,0xae,0xb7,0xbf,0xc6,13 0xce,0xd3,0xd9,0xdf,0xe3,0xe7,0xeb,0xef,0xf3,0xf6,0xf9,0xfb,0xfd,0xfe,0xff,0xff14 };16 unsigned char influence[3][3] =17 {18 {16,4,4},19 {8,16,8},20 {0,8,16}21 };23 RGBQUAD translate(BYTE rgb[3])24 {25 RGBQUAD color;26 BYTE tmp[3];27 BYTE m[3][3];28 BYTE i,j;30 for (i=0;i<3;i++)31 for (j=0;j<3;j++)32 m[i][j] = (intensity[rgb[i]>>3]*influence[i][j]) >> 5;34 for (i=0;i<3;i++)35 {36 if (m[0][i]>m[1][i])37 {38 j=m[0][i];39 m[0][i]=m[1][i];40 m[1][i]=j;41 }43 if (m[1][i]>m[2][i])44 {45 j=m[1][i];46 m[1][i]=m[2][i];47 m[2][i]=j;48 }50 if (m[0][i]>m[1][i])51 {52 j=m[0][i];53 m[0][i]=m[1][i];54 m[1][i]=j;55 }57 tmp[i]=(((m[0][i]+m[1][i]*2+m[2][i]*4)*5) >> 4)+32;58 }60 color.rgbRed = tmp[0];61 color.rgbGreen = tmp[1];62 color.rgbBlue = tmp[2];64 return color;65 }71 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////