home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume18 / xboing / part23 < prev    next >
Encoding:
Internet Message Format  |  1993-09-13  |  59.6 KB

  1. Path: uunet!news.tek.com!news.cna.tek.com!not-for-mail
  2. From: billr@saab.cna.tek.com (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i082:  xboing - blockout variant with color and sound for X, Part23/30
  5. Date: 30 Aug 1993 10:29:17 -0700
  6. Organization: Tektronix, Inc., Redmond, OR
  7. Lines: 2006
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <25tddd$i29@saab.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1882
  12.  
  13. Submitted-by: jck@kimba.catt.citri.edu.au (Justin Kibell)
  14. Posting-number: Volume 18, Issue 82
  15. Archive-name: xboing/part23
  16. Environment: X11, Xlib, XPM
  17.  
  18.  
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 23 (of 30)."
  27. # Contents:  Makefile.std audio/AFaudio.c intro.c presents.c
  28. #   sounds/stamp.au.uu
  29. # Wrapped by billr@saab on Mon Aug 30 09:14:29 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'Makefile.std' -a "${1}" != "-c" ; then 
  32.   echo shar: Will not clobber existing file \"'Makefile.std'\"
  33. else
  34. echo shar: Extracting \"'Makefile.std'\" \(13207 characters\)
  35. sed "s/^X//" >'Makefile.std' <<'END_OF_FILE'
  36. X# Makefile generated by imake - do not edit!
  37. X# $XConsortium: imake.c,v 1.65 91/07/25 17:50:17 rws Exp $
  38. X#
  39. X# The cpp used on this machine replaces all newlines and multiple tabs and
  40. X# spaces in a macro expansion with a single space.  Imake tries to compensate
  41. X# for this, but is not always successful.
  42. X#
  43. X
  44. X# -------------------------------------------------------------------------
  45. X# Makefile generated from "Imake.tmpl" and </tmp/IIf.a07223>
  46. X# $XConsortium: Imake.tmpl,v 1.139 91/09/16 08:52:48 rws Exp $
  47. X#
  48. X# Platform-specific parameters may be set in the appropriate <vendor>.cf
  49. X# configuration files.  Site-specific parameters should be set in the file
  50. X# site.def.  Full rebuilds are recommended if any parameters are changed.
  51. X#
  52. X# If your C preprocessor does not define any unique symbols, you will need
  53. X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
  54. X# "make World" the first time).
  55. X#
  56. X
  57. X# -------------------------------------------------------------------------
  58. X# site-specific configuration parameters that need to come before
  59. X# the platform-specific parameters - edit site.def to change
  60. X
  61. X# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  62. X
  63. X# -------------------------------------------------------------------------
  64. X# platform-specific configuration parameters - edit sun.cf to change
  65. X
  66. X# platform:  $XConsortium: sun.cf,v 1.72.1.1 92/03/18 13:13:37 rws Exp $
  67. X
  68. X# operating system:  SunOS 4.1.2
  69. X
  70. X# $XConsortium: sunLib.rules,v 1.7 91/12/20 11:19:47 rws Exp $
  71. X
  72. X# -------------------------------------------------------------------------
  73. X# site-specific configuration parameters that go after
  74. X# the platform-specific parameters - edit site.def to change
  75. X
  76. X# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $
  77. X
  78. X            SHELL = /bin/sh
  79. X
  80. X              TOP = .
  81. X      CURRENT_DIR = .
  82. X
  83. X               AR = ar clq
  84. X  BOOTSTRAPCFLAGS =
  85. X               CC = cc
  86. X               AS = as
  87. X
  88. X         COMPRESS = compress
  89. X              CPP = /lib/cpp $(STD_CPP_DEFINES)
  90. X    PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
  91. X          INSTALL = install
  92. X               LD = ld
  93. X             LINT = lint
  94. X      LINTLIBFLAG = -C
  95. X         LINTOPTS = -axz
  96. X               LN = ln -s
  97. X             MAKE = make
  98. X               MV = mv
  99. X               CP = cp
  100. X
  101. X           RANLIB = ranlib
  102. X  RANLIBINSTFLAGS =
  103. X
  104. X               RM = rm -f
  105. X            TROFF = psroff
  106. X         MSMACROS = -ms
  107. X              TBL = tbl
  108. X              EQN = eqn
  109. X     STD_INCLUDES =
  110. X  STD_CPP_DEFINES =
  111. X      STD_DEFINES =
  112. X EXTRA_LOAD_FLAGS =
  113. X  EXTRA_LIBRARIES =
  114. X             TAGS = ctags
  115. X
  116. X    SHAREDCODEDEF = -DSHAREDCODE
  117. X         SHLIBDEF = -DSUNSHLIB
  118. X
  119. X    PROTO_DEFINES =
  120. X
  121. X     INSTPGMFLAGS =
  122. X
  123. X     INSTBINFLAGS = -m 0755
  124. X     INSTUIDFLAGS = -m 4755
  125. X     INSTLIBFLAGS = -m 0644
  126. X     INSTINCFLAGS = -m 0444
  127. X     INSTMANFLAGS = -m 0444
  128. X     INSTDATFLAGS = -m 0444
  129. X    INSTKMEMFLAGS = -g kmem -m 2755
  130. X
  131. X      CDEBUGFLAGS = -O
  132. X        CCOPTIONS = -pipe
  133. X
  134. X      ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES)
  135. X       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(DEFINES)
  136. X           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
  137. X        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
  138. X
  139. X           LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
  140. X
  141. X        LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(LOCAL_LDFLAGS)
  142. X
  143. X   LDCOMBINEFLAGS = -X -r
  144. X      DEPENDFLAGS =
  145. X
  146. X        MACROFILE = sun.cf
  147. X           RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
  148. X
  149. X    IMAKE_DEFINES =
  150. X
  151. X         IRULESRC = $(CONFIGDIR)
  152. X        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
  153. X
  154. X     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
  155. X            $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
  156. X            $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
  157. X
  158. X# -------------------------------------------------------------------------
  159. X# X Window System Build Parameters
  160. X# $XConsortium: Project.tmpl,v 1.138.1.1 92/11/11 09:49:19 rws Exp $
  161. X
  162. X# -------------------------------------------------------------------------
  163. X# X Window System make variables; this need to be coordinated with rules
  164. X
  165. X          PATHSEP = /
  166. X        USRLIBDIR = /usr/lib
  167. X           BINDIR = /usr/bin/X11
  168. X          INCROOT = /usr/include
  169. X     BUILDINCROOT = $(TOP)
  170. X      BUILDINCDIR = $(BUILDINCROOT)/X11
  171. X      BUILDINCTOP = ..
  172. X           INCDIR = $(INCROOT)/X11
  173. X           ADMDIR = /usr/adm
  174. X           LIBDIR = $(USRLIBDIR)/X11
  175. X        CONFIGDIR = $(LIBDIR)/config
  176. X       LINTLIBDIR = $(USRLIBDIR)/lint
  177. X
  178. X          FONTDIR = $(LIBDIR)/fonts
  179. X         XINITDIR = $(LIBDIR)/xinit
  180. X           XDMDIR = $(LIBDIR)/xdm
  181. X           TWMDIR = $(LIBDIR)/twm
  182. X          MANPATH = /usr/man
  183. X    MANSOURCEPATH = $(MANPATH)/man
  184. X        MANSUFFIX = n
  185. X     LIBMANSUFFIX = 3
  186. X           MANDIR = $(MANSOURCEPATH)$(MANSUFFIX)
  187. X        LIBMANDIR = $(MANSOURCEPATH)$(LIBMANSUFFIX)
  188. X           NLSDIR = $(LIBDIR)/nls
  189. X        PEXAPIDIR = $(LIBDIR)/PEX
  190. X      XAPPLOADDIR = $(LIBDIR)/app-defaults
  191. X       FONTCFLAGS = -t
  192. X
  193. X     INSTAPPFLAGS = $(INSTDATFLAGS)
  194. X
  195. X            IMAKE = imake
  196. X           DEPEND = makedepend
  197. X              RGB = rgb
  198. X
  199. X            FONTC = bdftopcf
  200. X
  201. X        MKFONTDIR = mkfontdir
  202. X        MKDIRHIER = /bin/sh $(BINDIR)/mkdirhier
  203. X
  204. X        CONFIGSRC = $(TOP)/config
  205. X       DOCUTILSRC = $(TOP)/doc/util
  206. X        CLIENTSRC = $(TOP)/clients
  207. X          DEMOSRC = $(TOP)/demos
  208. X           LIBSRC = $(TOP)/lib
  209. X          FONTSRC = $(TOP)/fonts
  210. X       INCLUDESRC = $(TOP)/X11
  211. X        SERVERSRC = $(TOP)/server
  212. X          UTILSRC = $(TOP)/util
  213. X        SCRIPTSRC = $(UTILSRC)/scripts
  214. X       EXAMPLESRC = $(TOP)/examples
  215. X       CONTRIBSRC = $(TOP)/../contrib
  216. X           DOCSRC = $(TOP)/doc
  217. X           RGBSRC = $(TOP)/rgb
  218. X        DEPENDSRC = $(UTILSRC)/makedepend
  219. X         IMAKESRC = $(CONFIGSRC)
  220. X         XAUTHSRC = $(LIBSRC)/Xau
  221. X          XLIBSRC = $(LIBSRC)/X
  222. X           XMUSRC = $(LIBSRC)/Xmu
  223. X       TOOLKITSRC = $(LIBSRC)/Xt
  224. X       AWIDGETSRC = $(LIBSRC)/Xaw
  225. X       OLDXLIBSRC = $(LIBSRC)/oldX
  226. X      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
  227. X      BDFTOSNFSRC = $(FONTSRC)/bdftosnf
  228. X      BDFTOSNFSRC = $(FONTSRC)/clients/bdftosnf
  229. X      BDFTOPCFSRC = $(FONTSRC)/clients/bdftopcf
  230. X     MKFONTDIRSRC = $(FONTSRC)/clients/mkfontdir
  231. X         FSLIBSRC = $(FONTSRC)/lib/fs
  232. X    FONTSERVERSRC = $(FONTSRC)/server
  233. X     EXTENSIONSRC = $(TOP)/extensions
  234. X         XILIBSRC = $(EXTENSIONSRC)/lib/xinput
  235. X        PEXLIBSRC = $(EXTENSIONSRC)/lib/PEXlib
  236. X      PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX
  237. X
  238. X# $XConsortium: sunLib.tmpl,v 1.14.1.2 92/11/11 09:55:02 rws Exp $
  239. X
  240. XSHLIBLDFLAGS = -assert pure-text
  241. XPICFLAGS = -pic
  242. X
  243. X  DEPEXTENSIONLIB =
  244. X     EXTENSIONLIB = -lXext
  245. X
  246. X          DEPXLIB = $(DEPEXTENSIONLIB)
  247. X             XLIB = $(EXTENSIONLIB) -lX11
  248. X
  249. X        DEPXMULIB = $(USRLIBDIR)/libXmu.sa.$(SOXMUREV)
  250. X       XMULIBONLY = -lXmu
  251. X           XMULIB = -lXmu
  252. X
  253. X       DEPOLDXLIB =
  254. X          OLDXLIB = -loldX
  255. X
  256. X      DEPXTOOLLIB = $(USRLIBDIR)/libXt.sa.$(SOXTREV)
  257. X         XTOOLLIB = -lXt
  258. X
  259. X        DEPXAWLIB = $(USRLIBDIR)/libXaw.sa.$(SOXAWREV)
  260. X           XAWLIB = -lXaw
  261. X
  262. X        DEPXILIB =
  263. X           XILIB = -lXi
  264. X
  265. X        DEPPEXLIB =
  266. X           PEXLIB = -lPEX5
  267. X
  268. X        SOXLIBREV = 4.10
  269. X          SOXTREV = 4.10
  270. X         SOXAWREV = 5.0
  271. X        SOOLDXREV = 4.10
  272. X         SOXMUREV = 4.10
  273. X        SOXEXTREV = 4.10
  274. X      SOXINPUTREV = 4.10
  275. X         SOPEXREV = 1.0
  276. X
  277. X      DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
  278. X         XAUTHLIB =  -lXau
  279. X      DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a
  280. X         XDMCPLIB =  -lXdmcp
  281. X
  282. X        DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a
  283. X           PHIGSLIB =  -lphigs
  284. X
  285. X       DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
  286. X          XBSDLIB =  -lXbsd
  287. X
  288. X LINTEXTENSIONLIB = $(LINTLIBDIR)/llib-lXext.ln
  289. X         LINTXLIB = $(LINTLIBDIR)/llib-lX11.ln
  290. X          LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
  291. X        LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln
  292. X          LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
  293. X           LINTXI = $(LINTLIBDIR)/llib-lXi.ln
  294. X          LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln
  295. X        LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln
  296. X
  297. X          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
  298. X
  299. X         DEPLIBS1 = $(DEPLIBS)
  300. X         DEPLIBS2 = $(DEPLIBS)
  301. X         DEPLIBS3 = $(DEPLIBS)
  302. X
  303. X# -------------------------------------------------------------------------
  304. X# Imake rules for building libraries, programs, scripts, and data files
  305. X# rules:  $XConsortium: Imake.rules,v 1.123 91/09/16 20:12:16 rws Exp $
  306. X
  307. X# -------------------------------------------------------------------------
  308. X# start of Imakefile
  309. X
  310. X# Imakefile for xboing version 1.7 - 27th August 1993
  311. X
  312. X# This is the directory where the highscore and level data will be placed.
  313. XXBOING_DIR            = .
  314. X
  315. XCC                    = cc
  316. XCCOPTIONS            =
  317. X
  318. X#CC                    = gcc
  319. X#CCOPTIONS            = -static -DFUNCPROTO -Wall
  320. X
  321. X# These are some defines that must be set. Some may be overwritten in the
  322. X# machine arch section.
  323. X
  324. XXPMLIB                = -L/usr/lib -lXpm
  325. XXPMINCLUDE            = -I/usr/include/X11
  326. XLEVEL_INSTALL_DIR     = $(XBOING_DIR)/levels
  327. XSOUNDS_DIR             = $(XBOING_DIR)/sounds
  328. XHIGH_SCORE_FILE     = $(XBOING_DIR)/xboing.scores
  329. XAUDIO_AVAILABLE        = False
  330. XAUDIO_SRC            = audio/NOaudio.c
  331. XAUDIO_INCLUDE         =
  332. XAUDIO_LIB             =
  333. X
  334. X# Below are the special defines for different machine archs.
  335. X
  336. XAUDIO_AVAILABLE    = True
  337. XAUDIO_SRC            = audio/SUNaudio.c
  338. X
  339. XAUDIO_INCLUDE = -I/usr/demo/SOUND/multimedia
  340. XAUDIO_LIB     = -L/usr/demo/SOUND -laudio
  341. X
  342. XEXTRA_INCLS = $(XPMINCLUDE) $(AUDIO_INCLUDE)
  343. X
  344. X# Please take the comment out from the USE_FLOCK bit if you want to use the
  345. X# flock() system call for locking instead of the lockf() system call.
  346. X
  347. XDEFINES    = $(EXTRA_INCLS) \
  348. X    -DHIGH_SCORE_FILE=\"$(HIGH_SCORE_FILE)\" \
  349. X    -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \
  350. X    -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \
  351. X    -DSOUNDS_DIR=\"$(SOUNDS_DIR)\" \
  352. X#     -DUSE_FLOCK=\"True\"
  353. X
  354. XLOCAL_LIBRARIES = $(AUDIO_LIB) $(XPMLIB) $(XLIB) -lm
  355. X
  356. X# Please don't change anything below this point - no need really - I hope.
  357. X
  358. XDEPLIBS = $(DEPXLIB)
  359. X
  360. XSRCS1=    version.c main.c score.c error.c ball.c blocks.c init.c \
  361. X        stage.c level.c paddle.c mess.c intro.c bonus.c sfx.c \
  362. X        highscore.c misc.c inst.c gun.c keys.c audio.c special.c \
  363. X        presents.c
  364. X
  365. XOBJS1=    version.o main.o score.o error.o ball.o blocks.o init.o \
  366. X        stage.o level.o paddle.o mess.o intro.o bonus.o sfx.o  \
  367. X        highscore.o misc.o inst.o gun.o keys.o audio.o special.o \
  368. X        presents.o
  369. X
  370. XPROGRAMS = xboing
  371. X
  372. Xall::    $(PROGRAMS)
  373. X        @$(RM) version.c
  374. X        @echo "xboing built successfully."
  375. X
  376. Xversion.c:
  377. X        @sh ./version.sh $(PROGRAMS)
  378. X
  379. Xaudio.c::  $(AUDIO_SRC)
  380. X    $(RM) $@
  381. X    $(LN) $? $@
  382. X
  383. X OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
  384. X SRCS = $(SRCS1) $(SRCS2) $(SRCS3)
  385. X
  386. Xall:: $(PROGRAMS)
  387. X
  388. X$(PROGRAMS): $(OBJS1) $(DEPLIBS1)
  389. X    $(RM) $@
  390. X    $(CC) -o $@ $(LDOPTIONS) $(OBJS1)  $(LOCAL_LIBRARIES) $(LDLIBS)   $(EXTRA_LOAD_FLAGS)
  391. X
  392. Xinstall:: $(PROGRAMS)
  393. X    @if [ -d $(DESTDIR)$(BINDIR) ]; then set +x; \
  394. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); fi
  395. X    $(INSTALL) -c $(INSTPGMFLAGS)  $(PROGRAMS) $(DESTDIR)$(BINDIR)
  396. X
  397. Xinstall.man:: $(PROGRAMS).man
  398. X    @if [ -d $(DESTDIR)$(MANDIR) ]; then set +x; \
  399. X    else (set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); fi
  400. X    $(INSTALL) -c $(INSTMANFLAGS) $(PROGRAMS).man $(DESTDIR)$(MANDIR)/$(PROGRAMS).$(MANSUFFIX)
  401. X
  402. Xdepend::
  403. X    $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
  404. X
  405. Xlint:
  406. X    $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
  407. Xlint1:
  408. X    $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
  409. X
  410. Xclean::
  411. X    $(RM) $(PROGRAMS)
  412. X
  413. Xinstall:: $(PROGRAMS)
  414. X    @echo "XBoing directory is " $(XBOING_DIR)
  415. X
  416. X    @echo "Creating directory " $(XBOING_DIR)
  417. X    @if [ ! -d $(XBOING_DIR) ]; then mkdir $(XBOING_DIR); fi
  418. X
  419. X    @echo "Creating directory " $(LEVEL_INSTALL_DIR)
  420. X    @if [ ! -d $(LEVEL_INSTALL_DIR) ]; then mkdir $(LEVEL_INSTALL_DIR); fi
  421. X
  422. X    @echo "Copying level data into directory " $(LEVEL_INSTALL_DIR)
  423. X    @cd ./levels; set -x; for file in *.data; do                    \
  424. X        $(INSTALL) -c $(INSTDATFLAGS) $$file $(LEVEL_INSTALL_DIR);    \
  425. X    done
  426. X
  427. X    @if [ "$(AUDIO_AVAILABLE)" = "True" ];                                 \
  428. X    then                                                                \
  429. X        echo "Creating directory " $(SOUNDS_DIR);                         \
  430. X        if [ ! -d $(SOUNDS_DIR) ]; then mkdir $(SOUNDS_DIR); fi;        \
  431. X        echo "Copying sound files into directory " $(SOUNDS_DIR);        \
  432. X        cd ./sounds; set -x; for file in *.au; do                        \
  433. X            $(INSTALL) -c $(INSTDATFLAGS) $$file $(SOUNDS_DIR);            \
  434. X        done;                                                            \
  435. X    fi
  436. X
  437. X    @echo "Creating a highscore file " $(HIGH_SCORE_FILE)
  438. X    @touch $(HIGH_SCORE_FILE);
  439. X    @chmod a+rw $(HIGH_SCORE_FILE);
  440. X
  441. Xbackup:
  442. X    make clean;
  443. X    tar cvf `date '+xboing%d-%h-%y.tar'` *
  444. X    gzip *.tar
  445. X    mv *.gz ../backup;
  446. X
  447. X# End of the XBoing Imakefile :-)
  448. X
  449. X# -------------------------------------------------------------------------
  450. X# common rules for all Makefiles - do not edit
  451. X
  452. Xemptyrule::
  453. X
  454. Xclean::
  455. X    $(RM_CMD) "#"*
  456. X
  457. XMakefile::
  458. X    -@if [ -f Makefile ]; then set -x; \
  459. X    $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
  460. X    else exit 0; fi
  461. X    $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
  462. X
  463. Xtags::
  464. X    $(TAGS) -w *.[ch]
  465. X    $(TAGS) -xw *.[ch] > TAGS
  466. X
  467. X# -------------------------------------------------------------------------
  468. X# empty rules for directories that do not have SUBDIRS - do not edit
  469. X
  470. Xinstall::
  471. X    @echo "install in $(CURRENT_DIR) done"
  472. X
  473. Xinstall.man::
  474. X    @echo "install.man in $(CURRENT_DIR) done"
  475. X
  476. XMakefiles::
  477. X
  478. Xincludes::
  479. X
  480. X# -------------------------------------------------------------------------
  481. X# dependencies generated by makedepend
  482. X
  483. END_OF_FILE
  484. if test 13207 -ne `wc -c <'Makefile.std'`; then
  485.     echo shar: \"'Makefile.std'\" unpacked with wrong size!
  486. fi
  487. # end of 'Makefile.std'
  488. fi
  489. if test -f 'audio/AFaudio.c' -a "${1}" != "-c" ; then 
  490.   echo shar: Will not clobber existing file \"'audio/AFaudio.c'\"
  491. else
  492. echo shar: Extracting \"'audio/AFaudio.c'\" \(4207 characters\)
  493. sed "s/^X//" >'audio/AFaudio.c' <<'END_OF_FILE'
  494. X#include "include/copyright.h"
  495. X
  496. X/*
  497. X * Audiofile format - original code from Andrew Leahy 
  498. X *                    <A.Leahy@st.nepean.uws.edu.au> 
  499. X */
  500. X
  501. X/*
  502. X *  Include file dependencies:
  503. X */
  504. X
  505. X#include <stdio.h>
  506. X#include <sys/types.h>
  507. X#include <sys/stat.h>
  508. X#include "AFlib.h"
  509. X
  510. X/* 
  511. X * Internal macro definitions: 
  512. X */
  513. X
  514. X#define BUFFER_SIZE                (1024 * SBUF_SIZE)    
  515. X#define False 0
  516. X#define True 1
  517. X#define SPEAKER 0 /* 0 external handset, 1 for internal speaker */
  518. X
  519. X/*
  520. X *  Internal type declarations:
  521. X */
  522. X
  523. X#if NeedFunctionPrototypes
  524. Xstatic void flushAudioDevice(void);
  525. X#else
  526. Xstatic void flushAudioDevice();
  527. X#endif
  528. X
  529. X/* 
  530. X * Internal variable declarations: 
  531. X */
  532. X
  533. Xint sample_sizes[] = 
  534. X{
  535. X    1,  /* MU255 */
  536. X    1,  /* ALAW */
  537. X    2,  /* Linear PCM, 16 bits, -1.0 <= x < 1.0 */
  538. X    2,  /* Linear PCM, 32 bits, -1.0 <= x < 1.0 */
  539. X    1,  /* G.721, 64Kbps to/from 32Kbps. */
  540. X    1,  /* G.723, 64Kbps to/from 32Kbps. */
  541. X    0
  542. X};
  543. X
  544. Xstatic char        *buf;
  545. Xint             err;
  546. Xstruct stat     st;
  547. Xstatic int      nbytes;
  548. Xchar            errorString[255];
  549. Xint                ssize;
  550. Xstatic ATime            t, act, nact;
  551. Xstatic AC                ac;
  552. Xstatic AFAudioConn        *aud;
  553. X
  554. X#if NeedFunctionPrototypes
  555. Xint SetUpAudioSystem(Display *display)
  556. X#else
  557. Xint SetUpAudioSystem(display)
  558. X    Display *display;
  559. X#endif
  560. X{
  561. X    AFSetACAttributes     attributes;
  562. X    int                 srate, device;
  563. X    unsigned int         channels;
  564. X    AEncodeType         type;
  565. X    char                 *server;
  566. X
  567. X    device                         = SPEAKER;
  568. X    attributes.preempt             = Mix;
  569. X    attributes.start_timeout     = 0;
  570. X    attributes.end_silence         = 0;
  571. X    attributes.play_gain         = 0;
  572. X    attributes.rec_gain         = 0;
  573. X
  574. X    if ((server = (char *) getenv("AUDIOFILE")) == NULL)
  575. X    {
  576. X        sprintf(errorString, 
  577. X            "The environment variable AUDIOFILE is not set.\n");
  578. X        ErrorMessage(errorString);
  579. X        return False;
  580. X    }
  581. X    else
  582. X    {
  583. X        if ((aud = AFOpenAudioConn(server)) == NULL) 
  584. X        {
  585. X            sprintf(errorString, "Cannot open a connection to audio server.\n");
  586. X            ErrorMessage(errorString);
  587. X            return False;
  588. X        }
  589. X
  590. X        ac = AFCreateAC(aud, device, ACPlayGain, &attributes);
  591. X        srate         = ac->device->playSampleFreq;
  592. X        type         = ac->device->playBufType;
  593. X        channels     = ac->device->playNchannels;
  594. X        ssize         = sample_sizes[type] * channels;
  595. X
  596. X        if ((buf = (char *) malloc(BUFFER_SIZE)) == NULL) 
  597. X        {
  598. X            sprintf(errorString, "Couldn't allocate a play buffer.\n");
  599. X            ErrorMessage(errorString);
  600. X            return False;
  601. X        }
  602. X    }
  603. X    /* Success in opening audio device */
  604. X    return True;
  605. X}
  606. X
  607. X#if NeedFunctionPrototypes
  608. Xstatic void flushAudioDevice(void)
  609. X#else
  610. Xstatic void flushAudioDevice()
  611. X#endif
  612. X{
  613. X    /* How is this done in audiofile? */
  614. X}
  615. X
  616. X#if NeedFunctionPrototypes
  617. Xvoid FreeAudioSystem(void)
  618. X#else
  619. Xvoid FreeAudioSystem()
  620. X#endif
  621. X{
  622. X    /* Close connection to the audiofile sound server */
  623. X    AFFreeAC(ac);
  624. X    AFCloseAudioConn(aud);
  625. X
  626. X    /* Free memory buffer */
  627. X    if (buf != (char *) NULL) free(buf);
  628. X}
  629. X
  630. X#if NeedFunctionPrototypes
  631. Xvoid SetMaximumVolume(int Volume)
  632. X#else
  633. Xvoid SetMaximumVolume(Volume)
  634. X    int Volume;
  635. X#endif
  636. X{
  637. X    /* Not needed */
  638. X}
  639. X
  640. X#if NeedFunctionPrototypes
  641. Xvoid playSoundFile(char *filename, int volume)
  642. X#else
  643. Xvoid playSoundFile(filename, volume)
  644. X    char *filename;
  645. X    int volume;
  646. X#endif
  647. X{
  648. X    int fd;
  649. X    char soundfile[1024];
  650. X    char *str;
  651. X
  652. X    /* Construct the sounds file path and use env var if exists */
  653. X    if ((str = (char *)getenv("XBOING_SOUND_DIR")) != NULL)
  654. X        sprintf(soundfile, "%s/%s.au", str, filename);
  655. X    else            
  656. X        sprintf(soundfile, "%s/%s.au", SOUNDS_DIR, filename);
  657. X
  658. X    /* Open the sound file for reading */
  659. X    if ((fd = open(soundfile, O_RDONLY, 0)) < 0) 
  660. X    {
  661. X        /* Issue an error about not opening sound file */
  662. X        sprintf(errorString, "Unable to open sound file %s.", soundfile);
  663. X        WarningMessage(errorString);
  664. X        return;
  665. X    }
  666. X
  667. X    /* At this point, we're all ready to copy the data. */
  668. X    if ((nbytes = read(fd, (char *) buf, BUFFER_SIZE)) <= 0) 
  669. X        return;
  670. X
  671. X    t = AFGetTime(ac); 
  672. X    
  673. X    do
  674. X    {
  675. X        nact = AFPlaySamples(ac, t, nbytes, buf);
  676. X        act = nact;
  677. X        t += nbytes;
  678. X    } while ((nbytes = read(fd, buf, BUFFER_SIZE)) != 0);
  679. X
  680. X    /* Close the sound file */
  681. X    (void) close(fd);
  682. X}
  683. X
  684. X#if NeedFunctionPrototypes
  685. Xvoid audioDeviceEvents(void)
  686. X#else
  687. Xvoid audioDeviceEvents()
  688. X#endif
  689. X{
  690. X    /* None to do */
  691. X}
  692. X
  693. END_OF_FILE
  694. if test 4207 -ne `wc -c <'audio/AFaudio.c'`; then
  695.     echo shar: \"'audio/AFaudio.c'\" unpacked with wrong size!
  696. fi
  697. # end of 'audio/AFaudio.c'
  698. fi
  699. if test -f 'intro.c' -a "${1}" != "-c" ; then 
  700.   echo shar: Will not clobber existing file \"'intro.c'\"
  701. else
  702. echo shar: Extracting \"'intro.c'\" \(12847 characters\)
  703. sed "s/^X//" >'intro.c' <<'END_OF_FILE'
  704. X#include "include/copyright.h"
  705. X
  706. X/*
  707. X *  Include file dependencies:
  708. X */
  709. X
  710. X#include <stdio.h>
  711. X#include <stdlib.h>
  712. X#include <stddef.h>
  713. X#include <X11/Xlib.h>
  714. X#include <X11/Xutil.h>
  715. X#include <X11/Xos.h>
  716. X#include <xpm.h>
  717. X
  718. X#include "include/error.h"
  719. X#include "include/misc.h"
  720. X#include "include/gun.h"
  721. X#include "include/main.h"
  722. X#include "include/init.h"
  723. X#include "include/inst.h"
  724. X#include "include/stage.h"
  725. X#include "include/blocks.h"
  726. X#include "include/sfx.h"
  727. X#include "include/special.h"
  728. X#include "include/ball.h"
  729. X#include "include/score.h"
  730. X#include "include/paddle.h"
  731. X#include "include/level.h"
  732. X#include "include/mess.h"
  733. X#include "include/audio.h"
  734. X#include "include/version.h"
  735. X
  736. X#include "bitmaps/titleBig.xpm"
  737. X
  738. X#include "bitmaps/star1.xpm"
  739. X#include "bitmaps/star2.xpm"
  740. X#include "bitmaps/star3.xpm"
  741. X#include "bitmaps/star4.xpm"
  742. X#include "bitmaps/star5.xpm"
  743. X#include "bitmaps/star6.xpm"
  744. X#include "bitmaps/star7.xpm"
  745. X#include "bitmaps/star8.xpm"
  746. X#include "bitmaps/star9.xpm"
  747. X#include "bitmaps/star10.xpm"
  748. X#include "bitmaps/star11.xpm"
  749. X
  750. X#include "include/intro.h"
  751. X
  752. X/*
  753. X *  Internal macro definitions:
  754. X */
  755. X
  756. X#define GAP 10
  757. X
  758. X/*
  759. X *  Internal type declarations:
  760. X */
  761. X
  762. X#if NeedFunctionPrototypes
  763. Xvoid SetIntroWait(int newMode, int waitFrame);
  764. Xvoid DoIntroWait(void);
  765. X#else
  766. Xvoid SetIntroWait();
  767. Xvoid DoIntroWait();
  768. X#endif
  769. X
  770. X/*
  771. X *  Internal variable declarations:
  772. X */
  773. X
  774. Xstatic int nextFrame = 0;
  775. Xstatic int nextFrame2 = 0;
  776. Xstatic int endFrame = 0;
  777. Xstatic int startFrame = 0;
  778. Xstatic int explodeIndex = 0;
  779. Xstatic int explodeBlock = 0;
  780. Xenum IntroStates IntroState;
  781. XPixmap bigtitlePixmap, bigtitlePixmapM;
  782. XPixmap stars[12], starsM[12];
  783. Xstatic int waitingFrame, waitMode;
  784. X
  785. X#if NeedFunctionPrototypes
  786. Xvoid SetUpIntroduction(Display *display, Window window, Colormap colormap)
  787. X#else
  788. Xvoid SetUpIntroduction(display, window, colormap)
  789. X    Display *display;
  790. X    Window window;
  791. X    Colormap colormap;
  792. X#endif
  793. X{
  794. X    XpmAttributes   attributes;
  795. X    int             XpmErrorStatus;
  796. X
  797. X    attributes.valuemask = XpmColormap;
  798. X    attributes.colormap = colormap;
  799. X
  800. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleBig_xpm,
  801. X        &bigtitlePixmap, &bigtitlePixmapM, &attributes);
  802. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro()");
  803. X
  804. X    /* Create the stars for the letter shine */
  805. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star1_xpm,
  806. X        &stars[0], &starsM[0], &attributes);
  807. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star1)");
  808. X
  809. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star2_xpm,
  810. X        &stars[1], &starsM[1], &attributes);
  811. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star2)");
  812. X
  813. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star3_xpm,
  814. X        &stars[2], &starsM[2], &attributes);
  815. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star3)");
  816. X
  817. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star4_xpm,
  818. X        &stars[3], &starsM[3], &attributes);
  819. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star4)");
  820. X
  821. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star5_xpm,
  822. X        &stars[4], &starsM[4], &attributes);
  823. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star5)");
  824. X
  825. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star6_xpm,
  826. X        &stars[5], &starsM[5], &attributes);
  827. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star6)");
  828. X
  829. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star7_xpm,
  830. X        &stars[6], &starsM[6], &attributes);
  831. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star7)");
  832. X
  833. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star8_xpm,
  834. X        &stars[7], &starsM[7], &attributes);
  835. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star8)");
  836. X
  837. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star9_xpm,
  838. X        &stars[8], &starsM[8], &attributes);
  839. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star9)");
  840. X
  841. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star10_xpm,
  842. X        &stars[9], &starsM[9], &attributes);
  843. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star10)");
  844. X
  845. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, star11_xpm,
  846. X        &stars[10], &starsM[10], &attributes);
  847. X    HandleXPMError(display, XpmErrorStatus, "InitialiseIntro(star11)");
  848. X
  849. X    /* Free the xpm pixmap attributes */
  850. X    XpmFreeAttributes(&attributes);
  851. X
  852. X    ResetIntroduction();
  853. X}
  854. X
  855. X#if NeedFunctionPrototypes
  856. Xvoid DrawIntroTitle(Display *display, Window window, int x, int y)
  857. X#else
  858. Xvoid DrawIntroTitle(display, window, x, y)
  859. X    Display *display;
  860. X    Window window;
  861. X    int x;
  862. X    int y;
  863. X#endif
  864. X{
  865. X    RenderShape(display, window, bigtitlePixmap, bigtitlePixmapM,
  866. X        x, y, 474, 74, True);
  867. X}
  868. X
  869. X#if NeedFunctionPrototypes
  870. Xvoid DoIntroTitle(Display *display, Window window)
  871. X#else
  872. Xvoid DoIntroTitle(display, window)
  873. X    Display *display;
  874. X    Window window;
  875. X#endif
  876. X{
  877. X    char string[80];
  878. X
  879. X    /* Clear and draw background pattern */
  880. X    DrawStageBackground(display, window, BACKGROUND_0);
  881. X
  882. X    /* Draw the intro title bitmap XBOING */
  883. X    DrawIntroTitle(display, window, 10, 10);
  884. X
  885. X    /* Construct a copyright message leaving space for the copyright circle */
  886. X    strcpy(string, "  Copyright 1993 Justin C. Kibell, All Rights Reserved");
  887. X    string[0] = 0xa9;  /* Copyright circle */
  888. X    DrawShadowCentredText(display, window, copyFont, string, 90, white, 
  889. X        PLAY_WIDTH);
  890. X
  891. X    /* Be very friendly */
  892. X    SetCurrentMessage(display, messWindow, "Welcome to XBoing", False);
  893. X}
  894. X
  895. X#if NeedFunctionPrototypes
  896. Xstatic void DoBlocks(Display *display, Window window)
  897. X#else
  898. Xstatic void DoBlocks(display, window)
  899. X    Display *display;
  900. X    Window window;
  901. X#endif
  902. X{
  903. X    int y = 120;
  904. X    int x = 40;
  905. X
  906. X    /* Now draw the blocks on the screen */
  907. X    DrawTheBlock(display, window, x, y, RED_BLK, 0);
  908. X    DrawShadowText(display, window, textFont, 
  909. X        "- 100 points", x + 60, y, green);
  910. X    y += 40;
  911. X
  912. X    DrawTheBlock(display, window, x, y, BLUE_BLK, 0);    
  913. X    DrawShadowText(display, window, textFont, 
  914. X        "- 110 points", x + 60, y, green);
  915. X    y += 40;
  916. X
  917. X    DrawTheBlock(display, window, x, y, GREEN_BLK, 0);
  918. X    DrawShadowText(display, window, textFont, 
  919. X        "- 120 points", x + 60, y, green);
  920. X    y += 40;
  921. X
  922. X    DrawTheBlock(display, window, x, y, TAN_BLK, 0);    
  923. X    DrawShadowText(display, window, textFont, 
  924. X        "- 130 points", x + 60, y, green);
  925. X    y += 40;
  926. X
  927. X    DrawTheBlock(display, window, x, y, YELLOW_BLK, 0);
  928. X    DrawShadowText(display, window, textFont, 
  929. X        "- 140 points", x + 60, y, green);
  930. X    y += 40;
  931. X
  932. X    DrawTheBlock(display, window, x, y, PURPLE_BLK, 0);    
  933. X    DrawShadowText(display, window, textFont, 
  934. X        "- 150 points", x + 60, y, green);
  935. X    y += 40;
  936. X
  937. X    DrawTheBlock(display, window, x, y, BULLET_BLK, 0);    
  938. X    DrawShadowText(display, window, textFont, 
  939. X        "- Ammunition", x + 60, y, green);
  940. X    y += 40;
  941. X
  942. X    DrawTheBlock(display, window, x+5, y-5, HYPERSPACE_BLK, 0);    
  943. X    DrawShadowText(display, window, textFont, 
  944. X        "- Teleport", x + 60, y, green);
  945. X    y += 40;
  946. X
  947. X    DrawTheBlock(display, window, x+5, y+5, REVERSE_BLK, 0);    
  948. X    DrawShadowText(display, window, textFont, 
  949. X        "- Reverse Control", x + 60, y, green);
  950. X    y += 40;
  951. X
  952. X    DrawTheBlock(display, window, x+5, y+5, MGUN_BLK, 0);    
  953. X    DrawShadowText(display, window, textFont, 
  954. X        "- Machine Gun", x + 60, y, green);
  955. X    y += 40;
  956. X
  957. X    DrawTheBlock(display, window, x, y, MULTIBALL_BLK, 0);
  958. X    DrawShadowText(display, window, textFont, 
  959. X        "- Multi Balls", x + 60, y, green);
  960. X    y += 40;
  961. X
  962. X    /* New line from top again on right */
  963. X    y = 120;
  964. X    x = 260;
  965. X
  966. X    DrawTheBlock(display, window, x+5, y, BONUS_BLK, 0);
  967. X    DrawShadowText(display, window, textFont, 
  968. X        "- 3000 points", x + 60, y, green);
  969. X    y += 40;
  970. X
  971. X    DrawTheBlock(display, window, x, y, COUNTER_BLK, 5);
  972. X    DrawShadowText(display, window, textFont, 
  973. X        "- 200 points", x + 60, y, green);
  974. X    y += 40;
  975. X
  976. X    DrawTheBall(display, window, x + 20, y+10, 0); 
  977. X    DrawShadowText(display, window, textFont, 
  978. X        "- The Ball!", x + 60, y, green);
  979. X    y += 40;
  980. X
  981. X    DrawTheBlock(display, window, x, y, BLACK_BLK, 0);
  982. X    DrawShadowText(display, window, textFont, 
  983. X        "- Solid wall", x + 60, y, green);
  984. X    y += 40;
  985. X
  986. X    DrawTheBlock(display, window, x+9, y, BOMB_BLK, 0);
  987. X    DrawShadowText(display, window, textFont, 
  988. X        "- Bomb!", x + 60, y, green);
  989. X    y += 40;
  990. X
  991. X    DrawPaddle(display, window, x+20, y, PADDLE_SMALL);
  992. X    DrawShadowText(display, window, textFont, 
  993. X        "- The Paddle", x + 60, y, green);
  994. X    y += 40;
  995. X
  996. X    DrawTheBullet(display, window, x+20, y+5);
  997. X    DrawShadowText(display, window, textFont, 
  998. X        "- Bullet", x + 60, y, green);
  999. X    y += 40;
  1000. X
  1001. X    DrawTheBlock(display, window, x+8, y, DEATH_BLK, 0);
  1002. X    DrawShadowText(display, window, textFont, 
  1003. X        "- Instant Death!", x + 60, y, green);
  1004. X    y += 40;
  1005. X
  1006. X    DrawTheBlock(display, window, x+10, y, EXTRABALL_BLK, 1);
  1007. X    DrawShadowText(display, window, textFont, 
  1008. X        "- Extra Ball", x + 60, y, green);
  1009. X    y += 40;
  1010. X
  1011. X    DrawTheBlock(display, window, x+10, y, WALLOFF_BLK, 0);
  1012. X    DrawShadowText(display, window, textFont, 
  1013. X        "- Walls Off", x + 60, y, green);
  1014. X    y += 40;
  1015. X
  1016. X    DrawTheBlock(display, window, x+10, y - 5, STICKY_BLK, 0);
  1017. X    DrawShadowText(display, window, textFont, 
  1018. X        "- Sticky Ball", x + 60, y, green);
  1019. X    y += 40;
  1020. X}
  1021. X
  1022. X#if NeedFunctionPrototypes
  1023. Xstatic void DoText(Display *display, Window window)
  1024. X#else
  1025. Xstatic void DoText(display, window)
  1026. X    Display *display;
  1027. X    Window window;
  1028. X#endif
  1029. X{
  1030. X    char string[80];
  1031. X    int y;
  1032. X
  1033. X    y = PLAY_HEIGHT - 27;
  1034. X
  1035. X    strcpy(string, "Press <Space> to start the game.");
  1036. X    DrawShadowCentredText(display, window, textFont, 
  1037. X        string, y, tann, PLAY_WIDTH);
  1038. X}
  1039. X
  1040. X#if NeedFunctionPrototypes
  1041. Xstatic void DoSparkle(Display *display, Window window)
  1042. X#else
  1043. Xstatic void DoSparkle(display, window)
  1044. X    Display *display;
  1045. X    Window window;
  1046. X#endif
  1047. X{
  1048. X    static Pixmap store;
  1049. X    static int x = 100;
  1050. X    static int y = 20;
  1051. X    static int in = 0;
  1052. X
  1053. X    if (!store)
  1054. X    {
  1055. X        store = XCreatePixmap(display, window, 20, 20,
  1056. X            DefaultDepth(display, XDefaultScreen(display)));
  1057. X    }
  1058. X
  1059. X    if (in == 0) 
  1060. X        XCopyArea(display, window, store, gc, x, y, 20, 20, 0, 0);
  1061. X
  1062. X    if (frame == endFrame)
  1063. X        IntroState = INTRO_FINISH;
  1064. X
  1065. X    if (frame == startFrame)
  1066. X    {
  1067. X        RenderShape(display, window, stars[in], starsM[in],
  1068. X            x, y, 20, 20, False);
  1069. X
  1070. X         in++;
  1071. X        startFrame = frame + 15;
  1072. X
  1073. X        if (in == 11) 
  1074. X        {
  1075. X            XCopyArea(display, store, window, gc, 0, 0, 20, 20, x, y);
  1076. X            in = 0;
  1077. X            startFrame = frame + 500;
  1078. X            x = (rand() % 474) + 5;
  1079. X            y = (rand() % 74) + 5;
  1080. X        }    
  1081. X    }
  1082. X}
  1083. X
  1084. X#if NeedFunctionPrototypes
  1085. Xstatic void DoFinish(Display *display, Window window)
  1086. X#else
  1087. Xstatic void DoFinish(display, window)
  1088. X    Display *display;
  1089. X    Window window;
  1090. X#endif
  1091. X{
  1092. X    ResetInstructions();
  1093. X    mode = MODE_INSTRUCT;
  1094. X
  1095. X    if (noSound == False)
  1096. X        playSoundFile("weeek", 100);
  1097. X}
  1098. X
  1099. X#if NeedFunctionPrototypes
  1100. Xvoid Introduction(Display *display, Window window)
  1101. X#else
  1102. Xvoid Introduction(display, window)
  1103. X    Display *display;
  1104. X    Window window;
  1105. X#endif
  1106. X{
  1107. X    static int firstTime = True;
  1108. X
  1109. X    switch (IntroState)
  1110. X    {
  1111. X        case INTRO_TITLE:
  1112. X            if (getSpecialEffects(display) == True && !firstTime)
  1113. X                DoIntroTitle(display, bufferWindow);
  1114. X            else
  1115. X                DoIntroTitle(display, window);
  1116. X            IntroState = INTRO_BLOCKS;
  1117. X            break;
  1118. X
  1119. X        case INTRO_BLOCKS:
  1120. X            if (getSpecialEffects(display) == True && !firstTime)
  1121. X                DoBlocks(display, bufferWindow);
  1122. X            else
  1123. X                DoBlocks(display, window);
  1124. X            IntroState = INTRO_TEXT;
  1125. X            break;
  1126. X
  1127. X        case INTRO_TEXT:
  1128. X            if (getSpecialEffects(display) == True && !firstTime)
  1129. X            {
  1130. X                DoText(display, bufferWindow);
  1131. X                while (WindowShatterEffect(display, window));
  1132. X            }
  1133. X            else
  1134. X                DoText(display, window);
  1135. X            if (firstTime) firstTime = False;
  1136. X            IntroState = INTRO_EXPLODE;
  1137. X            break;
  1138. X
  1139. X        case INTRO_EXPLODE:
  1140. X            DoSparkle(display, window);
  1141. X            if ((frame % FLASH) == 0)
  1142. X                RandomDrawSpecials(display);
  1143. X            BorderGlow(display, window);
  1144. X            break;
  1145. X
  1146. X        case INTRO_FINISH:
  1147. X            DoFinish(display, window);
  1148. X            break;
  1149. X
  1150. X        case INTRO_WAIT:
  1151. X            DoIntroWait();
  1152. X            break;
  1153. X
  1154. X        default:
  1155. X            break;
  1156. X    }
  1157. X}
  1158. X
  1159. X#if NeedFunctionPrototypes
  1160. Xvoid RedrawIntroduction(Display *display, Window window)
  1161. X#else
  1162. Xvoid RedrawIntroduction(display, window)
  1163. X    Display *display;
  1164. X    Window window;
  1165. X#endif
  1166. X{
  1167. X    DoIntroTitle(display, window);
  1168. X    DoBlocks(display, window);
  1169. X    DoText(display, window);
  1170. X}
  1171. X
  1172. X#if NeedFunctionPrototypes
  1173. Xvoid FreeIntroduction(Display *display)
  1174. X#else
  1175. Xvoid FreeIntroduction(display)
  1176. X    Display *display;
  1177. X#endif
  1178. X{
  1179. X    int i;
  1180. X
  1181. X    for (i = 0; i < 10; i++)
  1182. X    {
  1183. X        if (stars[i])    XFreePixmap(display, stars[i]);         
  1184. X        if (starsM[i])    XFreePixmap(display, starsM[i]);         
  1185. X    }
  1186. X
  1187. X    if (bigtitlePixmap)        XFreePixmap(display, bigtitlePixmap);         
  1188. X    if (bigtitlePixmapM)    XFreePixmap(display, bigtitlePixmapM);
  1189. X}
  1190. X
  1191. X#if NeedFunctionPrototypes
  1192. Xvoid ResetIntroduction(void)
  1193. X#else
  1194. Xvoid ResetIntroduction()
  1195. X#endif
  1196. X{
  1197. X    IntroState = INTRO_TITLE;
  1198. X    explodeIndex = 0;
  1199. X    explodeBlock = 0;
  1200. X    nextFrame = frame + 10;
  1201. X    nextFrame2 = frame + 10;
  1202. X    startFrame = frame + 10;
  1203. X    endFrame = frame + 3000;
  1204. X}
  1205. X
  1206. X#if NeedFunctionPrototypes
  1207. Xvoid SetIntroWait(int newMode, int waitFrame)
  1208. X#else
  1209. Xvoid SetIntroWait(newMode, waitFrame)
  1210. X    int newMode;
  1211. X    int waitFrame;
  1212. X#endif
  1213. X{
  1214. X    waitingFrame = waitFrame;
  1215. X    waitMode = newMode;
  1216. X    IntroState = INTRO_WAIT;
  1217. X}
  1218. X
  1219. X#if NeedFunctionPrototypes
  1220. Xvoid DoIntroWait(void)
  1221. X#else
  1222. Xvoid DoIntroWait()
  1223. X#endif
  1224. X{
  1225. X    if (frame == waitingFrame)
  1226. X        IntroState = waitMode;
  1227. X}
  1228. END_OF_FILE
  1229. if test 12847 -ne `wc -c <'intro.c'`; then
  1230.     echo shar: \"'intro.c'\" unpacked with wrong size!
  1231. fi
  1232. # end of 'intro.c'
  1233. fi
  1234. if test -f 'presents.c' -a "${1}" != "-c" ; then 
  1235.   echo shar: Will not clobber existing file \"'presents.c'\"
  1236. else
  1237. echo shar: Extracting \"'presents.c'\" \(12494 characters\)
  1238. sed "s/^X//" >'presents.c' <<'END_OF_FILE'
  1239. X#include "include/copyright.h"
  1240. X
  1241. X/*
  1242. X *  Include file dependencies:
  1243. X */
  1244. X
  1245. X#include <stdio.h>
  1246. X#include <stdlib.h>
  1247. X#include <stddef.h>
  1248. X#include <X11/Xlib.h>
  1249. X#include <X11/Xutil.h>
  1250. X#include <X11/Xos.h>
  1251. X#include <xpm.h>
  1252. X
  1253. X#include "include/error.h"
  1254. X#include "include/misc.h"
  1255. X#include "include/main.h"
  1256. X#include "include/init.h"
  1257. X#include "include/intro.h"
  1258. X#include "include/audio.h"
  1259. X#include "include/stage.h"
  1260. X#include "include/mess.h"
  1261. X#include "include/version.h"
  1262. X
  1263. X#include "bitmaps/flag.xpm"
  1264. X#include "bitmaps/earth.xpm"
  1265. X#include "bitmaps/titleX.xpm"
  1266. X#include "bitmaps/titleB.xpm"
  1267. X#include "bitmaps/titleO.xpm"
  1268. X#include "bitmaps/titleI.xpm"
  1269. X#include "bitmaps/titleN.xpm"
  1270. X#include "bitmaps/titleG.xpm"
  1271. X#include "bitmaps/justin.xpm"
  1272. X#include "bitmaps/kibell.xpm"
  1273. X#include "bitmaps/presents.xpm"
  1274. X
  1275. X#include "include/presents.h"
  1276. X
  1277. X/*
  1278. X *  Internal macro definitions:
  1279. X */
  1280. X
  1281. X#define GAP 10
  1282. X
  1283. X/*
  1284. X *  Internal type declarations:
  1285. X */
  1286. X
  1287. X#if NeedFunctionPrototypes
  1288. Xvoid SetPresentWait(int newMode, int waitFrame);
  1289. Xvoid DoPresentWait(void);
  1290. X#else
  1291. Xvoid SetPresentWait();
  1292. Xvoid DoPresentWait();
  1293. X#endif
  1294. X
  1295. X/*
  1296. X *  Internal variable declarations:
  1297. X */
  1298. X
  1299. Xstatic int nextFrame = 0;
  1300. Xstatic int endFrame = 0;
  1301. Xstatic int startFrame = 0;
  1302. Xenum PresentStates PresentState;
  1303. Xstatic Pixmap flagPixmap, flagPixmapM, earthPixmap, earthPixmapM;
  1304. Xstatic Pixmap titlePixmap[6], titlePixmapM[6];
  1305. Xstatic Pixmap justin, justinM, kibell, kibellM, presents, presentsM;
  1306. Xstatic int waitingFrame, waitMode;
  1307. X
  1308. X#if NeedFunctionPrototypes
  1309. Xvoid SetUpPresents(Display *display, Window window, Colormap colormap)
  1310. X#else
  1311. Xvoid SetUpPresents(display, window, colormap)
  1312. X    Display *display;
  1313. X    Window window;
  1314. X    Colormap colormap;
  1315. X#endif
  1316. X{
  1317. X    XpmAttributes   attributes;
  1318. X    int             XpmErrorStatus;
  1319. X
  1320. X    attributes.valuemask = XpmColormap;
  1321. X    attributes.colormap = colormap;
  1322. X
  1323. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, flag_xpm,
  1324. X        &flagPixmap, &flagPixmapM, &attributes);
  1325. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(flag)");
  1326. X
  1327. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleX_xpm,
  1328. X        &titlePixmap[0], &titlePixmapM[0], &attributes);
  1329. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleX)");
  1330. X
  1331. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleB_xpm,
  1332. X        &titlePixmap[1], &titlePixmapM[1], &attributes);
  1333. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleB)");
  1334. X
  1335. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleO_xpm,
  1336. X        &titlePixmap[2], &titlePixmapM[2], &attributes);
  1337. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleO)");
  1338. X
  1339. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleI_xpm,
  1340. X        &titlePixmap[3], &titlePixmapM[3], &attributes);
  1341. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleI)");
  1342. X
  1343. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleN_xpm,
  1344. X        &titlePixmap[4], &titlePixmapM[4], &attributes);
  1345. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleN)");
  1346. X
  1347. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, titleG_xpm,
  1348. X        &titlePixmap[5], &titlePixmapM[5], &attributes);
  1349. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(titleG)");
  1350. X
  1351. X    /* Justin kibell presents */
  1352. X
  1353. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, justin_xpm,
  1354. X        &justin, &justinM, &attributes);
  1355. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(justin)");
  1356. X
  1357. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, kibell_xpm,
  1358. X        &kibell, &kibellM, &attributes);
  1359. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(kibell)");
  1360. X
  1361. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, presents_xpm,
  1362. X        &presents, &presentsM, &attributes);
  1363. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(presents)");
  1364. X
  1365. X    /* Create the earth pixmap */
  1366. X
  1367. X    XpmErrorStatus = XpmCreatePixmapFromData(display, window, earth_xpm,
  1368. X        &earthPixmap, &earthPixmapM, &attributes);
  1369. X    HandleXPMError(display, XpmErrorStatus, "InitialisePresent(earth)");
  1370. X
  1371. X    /* Free the xpm pixmap attributes */
  1372. X    XpmFreeAttributes(&attributes);
  1373. X
  1374. X    /* Setup intro to initial state */
  1375. X    ResetPresents();
  1376. X}
  1377. X
  1378. X#if NeedFunctionPrototypes
  1379. Xstatic void DrawLetter(Display *display, Window window, int letter, 
  1380. X    int x, int y)
  1381. X#else
  1382. Xstatic void DrawLetter(display, window, letter, x, y)
  1383. X    Display *display;
  1384. X    Window window;
  1385. X    int letter;
  1386. X    int x, y;
  1387. X#endif
  1388. X{
  1389. X    switch(letter)
  1390. X    {
  1391. X        case 0:
  1392. X            RenderShape(display, window, titlePixmap[0], titlePixmapM[0],
  1393. X                x, y, 71, 74, False);
  1394. X            break;
  1395. X
  1396. X        case 1:
  1397. X            RenderShape(display, window, titlePixmap[1], titlePixmapM[1],
  1398. X                x, y, 73, 74, False);
  1399. X            break;
  1400. X
  1401. X        case 2:
  1402. X            RenderShape(display, window, titlePixmap[2], titlePixmapM[2],
  1403. X                x, y, 83, 74, False);
  1404. X            break;
  1405. X
  1406. X        case 3:
  1407. X            RenderShape(display, window, titlePixmap[3], titlePixmapM[3],
  1408. X                x, y, 41, 74, False);
  1409. X            break;
  1410. X
  1411. X        case 4:
  1412. X            RenderShape(display, window, titlePixmap[4], titlePixmapM[4],
  1413. X                x, y, 85, 74, False);
  1414. X            break;
  1415. X
  1416. X        case 5:
  1417. X            RenderShape(display, window, titlePixmap[5], titlePixmapM[5],
  1418. X                x, y, 88, 74, False);
  1419. X            break;
  1420. X
  1421. X        default:
  1422. X            ErrorMessage("Error: In default for DrawLetter()");
  1423. X    }
  1424. X}
  1425. X
  1426. X#if NeedFunctionPrototypes
  1427. Xvoid DoPresentFlag(Display *display, Window window)
  1428. X#else
  1429. Xvoid DoPresentFlag(display, window)
  1430. X    Display *display;
  1431. X    Window window;
  1432. X#endif
  1433. X{
  1434. X    char string[80];
  1435. X    int y, x;
  1436. X
  1437. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 35;
  1438. X
  1439. X    /* Draw the flag bitmap */
  1440. X    RenderShape(display, window, flagPixmap, flagPixmapM,
  1441. X        x, 15, 71, 40, True);
  1442. X    DrawShadowCentredText(display, window, textFont, 
  1443. X        "Proudly Australian Made", 
  1444. X        65, white, PLAY_WIDTH + MAIN_WIDTH);
  1445. X
  1446. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 207;
  1447. X    RenderShape(display, window, earthPixmap, earthPixmapM,
  1448. X        x, 100, 415, 415, False);
  1449. X
  1450. X    y = MAIN_HEIGHT + PLAY_HEIGHT - 50;
  1451. X
  1452. X    /* Construct a copyright message leaving space for the copyright circle */
  1453. X    strcpy(string, "  Copyright 1993 Justin C. Kibell, All Rights Reserved");
  1454. X    string[0] = 0xa9;  /* Copyright circle */
  1455. X    DrawShadowCentredText(display, window, copyFont, string, y, white, 
  1456. X        PLAY_WIDTH + MAIN_WIDTH);
  1457. X
  1458. X    /* My email address for contact and fame :-) */
  1459. X    DrawShadowCentredText(display, window, copyFont,
  1460. X        "email: jck@citri.edu.au", y + 15, white, PLAY_WIDTH + MAIN_WIDTH);
  1461. X    sprintf(string, "Version %d.%d", VERSION, REVNUM / 1000);
  1462. X    DrawShadowCentredText(display, window, copyFont,
  1463. X        string, y + 30, white, PLAY_WIDTH + MAIN_WIDTH);
  1464. X}
  1465. X
  1466. X#if NeedFunctionPrototypes
  1467. Xstatic void DoText1(Display *display, Window window)
  1468. X#else
  1469. Xstatic void DoText1(display, window)
  1470. X    Display *display;
  1471. X    Window window;
  1472. X#endif
  1473. X{
  1474. X    int x, y;
  1475. X
  1476. X    if (noSound == False) playSoundFile("intro", 50);
  1477. X
  1478. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 142;
  1479. X    y = 200;
  1480. X
  1481. X    /* Render the Justin bitmap */
  1482. X    RenderShape(display, window, justin, justinM,
  1483. X        x, y, 285, 44, False);
  1484. X
  1485. X    SetPresentWait(PRESENT_TEXT2, frame + 500);
  1486. X}
  1487. X
  1488. X#if NeedFunctionPrototypes
  1489. Xstatic void DoText2(Display *display, Window window)
  1490. X#else
  1491. Xstatic void DoText2(display, window)
  1492. X    Display *display;
  1493. X    Window window;
  1494. X#endif
  1495. X{
  1496. X    int x, y;
  1497. X
  1498. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 130;
  1499. X    y = 300;
  1500. X
  1501. X    /* Render the Justin bitmap */
  1502. X    RenderShape(display, window, kibell, kibellM,
  1503. X        x, y, 260, 40, False);
  1504. X
  1505. X    SetPresentWait(PRESENT_TEXT3, frame + 500);
  1506. X}
  1507. X
  1508. X#if NeedFunctionPrototypes
  1509. Xstatic void DoText3(Display *display, Window window)
  1510. X#else
  1511. Xstatic void DoText3(display, window)
  1512. X    Display *display;
  1513. X    Window window;
  1514. X#endif
  1515. X{
  1516. X    int x, y;
  1517. X
  1518. X    x = ((MAIN_WIDTH + PLAY_WIDTH) / 2) - 205;
  1519. X    y = 400;
  1520. X
  1521. X    /* Render the Justin bitmap */
  1522. X    RenderShape(display, window, presents, presentsM,
  1523. X        x, y, 410, 44, False);
  1524. X
  1525. X    SetPresentWait(PRESENT_LETTERS, frame + 750);
  1526. X}
  1527. X
  1528. Xint dists[] =
  1529. X{
  1530. X    71, 73, 83, 41, 85, 88
  1531. X};
  1532. X
  1533. X#if NeedFunctionPrototypes
  1534. Xstatic void DoLetters(Display *display, Window window)
  1535. X#else
  1536. Xstatic void DoLetters(display, window)
  1537. X    Display *display;
  1538. X    Window window;
  1539. X#endif
  1540. X{
  1541. X    static int i = 0;
  1542. X    static int x = 40;
  1543. X
  1544. X    if (i < 6)
  1545. X    {
  1546. X        if (noSound == False)
  1547. X            playSoundFile("stamp", 100);
  1548. X
  1549. X        DrawLetter(display, window, i, x, 550);
  1550. X        x += 10 + dists[i];
  1551. X
  1552. X        DrawLine(display, window, 30, 530, 
  1553. X            (MAIN_WIDTH + PLAY_WIDTH) - 30, 530, red, 2);
  1554. X
  1555. X        DrawLine(display, window, 30, 644, 
  1556. X            (MAIN_WIDTH + PLAY_WIDTH) - 30, 644, red, 2);
  1557. X
  1558. X        SetPresentWait(PRESENT_LETTERS, frame + 500);
  1559. X    }
  1560. X    else
  1561. X    {
  1562. X        SetPresentWait(PRESENT_CLEAR, frame + 2000);
  1563. X    }
  1564. X
  1565. X    i++;
  1566. X}
  1567. X
  1568. X#if NeedFunctionPrototypes
  1569. Xstatic void DoClear(Display *display, Window window)
  1570. X#else
  1571. Xstatic void DoClear(display, window)
  1572. X    Display *display;
  1573. X    Window window;
  1574. X#endif
  1575. X{
  1576. X    static int yt, yb;
  1577. X    static int first = True;
  1578. X
  1579. X    if (first == True)
  1580. X    {
  1581. X        yt = 0;
  1582. X        yb = PLAY_HEIGHT + MAIN_HEIGHT - 5;
  1583. X        first = False;
  1584. X        nextFrame = frame;
  1585. X
  1586. X        if (noSound == False)
  1587. X            playSoundFile("whoosh", 70);
  1588. X
  1589. X    }
  1590. X
  1591. X    if (frame >= nextFrame)
  1592. X    {
  1593. X        /* Clear and draw lines */
  1594. X        XClearArea(display, window, 0, yt, PLAY_WIDTH + MAIN_WIDTH, 10, False);
  1595. X        yt += 10;
  1596. X        DrawLine(display, window, 2, yt, PLAY_WIDTH + MAIN_WIDTH-2, yt, red, 1);
  1597. X
  1598. X        XClearArea(display, window, 0, yb, PLAY_WIDTH + MAIN_WIDTH, 10, False);
  1599. X        yb -= 10;
  1600. X        DrawLine(display, window, 2, yb, PLAY_WIDTH + MAIN_WIDTH-2, yb, red, 1);
  1601. X
  1602. X        if (yt > ((PLAY_HEIGHT + MAIN_HEIGHT) / 2))
  1603. X            SetPresentWait(PRESENT_FINISH, frame + 20);
  1604. X
  1605. X        nextFrame = frame + 20;
  1606. X    }
  1607. X}
  1608. X
  1609. X#if NeedFunctionPrototypes
  1610. Xvoid QuickFinish(Display *display, Window window)
  1611. X#else
  1612. Xvoid QuickFinish(display, window)
  1613. X    Display *display;
  1614. X    Window window;
  1615. X#endif
  1616. X{
  1617. X    /* User has pressed space so finish early */
  1618. X    SetPresentWait(PRESENT_FINISH, frame);
  1619. X}
  1620. X
  1621. X#if NeedFunctionPrototypes
  1622. Xstatic void DoFinish(Display *display, Window window)
  1623. X#else
  1624. Xstatic void DoFinish(display, window)
  1625. X    Display *display;
  1626. X    Window window;
  1627. X#endif
  1628. X{
  1629. X    /* Free all the pixmaps used in this intro */
  1630. X    FreePresents(display);
  1631. X
  1632. X    /* Erase all stuff in window */
  1633. X    XClearWindow(display, mainWindow);
  1634. X
  1635. X    /* Map all the windows */
  1636. X    MapAllWindows(display);
  1637. X
  1638. X    /* Now jump into the intro mode */
  1639. X    ResetIntroduction();
  1640. X    mode = MODE_INTRO;
  1641. X}
  1642. X
  1643. X#if NeedFunctionPrototypes
  1644. Xvoid Presents(Display *display, Window window)
  1645. X#else
  1646. Xvoid Presents(display, window)
  1647. X    Display *display;
  1648. X    Window window;
  1649. X#endif
  1650. X{
  1651. X    switch (PresentState)
  1652. X    {
  1653. X        case PRESENT_FLAG:
  1654. X            DoPresentFlag(display, window);
  1655. X            PresentState = PRESENT_TEXT1;
  1656. X            break;
  1657. X
  1658. X        case PRESENT_TEXT1:
  1659. X            if ((frame % 10) == 0)
  1660. X                DoText1(display, window);
  1661. X            break;
  1662. X
  1663. X        case PRESENT_TEXT2:
  1664. X            if ((frame % 10) == 0)
  1665. X                DoText2(display, window);
  1666. X            break;
  1667. X
  1668. X        case PRESENT_TEXT3:
  1669. X            if ((frame % 10) == 0)
  1670. X                DoText3(display, window);
  1671. X            break;
  1672. X
  1673. X        case PRESENT_LETTERS:
  1674. X            DoLetters(display, window);
  1675. X            break;
  1676. X
  1677. X        case PRESENT_CLEAR:
  1678. X            DoClear(display, window);
  1679. X            break;
  1680. X
  1681. X        case PRESENT_FINISH:
  1682. X            DoFinish(display, window);
  1683. X            break;
  1684. X
  1685. X        case PRESENT_WAIT:
  1686. X            DoPresentWait();
  1687. X            break;
  1688. X
  1689. X        default:
  1690. X            break;
  1691. X    }
  1692. X}
  1693. X
  1694. X#if NeedFunctionPrototypes
  1695. Xvoid RedrawPresents(Display *display, Window window)
  1696. X#else
  1697. Xvoid RedrawPresents(display, window)
  1698. X    Display *display;
  1699. X    Window window;
  1700. X#endif
  1701. X{
  1702. X}
  1703. X
  1704. X#if NeedFunctionPrototypes
  1705. Xvoid FreePresents(Display *display)
  1706. X#else
  1707. Xvoid FreePresents(display)
  1708. X    Display *display;
  1709. X#endif
  1710. X{
  1711. X    int i;
  1712. X
  1713. X    /* Free the flag pixmaps */
  1714. X    if (flagPixmap)        XFreePixmap(display, flagPixmap);         
  1715. X    if (flagPixmapM)    XFreePixmap(display, flagPixmapM);
  1716. X
  1717. X    /* Free the large earth pixmap and it's mask */
  1718. X    if (earthPixmap)    XFreePixmap(display, earthPixmap);         
  1719. X    if (earthPixmapM)    XFreePixmap(display, earthPixmapM);
  1720. X
  1721. X    /* Free the text pixmaps for justin, kibell and presents */
  1722. X    if (justin)        XFreePixmap(display, justin);         
  1723. X    if (justinM)    XFreePixmap(display, justinM);
  1724. X
  1725. X    if (kibell)        XFreePixmap(display, kibell);         
  1726. X    if (kibellM)    XFreePixmap(display, kibellM);
  1727. X
  1728. X    if (presents)    XFreePixmap(display, presents);         
  1729. X    if (presentsM)    XFreePixmap(display, presentsM);
  1730. X
  1731. X    /* Free the pixmaps for the letters of the work xboing */
  1732. X    for (i = 0; i < 6; i++)
  1733. X    {
  1734. X        /* Free each of the letters in XBOING */
  1735. X        if (titlePixmap[i])        XFreePixmap(display, titlePixmap[i]);         
  1736. X        if (titlePixmapM[i])    XFreePixmap(display, titlePixmapM[i]);
  1737. X    }
  1738. X}
  1739. X
  1740. X#if NeedFunctionPrototypes
  1741. Xvoid ResetPresents(void)
  1742. X#else
  1743. Xvoid ResetPresents()
  1744. X#endif
  1745. X{
  1746. X    PresentState = PRESENT_FLAG;
  1747. X    nextFrame = frame + 100;
  1748. X    startFrame = frame + 10;
  1749. X    endFrame = frame + 3000;
  1750. X}
  1751. X
  1752. X#if NeedFunctionPrototypes
  1753. Xvoid SetPresentWait(int newMode, int waitFrame)
  1754. X#else
  1755. Xvoid SetPresentWait(newMode, waitFrame)
  1756. X    int newMode;
  1757. X    int waitFrame;
  1758. X#endif
  1759. X{
  1760. X    waitingFrame = waitFrame;
  1761. X    waitMode = newMode;
  1762. X    PresentState = PRESENT_WAIT;
  1763. X}
  1764. X
  1765. X#if NeedFunctionPrototypes
  1766. Xvoid DoPresentWait(void)
  1767. X#else
  1768. Xvoid DoPresentWait()
  1769. X#endif
  1770. X{
  1771. X    if (frame == waitingFrame)
  1772. X        PresentState = waitMode;
  1773. X}
  1774. END_OF_FILE
  1775. if test 12494 -ne `wc -c <'presents.c'`; then
  1776.     echo shar: \"'presents.c'\" unpacked with wrong size!
  1777. fi
  1778. # end of 'presents.c'
  1779. fi
  1780. if test -f 'sounds/stamp.au.uu' -a "${1}" != "-c" ; then 
  1781.   echo shar: Will not clobber existing file \"'sounds/stamp.au.uu'\"
  1782. else
  1783. echo shar: Extracting \"'sounds/stamp.au.uu'\" \(12793 characters\)
  1784. sed "s/^X//" >'sounds/stamp.au.uu' <<'END_OF_FILE'
  1785. Xbegin 644 stamp.au
  1786. XM+G-N9````"#_____`````0``'T`````!``````````#;-S__14XWQ<Y;,#/.
  1787. XM6\4P_[?%OS<_V___,\[;Q3,[Q=O_+-N[__\SO[?_,#>_Q;\M,["S6S_;Q;].
  1788. XM++^___]%N[N[,$6_SK=%3MNS,S=;6[=;3L[;3C?__[?%,/^S_SLW-]N_3EN_
  1789. XM3C\S6[^S-RVWO[]%-[_;K5M;VSN_3KNPLS?;K=M;14ZFL_].OT[;O\6HMS!;
  1790. XMVZW.1?^LH,6[/\6S_UM;M\Z[/\[.SMLMQ3,W,SLP144[3D[_)BT_VTY.-S>P
  1791. XM/S,?1<6[Q2RW/RT_O]O;/T[%K3<S_T5.O[^WJ-LW+#._JL6PK<4H,$6WLT7%
  1792. XM_UO_+"HSVS`L/T5%.T4_NR@D-S`D'S,PSC<B)"TS+"8F*C\?'RT[13`[_[O_
  1793. XM-TX_/S`WO_\H'S,[/S\W-S,S-Q\F+3LL.S\D*"0D'Q\?'Q\?'R`?'Q\@'Q\?
  1794. XM'Q\?*"8L+"`M(A\@+4X_SKM;Q?].N["MIK"JG[>?IK"@GY^XMJNPL*VPKJ2E
  1795. XMKJJJN+VMM:^MKK^\M;_"PK;)R5W/5]W,PDPV0LP\,T6_24DZ3#U,,4)714))
  1796. XM3&M=0NNZ3\7"R47%PLS)O;6XO,RZK[:ON+&JL[&VK+JUL*VHO*ZPML*LR;#_
  1797. XM_UV_3SC_W<(\/44Q.BQ",2@H-2@E'Q\E)2DA'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1798. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\B("8B*2(E+3HX-C`X/3IK5VM73[JQPKJPM:F_
  1799. XMLY^?KJZHH)^DJ)^?I)^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1800. XMHY^?GY^?H)^BI:"CI*6JJ:VLJJ:\KJ^SO;#=7;S%_]=%0E<L+S@X+BTJ*BLB
  1801. XM(",?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R8B'RL?'R$D(C8P(RLP,#8P24]%
  1802. XM0EW_PO_=S,RS7=VQK;6XLY^QLZ6GJ*NJK*2EJZ6DJ*NIH9^JJJ2EJJ*KKK"S
  1803. XMI:JOLZVMKZZLKZO7O[^]N,+%MKC/R=W7R>M/UUU/R4],3$Q7W2\S,SHK*S4N
  1804. XM)RHI)Q\?(B,A)B(B(A\?'R,@'Q\?'Q\?'Q\?'Q\C)1\?'RLB'R(G'Q\@)R@D
  1805. XM+2PZ*B4K0C8Q/=<\23U7PCW_NL7KL,+KO*^OJ;VPJJBPL*BHI;.JK:"XKZVH
  1806. XMJ*^OI:>OI:.LIZZLJ+.QHJB?IZNPJ+.JG["UJJJHNK^LIZRIK;&LO<S,JJZX
  1807. XMN+:]O6O/O<*_N%?/3#]7SVO=W4D\.CA"SU=%:S9%,#`\0BTX/#8I*BXQ*C,U
  1808. XM,"LM*BDG*B8G+"LH+B4E*#$I*"<H(1\J*"0C*"PJ)"DI)2@G*BDI)2HI*B0E
  1809. XM*C,G'RHN-2PE+"\V)2<P13HX0D(S,T(_-C@]5T])/]W,NMV_O;&ZL:ZNKJNJ
  1810. XMJ*JMKJFAHY^DHJ"?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1811. XMGY^?GY^?GY^CI9^?GZ2BGY^CJ:JQL*J?HK&ZM;.N74S%S,EKUSHN/4__.#4M
  1812. XM,2DK+"XD*"HD'R,A'R$?(BH?'Q\?'Q\?("$?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1813. XM'Q\?'Q\?(",?'Q\?'Q\?)20?'R`@(!\K)A\D+1\B*"TS-3`L*"PU+R\S.C\V
  1814. XM/38N+TPZZU<V0EU,->MKZSH]S]T\5[W/NDE/Z[U/O;JQW46]NL]=Z[VZMK/%
  1815. XML+'/1:NSO^O%NKRXS[JSMK:ZK;BLJ;.OJZRLJK"QJJJGI:&?JI^CI:"DGZ6?
  1816. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?I9^?GZ.AGY^?I*>?
  1817. XMHZ>GGY^HJ*^BI;6SL:JQK:^QMMW)MKU724E/13\_14]K,3$Q,R0F.B\K*BD?
  1818. XM'Q\E)1\?)B4?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1819. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1820. XM'Q\?'Q\A(2@E)R@J+"@N73HU/4+/W?]KPK:]N*W/L*JSL:RGI*6KH9^?H)^?
  1821. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1822. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1823. XMGY^?GY^?GZ&?H*BDHZ"LJZJIMLFUJ6M73.N]/3Q,3T(F*C8S)2DI(R,?'Q\?
  1824. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1825. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R(G)2$B)24D
  1826. XM*BXQ*RTJ*C$S-C$U0EU7_SC,Q;S/W<*ZM;"SK:^\LZBJI+"JIZ6JI*6EHJ*F
  1827. XMJZ&AHZ:GHZ*BIJ2BH*6EHZ.DGY^@H**JHY^?GZ&?GZ.?GZ&EI*B?H:.EHZ&?
  1828. XMHJ2KI:6@H:NBI*JJJJ*KL:VEJ;&PLZNUS+VPL<+%L;#=R;^]O,]7:[_=PM?_
  1829. XMZ_]/UT(]2=WK_^OKZ\]K_]T_7>O7U\S=O;S"NKV\U[J]L;J_O;JNMK:]N+"Q
  1830. XMO[:ZO;^_O;/"R47/N+K_.KJX3SQ%:U=%0C]%3#$Z134J/T\X*C$S*C`P-3$K
  1831. XM)R,H)RLE)2HP,28E'R4I-BPD)2$J+24K*RHQ*2DE(B<L*RTN*BHG+"HJ*"TQ
  1832. XM*RXK*C8P+"LL-2XQ,S`P-4],/S@V/#T\/45"14]):S8X25="5_\\3&M7:T]/
  1833. XM73\\3U=)5_\_.#P]."\P-CI"-B\N-3$N*C,P*C$M,2\P+2TU+RPF*S`Q-3\Z
  1834. XM+C$],34N-D5)23,\13TX26M//#_KZTE=S]?_:T_7U\G"L<*_Q<F]O+RZN+RM
  1835. XML:^SM:RJJK&OKJZNK*JIJZVNJK&ULZRKI:NVL+^VK[6SL+RXL[JVL;"ZK[6Z
  1836. XMO<*]K*ZQMK.OM;"QKKRUK:VOO;VPL[6VL*VNJZRLK;"IHZ.PK*6?GZ2AI*6A
  1837. XMGY^?GY^?GY^?GY^?GY^AHI^?GY^?GY^?GZ*FHJ>GJ*:GK+RXJK_)R;V_W5=7
  1838. XM.#,V/"TS*RLP*B@I)R4?(!\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1839. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@'R`@(2,A'R(@'Q\?(R$I*"DH*B0D)RXN*RTF
  1840. XM*B\K+#`O,#TV,S,O/#A".CHX+S!%.C8]_UU".#U).$)/5T(P/$G_/$E%0CU=
  1841. XMW<]/7<7"_VO_Z\]KO<*SL+"PKJNML:ZEJ;6KI:&?I)^?H)^?GY^?GY^?GY^?
  1842. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^AGY^?HI^GI*JMK:^SL[B\K[6\
  1843. XMN+_/U]=K3%U/W?]%/S@U,U<_/2XP+B\N*R4D(R8E)1\?(B0D(Q\?'Q\?'Q\?
  1844. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\C*2HG)2<J
  1845. XM+RDJ+RLQ*BPM+2\U3U<].EW/_TGKW==K_[_/S\^PMKB\N+6NI:JGJJFII:*@
  1846. XMIZ.?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1847. XMGY^?GY^DJJFFK[.UNKJ_MK.OS\QK75T_1<S=13U%.C@V/$(_-BXV3#$P,38Z
  1848. XM-3,V.CQ%0CI)/SHP,S`N,3,X,3$N*S$Q-2PJ+2PC)"@A'Q\?'Q\?'Q\?'Q\?
  1849. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1850. XM(!\?(2(M+3`M+SP_.#A"Z__7NK"SNJ^FJ:&AI)^?H9^?GY^?GY^?GY^?GY^?
  1851. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ"D
  1852. XMI:JLKK6\L[JZ5UT\0C8V/#HS,34M*RHH*BLE(!\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1853. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'R`D)20E*BLM+R\V/#Q,/44\/5W_R<6_
  1854. XMO\*VK;"ZN*ZLMK6NJ:RJI:>OK:FFI:6?I*>IIZ2IJ:JIJJRLJZJLK*^NL+BZ
  1855. XMO+W"S\G"W5U=74])/U=,/3@V.C4P+#`X-3,Q,3`N,S`O+2TK*B@J)R0G*"<F
  1856. XM*"HJ)28D)R@C(R`C'Q\A(R4D)2(C(RHJ+2HJ*"HJ,"PH*CH\.CPS0DE,24)K
  1857. XM_\_=U[^_Q;6PJ[:]JZ:OL:JIJ:ZJJ*2BIJ&AH:.?GY^?I*&BI:.CI:&FIZ.D
  1858. XMI:>HIZBHK:N\N+&UN,R_O;B_R<SK_]UK74DZ26M73^OK74E,3$QK3T),5S\V
  1859. XM.CH]+S$\.CHZ-3,N,#H],24J+BXG(2XK)R4J)B4@)2HD)"`?(B,D(B4E)24G
  1860. XM*"DA)BHL)B8E)BHK+C`P+SPX-CH].CHZ/SP_3ST]26O=75?=R=W"Q;^\PLF\
  1861. XMM;VUKJ^SMK"JK;.MJJRJJZJKJZRJI::EHY^AH:&DGY^?GY^@GY^?GY^?GY^?
  1862. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ6?HJ"BHZ.DHZBGJ:JJK*JSMKVV
  1863. XMO\6]O,G,:TQ,:T]/23Q)/2DJ+"XS+"HC)24D(R`?'Q\?'Q\?'Q\?'Q\?'Q\?
  1864. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1865. XM'Q\?'R,A)BTJ+BPO,#`Z3TD]14]=7?__S\_)O+^_O;6VL[JUKK"SJZNFI*6E
  1866. XMI:*IIY^?I:"?GY^BGY^?GZ"?GY^CGY^?GY^?GY^?GY^?GY^?H:&BH:BJJJ"A
  1867. XMI:6EHZ.DIJ6HJ*:FI:FJK*JNK*FJJ:JJIJJSI:.JJZRKJZNHIZJLK:JJI::G
  1868. XMI:6EJ*>JJJ.CGZ6EI:6EH9^HI:FGJ:JMJJ:HJJJOKZ^SK[&SPKBUPLS_Z\_=
  1869. XM_TE,24Q75T4]-CP\.C$U,S8Z,#$K)RPS+"LJ)20F*"4E(",K)R(?(B@D'Q\B
  1870. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1871. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?(Q\D)24J)BDO,"PN,#@V
  1872. XM-3Q"76M=W=W,PL*\N+&NK:RJL*^EIJ.CGY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1873. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1874. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?H*&CH:*BHZ6EIZFMJZFMM;VU
  1875. XMM<+,S]U,24P\-CPU,#$Q+BHF)R<D)"`?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1876. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1877. XM'Q\?'Q\?'Q\?'Q\?'R$B(B4G)24G*2HM+BPN.#HQ*S-"/SPX3$D\/6MK_UW_
  1878. XMS\G7R<*]O+V\O[R]N+R\L[6VM;.PL;&OKJVKJ*>FJ:JHJ:>EIZ6AGZ6DH:.?
  1879. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?I*B@H*6E
  1880. XMIJ2GI:6EI["II*6ML*JMK["PK["UMK6ZO[S%O+R_S\S"U\_,R<_,Q<G7U]W7
  1881. XMS]?_Z]UKS-W,W?_7Q<7,S\R]O<+/_\G%PL7)R<S/O\G%R;^]O<7/R<S,R<_7
  1882. XMW=?K_\]KW5==24E,14(_/3\]-C,V,34O+2LI*2@D(R0E)2,B'R`?'Q\?(1\?
  1883. XM'Q\?'Q\?("4@'Q\C(R,C)24E)RHJ*2@J+"HJ*BHK+BLO,#`U-3,V/#@U.#\_
  1884. XM0C]%3$D_14)"0C\]3$P]0DE/3%="3#\\23\\.#TX.CPV-C8X.#HZ.#4V/3\V
  1885. XM.CH]/#,S.#@X/T)"/SI"13\]/T])14Q/3U=KZUU=76O/_U=7S__KU\G/S]?%
  1886. XMO,+"R<*XO;V]O;_)PKB\Q<*ZL+6ZO;RUL;6VN+JZMKBZPLRXNL+%R<S,S-W7
  1887. XMS\_=Q<G/Z^O/S,__Z^O)SUW_W=?__]WK:__7PLSK:]W%R=?/S\_,O;S%Q<FZ
  1888. XMNK.QL[BNL+6OK*VKJ:FFIJ>DHI^?H**?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1889. XMGY^?GY^?GY^AHZ2DI*2DIZBIK*VPL:ZSNKBZO\G/Z\]=:UT]/#8U,S,O+2PK
  1890. XM*"4C(B,B'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1891. XM'Q\?'Q\?'Q\?'Q\?'R(A'Q\A(R(A)BDH)R@K+"PJ*2\S+BXQ,#`P,#HX,S@Z
  1892. XM.CHZ-C@V.CPX/#P]/#P\0D4Z/3U"24E)145,3$Q)3T_KZ^O7Z^O/O[_"R<+)
  1893. XMO;RXM;&QL[.QN+:NIJ>MJZ>FIZFDHZ*DH)^?HJ.?GY^?GY^?GY^?GY^?GY^?
  1894. XMGY^?GY^?GY^?GY^?GY^?GY^?HY^?HZ6JJJJKJJ^PL[6\PL7=Z^MK:UU%/3H\
  1895. XM.#$O+BTJ*R<E(B(C'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1896. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\A'Q\?(B4E)B<H*BHJ+"XO,#\_
  1897. XM0D57:__=W<S,Q<*XM;BVKZRMJJFGI:6@H:"?GY^?GY^?GY^?GY^?GY^?GY^?
  1898. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1899. XMH:6EIJBKL*^PNL7=Z]=K5T4_/#HU+BPG)B8E(R`?'Q\?'Q\?'Q\?'Q\?'Q\?
  1900. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@(!\?'R`A'R`A
  1901. XM(R,B(2$A(!\?(2$?'R,D(R0B(R4E)24E(R,E)R4B)28F)RHJ*2@J+RTJ+"TN
  1902. XM+B\M*R\M.#8Q,2\S.C8V.#H].#@\24E):_],3UWKU]W=Q<7%PL*VL[:PKJVM
  1903. XMJJBJI:6EI:2AHZ"@GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?
  1904. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^@GY^EI:.EJ*BGIZ^SL;&QNKR]O+W=
  1905. XMU]W=:U=/3TD\/STV,S`O,"XK*BHJ*2@H)R4E(R0D)20C)24C)2<C)"4F)24E
  1906. XM*BHI*BHL*RLI+"TJ*R\Q+2LO,"\K*B\Q,"HL,3`N,#$O+BLJ+BTK+"PL*BHJ
  1907. XM+"HG*"HJ*2HH)R8F*2<D)28G)B4G*2@G*"DI*"@L+2HJ+2LL*RPK+2\S,S,S
  1908. XM-34U-C8X.#P_/SU"0D5,3#T\24Q)24E)0DE,3$5%3$]K3T]=5T]/3TQ,25?_
  1909. XM3UU=5T]K7=W7Z]W/S]W=U]WKS\S)U\S,S,G%R<G%Q<F_Q<G"O;^_O;JZO+^Z
  1910. XMNKJ\NKJZNKV\O+^_O+J]PKV\O,G)PKW"S\S)S,G,S,7"S\G"R<7,R<G)S,_K
  1911. XM:\G,S]?_S\_/S\_7U\G/W=?=U\S,S\_7S\_)Q;_"O[_"O\*]O;RXMKJ\L[6Q
  1912. XML*^PKJVMKZRKJZJGJ*BHI*2EHJ*@H*&CHZ.DH:*@H*&DHJ*AH*2EI:2HJJJF
  1913. XMIZNKJJRPL[.OL;:XNKS%S.O75TE,3T(]/3HV,RPM,"HI)R<G)"0F)!\?("$?
  1914. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1915. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\@("4E)",G*RHK+C`P,34Z.#@\14))3TG=S\_7
  1916. XMS\F]O\*_N+BQKK"OL*ZLJJ:FJ::CHJ&CI*.?GY^@GY^?GY^?GY^?GY^?GY^?
  1917. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?HJ&CH**FI:6FJJJHJJJM
  1918. XMK:NOL+&PK[6SNKJZO+BVNKB]O;R_S,7%PK_"O\G7U\_)R=W_W<S/Z^M=_VM7
  1919. XM5U=,3UU/14)%/ST_.C8X-C8S-3,O+"XL*RHI)RDH)",D(Q\?'Q\?'Q\?'Q\?
  1920. XM'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?'Q\?
  1921. XM'Q\?'Q\?(B(D*BLJ*BTZ/#I"3/__S\6_NK:LJZJJJ*.@H:"?GY^?GY^?GY^?
  1922. XMGY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GY^?GZ&D
  1923. XMIZBFJJNLK:^PM;BXQ<G)R=?=:_]K5TQ)/3P_.C@Q,3$P+BXM+"PN*RHJ*RHK
  1924. XM*B8H*"4G*"HJ)28J)R8J*BLK+"HL*RPQ,2\Q,#8Z.#4Z/T)"14)"0D5,5UU,
  1925. XM3UUK:UUK___KZVM75___76M=3$E,14)"/T)"13HZ-34U-C4P+3`N+2TJ*BPK
  1926. XM*BDE)R<G)B4C(R4E)2(B)"4B(B(B(B,E)24C*"@G*"@J*B@I+BPK+2XP,"XP
  1927. XM,S8S,SH_/#P]0C\\0DQ774]/___KW=W/S\_%PLG)PK:VO;V\MK6QKZVLK:JK
  1928. XMK*RKJJFGI:6IJ*6FIJ:EI*2GI:2DHJ.CHZ6EI::EI*6CI:6GJ*FIJ*JJJJRK
  1929. XMK:ZNKJZOKK&VMKBVMKJ_O[V_O\G"O\G)Q<+7Z__7U]?7W=W____K_UWKW>M/
  1930. XM5_]K_UUK75=K76M75^O__U=75___5___:VO_:VM77?__:U=/5U=75UU)0DE,
  1931. XM3TQ,3$Q)14)"/T)"244_/ST]/3T_/SP]/S8U-C8V-C4U-C4S-34S,S,S,2\N
  1932. XM,#$O,2\O+S`P,3$S,34U-C`S-C@V-C8V-C@Z/#H_/4(_/SP\0DE%145%24E%
  1933. XM24],3$Q,24Q)3%=,3$E,5U=7:VMK__]K_UU=5^O_75U=__]K________:VMK
  1934. XM:___:UU/7?]K75UK_VM=75U=76O_:UU=_VM=75U=75=774Q)3$Q73TE/3T],
  1935. XM3$]=74]73U=/3$],3$]/5UU=7?__7?]K____Z^O__^OKW>O=U\S,S\_)S-?7
  1936. XMS+_"R<7"R<F_NK^_O;V_O[R\N+JZNK.SM;6UL[&QKZZPL["SL+&QL;"PKZ^O
  1937. XMKZZNKJ^QL;"PM;6UM;6UMKJXN+BXNKR\O;_"Q<G)R<G7S^O=W>OK:UU=5TQ,
  1938. XM3$E%14)"/#P\/#P\.#4S,#`Q,#`P+S`N+RXP+RXN+RTL+2XP+BLK+2\N+2\Q
  1939. 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"
  1940. XM/3]%14E%24]/3$]775UK:VMK5___Z]W7U]?7R<7)Q;_"PL*_O[^\O;VZMKBX
  1941. XMMKBXMKBXN+BXN+RSM;BXMKBXN+:VN+BZO+JZO;V_O;V_PK_"Q<G,R<S,S,_,
  1942. XMU]W7S]?KW=W/U_]K____:VMK75=/5U=/3UUK3TE,3TQ)24E)3$5)24(_24E)
  1943. XM245"14E)13]"14)"0D)%245"0D)"14)"0D)"0D)%0C]%24)%24)"0C\_0C\_
  1944. XM0C]"/3T]0CT]/#P_/3HZ.CPZ.#H]/#PZ/#P_/S\_/#P_/SP_/T)"0C]%14))
  1945. XM3$E,3$]73U==75=7:VO_:VO________K___=____Z___Z^OK___K_VMK____
  1946. XM:____VO__VMK:_]K75UK:U=75VMK5U=775=/5U=775=75UU75U=K:VMK75UK
  1947. XM:VM=________Z____]WK_^OKZ___Z]W__^OKW>O=U]W=U]W7U\_7U]?7S\S,
  1948. 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)
  1949. 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
  1950. XMU^OKU^O___]K76M=74]/3$Q)24E%0C\_/#HZ.C8V-C4U-34U,S`S,2\P,#`O
  1951. XM+R\O+R\N+B\P+BXO,#$N+BXQ,3`O+S$P,3$S,3,S,S,S,34U-C8V-38X.#8X
  1952. XM-CP\/3P]/3T]/3\]/T5)24Q)3$]/5U==:VMK_____]W=W=W=U\_,S\7)R<7"
  1953. XMQ<7%PK^_O[^\O+R\O+R\O[V\NKJZNKJZO+V\O;JXNKJ\O;RZO+^]O+R]O;R\
  1954. XMO+V]O;^_O;V]O;V]O;V_O[V_O[^_O\+"PK^_Q<7%Q<G)R<7)S,G)S,_7S\_/
  1955. XMU]?7U]?7U]W=W=WKZ^OKW>O___________]K____:VO___]K__]K:___:UU7
  1956. XM75=75U=75U=/3TQ/5T]/24E)3$Q%14E"0C]"/ST_14(]/3H]/ST]/ST\/#H\
  1957. XM/#H\/3P\/#HZ/#T]/#P\/3\_/3\_/S\_/3]"14)"0D5"145%24E,24E,3$Q,
  1958. XM3T],3$Q,3T]/3T]75U=73U=775U775==:UU=75UK:VMK:VMK:VMK_UUK____
  1959. XM:VO_:____VMK_________________^O____KZ^OKZ]WKZ]W=Z^O=U]?K_^O7
  1960. XMZ^O=U]WKW=W7W=W=U]?=W=?=W=?7U]W=U]?7U]?7U]?7U\_7U]W7U\_7S]?7
  1961. 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,
  1962. XMS,S,S,S/S,S/S\_/U]?7W=WKZ^OKZ^O_______]K75U=75=73T]/3$Q)24E%
  1963. XM145%0C\_/S\_/3\]/S\]/#P\/3P\/#P\/3T\/3T]/ST]/3]"0C]"0D(_0D)"
  1964. XM0D)%24E)24E)24Q/3TQ,5T]/3U=75U==75==76M=:VMK_UUK:VMK:_____]K
  1965. XM____:VO_____________________________________________:VO_____
  1966. XM__]K:VMK:VMK:VM=76MK:UU=:UU=5U==75UK75U75UU=:VMK:VO_:VMK____
  1967. XM_______________KZ^OKZ]WKZ]W=W=W=U]?7U]?7U]?,S,S/S\G,S\_,R<S,
  1968. 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
  1969. XMW=W=W=WKZ^OK____________:___:UU=75U=5U=75U=/5U=/3$Q,3$Q,3$Q,
  1970. XM3$Q,24E)24E)14E%145%0D)%145"145%0D5%14)"0D5%14)%145%145%245)
  1971. XM24E%14E)24E)24Q)24E,3$Q,3$Q,3$Q/5U=75U=75U==5U=775U=75U=76MK
  1972. XM:VMK:VMK:VMK:____________________________^OK___KZ^OKZ^OKZ^OK
  1973. XMZ^OKZ^O=W=W=W=W=W=W7W=W=U]W=W=?7W=W7U]?=W=?7U]?7U]?7U]?7S]?/
  1974. XMS]?7U]?7S\_/U]?7U]?/U]?7U]?7U]?7W=?=W=W=W>OKW=WKZ^OKZ_______
  1975. XM____________:UUK:UU=75U=75U75U=75U=75U=/3T]/3T]/3$Q,3$Q,3$Q,
  1976. XM3$Q,3$],3$Q,3$Q,3$Q,3T],3$Q,3$]/3TQ,3T]/3T]75U=/5U=75U=75U==
  1977. XM76MK76MK:VMK:VO_____________________________________________
  1978. XM____________________________________________________________
  1979. XM____________________________________________________________
  1980. XM____________________________________________________________
  1981. XM________________:___:VO__________VMK:___:VMK:VMK:VMK:VMK:VMK
  1982. XM:VMK:VMK:VMK:VMK:VMK76MK:VM=:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK
  1983. XM:VMK_VO_:VO___]K____________________________________________
  1984. XM____________________________________________________________
  1985. XM_____________VMK__]K:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK:VMK
  1986. XM:VMK:VMK:VO_________________________________________________
  1987. XM____________________________________________________________
  1988. XM____________________________________________________________
  1989. XM____________________________________________________________
  1990. XM____________________________________________________________
  1991. XH________________________________________________________
  1992. X`
  1993. Xend
  1994. END_OF_FILE
  1995. if test 12793 -ne `wc -c <'sounds/stamp.au.uu'`; then
  1996.     echo shar: \"'sounds/stamp.au.uu'\" unpacked with wrong size!
  1997. fi
  1998. # end of 'sounds/stamp.au.uu'
  1999. fi
  2000. echo shar: End of archive 23 \(of 30\).
  2001. cp /dev/null ark23isdone
  2002. MISSING=""
  2003. 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 27 28 29 30 ; do
  2004.     if test ! -f ark${I}isdone ; then
  2005.     MISSING="${MISSING} ${I}"
  2006.     fi
  2007. done
  2008. if test "${MISSING}" = "" ; then
  2009.     echo You have unpacked all 30 archives.
  2010.     echo "Now execute sdecode.sh to build files."
  2011.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2012. else
  2013.     echo You still need to unpack the following archives:
  2014.     echo "        " ${MISSING}
  2015. fi
  2016. ##  End of shell archive.
  2017. exit 0
  2018.