home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-082 < prev    next >
Encoding:
Text File  |  1995-06-07  |  62.6 KB  |  1,664 lines  |  [TEXT/R*ch]

  1. C.S.M.P. Digest             Wed, 08 Feb 95       Volume 3 : Issue 82
  2.  
  3. Today's Topics:
  4.  
  5.         Bit Blitting vs. CopyBits
  6.         File system persistence
  7.         HandAndHand Question
  8.         MacOS  SDK quick impressions
  9.         NIM Routines that Move or Purge Memory
  10.         Simulating Drag-to-Trash
  11.         Sprite Animation Toolkit 2.3a2 available
  12.         StandardGetFile behavior
  13.         What causes "odd address 0x40be14" error?
  14.         Where can I find some game source code?
  15.  
  16.  
  17.  
  18. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  19. (pottier@clipper.ens.fr).
  20.  
  21. The digest is a collection of article threads from the internet newsgroup
  22. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  23. regularly and want an archive of the discussions.  If you don't know what a
  24. newsgroup is, you probably don't have access to it.  Ask your systems
  25. administrator(s) for details.  If you don't have access to news, you may
  26. still be able to post messages to the group by using a mail server like
  27. anon.penet.fi (mail help@anon.penet.fi for more information).
  28.  
  29. Each issue of the digest contains one or more sets of articles (called
  30. threads), with each set corresponding to a 'discussion' of a particular
  31. subject.  The articles are not edited; all articles included in this digest
  32. are in their original posted form (as received by our news server at
  33. nef.ens.fr).  Article threads are not added to the digest until the last
  34. article added to the thread is at least two weeks old (this is to ensure that
  35. the thread is dead before adding it to the digest).  Article threads that
  36. consist of only one message are generally not included in the digest.
  37.  
  38. The digest is officially distributed by two means, by email and ftp.
  39.  
  40. If you want to receive the digest by mail, send email to listserv@ens.fr
  41. with no subject and one of the following commands as body:
  42.     help                                Sends you a summary of commands
  43.     subscribe csmp-digest Your Name     Adds you to the mailing list
  44.     signoff csmp-digest                 Removes you from the list
  45. Once you have subscribed, you will automatically receive each new
  46. issue as it is created.
  47.  
  48. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  49. Questions related to the ftp site should be directed to
  50. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  51. digest are available there.
  52.  
  53. Also, the digests are available to WAIS users.  To search back issues
  54. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  55. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  56.  
  57.  
  58. -------------------------------------------------------
  59.  
  60. >From jpo6@po.cwru.edu (Jared O'Neal)
  61. Subject: Bit Blitting vs. CopyBits
  62. Date: Thu, 12 Jan 1995 12:22:20 +0000
  63. Organization: The Wonderful World of Weinerschnitzel!?!
  64.  
  65. I've found that CopyBits works quite fast in most instances, but now I'm
  66. beginning to wonder how it compares to well-written, custom bit blitters. 
  67. Is it worth the time and effort to write a custom blitter, or should I
  68. just stick with CopyBits?  
  69.  
  70. And off the subject, can anyone name a good book for learning 68000 assembly?
  71.  
  72. TIA!
  73.  
  74.  
  75. --jared
  76.  
  77.  
  78.  
  79. +++++++++++++++++++++++++++
  80.  
  81. >From kenlong@netcom.com (Ken Long)
  82. Date: Fri, 13 Jan 1995 02:30:09 GMT
  83. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  84.  
  85. Jared O'Neal (jpo6@po.cwru.edu) wrote:
  86. : I've found that CopyBits works quite fast in most instances, but now I'm
  87. : beginning to wonder how it compares to well-written, custom bit blitters. 
  88. : Is it worth the time and effort to write a custom blitter, or should I
  89. : just stick with CopyBits?  
  90.  
  91. You could just look at one that's already been written and compare them, 
  92. couldn't you?  That is, SpriteWorld has one in the source, that's called 
  93. from a menu item.
  94.  
  95. But i've seen a BIG difference in speed while running something on the 
  96. 68040/33mhz compared to the 68020/16mhz I'm using right now.  I'd assume 
  97. a PowerMac beats the '040, as well.  So, as far as getting stuff drawn 
  98. fast goes, there is a speed limit for user friendliness.  Some games that 
  99. a 46 year-old can handle just fine on my LC are just too damned fast on 
  100. the '040/33.  A 13 year-old high on caffine may be able to keep up, but 
  101. not me.
  102.  
  103. How fast is fast enough?
  104.  
  105. -Ken-
  106.  
  107.  
  108. +++++++++++++++++++++++++++
  109.  
  110. >From bb@lightside.com (Bob Bradley)
  111. Date: Thu, 12 Jan 1995 19:09:02 -0800
  112. Organization: SS Software Inc.
  113.  
  114. In article <jpo6-1201951222200001@b62449.student.cwru.edu>,
  115. jpo6@po.cwru.edu (Jared O'Neal) wrote:
  116.  
  117. > I've found that CopyBits works quite fast in most instances, but now I'm
  118. > beginning to wonder how it compares to well-written, custom bit blitters. 
  119. > Is it worth the time and effort to write a custom blitter, or should I
  120. > just stick with CopyBits?  
  121.  
  122. Just stick with CopyBits. The best way to go about it is to write
  123. everything using QuickDraw and get it working solidly. Then see if it's
  124. fast enough. If not, find out where you're spending the most time, and
  125. optimize. CopyBits is EXTREMELY fast considering what it does. It does
  126. everything for you and does it correctly. Unless you have a very specific
  127. case where you know almost everything about the machine and conditions it
  128. will be running under, it will be difficult to beat CopyBits.
  129.  
  130. +++++++++++++++++++++++++++
  131.  
  132. >From ingemar@lysator.liu.se (Ingemar Ragnemalm)
  133. Date: 13 Jan 1995 23:13:04 GMT
  134. Organization: (none)
  135.  
  136. jpo6@po.cwru.edu (Jared O'Neal) writes:
  137.  
  138. >I've found that CopyBits works quite fast in most instances, but now I'm
  139. >beginning to wonder how it compares to well-written, custom bit blitters. 
  140. >Is it worth the time and effort to write a custom blitter, or should I
  141. >just stick with CopyBits?  
  142.  
  143. For copying large areas, CopyBits is very hard to beat. For copying small
  144. areas, like sprites, a blitter makes a big difference.
  145.  
  146. I recommend that games have an option to select QuickDraw (CopyBits) or
  147. custom code. That way, users can just skip your blitter if it fails on
  148. some configuration.
  149.  
  150. --
  151. - -
  152. Ingemar Ragnemalm, PhD
  153. Image processing, Mac shareware games
  154. E-mail address: ingemar@isy.liu.se or ingemar@lysator.liu.se
  155.  
  156. +++++++++++++++++++++++++++
  157.  
  158. >From jmunkki@beta.hut.fi (Juri Munkki)
  159. Date: 20 Jan 1995 22:18:11 GMT
  160. Organization: Helsinki University of Technology
  161.  
  162. In article <3f7f12$fpc@info.radius.com> Steve Lemke <lemke@radius.com> writes:
  163. >bb@lightside.com (Bob Bradley) wrote:
  164. >One thing I recommend for people who insist on doing it the hard
  165. >way (that is, to write it themselves) is to include an OPTION for
  166. >the user to use CopyBits.  Writing directly to the screen is a bad
  167. >idea...  But if you must do it, be SURE to include the requisite
  168. >calls to ShieldCursor and ShowCursor (even if the cursor is not
  169. >visible).
  170.  
  171. It's even more important to call SwapMMUMode. ShieldCursor is also
  172. a good idea, but forgetting to call SwapMMUMode when you should will
  173. usually crash whereas forgetting to call ShieldCursor mostly causes
  174. screen update problems. Do both.
  175.  
  176. Having an option to use CopyBits is very nice and recommended when it
  177. is possible. From experience, I can tell that most people are not
  178. capable of writing 100% compatible code because they simply do not
  179. have the hardware to test all the possible configurations. On the
  180. other hand, I know that an experienced Mac programmer (like myself)
  181. can write code that is 99.999% compatible. (Unfortunately there
  182. are millions of Macs out there.)
  183.  
  184. CopyBits has bugs too...we found one in the latest version last month
  185. while trying to solve an obscure problem in our program. I found another
  186. one about nine months ago. Obscure stuff that only happens in thousands
  187. or millions of colors, but definitely bugs. (I guess I should dig up the
  188. bug reporter and send the 30-line program that demonstrates the new one
  189. we found... that one was good enough for a "Develop" puzzle page.)
  190.  
  191. -- 
  192.   Juri Munkki                   There ain't no such thing as a shareware lunch.
  193.  jmunkki@hut.fi                         Windsurfing: Faster than the wind.
  194.  
  195. ---------------------------
  196.  
  197. >From jerry.halstead@valley.net (Jerry Halstead)
  198. Subject: File system persistence
  199. Date: Tue, 10 Jan 1995 10:42:39 -0500
  200. Organization: The Synclavier Company
  201.  
  202. Do devices/volumes have a unique identifier that is
  203. persistent after rebooting?
  204.  
  205. I'd like to make my application "remember" which window(s)
  206. the user had open and attempt to re-open them the next time the
  207. application is launched.  The windows in this case are listings
  208. of folder contents and could be from any mounted drive.
  209. How does the finder do this?  It remembers which folder is open
  210. and the location.  Is this an attribute of the info in the
  211. desktop database?
  212.  
  213. Here is where I have problems.  Most Mac hard drives come out
  214. of the box name "Macintosh HD".  Let's say the user just bought
  215. a new hard drive and now has two "Macintosh HD" named drives on
  216. thier desktop.  This rules out saving the volume name as a string.
  217. And, according to IM/TR, the vRefNum changes each time a volume is
  218. mounted, so it isn't useful.
  219.  
  220. What I need, it seems, is a unique ID that is persistent across
  221. boots (and accessible for appleshare volumes).  Combined with the
  222. volume name this seems like it would allow me to get an FSSpec
  223. for each volume, despite name conflicts.
  224.  
  225. Has anyone done this?  Any ideas?
  226.  
  227. -Jerry
  228.  
  229. -- 
  230.  Optimist:  "The glass is half full."
  231.  Pessimist: "The glass is half empty."
  232.  Engineer:  "The glass is twice as big as it needs to be."
  233.  Product Dev: "That's not the half we specified to be full"
  234.  Marketing:   "The other half will be filled by release."
  235.  
  236. +++++++++++++++++++++++++++
  237.  
  238. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  239. Date: Wed, 11 Jan 1995 10:29:39 +0800
  240. Organization: Department of Computer Science, University of Western Australia
  241.  
  242. In article <jerry.halstead-1001951042390001@jerome.valley.net>,
  243. jerry.halstead@valley.net (Jerry Halstead) wrote:
  244.  
  245. >Do devices/volumes have a unique identifier that is
  246. >persistent after rebooting?
  247.  
  248. Use aliases.  This is what they were designed for.
  249.  
  250. >How does the finder do this?
  251.  
  252. I just figured this out the other week and you definitely do not want to
  253. know (:  OK, so I'll tell you anyway... the Finder remembers the list of
  254. open folders on a volume by recording the dirID of the first folder in the
  255. volume header (right next to the dirID of the System Folder) and then
  256. chaining the list of folders behind that folder using frOpenChain field of
  257. the DXInfo of the folders.  Can anyone say *ugly!*
  258.  
  259. Share and Enjoy.
  260. --
  261. Quinn "The Eskimo!"  "Ah, so that's the secret,
  262.                       if only Captain Bipto had known.
  263.  
  264. +++++++++++++++++++++++++++
  265.  
  266. >From scaine@world.std.com (Steve Caine)
  267. Date: Wed, 11 Jan 1995 04:02:08 GMT
  268. Organization: The World @ Software Tool & Die
  269.  
  270. In article <jerry.halstead-1001951042390001@jerome.valley.net>,
  271. jerry.halstead@valley.net (Jerry Halstead) wrote:
  272.  
  273. > Do devices/volumes have a unique identifier that is
  274. > persistent after rebooting?
  275.  
  276. How about using the volume name and creation date? The latter is almost
  277. certain to unique among all mounted volumes (although it will change when
  278. the user reformats the drive).
  279.  
  280. --
  281. Steve Caine                            "Life is a comedy to those who think,
  282. North Atlantic Publishing Systems Inc.  and a tragedy to those who feel."
  283.  
  284. +++++++++++++++++++++++++++
  285.  
  286. >From jim_reekes@quickmail.apple.com (Jim Reekes)
  287. Date: Tue, 10 Jan 1995 21:37:16 GMT
  288. Organization: Apple Computer, Inc.
  289.  
  290. In article <jerry.halstead-1001951042390001@jerome.valley.net>,
  291. jerry.halstead@valley.net (Jerry Halstead) wrote:
  292.  
  293. > Do devices/volumes have a unique identifier that is
  294. > persistent after rebooting?
  295. > I'd like to make my application "remember" which window(s)
  296. > the user had open and attempt to re-open them the next time the
  297. > application is launched.  The windows in this case are listings
  298. > of folder contents and could be from any mounted drive.
  299. > How does the finder do this?  It remembers which folder is open
  300. > and the location.  Is this an attribute of the info in the
  301. > desktop database?
  302. > Here is where I have problems.  Most Mac hard drives come out
  303. > of the box name "Macintosh HD".  Let's say the user just bought
  304. > a new hard drive and now has two "Macintosh HD" named drives on
  305. > thier desktop.  This rules out saving the volume name as a string.
  306. > And, according to IM/TR, the vRefNum changes each time a volume is
  307. > mounted, so it isn't useful.
  308. > What I need, it seems, is a unique ID that is persistent across
  309. > boots (and accessible for appleshare volumes).  Combined with the
  310. > volume name this seems like it would allow me to get an FSSpec
  311. > for each volume, despite name conflicts.
  312. > Has anyone done this?  Any ideas?
  313.  
  314. You're suppose to be using aliases for this function. For pre-system 7
  315. users, you have to save the volume name, dirID, and file name.
  316.  
  317. -- 
  318. Jim Reekes, Polterzeitgeist |       QuickTime Products R&D
  319.                             |        Sound Manager Expert
  320. Apple Computer, Inc.        | "All opinions expressed are mine, and
  321. 2 Infinite Loop  MS 302-3KS |  do not necessarily represent those
  322. Cupertino, CA 95014         |  of my employer, Apple Computer Inc."
  323.  
  324. +++++++++++++++++++++++++++
  325.  
  326. >From Mark Williams <Mark@streetly.demon.co.uk>
  327. Date: Mon, 23 Jan 1995 08:30:05 GMT
  328. Organization: Streetly Software
  329.  
  330.  
  331. In article <jim_reekes-1001951437160001@reekes1.apple.com>, Jim Reekes writes:
  332.  
  333. > In article <jerry.halstead-1001951042390001@jerome.valley.net>,
  334. > jerry.halstead@valley.net (Jerry Halstead) wrote:
  335. > > Do devices/volumes have a unique identifier that is
  336. > > persistent after rebooting?
  337. > > 
  338. > > Here is where I have problems.  Most Mac hard drives come out
  339. > > of the box name "Macintosh HD".  Let's say the user just bought
  340. > > a new hard drive and now has two "Macintosh HD" named drives on
  341. > > thier desktop.  This rules out saving the volume name as a string.
  342. > > And, according to IM/TR, the vRefNum changes each time a volume is
  343. > > mounted, so it isn't useful.
  344. > > 
  345. > > What I need, it seems, is a unique ID that is persistent across
  346. > > boots (and accessible for appleshare volumes).  Combined with the
  347. > > volume name this seems like it would allow me to get an FSSpec
  348. > > for each volume, despite name conflicts.
  349. > > 
  350. > > Has anyone done this?  Any ideas?
  351. > You're suppose to be using aliases for this function. For pre-system 7
  352. > users, you have to save the volume name, dirID, and file name.
  353.  
  354. Aliases are best. If you _are_ stuck with pre-system 7 you could use
  355. the volume creation date to distinguish drives with the same name -
  356. in fact the creation date is going to be more reliable than the name. If
  357. you find a volume with the same cd but different name, you can bet its
  358. been renamed.
  359.  
  360. Mark Williams
  361.  
  362. ---------------------------
  363.  
  364. >From dougw@astro.as.arizona.edu (Doug Williams)
  365. Subject: HandAndHand Question
  366. Date: 21 Jan 1995 06:25:20 GMT
  367. Organization: University of Arizona, Tucson, AZ
  368.  
  369. Can someone answer what should be a simple question about
  370. HandAndHand?.  In the code below, if I take out the call to
  371. NewHandle(0), the HandAndHand call returns -109, which Macsbug says
  372. means that "Handle was NIL" -- no kidding.  My first question is
  373. whether a call to NewHandle(0) is a bad thing.  I seem to recall such
  374. a thread a while ago.  The second question is why do I need that call
  375. at all.  I (maybe naively) would assume that HandAndHand should be
  376. able to deal with any valid Handle.  Is there really such a huge
  377. difference between a NULL Handle and a zero length Handle?  Is my
  378. problem akin to declaring a pointer to a struct but not allocating the
  379. memory for the struct?
  380.  
  381.  
  382.         Handle  tempH = NULL;
  383.         Handle tempH2 = NULL;
  384.         Str255 tempStr = "\ptemp string";
  385.         OSErr myErr;
  386.  
  387.         PtrToHand(&tempStr[1], &tempH, tempStr[0]);
  388.         tempH2 = NewHandle(0);
  389.         myErr = HandAndHand(tempH, tempH2);
  390.  
  391.  
  392. -=-doug-=-
  393.  
  394. +++++++++++++++++++++++++++
  395.  
  396. >From Jaeger@fquest.com (Brian Stern)
  397. Date: 21 Jan 1995 15:48:50 GMT
  398. Organization: The University of Texas at Austin, Austin, Texas
  399.  
  400. In article <3fq9cg$s23@news.CCIT.Arizona.EDU>, dougw@astro.as.arizona.edu
  401. (Doug Williams) wrote:
  402.  
  403. < Can someone answer what should be a simple question about
  404. < HandAndHand?.  In the code below, if I take out the call to
  405. < NewHandle(0), the HandAndHand call returns -109, which Macsbug says
  406. < means that "Handle was NIL" -- no kidding.  My first question is
  407. < whether a call to NewHandle(0) is a bad thing.  I seem to recall such
  408. < a thread a while ago.  The second question is why do I need that call
  409. < at all.  I (maybe naively) would assume that HandAndHand should be
  410. < able to deal with any valid Handle.  Is there really such a huge
  411. < difference between a NULL Handle and a zero length Handle?  Is my
  412. < problem akin to declaring a pointer to a struct but not allocating the
  413. < memory for the struct?
  414. <         Handle  tempH = NULL;
  415. <         Handle tempH2 = NULL;
  416. <         Str255 tempStr = "\ptemp string";
  417. <         OSErr myErr;
  418. <         PtrToHand(&tempStr[1], &tempH, tempStr[0]);
  419. <         tempH2 = NewHandle(0);
  420. <         myErr = HandAndHand(tempH, tempH2);
  421. < -=-doug-=-
  422.  
  423. Calling NewHandle() with a length of zero is just fine.
  424.  
  425. HandAndHand requires two valid handles.  NULL is not a valid handle. 
  426. Handles ONLY come from the memory manager.  You have to request one.  Some
  427. toolbox calls request one for you, like in PtrToHand, or GetResource.  The
  428. following line allocates space for a handle but doesn't create one:
  429.  
  430.         Handle  tempH = NULL;
  431.  
  432. You need to understand that a Mac Handle is not just a pointer to a
  433. pointer.  It is a pointer to a Memory Manager data structure.  
  434.  
  435. Good luck,
  436.  
  437. -- 
  438. Brian  Stern  :-{)}
  439. Toolbox commando and Menu bard
  440. Jaeger@fquest.com
  441.  
  442. +++++++++++++++++++++++++++
  443.  
  444. >From Mark Williams <Mark@streetly.demon.co.uk>
  445. Date: Mon, 23 Jan 1995 08:55:01 GMT
  446. Organization: Streetly Software
  447.  
  448.  
  449. In article <3fq9cg$s23@news.CCIT.Arizona.EDU>, Doug Williams writes:
  450.  
  451. > Can someone answer what should be a simple question about
  452. > HandAndHand?.  In the code below, if I take out the call to
  453. > NewHandle(0), the HandAndHand call returns -109, which Macsbug says
  454. > means that "Handle was NIL" -- no kidding.  My first question is
  455. > whether a call to NewHandle(0) is a bad thing.  I seem to recall such
  456. > a thread a while ago.  The second question is why do I need that call
  457. > at all.  I (maybe naively) would assume that HandAndHand should be
  458. > able to deal with any valid Handle.  Is there really such a huge
  459. > difference between a NULL Handle and a zero length Handle?  Is my
  460. > problem akin to declaring a pointer to a struct but not allocating the
  461. > memory for the struct?
  462. >       Handle  tempH = NULL;
  463. >       Handle tempH2 = NULL;
  464. >       Str255 tempStr = "\ptemp string";
  465. >       OSErr myErr;
  466. >       PtrToHand(&tempStr[1], &tempH, tempStr[0]);
  467. >       tempH2 = NewHandle(0);
  468. >       myErr = HandAndHand(tempH, tempH2);
  469. First off, IM says "HandAndHand dereferences aHndl [ie tempH] so you must
  470. call HLock ...". This seems really weird to me, but it may be whats causing
  471. your problem.
  472.  
  473. Second, theres an easier way:
  474.         tempH2 = tempH;
  475.   myErr = HandToHand(&tempH2);
  476.  
  477. Mark Williams
  478.  
  479. +++++++++++++++++++++++++++
  480.  
  481. >From hywang@apple.com (Hao-yang Wang)
  482. Date: 24 Jan 1995 15:56:43 -0800
  483. Organization: Apple Computer, Inc., Cupertino, California
  484.  
  485. Mark Williams (Mark@streetly.demon.co.uk) wrote:
  486. : First off, IM says "HandAndHand dereferences aHndl [ie tempH] so you must
  487. : call HLock ...". This seems really weird to me, but it may be whats causing
  488. : your problem.
  489.  
  490. Yeah, it is weird, for we can always implement a version of HandAndHand
  491. without dereferencing aHndl:
  492.  
  493.   OSErr myHandAndHand(Handle aHndl, Handle bHndl)
  494.   {   const Size aSize = GetHandleSize(aHndl), bSize = GetHandleSize(bHndl);
  495.       SetHandleSize(bHndl, bSize + aSize);
  496.       const OSErr err = MemError();
  497.       if (err == noErr)
  498.           BlockMoveData(*aHndl, *bHndl + bSize, aSize);
  499.       return err;
  500.   }
  501.  
  502. As you can see, aHndl needs to be non-purgeable, but does not need to be
  503. locked.
  504.  
  505. I always use this implementation instead of calling to OS Utilities.
  506.  
  507.  
  508. Hao-yang Wang
  509. Pai Technology, Inc.
  510. Taipei
  511. paitech@c2.hinet.net
  512.  
  513. ---------------------------
  514.  
  515. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  516. Subject: MacOS  SDK quick impressions
  517. Date: Tue, 17 Jan 1995 12:00:47 +1300
  518. Organization: University of Waikato
  519.  
  520. I just received my copy of the new MacOS Software Developer's Kit CD. This
  521. is the one where they pack 30 different developer kits on one disc for the
  522. subscription price of US$299 per year. APDA has a special offer on until
  523. the end of this month, where if you are an ETO subscriber or you bought
  524. any SDK product after 17 October '93, you can get the first year's MacOS
  525. SDK subscription for half price.
  526.  
  527. Here are some quick notes about what's on it:
  528.  
  529. * System 7.5, including both QuickDraw GX and PowerTalk software.
  530. * QuickTime, both 1.6.1 and 2.0. You get DocViewer IM volumes, some sample
  531. movies and tools and stuff that were on earlier QuickTime CDs (not 2.0).
  532. You get the 2.0 interfaces, but no 2.0 documentation.
  533. * QuickDraw GX--everything that was on the GX developer kit CD seems to be
  534. there, EXCEPT the DocViewer IM volumes (major omission). You do get the
  535. nifty animated fonts.
  536. * Apple Guide. Yeah, I know it's available free on the net, but not
  537. everybody is in a position to download 30MB of stuff.
  538. * AOCE--looks like everything that was on the developer kit CD is there,
  539. including the DocViewer IM volumes.
  540. * Macintosh Easy Open--well, that's one developer kit I won't have to buy. :-)
  541. * Open Transport 1.0d13, MacTCP 2.0.4--same as you get on ETO.
  542. * Control Strip software, interfaces and documentation, and source for
  543. Martin Minow's "MacCalendar" module.
  544. * Telephone Manager 1.0, including documentation and source for a sample
  545. program called "Stiletto". Hmm, maybe I should actually look at it and
  546. find out what it's about sometime...
  547. * Sound Manager 3.0, including a DocViewer version of IM:Sound. This new
  548. IM volume documents Sound Manager 3.0, including how to write "Sound" and
  549. "Audio" components, as well the Speech Manager. It basically obsoletes all
  550. previous sound-related documentation, so it's worth getting.
  551. * PlainTalk 1.3 software, interfaces and documentation. This includes both
  552. text-to-speech and speech recognition.
  553. * MIDI Manager 2.0.2 software, interfaces and documentation.
  554. * Documentation on "Designing PCI Cards & Drivers" (if you're into that
  555. sort of thing...).
  556. * AppleSearch client software and API interfaces and documentation.
  557. * AppleShare server API interfaces and documentation.
  558. * AppleTalk Remote Access API interfaces and documentation, both versions
  559. 1.0 and 2.0 (no software).
  560. * Installer 4.0.3 software, interfaces and documentation.
  561.  
  562. There're quite a few other things as well, which don't seem so exciting to
  563. me. It's unlikely that anyone would find *everything* useful, but if there
  564. are three or four things there that are of value to you, then it's
  565. probably worth getting this SDK subscription, instead of the individual
  566. SDKs.
  567.  
  568. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  569. Computer Services Dept                     fax: +64-7-838-4066
  570. University of Waikato            electric mail: ldo@waikato.ac.nz
  571. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
  572.  
  573. +++++++++++++++++++++++++++
  574.  
  575. >From english@primenet.com (Lawson English)
  576. Date: 19 Jan 1995 21:04:53 GMT
  577. Organization: Primenet
  578.  
  579. Lawrence D9Oliveiro (ldo@waikato.ac.nz) wrote:
  580. : I just received my copy of the new MacOS Software Developer's Kit CD. This
  581. : is the one where they pack 30 different developer kits on one disc for the
  582. : subscription price of US$299 per year. APDA has a special offer on until
  583. : the end of this month, where if you are an ETO subscriber or you bought
  584. : any SDK product after 17 October '93, you can get the first year's MacOS
  585. : SDK subscription for half price.
  586.  
  587. : Here are some quick notes about what's on it:
  588. [stuff deleted]
  589.  
  590.  
  591. You forgot the most important part: the licensing agreement allows you to 
  592. distribute most of the system extensions as part of the subscription price.
  593.  
  594.  
  595. Two notable exceptions are QT 2.0 and PlainTalk... :-(
  596.  
  597. These are $300/year/app each, which is much better than PlainTalk's old 
  598. licensing ost of $1500/year/app, but still doesn't help the games writer 
  599. (well, Bungie could afford to distribute QT 2.0 and PlainTalk, even at 
  600. the old price, but for most of us...).
  601.  
  602.  
  603. In case anyone else is concerned about this, you might call Apple 
  604. Licensing and suggest that QT and PlainTalk be included in the package 
  605. licensing deal for the SDK CD.
  606.  
  607.  
  608.  
  609. --
  610. - -----------------------------------------------------------------------------
  611. Lawson English                            __  __     ____  ___       ___ ____
  612. english@primenet.com                     /__)/__) / / / / /_  /\  / /_    /
  613.                                         /   / \  / / / / /__ /  \/ /___  /
  614. - -----------------------------------------------------------------------------
  615.  
  616. +++++++++++++++++++++++++++
  617.  
  618. >From Manuel Veloso <veloso@netcom.com>
  619. Date: Tue, 24 Jan 1995 23:48:55 GMT
  620. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  621.  
  622. In article <3fmk5l$qr8@news.primenet.com> Lawson English, english@primenet.com writes:
  623. >You forgot the most important part: the licensing agreement allows you to 
  624. >distribute most of the system extensions as part of the subscription price.
  625. >
  626.  
  627. Hmmm. Does the licence allow you to distribute the installer?
  628.  
  629. Manuel
  630.  
  631. ---------------------------
  632.  
  633. >From Michael Moore <moorem@efn.org>
  634. Subject: NIM Routines that Move or Purge Memory
  635. Date: Sun, 15 Jan 1995 19:38:02 GMT
  636. Organization: None
  637.  
  638. I have been trying to locate a chapter or table in the New Inside
  639. Macintosh set
  640. that has the equivalent of the "Routines that may move or purge memory"
  641. appendix in the Old Inside Macintosh books.  I have the "Inside Macintosh
  642. CD-ROM" but have not been able to find it in any of the books.  The Memory
  643. Manager Overview section warns you of the dangers of "RtmMoPM" and
  644. indicates
  645. that the routines described in NIM will be documented one way or the
  646. other in
  647. their respective chapters, but very few routines actually specify.
  648.  
  649. I have been searching through the appendices of my Old Inside Mac books
  650. (which
  651. is only a slight pain), but need to find a newer reference for new
  652. routines
  653. described only in the NIM, such as InvalMenuBar.
  654.  
  655. If you can help cure my blindness in finding the section on the CD on NIM
  656. books, or if you have any other suggestions, I would appreciate it. 
  657.  
  658. -Michael Moore
  659. -moorem@efn.org
  660.  
  661. +++++++++++++++++++++++++++
  662.  
  663. >From "Andrew C. Plotkin" <ap1i+@andrew.cmu.edu>
  664. Date: Mon, 16 Jan 1995 13:45:07 -0500
  665. Organization: Information Technology Center, Carnegie Mellon, Pittsburgh, PA
  666.  
  667. Excerpts from netnews.comp.sys.mac.programmer.help: 15-Jan-95 NIM
  668. Routines that Move or P.. Michael Moore@efn.org (904)
  669.  
  670. > I have been trying to locate a chapter or table in the New Inside
  671. > Macintosh set
  672. > that has the equivalent of the "Routines that may move or purge memory"
  673. > appendix in the Old Inside Macintosh books.
  674.  
  675. Heh. We've had this before. I still claim that *every* Toolbox call may
  676. move or purge memory, with a small handful of "obvious" exceptions
  677. (BlockMove, BlockMoveData, HLock, HUnlock, HPurge, HNoPurge.) (And the
  678. bit-setting traps like BAnd which I never use, since I program in C.)
  679.  
  680. There are undoubtedly other routines that don't move memory, but many
  681. fewer that are *guaranteed* to never move memory in the future, and it's
  682. not worth my time to worry about seeking them out.
  683.  
  684. --Z
  685.  
  686. "And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
  687.  
  688. +++++++++++++++++++++++++++
  689.  
  690. >From jwbaxter@olympus.net (John W. Baxter)
  691. Date: Mon, 16 Jan 1995 18:50:05 -0800
  692. Organization: Internet for the Olympic Peninsula
  693.  
  694. In article <gj6funm00gpI4muHU6@andrew.cmu.edu>, "Andrew C. Plotkin"
  695. <ap1i+@andrew.cmu.edu> wrote:
  696.  
  697. > Excerpts from netnews.comp.sys.mac.programmer.help: 15-Jan-95 NIM
  698. > Routines that Move or P.. Michael Moore@efn.org (904)
  699. > > I have been trying to locate a chapter or table in the New Inside
  700. > > Macintosh set
  701. > > that has the equivalent of the "Routines that may move or purge memory"
  702. > > appendix in the Old Inside Macintosh books.
  703. > Heh. We've had this before. I still claim that *every* Toolbox call may
  704. > move or purge memory, with a small handful of "obvious" exceptions
  705. > (BlockMove, BlockMoveData, HLock, HUnlock, HPurge, HNoPurge.) (And the
  706. > bit-setting traps like BAnd which I never use, since I program in C.)
  707.  
  708. And even if Apple's version doesn't move memory (and you've made certain
  709. that getting to any glue doesn't), you don't *know* in advance that some
  710. <fill in description of your choice> hasn't written a patch, installed by
  711. the one of your users most likely to make midnight phone calls, which
  712. causes the call to move memory.
  713.  
  714. Even that is unlikely to apply to the calls you list (your user will
  715. likely have called someone else at midnight, first).
  716.  
  717.    --John
  718.  
  719. -- 
  720. John Baxter    Port Ludlow, WA, USA  [West shore, Puget Sound]
  721.        Isn't C fun?
  722.    jwbaxter@pt.olympus.net
  723.  
  724. +++++++++++++++++++++++++++
  725.  
  726. >From Michael Moore <moorem@efn.org>
  727. Date: Fri, 20 Jan 1995 03:02:15 GMT
  728. Organization: None
  729.  
  730. In article <gj6funm00gpI4muHU6@andrew.cmu.edu> Andrew C. Plotkin,
  731. ap1i+@andrew.cmu.edu writes:
  732. >Excerpts from netnews.comp.sys.mac.programmer.help: 15-Jan-95 NIM
  733. >Routines that Move or P.. Michael Moore@efn.org (904)
  734. >
  735. >> I have been trying to locate a chapter or table in the New Inside
  736. >> Macintosh set
  737. >> that has the equivalent of the "Routines that may move or purge memory"
  738. >> appendix in the Old Inside Macintosh books.
  739. >
  740. >Heh. We've had this before. I still claim that *every* Toolbox call may
  741. >move or purge memory, with a small handful of "obvious" exceptions
  742. >(BlockMove, BlockMoveData, HLock, HUnlock, HPurge, HNoPurge.) (And the
  743. >bit-setting traps like BAnd which I never use, since I program in C.)
  744. >
  745. >There are undoubtedly other routines that don't move memory, but many
  746. >fewer that are *guaranteed* to never move memory in the future, and it's
  747. >not worth my time to worry about seeking them out.
  748.  
  749. Well I suppose that information is useful if you're writing some
  750. applications, but folks writing INITs that need to perform periodic
  751. tasks often need to worry about which calls can be made when they
  752. get their opportunity to run at interupt time.
  753.  
  754. -Michael
  755.  
  756. +++++++++++++++++++++++++++
  757.  
  758. >From jwbaxter@olympus.net (John W. Baxter)
  759. Date: Fri, 20 Jan 1995 13:23:18 -0800
  760. Organization: Internet for the Olympic Peninsula
  761.  
  762. In article <D2ooFr.Dp@efn.org>, Michael Moore <moorem@efn.org> wrote:
  763.  
  764. > Well I suppose that information is useful if you're writing some
  765. > applications, but folks writing INITs that need to perform periodic
  766. > tasks often need to worry about which calls can be made when they
  767. > get their opportunity to run at interupt time.
  768.  
  769. And in the possible presence of bogus patches which turn "safe" traps into
  770. unsafe one, the answer is that no patchable trap is safe.  On 68K, that's
  771. "no trap".  In the absence of INITs and other patching agents you don't
  772. trust, the only thing you have to worry about is safe traps becoming
  773. unsafe (SysBeep () comes to mind...it may now load a resource...in 1984 it
  774. couldn't (in the absence of a patch, of course).
  775.  
  776.    --John
  777.  
  778. -- 
  779. John Baxter    Port Ludlow, WA, USA  [West shore, Puget Sound]
  780.        Isn't C fun?
  781.    jwbaxter@pt.olympus.net
  782.  
  783. +++++++++++++++++++++++++++
  784.  
  785. >From ivan_cavero_belaunde@avid.com (Ivan Cavero Belaznde)
  786. Date: 20 Jan 1995 20:20:13 GMT
  787. Organization: Avid Technology, Inc.
  788.  
  789. In article <gj6funm00gpI4muHU6@andrew.cmu.edu>, "Andrew C. Plotkin"
  790. <ap1i+@andrew.cmu.edu> wrote:
  791.  
  792. > Excerpts from netnews.comp.sys.mac.programmer.help: 15-Jan-95 NIM
  793. > Routines that Move or P.. Michael Moore@efn.org (904)
  794. > > I have been trying to locate a chapter or table in the New Inside
  795. > > Macintosh set
  796. > > that has the equivalent of the "Routines that may move or purge memory"
  797. > > appendix in the Old Inside Macintosh books.
  798. > Heh. We've had this before. I still claim that *every* Toolbox call may
  799. > move or purge memory, with a small handful of "obvious" exceptions
  800. > (BlockMove, BlockMoveData, HLock, HUnlock, HPurge, HNoPurge.) (And the
  801. > bit-setting traps like BAnd which I never use, since I program in C.)
  802.  
  803. I disagree with that claim, actually. Part of the problem here is that
  804. we're talking about two sets of calls:
  805.    - Calls that may move memory (so that they can be called after a
  806.       potentially unsafe handle dereference without invalidating the
  807.       dereference).
  808.    - Calls that cannot be called at interrupt/preemptive time, such as a
  809.       completion routine, time mgr task, or VBL task (irrespectively of
  810.       whether they move memory or not).
  811.  
  812. The criteria for the first kind of calls is that none of the calls below
  813. them in the control flow tree call one of:
  814.          Alloc calls: NewHandle, NewPtr, ReserveMem.
  815.          Move calls: HLockHi, MoveHHi.
  816.          Size change calls: SetHandleSize, SetPtrSize, ReallocateHandle.
  817.          Squeeze calls: MaxMem, CompactMem, PurgeMem.
  818.  
  819. The criteria for the second one is tighter (the second set is a subset of
  820. the first set). Not only must they not move memory but they cannot rely
  821. on unlocked handles being valid: this means things like HUnlock, HLock, etc,
  822. as well as other seemingly safe routines (EmptyRgn, GetNextDevice,
  823. GetMaxDevice). Note that the first set of calls is mostly a curiousity,
  824. since their purpose is to ensure the validity of a "cached" dereference
  825. for the most part, and it is the second set of calls which is really
  826. useful (until we get truly preemptive multitasking).
  827.  
  828. I believe that in most cases it's possible to determine whether a given
  829. call meets either criteria. Most I/O OS calls, for example, are interrupt
  830. safe (Open does, since it can allocate FCBs), since they are callable from
  831. completion procs when running async, and _Read and _Write must be callable
  832. from page fault handlers. Additionally, while people will point out that
  833. patches can make calls that don't move memory actually move it, I believe
  834. those patches are buggy and should be fixed, just like any other patch
  835. which makes invalid assumptions about what it may or may not do (for
  836. example, a well-known hierarchical apple menu utility patched Open and
  837. attempted to save the port inside the patch; the problem is that it's
  838. totally legal, though uncommon, to call Open without having valid QD
  839. globals).
  840.  
  841. I do believe that the focus of the "list" has to change, however - it
  842. should be a list of routines that do *not* move or purge memory, and are
  843. interrupt safe, rather than the opposite, as they appeared in the original
  844. IM. The net's a great resource in this aspect.
  845.  
  846. > There are undoubtedly other routines that don't move memory, but many
  847. > fewer that are *guaranteed* to never move memory in the future, and it's
  848. > not worth my time to worry about seeking them out.
  849.  
  850. It all depends on the task, I guess: if you're trying to do time critical
  851. things via interrupt handlers or time manager tasks, it behooves you to
  852. seek them out - otherwise, it's impossible to have a clear picture of what
  853. can or cannot be done at interrupt time.
  854.  
  855. HTH,
  856.  
  857. -Ivan
  858. - ---
  859. Ivan Cavero Belaznde (ivan_cavero_belaunde@avid.com)
  860. Avid VideoShop Project Lead
  861. Avid Technology, Inc.
  862.  
  863. ---------------------------
  864.  
  865. >From Karl Goiser <karl@jolt.mpx.com.au>
  866. Subject: Simulating Drag-to-Trash
  867. Date: 18 Jan 1995 22:47:47 GMT
  868. Organization: self
  869.  
  870. Hi All,
  871.  
  872. I was just wondering if anyone knew how to programatically simulate
  873. dragging a file to the trash.  I know how to find the trash can for
  874. a particular volume and to _move_ it there - but you don't get the
  875. 'put away' option like you do when you drag the fiel in the Finder.
  876.  
  877. Thanks in advance!
  878.  
  879. Karl Goiser
  880. CompuTechnics
  881.  
  882. +++++++++++++++++++++++++++
  883.  
  884. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  885. Date: Thu, 19 Jan 1995 13:56:18 +1300
  886. Organization: University of Waikato
  887.  
  888. In article <3fk5qj$re6@inferno.mpx.com.au>, Karl Goiser
  889. <karl@jolt.mpx.com.au> wrote:
  890.  
  891. >I was just wondering if anyone knew how to programatically simulate
  892. >dragging a file to the trash.  I know how to find the trash can for
  893. >a particular volume and to _move_ it there - but you don't get the
  894. >'put away' option like you do when you drag the fiel in the Finder.
  895.  
  896. Let me see if I understand what you mean: you want to be able to move a
  897. file or folder into the trash folder on a volume, such that the Finder's
  898. "Put Away" command will return it to its original location?
  899.  
  900. One way to do this is to have the Finder do it, by sending it the
  901. appropriate AppleEvent. The easiest way to achieve this would be via
  902. AppleScript.
  903.  
  904. If you want to do it yourself, then I believe the following should work:
  905.  
  906. * Do a GetCatInfo on the object.
  907. * Set the ioFlXFndrInfo.fdPutAway field in the catalog info to the item's
  908. current parent directory ID.
  909. * Do a SetCatInfo with the new info.
  910. * Then do the CatMove call to move the item into the Trash.
  911.  
  912. Disclaimer: I haven't tried this, so for all I know there may be more to
  913. "Put Away" support than I think.
  914.  
  915. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  916. Computer Services Dept                     fax: +64-7-838-4066
  917. University of Waikato            electric mail: ldo@waikato.ac.nz
  918. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
  919.  
  920. ---------------------------
  921.  
  922. >From ingemar@lysator.liu.se (Ingemar Ragnemalm)
  923. Subject: Sprite Animation Toolkit 2.3a2 available
  924. Date: 25 Jan 1995 23:21:47 GMT
  925. Organization: (none)
  926.  
  927.  
  928. Sprite Animation Toolkit (SAT) version 2.3a2 is now available by anonymous
  929. ftp from ftp.lysator.liu.se, in /pub/mac/sat.
  930.  
  931. SAT is a freeware programmer's library for creating animations (e.g. games)
  932. with sprites, as in most 2D games. It has already been used in numerous
  933. released games, like Bachman, Ingemar's Skiing Game, Asterax, Missions
  934. Of The Reliant and many others.
  935.  
  936. SAT is free for any kind of use, **including commercial use**, as long as
  937. credits are given and a free copy is sent or made available to me.
  938.  
  939. SAT has a simple programming interface, letting you use a very small set
  940. of calls for simple programs, but with many hooks and special routines for
  941. advanced programmers. With SAT, you can support old Macs, different screen
  942. depths etc with little effort.
  943.  
  944. It includes a fair number of demos, from extremely simple introductory demos
  945. to a full, complete game (HeartQuest).
  946.  
  947. SAT includes libraries for Think Pascal, Think C/Symantec C++, CodeWarrior
  948. Pascal and C/C++. The Think Pascal library is in MPW .o format, but I am not
  949. able to verify if it can be used with MPW:
  950.  
  951. SAT 2.3a2 still does not include a PowerMac version, but that is almost
  952. there - really! The only problem left to make the PowerMac SAT version
  953. useable is a glitch in the sound routines, which makes the animation
  954. jumpy when sounds are played. When that is solved, the next SAT version
  955. will include a PowerMac library for CodeWarrior. BTW, if someone has a
  956. good blitter for masked sprites on the PowerMac, I'm interested!
  957.  
  958. Even though it still has the "alpha" mark, I believe that SAT 2.3a2 is
  959. quite stable and performs well. If you can confirm this, or report problems,
  960. I would be grateful! No feedback means slower progress.
  961.  
  962. --
  963. - -
  964. Ingemar Ragnemalm, PhD
  965. Image processing, Mac shareware games
  966. E-mail address: ingemar@isy.liu.se or ingemar@lysator.liu.se
  967.  
  968. ---------------------------
  969.  
  970. >From john.sudderth@msfc.nasa.gov (John Sudderth)
  971. Subject: StandardGetFile behavior
  972. Date: Thu, 19 Jan 1995 12:37:55 -0600
  973. Organization: CSC
  974.  
  975. System 7.5 changes the behavior of StandardGetFile depending on the
  976. Documents setting in the General Controls CP. It seems to override my
  977. setting the 2 low memory globals you can set to point to a specific
  978. folder. Is there anyway to force StandardGetFile to point to a specific
  979. folder regardless of that setting? Has anyone written a DlgHook that can
  980. do this?
  981.  
  982. +++++++++++++++++++++++++++
  983.  
  984. >From Jaeger@fquest.com (Brian Stern)
  985. Date: 20 Jan 1995 04:57:53 GMT
  986. Organization: The University of Texas at Austin, Austin, Texas
  987.  
  988. In article <john.sudderth-1901951237550001@shuttle.msfc.nasa.gov>,
  989. john.sudderth@msfc.nasa.gov (John Sudderth) wrote:
  990.  
  991. < System 7.5 changes the behavior of StandardGetFile depending on the
  992. < Documents setting in the General Controls CP. It seems to override my
  993. < setting the 2 low memory globals you can set to point to a specific
  994. < folder. Is there anyway to force StandardGetFile to point to a specific
  995. < folder regardless of that setting? Has anyone written a DlgHook that can
  996. < do this?
  997.  
  998. A DlgHook to do this is easy.  Leave the low mem globals behind.
  999.  
  1000. Just set up the sfFile field in your StandardFileReply record to point to
  1001. the appropriate place BEFORE calling StandardGetFile.  Then in your hook
  1002. when you get the sfFirstCall item change it to sfHookChangeSelection. 
  1003. Something like this:
  1004.  
  1005.  
  1006. void 
  1007. CustomGet( FSSpec &newFileSpec )
  1008. {
  1009.    Point          where = { -1, -1 };
  1010.    StandardFileReply sfReply;
  1011.    SFTypeList        myTypes;
  1012.  
  1013.    myTypes[0] = 'TEXT';
  1014.  
  1015.    sfReply.sfFile = newFileSpec;
  1016.  
  1017.    CustomGetFile( nil, 1, myTypes, &sfReply, 200, where, theDlgHookUPP,
  1018.                nil, nil, nil, nil );
  1019. }
  1020.  
  1021. pascal short 
  1022. MyDlgHook( short item, DialogPtr, Ptr )
  1023. {     
  1024.    if ( item == sfHookFirstCall )
  1025.       item = sfHookChangeSelection;
  1026.        
  1027.    return item;
  1028.  
  1029. }
  1030.  
  1031. -- 
  1032. Brian  Stern  :-{)}
  1033. Toolbox commando and Menu bard
  1034. Jaeger@fquest.com
  1035.  
  1036. ---------------------------
  1037.  
  1038. >From babb@ucssun1.sdsu.edu (J. Babb)
  1039. Subject: What causes "odd address 0x40be14" error?
  1040. Date: Mon, 09 Jan 1995 10:24:16 -0800
  1041. Organization: Usually Post-it notes and a Larsen calendar
  1042.  
  1043.  
  1044. Hi Folks,
  1045.      Running Think C 5.0.2 on a Mac Plus 4/80(System 6.0.8, Finder 6.1.8)
  1046. with or without Macsbug loaded, Mark & Reed's Hello2 program compiles, but
  1047. dies in the TC debugger with an odd address error at
  1048. SetPort(gPictureWindow);, namely address 0x40BE14.
  1049.  
  1050. Well, that looked like an even number to me! And I couldn't figure out why
  1051. a ToolBox call would fail. 
  1052.  
  1053. So I looked for programs that called SetPort that also worked. Think C's
  1054. demo program - BullsEye worked, but it calls NewWindow, not GetNewWindow.
  1055. So I recompiled with NewWindow and Hello2 now works. I'd still like to
  1056. know why I got the odd address error.
  1057.  
  1058. /*gPictureWindow=GetNewWindow ( BASE_RES_ID , NIL_POINTER , MOVE_TO_FRONT );
  1059.        The previous line generates a run time error of odd address */
  1060.        
  1061. gPictureWindow=NewWindow ( 0L, &windowBounds, "\phello2", true,
  1062. noGrowDocProc, (WindowPtr) -1L, true, 0 );
  1063.  
  1064. SetPort ( gPictureWindow );
  1065.  
  1066. This works. But of course doesn't use the WIND resource I made.
  1067.  
  1068. Could somebody give me Dave Mark's or Cartwright Reed's email addr? I'd
  1069. like to get an errata sheet, and pose some of these questions to them,
  1070. since they've probably answered them already. Maybe there's a Think C 5.0
  1071. FAQ !!   :-)
  1072.  
  1073. -- 
  1074.                              Jeff Babb
  1075. "Mr. Babb, you sure ask a lotta questions." - Roseanna Roseannadanna
  1076.    babb@ucssun1.sdsu.edu  Flames to dev/null/heatsink/asbestos
  1077.  
  1078. +++++++++++++++++++++++++++
  1079.  
  1080. >From kenlong@netcom.com (Ken Long)
  1081. Date: Mon, 9 Jan 1995 20:23:11 GMT
  1082. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1083.  
  1084. J. Babb (babb@ucssun1.sdsu.edu) wrote:
  1085.  
  1086. : Could somebody give me Dave Mark's or Cartwright Reed's email addr? I'd
  1087. : like to get an errata sheet, and pose some of these questions to them,
  1088. : since they've probably answered them already. Maybe there's a Think C 5.0
  1089. : FAQ !!   :-)
  1090.  
  1091. dmark@aol.com.
  1092.  
  1093. But he proclamed all the Primer 1 source as freeware, and the whole thing 
  1094. can be downloaded from AOL.  TC 7 projects, but easily backgradable.
  1095.  
  1096. Check to make sure the ID of the window in the .rsrc file is the same as 
  1097. the ID called for in the source.  If BASE_RES_ID is 400 and your window 
  1098. ID is 128 you'll get the odd address error.
  1099.  
  1100. It's not "odd vs. even" - it's "That's odd!  It's not there."  If someone 
  1101. gave you the address of Symantec, and you went there and only found a 
  1102. vacant lot, wouldn't you say that was an odd address for Symantec?
  1103.  
  1104. -Ken-
  1105.  
  1106.  
  1107. +++++++++++++++++++++++++++
  1108.  
  1109. >From babb@ucssun1.sdsu.edu (J. Babb)
  1110. Date: Mon, 09 Jan 1995 16:53:20 -0800
  1111. Organization: Usually Post-it notes and a Larsen calendar
  1112.  
  1113. In article <kenlongD25nAn.AE6@netcom.com>, kenlong@netcom.com (Ken Long) wrote:
  1114.  
  1115. > J. Babb (babb@ucssun1.sdsu.edu) wrote:
  1116. > : Could somebody give me Dave Mark's or Cartwright Reed's email addr? I'd
  1117. > : like to get an errata sheet, and pose some of these questions to them,
  1118. > : since they've probably answered them already. Maybe there's a Think C 5.0
  1119. > : FAQ !!   :-)
  1120. > dmark@aol.com.
  1121.  
  1122. THANKS very much!
  1123.  
  1124.  
  1125. > But he proclamed all the Primer 1 source as freeware, and the whole thing 
  1126. > can be downloaded from AOL.  TC 7 projects, but easily backgradable.
  1127. > Check to make sure the ID of the window in the .rsrc file is the same as 
  1128. > the ID called for in the source.  If BASE_RES_ID is 400 and your window 
  1129. > ID is 128 you'll get the odd address error.
  1130. It definitely is 400 in the call and in the WIND resource.
  1131.  
  1132.  
  1133. > It's not "odd vs. even" - it's "That's odd!  It's not there."  If someone 
  1134. > gave you the address of Symantec, and you went there and only found a 
  1135. > vacant lot, wouldn't you say that was an odd address for Symantec?
  1136. > -Ken-
  1137.  
  1138. Really????? Cause as I understand it byte alignment, and padding are
  1139. important so that a routine does not begin on an odd byte boundary. I
  1140. think Think C is trying to tell me that the call is misaligned. Anyway it
  1141. the precompiled headers that resolve a routine's address isn't it?. If so
  1142. how do I correct the header?
  1143.  
  1144. Thanx again for your time.
  1145.  
  1146. -- 
  1147.                              Jeff Babb
  1148. "Mr. Babb, you sure ask a lotta questions." - Roseanna Roseannadanna
  1149.    babb@ucssun1.sdsu.edu  Flames to dev/null/heatsink/asbestos
  1150.  
  1151. +++++++++++++++++++++++++++
  1152.  
  1153. >From kenlong@netcom.com (Ken Long)
  1154. Date: Tue, 10 Jan 1995 03:00:46 GMT
  1155. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1156.  
  1157. J. Babb (babb@ucssun1.sdsu.edu) wrote:
  1158. : It definitely is 400 in the call and in the WIND resource.
  1159.  
  1160. : Really????? 
  1161.  
  1162. I don't know - don't believe anything *I* say!  Check it out for yourself.
  1163. But, any time I EVER got an odd adress error, it was somthing about a 
  1164. misplaced, missed pointed to, mis... something resource that caused it.
  1165.  
  1166. : Cause as I understand it byte alignment, and padding are
  1167. : important so that a routine does not begin on an odd byte boundary. I
  1168. : think Think C is trying to tell me that the call is misaligned. Anyway it
  1169. : the precompiled headers that resolve a routine's address isn't it?. If so
  1170. : how do I correct the header?
  1171.  
  1172. Again, I don't know, but if you InitMac, SetUpMenus, SetUpWindows, and in 
  1173. your set up window routine you call a correctly syntaxed GetNewWindow, 
  1174. then how could something get "odd?"
  1175.  
  1176. GetNewWindow has 3 arguments.  Any of the three could have something 
  1177. *earlier* about them contributing to the error, which didn't show 'til 
  1178. the debugger run.  If you'e eliminated the resID thing, then it's 
  1179. something else.  Could even be something so unblatant as a ';' after a 
  1180. define.  I've downloaded old source that had invisible characters in the 
  1181. source, or one so far off the right of the screen they didn't show easily.
  1182.  
  1183. Anyway, probably nothing so bizzare in your source.
  1184.  
  1185. Another place the odd address would show, that I've seen, is in a pascal 
  1186. to C port, where you're gauranteed plenty of omitted characters and 
  1187. operators.  Odd address will show in the debugger (if not a crash) if the 
  1188. ampersand is missing from in front of the second argument to "FindWindow" 
  1189. - namely "whichWindow" (the most common).
  1190.  
  1191. That's "at the address of" whichWindow.  Think C won't catch that one, 
  1192. but MW will.
  1193.  
  1194. Another is menu setup routines.  Some old, funky source might odd-address 
  1195. in one, so I'll just replace the whole routine and not even bother trying 
  1196. to track down the problem.  Process of elimination in action again.
  1197.  
  1198. -Ken-
  1199.  
  1200. +++++++++++++++++++++++++++
  1201.  
  1202. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  1203. Date: Mon, 9 Jan 1995 23:37:27 GMT
  1204. Organization: Apple Computer
  1205.  
  1206. J. Babb, babb@ucssun1.sdsu.edu writes:
  1207. > dies in the TC debugger with an odd address error at
  1208. > SetPort(gPictureWindow);, namely address 0x40BE14.
  1209. > Well, that looked like an even number to me! And I couldn't figure out why
  1210. > a ToolBox call would fail.
  1211.  
  1212. 40be14 is the address of the code that was writing to the offending odd
  1213. address. And most Toolbox calls can fail if you give them bogus inputs, such
  1214. as bad pointers or pointers to bad data structures, or if the system has been
  1215. damaged i.e. a corrupted heap.
  1216.  
  1217. It's quite possible this is a bug in the example code, since the odd address
  1218. error only occurs on 68000s, not on 020s or higher, and some people forget to
  1219. test their code on a real live 68000 before shipping it.
  1220.  
  1221. --Jens Alfke                           jens_alfke@powertalk.apple.com
  1222.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  1223.  
  1224. +++++++++++++++++++++++++++
  1225.  
  1226. >From ruhl@phoebe.cair.du.edu (Robert A. Uhl)
  1227. Date: 10 Jan 1995 22:36:58 GMT
  1228. Organization: University of Denver
  1229.  
  1230. In article <1995Jan9.233727.27391@gallant.apple.com>,
  1231. Jens Alfke  <jens_alfke@powertalk.apple.com> wrote:
  1232.  
  1233. [snip]
  1234.  
  1235. >It's quite possible this is a bug in the example code, since the odd address
  1236. >error only occurs on 68000s, not on 020s or higher, and some people forget to
  1237. >test their code on a real live 68000 before shipping it.
  1238.  
  1239.   Tell me about. I have a Classic (Sym C/C++ 6.0 actually works on it!
  1240. The C part anyway. C++ crashes on it and my father's IIsi), and just
  1241. about all of the apps that I download crash it with address errors or
  1242. ubdefined A-traps. Annoying as hell.
  1243.  
  1244. -- 
  1245. - ------------------------------------------------------------------------
  1246. | Bob Uhl | Spectre                  | `In touto nika' +                 |
  1247. | U of D  | Baron Robert von Raetzin | http://mercury.cair.du.edu/~ruhl/ |
  1248. - ------------------------------------------------------------------------
  1249.  
  1250. +++++++++++++++++++++++++++
  1251.  
  1252. >From jens_alfke@powertalk.apple.com (Jens Alfke)
  1253. Date: Tue, 10 Jan 1995 23:14:43 GMT
  1254. Organization: Apple Computer, Inc.
  1255.  
  1256. kenlong@netcom.com (Ken Long) wrote:
  1257. > > It's not "odd vs. even" - it's "That's odd!  It's not there."  If someone 
  1258.  
  1259. No, that's wrong. It _does_ too mean odd as in the opposite of even. The
  1260. 68000 CPU cannot read a 16 or 32-bit value from an odd address. The 020
  1261. and later have the hardware support to do this, so they don't generate odd
  1262. address errors.
  1263.  
  1264. babb@ucssun1.sdsu.edu (J. Babb) wrote:
  1265. > Really????? Cause as I understand it byte alignment, and padding are
  1266. > important so that a routine does not begin on an odd byte boundary.
  1267.  
  1268. Generall the routine is okay but the code in the routine is trying to read
  1269. or write data to an odd address; an instruction like
  1270.    tst.w (a0)
  1271. would fail if a0 contained, for instance, 0x50FF8001.
  1272. It's also possible to get an odd address error trying to execute code if a
  1273. bogus jump or return instruction tries to jump to an odd address. But this
  1274. is rarer.
  1275.  
  1276. --Jens Alfke
  1277.  
  1278. +++++++++++++++++++++++++++
  1279.  
  1280. >From kenlong@netcom.com (Ken Long)
  1281. Date: Mon, 16 Jan 1995 16:14:27 GMT
  1282. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1283.  
  1284. Jens Alfke (jens_alfke@powertalk.apple.com) wrote:
  1285. : No, that's wrong. It _does_ too mean odd as in the opposite of even. The
  1286. : 68000 CPU cannot read a 16 or 32-bit value from an odd address. The 020
  1287. : and later have the hardware support to do this, so they don't generate odd
  1288. : address errors.
  1289.  
  1290. I have a 68020 and I get odd address errors.  So what gives?
  1291.  
  1292. -Ken-
  1293.  
  1294. +++++++++++++++++++++++++++
  1295.  
  1296. >From Patrick.Stadelmann@etudiants.unine.ch (Patrick Stadelmann)
  1297. Date: 17 Jan 95 08:07:17 MET
  1298. Organization: University of Neuchatel
  1299.  
  1300. In article <kenlongD2IAG3.3IM@netcom.com>, kenlong@netcom.com (Ken Long) wrote:
  1301.  
  1302. > Jens Alfke (jens_alfke@powertalk.apple.com) wrote:
  1303. > : No, that's wrong. It _does_ too mean odd as in the opposite of even. The
  1304. > : 68000 CPU cannot read a 16 or 32-bit value from an odd address. The 020
  1305. > : and later have the hardware support to do this, so they don't generate odd
  1306. > : address errors.
  1307. > I have a 68020 and I get odd address errors.  So what gives?
  1308.  
  1309. The 68020 won't generate an address error if you READ or WRITE
  1310. a 16 or 32-bit value at an odd address. But it will if you
  1311. try to EXECUTE code at an odd addres. On the 680x0, the instructions
  1312. must always be aligned on a word.
  1313.  
  1314. Patrick
  1315.  
  1316. -- 
  1317. Patrick Stadelmann <Patrick.Stadelmann@etudiants.unine.ch>
  1318.  
  1319. +++++++++++++++++++++++++++
  1320.  
  1321. >From greg@genmagic.com (Greg Marriott)
  1322. Date: Wed, 18 Jan 1995 02:11:31 -0800
  1323. Organization: General Magic, Inc.
  1324.  
  1325. In article <kenlongD2IAG3.3IM@netcom.com>, kenlong@netcom.com (Ken Long) wrote:
  1326. > Jens Alfke (jens_alfke@powertalk.apple.com) wrote:
  1327. > : No, that's wrong. It _does_ too mean odd as in the opposite of even. The
  1328. > : 68000 CPU cannot read a 16 or 32-bit value from an odd address. The 020
  1329. > : and later have the hardware support to do this, so they don't generate odd
  1330. > : address errors.
  1331. > I have a 68020 and I get odd address errors.  So what gives?
  1332.  
  1333. As Jens pointed out in the same message you quoted above:
  1334.  
  1335. > : It's also possible to get an odd address error trying to execute code if a
  1336. > : bogus jump or return instruction tries to jump to an odd address. But this
  1337. > : is rarer.
  1338.  
  1339. So if some bug trashes data on the stack, for example, then a return
  1340. address for a subroutine might get hammered and the RTS instruction will
  1341. generate an address error exception.
  1342.  
  1343. Greg
  1344. -- 
  1345. Greg Marriott
  1346. Just Some Guy
  1347. General Magic, Inc.
  1348.  
  1349. Disclaimer: My opinions are not necessarily the same as General Magic's.
  1350.             (can a company even HAVE an opinion?)
  1351.  
  1352. +++++++++++++++++++++++++++
  1353.  
  1354. >From Mark Williams <Mark@streetly.demon.co.uk>
  1355. Date: Mon, 23 Jan 1995 08:41:55 GMT
  1356. Organization: Streetly Software
  1357.  
  1358.  
  1359. In article <kenlongD2IAG3.3IM@netcom.com>, Ken Long writes:
  1360.  
  1361. > Jens Alfke (jens_alfke@powertalk.apple.com) wrote:
  1362. > : No, that's wrong. It _does_ too mean odd as in the opposite of even. The
  1363. > : 68000 CPU cannot read a 16 or 32-bit value from an odd address. The 020
  1364. > : and later have the hardware support to do this, so they don't generate odd
  1365. > : address errors.
  1366. > I have a 68020 and I get odd address errors.  So what gives?
  1367.  
  1368. 68020 and above can read/write data at odd addresses. They still generate an
  1369. odd address error if you try to _execute_ an instruction at an odd address.
  1370.  
  1371. Mark Williams
  1372.  
  1373. ---------------------------
  1374.  
  1375. >From Anders.Wahlin@hum.gu.se (Anders Wahlin)
  1376. Subject: Where can I find some game source code?
  1377. Date: Fri, 13 Jan 1995 07:52:04 GMT
  1378. Organization: Hum Fak:s Dataservice
  1379.  
  1380. I'd like to learn about the techniques on how to make a simple game. I
  1381. think that the only way to learn this is to look at other source codes?
  1382. I've looked at the Tetris Light source code, but there has to be more than
  1383. that? So, does anyone know where to find source codes, informations etc.
  1384. on how to make a game?
  1385.  
  1386. Any help is appreciated. Thank you.
  1387.  
  1388. -- 
  1389. Anders Wahlin
  1390. Anders.Wahlin@hum.gu.se
  1391.  
  1392. +++++++++++++++++++++++++++
  1393.  
  1394. >From y-tony@bu.edu (Yan Lee)
  1395. Date: 13 Jan 1995 14:39:20 GMT
  1396. Organization: Boston University
  1397.  
  1398. Anders Wahlin (Anders.Wahlin@hum.gu.se) wrote:
  1399. : I'd like to learn about the techniques on how to make a simple game. I
  1400. : think that the only way to learn this is to look at other source codes?
  1401. : I've looked at the Tetris Light source code, but there has to be more than
  1402. : that? So, does anyone know where to find source codes, informations etc.
  1403. : on how to make a game?
  1404.  
  1405. : Any help is appreciated. Thank you.
  1406.  
  1407.  
  1408. There is cheesetoast, which is a parody of asteroids.  I am not sure how 
  1409. the game is like ( i haven't played the latest version ) but the 
  1410. animation seemed nice.
  1411.  
  1412. There is also Arashi, an excellent port of Tempest.  I think it uses a 
  1413. vector based engine.  1 meg worth of code there.
  1414.  
  1415. The games are there via gopher to gopher.archive.umich.edu.  The source 
  1416. for cheesetoast is there also.  I think you have to ask for the Arashi 
  1417. source directly from the writers.  I remember an older version of the 
  1418. Arashi's source being at sumex-aim.stanford.edu.
  1419.  
  1420. Tony
  1421.  
  1422.  
  1423. +++++++++++++++++++++++++++
  1424.  
  1425. >From kenlong@netcom.com (Ken Long)
  1426. Date: Sat, 14 Jan 1995 00:52:35 GMT
  1427. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1428.  
  1429. : Anders Wahlin (Anders.Wahlin@hum.gu.se) wrote:
  1430. : : I'd like to learn about the techniques on how to make a simple game. I
  1431. : : think that the only way to learn this is to look at other source codes?
  1432. : : I've looked at the Tetris Light source code, but there has to be more than
  1433. : : that? So, does anyone know where to find source codes, informations etc.
  1434. : : on how to make a game?
  1435.  
  1436. There are a few more, around - some complete and some not.
  1437.  
  1438. I got the source for MacMan - a B/W but excellent rendition of PacMan, 
  1439. from the author for $15.  Heluvadeal!
  1440.  
  1441. SpriteWorld has some example game source (incomplete) similar to CheeseToast.
  1442. It also has some Breakout sources in it.
  1443.  
  1444. Sprite Animation Toolkit has some C sources for much of the functionality 
  1445. of games, like SpaceInvaders, and some others.  It also has complete 
  1446. Pascal source for HeartQuest - a "CrystalQuest" type game.
  1447.  
  1448. There are Pong sources, around - could be worked up into something better 
  1449. and more sophisticated.
  1450.  
  1451. There are "Minefield" sources on the net.
  1452.  
  1453. John Calhoun released several of his Pascal game sources, and they are 
  1454. available at various places.
  1455.  
  1456. There are a few good card game sources around, to.  On guy sent me a 
  1457. Think C 4 source for a Hearts game, to my local board, because he 
  1458. couldn't get it to run in Think C 5.  So I got it running and sent it 
  1459. back and retained a copy myself.  It was labelled "free for non-commercial 
  1460. use" by the authors.
  1461.  
  1462. Write to authors of free games and ask if you can have the source.  I've 
  1463. done this and have gotten some excellent sources.  Also, write authors of 
  1464. shareware and ask if you can buy theirs on a non-distribution basis 
  1465. (personal use, only).  That works, sometimes.
  1466.  
  1467. Along these lines, there were hundreds of old games that authers put out 
  1468. free when the Mac first came out.  They wanted a little money as 
  1469. shareware, but by todays standards the games might look like 7th graders 
  1470. wrote them.  If the author got to busy, or got off into some other aspect 
  1471. of the Mac, or something else, he may now just give the source for the 
  1472. old game away if asked.  Some of these old games were funky and some were 
  1473. cool in their day, but any could be modernized, colorize and "sophitized" 
  1474. and otherwise revived.  
  1475.  
  1476. An example of this is the old Maxwell game.  It was a DA, for one thing.  
  1477. There were tow rectangles with randomly moving sprites in them, with a 
  1478. separator bar between rects.  Mousedown removed the separator allowing 
  1479. sprite to enter the other rect.  Plain, simple, funky - but the idea was 
  1480. good.  Make it 4 rects with keys to toggle the separators, add variuos 
  1481. levels, colorize, etc.  See?  many software products today had their 
  1482. roots in old sources like those.
  1483.  
  1484. Sometimes some functionality in a non-game source would lend itself to a 
  1485. game element, so, in light of that, get every example source you can 
  1486. (eventually).  Like something that draws a grid, then inverts rectangles 
  1487. on mouse-clicks, could be used in a concentration or some such game.  See?
  1488.  
  1489. What sort of game are you leaning toward?  Maybe someone could steer you 
  1490. toward sources closer to that type.  There are probably a lot more around 
  1491. that I didn't mention, because my "gray region" isn't what it used to be.
  1492.  
  1493. -Ken-
  1494.  
  1495. +++++++++++++++++++++++++++
  1496.  
  1497. >From backman@macademic.se (Anders Backman)
  1498. Date: 14 Jan 1995 17:10:52 GMT
  1499. Organization: Macademic Computer AB
  1500.  
  1501. In article <Anders.Wahlin-1301950851410001@bigmac.hum.gu.se>,
  1502. Anders.Wahlin@hum.gu.se (Anders Wahlin) wrote:
  1503.  
  1504. > I'd like to learn about the techniques on how to make a simple game. I
  1505. > think that the only way to learn this is to look at other source codes?
  1506. > I've looked at the Tetris Light source code, but there has to be more than
  1507. > that? So, does anyone know where to find source codes, informations etc.
  1508. > on how to make a game?
  1509. > Any help is appreciated. Thank you.
  1510. > -- 
  1511. > Anders Wahlin
  1512. > Anders.Wahlin@hum.gu.se
  1513.  
  1514. There is a shareware development package called SpriteWorld, probably at
  1515. sumex-aim.stanford.edu. It contains two semifinished games moulded on
  1516. Asteroids and Breakout. The well written documentation is styled like the
  1517. old Inside macintosh books and veru easy to use. If you are interested in
  1518. doing arcade style games this is well worth looking into, but to almost no
  1519. use if you are going to do a flight-sim or Marathon clone.
  1520.  
  1521. /Anders Backman
  1522.  
  1523. +++++++++++++++++++++++++++
  1524.  
  1525. >From david.woodall@hermes.ces.wa.com (David Woodall)
  1526. Date: Sat, 14 Jan 95 14:26:00 -0800
  1527. Organization: CES Internet Gateway
  1528.  
  1529. KL> From: kenlong@netcom.com (Ken Long)
  1530. KL> : Anders Wahlin (Anders.Wahlin@hum.gu.se) wrote:
  1531. KL> : : I'd like to learn about the techniques on how to make a simple game. I
  1532. KL> : : think that the only way to learn this is to look at other source
  1533. KL> codes? : : I've looked at the Tetris Light source code, but there has to
  1534. KL> be more than : : that? So, does anyone know where to find source codes,
  1535. KL> informations etc. : : on how to make a game?
  1536.  
  1537. There is some source code at one of Apple's anonomyous FTP sites. 
  1538. ftp.info.apple.com has some source code and so documentation.  Look in the
  1539. Development folder.
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545. +++++++++++++++++++++++++++
  1546.  
  1547. >From catambay@aol.com (Bill the Cat)
  1548. Date: Thu, 19 Jan 1995 08:44:07 -0800
  1549. Organization: Larryville
  1550.  
  1551. In article <kenlongD2DEFo.HEJ@netcom.com>, kenlong@netcom.com (Ken Long)
  1552. wrote:
  1553.  
  1554. > : Anders Wahlin (Anders.Wahlin@hum.gu.se) wrote:
  1555. > : : I'd like to learn about the techniques on how to make a simple game. I
  1556. > : : think that the only way to learn this is to look at other source codes?
  1557. > : : I've looked at the Tetris Light source code, but there has to be more than
  1558. > : : that? So, does anyone know where to find source codes, informations etc.
  1559. > : : on how to make a game?
  1560. > There are a few more, around - some complete and some not.
  1561. > I got the source for MacMan - a B/W but excellent rendition of PacMan, 
  1562. > from the author for $15.  Heluvadeal!
  1563. > SpriteWorld has some example game source (incomplete) similar to CheeseToast.
  1564. > It also has some Breakout sources in it.
  1565. > Sprite Animation Toolkit has some C sources for much of the functionality 
  1566. > of games, like SpaceInvaders, and some others.  It also has complete 
  1567. > Pascal source for HeartQuest - a "CrystalQuest" type game.
  1568.  
  1569. Can someone tell me how I can get a copy of the Sprite Animation Toolkit? 
  1570.  
  1571. Thanks!  (please E-mail)
  1572.  
  1573. Bill
  1574.  
  1575. +++++++++++++++++++++++++++
  1576.  
  1577. >From cjsmith@nwu.edu (Jeremy Smith)
  1578. Date: Thu, 19 Jan 1995 22:15:50 -0600
  1579. Organization: Northwestern University, Evanston, IL, US
  1580.  
  1581. -snip-
  1582. > Can someone tell me how I can get a copy of the Sprite Animation Toolkit? 
  1583. > Thanks!  (please E-mail)
  1584. > Bill
  1585.  
  1586.    I'm pretty sure SAT can be found ftp://sumex-aim.stanford.edu:info-mac
  1587. in the dev directory.  If it's not there, look in umich or search this
  1588. newsgroup for postings by Ingemar, (I can't seem to find his e-mail
  1589. address) the author of SAT, and ask him.
  1590.  
  1591. +++++++++++++++++++++++++++
  1592.  
  1593. >From ingemar@lysator.liu.se (Ingemar Ragnemalm)
  1594. Date: 22 Jan 1995 11:47:50 GMT
  1595. Organization: (none)
  1596.  
  1597. cjsmith@nwu.edu (Jeremy Smith) writes:
  1598.  
  1599. >> Can someone tell me how I can get a copy of the Sprite Animation Toolkit? 
  1600.  
  1601. >   I'm pretty sure SAT can be found ftp://sumex-aim.stanford.edu:info-mac
  1602. >in the dev directory.  If it's not there, look in umich or search this
  1603. >newsgroup for postings by Ingemar, (I can't seem to find his e-mail
  1604. >address) the author of SAT, and ask him.
  1605.  
  1606. Last time I looked, SAT 2.1.2 was available just where Jeremy says at Sumex,
  1607. and at UMich too. The latest version, 2.3a1 (soon to be replaced by 2.3a2,
  1608. as soon as I have verified that the demos work with MetroWerks C) is available
  1609. from ftp.lysator.liu.se, in pub/mac/sat. It seems as if those newer versions
  1610. are stable enough to replace 2.1.2 any time now.
  1611.  
  1612. --
  1613. - -
  1614. Ingemar Ragnemalm, PhD
  1615. Image processing, Mac shareware games
  1616. E-mail address: ingemar@isy.liu.se or ingemar@lysator.liu.se
  1617.  
  1618. ---------------------------
  1619.  
  1620. End of C.S.M.P. Digest
  1621. **********************
  1622.