#contents
**¿§
***º£¤Î¼ÂÁõ
-¡Ö4ÆüÌܡ׽ªÎ»¤·¤¿¤¢¤¿¤ê¤È²¾Äê¡£
***º£Æü¤ÎÎÁÍý
¤È¤ê¤¢¤¨¤º256¿§»È¤¨¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤ë¤ó¤À¤·¡¢ºÇÂç¸Â»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤«¡£~
°ì¡¹COL8_848484¤È¤«½ñ¤¯¤Î¤â¤¤¤¤¤±¤É¡¢¤³¤ÎÄê¿ô̾¤â¤¢¤Þ¤ê³Ð¤¨¤ä¤¹¤¯¤Ê¤¤¤è¤Ê¤¡¡¦¡¦¡¦~
¤è¤·¡¢RGB´Ø¿ô¤ß¤¿¤¤¤ÊÅÛ¤âºî¤Ã¤Á¤ã¤¨¡ª~
***ÌäÂê¤Ï1678Ëü¿§¤ÎÆâ¤É¤ì¤ò»È¤¦¤«¡£
¤È¸À¤¦¤³¤È¤ÇRGB´Ø¿ô¤òºî¤ê¤¿¤¤¤ï¤±¤Ç¤¹¤¬¡¢¤³¤³¤Ç°ì¤ÄÌäÂ꤬ȯÀ¸¤¹¤ë¤ï¤±¤Ç¤¹¡£~
8bit¥«¥é¡¼¤Ê²èÌ̤κÇÂçÆ±»þȯ¸÷¿§¤Î¿ô¤Ï256¿§¡£¤½¤ì¤ËÈæ¤Ù24bit¤Çɽ¸½¤Ç¤¤ë¿§¤Î¿ô¤Ï16777216¿§¡£6.6ËüÇܶᤤº¹¤¬¤¢¤ë¤ï¤±¤Ç¤¹¡£~
¤µ¤Æ¤É¤¦¤¹¤Ã¤«¡£~
~
¤ä¤Ï¤ê1678Ëü¿§¤ÎÆâ¤ÎËØ¤É¤ò¼Î¤Æ¤ë¤·¤«¤Ê¤¤¤ï¤±¤Ç¡¢Î㤨¤ÐVESA¤Î16bit¥â¡¼¥É¤Ç¤Ï~
ÀÖ¤¬5bit¡¢ÎФ¬6bit¡¢ÀĤ¬5bitÅù¤È¤Ê¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£~
¤³¤¦¤¤¤¦¾å¼ê¤¤»ÅÍͤò¼«Ê¬¤Çºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£~
¤³¤³¤Ç3¼ïÎà¤ÎÊýË¡¤¬»×¤¤É⤫¤Ó¤Þ¤¹¡£~
-ñ½ã¤Ë¡¢ÀÖ¤¬3bit¡¢ÎФ¬3bit¡¢ÀĤ¬2bitÅù¤È¤·¤Æ³ä¤ê¿¶¤ë¡Ê¤¿¤À¤·¤³¤Î¾ì¹ç¡¢ÀĤÎɽ¸½Ç½ÎϤ¬¶Ëü¤ËÎô¤ë¡£¡Ë
-À֤ζ¯¤µ¤ò6Ãʳ¬¡¢ÎФζ¯¤µ¤ò7Ãʳ¬¡¢ÀĤζ¯¤µ¤ò6Ãʳ¬Åù¤È¤·¤Æ¡¢256¿§¤Î¥Ñ¥ì¥Ã¥È¤ò¤Ê¤ë¤Ù¤¯Í¸úÍøÍѤ¹¤ë(¤¿¤À¤··×»»¤¬½Å¤½¤¦¡£)
-½é´ü¥Ñ¥ì¥Ã¥È¤Ë¤ÏºÇÄã¸Â¤À¤±Â·¤¨¤Æ¤ª¤¤¤Æ¡¢É¬Íפ˱þ¤¸¤Æ¸å¤«¤éÄɲ乤ë(ÌÀ¤é¤«¤Ë¼ÂÁõ¤¬ÌÌÅݤ½¤¦)
¤µ¤Æ¤É¤ì¤ò¼ÂÁõ¤·¤¿¤â¤Î¤«¡£~
~
¥Ñ¥ì¥Ã¥È¤Î½é´ü²½¤Ï1ÅÙ¤·¤«¸Æ¤Ð¤Ê¤¤¤Î¤Ç¡¢Á´ÂÎŪ¤Ê®Å٤Ϥ¢¤Þ¤êÊѤï¤é¤Ê¤¤¤Ï¤º¤Ç¤¹¡£~
ÌäÂê¤Ï24bit¢ª8bit¤ÎÊÑ´¹ºî¶È¡£ÍÍ¡¹¤Ê¥×¥í¥°¥é¥à¤ÎÍÍ¡¹¤Ê°ÌÃÖ¤«¤é¸Æ¤Ð¤ì¤ë»ö¤Ë¤Ê¤ëͽÄê¤Ê¤Î¤Ç¡¢~
¤³¤ÎÊÑ´¹ºî¶È¤Ï¤Ê¤ë¤Ù¤¯Â®¤¯¼Â¹Ô½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¤¿¤¤¤â¤Î¤Ç¤¹¡£~
24bit¢ª8bitÍѤÎÊÑ´¹¥Æ¡¼¥Ö¥ë¤ò¼êºî¶È¤Çºî¤ë¤Î¤âÌÌÅݤǤ¹¤·¡£~
~
ºÇ½é¤ÎÊýË¡¤À¤È¥Ó¥Ã¥È±é»»¤È¥·¥Õ¥È±é»»¤Ç´Êñ¤Ëºî¤ì¤½¤¦¤Ç¤¹¤¬¡¢Æó¤ÄÌܤÎÊýË¡¤À¤ÈÎɤ¯¤Æ¿§¤Î¶¯¤µ¤ÎÈϰϤò³Îǧ¤·¤Ê¤¬¤é¤Î»Åʬ¤±ºî¶È¡¢~
ŬÅö¤Ë¼ÂÁõ¤¹¤ë¤È³ä¤ê»»¤¬´é¤ò½Ð¤·¤Þ¤¹¡£~
»°¤ÄÌܤÎÊýË¡¤Ï½ÀÆðÀ¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢24bit¢ª8bit¤ÎÊÑ´¹ºî¶È¤ò¹Í¤¨¤ë¤ÈºÇ°¤Ç¡¢¤Ä¤Þ¤ê°ì¡¹¸¡º÷¤«¤±¤ë¤Î¤ÇÃÙ¤¯¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£~
[[æÀþ:³ä¤ê»»¤Ã¤Æ¤É¤Î¤¯¤é¤¤ÃÙ¤¤¤Î¡©>#div]]~
~
¤·¤«¤·¼Â¤ÏÀÖÍѤÎÊÑ´¹¥Æ¡¼¥Ö¥ë¡¢ÎÐÍѤÎÊÑ´¹¥Æ¡¼¥Ö¥ë¡¢ÀÄÍѤÎÊÑ´¹¥Æ¡¼¥Ö¥ë¤ò¤½¤ì¤¾¤ìºî¤Ã¤Æ¤ª¤¤¤Æ~
char RGB(unsigned char r,unsigned char g,unsigned char b){
return table_r[r]+table_g[g]+table_b[b];
}
¤È¤¹¤ì¤Ð¤¤¤¤¤Î¤Ç¡¢ÊÑ´¹¥Æ¡¼¥Ö¥ë¤ÎÂ礤µ¤Ï16MiB¤Ç¤Ï¤Ê¤¯768Byte¤À¤Ã¤¿¤ê¤·¤Þ¤¹¡£~
¤¿¤Àº£²ó¤Ï¡¢ÊÑ´¹¥Æ¡¼¥Ö¥ë¤ò»È¤¦¤Ë¤â¡¢¤Á¤ç¤Ã¤ÈÄê¿ôËä¤á¹þ¤ß¤ÇÊݸ¤¹¤ë¤Ë¤Ï½Å¤¤¤·½ñ¤¯¤ÎÌÌÅݤÀ¤·~
¥á¥â¥ê´ÉÍý¤ò»Ï¤á¤ëÁ°¤Ë¥á¥â¥ê¤Î¹¥¤¾¡¼ê¤Ê°ÌÃÖ¤ò¤¤¤¸¤¯¤ë¤ï¤±¤Ë¤â¹Ô¤«¤Ê¤¤¤Î¤ÇÊÑ´¹¥Æ¡¼¥Ö¥ë¤Ï»È¤ï¤Ê¤¤Êý¸þ¤Ç¿Ê¤á¤¿¤¤¤È»×¤¤¤Þ¤¹¡£~
~
:MiB|ñ°Ì¡£1MiB=1024KiB=1048576Byte¡£»ä¤¬¤³¤Ã¤Á¤Îñ°Ì¤¬¹¥¤¤ÊÍýͳ¤Ï¥á¥â¥ê´ÉÍý¤ÎKiB¤ÎÀâÌÀ¤ò»²¾È¤Î»ö¡£
***¼ÂÁõ1:bitñ°Ì¤Ç³ä¤êÅö¤Æ
¤Þ¤º»ÅÍͤÀ¤±Àè¤ËŬÅö¤Ë·è¤á¤Æ¤·¤Þ¤ª¤¦¤«~
~
¿§¤Ï8bit¤Ç¡¢ÀÖ:²¼°Ì3bit¡¢ÀÄ:¾å°Ì2bit¡¢ÎÐ:¤½¤Î¾3bit¡ÊºÇ½é¤Ë¹Í¤¨¤¿ÊýË¡¡£¡Ë~
¤Ä¤Þ¤ê2¿Ê¿ô¤Ç¹Ô¤¯¤È¥Õ¥£¡¼¥ë¥É¤Ïbbgggrrr¤Ë¤Ê¤ë¡£~
~
¤µ¤Æ¡¢init_palette´Ø¿ôÆâ¤ÇÁ´ÉôÄê¿ô½ñ¤¯¤Î¤ÏÌÌÅݤ¯¤µ¤¤¤Î¤Ç¡¢8bit¢ª24bit¤ÎÊÑ´¹´Ø¿ô¤ò½ñ¤¤¤Æ¤·¤Þ¤ª¤¦¡£~
// ²¿¤â¹Í¤¨¤º¤ËŬÅö¤Ëºî¤Ã¤Æ¤ß¤¿ÅÛ
// °ú¿ô¤Î·Á¼°:bbgggrrr¡¢Ìá¤êÃͤηÁ¼°:00000000bbbbbbbbggggggggrrrrrrrr
int RGB8ToRGB24(unsigned char color){
int r,g,b;
r=(color&0x07)<<5;
g=(color&0x38)<<2;
b=color&0xc0;
return (b<<16)+(g<<8)+r;
}
¤³¤ì¤Ç¾å¼ê¤¯¤¤¤¯¤«¤Á¤ç¤Ã¤È¹Í¤¨¤Æ¤ß¤è¤¦¡£RGB8ToRGB24(0xff)¤ÏÇò¤Ë¤Ê¤ë¡©~
Åú¤¨¤Ï¡Ö¤Ê¤é¤Ê¤¤¡×¤Ê¤ó¤À¡£Ê̤˳¥¿§¤Ã¤Æ°ÕÌ£¤¸¤ã¤Ê¤¤¤è¡©¾¯¤·²«¿§¤Ã¤Ý¤¤Çò¤Ë¤Ê¤ë¡£~
¤Ê¤¼¤Ê¤éRGB8ToRGB24(0xff)¤Ï0xc0e0e0¤Ë¤Ê¤ë¤«¤é¡£~
¤½¤ì¤¸¤ã¤³¤ó¤Ê¤Î¤Ï¤É¤¦¤À¤í¤¦¡©~
int RGB8ToRGB24(unsigned char color){
int r,g,b;
r=(color&0x07)<<5;
g=(color&0x38)<<2;
b=color&0xc0;
return ((b<<16)+(g<<8)+r)|0x3f1f1f;
}
º£Å٤Ϥɤ¦¤À¤í¤¦¡©RGB8ToRGB24(0xff)¤Ï³Î¤«¤ËÇò(0xffffff)¤Ë¤Ê¤ë¤ß¤¿¤¤¤À¡£~
¤Ç¤âRGB8ToRGB24(0x00)¤¬¹õ¤Ë¤Ê¤é¤Ê¤¤¡£¤½¤³¤Ç»×¤¤¤Ä¤¤¤¿¤Î¤¬¤³¤ì¡£~
int RGB8ToRGB24(unsigned char color){
int r,g,b;
r=(color&0x07)*73>>1; // 73=01001001(b)
g=(color&0x38)*73>>4;
b=(color&0xc0)*85>>6; // 85=01010101(b)
return (b<<16)+(g<<8)+r;
}
¤³¤ì¤Ï¤É¤¦¤¤¤¦»ÅÁȤߤÀ¤í¤¦¡©¤Þ¤º°ìÈÖ¾å¤Î¹Ô¤«¤é¹Í¤¨¤Æ¤ß¤è¤¦¡£~
color=bbgggrrr¤À¤«¤é¡¢R=color&0x07¤È¤¹¤ë¤ÈR=00000rrr~
r¤Ð¤Ã¤«¤ê¤¸¤ãʬ¤«¤ê¤Ë¤¯¤¤¤«¤é¡¢²¾¤ËR=00000abc¤È¤·¤Æ¤ª¤¯¤È~
00000abc
*01001001¢«73¤Î2¿Ê¿ôɽµ
---------
abcabcabc¢«¥ì¥¸¥¹¥¿¤Ï32bit¤À¤«¤é9bitʬ¤Ï;͵¤ÇÆþ¤ë
¤È¤Ê¤ë¡£¤½¤·¤Æ¾å°Ì8bit¤¬É¬ÍפÀ¤«¤é±¦¤Ë°ì¤Ä¥·¥Õ¥È¤·¤Æ~
(color&0x07)*73>>1=abcabcab~
¤Ê¤ë¤Û¤É¡¢¤³¤Î·ë²Ì¤ÏÎɤµ¤½¤¦¤À¡£abc=000¤Ê¤éÅú¤¨¤â00000000¤Ë¤Ê¤ë¤·¡¢abc=111¤Ê¤éÅú¤¨¤â11111111¤Ë¤Ê¤ë¡£~
¤·¤«¤â³Ý¤±»»¤ò»È¤Ã¤Æ¤ë¤«¤éÂçÂÎÆ±¤¸³ä¹ç¤Ç¿ôÃͤ¬Â礤¯¤Ê¤ë¤ï¤±¤À¡£~
¤¹¤ë¤È3ÈÖÌܤμ°¤Ï¤É¤¦¤À¤í¤¦¡©~
color=bbgggrrr¤À¤«¤é¡¢B=color&0xc0¤È¤¹¤ë¤ÈB=bb000000~
b¤Ð¤Ã¤«¤ê¤¸¤ãʬ¤«¤ê¤Ë¤¯¤¤¤«¤é²¾¤ËB=xy000000¤È¤¹¤ë¤È~
xy000000
* 01010101¢«85¤Î2¿Ê¿ôɽµ
--------------
xyxyxyxy000000
¤½¤ì¤Ç¡¢¾å°Ì8bit¤¬É¬ÍפÀ¤«¤é±¦¤Ë6bit¥·¥Õ¥È¤·¤Æ~
(color&0xc0)*85>>6=xyxyxyxy~
¤Ê¤ë¤Û¤É¡£~
~
¤µ¤Æ¡¢init_palette¤òRGB8ToRGB24¤ò»È¤¦¤è¤¦¤Ë½ñ¤´¹¤¨¤è¤¦¡£~
void init_palette(void){
unsigned char table_rgb[256 * 3]; // ½é´üÃͤ¬¤Ê¤¤¤«¤éstatic¤Ë¤¹¤ë°ÕÌ£¤¬¤Ê¤¤
int i,c;
for(i=0;i<256;i++){
c=RGB8ToRGB24(i);
table_rgb[i*3 ]= c &0xff;
table_rgb[i*3+1]=(c>>8 )&0xff;
table_rgb[i*3+2]=(c>>16)&0xff;
}
set_palette(0, 255, table_rgb);
return;
}
¤Ê¤ó¤«Á°¤è¤ê¤¹¤Ã¤¤ê¤·¤¿¤è¤¦¤Ê¡¦¡¦¡¦¡£~
~
¤µ¤ÆËÜÂê¤ÎRGB´Ø¿ô¤òºî¤í¤¦¤«¡£~
// Ìá¤êÃͤηÁ¼°:bbgggrrr
char RGB(unsigned char r,unsigned char g,unsigned char b){
return (b&0xc0)+((g>>2)&0x38)+((r>>5)&0x07);
}
¡¦¡¦¡¦Í½Á۰ʾå¤Ë´Êñ¤Ë½ñ¤±¤Æ¤·¤Þ¤Ã¤¿¡£~
¤³¤Î¤¯¤é¤¤¤ÎÆâÍÆ¤Èµ½ÒÎ̤ʤé¤ï¤¶¤ï¤¶¡Ö´Ø¿ô¤È¤·¤Æ¡×¸ºß¤µ¤»¤Æ¤ª¤«¤Ê¤¯¤Æ¤â¤¤¤¤¤«¤Ê¡£~
//24bit¥«¥é¡¼¤òÉÁ²èÍÑ¥«¥é¡¼¤ËÊÑ´¹¤¹¤ë¥Þ¥¯¥í
#define RGB(r,g,b) (((b)&0xc0)+(((g)>>2)&0x38)+(((r)>>5)&0x07))
~
--¼Â¤Ï¥·¥Õ¥È±é»»¤Ï¥Ó¥Ã¥È±é»»¤è¤ê±é»»½ç°Ì¤¬¹â¤¤¤Î¤Ç¡¢²¼¤Ç¤âÌäÂê¤Ê¤¤¡£»ä¤ÏÆÉ¤ß¤Ë¤¯¤¤¤È´¶¤¸¤ë¤¬¡£~
#define RGB(r,g,b) (((b)&0xc0)+((g)>>2&0x38)+((r)>>5&0x07))
***¼ÂÁõ2:bitñ°Ì¤Ç¤Ï¤Ê¤¤³ä¤êÅö¤ÆÊýË¡¤Ë¤Ä¤¤¤Æ
¤Þ¤¿»ÅÍͤòÀè¤Ë·è¤á¤Æ¤·¤Þ¤ª¤¦¡£~
~
¿§¤Ï0¡Á251¤Ç¡¢ÀÖ:¿§¤ò6¤Ç³ä¤Ã¤¿Í¾¤ê¡¢ÎÐ:¿§¤ò6¤Ç³ä¤Ã¤¿ÅÛ¤ò7¤Ç³ä¤Ã¤¿Í¾¤ê¡¢ÀÄ:¿§¤ò42¤Ç³ä¤Ã¤¿ÅÛ¤ò6¤Ç³ä¤Ã¤¿Í¾¤ê¡Ê2ÈÖÌܤÎÊýË¡¡£)~
~
¤µ¤Æ8bit¢ª24bit¤ÎÊÑ´¹´Ø¿ô¤ò½ñ¤¤¤Æ¤·¤Þ¤ª¤¦¡£~
// ²¿¤â¹Í¤¨¤º¤ËŬÅö¤Ëºî¤Ã¤Æ¤ß¤¿ÅÛ
// Ìá¤êÃͤηÁ¼°:00000000bbbbbbbbggggggggrrrrrrrr
int RGB8ToRGB24(unsigned char color){
int r,g,b;
r=color%6;
g=color/6%7;
b=color/42%6;
return (b<<16)+(g<<8)+r;
}
:±é»»µ¹æ¡Ö%¡×|¾ê;»»¡£³ä¤Ã¤¿Í¾¤ê¤òµá¤á¤ë¡£±é»»½ç°Ì¤Ï*¤ä/¤ÈƱ¤¸¡£
¤ª¤Ã¤È¤³¤ì¤¸¤ãÂÌÌܤÀ¡£Î㤨¤Ðr¤Ï0¡Á255¤ÎÃͤò¤È¤ëɬÍפ¬¤¢¤ë¤Î¤Ë¡¢0¡Á5¤ÎÃͤ·¤«¤È¤Ã¤Æ¤Ê¤¤¡£~
255¤Ç³Ý¤±¤Æ5¤Ç³ä¤Ã¤Æ¤ª¤³¤¦¡£¤¤¤ä¡¢51¤ò³Ý¤±¤ì¤Ð¤¤¤¤¤Î¤«¡£~
g¤Ï¤É¤¦¤·¤è¤¦¡£255¤Ç³Ý¤±¤Æ6¤Ç³ä¤Ã¤¿¤é42.5ÇܤÀ¡£255¤Ç³Ý¤±¤Æ3¤Ç³ä¤Ã¤Æ(¤Ä¤Þ¤ê85¤ò³Ý¤±¤Æ)¡¢¹¹¤Ë2¤Ç³ä¤ì¤Ð¤¤¤¤¤Î¤«¤Ê¡£~
int RGB8ToRGB24(unsigned char color){
int r,g,b;
r=color%6*51;
g=color/6%7*85>>1;
b=color/42%6*51;
return (b<<16)+(g<<8)+r;
}
¤¢¡¢color¤¬252¤È¤«¤Î»þ¾å¼ê¤¯Æ°¤«¤Ê¤¤¤«¤é¤ª¤«¤·¤ÊÃͤ¬Í褿»þ¤ÏÃÆ¤«¤Ê¤¤ã¡£~
int RGB8ToRGB24(unsigned char color){
if(color>251) return -1; // ¸ºß¤·¤Ê¤¤¿§ÈÖ¹æ
int r,g,b;
r=color%6*51;
g=color/6%7*85>>1;
b=color/42%6*51;
return (b<<16)+(g<<8)+r;
}
¤¦¤ó¡¢¤³¤ì¤Ç¾å¼ê¤¯Æ°¤¤½¤¦¤À¡£~
~
¤µ¤Æ¡¢RGB´Ø¿ô¤òºî¤ë¤«¡£¤³¤ó¤Ê´¶¤¸¤«¤Ê¡©~
char RGB(unsigned char r,unsigned char g,unsigned char b){
return (r/43)+(g/37)*6+(b/43)*42; // 0<=x<=255¢ª0<=x/43<6,0<=x/37<7
}
43¤È37¤Ï¡¢¤½¤ì¤¾¤ì255/6¤È255/7¤òÀÚ¤ê¾å¤²¤¿¿ôÃͤǤ¹¡£¤Ê¤Î¤Ç255°Ê²¼¤ÎÀµ¤ÎÀ°¿ô¤ò¤³¤¤¤Ä¤é¤Ç³ä¤Ã¤¿»þ¤Ë0¡Á6¼å¡¢0¡Á7¼å¤Ë¤Ê¤Ã¤¿¤ó¤Ç¤¹¡£~
***¼ÂÁõ3:²ÄÊѥѥì¥Ã¥È
¤ä¤Ã¤Ñ¤ê¡¢¤»¤Ã¤«¤¯Æ°Åª¤Ë¥Ñ¥ì¥Ã¥È¤òÏ®¤ì¤ë¤ó¤À¤«¤éÅÓÃæ¤«¤é¿§¤òÄɲäǤ¤Æ¤â¤¤¤¤¤¸¤ã¤Ê¤¤¤«¡£~
¤³¤ì¤Ç¹¥¤¤Ê¿§¤ò(ºÇÂçÆ±»þȯ¸÷¿§¤¬256¿§¤Ë¼ý¤Þ¤ëÈϰϤÇ)»È¤¨¤ë¤è¤¦¤Ë½ÐÍè¤ë¤Ë°ã¤¤¤Ê¤¤¡£~
~
¿§¤òÄɲä¹¤ë´Ø¿ô¤Ï¤³¤ó¤Ê´¶¤¸¤Ç¤¤¤¤¤«¤Ê¤¡¡©~
void set_palette1(int num,unsigned char r,unsigned char g,unsigned char b){
int eflags;
eflags = io_load_eflags();
io_cli();
io_out8(0x03c8,num);
io_out8(0x03c9,r/4);
io_out8(0x03c9,g/4);
io_out8(0x03c9,b/4);
io_store_eflags(eflags);
return;
}
¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤È¤½¤Î¥Ñ¥ì¥Ã¥È¤ËÆþ¤Ã¤Æ¤ë¿§¤Î¿ô¤òµ²±¤¹¤ëÊÑ¿ô¤Ï¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Ë¤·¤Æ¤ª¤³¤¦¡£~
¤¢¤È¤Ç²¿Å٤⥢¥¯¥»¥¹¤·¤¿¤¤¤«¤é¤Í~
int colorpalette_num;
// ɸ½à¥«¥é¡¼¥Ñ¥ì¥Ã¥È
char table_rgb[256 * 3] = {
0x00,0x00,0x00, // ¹õ
0xff,0xff,0xff, // Çò
};
void init_palette(void){
colorpalette_num=2;
set_palette(0,1,table_rgb);
return;
}
¤µ¤Æ8bit¢ª24bit¤ÎÊÑ´¹ºî¶È¤ÏÍפé¤Ê¤¤¤·¡¢RGB´Ø¿ô¤òºî¤Ã¤Æ¤·¤Þ¤ª¤¦¡£~
¥¹¥±¥ë¥È¥ó¤Ï¤³¤ó¤Ê´¶¤¸¤«¤Ê¤¡¡©~
int RGB(unsigned char r,unsigned char g,unsigned char b){
for(i=0;i<colorpalette_num;i++){// »÷¤¿¿§¤Î¸¡º÷
/* Í׵ᤵ¤ì¤¿¿§¤¬¤É¤Î°Ì´û¸¤Î¿§¤È»÷¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë */
if(/* Ʊ°ì¤Î¿§¤Ê¤é */){
return /* ¤½¤Î¿§¤òÊÖ¤¹ */;
}else if(/* º£¤Þ¤Ç¤ËÄ´¤Ù¤¿¤É¤Î¿§¤è¤ê»÷¤Æ¤¤¤ë¤Ê¤é */){
/* ¤½¤Î¿§¤Î¿§ÈÖ¹æ¤È¸µ¤Î¿§¤È¤Îµ÷Î¥¤È¤òµÏ¿ */
}
}
if(colorpalette_num==256){ // ¥«¥é¡¼¥Æ¡¼¥Ö¥ë¤Ë¤³¤ì°Ê¾åÄɲäǤ¤Ê¤¤¤È¤
return /* µÏ¿¤·¤Æ¤ª¤¤¤¿¡¢ºÇ¤â¶á¤¤¿§¤òÊÖ¤¹ */;
}else{ // ¥«¥é¡¼¥Æ¡¼¥Ö¥ë¤ËÄɲäǤ¤ë¤È¤
/* set_palette1¤ÇÍ׵ᤵ¤ì¤¿¿§¤òÄɲä·¤Æ */
/* ¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤Ë¡¢Äɲ䵤줿¿§¤òµÏ¿¤·¤Æ */
colorpalette_num++; // Êݸ¤·¤Æ¤¤¤ë¿§¤ÎÁí¿ô¤¬Áý¤¨¤¿»ö¤òµÏ¿¤·¤Æ
return colorpalette_num-1; // ¿·¤¿¤ËÄɲä·¤¿¿§¤Î¿§ÈÖ¹æ¤òÊÖ¤¹
}
}
¤¦¡Á¤ó¡¦¡¦¡¦¡¢¡Ö2¤Ä¤Î¿§¤¬¤É¤Î°Ì»÷¤Æ¤¤¤ë¤«¡×¤ò¤É¤¦¤ä¤Ã¤ÆÉ½¸½¤·¤è¤¦¡¦¡¦¡¦¡£~
º£²ó¤Ï¡¢¿§¤ÎÃÍÆ±»Î¤ò°ú¤»»¤·¤Æ¡¢ÀäÂÐÃͤdzç¤Ã¤Æ¡¢Á´Éô¤·¤Æ¡¢¤½¤ÎÃͤ¬0¤«¤é¤É¤Î°ÌÎ¥¤ì¤Æ¤ë¤«¤Çɽ¸½¤¹¤ë¤È¤¤¤¦ÊýË¡¤Ç¹Ô¤¤¿¤¤¤È»×¤¤¤Þ¤¹¡£~
Íפ¹¤ë¤Ëabs(table_rgb[i*3]-r)+abs(table_rgb[i*3+1]-g)+abs(table_rgb[i*3+2]-b)¤ß¤¿¤¤¤ÊÅÛ¤òµá¤á¤Æ¡¢~
0¤Ê¤éƱ¤¸¿§¡¢0¤Ë¶á¤±¤ì¤Ð»÷¤Æ¤ë¿§¡¢¤È¤¤¤¦Ìõ¤Ç¤¹¡£~
:ÀäÂÐÃÍ|Éé¤ÎÃͤòÀµ¤ÎÃͤˡ¢Àµ¤ÎÃͤϤ½¤Î¤Þ¤Þ¤ËÊÖ¤¹´Ø¿ô¤Î̾Á°¡£abs(3)=3,abs(-5)=5
±¿¤Î¤¤¤¤»ö¤Ë¡¢abs´Ø¿ô¤Ïɸ½à¥é¥¤¥Ö¥é¥ê¤ËÍѰդµ¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£~
int abs(int n);
¤µ¤Æ¼ÂÁõ¡£¤³¤ó¤Ê´¶¤¸¤«¤Ê¡©~
int RGB(unsigned char r,unsigned char g,unsigned char b){
int i;
int howfar,mostnear=256; // ¤É¤Î°Ì´û¸¤Î¿§¤È»÷¤Æ¤¤¤ë¤«¤òµ²±¤·¤Æ¤ª¤¯¤¿¤á¤ÎÊÑ¿ô
int nearcolor=-1; // ºÇ¤â¶á¤¤¿§¤Î¿§ÈÖ¹æ
// ²¼°Ì2bit¤ÏÉÁ²è¤¹¤ë¤È¤¤ËÈ¿±Ç¤µ¤ì¤Ê¤¤¤¿¤á¡¢2bitʬ±¦¥·¥Õ¥È¤·¤Æ¤ª¤¯¡£
r>>=2;
g>>=2;
b>>=2;
for(i=0;i<colorpalette_num;i++){// »÷¤¿¿§¤Î¸¡º÷
howfar=abs((table_rgb[i*3 ]>>2)-r)+
abs((table_rgb[i*3+1]>>2)-g)+
abs((table_rgb[i*3+2]>>2)-b);
if(howfar==0){// Ʊ¤¸¿§¤¬¸«¤Ä¤«¤Ã¤¿¤é
return i; // ¤½¤Î¿§¤òÊÖ¤¹
}else if(mostnear>howfar){// º£¤Þ¤Ç¤ËÄ´¤Ù¤¿¤É¤Î¿§¤è¤ê»÷¤Æ¤¤¤ë¤Ê¤é
// ¤½¤Î¿§¤Î¿§ÈÖ¹æ¤È¸µ¤Î¿§¤È¤Îµ÷Î¥¤È¤òµÏ¿
nearcolor=i;
mostnear=howfar;
}
}
if(colorpalette_num==256){ // ¥«¥é¡¼¥Æ¡¼¥Ö¥ë¤Ë¤³¤ì°Ê¾åÄɲäǤ¤Ê¤¤¤È¤
return nearcolor; // µÏ¿¤·¤Æ¤ª¤¤¤¿¡¢ºÇ¤â¶á¤¤¿§¤òÊÖ¤¹
}else{ // ¥«¥é¡¼¥Æ¡¼¥Ö¥ë¤ËÄɲäǤ¤ë¤È¤
set_palette1(colorpalette_num,r<<2,g<<2,b<<2); // set_palette1¤ÇÍ׵ᤵ¤ì¤¿¿§¤òÄɲä·¤Æ
/* ¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤Ë¡¢Äɲ䵤줿¿§¤òµÏ¿¤·¤Æ */
table_rgb[colorpalette_num*3 ]=r<<2;
table_rgb[colorpalette_num*3+1]=g<<2;
table_rgb[colorpalette_num*3+2]=b<<2;
colorpalette_num++; // Êݸ¤·¤Æ¤¤¤ë¿§¤ÎÁí¿ô¤¬Áý¤¨¤¿»ö¤òµÏ¿¤·¤Æ
return colorpalette_num-1; // ¿·¤¿¤ËÄɲä·¤¿¿§¤Î¿§ÈÖ¹æ¤òÊÖ¤¹
}
}
ͽÁÛÄ̤ê¤È¤¤¤¦¤«¤Ê¤ó¤È¸À¤¦¤«¡¢ÊªÀ¨¤¯Ä¹¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£~
***ºÇ¸å¤Ë¤ä¤ë»ö
³Îǧ¤â½ÅÍפÀ¤Í~
(HariMainÆâÉô)
boxfill8(vram,xsize,RGB(0x00,0x84,0x84), 0 ,0 ,xsize- 1,ysize-29);
boxfill8(vram,xsize,RGB(0xc6,0xc6,0xc6), 0 ,ysize-28,xsize- 1,ysize-28);
boxfill8(vram,xsize,RGB(0xff,0xff,0xff), 0 ,ysize-27,xsize- 1,ysize-27);
boxfill8(vram,xsize,RGB(0xc6,0xc6,0xc6), 0 ,ysize-26,xsize- 1,ysize- 1);
boxfill8(vram,xsize,RGB(0xff,0xff,0xff), 3 ,ysize-24,59 ,ysize-24);
boxfill8(vram,xsize,RGB(0xff,0xff,0xff), 2 ,ysize-24, 2 ,ysize- 4);
boxfill8(vram,xsize,RGB(0x84,0x84,0x84), 3 ,ysize- 4,59 ,ysize- 4);
boxfill8(vram,xsize,RGB(0x84,0x84,0x84),59 ,ysize-23,59 ,ysize- 5);
boxfill8(vram,xsize,RGB(0x00,0x00,0x00), 2 ,ysize- 3,59 ,ysize- 3);
boxfill8(vram,xsize,RGB(0x00,0x00,0x00),60 ,ysize-24,60 ,ysize- 3);
boxfill8(vram,xsize,RGB(0x84,0x84,0x84),xsize-47,ysize-24,xsize- 4,ysize-24);
boxfill8(vram,xsize,RGB(0x84,0x84,0x84),xsize-47,ysize-23,xsize-47,ysize- 4);
boxfill8(vram,xsize,RGB(0xff,0xff,0xff),xsize-47,ysize- 3,xsize- 4,ysize- 3);
boxfill8(vram,xsize,RGB(0xff,0xff,0xff),xsize- 3,ysize-24,xsize- 3,ysize- 3);
˺¤ì¤Ê¤¤¤¦¤Á¤ËRGB´Ø¿ô¤È¤«¤ÎÀë¸À¤â½ñ¤¤¤Æ¤ª¤³¤¦¡£~
***¿§¤òº®¤¼¤ÆÉ½¸½¤·¤Æ¤ß¤ë
¥³¥á¥ó¥È¤ÇK¤µ¤ó¤¬¡Ö¿§¤òº®¤¼¤ëÊýË¡¤âÀâÌÀ¤·¤Æ¡×¤È¸À¤Ã¤Æ¤ë¤è¤¦¤Ë¸«¤¨¤Æ¤·¤Þ¤Ã¤¿¡£~
ŬÅö¤Ë¼ÂÁõ¤·¤¿¤é¾å¼ê¤¯Æ°¤¤¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤½¤Î¥½¡¼¥¹¤ò¤È¤ê¤¢¤¨¤º¸ø³«¡£~
(¼ç¤Ë¼ÂÁõ3¤ËÄɲÃ)
// c1¡¢c2¤Ïº®¤¼¤ëÆó¤Ä¤Î¿§¡£pattern¤Ï¿§¤ò¤É¤ÎÈæÎ¨¤Çº®¤¼¤ë¤«¤Ë´Ø¤¹¤ë°ú¿ô¤Ç¡¢
// 0¤Ê¤éc1¤Î¤ß¡¢4¤Ê¤éc2¤Î¤ß¡¢¤½¤ÎÃæ´Ö¤ÏÎ㤨¤Ð1¤Ê¤éc1¤¬Â¿¤á¤È¤Ê¤ë¡£
void boxfill8_2color(unsigned char *vram, int xsize, unsigned char c1,unsigned char c2,int pattern, int x0, int y0, int x1, int y1)
{
int x, y;
unsigned char k[2],table[4]={3,1,0,2};
if(pattern>4) pattern=4;
if(pattern<0) pattern=0;
if(c1==c2||pattern==0){ // Ʊ¤¸¿§¤¬Í褿¤éº®¤¼¤ëɬÍפ¬Ìµ¤¤¤Î¤Ç¤â¤Ã¤Èñ½ã¤Ê´Ø¿ô¤Ë½èÍý¤òÅϤ¹¡£
// ¤³¤³¤ÇÅϤ¹¿§¤¬c1¤Ê¤Î¤Ç¡¢¤Ä¤¤¤Ç¤Ë¥Ñ¥¿¡¼¥ó¤¬0¤À¤Ã¤¿»þ¤Ë¤Ä¤¤¤Æ¤âȽÄê¡£
boxfill8(vram,xsize,c1,x0,y0,x1,y1);
return;
}else if(pattern==4){ // ¥Ñ¥¿¡¼¥ó¤¬4¤Î»þ¡£
boxfill8(vram,xsize,c2,x0,y0,x1,y1);
return;
}
k[0]=c1;
k[1]=c2;
for (y = y0; y <= y1; y++){
for (x = x0; x <= x1; x++)
// ¤³¤Î¾¯¤·Ê£»¨¤½¤¦¤Ê·×»»¼°¤Ï¡¢x-x0¤Èy-y0¤Î¶ö´ñ¤Çtable¤Î¤É¤ÎÃͤò»È¤¦¤«¤ò·è¤á¤Æ¡¢¤½¤ì¤Ë4¤è¤ê¤Ï¾®¤µ¤¤Ãͤò¤·¤Æ¡¢
// 2bit±¦¥·¥Õ¥È¤·¤Æ¤¤¤ë¡£4¤è¤ê¾®¤µ¤¤Ãͤò¤·¤¿»þÅÀ¤Ç4°Ê¾å¤Ë¤Ê¤Ã¤Æ¤¤¤ì¤Ð1¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð0¤¬k¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë»È¤ï¤ì¤ë¡£
vram[y * xsize + x] = k[(table[((x-x0)&1)+(((y-y0)&1)<<1)]+pattern)>>2];
}
return;
}
»È¤¦»þ¤Ï¤³¤ó¤Ê´¶¤¸
boxfill8_2color(vram,xsize,RGB(0x00,0x88,0x88),RGB(0x00,0x80,0x80),2, 0 ,0 ,xsize- 1,ysize-29);
boxfill8_2color(vram,xsize,RGB(0xc8,0xc8,0xc8),RGB(0xc0,0xc0,0xc0),2, 0 ,ysize-28,xsize- 1,ysize-28);
boxfill8_2color(vram,xsize,RGB(0xff,0xff,0xff),RGB(0xff,0xff,0xff),0, 0 ,ysize-27,xsize- 1,ysize-27);
boxfill8_2color(vram,xsize,RGB(0xc8,0xc8,0xc8),RGB(0xc4,0xc4,0xc4),2, 0 ,ysize-26,xsize- 1,ysize- 1);
boxfill8_2color(vram,xsize,RGB(0xff,0xff,0xff),RGB(0xff,0xff,0xff),0, 3 ,ysize-24,59 ,ysize-24);
boxfill8_2color(vram,xsize,RGB(0xff,0xff,0xff),RGB(0xff,0xff,0xff),0, 2 ,ysize-24, 2 ,ysize- 4);
boxfill8_2color(vram,xsize,RGB(0x00,0x88,0x88),RGB(0x00,0x80,0x80),2, 3 ,ysize- 4,59 ,ysize- 4);
boxfill8_2color(vram,xsize,RGB(0x00,0x88,0x88),RGB(0x00,0x80,0x80),2,59 ,ysize-23,59 ,ysize- 5);
boxfill8_2color(vram,xsize,RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),0, 2 ,ysize- 3,59 ,ysize- 3);
boxfill8_2color(vram,xsize,RGB(0x00,0x00,0x00),RGB(0x00,0x00,0x00),0,60 ,ysize-24,60 ,ysize- 3);
boxfill8_2color(vram,xsize,RGB(0x00,0x88,0x88),RGB(0x00,0x80,0x80),2,xsize-47,ysize-24,xsize- 4,ysize-24);
boxfill8_2color(vram,xsize,RGB(0x00,0x88,0x88),RGB(0x00,0x80,0x80),2,xsize-47,ysize-23,xsize-47,ysize- 4);
boxfill8_2color(vram,xsize,RGB(0xff,0xff,0xff),RGB(0xff,0xff,0xff),0,xsize-47,ysize- 3,xsize- 4,ysize- 3);
boxfill8_2color(vram,xsize,RGB(0xff,0xff,0xff),RGB(0xff,0xff,0xff),0,xsize- 3,ysize-24,xsize- 3,ysize- 3);
Ť¤¤Î¤ÇÊ̤δؿô¤òÄɲá£
void boxfill8_color(unsigned char *vram, int xsize,unsigned char r,unsigned char g,unsigned char b, int x0, int y0, int x1, int y1)
{
int cu=((r+3)&0xfc)+(((g+3)&0xfc)<<8)+(((b+3)&0xfc)<<16);
int cd=(r&0xfc)+((g&0xfc)<<8)+((b&0xfc)<<16);
if(cu==cd){ // ÊäÀµ¤¹¤ëɬÍפ¬Ìµ¤¤
boxfill8(vram,xsize,RGB(r,g,b),x0,y0,x1,y1);
}else{
if(r>=0xfd) r=0xfc;
if(g>=0xfd) g=0xfc;
if(b>=0xfd) b=0xfc;
boxfill8_2color(vram,xsize,RGB(r,g,b),RGB(r+((r&2)<<1),g+((g&2)<<1),b+((b&2)<<1)),2,x0,y0,x1,y1);
}
return;
}
¤³¤ì¤Ç¤¤¤¯¤é¤«¸«¤ä¤¹¤¯¤Ê¤Ã¤¿¤«¤Ê¡£
boxfill8_color(vram,xsize,0x00,0x84,0x84, 0 ,0 ,xsize- 1,ysize-29);
boxfill8_color(vram,xsize,0xc6,0xc6,0xc6, 0 ,ysize-28,xsize- 1,ysize-28);
boxfill8_color(vram,xsize,0xff,0xff,0xff, 0 ,ysize-27,xsize- 1,ysize-27);
boxfill8_color(vram,xsize,0xc6,0xc6,0xc6, 0 ,ysize-26,xsize- 1,ysize- 1);
boxfill8_color(vram,xsize,0xff,0xff,0xff, 3 ,ysize-24,59 ,ysize-24);
boxfill8_color(vram,xsize,0xff,0xff,0xff, 2 ,ysize-24, 2 ,ysize- 4);
boxfill8_color(vram,xsize,0x84,0x84,0x84, 3 ,ysize- 4,59 ,ysize- 4);
boxfill8_color(vram,xsize,0x84,0x84,0x84,59 ,ysize-23,59 ,ysize- 5);
boxfill8_color(vram,xsize,0x00,0x00,0x00, 2 ,ysize- 3,59 ,ysize- 3);
boxfill8_color(vram,xsize,0x00,0x00,0x00,60 ,ysize-24,60 ,ysize- 3);
boxfill8_color(vram,xsize,0x84,0x84,0x84,xsize-47,ysize-24,xsize- 4,ysize-24);
boxfill8_color(vram,xsize,0x84,0x84,0x84,xsize-47,ysize-23,xsize-47,ysize- 4);
boxfill8_color(vram,xsize,0xff,0xff,0xff,xsize-47,ysize- 3,xsize- 4,ysize- 3);
boxfill8_color(vram,xsize,0xff,0xff,0xff,xsize- 3,ysize-24,xsize- 3,ysize- 3);
***Ãí°Õ»ö¹à(·ü°Æ»ö¹à)
¡¼ÂÁõ3¤Ç¡¢¡ÖƱ¤¸¿§¤¬¤Ê¤¯¤Æ¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤âËþ¥¿¥ó¤À¤è¡×¤È¤¤¤¦»þ¤Ë²¿¤â¹Í¤¨¤º¤ËºÇ¤â¶á¤¤¿§¤òÊÖ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢~
Î㤨¤Ð¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤¬Ï³¤ì¤Ê¤¯ÀĤäÀÄÎС¢¤½¤ì¤ËÎФÇËþ¥¿¥ó¤À¡¡¤È¤¤¤¦»þ¤Ë¤ÏÀÖ¤òÍ׵ᤷ¤Æ¤â¹õ¤¬¤¢¤ì¤Ð¹õ¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÀĤ«ÎФ¬¤ª¤½¤é¤¯Ê֤äƤ¤Þ¤¹¡£~
´û¸¤Î¿§¤ËÎɤ¯»÷¤Æ¤¤¤ë¿§¤¬¤Ê¤¤»þ¤Ï¡¢1¿§Íפé¤Ê¤¤¿§¤òõ¤·¤Æ¤½¤ì¤òÃÖ´¹¤¹¤ë¤Î¤¬¤¤¤¤¤Î¤Ç¤¹¤¬¡¢~
¿§¤Îõ¤·Êý¤Ë¤Ï»ä¤¬»×¤¤¤Ä¤¯¸Â¤ê¤Ç¤Ï2¼ïÎढ¤Ã¤Æ¡¢~
-º£¸½ºßºÇ¤â»È¤ï¤ì¤Æ¤¤¤Ê¤¤¿§¤ò¤Ê¤ó¤È¤«¸À¤¤Åö¤Æ¤ëÊýË¡
-¿§¤ÎÌ©ÅÙ¤¬Ç»¤¤¾ì½ê¤Î¿§¤òõ¤·¤Æ¡¢¤½¤Î¿§¤ò¸À¤¤Åö¤Æ¤ëÊýË¡(Íפ¹¤ë¤Ë¤½¤Î¿§¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤â¤è¤¯»÷¤¿¿§¤Ç¥«¥Ð¡¼¤Ç¤¤ë¤è¤¦¤Ê¾ì½ê¤òõ¤¹¡£)
¤È¤¤¤¦ÊýË¡¤Ê¤Î¤Ç¤¹¤¬¡¢¤É¤Á¤é¤Ë¤·¤Æ¤â¤Á¤ç¤Ã¤ÈŤ¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¡¢¡Ö³§¤µ¤ó¤Ø¤Î½ÉÂê¡×¤È¤¤¤¦¤³¤È¤Ç¤¤¤¤¤Ç¤·¤ç¤¦¤«¡©~
¤Þ¤¿¡¢ºÇ¤â»÷¤Æ¤¤¤ë¿§¤È¤É¤Î¤¯¤é¤¤»÷¤Æ¤¤¤Ê¤«¤Ã¤¿¤éÃÖ´¹¤·¤Ë¹Ô¤¯¤«¡¢¤½¤ÎïçÃͤòÀßÄꤹ¤ë¤Î¤âÆñ¤·¤¤¤È»×¤¦¤Î¤Ç¤¹¤¬¡¦¡¦¡¦¡£~
~
¢Â¿Ê¬¤³¤ì¤ÏºÇÎɤÎÊýË¡¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£É¬¤º¥í¥¸¥Ã¥¯¥ì¥Ù¥ë¤Ç¤â¤Ã¤È¤¤¤¤¤â¤Î¤¬¤¢¤ë¤Ï¤º¤Ç¤¹¡£~
»ä¤Ïº£¤Î¤È¤³¤í»×¤¤¤Ä¤¤Þ¤»¤ó¤¬¡¢³§¤µ¤ó¤â¤¢¤ì¤³¤ì¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£~
¤Ç¤¤ì¤Ð¤½¤ÎÊýË¡¤ò¥³¡¼¥É¤Ëµ¯¤³¤¹¤Ê¤ê¾¿Í¤ËÀâÌÀ¤Ç¤¤ëÄøÅ٤˾ܤ·¤¯³°Éô»ÅÍͤò»æ¤Ë½ñ¤½Ð¤¹¤Ê¤ê¤·¤Æ¤¯¤À¤µ¤¤¡£~
»ä¤Ï¤½¤ÎÊýË¡¤ò¸«¤Æ¤ß¤¿¤¤¤Ç¤¹¡£~
~
£°ì±þ³Îǧ¤Ï¤·¤Æ¤ë¤Î¤Ç¤¹¤¬¡¢¤¢¤Þ¤êƬ¤Î¤è¤¯¤Ê¤¤»ä¤¬½ñ¤¤¤¿¥³¡¼¥É¤Ë¥Ð¥°¤¬¤Ê¤¤¤È¤Ï¹Í¤¨¤é¤ì¤Þ¤»¤ó¡£~
¥³¡¼¥É¤ò¥³¥Ô¥Ú¤¹¤ëÁ°¤Ë¡Ö²¿¤¬¤·¤¿¤¯¤Æ¡¢¤É¤¦¤¹¤ì¤Ð¼ÂÁõ¤Ç¤¤½¤¦¤«¡×¤òÍý²ò¤·¤Æ¡¢°ì±þ¥³¡¼¥É¤òÌܤÇÄɤäƤߤƤ¯¤À¤µ¤¤¡£~
~
***´Ê°×Åêɼ(º£²ó¤Î¥«¥é¡¼¥Ñ¥ì¥Ã¥È¤Î´ÉÍý¤Ë´Ø¤¹¤ëµ»ö¤Ë¤Ä¤¤¤Æ¡£)
¤É¤ÎÄøÅÙÌò¤ËΩ¤Ã¤¿¡©
#vote(Á´¤¯¡£[1],¤Û¤ó¤Î¤ï¤º¤«¤Ë¡£¤¢¤Þ¤ê¡£[1],¤ä¤ä¡¢¾¯¤·¡£[1],¤Þ¤¡¤Þ¤¡¡¢³ä¤È¡£[2],¤«¤Ê¤ê¡¢¤È¤Æ¤â[1],Èó¾ï¤Ë¡¢À¨¤¯[1])
ÀâÌÀ¤ÏŬÀÚ¡©
#vote(ÀâÌÀ²á¾ê,¤ä¤ä²á¾ê,ŬÀÚ,¤ä¤äÉÔŬÀÚ,ʬ¤«¤ê¤Ë¤¯¤¤,Á´¤¯Ê¬¤«¤é¤Ê¤¤)
#vote(ÀâÌÀ²á¾ê[0],¤ä¤ä²á¾ê[0],ŬÀÚ[1],¤ä¤äÉÔŬÀÚ[0],ʬ¤«¤ê¤Ë¤¯¤¤[0],Á´¤¯Ê¬¤«¤é¤Ê¤¤[0])
¥½¡¼¥¹¥³¡¼¥ÉÃæ¤Î¥³¥á¥ó¥È¤Ï¡©
#vote(¿¤¹¤®¤ë,¤ä¤ä¿¤¤,¤ä¤ä¿¤¤¤¬Å¬ÀÚ,ŬÀÚ¤ÇŬÎÌ,¤ä¤ä¾¯¤Ê¤¤¤¬Å¬ÀÚ,¤ä¤ä¾¯¤Ê¤¤,¾¯¤Ê¤¹¤®¤ë)
&aname(div);
***æÀþ:³ä¤ê»»¤Ã¤Æ¤É¤Î¤¯¤é¤¤ÃÙ¤¤¤Î¡©
¤È¤³¤í¤Ç³ä¤ê»»¤ÏÃÙ¤¤¤ÈÎɤ¯Ê¹¤¤Þ¤¹¤¬¡¢¼ÂºÝ¤É¤ì¤¯¤é¤¤ÃÙ¤¤¤Î¤«¤È¸À¤¦¤È~
http://kmkz.jp/mtm/mag/code/asm.html ~
¤¢¤¿¤ê¤Ë¸Å¤¤»ñÎÁ¤¬ºÜ¤Ã¤Æ¤ë¤Î¤Ç¤¹¤¬¡¢¤É¤¦¤â8bitƱ»Î¤ÎÉ乿¤Ê¤·À°¿ô½ü»»¤Ç¤µ¤¨17clock¤«¤é¤«¤«¤ë¤è¤¦¤Ç¤¹¡£~
¤½¤ì¤ËÈæ¤Ù¤ë¤ÈAND¡¢OR¡¢SHL¡¢SHR¤¢¤¿¤ê¤Ï1clock¤Ç¼Â¹Ô¤Ç¤¤ë¤è¤¦¤Ç¤¹¡£~
:clock|CPUÆâ¤Ç¤Î»þ´Ö¤Îñ°Ì¤Î°ì¼ï¡£¤Ä¤Þ¤ê¤³¤Î»þ´Ö¤¬Ã»¤±¤ì¤Ðû¤¤¤Û¤É¡¢Â®¤¯¼Â¹Ô¤Ç¤¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¢¤ë¡£~
1clock¤¬²¿Éäˤʤ뤫¤ÏCPU¤Îưºî¼þÇÈ¿ô¡ÊMHz¤È¤«GHz¤È¤«¤Çɽ¤¹Åۡˤ˰͸¤¹¤ë¡£
:SHL¡¢SHR|¤½¤ì¤¾¤ìº¸ÏÀÍý¥·¥Õ¥È¡¢±¦ÏÀÍý¥·¥Õ¥È¡£É乿¤Ê¤·À°¿ô·¿¤ËÂФ·¤Æ<<¤ä>>¤ò¼Â¹Ô¤¹¤ë¡£~
Éä¹ç¤¢¤êÀ°¿ô·¿¤À¤ÈSAR¡¢SAL¤Ë¤Ê¤ê¡¢¤³¤¤¤Ä¤é¤Ï»»½Ñ¥·¥Õ¥È¤È¸À¤¦¡£
Pentium4¤Î¾ì¹ç¤ÏIntelËܲȤ«¤é¡ÖIA-32 ¥¤¥ó¥Æ¥ëR ¥¢¡¼¥¥Æ¥¯¥Á¥ã¡¼ºÇŬ²½¥ê¥Õ¥¡¥ì¥ó¥¹¡¦¥Þ¥Ë¥å¥¢¥ë¡×¡ÖAP-485 ¥¤¥ó¥Æ¥ëR ¥×¥í¥»¥Ã¥µ¡¼¤Î¼±ÊÌ¤È CPUID Ì¿Îá¡×¤ò~
Íî¤È¤·¤Æ¤¤Æ¡¢Á°¼Ô¤Î¡ÖÉÕÏ¿C¡×ɽC-8¤È¸å¼Ô¤Î¡ÖCPUIDÌ¿Îá¤Î½ÐÎÏ¡×ɽ4¤ò»²¾È¤¹¤ë¤È¡¢¤É¤ÎCPU¤Ç¤É¤ÎÌ¿Î᤬ÃÙ¤¤¤Î¤«°ìÉô³Îǧ¤Ç¤¤Þ¤¹¡£´·¤ì¤Ê¤¤¤ÈÆñ¤·¤¤¤Ç¤¹¤¬¡£~
»ñÎÁÈÖ¹æ¤Ï¤½¤ì¤¾¤ì¡¢248966-013JA¡¢241618-029JA¡Ê¸å¼Ô¤Ï¤³¤ÎÈÖ¹æ¤Ç¥°¥°¤ë¤ÈPDF¤Ø¤¹¤°Èô¤Ù¤Þ¤¹¡£Á°¼Ô¤â¥¢¥É¥ì¥¹¤òftp¤«¤éhttp¤ËÊѤ¨¤ì¤Ð¤¤¤±¤Þ¤·¤¿¡£¡Ë~
~
¤Á¤Ê¤ß¤Ë¡¢Äê¿ô½ü»»¤Î¾ì¹ç¤Ï³ä¤ê»»¤ò³Ý¤±»»¤ËÊÑ´¹¤¹¤ëÊýË¡¤ò»È¤¨¤Ð¤½¤ì¤À¤±¤Ç¿ô½½¥¯¥í¥Ã¥¯É⤤¤¿¤ê¤·¤Þ¤¹¡£~
(¸Å¤¤É½¤ÎÃͤò»È¤¦¤È¡¢À°¿ô½ü»»(46clock)¤¬À°¿ôÄê¿ô¾è»»(9clock)+¦Á(2¡Á3clock)¤Ë¤Ê¤Ã¤¿¤ê¤È¤«)~
¤³¤Î·×»»ÊýË¡¤Ï¾¯¤·ÀâÌÀ¤·¤Ë¤¯¤¤¤Î¤Ç¤¹¤¬¡£¡ÖÀ°¿ô½ü»» ¹â®²½¡×¤¢¤¿¤ê¤Ç¥°¥°¤ì¤Ð½Ð¤Æ¤¯¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£~
½ñÀÒ¤À¤È¡Ö¥Ï¥Ã¥«¡¼¤Î¤¿¤Î¤·¤ß - ËÜʪ¤Î¥×¥í¥°¥é¥Þ¤Ï¤¤¤«¤Ë¤·¤ÆÌäÂê¤ò²ò¤¯¤«¡×¤È¤«¤¬¾Ü¤·¤¤¤Ç¤¹¡£
**¤³¤Î¥Ú¡¼¥¸¤ÎÍúÎò
-2008ǯ8·î23Æü - ½Ð¸½
-2008ǯ8·î24Æü - lea¥×¥í¥¸¥§¥¯¥È¤Î¥µ¥Ö¥Ú¡¼¥¸(¸½ºß¤Î¥Ú¡¼¥¸)¤Ë°Üư
-2008ǯ8·î25Æü - 2¿§¤òº®¤¼¤ëÊýË¡¤Ë¤Ä¤¤¤ÆÄɵ(bolfill8²þ¤ÈǤò¼ÂÁõ)
***¥³¥á¥ó¥È
-Source¤µ¤ó¤¬25ÆüÌÜ¤Þ¤ÇÆÉ¤ó¤À¤«¤É¤¦¤«Ê¬¤«¤é¤Ê¤¤¤Î¤Çǰ¤Î¤¿¤á¤Ë½ñ¤¤Þ¤¹¤¬¡¢¿§¤Î°·¤¤¤Ë¤Ä¤¤¤Æ¤Ï¡¢25ÆüÌܤǰì±þ°ì¤ÄÄ󰯤·¤Æ¤¢¤ê¤Þ¤¹¡£¤³¤³¤Ëµó¤¬¤Ã¤Æ¤¤¤ë¤Î¤Ï¤¤¤º¤ì¤âËͤΰƤȤϰ㤦¤Î¤ÇÌÌÇò¤¤¤È»×¤¤¤Þ¤¹¡£Ëܽñ¤Ç¤ÎÊýË¡¤ÈÁȤ߹ç¤ï¤»¤é¤ì¤¿¤é¤â¤Ã¤ÈÌÌÇò¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ -- [[K]] SIZE(10){2008-08-24 (Æü) 21:07:02}
-¼Â¤Ï¤½¤Î·ï¤Ê¤Î¤Ç¤¹¤¬¡¢¸åȾ¤Ïή¤·ÆÉ¤ß¤·¤Ä¤ÄƬ¤ËÆþ¤ì¤Æ¤Ê¤«¤Ã¤¿¤Î¤Ç»ä¤âºòÆüµ¤¤¬ÉÕ¤¤¤¿¤ó¤Ç¤¹(¤ä¤±¤Ë¥°¥é¥Õ¥£¥«¥ë¤Êcolor1¤ò¸«¤Æ)¡£¼ÂÁõ2¤È¤Ï¡Ö´û¸¤Î¥Ñ¥ì¥Ã¥È¤ò¼Î¤Æ¤ë¤«Êݼ餹¤ë¤«¡×¤È»È¤¨¤ë¿§¤Î¿ô¤¬¼ç¤Ë°ã¤Ã¤Æ¤Þ¤¹¤Í¡£ -- [[Source]] SIZE(10){2008-08-24 (Æü) 21:42:31}
-color1¤Ç¤Ï¥Ñ¥ì¥Ã¥È¤Ø¤Î¹©ÉפϤۤȤó¤É¤Ê¤¯¤Æ¡Ö¿§¤ò¤Þ¤¼¤ë¡×¤È¤¤¤¦ÊýË¡¤Ç¹©Éפ·¤Æ¤¤¤Þ¤¹¡£¤â¤·¤³¤ì¤òSource¤µ¤ó¤ÎÊýË¡¤ÈÁȤ߹ç¤ï¤»¤Æ»È¤¦¤È¤¹¤ë¤È¡¢¤è¤¯»È¤¦¿§¤Ë¶á¤¤¿§¤ò½¸¤á¤Æ¤½¤ì¤é¤òº®¤¼¤ë¤³¤È¤Ç¡¢¤è¤êɽ¸½ÎϤò¹â¤á¤é¤ì¤½¤¦¤Ç¤¹¡£ËܤÎÊýË¡¤Ç¤Ï¤½¤¦¤¤¤¦¹©Éפò¤·¤Ê¤¤¤ÇÅù´Ö³Ö¡Ê¡©¡Ë¤Ë¿§¤òÍѰդ·¤Æ¤¤¤ë¤Î¤Ç¡¢¿§¤òº®¤¼¤ë·×»»¤òÂçÉý¤Ë´Êñ²½¡¦¹â®²½¤Ç¤¤Æ¤¤¤Þ¤¹¡£ -- [[K]] SIZE(10){2008-08-25 (·î) 01:02:19}
-¤½¤ì¤Ïcolor2¤Ø¤Î¹©ÉפǤϡ¦¡¦¡¦¡©2x2¥Ô¥¯¥»¥ë¤ò1ñ°Ì¤È¤·¤¿¾ì¹ç¤Ë2¿§¤òº®¿§¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¾¯¤·½ñ¤¤¤Æ¤ß¤Þ¤¹¡£ -- [[Source]] SIZE(10){2008-08-25 (·î) 08:36:44}
-¤¹¤ß¤Þ¤»¤ó¤½¤¦¤Ç¤¹¡£½ñ¤´Ö°ã¤¨¤Þ¤·¤¿¡£color2¤Î¤³¤È¤Ç¤¹¡£ -- [[K]] SIZE(10){2008-08-25 (·î) 14:25:11}
#comment