Checking ... 54k, 4.4 min. MIDDLE.ARC (5 used, 85 left) Selected Archive: MIDDLE.ARC Action: (V)iew text, (X)tract, (R)elist, (Enter)=none? x Member file(s) to extract: (Enter)=none? middle.arc Extract archive member (MIDDLE.ARC) from (MIDDLE.ARC) Processing your request. Please wait ... ProExtract 1.0a of 11-05-88; (C) 1988 S.H.Smith 0 file(s) extracted. (6 used, 84 left) Selected Archive: MIDDLE.ARC Action: (V)iew text, (X)tract, (R)elist, (Enter)=none? x Member file(s) to extract: (Enter)=none? middle.arc Extract archive member (MIDDLE.ARC) from (MIDDLE.ARC) Processing your request. Please wait ... ProExtract 1.0a of 11-05-88; (C) 1988 S.H.Smith 0 file(s) extracted. (6 used, 84 left) Selected Archive: MIDDLE.ARC Action: (V)iew text, (X)tract, (R)elist, (Enter)=none? v Member text file(s) to view: (Enter)=none? middle.arc View archive member (MIDDLE.ARC) from (MIDDLE.ARC) Processing your request. Please wait ... (6 used, 84 left) Selected Archive: MIDDLE.ARC Action: (V)iew text, (X)tract, (R)elist, (Enter)=none? v Member text file(s) to view: (Enter)=none? (6 used, 84 left) Selected Archive: MIDDLE.ARC Action: (V)iew text, (X)tract, (R)elist, (Enter)=none? r Archive view executed on file (MIDDLE.ARC) Processing your request. Please wait ... File Name Length Method Size Now Date Time CRC ----------- ------ ------ -------- ------ ------ --- MIDDLE.TXT 54181 Squashed 25789 02-21-89 14:57:58 5A06 MIDDLE.WP 56863 Crunched 28989 02-21-89 14:56:46 A836 READ_ME 334 Crunched 257 02-21-89 15:00:46 20C8 View text files in this archive: (Enter)=yes? MIDDLE.ARC: View member filespec: (Enter)=*.*? * File Name Length Date Time (Enter) or (S)kip, (V)iew ----------- ------ ------ ------ ------------------------- MIDDLE.TXT 54181 02-21-89 14:57:58 Action? v [View] W A R I N M I D D L E E A R T H INSTRUCTION MANUAL Typed in by Dr. Strange Thanks to Dr. Death for the original Introduction Three Rings for the Elven-kings under the sky, Seven for the Dwarf-Lords in their halls of Stone, Nine for Mortal Men doomed to die, One for the Dark Lord on his dark throne In the Lat Force team in a daring rescue attempt. Your objective is to bring all the hostages to safety and neutralize any terrorists who open fire. Time is crucial, so you will also be judged on how quickly your men complete the operation. You are given the choice of five missions; each one allows you less time than the last. To succeed, you must rescue all the hostages without losing any men...and complete your mission before time runs out. After reading the message on your monitor, press the fire button (or the fire key) to begin. CONTROLS UP | LEFT -- O -- RIGHT | DOWN FIRE: FIRE BUTTON YOUR RANK You will be given the opportunity to attempt missions at these levels- Lieutenant, Captain, and Commander. Once you have successfully completed the most difficult mission (code name ASSAULT) as Lieutenant, you will be prompted to the rank of CAPTAIN. When you have successfully completed the ASSAULT Mission as Captain, you will be promoted to the rank of COMMANDER. As Captain and Commander, you will attempt the same series of missions- but against progressively fiercer opponents. (PAGE 8) With each promotion you will be given a secret access code that must be entered before you are allowed to select either the CAPTAIN or COMMANDER level. Unless you have been promoted, select LIEUTENANT by highlighting that option and pressing the fire button (or fire key). CHOOSING YOUR MISSION Next, you must choose a mission from among the five shown. Missions are listed from easiest (TRAINING) to most difficult (ASSAULT)-the harder the mission, the less time you have to complete it. o TRAINING (without hostages) o TARGET o ULTIMATUM o RESCUE o ASSAULT Move your control forward or back to highlight the mission you wish to choose, then press the fire button to select that mission. You will direct all operations, from Command Headquarters. Surveillance cameras will allow you to see what is happening at all times, and you will be in constant contact with your men; their code names are DELTA, ECHO, MIKE, HOTEL, TANGO, and BRAVO. They are all skilled professionals, but will not act without your guidance. While you are directing one man, the others will remain in their current positions. (PAGE 9) STAGE 1 (PAGE 11) THE MAP After selecting a mission, your Command Console will display a map of the Embassy and the surrounding area. A message detailing your first operation will scroll across the screen; when you have read the message, press the fire button to continue. Note the three locations that are marked on the map with an "X." Your first assignment is to place the team's three marksmen (DELTA, ECHO, and MIKE) in these strategic locations across the street from the Embassy. Once inside the selected building, they will make their way to the roof and set up sniper positions to provide cover for the Direct Intervention Team. "Mad Dog" Mulligan, Assault Force Commander 1987-1988 "Don't be tempted to put two men at the same location- you want snipers on all three sides of the building. For maximum coverage, only one man should be placed at each target area. So what if the last guy takes a few hits- that'll teach him to stay out of the line of fire next time..." PLACING YOUR MARKSMEN To control each man in turn, press the corresponding function key: Delta: F1 Echo: F2 Mike: F3 An image of the man you are directing will appear on the map in his current location. To begin the maneuver, press the ESC key. A surveillance camera shows your marksmen in his current hiding place across the street from the Embassy. Time remaining is shown on the upper left side of the Console (the game clock runs slower than real time); the name of the active man is shown on the upper right. (PAGE 12) Terrorists sweep the area with spotlights, looking for Assault Force team members. Once the man you are directing leaves his hiding place, he runs the risk of being caught in the spotlights. If they spot him, the terrorists will immediately open fire and he will have to move quickly to avoid being gunned down. (Your marksmen are vulnerable when out in the open, since they have no protection and are not able to fire back.) The marksmen can drop, roll, duck into doorways, or dive through windows to avoid the gunfire. Amiga Users: You may check your marksmen's progress on the map by pressing the fire button (or the ESC key) while he's hidden; he will then appear on the map in his current location. To return to the street view, press fire or ESC again. CONTROLS STANDING UP Joystick HIDE HIDE | HIDE \ | / RUN LEFT -- O -- RUN RIGHT / | \ ROLL LEFT | ROLL RIGHT DROP FIRE: FIRE BUTTON (PAGE 13) LYING DOWN Joystick STAND UP | CRAWL LEFT -- O -- CRAWL RIGHT To PAUSE the game, press the "P" key; press amy other key to resume play. Move the joystick left, right, or back to leave your hiding place. (To perform these maneuvers with a keyboard, simply press the corresponding keys.) If your man is lying down and does not crawl in either direction, he will automatically stand back up. If you do not move your man, he will automatically hide in the nearest location after a few seconds. If one of your marksmen is gunned down on the street, you must return to the map and select another man (by pressing his function key). When your last man is in position, you are given the option of starting over or proceeding to the next stage. NOTE: If all three marksmen have been killed, you must start over. "Killer" Katz, Assault Force Commander 1973-1981 "If you're going for the big promotion, you're gonna have to get through this thing with all your men in one piece. Fortunately, there's no shortage of trained recruits just dying to get into the action, so don't be too soft on them - unless you want to be an underdog all your life..." (PAGE 14) STAGE 2 (PAGE 15) THE ROOF Once your marksmen are in place, a helicopter will carry the three-member Direct Intervention Team (HOTEL, TANGO, and BRAVO) to the roof of the Embassy. Once your men are on the roof, the Console screen will display a map of the Embassy and the surounding buildings. An "X" shows the position of each man on the roof, as well as the locations of the men stationed across the street. The "X" of the active man is shown in red; the others are shown in white. The name of the man currently under control is shown on the upper left side of the Console. You may switch to a different team member at any time simply by pressing the corresponding key: Delta: F1 Hotel: F4 Echo: F2 Tango: F5 Mike: F3 Bravo: F6 A control panel on the right side of the Console shows the time remaining and the names of surviving team members. If one of the team members is in immediate danger, his name will begin to flash. In this case, you should switch to that man and take whatever action is necessary to prevent him from being killed. (PAGE 16) USING YOUR MARKSMEN By selecting one of the marksmen across the street from the Embassy, you can survey the side of the Embassy in his field of vision. To view the Embassy from the vantage point of a marksman, select that man and press ESC. The Console screen will show your marksman on the left, and a view of the Embassy as seen through his gunsight on the right. CONTROLS Joystick UP | LEFT -- O -- RIGHT | DOWN FIRE: FIRE BUTTON (PAGE 17) Move the joystick to move the gunsight around the screen. When the gunsight is within range of a window, a dot will appear in the middle of the cross hairs. To shoot, press the fire button while the dot is visible. Press the ESC key to return to the map screen, or activate another man by pressing his function key. R.J. Richter, Assault Force Captain 1980-1984 "Think twice before you order a marksman to shoot- the person in his gunsight may be a hostage, or even one of his own team. Be sure to scope out the situation using a man on the inside before you make your move." RAPPELING The Direct Intervention Team (HOTEL, TANGO, and BRAVO) must gain access to the Embassy by positioning themselves on the edge of the roof, rappelling down the side, and breaking in through a window. To select one of these men, press the corresponding function key. Next, you must position your man on the edge of the roof. Press the fire button to cycle through the available positions. When you have selected a position, press the ESC key to view the man as he prepares for his descent. Follow the instructions below to direct your man as he descends from the roof. (PAGE 18) CONTROLS Joystick CLIMB UP | STOP -- O -- DESCEND PUSH AWAY: FIRE BUTTON First, press fire to have your man push away from the wall. (The longer you hold down the fire button, the further he will push himself away from the wall when the button is released.) Let go of the fire button and quickly move the joystick right to have the man begin his descent; move the joystick left to stop his descent. If your man descends too far and ends up below the first floor windows, you can have him climb up the rope by pushing the joystick forward. (PAGE 19) BREAKING A WINDOW As he approaches a window, your man must stop his descent quickly and attempt to break the glass with his feet. (NOTE: Even if a window has already been broken by one of your men, the next man must still "break" through it.) Once the window is broken, your man will automatically enter the building. Watch out for terrorists inside the Embassy, who can shoot your men through the windows! "Gunner" McGraw, Assault Force Lieutenant 1977-1980 "To hit a window with enough force to break it, you have to push as far away from the building as possible. Also, it's a lot safer to descend in a series of short jumps. If you get moving too quickly, you may not be able to stop in time and you'll hit the sidewalk like a ton of bricks- I lost a couple of rookies that way..." (PAGE 20) STAGE 3 (PAGE 21) INSIDE THE EMBASSY Once inside the Embassy, a view of the room your man is in is displayed on the right side of the Console. Above this screen is the name of the man currently being controlled. A control panel on the left shows the time remaining, and surviving team members. If one of the team members is in immediate danger, his name will begin to flash. In this case, you should switch to that man and take whatever action is necessary to prevent him from being killed. A mini-map is shown in the center of the control panel. THE MINI-MAP The mini-map shows the rooms and hallways of the floor that your man is on. By noting where he came in, you will be able to pinpoint his location on the map and then follow his progress as he moves from room to room. The floor number is shown in the lower right corner of the map. Use the stairways on the east side of the building to move to a different floor; the stairs to a higher floor are marked with an up-arrow, the stairs to a lower floor with a down-arrow. Additional Mini-Map Clues: As LIEUTENANT, you are given additional clues on the mini-map that show you the location of your men as well as that of the terrorists and hostages. The man you are directing is indicated by a small red arrow; other men are indicated by red dots; terrorists are indicated by yellow dots, hostages by white dots. As CAPTAIN, you will see terrorists and hostages only while you are in same room with them. Richard M. Lawrence, Assault Force Commander 1969-1977 "Pay attention to your surroundings and try to learn the layout of the Embassy like the back of your hand. Take advantage of the extra clues on the mini-map- once you're promoted, you won't have the luxury any more..." (PAGE 22) CONTROLS Joystick FORWARD | TURN LEFT -- O -- TURN RIGHT | TURN AROUND FIRE: FIRE BUTTON MOVEMENT Move your man forward and turn left or right by moving the joystick in the corresponding direction. To turn completely around, pull the joystick back. Inside a room, your movements will always place you with your back to a wall (or doorway), facing the center of the room. Move the joystick left to face left; move the joystick right to face right. Push the joystick forward to move forward through a doorway. If you move forward toward a wall,you will automatically turn around so that your back is to the wall. If you are in a doorway, pull the joystick back to turn completely around; if your back is to a wall, you will not be able to turn around. TERRORISTS When you encounter a terrorist, be prepared to kill...or be killed! Press the fire button to shoot. (You have unlimited ammunition.) While the fire button is pressed, move the joystick left or right to move your weapon in the corresponding direction. Pull the joystick back to shoot higher, and push it forward to shoot lower. (PAGE 23) Terrorists move quickly from room to room, and may hide behind other terrorists or a hostage. Hostages will only move if they are accompanied by a team member or a terrorist; if you see a hostage moving, you can be sure that there is a terrorist behind him! If a terrorist is guarding a hostage, you must try to kill the terrorist without harming the hostage. Vincent "Hit Man" Perelli, Assault Force Captain 1983-1986 "If you're in a room with a terrorist, you won't be able to move to the same side of the room as the terrorist. If a terrorist is behind a door, you won't be able to go through that door until he moves away." RESCUING THE HOSTAGES The hostages are scattered throughout the Embassy, and can be alone or guarded by terrorists. When you meet face-to-face with a hostage, he will automatically follow you (as long as another hostage is not already following you). In order to secure the hostages you must move them all, one by one, to the small room in the upper right corner of the third floor (the room without any windows). Once you lead a hostage into this room, he will remain there and will not follow you out. (PAGE 24) As a Lieutenant, you will be able to locate the hostages and terrorists easily by using the clues on the mini-map. As a Captain or Commander, you will have to search each floor room by room to find all the hostages. Once you have placed hostages in the corner room on the third floor, keep an eye on the stairways- terrorists may go after them while you are searching other floors. DON'T FORGET THAT YOU CAN CONTROL ANY (SURVIVING) TEAM MEMBER SIMPLY BY PRESSING THE KEY FOR THAT MAN - SUCCESS DEPENDS ON YOUR ABILITY TO COORDINATE THE EFFORTS OF THE ENTIRE TEAM. (PAGE 25) STAGE 4 (PAGE 27) THE OUTCOME When your men have secured all the hostages, or killed all the terrorists (or if all three members of your Direct Intervention Team have been wiped out), the final screen will appear. Press the fire button to get an assessment of your performance. Your mission is a success if you manage to kill all of the terrorists or regroup all of the hostages in the third-floor room, without losing any of your men. In this case, your triumph will be front page news. If you have killed some of the hostages or lost any team members, the headlines will not be so kind! When you have finished reading the assessment, press the fire button. If your mission was less than perfect, you will be given the option to start over from the beginning or to begin at Stage II (leaving your previous marksmen in place); follow the instructions on the screen to make your selection. PROMOTIONS Once you have successfully completed the ASSAULT Mission, you will be promoted to the next level and given the secret access code necessary to attempt a mission at that level. Good luck...we're counting on you! (PAGE 28) "You have your orders, Lieutenant. High-ranking diplomats are being held at gunpoint, and it's up to you and your men to get them out alive. As you prepare for the assault on the Embassy, take a moment to read through the enclosed Briefing Booklet. It will familiarize you with the exact maneuvers required of your team, and provides useful tips from a number of Assault Force veterans. First, make sure that all of your equipment is ready and in working order. Next, proceed to Command Headquarters, where you will direct this life-or-death operation." -- General Walter P. O'Donnell, Special Forces This concludes the complete manual for Hostage Rescue Mission. ~~~~~~~ Hostage Rescue Mission Docs and Crack provided by: ~~~~~~~ The Next Generation / The Corsair / World of Wonders Greets to all who attended AmiExpo N.Y. (Great to meet everyone!) Hi to : Quartex, Terramax, Bencor Bros., E.S.I., Fletcher Christian, Anne Bonny, BS1, Vision Factory & the Beyonders, M.A.A.D., Defjam, and all our other many friends............. ` -$0228(A6) , which is not particularly meaningful. When disassembling a program, if you can figure out which library base the A6 register is pointing to (in this case, it would be the EXEC library), you can get ReSource to make the appropriate substitution. In this example, you would select "SYMBOLS/E-G/Exec library". Following is another example: MOVE.L #$00038007,D7 MOVE.L 4,A6 JSR -$006C(A6) The second line loads Execbase into the A6 register, so you should move the third line to the top of the display, and select "SYMBOLS/E-G/Exec library". Scroll back a couple of lines, and you would see: MOVE.L #$00038007,D7 MOVE.L 4,A6 JSR _LVOAlert(A6) If you looked at the documentation for the Exec "Alert" call, you would find that one of the input parameters is required to be in the D7 register. If you then looked in the include file "exec/ alerts.i", you would find that the number "$00038007" consists of three values, OR'd together: AT_Recovery - AG_OpenLib - AO_DOSLib There is no need to go to all this trouble, simple line up the first line with the top of the display, and select "SYMBOLS/A-B/ Alert codes", and ReSource will make the appropriate substituition for you: MOVE.L #AT_Recovery!AG_OpenLib!AO_DOSLib,D7 MOVE.L 4,A6 JSR _LVOAlert(A6) Now isn't that much better than the original? There are over 200 different classes of symbols that ReSource can substitute (only two are enabled in the demo version). Consider the following lines of code: MOVE.L 4,A4 MOVE.L #$100000,$003A(A4) Let's assume that you wish to substitute a symbol for the "$003A" in the second line of code. By default, ReSource will attempt to substitute a symbol for the first number that it finds in a line of code. To change this, select "SYMBOLS/Set source/dest/ Destination", and then the appropriate symbol base (Exec library, in this example). CURSOR/Remember: Where it is possible to lose your place within a file by using certain functions (such as "CURSOR/Absolute/Start of file"), ReSource will store the current cursor location, just prior to the function being executed. To return to the previous cursor location, select "CURSOR/Absolute/Previous location". When you plan to return to a specific place within the file, using this function will make it easier to do so. It simply stores the cursor location on a stack, for later access. CURSOR/Clear Loc stack: The cursor location stack can contain up to 256 locations. If more locations are "pushed" onto this stack, the location at the bottom (the oldest) are forgotten. This function will empty the cursor location stack. CURSOR/Relative/Next byte: The cursor position is incremented. CURSOR/Relative/Previous byte: The cursor position is decremented. CURSOR/Relative/Next line: Scroll forward by one line. CURSOR/Relative/Previous line: Scroll backwards by one line. The length of a line will depend on what the data type is. Until you first use "DISPLAY/ Fill-in data types", backwards scrolling may not be quite what you expect. CURSOR/Relative/Next page: Scroll forward by one page. This will be approximately 20 lines. CURSOR/Relative/Previous page: Scroll backwards by one page. This will be approximately 20 lines. CURSOR/Relative/Skip forward: Scroll forward by approx 4096 bytes ($1000). CURSOR/Relative/Skip Backward: Scroll backward by approx 4096 bytes ($1000). CURSOR/Relative/Next unparsed code: Scroll forward to the next line of code, that has been labelled, and that has not been parsed for labels yet. CURSOR/Relative/Next data type change: Scroll forward to the next byte whose data type is different to the data type of the current byte. CURSOR/Relative/Previous data type change: Scroll backward to the first byte found whose data type is different to the data type of the current byte. CURSOR/Relative/Next uncertain data type: Scroll forward to the next position within the file that ReSource has labelled, but at the time was not quite sure of which data type to set. CURSOR/Relative/Next backward reference: Using the "CURSOR/Absolute/Backward reference" function, it is possible to find the first reference to the current position within the file. Use this function to find further references to the same position. The search function could be used instead, but may also find references within comments, mnemonics, or even within other labels. CURSOR/Absolute/End of file: Move cursor to the last line of the file. CURSOR/Absolute/Start of file: Move cursor to the first line of the file. CURSOR/Absolute/Forward reference: I'll use an example to explain this one: JSR lbC0132DE If you wanted to "check out" the subroutine at label "lbC0132DE", but later return to the current cursor position, simply scroll until this line is on the top line of the display, and select "CURSOR/Absolute/Forward reference". The current cursor location is stored (on a stack), so that you can return to this cursor position, using the "CURSOR/Absolute/Previous location" function. CURSOR/Absolute/Forward reference: This is similar to the "CURSOR/Absolute/Forward reference" function, except that on a line such as: MOVE.L lbL00DEAF,lbL00BEEF the second label is used (lbL00BEEF), rather than the first (lbL00DEAF). CURSOR/Absolute/Backward reference: Use to find the first reference made to the current cursor position. See "CURSOR/Absolute/Next backward reference". CURSOR/Absolute/Previous location: With many functions that change the cursor location substantially, the current cursor position is stored on a stack. To "pop" the last saved location, use this function. CURSOR/Scrolling speed: You can select from five scrolling speeds. This relates to the speed/smoothness of scrolling when using the "CURSOR/ Relative/Next line" and "CURSOR/Relative/Previous line" functions. CURSOR/Search/Set search pattern: You will be requested to input a string. Unless you select "CANCEL", the string you input will be searched for immediately, starting at the current cursor position. Normal ARP wildcards are accepted: (a|b|c) Will match one of a, b or c. These can be patterns. ? Matches any single character # Pattern repeated 0 or more times, in particular, #? matches anything. [char] A set of characters, for example, [abc] or [a..c] specify the same set. [^char] Match everything but this set of characters. * 0 or more occurances of any character. CURSOR/Search/Find next occurence: Using the current search string, search forward from the current cursor position. See "CURSOR/Search/Set search pattern". LABELS/Create single/End-of-line comment: You will requested for a string, which will be shown at the end of the current line, starting with " ; ". LABELS/Create single/Full-line comment: You will requested for a string, which will be shown on a seperate line, previous to the current line, starting with "; ". Generally, this will be used to add a comment too long to put at the end of the current line. LABELS/Create single/Address symbol: You will be requested for a string, which will become the label for the current line. Any references to the current line will use the new label name, throughout the entire file, immediately. LABELS/Create single/Address symbol dest: The current line of code will be searched for references to positions within the current file. If any are found, ReSource will make a decision on which type of data is at the position referenced, it will then set the data type, and create a label at that offset. This new label will be immediately used for all references to that location, which of course includes the reference within the current line. If the current line is not being shown as code, or if there is no references, or there is a reference, but it is outside of the range of the current file, then this function will do nothing. Normally, this function will only be used within macros, as it is easier and quicker to hold down the left Amiga key, while holding down the left mouse button, possibly while scrolling also. LABELS/Create single/Value symbol: Following is several examples of address symbols (labels), and value symbols. lbC000124 MOVE.B bm_Depth(A0),D0 In the above line, "lbC000124" is an address symbol, and "bm_Depth" is a value symbol. MOVE.B bm_Depth(A0),DepthByte In this line, "DepthByte" is and a reference to an address symbol (label), NOT a value symbol. MOVE.L #MEMF_CLEAR,D1 In this line, "MEMF_CLEAR" is a value symbol. If a value symbol had not been created for this line, the line would be: MOVE.L #$10000,D1 Address symbols (labels) always equate to a position within the file, while value symbols may equate to any value at all. Unfortunately, there is several cases where a value symbol may equate to a position within the file: MOVEA.L #lbC000134,A0 JSR (A0) In this case, you may assign a value symbol, in which case the value symbol will be shown, not the label name of the position within the file that the instruction refers to. If however, you later remove the value symbol, the then label name of the line being referenced (at present, this is "lbC000134"), will be shown. When you create an address symbol or value symbol, the name is NOT checked for validity, it is up to you to decide whether or not the assembler that you will be using will accept the resulting code. For example: MOVE.L #FFFFFFFA,D0 may be changed to: MOVE.L #-6,D0 by creating a value symbol "-6". Virtually any value can be given a value symbol, including bit numbers: BTST #AFB_68020,$0124(A6) LABELS/Create single/Value symbol - dest: Similar to "LABELS/Create single/Value symbol" function, except that the second reference within the current line will used, rather than the first: BTST #4,SysFlags(A6) LABELS/Edit single: All of these functions are identical to their counterparts in "LABELS/Create single", except that if their is an existing label/symbol/comment, you will be requested to edit it, rather than create a new one. Given the editing capabilities of a string gadget, the create functions are a luxury really, although I find that when I change a label/symbol/comment, I generally make it nothing like the original, hence I nearly always use the create functions, to save me the trouble of pressing "rAmiga-X". LABELS/Remove single/Address symbol: Remove any address symbol (label) for the current line. LABELS/Remove single/Value symbol: Remove ALL value symbols in the current line. LABELS/Remove single/End-of-line comment: Remove any end-of-line comment for the current line. LABELS/Remove single/All: Remove all symbols and comments for the current line. LABELS/Create multiple/Reloc32 all: For each reloc32 pointer within the current file, determine the data type being referenced, set the data type, and create a label at that address. This function should be used with caution, as when it makes a decision on the data type, it does not have the same information available as when creating labels normally. This function should be most useful after creating labels from all code in a program, where there is one or more large tables of pointers. LABELS/Create multiple/All: Starting at the current address, the "LABELS/Create single/Address symbol dest" function is executed, and if ReSource thinks that there was valid code in the current line, the "CURSOR/Relative/Next line" function is executed, and the entire function loops, otherwise the "PROJECT/-=Abort=-" function is executed. This function can make the disassembly process very fast, the disadvantage being that there is a very slight chance that what ReSource thinks is valid code, is really ascii, and invalid labels will be created. SPECIAL FUNCTIONS/Repeat last command: Execute the last function that was executed. This does not include most cursor movements. By rebinding this function to an easily-accessed key, such as the space bar, (and saving the keytable) there should be much less need to rebind keys often. SPECIAL FUNCTIONS/Convert xx(A4) EA's These functions were specifically designed to be used when disassembling 'C' programs, in which the A4 register is used as a base register for accessing data, throughout all or most of the program. Let's use an example program here: SECTION test000000,CODE LEA START+$11E,A4 LEA 0(A4),A1 MOVE.L $000C(A4),D0 .... rest of code SECTION test00011E,DATA dc.b 'dos.library',0 dc.l $00010001 END In the above program, the A4 register will point to the start of the data segment. There are three ways to tell ReSource where the A4 register will point to; in the above example, the "This operand" function could be used with the cursor at start of file, or the "This address" function could be used with the cursor at offset $00011E, or the "Specify" function could be used, suppying a parameter of "11E". Basically, with this function, you are telling ReSource where, relative to the start of the program, the A4 register can be assumed to be pointing. After you do this, any effective address that involves a word offset to the A4 register, will be shown as an absolute address. Thus, the example program above will appear as: SECTION test000000,CODE LEA START+$011E,A4 LEA START+$011E,A1 MOVE.L START+$012A,D0 .... rest of code SECTION test00011E,DATA dc.b 'dos.library',0 dc.l $00010001 END The advantage here is that labels can automatically be created where they could not before. If this conversion process is not used, it is likely that the program will not successfully re- assemble, as different assemblers assemble the same source code into different opcodes. For example, the assembler that I normally use does virtually no optimizing, and so the resulting program is often larger than the original, even if I did not modify the source code. For example: MOVE.L 4,A6 If absolute long addressing is used, the instruction above will be 6 bytes long, whereas if absolute short addressing is used, it will be only 4 bytes long. Where you wish to do EA conversions in only a portion of a program, you can set the lower and upper limits. Changing to absolute EA's will increase the size of the resulting program, unless you convert back to relative addressing, within the source code. I believe that one of the features of BLINK (from the Software Distillery) can help to make this conversion. SPECIAL FUNCTIONS/Convert specific EA's: Please read and understand the "SPECIAL FUNCTIONS/Convert xx(A4) EA's" functions first! Where you want to do specific EA conversions, use "Set base #1" (or #2, or #3), when the cursor is the same as where the base register (whatever that is, it does not have to be A4 this time) can be assumed to point to. Assuming that you set base #1, and it is the A5 register that is being used as a base register, you will then use the "Convert W/ Base #1" function to convert lines like: MOVE.L $0032(A5),A6 .. into: MOVE.L lbL0014AC(A5),A6 Note here that there has not actually been an EA conversion, but a label has been created, the data type at label "lbL0014AC" has been determined and set, and a value symbol ("lbL0014AC") has been created for this line. It is up to you then to make the necessary changes to the resulting source code, if re-assembling is required. Whereas the "Convert xx(A4) EA's" function converts immediately and automatically, you must use the "Convert W/Base #1" function on each line that you want converted. If you wish to convert a destination address, first use the "SYMBOLS/Set source/dest/Destination" function first. MACROS: There are currently twelve user-definable macros available in ReSource. To start macro #1, select "MACROS/Start/ #1", select the functions to be included in the macro (you can use the menus, or press keys, it's all the same thing to the macro). When you are done, select "MACROS/Start/#1" again, to end the macro. To run the macro, select "MACROS/Execute/#1". The display is always refreshed during the defining of a macro, however it is not during the execution. At the end of a macro, the display is always refreshed. You may nest macros, but you should not use recursion. If ReSource finds that the nesting level has exceeded 40, the macro will be abandoned. Macro files can be saved and re-loaded. When ReSource first starts up, it looks for "S:RS.macros". If it finds it, it will load it, and execute macro #12 immediately (that is why macro #12 is hilited in the menus). This is used to configure ReSource. Just start macro #12, set what option you want, end macro #12, save the macro file as "S:RS.macros", and ReSource will be configured every time that you run it. KEY BINDINGS: Every function in ReSource can be found in the menus. You do not need to use any keys at all, but you probably will want to. You can bind any function to any key. All Amiga keys are supported, you may use shift, alt, ctl, lAmiga, rAmiga, shift-alt, shift-ctl, alt-ctl, or shift-alt-ctl in combination with any key, as a distinct key to bind a function to. Thus, you have complete control over which keys do what. After re-binding some keys, you will probably want to save the keytable. If you save the keytable as "S:RS.keytable", it will be loaded every time you run ReSource. You may want to create several keytables, suitable for doing differing program types (C, assembler, etc.). OPTIONS/Show offsets: If this option is set to ON, all lines will start with either a label, or the offset from the start of the file. OPTIONS/Display Beep: If this option is set to ON, the "BeepDisplay" function is used to give feedback to the user, that either a function has failed, or that a lengthy function has completed, and that the user should now wake up. OPTIONS/User Feedback: If this option is set to ON, messages will appear in the title bar, to let the user know what ReSource is doing, especially while doing functions that take a lot of time, extraordinary functions that only ReSource has direct control over (such as dynamically allocating more memory for strings, etc.), and also information about what hunks, etc., that it finds in a load file. OPTIONS/Feedback Delays: If this option is set to ON, whenever a feedback message is displayed, ReSource will wait for you to read the message, before continuing. You will probably not want to keep this on all the time, as it can slow down the disassembly process somewhat, but while you are learning to use ReSource, it will probably be very useful. OPTIONS/Labels: If this option is set to ON, labels will be displayed. This is the default. OPTIONS/Value symbols: If this option is set to ON, value symbols will be displayed. This is the default. OPTIONS/End-of-line comments: If this option is set to ON, end-of-line comments will be displayed. This is the default. OPTIONS/Full-line comments: If this option is set to ON, full-line comments will be displayed. This is the default. **************************************************************** Don't forget to put arp.library in your LIBS: directory! **************************************************************** @ll spells have a point cost. In other words, al spells cost the mage casting them a bit of his internal energy. This energy is returned automatically in direct sunlight, and may be regenerated at Roscoe's Energy Emporium or in special regeneration zones you have to discover. There are magical items hidden in the dungeons and carried by the monsters of Bard's Tale. Magical weapons do extra damage. Magical armor gives extra protection. Other magical items radiate special energies. There are even magic keys and talismans necessary to get into certain im- portant parts of the game. The most powerful magic items are secreted in the most challenging dungeons and are guard- ed by ferocious monsters. When you win one, you should be very proud and very happy. They can be the key to success against the wickedest opponents. To cast a spell, you type in 4-letter codes which are a rough abbreviation of the spell name. The entire list of spells, codes and spell points required are listed below. All Magic Users, even level 1 novices, start the game with knowledge of all level 1 spells in their magical art. Rather than learning one spell at a time, Magic Users always learn whole groups [spell levels] of spells at once. Its the closest thing to mass production in Skara Brae. Here is a description of the 4 magical arts: Conjuring Conjuring deals with the instantaneous creation of objects and effects through the channeling of a mage's power. Con- jurer spells are potent, but not unlimited in effect, since the exercise of creation takes a large amount of energy toproduce even a moderate effect. A conjurer can also produce effects that distort non-solid things to produce new effects, like the distortion of space and time required to teleport human bodies toa new location. Magic Magic [meaning the art practiced by a magician] deals with bestowing magical effects on common objects. The items do not become magical, but radiate fields of power for the duration of a spell [which is usually the length of combat]. The gist of Magic is that it can increase an item's capabil- ity, or change its form to something totally different. Some examples: making a sword do greater damage, making dungeon walls glow with a magical light, or causing a wall to totally vanish for 1 move. Sorcery The byword of sorcery is 'seeing is believing'. Sorcery does not deal with a physical manifestation, but rather a creation of illusion and a tapping into a heightened sense of awareness. An illusion is an image envisioned by the spell caster, which he then lays over the retinas of all who watch, augmenting this with appropriate stimulation of nerve endings to fool the other 4 senses. The human mind, believing an illusionary creation to be real, can be hurt or even killed by it, unless it is somehow disbelieved. A sorcerer, with the aid of his art, can also perceeive certain special things hidden from view. Widardry Wizardry deals with the summoning and control of supernatura l creatures. The wizard has fewer spells than the other three classes, but his are by far the most potent. The creatures he can summon come from another plane of existance, called the 'negative plane'. They join the special slot in the party, and will fight until defeated. The wizard has some ability to trap and control normal monsters, as well Mages who have learned at least 3 spell levels in an art may elect to change to another mage class at any time. Thus, a level 5 conjurer could choose to become a level 1 magician. His experience points would be reset to 0, but he would re- tain his previous attributes, hit points, spell points, and all knowledge of his conjurer spells. He would be unable to learn any higher conjurer spells, however, once a mage leaves a magic art, he cannot return to it. A mage can become a conjurer, magician, or corcerer as a second class. A mage can become a conjurer, magician, sorc- erer, or wizard as a third class. A mage who has knowledge of all 7 levels of spells in all 4 classes is called an Archmage, and is one of the most powerful personages in the world of the Bard's Tale. SPELL KEY GLOSSARY Range Terms View: spell affects line of sight 1 Foe: spell affects a single monster All Foes: spell affects all monsters you face Group: spell affects 1 of 4 monster groups Self: spell affects spellcaster only 30': 3 squares in the direction you fact Char: one of 6 party members or special Party: spell affects all 6 party members and special= Special: spell affects 'S' slot only; summoned creature enters combat next round. Duration Terms Combat: spell lasts until all monsters or all party mem- bers are killed or until party runs away. Short: spell lasts only a few minutes. Medium: spell lasts a little longer than short. Long: spell lasts twice as long as 'short' Indef.: spell lasts until party enters the Adventurer's Guild or an anti-magic zone. CONJURER SPELLS Spell Name/Description Code, Pt. Cost,Range,Duration Conjurer Spells - Level 1 MAGE FLAME, a small, mobile to MAFL, 2, View, Medium rch will appear & float above the spell caster as he travels ARC FIRE, a fan of blue flames ARFI, 3, 1 Foe,... will shoot from the caster's fingers, doing 1-4 hits of dam- age to a select opponent, times caster's level. SORCERER SHIELD, the mage is SOSH, 3, Self, Combat protected by an invisible sh- ield of magic that turns aside many blows that would otherwise kill him. TRAP ZAP, this spell will dis- TRZP, 2, 30',... arm any trap within 20 feet, in the direction the party is fac- ing. It will also disarm traps on chests. Level 2 FREEZE FOES, binds your enemies FRFO, 3, Group, Combat with a magical force, slowing their movements & making them easier to hit. KIEL'S`MAGIC`COMPASS, compass MACO, 3,...,Medium of shimmering magelight appears above the party, telling the direction they face. BATTLESKILL, increases one of BASK, 4, Char, Combat your party memeber's skill with weapons, increasing the accur- acy and ferocity of his attacks WORD OF HEALING, with the utt- WOHL, 4, Char,... erance of a single word the spell caster can cure a party member of minor wounds, healing 2-8 points of damage. Level 3 ARCYNES MAGESTAR, a bright MAST, 5, Group,... flare will ignite in front of a group of your enemies, tempor- arily blinding them & causing them to miss the next combat round. LESSER REVELATION, this is an LERE, 5, View, Long extended Mage Flame spell which also reveals secret doors. LEVITATION, partially negates LEVI, 4, Party, Short the effect of gravity on the party, causing them to float over traps or up through port- als. WARSTRIKE, causes a spray of WAST, 5, Group, ... energy to spring from the cast- er's ginger, sizzling a group of opponents for 4-16 hits dam- age. Level 4 ELIK'S INSTANT WOLF, caster can INWO, 6, Special, ... make a real wolf appear & join the party, fighting in its de- fense. FLESH RESTORE, powerful healing FLRE, 6, Char, ... spell will restore 6-24 hit points to a party member & cure poisoning & insanity. POISON STRIKE, hurls porcupine POST, 6, Foe, ... sharp needles from the mages finger into a selected monster poisoning it. Level 5 GREATER REVELATION, functions GRRE, 7, View, Long like a lesser revelation spell only it illuminates a wider area WRATH FO VALHALLA, makes a mem- WROV, 7, Char, Combat ber of your party fight with the strength and accuracy of ancient Norse heroes for the entire com- bat. SHOCK - SPHERE, a large glove of SHSP, 7, Group,... intense wlectrical energy envel- opes a group of enemies doing 8-32 hits of damage. Level 6 ELIK'S INSTANT OGRE, this incan- INOG, 9, Special, ... tation will cause a real ogre to appear and join the party. MAJOR LEVITATION, will make the MALE, 8, Party, Indef. party levitate as does the level 3 spell, but its effects will last until dispelled. Level 7 FLESH ANEW, behaves like the FLAN, 12, party, ... flesh restore spell, except that it will affect every member of the party. APPORT ARCANE, allows the party APAR, 15, Party, ... to teleport anywhere within a dungeon, except for places pro- tected by teleportation shields. Magician Spells Level 1 VORPAL PLATING, causes the wea- VOPL, 3, Char, Combat pon [or hands] of a party mem- ber to be covered with a magical field, which causes him to do an additional 2-8 points of dam- age. AIR ARMOR, will make the air AIAR, 3, Self, Combat around the spell caster bind it- self into a weightless suit of armor. SABHARS STEELLIGHT SPELL, causes STLI, 2, View, Short all metal near the party to glow with a magical light, illuminat- ing the surrounding area. SCRY SITE, the walls will speak SCSI, 2, Party, ... under direction of the spell, revealing to the spell caster his location in the labyr