-= BoulderDash V1.1 User Manual =- September 14, 1994 ========== Contents ========== 1. About the game 2. Installation 3. Menus 4. Playing the game 5. Cheat keys 6. File formats 6.1 Game files 6.2 Config file 7. Known bugs. 8. What's up next ? 9. History 10. Thanks.. =================== 1. About the Game =================== "Yet another BoulderDash !", I can hear you scream. We all know the game from those early days on the C64, spectrum and other computers, so why does anybody wants to (re)make this old game ? Well simply because it's one of the best games ever made. This BoulderDash version has the following features: * NEEDS (and uses) 68020+, AGA (or better) ChipSet, Kickstart V39, asl.library and powerpacker.library. * Intuition friendly with full multitasking. At last you can play your favorite game while compiling etc... * Smooth scrolling * The famous (and cool) C64 graphics * The famous C64 sounds. * User definable games and levels * Joystick and keyboard control * Cheat options * Two player game option * About 1275(!) original C64 levels included for you to complete... BoulderDash was written in C, except for the Interrupts which were written in Assembler. All code developed on an Amiga 1200(+4MB 120HD) with SAS/C 6.3, Devpac 3 and CED. The sounds were sampled by me (Wim) on 20 kHz. The intro-music contains the exact tables as are used in the C64 version. The graphics were converted and adjusted by me without using any utilities ! (I converted them by hand due to the fact that I was to lazy to use (write) a utility). The intropicture was scanned by Luc De Cock from the cover of the original of BoulderDash II (thanks). Luc will use my C source to make a PC version in the near future. This version of is shareware, this means that if you use it a lot I would appreciate it if you'd send me a contribution of $10 US or the same amount in any other currency. This money will enable me to produce more programs on the Amiga and continue to improve this game. Please send money by international money order, EuroCheck (in Belgian Francs (BF) !!!!!) or cash, it's difficult for me to cash in other checks. Since I am constantly adding new features to the game, I accept all suggestions, improvements and bug reports. You can contact me at : Wim Taymans Weesbeekdal 3 3071 Erps-Kwerps Belgium. NOTE: I am aware of a few copyright violations (ripping graphics, sound, ideas). Please do not spoil my fun, I had a great time making this game. Many Amiga users I know are happy to play this game once again. ONE MORE NOTE : If this game is ever put on a cover disk of any magazine, I will be very happy to receive a copy of that magazine. Donations in the form of money are welcome too :'). ================== 2. Installation ================== Installation is simple, just place the file 'BDash' somewhere in your 'Games' directory under the new directory 'BoulderDash' or something like that. You can copy the levels in that same directory. The config file is searched for in de S: directory and the current directory (in that order). I suggest you let the original config file in the current directory, start the game, set your preferences and select the Save Prefs option, this way a new config file will be created in the S: directory and you still have the original config file. A Hiscore file will be created in the current directory if you select the Save HiScore option. You can start the game by typing 'BDash' or by clicking it's icon from the WorkBench. ========== 3. Menus ========== When the intropicture appears, you can use the following menus and menuitems : 'Project'-menu: --------------- About... (?) - Shows you some information. Open game... (g) - Shows a file requester and lets you select which game to load. Play game (p) - When a game is loaded, you can play it starting with level a/1. This item is ghosted when no game is loaded. Show Scores... (h) - Shows you the all time heroes... Save Scores - Saves the current Scores in the current dir. Quit (q) - Quits the game (you will never need this option 8^) ). 'Prefs'-menu: ------------- Speed - The 'Speed'-item lets you select the speed of the game. Since there is still some work to do to get the speed as close to the C64 version as possible, the subitems provide some control over the delay between successive moves. Blitzz - way too fast but very funny. Very fast - yeah, this ones cool Fast - I use this one Normal - For a normal playable game. Slow - A bit too slow. Yawn - ...ZZ.. oh yes, only for very difficult levels (and patient players). Players 1 Player - To select a one player game 2 Players - Play a two player game Cheat - If Checked, you will have all the powers in the universe (see section 5) Smooth scroll - If Checked, the scrolling of the levels will be smooth. Unchecking this item will result in jumpy scrolling, but in less CPU-time (see important note in section 7) Big Screen - Will open the game in a big screen so you can see the complete level. Sound - when BoulderDash starts, it will try to allocate as many channels as possible. If at least one channel was allocated, this item will be checked. Unchecking this item will free all allocated channels (letting other programs make use of them. Checking this item will (re)allocate as many channels as possible. AutoSave Scores - Will save the highscores when a new entry is entered. Unchecking this option will save no highscores, so you must save them whenever you want using the 'Save Scores' menu option. Load Prefs - Will reload the preferences. Save Prefs - Will save the current settings. The following menus will only appear when a game was successfully loaded. XXX-menu: - The XXX contains the name of the loaded --------- game as specified in the game file (see section 6). cavename1 - For each loaded cave/intermission there . will be a menuitem. When an item is . selected, you will start a new game in . this cave/intermission. cavenameN 'Level'-menu: ------------- 1 - For each level in the game file, there . will be a menuitem. Checking a level will . cause the game to start in that level. . M ===================== 4. Playing the game ===================== Playing the game can be done using the keyboard or (if allocation succeeded) the joystick in port 2. To control the game with the keyboard, you can use the cursor keys. 'eating-without-walking' is done by pressing down the fire-button or using the shift-key and move the joystick (pressing the cursor keys) in the desired direction. Some in game keys: * 'P' or 'Space' to Pause the game. Press 'Space' to resume or 'Esc' to return to the menu. * 'Esc' to restart the level (and loose one life). Handy if you're trapped or found out you did something wrong. =============== 5. Cheat keys =============== BoulderDash has some very powerful cheat keys and options. Many of them make the levels stupid and I recommend to use them sparingly. When the 'Cheat'-item is Checked, you can use the following cheat keys when playing the game. * 'a' - Lets the amoeba (the blobbing thing) grow very fast or normal (whatever it was not currently doing). * 'd' - Pick all diamond in the level. * 'e' - Explode all enemies. * 'k' - Kill (remove) all enemies. * 'n' - Go to the next level. * 't' - Reset the time. * 'f' - fast forward. (useful for long waiting for amoebe etc.) You can also use the mouse as follows: * Left mouse-button to clear the place under the pointer. * Right mouse-button to place a boulder under the pointer. You can safely activate your window by clicking on Rockford. ================= 6. File formats ================= ---------------- 6.1 Game Files ---------------- BoulderDash uses an extensive file-format to describe the levels and games. The general game-format has the following form : = "BoulderGame(" ")" = "," (( | ) "," ...) = "GameName(" ")" = "Cave(" ")" = "Intermission(" ")" = "," "," (","...) = "Name(" ")" = "Maps(" "," ... ")" = , ... = """ , ... """ = a | b | c | d | g | j | l | m | r | s | v | w | B | X | S | = "Level(" ")" = ( "AmoebaBreak(" ")" | "DiaPoints(" ")" | "ExtraPoints(" ")" | "DiaReq(" ")" | "Time(" ")" | "SlimePerm(" ")" | "Colors(" "," "," ")" | "Map(" ")" ) "," ... String () are always enclosed in double quotes. Integers range from 0 to 999 or 99 depending on how many digits are reserved in the scorebar. The C64 version uses all unsigned bytes (0..255) for these values, so I suggest you use these values too. Comments can be put in the description file between #'s. I tried to make the input format as flexible as possible by using a textual representation of the games and levels (take a look at a game file to see what I mean). This will allow people to use a text editor to edit and create new levels instead of writing a whole new level-editing program (if somebody has some time left, he/she has my moral support). Lets take a look at what the various keywords mean. Note that the keywords in the input file are case independent. Strings are case dependant. ex.: BoulderGame( GameName("MyBoulder", ... - We have a bouldergame here with the name "My Boulder". This name is the text that will appear in the menubar. Next we need to specify the caves for this game. There are two kinds of caves. * Caves : have a dimension of 40 (x direction) by 22 and HAVE to be completed to proceed to the next level. * Intermission : have a dimension of 20 (x direction) by 12 and don't have to be completed to proceed to the next level. When the player reaches an intermission he/she is granted an extra life. Caves or intermissions can be specified with: ex.: Cave( Name("CoolCave"), .... Intermission( Name("DigThis !"), .... To make a Cave called "CoolCave" and an Intermission called "DigThis !" respectively. The Names of the Caves and Intermissions will appear as the menuitems in the 'GameName'-menu. Caves (and Intermissions) have Maps, which defines the world of Rockford. With the 'Maps' keyword, you can specify the different worlds for this Cave/Intermission. The different maps are separated with commas. Each line of a map is enclosed in double quotes ("). A map line consists of map elements, this are the actual objects that will appear in the Cave/Intermission when playing the game. BoulderDash knows the following objects (preceded by their map element) : = empty a = an Amoeba. b = a boulder c = a growing wall. d = a diamond g = ground j = Rockford (do not use) l = slime m = magic wall r = rectangular enemy s = steel v = a butterfly w = wall B = Background X = exit S = start ex.: Maps( "ggggggbggbggggSgggdggggggggggggggggggggg" "gggggsgggggggggggggggggggggggggggggXgggg" , "ssssssssssssssssssssssssssssssss" "s S d s" "s d X s" "ssssssssssssssssssssssssssssssss" ) declares two maps of different sizes. The map you specify first has number 0, the next one has number 1, etc... This will be important in a while.. Note that the size of the maps depends on whether you specify them for a Cave or an Intermission. The game uses the following dimensions : * Cave dimensions : 40 (width) x 22 (height) * Intermission dimensions : 20 (width) x 12 (height) specifying maps of different size will either crop the map or fill the non specified objects with Steel ('s') After you have specified the maps, you can build different levels with them. A level will define how the maps are used in the game. A new level definition is started with the 'Level' keyword. Between braces follow the different characteristics of this level. You can currently influence game characteristics with the following keywords : * AmoebaBreak(x) - the Amoeba will grow slowly 'till the size x is reached, it will then continue to grow at a high speed. an amoeba turns into stone if it reaches the size of 200. * DiaPoints(x) - defines the points for each diamond you pick. * ExtraPoints(x) - after picking the required number of diamonds to complete a level, you get x points for every extra diamond you pick. * DiaReq(x) - You must at least pick x diamonds to complete this level. The exit will become free if you pick more than x diamonds. * Time(x) - The time to complete this level. * SlimePerm(x) - Set the permeability of the slime. x is a value between 0 and 8. 0 is maximum permeability. * Colors(c1, c2, c3 ) - Defines the colors for this level. The colors are numbered like the C64 palette which is : Black=0, White=1, Red, Cyan, Purple, Green, Blue, Yellow, Orange, Brown, Light Red, Dark Grey, Medium Grey, Light Green, Light Blue, Light Grey=15. * Map(x) - With the 'Maps'-keyword you specified the different maps for this level and with this keyword you specify witch map you would like to use for this level. The map you specified first with the 'maps'-keyword has number 0. ex: Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20), Time(120), Colors(6,14,1), Map(0)) A new level is defined with characteristics as stated above. The colors are blue, light blue and white. A reference to map 0 is made, meaning that this level uses map 0 as defined with the 'Maps'-keyword. Different Levels can be declared for the same Cave/Intermission. When you specify several levels, The first one you declare should contain every keyword that is relevant in this level. For the other levels you declare, you only have to declare new options. ex: Level(AmoebaBreak(30), DiaPoints(20), ExtraPoints(30), DiaReq(20), Time(120), Colors(6,14,1), Map(0)), Level(Time(100), Map(1)) Declares two levels for this Cave/Intermission. The second level has the same characteristics as the first one except for the Time and the map. For a good example of Game-files, I suggest taking a look at the games found with this package. ----------------- 6.2 Config File ----------------- BDASH will search for a Config file called BDASH.config in your S: directory and in your current directory. The config file consists of Keywords followed by a value. Following keywords and values are recognised : Keyword Value ---------------------------------------------------------------- SPEED BLITZ | VERYFAST | FAST | NORMAL | SLOW | YAWN - Sets the speed as specified in the menus NUMPLAYERS 1 | 2 - Sets the number of players CHEAT TRUE | FALSE - Sets the cheat mode SMOOTHSCROLL TRUE | FALSE - Sets the smoothscroll option BIGVIEW TRUE | FALSE - Sets the Bigscreen option SOUND TRUE | FALSE - Specifies if sound is to be allocated JOYSTICKWARN TRUE | FALSE - Gives a warning if no joystick is available SOUNDWARN TRUE | FALSE - Gives a warning if no sound is available AUTOSAVESCORES TRUE | FALSE - Sets the autosavescores option TASKPRI -128..127 - Sets the priority of the main game (0 default) SCOREPRI -128..127 - Sets the priority of the scoretask (-1 default) EXTRALIFEPRI -128..127 - Sets the priority of the extralifetask (-2 default) GAMESPATH "Work:Games/BoulderDash/BoulderGames" - Tells BDASH where to find the gamefiles =============== 7. Known bugs =============== * There seem to be some serious problems when you try to pull down the screen (or flip screen ) when the game is scrolling. I don't know if this can be corrected in the future. Do *always* wait for the scrolling to stop before pulling down or changing screens. This bug does not appear when you uncheck the 'Smooth scroll'-item in the menu. * This game was designed to work on a DOUBLENTSC-screen in a 176*200 resolution. 'Force-monitoring' doublentsc screens to other resolutions result in (sometimes) strange effects. This bug is due to the fact that some hardware-copper instructions are use to close the borders and move the screen. One of my next concerns is to use some more Intuition friendly ways than copper-lists to arrange the soft-scrolling. I still have to think about that. * The smooth scrolling worked perfect on my A1200 (+4MB) by seemed to slightly shiver on the accelerated A1200 (equipped with a 68030 and 68882) of a friend. It seemed like the interrupt was handled a bit too fast so that changes to the viewport were done while it was being drawn. This will probably be fixed in the future. * The C64 version was able to animate several Rockfords at the same time because it had the (oh so good) feature of character animation. This feature is not supported in this version so some levels may be unplayable (BoulderDash4,intermission 1 actually). ===================== 8. What's up next ? ===================== * Bug Fixes. I suspect you'll find dozens more. Suggestions and bug reports are very welcome. * A cool feature would be to play the game in a little window on the WorkBench screen (or some other Public Screen). I need to reconvert the graphics for maximum effect. I've already started drawing some cool graphics, but it's not finished yet. * the HiScores should contain more information like the time, name of the game, level, the options etc.. * A keyword in the gamefile to specify the initial demogame. ============ 9. History ============ V1.1 ------ Modifications since V1.0 are: - Butterflies do work as on the C64. CPU-time is depending on the number of Butties in the level. - A Config file is included to set your preferences. - HiScore loader/saver. - Fast forward option in cheat mode. - Powerpacker game files will be decrunched automatically. - NORMAL speed is more like the C64 version now. V1.0 ------ First release. ============ 10. Thanks ============ Thanks to Luc De Cock for providing the different levels. Note that these levels are ripped from the Bouldercollection which was provided with the (excellent) C64 emulator for the IBM-PC computer. Thanks for the scanned intro picture. See you.. Thanks to Commodore for making the Amiga. (c) 1994 Wim Taymans.