home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / basic / bmag / vgaanim.bas < prev   
Encoding:
BASIC Source File  |  1994-04-26  |  14.4 KB  |  266 lines

  1. '─ Area: F-QUICKBASIC ─────────────────────────────────────────────────────────
  2. '  Msg#: 332                                          Date: 21 Apr 94  17:20:00
  3. '  From: Robert Fisher                                Read: Yes    Replied: No 
  4. '    To: All                                          Mark:                     
  5. '  Subj: VGA Lesson #46  (Animation)
  6. '──────────────────────────────────────────────────────────────────────────────
  7. 'This LESSON demonstrates animation on a small scale.     
  8. 'The smaller the image you wish to animate, the faster    
  9. 'the speed of animation. You will see a portrait of a     
  10. 'typical character you would find in an RPG game. The     
  11. 'character's face is void of eyes and a mouth. When a     
  12. 'charcter talks, the eyes and lips are animated to        
  13. 'simulate speech. Below the portrait, you will see        
  14. 'four sets of eyes & mouth. We then GET these very        
  15. 'small images and use the PUT command to place them on    
  16. 'the blank face. We use the RAN(dom) command to determine 
  17. 'which facial features will be selected. There is a       
  18. 'timing loop to slow the animation down. You can adjust   
  19. 'this loop to decrease/increase the speed to suit your    
  20. 'particular PC processor speed. All the DATA statements   
  21. 'in this program merely represent individual pixels of    
  22. 'different colors. This particular RPG character is from  
  23. 'the 'MIGHT & MAGIC' game by New World Computing.         
  24. 'The four positions of the mouth are: Closed, 1/3 open,   
  25. '2/3 open and 3/3 open. The three positions of the eyes   
  26. 'are Open, Closed, and Raised Eyebrows.                   
  27. '                                                         
  28. CLS :
  29. RANDOMIZE TIMER
  30. SCREEN 13: CLS : DEF SEG = &HA000
  31. DIM M1%(300), M2%(300), M3%(300), M4%(300)
  32. DIM E1%(300), E2%(300), E4%(300)
  33.                                                             
  34. VGACOLORS:                                                
  35. C = -1: FOR N = 1 TO 768 STEP 3
  36. C = C + 1: READ B, G, R
  37. CL = (R * 256 ^ 2) + (G * 256) + B
  38. PALETTE C, CL: NEXT N
  39.                                                             
  40. READPICDATA:                                            
  41. FOR I = 1 TO 30: FOR J = 1 TO 30
  42. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  43. NEXT J: X1 = 0: Y1 = Y1 + 1: NEXT I
  44. Y1 = 39: X1 = 7: H1 = 7
  45.                                                             
  46. READEYES01:                                               
  47. FOR I = 1 TO 6: FOR J = 1 TO 16
  48. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  49. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  50. Y1 = 48: X1 = 11: H1 = 11: GET (7, 39)-(22, 44), E1%
  51. PUT (67, 39), E1%, PSET
  52. READMOUTH01:                                              
  53. FOR I = 1 TO 8: FOR J = 1 TO 8
  54. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  55. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  56. Y1 = 39: X1 = 37: H1 = 37: GET (11, 48)-(18, 55), M1%
  57. READEYES02:                                               
  58. FOR I = 1 TO 6: FOR J = 1 TO 16
  59. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  60. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  61. Y1 = 48: X1 = 41: H1 = 41: GET (37, 39)-(52, 44), E2%
  62. READMOUTH02:                                              
  63. FOR I = 1 TO 8: FOR J = 1 TO 8
  64. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  65. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  66. Y1 = 48: X1 = 71: H1 = 71: GET (41, 48)-(48, 55), M2%
  67.                                                             
  68. READMOUTH03:                                              
  69. FOR I = 1 TO 8: FOR J = 1 TO 8
  70. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  71. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  72. Y1 = 39: X1 = 97: H1 = 97: GET (71, 48)-(78, 55), M3%
  73.                                                             
  74. READEYES04:                                               
  75. FOR I = 1 TO 6: FOR J = 1 TO 16
  76. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  77. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  78. Y1 = 48: X1 = 101: H1 = 101: GET (97, 39)-(112, 44), E4%
  79. READMOUTH04:                                              
  80. FOR I = 1 TO 8: FOR J = 1 TO 8
  81. READ N: PSET (X1, Y1), N: X1 = X1 + 1
  82. NEXT J: X1 = H1: Y1 = Y1 + 1: NEXT I
  83. GET (101, 48)-(108, 55), M4%
  84.                                                             
  85. TALKINGHEAD:                                              
  86. LINE (1, 30)-(175, 60), 0, BF
  87. DO:                                                 
  88. T = INT(RND * 4) + 1: ON T GOTO F1, F2, F3, F4
  89. F1: PUT (7, 9), E1%, PSET: PUT (11, 18), M1%, PSET: GOTO F5
  90. F2: PUT (7, 9), E2%, PSET: PUT (11, 18), M2%, PSET: GOTO F5
  91. F3: PUT (7, 9), E1%, PSET: PUT (11, 18), M3%, PSET: GOTO F5
  92. F4: PUT (7, 9), E4%, PSET: PUT (11, 18), M4%, PSET
  93. F5: FOR I = 1 TO 500: NEXT I
  94. LOOP UNTIL INKEY$ <> ""
  95. END
  96.                                                             
  97. PALETTEDATA:                                              
  98. DATA 00,00,00,31,31,31,60,60,60,58,58,58,56,56,56,53,53,53
  99. DATA 51,51,51,49,49,49,47,47,47,44,44,44,42,42,42,40,40,40
  100. DATA 37,37,37,35,35,35,33,33,33,63,63,63,29,29,29,27,27,27
  101. DATA 25,25,25,23,23,23,21,21,21,19,19,19,17,17,17,15,15,15
  102. DATA 13,13,13,11,11,11,09,09,09,07,07,07,05,05,05,03,03,03
  103. DATA 01,01,01,00,00,00,63,58,58,62,53,53,61,48,48,60,44,44
  104. DATA 59,40,40,58,35,35,57,31,31,57,27,27,56,23,23,55,19,19
  105. DATA 54,16,16,53,12,12,52,08,08,51,05,05,50,02,02,50,00,00
  106. DATA 46,00,00,42,00,00,38,00,00,33,00,00,29,00,00,25,00,00
  107. DATA 21,00,00,17,00,00,13,00,00,63,29,00,55,25,00,48,22,00
  108. DATA 40,18,00,33,15,00,25,11,00,18,08,00,63,63,54,63,63,46
  109. DATA 62,63,38,62,63,30,62,63,22,61,63,14,61,63,06,59,61,00
  110. DATA 59,59,00,56,55,00,53,51,00,50,46,00,47,42,00,44,38,00
  111. DATA 41,34,00,38,31,00,34,26,00,30,22,00,26,18,00,22,15,00
  112. DATA 18,11,00,14,08,00,10,05,00,06,03,00,54,63,22,49,59,17
  113. DATA 45,56,13,41,52,10,37,49,06,33,45,03,29,42,01,26,39,00
  114. DATA 21,36,00,19,33,00,18,31,00,17,29,00,16,27,00,14,25,00
  115. DATA 13,23,00,12,21,00,11,19,00,47,62,47,39,60,38,32,58,31
  116. DATA 23,56,23,16,55,16,11,53,10,10,50,09,08,47,08,07,45,07
  117. DATA 06,42,06,05,39,04,04,36,04,03,34,03,02,31,02,02,28,02
  118. DATA 01,26,01,01,23,01,01,20,00,00,17,00,00,15,00,00,12,00
  119. DATA 00,09,00,00,07,00,60,60,63,56,56,63,51,51,63,47,47,63
  120. DATA 43,44,63,39,40,63,35,35,63,31,32,63,27,28,63,23,24,63
  121. DATA 19,20,63,15,16,63,11,12,63,07,08,63,03,04,63,00,01,63
  122. DATA 00,00,63,00,00,59,00,00,55,00,00,51,00,00,47,00,00,43
  123. DATA 00,00,39,00,00,36,00,00,32,00,00,28,00,00,24,00,00,20
  124. DATA 00,00,16,00,00,12,00,00,08,00,00,05,60,54,63,57,46,63
  125. DATA 54,39,63,52,31,63,50,23,63,47,16,63,45,08,63,42,00,63
  126. DATA 38,00,57,32,00,50,27,00,43,21,00,35,15,00,27,10,00,20
  127. DATA 06,00,12,02,00,05,51,63,63,45,59,59,39,56,56,34,53,53
  128. DATA 29,50,50,25,47,47,20,43,43,17,40,40,13,36,36,09,31,31
  129. DATA 07,27,27,04,23,23,02,19,19,01,15,15,00,11,11,00,07,07
  130. DATA 58,60,62,54,58,61,49,55,61,45,53,61,41,51,60,37,49,60
  131. DATA 33,48,60,29,46,59,25,44,59,21,43,59,17,41,58,13,40,58
  132. DATA 10,38,58,06,37,57,02,36,57,01,33,54,01,31,51,00,29,48
  133. DATA 00,27,45,00,25,43,00,23,40,00,21,37,00,20,34,00,18,31
  134. DATA 00,16,28,00,14,24,00,12,21,00,10,18,00,08,15,00,06,12
  135. DATA 00,05,09,00,03,06,63,58,55,63,55,51,63,53,48,63,51,44
  136. DATA 63,49,41,63,47,37,63,45,34,63,43,31,63,41,27,63,39,24
  137. DATA 60,37,23,58,36,22,56,34,21,54,33,20,52,32,20,50,31,19
  138. DATA 47,29,17,44,27,16,41,26,14,38,24,13,35,22,12,32,21,10
  139. DATA 29,19,09,26,17,08,23,15,07,20,13,06,17,12,05,14,10,03
  140. DATA 11,08,03,09,06,02,06,04,01,63,63,63                  
  141.                                                             
  142. PICTUREDATA:                                              
  143. DATA 208,207,208,208,208,207,208,208,208,207,145,145,144  
  144. DATA 144,144,144,144,144,145,145,208,207,208,208,208,207  
  145. DATA 208,208,208,207,207,208,207,208,207,208,207,208,146  
  146. DATA 146,144,144,139,139,139,139,139,144,144,144,146,146  
  147. DATA 207,208,207,208,207,208,207,208,207,207,207,207,207  
  148. DATA 207,207,146,145,145,144,139,139,139,139,139,139,139  
  149. DATA 140,144,145,145,146,207,207,207,207,207,207,207,206  
  150. DATA 207,206,207,206,207,146,145,144,144,139,138,138,138  
  151. DATA 138,138,138,138,139,146,146,144,145,146,206,207,206  
  152. DATA 207,206,207,206,206,206,206,206,146,145,144,146,139  
  153. DATA 138,138,138,138,138,138,138,138,138,139,146,148,144  
  154. DATA 145,146,206,206,206,206,206,205,206,206,206,146,145  
  155. DATA 144,146,144,137,137,137,137,137,137,137,137,137,137  
  156. DATA 137,144,146,148,144,145,146,206,206,205,206,206,206  
  157. DATA 206,146,145,144,146,146,249,249,248,248,247,247,247  
  158. DATA 247,247,247,248,248,249,249,146,148,144,145,146,205  
  159. DATA 206,205,205,206,146,145,144,144,148,249,247,246,245  
  160. DATA 244,244,244,244,244,244,244,244,245,246,247,249,148  
  161. DATA 148,144,145,146,205,206,205,205,146,144,148,151,247  
  162. DATA 235,235,235,235,235,235,235,235,235,235,235,235,235  
  163. DATA 235,235,235,247,151,148,144,146,205,205,204,146,144  
  164. DATA 148,151,247,245,235,235,235,235,235,235,235,235,235  
  165. DATA 235,235,235,235,235,235,235,245,247,151,148,144,146  
  166. DATA 205,204,144,148,151,240,242,245,235,235,235,235,235  
  167. DATA 235,235,235,235,235,235,235,235,235,235,235,245,242  
  168. DATA 240,151,148,144,204,144,148,151,156,238,242,242,235  
  169. DATA 235,235,235,235,235,235,235,235,235,235,235,235,235  
  170. DATA 235,235,242,242,238,156,151,144,144,144,148,151,156  
  171. DATA 238,245,238,235,235,235,235,235,235,235,235,235,235  
  172. DATA 235,235,235,235,235,235,238,245,238,156,151,148,144  
  173. DATA 144,151,156,156,238,247,238,235,235,235,235,235,235  
  174. DATA 235,235,235,235,235,235,235,235,235,235,238,247,238  
  175. DATA 155,156,148,144,148,151,156,156,239,242,240,232,233  
  176. DATA 234,234,234,235,238,235,232,238,238,235,234,234,233  
  177. DATA 232,240,242,239,156,156,151,148,148,151,156,156,155  
  178. DATA 238,241,236,232,232,234,235,240,233,235,230,234,240  
  179. DATA 235,234,232,232,236,241,238,155,156,156,151,148,148  
  180. DATA 151,151,156,156,155,241,240,236,233,235,235,235,238  
  181. DATA 240,240,238,235,235,235,233,236,240,241,155,156,156  
  182. DATA 156,151,148,148,151,151,156,156,156,244,240,238,238  
  183. DATA 235,235,235,235,235,235,235,235,235,235,238,238,240  
  184. DATA 244,156,156,156,151,151,148,148,148,151,151,156,156  
  185. DATA 155,241,236,235,235,235,235,235,235,235,235,235,235  
  186. DATA 235,235,236,241,155,156,156,151,151,151,148,148,148  
  187. DATA 151,151,151,156,156,155,236,235,235,235,235,235,235  
  188. DATA 235,235,235,235,235,235,236,156,156,156,151,151,151  
  189. DATA 148,148,144,148,148,151,151,151,156,156,244,236,235  
  190. DATA 235,235,235,235,235,235,235,235,235,236,244,156,156  
  191. DATA 151,151,151,148,148,144,144,144,148,148,148,151,151  
  192. DATA 156,246,243,236,235,235,235,235,235,235,235,235,236  
  193. DATA 243,246,156,151,151,151,148,148,144,144,151,151,144  
  194. DATA 144,148,148,148,151,246,243,240,235,235,235,235,235  
  195. DATA 235,235,235,240,243,246,151,151,148,148,148,144,144  
  196. DATA 151,151,151,151,151,144,144,148,148,148,244,241,235  
  197. DATA 235,235,235,235,235,235,235,241,244,148,148,148,148  
  198. DATA 144,144,151,151,151,148,148,151,151,151,151,144,144  
  199. DATA 148,148,244,235,235,235,235,235,235,235,235,244,148  
  200. DATA 148,148,144,144,151,151,151,151,148,148,148,148,148  
  201. DATA 151,151,151,144,144,148,148,235,235,235,235,235,235  
  202. DATA 235,235,148,148,144,144,151,151,151,151,148,148,148  
  203. DATA 148,148,148,148,148,148,151,151,144,144,148,148,244  
  204. DATA 241,239,239,241,244,148,148,144,144,151,151,151,148  
  205. DATA 148,148,148,148,148,148,148,148,148,148,148,151,151  
  206. DATA 144,144,148,148,244,239,239,244,148,148,144,144,151  
  207. DATA 151,148,148,148,148,148,148,148,148,148,148,148,148  
  208. DATA 148,148,148,151,151,144,144,148,148,240,240,148,148  
  209. DATA 144,144,151,151,148,148,148,148,148,148,148,148,148  
  210. DATA 148,148,148,148,148,148,148,148,151,151,144,144,148  
  211. DATA 244,244,148,144,144,151,151,148,148,148,148,148,148  
  212. DATA 148,148,148                                          
  213.                                                             
  214. EYES01:                                                   
  215. DATA 246,243,241,239,239,237,237,237,237,237,237,239,239  
  216. DATA 241,244,246,245,247,247,247,247,247,240,238,238,240  
  217. DATA 247,247,247,247,247,245,242,240,239,242,242,244,247  
  218. DATA 235,234,247,244,242,242,239,240,242,240,244,  3,148  
  219. DATA   8,242,244,235,232,244,242,  8,148,  3,244,240,237  
  220. DATA 237,237,237,240,240,240,235,232,240,240,240,237,237  
  221. DATA 237,237,233,234,235,235,236,238,238,235,232,240,238  
  222. DATA 238,236,235,234,233                                  
  223. MOUTH01:                                                  
  224. DATA 238,235,232,232,232,232,235,238,238,243,240,240,240  
  225. DATA 240,243,238,238,235,232,232,232,232,235,238,235,236  
  226. DATA 236,238,238,236,236,235,236,235,235,232,232,235,235  
  227. DATA 236,243,238,235,235,235,235,238,243,241,241,243,243  
  228. DATA 243,243,241,241,244,241,241,240,240,241,241,244      
  229. EYES02:                                                   
  230. DATA 246,243,241,239,239,237,237,237,237,237,237,239,239  
  231. DATA 241,244,246,245,247,247,247,247,247,240,238,238,240  
  232. DATA 247,247,247,247,247,245,242,240,239,240,242,244,247  
  233. DATA 235,234,247,244,242,240,239,240,242,240,242,239,237  
  234. DATA 240,242,244,235,232,244,242,240,237,239,242,240,237  
  235. DATA 237,242,242,242,242,240,235,232,240,242,242,242,242  
  236. DATA 237,237,233,234,235,235,236,238,238,235,232,240,238  
  237. DATA 238,236,235,234,233                                  
  238. MOUTH02:                                                  
  239. DATA 238,235,232,232,232,232,235,238,238,243,  8,  3,  3  
  240. DATA   8,243,238,238,235,232,232,232,232,235,238,235,236  
  241. DATA 236,238,238,236,236,235,236,235,235,232,232,235,235  
  242. DATA 236,243,238,235,235,235,235,238,243,241,241,243,243  
  243. DATA 243,243,241,241,244,241,241,240,240,241,241,244      
  244. MOUTH03:                                                  
  245. DATA 238,235,232,232,232,232,235,238,238,243,  8,  3,  3  
  246. DATA   8,243,238,238,240,245,245,245,245,240,238,235,235  
  247. DATA 232,232,232,232,235,235,236,236,236,238,238,236,236  
  248. DATA 236,240,235,235,232,232,235,235,240,243,240,235,235  
  249. DATA 235,235,240,243,244,241,243,243,243,243,241,244      
  250. EYES04:                                                   
  251. DATA 246,243,241,239,239,237,237,237,237,237,237,239,239  
  252. DATA 241,244,246,245,247,247,244,239,237,242,238,238,242  
  253. DATA 237,239,244,247,247,245,242,240,242,247,247,247,247  
  254. DATA 235,234,247,247,247,247,242,240,242,240,244,  3,148  
  255. DATA   8,242,244,235,232,244,242,  8,148,  3,244,240,237  
  256. DATA 237,237,237,240,240,240,235,232,240,240,240,237,237  
  257. DATA 237,237,233,234,235,235,236,238,238,235,232,240,238  
  258. DATA 238,236,235,234,233                                  
  259. MOUTH04:                                                  
  260. DATA 238,235,232,232,232,232,235,238,240,243,  8,  3,  3  
  261. DATA   8,243,240,240,245,247,247,247,247,245,240,235,240  
  262. DATA 245, 49, 49,245,240,235,236,235,232,232,232,232,235  
  263. DATA 236,240,236,236,238,238,236,236,240,243,238,235,232  
  264. DATA 232,235,238,243,244,240,235,235,235,235,240,244
  265.  
  266.