home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / games / gamesuite / !Amnesia / AmsHelp / Basics < prev    next >
Text File  |  1995-01-29  |  7KB  |  196 lines

  1. The Basics - Amnesia - Version 1.00
  2. ===================================
  3.  
  4. Basic Use
  5. ---------
  6.  
  7. This file contains the information necessary to use Amnesia for simple tasks
  8. in a form suitable for the inexperienced programmer.  It describes how to
  9. write a simple program in BASIC.
  10.  
  11. A Simple Amnesia Program
  12. ------------------------
  13.  
  14. Programs using Amnesia to display and move objects on the screens must do the
  15. following things:
  16.  
  17. (1) Initialise Amnesia
  18. (2) Arrange a way to plot sprites
  19. (3) Set up some sort of table of objects
  20. (4) Create objects in that table
  21. (5) Process the table
  22.  
  23. I’ll deal with each of these in turn.
  24.  
  25. (1) Initialising Amnesia
  26. ========================
  27.  
  28. When you initialise Amnesia you basically tell it which bit of memory you
  29. want it to use.
  30.  
  31. Instruction
  32.  
  33. SYS "Amnesia_Init",address,length,type
  34.  
  35. address= the address of the memory you want Amnesia to use
  36. length = the amount of memory available to it there
  37. type   = the type of area.  Type 2 is best suited for BASIC programs.
  38.  
  39. Example
  40.  
  41. At the start of your program you would code something like
  42.  
  43. arealen=&4000         ;16Kbytes
  44. DIM area arealen      ;Tell BASIC to reserve some memory for you
  45.                       ;of length arealen, and put the address of the
  46.                       ;memory it’s reserved in the variable 'area'
  47. SYS "Amnesia_Init",area,arealen,2   ;Tell Amnesia
  48.  
  49. If you want to keep it really simple you can put the Amnesia area in the RMA.Simply pass zero as your area address.  Only one line is needed
  50.  
  51. SYS "Amnesia_Init",0,&4000,2
  52.  
  53. This has the advantage that if you return to the Desktop, your Amnesia area
  54. will still be there so you can use the debugging command *Amnesia Blocks.
  55.  
  56. Notes
  57.  
  58. You can work out the right value of arealen by trial and error.  If it’s too
  59. small, Amnesia will give you a 'Not enough memory' error, so you can increase
  60. arealen and try again.
  61.  
  62. (2) Arranging a Way to Plot Sprites
  63. ===================================
  64.  
  65. Amnesia is designed to work with the FastSpr module.  You should have
  66. received a copy with Amnesia, with instructions and a sprite file maker.  You
  67. don’t have to use FastSpr, but it will make things easier.
  68.  
  69. Firstly, make sure FastSpr is loaded:
  70.  
  71. *Run FastSpr:!Run
  72.  
  73. This will load the module.  It’s best placed in your !Run file (more of that
  74. later) but can be in your main program if you wish.
  75.  
  76. FastSpr loads files using the following command:
  77.  
  78. *FastSprLoad 1 FSPSprites
  79.  
  80. This will load a file called FSPSprites into sprite pool 1.  You can load
  81. lots of sprite files - each into a different pool.
  82.  
  83. See the instructions with FastSpr for more information.
  84.  
  85. (3) Set Up Some Sort of Table of Objects
  86. ========================================
  87.  
  88. Tables of objects are Amnesia’s bread and butter.  They are a powerful way to
  89. handle the player, aliens, bombs, bullets and really anything that needs to
  90. be plotted as a sprite on the screen.  Before you can use a table, you must
  91. tell Amnesia what sort of table you want.
  92.  
  93. Instruction
  94.  
  95. SYS "Amnesia_ClaimTable",table number,flags,name$,number of objects, length
  96. of objects
  97.  
  98. The table number is a number from 1-31, which you will use to identify the
  99. table later.
  100.  
  101. If flags=1 Amnesia will prepare this table for collision checking - otherwise
  102. not.
  103.  
  104. name$ is for your use only.  It is used to make the debugging information
  105. more readable.  The name may be up to 8 letters long.  Names like "Aliens" or
  106. "Bullets" are good.
  107.  
  108. The number of objects is just that.  If you want 20 aliens, set this number
  109. to 20.  Note that this is the maximum number - if you specified 20, you could
  110. have any number up to 20, but no more.
  111.  
  112. The length of the objects is the number of bytes given to each object.  Use
  113. 32 for standard objects.
  114.  
  115. Example
  116.  
  117. SYS "Amnesia_ClaimTable",1,1,"Aliens",27,32
  118.  
  119. This command sets up table 1 with 27 spaces for objects 32 bytes long, and
  120. tells Amnesia that we will need to collision check these objects.
  121.  
  122. (4) Create Objects In That Table
  123. ================================
  124.  
  125. So you’ve created an empty table.  You need to create some objects in that
  126. table, like bullets or aliens etc.  There are various ways to do this, but
  127. the easiest is with the purpose built SWI.
  128.  
  129. Instruction
  130.  
  131. SYS "Amnesia_MakeObject",table number,sprite number,flags,x coord,y coord,x
  132. velocity,y velocity,timer,size
  133.  
  134. It’s a big one, isn’t it!  I’ll go through each number in turn.
  135.  
  136. Table number : The same number you gave to Amnesia_ClaimTable as a table
  137. number.
  138.  
  139. Sprite number : See the information with FastSpr for full info, but briefly
  140. the number is in the form &xx00yyyy where x is the sprite pool, and y is the
  141. sprite number.  &02000003 would mean sprite 3 from sprite pool 2.
  142.  
  143. Flags : This value tells Amnesia what sort of properties the object has. 
  144. Whether it moves, whether it has a timer, whether it is animated, whether it
  145. obeys gravity etc etc.  A full list of flags is in the flags help file. 
  146. Here’s a couple for the moment.
  147.  
  148. If bit 0 is set, the object is plotted by FastSpr
  149. If bit 2 is set, the object moves
  150.  
  151. x coord : The x position of the sprite (remember, x is a cross 8-) ). 
  152. Amnesia uses different coordinates to normal BASIC.  The top-left of the
  153. screen is (0,0) and in MODE 13 (320x256) the bottom right is
  154. (320<<12,256<<12).  320<<12 means 320 shifted right 12 places in binary,
  155. which is the same as multiplying by 4096.
  156.  
  157. y coord : Similarly
  158.  
  159. x velocity : The velocity is added to the x coordinate every time the table
  160. is processed (see later in (5)) if and only if bit 2 is set in the flags.
  161.  
  162. y velocity : Similarly
  163.  
  164. timer : The timer can be thought of as split into two halves, like &xxxxyyyy. 
  165. x is the timer value, and y is the value subtracted from the timer on each
  166. process pass (see (5)).  So if the timer value is &012C0003, the timer value
  167. is &12C and 3 is subtracted on each process pass.  With this value, the timer
  168. will expire after 100 process passes (&12C=300).
  169.  
  170. size : Again this is split like the timer.  The value is of the form
  171. &xxxxyyyy, where x is the x size in pixels, and y is the y size.  So for a
  172. sprite 32 pixels wide and 16 high, the value would be &00200010.  You can ask
  173. Amnesia to work out the size from the FastSpr file by setting bit 6 in the
  174. flags.  This is usually a good idea.
  175.  
  176. (5) Processing the Table
  177. ========================
  178.  
  179. Table processing is controlled by two SWIs - Amnesia_SelectTable and
  180. Amnesia_ProcessTable.  These SWIs communicate using registers R0, R1 and R2. 
  181. A typical table process goes like this:
  182.  
  183. SYS "Amnesia_SelectTable",1,0,0 TO R0,R1,R2
  184. REPEAT
  185.   SYS "Amnesia_ProcessTable",R0,R1,R2 TO R0,R1,R2
  186. UNTIL R2=0
  187.  
  188. Amnesia_SelectTable is called to tell Amnesia which table you wish to
  189. processand what you want to do with that table.  Read its entry in the SWI
  190. docs for a full explanation.  With the parameters above it selects table 1
  191. for a standard process.
  192.  
  193. This table process will simply plot and move your objects.  You can do a lot
  194. more than this when you process a table.  See the help file called Process
  195. for more information.
  196.