home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 605a.lha / Worm / Worm.doc < prev    next >
Text File  |  1992-01-12  |  9KB  |  147 lines

  1.             WORM 47.023, ±.0000519
  2.  
  3.         By Paul Trauth, with special guest coder Jason Fonseca.
  4.         Invaluable debugging help: David Vazquez (two heads are
  5.                                            better than none...)
  6.  
  7.     I've written this little hack too damn many times. This is its latest,
  8. and hopefully last, incarnation. This incarnation is of minor interest,
  9. being as it is my first Amiga program, unless you want to count "Feh" in
  10. its two or three incarnations. (I'd rather not.) Actually, it's not really
  11. my first any more; I've written a couple of demi-demos, but this is my first
  12. code that talks politely with the system instead of giving it the old heave-
  13. ho. (Politely, but still the ol' heave-ho.) As far as I can tell, it lives
  14. with the OS rather well, with the possible exception of not checking for
  15. success in opening libraries. But then again, if you can't open
  16. intuition.library or graphics.library, you most likely won't be able to get
  17. this file loaded in anyway, since other crucial, ROM-resident libraries might
  18. not be there either. You have been warned. (And if anyone knows a good reason
  19. to be a good li'l coder and always check, and can give an example of when it
  20. WOULD fail, let me know, and I'll start being a good boy.)
  21.  
  22.     This *final* version was written on January 10-11, 1992, last assembly
  23. at around 4:15 AM. Yes, it sat around for a LONG time before gettin
  24. finished; the last time I touched this was sometime in early to mid '91. I
  25. used Devpac 2 to code and DPaint 3 for the images, though I converted the
  26. sprites to hex data by hand. This was before I got nifty IFF hacking tools.
  27.  
  28.     This is probably the smallest screen hack out there, especially for
  29. what it does. The executable is under 2.5K, a bit more than a third of the
  30. size of the source, and quite smaller than this documentation (quite
  31. possibly some of the worst [but not the least amusing] documentation
  32. written by a native speaker of English!) as well. By the way, it DOES have a
  33. potential use: on those long compiles, you can try and trap the worm in a
  34. corner. It CAN be done, although eventually it tends to find a way out.
  35.  
  36.      A techie note of minor interest:
  37.      The worm's XY coordinates are kept internally on a 1280×800 grid,
  38. plotzed down to a 320x200 grid for output. This keeps things nice and
  39. smooth, especially on those turns. Any more tech stuff, you gots to figure
  40. out for yourself by staring at the vaugely commented source for hours on
  41. end. At least I was nice enough to include source... working assembly is SO
  42. hard to find, except for ripped demo sources. (Pleh. If I'm gonna take over
  43. the system, I wanna run my OWN bad code, not bad code swiped from somebody
  44. else...)
  45.  
  46.     And now, here's most of the doc file for the last version, thanks to
  47. the wizardry of cross-file cut-n-paste. (I _love_ DME.)
  48.  
  49. ----------------------------------------[Don't cut here.]-------------------
  50.     What can we say. We apologise for this hack. It slipped out one long,
  51. long night...
  52.  
  53.     Revision History.
  54.  
  55.     (No dates for older versions, we're senile already.)
  56.  
  57.     Original Concept and Algorithm (Sort of) from a 'Computer Recreationz'
  58. column in Scientific American. Original was on an (ecch) IBM, using SIN and
  59. COS and other (ugh) Trig functions to calculate.
  60.     Totally re-hacked from the ground up into 6502 on a C64 by Paul Trauth,
  61. using all 8 available sprites for worm display, as well as some totally
  62. obnoxious sound effects. Used LOTS of little 16-byte long tables.
  63.     Re-re-hacked on the Amiga in Benchmark Modula-2 (because it was all we
  64. had sitting around, ugh) from about 10 PM 2/1/90 to 8 AM 2/2/90 by Jason
  65. Fonseca and Paul Trauth. Mostly Jason wrote this version, Paul just sat
  66. around converting the graphics into hex (yeecccchhhhh) numbers and offering
  67. incoherent explanations of how his original C64 version worked.
  68.     There were about four versions once we got the main engine running
  69. (ooh, don't we sound professional?)... at first the worm didn't give a
  70. flying about the pointer. We still have this version sitting around, just
  71. because we like nostalgic moments. ("Wow, remember when all it would do was
  72. wander around at the speed of light and go off the screen, coming back
  73. every hour or so?" "Yeah, those were the days...") Then we decided that
  74. that was kinda tacky. So we made the worm stay on-screen, after four or
  75. five crashes and re-boots. (Not to mention all the crashes just trying to
  76. get the SPRITES up in the FIRST place!) And now look what we have, this
  77. completely multi-tasking (well, OK, it's not REALLY multi-tasking 'cause
  78. you can't close it, but that's only because we couldn't get a window up
  79. without it crashing...[But at least it multi-tasks with itself! Yep, that's
  80. right, you can actually run multiple copys and it won't crash! It's really
  81. annoying, what with the flicker and all, but hey, you can do it.
  82. Nyaah.]...but that's coming in the next revision. Maybe.) little screen
  83. hack that runs away from your pointer and even runs away from the right
  84. spot on the screen! In fact, if you just let your mouse alone, the worm
  85. will NEVER (Never never never ever never no, not never, well, maybe every
  86. once in a while) run into the pointer because of the special neural network
  87. we designed for it. Not really. We just thought that would sound good.
  88. Actually, this is an excellent example of 'Goal-Directed Animation',
  89. whatever that may be, I dunno, but it sounds good.
  90.     We're proud of our little blue worm. Really. Trust us. Look for the
  91. next release coming out Real Soon Now that might even have a close gadget
  92. on it. And an icon. A real nice icon. The icon would have been on this
  93. release but Paul left the disk with it at home. And of course there are the
  94. other silly ideas, like several worms avoiding each other done with
  95. VSprites, a few little tanks running around like the worm head constantly
  96. pointing their turrets at the pointer, and other silly shit like that.
  97.     Disclaimer (Every silly little program like this has to have an
  98. obnoxiously obvious disclaimer.): We take no responsibility for any
  99. crashes, memory loss, hairy palms, blindness, insanity, hardware damage,
  100. dismemberment, or death that may occur through use (or abuse [How the hell
  101. do you abuse this thing anyway?]) of this hyah little bit 'o wonderment.
  102.     Disclaimer II: Jason had nothing whatsoever to do with this doc file
  103. (at least that's what he wants YOU to think!); Paul typed it all. I make no
  104. apologies for this file, it's late. No, early. Er...
  105.  
  106.     Thank you for your [lack of?] support.
  107.  
  108. -------------------[Still don't cut here.]----------------------------------
  109.     Most of that silliness applies here, too. This version was developed
  110. over a period of a few weeks, er, actually, most of a year... It would have
  111. taken a LOT less time, but I just wasn't in a coding kind of mood for a
  112. good part of that period, and for much of my coding moods, I was working on
  113. other stuff... (an adventure game, a demo, my own blob routine... none of
  114. which are finished. Figures.)
  115.     This version DOES have a fully functional close gadget, I liked the bit
  116. about not having one so much I just had to leave it in.
  117.     Some 90% or so of this version was entirely designed by me, Paul.
  118. (...You Jane? er...) I think that Jason was there (back-seat coding) while
  119. I wrote the first version of the sprite-grabbing routine, which was
  120. initially _much_ nastier. It originally made quite sure that it would be
  121. able to get all the sprites by freeing them first. We eventually decided to
  122. be nicer to other programs, and the Worm will now quietly suicide if it
  123. can't get sprites 2-7.
  124.     And, of course, David helped me sit here and figure out just why the
  125. @#$% it wasn't positioning the sprites correctly. Arrgh.
  126.     I seriously doubt this will work on 2.0. If this section of the docs is
  127. still here when you read this, I haven't tried it. My coding techniques are
  128. just manaical enough to have a good chance of crashing and burning under
  129. 2.0, and since I don't have $3-4000 or so lying around to get a 3000, or a
  130. handy friend who did, or for that matter $100 to buy the ROM chips for my
  131. zebra-striped 2000, I can't test it too readily.
  132.     Oh. By the way. Jason gets 50% of full credit for the mouse pointer
  133. avoidance algorithm. While the smooth, fast rotation routines and tables
  134. were created by me for the first C64 version, we both busted our skulls
  135. over that pointer avoiding bit. I get a headache just thinking about that
  136. night.
  137.     If you have any comments, job offers (Ha!), money (Ha! Ha!), spare SCSI
  138. hard drives or whatnot for me, send 'em to:
  139.     Paul Trauth/Ducksoft
  140.     4752 Press Drive
  141.     New Orleans, LA 70126
  142.  
  143.     Electronically, I can be reached on Usenet:
  144.     paul_trauth@agwbbs!new-orleans.LA.US
  145.  
  146.     Enjoy.
  147.