Allegro °ÔÀÓ ÇÁ·Î±×·¡¹Ö ¶óÀ̺귯¸® ¾ð¾î: English  español  Deutsch  français  polski  Italiano 

 
 

Allegro
  ´º½º
  ¼Ò°³
  ¶óÀ̼¾½º
  °øÇåÇϽŠºÐµé
  Áö³­ ´º½º
  Logos

´Ù¿î·Îµå
  ÃֽйöÀü
  ±¸¹öÀü
  CVS

¹®¼­ 
  API
  FAQ
  Æ©Å丮¾ó
  AllegroÀÇ ¹Ì·¡

Áö¿ø
  µµ¿ò¸»
  ¸ÞÀϸµ ¸®½ºÆ®
  IRC

°ÔÀÓ, À¯Æ¿¸®Æ¼, ¶óÀ̺귯¸® µîµî
  Allegro.cc

±âŸ
  DIGMID
  ¸µÅ©
  ¹Ì·¯
  À¥¸¶½ºÅÍ
  Humor

 
 
  

Allegro FAQ
¿øÇÏ´Â ´äº¯ÀÌ ¾ø´Ù¸é Áú¹®ÇϽʽÿÀ. ¿©±â¿¡ Ãß°¡ÇϰڽÀ´Ï´Ù...


³»¿ë


»ç¼ÒÇÑ ¹®Á¦



readme.txt¸¦ ÀÐ¾î º¸½Ê½Ã¿À.



SimTel ¹Ì·¯ÀÇ gnu/djgpp/v2tk/ µð·ºÅ丮³ª Allegro ȨÆäÀÌÁöÀÎ http://alleg.sourceforge.net/¿¡¼­ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.



allegro.txt¸¦ ÀÐ¾î º¸½Ê½Ã¿À.


DJGPP °ü·Ã ¹®Á¦



make´Â Ç¥ÁØ djgpp ¹èÆ÷º»ÀÇ ÀϺÎÀ̸ç, v2gnu/mak*b.zip(*¿¡´Â ÃֽйöÀüÀÇ ¹øÈ£°¡ µé¾î°©´Ï´Ù) ÆÄÀÏ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. À̰ÍÀº http://www.delorie.com/djgpp/¿¡¼­ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.



djgpp¸¦ Á¤¸» Á¤È®È÷ ¼³Ä¡Çϼ̽À´Ï±î? djgppÀÇ readme.1st ÆÄÀÏÀÇ Áö½Ã »çÇ×À» Á¡°ËÇØ º¸°í, ƯÈ÷ DJGPP ȯ°æ º¯¼ö°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸ç djgpp\bin µð·ºÅ丮°¡ path¿¡ Æ÷ÇÔµð¾î ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.



GNU make ÇÁ·Î±×·¥À» »ç¿ëÇϰí ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ. BorlandÀÇ make¿Í °°Àº ´Ù¸¥ ¹öÀüÀ» »ç¿ëÇϰí ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï±î? ÀǽÉÀÌ °£´Ù¸é "make -v"¸¦ ½ÇÇà½ÃÄÑ GNUÀÇ ÀúÀÛ±Ç ¸Þ½ÃÁö°¡ Ç¥½ÃµÇ´Â °ÍÀ» È®ÀÎÇϽʽÿÀ.



À©µµ¿ìÁî 95ÀÇ À©µµ¿ìÁî Ž»ö±â¿¡¼­ make¸¦ ½ÇÇà½ÃŰ¸é ¾ÈµË´Ï´Ù! DOS ¹Ú½º¸¦ ¶ç¿ì°í Allegro µð·ºÅ丮·Î ¿Å±ä ÈÄ ¸í·É ÇÁ·ÒÇÁÆ®¿¡ "make"¶ó°í ÀÔ·ÂÇϽʽÿÀ.



½Ã½ºÅÛÀÇ ½Ã°£°ú ³¯Â¥°¡ Á¤È®ÇÏ°Ô ¸ÂÃçÁ® ÀÖ½À´Ï±î? Alternatively you may have downloaded a fresh file made by someone in a more eastern timezone. In the latter case you can either wait a few hours, temporarily set your clock forward, or use a utility such as "touch" to change the timestamp of the files.



¿À·ù ¸Þ½ÃÁö°¡ Á¦½ÃÇÏ´Â °Í°ú °°ÀÌ, ÄÄÆÄÀÏ·¯°¡ »ç¿ëÇÒ ¸Þ¸ð¸®¸¦ ´õ ¸¹ÀÌ È®º¸ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. go32-v2 ÇÁ·Î±×·¥Àº ÇöÀç »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀ» º¸¿©ÁÙ °ÍÀÔ´Ï´Ù. DOS¿¡¼­ ½ÇÇà½Ã۰í ÀÖ´Ù¸é swapfile·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µð½ºÅ©ÀÇ ºó °ø°£À» ´õ È®º¸Çϵµ·Ï ÇϽʽÿÀ. À©µµ¿ìÁî 95¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é DOS ¼¼¼ÇÀÇ µî·ÏÁ¤º¸¿¡¼­ DPMI ¸Þ¸ð¸® ÇѰ踦 65535±îÁö ´Ã·Á ÁֽʽÿÀ(Ç®´Ù¿î ¸®½ºÆ®¿¡´Â 16384±îÁö¹Û¿¡ ³ª¿ÍÀÖÁö ¾ÊÀ¸¹Ç·Î À̰ÍÀ» ¼ÕÀ¸·Î ÀÔ·ÂÇÏ¿©¾ß ÇÒ °ÍÀÔ´Ï´Ù).



¸Þ½ÃÁö°¡ Á¦½ÃÇÏ´Â ¹Ù´ë·Î, »õ·Î¿î ¹öÀüÀÇ gcc¿Í ±¸¹öÀüÀÇ libcÀÇ Ãæµ¹ÀÔ´Ï´Ù. gcc*b.zip ÆÄÀÏ¿¡ Æ÷ÇÔµÈ readme.DJGPP¸¦ Àо½Ê½Ã¿À (¼öÁ¤ »çÇ×Àº ÆÄÀÏ ¸Ç ³¡¿¡ ºÙ½À´Ï´Ù).



C:\TEMP\ccdaaaaa(.text+0x9):x.c: undefined reference to `allegro_init'
C:\TEMP\ccdaaaaa(.text+0xe):x.c: undefined reference to `install_keyboard'

¹®¼­µéÀ» ÀоÁö ¾Ê¾Ò±º¿ä. ±×·¸Áö ¾Ê¾Æ¿ä? :-) ÇÁ·Î±×·¥À» ¶óÀ̺귯¸® ÆÄÀÏÀÎ liballeg.a¿Í ¸µÅ©½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¸ÕÀú ¸ðµç °ÍÀÌ ¿Ã¹Ù¸£°Ô ¼³Ä¡µÈ °ÍÀ» È®ÀÎÇϽʽÿÀ(make¸¦ ½ÇÇà½ÃŰ¸é ¾Ë ¼ö ÀÖ½À´Ï´Ù). ±×¸®°í ³ª¼­ ¸í·É¾î ÇÁ·ÒÇÁÆ®³ª makefileÀ» ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏÇϰí ÀÖ´Ù¸é -lalleg¸¦ gcc ¸í·É¾îÇà µÚ¿¡ Ãß°¡ÇϽʽÿÀ. Rhide¸¦ ÀÌ¿ëÇÑ´Ù¸é Option/Libraries ¸Þ´º¿¡¼­ 'alleg'¸¦ ù¹øÂ° ºñ¾îÀÖ´Â Çʵ忡 ÀÔ·ÂÇÏ½Ã°í ¿·¿¡ ÀÖ´Â »óÀÚ°¡ üũµÇ¾î ÀÖµµ·Ï ÇϽʽÿÀ.



