home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume18 / xmris / patch1.01 < prev    next >
Encoding:
Text File  |  1992-07-28  |  53.1 KB  |  1,408 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!uunet!darwin.sura.net!mips!msi!dcmartin
  3. From: Nathan Sidwell <nathan@inmos.co.uk>
  4. Subject: v18i072: xmris version 2.00, Patch1, Part01/05
  5. Message-ID: <1992Jul29.181005.15530@msi.com>
  6. Originator: dcmartin@fascet
  7. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  8. Organization: Molecular Simulations, Inc.
  9. References: <csx-18i072-xmris@uunet.UU.NET>
  10. Date: Wed, 29 Jul 1992 18:10:05 GMT
  11. Approved: dcmartin@msi.com
  12. Lines: 1394
  13.  
  14. Submitted-by: Nathan Sidwell <nathan@inmos.co.uk>
  15. Posting-number: Volume 18, Issue 72
  16. Archive-name: xmris/patch1.01
  17. Patch-To: xmris: Volume XXX, Issue XXX
  18.  
  19. CHANGES FROM V1.01 to V2.00 (in no particular order)
  20.  
  21. Note, Imakefile & Makefile.std have changed. You'll have to do the
  22. appropriate change to them.
  23.  
  24. There is now a high score table and file. The file can be
  25. disabled, if you don't want that. Multiple xmris's can
  26. access the score file concurrently, without getting tangled up.
  27. The xdefault scores and the argument -scores can be used to
  28. override the default. If different users are to use this file
  29. it must be writable to by them, or use setgid or setuid.
  30.  
  31. Many people requested user selectable keys, so I've added them,
  32. you can select from the keyboard. I've expanded the manual
  33. section on how to use the keyboard, 'cos many people had trouble
  34. changing direction.
  35.  
  36. Added .Xdefault capability
  37. takes xmris.{up,down,left,right,throw,pause,quit,iconize,keyboard,font,scores}.
  38.  
  39. Apparently DECstation's K&R compiler doesn't like macro arguments
  40. split across lines. Darrin Chaney <mdchaney@ucs.indiana.edu> told
  41. me about this. It effects a few large asserts. I've split these.
  42.  
  43. Added SYSV capabilty into timer.c, as told by Christopher C. Davis
  44. <davis@nuwave.b11.ingr.com>. (Make sure you have -DSYSV in your
  45. compiler switches.)
  46.  
  47. I've added switches so it knows if memmove is available. If you
  48. haven't got memmove, then supply -DUSEBCOPY or -DUSEMEMCPY as
  49. you require,
  50.  
  51. Added XIOerror handling.
  52.  
  53. The -iconic argument works now.
  54.  
  55. There is an iconize key (by default i), with an xresource (iconize)
  56. which will immediatly iconize and pause the game, (for when you
  57. want to look busy). 
  58.  
  59. Tracks the pointer entering and leaving the window. This might fix
  60. the problem with some window managers that it never selects the
  61. keyboard input. It also pauses the game as soon as the pointer
  62. leaves the window.
  63.  
  64. Stopped it from crashing when the last argument doesn't have a '-'
  65. at the front. James Vera <vera@fanaraaken.stanford.edu> found this
  66. one.
  67.  
  68. Tidied up the source putting casts in the right place, as advised
  69. by gcc. DATE macro is now taken from patchlevel.h.
  70. Fixed bug on apple falling, not breaking through thin bits of
  71. hedge.
  72.  
  73. I received a lot of comments from Paul Winser
  74. <paul@prl.pjilips.co.uk>, who obviously spent too much time at
  75. the arcade playing the game. Some of his suggestions have been
  76. incorporated. Namely that the monsters run away from you when
  77. you throw the ball, and the xtra drones are less protective of
  78. the xtra monster.
  79.  
  80. You can now go round corners, with a monster right behind you,
  81. without dying. Its also easier to stop before a thin section
  82. of wall, without breaking through it. This allows you to throw
  83. the ball through the wall.
  84.  
  85. You can now change the way you're facing without moving, and
  86. you don't die and shoot a monster at the same time.
  87.  
  88. Normal monsters now panic if they notice an apple about
  89. to fall on them.
  90.  
  91. It is easier to stop just before a thin git of wall and shoot
  92. through it.
  93.  
  94. Mouse control is scrapped, cos its a pile of poo.
  95.  
  96. #!/bin/sh
  97. # This is a shell archive (produced by shar 3.50)
  98. # To extract the files from this archive, save it to a file, remove
  99. # everything above the "!/bin/sh" line above, and type "sh file_name".
  100. #
  101. # made 07/29/1992 18:08 UTC by dcmartin@fascet
  102. # Source directory /home/fascet/dcmartin/csx/src/xmris
  103. #
  104. # existing files will NOT be overwritten unless -c is specified
  105. #
  106. # This is part 1 of a multipart archive                                    
  107. # do not concatenate these parts, unpack them in order with /bin/sh        
  108. #
  109. # This shar contains:
  110. # length  mode       name
  111. # ------ ---------- ------------------------------------------
  112. #   3117 -rw-r--r-- CHANGES
  113. # 222994 -rw-r--r-- patch.v2.00
  114. #    262 -rw-r--r-- xmris.def
  115. #
  116. if test -r _shar_seq_.tmp; then
  117.     echo 'Must unpack archives in sequence!'
  118.     echo Please unpack part `cat _shar_seq_.tmp` next
  119.     exit 1
  120. fi
  121. # ============= CHANGES ==============
  122. if test -f 'CHANGES' -a X"$1" != X"-c"; then
  123.     echo 'x - skipping CHANGES (File already exists)'
  124.     rm -f _shar_wnt_.tmp
  125. else
  126. > _shar_wnt_.tmp
  127. echo 'x - extracting CHANGES (Text)'
  128. sed 's/^X//' << 'SHAR_EOF' > 'CHANGES' &&
  129. The source can be requested from me by email with a subject 
  130. "xmris request" a replyto line may be in the mail to change
  131. the default reply, if you know that doesn't work. Ie
  132. X
  133. replyto nathan@inmos.co.uk
  134. X
  135. CHANGES FROM V1.01 to V2.00 (in no particular order)
  136. X
  137. Note, Imakefile & Makefile.std have changed. You'll have to do the
  138. appropriate change to them.
  139. X
  140. There is now a high score table and file. The file can be
  141. disabled, if you don't want that. Multiple xmris's can
  142. access the score file concurrently, without getting tangled up.
  143. The xdefault scores and the argument -scores can be used to
  144. override the default. If different users are to use this file
  145. it must be writable to by them, or use setgid or setuid.
  146. X
  147. Many people requested user selectable keys, so I've added them,
  148. you can select from the keyboard. I've expanded the manual
  149. section on how to use the keyboard, 'cos many people had trouble
  150. changing direction.
  151. X
  152. Added .Xdefault capability
  153. takes xmris.{up,down,left,right,throw,pause,quit,iconize,keyboard,font,scores}.
  154. X
  155. Apparently DECstation's K&R compiler doesn't like macro arguments
  156. split across lines. Darrin Chaney <mdchaney@ucs.indiana.edu> told
  157. me about this. It effects a few large asserts. I've split these.
  158. X
  159. Added SYSV capabilty into timer.c, as told by Christopher C. Davis
  160. <davis@nuwave.b11.ingr.com>. (Make sure you have -DSYSV in your
  161. compiler switches.)
  162. X
  163. I've added switches so it knows if memmove is available. If you
  164. haven't got memmove, then supply -DUSEBCOPY or -DUSEMEMCPY as
  165. you require,
  166. X
  167. Added XIOerror handling.
  168. X
  169. The -iconic argument works now.
  170. X
  171. There is an iconize key (by default i), with an xresource (iconize)
  172. which will immediatly iconize and pause the game, (for when you
  173. want to look busy). 
  174. X
  175. Tracks the pointer entering and leaving the window. This might fix
  176. the problem with some window managers that it never selects the
  177. keyboard input. It also pauses the game as soon as the pointer
  178. leaves the window.
  179. X
  180. Stopped it from crashing when the last argument doesn't have a '-'
  181. at the front. James Vera <vera@fanaraaken.stanford.edu> found this
  182. one.
  183. X
  184. Tidied up the source putting casts in the right place, as advised
  185. by gcc. DATE macro is now taken from patchlevel.h.
  186. Fixed bug on apple falling, not breaking through thin bits of
  187. hedge.
  188. X
  189. I received a lot of comments from Paul Winser
  190. <paul@prl.pjilips.co.uk>, who obviously spent too much time at
  191. the arcade playing the game. Some of his suggestions have been
  192. incorporated. Namely that the monsters run away from you when
  193. you throw the ball, and the xtra drones are less protective of
  194. the xtra monster.
  195. X
  196. You can now go round corners, with a monster right behind you,
  197. without dying. Its also easier to stop before a thin section
  198. of wall, without breaking through it. This allows you to throw
  199. the ball through the wall.
  200. X
  201. You can now change the way you're facing without moving, and
  202. you don't die and shoot a monster at the same time.
  203. X
  204. Normal monsters now panic if they notice an apple about
  205. to fall on them.
  206. X
  207. It is easier to stop just before a thin git of wall and shoot
  208. through it.
  209. X
  210. Mouse control is scrapped, cos its a pile of poo.
  211. X
  212. X
  213. SHAR_EOF
  214. chmod 0644 CHANGES ||
  215. echo 'restore of CHANGES failed'
  216. Wc_c="`wc -c < 'CHANGES'`"
  217. test 3117 -eq "$Wc_c" ||
  218.     echo 'CHANGES: original size 3117, current size' "$Wc_c"
  219. rm -f _shar_wnt_.tmp
  220. fi
  221. # ============= patch.v2.00 ==============
  222. if test -f 'patch.v2.00' -a X"$1" != X"-c"; then
  223.     echo 'x - skipping patch.v2.00 (File already exists)'
  224.     rm -f _shar_wnt_.tmp
  225. else
  226. > _shar_wnt_.tmp
  227. echo 'x - extracting patch.v2.00 (Text)'
  228. sed 's/^X//' << 'SHAR_EOF' > 'patch.v2.00' &&
  229. diff -c -r exp.v1.01/COMPILATION exp.v2.00/COMPILATION
  230. *** exp.v1.01/COMPILATION    Fri Jul 24 09:55:52 1992
  231. --- exp.v2.00/COMPILATION    Fri Jul 24 13:42:58 1992
  232. ***************
  233. *** 17,27 ****
  234. --- 17,41 ----
  235. X  down by increasing the frame rate.  This can be done by fiddling with
  236. X  the FRAME variable in the Imakefile
  237. X  
  238. + If you've a System V flavour of unix make sure you supply -DSYSV to
  239. + the compiler.
  240. + Set the SCORE_DIR to point to the default high score directory. If this
  241. + is not defined, then the high score file code will not be included, and
  242. + you'll get a warning when you try to start xmris with a high score file.
  243. + Note that the score file uses lockf by default. You might need to change
  244. + this for different unices.
  245. X  To make on your system type
  246. X  
  247. X      xmkmf
  248. X      make depend
  249. X      make all
  250. + don't forget to touch the score file into existance if you want it.
  251. + xmris.def is an example Xdefault module, so you can use the arrow keys,
  252. + append it to your .Xdefaults and re-read it in with xrdb if you want.
  253. X  
  254. X  To install into your X bin use make install, but note that this only
  255. X  installs xmris, not xmsit.
  256. diff -c -r exp.v1.01/COPYRIGHT exp.v2.00/COPYRIGHT
  257. *** exp.v1.01/COPYRIGHT    Fri Jul 24 09:55:50 1992
  258. --- exp.v2.00/COPYRIGHT    Fri Jul 24 13:42:59 1992
  259. ***************
  260. *** 2,10 ****
  261. X              ---------------
  262. X              (C) 1992 Nathan Sidwell
  263. X  
  264. ! This program is copyright (C) 1992 Nathan Sidwell.  This software and
  265. ! documentation is in the public domain.  Permission is granted to
  266. ! distribute and compile verbatim copies of this software for
  267. X  non-commercial, non-profit use, without fee.  The software may be
  268. X  modified, provided that both the above copyright notice and this
  269. X  permission notice appear.
  270. --- 2,9 ----
  271. X              ---------------
  272. X              (C) 1992 Nathan Sidwell
  273. X  
  274. ! This program is copyright (C) 1992 Nathan Sidwell.  Permission is
  275. ! granted to distribute and compile verbatim copies of this software for
  276. X  non-commercial, non-profit use, without fee.  The software may be
  277. X  modified, provided that both the above copyright notice and this
  278. X  permission notice appear.
  279. diff -c -r exp.v1.01/Imakefile exp.v2.00/Imakefile
  280. *** exp.v1.01/Imakefile    Fri Jul 24 09:55:53 1992
  281. --- exp.v2.00/Imakefile    Fri Jul 24 13:42:59 1992
  282. ***************
  283. *** 1,30 ****
  284. ! /**/# I need special include directories for gcc
  285. X  STD_INCLUDES = -I/inmos/arch/lib/gcc-ansi
  286. X  /**/# select your compiler
  287. ! CC = gcc -ansi -pedantic -nostdinc -Wall -Wpointer-arith -Wwrite-strings
  288. ! /**/#CC = gcc -traditional -nostdinc -Wall -Wpointer-arith -Wwrite-strings
  289. X  /**/# uncomment and fiddle with the following lines if you want
  290. X  /**/# default game gender 0 = male, 1 = female
  291. X  /**/#GENDER = -DGAME_GENDER=1
  292. X  /**/# frame rate in microseconds
  293. X  /**/#FRAME = -DFRAME_RATE=37000
  294. ! /**/# font name
  295. X  /**/#FONT = -DFONT_NAME="-*-courier-*-r-*-*-18-*-*-*-*-*-*-*"
  296. X  /**/# do you trust the code?
  297. ! /**/# NDEBUG = -DNDEBUG
  298. ! /**/# K&R doesn't have __DATE__ so we supply it here
  299. ! DATE = -DDATE="\"`date '+%h %d 19%y'`\""
  300. X  /**/# Allow debugging?
  301. X  /**/#CDEBUGFLAGS = -g
  302. X  
  303. ! DEFINES = $(DATE) $(GENDER) $(FRAME) $(FONT) $(NDEBUG)
  304. X  SRCS = apple.c create.c demo.c draw.c monster.c move.c player.c timer.c xmris.c
  305. X  OBJS = apple.o create.o demo.o draw.o monster.o move.o player.o timer.o xmris.o
  306. X  LOCAL_LIBRARIES = $(XLIB)
  307. X  ComplexProgramTarget(xmris)
  308. X  
  309. ! all :: xmris xmsit
  310. X  
  311. X  xmsit: xmris
  312. X      ln -s xmris xmsit
  313. --- 1,45 ----
  314. ! /**/# I need special include directories for gcc, if you don't
  315. ! /**/# the comment it out
  316. X  STD_INCLUDES = -I/inmos/arch/lib/gcc-ansi
  317. X  /**/# select your compiler
  318. ! CC = gcc -ansi -pedantic -nostdinc -Wall -Wpointer-arith -Wwrite-strings -Wconversion
  319. ! /**/#CC = gcc -traditional -nostdinc -Wall -Wpointer-arith -Wwrite-strings -Wconversion -fno-builtin
  320. X  /**/# uncomment and fiddle with the following lines if you want
  321. X  /**/# default game gender 0 = male, 1 = female
  322. X  /**/#GENDER = -DGAME_GENDER=1
  323. X  /**/# frame rate in microseconds
  324. X  /**/#FRAME = -DFRAME_RATE=37000
  325. ! /**/# font name (must be fixed width)
  326. X  /**/#FONT = -DFONT_NAME="-*-courier-*-r-*-*-18-*-*-*-*-*-*-*"
  327. + /**/# where is the high score file, comment if you don't want them
  328. + #define HIGH_SCORE_FILE /u/nathan/games/xmris.scores
  329. + #ifdef HIGH_SCORE_FILE
  330. + SCORE= HIGH_SCORE_FILE
  331. + SCORE_FILE = -DSCORE_FILE=\"$(SCORE)\"
  332. + #endif
  333. + /**/# don't you have memcpy?
  334. + /**/#COPY = -DUSEBCOPY
  335. + /**/#COPY = -DUSEMEMCPY
  336. X  /**/# do you trust the code?
  337. ! /**/#NDEBUG = -DNDEBUG
  338. X  /**/# Allow debugging?
  339. X  /**/#CDEBUGFLAGS = -g
  340. X  
  341. ! DEFINES = $(GENDER) $(FRAME) $(FONT) $(NDEBUG) $(SCORE_FILE) $(COPY)
  342. X  SRCS = apple.c create.c demo.c draw.c monster.c move.c player.c timer.c xmris.c
  343. X  OBJS = apple.o create.o demo.o draw.o monster.o move.o player.o timer.o xmris.o
  344. X  LOCAL_LIBRARIES = $(XLIB)
  345. ! DEPLIBS = $(DEPXLIB)
  346. X  ComplexProgramTarget(xmris)
  347. X  
  348. ! all :: xmris xmsit $(SCORE)
  349. X  
  350. X  xmsit: xmris
  351. X      ln -s xmris xmsit
  352. + #ifdef HIGH_SCORE_FILE
  353. + $(SCORE) :
  354. +     touch $(SCORE)
  355. +     chmod 666 $(SCORE)
  356. + #endif
  357. diff -c -r exp.v1.01/Makefile.std exp.v2.00/Makefile.std
  358. *** exp.v1.01/Makefile.std    Fri Jul 24 09:55:54 1992
  359. --- exp.v2.00/Makefile.std    Fri Jul 24 13:43:00 1992
  360. ***************
  361. *** 225,253 ****
  362. X  ###########################################################################
  363. X  # start of Imakefile
  364. X  
  365. ! # I need special include directories for gcc
  366. X  #STD_INCLUDES = -I/inmos/arch/lib/gcc-ansi
  367. X  # select your compiler
  368. ! #CC = gcc -ansi -pedantic -nostdinc -Wall -Wpointer-arith -Wwrite-strings
  369. ! #CC = gcc -traditional -nostdinc -Wall -Wpointer-arith -Wwrite-strings
  370. X  # uncomment and fiddle with the following lines if you want
  371. X  # default game gender 0 = male, 1 = female
  372. X  #GENDER = -DGAME_GENDER=1
  373. X  # frame rate in microseconds
  374. X  #FRAME = -DFRAME_RATE=37000
  375. ! # font name
  376. X  #FONT = -DFONT_NAME="-*-courier-*-r-*-*-18-*-*-*-*-*-*-*"
  377. X  # do you trust the code?
  378. ! # NDEBUG = -DNDEBUG
  379. ! # K&R doesn't have __DATE__ so we supply it here
  380. ! DATE = -DDATE="\"`date '+%h %d 19%y'`\""
  381. X  # Allow debugging?
  382. X  #CDEBUGFLAGS = -g
  383. X  
  384. ! DEFINES = $(DATE) $(GENDER) $(FRAME) $(FONT) $(NDEBUG)
  385. X  SRCS = apple.c create.c demo.c draw.c monster.c move.c player.c timer.c xmris.c
  386. X  OBJS = apple.o create.o demo.o draw.o monster.o move.o player.o timer.o xmris.o
  387. X  LOCAL_LIBRARIES = $(XLIB)
  388. X  
  389. X   PROGRAM = xmris
  390. X  
  391. --- 225,261 ----
  392. X  ###########################################################################
  393. X  # start of Imakefile
  394. X  
  395. ! # I need special include directories for gcc, if you don't
  396. ! # the comment it out
  397. X  #STD_INCLUDES = -I/inmos/arch/lib/gcc-ansi
  398. X  # select your compiler
  399. ! #CC = gcc -ansi -pedantic -nostdinc -Wall -Wpointer-arith -Wwrite-strings -Wconversion
  400. ! #CC = gcc -traditional -nostdinc -Wall -Wpointer-arith -Wwrite-strings -Wconversion -fno-builtin
  401. X  # uncomment and fiddle with the following lines if you want
  402. X  # default game gender 0 = male, 1 = female
  403. X  #GENDER = -DGAME_GENDER=1
  404. X  # frame rate in microseconds
  405. X  #FRAME = -DFRAME_RATE=37000
  406. ! # font name (must be fixed width)
  407. X  #FONT = -DFONT_NAME="-*-courier-*-r-*-*-18-*-*-*-*-*-*-*"
  408. + # where is the high score file, comment if you don't want them
  409. + SCORE= /u/nathan/games/xmris.scores
  410. + SCORE_FILE = -DSCORE_FILE=\"$(SCORE)\"
  411. + # don't you have memcpy?
  412. + #COPY = -DUSEBCOPY
  413. + #COPY = -DUSEMEMCPY
  414. X  # do you trust the code?
  415. ! #NDEBUG = -DNDEBUG
  416. X  # Allow debugging?
  417. X  #CDEBUGFLAGS = -g
  418. X  
  419. ! DEFINES = $(GENDER) $(FRAME) $(FONT) $(NDEBUG) $(SCORE_FILE) $(COPY)
  420. X  SRCS = apple.c create.c demo.c draw.c monster.c move.c player.c timer.c xmris.c
  421. X  OBJS = apple.o create.o demo.o draw.o monster.o move.o player.o timer.o xmris.o
  422. X  LOCAL_LIBRARIES = $(XLIB)
  423. + DEPLIBS = $(DEPXLIB)
  424. X  
  425. X   PROGRAM = xmris
  426. X  
  427. ***************
  428. *** 280,290 ****
  429. X  clean::
  430. X      $(RM) $(PROGRAM)
  431. X  
  432. ! all :: xmris xmsit
  433. X  
  434. X  xmsit: xmris
  435. X      ln -s xmris xmsit
  436. X  
  437. X  ###########################################################################
  438. X  # common rules for all Makefiles - do not edit
  439. X  
  440. --- 288,302 ----
  441. X  clean::
  442. X      $(RM) $(PROGRAM)
  443. X  
  444. ! all :: xmris xmsit $(SCORE)
  445. X  
  446. X  xmsit: xmris
  447. X      ln -s xmris xmsit
  448. X  
  449. + $(SCORE) :
  450. +     touch $(SCORE)
  451. +     chmod 666 $(SCORE)
  452. X  ###########################################################################
  453. X  # common rules for all Makefiles - do not edit
  454. X  
  455. ***************
  456. *** 326,364 ****
  457. X  ###########################################################################
  458. X  # dependencies generated by makedepend
  459. X  
  460. ! # DO NOT DELETE THIS LINE -- make depend depends on it.
  461. X  
  462. ! apple.o: xmris.h patchlevel.h /usr/include/varargs.h
  463. ! apple.o: /usr/include/stddef.h /usr/include/stdlib.h
  464. ! apple.o: /usr/include/stdio.h /usr/include/assert.h
  465. ! apple.o: /usr/include/string.h /usr/include/ctype.h
  466. X  apple.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  467. ! apple.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  468. ! apple.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  469. ! create.o: xmris.h patchlevel.h /usr/include/varargs.h
  470. ! create.o: /usr/include/stddef.h /usr/include/stdlib.h
  471. ! create.o: /usr/include/stdio.h /usr/include/assert.h
  472. ! create.o: /usr/include/string.h /usr/include/ctype.h
  473. X  create.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  474. - create.o: /usr/include/sys/stdtypes.h
  475. X  create.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  476. ! create.o: /usr/include/X11/Xutil.h bitmaps/icon/mris.h bitmaps/icon/msit.h
  477. ! create.o: bitmaps/icon/cursor.h bitmaps/icon/cursorm.h bitmaps/icon/solidm.h
  478. ! create.o: bitmaps/icon/solidr.h bitmaps/icon/solidi.h bitmaps/icon/solids.h
  479. ! create.o: bitmaps/icon/solidt.h bitmaps/icon/shellm.h bitmaps/icon/shellr.h
  480. ! create.o: bitmaps/icon/shelli.h bitmaps/icon/shells.h bitmaps/icon/shellt.h
  481. ! create.o: bitmaps/icon/bigm.h bitmaps/icon/bigr.h bitmaps/icon/bigi.h
  482. ! create.o: bitmaps/icon/bigs.h bitmaps/icon/bigt.h bitmaps/board/oblong.h
  483. ! create.o: bitmaps/board/rect.h bitmaps/board/munchtb.h
  484. ! create.o: bitmaps/board/munchlr.h bitmaps/board/edgetb.h
  485. ! create.o: bitmaps/board/edgelr.h bitmaps/board/fill0.h bitmaps/board/fill1.h
  486. ! create.o: bitmaps/board/fill2.h bitmaps/board/fill3.h bitmaps/board/digits.h
  487. ! create.o: bitmaps/board/digitsm.h bitmaps/board/cherry.h
  488. ! create.o: bitmaps/board/cherrym.h bitmaps/apple/apple.h
  489. ! create.o: bitmaps/apple/applem.h bitmaps/apple/rock.h bitmaps/apple/rockm.h
  490. ! create.o: bitmaps/apple/split.h bitmaps/apple/splitm.h bitmaps/apple/decay.h
  491. ! create.o: bitmaps/apple/decaym.h bitmaps/apple/rot.h bitmaps/apple/rotm.h
  492. ! create.o: bitmaps/player/ball.h bitmaps/player/plyrrt1.h
  493. X  create.o: bitmaps/player/plyrrt1m.h bitmaps/player/plyrrt2.h
  494. X  create.o: bitmaps/player/plyrrt2m.h bitmaps/player/plyrup1.h
  495. X  create.o: bitmaps/player/plyrup1m.h bitmaps/player/plyrup2.h
  496. --- 338,377 ----
  497. X  ###########################################################################
  498. X  # dependencies generated by makedepend
  499. X  
  500. ! # DO NOT DELETE
  501. X  
  502. ! apple.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  503. ! apple.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  504. ! apple.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  505. ! apple.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  506. X  apple.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  507. ! apple.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  508. ! apple.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  509. ! apple.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  510. ! create.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  511. ! create.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  512. ! create.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  513. ! create.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  514. X  create.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  515. X  create.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  516. ! create.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  517. ! create.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  518. ! create.o: bitmaps/icon/mris.h bitmaps/icon/msit.h bitmaps/icon/cursor.h
  519. ! create.o: bitmaps/icon/cursorm.h bitmaps/icon/solidm.h bitmaps/icon/solidr.h
  520. ! create.o: bitmaps/icon/solidi.h bitmaps/icon/solids.h bitmaps/icon/solidt.h
  521. ! create.o: bitmaps/icon/shellm.h bitmaps/icon/shellr.h bitmaps/icon/shelli.h
  522. ! create.o: bitmaps/icon/shells.h bitmaps/icon/shellt.h bitmaps/icon/bigm.h
  523. ! create.o: bitmaps/icon/bigr.h bitmaps/icon/bigi.h bitmaps/icon/bigs.h
  524. ! create.o: bitmaps/icon/bigt.h bitmaps/board/oblong.h bitmaps/board/rect.h
  525. ! create.o: bitmaps/board/munchtb.h bitmaps/board/munchlr.h
  526. ! create.o: bitmaps/board/edgetb.h bitmaps/board/edgelr.h bitmaps/board/fill0.h
  527. ! create.o: bitmaps/board/fill1.h bitmaps/board/fill2.h bitmaps/board/fill3.h
  528. ! create.o: bitmaps/board/digits.h bitmaps/board/digitsm.h
  529. ! create.o: bitmaps/board/cherry.h bitmaps/board/cherrym.h
  530. ! create.o: bitmaps/apple/apple.h bitmaps/apple/applem.h bitmaps/apple/rock.h
  531. ! create.o: bitmaps/apple/rockm.h bitmaps/apple/split.h bitmaps/apple/splitm.h
  532. ! create.o: bitmaps/apple/decay.h bitmaps/apple/decaym.h bitmaps/apple/rot.h
  533. ! create.o: bitmaps/apple/rotm.h bitmaps/player/ball.h bitmaps/player/plyrrt1.h
  534. X  create.o: bitmaps/player/plyrrt1m.h bitmaps/player/plyrrt2.h
  535. X  create.o: bitmaps/player/plyrrt2m.h bitmaps/player/plyrup1.h
  536. X  create.o: bitmaps/player/plyrup1m.h bitmaps/player/plyrup2.h
  537. ***************
  538. *** 390,450 ****
  539. X  create.o: bitmaps/prize/brolly.h bitmaps/prize/brollym.h
  540. X  create.o: bitmaps/prize/mushrm.h bitmaps/prize/mushrmm.h
  541. X  create.o: bitmaps/prize/clock.h bitmaps/prize/clockm.h
  542. ! demo.o: xmris.h patchlevel.h /usr/include/varargs.h
  543. ! demo.o: /usr/include/stddef.h /usr/include/stdlib.h
  544. ! demo.o: /usr/include/stdio.h /usr/include/assert.h
  545. ! demo.o: /usr/include/string.h /usr/include/ctype.h
  546. X  demo.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  547. ! demo.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  548. ! demo.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  549. ! draw.o: xmris.h patchlevel.h /usr/include/varargs.h
  550. ! draw.o: /usr/include/stddef.h /usr/include/stdlib.h
  551. ! draw.o: /usr/include/stdio.h /usr/include/assert.h
  552. ! draw.o: /usr/include/string.h /usr/include/ctype.h
  553. X  draw.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  554. ! draw.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  555. ! draw.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  556. X  draw.o: /usr/include/time.h
  557. ! monster.o: xmris.h patchlevel.h /usr/include/varargs.h
  558. ! monster.o: /usr/include/stddef.h
  559. ! monster.o: /usr/include/stdlib.h /usr/include/stdio.h
  560. ! monster.o: /usr/include/assert.h
  561. ! monster.o: /usr/include/string.h /usr/include/ctype.h
  562. X  monster.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  563. - monster.o: /usr/include/sys/stdtypes.h
  564. X  monster.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  565. ! monster.o: /usr/include/X11/Xutil.h
  566. ! move.o: xmris.h patchlevel.h /usr/include/varargs.h
  567. ! move.o: /usr/include/stddef.h /usr/include/stdlib.h
  568. ! move.o: /usr/include/stdio.h /usr/include/assert.h
  569. ! move.o: /usr/include/string.h /usr/include/ctype.h
  570. X  move.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  571. ! move.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  572. ! move.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  573. ! player.o: xmris.h patchlevel.h /usr/include/varargs.h
  574. ! player.o: /usr/include/stddef.h /usr/include/stdlib.h
  575. ! player.o: /usr/include/stdio.h /usr/include/assert.h
  576. ! player.o: /usr/include/string.h /usr/include/ctype.h
  577. X  player.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  578. - player.o: /usr/include/sys/stdtypes.h
  579. X  player.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  580. ! player.o: /usr/include/X11/Xutil.h
  581. ! timer.o: xmris.h patchlevel.h /usr/include/varargs.h
  582. ! timer.o: /usr/include/stddef.h /usr/include/stdlib.h
  583. ! timer.o: /usr/include/stdio.h /usr/include/assert.h
  584. ! timer.o: /usr/include/string.h /usr/include/ctype.h
  585. X  timer.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  586. ! timer.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  587. ! timer.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  588. ! timer.o: /usr/include/time.h /usr/include/sys/time.h
  589. ! timer.o: /usr/include/signal.h
  590. ! timer.o: /usr/include/sys/signal.h
  591. ! timer.o: /usr/include/vm/faultcode.h
  592. ! xmris.o: xmris.h patchlevel.h /usr/include/varargs.h
  593. ! xmris.o: /usr/include/stddef.h /usr/include/stdlib.h
  594. ! xmris.o: /usr/include/stdio.h /usr/include/assert.h
  595. ! xmris.o: /usr/include/string.h /usr/include/ctype.h
  596. X  xmris.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  597. ! xmris.o: /usr/include/sys/stdtypes.h /usr/include/sys/sysmacros.h
  598. ! xmris.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
  599. X  xmris.o: /usr/include/time.h
  600. --- 403,466 ----
  601. X  create.o: bitmaps/prize/brolly.h bitmaps/prize/brollym.h
  602. X  create.o: bitmaps/prize/mushrm.h bitmaps/prize/mushrmm.h
  603. X  create.o: bitmaps/prize/clock.h bitmaps/prize/clockm.h
  604. ! demo.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  605. ! demo.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  606. ! demo.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  607. ! demo.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  608. X  demo.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  609. ! demo.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  610. ! demo.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  611. ! demo.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  612. ! demo.o: /usr/include/time.h
  613. ! draw.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  614. ! draw.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  615. ! draw.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  616. ! draw.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  617. X  draw.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  618. ! draw.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  619. ! draw.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  620. ! draw.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  621. X  draw.o: /usr/include/time.h
  622. ! monster.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  623. ! monster.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  624. ! monster.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  625. ! monster.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  626. X  monster.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  627. X  monster.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  628. ! monster.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  629. ! monster.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  630. ! move.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  631. ! move.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  632. ! move.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  633. ! move.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  634. X  move.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  635. ! move.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  636. ! move.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  637. ! move.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  638. ! player.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  639. ! player.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  640. ! player.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  641. ! player.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  642. X  player.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  643. X  player.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  644. ! player.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  645. ! player.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  646. ! timer.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  647. ! timer.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  648. ! timer.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  649. ! timer.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  650. X  timer.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  651. ! timer.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  652. ! timer.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  653. ! timer.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  654. ! timer.o: /usr/include/time.h /usr/include/sys/time.h /usr/include/signal.h
  655. ! timer.o: /usr/include/sys/signal.h /usr/include/vm/faultcode.h
  656. ! xmris.o: xmris.h patchlevel.h /usr/include/varargs.h /usr/include/stddef.h
  657. ! xmris.o: /usr/include/sys/stdtypes.h /usr/include/stdlib.h
  658. ! xmris.o: /usr/include/stdio.h /usr/include/assert.h /usr/include/string.h
  659. ! xmris.o: /usr/include/errno.h /usr/include/sys/errno.h /usr/include/ctype.h
  660. X  xmris.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h
  661. ! xmris.o: /usr/include/sys/sysmacros.h /usr/include/X11/X.h
  662. ! xmris.o: /usr/include/X11/Xutil.h /usr/include/X11/keysym.h
  663. ! xmris.o: /usr/include/X11/keysymdef.h /usr/include/unistd.h
  664. X  xmris.o: /usr/include/time.h
  665. diff -c -r exp.v1.01/README exp.v2.00/README
  666. *** exp.v1.01/README    Fri Jul 24 09:55:51 1992
  667. --- exp.v2.00/README    Fri Jul 24 13:42:57 1992
  668. ***************
  669. *** 1,12 ****
  670. !             X M R I S V1.01
  671. X  
  672. X              (C) 1992 Nathan Sidwell
  673. X  
  674. ! This program is copyright (C) 1992 Nathan Sidwell.  This software and
  675. ! documentation is in the public domain.  Permission is granted to
  676. ! distribute and compile verbatim copies of this software for
  677. ! non-commercial, non-profit use, without fee.  The software may be
  678. ! modified, provided that both the above copyright notice and this
  679. X  permission notice appear.
  680. X  
  681. X  No guarantee is given as to the robustness or suitability of this
  682. --- 1,11 ----
  683. !             X M R I S V2.00
  684. X  
  685. X              (C) 1992 Nathan Sidwell
  686. X  
  687. ! This program is copyright (C) 1992 Nathan Sidwell.  Permission is
  688. ! granted to distribute and compile verbatim copies of this software
  689. ! for non-commercial, non-profit use, without fee.  The software may
  690. ! be modified, provided that both the above copyright notice and this
  691. X  permission notice appear.
  692. X  
  693. X  No guarantee is given as to the robustness or suitability of this
  694. diff -c -r exp.v1.01/apple.c exp.v2.00/apple.c
  695. *** exp.v1.01/apple.c    Fri Jul 24 09:56:00 1992
  696. --- exp.v2.00/apple.c    Fri Jul 24 13:43:06 1992
  697. ***************
  698. *** 1,21 ****
  699. ! /*{{{  (C) 1992 Nathan Sidwell*/
  700. ! /*****************************************************************************
  701. !             X M R I S V1.01
  702. !             ---------------
  703. !             (C) 1992 Nathan Sidwell
  704. ! This program is copyright (C) 1992 Nathan Sidwell. This software and documentation
  705. ! is in the public domain. Permission is granted to distribute and compile
  706. ! verbatim copies of this software for non-commercial, non-profit use,
  707. ! without fee. The software may be modified, provided that both the above copyright
  708. ! notice and this permission notice appear.
  709. ! No guarantee is given as to the robustness or suitability of this
  710. ! software for your computer.
  711. ! Nathan Sidwell  INMOS UK |                 | nathan@inmos.co.uk       DoD#0390
  712. ! *****************************************************************************/
  713. ! /*}}}*/
  714. X  #include "xmris.h"
  715. X  /*{{{  APPLE *apple_search(x, y, width, height, found)*/
  716. X  extern APPLE *apple_search FUNCARGLIST((x, y, width, height, found))
  717. --- 1,4 ----
  718. ! /* (C) 1992 Nathan Sidwell */
  719. X  #include "xmris.h"
  720. X  /*{{{  APPLE *apple_search(x, y, width, height, found)*/
  721. X  extern APPLE *apple_search FUNCARGLIST((x, y, width, height, found))
  722. ***************
  723. *** 67,73 ****
  724. X        unsigned  i;
  725. X        APPLE     *aptr;
  726. X        int       px, py;
  727. !             
  728. X        px = mptr->pixel.x;
  729. X        py = mptr->pixel.y;
  730. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  731. --- 50,56 ----
  732. X        unsigned  i;
  733. X        APPLE     *aptr;
  734. X        int       px, py;
  735. !                         
  736. X        px = mptr->pixel.x;
  737. X        py = mptr->pixel.y;
  738. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  739. ***************
  740. *** 130,136 ****
  741. X      CELL      *cptr;
  742. X            
  743. X      aptr = apple_search(x, y,
  744. !         width + CELL_WIDTH / 2, 2 * (CELL_HEIGHT - VEL_Y), found);
  745. X      if(!aptr)
  746. X        break;
  747. X      else if(aptr->state > 3 || aptr->push ||
  748. --- 113,119 ----
  749. X      CELL      *cptr;
  750. X            
  751. X      aptr = apple_search(x, y,
  752. !         (unsigned)width + CELL_WIDTH / 2, 2 * (CELL_HEIGHT - VEL_Y), found);
  753. X      if(!aptr)
  754. X        break;
  755. X      else if(aptr->state > 3 || aptr->push ||
  756. ***************
  757. *** 150,160 ****
  758. X          final = aptr;
  759. X          found |= 1 << (aptr - apple.list);
  760. X          width = aptr->pixel.x - x + 1;
  761. X          aptr->maypush = width;
  762. X          x = aptr->pixel.x - CELL_WIDTH + 1 - width;
  763. X          if(aptr->state != 2 && aptr->offset.y > 0 &&
  764. X          apple_search(x, aptr->pixel.y - aptr->offset.y +
  765. !         CELL_HEIGHT, width, aptr->offset.y, found))
  766. X            {
  767. X          stop = 1;
  768. X          break;
  769. --- 133,144 ----
  770. X          final = aptr;
  771. X          found |= 1 << (aptr - apple.list);
  772. X          width = aptr->pixel.x - x + 1;
  773. +         assert(width >= 0);
  774. X          aptr->maypush = width;
  775. X          x = aptr->pixel.x - CELL_WIDTH + 1 - width;
  776. X          if(aptr->state != 2 && aptr->offset.y > 0 &&
  777. X          apple_search(x, aptr->pixel.y - aptr->offset.y +
  778. !         CELL_HEIGHT, (unsigned)width, (unsigned)aptr->offset.y, found))
  779. X            {
  780. X          stop = 1;
  781. X          break;
  782. ***************
  783. *** 173,179 ****
  784. X            unsigned  i;
  785. X            MONSTER   *mptr;
  786. X            MONSTER   *list;
  787. !                 
  788. X            list = NULL;
  789. X            for(mptr = monster.list, i = monster.monsters; i--; mptr++)
  790. X          {
  791. --- 157,163 ----
  792. X            unsigned  i;
  793. X            MONSTER   *mptr;
  794. X            MONSTER   *list;
  795. !                             
  796. X            list = NULL;
  797. X            for(mptr = monster.list, i = monster.monsters; i--; mptr++)
  798. X          {
  799. ***************
  800. *** 195,201 ****
  801. X                else if(mptr->type == 0)
  802. X              {
  803. X                CELL      *cptr;
  804. !                 
  805. X                cptr = BOARDCELL(mptr->cell.x, mptr->cell.y);
  806. X                if(cptr->depths[2] <= mptr->offset.x - width ||
  807. X                    ((cptr->depths[1] || cptr->depths[0]) &&
  808. --- 179,185 ----
  809. X                else if(mptr->type == 0)
  810. X              {
  811. X                CELL      *cptr;
  812. !                             
  813. X                cptr = BOARDCELL(mptr->cell.x, mptr->cell.y);
  814. X                if(cptr->depths[2] <= mptr->offset.x - width ||
  815. X                    ((cptr->depths[1] || cptr->depths[0]) &&
  816. ***************
  817. *** 221,227 ****
  818. X          {
  819. X            unsigned  i;
  820. X            APPLE     *aptr;
  821. !                   
  822. X            for(aptr = apple.list, i = apple.apples; i--; aptr++, found >>= 1)
  823. X          if(found & 1)
  824. X            aptr->push = -aptr->maypush;
  825. --- 205,211 ----
  826. X          {
  827. X            unsigned  i;
  828. X            APPLE     *aptr;
  829. !                               
  830. X            for(aptr = apple.list, i = apple.apples; i--; aptr++, found >>= 1)
  831. X          if(found & 1)
  832. X            aptr->push = -aptr->maypush;
  833. ***************
  834. *** 251,257 ****
  835. X      APPLE       *aptr;
  836. X            
  837. X      aptr = apple_search(x - CELL_WIDTH / 2, y,
  838. !         width + CELL_WIDTH / 2, 2 * (CELL_HEIGHT - VEL_Y), found);
  839. X      if(!aptr)
  840. X        break;
  841. X      else if(aptr->state > 3 || aptr->push ||
  842. --- 235,241 ----
  843. X      APPLE       *aptr;
  844. X            
  845. X      aptr = apple_search(x - CELL_WIDTH / 2, y,
  846. !         (unsigned)width + CELL_WIDTH / 2, 2 * (CELL_HEIGHT - VEL_Y), found);
  847. X      if(!aptr)
  848. X        break;
  849. X      else if(aptr->state > 3 || aptr->push ||
  850. ***************
  851. *** 271,281 ****
  852. X          final = aptr;
  853. X          found |= 1 << (aptr - apple.list);
  854. X          width -= aptr->pixel.x - x;
  855. X          aptr->maypush = width;
  856. X          x = aptr->pixel.x + CELL_WIDTH;
  857. X          if(aptr->state != 2 && aptr->offset.y > 0 &&
  858. X          apple_search(x, aptr->pixel.y - aptr->offset.y +
  859. !         CELL_HEIGHT, width, aptr->offset.y, found))
  860. X            {
  861. X          stop = 1;
  862. X          break;
  863. --- 255,266 ----
  864. X          final = aptr;
  865. X          found |= 1 << (aptr - apple.list);
  866. X          width -= aptr->pixel.x - x;
  867. +         assert(width >= 0);
  868. X          aptr->maypush = width;
  869. X          x = aptr->pixel.x + CELL_WIDTH;
  870. X          if(aptr->state != 2 && aptr->offset.y > 0 &&
  871. X          apple_search(x, aptr->pixel.y - aptr->offset.y +
  872. !         CELL_HEIGHT, (unsigned)width, (unsigned)aptr->offset.y, found))
  873. X            {
  874. X          stop = 1;
  875. X          break;
  876. ***************
  877. *** 340,346 ****
  878. X        {
  879. X          unsigned  i;
  880. X          APPLE     *aptr;
  881. !                   
  882. X          for(aptr = apple.list, i = apple.apples; i--; aptr++, found >>= 1)
  883. X            if(found & 1)
  884. X          aptr->push = aptr->maypush;
  885. --- 325,331 ----
  886. X        {
  887. X          unsigned  i;
  888. X          APPLE     *aptr;
  889. !                               
  890. X          for(aptr = apple.list, i = apple.apples; i--; aptr++, found >>= 1)
  891. X            if(found & 1)
  892. X          aptr->push = aptr->maypush;
  893. ***************
  894. *** 377,383 ****
  895. X      {
  896. X        unsigned  i;
  897. X        APPLE     *aptr;
  898. !               
  899. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  900. X          {
  901. X            if(aptr->pixel.x - mptr->pixel.x <= CELL_WIDTH / 2 &&
  902. --- 362,368 ----
  903. X      {
  904. X        unsigned  i;
  905. X        APPLE     *aptr;
  906. !                           
  907. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  908. X          {
  909. X            if(aptr->pixel.x - mptr->pixel.x <= CELL_WIDTH / 2 &&
  910. ***************
  911. *** 399,405 ****
  912. X      {
  913. X        unsigned  i;
  914. X        APPLE     *aptr;
  915. !             
  916. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  917. X          {
  918. X            if(aptr->pixel.x - mptr->pixel.x <= CELL_WIDTH / 2 &&
  919. --- 384,390 ----
  920. X      {
  921. X        unsigned  i;
  922. X        APPLE     *aptr;
  923. !                         
  924. X        for(aptr = apple.list, i = apple.apples; i--; aptr++)
  925. X          {
  926. X            if(aptr->pixel.x - mptr->pixel.x <= CELL_WIDTH / 2 &&
  927. ***************
  928. *** 502,508 ****
  929. X          add_score(squish_scores[aptr->monsters >= SQUISH_SCORES ?
  930. X          SQUISH_SCORES - 1 : aptr->monsters],
  931. X          aptr->pixel.x + CELL_WIDTH / 2,
  932. !         aptr->pixel.y + apple_sizes[4].size.y / 2);
  933. X        aptr->state = 6;
  934. X      }
  935. X        else
  936. --- 487,493 ----
  937. X          add_score(squish_scores[aptr->monsters >= SQUISH_SCORES ?
  938. X          SQUISH_SCORES - 1 : aptr->monsters],
  939. X          aptr->pixel.x + CELL_WIDTH / 2,
  940. !         aptr->pixel.y + (int)(apple_sizes[4].size.y / 2));
  941. X        aptr->state = 6;
  942. X      }
  943. X        else
  944. ***************
  945. *** 544,550 ****
  946. X          if(aptr->state == 2)
  947. X            {
  948. X          MONSTER   *mptr;
  949. !                   
  950. X          aptr->count = APPLE_ACC;
  951. X          aptr->distance = 0;
  952. X          if(!cptr[0].visit)
  953. --- 529,535 ----
  954. X          if(aptr->state == 2)
  955. X            {
  956. X          MONSTER   *mptr;
  957. !                               
  958. X          aptr->count = APPLE_ACC;
  959. X          aptr->distance = 0;
  960. X          if(!cptr[0].visit)
  961. ***************
  962. *** 571,581 ****
  963. X              aptr->state = 0;
  964. X              aptr->list = NULL;
  965. X            }
  966. !         for(mptr = aptr->list; mptr; mptr = mptr->list)
  967. X            {
  968. !             mptr->apple = aptr;
  969. !             aptr->monsters++;
  970. !             aptr->distance = APPLE_FALL_SPLIT;
  971. X            }
  972. X            }
  973. X          else
  974. --- 556,571 ----
  975. X              aptr->state = 0;
  976. X              aptr->list = NULL;
  977. X            }
  978. !         if(aptr->state == 2)
  979. X            {
  980. !             for(mptr = aptr->list; mptr; mptr = mptr->list)
  981. !               {
  982. !             mptr->apple = aptr;
  983. !             aptr->monsters++;
  984. !             aptr->distance = APPLE_FALL_SPLIT;
  985. !               }
  986. !             panic_monsters(aptr->cell.x, aptr->cell.y,
  987. !             BOARDCELL(aptr->cell.x, aptr->cell.y));
  988. X            }
  989. X            }
  990. X          else
  991. ***************
  992. *** 588,594 ****
  993. X          unsigned  j;
  994. X          APPLE     *optr;
  995. X          COORD     pixel;
  996. !                 
  997. X          /*{{{  horizontal movement*/
  998. X          if(aptr->push)
  999. X            {
  1000. --- 578,584 ----
  1001. X          unsigned  j;
  1002. X          APPLE     *optr;
  1003. X          COORD     pixel;
  1004. !                             
  1005. X          /*{{{  horizontal movement*/
  1006. X          if(aptr->push)
  1007. X            {
  1008. ***************
  1009. *** 633,641 ****
  1010. X          /*{{{  bashes into another?*/
  1011. X          {
  1012. X            int       x, y;
  1013. !                 
  1014. X            x = aptr->pixel.x - CELL_WIDTH;
  1015. !           y = pixel.y + aptr->offset.y;
  1016. X            for(optr = apple.list, j = apple.apples; j--; optr++)
  1017. X          if(optr != aptr &&
  1018. X              optr->pixel.x - x > 0 &&
  1019. --- 623,631 ----
  1020. X          /*{{{  bashes into another?*/
  1021. X          {
  1022. X            int       x, y;
  1023. !                             
  1024. X            x = aptr->pixel.x - CELL_WIDTH;
  1025. !           y = aptr->pixel.y;
  1026. X            for(optr = apple.list, j = apple.apples; j--; optr++)
  1027. X          if(optr != aptr &&
  1028. X              optr->pixel.x - x > 0 &&
  1029. ***************
  1030. *** 660,685 ****
  1031. X          aptr->state = 3;
  1032. X          aptr->count = APPLE_SPLIT_DELAY;
  1033. X            }
  1034. !         else if(aptr->offset.y >= cptr[0].depths[1])
  1035. X            {
  1036. !         if(drop_apple(aptr, cptr))
  1037. !           /*EMPTY*/;
  1038. !         else if(aptr->distance >= APPLE_FALL_SPLIT ||
  1039. !             aptr->cell.y == CELLS_DOWN - 1)
  1040. !           /*{{{  fell too far*/
  1041. X            {
  1042. !             aptr->state = 3;
  1043. !             aptr->count = APPLE_SPLIT_DELAY;
  1044. X              aptr->offset.y = cptr[0].depths[1];
  1045. X            }
  1046. X            /*}}}*/
  1047. X          else
  1048. !           /*{{{  only fell a short way*/
  1049. !           {
  1050. !             aptr->state = 0;
  1051. !             aptr->offset.y = cptr[0].depths[1];
  1052. !           }
  1053. !           /*}}}*/
  1054. X            }
  1055. X          else if(aptr->offset.y > 0 && cptr[CELL_STRIDE].depths[0])
  1056. X            /*{{{  fall into next cell*/
  1057. --- 650,677 ----
  1058. X          aptr->state = 3;
  1059. X          aptr->count = APPLE_SPLIT_DELAY;
  1060. X            }
  1061. !         else if(aptr->offset.y > cptr[0].depths[1])
  1062. X            {
  1063. !         CELL      *nptr;
  1064. !         
  1065. !         nptr = drop_apple(aptr, cptr);
  1066. !         if(!nptr)
  1067. !           /*{{{  stop falling*/
  1068. X            {
  1069. !             aptr->pixel.y += cptr[0].depths[1] - aptr->offset.y;
  1070. X              aptr->offset.y = cptr[0].depths[1];
  1071. +             if(aptr->distance > APPLE_FALL_SPLIT ||
  1072. +             aptr->cell.y == CELLS_DOWN - 1)
  1073. +               {
  1074. +             aptr->state = 3;
  1075. +             aptr->count = APPLE_SPLIT_DELAY;
  1076. +               }
  1077. +             else
  1078. +               aptr->state = 0;
  1079. X            }
  1080. X            /*}}}*/
  1081. X          else
  1082. !           panic_monsters(aptr->cell.x, aptr->cell.y, nptr);
  1083. X            }
  1084. X          else if(aptr->offset.y > 0 && cptr[CELL_STRIDE].depths[0])
  1085. X            /*{{{  fall into next cell*/
  1086. ***************
  1087. *** 686,692 ****
  1088. X            {
  1089. X          aptr->cell.y += 1;
  1090. X          aptr->offset.y -= CELL_HEIGHT + GAP_HEIGHT;
  1091. -         pixel.y += CELL_HEIGHT + GAP_HEIGHT;
  1092. X            }
  1093. X            /*}}}*/
  1094. X          /*{{{  crushed someone?*/
  1095. --- 678,683 ----
  1096. ***************
  1097. *** 694,702 ****
  1098. X            unsigned  i;
  1099. X            MONSTER   *mptr;
  1100. X            int       x, y;
  1101. !                   
  1102. !           x = pixel.x + aptr->offset.x - CELL_WIDTH + VEL_X;
  1103. !           y = pixel.y + aptr->offset.y - APPLE_VEL_Y;
  1104. X            for(mptr = monster.list, i = monster.monsters; i--; mptr++)
  1105. X          if(!mptr->apple && !mptr->shot && mptr->type != 5 &&
  1106. X              mptr->pixel.x - x > 0 &&
  1107. --- 685,693 ----
  1108. X            unsigned  i;
  1109. X            MONSTER   *mptr;
  1110. X            int       x, y;
  1111. !                               
  1112. !           x = aptr->pixel.x - CELL_WIDTH + VEL_X;
  1113. !           y = aptr->pixel.y - APPLE_VEL_Y;
  1114. X            for(mptr = monster.list, i = monster.monsters; i--; mptr++)
  1115. X          if(!mptr->apple && !mptr->shot && mptr->type != 5 &&
  1116. X              mptr->pixel.x - x > 0 &&
  1117. ***************
  1118. *** 731,737 ****
  1119. X            }
  1120. X          }
  1121. X          /*}}}*/
  1122. -         aptr->pixel.y = pixel.y + aptr->offset.y;
  1123. X          break;
  1124. X        }
  1125. X        /*}}}*/
  1126. --- 722,727 ----
  1127. ***************
  1128. *** 745,751 ****
  1129. X            add_score(squish_scores[aptr->monsters >= SQUISH_SCORES ?
  1130. X                SQUISH_SCORES - 1 : aptr->monsters],
  1131. X                aptr->pixel.x + CELL_WIDTH / 2,
  1132. !               aptr->pixel.y + apple_sizes[4].size.y / 2);
  1133. X            }
  1134. X          break;
  1135. X        /*}}}*/
  1136. --- 735,741 ----
  1137. X            add_score(squish_scores[aptr->monsters >= SQUISH_SCORES ?
  1138. X                SQUISH_SCORES - 1 : aptr->monsters],
  1139. X                aptr->pixel.x + CELL_WIDTH / 2,
  1140. !               aptr->pixel.y + (int)(apple_sizes[4].size.y / 2));
  1141. X            }
  1142. X          break;
  1143. X        /*}}}*/
  1144. ***************
  1145. *** 772,777 ****
  1146. --- 762,802 ----
  1147. X        aptr->waspushed = aptr->push;
  1148. X        aptr->push = 0;
  1149. X      }
  1150. +   return;
  1151. + }
  1152. + /*}}}*/
  1153. + /*{{{  void panic_monsters(cx, cy, cptr)*/
  1154. + extern void panic_monsters FUNCARGLIST((cx, cy, cptr))
  1155. + int       cx  FUNCARGSEP
  1156. + int       cy  FUNCARGSEP
  1157. + CELL      *cptr FUNCARGTERM
  1158. + /* 
  1159. +  * looks underneath a newly falling apple and
  1160. +  * sees if there are any normal monsters to panic
  1161. +  */
  1162. + {
  1163. +   MONSTER   *mptr;
  1164. +   unsigned  count;
  1165. +   
  1166. +   for(mptr = &monster.list[1], count = monster.monsters - 1; count--; mptr++)
  1167. +     if(mptr->apple || mptr->shot || mptr->type || mptr->panic)
  1168. +       /*EMPTY*/;
  1169. +     else if(mptr->cell.x != cx || mptr->cell.y <= cy)
  1170. +       /*EMPTY*/;
  1171. +     else if((mptr->offset.x < 0 && mptr->dir == 2) ||
  1172. +     (mptr->offset.y > 0 && mptr->dir == 3))
  1173. +       /*EMPTY*/;
  1174. +     else
  1175. +       {
  1176. +     CELL      *ptr;
  1177. +     int       count;
  1178. +     
  1179. +     for(ptr = cptr, count = mptr->cell.y - cy; count--; ptr += CELL_STRIDE)
  1180. +       if(!ptr->depths[1] || !ptr[CELL_STRIDE].visit)
  1181. +         break;
  1182. +     if(count < 0)
  1183. +       mptr->panic = 1;
  1184. +       }
  1185. X    return;
  1186. X  }
  1187. X  /*}}}*/
  1188. Common subdirectories: exp.v1.01/bitmaps and exp.v2.00/bitmaps
  1189. diff -c -r exp.v1.01/create.c exp.v2.00/create.c
  1190. *** exp.v1.01/create.c    Fri Jul 24 09:56:03 1992
  1191. --- exp.v2.00/create.c    Fri Jul 24 13:43:09 1992
  1192. ***************
  1193. *** 1,21 ****
  1194. ! /*{{{  (C) 1992 Nathan Sidwell*/
  1195. ! /*****************************************************************************
  1196. !             X M R I S V1.01
  1197. !             ---------------
  1198. !             (C) 1992 Nathan Sidwell
  1199. ! This program is copyright (C) 1992 Nathan Sidwell. This software and documentation
  1200. ! is in the public domain. Permission is granted to distribute and compile
  1201. ! verbatim copies of this software for non-commercial, non-profit use,
  1202. ! without fee. The software may be modified, provided that both the above copyright
  1203. ! notice and this permission notice appear.
  1204. ! No guarantee is given as to the robustness or suitability of this
  1205. ! software for your computer.
  1206. ! Nathan Sidwell  INMOS UK |                 | nathan@inmos.co.uk       DoD#0390
  1207. ! *****************************************************************************/
  1208. ! /*}}}*/
  1209. X  #define EXTERN
  1210. X  #include "xmris.h"
  1211. X  /*{{{  bitmaps*/
  1212. --- 1,4 ----
  1213. ! /* (C) 1992 Nathan Sidwell */
  1214. X  #define EXTERN
  1215. X  #include "xmris.h"
  1216. X  /*{{{  bitmaps*/
  1217. ***************
  1218. *** 165,170 ****
  1219. --- 148,162 ----
  1220. X    unsigned long const *bgp;   /* background colour pointer */
  1221. X  } CONTEXT;
  1222. X  /*}}}*/
  1223. + /*{{{  typedef struct Default*/
  1224. + typedef struct Default
  1225. + /* Xdefault definer */
  1226. + {
  1227. +   char const *name;   /* xdefault field */
  1228. +   int         type;   /* type */
  1229. +   char const **text;  /* text pointer */
  1230. + } DEFAULT;
  1231. + /*}}}*/
  1232. X  /*{{{  gcsdefine*/
  1233. X  static CONTEXT gcsdefine[GCS] =
  1234. X  {
  1235. ***************
  1236. *** 192,376 ****
  1237. X    {"iconic",  1, &flags.iconic,   "Start iconic"},
  1238. X    {"mris",    0, &flags.gender,   "Male version"},
  1239. X    {"msit",    1, &flags.gender,   "Female version"},
  1240. X    {NULL}
  1241. X  };
  1242. X  /*}}}*/
  1243. X  /*{{{  SPRITE sprites[] =*/
  1244. X  SPRITE sprites[] =
  1245. X  {
  1246. X    /*{{{  2:center masks (oblong, rect)*/
  1247. !   {NULL, oblong_bits, oblong_width, oblong_height, {CELL_WIDTH, CELL_HEIGHT}},
  1248. !   {NULL, rect_bits, rect_width, rect_height, {CELL_WIDTH, CELL_HEIGHT}},
  1249. X    /*}}}*/
  1250. X    /*{{{  2:munch masks (tb,lr)*/
  1251. !   {NULL, munchtb_bits, munchtb_width, munchtb_height, {CELL_WIDTH, MUNCH_HEIGHT}},
  1252. !   {NULL, munchlr_bits, munchlr_width, munchlr_height, {MUNCH_WIDTH, CELL_HEIGHT}},
  1253. X    /*}}}*/
  1254. X    /*{{{  2:edge masks (tb, lr)*/
  1255. !   {NULL, edgetb_bits, edgetb_width, edgetb_height, {GAP_WIDTH * 5, EDGE_HEIGHT}},
  1256. !   {NULL, edgelr_bits, edgelr_width, edgelr_height, {EDGE_WIDTH, GAP_HEIGHT * 5}},
  1257. X    /*}}}*/
  1258. X    /*{{{  4:fills (0,1,2,3)*/
  1259. !   {fill0_bits, NULL, fill0_width, fill0_height, {0, 0}},
  1260. !   {fill1_bits, NULL, fill1_width, fill1_height, {0, 0}},
  1261. !   {fill2_bits, NULL, fill2_width, fill2_height, {0, 0}},
  1262. !   {fill3_bits, NULL, fill3_width, fill3_height, {0, 0}},
  1263. X    /*}}}*/
  1264. X    /*{{{  1:digits (0,1,2,3,4,5,6,7,8,9,' ')*/
  1265. !   {digits_bits, digitsm_bits, digits_width, digits_height, {DIGIT_WIDTH * 11, DIGIT_HEIGHT}},
  1266. X    /*}}}*/
  1267. X    /*{{{  1:cherry*/
  1268. !   {cherry_bits, cherrym_bits, cherry_width, cherry_height, {CELL_WIDTH, CELL_HEIGHT}},
  1269. X    /*}}}*/
  1270. X    /*{{{  1:den*/
  1271. !   {den_bits, denm_bits, den_width, den_height, {CELL_WIDTH, CELL_HEIGHT}},
  1272. X    /*}}}*/
  1273. X    /*{{{  1:ball*/
  1274. !   {ball_bits, ball_bits, ball_width, ball_height, {BALL_WIDTH, BALL_HEIGHT}},
  1275. X    /*}}}*/
  1276. X    /*{{{  6:apples (apple, rock, apple, split, decay, rot)*/
  1277. !   {apple_bits, applem_bits, apple_width, apple_height, {CELL_WIDTH, CELL_HEIGHT}},
  1278. !   {rock_bits,  rockm_bits,  rock_width,  rock_height,  {CELL_WIDTH, CELL_HEIGHT}},
  1279. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_APPLE, 0},
  1280. !   {split_bits, splitm_bits, split_width, split_height, {CELL_WIDTH, CELL_HEIGHT}},
  1281. !   {decay_bits, decaym_bits, decay_width, decay_height, {DECAY_WIDTH, DECAY_HEIGHT}},
  1282. !   {rot_bits,   rotm_bits,   rot_width,   rot_height, {ROT_WIDTH, ROT_HEIGHT}},
  1283. X    /*}}}*/
  1284. X    /*{{{  2:extra (bold, faint)*/
  1285. !   {xtrbold_bits,  xtrbold_bits, xtrbold_width,  xtrbold_height, {CELL_WIDTH / 2 * 5, CELL_HEIGHT / 2}},
  1286. !   {xtrfaint_bits, xtrbold_bits, xtrfaint_width, xtrfaint_height, {CELL_WIDTH / 2 * 5, CELL_HEIGHT / 2}},
  1287. X    /*}}}*/
  1288. X    /*{{{  2:xtra source*/
  1289. !   {xtra1_bits, xtra1m_bits, xtra1_width, xtra1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1290. !   {xtra2_bits, xtra2m_bits, xtra2_width, xtra2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1291. X    /*}}}*/
  1292. X    /*{{{  12:normal (ul, dr, l, r, ur, dl)*/
  1293. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 8, 1},
  1294. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 9, 1},
  1295. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 8, 2},
  1296. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 9, 2},
  1297. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 6, 1},
  1298. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 7, 1},
  1299. !   {normrt1_bits, normrt1m_bits, normrt1_width, normrt1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1300. !   {normrt2_bits, normrt2m_bits, normrt2_width, normrt2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1301. !   {normup1_bits, normup1m_bits, normup1_width, normup1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1302. !   {normup2_bits, normup2m_bits, normup2_width, normup1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1303. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 0, 2},
  1304. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_NORMAL + 1, 2},
  1305. X    /*}}}*/
  1306. X    /*{{{  12:muncher (ul, dr, l, r, ur, dl)*/
  1307. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 8, 1},
  1308. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 9, 1},
  1309. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 8, 2},
  1310. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 9, 2},
  1311. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 6, 1},
  1312. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 7, 1},
  1313. !   {mnchrt1_bits, mnchrt1m_bits, mnchrt1_width, mnchrt1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1314. !   {mnchrt2_bits, mnchrt2m_bits, mnchrt2_width, mnchrt2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1315. !   {mnchup1_bits, mnchup1m_bits, mnchup1_width, mnchup1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1316. !   {mnchup2_bits, mnchup2m_bits, mnchup2_width, mnchup2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1317. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 0, 2},
  1318. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_MUNCHER + 1, 2},
  1319. X    /*}}}*/
  1320. X    /*{{{  12:xtra (ul, dr, l, r, ur, dl)*/
  1321. !   {xtra1_bits, xtra1m_bits, xtra1_width, xtra1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1322. !   {xtra2_bits, xtra2m_bits, xtra2_width, xtra2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1323. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 0, 0},
  1324. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 1, 0},
  1325. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 0, 0},
  1326. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 1, 0},
  1327. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 0, 0},
  1328. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 1, 0},
  1329. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 0, 0},
  1330. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 1, 0},
  1331. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 0, 0},
  1332. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_XTRA + 1, 0},
  1333. X    /*}}}*/
  1334. X    /*{{{  12:drone (ul, dr, l, r, ur, dl)*/
  1335. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 8, 1},
  1336. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 9, 1},
  1337. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 8, 2},
  1338. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 9, 2},
  1339. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 6, 1},
  1340. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 7, 1},
  1341. !   {dronrt1_bits, dronrt1m_bits, dronrt1_width, dronrt1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1342. !   {dronrt2_bits, dronrt2m_bits, dronrt2_width, dronrt2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1343. !   {dronup1_bits, dronup1m_bits, dronup1_width, dronup1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1344. !   {dronup2_bits, dronup2m_bits, dronup2_width, dronup2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1345. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 0, 2},
  1346. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_DRONE + 1, 2},
  1347. X    /*}}}*/
  1348. X    /*{{{  12:player (ul, dr, l, r, ur, dl)*/
  1349. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 8, 1},
  1350. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 9, 1},
  1351. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 8, 2},
  1352. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 9, 2},
  1353. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 6, 1},
  1354. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 7, 1},
  1355. !   {plyrrt1_bits, plyrrt1m_bits, plyrrt1_width, plyrrt1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1356. !   {plyrrt2_bits, plyrrt2m_bits, plyrrt2_width, plyrrt2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1357. !   {plyrup1_bits, plyrup1m_bits, plyrup1_width, plyrup1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1358. !   {plyrup2_bits, plyrup2m_bits, plyrup2_width, plyrup2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1359. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 0, 2},
  1360. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 1, 2},
  1361. X    /*}}}*/
  1362. X    /*{{{  4:player push (l, r)*/
  1363. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER_PUSH + 2, 1},
  1364. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER_PUSH + 3, 1},
  1365. !   {plyrps1_bits, plyrps1m_bits, plyrps1_width, plyrps1_height, {CELL_WIDTH, CELL_HEIGHT}},
  1366. !   {plyrps2_bits, plyrps2m_bits, plyrps2_width, plyrps2_height, {CELL_WIDTH, CELL_HEIGHT}},
  1367. X    /*}}}*/
  1368. X    /*{{{  2:player dead (l, r)*/
  1369. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 4, 2},
  1370. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_PLAYER + 6, 2},
  1371. X    /*}}}*/
  1372. X    /*{{{  10:squished*/
  1373. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_SQUISHED + 1, 1},
  1374. !   {normsq_bits, normsqm_bits, normsq_width, normsq_height, {CELL_WIDTH, CELL_HEIGHT / 4}},
  1375. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_SQUISHED + 3, 1},
  1376. !   {mnchsq_bits, mnchsqm_bits, mnchsq_width, mnchsq_height, {CELL_WIDTH, CELL_HEIGHT / 4}},
  1377. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_SQUISHED + 5, 0},
  1378. !   {xtrasq_bits, xtrasqm_bits, xtrasq_width, xtrasq_height, {CELL_WIDTH, CELL_HEIGHT / 4}},
  1379. !   {NULL, NULL, 0, 0, {0, 0}, SPRITE_SQUISHED + 7, 1},
  1380. SHAR_EOF
  1381. true || echo 'restore of patch.v2.00 failed'
  1382. fi
  1383. echo 'End of  part 1'
  1384. echo 'File patch.v2.00 is continued in part 2'
  1385. echo 2 > _shar_seq_.tmp
  1386. exit 0
  1387. -- 
  1388. Senior Systems Scientist        mail: dcmartin@msi.com
  1389. Molecular Simulations, Inc.        uucp: uunet!dcmartin
  1390. 796 North Pastoria Avenue        at&t: 408/522-9236
  1391. Sunnyvale, California 94086        fax: 408/732-0831
  1392.