home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk User Volume 4 #4 / Commodore_Disk_User_Vol.4_4_1991_-.d64 / ge.info < prev    next >
Text File  |  2022-10-26  |  9KB  |  354 lines

  1.                                
  2.         
  3.      GALACTIC ENCOUNTER- EXTRA INFO
  4.     ================================
  5.  
  6.          -* By P. Makepeace *-
  7.  
  8.      -* (C)  Alphavite Publications *-
  9.  
  10.  
  11.  
  12.          Machine Code Routines
  13.         -----------------------
  14.  
  15.  
  16.  The Machine Code uses a Jump Table
  17. starting at $c000 (49152). The start
  18. address of each routine is followed by
  19. the variable which is used in the BASIC
  20. program to run it, e.g  SYS FX,1
  21.  An asterisk denotes the routine is on
  22. the utilities section (see below). The
  23. address below is the one used in the
  24. utilities section.
  25.  WARNING! These routines cannot be used
  26. from within machine code as they read
  27. parameters from BASIC.
  28.  
  29.  
  30.         The Utilities Section
  31.        -----------------------
  32.  
  33.  On the disk is a shortened version of
  34. the machine code section which contains
  35. some useful routines that could be used
  36. in other BASIC programs. To use these,
  37. LOAD"GE.MC UTILS",8,1. Then any of the
  38. following can be used:
  39.  
  40.  AT=49152 Print AT
  41.  SP=49155 Pulsing Sprite 1
  42.  SE=49158 Flash Sprite 1 momentarily
  43.  FX=49161 Four sounds
  44.  PU=49164 Pulse a line of text
  45.  CS=49167 'Chase Lights' effect on text
  46.  RV=49170 Reverse text
  47.  SC=49173 Scroll a message!
  48.  
  49.  After defining the variables above,
  50. the routines can be used by SYS FX,1
  51. or whichever.
  52.  
  53.  
  54. * 49152 AT,pos (0-999),string
  55.   49152
  56.  
  57.  This positions the cursor at 'pos' and
  58. prints the following string. Examples:
  59.  
  60. SYS AT,80,"Hello!"
  61. SYS AT,120,"";
  62. SYS AT,20,a$+"Hi.";
  63. etc. 
  64.  
  65.  N.B. The version of this on the
  66. Utilities Section requires an X,Y
  67. [(0,0) is the top-left, (39,24) the
  68. bottom-right] position rather than a
  69. screen position. Otherwise, they are
  70. the same.
  71.  
  72. * 49155 SI,speed (0-255)
  73.   49155
  74.  
  75.  This turns on Sprite 1, and sets up an
  76. IRQ at $0314 to pulse the sprite at
  77. 'speed' speed.
  78. POKing 251,1 makes the sprite flash
  79. black and white until POKE 251,0
  80.  $02 is used as a countdown for the
  81. next colour change.
  82.  $FC contains the current colour of the
  83. sprite.
  84.  This routine perfroms the necessary
  85. bank-switching to allow the character
  86. set at $7800 to be accessed. The screen
  87. position must also be changed to $7400.
  88. All this is done by:
  89.  POKE 648,116   Move screen to $7400
  90.  POKE 56576,150 Point VIC Chip to Bank1
  91.  POKE 53272,223 Point VIC Chip to:
  92.                 $7400 - Screen.
  93.                 $7800 - Character set.
  94.  
  95.  49158 CH,X (0-6),Y (0-6),
  96.              character (0-17)
  97.  
  98.  This prints one of the board
  99. characters on to the board in the
  100. appropriate place on the screen, the
  101. calculations are done in MC.
  102.  
  103.  The characters are:
  104.  
  105.     0: Blank space
  106.     1: Blackhole
  107.   2-5: Player One ships
  108.     6:            destroyer
  109.  7-10: Player Two ships
  110.    11:            destroyer
  111. 12-13: Big    :
  112. 14-15: Medium :Debris Cloud
  113. 16-17: Large  :
  114.  
  115.  49161 SP,X,Y,Flag
  116.  
  117.  This moves sprite 1 to the board
  118. postion X,Y. If Flag is 1 then the
  119. sprite will move smoothly otherwise it
  120. will move there directly.
  121.  
  122. *49164 SE,speed (0-255)
  123.  49158
  124.  
  125.  This sets 251 to 1 for a short time
  126. depending on the speed, then resets it
  127. to pulsing. It also changes the sprite
  128. pointer 2040 from 13 to 15
  129. (EOR #2 in MC) and back again when it
  130. is SYSed again.
  131.  
  132. *49167 FX,sound (0-3)
  133.  49161
  134.  
  135.  This makes one of the following
  136. sounds:
  137.  0: 'ding'
  138.  1: 'barp'
  139.  2: launch of the bullet
  140.     (POKE 54276,129 to finish the
  141.     sound).
  142.  3: An explosion sound
  143.  
  144.  49170 B1,colour (0-15)
  145.  
  146.  This prints the border around the edge
  147. of the screen in 'colour'.
  148.  
  149.  $C015 49173 B2,colour (0-15)
  150.  
  151.  This prints the board in 'colour'.
  152.  
  153. *49176 PU,pos,length (0-255),speed,Flag
  154.  49164 PU,X,Y,....
  155.  
  156.  This pulses a line or lines of text
  157. starting at pos and pulsing 'length'
  158. number of characters after it at
  159. 'speed'. If Flag is 1-255, the routine
  160. will pulse the line ABOVE too, this is
  161. used for underlined text. Remember to
  162. set pos to the line below the text if
  163. Flag is set.
  164.  
  165. *49179 CS,(see above)
  166.  49167
  167.  
  168.  This is identical to 'PU'lse but the
  169. effect is like American Police Car
  170. lights, a sort of strobe. See the
  171. STATUS REPORT just before a message.
  172.  
  173.  49182 BL,X,Y,Flag
  174.  
  175.  This is the same as 'SP'rite-move but
  176. changes Sprite 1 to the bullet (POKE
  177. 2040,15) before moving it. Flag is
  178. always set to 1-255 so the bullet moves
  179. slowly.
  180.  
  181.  49185 SR,speed
  182.  
  183.  This is half way through SPRIRQ (SI),
  184. which resets the sprite to 13 and sets
  185. sprite priority LOW (it is seen behind
  186. text). It also clears the keyboard
  187. buffer.
  188.  
  189.  49188 WP
  190.  
  191.  This clears the right hand side of the
  192. screen for use in Setup and clearing
  193. the different menus.
  194.  
  195. *49191 RV,pos,length
  196.  49170 RV,X,Y,length
  197.  
  198.  This reverses 'length' number of
  199. characters starting at 'pos'. It is
  200. used in Setup to move the select bar.
  201. It reverses the characters by EORing
  202. them with 128 so the routine will need
  203. to be SYSed twice to get the text back
  204. to normal.
  205.  
  206. *49194 SC,string name,pos/X,Y,length,
  207.  49173          speed,Flag
  208.  
  209.  This is a very handy routine. It looks
  210. for a string called 'string name', this
  211. can either be 1 or 2 characters long.
  212. It scrolls this message at 'pos'. The
  213. length of the scroll message is
  214. 'length' and the scroll speed is
  215. 'speed'. If Flag is set, the scrolling
  216. will stop at the end of the string,
  217. otherwise the scrolling will continue
  218. till the message is no longer visible.
  219.  During scrolling, pressing Space or
  220. the joystick button will speed up
  221. scrolling by about 8 times whereas
  222. pressing any other key will temporarily
  223. halt the scrolling. Moving the joystick
  224. will also do this. The keyboard buffer
  225. is cleared after the routine
  226.  
  227.  Example: (Using the Utilities):
  228.           ZZ$="Hello there !":SC=49176
  229.           SYS SC,ZZ,1024,5,30,0
  230.  
  231.  49197 EX,X,Y,speed
  232.  
  233.  This makes a explosion at X,Y on the
  234. board by printing the debris clouds
  235. repeatedly.
  236.  
  237.  49200 PB
  238.  
  239.  This prints all the pieces on to the
  240. board by looking at the integer array
  241. BO(ard)%(0,0). This routine executes in
  242. a fraction of a second, whereas BASIC
  243. does it in around 20 seconds!
  244.  
  245. =======================================
  246.  
  247.             BASIC Variables
  248.            -----------------
  249.  
  250.  Apart from the variables used to jump
  251. to the machine code, the main variables
  252. used in the BASIC program are listed
  253. below with a brief explanation of their
  254. use:
  255.  
  256.   BO%(6,6) This integer array contains
  257. the characters on the board. 0,0 is at
  258. the top-left.
  259.  
  260.   X,Y These contain the coordinates for
  261. BO%(X,Y). X and Y are also used in
  262. moving the sprite using SP (see above)
  263.  
  264.   BR$(0-10) These contain the
  265.            descriptions for BO%(X,Y)
  266.            e.g. PLR.1 SHIP etc.
  267.  
  268.   R$(0-5)   These contain the results
  269.            of firing i.e. hit, miss etc.
  270.   BR This contains BO%(X,Y)
  271.   Z  This is the position for AT
  272.   MV Number of moves
  273.   M(0/1) Number of moves remaining for
  274.        Player One/Two
  275.   DH Number of hits to zap destroyer
  276.   D(0/1) Number of hits remaining for
  277.          Destoyers 1 and 2
  278.  SC$ This contains the message to be
  279.      scrolled using SYS SC,...
  280.   SL Length of scrolling message
  281.    P Current player: 0 for Pl.1
  282.                      1 for Pl.2
  283.   C1,C2,C3 Counters used in FOR.NEXT
  284.            loops
  285.   P1,P2,P3 Pause lengths for Scrolling,
  286.                              Select and
  287.                              Explosion.
  288.    V 53248, the start of the VIC chip.
  289.   J1 56320 location for JOY Port 2
  290.    J Contents of J1 (J=PEEK(J1))
  291.   K$ Used to get keys
  292.   UP$,DO$,LE$,RI$,FI$ Keys for movement
  293.   UP 126 :
  294.   DO 125 :Values for joystick movements
  295.   LE 123 :
  296.   RI 119 :
  297.   FI 111 :
  298.   U,D,L,R,S These flags are set when J
  299.             equals any of UP,DO etc. or
  300.             K$ equals UP$,DO$ etc.
  301.   F This is a flag for when Spc/Ret is
  302.     pressed
  303.  
  304. ========================================
  305.              BASIC Routines
  306.             ----------------
  307.  
  308.  
  309.      10 Start, set up variables and
  310.         print board.
  311.     100 START, Setup option.
  312.     200 MAIN LOOP. This moves the
  313.         cursor around till a piece is
  314.         selected.
  315.     400 CHECK Check for valid selection
  316.     500 SELECT Piece selected, main
  317.         loop for moving piece.
  318.     700 FORWARD Move piece on square
  319.         forward.
  320.     900 ROTATE Rotates piece depending
  321.         on L and R flags.
  322.    1000 FIRE! This also checks to see
  323.         whether the player has no ships
  324.         if so, ends game or play again.
  325.    2000 DEBRIS diminishes debris.
  326.    2200 REDUCE TURNS Decrement M(P). If
  327.         this is zero, EN=1
  328.    2300 FIND PLAYER Used at the
  329.         beginning of each round to move
  330.         cursor on to a ship.
  331.    2500 COMMENTS Prints a description
  332.         of the piece under the cursor.
  333.    3000 SCROLL Scrolls message in SC$
  334.         at Z, SL length at P1 speed.
  335.         This also pulses STATUS REPORT
  336.         when Z=1890.
  337.    3300 KEY/JOY Gets a Key/Joystick
  338.         press/movement and sets U,D,L,R
  339.         F and S accordingly
  340.    4000 Y/N? Gets Yes/No response and
  341.         sets PO if POsitive reply.
  342.         Spc/Ret or Fire Button=Yes
  343.    6000 SETUP
  344.    7000 Load/Save/Default
  345.    7200 Load
  346.    7500 Save
  347.    7600 Default
  348.    8000 EDIT PIECES.
  349.    8700 REDEFINE KEYS
  350.    9000 PRINT BOARD and rest of screen.
  351.   10000 VARIABLES Sets up ALL variables
  352.   11000 DATA for variables.
  353.  
  354. ********By P. Makepeace, Nov '89********
  355. ~
  356.  
  357. '1;eoyCMW{SHIFT-POUND}{CBM-W}{CBM-X}GQ{SHIFT-+}{$e5}{$ef}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~