¾Æ´Ï¿À. Á˼ÛÇÕ´Ï´Ù. liballeg.a´Â ¾à 450k Á¤µµÀÌÁö¸¸ grabber, »ç¿îµå ¼³Á¤°ú °°Àº ¸¹Àº À¯Æ¿¸®Æ¼µµ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. ±×¸®°í ¿¹Á¦ ÇÁ·Î±×·¥µéÀº ¾î¶²°¡¿ä? ¸ðµÎ ÄÄÆÄÀÏµÈ ¹öÀüÀ» Æ÷ÇÔ½ÃŲ´Ù¸é ¹ÙÀ̳ʸ® ¹èÆ÷º»Àº ¾Æ¸¶ 7¸Þ°¡ ÀÌ»óÀÌ µÉ °ÍÀÔ´Ï´Ù: ½Ç¿ëÀûÀ¸·Î ³Ê¹«³ªµµ Å®´Ï´Ù! ´õ¿í ½É°¢ÇÑ °ÍÀº ´ç½Å ½º½º·Î ºôµåÇÏÁö ¸øÇÒ ÀÌÀ¯°¡ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ÄÄÆÄÀÏ·¯´Â Á¤ÇØÁø °á°ú¸¸ÀÌ ³ª¿À´Â °ÍÀÔ´Ï´Ù: ƯÁ¤ ÀÔ·Â ÆÄÀϰú ¸í·É¾î¸¦ ÁÖ¸é Ç×»ó °°Àº °á°ú°¡ ³ª¿É´Ï´Ù. Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é À߸øµÈ ÀÔ·Â ÆÄÀÏÀ» ³Ö¾ú°Å³ª(¿¹¸¦ µé¾î AllegroÀÇ º¹»çº»ÀÌ ¾îÂîµÈ ÀÏÀÎÁö ¼Õ»óµÇ¾î Àִٰųª), À߸øµÈ ¸í·ÉÀ» ÀÔ·ÂÇÏ¿´°Å³ª ("make"¸¦ ÀÔ·ÂÇϱ⸸ ÇÏ¸é µÇ±â ¶§¹®¿¡ À̰ÍÀÌ ½ÇÁ¦·Î ¿øÀÎÀÌ µÇ±â´Â ¾î·Æ½À´Ï´Ù), ÄÄÆÄÀÏ·¯°¡ ¼Õ»óµÇ¾ú°Å³ª, ±×·¯´Ï±î djgpp¸¦ Á¦´ë·Î ¼³Ä¡ÇÏÁö ¸øÇÏ¿´°Å³ª ÇÏ¿´À» °ÍÀÔ´Ï´Ù. ´Ù¸¥ »ç¶÷¿¡°Ô Allegro¸¦ ´ë½Å ÄÄÆÄÀÏÇÏ°Ô ÇÏ¿© ¹®Á¦¸¦ Ä«ÆäÆ® ¾Æ·¡¿¡ ¾µ¾î ³ÖÁö¸¸ ÇÏÁö ¸¶½Ã°í, Á÷Á¢ ¹®Á¦¸¦ ã¾Æ ÇØ°áÇØ º¸½Ê½Ã¿À...



GNU µµ±¸µéÀº ¿À·ù ¸Þ½ÃÁö¸¦ ¿À·ù ½ºÆ®¸²ÀÎ stderr¿¡ ¾¹´Ï´Ù. ºÒÇàÇϰԵµ command.comÀº À̰ÍÀ» ¸®´ÙÀÌ·ºÆ®ÇÏÁö ¸øÇÕ´Ï´Ù¸¸, ´ÙÇàÈ÷µµ DJ´Â Çö¸íÇÏ°Ô À̰ÍÀ» ÇØ°áÇϰí ÀÖ½À´Ï´Ù. redir ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© Ãâ·Â ¸Þ½ÃÁö¸¦ °¥¹«¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. "redir -eo make > logfile.txt"¿Í °°ÀÌ ÇÏ¸é µË´Ï´Ù.


DOS °ü·Ã ¹®Á¦



¾îµð±îÁö µ¿ÀÛÇÒ °ÍÀΰ¡´Â »óȲ¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ¾î¶² »ç¶÷µéÀº ¹®Á¦°¡ ÀÖ´Ù°í Çϴµ¥, ¶Ç ´Ù¸¥ »ç¶÷µéÀº Àß µ¿ÀÛÇÑ´Ù°í ÇÕ´Ï´Ù. Àú´Â NT¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸¹Ç·Î Á¦°¡ ±×°Í¿¡ ´ëÇØ ÇÒ ¼ö ÀÖ´Â ÀÏÀº ¾øÀ¸¸ç, ¼ÖÁ÷È÷ ¸»Çϸé Å©°Ô °ü½ÉÀÌ ÀÖÁö´Â ¾Ê½À´Ï´Ù. À©µµ¿ìÁî ¹öÀüÀÇ ÇÁ·Î±×·¥À» ¸¸µé·Á¸é AllegroÀÇ À©µµ¿ìÁî ¹öÀüÀ» »ç¿ëÇϽðí, DOS ÇÁ·Î±×·¥À» ¸¸µé·Á¸é DOS¸¦ »ç¿ëÇϽʽÿÀ!



±×·¸½À´Ï´Ù. ÇÏÁö¸¸ ¸î°¡Áö °æ°í°¡ ÀÖ½À´Ï´Ù. EMM386ÀÇ OpenDOS ¹öÀüÀ» »ç¿ëÇϰí ÀÖ´Ù¸é DPMI ±¸ÇöÀ» ±ÝÁö½ÃÄÑ¾ß ÇÕ´Ï´Ù (config.sys ÆÄÀÏÀÇ EMM386.EXEÀÇ DEVICE Çà¿¡¼­ DPMI=OFF¸¦ ³ÖÀ¸½Ê½Ã¿À). ¶ÇÇÑ PIC=OFF Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇÏ¿©¾ß Çϴµ¥, À̰ÍÀº µðÆúÆ® ¼³Á¤À̹ǷΠƯº°È÷ ±×°ÍÀ» Çã¿ëÇÏÁö ¾Ê¾Ò¾ú´Ù¸é ¹®Á¦°¡ µÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.



ÀúÀÇ ºñµð¿À Ä«µåÀÇ ¸Þ¸ð¸®´Â 2¸Þ°¡ÀÔ´Ï´Ù.

ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ÇѰè´Â VGA Çϵå¿þ¾î¿¡ ÀÇÇØ °áÁ¤µÇ´Â °ÍÀÌÁö Allegro¿¡ ÀÇÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. 256k ÀÌ»óÀÇ ºñµð¿À ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ·Á¸é SVGA ¸ðµå¸¦ ÀÌ¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. À̰ÍÀº ´õ ³ôÀº ÇØ»óµµ·Î ÀüȯÇϰųª, ÀúÇØ»óµµ SVGA ¸ðµå¸¦ Áö¿øÇÏ´Â SciTech Display Doctor¸¦ ±¸ÇÏ¿©¾ß ÇÑ´Ù´Â ¸»ÀÔ´Ï´Ù.



¾î¶² »ç¶÷¿¡°Ô´Â °¡´ÉÇÏÁö¸¸ ´Ù¸¥ »ç¶÷¿¡°Ô´Â ±×·¸Áö ¾Ê½À´Ï´Ù. ¹®Á¦´Â Creative Labs°¡ SB-Live Ä«µåÀÇ ½ºÆåÀ» °ø°³ÇÏ´Â °ÍÀ» °ÅºÎÇÏ¿´±â ¶§¹®¿¡ µå¶óÀ̹ö¸¦ ÀÛ¼ºÇÒ ¼ö ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. Á¦Á¶»ç¿¡ Ç×ÀÇÇϰųª ´õ Çö¸íÇÑ Á¦Á¶»ç·ÎºÎÅÍ ´Ù¸¥ Ä«µå¸¦ ±¸ÀÔÇϽʽÿÀ.



