|
|
ÁÁÀº ¿©ÇàÀÚ µÇ±â
¶Ç´Â, ´ç½ÅÀÇ Allegro ÇÁ·Î±×·¥ÀÌ À̽ÄÀÌ ½±µµ·Ï À¯ÁöÇϱâ
1999³â 11¿ù, Shawn Hargreaves.
ÀÌ ±ÛÀ» ¾²´Â ½ÃÁ¡¿¡¼ÀÇ ¹öÀüÀÎ 3.9.x WIP ¹öÀü¿¡¼¿Í °°ÀÌ,
Allegro´Â µµ½º (djgpp, Watcom), À©µµ¿ìÁî (MSVC, mingw32, RSXNTDJ),
¸®´ª½º (ÄܼÖ, X), BeOS¿¡ À̽ĵǾú½À´Ï´Ù. ´ç½ÅÀÌ À̰ÍÀ» ÀÐÀ» ¶§±îÁö´Â
¹öÀü 4.0ÀÌ ¾Æ¸¶µµ ¹ßÇ¥µÇ¾ú°Å³ª ´õ ¸¹Àº ´Ù¸¥ Ç÷§ÆûÀ» Áö¿øÇÏ´Â ÀÌÈÄ ¹öÀüÀÌ
¹ßÇ¥µÇ¾úÀ» °ÍÀÔ´Ï´Ù. Allegro´Â ¾îµð¿¡¼ ½ÇÇà½ÃŰ°Ç Á¤È®È÷ ¶È°°Àº
¶óÀ̺귯¸® ÇÔ¼ö¸¦ Á¦°øÇϸç, À̰ÍÀº ´Ù¸¥ Áö¿ø ½Ã½ºÅÛÀ» À§ÇÑ ÇÁ·Î±×·¥ÀÇ
¹öÀüÀ» ¸Å¿ì ½±°Ô ¸¸µéµµ·Ï ÇÕ´Ï´Ù: ÀÌ·ÐÀûÀ¸·Î, °£´ÜÇÑ ÀçÄÄÆÄÀϸ¸ÀÌ
ÇÊ¿äÇÑ ÀÛ¾÷ÀÌ µË´Ï´Ù. ÇÏÁö¸¸ ½ÇÁ¦ ¼¼»ó¿¡¼´Â ¸ðµç ÀÏÀÌ ±×·¸°Ô °£´ÜÇÏÁö´Â
¾ÊÀ¸¹Ç·Î, °¢ »õ·Î¿î ÇÁ·§Æû¿¡¼ ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇϵµ·Ï ÇÏ·Á¸é ¸î°¡Áö
Á¶ÀÛÀÌ ¾Æ¸¶µµ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. ÀÌ ¹®¼´Â ³ªÁß¿¡ ¼ö¸¹Àº »ðÁúÀ» ÇØ¾ß ÇÏ´Â
»óȲÀ» ¸¸³ª´Â ´ë½Å ¿Ã¹Ù¸£°Ô ½ÃÀÛÇÒ ¼ö Àֱ⸦ ¹Ù¶ó´Â ¸¶À½¿¡¼, °¡Àå
ÀÖÀ»¹ýÇÑ ¹®Á¦Á¡ÀÌ ¾î¶² °ÍÀÌ µÉ °ÍÀÎÁö¸¦ »ý°¢ÇØ º¸·Á´Â ½Ãµµ·Î ÀÛ¼ºµÈ
°ÍÀÔ´Ï´Ù. À̵é Áß ¸î¸îÀº Allegro¿¡ °ü·ÃµÈ °ÍÀÌÁö¸¸, ´ëºÎºÐÀº ÀϹÝÀûÀÎ
C °ü·Ã ¹®Á¦ÀÔ´Ï´Ù: µÎ°¡Áö °æ¿ì ¸ðµÎ¿¡ ´ëÇÏ¿©, Á¦°¡ ºüÆ®¸° ¾î¶°ÇÑ ´Ù¸¥
¹®Á¦Á¡¿¡ ´ëÇÑ »ý°¢À» Á¦°Ô ¾Ë·Á ÁֽʽÿÀ!
-
µµ½º ¼Ò½º¸¦ ´Ù¸¥ Ç÷§Æû¿¡¼ µ¿ÀÛÇϵµ·Ï Çϴµ¥ ÇÊ¿äÇÑ ´ëºÎºÐÀÇ ºÐ¸íÇÑ
º¯È´Â END_OF_MAIN()À» main() ÇÔ¼ö µÚ¿¡ ³Ö´Â °ÍÀÔ´Ï´Ù.
ÀÌ ¸ÅÅ©·Î´Â µµ½º ¹öÀüÀÇ ¶óÀ̺귯¸®¿¡¼´Â ¾Æ¹« µ¿ÀÛµµ ÇÏÁö ¾Ê´Â °ÍÀÌÁö¸¸,
À©µµ¿ìÁî ¹öÀü¿¡¼´Â Ç¥ÁØ main() ÇÔ¼ö¸¦ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ½ºÅ¸ÀÏÀÇ WinMain()À¸·Î
¹Ù²Ù¸ç, À¯´Ð½º Ç÷§Æû¿¡¼´Â Allegro°¡ argv[0] ÆÄ¶ó¹ÌÅÍ °ªÀ» °¡Á®¿Àµµ·Ï
ÇÏ´Â ¸¶¹ýÀ» ¼öÇàÇÕ´Ï´Ù (À̰ÍÀº config ÆÄÀÏÀ» ã´Âµ¥ ÇÊ¿äÇÕ´Ï´Ù).
-
main() ÇÔ¼öÀÇ Á¤È®ÇÑ ÇÁ·ÎÅäŸÀÔÀ» Á¦°øÇϽʽÿÀ. ANSI C´Â 'int main()'°ú
'int main(int argc, char *argv[])' µÎ°¡Áö ¸ðµÎ¸¦ Çã¿ëÇϸç, ¼º°øÀÏ °æ¿ì
0À» ¸®ÅÏÇϰí, ½ÇÆÐÀÎ °æ¿ì¿¡´Â 0ÀÌ ¾Æ´Ñ exit Äڵ带 ¸®ÅÏÇÕ´Ï´Ù.
main¿¡¼ ±×³É return¸¸À¸·Î Á¾·áÇϰųª ¾î¶°ÇÑ ¸®ÅÏ °ªµµ ¾øÀÌ ÇÔ¼ö°¡ ³¡³ªµµ·Ï
¼±¾ðÇÏ´Â °ÍÀº ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.
-
¾î¶°ÇÑ ºñÇ¥ÁØ ¶óÀ̺귯¸® ÇÔ¼öµµ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. DirectX ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸é
ºÐ¸íÈ÷ À©µµ¿ìÁî¿¡¼¸¸ µ¿ÀÛÇÒ °ÍÀ̸ç, DPMI ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸é djgpp¿Í °°Àº
DPMI ½Ã½ºÅÛ¿¡¼¸¸ µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î conio.h¿Í °°Àº Ç÷§Æû¿¡
Æ¯ÈµÈ Çì´õ¸¦ »ç¿ëÇϰųª, GDI ÀÎÅÍÆäÀ̽º ÇÔ¼ö¿Í °°Àº AllegroÀÇ Æ¯Á¤ Ç÷§Æû
Àü¿ë ºÎºÐÀ» »ç¿ëÇÏ´Â °ÍÀ» ÇÇÇØ¾ß ÇÕ´Ï´Ù. ANSI Ç¥ÁØ ÇÔ¼ö¿Í Allegro
¶óÀ̺귯¸® ÇÔ¼ö, ±×¸®°í Áö¿øÀ» ¿øÇÏ´Â ¸ðµç Ç÷§Æû¿¡¼ »ç¿ë °¡´ÉÇÑ
´Ù¸¥ ¶óÀ̺귯¸®¸¸À» »ç¿ëÇϽʽÿÀ. ¿¹¸¦ µé¾î, rand() ÇÔ¼ö´Â ANSI¿¡¼
libcÀÇ ÀϺηΠÁ¤ÀǵǾî ÀÖ´Â °ÍÀÌÁö¸¸, random()Àº ±×·¸Áö ¾ÊÀ¸¹Ç·Î,
ÀÌ½Ä °¡´ÉÇÑ Äڵ忡¼´Â random() ´ë½Å rand()¸¦ »ç¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù.
-
À§¿Í °ü·ÃÇÏ¿©: ¸î¸î Ç÷§Æû¿¡¼´Â rand()´Â 16ºñÆ® °ª¸¸À» ¸®ÅÏÇϹǷÎ,
±× ÀÌ»óÀÇ ºñÆ®°¡ »ç¿ë °¡´ÉÇÑ °ªÀ» °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇÏÁö ¸¶½Ê½Ã¿À (djgppÀÇ
rand()´Â 32ºñÆ®ÀÇ °á°ú¸¦ ¸®ÅÏÇÏÁö¸¸, À̰Ϳ¡ ÀÇÁ¸ÇÏÁö´Â ¸¶½Ê½Ã¿À).
-
libcÀÇ °¡Àå ¾àÇÑ Ç¥ÁØÈ ÁßÀÇ Çϳª´Â µð·ºÅ丮¿¡ ÀúÀåµÈ ÆÄÀÏÀ» Àд ¹æ¹ýÀÔ´Ï´Ù.
´ëºÎºÐÀÇ µµ½º¿Í À©µµ¿ìÁî ÄÄÆÄÀÏ·¯´Â findfirst()¿Í findnext() ÇÔ¼ö¿Í °°Àº
Á¾·ù¸¦ °¡Áö°í ÀÖÁö¸¸, È£ÃâÇÏ´Â ÇÔ¼ö¿Í ÆÄ¶ó¹ÌÅͰ¡ °°Áö´Â ¾Ê½À´Ï´Ù.
Posix ½Ã½ºÅÛ (À¯´Ð½º, djgpp)¿¡´Â opendir()¿Í readdir() ÇÔ¼ö°¡ ÀÖÁö¸¸,
À̵éÀº MSVC¿¡´Â ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ ÀÏÀ» ¾Æ¿¹ ÇÏÁö ¾Ê°Å³ª,
¸ðµç Ç÷§Æû¿¡¼ Áö¿øµÇ´Â AllegroÀÇ for_each_file() ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.
-
gcc ¹®¼ÀÇ "C È®Àå (Extensions)" ÆäÀÌÁö¸¦ ÀÐ¾î º¸½Ê½Ã¿À.
¿©±â¿¡´Â a) ¸Å¿ì ÈǸ¢Çϸç, b) gcc À̿ܿ¡´Ì ÄÄÆÄÀÏ·¯¿¡¼´Â Áö¿øµÇÁö ¾Ê´Â
¸¹Àº °ÍµéÀÌ ÀÖÀ¸¹Ç·Î, ÀÌ½Ä °¡´ÉÇÑ Äڵ带 ÀÛ¼ºÇÏ·Á¸é ºÒÇàÈ÷µµ ±×°ÍÀ»
»ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. __stdcall, __declspec µîÀÇ MSVC¿¡¼ »ç¿ëÇÏ´Â °Íµéµµ
»ç¿ëÇÏ¿©¼´Â ¾ÊµË´Ï´Ù. ±×·¸Áö¸¸ À̰͵éÀº gcc°¡ ÇÒ ¼ö ÀÖ´Â ¸ðµç Àç¹Ì
ÀÖ´Â ÀÏµé °°ÀÌ ¸Å·ÂÀûÀÌÁö´Â ¾Ê½À´Ï´Ù :-)
-
¸ðµç ÄÄÆÄÀÏ·¯°¡ ÀζóÀÎÀ» Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï¹Ç·Î, C ÇÔ¼ö¸¦ ÀζóÀÎÀ¸·Î
¼±¾ðÇÏÁö ¸¶½Ê½Ã¿À. ¼º´É ÃÖÀûȸ¦ À§ÇØ ÀζóÀÎÀ» »ç¿ëÇÏ°í ½Í´Ù¸é AllegroÀÇ
INLINE ¸ÅÅ©·Î¸¦ ´ë½Å »ç¿ëÇϽʽÿÀ. À̰ÍÀº ÀζóÀÎÀ» Áö¿øÇÏ´Â ÄÄÆÄÀÏ·¯¿¡
´ëÈ÷¼´Â inlineÀ¸·Î Á¤ÀǵǸç, Ư¼ö ¹®ÀÚ¸¦ ÁÁ¾ÆÇÏ´Â MSVC¿Í °°Àº ¹Ùº¸°°Àº
ÄÄÆÄÀÏ·¯¿¡ ´ëÇØ¼´Â __inlineÀ¸·Î, ¶Ç ÀüÇô ÀζóÀÎÀ» »ç¿ëÇÒ ¼ö ¾ø´Â
ÄÄÆÄÀÏ·¯¿¡ ´ëÇØ¼´Â ¹«½ÃÇϵµ·Ï Á¤Àǵ˴ϴÙ. ÀζóÀÎ ÇÔ¼ö¸¦ Çì´õ ÆÄÀÏ¿¡¼
¼±¾ðÇÏ·Á¸é ¸Å¿ì ÁÖÀÇÇÏ¿©¾ß ÇÕ´Ï´Ù. Allegro´Â ¸ðµç ÄÄÆÄÀÏ·¯¿¡ ´ëÇØ¼
AL_INLINE() ¸ÅÅ©·Î¿Í inline.c ¶óÀ̺귯¸® ¼Ò½º ÆÄÀÏÀÇ Á¶ÇÕÀ¸·Î À̰ÍÀ»
ó¸®ÇÏÁö¸¸, À̰ÍÀº ÁöÀúºÐÇÑ ÀÛ¾÷ÀÌ¸ç ¸ðµç ÃÖÀûÈ¿Í µð¹ö±× ºôµå¿¡¼
µ¿ÀÛÇϵµ·Ï ÇÏ´Â °ÍÀº ½±Áö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î °¡´ÉÇÑÇÑ ÀÌ·± ÀÛ¾÷Àº
ÇÇÇÏ´Â °ÍÀÌ ÁÁ´Ù°í ¸»¾¸µå¸®°í ½Í½À´Ï´Ù. ±¸Áö »ç¿ëÇÏ°í ½Í´Ù¸é Allegro¿¡¼
»ç¿ëÇÏ´Â ¹æ¹ýÀ» ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ inline.c¿¡ ´ëÇ×ÇÏ´Â
ÀÚ½ÅÀÇ ÆÄÀÏÀ» ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÏ¿©¾ß ÇÒ °ÍÀ̸ç, ¸ðµç Ãß°¡µÇ´Â ÀζóÀÎ
ÇÔ¼öÀÇ Á¤Àû º¹»çº»À» »ý¼ºÇϵµ·Ï ÇÏ¸é¼ allegro.hÀÇ ÀζóÀÎ ÇÔ¼öÀÇ Á¤Àû
º¹»çº» (ÀÌ¹Ì inline.c¿¡¼ »ý¼ºµÇµµ·Ï µÇ¾î ÀÖ´Â °Í)Àº »ý¼ºÇÏÁö ¾Êµµ·Ï
ÇÏ´Â Á¤¸® ÀÛ¾÷À» ¾î¶»°Ôµç ÇØ ÁÖ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. inline.c¿Í °ü·ÃµÈ
ÀÛ¾÷À» ÇÏÁö ¾ÊÀ» ¼ö´Â ÀÖÁö¸¸, ÀÌ °æ¿ì¿¡´Â ÃÖÀûȸ¦ ÇÏÁö ¾Ê´Â µð¹ö±×
ºôµå³ª, ÀζóÀÎ ÇÔ¼ö¸¦ Áö¿øÇÏÁö ¾Ê´Â Watcom°ú °°Àº ÄÄÆÄÀÏ·¯¿¡¼´Â
½ÇÆÐÇÒ °æ¿ì°¡ ¸¹À» °ÍÀÔ´Ï´Ù.
-
ÀζóÀÎ ¾î¼Àºí·¯¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À! (À̰ÍÀº ¸Å¿ì ¸í¹éÇÕ´Ï´Ù). ¹Ýµå½Ã
¾î¼Àºí¸®¾î·Î ÀÛ¼ºÇÏ¿©¾ß ÇÑ´Ù¸é, C·Î ÇÁ·ÎÅäŸÀÔ ¹öÀüÀ» ¸ÕÀú ¸¸µé°í ³ª¼
ÃÖÀûÈµÈ ¾î¼Àºí¸®¾î ¹öÀüÀ» ½ÃÀÛÇϱâ Àü¿¡ ÁÖ¼®¹®À¸·Î ¸¸µå½Ê½Ã¿À.
ÀÌ·¸°Ô Çϸé, ³ªÁß¿¡ ´Ù¸¥ Ç÷§Æû¿¡¼ µ¿ÀÛÇϵµ·Ï ÇÏ°í ½ÍÀº °æ¿ì¿¡,
¾î¼Àºí¸®¾î ºÎºÐÀ» ÁÖ¼®¹®À¸·Î ¹°í, ¿ø·¡ÀÇ C ¹öÀüÀ» º¹±¸Çϸé, ¸ðµç °ÍÀ»
ÀçÀÛ¼ºÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¾î¼Àºí¸®¾î Äڵ带 C ¼Ò½º¿¡¼ ÀζóÀÎÀ¸·Î ÀÛ¼ºÇÏ´Â
°ÍÀÌ ¾Æ´Ï¶ó, ¿ÜºÎÀÇ .s ÆÄÀÏ·Î ÀÛ¼ºÇÏ¿© NASM µîÀ» ÀÌ¿ëÇϵµ·Ï ÇÑ´Ù¸é,
º¸´Ù À̽ÄÇϱ⠽¬¿ö Áö´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¾ÆÁ÷ Ç÷§Æû »çÀÌÀÇ
Â÷ÀÌÁ¡ÀÌ Á¸ÀçÇϰí ÀÖÁö¸¸ (¿¹¸¦ µé¾î, djgpp¿¡¼´Â ½Éº¼ À̸§ ¾Õ¿¡ ¹ØÁÙÀÌ
ºÙÁö¸¸ ¸®´ª½º¿¡¼´Â ±×·¸Áö ¾Ê½À´Ï´Ù), ÀÌ·± ¹®Á¦Á¡Àº ¸î°¡Áö Àüó¸®
¸ÅÅ©·Î¸¦ »ç¿ëÇÏ¿© ÇØ°áµÉ ¼ö ÀÖ½À´Ï´Ù. ¿ÜºÎÀÇ ¾î¼Àºí¸®¾î ¼Ò½º ÆÄÀÏÀ»
djgpp¿Í ÀÎÅÚ ¸®´ª½º, ÀÎÅÚ BeOS Ç÷§Æû¿¡¼ °øÀ¯ÇÏ´Â °ÍÀº ¸Å¿ì °£´ÜÇÑ
ÀÏÀ̸ç, Allegro´Â ½ÉÁö¾î °°Àº ¼Ò½º¸¦ MSVC¿Í Watcom¿¡¼µµ »ç¿ëÇϵµ·Ï
ÇÕ´Ï´Ù! À̰ÍÀº »õ·Î¿î ÄÄÆÄÀÏ·¯°¡ Àû¿ëµÉ ¶§¸¶´Ù ¸ðµÎ »õ·Î ÀÛ¼ºÇÏ¿©¾ß ÇÏ´Â
ÀζóÀÎ ¾î¼Àºí·¯¿¡ ºñÇØ ¸Å¿ì ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ÇÏÁö¸¸ ÀÎÅÚÀÇ ¾î¼Àºí¸®¾î´Â
PPC, MIPS, Alpha ÇÁ·Î¼¼¼¿¡¼´Â ¿Ã¹Ù¸£°Ô µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀ̹ǷÎ
ÁøÁ¤À¸·Î ÀÌ½Ä °¡´ÉÇϱ⿡´Â ¾ÆÁ÷ ¸Å¿ì ºÎÁ·ÇÑ °ÍÀÓ¿¡´Â Ʋ¸² ¾ø½À´Ï´Ù :-)
-
C++·Î ÀÛ¼ºÇÏ´Â °æ¿ì¿¡´Â Á¶½ÉÇÏ¿©¾ß ÇÕ´Ï´Ù. ¸ðµç ÄÄÆÄÀÏ·¯°¡ ¾ÆÁ÷±îÁö
Àüü ¾ð¾î ½ºÆåÀ» Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï¹Ç·Î, ƯÈ÷ »õ·Î¿î ¾ð¾î Ư¼º°ú °ü·ÃµÈ
³»¿ë¿¡ ´ëÇÏ¿© ÁÖÀÇÇϽʽÿÀ. À̸§ ¿µ¿ª°ú ¿¹¿Ü 󸮴 ƯÈ÷ ¹®Á¦°¡ ¸¹Àº
°ÍÀÌÁö¸¸, ÅÛÇø®Æ® ÀνºÅϽºµµ ¾î¶² ½Ã½ºÅÛ¿¡¼´Â ´Ù¸£°Ô µ¿ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
½Ã°£ÀÌ Áö³ª¸é ÀÌ·¯ÇÑ ¹®Á¦µéÀÌ Á¡Â÷ ÇØ°áµÉ °ÍÀ̰í, 2³â Àüº¸´Ù ÇöÀç°¡
ÈξÀ ´ú ¾î»öÇØ Á³Áö¸¸, C++ÀÇ ¿ø·¡ Çٽɸ¸À» »ç¿ëÇÑ´Ù¸é (Ŭ·¡½º, »ó¼Ó,
°¡»ó ÇÔ¼ö µî) ´õ¿í À̽ļºÀÌ ³ô¾ÆÁú °ÍÀÔ´Ï´Ù.
-
ÄÄÆÄÀÏ·¯ÀÇ ¾ö°ÝÇÑ °æ°í ¸ðµå(strict warning mode)¸¦ ÄÑ°í ³ª¿À´Â ¸ðµç
¸Þ½ÃÁö¸¦ »ìÆì º¸µµ·Ï ÇϽʽÿÀ. Á¾Á¾ ÇϳªÀÇ Ç÷§Æû¿¡¼ÀÇ °æ°í°¡ ´Ù¸¥
Ç÷§Æû¿¡¼ ¿¡·¯°¡ µÇ´Â °æ¿ì°¡ ÀÖÀ¸¸ç, À̰ÍÀ» ÇØ°áÇß´Ù°í ÇÏ¿©µµ
ÄÄÆÄÀÏ·¯ °æ°í´Â Àǽɽº·¯¿î ÄÚµåÀÇ ½ÅÈ£À̹ǷΠÇ×»ó Á¤Á¤µÉ °¡Ä¡°¡ ÀÖ½À´Ï´Ù.
-
µð¹ö±ë ¹öÀüÀÇ Allegro ¶óÀ̺귯¸®´Â ¹®Á¦ÀÇ ¼ÒÁö°¡ ÀÖ´Â ºÎºÐ¿¡ ´ëÇÑ °æ°í¸¦
Á¦°øÇÏ´Â ¸î°¡Áö Ãß°¡ Á¡°Ë ±â´ÉÀ» Æ÷ÇÔÇϰí ÀÖÀ¸¹Ç·Î, µð¹ö±ë ¹öÀüÀÇ
¶óÀ̺귯¸®¸¦ ¸µÅ©ÇϽʽÿÀ. ÇÏÁö¸¸ µð¹ö±ë ¹öÀüÀº ¸Å¿ì ´À¸®¹Ç·Î ÃÖÁ¾
ÇÁ·Î±×·¥À» °ø°³Çϱâ Àü¿¡ ÃÖÀûÈµÈ ¶óÀ̺귯¸®·Î ±³Ã¼ÇÏ´Â °ÍÀ» ÀØÁö´Â
¸¶½Ê½Ã¿À.
-
¸î°¡Áö ÄÄÆÄÀÏ·¯¿¡¼´Â char º¯¼ö°¡ ºÎÈ£°¡ ÀÖ´Â °ªÀ̸ç, ¾î¶² ÄÄÆÄÀÏ·¯¿¡¼´Â
ºÎÈ£ ¾ø´Â °ªÀÌ µË´Ï´Ù. À̰Ϳ¡ ´ëÇØ ´Ù·ç·Á¸é (Áï, ¼öÇÐ °è»êÀ» Çϰųª
1¹ÙÀÌÆ®¿¡ À½¼ö °ªÀ» ÀúÀåÇÏ·Á¸é), º¯¼öÇüÀ» signed char³ª unsigned char·Î
Ç×»ó ¸í½ÃÇÏ¿© ÁÖ¾î¾ß ÇÕ´Ï´Ù. short, int, long º¯¼ö´Â ´Ù¸£°Ô ÁöÁ¤ÇÏÁö
¾Ê´Â ÀÌ»ó ºÎÈ£ ÀÖ´Â °ªÀÌ µÇ¹Ç·Î, ±×³É »ç¿ëÇÏ¿©µµ ¹®Á¦°¡ ¾ø½À´Ï´Ù.
-
½ºÅÃÀÌ °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ¿© µ¿ÀûÀ¸·Î È®ÀåµÇ´Â À¯´Ð½º¿Í´Â ´Þ¸®,
µµ½º ÄÄÆÄÀÏ·¯ (À©µµ¿ìÁî¿ëµµ ¸¶Âù°¡ÁöÀÏ °ÍÀ¸·Î »ý°¢ÇÏÁö¸¸)´Â Á¦ÇÑµÈ ½ºÅÃ
»çÀÌÁ °®°í ÀÖÀ½À» ±â¾ïÇϽʽÿÀ. ±×·¯¹Ç·Î ½ºÅÿ¡ Ä¿´Ù¶õ Áö¿ª ¹è¿À»
¼±¾ðÇÏÁö ¸¶½Ê½Ã¿À: ¸®´ª½º¿¡¼´Â µ¿ÀÛÇϰÚÁö¸¸ ´Ù¸¦ °÷¿¡¼´Â ±×·¸Áö
¾Ê½À´Ï´Ù.
-
À©µµ¿ìÁî¿¡¼ µµ½º ÇÁ·Î±×·¥À» °³¹ßÁßÀÎ °æ¿ì, ÀÚÁÖ ±ú²ýÇÑ µµ½º ¸ðµå¿¡¼
CWSDPMI¸¦ DPMI ¼¹ö·Î »ç¿ëÇÏ¿© µ¿ÀÛÇϴ°¡¸¦ Å×½ºÆ®ÇÏ¿©¾ß ÇÕ´Ï´Ù.
À̰ÍÀº CWSDPMI°¡ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® DPMI ±¸Çö¿¡¼ ºüÆ®¸° ¸î°¡Áö DPMI 1.0
ÇÔ¼ö¸¦ Áö¿øÇϸç, À̰ÍÀÌ djgpp°¡ NULL Æ÷ÀÎÅÍ ÂüÁ¶¸¦ Á¦°ÅÇÏ·Á´Â °æ¿ì¿¡
¸Þ¸ð¸® ¾ï¼¼½º ¿¡·¯¸¦ À¯¹ßÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
À©µµ¿ìÁî¿¡¼ ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇÏÁö¸¸ CWSDPMI¿¡¼´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é,
ºÐ¸í ¸î°¡Áö Æ÷ÀÎÅÍ ¹ö±×°¡ ÀÖÀ» °ÍÀ̸ç, Â÷ÈÄ¿¡ ´õ¿í ÁÁÁö ¾ÊÀº »óȲÀ»
¸¸µé ¼ö ÀÖÀ¸¸ç, ´Ù¸¥ Ç÷§ÆûÀ¸·Î Äڵ带 À̽ĽÃų ¶§ ³¡¾ø´Â È¥¶õÀ»
À¯¹ßÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ¹Ýµå½Ã °íÃÄ ÁÖ¾î¾ß ÇÕ´Ï´Ù.
-
ÄÄÆÄÀÏ·¯°¡ ±¸Á¶Ã¼¸¦ ¸Þ¸ð¸®¿¡ ¹èÄ¡ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ °¡Á¤À» ÇÏÁö ¸¶½Ê½Ã¿À.
¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ °æ¿ì:
typedef struct MYSTRUCT
{
char a;
short b;
int c;
};
sizeof(MYSTRUCT)°¡ 7ÀÌ µÉ °ÍÀ¸·Î ¿¹»óÇÒ ¼ö ÀÖ°ÚÁö¸¸, ½ÇÁ¦·Î ´ëºÎºÐÀÇ
ÀÎÅÚ ÄÄÆÄÀÏ·¯´Â 8¹ÙÀÌÆ®·Î ¸¸µé °ÍÀÔ´Ï´Ù. ¶ÇÇÑ 12¹ÙÀÌÆ®ÀÇ ¿µ¿ªÀ»
Â÷ÁöÇÏ°Ô µÇ´Â °æ¿ìµµ ¸¹À¸¸ç, ¹Ì·¡ÀÇ 64ºñÆ® Ç÷§ÆûÀº int º¯¼ö¸¦
¿¹»óÇÏ´Â °Íº¸´Ù µÎ¹è·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î ÀÌ¿Í °°Àº º¯µ¿
°¡´ÉÇÑ »çÇ×À» »ç¿ëÇÏ´Â ÄÚµåÀÇ »ç¿ëÀº ÇÇÇϵµ·Ï ÇÏ¿©¾ß Çϸç,
µ¥ÀÌÅÍ ±¸Á¶Ã¼¸¦ À§ÇÑ °ø°£À» ÇÒ´çÇÒ ¶§¿¡ ¹Ýµå½Ã sizeof()¸¦ »ç¿ëÇÏ¿©¾ß
ÇÕ´Ï´Ù.
-
fread()³ª pack_fread() ÇÔ¼ö¸¦ ´ÜÀÏ ¹ÙÀÌÆ® ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ½ºÆ¼¸²ÀÌ ¾Æ´Ñ
´Ù¸¥ °ÍÀ» ·ÎµùÇϴµ¥ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ¸¶Âù°¡Áö·Î fwrite()³ª
pack_fwrite()¸¦ ´ÜÀÏ ¹ÙÀÌÆ® µ¥ÀÌÅÍ ÀÌ¿ÜÀÇ °ÍÀ» ÀúÀåÇϴµ¥ »ç¿ëÇÏÁö
¸¶½Ê½Ã¿À. ±×·¸Áö ¾ÊÀ» °æ¿ì, ÀúÀåµÈ ÆÄÀÏÀº ÄÄÆÄÀÏ·¯ÀÇ ¸Þ¸ð¸® ±¸Á¶Ã¼
»ý¼º ¹æ½Ä¿¡ µû¶ó ¹Ù²î°Ô µÉ °ÍÀ̸ç, ÇÁ·Î¼¼¼ÀÇ ¿£µð¾È ¹æ½ÄÀÌ ´Ù¸¥
½Ã½ºÅÛ¿¡ ´ëÇÏ¿© À̽ÄÀÌ µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÀÌ½Ä °¡´ÉÇÑ
¹æ½ÄÀ¸·Î ÀÐÀ¸·Á¸é, °¢ 16ºñÆ®, 32ºñÆ® °ªÀ» Â÷·Ê·Î pack_igetw()¿Í
pack_igetl() (µð½ºÅ© ÆÄÀÏ Æ÷¸ËÀÇ ¿£µð¾È ¹æ½Ä¿¡ µû¶ó¼´Â pack_mgetw()¿Í
pack_mgetl())À» »ç¿ëÇÏ¿© Àü´ÞÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. AllegroÀÇ src/bmp.c
ÆÄÀÏÀº ¿Ã¹Ù¸£°Ô ÀÌ ÀÏÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ´Â ¾ÆÁÖ ÁÁÀº ¿¹ÀÔ´Ï´Ù.
-
AllegroÀÇ dat2s À¯Æ¿¸®Æ¼´Â asm ¼Ò½º ÆÄÀÏÀ» »ý¼º½ÃÄÑ ÀüÇô ´Ù¸¥ asm
¹®¹ýÀ» »ç¿ëÇÏ´Â Ç÷§Æû¿¡¼´Â µ¿ÀÛÇÏÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖÀ¸¹Ç·Î,
ÀÌ½Ä °¡´ÉÇÑ Äڵ忡¼´Â »ç¿ëÇÏ´Â °ÍÀ» ÇÇÇÏ¿©¾ß ÇÕ´Ï´Ù (C ÄÚµå
Ãâ·ÂÀ̶ó¸é ÈξÀ ´õ À̽ļºÀÌ ³ôÀ» °ÍÀÌÁö¸¸, gcc³ª MSVC ¸ðµÎ ÃʱâȵÈ
Ä¿´Ù¶õ ¹è¿À» Æ÷ÇÔÇÏ´Â C ¼Ò½º¸¦ ÄÄÆÄÀÏÇÒ ¼ö ¾øÀ¸¹Ç·Î, ½ÇÁ¦·Î´Â
¹Ýµå½Ã ±×·¸Áö¸¸Àº ¾Ê½À´Ï´Ù). ÀÌ»óÇϰԵµ exedat À¯Æ¿¸®Æ¼´Â ´Ù¸¥
Ç÷§Æûµé¿¡¼ ÈξÀ ´õ ½Å·Ú¼ºÀÖ°Ô µ¿ÀÛÇÏ´Â °ÍÀ¸·Î º¸À̹ǷÎ,
µ¥ÀÌÅÍ ¸®¼Ò½º¸¦ ½ÇÇà ÆÄÀÏ¿¡ ÇÕÄ¡´Â °æ¿ì ù¹øÂ° À̽ÄÀ» À§ÇÑ È£ÃâÀÌ
µÉ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ À̽ļºÀÌ °¡Àå Áß¿äÇÑ °æ¿ì¶ó¸é, °¡Àå ¾ÈÀüÇÑ
¹æ¹ýÀº ÀÌµé ¸ðµÎ¸¦ »ç¿ëÇÏÁö ¾Ê°í ¿ÜºÎ ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ Àеµ·Ï
ÇÏ´Â °ÍÀÔ´Ï´Ù.
-
µµ½º¿¡¼ ÆÄÀÏ À̸§Àº 8.3 Çü½ÄÀ̸ç, ´ë¼Ò¹®ÀÚ ±¸º°ÀÌ ¾ø½À´Ï´Ù.
À©µµ¿ìÁî¿¡¼´Â ´õ ±ä ÆÄÀÏÀ̸§À» »ç¿ëÇÏ¸ç ´ë¼Ò¹®ÀÚ°¡ À¯ÁöµÇµµ·Ï
±â¾ïµÇÁö¸¸ ´ë¼Ò¹®ÀÚ°¡ ´Ù¸£°Ô ÀνĵÇÁö´Â ¾ÊÀ¸¹Ç·Î, "MyFile"Àº
"myfILe"°ú °°Àº °ÍÀÔ´Ï´Ù. À¯´Ð½º¿¡¼´Â ±ä ÆÄÀÏ À̸§À» »ç¿ëÇÒ
¼ö ÀÖÀ¸¸ç, ´ë¼Ò¹®ÀÚµµ ±¸º°ÇÏ¿© »ç¿ëÇϹǷÎ, "MyFile"°ú "myfILe"Àº
¿ÏÀüÈ÷ ´Ù¸¥ °ÍÀÔ´Ï´Ù. À̽ļºÀÌ À¯ÁöµÇ±â¸¦ ¹Ù¶õ´Ù¸é
8.3 Æ÷¸ËÀÇ ¼Ò¹®ÀÚ À̸§¸¸À» »ç¿ëÇϰí, Á¤±Ô ¾ËÆÄºª ¹®ÀÚ ÀÌ¿ÜÀÇ
°ÍÀº »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ÀÌ·¯ÇÑ À̸§Àº ¾î´À °÷¿¡¼³ª µ¿ÀÛµÉ
°ÍÀÓÀ» È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
-
µµ½º¿Í À©µµ¿ìÁî´Â '\'¸¦ ÆÄÀÏ ÆÐ½ºÀÇ ±¸ºÐÀÚ·Î »ç¿ëÇÏÁö¸¸, '/'µµ
ÀνÄÇÕ´Ï´Ù. À¯´Ð½º´Â ¿ÀÁ÷ '/'¸¸À» »ç¿ëÇϹǷÎ, À̽ļºÀ» º¸ÀåÇÏ·Á¸é
Ç×»ó '/'¸¦ »ç¿ëÇÏ¿©¾ß ÇÒ °ÍÀÔ´Ï´Ù.
-
ÆÄÀÏ À̸§À» Á¶ÀÛÇÏ´Â °æ¿ì, ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â ¿ÏÀüÈ÷ ´Ù¸¥ Àǹ̰¡
µÉ ¼öµµ ÀÖÀ¸¹Ç·Î, Á¶½ÉÇÏ¿©¾ß ÇÕ´Ï´Ù. Allegro´Â ÀÌ·¯ÇÑ ÀÛ¾÷À»
À§ÇØ ´Ù¸¥ Ç÷§Æû¿¡¼ÀÇ ¾à°£ÀÇ Â÷ÀÌ¿¡ ¿µÇâ¹ÞÁö ¾Ê´Â
fix_filename_case(), fix_filename_path()¿Í °°Àº ¸î°¡Áö ÇÔ¼ö¸¦
Á¦°øÇÕ´Ï´Ù.
-
´ëºÎºÐÀÇ µµ½º¿Í À©µµ¿ìÁî ÄÄÆÄÀÏ·¯´Â ¿ÍÀϵåÄ«µå Ä¿¸Çµå¶óÀÎ Àμö¸¦
ÇÁ·Î±×·¥¿¡ ±×´ë·Î Àü´ÞÇÒ °ÍÀÌÁö¸¸, À¯´Ð½º¿¡¼´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â
Á¯¿¡ ¼Ð¿¡ ÀÇÇØ ¿ÍÀϵåÄ«µå°¡ µ¶¸³Àû ÆÄÀÏÀÇ ¸®½ºÆ®·Î È®ÀåµË´Ï´Ù.
djgpp¿¡¼´Â __crt0_glob_function()À¸·Î ¿ÍÀϵåÄ«µå ÀÚµ¿ È®Àå ±â´ÉÀ»
¿À¹ö¶óÀ̵åÇÏÁö ¾Ê´Â´Ù¸é, À¯´Ð½º ¼ÐÀÇ ±â´ÉÀ» ¿¡¹Ä·¹ÀÌÆ®ÇÕ´Ï´Ù.
ÀÌ½Ä °¡´ÉÇÑ ÇÁ·Î±×·¥Àº ¹Ýµå½Ã ¿ÍÀϵåÄ«µå Àμö°¡ È®ÀåµÇ¾î Àü´ÞµÇ°Å³ª
±×´ë·Î Àü´ÞµÇ´Â °Í¿¡ °ü°è ¾øÀÌ µ¿ÀÛÇÏ¿©¾ß ÇϹǷÎ, µÎ°¡Áö °æ¿ì
¸ðµÎ¿¡ ´ëºñÇÏ¿© ¼³°èµÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, dat À¯Æ¿¸®Æ¼´Â
À¯´Ð½º ¼Ð ¹æ½ÄÀÇ ÆÄÀÏ ¸®½ºÆ®¸¦ Àü´Þ¹ÞÀ» ¼ö ÀÖµµ·Ï ±¸¼ºµÇ¾úÁö¸¸,
³»ºÎÀûÀ¸·Î for_each_file()À» °¢ Àμö¿¡ ´ëÇÏ¿© È£ÃâÇÏ¿© ¿ÍÀϵåÄ«µå°¡
±×´ë·Î Àü´ÞµÈ °æ¿ì¿¡µµ È®ÀåÀÌ ÀϾµµ·Ï ÇÕ´Ï´Ù.
-
µµ½º¿Í À©µµ¿ìÁî¿¡¼´Â ÇÁ·Î±×·¥ÀÌ ÇϳªÀÇ µð·ºÅ丮¿¡ ¼³Ä¡µÇ´Â °æÇâÀÌ ÀÖÁö¸¸,
À¯´Ð½º¿¡¼´Â ´ÙÁß »ç¿ëÀÚ È¯°æÀ» ÀνÄÇÏ¸ç ÆÄÀÏ ±¸Á¶ Ç¥ÁØ(FHS)À» µû¸£´Â
ÇÁ·Î±×·¥À» ½Ã½ºÅÛ °ü¸®ÀÚ°¡ ¼±È£ÇÒ °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº
http://www.pathname.com/fhs/¿¡¼
Àо ¼ö ÀÖÁö¸¸, ´ÙÀ½°ú °°ÀÌ ¿ä¾àÇÒ ¼ö ÀÖ½À´Ï´Ù:
°¡Àå Áß¿äÇÑ °ÍÀº, Àбâ Àü¿ë µ¥ÀÌÅÍ, Àü¿ª °¡º¯ µ¥ÀÌÅÍ, »ç¿ëÀÚ °ü·Ã µ¥ÀÌÅ͸¦
±¸ºÐÇÏ´Â °ÍÀÔ´Ï´Ù. ´©±º°¡°¡ ´ç½ÅÀÇ °ÔÀÓÀ» ´Ù¿î·ÎµåÇÏ¿© ¾ÐÃàÀ» Ç®°í
ÄÄÆÄÀÏÇÏ¿© ½ÇÇà½ÃŲ´Ù°í °¡Á¤ÇÏ´Â °æ¿ì, ±×°ÍÀÌ ¼³Ä¡µÈ µð·ºÅ丮¸¦
°ÔÀÓÀÌ ÀüÇô ¼öÁ¤ÇÏÁö ¾Ê¾Æ, µð·ºÅ丮°¡ Àбâ Àü¿ëÀ¸·Î ¸¶¿îÆ®µÉ ¼ö ÀÖ´Ù¸é
¹®Á¦°¡ ¾ø½À´Ï´Ù. ÇÏÀ̽ºÄÚ¾î Å×À̺í°ú °°Àº °¡º¯ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ·Á¸é,
À̰ÍÀ» /var/games µð·ºÅ丮¿¡ ³ÖÀ¸½Ê½Ã¿À (¶Ç´Â ¸¹Àº ÆÄÀÏÀ» ÀúÀå½ÃŰ´Â
°ÍÀÌ ÇÊ¿äÇÑ °æ¿ì /var/games/mygame ¼ºêµð·ºÅ丮¸¦ »ý¼º½ÃŰ°í µ¥ÀÌÅ͸¦
±×°÷¿¡ ÀúÀåÇϽʽÿÀ). °°Àº ½Ã½ºÅÛ¿¡ ¸¹Àº »ç¿ëÀÚ°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç,
°°Àº ÀúÀåµÈ Á¤º¸¸¦ °øÀ¯ÇÒ ¼öµµ ÀÖÀ½À» ÀØÁö ¸¶½Ê½Ã¿À! ÇöÀç »ç¿ëÀÚ¿¡
ÇÑÁ¤µÇ´Â ¾î¶² °ÍÀ̵ç (°ÔÀÓ ÆÄÀÏ ÀúÀåÀ̳ª ÄÁÆ®·Ñ·¯ ¼³Á¤ µî) HOME ȯ°æ
º¯¼ö¸¦ Àоî ãÀ» ¼ö ÀÖ´Â (¿¹: char *mydir = getenv("HOME")) »ç¿ëÀÚÀÇ È¨
µð·ºÅ丮¿¡ ÀúÀåÇÏ¿©¾ß ÇÕ´Ï´Ù. ¿ª½Ã, ¸¹Àº ÆÄÀÏÀ» ÀúÀåÇÒ Çʿ䰡 ÀÖ´Ù¸é,
¼ºêµð·ºÅ丮¸¦ Á÷Á¢ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÁß »ç¿ëÀÚ È¯°æ¿¡¼ °ÔÀÓÀÌ µ¿ÀÛÇϵµ·Î°í Çϱ⿡´Â À̰ÍÀ¸·Î ÃæºÐÇÏÁö¸¸,
Á¤¸»·Î ¾Æ¸§´Ù¿î ¼³Á¤À» ¿øÇÑ´Ù¸é (¿¹¸¦ µé¾î, Á¤±Ô ÄÄÆÄÀÏ ±ÔÄ¢°ú ÇÔ²²
"make install"À» Á¦°øÇÏ·Á¸é), ´ÙÀ½ÀÇ Àå¼Ò¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù:
´ëºÎºÐÀÇ ¹ÙÀ̳ʸ®´Â /usr/local/bin¿¡ ÀúÀåµÇÁö¸¸, °ÔÀÓÀº
/usr/local/games¿¡ ÀúÀåµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ µð·ºÅ丮´Â ÇöÀç ½Ã½ºÅÛ¿¡¼
»ç¿ëÀÚ¿¡ ÀÇÇØ Á÷Á¢ ½ÇÇà½Ãų ¼ö ÀÖ´Â ½ÇÇàÆÄÀÏ ÀÚü¸¸À» À§ÇÑ °÷ÀÔ´Ï´Ù.
°øÀ¯ ¶óÀ̺귯¸®¿Í ´Ù¸¥ ½ÇÇà ÄÚµå´Â /usr/local/lib¿¡ ÀúÀåµË´Ï´Ù.
ÀÌ µð·ºÅ丮ÀÇ ³»¿ëÀº ¿ª½Ã ÇϳªÀÇ ½Ã½ºÅÛ¿¡ ´ëÇÑ °ÍÀÌÁö¸¸, »ç¿ëÀÚ´Â
À̰ÍÀ» Á÷Á¢ ½ÇÇà½ÃŰÁö´Â ¾Ê½À´Ï´Ù (¿¹¸¦ µé¾î, Allegro °øÀ¯ ¶óÀ̺귯¸®´Â
À̰÷¿¡ ÀúÀåµË´Ï´Ù).
½ÇÇàÆÄÀÏÀÌ ¾Æ´Ñ ¸®¼Ò½º´Â /usr/local/share/¿¡ ÀúÀåµÇ°Å³ª, °ÔÀÓ¿¡ ´ëÇÏ¿©´Â,
/usr/local/share/games/ ÀúÀåµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮´Â ¾î¶°ÇÑ Å¸ÀÔÀÇ
ÄÄÇ»ÅÍ¿¡¼ °ÔÀÓÀÌ ½ÇÇàµÇ¾îµµ µ¿ÀÏÇÏ°Ô À¯ÁöµÇ´Â Á¤º¸°¡ ÀúÀåµÇ´Â °ÍÀÔ´Ï´Ù.
±×·¯¹Ç·Î i386 ½Ã½ºÅÛ°ú Alpha ¹Ú½º, PPC ½Ã½ºÅÛÀÌ È¥¿ëµÇ´Â ³×Æ®¿öÅ©¿¡¼
»ç¿ëµÇ´Â °æ¿ì, °°Àº µ¥ÀÌÅ͸¦ ¸ðµç Çϵå¿þ¾î¿¡¼ ³×Æ®¿öÅ©¸¦ ÅëÇØ
¸¶¿îÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. Çϳª ÀÌ»óÀÇ ÆÄÀÏÀ» ÀúÀåÇÏ¿©¾ß ÇÑ´Ù¸é
¼ºêµð·ºÅ丮¸¦ ¸¸µé¾î ±×°÷¿¡ ¸ðµÎ ÀúÀåÇϽʽÿÀ.
-
ƯÁ¤ µå¶óÀ̹ö À̸§À» ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ¿¹¸¦ µé¾î, GFX_VESA2LÀº
À©µµ¿ìÁî ¹öÀü¿¡´Â ¾øÀ¸¸ç, MIDI_WIN32´Â ¸®´ª½º¿¡¼´Â »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
¸Å¿ì Ưº°ÇÑ È¯°æ (¿¹¸¦ µé¾î, ¼Â¾÷ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °æ¿ì :-)À» Á¦¿ÜÇϰí´Â
Ç×»ó ÀÚµ¿ °ËÃâ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÏ¿©¾ß Çϸç, »ç¿ëÀÚ°¡ ¼Â¾÷ ÇÁ·Î±×·¥À»
»ç¿ëÇϰųª ¼³Á¤ ÆÄÀÏÀ» ¼öÁ¤ÇÏ¿© ÀÚµ¿ °ËÃâÀ» ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖµµ·Ï
ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. À̽ļº °ü·ÃµÈ ³»¿ëÀ» Á¦Ãĵδõ¶óµµ, µå¶óÀ̹ö ¼±ÅÃÀ»
ÇϵåÄÚµùÇÏ´Â °ÍÀº ¸ðµç »ç¶÷ÀÌ µ¿ÀÏÇÑ Çϵå¿þ¾î¸¦ »ç¿ëÇÏ´Â °ÍÀº ¾Æ´Ï¹Ç·Î
ÁÁÁö ¾ÊÀº »ý°¢ÀÔ´Ï´Ù. ƯÁ¤ ±×·¡ÇÈ µå¶óÀ̹ö°¡ ´ç½ÅÀÇ ½Ã½ºÅÛ¿¡¼
°¡Àå Àß µ¿ÀÛÇÑ´Ù°í ÇÏ´õ¶óµµ ´Ù¸¥ »ç¶÷ÀÇ ½Ã½ºÅÛ¿¡¼´Â µ¿ÀÛÇÏÁö ¾ÊÀ»
¼öµµ ÀÖ½À´Ï´Ù.
-
ƯÁ¤ Çϵå¿þ¾î µå¶óÀ̹ö¿¡ ÀÇÁ¸Çϴ Ưº°ÇÑ Äڵ带 ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì¿¡´Â
ÇöÀç Ç÷¡Æû¿¡¼ »ç¿ë °¡´ÉÇѰ¡¸¦ Å×½ºÆ®ÇÏ´Â Àü󸮸¦ »ç¿ëÇϽʽÿÀ.
¿¹¸¦ µé¾î, ¸ðµå-X ±×·¡ÇÈ ¸ðµå¿Í ´Ù¸¥ ±×·¡ÇÈ ¸ðµå¿¡¼ ¼·Î ´Ù¸¥ ÀÏÀ»
ÇÏ´Â ·çƾÀ» ÀÛ¼ºÇÏ°í ½Í´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:
#ifdef GFX_MODEX
if (gfx_driver->id == GFX_MODEX) {
/* ¸ðµå-X ±×·¡ÇÈ ¸ðµå¸¦ À§ÇÑ ÀÛ¾÷À» ÇϽÿÀ */
}
else
#endif
{
/* ÀϹÝÀûÀÎ ±×·¡ÇÈ ¸ðµå¸¦ À§ÇÑ ÀÛ¾÷À» ÇϽÿÀ */
}
¸ðµå-X µå¶óÀ̹ö°¡ ÇöÀç Ç÷§Æû¿¡¼ Áö¿øµÇÁö ¾Ê´Â °æ¿ì, ÀÌ ÄÚµå´Â
¸ðµå-X ·çƾÀ» ÄÄÆÄÀÏÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀº ¸ðµå-X°¡
Áö¿øµÇ°Å³ª Áö¿øµÇÁö ¾ÊÀ» ¼ö ÀÖ´Â ¸®´ª½º¿Í °°Àº ½Ã½ºÅÛ¿¡¼
¼³Á¤ ½ºÅ©¸³Æ®ÀÇ ¿É¼Ç¿¡ µû¶ó ÀûÀÀµÉ °ÍÀ̹ǷÎ, Ç÷§Æû ÀÚü¸¦
üũÇÏ´Â °Íº¸´Ù ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.
-
320x200, 640x480, 800x600°ú °°Àº Ç¥ÁØ ½ºÅ©¸° ÇØ»óµµ¸¸À» »ç¿ëÇϽʽÿÀ
(512x384, 640x400°ú °°ÀÌ ¸ðµç Çϵå¿þ¾î¿¡¼ Áö¿øÇÏÁö´Â ¾Ê´Â ¸ðµå´Â »ç¿ëÇÏÁö
¸¶½Ê½Ã¿À). ÃÖÀûÈµÈ À̽ļºÀ» À§Çؼ´Â, ÇϳªÀÇ ÇØ»óµµ°¡ µ¿ÀÛÇÏÁö ¾ÊÀ»
°Í¿¡ ´ëºñÇÏ¿©, ¼·Î ´Ù¸¥ µÎ °³ÀÇ ÇØ»óµµ¸¦ Áö¿øÇϵµ·Ï ÁغñÇϽʽÿÀ.
-
ÇÁ·Î±×·¥¿¡¼ ÇÏÀÌÄ÷¯³ª Æ®·çÄ÷¯ ¸ðµå¸¦ »ç¿ëÇÏ´Â °æ¿ì (Áï, 8ºñÆ® Ä÷¯
¸ðµå ÀÌ»óÀÇ ¾î¶² °ÍÀ̳ª), °¡´ÉÇÑ ¸ðµç ÇÏÀÌÄ÷¯¿Í Æ®·çÄ÷¯ ¸ðµå¸¦ Áö¿øÇÏ¿©¾ß
ÇÕ´Ï´Ù. ¸ðµç ½Ã½ºÅÛÀÌ ¸ðµç Ä÷¯ ¸ðµå¸¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´ÏÁö¸¸, Allegro´Â
´ÙÁß Ä÷¯ ¸ðµå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ´Ü¼øÇÏ°Ô ÇϹǷÎ, Àû¾îµµ 15, 16, 24, 32ºñÆ®
Ä÷¯ ÁßÀÇ Çϳª°¡ °¡´ÉÇÒ °ÍÀ¸·Î È®½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀúÇØ»óµµ ¸ðµåÀÇ ¿¹¿Ü:
¸¹Àº µµ½º µå¶óÀ̹ö´Â 640x480º¸´Ù ³·Àº ÇØ»óµµ¿¡¼´Â 8ºñÆ® Ä÷¯¸¸À»
Áö¿øÇÕ´Ï´Ù).
-
ÆäÀÌÁö Çø®Çΰú Æ®¸®Çà ¹öÆÛ¸µÀº ¸Å¿ì ÈǸ¢ÇÑ °ÍÀ̸ç, ȸ¸é¿¡ º¸ÀÌÁö ¾Ê´Â
vram¿¡ ÀúÀåµÈ ±×·¡ÇÈÀÇ Çϵå¿þ¾î °¡¼Ó ºí¸®ÆÃµµ ¸Å¿ì ÁÁ½À´Ï´Ù. ÇÏÁö¸¸
ÀÌ ¹æ¹ýµéÀº ¸Þ¸ð¸® ºñÆ®¸Ê¿¡ ±×·Á¼ ´Ü¼øÈ÷ ±× °á°ú¸¦ ½ºÅ©¸°¿¡ »Ñ¸®´Â
°Íº¸´Ù À̽ļºÀÌ ¸Å¿ì ¶³¾îÁý´Ï´Ù. º¸´Ù ÃÖÀûÈµÈ ¹æ½ÄÀ» »ç¿ëÇÏ°í ½ÍÀº
°æ¿ì¿¡´Â, Allegro µ¥¸ð °ÔÀÓ°ú exupdate ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÑ
°Í°ú °°ÀÌ, ´Ü¼øÇÑ ´õºí ¹öÆÛ¸µÀ» ÇÔ²² Áö¿øµÇ´Â ¿É¼ÇÀ¸·Î ±¸ÇöÇÒ °ÍÀ»
Á¦¾ÈÇÕ´Ï´Ù.
-
±×·¡ÇÈ ¸ðµå·Î ÀüȯÀº ÇÏÁö¸¸ ƯÁ¤ÇÑ ¸ðµå·Î ÇÑÁ¤ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â
(¿¹¸¦ µé¾î, ½ÇÁ¦ »ç¿ëÇÒ ÇØ»óµµ¸¦ ¼±ÅÃÇϱâ À§ÇÑ ´ÙÀ̾ó·Î±× ¹Ú½º·Ñ
Ç¥½ÃÇϱâ À§ÇØ), GFX_SAFE µå¶óÀ̹ö¸¦ »ç¿ëÇϽʽÿÀ. GFX_SAFE ¸ðµå¸¦
¿ä±¸Çϸé Allegro´Â ÇöÀç ½Ã½ºÅÛ¿¡¼ Áö¿øµÇ´Â ¾î¶°ÇÑ ¸ðµåÀÌ´ø °Ë»öÀ»
½ÃµµÇϸç, ¾î¶°ÇÑ ¸ðµåµµ ãÁö ¸øÇÑ °æ¿ì¿¡´Â (¹Ù¶ó°Ç´ë ¼³¸íÀûÀÎ :-)
¿¡·¯ ¸Þ½ÃÁö¿Í ÇÔ²² ÇÁ·Î±×·¥À» Á¾·áÇÒ °ÍÀ̹ǷÎ, ¿¡·¯¸¦ ½º½º·Î
°Ë»çÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
-
¸ðµç Ç÷§ÆûÀÌ AllegroÀÇ ¿ÜºÎ¿¡¼ ¾î¶°ÇÑ µ¶¸³ µ¿ÀÛÀ» Çϵµ·Ï µÇ¾î ÀÖÁö
¾ÊÀ½À» ±â¾ïÇϽʽÿÀ. ¿¹¸¦ µé¾î, À©µµ¿ìÁî ÇÁ·Î±×·¥Àº ÇϳªÀÇ À©µµ¿ì¸¦
¿±â Àü¿¡´Â Ãâ·ÂÀ» »ý¼ºÇϰųª Űº¸µå ÀÔ·ÂÀ» ÀÐÀ» ¼ö ¾øÀ¸¸ç, ¸¶Âù°¡Áö·Î
X ÇÁ·Î±×·¥ÀÇ stdoutÀº GUI ÀÎÅÍÆäÀ̽º ³»ºÎ¿¡¼ »ç¿ëµÈ °æ¿ì º¸ÀÌÁö ¾ÊÀ»
¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î Allegro ÀÔ·Â ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ±×·¡ÇÈ ¸ðµå¸¦
¼³Á¤ÇØ ÁÖ¾î¾ß Çϸç, printf()¸¦ È£ÃâÇÏÁö ¸»°í ±×·¡ÇÈ ¸ðµå ½ºÅ©¸°¿¡
¸ðµç Ãâ·ÂÀ» ±¸ÇöÇÏ¿©¾ß ÇÕ´Ï´Ù. ±×·¡ÇÈ ¸ðµå°¡ ¾Æ´Ñ °æ¿ì¿¡ ¸Þ½ÃÁö¸¦
Ãâ·ÂÇÒ Àý´ëÀûÀÎ Çʿ䰡 ÀÖ´Ù¸é, allegro_message() ÇÔ¼ö¸¦ »ç¿ëÇϽʽÿÀ.
À̰ÍÀº ¾î¶² Ç÷§Æû¿¡¼´Â printf()·Î ±¸ÇöµÇ¸ç, ´Ù¸¥ Ç÷§Æû¿¡¼´Â
¸Þ½ÃÁö ¹Ú½º·Î ±¸ÇöµË´Ï´Ù.
-
vsync() ÇÔ¼ö´Â À§ÇèÇϹǷΠÁß¿äÇÑ ºÎºÐ¿¡¼´Â »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ¸î°¡Áö
Ç÷§Æû (¿¹: ¸®´ª½º fbcon)Àº ÀÌ ±â´ÉÀ» ÀüÇô Áö¿øÇÏÁö ¾ÊÀ¸¸ç, ´Ù¸¥ Ç÷§Æû
(¿¹: ´Ù¾çÇÑ ºÎÀûÀýÇÏ°Ô ÀÛ¼ºµÈ µµ½º VESA µå¶óÀ̹öµé)Àº ¿Ã¹Ù¸£Áö ¸øÇϰÔ
Áö¿øÇÕ´Ï´Ù. ¶ÇÇÑ À̰ÍÀÌ ÀǵµµÈ ´ë·Î µ¿ÀÛÇÏ´Â °æ¿ì¿¡µµ ¸®Æ®·¹À̽º
¼Óµµ´Â ±×·¡ÇÈ Çϵå¿þ¾î¿Í »ç¿ëµÇ´Â µð½ºÇ÷¹ÀÌ ¸ðµå¿¡ µû¶ó ´Þ¶óÁö¹Ç·Î,
°ÔÀÓ ¼Óµµ¸¦ Á¦¾îÇÏ´Â ÁÁÀº ¹æ¹ýÀº ¾Æ´Õ´Ï´Ù. ¿øÇÑ´Ù¸é ±×¸®±â¸¦ ¸ð´ÏÅÍ¿Í
µ¿±â½Ã۱â À§ÇØ À̰ÍÀ» »ç¿ëÇϽʽÿÀ. ÇÏÁö¸¸ ¸î¸î ½Ã½ºÅÛ¿¡¼´Â È£Ãâ
Áï½Ã ¸®ÅÏµÇ¾î ¹ö¸®´Â °Í¿¡ ´ëºñÇÏ¿©¾ß ÇÕ´Ï´Ù. ¹ö±× ÀÖ´Â VESA ±¸Çö¿¡¼
½ÇÁ¦·Î µ¿ÀÛÇÏÁö ¾ÊÀ¸¸é¼µµ ±×·¸Áö ¾ÊÀº °Íó·³ º¸ÀÌ°Ô µÇ´Â °æ¿ì°¡ ¸Å¿ì
¸¹À¸¹Ç·Î, ºÒÇàÈ÷µµ ÀÌ È£ÃâÀÌ ¿Ã¹Ù¸£°Ô µ¿ÀÛÇÏ´ÂÁö ½±°Ô °Ë»çÇÒ ¹æ¹ýÀº
¾ø½À´Ï´Ù.
-
À©µµ¿ìÁî¿¡¼ ¸ðµç ºñµð¿À ¸Þ¸ð¸®¿Í ½Ã½ºÅÛ ºñÆ®¸ÊÀº ±×¸®±â Àü¿¡ ¹Ì¸®
ȹµæµÇ¾îÁ®¾ß Çϸç, ÀÛ¾÷À» ¸¶Ä¡ÀÚ¸¶ÀÚ µÇµ¹·Á ÁÖ¾î¾ß ÇÕ´Ï´Ù (ÇϳªÀÇ ºñÆ®¸ÊÀÌ
Àá°ÜÁ® ÀÖ´Â °æ¿ì¿¡ ±×·¡ÇÈ °ü·Ã ÇÔ¼ö°¡ ¾Æ´Ñ ´Ù¸¥ ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ¾ø±â
¶§¹®ÀÔ´Ï´Ù). À̰ÍÀ» ½º½º·Î ȹµæÇÏÁö ¾Ê´Â´Ù¸é, Allegro´Â ±×¸®±â ÇÔ¼ö
³»ºÎ¿¡¼ ÀÚµ¿À¸·Î ÇØÁÖ°Ô µÇ¾î ÀÖÀ¸¹Ç·Î, ¸¹Àº ±×¸®±â ÀÛ¾÷À» ¿¬¼ÓÀûÀ¸·Î
ÇàÇÏ´Â °æ¿ì¿¡´Â ºñÈ¿À²ÀûÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, º° ¸ð¾çÀ» ±×¸®±â À§ÇØ
1000°³ÀÇ putpixel() È£ÃâÀ» ÇÑ´Ù¸é, acquire_bitmap()À» Àüü ±×¸®±â ÄÚµå
ºí·°ÀÇ ½ÃÀÛ ºÎºÐ¿¡¼ È£ÃâÇÏ¿© ¼Óµµ¸¦ Å©°Ô ³ôÀÏ ¼ö ÀÖÀ¸¸ç, ÀÌ °æ¿ì ±×¸®±â
·çƾ ¸¶Áö¸·¿¡´Â release_bitmap()À» È£ÃâÇÏ¿©¾ß ÇÕ´Ï´Ù.
-
À©µµ¿ìÁî¿¡¼ ½ºÅ©¸° ¿ÀºêÁ§Æ®¿Í ºñµð¿À ºñÆ®¸Ê ¿ÀºêÁ§Æ®´Â »ç¿ëÀÚ°¡ ´ç½ÅÀÇ
ÇÁ·Î±×·¥¿¡¼ ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ÀüȯÇÒ ¶§¸¶´Ù ¸ðµç °ÍÀ» ÀÒ¾î¹ö¸®¹Ç·Î,
´Ù½Ã Á¦¾î±ÇÀÌ ³Ñ¾î¿Ã ¶§ ¸ðµç ȸéÀ» ´Ù½Ã ±×¸®µµ·Ï ÁغñµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù
(Áï, Ç×»ó SWITCH_AMNESIA ¸ðµå¿¡¼ ÀÛ¾÷ÇÕ´Ï´Ù). set_display_switch_mode()¸¦
È£ÃâÇÏ¿© ¸ðµå¸¦ º¯°æÇÏ·Á°í ÇÒ ¼ö ÀÖÁö¸¸, ÇöÀç ÀÌ È£ÃâÀº À©µµ¿ìÁî¿¡¼´Â
Ç×»ó ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù. À̰ÍÀº ¸Å¿ì ºÒÇàÇÑ °ÍÀÌÁö¸¸, DirectX µðÀÚÀÎ »óÀÇ
°áÁ¡¿¡ ¿øÀÎÀÌ ÀÖÀ¸¹Ç·Î, ´Ù¸¥ °³¼±ÀÇ ¿©Áö°¡ ¾ø½À´Ï´Ù. ¾Ö´Ï¸ÞÀÌ¼Ç ½Ã½ºÅÛÀÌ
Ç×»ó Àüü ½ºÅ©¸°À» ¸Å ÇÁ·¹ÀÓ¸¶´Ù ´Ù½Ã ±×¸®µµ·Ï µÇ¾î ÀÖ´Â °ÔÀÓ¿¡¼´Â
¹®Á¦°¡ µÇÁö ¾ÊÁö¸¸, À̰ÍÀÌ ¹®Á¦°¡ µÈ´Ù¸é, set_display_switch_callback()À»
SWITCH_IN À̺¥Æ®¸¦ ÈÄÅ·Çϵµ·Ï È£ÃâÇÏ¿© Ư¼öÇÑ ´Ù½Ã ±×¸®±â ·çƾÀÌ ÇÊ¿äÇÒ
¶§¸¶´Ù ½ÇÇàµÇµµ·Ï Çϰųª, »ç¿ëÀÚ¿¡°Ô °ÔÀÓÁß ÇÁ·Î±×·¥ÀÇ ÀüȯÀ» ÇÏÁö
¸»µµ·Ï À̾߱âÇÏ¿© ÀÌ ¹®Á¦¸¦ ¹«½ÃÇϵµ·Ï ÇÏ¿©µµ µÉ °ÍÀÔ´Ï´Ù :-)
-
ºñµð¿À ¸Þ¸ð¸®¿¡ Á÷Á¢ ¾²±â¸¦ ÀÌ¿ëÇÑ´Ù¸é, À̰ÍÀ» À§ÇØ »ç¿ëµÇ´Â old_farpokeb()
¸Þ¼µå´Â ÀÌ½Ä °¡´ÉÇÏÁö ¾Ê´Â °ÍÀ̹ǷÎ, ¸Å¿ì Á¶½ÉÇÏ¿©¾ß ÇÕ´Ï´Ù (djgpp
ÇÁ·Î±×·¥¿¡¼´Â µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù). ¸Þ¸ð¸® ºñÆ®¸ÊÀ» Á÷Á¢ Á¶ÀÛÇϱâ À§ÇØ line
Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ºñµð¿À ºñÆ®¸Ê¿¡ ´ëÇØ¼´Â ´ÙÀ½°ú °°Àº
ÀÛ¾÷À» ¼öÇàÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù:
// ±×¸®±â ÀÛ¾÷ÀÇ ¸Ç óÀ½¿¡¼ bmp_select()¸¦ Çѹø È£Ãâ
bmp_select(bmp);
for (y=top; y<bottom; y++) {
// °¢ °¡·Î ¶óÀθ¶´Ù bmp_write_line() È£Ãâ
unsigned long address = bmp_write_line(bmp, y);
for (x=left; x<right; x++) {
// Çȼ¿ µ¥ÀÌÅ͸¦ ¾²±â À§ÇØ bmp_write*() ¸ÅÅ©·Î¸¦ »ç¿ë
bmp_write8(address+x, color);
}
}
// ±×¸®±â ÀÛ¾÷ÀÇ ¸Ç ¸¶Áö¸·¿¡ bmp_unwrite_line()À» Çѹø È£Ãâ
bmp_unwrite_line(bmp);
±×·¸½À´Ï´Ù. À̰ÍÀº Á» ÁÁÁö ¾Ê¾Æ º¸ÀÔ´Ï´Ù¸¸, ÀÌµé ¸ÅÅ©·ÎÀÇ Àý¹ÝÀº ¾î¶²
Ç÷§Æû¿¡ ´ëÇØ¼´Â ´Ü¼øÈ÷ ¾Æ¹« µ¿ÀÛÀ» ÇÏÁö ¾Ê´Â °ÍÀ¸·Î º¯È¯µÉ °ÍÀ̸ç,
³ª¸ÓÁö ¹ÝÀº 1ºñÆ®ÀÇ Æ÷ÀÎÅÍ Á¶ÀÛÀ̳ª ÀζóÀÎ ¾î¼Àºí·¯·Î ¹Ù²î¹Ç·Î, ±×·¸°Ô
³ª»Û °ÍÀº ¾Æ´Õ´Ï´Ù. ±×¸®°í À̰ÍÀº ¾î´À Ç÷§ÆûÀ¸·Îµç ÀÌ½Ä °¡´ÉÇÑ
¹æ¹ýÀ¸·Î ¸Þ¸ð¸®¸¦ Á÷Á¢ ¾ï¼¼½ºÇÏ´Â ÀÛ¾÷À» ±¸ÇöÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀÔ´Ï´Ù.
´õ ³ôÀº »ö»ó ºñÆ®¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â, bmp_write8()À» bmp_write15(),
bmp_write16() µîÀ¸·Î ¹Ù²Ù¾î »ç¿ëÇϸç, ¸ñÀû ¾îµå·¹½º¿¡ xÃà °ªÀ»
´õÇÏ´Â °æ¿ì¿¡ ¾ó¸¶¸¦ °öÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. 15¿Í 16ºñÆ® ¸ðµå¿¡¼´Â
sizeof(short)¸¦ °öÇϸç, 24ºñÆ® ¸ðµå¿¡¼´Â 3À», 32ºñÆ® ¸ðµå¿¡¼´Â
sizeof(long)À» °öÇÕ´Ï´Ù.
-
ÇöÀç Allegro°¡ Áö¿øÇÏ´Â ¸ðµç Ç÷§ÆûÀº ºñµ¿±â ÀÔ·Â, Áï, key[] ¾î·¹ÀÌ¿Í ¸¶¿ì½º
À§Ä¡ º¯¼ö°¡ µ¥ÀÌÅͰ¡ ¹Ù²ð ¶§¸¶´Ù ÀÚµ¿À¸·Î ¾÷µ¥ÀÌÆ® µÇ´Â ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
¹Ì·¡¿¡ Áö¿øµÉ ¾î¶² Ç÷§Æû¿¡¼´Â À̰ÍÀ» Áö¿øÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ¸¸ç, ÀÌ °æ¿ì¿¡´Â
Çϵå¿þ¾î ÀåÄ¡ÀÇ Á¤º¸¸¦ »óÅ º¯¼ö·Î °¡Á®¿Ã Çʿ䰡 ÀÖÀ» ¶§¸¶´Ù
Æú¸µ ÇÔ¼ö (poll_mouse()¿Í poll_keyboard())¸¦ È£ÃâÇÏ¿©¾ß ÇÒ Çʿ䰡 ÀÖÀ»
°ÍÀÔ´Ï´Ù (readkey()³ª get_mouse_mickeys()¿Í °°Àº µ¥ÀÌÅÍ Àбâ ÇÔ¼ö¸¦
»ç¿ëÇÒ °æ¿ì¿¡´Â Æú¸µÀ» ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù). ¸ðµç Ç÷§Æû¿¡¼ Æú¸µÀ» ÇÏÁö
¾Ê¾Æµµ µÉ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î, Æú¸µÀ» »ç¿ëÇÏ´Â ¼ö°í¸¦ ÇÒ °ÍÀΰ¡ ÇÏÁö ¾ÊÀ»
°ÍÀΰ¡´Â ´ç½ÅÀÇ ¼±Åÿ¡ ´Þ·Á ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¸Å¿ì ¾ÈÀüÇÔÀ» Ãß±¸ÇÑ´Ù¸é
»õ·Î¿î ÀÔ·ÂÀ» ¿ä±¸ÇÒ ¶§¸¶´Ù Æú¸µÀ» ÇÏ¿©¾ß ÇÒ °ÍÀÔ´Ï´Ù. Æú¸µÀ» ¿ä±¸ÇÏÁö
¾Ê´Â Ç÷§Æû¿¡¼ ÀÌ·¯ÇÑ Á¾·ùÀÇ Äڵ带 Å×½ºÆ®ÇÏ´Â °ÍÀ» °£´ÜÇÏ°Ô Çϱâ À§ÇØ,
ù¹øÂ° Æú¸µ ÇÔ¼öÀÇ È£Ãâ ÈÄ¿¡, Allegro´Â Ư¼öÇÑ Æú¸µ ¿¡¹Ä·¹ÀÌ¼Ç ¸ðµå·Î
µé¾î°¡¼, Æú¸µÀ» ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ¾î¶°ÇÑ ÀԷµµ Á¦°øÇÏÁö ¾Êµµ·Ï
µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î Áß¿äÇÑ Àå¼Ò¿¡¼ Æú¸µ È£ÃâÀ» ÇÏ´Â °ÍÀ» ÀØÁö
¾Êµµ·Ï ÇϽʽÿÀ.
-
µµ½º¿¡¼ ÀÎÅÍ·´Æ® °ü·Ã ·çƾ (ŸÀÌ¸Ó Çڵ鷯, ¸¶¿ì½º À̵¿ Äݹé, ¹Ìµð À̺¥Æ®
ÄÝ¹é µî)¿¡¼ »ç¿ëµÇ´Â ¸ðµç ¸Þ¸ð¸®´Â Àá±×¾î ÁÖ¾î¾ß ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
º¯¼ö´Â LOCK_VARIABLE() ¸ÅÅ©·Î¸¦ »ç¿ëÇϸç, ÇÔ¼ö´Â END_OF_FINCTION()°ú
LOCK_FUNCTION() ¸ÅÅ©·Î¸¦ »ç¿ëÇϰí, ÇÒ´çµÈ ¸Þ¸ð¸® ºí·ÏÀ» Àá±×·Á¸é LOCK_DATA()
¸ÅÅ©·Î¸¦ »ç¿ëÇÕ´Ï´Ù (¸ðµç ÀÎÅÍ·´Æ®ÀÇ ½ºÅÃÀº ÀÌ¹Ì Àá°ÜÁ® ÀÖÀ¸¹Ç·Î,
Áö¿ª º¯¼ö´Â Àá±Û Çʿ䰡 ¾ø½À´Ï´Ù). ´Ù¸¥ Ç÷§Æû¿¡¼´Â ÀÌ¿Í °°Àº ÀÛ¾÷À»
ÇÏÁö ¾Ê¾Æµµ µÇÁö¸¸, µµ½º¿¡¼ µ¿ÀÛ½Ã۵µ·Ï ÇÒ °æ¿ì¸¦ ´ëºñÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
¶ÇÇÑ ÀÎÅÍ·´Æ® ·çƾ¿¡¼ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº ÇÇÇØ¾ß Çϸç
(¶óÀ̺귯¸® ÇÔ¼ö¸¦ Àá±Û ¹æ¹ýÀÌ ¾øÀ¸¸ç, ¾î¶² °æ¿ì¿¡¶óµµ ±×°ÍÀÌ µ¿ÀÛÇÏÁö
¾Ê±â ½±±â ¶§¹®ÀÔ´Ï´Ù), ¾î¶°ÇÑ ºÎµ¿¼Ò¼öÁ¡ ¿¬»êµµ »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.
-
°íÁ¤µµ ŸÀ̸ӿ¡ ÀÇÁ¸ÇÏÁö ¸¶½Ê½Ã¿À. ¾î¶°ÇÑ Ç÷§Æû¿¡¼µµ Àû¾îµµ 10 ms
(1ÃÊÀÇ 1/100)ÀÇ Á¤È®µµ´Â ¹ÏÀ» ¼ö ÀÖÁö¸¸, ¾î¶² ½Ã½ºÅÛ¿¡¼´Â ´õ ³ôÀº Á¤È®µµ°¡
°¡´ÉÇÏ´Ù ÇÏ¿©µµ, ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â ±×·¸Áö ¾Ê½À´Ï´Ù.
ÇöÀç Ç÷§Æû¿¡¼ Áö¿øÇÏ´Â °Íº¸´Ù ºü¸¥ ŸÀ̸Ӹ¦ ¼³Ä¡ÇÑ´Ù¸é, ¿ä±¸µÈ
¼ÓµµÀÇ Æò±ÕÀº À¯ÁöµÉ °ÍÀÌÁö¸¸, °¢ ½Ã½ºÅÛ Å¸ÀÌ¸Ó ´ÜÀ§½Ã°£¿¡ ¸ðµÎ ¹¶ÃÄ È£ÃâµÉ
¼ö ÀÖÀ¸¹Ç·Î, ½ÇÁ¦·Î´Â ±×´ÙÁö À¯¿ëÇÏÁö ¾Ê½À´Ï´Ù.
|