SCASM 2.88

section 16 (11, 13) commands


command index:
back to main index
Marker beacons
TimeZone( )
GenExcl( )
Exclude( )
Exception( )
Area16( )
Elevated surface example
FS2000 commands...
E61( )
E62( )
E63( )
E65( )
Flatten( )
E67( )
LandMe( )
Menu( )
MenuEntry( )

BGL section 16 collects various data structures. This document also contains some instructions from other BGL sections.

FS5 - FS2002
IM( Lat Long Elev [o] )
MM( Lat Long Elev [o] )
OM( Lat Long Elev [o] )

Marker beacons:

IM  inner marker
MM  middle marker
OM  outer marker
Lat  Latitude
Lon  Longitude
Elev  elevation in meters (MSL, integer)
SCASM 2.41 and later
orientation (heading to the runway) in degrees. Precision abt. 1.4 degrees.
This value is used because the radiation diagram of a marker beacon is a flat ellipse oriented across approach course.


FS5 - FS2002
TimeZone( TopLat BottomLat RightLon LeftLon minutes pri dst )

Defines a rectangular time zone. Make sure the date line (180th meridian) is not crossed by the defined area.

minutes  time difference in minutes to UTC (GMT/zulu time)
pri  priority of this record (higer number is higher priority)
dst  daylight saving time flag


