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

  1. Newsgroups: comp.sources.x
  2. From: jck@kimba.catt.citri.edu.au (Justin Kibell)
  3. Subject: v20i123:  xboing - a simple blockout type game, Part16/26
  4. Message-ID: <1993Sep3.123421.8010@sparky.sterling.com>
  5. X-Md4-Signature: 94fc5c49fbfb8771d9ffca189f68180a
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Fri, 3 Sep 1993 12:34:21 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
  12. Posting-number: Volume 20, Issue 123
  13. Archive-name: xboing/part16
  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:  INSTALL Makefile.std sounds/shoot.au.uue stage.c
  21. # Wrapped by chris@sparky on Fri Sep  3 07:14:47 1993
  22. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  23. echo If this archive is complete, you will see the following message:
  24. echo '          "shar: End of archive 16 (of 26)."'
  25. if test -f 'INSTALL' -a "${1}" != "-c" ; then 
  26.   echo shar: Will not clobber existing file \"'INSTALL'\"
  27. else
  28.   echo shar: Extracting \"'INSTALL'\" \(9988 characters\)
  29.   sed "s/^X//" >'INSTALL' <<'END_OF_FILE'
  30. X                              XBoing Installation
  31. X                              ===================
  32. X
  33. X                                 6th August 1993
  34. X
  35. XRequirements
  36. X------------
  37. X
  38. X- You must be using X11R4 or X11R5. It may work on X11R3 but cannot test it!
  39. X- You must have the XPM pixmap library. The XPM library can be obtained from
  40. X  the following sites:-
  41. X
  42. X  avahi.inria.fr (138.96.24.30)     - Latest revision. (Europe)     V3.2g
  43. X    - in /pub/xpm
  44. X  export.lcs.mit.edu (18.30.0.238)  - Latest revision. (America)    V3.2g
  45. X    - in /contrib
  46. X  archie.au (139.130.4.6)           - Latest revision. (Australia)  V3.2g
  47. X    - in /X11/contrib
  48. X
  49. X  I have been successfully using version 3.2f, or version 3.2g. I haven't
  50. X  tried any lower versions. The author of XPM is lehors@sophia.inria.fr
  51. X  I suggest you use 3.2g as it has had the best reports. Any lower?
  52. X
  53. X- v1.6 has now been compiled and works on the following machines :-
  54. X
  55. X    + SunOS 4.1.2 5 sun4c/sun4m
  56. X    + SunOS Solaris 2.2 LX
  57. X    + IRIX 4.0.5G 12171207 IP7
  58. X    + SGI 310/GTX
  59. X    + HP 9000/720 HP-UX 8.07
  60. X    + DEC 2100
  61. X    + DEC OSF/1 AXP
  62. X    + DECstation 5000/133 ULTRIX 4.2 0 RISC
  63. X    + AIX 3.2.3e rs6000/350
  64. X    + NetBSD on i486
  65. X    + Linux on i486.
  66. X    + Intel 486 ESIX 4.0.4 X11R4
  67. X
  68. X- You must have a colour display. Sorry to all those B&W dudes.
  69. X
  70. X- An ANSI compiler would be nicer however I spent ages changing code with
  71. X  all those lovely #ifdefs so you can use a non-ansi compiler. :-)
  72. X
  73. X- This game DOES NOT need Motif or Xt or anything except pure XLib.
  74. X
  75. X- The xnews Sun X server is not the quickest with this game. Be warned.
  76. X
  77. X
  78. XMakefiles
  79. X---------
  80. X
  81. XIncluded in this package is an Imakefile which generates a Makefile that will
  82. Xcompile XBoing using your system setup. For those people without imake, or
  83. Xwho can't get it to compile, a Makefile.std is also included. 
  84. X
  85. X
  86. XCompilation
  87. X-----------
  88. X
  89. XEdit the Imakefile or the Makefile.std and change the default compiler to
  90. Xyour compiler. Also change the compiler flags if necessary. 
  91. X
  92. XGo into the bitmaps directory and uudecode earth.xpm.Z.uue and then 
  93. Xuncompress the resultant file.
  94. X
  95. XChange the $(XBOING_DIR) to point to the place where xboing is to be 
  96. Xinstalled. In that directory xboing will create the highscore file and also
  97. Xplace the level data and sound data.
  98. X
  99. XNOTE: The user can now specify the sounds, level and highscore file locations
  100. X      as environment variables. They are :-
  101. X
  102. XXBOING_SCORE_FILE = the highscore file to be used.
  103. XXBOING_LEVELS_DIR = the directory containing the levels.
  104. XXBOING_SOUND_DIR  = the directory containing the sounds.
  105. X
  106. XAlso set the AUDIO_AVAILABLE flag to True or False to enable the audio in
  107. Xthe game if possible. 
  108. X
  109. XCopy the desired audio code from audio directory to audio.c as listed below:-
  110. X    LINUXaudio.c - SoundBlaster support on Linux for PC
  111. X    SUNaudio.c - Sun workstation audio 
  112. X    NCDaudio.c - NCD xterminal sound server support
  113. X    HPaudio.c - HP audio which is .au format?
  114. X    NOaudio.c - Default - no audio support file.
  115. X
  116. XThe default will be no audio at all. ie: NOaudio.c
  117. X
  118. XPlease work on NOaudio.c if you have another machine that you want to post
  119. Xthe sound too. Note that I am not going to support and other file format than
  120. X.au as I'll have sound files everywhere. :-)
  121. X
  122. XIf you are on a Sun SparcStation and you want sound then copy SUNaudio.c to
  123. Xaudio.c and the sound routines should work. I hope.
  124. X
  125. XIf you have imake, type:
  126. X
  127. X    xmkmf
  128. X    make depend
  129. X    make all
  130. X
  131. XX11R5 users can type 'xmkmf -a ; make all' if they like.
  132. X
  133. XIf you do not have imake, type:
  134. X
  135. X    cp Makefile.std Makefile
  136. X    make depend
  137. X    make all
  138. X
  139. X
  140. XInstallation
  141. X------------
  142. X
  143. XTry 'xboing -setup' and see if the compilation has gone as you planned.
  144. XThis option will print out useful information about where xboing will look
  145. Xfor its data files.
  146. X
  147. XPlease note that you must be root to install the game. If you are not root
  148. Xthen you can just run XBoing from your own account.
  149. X
  150. XDon't forget to set the $(XBOING_DIR) in the Makefile/Imakefile and re-compile
  151. Xif you don't like where it will be installed.
  152. X
  153. XFor imake users, type:
  154. X
  155. X    make install             - install XBoing binary.
  156. X    make install.man         - install the manual page.
  157. X
  158. XIf you do not have imake then you must first edit the Makefile.std to check
  159. Xthat where you want the program to be installed.
  160. X
  161. X    make install             - install XBoing binary.
  162. X    make install.man         - install the manual page.
  163. X    
  164. XYou should now have XBoing installed and it's manual page. If not, then please
  165. Xread Troubleshooting.
  166. X
  167. X
  168. XHighScore File
  169. X--------------
  170. X
  171. XIt is automatically created and chmoded to 0666. There will also be a personal
  172. Xhighscore file saved in each users account home directory. This keeps their
  173. Xpersonal highscores. If you have problems then touch one and chmod it to
  174. Xsomething that will work for you. ie: rw for all.
  175. X
  176. XNOTE: **** The highscore file format has changed since v1.5. Any old ones 
  177. X           will barf! Global files have one entry now. Just erase them please.
  178. X
  179. XTroubleshooting
  180. X---------------
  181. X
  182. XI was hoping you wouldn't be reading this but anyway ...
  183. X
  184. Xmake depend
  185. X
  186. X    Some header files in xboing were not found. Check the includes and see
  187. X    if the Imakefile/Makefile.std includes in the correct directory. If all
  188. X    else fails then xmkmf/cp Ma..std Makefile again and forget it.
  189. X
  190. Xxpm.h
  191. X
  192. X    You must have the Xpm library as explained in the requirements section.
  193. X    XBoing uses the Xpm library extensively. If you have it then please check
  194. X    that the XPMINCLUDE dir is set correctly in the Imakefile/Makefile.std
  195. X
  196. XHeader Files  
  197. X
  198. X    Maybe you have the X11 header files in another place. Please check the 
  199. X    Imakefile or Makefile.std and change the -I directories to your site. 
  200. X    If you are using imake then tell your sysop that imake didn't look
  201. X    in the correct place for the X11 header files. 
  202. X
  203. XHighscore file is corrupt
  204. X
  205. X    I have changed the highscore file format since v1.5. Sorry but it is 
  206. X    much better now and will save times etc. Just delete the old one and 
  207. X    start again. The file locking will not work over NFS.
  208. X
  209. XStrange libraries needed
  210. X
  211. X    Check the Imakefile or Makefile.std and make sure the sysop has installed
  212. X    the Imake.rules correctly. If all else fails just remove them one by one
  213. X    until it compiles.
  214. X
  215. XCrashes with bad drawable
  216. X
  217. X    Make sure that the program is not compiled with -ansi as ansi trigraphs
  218. X    may have been found during compilation and that stuffs up the pixmap data.
  219. X
  220. XColourmap is all black
  221. X
  222. X    Don't use the -pointergrab option as some window managers barf when the
  223. X    pointer is grabbed :-(
  224. X
  225. XSound not working & Levels not working
  226. X
  227. X    Check your sound directory and make sure that you don't have any ENV vars
  228. X    set that will be used first.
  229. X
  230. XAnsi trigraphs
  231. X
  232. X    Try not to use -ansi as it can cause ANSI trigraphs in the data files and
  233. X    that converts a few characters to one causing an XPM error. Bummer.
  234. X
  235. XIf you cannot get it working still and you have tried hard email at the
  236. Xaddress supplied and sen along 'xboing -setup' output, obviously if you have
  237. Xgot it compiled!!
  238. X
  239. XCopyright
  240. X---------
  241. X
  242. XXBoing: 
  243. X
  244. X/*****************************************************************************
  245. X          (c) Copyright 1993, Justin C. Kibell, All Rights Reserved
  246. X                           email: jck@citri.edu.au
  247. X
  248. X  Permission to use, copy, modify, and distribute this software and its
  249. X  documentation without written agreement is hereby granted. You cannot sell 
  250. X  this software without written permission from the author. This entire 
  251. X  copyright notice must appear in all copies of this software.
  252. X
  253. X  IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, 
  254. X  SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF 
  255. X  THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED 
  256. X  OF THE POSSIBILITY OF SUCH DAMAGE.
  257. X
  258. X  THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED 
  259. X  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  260. X  PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE 
  261. X  AUTHOR HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 
  262. X  ENHANCEMENTS, OR MODIFICATIONS.
  263. X
  264. X *****************************************************************************/
  265. X
  266. XXpm:
  267. X  ----------------------------------------------------------------------------
  268. X/*
  269. X * Copyright 1990-93 GROUPE BULL
  270. X *
  271. X * Permission to use, copy, modify, and distribute this software and its
  272. X * documentation for any purpose and without fee is hereby granted, provided
  273. X * that the above copyright notice appear in all copies and that both that
  274. X * copyright notice and this permission notice appear in supporting
  275. X * documentation, and that the name of GROUPE BULL not be used in advertising
  276. X * or publicity pertaining to distribution of the software without specific,
  277. X * written prior permission.  GROUPE BULL makes no representations about the
  278. X * suitability of this software for any purpose.  It is provided "as is"
  279. X * without express or implied warranty.
  280. X *
  281. X * GROUPE BULL disclaims all warranties with regard to this software,
  282. X * including all implied warranties of merchantability and fitness,
  283. X * in no event shall GROUPE BULL be liable for any special,
  284. X * indirect or consequential damages or any damages
  285. X * whatsoever resulting from loss of use, data or profits,
  286. X * whether in an action of contract, negligence or other tortious
  287. X * action, arising out of or in connection with the use
  288. X * or performance of this software.
  289. X *
  290. X */
  291. X
  292. XArnaud LE HORS      BULL Research FRANCE -- Koala Project
  293. X                    (XPM - X PixMap format version 2 & 3)
  294. X    Internet:       lehors@sophia.inria.fr
  295. XSurface Mail:       Arnaud LE HORS, INRIA - Sophia Antipolis,
  296. X                    2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE
  297. X Voice phone:       (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F
  298. X  ----------------------------------------------------------------------------
  299. X
  300. X-------------------------------------------------------------------------------
  301. XJustin Kibell - jck@citri.edu.au - +61 3 282 2456 - Vic - Australia
  302. END_OF_FILE
  303.   if test 9988 -ne `wc -c <'INSTALL'`; then
  304.     echo shar: \"'INSTALL'\" unpacked with wrong size!
  305.   fi
  306.   # end of 'INSTALL'
  307. fi
  308. if test -f 'Makefile.std' -a "${1}" != "-c" ; then 
  309.   echo shar: Will not clobber existing file \"'Makefile.std'\"
  310. else
  311.   echo shar: Extracting \"'Makefile.std'\" \(13670 characters\)
  312.   sed "s/^X//" >'Makefile.std' <<'END_OF_FILE'
  313. X# Makefile generated by imake - do not edit!
  314. X# $XConsortium: imake.c,v 1.65 91/07/25 17:50:17 rws Exp $
  315. X#
  316. X# The cpp used on this machine replaces all newlines and multiple tabs and
  317. X# spaces in a macro expansion with a single space.  Imake tries to compensate
  318. X# for this, but is not always successful.
  319. X#
  320. X
  321. X# -------------------------------------------------------------------------
  322. X# Makefile generated from "Imake.tmpl" and </tmp/IIf.a14933>
  323. X# $XConsortium: Imake.tmpl,v 1.139 91/09/16 08:52:48 rws Exp $
  324. X#
  325. X# Platform-specific parameters may be set in the appropriate <vendor>.cf
  326. X# configuration files.  Site-specific parameters should be set in the file
  327. X# site.def.  Full rebuilds are recommended if any parameters are changed.
  328. X#
  329. X# If your C preprocessor does not define any unique symbols, you will need
  330. X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
  331. X# "make World" the first time).
  332. X#
  333. X
  334. X# -------------------------------------------------------------------------
  335. X# site-specific configuration parameters that need to come before
  336. X# the platform-specific parameters - edit site.def to change
  337. X
  338. X# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  339. X
  340. X# -------------------------------------------------------------------------
  341. X# platform-specific configuration parameters - edit sun.cf to change
  342. X
  343. X# platform:  $XConsortium: sun.cf,v 1.72.1.1 92/03/18 13:13:37 rws Exp $
  344. X
  345. X# operating system:  SunOS 4.1.2
  346. X
  347. X# $XConsortium: sunLib.rules,v 1.7 91/12/20 11:19:47 rws Exp $
  348. X
  349. X# -------------------------------------------------------------------------
  350. X# site-specific configuration parameters that go after
  351. X# the platform-specific parameters - edit site.def to change
  352. X
  353. X# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  354. X
  355. X            SHELL = /bin/sh
  356. X
  357. X              TOP = .
  358. X      CURRENT_DIR = .
  359. X
  360. X               AR = ar clq
  361. X  BOOTSTRAPCFLAGS =
  362. X               CC = cc
  363. X               AS = as
  364. X
  365. X         COMPRESS = compress
  366. X              CPP = /lib/cpp $(STD_CPP_DEFINES)
  367. X    PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
  368. X          INSTALL = install
  369. X               LD = ld
  370. X             LINT = lint
  371. X      LINTLIBFLAG = -C
  372. X         LINTOPTS = -axz
  373. X               LN = ln -s
  374. X             MAKE = make
  375. X               MV = mv
  376. X               CP = cp
  377. X
  378. X           RANLIB = ranlib
  379. X  RANLIBINSTFLAGS =
  380. X
  381. X               RM = rm -f
  382. X            TROFF = psroff
  383. X         MSMACROS = -ms
  384. X              TBL = tbl
  385. X              EQN = eqn
  386. X     STD_INCLUDES =
  387. X  STD_CPP_DEFINES =
  388. X      STD_DEFINES =
  389. X EXTRA_LOAD_FLAGS =
  390. X  EXTRA_LIBRARIES =
  391. X             TAGS = ctags
  392. X
  393. X    SHAREDCODEDEF = -DSHAREDCODE
  394. X         SHLIBDEF = -DSUNSHLIB
  395. X
  396. X    PROTO_DEFINES =
  397. X
  398. X     INSTPGMFLAGS =
  399. X
  400. X     INSTBINFLAGS = -m 0755
  401. X     INSTUIDFLAGS = -m 4755
  402. X     INSTLIBFLAGS = -m 0644
  403. X     INSTINCFLAGS = -m 0444
  404. X     INSTMANFLAGS = -m 0444
  405. X     INSTDATFLAGS = -m 0444
  406. X    INSTKMEMFLAGS = -g kmem -m 2755
  407. X
  408. X      CDEBUGFLAGS = -O
  409. X        CCOPTIONS = -pipe
  410. X
  411. X      ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES)
  412. X       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(DEFINES)
  413. X           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
  414. X        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
  415. X
  416. X           LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
  417. X
  418. X        LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(LOCAL_LDFLAGS)
  419. X
  420. X   LDCOMBINEFLAGS = -X -r
  421. X      DEPENDFLAGS =
  422. X
  423. X        MACROFILE = sun.cf
  424. X           RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
  425. X
  426. X    IMAKE_DEFINES =
  427. X
  428. X         IRULESRC = $(CONFIGDIR)
  429. X        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
  430. X
  431. X     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
  432. X            $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
  433. X            $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
  434. X
  435. X# -------------------------------------------------------------------------
  436. X# X Window System Build Parameters
  437. X# $XConsortium: Project.tmpl,v 1.138.1.1 92/11/11 09:49:19 rws Exp $
  438. X
  439. X# -------------------------------------------------------------------------
  440. X# X Window System make variables; this need to be coordinated with rules
  441. X
  442. X          PATHSEP = /
  443. X        USRLIBDIR = /usr/lib
  444. X           BINDIR = /usr/bin/X11
  445. X          INCROOT = /usr/include
  446. X     BUILDINCROOT = $(TOP)
  447. X      BUILDINCDIR = $(BUILDINCROOT)/X11
  448. X      BUILDINCTOP = ..
  449. X           INCDIR = $(INCROOT)/X11
  450. X           ADMDIR = /usr/adm
  451. X           LIBDIR = $(USRLIBDIR)/X11
  452. X        CONFIGDIR = $(LIBDIR)/config
  453. X       LINTLIBDIR = $(USRLIBDIR)/lint
  454. X
  455. X          FONTDIR = $(LIBDIR)/fonts
  456. X         XINITDIR = $(LIBDIR)/xinit
  457. X           XDMDIR = $(LIBDIR)/xdm
  458. X           TWMDIR = $(LIBDIR)/twm
  459. X          MANPATH = /usr/man
  460. X    MANSOURCEPATH = $(MANPATH)/man
  461. X        MANSUFFIX = n
  462. X     LIBMANSUFFIX = 3
  463. X           MANDIR = $(MANSOURCEPATH)$(MANSUFFIX)
  464. X        LIBMANDIR = $(MANSOURCEPATH)$(LIBMANSUFFIX)
  465. X           NLSDIR = $(LIBDIR)/nls
  466. X        PEXAPIDIR = $(LIBDIR)/PEX
  467. X      XAPPLOADDIR = $(LIBDIR)/app-defaults
  468. X       FONTCFLAGS = -t
  469. X
  470. X     INSTAPPFLAGS = $(INSTDATFLAGS)
  471. X
  472. X            IMAKE = imake
  473. X           DEPEND = makedepend
  474. X              RGB = rgb
  475. X
  476. X            FONTC = bdftopcf
  477. X
  478. X        MKFONTDIR = mkfontdir
  479. X        MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier
  480. X
  481. X        CONFIGSRC = $(TOP)/config
  482. X       DOCUTILSRC = $(TOP)/doc/util
  483. X        CLIENTSRC = $(TOP)/clients
  484. X          DEMOSRC = $(TOP)/demos
  485. X           LIBSRC = $(TOP)/lib
  486. X          FONTSRC = $(TOP)/fonts
  487. X       INCLUDESRC = $(TOP)/X11
  488. X        SERVERSRC = $(TOP)/server
  489. X          UTILSRC = $(TOP)/util
  490. X        SCRIPTSRC = $(UTILSRC)/scripts
  491. X       EXAMPLESRC = $(TOP)/examples
  492. X       CONTRIBSRC = $(TOP)/../contrib
  493. X           DOCSRC = $(TOP)/doc
  494. X           RGBSRC = $(TOP)/rgb
  495. X        DEPENDSRC = $(UTILSRC)/makedepend
  496. X         IMAKESRC = $(CONFIGSRC)
  497. X         XAUTHSRC = $(LIBSRC)/Xau
  498. X          XLIBSRC = $(LIBSRC)/X
  499. X           XMUSRC = $(LIBSRC)/Xmu
  500. X       TOOLKITSRC = $(LIBSRC)/Xt
  501. X       AWIDGETSRC = $(LIBSRC)/Xaw
  502. X       OLDXLIBSRC = $(LIBSRC)/oldX
  503. X      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
  504. X      BDFTOSNFSRC = $(FONTSRC)/bdftosnf
  505. X      BDFTOSNFSRC = $(FONTSRC)/clients/bdftosnf
  506. X      BDFTOPCFSRC = $(FONTSRC)/clients/bdftopcf
  507. X     MKFONTDIRSRC = $(FONTSRC)/clients/mkfontdir
  508. X         FSLIBSRC = $(FONTSRC)/lib/fs
  509. X    FONTSERVERSRC = $(FONTSRC)/server
  510. X     EXTENSIONSRC = $(TOP)/extensions
  511. X         XILIBSRC = $(EXTENSIONSRC)/lib/xinput
  512. X        PEXLIBSRC = $(EXTENSIONSRC)/lib/PEXlib
  513. X      PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX
  514. X
  515. X# $XConsortium: sunLib.tmpl,v 1.14.1.2 92/11/11 09:55:02 rws Exp $
  516. X
  517. XSHLIBLDFLAGS = -assert pure-text
  518. XPICFLAGS = -pic
  519. X
  520. X  DEPEXTENSIONLIB =
  521. X     EXTENSIONLIB = -lXext
  522. X
  523. X          DEPXLIB = $(DEPEXTENSIONLIB)
  524. X             XLIB = $(EXTENSIONLIB) -lX11
  525. X
  526. X        DEPXMULIB = $(USRLIBDIR)/libXmu.sa.$(SOXMUREV)
  527. X       XMULIBONLY = -lXmu
  528. X           XMULIB = -lXmu
  529. X
  530. X       DEPOLDXLIB =
  531. X          OLDXLIB = -loldX
  532. X
  533. X      DEPXTOOLLIB = $(USRLIBDIR)/libXt.sa.$(SOXTREV)
  534. X         XTOOLLIB = -lXt
  535. X
  536. X        DEPXAWLIB = $(USRLIBDIR)/libXaw.sa.$(SOXAWREV)
  537. X           XAWLIB = -lXaw
  538. X
  539. X        DEPXILIB =
  540. X           XILIB = -lXi
  541. X
  542. X        DEPPEXLIB =
  543. X           PEXLIB = -lPEX5
  544. X
  545. X        SOXLIBREV = 4.10
  546. X          SOXTREV = 4.10
  547. X         SOXAWREV = 5.0
  548. X        SOOLDXREV = 4.10
  549. X         SOXMUREV = 4.10
  550. X        SOXEXTREV = 4.10
  551. X      SOXINPUTREV = 4.10
  552. X         SOPEXREV = 1.0
  553. X
  554. X      DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
  555. X         XAUTHLIB =  -lXau
  556. X      DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a
  557. X         XDMCPLIB =  -lXdmcp
  558. X
  559. X        DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a
  560. X           PHIGSLIB =  -lphigs
  561. X
  562. X       DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
  563. X          XBSDLIB =  -lXbsd
  564. X
  565. X LINTEXTENSIONLIB = $(LINTLIBDIR)/llib-lXext.ln
  566. X         LINTXLIB = $(LINTLIBDIR)/llib-lX11.ln
  567. X          LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
  568. X        LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln
  569. X          LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
  570. X           LINTXI = $(LINTLIBDIR)/llib-lXi.ln
  571. X          LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln
  572. X        LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln
  573. X
  574. X          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
  575. X
  576. X         DEPLIBS1 = $(DEPLIBS)
  577. X         DEPLIBS2 = $(DEPLIBS)
  578. X         DEPLIBS3 = $(DEPLIBS)
  579. X
  580. X# -------------------------------------------------------------------------
  581. X# Imake rules for building libraries, programs, scripts, and data files
  582. X# rules:  $XConsortium: Imake.rules,v 1.123 91/09/16 20:12:16 rws Exp $
  583. X
  584. X# -------------------------------------------------------------------------
  585. X# start of Imakefile
  586. X
  587. X#*****************************************************************************
  588. X#
  589. X#          (c) Copyright 1993, Justin C. Kibell, All Rights Reserved
  590. X#                           email: jck@citri.edu.au
  591. X#
  592. X#  Permission to use, copy, modify, and distribute this software and its
  593. X#  documentation without written agreement is hereby granted. You cannot sell
  594. X#  this software without written permission from the author. This entire
  595. X#  copyright notice must appear in all copies of this software.
  596. X#
  597. X#  IN 0 EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
  598. X#  SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
  599. X#  THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED
  600. X#  OF THE POSSIBILITY OF SUCH DAMAGE.
  601. X#
  602. X#  THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED
  603. X#  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  604. X#  PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE
  605. X#  AUTHOR HAS 0 OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
  606. X#  ENHANCEMENTS, OR MODIFICATIONS.
  607. X#
  608. X#*****************************************************************************
  609. X
  610. X# Imakefile for xboing version 1.6 - 6th August 1993
  611. X
  612. X# This is the directory where the highscore and level data will be placed.
  613. XXBOING_DIR            = .
  614. X
  615. XCC                    = cc
  616. XCCOPTIONS            = -Bstatic
  617. X
  618. X#CC                    = gcc
  619. X#CCOPTIONS            = -static -DFUNCPROTO -Wall
  620. X
  621. XXPMLIB                = -L/usr/lib -lXpm
  622. XXPMINCLUDE            = -I/usr/include/X11
  623. XLEVEL_INSTALL_DIR     = $(XBOING_DIR)/levels
  624. XSOUNDS_DIR             = $(XBOING_DIR)/sounds
  625. XHIGH_SCORE_FILE     = $(XBOING_DIR)/xboing.scores
  626. XAUDIO_AVAILABLE        = False
  627. X
  628. XAUDIO_AVAILABLE    = True
  629. X
  630. XAUDIO_INCLUDE = -I/usr/demo/SOUND/multimedia
  631. XAUDIO_LIB     = -L/usr/demo/SOUND -laudio
  632. X
  633. XEXTRA_INCLS = $(XPMINCLUDE) $(AUDIO_INCLUDE)
  634. X
  635. XDEFINES    = $(EXTRA_INCLS) \
  636. X    -DHIGH_SCORE_FILE=\"$(HIGH_SCORE_FILE)\" \
  637. X    -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \
  638. X    -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \
  639. X    -DSOUNDS_DIR=\"$(SOUNDS_DIR)\"
  640. X
  641. XLOCAL_LIBRARIES = $(AUDIO_LIB) $(XPMLIB) $(XLIB) -lm
  642. X
  643. XDEPLIBS = $(DEPXLIB)
  644. X
  645. XSRCS1=    version.c main.c score.c error.c ball.c blocks.c init.c \
  646. X        stage.c level.c paddle.c mess.c intro.c bonus.c sfx.c \
  647. X        highscore.c misc.c inst.c gun.c keys.c audio.c special.c \
  648. X        presents.c
  649. X
  650. XOBJS1=    version.o main.o score.o error.o ball.o blocks.o init.o \
  651. X        stage.o level.o paddle.o mess.o intro.o bonus.o sfx.o  \
  652. X        highscore.o misc.o inst.o gun.o keys.o audio.o special.o \
  653. X        presents.o
  654. X
  655. XPROGRAMS = xboing
  656. X
  657. Xall::    $(PROGRAMS)
  658. X        @$(RM) version.c
  659. X        @echo "xboing built successfully."
  660. X
  661. Xversion.c:
  662. X        @./version.sh $(PROGRAMS)
  663. X
  664. X OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
  665. X SRCS = $(SRCS1) $(SRCS2) $(SRCS3)
  666. X
  667. Xall:: $(PROGRAMS)
  668. X
  669. X$(PROGRAMS): $(OBJS1) $(DEPLIBS1)
  670. X    $(RM) $@
  671. X    $(CC) -o $@ $(LDOPTIONS) $(OBJS1)  $(LOCAL_LIBRARIES) $(LDLIBS)   $(EXTRA_LOAD_FLAGS)
  672. X
  673. Xinstall:: $(PROGRAMS)
  674. X    @if [ -d $(DESTDIR)$(BINDIR) ]; then set +x; \
  675. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); fi
  676. X    $(INSTALL) -c $(INSTPGMFLAGS)  $(PROGRAMS) $(DESTDIR)$(BINDIR)
  677. X
  678. Xinstall.man:: $(PROGRAMS).man
  679. X    @if [ -d $(DESTDIR)$(MANDIR) ]; then set +x; \
  680. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); fi
  681. X    $(INSTALL) -c $(INSTMANFLAGS) $(PROGRAMS).man $(DESTDIR)$(MANDIR)/$(PROGRAMS).$(MANSUFFIX)
  682. X
  683. Xdepend::
  684. X    $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
  685. X
  686. Xlint:
  687. X    $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
  688. Xlint1:
  689. X    $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
  690. X
  691. Xclean::
  692. X    $(RM) $(PROGRAMS)
  693. X
  694. Xinstall:: $(PROGRAMS)
  695. X    @echo "XBoing directory is " $(XBOING_DIR)
  696. X
  697. X    @echo "Creating directory " $(XBOING_DIR)
  698. X    @if [ ! -d $(XBOING_DIR) ]; then mkdir $(XBOING_DIR); fi
  699. X
  700. X    @echo "Creating directory " $(LEVEL_INSTALL_DIR)
  701. X    @if [ ! -d $(LEVEL_INSTALL_DIR) ]; then mkdir $(LEVEL_INSTALL_DIR); fi
  702. X
  703. X    @echo "Copying level data into directory " $(LEVEL_INSTALL_DIR)
  704. X    @cd ./levels; set -x; for file in *.data; do                    \
  705. X        $(INSTALL) -c $(INSTDATFLAGS) $$file $(LEVEL_INSTALL_DIR);    \
  706. X    done
  707. X
  708. X    if [ $(AUDIO_AVAILABLE) ]
  709. X        @echo "Creating directory " $(SOUNDS_DIR)
  710. X        @if [ ! -d $(SOUNDS_DIR) ]; then mkdir $(SOUNDS_DIR); fi
  711. X
  712. X        @echo "Copying sound files into directory " $(SOUNDS_DIR)
  713. X        @cd ./sounds; set -x; for file in *.au; do                        \
  714. X            $(INSTALL) -c $(INSTDATFLAGS) $$file $(SOUNDS_DIR);            \
  715. X        done
  716. X    fi
  717. X
  718. X    @echo "Creating a highscore file " $(HIGH_SCORE_FILE)
  719. X    @touch $(HIGH_SCORE_FILE);
  720. X    @chmod a+rw $(HIGH_SCORE_FILE);
  721. X
  722. X# End of the XBoing Imakefile :-)
  723. X
  724. X# -------------------------------------------------------------------------
  725. X# common rules for all Makefiles - do not edit
  726. X
  727. Xemptyrule::
  728. X
  729. Xclean::
  730. X    $(RM_CMD) "#"*
  731. X
  732. XMakefile::
  733. X    -@if [ -f Makefile ]; then set -x; \
  734. X    $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
  735. X    else exit 0; fi
  736. X    $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
  737. X
  738. Xtags::
  739. X    $(TAGS) -w *.[ch]
  740. X    $(TAGS) -xw *.[ch] > TAGS
  741. X
  742. X# -------------------------------------------------------------------------
  743. X# empty rules for directories that do not have SUBDIRS - do not edit
  744. X
  745. Xinstall::
  746. X    @echo "install in $(CURRENT_DIR) done"
  747. X
  748. Xinstall.man::
  749. X    @echo "install.man in $(CURRENT_DIR) done"
  750. X
  751. XMakefiles::
  752. X
  753. Xincludes::
  754. X
  755. X# -------------------------------------------------------------------------
  756. X# dependencies generated by makedepend
  757. X
  758. END_OF_FILE
  759.   if test 13670 -ne `wc -c <'Makefile.std'`; then
  760.     echo shar: \"'Makefile.std'\" unpacked with wrong size!
  761.   fi
  762.   # end of 'Makefile.std'
  763. fi
  764. if test -f 'sounds/shoot.au.uue' -a "${1}" != "-c" ; then 
  765.   echo shar: Will not clobber existing file \"'sounds/shoot.au.uue'\"
  766. else
  767.   echo shar: Extracting \"'sounds/shoot.au.uue'\" \(13537 characters\)
  768.   sed "s/^X//" >'sounds/shoot.au.uue' <<'END_OF_FILE'
  769. Xbegin 664 shoot.au
  770. XM+G-N9    "   "8M     0  'T     !          "HJZVQ2T1K03@N-V/H
  771. XMP'4V/U-YO+S5748Q.#,J/L_,MJG&W+]'2-._VSWJT35"LK/"YC9"ML='0<^W
  772. XMM[C01#I*T<"XO/Y).RDI/%H]*B[HO,*[JJFU64CBS4PY1\_&/SS0N;\_+SE?
  773. XMV%_(JZ.L7BTI/\C?Y\;(SLU8.2HL/[VMO,JZM+].+S1AKZW3T<#<3>YJ-24@
  774. XM*T[D7;RPO,]1*RS)OTQ*MZ>Z7KRYQ["_2'3&N[[13STO+#U*/3I5SE@]4]'$
  775. XMO>;.KJ]A.3\^-RX_641=>5I*O+>^LM-4Q;NKI+*[L,+=P,]&.BXI+BPJ+2<?
  776. XM)"])^L6SLJN?HZN\1S<_T[6XNK2OLG$K)RPM+CA6O;.ZNTLO,S]AQ\JZLJVT
  777. XMQ-_S.[Z_+TJ^OL'+/RDJ+C(U.EO*L[&\[-O*RT0P+375KJNMN<K>2SWA^\.U
  778. XMN]<X.SHO.^Z_P[FRN_=23$M>04LP*3=!47/C=EGGOZVMK*NOQF<N+U)&/SI*
  779. XM2#(U5+V[NKROJJ^YO=92VS8O.#8V+2LXR:NOO>7/8S0OQKC.;D8V-$C*O\;8
  780. XMW=:^KK783\K?1S@T,D-./SE<R\R[JZ:EK*VV[2\W3DM;53XH(2@N/]OL3LBS
  781. XML;G-M[J_U^8V+VM<+BI(T>[$P["NML!I2%7)8G=*2%NYKN)3U=D^)2(VO:ZV
  782. XMS?73W&KCNJ^TP5(N(R0TP+/#T];"Q$4O-TU:5$_?N[N^NKJZLJZRS2T?*3]5
  783. XM7/38U%]-XKFMLL%H/C@Y1]S1:67*O\]I03@T+BDF*3/9JZ2KO]:ZJ*B^Y,JY
  784. XMN^9BQ[K..2LN*24U_-WJ3TC<N:ZMO=' M;MT27K*83H]7GTY*28H+C(N.=JY
  785. XMO$XQ1[.FJ[:PI)ZBMU9VQ=A!-TG8WU-'244^25I..3-)T-] +RLM/'S\0D1A
  786. XMT\*WK*FMM\I,-#9:NJ^OK*VSP&(R+#IMR+ZZP>U#/4,_,BLM0,['3RTX5SXY
  787. XM+S/2LKW\;\[#Q;S!MZRNKW&]NL.O1E*YRT5%0C7YW6GL/"\R/TI<S[VNK;=.
  788. XM(API2#4NV+J^7C,P/K&?I=IUJZS!,R_&JK<Z3;6TK[3(3BT^/NBLPEXZ/DE!
  789. XM."4F+D))/\2NL\4]/2T@.,JON6S6ZZ^GM+J_LKJOI;Y1+SF[SM[.7S$F+V:U
  790. XML\IE/39%;L7-2#$@*MUE/BU Q.G3TK2DJ:BLPV\O.FE)/R@J/CIJMJBDK*VX
  791. XMS,M(V\LV+R4G4_S7S+RKQU^_P<E *"8M2<:XL,U)0&&OL[FUQMDR("Y21T9<
  792. XMQG<[.#G+L[*GK\R[P%(U+39,W+F]:3(U3DK%S->KK;+*05+T0DGSTKJSL+'!
  793. XM4BXD'1DF.SO)QMS"S+FSP[*EI*UV.VO87S@L,S9/QKZHIK!?+"HN*RU6OKQN
  794. XMW+&QNCXH0MI//B]!KZ2JL;ZWL5@T/7[9W<[_/B\D(2Y"OJ2EK,4Y/<_=/3,]
  795. XMQ=1!.BQDKK&Z.3RUL;Y63<.TM]!M5D] .DE=NZFU^40W25](6$PU*"$B,65<
  796. XMR*RFI\'*KJRY0C; J*SO-4G PT@Y0%U@/#$M+"XJ,>9FX[_$K:*CJ<-6:U]&
  797. XM,2HM4EUKQ3I"L+:OJ;?$23?8M[6]X6!-,R@K-$K_6=Z_O;;#1N[-3B\D*3,Y
  798. XM/5S.Q;R_NJ^ZQ;RSHJ&LJ*VZS3@J*S4[+B0D,CU!0#4Z,BHU4,NFH*2EJ[/%
  799. XM23I"4OG,NJBBJ\LN'BE<Y]9$*2XR*3/+JJ:N>#,Q/M"[KJJUSTDN3+G.]SDX
  800. XMO*^\S-I&+BHK.=>VK;' TC<G+"U+J:BT3C([WKRWK[K*P_A+33D[12]&O-[ 
  801. XMK\KLR<?&P-=;1#,N+S9".CATS,2VO+ZOK[K$;4A,0#DX,R\M+T_:4[VGIJ&?
  802. XMJ\=?.3W+_4[=W>-'+"0C+4#<TUI'/3Y204:]IZ"NW<&QM]HR+#-$W]&ZM<&T
  803. XMM\O00CG5O<G'R]]?.RPI)R<M.D//M:^LN5M1/#([+"[&KZZGJ:^\[<>LK,E#
  804. XM-#?-M+W.."4M-31;[4Q).BXR0\>RQ,RQLLM?4<RMJ\-46U1"+B$LU,I?5,"L
  805. XML,AJ\]Q7X[JYO<]+/C$M/%7EOL!23EU+1T R+E:TKZVMM\)'*BLV3K"IN+W+
  806. XM=,W>.5>YT#DK+TNZO4H]2M:WO,B]T#LM*BM5O]3$OL_(NKK"Q<]D4SLN.V+9
  807. XMN[Y5X[FPK[7A1DPZ*2H]5V9,-SE7S+*LO73/R-]\/$FPJ+E&-SE0SF)'Y6I#
  808. XM3C\N+B\N;KJ[IZ.VQ+O#N:^WO-0P)C0\,#I:35I:-UNRO75<0T[)X^V_LK.T
  809. XMOD<R,2LG.^)BUKW$O+MR[\].1<NWK:BNR$$U+S[*QNI^3BXJ*RI%N,'=VD7;
  810. XMK:V]QL]2U<A.0O!L16YJ.C]?0E7#9GVUO7V\R3_9O> Y/U[IP5<N.<&_T;]R
  811. XM1M+&RK2V4#U&1$AN0TV\O%4V0VC2SS<J/,_BO[#:5[^\QK]>.%'(UFW;8^:R
  812. XML==KP=!#/3<O/4P^3DTP,6?7]L+%S[NZREU23]RNK;RSK+/"R4<O,RPD,EHX
  813. XM,U/;<]-M1,:OP$O?N[VYOE$Z038N;+2QK*[/7] Y*S[&Q.=..$^[OE9,?T<Y
  814. XM038N6+NZL+/@7\_W06W3>+^UQUOK6#SMOU<O,T51P+?J:\;L1NU--FBYQT8_
  815. XM/$NVKM!,TMA/P[7835$V*T%5/7FYP+VOT43-K[6_OU) U-HT*S<^/=SD15;:
  816. XM8/Z]ZC@];FYA_$QKN*^\X61"/<J[:U/8=E#,TT5IM[;!PEL[5LSB/T%".W[#
  817. XM9C]29$34LLA3Y=CGO+?G2FYB040Z+"]/Q]GOQ][7LK3L;\EG/&[,3FV[M[S+
  818. XM02\Z]K^VM=TU-6[@/SM.U;O"/BPZQ<%S3$ Z/$EVOZ^TP]/3P,KM3%:[K;1=
  819. XM2-7 P=1!+C7^TFU40C@[5FM11C\^5\[.55#4Y&G*O^UTN:^YOL)71';.SM)-
  820. XM+RT^Q;S@:%)/S\)=/%?"OL"^Z3@W3$U!7<*YO,'J0$Y=-"]-QLY*4MC:Q;;!
  821. XM4/#(=&/ P$ S3KZSNE\U.%C;SL+#0BDM;["SO<Q,2M'&6DM6/TV\N$4K-=JW
  822. XML]H[5+:NR34Y[-[PR[W>/3H^0<NLK\K.RDI*WT@O,5;(X]2ZQ>O5R%XO*"<M
  823. XMTZNMT#P_5LFPL_%#:-KHR+C!5DS*KJVY8R\K.>-U/4565VI/.S$^Q+&OKKU/
  824. XM2\JXP,3%6#4L-WAI1T,[._;&8T%KQ=#4O;B]O;&URLO+7D522"HB,UE'2LJY
  825. XMVS\_0=BNJK\W,WZTK:RQ^3<\4$9;TFI/;,N\QEH],"] VM1+9<+,Z-"_S$(Q
  826. XM+C7YM[7*RK6SOU0Z.S]$_[[)85M&0-.PL,CY2SY?N:Z\2#E%>]1>,B,C,\ZX
  827. XMO\Q;/$/,M<#<U=O"L:[%.3%#<,:QK[Y./V'G83XQ+S;<KZJPS3TJ)S?,RE/5
  828. XMN]_OL:[,-BLN/\"QMLU015#LUNY-163#L+'79/-.4-_72S@[/S_:M[U<-C4]
  829. XM2'K.O[.NL+UA-"XN+CS'J:BRN,Q 3L*_72\N-3[/NK]D0%+.NK:^;#HS/.O"
  830. XM^$]>/#58O<<_0L[+QKC 7S]/TV?MO[BWR$<X1_)W2CY)WKFNN<WO.2XYYLE6
  831. XM3FQ/3MK53C8Q.U"_K:VUS41 RK*[VTLU,46_M<YB[5Q*XK[$9T)*2TAXVM]M
  832. XM3$E:R+O$7CDS.FZ_W%!813Y0PK[DR+.OL:^SS$8U.C<U3./H3D)(\[>NM,=8
  833. XM0T1>WT8P,S,L+S[9O+V\P_W*KJVXVV+?W\['V4PV,C[4M\#.R/UEWLG#4SD\
  834. XM-RX[R;B^_V-;25M/1%'^X^/6Q;W [4<_0%>_O]S55C]6P;"\1#M66E[3\THX
  835. XM-4K2MZVRRU!/?<J_R^3_1SDZ6;>MN^A+,B]*W6 U*BXO+#O%L[.]P[V]M:^]
  836. XM7#L_?;VLK\3(;3T\6;W%/CI.2%+%PU8O*#!$9+^TO,UG/S4]U+O"\TQ+>[RM
  837. XML<Q^3CY4O[; 33U#/#O+KJ[!1C8W/.N^SS\O-T)=Q<3F5S\[2<:LJ\#5S5!%
  838. XMS[:[>CDW.3=-QL;L2D%&2\^TMM%(0E#EN[+*4$M%4M&_N]P\.4%"1/[1S,U^
  839. XM2SL[UK.WRMO6:D_5P,Y$+RXY2="[S>_)P]7HQ[>XXS\]/4C/O=9%-S<^1<ZR
  840. XMLL-=/C,R8;*OMLY'/D!NP<E80T(_2<>VOO9-<-G?Q+*RRCPK*S9FO\1--SUY
  841. XMQ<"ZO>;5QM#.R<'$8CL[/SQ ^\WN3SU 4E/-L[;-2CU 4M>^PUHZ-D-LU;ZV
  842. XMP\^[OFQ5TKFX>C](2D%/R\Q=/31!55W7T6-&/#]8U+.NRUS+R?U@V+J^8S\_
  843. XM/S<\\,7.34!0:]N_N\M:45Q62V'(OL#=54Y4YL#4/#_/QF9<R[:X5C,Y2E+2
  844. XMOMM#,R\]?=K!M\-41%!WS;>NMMU!.#I#;[RNM-5<3#HR0L>WOTHS-TK<O[[Z
  845. XM04)8]E5(_L7!T59/[="\M,I,3%%(267$M;Y<2TT_/E_584(W-D%3SK&IKVI,
  846. XMWWO7;76SN]5&.C@UU,#*2SEM8EK4O[G-/3,[3$E2O[[923U.X,N_M+]--S-$
  847. XMV+ZOKL=,1U[2P[^]O%4S-ST]4L[ T4Q"3&CJX<V^RT\Y,3,Y1\2TR6-07,B^
  848. XMNK*Z<CPX/%;&N*^TXS\]1U3QQ+[T/#(X1F;9QK[)_$E#2$1'>MAG4$YET<F_
  849. XMM*VWTE<_/#YBQ;_A."]#;VW1O+O*6#HY4=W!N+G'[UY?YN[>PLM&.T5&2$U1
  850. XM;.9--2\__LVVK:NRXSQ"^=;5\&5H65YFY,K%Q])8/3,N,C_:M*^\Y5M714?.
  851. XMM[&Z7#@X.3<_S+2UQDX[/_^]L;7/5%),0CQ%S;>[>$$]/TUEVL._WTI!.30X
  852. XM3L:VN-!19\B_O[>URT@Z.TOHQ;>WRTHO*2@M/].]T5#DQM3[W+ZMJKQ02M;(
  853. XMSL?)]$ N+#A\P[N[P^A$,BLN/$_-O,GKXE-&>,RUK;EK5^=51VW(N[C8.C0^
  854. XM6NS$L;*]5"\K,4C6NK3!WDDW-3M,S[W$?4Y%/T%5P:^LNDTY2-K.S,&]O]P]
  855. XM+BPV;KVRK[G51#8Y3>7$NLCV3CTZ0^;!OM%%.CL^0E?2N[&W^CU [+ZXM;.X
  856. XMQ5,R+2\^;\[%S.=+.#A&[\W&Q.!+/D!)_+RSL+3'2#H]0#Y,U;NRN^9(3MS)
  857. XMR<2\R%4Q*2T^\\*WNLU-/#X_3]K&OLA_4T@].$'5MZNLP$Y 4.;9T=3>5S@P
  858. XM,T;-O;J[QFM'/SQ)W+ZXM[]Q1D=+6-W-O+*[:CLU.3]+7.G,U$(N+D#>P[JT
  859. XMN<A6.#9'S[NQK[G=0S@Z3\B[NKS@/S(O,D#1N[2ROUD\/4Q=V\K'P<Y+/#M/
  860. XMRKS RM!K3CTV/$WKRL+33#HS,CMFOZZKKL)L7UWXR[^]N+G:1CY&5$M4S;_#
  861. XMZ#DI)RX[4GCDT-Y9143EN[:SLK[>74Y.]<.YLZZZ23=#3E!B[=7*V4 N*C!-
  862. XMX\J_Q-IE0#(V8KJNKK7%<$I /UW&NK:]YD4Y-#$\]\"VM<5%.$!9_-6_M[6\
  863. XMY#8J+S]QU<JZP/Y%.#I[N;2RN=A-."\S/&#(O[J^Z4Q-1D7TQ,&^N\Y#.D96
  864. XM<=?'O\'/5#@Q/MB]OL#"U5!".SE0QKVYO=Q724$]0V#,Q,O)6SH]1$!(WLK(
  865. XMQ=1',SA\NK.ZN+C)74$\0-N[N[F]V$H[-30Y4]?5P<M%/#Y"3.C#N;2VQT0U
  866. XM.4)<S\.ZMKS/3T!%:,O#Q,?<13DR,3[OQ+[%\4= /T1>U;^_Q[_403M-<]F^
  867. XMM;2UNNHT+3=-\-##QM9T03$O/M*\N+O$UV5/0SU4P[R_P,Q=13\^/4OIV,S"
  868. XMU#XR.UGKXL6YP,S52#="S[FVN[S![4]!.3WVOKN]Q7M&-S,^3>+.S,?@0S8V
  869. XM.T5DX,K'QKW(6D;OR,G+O[K"TTXX.E#1O[V^R&A-2#DS0O/&OL/45SXZ1F?<
  870. XMR+_'UN,]+"\^?LC N<?#M'0]/\VYS[O Q\Q42C8W2=>^OLQG5DP^/$+XPKZ_
  871. XMR&9 .CQ$1%+?X=[;[DHZ/]F[N[>WN[[*Y$P^6;^XP<WA2#HW-3,[;\G"O\=D
  872. XM/3] -S_:O[_&SEQ%[K[!Q+S"R<G-:#DR.#U5SM/NZMO;3CM'Z,FYM+[0W-SE
  873. XM75A0:LK%T6=&/3T]/#Y)>,S#O<);/D!9[?#&N<M_7$,X/'BZK[7 UUM(/3D]
  874. XM2%CRR[Z\O+["R=MF[=SLZ-5A/#<X0$]G9T$W0%1'0>N[L;"XRF!5?5<]0]&\
  875. XMM[.ZR/!(-RXJ+5.^LK"[V4\_.#E,V,"XM;G 73@T/%O3V]_*O[[70C0X]+O.
  876. XM7=C/Y-MJ/CU>QKS(7T=/1SY*0C_[N["PN<Y(/%E?.CYH:NG"RT<U._S(R<"V
  877. XMM[^[O%<W.DEH[%]?97O5[4\[/]_ N[S!RV=/4E)=77/?].GN2#L^1CT]6]G)
  878. XMO+K7/3M3VK_ >T_FS=;O65;.M:ZROLO,?TPW+"XS3\O%REI<>5!%1D]>^]K1
  879. XMW=G8:W!I3E[AS,==5\:[OL.[OLYG14KRS]Q2/CM$4D](/3U(1&;9Y;ZYQMK7
  880. XMU^9L24KNZ^G4RL/*R>U-44_;P]A'1_/L>?Q-1&3/S/U*1D _3U]<6<NQKK'!
  881. XM4T)+4E-=?<>[O\[_2CHZ/#]-8/UG8%YHYO/CX/#+P\'#SL[Q6&E02=^^M[O>
  882. XM13@R.$)"062_P,WP67;JX\&WPL?*Z&E913<Z0$7HUFGDUO77S^1(.TS8Q,36
  883. XM55/N=FU:3U=>R+6WQ-;H64]@3$W4O\#*:E;?:5973UMYWEI*2$!*1SE!U;Z_
  884. XMS_I-3M_-XVGEVL*\YTQ9:EA43DE"3\##^VGBSL*]R,B[N;S"UUY)/#,O,#WN
  885. XMR]I..SM$4VO\?VGUW>I31E;'L["TL;.]S6 \-T)CO[._Z=_/ZT] -C5#2DA1
  886. XM3CXY1E]<V\3 R\^]OMMJ5DI'4%913UK<R]E>;]K,S<K,Y.72P+V_T5%?V>%X
  887. XM[\_9W_Y(/T-(/C]&1$I-55=!.D=S=6C=Q+W Q,7.TNW?P+Z_P[ZWP%(^04_W
  888. XM>_1-/$!HYTA$8V=<6U555$M>Y6EF341,5MK)Q[^^O\#"PL?.SL_,TOUB03@[
  889. XM/DM/3$Q.?&A-1D58TK^ZN[R[OK[#UFQ065UR\?A80CP[/#E,5#]%36C,P,3(
  890. XMR>5K^6UY_MS(Q,3%QLC"R7IV]%-+3$M)1T)"2VG2Q\?67DQ)0$A\Q+F[P-'>
  891. XM9T=)14%)Y[[@1N_>_-[C3C]'25GFZ<N\OLK8<'K9RK_'Q,/)R6\_-#=)6$Y.
  892. XM2SL^5%YS[OI75G)<;<R_O<O=X=3.R[_(W=7,V4=$<$]7SNQ*.CW?S&M12D5L
  893. XMV<BWL[]6.SE*Z]3 O-%)2%X^.$_.Q<W/QN1&04MB9UY87?;;V=;4R\/$QF<Z
  894. XM2=?PTK_><F=-4TQ /E[+SM_9TWUDU,;]1V7+S^AW[.!6.SQ+/T'AP\KK^=/?
  895. XM9-W-Q,71P[BZQ,O/33I 23P^5$E!2#\[7=]+0W#-<=JZO</*TE]%3TY\OLEJ
  896. XM;=;+S/3XSLG!O\/H1T99Y&]+0D-YT6+OR?M37DX^-C4]1$EFVLN]P=;+Q=]5
  897. XM?<G2W\?'Y7+1PK_%R\/>65I"/T];3$=,149.3%Y=15#WX^A;VK[*XO+[7E!1
  898. XM2CP_\<N^M+*WP<3!R=/A;%KES.%M7$U&1#XS,#(V3-W;TM!>37!E4FO2QLO)
  899. XMSLFWNKW!R>7]RN)+/ST_153URL;/TE=354%*0#YD;E)BR\W/UOG9V=GI8G%Y
  900. XMULO.U=G0T/!43DE-55=J;M_=Y.MNX=3<VLO-?%=./SY074$V/\S&S;B\W-3+
  901. XM[DY785?:R,;*8$IOUE1&V]Y1Y'1-8&E=6%Y^;G?%OL_@WVY)3NS>6U7=X'O=
  902. XM\VE40E!H7-3'<%+/S6Y=6$E*?N[<VM+.O[C-5TE"/4S.S]G+S=YB34Y-7NCP
  903. XMT,O,Q<G@955#/SX[.4+^V]OG8.S/:V#?X^G/P+V\O,9O9.#6YN]^5U_9UV=.
  904. XM2SX[2DY"4_M[WM#1Y6154D(\>+R_R;^[S%]64U%<X-W8O\CBY%].0#M%04'L
  905. XMU=_$O<K,SF9DW]W2Y=[.?N#65D]3/#MA\^3.W5X^/$1+5TU27E;*N,+ N,/C
  906. XM?=]H1E/\5_O3WEU)6FEYR+Z[R-_+U?UD2T8]/4=-_N)SV]199\G974Y/65_M
  907. XMUN/G2D;9>&K6U-/*U.+/6D1T;DA_S._8PL[1>57F6$A<5UEI35#9Q,/-X&9F
  908. XM8''7;UKNX_3?U-OJ6E;\759[?EA-[^98[E="34P^0G+>S<;3U\"_T^G6P^-W
  909. XMN[O9]EM'1T_]749#4OI*7,//34M4251A9GAH7.O4S\7.UM?;Q;N^R=Y.2$]=
  910. XM5D9'2DI8WMO@YE-'8L_8:.GA7$M6S.CLR'E8<^+B7TYQT<_-YEA?>/7DTL7:
  911. XM7=K/UM'?6TI#25=;7EQ:5DA$4O=E8<K+<>/9XM3/T-I,2LS'V\K QM#-T5[L
  912. XM:T-:ZE504DYK6T=04$$]1TY(3^O6U<N_Q/K?Y77E_<G&W<S#Q,7*WVM7255D
  913. XM3UYV7V[L3$W:;$Y/?69(3%UF3EY@0ES,U^#8T=GC],J[S<W#U]?&Q=]V94-$
  914. XM3DQ%1%A94.3,UMK<7$YEW^)PU\I=4M7,R]ID54Q*6&1.3E[J[F-O9$],3^?0
  915. XM?OC9SLC7V,[;Z-S0S\>\SF+,QMUN4TL[065/255WXG=32D=46%M;1EK2U\K*
  916. XMU=#9W.5T>O??QKS(S,];7'?T>D<]1EAG:7/V:%)/6O5;3VCDU]W8R\YW7<_'
  917. XMUD])44;LO\S-QFU9UMY>]NYF;O=;2TIXUE=9=T]-7M?J6_IT5&!O45_JYM?#
  918. XMNKW#R,O*S=/4Z$U&1TA03D0^1TP_2EI16M'(UM#B6?W5^EOY6D-=R+V^T.+)
  919. XMR-3/V&Q3^<_@W]=N3%-63E)/2D9*7>C:WG9K_5]/7?=;8//TW]+>9>_F>VSD
  920. XMR<C+SW]LWGW5Q.-2659,9GY77&9@8V_W:%M=86C[V];N6UYTZ^]C6V[NY\_-
  921. XMVL_/Y^WD;4]I>5)HYVUI\-K/XE!*145834)%5=;-S<C4S\YK:LO$Y>W#S7?F
  922. XMT_I&6]Q22]_.V]+52C]6;N_V6DQ#1&#>T\7'VG-K7%QZ;UM-45].1TONU.S<
  923. XMT^;1P,#!O[['R]E82DQ1249244E*2$I:?F%.8>C@V_I<:.C/RLG:?M;;R\'&
  924. XMQMI^V.5E;UQ+2EU@3$Y/2$M06FYA55%\W>W?T<_=Z]O/V?+C:%[6QLKEYL[-
  925. XMTN!@4TI)3TH^.C]+34]>75M]=-3 P<&^O[Z^Q,7%RM;YZ&509&-)/T=36DQ'
  926. XM6UQ)3%A455E>9U)4Y-_DU<7#V-3:;6WTU<G-W-/6<55FZF!32$E-2%SEX^39
  927. XMT]WOY]?7[V%876GSU^1O;UYCWMS<VGUWV=SZ]]Q^34Y;6UEJ7T]48N;8[W9T
  928. XM[M/;;%!9YL[+Y6UN?-S2]5SZ^UMI;6+AYE5'0DM:44=@U,[#OK[!PKW$T]=C
  929. XM6%U17%1)24M,3UE75%59<>7:T,[/TMWN]NS^9%-+4EA7>VI335_>W-+6W='$
  930. XMO;_%Q^AMYNY>5EY.14M+45]/3$A'4%UU7UK=V?S:RLW/U>3?SLO3UMK4UNW:
  931. XMW-C877-I1T]W7%)N^$Y#2EEC7V!;3V'7[UUQ?=;+U-O5T=_NYNC=VWI[Y.'E
  932. XM76W:>EQ/46WDT=9>2E%/4/MS]&M?YM_9UM39\-+,[G7O</SJ]EY*14I(251/
  933. XM1U;4SL_&Q\>^OLK/QLWHT^!=8E5*3D]$.3U,2DU72TYUX];-U>;DV\W-U-?1
  934. XMR,S.Q]5Q?^YK6E]=4U-65$U+2TY356GTZ7Q@;=[6W<[+UNGYW]_N^WKM[O+C
  935. XMZ'+NW79O[G#[XNWOY6!LX&Y>7UM,3F)N=VMB<FUN=/?C\W?WW-K;U-?AY][?
  936. XMY77NU_1<2TI[X.Y[6%)78OQF65U867CV6%[.T^33W=[8[_K>[NW6Q<G6S>[\
  937. XMV7MN=%1/4$Q+3$M,55]=7V)\Y]_5SMOY_U[^W_7]7EUR:VWEV=_FW=WX9V7V
  938. XMS<[BYM+29F?:V.5M65576VEF6F!53U586E597V-N_FCSS\W1SLG3YM#)S^MK
  939. XM<7-L=.=[3D1)55536E13<.SEULK,VL_-V=C7?UMM:E%?X/-J:F=N<75K8FMB
  940. XM<&_T:_+/\/WE_&U=7%I38%MFV=Y^Z=#*S=GI_'!\;&[=T]_W]N#:>DU,75Q3
  941. XM4E=.5WQD:&E<6^[5VGOCT>3GX6]?Y=/9V]?3WO;5T.YN5U)P\5M=^/YO[O5?
  942. XM9VY81D9.7?AO8&?NU<[,S\S-WWW_7TY>Z/_CUM7DY^%X_N#F6$=17&3>54[V
  943. XMX?%F95U04>/1V]_F[>1]7^G<W-G\;?+JY^#>]'[W[-G4W>GM7%5?7FM^6$Q-
  944. XM2TYA[_'NY.O\Z]Y]:._=UMC=WNK^:F-G:OGS:5Q/6'M\[-_W_=O8V])]9-#;
  945. XM;^O;U-GFU-7O9DM(4TQ,4TQ.7UY:^]_MZ>]C<MK;XM[S]N#EW]77Z/SD[NGF
  946. XM<'WJ[WAE6UU;9N_[[/=B7/;:X?U\_6[M\7)J:_/U\_YM7V/R:EM::=]Z5VKP
  947. XMZ]+2X]W.R]EQ7E]<6V5F96]I7EU16FYA>.OMW-#::'3=U]/2V7IA:V963E96
  948. XM7?3Z?/G=Y/O?YGS@V-O4UO5O^WY[;6EH7UU65E).5W!I9^W[;?#2T^?9U=K;
  949. XM[/UL:^O>X>IT_>;N;U]<76!>6EE9_O5?:VIJZ>;GX.EG8^KU>O9S:FSIV^'E
  950. XM\O37SMQT?.GIYNAY;W)S6F#J:E=NYFQP_FQU^VMM74U;>&%A97?RZ-CBV]+;
  951. XMW.'?W5U4\MWDZ/1L86ES_7MM<&%L[6!46%]B;^+<U]GB[._DXOES<W-M;O%T
  952. XM8&_IZ^?=_%9=ZU]>YMW6X%]87&[KX^MZ\>MV:&QL:G7KY.WHVMU^;7UL8V)=
  953. XM7%I,3OEM7FIVX]/,S-39V./BXN_O[_'^[>IM;75K<'1X>V9?75%.5E9/56WG
  954. XMZ]_;V\_9[>1_>^YO7UY@6UY]Z^WTW]C@W-[XV]'4T=OL]&!O[UA/7&5U>&!6
  955. XM35[=<UQ\X^ML<W-K_>C;W?]K:GKK=G+V]G9A8O#D>W'M=67HW^#L8WG?VNMC
  956. XM:&5M=7/K95QN;N[E[^WQY=[9S=;@W?)_Y^EY9E]<6%553TY34U!465MLZN[K
  957. XMW]_CX-?8VMO<U]C;U]ODXMS>Z_EW;6-:6%E<65A@75E?[?-J=7UX=&QE]N=X
  958. XM<N_?VN=S__MJ:N_U;_KMY.?=W?1V]^'N^.3T=?-[_'[\XOAN=&=@9'!B6UY8
  959. XM6%Q?_NK?Y6]WY_EG</STZMS<Y=O/UNC:UMC@95I>8V%E9&)>7F5C;OEQ:61R
  960. XM_^W?>F]R9''IX?)^:UUE9G[N>W%O\.;HXN+>V^Q_W,W,V.?=YO3S=GIQ75I=
  961. XM6E135E=56U]>8VII8EQ=;.KEZ=G7U=7BV='6ZGGP]>;=['[KY6ID^?US]'QA
  962. XM96-I;77V:O9P4U)36VEJ:VY\>WWI?G'W<VGUW=WO[=;8YM[;Y/AY<^[J\]K>
  963. XM^NCI\7ET?EY@<V5>6UI85E-996AO[^#;V^WTX>#H[OMN=^SI;WS1U&MC[>MY
  964. XM?/!Y;O9V;')[]_!W;FUE:'!M:_7[9'SS9F-H:_/U>/OFV]OS=>KQ]N3E[_[O
  965. XMY^?W;5Y<8&%S[?YL_.OL^GGX\.7BY.9\9&%B8&IN8&9W\^/;Y7EO9&9M^WUO
  966. XM^O;Z;55/5VGU_'Q\[.#;W.ONZ^S:WNSAY-K:W]G9ZGU^8EI@:5M.3U5:^NGM
  967. XM[/+]:6)D7%]<77?CV-[Z[^#?W.?Y_FG]X.C^_.=\:69E]NOCX^WZ9V!XY^;F
  968. XM[WMP8FUZ_&UI>V]J=VUQ[^_]<'AM<NOCW-O?WO-I95A.355F=N?<U,[5X_)E
  969. XM8F9_U]/>ZFE98FEK=71E;75OZ=_B]65@7V!G=.3CY=G:W-[O75=@6$]7[][<
  970. XMWWUL<FED?>OU=W5_;%Y;8/+>X>K<T]O]8EM=7VGH['%[_GM^[]#$Q\[:ZWQ:
  971. XM3VOC?%I77%M97&!L9V=Q8516:6]D_=S6T-38WN+O9V9SYMOAXG)85%!9;N#1
  972. XMU-?5VOQ?;&-05%U>6%UT].K<W._XZ?)W\.3DY.OL[NKQ^>SFW=SG?G5Q6U%>
  973. XM;6ML:%]>75E<76%L:&-I;WSMY-#*RLG,S]OP\GML7UEK\G-H7%5566%>6GGL
  974. XM<VA=77/[?7SW].[N[M_<U,S3X_YK>/+H\6UL>')E9&=J_?5]\^5Y6%UQ:F5I
  975. XM;7UN75]>77-L8>G/R\O.U-[CWMO@ZW!=7FIN<WA;3E->5U9JX=C=V][Z8EU<
  976. XM7?SCWM_P=.K7YUA,5F=74FS2RM#9VN9H5E=>7&)[_/IT]=7)Q<G2X7A=7%U5
  977. XM3TQ*2D_]RL'$S^Y=6&!C\]78YV!,24M-4V#OW-K>\^S6V?ID9W1K:&G\VM'/
  978. XMS]ON<EM65E9=^-[C[-C.TMS>YV9.1D$_1$I/8MW*Q,3%R=/N8EAB>/'AU\S-
  979. XMY7I]74U(3%5<9_S=V.+LYW!76WKJX.AQ9EU24F?SX]C3TMSCVN1H7%=?[-[<
  980. XMV-WO;UY766GO]>C>Z._[?7W_?/IM6%=A[]W?[7):4$U,6>K2R\S1V?!G6E5H
  981. XM\G=S;_KFW]K8U]O=Z?;S_VQ<44A&2$I4;N?4RL2^O;_*WUQ+2DM+4%MD7%!-
  982. XM3E1BZ=/+Q\?+U=OX7EI634I.4UEA8E]H?.+1S,K(SMWO?_WGX.'D[W]D5$M.
  983. XM6V'MTL[8X>EK65QH_WML<F5=651.2T]<[=C5S<?(SM?8V^ID5U1/5&OKY]_5
  984. XMUM_L>7-L7EM?74]*355G_F_WX=[BU\W*RM'8[F1:6EUL\.GQ<&UO<G-N9UUC
  985. XM:FMP?.[_>OUT<F5VY./K>FAA;/I]?>/:WN+GWM?:W^SZ>V-;55-<8V9L>_QA
  986. XM6%UL[]_7U];:['AK965M=FMI?N39V-G<Y/EI8V)E75ID<&-<9V]Q^.OF[N[L
  987. XH].[X<6MI>?#EZ_?GX>7W:FEG9FMV_?+IZ.?DY/;O]?;N[GEB7U]P=>OF
  988. Xend
  989. END_OF_FILE
  990.   if test 13537 -ne `wc -c <'sounds/shoot.au.uue'`; then
  991.     echo shar: \"'sounds/shoot.au.uue'\" unpacked with wrong size!
  992.   fi
  993.   # end of 'sounds/shoot.au.uue'
  994. fi
  995. if test -f 'stage.c' -a "${1}" != "-c" ; then 
  996.   echo shar: Will not clobber existing file \"'stage.c'\"
  997. else
  998.   echo shar: Extracting \"'stage.c'\" \(13726 characters\)
  999.   sed "s/^X//" >'stage.c' <<'END_OF_FILE'
  1000. X#include "copyright.h"
  1001. X
  1002. X/*
  1003. X *  Include file dependencies:
  1004. X */
  1005. X
  1006. X#include <stdio.h>
  1007. X#include <stdlib.h>
  1008. X#include <stddef.h>
  1009. X#include <X11/Xlib.h>
  1010. X#include <X11/Xutil.h>
  1011. X#include <X11/Xos.h>
  1012. X#include <xpm.h>
  1013. X
  1014. X#include "bitmaps/mainbackground.xpm"
  1015. X#include "bitmaps/background.xpm"
  1016. X#include "bitmaps/background2.xpm"
  1017. X#include "bitmaps/background3.xpm"
  1018. X#include "bitmaps/background4.xpm"
  1019. X#include "bitmaps/background5.xpm"
  1020. X#include "bitmaps/background6.xpm"
  1021. X#include "bitmaps/background7.xpm"
  1022. X#include "bitmaps/background8.xpm"
  1023. X#include "bitmaps/background9.xpm"
  1024. X#include "bitmaps/background10.xpm"
  1025. X#include "bitmaps/background11.xpm"
  1026. X#include "bitmaps/icon.xpm"
  1027. X
  1028. X#include "error.h"
  1029. X#include "blocks.h"
  1030. X#include "sfx.h"
  1031. X#include "ball.h"
  1032. X#include "paddle.h"
  1033. X#include "version.h"
  1034. X#include "init.h"
  1035. X
  1036. X#include "stage.h"
  1037. X
  1038. X/*
  1039. X *  Internal macro definitions:
  1040. X */
  1041. X
  1042. X#define LEFT_OFFSET        10
  1043. X#define RIGHT_OFFSET    10
  1044. X#define TOP_OFFSET      10
  1045. X#define MIDDLE_OFFSET   10
  1046. X
  1047. X/*
  1048. X *  Internal type declarations:
  1049. X */
  1050. X
  1051. X#if NeedFunctionPrototypes
  1052. Xstatic Window SetWMIcon(Display *display);
  1053. X#else
  1054. Xstatic Window SetWMIcon();
  1055. X#endif
  1056. X
  1057. X/*
  1058. X *  Internal variable declarations:
  1059. X */
  1060. X
  1061. XWindow iconWindow;
  1062. XWindow mainWindow;
  1063. XWindow scoreWindow;
  1064. XWindow levelWindow;
  1065. XWindow playWindow;
  1066. XWindow messWindow;
  1067. XWindow specialWindow;
  1068. XWindow timeWindow;
  1069. XPixmap    mainBackPixmap, iconPixmap;
  1070. XPixmap  back1Pixmap, back2Pixmap, back3Pixmap, back4Pixmap, back5Pixmap;
  1071. XPixmap  back6Pixmap, back7Pixmap, back8Pixmap, back9Pixmap, back10Pixmap;
  1072. XPixmap  back11Pixmap;
  1073. X
  1074. X#if NeedFunctionPrototypes
  1075. Xvoid InitialiseMainBackPixmap(Display *display, Window window, 
  1076. X    Colormap colormap)
  1077. X#else
  1078. Xvoid InitialiseMainBackPixmap(display, window, colormap)
  1079. X    Display *display;
  1080. X    Window window;
  1081. X    Colormap colormap;
  1082. X#endif
  1083. X{
  1084. X    XpmAttributes   attributes;
  1085. X    int            XpmErrorStatus;
  1086. X
  1087. X    attributes.valuemask = XpmColormap;
  1088. X    attributes.colormap = colormap;
  1089. X
  1090. X    /* Create the playfield background pixmaps */
  1091. X
  1092. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, 
  1093. X        mainbackground_xpm, &mainBackPixmap, NULL, &attributes);
  1094. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1095. X
  1096. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background_xpm,
  1097. X        &back1Pixmap, NULL, &attributes);
  1098. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1099. X
  1100. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background2_xpm,
  1101. X        &back2Pixmap, NULL, &attributes);
  1102. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1103. X
  1104. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background3_xpm,
  1105. X        &back3Pixmap, NULL, &attributes);
  1106. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1107. X
  1108. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background4_xpm,
  1109. X        &back4Pixmap, NULL, &attributes);
  1110. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1111. X
  1112. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background5_xpm,
  1113. X        &back5Pixmap, NULL, &attributes);
  1114. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1115. X
  1116. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background6_xpm,
  1117. X        &back6Pixmap, NULL, &attributes);
  1118. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1119. X
  1120. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background7_xpm,
  1121. X        &back7Pixmap, NULL, &attributes);
  1122. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1123. X
  1124. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background8_xpm,
  1125. X        &back8Pixmap, NULL, &attributes);
  1126. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1127. X
  1128. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background9_xpm,
  1129. X        &back9Pixmap, NULL, &attributes);
  1130. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1131. X
  1132. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background10_xpm,
  1133. X        &back10Pixmap, NULL, &attributes);
  1134. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1135. X
  1136. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, background11_xpm,
  1137. X        &back11Pixmap, NULL, &attributes);
  1138. X    HandleXPMError(display, XpmErrorStatus, "InitialiseMainBackPixmap()");
  1139. X
  1140. X    /* Free the xpm pixmap attributes */
  1141. X    XpmFreeAttributes(&attributes);
  1142. X}
  1143. X
  1144. X#if NeedFunctionPrototypes
  1145. Xvoid ClearMainWindow(Display *display, Window window)
  1146. X#else
  1147. Xvoid ClearMainWindow(display, window)
  1148. X    Display *display;
  1149. X    Window window;
  1150. X#endif
  1151. X{
  1152. X    /* Make sure that it is drawn */
  1153. X    XClearWindow(display, mainWindow);
  1154. X}
  1155. X
  1156. X#if NeedFunctionPrototypes
  1157. Xvoid CreateAllWindows(Display *display, Colormap colormap,
  1158. X    char **argv, int argc)
  1159. X#else
  1160. Xvoid CreateAllWindows(display, colormap, argv, argc)
  1161. X    Display *display;
  1162. X    Colormap colormap;
  1163. X    char **argv;
  1164. X    int argc;
  1165. X#endif
  1166. X{
  1167. X    char             title[80];
  1168. X    int             offsetX, offsetY, scoreWidth;
  1169. X    XWMHints         wmhints;
  1170. X    XClassHint         classhints;
  1171. X    XSizeHints         sizehints;
  1172. X    XTextProperty     windowName, iconName;
  1173. X    XSetWindowAttributes winattr;
  1174. X    unsigned long     valuemask;
  1175. X
  1176. X    char *window_Name     = "- XBoing -";
  1177. X    char *icon_Name     = "XBoing";
  1178. X
  1179. X    offsetX = MAIN_WIDTH / 2;
  1180. X    offsetY = MAIN_HEIGHT / 2;
  1181. X    scoreWidth = 224;
  1182. X
  1183. X    /* Create the main window */
  1184. X    mainWindow = XCreateSimpleWindow(display,
  1185. X        RootWindow(display, DefaultScreen(display)), 0, 0,
  1186. X        PLAY_WIDTH + MAIN_WIDTH + 10, PLAY_HEIGHT + MAIN_HEIGHT + 10, 2, 
  1187. X        red, black);
  1188. X
  1189. X    /* Create the score window */
  1190. X    scoreWindow = XCreateSimpleWindow(display, mainWindow, 
  1191. X        offsetX, 10, scoreWidth, 42, 0, white, black);
  1192. X
  1193. X    /* Create the level window */
  1194. X    levelWindow = XCreateSimpleWindow(display, mainWindow, 
  1195. X        scoreWidth + offsetX + 25, 5, 
  1196. X            PLAY_WIDTH + offsetX - 20 - scoreWidth, 52, 0, white, black);
  1197. X
  1198. X    /* Create the playing area window */
  1199. X    playWindow = XCreateSimpleWindow(display, mainWindow, 
  1200. X        offsetX, 60, PLAY_WIDTH, PLAY_HEIGHT, 5, red, black);
  1201. X
  1202. X    /* Create the message area window */
  1203. X    messWindow = XCreateSimpleWindow(display, mainWindow, 
  1204. X        offsetX, 65 + PLAY_HEIGHT + 10, PLAY_WIDTH / 2, MESS_HEIGHT, 4, 
  1205. X        white, black);
  1206. X
  1207. X    /* Create the special bonus area window */
  1208. X    specialWindow = XCreateSimpleWindow(display, mainWindow, 
  1209. X        offsetX + PLAY_WIDTH / 2 + 10, 65 + PLAY_HEIGHT + 10, 
  1210. X        180, MESS_HEIGHT + 5, 0, white, black);
  1211. X
  1212. X    /* Create the timer area window */
  1213. X    timeWindow = XCreateSimpleWindow(display, mainWindow, 
  1214. X        offsetX + PLAY_WIDTH / 2 + 10 + 180 + 5, 
  1215. X        65 + PLAY_HEIGHT + 10, PLAY_WIDTH / 8, MESS_HEIGHT + 5, 
  1216. X        0, white, black);
  1217. X
  1218. X    /* Set window manager properties */
  1219. X    sprintf(title, "XBoing V%d.%d", VERSION, REVNUM + buildNum);
  1220. X
  1221. X    if (XStringListToTextProperty(&window_Name, 1, &windowName) == 0)
  1222. X        ShutDown(display, 1, "Cannot create window name resource.");
  1223. X
  1224. X    if (XStringListToTextProperty(&icon_Name, 1, &iconName) == 0) 
  1225. X        ShutDown(display, 1, "Cannot create icon name resource.");
  1226. X
  1227. X    iconWindow = SetWMIcon(display);
  1228. X
  1229. X    /* Various window manager settings */
  1230. X    wmhints.initial_state     = NormalState;
  1231. X    wmhints.input             = True;
  1232. X    wmhints.icon_pixmap     = iconPixmap;
  1233. X    wmhints.icon_window     = iconWindow;
  1234. X    wmhints.flags = StateHint | InputHint | IconPixmapHint | IconWindowHint;
  1235. X
  1236. X    /* Set the class for XBoing */
  1237. X    classhints.res_name        = "XBoing";
  1238. X    classhints.res_class     = "XBoing";
  1239. X
  1240. X    /* Setup the max and minimum size that the window will be */
  1241. X    sizehints.flags         = PPosition | PSize | PMinSize | PMaxSize;
  1242. X    sizehints.min_width     = PLAY_WIDTH + MAIN_WIDTH + 10;
  1243. X    sizehints.min_height    = PLAY_HEIGHT + MAIN_HEIGHT + 10;
  1244. X    sizehints.max_width     = PLAY_WIDTH + MAIN_WIDTH + 10;
  1245. X    sizehints.max_height    = PLAY_HEIGHT + MAIN_HEIGHT + 10;
  1246. X
  1247. X    /* Now set the window manager properties */
  1248. X    XSetWMProperties(display, mainWindow, &windowName, &iconName,
  1249. X        argv, argc, &sizehints, &wmhints, &classhints);
  1250. X
  1251. X    /* Set the current icon as the window's background pixmap */
  1252. X    XSetWindowBackgroundPixmap(display, iconWindow, iconPixmap);
  1253. X    XClearWindow(display, iconWindow);
  1254. X
  1255. X    valuemask = CWColormap;
  1256. X    winattr.colormap = colormap;
  1257. X
  1258. X    /* Check if the server allows backing store */
  1259. X    if (DoesBackingStore(XDefaultScreenOfDisplay(display)) == Always)
  1260. X    {
  1261. X        /* Ok we want backing store as it is very useful */
  1262. X        valuemask |= CWBackingStore;
  1263. X        winattr.backing_store = Always;
  1264. X    }
  1265. X
  1266. X    XChangeWindowAttributes(display, mainWindow, valuemask, &winattr);
  1267. X    XChangeWindowAttributes(display, playWindow, valuemask, &winattr);
  1268. X    XChangeWindowAttributes(display, levelWindow, valuemask, &winattr);
  1269. X    XChangeWindowAttributes(display, scoreWindow, valuemask, &winattr);
  1270. X    XChangeWindowAttributes(display, messWindow, valuemask, &winattr);
  1271. X    XChangeWindowAttributes(display, specialWindow, valuemask, &winattr);
  1272. X    XChangeWindowAttributes(display, timeWindow, valuemask, &winattr);
  1273. X}
  1274. X
  1275. X#if NeedFunctionPrototypes
  1276. Xvoid SetBackgrounds(Display *display, Colormap colormap)
  1277. X#else
  1278. Xvoid SetBackgrounds(display, colormap)
  1279. X    Display *display;
  1280. X    Colormap colormap;
  1281. X#endif
  1282. X{
  1283. X    InitialiseMainBackPixmap(display, mainWindow, colormap);
  1284. X
  1285. X    ClearMainWindow(display, mainWindow);
  1286. X    XSetWindowBackgroundPixmap(display, levelWindow, ParentRelative);
  1287. X    XClearWindow(display, levelWindow);
  1288. X    XSetWindowBackgroundPixmap(display, scoreWindow, ParentRelative);
  1289. X    XClearWindow(display, scoreWindow);
  1290. X    XSetWindowBackgroundPixmap(display, specialWindow, ParentRelative);
  1291. X    XClearWindow(display, specialWindow);
  1292. X    XSetWindowBackgroundPixmap(display, timeWindow, ParentRelative);
  1293. X    XClearWindow(display, timeWindow);
  1294. X}
  1295. X
  1296. X#if NeedFunctionPrototypes
  1297. Xvoid MapAllWindows(Display *display)
  1298. X#else
  1299. Xvoid MapAllWindows(display)
  1300. X    Display *display;
  1301. X#endif
  1302. X{
  1303. X    /* Actually make everything visible */
  1304. X      XMapWindow(display, specialWindow);
  1305. X      XMapWindow(display, timeWindow);
  1306. X      XMapWindow(display, messWindow);
  1307. X    XMapWindow(display, playWindow);
  1308. X    XMapWindow(display, levelWindow);
  1309. X    XMapWindow(display, scoreWindow);
  1310. X    XMapWindow(display, mainWindow);
  1311. X    XFlush(display);
  1312. X}
  1313. X
  1314. X#if NeedFunctionPrototypes
  1315. Xvoid RedrawPlayWindow(Display *display, Window window)
  1316. X#else
  1317. Xvoid RedrawPlayWindow(display, window)
  1318. X    Display *display;
  1319. X    Window window;
  1320. X#endif
  1321. X{
  1322. X    /* Redraw the main playfield */
  1323. X    XClearWindow(display, playWindow);
  1324. X    RedrawAllBlocks(display, window);
  1325. X    RedrawPaddle(display, window);
  1326. X    RedrawBall(display, window);
  1327. X}
  1328. X
  1329. X#if NeedFunctionPrototypes
  1330. Xvoid FreeBackgroundPixmaps(Display *display)
  1331. X#else
  1332. Xvoid FreeBackgroundPixmaps(display)
  1333. X    Display *display;
  1334. X#endif
  1335. X{
  1336. X    /* Free all the backgound pixmaps */
  1337. X    if (back1Pixmap)    XFreePixmap(display, back1Pixmap); 
  1338. X    if (back2Pixmap)    XFreePixmap(display, back2Pixmap);
  1339. X    if (back3Pixmap)    XFreePixmap(display, back3Pixmap); 
  1340. X    if (back4Pixmap)    XFreePixmap(display, back4Pixmap);
  1341. X    if (back5Pixmap)    XFreePixmap(display, back5Pixmap); 
  1342. X    if (back6Pixmap)    XFreePixmap(display, back6Pixmap); 
  1343. X    if (back7Pixmap)    XFreePixmap(display, back7Pixmap); 
  1344. X    if (back8Pixmap)    XFreePixmap(display, back8Pixmap); 
  1345. X    if (back9Pixmap)    XFreePixmap(display, back9Pixmap); 
  1346. X    if (back10Pixmap)    XFreePixmap(display, back10Pixmap); 
  1347. X    if (back11Pixmap)    XFreePixmap(display, back11Pixmap); 
  1348. X
  1349. X    /* Free the icon and main background pixmaps */
  1350. X    if (iconPixmap)        XFreePixmap(display, iconPixmap);
  1351. X    if (mainBackPixmap)    XFreePixmap(display, mainBackPixmap); 
  1352. X}
  1353. X
  1354. X#if NeedFunctionPrototypes
  1355. Xstatic Window SetWMIcon(Display *display)
  1356. X#else
  1357. Xstatic Window SetWMIcon(display)
  1358. X    Display *display;
  1359. X#endif
  1360. X{
  1361. X    XpmAttributes   attributes;
  1362. X    Window               win, root;
  1363. X    Colormap        iconcolormap;
  1364. X    int                XpmErrorStatus;
  1365. X                            
  1366. X    /* Suss out the root window */
  1367. X    root = RootWindow(display, DefaultScreen(display));
  1368. X
  1369. X    if (!(win = XCreateSimpleWindow(display, root,
  1370. X        0, 0, 50, 50, 0, CopyFromParent, CopyFromParent)))
  1371. X    {
  1372. X        /* Well, what a bummer. Just use default icon then. */
  1373. X        ErrorMessage("Cannot create icon pixmap.");
  1374. X        return ((Window) NULL);
  1375. X    }
  1376. X
  1377. X    /* Create a new colourmap for the icon window */
  1378. X    iconcolormap = XDefaultColormap(display, XDefaultScreen(display));
  1379. X
  1380. X    /* Create all xpm pixmap blocks from the files */
  1381. X    attributes.colormap = iconcolormap;
  1382. X    attributes.valuemask = XpmColormap;
  1383. X    XpmErrorStatus = XpmCreatePixmapFromData(display, win, 
  1384. X        icon_xpm, &iconPixmap, NULL, &attributes);
  1385. X    HandleXPMError(display, XpmErrorStatus, "InitialiseWMIcon()");
  1386. X
  1387. X    /* Make the new window have the new colourmap */
  1388. X    XSetWindowColormap(display, win, iconcolormap);
  1389. X
  1390. X    /* Free the background pixmap attributes */
  1391. X    XpmFreeAttributes(&attributes);
  1392. X
  1393. X    return win;
  1394. X}
  1395. X
  1396. X#if NeedFunctionPrototypes
  1397. Xvoid DrawStageBackground(Display *display, Window window, int stageType)
  1398. X#else
  1399. Xvoid DrawStageBackground(display, window, stageType)
  1400. X    Display *display;
  1401. X    Window window;
  1402. X    int stageType;
  1403. X#endif
  1404. X{
  1405. X    switch (stageType)
  1406. X    {
  1407. X        case BACKGROUND_0:
  1408. X            XSetWindowBackgroundPixmap(display, window, mainBackPixmap);
  1409. X            break;
  1410. X
  1411. X        case BACKGROUND_1:
  1412. X            XSetWindowBackgroundPixmap(display, window, back1Pixmap);
  1413. X            break;
  1414. X
  1415. X        case BACKGROUND_2:
  1416. X            XSetWindowBackgroundPixmap(display, window, back2Pixmap);
  1417. X            break;
  1418. X
  1419. X        case BACKGROUND_3:
  1420. X            XSetWindowBackgroundPixmap(display, window, back3Pixmap);
  1421. X            break;
  1422. X                                                                                        case BACKGROUND_4:
  1423. X            XSetWindowBackgroundPixmap(display, window, back4Pixmap);
  1424. X            break;
  1425. X
  1426. X        case BACKGROUND_5:
  1427. X            XSetWindowBackgroundPixmap(display, window, back5Pixmap);
  1428. X            break;
  1429. X
  1430. X        case BACKGROUND_6:
  1431. X            XSetWindowBackgroundPixmap(display, window, back6Pixmap);
  1432. X            break;
  1433. X
  1434. X        case BACKGROUND_7:
  1435. X            XSetWindowBackgroundPixmap(display, window, back7Pixmap);
  1436. X            break;
  1437. X
  1438. X        case BACKGROUND_8:
  1439. X            XSetWindowBackgroundPixmap(display, window, back8Pixmap);
  1440. X            break;
  1441. X
  1442. X        case BACKGROUND_9:
  1443. X            XSetWindowBackgroundPixmap(display, window, back9Pixmap);
  1444. X            break;
  1445. X
  1446. X        case BACKGROUND_10:
  1447. X            XSetWindowBackgroundPixmap(display, window, back10Pixmap);
  1448. X            break;
  1449. X
  1450. X        case BACKGROUND_11:
  1451. X            XSetWindowBackgroundPixmap(display, window, back11Pixmap);
  1452. X            break;
  1453. X
  1454. X        default:
  1455. X            XSetWindowBackgroundPixmap(display, window, back1Pixmap);
  1456. X    }
  1457. X
  1458. X    /* Flush the new background */
  1459. X    XClearWindow(display, window);
  1460. X}
  1461. END_OF_FILE
  1462.   if test 13726 -ne `wc -c <'stage.c'`; then
  1463.     echo shar: \"'stage.c'\" unpacked with wrong size!
  1464.   fi
  1465.   # end of 'stage.c'
  1466. fi
  1467. echo shar: End of archive 16 \(of 26\).
  1468. cp /dev/null ark16isdone
  1469. MISSING=""
  1470. 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
  1471.     if test ! -f ark${I}isdone ; then
  1472.     MISSING="${MISSING} ${I}"
  1473.     fi
  1474. done
  1475. if test "${MISSING}" = "" ; then
  1476.     echo You have unpacked all 26 archives.
  1477.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1478.     echo "merging split files..."
  1479.     cat blocks.c[12] > blocks.c
  1480.     rm blocks.c[12]
  1481.     echo "blocks.c done"
  1482.     cat bitmaps/earth.xpm.Z.u.[ab] > bitmaps/earth.xpm.Z.uue
  1483.     rm bitmaps/earth.xpm.Z.u.[ab]
  1484.     echo "bitmaps/earth.xpm.Z.uue done"
  1485. else
  1486.     echo You still must unpack the following archives:
  1487.     echo "        " ${MISSING}
  1488. fi
  1489. exit 0
  1490. exit 0 # Just in case...
  1491. -- 
  1492.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  1493. \X/  Amiga - The only way to fly! |    sources-x@sterling.com
  1494.  "It's intuitively obvious to the |
  1495.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  1496.