À̰ÍÀº ¾Æ¸¶µµ À½·®À» ¸Å¿ì ³·°Ô ¼³Á¤ÇÏ¿´±â ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù: setup ÇÁ·Î±×·¥¿¡¼­ À½·®À» ¹Ù²Ù¾î º¸½Ê½Ã¿À. ¶ÇÇÑ À©µµ¿ìÁî »ç¿îµå Ç÷¹À̾ Çѹø¿¡ ÇϳªÀÇ »ùÇÃÀ» Ç÷¹ÀÌÇÏ´Â °Í°ú´Â ´Þ¸®, Allegro¿¡¼­´Â ¸î°³ÀÇ »ç¿îµå¸¦ ÇϳªÀÇ Ãâ·Â ¹öÆÛ·Î ¹Í½ÌÇÏ¿© Ãâ·ÂÇϹǷΠ°¢°¢ÀÇ »ç¿îµå´Â Àüü Ãâ·Â À½·®ÀÇ ÀÛÀº ºñÀ²À» Â÷ÁöÇϱ⠶§¹®À̱⵵ ÇÕ´Ï´Ù. À̰ÍÀº ´ÙÁß Ãâ·Â ä³ÎÀ» Áö¿ø¹Þ´Â´ë ´ëÇÑ ´ë°¡ÀÏ »ÓÀÔ´Ï´Ù. À̰ÍÀÌ ¸¶À½¿¡ µéÁö ¾Ê´Â´Ù¸é setup ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© ä³ÎÀÇ °³¼ö¸¦ Á¶Á¤ÇϽʽÿÀ: ä³ÎÀÇ °³¼ö´Â 64 ÀÌÇÏÀÇ 2ÀÇ °ÅµìÁ¦°öÀÌ µÉ ¼ö ÀÖÀ¸¸ç, ÀÌ °ªÀ» ÀÛ°Ô ÇÒ ¼ö·Ï »ç¿îµå´Â ´õ Ä¿Áú °ÍÀÔ´Ï´Ù. ¶Ç´Â set_volume_per_voice()¸¦ »ç¿ëÇϽʽÿÀ. ¹®¼­¿¡¼­ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â Allegro µðÁöÅÐ »ç¿îµå Ãâ·ÂÀÇ Àüü À½·®À» Á¶Á¤ÇÏ°Ô ÇÕ´Ï´Ù.



FreeBE/AF µå¶óÀ̹ö (http://www.talula.demon.co.uk/freebe/) ¸¦ »ç¿ëÇϰųª »ó¿ë ÇÁ·Î±×·¥ÀÎ SciTech Display Doctor (http://www.scitechsoft.com/) ¸¦ »ç¿ëÇÏ¿© º¸½Ê½Ã¿À. ±×·¡µµ ¹®Á¦°¡ ÇØ°áµÇÁö ¾Ê´Â´Ù¸é Allegro ¸ÞÀϸµ ¸®½ºÆ®¿¡ afinfo¿Í vesainfo¸¦ ½ÇÇà½ÃÄ×À» ¶§ÀÇ È­¸é°ú ÇÔ²² ¹®Á¦ÀÇ ¼³¸íÀ» °Ô½ÃÇϽʽÿÀ.



VBE/AF ÀÎÅÍÆäÀ̽º´Â ºñµð¿À µå¶óÀ̹ö¿¡ ÀÌ¹Ì µ¿Àû ¿¬°áÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù: http://www.talula.demon.co.uk/freebe/¿¡¼­ FreeBE/AF ÇÁ·ÎÁ§Æ®¸¦ º¸½Ê½Ã¿À. »ç¿îµå, VESA, ¸ðµå-X ·çƾ°ú °°ÀÌ º¸´Ù ÀϹÝÀûÀÎ °Í¿¡ ´ëÇØ¼­´Â ±×°ÍµéÀÇ µå¶óÀ̹ö°¡ ¶óÀ̺귯¸® ÄÚ¾îÀÇ ¼ö¸¹Àº º¸Á¶ ÇÔ¼ö(helper function)¸¦ ÀÌ¿ëÇϰí Àֱ⠶§¹®¿¡ µ¿Àû ¿¬°áÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¸Å¿ì ¾î·Æ½À´Ï´Ù. djgppÀÇ DXE Çü½ÄÀº µ¿Àû ¿¬°áÀ» Áö¿øÇϴµ¥ ÃæºÐÇÒ Á¤µµ·Ï À¯¿¬Çϸç, Àú´Â Allegro¸¦ ´Ù¸¥ µ¿Àû ¿¬°á ÆÐŰÁö¿¡ Á¾¼ÓµÇµµ·Ï ¸¸µé°í ½ÍÁö´Â ¾Ê½À´Ï´Ù.



¿À·ù°¡ ³ª¿É´Ï´Ù!

±Û½ê¿ä. ȯ°æ º¯¼öÀÇ Å©±â¸¦ ´Ã·Á¾ß ÇÒ °ÍÀÔ´Ï´Ù :-) DOS »óÀÚ¿¡¼­ (½Ã½ºÅÛ ¸Þ´º¸¦ Ŭ¸¯Çϰí "µî·ÏÁ¤º¸"¸¦ ¼±ÅÃÇÏ¿©) ¼¼ÆÃÀ» º¯°æ½ÃŰ°Å³ª, config.sys ÆÄÀÏ¿¡¼­ ¼¼ÆÃÀ» º¯°æ½ÃŰ¸é µË´Ï´Ù ("shell=c:\command.com /e:8192"°ú °°ÀÌ Ãß°¡ÇÕ´Ï´Ù).


À©µµ¿ìÁî °ü·Ã ¹®Á¦



ÄÄÆÄÀÏ·¯¿¡ ´ÙÀÌ·ºÆ®X Çì´õ ÆÄÀϰú ¶óÀ̺귯¸®ÀÇ À§Ä¡¸¦ ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù: ÄÄÆÄÀÏ·¯/¸µÄ¿ ÆÐ½º¿¡ ´ÙÀÌ·ºÆ®X SDKÀÇ /include¿Í /lib µð·ºÅ丮¸¦ ³ÖÀ¸½Ê½Ã¿À. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â, ¼³Á¤À» º¯°æ½ÃŰ°í ½ÍÁö ¾Ê´Ù¸é ´ÙÀÌ·ºÆ®X SDKÀÇ /include¿Í /lib µð·ºÅ丮¸¦ ÄÄÆÄÀÏ·¯ÀÇ ÇØ´ç µð·ºÅ丮·Î ±×³É º¹»çÇÏ¸é µË´Ï´Ù.



DirectX SDK¸¦ ÃÖ¼ÒÇÑ ¹öÀü 5 ÀÌ»óÀÇ ÃֽйöÀüÀ¸·Î º¯°æ½ÃÄÑ¾ß ÇÕ´Ï´Ù. DirectX SDK´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® °³¹ßÀÚ »çÀÌÆ®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.



main() ÇÔ¼öÀÇ ¹Ù·Î µÚ¿¡ END_OF_MAIN()À» Ãß°¡ÇÏ¿©¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ÇÁ¸®ÇÁ·Î¼¼¼­µé°úÀ» ÀÌ¿ëÇÏ´Â °Í°ú °°ÀÌ, Allegro´Â À̰ÍÀ» ÀÌ¿ëÇÏ¿© ÀϹÝÀûÀÎ main() ÇÔ¼ö¸¦ À©µµ¿ìÁî ½ºÅ¸ÀÏÀÇ WinMain() ÁøÀÔÁ¡(entrypoint)·Î º¯°æÇϵµ·Ï ÇÕ´Ï´Ù.



