home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / gry / boulderdash / bdash.doc < prev    next >
Text File  |  1977-12-31  |  19KB  |  623 lines

  1.  
  2.  
  3.         -= BoulderDash V1.1 User Manual =-
  4.  
  5.              September 14, 1994
  6.  
  7.  
  8.  
  9. ==========
  10.  Contents
  11. ==========
  12.  
  13.      1. About the game
  14.      2. Installation
  15.      3. Menus
  16.      4. Playing the game
  17.      5. Cheat keys
  18.      6. File formats
  19.         6.1 Game files
  20.         6.2 Config file
  21.      7. Known bugs.
  22.      8. What's up next ? 
  23.      9. History
  24.     10. Thanks..
  25.  
  26.  
  27. ===================
  28.  1. About the Game
  29. ===================
  30.  
  31.     "Yet another BoulderDash !", I can hear you scream. We all know the
  32. game from those early days on the C64, spectrum and other computers, so why
  33. does anybody wants to (re)make this old game ? Well simply because it's one
  34. of the best games ever made. 
  35.  
  36. This BoulderDash version has the following features:
  37.  
  38.     * NEEDS (and uses) 68020+, AGA (or better) ChipSet, Kickstart V39,
  39.       asl.library and powerpacker.library.
  40.  
  41.     * Intuition friendly with full multitasking. At last you can play your
  42.       favorite game while compiling etc...
  43.  
  44.     * Smooth scrolling
  45.  
  46.     * The famous (and cool) C64 graphics
  47.  
  48.     * The famous C64 sounds.
  49.  
  50.     * User definable games and levels
  51.  
  52.     * Joystick and keyboard control
  53.  
  54.     * Cheat options
  55.  
  56.     * Two player game option
  57.  
  58.     * About 1275(!) original C64 levels included for you to complete...
  59.  
  60.  
  61.     BoulderDash was written in C, except for the Interrupts which were written
  62. in Assembler. All code developed on an Amiga 1200(+4MB 120HD) with SAS/C 6.3,
  63. Devpac 3 and CED.
  64.  
  65.     The sounds were sampled by me (Wim) on 20 kHz. The intro-music contains
  66. the exact tables as are used in the C64 version.
  67.  
  68.     The graphics were converted and adjusted by me without using any
  69. utilities ! (I converted them by hand due to the fact that I was to lazy to
  70. use (write) a utility).
  71.  
  72.     The intropicture was scanned by Luc De Cock from the cover of the
  73. original of BoulderDash II (thanks). Luc will use my C source to make a
  74. PC version in the near future.
  75.     
  76.     This version of is shareware, this means that if you use it a lot I would
  77. appreciate it if you'd send me a contribution of $10 US or the same amount in
  78. any other currency. This money will enable me to produce more programs on the
  79. Amiga and continue to improve this game. Please send money by international
  80. money order, EuroCheck (in Belgian Francs (BF) !!!!!) or cash, it's difficult
  81. for me to cash in other checks.
  82.  
  83.     Since I am constantly adding new features to the game, I accept all
  84. suggestions, improvements and bug reports. You can contact me at :
  85.  
  86.     Wim Taymans
  87.     Weesbeekdal 3
  88.     3071 Erps-Kwerps
  89.     Belgium.
  90.  
  91.  
  92. NOTE: I am aware of a few copyright violations (ripping graphics, sound,
  93.       ideas). Please do not spoil my fun, I had a great time making this
  94.       game. Many Amiga users I know are happy to play this game once again.
  95.  
  96. ONE MORE NOTE : If this game is ever put on a cover disk of any magazine, I
  97.       will be very happy to receive a copy of that magazine. Donations in
  98.       the form of money are welcome too :').
  99.  
  100.  
  101.  
  102. ==================
  103.  2. Installation
  104. ==================
  105.  
  106.     Installation is simple, just place the file 'BDash' somewhere in your
  107. 'Games' directory under the new directory 'BoulderDash' or something like
  108. that. You can copy the levels in that same directory.
  109.  
  110.     The config file is searched for in de S: directory and the current directory
  111. (in that order). I suggest you let the original config file in the current
  112. directory, start the game, set your preferences and select the Save Prefs
  113. option, this way a new config file will be created in the S: directory and you
  114. still have the original config file.
  115.  
  116.     A Hiscore file will be created in the current directory if you select the
  117. Save HiScore option.
  118.  
  119.     You can start the game by typing 'BDash' or by clicking it's icon from
  120. the WorkBench.
  121.  
  122.  
  123. ==========
  124.  3. Menus
  125. ==========
  126.  
  127.     When the intropicture appears, you can use the following menus and
  128. menuitems :
  129.  
  130. 'Project'-menu:
  131. ---------------
  132.  
  133.     About...    (?)    - Shows you some information.
  134.     Open game...    (g)    - Shows a file requester and lets you
  135.                   select which game to load.
  136.     Play game    (p)    - When a game is loaded, you can play it
  137.                   starting with level a/1.
  138.                   This item is ghosted when no game is
  139.                   loaded.
  140.     Show Scores...    (h)    - Shows you the all time heroes...
  141.     Save Scores        - Saves the current Scores in the current dir.
  142.     Quit        (q)    - Quits the game (you will never need this
  143.                   option 8^) ).
  144.  
  145. 'Prefs'-menu:
  146. -------------
  147.  
  148.     Speed            - The 'Speed'-item lets you select the
  149.                   speed of the game. Since there is still
  150.                   some work to do to get the speed as close
  151.                   to the C64 version as possible, the
  152.                   subitems provide some control over the
  153.                   delay between successive moves.
  154.         Blitzz        - way too fast but very funny.
  155.         Very fast        - yeah, this ones cool 
  156.         Fast        - I use this one 
  157.         Normal        - For a normal playable game.
  158.         Slow        - A bit too slow.
  159.         Yawn        - ...ZZ.. oh yes, only for very difficult
  160.                   levels (and patient players).
  161.  
  162.     Players
  163.  
  164.         1 Player        - To select a one player game
  165.         2 Players        - Play a two player game
  166.  
  167.  
  168.     Cheat            - If Checked, you will have all the powers
  169.                   in the universe (see section 5)
  170.     
  171.     Smooth scroll        - If Checked, the scrolling of the levels
  172.                   will be smooth. Unchecking this item will
  173.                   result in jumpy scrolling, but in less
  174.                   CPU-time (see important note in section 7)
  175.  
  176.     Big Screen         - Will open the game in a big screen so you can
  177.                   see the complete level.
  178.  
  179.     Sound            - when BoulderDash starts, it will try to
  180.                   allocate as many channels as possible. If
  181.                   at least one channel was allocated, this
  182.                   item will be checked. 
  183.                   Unchecking this item will free all
  184.                   allocated channels (letting other
  185.                   programs make use of them. 
  186.                   Checking this item will (re)allocate as
  187.                   many channels as possible.
  188.  
  189.     AutoSave Scores        - Will save the highscores when a new entry is
  190.                   entered. Unchecking this option will save no
  191.                   highscores, so you must save them whenever you
  192.                   want using the 'Save Scores' menu option.
  193.  
  194.     Load Prefs        - Will reload the preferences.
  195.  
  196.     Save Prefs        - Will save the current settings.
  197.  
  198.  
  199.  
  200. The following menus will only appear when a game was successfully loaded.
  201.  
  202.  
  203. XXX-menu:            - The XXX contains the name of the loaded
  204. ---------              game as specified in the game file (see
  205.                   section 6).
  206.  
  207.     cavename1        - For each loaded cave/intermission there
  208.         .              will be a menuitem. When an item is
  209.         .              selected, you will start a new game in
  210.         .              this cave/intermission.
  211.     cavenameN
  212.  
  213.  
  214. 'Level'-menu:
  215. -------------
  216.  
  217.     1            - For each level in the game file, there
  218.     .              will be a menuitem. Checking a level will
  219.     .              cause the game to start in that level.
  220.     .
  221.     M
  222.  
  223.  
  224.  
  225. =====================
  226.  4. Playing the game
  227. =====================
  228.  
  229.     Playing the game can be done using the keyboard or (if allocation
  230. succeeded) the joystick in port 2.
  231.  
  232.     To control the game with the keyboard, you can use the cursor keys.
  233.  
  234.     'eating-without-walking' is done by pressing down the fire-button or
  235. using the shift-key and move the joystick (pressing the cursor keys) in the
  236. desired direction.
  237.  
  238. Some in game keys:
  239.  
  240.     * 'P' or 'Space' to Pause the game. Press 'Space' to resume or 'Esc' to
  241.       return to the menu.
  242.  
  243.     * 'Esc' to restart the level (and loose one life). Handy if you're
  244.       trapped or found out you did something wrong.
  245.  
  246.  
  247.  
  248. ===============
  249.  5. Cheat keys
  250. ===============
  251.  
  252.     BoulderDash has some very powerful cheat keys and options. Many of
  253. them make the levels stupid and I recommend to use them sparingly.
  254.  
  255. When the 'Cheat'-item is Checked, you can use the following cheat keys when
  256. playing the game.
  257.  
  258.     * 'a'     - Lets the amoeba (the blobbing thing) grow very fast or
  259.           normal (whatever it was not currently doing).
  260.  
  261.     * 'd'    - Pick all diamond in the level.
  262.  
  263.     * 'e'     - Explode all enemies.
  264.  
  265.     * 'k'    - Kill (remove) all enemies.
  266.  
  267.     * 'n'    - Go to the next level.
  268.  
  269.     * 't'     - Reset the time.
  270.  
  271.     * 'f'    - fast forward. (useful for long waiting for amoebe etc.)
  272.  
  273.  
  274. You can also use the mouse as follows:
  275.  
  276.     * Left mouse-button to clear the place under the pointer.
  277.  
  278.     * Right mouse-button to place a boulder under the pointer.
  279.  
  280.  
  281. You can safely activate your window by clicking on Rockford.  
  282.  
  283.  
  284.  
  285. =================
  286.  6. File formats
  287. =================
  288.  
  289. ----------------
  290.  6.1 Game Files
  291. ----------------
  292.  
  293.     BoulderDash uses an extensive file-format to describe the levels and
  294. games. The general game-format has the following form :
  295.  
  296.  
  297. <Game> = "BoulderGame(" <Game description> ")"
  298.  
  299. <Game description> = <Game Name> "," ((<Cave> | <Intermission>) "," ...)
  300. <Game Name> = "GameName(" <string> ")"
  301.  
  302. <Cave> = "Cave(" <Cave description> ")"
  303. <Intermission> = "Intermission(" <Cave description> ")"
  304.  
  305. <Cave description> = <Cave Name> "," <Map descriptions> "," (<Level>","...)
  306.  
  307. <Cave Name> = "Name(" <string> ")"
  308.  
  309. <Map description> = "Maps(" <Maps> "," ... ")"
  310. <Maps> = <Mapline>, ...
  311. <Mapline> = """ <Mapelement> , ... """
  312. <Mapelement> = a | b | c | d | g | j | l | m | r | s | v | w | B | X | S |
  313.         <space>
  314.  
  315. <Level> = "Level(" <LevelOptions> ")"
  316. <LevelOptions> = ( "AmoebaBreak(" <int> ")" |
  317.            "DiaPoints(" <int> ")" |
  318.            "ExtraPoints(" <int> ")" |
  319.            "DiaReq(" <int> ")" |
  320.            "Time(" <int> ")" |
  321.            "SlimePerm(" <int> ")" |
  322.            "Colors(" <int> "," <int> "," <int> ")" |
  323.            "Map(" <int> ")" ) "," ...
  324.  
  325.  
  326.     String (<string>) are always enclosed in double quotes. Integers range
  327. from 0 to 999 or 99 depending on how many digits are reserved in the
  328. scorebar. The C64 version uses all unsigned bytes (0..255) for these
  329. values, so I suggest you use these values too.
  330.  
  331.     Comments can be put in the description file between #'s.
  332.  
  333.     I tried to make the input format as flexible as possible by using a
  334. textual representation of the games and levels (take a look at a game file
  335. to see what I mean). This will allow people to use a text editor to edit
  336. and create new levels instead of writing a whole new level-editing program
  337. (if somebody has some time left, he/she has my moral support). 
  338.  
  339.     Lets take a look at what the various keywords mean. Note that the
  340. keywords in the input file are case independent. Strings are case
  341. dependant. 
  342.  
  343. ex.: 
  344.  BoulderGame( GameName("MyBoulder", ...        
  345.                 - We have a bouldergame here with the name
  346.                   "My Boulder". This name is the text that
  347.                   will appear in the menubar.
  348.  
  349.     Next we need to specify the caves for this game. There are two kinds of
  350. caves.
  351.  
  352.     * Caves : have a dimension of 40 (x direction) by 22 and HAVE to be
  353.       completed to proceed to the next level.
  354.  
  355.     * Intermission : have a dimension of 20 (x direction) by 12 and don't
  356.       have to be completed to proceed to the next level. When the
  357.       player reaches an intermission he/she is granted an extra life.
  358.  
  359.     Caves or intermissions can be specified with:
  360.  
  361. ex.:
  362.  Cave( Name("CoolCave"), ....
  363.  Intermission( Name("DigThis !"), ....
  364.  
  365.     To make a Cave called "CoolCave" and an Intermission called "DigThis !"
  366. respectively. The Names of the Caves and Intermissions will appear as the
  367. menuitems in the 'GameName'-menu.
  368.    
  369.     Caves (and Intermissions) have Maps, which defines the world of
  370. Rockford. With the 'Maps' keyword, you can specify the different worlds for
  371. this Cave/Intermission. The different maps are separated with commas. Each
  372. line of a map is enclosed in double quotes ("). 
  373.     A map line consists of map elements, this are the actual objects that
  374. will appear in the Cave/Intermission when playing the game. BoulderDash
  375. knows the following objects (preceded by their map element) :
  376.  
  377.     <space>    = empty
  378.     a        = an Amoeba. 
  379.     b        = a boulder
  380.     c        = a growing wall.
  381.     d        = a diamond
  382.     g        = ground
  383.     j        = Rockford (do not use)
  384.     l        = slime
  385.     m        = magic wall
  386.     r        = rectangular enemy
  387.     s        = steel
  388.     v        = a butterfly 
  389.     w        = wall
  390.     B        = Background
  391.     X        = exit
  392.     S        = start
  393.  
  394. ex.:
  395.  Maps(     "ggggggbggbggggSgggdggggggggggggggggggggg"
  396.     "gggggsgggggggggggggggggggggggggggggXgggg"
  397.     ,
  398.     "ssssssssssssssssssssssssssssssss"
  399.     "s   S            d    s"
  400.     "s    d        X    s"
  401.     "ssssssssssssssssssssssssssssssss"
  402.  )
  403.  
  404.  declares two maps of different sizes. The map you specify first has number
  405.  0, the next one has number 1, etc... This will be important in a while..
  406.  
  407.  
  408.     Note that the size of the maps depends on whether you specify them for
  409. a Cave or an Intermission. The game uses the following dimensions :
  410.  
  411.     * Cave dimensions : 40 (width) x 22 (height)
  412.     * Intermission dimensions : 20 (width) x 12 (height)
  413.  
  414.     specifying maps of different size will either crop the map or fill the
  415. non specified objects with Steel ('s')
  416.  
  417.     After you have specified the maps, you can build different levels with
  418. them. A level will define how the maps are used in the game.
  419.     A new level definition is started with the 'Level' keyword. Between
  420. braces follow the different characteristics of this level. You can
  421. currently influence game characteristics with the following keywords :
  422.  
  423.     * AmoebaBreak(x)    - the Amoeba will grow slowly 'till the
  424.                   size x is reached, it will then continue
  425.                   to grow at a high speed. an amoeba turns
  426.                   into stone if it reaches the size of 200.
  427.     * DiaPoints(x)        - defines the points for each diamond you
  428.                   pick.
  429.     * ExtraPoints(x)    - after picking the required number of
  430.                   diamonds to complete a level, you get x
  431.                   points for every extra diamond you pick.
  432.     * DiaReq(x)        - You must at least pick x diamonds to
  433.                   complete this level. The exit will become
  434.                   free if you pick more than x diamonds.
  435.     * Time(x)        - The time to complete this level.
  436.     * SlimePerm(x)        - Set the permeability of the slime. x is a
  437.                   value between 0 and 8. 0 is maximum
  438.                   permeability.
  439.     * Colors(c1, c2, c3 )    - Defines the colors for this level. The
  440.                   colors are numbered like the C64 palette
  441.                   which is : Black=0, White=1, Red, Cyan,
  442.                   Purple, Green, Blue, Yellow, Orange,
  443.                   Brown, Light Red, Dark Grey, Medium Grey,
  444.                   Light Green, Light Blue, Light Grey=15.
  445.     * Map(x)        - With the 'Maps'-keyword you specified the
  446.                   different maps for this level and with
  447.                   this keyword you specify witch map you
  448.                   would like to use for this level. The map
  449.                   you specified first with the
  450.                   'maps'-keyword has number 0.
  451.  
  452. ex:
  453.  Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20),        
  454.         Time(120), Colors(6,14,1), Map(0))        
  455.  
  456.  A new level is defined with characteristics as stated above. The colors
  457.  are blue, light blue and white. A reference to map 0 is made, meaning that
  458.  this level uses map 0 as defined with the 'Maps'-keyword.
  459.  
  460.     Different Levels can be declared for the same Cave/Intermission. When
  461. you specify several levels, The first one you declare should contain
  462. every keyword that is relevant in this level. For the other levels you
  463. declare, you only have to declare new options. 
  464.  
  465. ex:
  466.  Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20),        
  467.         Time(120), Colors(6,14,1), Map(0)),        
  468.  Level(Time(100), Map(1))        
  469.  
  470.  Declares two levels for this Cave/Intermission. The second level has the
  471.  same characteristics as the first one except for the Time and the map.
  472.  
  473. For a good example of Game-files, I suggest taking a look at the games
  474. found with this package.
  475.  
  476.  
  477. -----------------
  478.  6.2 Config File
  479. -----------------
  480.  
  481.     BDASH will search for a Config file called BDASH.config in your S: directory
  482. and in your current directory.  The config file consists of Keywords followed by
  483. a value.  Following keywords and values are recognised :
  484.  
  485.     Keyword            Value
  486.        ----------------------------------------------------------------
  487.  
  488.     SPEED            BLITZ | VERYFAST | FAST | NORMAL | SLOW | YAWN
  489.             - Sets the speed as specified in the menus
  490.  
  491.     NUMPLAYERS        1 | 2
  492.             - Sets the number of players
  493.  
  494.     CHEAT            TRUE | FALSE
  495.             - Sets the cheat mode
  496.  
  497.     SMOOTHSCROLL        TRUE | FALSE
  498.             - Sets the smoothscroll option
  499.  
  500.     BIGVIEW            TRUE | FALSE
  501.             - Sets the Bigscreen option
  502.  
  503.     SOUND            TRUE | FALSE
  504.             - Specifies if sound is to be allocated
  505.  
  506.     JOYSTICKWARN        TRUE | FALSE
  507.             - Gives a warning if no joystick is available
  508.  
  509.     SOUNDWARN        TRUE | FALSE
  510.             - Gives a warning if no sound is available
  511.  
  512.     AUTOSAVESCORES        TRUE | FALSE
  513.             - Sets the autosavescores option
  514.  
  515.     TASKPRI            -128..127 
  516.             - Sets the priority of the main game (0 default)
  517.  
  518.     SCOREPRI        -128..127
  519.             - Sets the priority of the scoretask (-1 default)
  520.  
  521.     EXTRALIFEPRI        -128..127
  522.             - Sets the priority of the extralifetask (-2 default)
  523.  
  524.     GAMESPATH        "Work:Games/BoulderDash/BoulderGames"
  525.             - Tells BDASH where to find the gamefiles
  526.  
  527.     
  528.     
  529. ===============
  530.  7. Known bugs
  531. ===============
  532.  
  533.     * There seem to be some serious problems when you try to pull down the
  534.       screen (or flip screen ) when the game is scrolling. I don't know if
  535.       this can be corrected in the future. Do *always* wait for the scrolling
  536.       to stop before pulling down or changing screens. 
  537.       This bug does not appear when you uncheck the 'Smooth scroll'-item in
  538.       the menu.
  539.  
  540.     * This game was designed to work on a DOUBLENTSC-screen in a 176*200
  541.       resolution. 'Force-monitoring' doublentsc screens to other
  542.       resolutions result in (sometimes) strange effects. This bug is due to
  543.       the fact that some hardware-copper instructions are use to close the
  544.       borders and move the screen. One of my next concerns is to use some
  545.       more Intuition friendly ways than copper-lists to arrange the
  546.       soft-scrolling. I still have to think about that.
  547.  
  548.     * The smooth scrolling worked perfect on my A1200 (+4MB) by seemed to
  549.       slightly shiver on the accelerated A1200 (equipped with a 68030 and 
  550.       68882) of a friend. It seemed like the interrupt was handled a bit
  551.       too fast so that changes to the viewport were done while it was being
  552.       drawn. This will probably be fixed in the future.
  553.  
  554.     * The C64 version was able to animate several Rockfords at the same
  555.       time because it had the (oh so good) feature of character animation.
  556.       This feature is not supported in this version so some levels may be
  557.       unplayable (BoulderDash4,intermission 1 actually). 
  558.  
  559.  
  560.     
  561. =====================
  562.  8. What's up next ? 
  563. =====================
  564.  
  565.     * Bug Fixes. I suspect you'll find dozens more. Suggestions and bug
  566.       reports are very welcome.
  567.  
  568.     * A cool feature would be to play the game in a little window on the
  569.       WorkBench screen (or some other Public Screen). I need to reconvert
  570.       the graphics for maximum effect.  I've already started drawing some cool
  571.       graphics, but it's not finished yet.
  572.  
  573.     * the HiScores should contain more information like the time, name of the
  574.       game, level, the options etc..  
  575.  
  576.     * A keyword in the gamefile to specify the initial demogame.
  577.  
  578.  
  579.  
  580. ============
  581.  9. History 
  582. ============
  583.  
  584.     V1.1
  585.    ------
  586.  
  587.     Modifications since V1.0 are:
  588.  
  589.     - Butterflies do work as on the C64. CPU-time is depending on the number
  590.       of Butties in the level.
  591.  
  592.     - A Config file is included to set your preferences.
  593.  
  594.     - HiScore loader/saver.
  595.  
  596.     - Fast forward option in cheat mode.
  597.  
  598.     - Powerpacker game files will be decrunched automatically.
  599.  
  600.     - NORMAL speed is more like the C64 version now.
  601.  
  602.  
  603.     V1.0
  604.    ------
  605.  
  606.     First release.
  607.  
  608.  
  609. ============
  610.  10. Thanks 
  611. ============
  612.  
  613.     Thanks to Luc De Cock for providing the different levels. Note that
  614. these levels are ripped from the Bouldercollection which was provided with
  615. the (excellent) C64 emulator for the IBM-PC computer. Thanks for the
  616. scanned intro picture. See you.. 
  617.  
  618.     Thanks to Commodore for making the Amiga.
  619.  
  620.  
  621.  
  622. (c) 1994 Wim Taymans.
  623.