home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume20 / xboing / part18 < prev    next >
Encoding:
Text File  |  1993-09-03  |  54.5 KB  |  1,343 lines

  1. Newsgroups: comp.sources.x
  2. From: jck@kimba.catt.citri.edu.au (Justin Kibell)
  3. Subject: v20i125:  xboing - a simple blockout type game, Part18/26
  4. Message-ID: <1993Sep3.123450.8165@sparky.sterling.com>
  5. X-Md4-Signature: c98c3203e2378c9ff00e069c13900cf9
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Fri, 3 Sep 1993 12:34:50 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
  12. Posting-number: Volume 20, Issue 125
  13. Archive-name: xboing/part18
  14. Environment: X11, xpm, color
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # Contents:  CHANGES bitmaps/background3.xpm presents.c sfx.c
  21. #   sounds/stamp.au.uue
  22. # Wrapped by chris@sparky on Fri Sep  3 07:14:48 1993
  23. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  24. echo If this archive is complete, you will see the following message:
  25. echo '          "shar: End of archive 18 (of 26)."'
  26. if test -f 'CHANGES' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'CHANGES'\"
  28. else
  29.   echo shar: Extracting \"'CHANGES'\" \(11836 characters\)
  30.   sed "s/^X//" >'CHANGES' <<'END_OF_FILE'
  31. XXBoing Changes
  32. X==============
  33. X
  34. XVersion 1.6 - 6th August 1993
  35. X-----------------------------
  36. X
  37. X- Replied to mail argghhh.
  38. X- Added version number to presents screen.
  39. X- Fixed multiball bug where there may be 2 balls bouncing - i dies and you have
  40. X  none spare so it ends - no longer the case.
  41. X- Added some more doco to INSTALL and README
  42. X- Added a new special effect where the specials flash around on the intros.
  43. X- Changed the thankyou to thank you!! Requested too :-)
  44. X- NULL terminated the string returned form strftime() function in highscore.c
  45. X- Added some new backgrounds from Anthony's Icons Volume 1.3.
  46. X- Killed of the spin.au file as it kills the audio for some reason - put
  47. X  a new one in called intro.au that is a powerdown sound.
  48. X- All buttons now shoot bullets in game mode. Also the button starts of the
  49. X  ball instead of the space bar now.
  50. X- Starting level code added. You can start at any level but the highscore
  51. X  table will subtract the starting level from the level attained so the scores
  52. X  are kept even. ie: start = 34  end = 67  level = 33
  53. X- Answered mail - more patches.
  54. X- Note that xnews slows the game down heaps. Bummer.
  55. X- Lots of people getting bad drawable errors :-(
  56. X- FAST_SPEED has been changed from 3L to 1L for gruntish speed.
  57. X  thanks - billr@saab.cna.tek.com
  58. X- Changed a few levels like 7 & 8 to make them a tad easier.
  59. X- Changed the corner bouncing - idea pgh@computer-science.strathclyde.ac.uk
  60. X- Now supports NCD audio format. Thanks to Dave Lemke <lemke@verbosa.ncd.com>
  61. X- Fixed up SUNaudio.c to not have #ifdefs AUDIO.. everywhere - not needed now.
  62. X- Fixed up Imakefile so it wont install sounds if not required.
  63. X- Global highscore file only has one entry per person now. So god like beings
  64. X  cannot completely take over the whole scoreboard!!
  65. X- All level and score functions use u_long so that I can use htonl ntohl for
  66. X  network independent conversion of the score and level. May now work over
  67. X  networks where the machine has different byte ordering for score file only.
  68. X- Added a killer mode where the ball turns red and the ball goes through all
  69. X  blocks like butter. It is activated after 10 bonuses have been collected.
  70. X- Only real errors now get written to stderr - all others to stdout.
  71. X- Added some patches to Imakefile for audio on sparcs jra@hrcms.jazz.att.com
  72. X  Also patched SUNaudio.c so that it opens the audio device without hanging.
  73. X- Pointer grabbing is now an option with default OFF.
  74. X- Fixed bug in options code.
  75. X- You can now set the maximum value for the audio volume.
  76. X- Fixed a bug in the bonus coin code where on some levels they never appeared.
  77. X- Added heaps to the manual page especially on the options.
  78. X- Fixed bug with ball being killed off - didn't work correctly.
  79. X- No longer exits with errorcode 1 on normal exits.
  80. X- Changed the func RenderShape() so it only creates one huge backing store
  81. X  pixmap and reuses it so it reduces calls to server.
  82. X- MAXPATHLEN not found on SYSV apparently and bug in highscore.c fixed. Thanks
  83. X  to John M. Scott <jmscott@setex.august.com>
  84. X- Now displays how many bonuses you have during level.
  85. X- Plays sound when touching a block
  86. X- Added 3 env variables for the highscore file, levels dir, and sounds dir so
  87. X  that you can change them to point to your own cheat level files!!
  88. X
  89. X- Following changes provided by :-
  90. X   - Jean Yves VIONDURY (viondury@mururoa.imag.fr) and
  91. X     Olivier DUMAS (dumas@mururoa.imag.fr) from Bull-IMAG, France.
  92. X
  93. X    . The ball bounce on the paddle has been modified, so that the ball can
  94. X      be oriented better than before.
  95. X    . The autotilt-random function has been changed, to make the auto-tilt
  96. X      function more reliable.
  97. X    . Speed modifiers due to Warp values now propose a linear evolution.
  98. X    . The global high score file is locked when updated, to avoid conflicts
  99. X      and score losses when several people finish their game at the same time.
  100. X      This feature hasn't been extensively tested, as these situations aren't
  101. X      easy to provoke. But we rely on the system to make it work properly.
  102. X
  103. X- You will all notice the improved ball bouncing off the paddle thanks to the
  104. X  above dudes. Thanks again.
  105. X- Thanks to christos@deshaw.com for the patch on alt.sources regarding the
  106. X  extra error cases in error.c and the ansi trigraphs bug.
  107. X- Supports HP audio which I think is .au format as well on the device.
  108. X- Discovered the UNOFFFICIAL patch on export. Hmm - don't like the flag change!
  109. X- Sent a patch by soulard@corto.inria.fr that fixes the problem where the
  110. X  teleport can have problems when it puts the ball in an enclosed area. Thanks.
  111. X- Added a paddle shrink and expand block - removed paddlesize getting smaller
  112. X  as you get higher in the levels as it is too hard.
  113. X- Added README's in all subdirectories. Cleaned up code and directory.
  114. X
  115. X
  116. XVersion 1.5 - 23rd July 1993
  117. X----------------------------
  118. X
  119. X- Thanks for all the responses :-) I think I better post it to news!
  120. X  Our machine is slowwwwwing down from all those ftpers! I asked for it!
  121. X- After first posting I received quite a few mail messages about the
  122. X  Imakefile and compiling on other machines. Well I never said it would
  123. X  so I have now added the patches/suggestions.
  124. X- The semicolin missing was unfortunate. I use gcc by default and that
  125. X  of course didn't need that line of code. Sorry folks.
  126. X- Colourmap problems - well I did warn that it only works for colour!
  127. X  I'll try to get it to work for greyscale - XPM handles it but the
  128. X  pixmaps look bad as they were designed for colour only. Sorry.
  129. X- I forgot a manual page - Done. Please forgive me if it is pox as it is
  130. X  my first go at nroff.
  131. X- Updated the Imakefile more to include the directory installation.
  132. X- A few lose ends in highscore.c fixed. Also took some useless stuff out of
  133. X  the Imakefile.
  134. X- Added a pirate block that will kill the ball when hit. You can shoot the
  135. X  pirate 3 times and lose 1000 points, saves your ball though.
  136. X- Fixed the bullet bug where sometimes on a new level you couldn't shoot
  137. X  even if you had bags of ammo.
  138. X- Displays level name when starting.
  139. X- The way bonuses are added is much better now. Less time wasting.
  140. X- Turned off the graphics exposures in the graphics contexts to speed the
  141. X  while event loop up considerably. Wow, what a difference.
  142. X- Added the timer and special bonus area after squashing the message area
  143. X  smaller. This area will have a count down timer and special modes will be
  144. X  indicated in the special area. The bonus screen now uses the timer bonus.
  145. X- Added TrueColour to the colour test for all those SGI people.
  146. X- Added tink code to clear off tinks.
  147. X- Improvement for the bullet/ball collision.
  148. X- Added an I key for quick Iconification if the boss walks passed.
  149. X- Added a -scores option to print highscores to command line.
  150. X- If the user has a '&' in their gecos it should be expanded to their user
  151. X  name and then the first letter upper case. Patch by jeff@rd1.interlan.com
  152. X- Better parsing of level data. Time bonus is now part of level data.
  153. X- Fixed major ball debris bug. Easy - clear background before copying it for
  154. X  the backing store. Also done for the paddle/bullet. However, I must fix the 
  155. X  collision detection though. Sometimes a bit of a block is cut out. :-(
  156. X- Added code so that when the ball get stuck in a loop, if the paddle is not
  157. X  hit in n seconds then the board will auto tilt.
  158. X- Put code in to time the game and show up in highscore table.
  159. X  Updated both the X bit and commandline bit.
  160. X- Fiddled with the timing routines. Still a bit dodgy.
  161. X- Made some calls in highscore table better and to use misc routines.
  162. X- The ball collision detection now uses regions that get created as the block
  163. X  is created. This is better than a whole lot of if's if you ask me.
  164. X- Also fixed the addbonus code and made a MakeBlockGeometry function to
  165. X  make code more modular.
  166. X- Added a personal highscore feature. Your highscores get saved to a highscore
  167. X  file in your home directory.
  168. X- Took out the beep if the key isn't recognisied. Started shitting me!!
  169. X- Install procedure finally fixed. yeah.
  170. X- Made the mouse move the paddle relative to it's position. Asked for a lot.
  171. X- Also a new commandline option [-keys] will disable the mouse mode and only
  172. X  allow keys to move the paddle. This is better than having both.
  173. X- Added a reverse block - when hit the controls reverse for a time span.
  174. X- The highscore file is now always fchmod()ed to make sure permissions are
  175. X  correct for all players.
  176. X- Added a hyperspace block that will turn off the side wall for the
  177. X  ball and it will wrap around as such.
  178. X- Fixed the text routine calls in intro.c to use calls in misc.c
  179. X- Added SUN audio - yeah yeah yeah again.... -sound option for audio.
  180. X- Fixed the Imakefile to use the audio settings and how to find sounds.
  181. X- Added some sound effects. More later.
  182. X- Added code to highlight the score you just obtained in a game in highscore.
  183. X- Adjusted the code in bonus.c to allow the space to pressed to skip bonus
  184. X  animations but still add the bonus score onto the score etc.
  185. X- Add the specials display at bottom of the window indicating the current
  186. X  specials mode.
  187. X- Added another 10 levels to make a total of 40 levels. It is rather boring
  188. X  creating levels :-)
  189. X- Added a ball kill key <d>.
  190. X- Highscores are saved when quitting with q key.
  191. X- Redesigned the keys screen - added a = audio on/off g = game control
  192. X  added 1-9 for speed control
  193. X- Added an extra ball animation and block.
  194. X- Changed the ball slightly so that it has a white circle around it so it will
  195. X  stand out better on all backgrounds.
  196. X- Cursor is now gone and grabbed to main window.
  197. X- Added applause sound when level is finished.
  198. X- Found a bad bug in FreeBlocks() or something. Cool. fixes -static bug.
  199. X- The gun.c code is re-written so you can shoot more than 1 bullet at a time
  200. X  making a machine gun effect. Really cool!!
  201. X- Added the maching gun block. It now lasts for a whole level.
  202. X- Removed the fore/background colours for gcand to init.c instead of being
  203. X  in the misc.c code - reduces the rendershape routine down by 2 calls.
  204. X- Took out the backgrounds that were complicated and guady. 4 of them
  205. X- Added a walls off block
  206. X- Added a teleport block and it works.
  207. X- Audio can now be toggled on or off while playing game. a key
  208. X- Added the -setup option so sysops can find out whats going on.
  209. X- Removed the sideways level off on scrolling.
  210. X- Took out a few shitty things.
  211. X- Added the presenting screen and all its quirks. More sounds!
  212. X- Added a random block that changes colour every now and then.
  213. X- Fixed the event loops so that when it is iconified it uses hardly and cpu
  214. X  and is much better on the system. Almost dissapears of top!
  215. X- Added multi ball mode - what a change!! Anyway up to six balls can now
  216. X  bounce around causing havoc!
  217. X- Added sticky paddle block and mode - ball sticks to paddle and requires you
  218. X  to shoot it off again.
  219. X- Added some neat sound effects - sorry for the voice ones but I am no sound
  220. X  expert! :-)
  221. X- I think I have removed the flash before the window appears.
  222. X- Fixed they way the blocks explode after a bomb block.
  223. X- Pause is now more friendly to the system like iconify is.
  224. X- added a x2 and x4 bonus as well as fixing the old bonus code.
  225. X- Fixed the kill ball routine to work for multi balls - kill first in array.
  226. X- Made the x2 x4 turn off for each dead ball.
  227. X- You can now shoot some of the specials and get rid of them (3 times)
  228. X- Changed the way the ball checks for collisions - works well now - no
  229. X  left overs and few muck ups. Cool - at last.
  230. X- Manual page update - install updated - readme updated - Imakefile updated
  231. X- Fixed a few little bugs - cannot use escape in bonus mode 
  232. X
  233. XVersion 1.4/1.0 BETA
  234. X--------------------
  235. X
  236. X- Under developement, no time for notes. ;-)
  237. X
  238. X-------------------------------------------------------------------
  239. XJustin Kibell - jck@citri.edu.au - +61 3 282 2456 - Vic - Australia
  240. END_OF_FILE
  241.   if test 11836 -ne `wc -c <'CHANGES'`; then
  242.     echo shar: \"'CHANGES'\" unpacked with wrong size!
  243.   fi
  244.   # end of 'CHANGES'
  245. fi
  246. if test -f 'bitmaps/background3.xpm' -a "${1}" != "-c" ; then 
  247.   echo shar: Will not clobber existing file \"'bitmaps/background3.xpm'\"
  248. else
  249.   echo shar: Extracting \"'bitmaps/background3.xpm'\" \(10576 characters\)
  250.   sed "s/^X//" >'bitmaps/background3.xpm' <<'END_OF_FILE'
  251. X/* XPM */
  252. Xstatic char *background3_xpm[] = {
  253. X/* width height ncolors chars_per_pixel */
  254. X"100 100 3 1",
  255. X/* colors */
  256. X"` c #C0C0C0",
  257. X"a c #808080",
  258. X"b c #FFFFFF",
  259. X/* pixels */
  260. X"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  261. X"a`b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b```b`b`b`b`",
  262. X"a``a`a`a`aa``a`a`a`aa``a`a`a`aa``a`a`a`aa``a`a`a`aa```a`a`a`a``a`a`a`aa``a`a`a`aa``a`a`a`aaba`a`a`a`",
  263. X"a``a`a`a`aa``a`a`a`aa``a`a`a`aa``a`a`a`aaba`a`a`a`a``a`a`a`aa``a`a`a`aa``a`a`a`aa``a`a`a`aa``a`a`a`a",
  264. X"aba`a`a`a`a``a``a`a`a``a``a`a`a``a``a`a`a``a`a`a`aa``a``a`a`a```a`a`a`a``a``a`a`a``a``a`a`a``a``a`a`",
  265. X"aba``a``a`a``a`a`a`aa```a`a``aa```a`a``aa```a``a``a```a``a`aa``a`a``a`a``a`a`a`aa```a`a``aa``a`a`a`a",
  266. X"a``a`a`a`aaba`a`a``aabaa`a`a`aa``a`a`aa`a```a`a`aaaa`a`aa`a`a```a``a`aaba`a`a``aabaa`a`a`aaba`a`a`a`",
  267. X"aba`a``a`aa``a`a``aaa```a``a`aaba`a`a```aa`a`a`a```a``a```a`aa`a``aa`aa``a`a``aaa```a``a`aa``a``a``a",
  268. X"a``a`aa`a`a``a``aa``a`a``aa`a`a``a`a`aaaaa``a`a`aaaaba`aa``aa```aa``a`a```a`aa``a`a``aa`a`a``a`a`a``",
  269. X"aba`a``a`aa```a```aaabaa``a`aaa``aa`a`a`aa`a`a`a```a``a``a``aa````a``aa``a`a``aaabaa```a`aa``a`a`aa`",
  270. X"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  271. X"ab````````ab````````a`b`````b```b`b```b`````b````````b```````a``````````````````a`b```````ab````````",
  272. X"a````a```aa``a`a````aba``a``a`aa``a```a``aa`a````a`aa````````a````````aa````````aba`a`a```a````````a",
  273. X"abaa``aa``a```a`aaaaa``a``a`a`aa``aaa`a`a`a``aaa``a`a`aaa`aa`aa`aa`aa``a``aa`aa`a``a`a`aaaa`aaaaaa``",
  274. X"a```aa``aaabaa`a````a```aa`a`a`a`a```a`a`aa`a```aa`aa````a``a`a```a``aaaba``a``aa``a``a``aab``````aa",
  275. X"a``a```a`aa```a``aaaa``a``a`a`aa``a`a`a`a`a```aa``a`aa`a`a`a`aaba`a`a``a`a`a`a`aa`a``a`a`aa`aaa`aa``",
  276. X"aba`aaa`a`a`a``aa```a```a``a``aa```a`a`a`aaa`a``a``a`a``a`a`a`a``a`a`aaa``a`a`a`a``aa`a`a`a````a``aa",
  277. X"a``a```a`aabaa```aa`a``a`a`a`a`aa``a``a````aba`a`a``aa```a`a`aa```a`a``a```a`a`aa````a``a`a``a`a`a``",
  278. X"aba``aa``aa```aaa``aaa``a`a``a`aa`aaaa`aaaaa``a`a`aa`a``a`a```aa`a`a`a`aa``a``a`a``a`a`a`aaba`a`a``a",
  279. X"aba`a```aaaba`a``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aa``a``aa`a``a``a`aa`a`a`a`aa``a``a`aa``a``a`a`",
  280. X"aaaaaaaaaaaaaaaaaaa`a```````````````b````b```````aaaaaa`aaaa``aa```aa`a`a``a`a`aaa`aaaaaaaaaaaaaaaaa",
  281. X"ab````````ab`````b```ab````````aaa``a```a`a`a```````````a`aaaaaaaaaaaaaaa`aaaaaaaa`a``````ab````````",
  282. X"aba``a`a``a`````a`a`aa``aaaaaaa`aa``a`aa`a`aa```a`````a```````````a`a`aaa`````````b```````a```a``a``",
  283. X"aba`a`a``aa``aaa``a`aaba````````aaba`a``a`a`aa`aa`aaaaaa````````a`````b``````````a``a`a`aaa``a``a``a",
  284. X"a``a`a`aa`a`````aa`a`a``aa`aa`aa`a``a`a``a`a`a```a`````a``aaa`a`ab```a`aa``a`a`aaa`a`a`a``a``a`a`aa`",
  285. X"a```a`a``aa``aa```a`aa````a``a``aa```a`a``a`aa``a`aa`aaa````a`aaa`aa`a``a```a`a``a``a`a`aaa```a`a``a",
  286. X"aba`a``a`aa```a`aa`a`a``aa`a`a`a`aa`a`a`aa`a`a```a``a``aa`aa`a``a```a`a`aa`a`a`aaab`a``a`aaba`a`a`a`",
  287. X"a``a``a`a`a``a``a```aaa``aaaaaaaaaaaaaaaaaaaaa``a`a`a`a`a```a``aa``a`a`a`a``a``a`a`a``a`a`a``a`a`a`a",
  288. X"aba`aa`a`aa``a`a`aaaaaaaaa`````````b````b```aaaaa``a`a`aa``a`aa`aa``a`a`aa``a`a`aa``aa`a`aa```a``a``",
  289. X"a``a``a`a`a`aaaaaaa````b``````a``aa````aa````````aaaa`a`a``a```a`a``a``a`a```a`a`a````a``aa``a`a``aa",
  290. X"aaaaaaaaaaa``````b```aa```a`aa``aaa``aa`a`aa`aa`````aaaaaba`aa`a`a`a`aa`aabaa`a`aa``aa`aaaaaaaaaaaaa",
  291. X"ab````````a`````a`a`aa```a``a``a`aaba``a``a``aa``a``````aaaa``a`aa``a```aa```a`a`a`aaaaaaaa`````````",
  292. X"a```a`````a``a`a`a`a`aa``a`a`aa`aaa``a``aa`a`aa```a`a```a``aaaa`aa```aa`aa`a`aaaaaaaa```b```````````",
  293. X"aba``aaaa`a```a`a`a`aa```a`a```a`aaba`a```a`a`a``a`a`aa`a`````aaaa`aaaaaaa`aaaaaaa`b````a`a``a`aaaa`",
  294. X"a``aa````aa```a`a``a`aa``a`a`aa``aa``a`aaa`a`aa```a`a``aa````````a`aaaaaaa`a``b`b````a`a`aa```a````a",
  295. X"aba```aa`aa``a``a`a``aaba`aaaaaaaaaaaaaaaa`a`aa``a`a``a`a```aa```ab`b`b`bab`````aa``a`a`a`a``a`a`aa`",
  296. X"a``aa`a`a`a```aa`a`aaaaaaaaa```````b``````aaaaaba`a`aa`aa``a``aa`a``a`a`aa``a`aa`a```a``a`a``a``a``a",
  297. X"aba``a``a`a``a``aaaaaa````b`````aa````````````aaa``a``a`a``a`a``aa``a``a`a``a```aa``a`a`a`a```a`a`a`",
  298. X"a``a`a`a`aa`aaaaaa``ba```a`a`a`aaa``aaaaa`a`aa`b`aa``a`aa```a`a`aaba`aa`aaba`aaa`a```a`a`aa``a`a`a`a",
  299. X"a``a`aaaaaaaa```b```aa``a`a`a`a`aaba``````a`aa``a``aaa`aa``a``a`aa``a```aa``a```aa``a`a``aa```a`a`a`",
  300. X"a`aaaaaa``a`b```a`a`aa```a`a`a`aa```aa`aaa`aa````a```aa`a``a`a`aaa``a`aa`a``a`a`aa``a``aa`a`aaaaaaaa",
  301. X"a````b````a``a`a`a`a`a``a``a``a`a``a``a```aaa``a``a`a``aa``a`a``a``a`a``aa```a`a`a```a`aaaaaaa``````",
  302. X"a````a``a`a```a`a`a`aaba``a`aa`aa```a`a`aa`a````aa`a`a`aa`a``a`aa```a`a`aa`aa`a`aa``aaaaaaa`b```````",
  303. X"a``a`a`a`aa``a`a`a``aa`a`a`a``aa``aaaa`a``aa```a``a```aab`aaa``aa``a`a`aa````a``aa`aaa```ba```a`a`aa",
  304. X"aba`a`a`a`a```a``a`aaab`aaaaaaaaaaaaaaaaaaa```a`a``aa`aa````aaa`a```a`a`a``a`aaaaa```b```aa``a`a`a``",
  305. X"ab`a`a`a`aa``a`a`a``aaaaaaa`````b`b`b````aa`a`a`aa``aaa``a````aaa`aa`a`aa`aaaaa``a```a`a``a```a`a`a`",
  306. X"a`a`a`a``aa````a`aaaa````b````aa``a`a```aa```aaa``aa`aa```a`a``a`aaaaaaaa`a``b```ab`a`a`aaa``a`a`a`a",
  307. X"ab`a``a`a`a``aaaaaa`a````a`a`aa```a`a`aaa``````aaa``aa```a`a``aab``b``````````a`aa`a`a`a``a```a```a`",
  308. X"a```aa`a`aa`aaa```b`ab`a`a``aaa``a`a`a`aa``a`a```a`aaaba`a`a`aaa```a```aa```aa`aaaba``a`aaa``a`aa`a`",
  309. X"abaa`aaaaaa```b``aaaa``a``a``aaba`a`a`aa````a`a```aaab``a`a`a`a``a`a`a`a``a``a``a```a`a```a``a``a``a",
  310. X"aaaaaaa```a```aa```aaba`aa`aaa```a`a``aa``aa`a`aaaa```aa`a`a`aa```a`a`aa```aa``aa```a`a`aaa``aaaaaaa",
  311. X"a`b``b````ab`a```a`aa``a``a``a``a``a`aa``a``a`a`aa```a``a`a`aa```a``a`aa``a```aaa``a`a`a`aa`aaaa````",
  312. X"aba``a`a`aa`a`aaa`aa``a`a``aaaba`aa`aaab``a``a`aa```a`a``a`aaa``a`aa`aa```a`aa``a``a`aaaaaa```b`````",
  313. X"a``a`a``a`a``a```a`a```a`a``aa``a``a`a``a`aa``aaa``a``aa``a`a```a```a`a``a`a``aaa`aaaaa```ab`a`a`aa`",
  314. X"aba`a`aa`aaba`a`a`aa``a``aaaaaaaaaaaaa```a``a`aab```a``aaa`aaba`a`aa`aa```a`a`aaa`aa`b```aa`a`a`a``a",
  315. X"a``a`a```aa``a`a`a`a`aaaaaaaa```````aaaaa``a`aa```aa`a```aaa```a``a``aa``aaaaaaaa`b```a``aab`a`a``a`",
  316. X"aba`a`aaa`a```a`a`aaaaa```b`ab``````a`b`aaa`aaa``a``a`a```a`aaaaaaaaaaaaaaa````````a`a`aa`a`a``a`a`a",
  317. X"a``a`a```aa`a`aaaaaa`b````a`a``a`aa`a`````aa`a```a`a`a`aaaab````````aab``b`````a``a`a`a``aaba`a`a`a`",
  318. X"aba`a``a`aa`aaaa```a````a`aa``a`a``aaba`a```aa``a`a`a`a`aa``a```````a````a`a`aaa```a`a`a`aa``a`a`a`a",
  319. X"a``a`aaaaaa`a`b````ab`aa`a`a````a`aaa``a`a`a`a`a`a`a`a``aa````aaaa`aa```a`a``a`a``a`a``a`aaba``a``a`",
  320. X"a`aaaaaa```````a`aaa`a``a`aa``aa`a`a``a`a`a`a``aa`a``a`aa```aa````aaa``a`a`aa`aa```a`aa`aaa`aaaaaaaa",
  321. X"a````b````a``a``a`aaba`a`a`a````a`aa```a``a`a````aaa``aaaba``a`aa``aaba`a`a``aaa``a`a``aaaa`aa``````",
  322. X"a````a```aaba`aa``aa``a`a`aabaaa`a`a```a`a`aa``a```aaaaa```aa`a``aaa```a`a``a`aaba`aaaaa`a``b```````",
  323. X"a``aaa`aaaa``a```a`a`a`a``aa````a`aabaa``a`aaba``a```aaa``a```a`a`aa``a`a``aa`aaaaaa``````a``a`a`aaa",
  324. X"aba```a``aa``a`aa`aa```a`a`a`a`a``aa```aa`aaa``aa`a``````aaaaa`a`aaa```aaaaaaaaab```````aaaba`a`a```",
  325. X"aba`a``a`aaba`a``a`a`a``a`aaba`a`a`a`a```a`aa````a`a`aaa`````aaaaaaaaaaaaa``````````a`a``aa``a`a`aa`",
  326. X"a``a`aa`a`a``a``a`aa``aaaaaa`aaaaaaa``aaa`a`a``aa`a`a`a`````````````b``b``````aa``aa`a`a`aaba`a`a``a",
  327. X"aba`a``a`aaba``aa`aa`aaaaaaa``````aa`aaa`a`aa`a``a`a`aa```aaa`a```a``a``a`a`aaa```a``a`a`aa`a``a``a`",
  328. X"a``a`a``a`a``aaaaaaa`a``b`ba```````a````aaaaab`a``a`a`a``a```a`aaaa```aa``a`a`aa`a`a`a``aaab`a`a`a`a",
  329. X"aba`a`aa`aa`aaaaa````````a`a``a`a`aab``````aaaa`a`a``aa```aa``a```a``a``a`a``aa```a`a`a``aa``a``a`a`",
  330. X"aaaaaaaaaaa````b```a``a`a`aaba`a`a`a`a`a``````aaaa`a`aa``a``aa``aaa````a`a`aa`a``a`a`a`aaaa`aaaaaaaa",
  331. X"ab````````a`````a`aaba``a`aa``a`a`aa```a`a`aab````aaaaa``a`a```aa`a``aa`a`a```aa``aaaaaaaaa`````````",
  332. X"a`````````aba`aa`a`a``aa`a`a```a```a`aa`a`a`a```a````aaaaaa`aa`a`aa````a`aaaaaaaaaa`````b`ab``````a`",
  333. X"abaaaaaaaaa``a``a`aa````a`aa`a``aa`a```a`a`aa`a``a``````b``aaaaaaaaaaaaaaaaa``a`b``````a`aa`aaaaa``a",
  334. X"a````````aaba``a``aabaaa`a`a``aa`a`aa``a``a`a``a`a`aa`aa`a````````````````b````a```a`a`a`aab`````aa`",
  335. X"a``a`aa`a`a`a`aa`aaa````a``aa`````a`a`a``a``aa``a``a``aa```a``````aa```````a`aaa``a`a`a``aa`aa`aa``a",
  336. X"aba`a``a`aa``a``a``a`a`a`aaa``aaa`a`a``aa`aa`a`a`aa`aa`a``a`aaaaa`aa``aaaaa`a`aaba`a`a`aa`a```a``a``",
  337. X"a``a`a`a`aa```a``aaaba`a```aa````a`aa````a``aaba```a``aa``a``````a`a```````a`a`a``a`a`a``aa``a`a`aa`",
  338. X"aba`a`a``aabaa`aa``a``a`aaaaa`aaaaaaa`aa`a`a`a```aa``a`a``a`aa`aa`aa``aa`aa`a`aa```a```a`aaba`a`a``a",
  339. X"aba``a`a`aa`a`aaaaaaaaaaaaaaa`a`a`a`aaaaaaaaaaa`aa``aa`aa``a``a``a`a````a``a`a`a```a`a`a`aa``a``a`a`",
  340. X"aaaaaaaaaaaaaaaaaaaa`````b`bab````````b``````aaaaaaaa`a`a``a`a`a`a`aa`a`a`a``aaa`aaaaaaaaaaaaaaaaaaa",
  341. X"ab````````ab``b`b`b``````a`aa```a```aa`````````b````aaaaaaaaaaaaaaaaa`aaaaaaaaaaa`````````ab````````",
  342. X"a```a``a``a```a`a`aaa`a`a`a`a``a`aa`aaba`aaa`aa```````````b`````````a`````````````````````a```a``a``",
  343. X"a``a``a``aa``a`a``a`a``a`a``aa``a``a`a``a```a`aa`aa`a```aa`a````````a`````a````aa`a`aa`aaaa``a``a``a",
  344. X"aba`aa`aa`a``a``aa`aaba`a`aa`a`a`a`a`aa``aa``a`a```a`aa`aa``a`aaaa`aa``aa``aaa`aab`a``a```a``a`a`aa`",
  345. X"a``a``a``aa``aa```a`a``a`a``aa```a``a`a```aa`a`a`a``a``a`a```a````a`aa```a```a`aa``a`a`aaaa``a`a```a",
  346. X"aba``a`a`aaba`a`aa`aaba`a``a`a``a`aa`aabaa``a`aa``aa``a``aa``a`aa`a`aa``a`aaa``aaba`a`a``aaba``a`aa`",
  347. X"aba`aa`a`aa``a``a``aa``a``a`aaba`a``a`a````a`a`aa````aa`a`a`a`a``a`a`aba`a````aaa``a`a``a`a`a`a`a``a",
  348. X"a``a``a`a`a``a`a`a`aa``a`a`a`a``a`a``aa``aa`a```a`a`a``a`aa```a`a`a`aa``a`aa`a``a```a`aa`aa``a`a`a``",
  349. X"aba`a``a`aa```a`a`a`a``a`aa`aaa`aaaaaaaa`aa`aaaaa``a`a``a`a``a`a`a```a```a``a`aaa`a``a``a`a```a`a`aa",
  350. X"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa",
  351. X"ab````````ab````````ab`````````b`b`b`b````b`b`b```b````````a`````````a``````````a`````````ab````````",
  352. X"a```a``a``a``a````a`a````````aa``a`a`a`a``a`a`a``a`````````a``````````ab````````aba``a``a`a```a`````",
  353. X"aba``a``aaa```aaa``aa`aaaaa`a`a``a``a`aa```a`a`aaa`aaaaa`a`a``aa`aaa`aa`aaa`aaa`a``a``a``aa`a``aaaa`",
  354. X"a``aa`aa`aabaa```a`aab`````a`aaba`aa`a`aa`a`a`a``a``````a`aaa```a``a`aab```a```aaba`aa`a`aab`aa````a",
  355. X"aba``a```aa`a``a`a`aa`aa`aa``aa``a``a``aa``a`a``aaa``aa`a`a`a`a`a`a``aa`aaa`a`aaa``a```a`aa`a``a`aa`",
  356. X"a``a`a`aa`a``aa`a`a`a```a``aa`a```a``aa`aba``a`a`aa``a`a`a`aab`a`a`aa`a````a`a``a`a`aa`a`aa``a``a``a",
  357. X"aba`a`a``aa````a`a`aa``a`a```aa`a`aa```aa``a`a`a`aa```a`a`a`a``a``a``aa``a``a`aaaba```a`a`a``aa`a`a`",
  358. X"a``a`a`a`aa``aa`a``aaba`a`aa`aab`a``aa`aaba`a`a`a`aba`a``a`aaba`aa`a`aaba`aa`a`aa```aa`a`aaba``a`a`a",
  359. X"aba`a``a`aaba``a``aaa``a``a``aa`a`a`a``aa`a`a``a`aa``a``a``aa``a```a`aa``a``a``aa``a``a``aa`a`a`a`a`"
  360. X};
  361. END_OF_FILE
  362.   if test 10576 -ne `wc -c <'bitmaps/background3.xpm'`; then
  363.     echo shar: \"'bitmaps/background3.xpm'\" unpacked with wrong size!
  364.   fi
  365.   # end of 'bitmaps/background3.xpm'
  366. fi
  367. if test -f 'presents.c' -a "${1}" != "-c" ; then 
  368.   echo shar: Will not clobber existing file \"'presents.c'\"
  369. else
  370.   echo shar: Extracting \"'presents.c'\" \(12354 characters\)
  371.   sed "s/^X//" >'presents.c' <<'END_OF_FILE'
  372. X#include "copyright.h"
  373. X
  374. X/*
  375. X *  Include file dependencies:
  376. X */
  377. X
  378. X#include <stdio.h>
  379. X#include <stdlib.h>
  380. X#include <stddef.h>
  381. X#include <X11/Xlib.h>
  382. X#include <X11/Xutil.h>
  383. X#include <X11/Xos.h>
  384. X#include <xpm.h>
  385. X
  386. X#include "error.h"
  387. X#include "misc.h"
  388. X#include "main.h"
  389. X#include "init.h"
  390. X#include "intro.h"
  391. X#include "audio.h"
  392. X#include "stage.h"
  393. X#include "mess.h"
  394. X#include "version.h"
  395. X
  396. X#include "bitmaps/flag.xpm"
  397. X#include "bitmaps/earth.xpm"
  398. X#include "bitmaps/titleX.xpm"
  399. X#include "bitmaps/titleB.xpm"
  400. X#include "bitmaps/titleO.xpm"
  401. X#include "bitmaps/titleI.xpm"
  402. X#include "bitmaps/titleN.xpm"
  403. X#include "bitmaps/titleG.xpm"
  404. X#include "bitmaps/justin.xpm"
  405. X#include "bitmaps/kibell.xpm"
  406. X#include "bitmaps/presents.xpm"
  407. X
  408. X#include "presents.h"
  409. X
  410. X/*
  411. X *  Internal macro definitions:
  412. X */
  413. X
  414. X#define GAP 10
  415. X
  416. X/*
  417. X *  Internal type declarations:
  418. X */
  419. X
  420. X#if NeedFunctionPrototypes
  421. Xvoid SetPresentWait(int newMode, int waitFrame);
  422. Xvoid DoPresentWait(void);
  423. X#else
  424. Xvoid SetPresentWait();
  425. Xvoid DoPresentWait();
  426. X#endif
  427. X
  428. X/*
  429. X *  Internal variable declarations:
  430. X */
  431. X
  432. Xstatic int nextFrame = 0;
  433. Xstatic int endFrame = 0;
  434. Xstatic int startFrame = 0;
  435. Xenum PresentStates PresentState;
  436. Xstatic Pixmap flagPixmap, flagPixmapM, earthPixmap, earthPixmapM;
  437. Xstatic Pixmap titlePixmap[6], titlePixmapM[6];
  438. Xstatic Pixmap justin, justinM, kibell, kibellM, presents, presentsM;
  439. Xstatic int waitingFrame, waitMode;
  440. X
  441. X#if NeedFunctionPrototypes
  442. Xvoid SetUpPresents(Display *display, Window window, Colormap colormap)
  443. X#else
  444. Xvoid SetUpPresents(display, window, colormap)
  445. X    Display *display;
  446. X    Window window;
  447. X    Colormap colormap;
  448. X#endif
  449. X{
  450. X    XpmAttributes   attributes;
  451. X    int             XpmErrorStatus;
  452. X
  453. X    attributes.valuemask = XpmColormap;
  454. X    attributes.colormap = colormap;
  455. X
  456. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, flag_xpm,
  457. X        &flagPixmap, &flagPixmapM, &attributes);
  458. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(flag)");
  459. X
  460. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleX_xpm,
  461. X        &titlePixmap[0], &titlePixmapM[0], &attributes);
  462. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleX)");
  463. X
  464. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleB_xpm,
  465. X        &titlePixmap[1], &titlePixmapM[1], &attributes);
  466. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleB)");
  467. X
  468. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleO_xpm,
  469. X        &titlePixmap[2], &titlePixmapM[2], &attributes);
  470. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleO)");
  471. X
  472. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleI_xpm,
  473. X        &titlePixmap[3], &titlePixmapM[3], &attributes);
  474. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleI)");
  475. X
  476. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleN_xpm,
  477. X        &titlePixmap[4], &titlePixmapM[4], &attributes);
  478. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleN)");
  479. X
  480. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleG_xpm,
  481. X        &titlePixmap[5], &titlePixmapM[5], &attributes);
  482. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleG)");
  483. X
  484. X    /* Justin kibell presents */
  485. X
  486. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, justin_xpm,
  487. X        &justin, &justinM, &attributes);
  488. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(justin)");
  489. X
  490. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, kibell_xpm,
  491. X        &kibell, &kibellM, &attributes);
  492. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(kibell)");
  493. X
  494. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, presents_xpm,
  495. X        &presents, &presentsM, &attributes);
  496. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(presents)");
  497. X
  498. X    /* Create the earth pixmap */
  499. X
  500. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, earth_xpm,
  501. X        &earthPixmap, &earthPixmapM, &attributes);
  502. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(earth)");
  503. X
  504. X    /* Free the xpm pixmap attributes */
  505. X    XpmFreeAttributes(&attributes);
  506. X
  507. X    /* Setup intro to initial state */
  508. X    ResetPresents();
  509. X}
  510. X
  511. X#if NeedFunctionPrototypes
  512. Xstatic void DrawLetter(Display *display, Window window, int letter, 
  513. X    int x, int y)
  514. X#else
  515. Xstatic void DrawLetter(display, window, letter, x, y)
  516. X    Display *display;
  517. X    Window window;
  518. X    int letter;
  519. X    int x, y;
  520. X#endif
  521. X{
  522. X    switch(letter)
  523. X    {
  524. X        case 0:
  525. X            RenderShape(display, window, titlePixmap[0], titlePixmapM[0],
  526. X                x, y, 71, 74, False);
  527. X            break;
  528. X
  529. X        case 1:
  530. X            RenderShape(display, window, titlePixmap[1], titlePixmapM[1],
  531. X                x, y, 73, 74, False);
  532. X            break;
  533. X
  534. X        case 2:
  535. X            RenderShape(display, window, titlePixmap[2], titlePixmapM[2],
  536. X                x, y, 83, 74, False);
  537. X            break;
  538. X
  539. X        case 3:
  540. X            RenderShape(display, window, titlePixmap[3], titlePixmapM[3],
  541. X                x, y, 41, 74, False);
  542. X            break;
  543. X
  544. X        case 4:
  545. X            RenderShape(display, window, titlePixmap[4], titlePixmapM[4],
  546. X                x, y, 85, 74, False);
  547. X            break;
  548. X
  549. X        case 5:
  550. X            RenderShape(display, window, titlePixmap[5], titlePixmapM[5],
  551. X                x, y, 88, 74, False);
  552. X            break;
  553. X
  554. X        default:
  555. X            ErrorMessage("Error: In default for DrawLetter()");
  556. X    }
  557. X}
  558. X
  559. X#if NeedFunctionPrototypes
  560. Xvoid DoPresentFlag(Display *display, Window window)
  561. X#else
  562. Xvoid DoPresentFlag(display, window)
  563. X    Display *display;
  564. X    Window window;
  565. X#endif
  566. X{
  567. X    char string[80];
  568. X    int y, x;
  569. X
  570. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 35;
  571. X
  572. X    /* Draw the flag bitmap */
  573. X    RenderShape(display, window, flagPixmap, flagPixmapM,
  574. X        x, 15, 71, 40, True);
  575. X    DrawShadowCentredText(display, window, textFont, 
  576. X        "Proudly Australian Made", 
  577. X        65, white, PLAY_WIDTH + MAIN_WIDTH);
  578. X
  579. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 207;
  580. X    RenderShape(display, window, earthPixmap, earthPixmapM,
  581. X        x, 100, 415, 415, False);
  582. X
  583. X    y = MAIN_HEIGHT + PLAY_HEIGHT - 50;
  584. X
  585. X    /* Construct a copyright message leaving space for the copyright circle */
  586. X    strcpy(string, "  Copyright 1993 Justin C. Kibell, All Rights Reserved");
  587. X    string[0] = 0xa9;  /* Copyright circle */
  588. X    DrawShadowCentredText(display, window, copyFont, string, y, white, 
  589. X        PLAY_WIDTH + MAIN_WIDTH);
  590. X
  591. X    /* My email address for contact and fame :-) */
  592. X    DrawShadowCentredText(display, window, copyFont,
  593. X        "email: jck@citri.edu.au", y + 15, white, PLAY_WIDTH + MAIN_WIDTH);
  594. X    DrawShadowCentredText(display, window, copyFont,
  595. X        "Version 1.6", y + 30, white, PLAY_WIDTH + MAIN_WIDTH);
  596. X}
  597. X
  598. X#if NeedFunctionPrototypes
  599. Xstatic void DoText1(Display *display, Window window)
  600. X#else
  601. Xstatic void DoText1(display, window)
  602. X    Display *display;
  603. X    Window window;
  604. X#endif
  605. X{
  606. X    int x, y;
  607. X
  608. X    if (noSound == False) playSoundFile("intro", 50);
  609. X
  610. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 142;
  611. X    y = 200;
  612. X
  613. X    /* Render the Justin bitmap */
  614. X    RenderShape(display, window, justin, justinM,
  615. X        x, y, 285, 44, False);
  616. X
  617. X    SetPresentWait(PRESENT_TEXT2, frame + 500);
  618. X}
  619. X
  620. X#if NeedFunctionPrototypes
  621. Xstatic void DoText2(Display *display, Window window)
  622. X#else
  623. Xstatic void DoText2(display, window)
  624. X    Display *display;
  625. X    Window window;
  626. X#endif
  627. X{
  628. X    int x, y;
  629. X
  630. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 130;
  631. X    y = 300;
  632. X
  633. X    /* Render the Justin bitmap */
  634. X    RenderShape(display, window, kibell, kibellM,
  635. X        x, y, 260, 40, False);
  636. X
  637. X    SetPresentWait(PRESENT_TEXT3, frame + 500);
  638. X}
  639. X
  640. X#if NeedFunctionPrototypes
  641. Xstatic void DoText3(Display *display, Window window)
  642. X#else
  643. Xstatic void DoText3(display, window)
  644. X    Display *display;
  645. X    Window window;
  646. X#endif
  647. X{
  648. X    int x, y;
  649. X
  650. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 205;
  651. X    y = 400;
  652. X
  653. X    /* Render the Justin bitmap */
  654. X    RenderShape(display, window, presents, presentsM,
  655. X        x, y, 410, 44, False);
  656. X
  657. X    SetPresentWait(PRESENT_LETTERS, frame + 750);
  658. X}
  659. X
  660. Xint dists[] =
  661. X{
  662. X    71, 73, 83, 41, 85, 88
  663. X};
  664. X
  665. X#if NeedFunctionPrototypes
  666. Xstatic void DoLetters(Display *display, Window window)
  667. X#else
  668. Xstatic void DoLetters(display, window)
  669. X    Display *display;
  670. X    Window window;
  671. X#endif
  672. X{
  673. X    static int i = 0;
  674. X    static int x = 40;
  675. X
  676. X    if (i < 6)
  677. X    {
  678. X        if (noSound == False)
  679. X            playSoundFile("stamp", 100);
  680. X
  681. X        DrawLetter(display, window, i, x, 550);
  682. X        x += 10 + dists[i];
  683. X
  684. X        DrawLine(display, window, 30, 530, 
  685. X            (MAIN_WIDTH + PLAY_WIDTH) - 30, 530, red, 2);
  686. X
  687. X        DrawLine(display, window, 30, 644, 
  688. X            (MAIN_WIDTH + PLAY_WIDTH) - 30, 644, red, 2);
  689. X
  690. X        SetPresentWait(PRESENT_LETTERS, frame + 500);
  691. X    }
  692. X    else
  693. X    {
  694. X        SetPresentWait(PRESENT_CLEAR, frame + 2000);
  695. X    }
  696. X
  697. X    i++;
  698. X}
  699. X
  700. X#if NeedFunctionPrototypes
  701. Xstatic void DoClear(Display *display, Window window)
  702. X#else
  703. Xstatic void DoClear(display, window)
  704. X    Display *display;
  705. X    Window window;
  706. X#endif
  707. X{
  708. X    static int yt, yb;
  709. X    static int first = True;
  710. X
  711. X    if (first == True)
  712. X    {
  713. X        yt = 0;
  714. X        yb = PLAY_HEIGHT + MAIN_HEIGHT - 5;
  715. X        first = False;
  716. X        nextFrame = frame;
  717. X
  718. X        if (noSound == False)
  719. X            playSoundFile("whoosh", 70);
  720. X
  721. X    }
  722. X
  723. X    if (frame >= nextFrame)
  724. X    {
  725. X        /* Clear and draw lines */
  726. X        XClearArea(display, window, 0, yt, PLAY_WIDTH + MAIN_WIDTH, 10, False);
  727. X        yt += 10;
  728. X        DrawLine(display, window, 2, yt, PLAY_WIDTH + MAIN_WIDTH-2, yt, red, 1);
  729. X
  730. X        XClearArea(display, window, 0, yb, PLAY_WIDTH + MAIN_WIDTH, 10, False);
  731. X        yb -= 10;
  732. X        DrawLine(display, window, 2, yb, PLAY_WIDTH + MAIN_WIDTH-2, yb, red, 1);
  733. X
  734. X        if (yt > ((PLAY_HEIGHT + MAIN_HEIGHT) / 2))
  735. X            SetPresentWait(PRESENT_FINISH, frame + 20);
  736. X
  737. X        nextFrame = frame + 20;
  738. X    }
  739. X}
  740. X
  741. X#if NeedFunctionPrototypes
  742. Xvoid QuickFinish(Display *display, Window window)
  743. X#else
  744. Xvoid QuickFinish(display, window)
  745. X    Display *display;
  746. X    Window window;
  747. X#endif
  748. X{
  749. X    /* User has pressed space so finish early */
  750. X    SetPresentWait(PRESENT_FINISH, frame);
  751. X}
  752. X
  753. X#if NeedFunctionPrototypes
  754. Xstatic void DoFinish(Display *display, Window window)
  755. X#else
  756. Xstatic void DoFinish(display, window)
  757. X    Display *display;
  758. X    Window window;
  759. X#endif
  760. X{
  761. X    /* Free all the pixmaps used in this intro */
  762. X    FreePresents(display);
  763. X
  764. X    /* Erase all stuff in window */
  765. X    XClearWindow(display, mainWindow);
  766. X
  767. X    /* Map all the windows */
  768. X    MapAllWindows(display);
  769. X
  770. X    /* Now jump into the intro mode */
  771. X    ResetIntroduction();
  772. X    mode = MODE_INTRO;
  773. X}
  774. X
  775. X#if NeedFunctionPrototypes
  776. Xvoid Presents(Display *display, Window window)
  777. X#else
  778. Xvoid Presents(display, window)
  779. X    Display *display;
  780. X    Window window;
  781. X#endif
  782. X{
  783. X    switch (PresentState)
  784. X    {
  785. X        case PRESENT_FLAG:
  786. X            DoPresentFlag(display, window);
  787. X            PresentState = PRESENT_TEXT1;
  788. X            break;
  789. X
  790. X        case PRESENT_TEXT1:
  791. X            if ((frame % 10) == 0)
  792. X                DoText1(display, window);
  793. X            break;
  794. X
  795. X        case PRESENT_TEXT2:
  796. X            if ((frame % 10) == 0)
  797. X                DoText2(display, window);
  798. X            break;
  799. X
  800. X        case PRESENT_TEXT3:
  801. X            if ((frame % 10) == 0)
  802. X                DoText3(display, window);
  803. X            break;
  804. X
  805. X        case PRESENT_LETTERS:
  806. X            DoLetters(display, window);
  807. X            break;
  808. X
  809. X        case PRESENT_CLEAR:
  810. X            DoClear(display, window);
  811. X            break;
  812. X
  813. X        case PRESENT_FINISH:
  814. X            DoFinish(display, window);
  815. X            break;
  816. X
  817. X        case PRESENT_WAIT:
  818. X            DoPresentWait();
  819. X            break;
  820. X
  821. X        default:
  822. X            break;
  823. X    }
  824. X}
  825. X
  826. X#if NeedFunctionPrototypes
  827. Xvoid RedrawPresents(Display *display, Window window)
  828. X#else
  829. Xvoid RedrawPresents(display, window)
  830. X    Display *display;
  831. X    Window window;
  832. X#endif
  833. X{
  834. X}
  835. X
  836. X#if NeedFunctionPrototypes
  837. Xvoid FreePresents(Display *display)
  838. X#else
  839. Xvoid FreePresents(display)
  840. X    Display *display;
  841. X#endif
  842. X{
  843. X    int i;
  844. X
  845. X    /* Free the flag pixmaps */
  846. X    if (flagPixmap)        XFreePixmap(display, flagPixmap);         
  847. X    if (flagPixmapM)    XFreePixmap(display, flagPixmapM);
  848. X
  849. X    /* Free the large earth pixmap and it's mask */
  850. X    if (earthPixmap)    XFreePixmap(display, earthPixmap);         
  851. X    if (earthPixmapM)    XFreePixmap(display, earthPixmapM);
  852. X
  853. X    /* Free the text pixmaps for justin, kibell and presents */
  854. X    if (justin)        XFreePixmap(display, justin);         
  855. X    if (justinM)    XFreePixmap(display, justinM);
  856. X
  857. X    if (kibell)        XFreePixmap(display, kibell);         
  858. X    if (kibellM)    XFreePixmap(display, kibellM);
  859. X
  860. X    if (presents)    XFreePixmap(display, presents);         
  861. X    if (presentsM)    XFreePixmap(display, presentsM);
  862. X
  863. X    /* Free the pixmaps for the letters of the work xboing */
  864. X    for (i = 0; i < 6; i++)
  865. X    {
  866. X        /* Free each of the letters in XBOING */
  867. X        if (titlePixmap[i])        XFreePixmap(display, titlePixmap[i]);         
  868. X        if (titlePixmapM[i])    XFreePixmap(display, titlePixmapM[i]);
  869. X    }
  870. X}
  871. X
  872. X#if NeedFunctionPrototypes
  873. Xvoid ResetPresents(void)
  874. X#else
  875. Xvoid ResetPresents()
  876. X#endif
  877. X{
  878. X    PresentState = PRESENT_FLAG;
  879. X    nextFrame = frame + 100;
  880. X    startFrame = frame + 10;
  881. X    endFrame = frame + 3000;
  882. X}
  883. X
  884. X#if NeedFunctionPrototypes
  885. Xvoid SetPresentWait(int newMode, int waitFrame)
  886. X#else
  887. Xvoid SetPresentWait(newMode, waitFrame)
  888. X    int newMode;
  889. X    int waitFrame;
  890. X#endif
  891. X{
  892. X    waitingFrame = waitFrame;
  893. X    waitMode = newMode;
  894. X    PresentState = PRESENT_WAIT;
  895. X}
  896. X
  897. X#if NeedFunctionPrototypes
  898. Xvoid DoPresentWait(void)
  899. X#else
  900. Xvoid DoPresentWait()
  901. X#endif
  902. X{
  903. X    if (frame == waitingFrame)
  904. X        PresentState = waitMode;
  905. X}
  906. END_OF_FILE
  907.   if test 12354 -ne `wc -c <'presents.c'`; then
  908.     echo shar: \"'presents.c'\" unpacked with wrong size!
  909.   fi
  910.   # end of 'presents.c'
  911. fi
  912. if test -f 'sfx.c' -a "${1}" != "-c" ; then 
  913.   echo shar: Will not clobber existing file \"'sfx.c'\"
  914. else
  915.   echo shar: Extracting \"'sfx.c'\" \(2976 characters\)
  916.   sed "s/^X//" >'sfx.c' <<'END_OF_FILE'
  917. X#include "copyright.h"
  918. X
  919. X/*
  920. X *  Include file dependencies:
  921. X */
  922. X
  923. X#include <stdio.h>
  924. X#include <stdlib.h>
  925. X#include <stddef.h>
  926. X#include <X11/Xlib.h>
  927. X#include <X11/Xutil.h>
  928. X#include <X11/Xos.h>
  929. X#include <xpm.h>
  930. X
  931. X#include "error.h"
  932. X#include "init.h"
  933. X#include "stage.h"
  934. X#include "score.h"
  935. X#include "blocks.h"
  936. X#include "ball.h"
  937. X#include "main.h"
  938. X#include "mess.h"
  939. X#include "intro.h"
  940. X
  941. X#include "sfx.h"
  942. X
  943. X/*
  944. X *  Internal macro definitions:
  945. X */
  946. X
  947. X#define SHAKE_DELAY            5
  948. X#define SCROLL_ON_DELAY        3
  949. X#define SCROLL_OFF_DELAY    3
  950. X#define SCROLL_ON_INC        11
  951. X#define SCROLL_OFF_INC        11
  952. X
  953. X/*
  954. X *  Internal type declarations:
  955. X */
  956. X
  957. X/*
  958. X *  Internal variable declarations:
  959. X */
  960. X
  961. Xstatic int sfxEndFrame, useSfx;
  962. Xint modeSfx, oldModeSfx;
  963. X
  964. X#if NeedFunctionPrototypes
  965. Xvoid useSpecialEffects(int state)
  966. X#else
  967. Xvoid useSpecialEffects(state)
  968. X    int state;
  969. X#endif
  970. X{
  971. X    /* Set the state of the special effects - True = use */
  972. X    /* Of course - if the sfx are not possible then no effect */
  973. X    useSfx = state;
  974. X}
  975. X
  976. X#if NeedFunctionPrototypes
  977. Xint getSpecialEffects(Display *display)
  978. X#else
  979. Xint getSpecialEffects(display)
  980. X    Display *display;
  981. X#endif
  982. X{
  983. X    /* Only shake around if the server has backing store on */
  984. X    if (DoesBackingStore(XDefaultScreenOfDisplay(display)) != Always)
  985. X        return -1;
  986. X
  987. X    /* Return special effects state - on or off */
  988. X    return useSfx;
  989. X}
  990. X
  991. X#if NeedFunctionPrototypes
  992. Xvoid changeSfxMode(int newMode)
  993. X#else
  994. Xvoid changeSfxMode(newMode)
  995. X    int newMode;
  996. X#endif
  997. X{
  998. X    oldModeSfx = modeSfx;
  999. X    modeSfx = newMode;
  1000. X}
  1001. X
  1002. X#if NeedFunctionPrototypes
  1003. Xint currentSfxMode(void)
  1004. X#else
  1005. Xint currentSfxMode()
  1006. X#endif
  1007. X{
  1008. X    /* Return the current special effects mode */
  1009. X    return modeSfx;
  1010. X}
  1011. X
  1012. X#if NeedFunctionPrototypes
  1013. Xint oldSfxMode(void)
  1014. X#else
  1015. Xint oldSfxMode()
  1016. X#endif
  1017. X{
  1018. X    /* Return the previous special effects mode */
  1019. X    return oldModeSfx;
  1020. X}
  1021. X
  1022. X#if NeedFunctionPrototypes
  1023. Xstatic void resetEffect(Display *display)
  1024. X#else
  1025. Xstatic void resetEffect(display)
  1026. X    Display *display;
  1027. X#endif
  1028. X{
  1029. X    /* Just re-centre window and return */
  1030. X    modeSfx = SFX_NONE;
  1031. X    XMoveWindow(display, playWindow, 35, 60);
  1032. X}
  1033. X
  1034. X#if NeedFunctionPrototypes
  1035. Xint WindowShakeEffect(Display *display, Window window)
  1036. X#else
  1037. Xint WindowShakeEffect(display, window)
  1038. X    Display *display;
  1039. X    Window window;
  1040. X#endif
  1041. X{
  1042. X    static int x = 35;
  1043. X    static int y = 60;
  1044. X    int xi, yi;
  1045. X
  1046. X    /* Does the user want special effects */
  1047. X    if (useSfx == False)
  1048. X    {
  1049. X        /* No - Just return out */
  1050. X        resetEffect(display);
  1051. X        return False;
  1052. X    }
  1053. X
  1054. X    /* Only shake around if the server has backing store on */
  1055. X    if (DoesBackingStore(XDefaultScreenOfDisplay(display)) != Always)
  1056. X    {
  1057. X        resetEffect(display);
  1058. X        return False;
  1059. X    }
  1060. X
  1061. X    if (frame >= sfxEndFrame) 
  1062. X    {
  1063. X        resetEffect(display);
  1064. X        return False;
  1065. X    }
  1066. X    
  1067. X    if ((frame % SHAKE_DELAY) != 0) return True;
  1068. X
  1069. X    XMoveWindow(display, window, x, y);
  1070. X    XFlush(display);
  1071. X
  1072. X    xi = (rand() % 6) - 3; 
  1073. X    yi = (rand() % 6) - 3; 
  1074. X    x = xi + 35; y = yi + 60;
  1075. X
  1076. X    return True;
  1077. X}
  1078. X
  1079. X#if NeedFunctionPrototypes
  1080. Xvoid SetSfxEndFrame(int endFrame)
  1081. X#else
  1082. Xvoid SetSfxEndFrame(endFrame)
  1083. X    int endFrame;
  1084. X#endif
  1085. X{
  1086. X    sfxEndFrame = endFrame;
  1087. X}
  1088. END_OF_FILE
  1089.   if test 2976 -ne `wc -c <'sfx.c'`; then
  1090.     echo shar: \"'sfx.c'\" unpacked with wrong size!
  1091.   fi
  1092.   # end of 'sfx.c'
  1093. fi
  1094. if test -f 'sounds/stamp.au.uue' -a "${1}" != "-c" ; then 
  1095.   echo shar: Will not clobber existing file \"'sounds/stamp.au.uue'\"
  1096. else
  1097.   echo shar: Extracting \"'sounds/stamp.au.uue'\" \(12793 characters\)
  1098.   sed "s/^X//" >'sounds/stamp.au.uue' <<'END_OF_FILE'
  1099. Xbegin 664 stamp.au
  1100. XM+G-N9    "#_____     0  'T     !          #;-S__14XWQ<Y;,#/.
  1101. XM6\4P_[?%OS<_V___,\[;Q3,[Q=O_+-N[__\SO[?_,#>_Q;\M,["S6S_;Q;].
  1102. XM++^___]%N[N[,$6_SK=%3MNS,S=;6[=;3L[;3C?__[?%,/^S_SLW-]N_3EN_
  1103. XM3C\S6[^S-RVWO[]%-[_;K5M;VSN_3KNPLS?;K=M;14ZFL_].OT[;O\6HMS!;
  1104. XMVZW.1?^LH,6[/\6S_UM;M\Z[/\[.SMLMQ3,W,SLP144[3D[_)BT_VTY.-S>P
  1105. XM/S,?1<6[Q2RW/RT_O]O;/T[%K3<S_T5.O[^WJ-LW+#._JL6PK<4H,$6WLT7%
  1106. XM_UO_+"HSVS L/T5%.T4_NR@D-S D'S,PSC<B)"TS+"8F*C\?'RT[13 [_[O_
  1107. XM-TX_/S WO_\H'S,[/S\W-S,S-Q\F+3LL.S\D*"0D'Q\?'Q\?'R ?'Q\@'Q\?
  1108. XM'Q\?*"8L+" M(A\@+4X_SKM;Q?].N["MIK"JG[>?IK"@GY^XMJNPL*VPKJ2E
  1109. XMKJJJN+VMM:^MKK^\M;_"PK;)R5W/5]W,PDPV0LP\,T6_24DZ3#U,,4)714))
  1110. XM3&M=0NNZ3\7"R47%PLS)O;6XO,RZK[:ON+&JL[&VK+JUL*VHO*ZPML*LR;#_
  1111. XM_UV_3SC_W<(\/44Q.BQ",2@H-2@E'Q\E)2DA'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1112. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\B("8B*2(E+3HX-C X/3IK5VM73[JQPKJPM:F_
  1113. XMLY^?KJZHH)^DJ)^?I)^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1114. XMHY^?GY^?H)^BI:"CI*6JJ:VLJJ:\KJ^SO;#=7;S%_]=%0E<L+S@X+BTJ*BLB
  1115. XM(",?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R8B'RL?'R$D(C8P(RLP,#8P24]%
  1116. XM0EW_PO_=S,RS7=VQK;6XLY^QLZ6GJ*NJK*2EJZ6DJ*NIH9^JJJ2EJJ*KKK"S
  1117. XMI:JOLZVMKZZLKZO7O[^]N,+%MKC/R=W7R>M/UUU/R4],3$Q7W2\S,SHK*S4N
  1118. XM)RHI)Q\?(B,A)B(B(A\?'R,@'Q\?'Q\?'Q\?'Q\C)1\?'RLB'R(G'Q\@)R@D
  1119. XM+2PZ*B4K0C8Q/=<\23U7PCW_NL7KL,+KO*^OJ;VPJJBPL*BHI;.JK:"XKZVH
  1120. XMJ*^OI:>OI:.LIZZLJ+.QHJB?IZNPJ+.JG["UJJJHNK^LIZRIK;&LO<S,JJZX
  1121. XMN+:]O6O/O<*_N%?/3#]7SVO=W4D\.CA"SU=%:S9%,# \0BTX/#8I*BXQ*C,U
  1122. XM,"LM*BDG*B8G+"LH+B4E*#$I*"<H(1\J*"0C*"PJ)"DI)2@G*BDI)2HI*B0E
  1123. XM*C,G'RHN-2PE+"\V)2<P13HX0D(S,T(_-C@]5T])/]W,NMV_O;&ZL:ZNKJNJ
  1124. XMJ*JMKJFAHY^DHJ"?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1125. XMGY^?GY^?GY^CI9^?GZ2BGY^CJ:JQL*J?HK&ZM;.N74S%S,EKUSHN/4__.#4M
  1126. XM,2DK+"XD*"HD'R,A'R$?(BH?'Q\?'Q\?("$?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1127. XM'Q\?'Q\?(",?'Q\?'Q\?)20?'R @(!\K)A\D+1\B*"TS-3 L*"PU+R\S.C\V
  1128. XM/38N+TPZZU<V0EU,->MKZSH]S]T\5[W/NDE/Z[U/O;JQW46]NL]=Z[VZMK/%
  1129. XML+'/1:NSO^O%NKRXS[JSMK:ZK;BLJ;.OJZRLJK"QJJJGI:&?JI^CI:"DGZ6?
  1130. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?I9^?GZ.AGY^?I*>?
  1131. XMHZ>GGY^HJ*^BI;6SL:JQK:^QMMW)MKU724E/13\_14]K,3$Q,R0F.B\K*BD?
  1132. XM'Q\E)1\?)B4?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1133. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1134. XM'Q\?'Q\A(2@E)R@J+"@N73HU/4+/W?]KPK:]N*W/L*JSL:RGI*6KH9^?H)^?
  1135. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1136. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1137. XMGY^?GY^?GZ&?H*BDHZ"LJZJIMLFUJ6M73.N]/3Q,3T(F*C8S)2DI(R,?'Q\?
  1138. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1139. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R(G)2$B)24D
  1140. XM*BXQ*RTJ*C$S-C$U0EU7_SC,Q;S/W<*ZM;"SK:^\LZBJI+"JIZ6JI*6EHJ*F
  1141. XMJZ&AHZ:GHZ*BIJ2BH*6EHZ.DGY^@H**JHY^?GZ&?GZ.?GZ&EI*B?H:.EHZ&?
  1142. XMHJ2KI:6@H:NBI*JJJJ*KL:VEJ;&PLZNUS+VPL<+%L;#=R;^]O,]7:[_=PM?_
  1143. XMZ_]/UT(]2=WK_^OKZ\]K_]T_7>O7U\S=O;S"NKV\U[J]L;J_O;JNMK:]N+"Q
  1144. XMO[:ZO;^_O;/"R47/N+K_.KJX3SQ%:U=%0C]%3#$Z134J/T\X*C$S*C P-3$K
  1145. XM)R,H)RLE)2HP,28E'R4I-BPD)2$J+24K*RHQ*2DE(B<L*RTN*BHG+"HJ*"TQ
  1146. XM*RXK*C8P+"LL-2XQ,S P-4],/S@V/#T\/45"14]):S8X25="5_\\3&M7:T]/
  1147. XM73\\3U=)5_\_.#P]."\P-CI"-B\N-3$N*C,P*C$M,2\P+2TU+RPF*S Q-3\Z
  1148. XM+C$],34N-D5)23,\13TX26M//#_KZTE=S]?_:T_7U\G"L<*_Q<F]O+RZN+RM
  1149. XML:^SM:RJJK&OKJZNK*JIJZVNJK&ULZRKI:NVL+^VK[6SL+RXL[JVL;"ZK[6Z
  1150. XMO<*]K*ZQMK.OM;"QKKRUK:VOO;VPL[6VL*VNJZRLK;"IHZ.PK*6?GZ2AI*6A
  1151. XMGY^?GY^?GY^?GY^?GY^AHI^?GY^?GY^?GZ*FHJ>GJ*:GK+RXJK_)R;V_W5=7
  1152. XM.#,V/"TS*RLP*B@I)R4?(!\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1153. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@'R @(2,A'R(@'Q\?(R$I*"DH*B0D)RXN*RTF
  1154. XM*B\K+# O,#TV,S,O/#A".CHX+S!%.C8]_UU".#U).$)/5T(P/$G_/$E%0CU=
  1155. XMW<]/7<7"_VO_Z\]KO<*SL+"PKJNML:ZEJ;6KI:&?I)^?H)^?GY^?GY^?GY^?
  1156. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^AGY^?HI^GI*JMK:^SL[B\K[6\
  1157. XMN+_/U]=K3%U/W?]%/S@U,U<_/2XP+B\N*R4D(R8E)1\?(B0D(Q\?'Q\?'Q\?
  1158. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\C*2HG)2<J
  1159. XM+RDJ+RLQ*BPM+2\U3U<].EW/_TGKW==K_[_/S\^PMKB\N+6NI:JGJJFII:*@
  1160. XMIZ.?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1161. XMGY^?GY^DJJFFK[.UNKJ_MK.OS\QK75T_1<S=13U%.C@V/$(_-BXV3#$P,38Z
  1162. XM-3,V.CQ%0CI)/SHP,S N,3,X,3$N*S$Q-2PJ+2PC)"@A'Q\?'Q\?'Q\?'Q\?
  1163. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1164. XM(!\?(2(M+3 M+SP_.#A"Z__7NK"SNJ^FJ:&AI)^?H9^?GY^?GY^?GY^?GY^?
  1165. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ"D
  1166. XMI:JLKK6\L[JZ5UT\0C8V/#HS,34M*RHH*BLE(!\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1167. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R D)20E*BLM+R\V/#Q,/44\/5W_R<6_
  1168. XMO\*VK;"ZN*ZLMK6NJ:RJI:>OK:FFI:6?I*>IIZ2IJ:JIJJRLJZJLK*^NL+BZ
  1169. XMO+W"S\G"W5U=74])/U=,/3@V.C4P+# X-3,Q,3 N,S O+2TK*B@J)R0G*"<F
  1170. XM*"HJ)28D)R@C(R C'Q\A(R4D)2(C(RHJ+2HJ*"HJ,"PH*CH\.CPS0DE,24)K
  1171. XM_\_=U[^_Q;6PJ[:]JZ:OL:JIJ:ZJJ*2BIJ&AH:.?GY^?I*&BI:.CI:&FIZ.D
  1172. XMI:>HIZBHK:N\N+&UN,R_O;B_R<SK_]UK74DZ26M73^OK74E,3$QK3T),5S\V
  1173. XM.CH]+S$\.CHZ-3,N,#H],24J+BXG(2XK)R4J)B4@)2HD)" ?(B,D(B4E)24G
  1174. XM*"DA)BHL)B8E)BHK+C P+SPX-CH].CHZ/SP_3ST]26O=75?=R=W"Q;^\PLF\
  1175. XMM;VUKJ^SMK"JK;.MJJRJJZJKJZRJI::EHY^AH:&DGY^?GY^@GY^?GY^?GY^?
  1176. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ6?HJ"BHZ.DHZBGJ:JJK*JSMKVV
  1177. XMO\6]O,G,:TQ,:T]/23Q)/2DJ+"XS+"HC)24D(R ?'Q\?'Q\?'Q\?'Q\?'Q\?
  1178. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1179. XM'Q\?'R,A)BTJ+BPO,# Z3TD]14]=7?__S\_)O+^_O;6VL[JUKK"SJZNFI*6E
  1180. XMI:*IIY^?I:"?GY^BGY^?GZ"?GY^CGY^?GY^?GY^?GY^?GY^?H:&BH:BJJJ"A
  1181. XMI:6EHZ.DIJ6HJ*:FI:FJK*JNK*FJJ:JJIJJSI:.JJZRKJZNHIZJLK:JJI::G
  1182. XMI:6EJ*>JJJ.CGZ6EI:6EH9^HI:FGJ:JMJJ:HJJJOKZ^SK[&SPKBUPLS_Z\_=
  1183. XM_TE,24Q75T4]-CP\.C$U,S8Z,#$K)RPS+"LJ)20F*"4E(",K)R(?(B@D'Q\B
  1184. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1185. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?(Q\D)24J)BDO,"PN,#@V
  1186. XM-3Q"76M=W=W,PL*\N+&NK:RJL*^EIJ.CGY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1187. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1188. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?H*&CH:*BHZ6EIZFMJZFMM;VU
  1189. XMM<+,S]U,24P\-CPU,#$Q+BHF)R<D)" ?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1190. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1191. XM'Q\?'Q\?'Q\?'Q\?'R$B(B4G)24G*2HM+BPN.#HQ*S-"/SPX3$D\/6MK_UW_
  1192. XMS\G7R<*]O+V\O[R]N+R\L[6VM;.PL;&OKJVKJ*>FJ:JHJ:>EIZ6AGZ6DH:.?
  1193. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?I*B@H*6E
  1194. XMIJ2GI:6EI["II*6ML*JMK["PK["UMK6ZO[S%O+R_S\S"U\_,R<_,Q<G7U]W7
  1195. XMS]?_Z]UKS-W,W?_7Q<7,S\R]O<+/_\G%PL7)R<S/O\G%R;^]O<7/R<S,R<_7
  1196. XMW=?K_\]KW5==24E,14(_/3\]-C,V,34O+2LI*2@D(R0E)2,B'R ?'Q\?(1\?
  1197. XM'Q\?'Q\?("4@'Q\C(R,C)24E)RHJ*2@J+"HJ*BHK+BLO,# U-3,V/#@U.#\_
  1198. XM0C]%3$D_14)"0C\]3$P]0DE/3%="3#\\23\\.#TX.CPV-C8X.#HZ.#4V/3\V
  1199. XM.CH]/#,S.#@X/T)"/SI"13\]/T])14Q/3U=KZUU=76O/_U=7S__KU\G/S]?%
  1200. XMO,+"R<*XO;V]O;_)PKB\Q<*ZL+6ZO;RUL;6VN+JZMKBZPLRXNL+%R<S,S-W7
  1201. XMS\_=Q<G/Z^O/S,__Z^O)SUW_W=?__]WK:__7PLSK:]W%R=?/S\_,O;S%Q<FZ
  1202. XMNK.QL[BNL+6OK*VKJ:FFIJ>DHI^?H**?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1203. XMGY^?GY^?GY^AHZ2DI*2DIZBIK*VPL:ZSNKBZO\G/Z\]=:UT]/#8U,S,O+2PK
  1204. XM*"4C(B,B'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1205. XM'Q\?'Q\?'Q\?'Q\?'R(A'Q\A(R(A)BDH)R@K+"PJ*2\S+BXQ,# P,#HX,S@Z
  1206. XM.CHZ-C@V.CPX/#P]/#P\0D4Z/3U"24E)145,3$Q)3T_KZ^O7Z^O/O[_"R<+)
  1207. XMO;RXM;&QL[.QN+:NIJ>MJZ>FIZFDHZ*DH)^?HJ.?GY^?GY^?GY^?GY^?GY^?
  1208. XMGY^?GY^?GY^?GY^?GY^?GY^?HY^?HZ6JJJJKJJ^PL[6\PL7=Z^MK:UU%/3H\
  1209. XM.#$O+BTJ*R<E(B(C'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1210. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\A'Q\?(B4E)B<H*BHJ+"XO,#\_
  1211. XM0D57:__=W<S,Q<*XM;BVKZRMJJFGI:6@H:"?GY^?GY^?GY^?GY^?GY^?GY^?
  1212. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1213. XMH:6EIJBKL*^PNL7=Z]=K5T4_/#HU+BPG)B8E(R ?'Q\?'Q\?'Q\?'Q\?'Q\?
  1214. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@(!\?'R A'R A
  1215. XM(R,B(2$A(!\?(2$?'R,D(R0B(R4E)24E(R,E)R4B)28F)RHJ*2@J+RTJ+"TN
  1216. XM+B\M*R\M.#8Q,2\S.C8V.#H].#@\24E):_],3UWKU]W=Q<7%PL*VL[:PKJVM
  1217. XMJJBJI:6EI:2AHZ"@GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1218. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^@GY^EI:.EJ*BGIZ^SL;&QNKR]O+W=
  1219. XMU]W=:U=/3TD\/STV,S O,"XK*BHJ*2@H)R4E(R0D)20C)24C)2<C)"4F)24E
  1220. XM*BHI*BHL*RLI+"TJ*R\Q+2LO,"\K*B\Q,"HL,3 N,#$O+BLJ+BTK+"PL*BHJ
  1221. XM+"HG*"HJ*2HH)R8F*2<D)28G)B4G*2@G*"DI*"@L+2HJ+2LL*RPK+2\S,S,S
  1222. XM-34U-C8X.#P_/SU"0D5,3#T\24Q)24E)0DE,3$5%3$]K3T]=5T]/3TQ,25?_
  1223. XM3UU=5T]K7=W7Z]W/S]W=U]WKS\S)U\S,S,G%R<G%Q<F_Q<G"O;^_O;JZO+^Z
  1224. XMNKJ\NKJZNKV\O+^_O+J]PKV\O,G)PKW"S\S)S,G,S,7"S\G"R<7,R<G)S,_K
  1225. XM:\G,S]?_S\_/S\_7U\G/W=?=U\S,S\_7S\_)Q;_"O[_"O\*]O;RXMKJ\L[6Q
  1226. XML*^PKJVMKZRKJZJGJ*BHI*2EHJ*@H*&CHZ.DH:*@H*&DHJ*AH*2EI:2HJJJF
  1227. XMIZNKJJRPL[.OL;:XNKS%S.O75TE,3T(]/3HV,RPM,"HI)R<G)"0F)!\?("$?
  1228. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1229. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@("4E)",G*RHK+C P,34Z.#@\14))3TG=S\_7
  1230. XMS\F]O\*_N+BQKK"OL*ZLJJ:FJ::CHJ&CI*.?GY^@GY^?GY^?GY^?GY^?GY^?
  1231. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?HJ&CH**FI:6FJJJHJJJM
  1232. XMK:NOL+&PK[6SNKJZO+BVNKB]O;R_S,7%PK_"O\G7U\_)R=W_W<S/Z^M=_VM7
  1233. XM5U=,3UU/14)%/ST_.C8X-C8S-3,O+"XL*RHI)RDH)",D(Q\?'Q\?'Q\?'Q\?
  1234. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1235. XM'Q\?'Q\?(B(D*BLJ*BTZ/#I"3/__S\6_NK:LJZJJJ*.@H:"?GY^?GY^?GY^?
  1236. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ&D
  1237. XMIZBFJJNLK:^PM;BXQ<G)R=?=:_]K5TQ)/3P_.C@Q,3$P+BXM+"PN*RHJ*RHK
  1238. XM*B8H*"4G*"HJ)28J)R8J*BLK+"HL*RPQ,2\Q,#8Z.#4Z/T)"14)"0D5,5UU,
  1239. XM3UUK:UUK___KZVM75___76M=3$E,14)"/T)"13HZ-34U-C4P+3 N+2TJ*BPK
  1240. XM*BDE)R<G)B4C(R4E)2(B)"4B(B(B(B,E)24C*"@G*"@J*B@I+BPK+2XP,"XP
  1241. XM,S8S,SH_/#P]0C\\0DQ774]/___KW=W/S\_%PLG)PK:VO;V\MK6QKZVLK:JK
  1242. XMK*RKJJFGI:6IJ*6FIJ:EI*2GI:2DHJ.CHZ6EI::EI*6CI:6GJ*FIJ*JJJJRK
  1243. XMK:ZNKJZOKK&VMKBVMKJ_O[V_O\G"O\G)Q<+7Z__7U]?7W=W____K_UWKW>M/
  1244. XM5_]K_UUK75=K76M75^O__U=75___5___:VO_:VM77?__:U=/5U=75UU)0DE,
  1245. XM3TQ,3$Q)14)"/T)"244_/ST]/3T_/SP]/S8U-C8V-C4U-C4S-34S,S,S,2\N
  1246. XM,#$O,2\O+S P,3$S,34U-C S-C@V-C8V-C@Z/#H_/4(_/SP\0DE%145%24E%
  1247. XM24],3$Q,24Q)3%=,3$E,5U=7:VMK__]K_UU=5^O_75U=__]K________:VMK
  1248. XM:___:UU/7?]K75UK_VM=75U=76O_:UU=_VM=75U=75=774Q)3$Q73TE/3T],
  1249. XM3$]=74]73U=/3$],3$]/5UU=7?__7?]K____Z^O__^OKW>O=U\S,S\_)S-?7
  1250. XMS+_"R<7"R<F_NK^_O;V_O[R\N+JZNK.SM;6UL[&QKZZPL["SL+&QL;"PKZ^O
  1251. XMKZZNKJ^QL;"PM;6UM;6UMKJXN+BXNKR\O;_"Q<G)R<G7S^O=W>OK:UU=5TQ,
  1252. XM3$E%14)"/#P\/#P\.#4S,# Q,# P+S N+RXP+RXN+RTL+2XP+BLK+2\N+2\Q
  1253. XM+B\O+R\N+2TN+B\N+3$P+R\Q,#$Q,3,S,3$S,S,U-C@V-C@Z.#H]/3\]/3U"
  1254. XM/3]%14E%24]/3$]775UK:VMK5___Z]W7U]?7R<7)Q;_"PL*_O[^\O;VZMKBX
  1255. XMMKBXMKBXN+BXN+RSM;BXMKBXN+:VN+BZO+JZO;V_O;V_PK_"Q<G,R<S,S,_,
  1256. XMU]W7S]?KW=W/U_]K____:VMK75=/5U=/3UUK3TE,3TQ)24E)3$5)24(_24E)
  1257. XM245"14E)13]"14)"0D)%245"0D)"14)"0D)"0D)%0C]%24)%24)"0C\_0C\_
  1258. XM0C]"/3T]0CT]/#P_/3HZ.CPZ.#H]/#PZ/#P_/S\_/#P_/SP_/T)"0C]%14))
  1259. XM3$E,3$]73U==75=7:VO_:VO________K___=____Z___Z^OK___K_VMK____
  1260. XM:____VO__VMK:_]K75UK:U=75VMK5U=775=/5U=775=75UU75U=K:VMK75UK
  1261. XM:VM=________Z____]WK_^OKZ___Z]W__^OKW>O=U]W=U]W7U\_7U]?7S\S,
  1262. XMS,S/S\S/S,S,R<S,S,_/S,S)Q<S,R<7,R<G)R<G,R<S)R<+)S,S,R<G)R<G)
  1263. XMR<7)R<S,Q<7"R<G"Q<7)Q<+%Q<7"Q<7%O\+%PL7%Q<7%R<S/R<7/S\_/S-?7
  1264. XMU^OKU^O___]K76M=74]/3$Q)24E%0C\_/#HZ.C8V-C4U-34U,S S,2\P,# O
  1265. XM+R\O+R\N+B\P+BXO,#$N+BXQ,3 O+S$P,3$S,3,S,S,S,34U-C8V-38X.#8X
  1266. XM-CP\/3P]/3T]/3\]/T5)24Q)3$]/5U==:VMK_____]W=W=W=U\_,S\7)R<7"
  1267. XMQ<7%PK^_O[^\O+R\O+R\O[V\NKJZNKJZO+V\O;JXNKJ\O;RZO+^]O+R]O;R\
  1268. XMO+V]O;^_O;V]O;V]O;V_O[V_O[^_O\+"PK^_Q<7%Q<G)R<7)S,G)S,_7S\_/
  1269. XMU]?7U]?7U]W=W=WKZ^OKW>O___________]K____:VO___]K__]K:___:UU7
  1270. XM75=75U=75U=/3TQ/5T]/24E)3$Q%14E"0C]"/ST_14(]/3H]/ST]/ST\/#H\
  1271. XM/#H\/3P\/#HZ/#T]/#P\/3\_/3\_/S\_/3]"14)"0D5"145%24E,24E,3$Q,
  1272. XM3T],3$Q,3T]/3T]75U=73U=775U775==:UU=75UK:VMK:VMK:VMK_UUK____
  1273. XM:VO_:____VMK_________________^O____KZ^OKZ]WKZ]W=Z^O=U]?K_^O7
  1274. XMZ^O=U]WKW=W7W=W=U]?=W=?=W=?7U]W=U]?7U]?7U]?7U\_7U]W7U\_7S]?7
  1275. XMU\_/U]?/S,_/S\S/U\S,S\_,R<G,S\S,S,S,S,G,R<G%R<G)R<G)R<S,R<S,
  1276. XMS,S,S,S/S,S/S\_/U]?7W=WKZ^OKZ^O_______]K75U=75=73T]/3$Q)24E%
  1277. XM145%0C\_/S\_/3\]/S\]/#P\/3P\/#P\/3T\/3T]/ST]/3]"0C]"0D(_0D)"
  1278. XM0D)%24E)24E)24Q/3TQ,5T]/3U=75U==75==76M=:VMK_UUK:VMK:_____]K
  1279. XM____:VO_____________________________________________:VO_____
  1280. XM__]K:VMK:VMK:VM=76MK:UU=:UU=5U==75UK75U75UU=:VMK:VO_:VMK____
  1281. XM_______________KZ^OKZ]WKZ]W=W=W=U]?7U]?7U]?,S,S/S\G,S\_,R<S,
  1282. XMR<G,S,S,S,G)R<S,R<G)S,S)Q<G)S,G)R<G,S,S,S,S,S,_/S\_/S\_7S]?7
  1283. XMW=W=W=WKZ^OK____________:___:UU=75U=5U=75U=/5U=/3$Q,3$Q,3$Q,
  1284. XM3$Q,24E)24E)14E%145%0D)%145"145%0D5%14)"0D5%14)%145%145%245)
  1285. XM24E%14E)24E)24Q)24E,3$Q,3$Q,3$Q/5U=75U=75U==5U=775U=75U=76MK
  1286. XM:VMK:VMK:VMK:____________________________^OK___KZ^OKZ^OKZ^OK
  1287. XMZ^OKZ^O=W=W=W=W=W=W7W=W=U]W=W=?7W=W7U]?=W=?7U]?7U]?7U]?7S]?/
  1288. XMS]?7U]?7S\_/U]?7U]?/U]?7U]?7U]?7W=?=W=W=W>OKW=WKZ^OKZ_______
  1289. XM____________:UUK:UU=75U=75U75U=75U=75U=/3T]/3T]/3$Q,3$Q,3$Q,
  1290. XM3$Q,3$],3$Q,3$Q,3$Q,3T],3$Q,3$]/3TQ,3T]/3T]75U=/5U=75U=75U==
  1291. XM76MK76MK:VMK:VO_____________________________________________
  1292. XM____________________________________________________________
  1293. XM____________________________________________________________
  1294. XM____________________________________________________________
  1295. XM________________:___:VO__________VMK:___:VMK:VMK:VMK:VMK:VMK
  1296. XM:VMK:VMK:VMK:VMK:VMK76MK:VM=:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK
  1297. XM:VMK_VO_:VO___]K____________________________________________
  1298. XM____________________________________________________________
  1299. XM_____________VMK__]K:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK
  1300. XM:VMK:VMK:VO_________________________________________________
  1301. XM____________________________________________________________
  1302. XM____________________________________________________________
  1303. XM____________________________________________________________
  1304. XM____________________________________________________________
  1305. XH________________________________________________________
  1306. Xend
  1307. END_OF_FILE
  1308.   if test 12793 -ne `wc -c <'sounds/stamp.au.uue'`; then
  1309.     echo shar: \"'sounds/stamp.au.uue'\" unpacked with wrong size!
  1310.   fi
  1311.   # end of 'sounds/stamp.au.uue'
  1312. fi
  1313. echo shar: End of archive 18 \(of 26\).
  1314. cp /dev/null ark18isdone
  1315. MISSING=""
  1316. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ; do
  1317.     if test ! -f ark${I}isdone ; then
  1318.     MISSING="${MISSING} ${I}"
  1319.     fi
  1320. done
  1321. if test "${MISSING}" = "" ; then
  1322.     echo You have unpacked all 26 archives.
  1323.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1324.     echo "merging split files..."
  1325.     cat blocks.c[12] > blocks.c
  1326.     rm blocks.c[12]
  1327.     echo "blocks.c done"
  1328.     cat bitmaps/earth.xpm.Z.u.[ab] > bitmaps/earth.xpm.Z.uue
  1329.     rm bitmaps/earth.xpm.Z.u.[ab]
  1330.     echo "bitmaps/earth.xpm.Z.uue done"
  1331. else
  1332.     echo You still must unpack the following archives:
  1333.     echo "        " ${MISSING}
  1334. fi
  1335. exit 0
  1336. exit 0 # Just in case...
  1337. -- 
  1338.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  1339. \X/  Amiga - The only way to fly! |    sources-x@sterling.com
  1340.  "It's intuitively obvious to the |
  1341.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  1342.