Windows ÄÜ¼Ö ÇÁ·Î±×·¥ÀÌ ¾Æ´Ñ Windows GUI ÀÀ¿ëÇÁ·Î±×·¥À» ºôµåÇϰí ÀÖÀ½À» È®ÀÎÇϽʽÿÀ. À̰ÍÀº MSVC¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ »ý¼º½Ãų ¶§ ¼³Á¤ÇÕ´Ï´Ù. Borland C++ Ä¿¸Çµå¶óÀÎ ÄÄÆÄÀÏ·¯¿¡¼­´Â '-tW' Ç÷¡±×·Î ÁöÁ¤ÇÕ´Ï´Ù. Á¤¸»·Î ÇÁ·Î±×·¥À» ÄÜ¼Ö ÇÁ·Î±×·¥À¸·Î ¸¸µé°í ½ÍÀº °æ¿ì¿¡´Â ¸Ç À§¿¡ #define USE_CONSOLE¸¦ ³ÖÀ¸½Ê½Ã¿À.



¿À·ù°¡ ³ª¿É´Ï´Ù!

±Û½ê¿ä. ȯ°æ º¯¼öÀÇ Å©±â¸¦ ´Ã·Á¾ß ÇÒ °ÍÀÔ´Ï´Ù :-) DOS »óÀÚ¿¡¼­ (½Ã½ºÅÛ ¸Þ´º¸¦ Ŭ¸¯Çϰí "µî·ÏÁ¤º¸"¸¦ ¼±ÅÃÇÏ¿©) ¼¼ÆÃÀ» º¯°æ½ÃŰ°Å³ª, config.sys ÆÄÀÏ¿¡¼­ ¼¼ÆÃÀ» º¯°æ½ÃŰ¸é µË´Ï´Ù ("shell=c:\command.com /e:8192"°ú °°ÀÌ Ãß°¡ÇÕ´Ï´Ù).



MSVC¸¦ »ç¿ëÇÏ´Â °æ¿ì MSVCDIR º¯¼ö µÚ¿¡ ¼¼¹ÌÄÝ·Ð(;)ÀÌ ºÙÁö ¾ÊÀº °ÍÀ» È®ÀÎÇϽʽÿÀ. Mingw32¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â MINGDIR º¯¼ö¸¦, BCC¸¦ »ç¿ëÇÑ´Ù¸é BCC32DIR º¯¼ö¸¦ È®ÀÎÇϽʽÿÀ.


À¯´Ð½º °ü·Ã ¹®Á¦



main() ÇÔ¼öÀÇ ¹Ù·Î µÚ¿¡ END_OF_MAIN()À» Ãß°¡ÇÏ¿©¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ÇÁ¸®ÇÁ·Î¼¼¼­µé°úÀ» ÀÌ¿ëÇÏ´Â °Í°ú °°ÀÌ, Allegro´Â À̰ÍÀ» ÀÌ¿ëÇÏ¿© argv[] ÆÄ¶ó¹ÌÅ͸¦ ¾ò½À´Ï´Ù (Allegro´Â ÀÌ Á¤º¸µéÀ» ³»ºÎÀûÀ¸·Î ¿©·¯ °¡Áö·Î »ç¿ëÇÕ´Ï´Ù).



stderrÀ» ÆÄÀÏ·Î ¸®´ÙÀÌ·ºÆ®(redirect)ÇÏ¿© ³ªÁß¿¡ º¼ ¼ö ÀÖµµ·Ï ÇÏ¿©¾ß ÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº ¾î¶°ÇÑ ¼Ð(shell)À» »ç¿ëÇÏ´À³Ä¿¡ µû¶ó ´Ù¸¨´Ï´Ù: bash¿Í °°Àº Bourne ½ºÅ¸ÀÏÀÇ ¼ÐÀ» »ç¿ëÇϰí ÀÖ´Ù¸é "make 2> logfile.txt"¿Í °°ÀÌ ÇϽʽÿÀ.


ÀϹÝÀûÀÎ ¹®Á¦



grabber´Â datedit.c¿¡ Æ÷ÇÔµÈ ÄÚµå¿Í ¸µÅ©µÇ¾î¾ß ÇÕ´Ï´Ù. ÇÏÁö¸¸ ¼ÕÀ¸·Î Á÷Á¢ À̰ÍÀ» ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù: ±×³É "make"¸¦ ½ÇÇà½ÃŰ¸é ¸ðµç °ÍÀ» ºôµåÇØ ÁÝ´Ï´Ù.



386 instruction' ¶Ç´Â `Error: no such instruction `maskmovq %mm3, %mm1''°ú °°Àº ¿¡·¯¸¦ ³»¸ç make°¡ ½ÇÆÐÇÕ´Ï´Ù.

GNU binutilÀÇ ¹öÀüÀ» ¾÷µ¥ÀÌÆ®ÇÏ¿©¾ß ÇÕ´Ï´Ù. ÃÖÇÏ ¾î¶² ¹öÀüÀÌ ÇÊ¿äÇÑÁö readme.txt¿¡¼­ ã¾Æ º¸½Ê½Ã¿À.



<¾Æ¹«À̸§>ÀÌ readme.txt¿¡ ÀÖ´Â Áö¿ø Ç÷§Æû ÁßÀÇ Çϳª°¡ ¾Æ´Ï¶ó¸é ¾ÈµË´Ï´Ù. ¸¸¾à <¾Æ¹«À̸§>ÀÌ º¼·£µå C¿Í °°Àº 16ºñÆ® DOS ÄÄÆÄÀÏ·¯¶ó¸é À̰ÍÀ¸·Î ÄÄÆÄÀÏÇÏ·Á´Â »ý°¢Àº Àؾî¹ö¸®´Â °ÍÀÌ ÁÁ½À´Ï´Ù :-)