FS5 - ?
GenExcl(  name.BGL mask
TopLat1 BottomLat1 RightLon1 LeftLon1
TopLat2 BottomLat2 RightLon2 LeftLon2

Generates a small BGL file for suppressing specified scenery areas. Exclude files have only effects to other scenery files which are located in FS scenery folders of lower scenery levels.
You can define more than one exclude file for the same scenerie but be very carefull when defining the boundaries. Move these file(s) to the same subdirectory as your other BGL files.
Note 1: you cannot disable any synthetic scenery tiles (including mountains) with these file(s).
Note 2: The original version of FS6/FS95 has some problems with these files (The ABOUT MENU for this version shows Version 6.00 Build 117). Microsoft ™ released a patch to solve this problem. The file name is FEPATCH.EXE.
Note3: Exclude files do not work in FS2K without the first patch.

name  name of the generated *.BGL file (ie. MY_INCL.BGL)
LL1  Lat/Lon boundaries for the BGL file header of the exclude file. same as -> Header()
LL2  Lat/Lon boundaries for the scenery area to be excluded. (usually equal or larger to LL1)
mask  16 bit hex value to indicate the scenery data to be suppressed. Any combination of the below bits allowed.
01  no visual scenery, runways
02  no VOR, ILS
04  no NDB
08  no ATIS (COM), not supported in FS2K and later.
to exclude all foreign scenery simply enter F for the mask.


Older FS versions only can handle one exclude data record per BGL file. If your scenery needs many exclude areas, this results in a large number of small files. Since FS2K can handle more exclude records per file I implemented new commands to generate exclude and exception data. It is not recommendet to mix these data with other sections. So your source file should only contain Header(), Exclude() and Exception() commands.

2.52 / FS5 - ?
Exclude( msk TopLat BottomLat RightLon LeftLon )

same as GenExcl() but in the current BGL file.


Exception( Lat Lon type sn sf snf )

This instruction is used to exclude a single object in lower scenery levels from being displayed. Please see the MS FS2K scenery SDK for more information about this command.

In the moment is is not known if more than one object can be knocked out with one command or if only one of the sn/sf/snf filds can be used in one command. The example in the SDK uses only one type and sets the not corresponding size fields to 0. Unfortunately there is no tool available to tell the user the exact position and size data for the unwanted object. This is the reason why this command currently has not been tested.

Lat/Lon  Position of the object
type  Type of the object
1 near
2 far
4 near-far
From the SDK it is not clear what this means. Maybe these types correspond to the Area types (5 B 8) of the object(s).
sn  near size (hex)
sf  far size (hex)
snf  near-far size (hex)
The obove 3 fields are the last significant byte of the specified object. This byte is only used to ensure the right object is suppressed.
Set the unused fields to 0.


FS5 - FS98
Area16( TopLat BottomLat RightLong LeftLong )
Area16( a Lat Lon ns-dist ew-dist )
Area16( g ns-dist ew-dist )

Defines an rectangular area around your elevated surface. Make sure that all used points are within this rectangular area.
Attention: Due to the binary format of this command the total length of one Area16()...End16 is limited to 255 Bytes. Also the precision is limited, so it does not make much sense to enter seconds in the Lat/Long format.

In SCASM 2.07 2 aditional formats for more flexible macro processing are added.
automatic, the bounadaries are calculated by using the given Lat/Lon values and adding the ns/ew distances to this point.
example for a macro:
Area16( a %1 %2 5.5 5.5 )
If %1 and %2 are the Lat/Lon parameters in this macro this defines an rectangle area of totally 11 * 11 kilometers around this location.
the same automatic as above, but no Lat/Lon values are expected. These are taken from the stored "general" reference point ( GRP() ).
Area16( g 5.5 5.5 )
ns-dist  distance in kilometers.
The north and south boundaries are calculated by adding this distance to both directions of the reference point.
ew-dist  distance in kilometers.
The east and west boundaries are calculated by adding this distance to both directions of the reference point.

The following instructions can be used in an Area16():

SetElevation( elev )
SenseBorder( :Label ptx0 pty0 ... ptxn ptyn )
RefPoint( abs ... E= 0 )
RotatedCall( ... )
Jump( :Label )
IfVarRange[n]( :Label var minval maxval )
IfVarAnd( :Label Var Mask )
dbx, dwx, dlx, dbd, dwd, dld

FS5 - FS98

marks the end of this area16 instruction block.


Example for an elevated surface:
 Area16( 54:43  54:41:30   7:12  7:07 )
     Refpoint( abs :  1  54:42:06  07:10:00  )
     SenseBorder( :
         -40      40      ; top left
          40      40      ; top right
          40     -40      ; bottom right
         -40     -40      ; bottom left
     ; remember to enter the points in clockwise order
     SetElevation( 30 )


With FS2000 there came a complete new set of section 16 commands for manipulating the ground elevation. Until now I have not much information about them.

Most names of these commands do not have a meaningfull name. They will be renamed later. When this happens you will be able to use both the old and new names but the old names will then be dropped from the documents.

All commands flatten the area to the altitude value(s) in it and overwrite the default altitude level. The altitude values are in floating point format and its unit is in meters. Texture codes are decimal integer numbers. A texture code table is not available at this moment. Often found texture codes are 100, 123, 256 (always water). The texture codes from 123 and above seem to be contained in the texture names in the ...scenedb\world\texture folder.
See also the file "a16n_cod.txt"

In the FS2K scenery SDK it is anounced that most of these new commands are not supported in future FS versions. Therefore you should only use the Flatten() command for new sceneries.

FS2000 - FS2002

New type of Area16 command This one has no parameters and should only contain one BGL instruction. The end is marked with the already known End16 command.


E61( tex alt Lat Lon ... Lat Lon )

Used for the water side of coast lines Executed if [MiscData]/UsePolyCoastData=1 in FS2000.CFG

tex  texture code (decimal)
typical values:
100(water,dark blue),
124(water, light blue)
alt  mostly found 0.0


E62( tex alt Lat Lon ... Lat Lon )

Typical amount of Lat/Lon combinations are 3 to 5.
Mostly used for lakes.

tex  texture code (decimal)
Typical values:
123 (water, light blue),
125 (water/dirt - summer/winter)


E63( tex alt1 alt2 width Lat Lon ... Lat Lon )

It seems that this instruction is used to cut an river valey into terrain.
Do not use sharp bents within one sequence since this can cause texture distortion.

tex  texture code (decimal)
Typical value:
123(water, light blue)
alt1  altitude of first point
alt2  altitude of last point
width  mostly 25.0


E65( alt Lat Lon ... Lat Lon )

same as Elevation() or Flatten()


FS2000 - FS2002
Flatten ( elevation <list of LAT/LON values> )
Elevation ( elevation <list of LAT/LON values> )

This command defines an elevated surface. It seems that FS2K uses at least one Area16N - Elevation - End16 sequence for every airport. In adition to this the SurfaceType() command is used in section 9 to make the surface smooth. The elevation is wanted in meters. In FS2000 I often found 3 to 9 Lat/Lon values, mostly in anti clockwise order and often even for concave areas.

     Elevation ( 488.29 ; elevation in meters
         33:22  -118:28
         33:22  -118:22
         33:27  -118:22
         33:27  -118:28


E67( tex Lat Lon alt ... Lat Lon alt )

Typical amount of Lat/Lon/Alt combinations is 3 to 5. The values seem to be in clockwise order. Mostly used for big swamp areas from rivers.

tex  texture code (decimal)
Typical value:
256 (water)


FS5 - FS98
ATIS( Rng Lat Lon Frq RW1 RW2 RW3 RW4 Text )

Defines an Automatic Terminal Information System. Do not use this command for FS2000 and later!

Rng  range in km (int)
LAT/Lon  ATIS position
Frq  frequency in mc like 123.45 freq. range COM 118.0 ... 137.0 mc
RW1  runway to use for wind directions 0...89deg
RW2  runway to use for wind directions 90...179deg
RW3  runway to use for wind directions 180...269deg
RW4  runway to use for wind directions 270...359deg
Text  Any ATIS text you want. The following special text characters triggers FS5 to send the following strings:
%A  " weather -",
%B  " observation ",
%C  " ##:## zulu ",
%D  ---
%E  " Temperature ## F -",
%F  " Information ",
%G  " Landing and departing runway # -",
%H  " Advise controler ",
%I  " Altimeter ##.## -",
%J  " Visibility ## -",
%K  " winds $$$$ -",
%L  " Measured ceiling ##### $$$$,",
%M  " on initial contact ",

Note: If you have very long messages you can split them up into several lines. SCASM converts all <CR/LF> sequences within the opening and closing brackets of this instruction into a single space character. The input line buffer size is about 4000 characters but it seems the current version of FS5.0 can only handle 255 characters. If you need the
'(' & ')' replace them by
'{' & '}'. Also the underscores '_' and the NewLine charactersare converted to spaces.


FS5 - FS98
LandMe(  Lat1 Long1 Elev1 ID1
Lat2 Long2 Elev2 ID2
Airport name Rwy

Do not use this command for FS2000 and later!
This is the data record needed for the 'Land Me' option in FS5. This option is only available with the default Cessna.

Lat#/Lon#  Defines the positions of the touchdown points for each end of a runway.
Elev  elevation of the touchdown points in meters (MSL).
ID#  runway ID of this touchdown point


Instructions for building the "Goto Airport Menu" in FS versions 5.0 to FS95. FS98 and FS2K do not fully support these instructions. For FS2000 menus see sca_afd.htm.

FS5 - FS95
Menu( Scenery Title String )

Do not use this command for FS98 and later! If you want to define some start positions which can be chosen from the Airport menu use this command. Length is limited to 20 characters now. Use the '{' brackets instead of '(' if part of Title String.
Only one Menue() command allowed in this version.
To see this 'old fashioned' menus click the FS6 and before button in the FS setup. Also FS98 does not set the navaid frequencies.


FS5 - FS95
 Text Info String, max 40 characters)

Do not use this command for FS98 and later! Data for a startsituation. There MUST be a Menu(...) command in the file BEFORE you enter a MenuEntry(...) command, otherwise you got an sequence error from SCASM. The info string is limited to 40 characters.
Note: Unlike previous versions FS98/CFS do not support the settings of the radios from this menu.

Lat  Latitude
Lon  Longitude
alt  Altitude in meter. If set to 0 FS5 will automatically adjust to ground level. Floating point numbers accepted.
hdg  Heading (magnetic) in degrees
COMfrq  Frequecny of the COM radio -> 123.40
NAV#frq  Frequency of the NAV# radio. -> 116.30
OBI#  OBI# settings in degrees (integer)

TOP © Manfred Moldenhauer