Description of Briefing Script Language v1.21 This language was designed by Sterling Moses, and has his soul ownership stamped to it. All information contained in this document is original and still under developement. Please be patient as things are sure to change in the future. We now have two products to support, TMB and BSL. Within the next few releases (hopefully the next) we will combine the two programs into one. But as of now, we are forced to release this as a stand-alone program. This program will only work with registered version of TMB. What does this mean? This means you must have a registered version of TMB in order for this program to work. If this programs finds that you are not a registered (or BETA tester) of a TMB version, then it will not run. This is to protect the amount of time invested in this project. Sorry for the trouble if you downloaded this and you are not a registered user. But then again, you might look through this and want to register. PRE VERSION 1.21 As of the release of TMB 1.20 and all previous releases, you can not use the BSL.EXE with any mission you created with the registered feature of NEW MISSION. I had to leave out the code in the program to make enough room for the briefing animations. If you use BSL.EXE on a mission which was created with TMB's NEW MISSION feature, you might crash your machine. To get around this, just create a BSL file from any other mission. Change the mission statement to the name of your TMB NEW MISSION file, and then use compile to put the information back into the mission. This has worked in the past. If you find a problem with this, or are not sure what I am talking about... Please contact me and I will walk you through it. VERSION 1.21 As of the release of version 1.21 you now can create new missions with TMB version 1.21 and use the BSL and COMPILE versions 1.21 without any problems at all. This is due to a sizing error is all previous releases of both the BSL and TMB. Now that this is fixed, enjoy the fun. As of this release, you are able to change all the mission briefing information to the "T". You will be able to create custom missions and a lot more. I first suggest you create a couple of BSL files from a few of your favorite missions. Then look through those BSL files and see just what we are talking about. It is pretty easy once you get the hang of it. Two programs Compliment the BSL. These programs are BSL.EXE, and COMPILE.EXE. BSL.EXE This program takes one argument. The name of a TIE Mission file. This file will then have the Briefing Animation pulled out of it, and turned into human readable form. The new human file will be named the same as the mission file, but with the BSL extension. This can be edited simply with "EDIT" if you have DOS. Please read the following information before you edit any of the stuff in the BSL file. COMPILE.EXE This program also takes one argument, but it is the name of a BSL file. The compile program will read through the BSL file, and turn it into a Briefing Animation (computer readable) form. Then compile will ask you if it is OK to write this information to the file named as MISSION in the BSL file. If you answer no, nothing is done, and compile exits. If you answer yes, then compile will write the Briefing Animation back to the file names as MISSION. WARNING. If you do not have a MISSION statement in a BSL file, then it will not ask you to write the information, and exit to DOS. It has no way of knowing where you want your information written. The second section of COMPILE.EXE will parse in the information for the Briefing Section of the mission. This information is used to display the mission to the user, including the briefing tags, briefing text, and briefing and debriefing questions. Once compile has done this it will ask you the same question as above. If you answer no, nothing is done, if you answer yes then the information will be written. Description of the *.BSL file created by BSL.EXE TIME xx Time within the briefing is generated from an internal clock source. When the statement TIME is used in the briefing, it references this internal clock. If, for example, if your briefing used the statement TIME 30, TIE would wait till the clock reached 30, and then execute the following statements. This gives you the opportunity to have different actions take place at different times. When a time of 00 is used, (normally near the beginning of the mission) no animation is displayed. Objects and Text appear on the display, and do not form as you watch. The reason being, the clock has already passed the 00 time, thus this is automatically displayed on the screen. ERRORS: You do not want to use a TIME 30, and then right after it use a TIME 10, this will cause weird effects and unknown displays. The clock has obviously reached past 30, you should not use a TIME of < the last time used. NORMAL: You can however use the same TIME for multiple things. If you want all the TEXT, or ALL the shadow boxes to appear at one time, you would set all of their TIME statements to the same thing. TIME UNITS: Time is not equal to seconds or minutes. It is a faster unit more along the line of microseconds. I am not sure about this, but it seems to be a very fast delay when you set TIME 50. EVERY EVENT: Every event which occurs in the briefing is preceded by a TIME event. This is throughout the entire mission. Even if you do not want a time event between two BOX events, you must have it. There is no way around this. SEE WAIT statement below. You may not use a TIME event when you like. It is a strict use for ONLY before each event. You may use the WAIT statement below when you like, but TIME is only to be used as described. If you do not follow the description, your briefing will crash. MOVE X,Y This is the statement which is used to slew the map to a new location. If the TIME value before this statement is 0 (zero), then the map will be at this location when the user begins the brief. The MOVE command allows you to move the map to different locations. Thus you can see all the ships, or visit all the important sights in your mission. The X coordinate is the X map coordinate you want to move to. This, I believe is offset at the center of the screen. The Y Coordinate is the Y axis of the map as well, and this is also offset at the center of the screen. To move, you would use the statement MOVE -250,-250. This would move the center of the briefing display to map coordinates -250,-250. A Move statement can be used at anytime in the brief, and is normally preceded by the CLEAR BOXES or the CLEAR TEXT statements. Although you might not want to clear the TAGS when you move. ZOOM val1 x val2 This is the statement which handles the zoom level of the map. When the map is zoomed in, all coordinates change, even the displaying of the TEXT coordinates changes. I am not sure how this option works at the moment, but more of this to come. To zoom the map, you would use the statement ZOOM 48x48. This will zoom you closer to the map. WARNING: Do not use a ZOOM Value of 0 (ZERO) this will cause TIE to crash when the map is displayed. Tie takes your zoom value, and devides by that to give you a nice display. If you have the computer DEVIDE by ZERO (You programmers know what I mean), you will crash your system. Do not do this. Enough said. The X and Y coordinates are independent of each other. You can have a zoom value of 1(x) and 24(y) if you would like. This means your map X (Left to right) will show the entire map (zoom level of one), and the map Y(up and down) will show the zoomed factor of 24. I do not know right off hand what the different zoom levels are, but you can decide on what area of the map you wish to display. ZOOM Descriptions: How it works: The TIE MAP is 16,000 x 16,000 coordinates. This means the center of the map is at coordinates 0,0. And you can go to -8000, and +8000 in any direction. This gives you the 256,000,000 possible locations a ship can reside in. The Screen (or your display) you are looking at right now, can only have so many locations on it at one time, these are called pixels. On the display TIE uses, it looks to be a 320x200 display. Thus you can have 320x200 locations displayed at one time, if the whole screen were used for the display, which it is not. Thus you have to make due with what you have. So lets say that the 320x200 was the entire map display that you see. This means that you can show only 320 X locations and 200 Y locations if you did not have a zoom level. Zoom levels allow you to put more information on a smaller screen. if you wanted to display 640x400 locations on a screen that only had 320x200 locations you would do this. Start from the center and for every two coordinates, move just one pixel. So that a ship with a X coordinate of 600, would actually be 300 units away from the center, (because you only move one pixel per two coordinates). If you wanted to change the display range to 1000 coordinates, then you would do the same thing. 1000 / 300 = 3.33333. This would mean you would go every 3 coordinate to a pixel. So what does this long drawn out description mean to you. Everything! This explains why when you zoom the map, the SHIPS and the BOXES around them move outward, and you seems to move closer to the center of your display(or the center you put the display on the map). As you zoom out, you move away from the map, and things move closer to the center. This is because you are increasing the range of your display, and stuff has to move closer to the center. If you have any questions, please feel free to contact me. It is better to let those of you with questions talk to me, than to keep dragging this out. TITLE This statement displays the TITLE information at the top of the screen. The information which is displayed comes from the list of Briefing text. Normally the TITLE consists of the Sector name, or a brief description of the overall mission battle or plan. This is displayed at the top of the screen, within a two line segment. The starts at 0 for the first Briefing tag, and continues up. Normally the TITLE is located in Briefing TAG 0, but this is up to you. BRIEF This is the compliment of the TITLE statement. This displays the briefing statement at the bottom of the briefing display. This is where you will tell your users of your mission what is expected of them. There is no limit to the number of briefing tags, or in what order you display them. When you use the following script: BRIEF 01 TIME 20 BRIEF 02 TIME 60 You will have two briefings displayed at the bottom of the screen 20 time units apart. This is a relative basic example, but one that will show you what you can do. You can place the briefings on the display in any order that you wish, you just have to remember which ones you placed where in the briefing text tags list. CLEAR BOXES When this statement is used, all BOXES around the ships on the display will be erased. The contents of the BOX CELLS will be removed, and you can then continue to place other ship numbers in these cells. More on Boxes to come. Usage is just CLEAR BOXES. That is all there is to using this statement. CLEAR TEXT This will clear the Tag TEXT from the display. This is the text which is displayed directly on the briefing map. Normally the names or locations of ships on the map. I.e. Alpha 1, Beta 1, ESC Drooper, etc. The Text CELLS are erased, and then become available for you to use when you want. More on TEXT CELLS next. BOX <#> The BOX statements allows you to define a BOX in which will hold a SHIP. When this statement is found during your briefing, a box will form around the Flight Group designated. A BOX CELL is a place in memory where the flight group number is stored. This position is reserved ONLY for the BOX statement. You CAN NOT use this memory location for the storing of TEXT statements. The computer will crash. The only valid BOX locations you can use are 09 through 16. These are all. Thus you can only have 8 boxes displayed on the screen at one time. If you use box 9 to store a flight group number, and then later use box 9 again, the flight group which once had its box displayed by box 9 will have its box removed, and box 9 will form around the new flight group. There are no other parameters for this statement. TIE knows where the FG is located on the map, and it then displays the box at that location, leaving the icon of the FG on top of the displayed box. The color of the box is displayed in the ships current IFF color. You have no control over this, other than changing the IFF code from within the EDITOR. TEXT <#> This is the statement which will allow you to display text right on the briefing display. This is where you will name the flight groups on the display, or show an important area of the map. This statement uses 4 parameters: #: This is the TEXT CELL you wish to put this TAG into. There are only up to 25 CELLS that you can place tags into. Any more than this, and you will crash your program. TAG: This is the ship TAG number from the SHIP TAG List. You will define these tags in another area, and then use this command to call them to the screen. X: This is the X coordinate for the displaying of text. ZOOM Dependent. Y: This is the Y coordinate for the displaying of text. ZOOM Dependent. COLOR: This is the color in which you want the text to be displayed. This is the same as the IFF color used at other places in TMB. (I.e. 0 - Green (rebel), 1 - Red (imperial), 2 - Purple (IFF 3), etc.) If a TIME 00 precedes the TEXT statement, it will not by "typed" onto the display. It will already be on the display when the user enters the briefing. This is because the display of the text will have occurred at TIME 00, and you have already passed that time. When you enter the mission you are actually starting at time 01. As with the TEXT statements, you only have a few areas where you can store the TEXT in memory. These are called TEXT CELLS. You can store text in these areas: 18 through 25. DO NOT use these areas for storing the BOX information, or you will crash your program. The same rule applies with these as it did with the BOX statement. If you reuse the same box twice, the first text displayed will be removed, and the new TAG text will be displayed. WAIT: This statement is used when you want to break up your mission into sections. There are two buttons on the mission briefing display, Play, and Forward to next section buttons. The >> forward to next section takes you to the next briefing text display in the mission. Each time you press the forward button, it takes you to the next display. Thus you can skip through a mission, and just read the briefing text. The WAIT statement allows you to do this. When the user presses the >> button, he will be taken immediately to the next wait statement in your mission. The WAIT statement clears both the TITLE, and the Briefing text currently on the screen. When you use a WAIT statement you must re-display this information for the user. Like this. TIME 20 MOVE 200,200 ;Move to location 200,200 on the map TIME 30 ;Wait till a time of 30 is on the clock ZOOM 100x100 ; zoom to a value of 100x by 100y TIME 50 ; wait till time clock is 50 WAIT 50 ; time clock is already 50, clear title, and text TITLE 00 ; display TITLE 00 TIME 50 ; Time clock is already 50 BRIEF 01 ; display brief 01 TIME 60 ; wait till time is 60 BOX 09 17 ; Display a box around flight group 17 TIME 90 ; wait till time is 90 {continue} So as you can see, the user can press the >> and they would be jumped passed the animation portion of the map zoom and moving, it would just change the display to the current zoom area, and the current map area and start displaying everything past the wait statement. All information prior to the wait would be skipped. MISSION: This is the mission name to which this BSL file belongs. When you compile your BSL files, the COMPILE program will ask you if this is the name of the mission file you wish to alter, if you say yes, that mission file will have the new Briefing Animation added to it, and all existing Briefing Animation in that file will be overwritten. If you answer no to this question, then nothing will be altered, and you will return to your operating system. FINAL TIME: This statement tells the BSL compiler the last time value to wait for before it resets the mission briefing clock, and thus begins the mission briefing over again. This normally the last value you want the clock to be at before restarting the mission briefing. If you have your last statement a move statement to bring the user back to the starting point before the mission restarts, and this has a time value of 750, then your last time will need to be a value higher than 750. Unknown [3]: This statement is for those of you who are very good at troubleshooting your missions. This statement takes 3 numbers, numbered 0 thru 2. These will be placed into the animation buffer as you see them here. We do not know exactly what they do, but to allow you to edit the entire animation buffer sequence, we have given you the advantage of editing them anyways. Please do not forget to add these to your BSL files. It is a must to have these. END This statement is used to terminate your briefing text. When TIE runs across this statement, it will return to the start of the briefing, and replay the entire sequence of events. This must be used. If not, TIE will not know when to end the mission and begin again. Briefing TAGS Section This section will explain how to use the briefing tags, ship tags and the question statements. Please refer to the included "example.bsl" included in the package for any questions. This section is where you make all the magic happen in your missions. Please review the entire chapter, if you have questions then please let me know. All TEXT statements used above have to have some time of reference. This is the area where you enter those tags. Like the ship names, or any other information you want displayed ON the display screen. This is not the information which is used to tell the user of your mission how to go about winning it. This is simply the support TAG or SHIP TAGS section of the BSL. START SHIP TAGS This will tell the compiler that the following 32 lines (0 thru 31) are going to contain the ship tag information. Even if you do not use all 32 tag spaces, you must still leave reference to the unused tags. Thus the empty spaces should be marked with the respective numbers. The ship tags are used for displaying information on the display screen. When you use the TEXT statement: TEXT 18 01 200 200 1 You are telling TMB to load the tag 01 into box 18, and display it at location 200x200 on the map, and in color RED. The 01 is where you would put your tag information. This is normally the name of a ship, or the sector name or anything else. By using END SHIP TAGS you will end the ship tags statement. START BRIEFING TAGS This is the same as above, except that it is used for the briefing text displayed at the bottom of the briefing screen. This is the information which will be displayed to the user as to why they are being sent out on this mission, who they will be flying for, and a general description of the map. You can have up to 32 (same as above) tags for this section. To highlight a name or any characters on the display, you can enclose the set of characters in a set of [], this will highlight the text inside the braces. The text [ship] will appear on the display as highlighted text. By using END BRIEFING TAGS you will end the briefing tags statement. The Questions for the briefing and debriefing sections are done in a similar manner. They are all ended with a double *. So to end your question, just put ** and that will do it. If you have any questions about the briefing and debriefing questions, please let me know.