WIP´Â "°³¹ßÁß(work in progress)"À» ÀǹÌÇÏ´Â ¾àÀÚÀ̸ç, Ãֽаø½Ä ¹èÆ÷ ¹öÀüº¸´Ù ³ªÁß¿¡ º¯°æµÈ °ÍÀ» ÀǹÌÇÕ´Ï´Ù. AllegroÀÇ WIP ¹öÀüÀº Allegro À¥»çÀÌÆ®(http://alleg.sourceforge.net/)¿¡¼­ ÆÐÄ¡ÀÇ ÇüÅ·Π±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ÃÖÁ¾ ¹èÆ÷ ¹öÀüÀ¸·Î Å×½ºÆ®µÈ °Í Á¤µµ´Â ¾Æ´ÏÁö¸¸ ±×·¡µµ º¸ÅëÀº »ó´çÈ÷ ¾ÈÁ¤ÀûÀÔ´Ï´Ù.



patch.exe¸¦ °¡Áö°í ÀÖ½À´Ï±î? ±×·¸Áö ¾Ê´Ù¸é djgpp¸¦ ´Ù¿î·ÎµåÇÑ °÷¿¡¼­ patch.exe¸¦ °¡Á®¿À½Ê½Ã¿À: ÀÌ µµ±¸´Â djgpp ÄÄÆÄÀÏ·¯ ¹èÆ÷ÆÇÀÇ Ç¥ÁØ ±¸¼ºÀÇ ÀϺÎÀÔ´Ï´Ù. patch ÇÁ·Î±×·¥À» °¡Áö°í ÀÖÁö¸¸ Àß µ¿ÀÛÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â ¾÷µ¥ÀÌÆ®ÇÏ·Á´Â Allegro ¹öÀüÀÌ ¼öÁ¤µÇÁö ¾ÊÀº »óÅ·ΠÃÖÁ¾ÀûÀ¸·Î ¼³Ä¡µÇ¾î Àִ°¡ È®ÀÎÇϽʽÿÀ (À̰ÍÀº º¸Åë WIP°¡ ¸¸µé¾îÁö±â ÀüÀÇ Ãֽаø½Ä ¹èÆ÷ ¹öÀüÀÌ µÉ °ÍÀÌÁö¸¸, È®½ÇÈ÷ Çϱâ À§ÇØ WIP¿¡ Æ÷ÇÔµÈ ÅØ½ºÆ® ÆÄÀÏÀ» Á¡°ËÇϽʽÿÀ).



ÀÌ ÆÄÀÏÀº WIP ¹öÀü°ú´Â º°µµ·Î ¹èÆ÷µË´Ï´Ù. ´ÙÀ½¿¡¼­ ´Ù¿î·ÎµåÇϽʽÿÀ: http://alleg.sourceforge.net/wip.html. (alldata.zip)



µÎ¹øÂ° À̹ÌÁö¸¦ Ç¥½ÃÇϸé ù¹øÂ° À̹ÌÁöÀÇ ÆÈ·¹Æ®°¡ ¾û¸ÁÀÌ µË´Ï´Ù.

À̰ÍÀº ´ÜÁö ºñµð¿À Çϵå¿þ¾î°¡ µ¿ÀÛÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù: ÇÑ ½ÃÁ¡¿¡¼­´Â ÇϳªÀÇ ÆÈ·¹Æ®¸¸À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̹ÌÁö¸¦ ÇϳªÀÇ µ¿ÀÏÇÑ ÆÈ·¹Æ®¸¦ »ç¿ëÇϵµ·Ï º¯È¯Çϰųª, Æ®·çÄ÷¯ ±×·¡ÇÈ ¸ðµå·Î ÀüȯÇϽʽÿÀ.



Allegro.cc ȨÆäÀÌÁö(http://www.allegro.cc/)¿¡¼­ FixPal³ª Smacker °°Àº À¯Æ¿¸®Æ¼¸¦ ã¾Æ º¸½Ê½Ã¿À.



±×·¹À̽ºÄÉÀÏ ÆÈ·¹Æ®¸¦ ¸¸µì´Ï±î?

VGA Çϵå¿þ¾î´Â °¢ »ö»ó ¿ä¼Ò´ç 6ºñÆ®¸¸À» »ç¿ëÇϹǷÎ, ÆÈ·¹Æ®ÀÇ Àû»ö, ³ì»ö, û»öÀÇ °ª Àº 0¿¡¼­ 63±îÁö¸¸ °¡´ÉÇϸç 255±îÁö´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î 2^18 = 262144 »ö»óÀ» »ç¿ëÇϰųª 64°³ÀÇ ±×·¹ÀÌ ´Ü°è¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°Í ÀÌ»óÀÇ »ö»óÀ» ÀÌ¿ëÇÏ·Á¸é VESA ÇÔ¼ö 0x4F08À» ÀÌ¿ëÇÏ¿© 8ºñÆ® DAC¸¦ ¼±ÅÃÇϵµ·Ï ÇÒ ¼ö ÀÖÁö¸¸, Allegro´Â À̰ÍÀ» Á÷Á¢ÀûÀ¸·Î Áö¿øÇÏÁö ¾ÊÀ¸¸ç, Àú´Â ¼­·Î ´Ù¸¥ Çϵå¿þ¾î¿¡ ´ëÇÏ¿© ¾ó¸¶³ª ½Å·ÚÇÒ ¼ö ÀÖ´ÂÁö ¸ð¸£°Ú½À´Ï´Ù.



256»ö ¸ðµå¸¦ ÀÌ¿ëÇÏ´Â °æ¿ì VGA Ä«´À´Â 0¹ø »ö»óÀ» Ç¥½Ã ¿µ¿ªÀÇ °æ°è¿¡ Ç¥½ÃÇÕ´Ï´Ù ( Æ®·çÄ÷¯ ¸ðµå¿¡¼­´Â °ËÀº»öÀÔ´Ï´Ù). 0¹ø »öÀ» °ËÀº»öÀÌ µÇµµ·Ï ÆÈ·¹Æ®¸¦ º¯°æÇϸé ÀÌ»óÇÑ »öÀÇ Å׵θ®´Â ¾ø¾îÁú °ÍÀÔ´Ï´Ù.



¸Å¿ì ¾î·Æ½À´Ï´Ù :-) ÆÈ·¹Æ®¸¦ ¹Ù²Ù´Â °Í°ú °°Àº ½¬¿î Æ®¸¯Àº ¾øÀ¸¹Ç·Î, À̹ÌÁö¸¦ ´õ ¹à°Ô Çϰųª ¾îµÎ¿î ÇüÅ·Π´Ù½Ã ±×¸®´Â °ÍÀ» ¹Ýº¹ÇÏ¿©¾ß ÇÕ´Ï´Ù. °ËÀº»öÀÇ Åõ°ú¼º Á÷»ç°¢ÇüÀ» ½ºÅ©¸°¿¡ µ¤¾î ±×·Á¼­ ¾îµÓ°Ô Çϰųª draw_lit_sprit()¸¦ ÀÌ¿ëÇÏ¿© ½ºÅ©¸°¿¡ º¹»çµÉ ¶§ À½¿µÀ» ÁÙ ¼öµµ ÀÖÁö¸¸, ÀÌ·¯ÇÑ µ¿ÀÛÀº ¸¹Àº °è»ê°ú ¸®¼Ò½º°¡ ÇÊ¿äÇϹǷΠºü¸¥ PC¿¡¼­¸¸ °¡´ÉÇÒ °ÍÀÔ´Ï´Ù!



¾î¶² Àϵµ ÀϾÁö ¾Ê½À´Ï´Ù. ¹«¾ùÀÌ À߸øµÈ °ÍÀϱî¿ä?

fade_in()°ú fade_out()Àº 8ºñÆ® ÆÈ·¹Æ® ¸ðµå¿¡¼­¸¸ µ¿ÀÛÇÕ´Ï´Ù. ºñÆ®¸ÊÀÇ ¹à±â¸¦ º¯È­½ÃŰ´Â ÇѰ¡Áö ¹æ¹ýÀº ¸ðµç Çȼ¿À» »ç¿ëÇÏ´Â ·çÇÁ¿¡¼­ °¢ Á¡À» º¯È­½ÃŰ´Â °ÍÀ̰í, ´Ù¸¥ ÇѰ¡Áö ¹æ¹ýÀº ½ºÅ©¸°¿¡ ¸¹Àº ¹ÝÅõ¸í °ËÀº »ç°¢ÇüÀ» ±×¸®´Â °ÍÀÔ´Ï´Ù. ±×·¸Áö¸¸ ÀÌµé ¹æ¹ýÀº µ¿ÀÛÀÌ ºü¸£Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù. exxfade.c ¿¹Á¦´Â µÎ °³ÀÇ ºñÆ®¸ÊÀÌ ¿À¹ö·¦µÇ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. À̰ÍÀ» º¯Çü½ÃÄÑ °ËÀº ½ºÅ©¸°À¸·ÎºÎÅÍ ¶Ç´Â °ËÀº ½ºÅ©¸°ÀÌ µÇµµ·Ï º¯ÇÏ°Ô ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¾ÕÀÇ Áú¹®À» Âü°íÇϽʽÿÀ.



Allegro ȨÆäÀÌÁö(http://www.talula.demon.co.uk/allegro/)¿¡¼­ DTA³ª Smacker¿Í °°Àº À¯Æ¿¸®Æ¼¸¦ ã¾Æ º¸½Ê½Ã¿À.



¹®¼­¿¡ ³ª¿À´Â "¹àÀº ÇÎÅ©"ÀÇ Àǹ̸¦ ¸ð¸£°Ú½À´Ï´Ù...

´ç½ÅÀÌ ÁÖ·Î ÀÌ¿ëÇÏ´Â ÆäÀÎÆ® ÇÁ·Î±×·¥¿¡¼­ RGB Á¶Á¤ µµ±¸¸¦ ÀÌ¿ëÇÏ¿© Àû»ö°ú û»öÀ» ÃÖ´ë°ªÀ¸·Î Çϰí(º¸ÅëÀº 255ÀÌÁö¸¸ »ç¿ëÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù) ³ì»öÀ» 0À¸·Î ¼³Á¤ÇϽʽÿÀ. ÀÌ °á°úÀÇ »ö»óÀÌ ¹Ù·Î ¸¶¹ýÀÇ "ÇÎÅ©"ÀÔ´Ï´Ù. ¶Ç ¾î¶² »ç¶÷µéÀº À̰ÍÀ» ¸¶Á¨Å¸(magenta)¶ó°í ÇÕ´Ï´Ù.



²ÀÁöÁ¡ À§Ä¡´Â °íÁ¤ ¼Ò¼öÁ¡ Çü½ÄÀ¸·Î ÀúÀåµÈ´Ù´Â °ÍÀ» ¸í½ÉÇϽʽÿÀ. ±×·¯¹Ç·Î itofix() ¸ÅÅ©·Î¸¦ »ç¿ëÇϰųª ÁÂÇ¥¸¦ 16ºñÆ® ¿ÞÂÊÀ¸·Î ½ÃÇÁÆ®ÇÏ¿©¾ß ÇÕ´Ï´Ù.



ȸÀüÀÇ °¢µµ´Â °íÁ¤ ¼Ò¼öÁ¡ Çü½ÄÀ¸·Î ÀúÀåµÈ´Ù´Â °ÍÀ» ¸í½ÉÇϽʽÿÀ. ±×·¯¹Ç·Î itofix() ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇϰųª ÁÂÇ¥¸¦ 16ºñÆ® ¿ÞÂÊÀ¸·Î ½ÃÇÁÆ®ÇÏ¿©¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, rotate_sprite(bmp, spr, x, y, itofix(32)) ¿Í °°ÀÌ ÇÏ¸é ±×·¡ÇÈÀ» 45µµ ȸÀü½Ãų °ÍÀÔ´Ï´Ù.



¾Æ¸¶µµ ´ç½ÅÀº ºñÆ®¸Ê Æ÷ÀÎÅ͸¦ °¡Áö°í ´ÙÀ̾ó·Î±× ±¸Á¶Ã¼¸¦ ÃʱâÈ­ÇÏ·Á Çϰí ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ̾ó·Î±×´Â ÄÄÆÄÀÏ ½Ã°£¿¡ »ý¼ºµÇÁö¸¸, ºñÆ®¸ÊÀº ½ÇÇà ½Ã°£¿¡¸¸ ¸¸µé¾îÁö¹Ç·Î ÄÄÆÄÀÏ·¯´Â ±×°ÍÀÌ ¾îµð¿¡ À§Ä¡ÇÏ°Ô µÉÁö¸¦ ¾ËÁö ¸øÇϱ⠶§¹®¿¡ À̰ÍÀº µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ̾ó·Î±× ±¸Á¶Ã¼¸¦ NULL Æ÷ÀÎÅ͸¦ °¡Áö°í ¿Ï¼º½ÃŰ°í³ª¼­, ºñÆ®¸ÊÀ» ¸Þ¸ð¸®·Î ÀоîµéÀÎ ÈÄ¿¡ ½ÇÁ¦ ºñÆ®¸Ê Æ÷ÀÎÅ͸¦ dp Çʵ忡 ÃʱâÈ­ ÄÚµå ºÎºÐ¿¡¼­ ³ÖÀ¸½Ê½Ã¿À.



±×°ÍÀº ¹«¾ùÀ» ÇÏ·Á´Â°¡¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ¿ÏÀü ºÒÅõ¸íÇÑ À̹ÌÁö¸¦ »ç¿ëÇÑ´Ù¸é RLE ½ºÇÁ¶óÀÌÆ®¸¦ »ç¿ëÇÏ¿© ¾òÀ» ¼ö ÀÖ´Â À̵æÀº ¾øÀ¸¸ç, ÀÏ¹Ý ºñÆ®¸ÊÀ» blit() ÇÔ¼ö¿Í ÇÔ²² »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ¸¶µµ ´õ ºü¸¦ °ÍÀÔ´Ï´Ù. ¸¶½ºÅ© ¿µ¿ªÀ» °¡Áö°í ÀÖ´Â ±×·¡ÇÈÀ̶ó¸é RLE ½ºÇÁ¶óÀÌÆ®°¡ °ÅÀÇ Ç×»ó Å©±âµµ ÀÛ°í draw_sprite() ÇÔ¼öº¸´Ù ºü¸¦ °ÍÀÔ´Ï´Ù. ÄÄÆÄÀÏ ½ºÇÁ¶óÀÌÆ®´Â ÀϹÝÀûÀ¸·Î ¸¶½ºÅ© À̹ÌÁöÀÇ °æ¿ì¿¡ À§ÀÇ µÎ°¡Áöº¸´Ù »ó´çÈ÷ ºü¸£°Ô µ¿ÀÛÇϸç, ºÒÅõ¸í Å©·¡ÇÈÀÇ °æ¿ì¿¡µµ Á¶±Ý ºü¸¨´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀº ¿©·¯°¡Áö º¯¼ö°¡ ÀÖ½À´Ï´Ù. ÄÄÆÄÀÏ ½ºÇÁ¶óÀÌÆ®´Â ±¸Çü PCÀÇ ¸ðµå-X¿¡¼­ÀÇ ÀÛÀº ½ºÇÁ¶óÀÌÆ®¿¡ ´ëÇÏ¿© °¡Àå Àß µ¿ÀÛÇϸç, ÆæÆ¼¾öÀÇ SVGA ¸ðµå¿¡¼­´Â blit()º¸´Ù ¾à°£ ´À¸± ¼ö ÀÖ½À´Ï´Ù (Å« »çÀÌÁîÀÇ ÄÄÆÄÀÏ ½ºÇÁ¶óÀÌÆ®´Â ij½ÃÀÇ ¼º´É¿¡ ¸Å¿ì ³ª»Ú°Ô ÀÛ¿ëÇÕ´Ï´Ù).



°ÔÀÓ ·ÎÁ÷ÀÌ Á¤ÇØÁø Á¤±Ô ¼Óµµ·Î °»½ÅµÇµµ·Ï ÇÏ¿©¾ß ÇÏÁö¸¸, ÄÄÇ»ÅͰ¡ ¼Óµµ¸¦ À¯ÁöÇϱ⿡ ³Ê¹« ´À¸° °æ¿ì¿¡´Â ½ºÅ©¸°À» ´Ù½Ã ±×¸®´Â °ÍÀ» À̵û±Ý °Ç´õ ¶Ùµµ·Ï ÇϽʽÿÀ.À̰ÍÀº ŸÀÌ¸Ó Çڵ鷯¸¦ ¼³Ä¡Çϰí À̰Ϳ¡ ÀÇÇØ Àü¿ª º¯¼ö°¡ °ÔÀÓ ·ÎÁ÷ ¼Óµµ¿¡ ¸ÂÃç Áõ°¡Çϵµ·Ï ÇÏ¸é °¡´ÉÇÕ´Ï´Ù. ¿¹¸¦ µé¸é:

      volatile int speed_counter = 0;

      void increment_speed_counter()
      {
         speed_counter++;
      }

      END_OF_FUNCTION(increment_speed_counter);

      void play_the_game()
      {
         LOCK_VARIABLE(speed_counter);
         LOCK_FUNCTION(increment_speed_counter);

         install_int_ex(increment_speed_counter, BPS_TO_TIMER(60));

         while (!game_over) {
            while (speed_counter > 0) {
               update_game_logic();
               speed_counter--;
            }

            update_display();
         }
      }

save_bitmap()À» È£ÃâÇÏ´Â Äڵ带 ¾îµò°¡¿¡ Ãß°¡ÇϽʽÿÀ. save_bitmap() ¹®¼­¿¡ ³ª¿À´Â ÀϹÝÀûÀÎ »ç¿ë ¹æ¹ý°ú ¿¹Á¦ Äڵ带 Âü°íÇϽʽÿÀ.



srand(time(NULL))À» ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ ºÎºÐ¿¡¼­ È£ÃâÇϰí, rand()%limit¸¦ »ç¿ëÇÏ¿© 0¿¡¼­ limit-1 »çÀÌÀÇ ·£´ý ¼ýÀÚ¸¦ ¾ò½À´Ï´Ù.



Àú´Â »ç¿îµå, ¼öÇÐ °è»ê, ȤÀº GUI ·çƾÀº ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù...

±×·² Çʿ䰡 ¾ø½À´Ï´Ù. ¸µÄ¿°¡ ¶óÀ̺귯¸®¿¡¼­ ½ÇÁ¦·Î »ç¿ëµÇ´Â ºÎºÐ¸¸À» Æ÷ÇÔ½Ãų °ÍÀ̹ǷΠȣÃâµÇÁö ¾Ê´Â °ÍÀº, ¸»ÇÏÀÚ¸é ÅØ½ºÃÄ ¸ÅÇÎÀ̳ª FLIC Àç»ý ÇÔ¼ö¿Í °°Àº °ÍÀ» È£ÃâÇÏÁö ¾Ê´Â´Ù¸é, ±×°ÍµéÀº ½ÇÇà ÆÄÀÏ¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. À̰ÍÀÌ ¿Ïº®ÇÏ°Ô µ¿ÀÛÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. AllegroÀÇ ÄÚµåÀÇ ¸¹Àº ºÎºÐÀÌ ÇÔ¼ö Æ÷ÀÎÅÍÀÇ Å×À̺íÀ» ÀÌ¿ëÇϰí ÀÖÀ¸¹Ç·Î ºÒÇÊ¿äÇÑ ·çƾÀÌ ¸µÅ©µÉ ¼öµµ ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î ´ëºÎºÐÀÇ ±×·¡ÇÈ ÇÔ¼öµéÀº ¸ðµç ½ÇÇà ÆÄÀÏ¿¡ Æ÷Ç﵃ °ÍÀÌÁö¸¸, ÀÌ·¯ÇÑ °ÍÀ» ÃÖ¼ÒÈ­ Çϵµ·Ï µµ·ÂÇÏ¿© ¿Ô½À´Ï´Ù. allegro.txt¿¡¼­ ±×·¡ÇȰú »ç¿îµå µå¶óÀ̹öÀÇ ÀϺθ¦ Á¦°ÅÇÏ´Â º¸´Ù Á¤È®ÇÑ ¹æ¹ý¿¡ ´ëÇÑ Á¤º¸¸¦ ÀÐ¾î º¸½Ê½Ã¿À.



¾ø½À´Ï´Ù. Àú´Â ÀÌ·¯ÇÑ Á¾·ùÀÇ Çϵå¿þ¾î Áö¿øÀº Allegro°¡ ¾Æ´Ñ ´õ¿í ÀûÀýÇÑ 3D APIÀÇ ÀϺηΠÇÏ´Â °ÍÀÌ °¡Àå È¿°úÀûÀ̶ó°í »ý°¢Çϸç, ¾ÕÀ¸·Î·Î º¯ÇÔ ¾øÀ» °ÍÀÔ´Ï´Ù. À̰ÍÀ» À§ÇÑ ÀÛ¾÷À» ¿øÇÑ´Ù¸é ÀúÀÇ ¼Ò°ßÀ¸·Î´Â MESA ¶óÀ̺귯¸® (OpenGLÀÇ °ø°³ ±¸Çö) °¡ ½Ã¹ßÁ¡ÀÌ µÉ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.



JGMOD ÆÐŰÁö¿Í °°Àº ¸î°³ÀÇ ¾ÆÁÖ ÁÁÀº °ÍµéÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù. Allegro.cc À¥»çÀÌÆ®(http://www.allegro.cc/)ÀÇ ¿Àµð¿À ¶óÀ̺귯¸® È®Àå ¼½¼ÇÀ» Âü°íÇϽʽÿÀ. ÀÌµé ¶óÀ̺귯¸®¸¦ Allegro¿¡ Æ÷ÇÔ½ÃŰ´Â Á¦¾ÈÀº Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ÁÖÁ¦¿¡ ´ëÇÑ Åä·ÐÀº ÀÌ¹Ì ¸ÞÀϸµ ¸®½ºÆ®¿¡¼­ Á¾°áµÇ¾úÀ¸¸ç, Àú´Â ±×°Ç¿¡ ÁöÃĹö·È½À´Ï´Ù.



±×°ÍÀº ¸Å¿ì ¸¹Àº ÀÛ¾÷À» ÇÊ¿ä·Î ÇÒ °ÍÀ̰í, Àú´Â Á÷Á¢ ÇÒ ½Ã°£ÀÌ ¾ø½À´Ï´Ù. ³×Æ®¿öÅ©»ó¿¡¼­ °³¹ßµÇ°í Àְųª µ¹¾Æ´Ù´Ï´Â ³×Æ®¿öÅ· ÆÐŰÁö°¡ ¸î°³ ÀÖ½À´Ï´Ù¸¸, ÀúÀÇ ÀÇÁ¯À¸·Î´Â ÀÌ·¯ÇÑ Á¾·ùÀÇ ÄÚ´À´Â AllegroÀÇ ÀϺΰ¡ ¾Æ´Ñ ¿ÜºÎ ¶óÀ̺귯¸®ÀÎ °æ¿ì¿¡ ´õ À¯¿ëÇÑ °Í °°½À´Ï´Ù.



Unisys¿¡¼­ GIF Çü½Ä¿¡ »ç¿ëµÇ´Â LZW ¾ÐÃà ¾Ë°í¸®µëÀÇ Æ¯Ç㸦 °®°í ÀÖ½À´Ï´Ù. Àú´Â AllegroÀÇ ¸ðµç ºÎºÐÀÌ ¾Æ¹«·± Á¦ÇÑ ¾øÀÌ ÀÚÀ¯·Ó°Ô »ç¿ëµÇ¾îÁö±â¸¦ ¹Ù¶ó¹Ç·Î, Àú´Â ·Î¾âƼÀÇ ÁöºÒÀ̳ª ¶óÀ̼¾½º¿¡ ±¸¼ÓµÇ´Â ÄÚµå´Â Æ÷ÇÔ½Ãų ¼ö ¾ø½À´Ï´Ù.



±×·² ¼öµµ ÀÖ½À´Ï´Ù. ¹®Á¦¸¦ ¹ß»ý½ÃŰ´Â ºÎºÐÀ» °¡Àå ÀÛ°Ô Ãà¼Ò½ÃÄÑ ºÐ¸®µÈ ÄÚµå·Î ¸¸µé¾î Áֽøé Á¦°¡ Á¡°ËÇØ º¸°Ú½À´Ï´Ù. Àú¿¡°Ô 10ÇàÀÇ ÇÁ·Î±×·¥À» º¸³»¸é ±×°ÍÀ» °íÄ¥ °ÍÀ̰í, 100ÇàÀ̶ó¸é ¾Æ¸¶ °íÄ¥ ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. 1000¶óÀÎÀ̶ó¸é ¾îÂîÇÒ ¼ö°¡ ¾ø½À´Ï´Ù :-)



¹°·ÐÀÔ´Ï´Ù. readme.txtÀÇ giftware ±ÔÁ¤À» Âü°íÇϽʽÿÀ. Àú´Â Allegro¸¦ °¡Áö°í ´ç½ÅÀÌ ¹«¾ùÀ» ÇÏ´øÁö ½Å°æ¾²Áö ¾ÊÀ¸¸ç, »ó¾÷¿ëÀ¸·Î »ç¿ëÇÏ´Â °Í¿¡µµ ¾Æ¹«·± ¹®Á¦°¡ ¾ø½À´Ï´Ù.



±×°ÍÀÌ ³¡³ª¸é ÀÔ´Ï´Ù! ¾à°£ÀÇ °Ý·Á´Â ¾ðÁ¦³ª ȯ¿µÀÌÁö¸¸, Àú´Â ¾î¶°ÇÑ ¿Ï¼º ÀÏÀÚµµ Á¤ÇÏÁö ¾Ê½À´Ï´Ù :-) ÀÛ¾÷ÀÌ ³¡³ª¸é °ð ¹Ù·Î °ø°³µÉ °ÍÀÔ´Ï´Ù.



grabber¿¡¼­ GRX³ª BIOS Çü½ÄÀÇ .fnt ÆÄÀÏÀ» Á÷Á¢ °¡Á®¿Ã ¼ö ÀÖÀ¸¸ç, ÆäÀÎÆ® ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© ÆùÆ®¸¦ .pcx ¿µ»ó¿¡ ±×·Áµµ µË´Ï´Ù. http://www.talula.demon.co.uk/ttf2pcx/¿¡¼­ À©µµ¿ìÁî Æ®·çŸÀÔÆùÆ®¸¦ .pcx Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â À¯Æ¿¸®Æ¼¸¦ ã¾Æ º¸½Ê½Ã¿À.



Allegro ȨÆäÀÌÁö(http://alleg.sourceforge.net/)ÀÇ ¸µÅ©¸¦ ã¾Æ º¸½Ê½Ã¿À. Gravis ÆÐÄ¡(.pat Çü½Ä)À̳ª SoundFont 2.0(.sf2) ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖÁö¸¸, ÈÄÀÚÀÇ °ÍÀº pat2dat À¯Æ¿¸®Æ¼¸¦ ÀÌ¿ëÇÏ¿© patches.dat ÆÄÀÏ·Î º¯È¯ÇÏ¿©¾ß ÇÕ´Ï´Ù.



makertf º¯È¯ À¯Æ¿¸®Æ¼ (ftp://ftp.coast.net/Coast/win3/winhelp/mkrtf104.zip) ¿Í À©µµ¿ìÁî µµ¿ò¸» ÄÄÆÄÀÏ·¯ (ftp://ftp.microsoft.com/Softlib/MSLFILES/HC505.EXE)¸¦ ´Ù¿î·ÎµåÇÏ¿©¾ß ÇÕ´Ï´Ù. Àӽà µð·ºÅ丮¸¦ ¸¸µé°í allegro/docs µð·ºÅ丮¿¡¼­ allegro.txi ÆÄÀÏÀ» º¹»çÇÑ ÈÄ¿¡ "makertf --no-warn allegro.txi -o allegro.rtf -J allegro.hpj" ¸í·ÉÀ» ½ÇÇà½Ã۰í "hcp allegro.hpj"¿Í °°ÀÌ ÇÏ¸é µË´Ï´Ù. µÎ¹øÂ° ¸í·ÉÀº ¸¹Àº °æ°í¸¦ Ç¥½ÃÇÒ °ÍÀÌÁö¸¸ ¹«½ÃÇÏ¿©µµ µË´Ï´Ù.



allegro.rtf ÆÄÀÏÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ¿öµå¿¡¼­ Àо ÇÁ¸°Æ®ÇÏ¸é µÇ´Âµ¥, ¸ÕÀú ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© ¸ñÂ÷¿Í À妽º Çʵ带 ¼öÁ¤ÇÏ¿© Á¤È®ÇÑ µ¥ÀÌÅͷΠä¿öÁöµµ·Ï ÇÏ¿©¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â TeX ÆÐŰÁö¸¦ ¼³Ä¡Çϰí tex°ú dvips ÇÁ·Î±×·¥À¸·Î allegro.txt¸¦ Æ÷½ºÆ®½ºÅ©¸³Æ® Çü½ÄÀ¸·Î º¯È¯ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.



Allegro.cc ȨÆäÀÌÁö http://www.allegro.cc/¿¡¼­ ã¾Æ º¸½Ê½Ã¿À. ¿©±â¿¡ Ãß°¡ÇÏ°í ½ÍÀº °ÍÀÌ ÀÖ´Ù¸é URLÀ» °Ô½ÃÇÏ¿© ÁֽʽÿÀ!



ÄÚµù ½À°üÀԴϱî?

PIÀÇ °ªÀÌ º¯°æµÇ¾î¾ßÇÒ Çʿ䰡 ÀÖÀ» °æ¿ì, ÇÁ·Î±×·¥ÀÇ À¯Áöº¸¼ö¸¦ ´Ü¼øÈ­ÇÕ´Ï´Ù. ¶ÇÇÑ À̰ÍÀº PI¿¡ ´Ù¸¥ °ªÀ» ÀÌ¿ëÇÏ´Â ´Ù¸¥ ÄÄÆÄÀÏ·¯·Î Æ÷ÆÃÇϱ⠽±°Ô ¸¸µé °ÍÀÔ´Ï´Ù.



¸¹Àº ±×·¡ÇÈ Ä«µåµéÀº ¹ö±×¸¦ °®°í ÀÖÀ¸¸ç, VESA ±¸ÇöÀÌ ¿ÏÀüÇÏÁö ¾Ê°í, ¶Ç vsync() ÇÔ¼ö°¡ ±¸ÇöµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ìµµ Á¾Á¾ ÀÖ½À´Ï´Ù. ±ô¹ÚÀÓ ¾øÀÌ ±×¸®±â ¿¹Á¦·Î¼­, ÀÚ½ÅÀ» ±×¸®±â À§ÇØ ¿©·¯ °¡Áö ¹æ¹ýÀ» »ç¿ëÇÏ´Â µ¥¸ð °ÔÀÓÀÇ Äڵ带 º¸½Ê½Ã¿À.



"while (!key[KEY_ENTER]);"°¡ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

ÃÖÀûÈ­¸¦ ÇÏÁö ¾ÊÀº »óÅ·ΠÄڵ尡 µ¿ÀÛÇÑ´Ù¸é, ±×°ÍÀº ÄÄÆÄÀÏ·¯ÀÇ À߸øÀÏ ¼ö ÀÖ½À´Ï´Ù! ÄÄÆÄÀÏ·¯°¡ ¸»À» Àß µè°Ô Çϱâ À§ÇØ ´ÙÀ½°ú °°ÀÌ ½ÃµµÇÒ ¼ö ÀÖ½À´Ï´Ù:

      while (!key[KEY_ENTER])
         yield_timeslice();
±×·¸Áö¸¸ ÀÌ °æ¿ì, readkey()¸¦ ´ë½Å »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. ¶Ç´Â ÄÄÆÄÀÏ·¯ÀÇ ¹öÀüÀ» ¹Ù²Ù´Â °ÍÀ» °í·ÁÇÏ¿© º¸½Ê½Ã¿À.



http://alleg.sourceforge.net/maillist.html¸¦ º¸½Ê½Ã¿À.