SCASM 1.7 & 2.0

- copyright by Manfred Moldenhauer. Any unauthorised distribution prohibited.
日本語訳 version 1.1 by Takuya Murakami

SCASM コマンドリファレンス


イントロダクション:

SCASM は FS5 の BGL ファイルを生成する簡単なプログラムです.これは各コマン ドに対して1つのデータレコードを作成するので,私をこれをアセンブラと呼んでい ます.まだ,いくつかの制限があります.そのうちの1つは,緯度範囲レコード (Latitude_range_record)を1つしか取り扱えず,また NAVaid や visual シーナリ (Section 9)にたいしても同じ制限がある,ということです.この問題を解決するため, 私は BGL ファイルリンカの SCLINK を作りました.

申し訳ありませんが,まだチュートリアルはありません.命令の使い方の雰囲気をつ かむために,サンプルファイルを学習して下さい.

このプログラムを使って作成するシーナリは全て Header コマンドとそれに続く LatRenge コマンドで始まります.それからはどんなコマンドをどんな順番で使用して も構いませんが,1つ例外があります.Visual scenery コマンドは area ブロック内 でのみ使用でき,また area ブロック内ではその他のコマンドは使用できません.


Credits & installation:

ScReadMe.TXT を見て下さい.

シーナリアセンブラの起動:

	scasm  
例:
	scasm example.txt exsample.bgl
エラーが発生した場合 return code は 1 に,それ以外は 0 になります(バッ チファイル用).入力ファイルはどのような拡張子がついていても構いません が,単純な ASCII (テキスト)ファイルである必要があります.出力ファイル には .BGL 拡張子をつけなければなりません.

2番目のファイル名が省略された場合、SCASM は最初の引数の拡張子を .BGL に変更したものを用います

コマンドラインスイッチ [オプション]

        -l      SCASM に SCAERROR.LOG というファイルを生成させます。
		このファイルはエラーメッセージを含みますが、通常の
		統計メッセージは含みません。
        -i      私はこのスイッチを誇りに思っていません! これは古いバー
		ジョンとの互換性を保つため、 SCASM に「整数値を期待する」
		エラーを全て抑止させます。しかし、一般にこのスイッチを
		使わないことを強く推奨します。なぜなら、あなたが予期した
		ものと結果が異なることになり、また他の問題も引き起こす
		からです。ところで、数値のフォーマットは FS5 が整数値を
		要求するところで(のみ)チェックされます。SCASM は浮動小数
		点数に関しては問題ありません!
        -f      このスイッチは数値のフォーマットのキャストオプション(
		十進数を期待されるところで 0x0A と入力できる)を無効に
		します。このスイッチは、前に "0" が付く英小文字である
		16進数に関する問題を回避する場合にのみ必要です。
        -m      このスイッチは map ファイル(.MPF)の生成を可能にします。
		これは来るべき .BGL ファイルアナライザのためのものです。
		現在はこのオプションは不要です。
AIRPORT ユーザへ: もし SCASM1.7 を Airport 1.23(またはこれより も古い)を使いたいなら、これらのスイッチを環境変数にセ ットすることができます。以下の行を AUTOEXEC.BAT に追加 するか、DOS プロンプトからタイプしてください。
SET SCASM=-i -f

これらのオプションは互換性の問題があるときにのみ使用してください。


シーナリのインストール:

SC_HINTS.TXT を見て下さい.

記法:

Lat
緯度. 正の値は北緯,負の値は南緯を表す
Lon
経度.正の値は東経,負の値は西経を表す
Lat/Lon の値は 度(0..180):分(0..60):秒(0..60).decimal_seconds で表す. N/S, E/W, +/- を使ってもよい. not used positions can be omitted.
	Example:        53:30:30.0
		       N53:30.5
		       +53.50833        は全て正しく,同じものである.
x
east - west の方向の距離 (整数)
y
north - south 方向の距離 (整数)
z
高度,高さ (整数)
:Label
ジャンプ先の名前(15キャラクタまで).
どんなジャンプを使ってもブロック から抜けることはできないので,:Label はブロック内でのみ有効である.':' 文字は必ずいれなければならないが,名前は省略できる.この場合,ジャンプ 先はブロックの終わりを指す(->EndA).
ジャンプ先の :Label は単一の行に入れ,最初のカラムから始めなければなら ない.ラベル名の大文字小文字は区別される.ブロック当たりのラベル数は1 00に制限されている.また,ラベル参照も100に制限されている.
$varname (バージョン 1.7 以降)
後で使ったり、良く使う値をマクロに渡すのに使用するため、パラメータ の計算結果を保存しておくユーザ定義変数(FS5 変数ではない)。 変数名は "$" で始まらなくてはならないが、expression evaluator が混乱するのを防ぐためこれ以外の特別文字を使わないこと。
vx
ベクトルの X 成分
vy
ベクトルの Y 成分
vz
ベクトルの Z 成分
ベクトルはこの3成分を含んでいる.幾何的(3D)なこれらの成分の和(訳注: ベクトルの大きさ,すなわち長さ)は 32767 に正規化されている(正の整数の 最大値).ベクトルは 3D 世界における方向を定義する.即ち,オブジェクト の表面のどちらが見えるかを指定する.
len
RefPoint 単位での長さ/距離を表す.
reference point のスケールファクタ ーが1の場合,RefPoint 単位はメートルである.ベクトルと共に用いられる 場合はベクトルの長さを表す.len は浮動小数点数として扱える.
vattr
自動ベクトル計算用のベクトル属性.
FS5 では,ベクトルは 3D 世界における方向を表すのに使用される. 大抵は,プログラムでこれらのベクトルを(自動的に)計算することができる. vattr パラメータはこれらの計算をコントロールするのに使用する.
RefPoint はあなたが作ろうとしているオブジェクトの真中にあると見なされ るので,プログラムはベクトルの向きを得ることができる.しかし,もし RefPoint が外,或は角にあるような家をデザインしたい場合は自動計算は使 用できない.
m
手動.あなたが自分でベクトル成分を計算しなければならない (default).
a
自動.全ての成分 ( vx, vz, vy 必要なら len)はプログラムにより 計算される.
z
ベクトルは z 成分のみを持つ. (points straight up in the air) No vector calculation is done but len is calculated.
xy
x-y 成分のみが計算され,z は常に 0.
xz
x-z 成分のみ
yz
y-z 成分のみ
上記3つは, ShadedPoly() に続く通常の形の(round)オブジェクト のVectorPoints() で有用である.
au
自動.ただし,ベクトルは常に上向き.もし z 成分が負なら,ベク トルは反転される.
ad
自動.ただし,ベクトルは常に下向き.もし z 成分が正なら,ベク トルは反転される.
ai
家やハンガーの内壁を描く場合に有用. ベクトルは常に反転される.
p
次につづくベクトルを極座標と見なす.(傾き各,方位,[長さ]). プログラムが BGL ベクトルフォーマットに変換する.

以下は version 1.6 でのみ有効.将来変更/拡張されるかもしれない.

t
TexPoly の テクスチャポイント計算を自動化する.テクスチャ全体 が使用されるが,ピクセルのアスペクト比は保存される.
b
t と同じだが,ピクセルのアスペクト比は保存されない.x- 方向 と y- 方向のビットマップのスケーリングは異なったものとなる. TexPoly でのみ有効.
r
ビットマップの y 方向(上下)を反転する.TexPoly でのみ有効.
( )
コマンドがパラメータを必要とするときは,括弧のなかに入れなければなら ない.括弧と最初/最後のパラメータの間には最低1個のスペースを入れな ければならない.
{ }
現在のバージョンの SCASM は括弧のネストができない.そのため,navaid名, ATIS メッセージ中に括弧を入れたい場合は {} を () に変換する.
[ ]
コマンド記述において,この括弧中にパラメータが記述されている場合は, そのパラメータが省略可能であることを示す.
[ ]
SCASM ソーステキストにおいて、この括弧は expression evaluator を動作 させる。これにより、パラメータの簡単な計算を行うことができる。
注意:これは周波数パラメータにたいしては働かない。
;
以下に続くテキストがコメントであることを示す. パラメータの括弧の中で 使用する場合は,行の残り全体がスキップされるので注意すること.さらに 多くのパラメータや閉じ括弧を使うには改行を使うようにして,シーナリア センブラを混乱させないようにすること.
_
navaid 名,ATIS メッセージ中のアンダースコアはスペースに変換される.
#
このキャラクタは特定のパラメータ名における counting number を表す. 例えば,OBI# は OBI1 or OBI2 に置き換えられる.
hex
特定の値は16進数である必要がある.SCASM はこのフォーマットを期待す るのでこのことを示すためにキャラクタを付加してはならない. 単に C1 などと入力すれば良い.(0xC1 でも C1h でもない).
@
マクロにおいて曖昧なラベル(仮引数?)を生成するのに使う -> macro()を見 よ.
大文字
大文字は best overview のためだけにこのドキュメントで用いている. シーナリアセンブラ自身は大文字小文字は区別しない.


Header( type  [*]  MaxNorth  MinNorth  MaxEast  MinEast )
	-
	このコマンドはメインのシーナリインプットファイルの最初に必ずなければ
	ならない.このコマンドはシーナリファイルでカバーするエリアの境界を定
	義する BGL ファイルヘッダを生成する.
	-
	Lat/Lon DD:MM:SS.SSSS 形式で指定

	type    1...4, この値は *.VIS ファイルに対して何かするもの.
		1       visual scenery (sect 9), synth blocks (sect 1 ... 6)
		2       crop duster world, 使用しない
		3       VOR, ILS, NDB, Markers などの navaid
		4       airport menu, ATIS
	これらの数値はこのファイル中の情報の重要さ,およびシーナリの更新のた
	めにどの程度の頻度でこのファイルをスキャンする必要があるか,を FS5 に
	示す.そのため,全ての可視物体は type 1 に置き,あまり重要でないメニュー
	や land-me データは type 4に置く.しかし,小さなシーナリをデザインす
	る場合に限り,全てを1つのファイルに納めても良い.

	*	'*' キャラクタがここに指定されると,MaxEast と MinEast の正し
		い順序がテストされなくなる.シーナリが日付変更線(180度線)
		を跨ぐ場合のみ必要!通常は使ってはならない!

LatRange( MinNorth MaxNorth )
	-
	このコマンドは,Header コマンドに続ける必要がある.
	このプログラムバージョンでは LatRange レコードは1つだけ認められる.
	このバージョンでは LatRange レコードは全ての BGL-section で有効である.
	注意:
	-
	このコマンドのフォーマットは,ファイルをいくつかの緯度の帯に分割でき
	るように,将来のバージョンでは変更されるかもしれない.

Menu( Scenery Title String )
	-
	(FS5 の)Airport メニューから選ぶことができるスタートポイントを定義し
	たければこのコマンドを使え.現在,長さは 20 キャラクタに制限されてい
	る.'(' がタイトル文字列に含まれている場合は '{' を変わりに使うこと.
	Menu コマンドは1つだけ認められる.将来のバージョンではこの制限はなく
	なるだろう.

MenuEntry( Lat Lon  alt  hdg  COMfrq  NAV1frq  OBI1  NAV2frq  OBI2
	Text Info String, max 40 characters )
	-
	スタートシチュエーションデータ.MenuEntry コマンドの前に Menu コマン
	ドがなければならない.さもなければ,SCASM は sequence error を出す.
	info string は 40 キャラクタに制限されている.
	-
	Lat     緯度
	Lon     経度
	alt     高度(メートル単位). 0に指定した場合は FS5 は自動的に地表高度
		に合わせる.浮動小数点数が使える.
	hdg     方位(度) -> 23.33
	COMfrq  COM radio 周波数 -> 123.40 (first digit ignored)
	NAV#frq NAV# radio 周波数 -> 116.30
	OBI#    OBI# 設定(度,整数) -> 271

NDB(    Freq    Rng     ID      Mame    Lat     Lon     Elev )
	-
	NDB の定義
	-
	Freq    周波数 in kc, 帯域は 200.0 ... 526.5
	Rng     レンジ[nm](integer)
	ID      5 キャラクタの NDB id 文字列
	Name    24 キャラクタの名称文字列.空白文字を入れたい場合は '_' を代
		わりに使うこと.
	Lat     緯度
	Lon     経度
	Elev    海抜高度.単位はメートル (integer)

VOR(    Frq     Rng     Flags   Magvar  ID      Name
	Lat     Lon     Elev    Hdg
    )

	VOR の定義.詳細は -> ILS.

ILS(    Frq     Rng     Flags   Magvar  ID      Name
	Lat     Lon     Elev    Hdg                     ; localizer
	Lat     Lon     Elev    Slope                   ; GP
    )
	-
	ILS の定義
	-
	Frq     周波数 in mc -> 113.45
		周波数帯域 VOR 108.0 ... 117.975 mc
		周波数帯域 ILS 108.0 ... 111.975 mc
	Rng     レンジ in nm (integer)
	Flags   2桁の16進数.
		80 ローカライザ ON bit
		40 グライドスロープ送信機 ON bit
		10 DME at glideslope transmitter position bit
		01 DME bit
		02 often found, unknown
		08 DME OFF bit (-> 09 is DME without VOR)
	Magvar  磁方位のずれ(magnetic variation) (例.-3.7). VOR のみ(に関係する)
		ILS に対しては通常 0.
		もしこの値が 0 ならば,VOR/ILSは真の北方向に合わせられる.
		コンパスと NAV 受信機の値を一致させるにはこの magnetic variation
		を設定しなければならない.この値は VOR に対しコンパスと同じだけの
		(角度の)ずれを与える.
	ID      ID 文字列.5キャラクタ長まで.
	Name    名称.24キャラクタ長まで. ' ' のかわりに '_' を使うこと.
	Lat     緯度
	Lon     経度
	Elev    海抜高度[m], integer)
	Hdg     方位[度] (ILS のみ,VOR では 0) -> 144.1
	Slope   GP 送信機のスロープ角 -> 3.0
		Note: 南半球ではスロープに関して問題が生ずる.FS5.0 と FS5a 
		ではこれを正しく扱えないようだ.この問題は FS5.1 では解決さ
		れている.


IM(     Lat     Long    Elev    )
MM(     Lat     Long    Elev    )
OM(     Lat     Long    Elev    )
	-
	マーカービーコン:
	IM      inner marker
	MM      middle marker
	OM      outer marker
	Lat     緯度
	Lon     経度
	Elev    海抜高度(integer)

ATIS(   Rng     Lat     Lon     Frq     RW1 RW2 RW3 RW4 Text    )
	-
	Rng     (有効)範囲[km] (int)
	LAT/Lon ATIS の位置
	Frq     周波数[mc] 例えば 123.45
		周波数レンジは COM 118.0 ... 137.0 mc
	RW1     風向が 0...89度の時に使用する滑走路
	RW2     風向が 90...179度の時に使用する滑走路
	RW3     風向が 180...269度の時に使用する滑走路
	RW4     風向が 270...359度の時に使用する滑走路
	Text    ATIS テキスト. 以下の特別なテキストキャラクタにより FS5 は
		以下の文字列を送る.
		%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: 非常にながいメッセージを使用する場合は,複数の行に分割することが
	できる.
	開き括弧と閉じ括弧の中の全ての  シーケンスは単一の空白キャラク
	タに変換される.
	入力ラインバッファサイズは約4000キャラクタであるが,FS5.0 の現在のバー
	ジョンでは255キャラクタしか扱えないようだ.
	'(', ')' が必要な場合は '{', '}' に置換すること.アンダースコア '_' は
	空白文字に変換される.

LandMe( Lat1    Long1   Elev1   ID1
	Lat2    Long2   Elev2   ID2
	Airport name Rwy
    )
	-
	FS5 の 'Land Me' オプションで必要になるデータ.このオプションはデフォ
	ルトのセスナでだけ有効である.
	-
	Lat#/Lon#	各滑走路端の着地点
	Elev    	着地点の海抜高度[m].
			-> 17.3
	ID#     	この着地点の滑走路ID

TimeZone( Latmax Latmin  Lonmax Lonmin  minutes  ds1  ds2 )
	-
	長方形のタイムゾーンを定義する.定義するエリアが日付変更線 (180 度経線)
	を跨がないように注意すること.
	-
	minutes		UTC(GMT) との分単位の時間差
	ds1		夏時間に関係する (start ?)
	ds2		夏時間に関係する (end ?)
	-
	ds1, ds2 は完全にはテストされておらず,夏時間なしの場合は 0 にセットする.
	オリジナルのファイルに見つかっている値は: 0,0  1,1  2,0  2,1  2,2  1,4  1,3  1,0


include( filname.ext )
	-
	テキストファイルをインクルードする. ファイルは単純に 'main’ソースファイ
	ルにコピーされる.インクルードのネストはできない.正しいファイル名なら何でも
	受け付けられる.macro ファイルの呼び出しもできる.

	これにより,他の全てのコマンドを Include() ファイル中に入れて 'main' ファ
	イルを以下のように作ることができる.
		Header( ... )
		LatRange( ... )
		Include( ... )
		...
		Include( ... )


macro( filename.scm p1 ... pn )
	-
	visual scenery マクロコール.30までの テキストパラメータのマクロをコー
	ルする.p1 ... p2 は 14 キャラクタまでの任意のテキスト.スペース,')',
	'%'は含められない.マクロは他のマクロを読んだり,ファイルをインクルー
	ドすることはできない.

	マクロファイルは任意の VISUAL scenery コマンドを含めることができる.
	'%#' という文字列が見つかると,それは #n 番目のマクロ呼出パラメータに
	置換される.パラメータカウントは 1 から始まる.

	example:
	macro call:     macro( example.scm param1 param2 )

	macro file:     Area( 5 %1 %2 20 )
			-> %1 は param1 に置換される
			-> %2 は param2 に置換される

	条件付マクロ変換 (MacroIf, 疑似コマンド):
	mif( %# )       マクロパラメータ # がテストされる.その値が 0 でない 
			(=TRUE)	ならば以下のコマンドが translate される.
			mif() のネストはサポートされない.
			このバージョンでは zero テストのみがサポートされる.
	melse           Optional. 'mif( %# )' 条件が FALSE である場合に,
			このセクションが translate される.
	mifend          条件付 translation の終了

	Note: 大抵,マクロは Area() ブロック全体を含む.しかし,もしエリア内
	のいくつかのコードを生成するためにマクロをしようしており,かつ同じマ
	クロを2回以上用いており,さらにマクロがラベル定義を持っている場合,
	'duplicated label error' が発生する.これを避けるためには,special
	'@' キャラクタをラベル名に含ませれば良い.このキャラクタは,SCASM の
	内部でマクロを展開するときに,ラベル名に内部マクロカウンタの値を含ま
	せる.内部マクロカウンタは 3桁の数値で,名前は12キャラクタに制限さ
	れる.

	例:
	:Label@ は 95 回目のマクロ展開で :Label095 に展開される.


CopyRight( any text with up to 80 characters )
	-
	このテキストはファイルの終わりに付加される. アンダースコア '_' は必要
	ない.

GenExcl( name.BGL   mask
		TopLat1 BottomLat1 RightLon1 LeftLon1
		TopLat2 BottomLat2 RightLon2 LeftLon2
	)
	-
	name	生成される *.BGL ファイル名 (ie. MY_INCL.BGL)
	LL1	BGL ファイルヘッダの緯度/経度境界; same as -> header()
	LL2	シーナリの緯度/経度境界 (usually equal to LL1)
	mask	16 bit の16進数で,抑圧する CD データを指定する.
		以下のビットの組合せが許される.
		01  no visual scenery, runways
		02  no VOR, ILS
		04  no NDB ?
		08  no ATIS
		他のビットは不明
		全ての他のシーナリを排他するには F をマスクに使用する.
		It seems not all possible combinations are allowed.
	-
	特定の FS5.1 CD デフォルトエリアを抑制するための小さな .BGL ファイ
	ルを生成する.これらのファイルは,このファイルと違うシーナリディレク
	トリにある全てのファイルに影響を与えるようだ.同じシーナリに対して1
	つ以上のファイルを定義できるが,境界の定義は非常に慎重に行う必要があ
	る.
	これらのファイルを他の BGL ファイルと同じサブディレクトリに移動させる
	こと。
	注意: このファイルを使って、どんな合成シーナリ(合成された山を含む)
	も無効かすることはできない。
	See -> SC_HINTS.TXT for more information.

Uvar( $name value )                               1.7 expanded versions
        -
	これは SCASM の内部ユーザ変数をセットするコマンドである。
	このコマンドは BGL コードに対しては何の影響も及ぼさない。
	ユーザ変数は、よりフレキシブルなパラメータ計算を行うために
	エキスパートによって使われる変数である。
        注意: Area() 内で的された変数は Area() 内でのみ有効であるが、
	それ以外の変数は常に有効である。


以下のコマンドは合成(synth)シーナリ(section 1 to 6)用です.このバージョンでは
Enno borgsteede の BGLGEN と全く同じ文法を用いています.
これらは,パラメータがあっても括弧を持たないコマンドしかないので,将来のバー
ジョンでは変更されるかもしれません.
これらのコマンドは Area block 以外の全ての場所に置くことができます.
synth ブロックに関しては私はあまり仕事をしていません.私は base の高度を設定
するためにだけ使用しています.-> block  177  0  0  1111 5.3 のように.
これは私がシーナリを置く位置が  5.3 メートルの高度の blue (sea) ブロックであ
ることを表します.
The best description for these blocks I have seen comes with Enno Borgsteede's
BGLGEN. There you will find also a program (POS.COM) for calculating the row
and collumn number of the blocks. You will also find a similar programm
(POSPLUS) in the AIRPORT pack, a front end to SCASM.

Synth   sect row
	-
	sect	シーナリ合成ブロックのセクション番号(1...6).このセクションは
		次に Synth コマンドが入力されるまで以下の全てのブロックコマン
		ドで使用される.
	row     シーナリ合成ブロックの row 番号.この row は,次に Synth コマ
		ンドが入力されるまで以下の全てのブロックコマンドで使用される.

Block   collunm  sel1  sel2  object  alt
	-
	collumn このブロック(decimal) の collumn (position).
	sel1	セレクタ1, 8 bit の16進数
	sel2	セレクタ2, 8 bit の16進数
	object  オブジェクトタイプを選ぶパターン (16 bit hex)
	alt     海抜高度[m]

以下のコマンドは visual セクション(section 9)用のコマンドです.
このコマンドを使う前に,Area ブロックを定義しなければなりません.
他のコマンドはこのブロックでは使用できません.

Area(   typ     Lat     Lon     Rng     )
	-
	visual scenery コマンドのブロックの開始を表す.
	typ     5, 8, B
		これは単純に生成される16進コードの最初のバイトとなる。
		視程はそれぞれのタイプによって異なる。絶対的なリミットに
		ついては不明。私は異なる情報源からの異なる値を持っている。
                5   0  ...  22 km (0 ... 40 km)
                8                 40 ... 130 km (invisible 0 ... 40 km)
                B   0  ... 255 km (0 ... 130 km)
		このレンジは RefPoint() コマンドのスケーリングファクタと
		V# パラメータにより影響を受ける.
	Lat/Lon このブロックの位置
	Rng     km 単位のレンジ(整数)。この値は、この area がどの位長くシ
		ーナリバッファに保持されるかをコントロールするようだ。
		これはこの Area() 内のオブジェクトが表示されるということ
		を自動的に意味するのではない。なぜなら、視程は参照点の
		V# パラメータによってもコントロールされるからだ(within 
		this Rng limt)。
		FS5.1 は約 256 kbytes のシーナリしか保持できないと言われ
		ているので、メモリも浪費しないようにするため非現実的に大
		きな値を指定しないようにするべきである。

        注意! FS5 において、単一のシーナリエリアは 16kB に制限されている
	ようだ。SCASM 1.6g/1.67(以上)はこの制限をテストし、エラーメッセ
	ージを出すが、24..32Kb までは正しくコンパイルする(現在のバッファ
	の状態による)

EndA
	End_of_Area
	Area ブロックの終了をマークする.コードは生成されない.このコマンド
	は特別なジャンプ先として見なせる.全ての未解決 Jump() コマンドと
	全ての '空の' ラベル (-> only ':') はここに飛ぶ.

RefPoint( type :Label scale Lat Lon [...] )
	-
	type    RefPoint のタイプ (2 or 7)
		2       または
		abs	絶対参照点, MSL(main sea level)
			このタイプは絶対高度設定が必要な場合に使用する。
			高さは "E=" パラメータでセットする。シーナリオブジ
			ェクトはこのレベルにおかれ、対応する合成タイルの
			絶対高度には無関係である。
		7       または
		rel	相対参照点, 常に 0 AGL
			高度は Synth ブロックで定義したものに合わせられる.			
			E= パラメータは FS5 により無視される。
		3	or
		ns	スケール設定なしの参照点
			このタイプは非常に詳細かつ複雑なオブジェクトに用いる。
			スケールファクタの設定には -> SetScaleX() コマンド
			を使う。

	:Label  ジャンプ先
	scale   スケーリングファクタ, '1' なら全ての距離はメートル単位.
		浮動小数点数が使える.このパラメータは "ns" タイプには
		使えない。
	Lat/Lon 位置
	E= ###  この点の海抜高度, type 7/rel ではなし.

	このコマンドは,あとで使用するための参照点を定義する.
	全ての距離はこの点からの相対距離になる.
	もし FS5 が viewer が遠すぎる場合には :Label にジャンプし,以下のコマ
	ンドは実行されない.
	For the Refpoint type selector I simply chose the first digit of the
	generated hex code.

	Experts: 可視性に影響する2つのフィールドが RefPoint() レコード中に
		存在する.私はそれらの正確な意味を知らないのでここでは単に
		v1, v2 と呼ぶ.v1= は 0 でないときにはトータルの可視範囲を
		与える.
		デフォルト値は v1= 0 かつ v2= 0 である.これを "v1= 123" など
		として変更できる.'=' と数値の間に空白文字が入ることに注意. 

SetScale( :Label V1  V2  scale )
        -
        This command sets/changes the scale factor for normal reference
        points (abs, rel).
        If the visual range test parameters are used, a range test is
        done.
        -
        V1, V2  visual range test parameters (used if not 0). Same as
                in the reference points.
        :Label  jump to this label if range test is negative.
        scale   scale factor (decimal, floating point value)

SetScaleX( :Label  V1  V2  SX )
        -
        Sets a sort of binary scale factor for reference points
        types 3/ns and 8.
        -
        V1, V2  visual range test parameters (used if not 0). Same as
                in the reference points.
        :Label  jump to this label if range test is negative.
        SX      This is actualy the exponent of the scale factor
                (integer).
                True scale factor is calculated as follows:

                scale = ( 2^SX ) / 65536
                example:
                scale = ( 2^16 ) / 65536 = 1

                As a result the scale factor can only be set to a
                value which can be expressed as a power of 2 (devided
                by 65536).
                Maybe this sort of scaling speeds up the internal
                calculations because the scaling can now be done by
                shifting. Do not confuse with 2*10^sx .

Points( firstnum        x1 z1 y1  ...  xn zn yn )
	-
	3D point のテーブルを構成する.通常,firstnum は 0 にセットする.
	(訳注:firstnum は,リストの最初の番号を指定するもの)
	0以外の値は存在するリストを変更したり拡張するために使用する.
	area ブロック当たりのポイント数は 400 に制限される(旧バージョン
	では 200)

DefPoint( index  x  z  y )
	-
	ポイントリスト中の1つのポイントを定義する.
	index	このポイントのインデックス番号


VecPoints( m     firstnum  x1 z1 y1  vx1 vz1 vy1 ... xn zn yn  vxn vzn vyn )
VecPoints( p     firstnum  x1 z1 y1  el1 hd1     ... xn zn yn  eln hdn )
VecPoints( vattr firstnum  x1 z1 y1 ... xn zn yn )
	-
	このコマンドはベクトルポイントの表を構成する.
	ベクトルは ShadedPoly() と共に color shading の為に使用される. 
	もし,普通でない形のオブジェクト(訳注:凹型など)については
	ベクトルを手動で計算したほうが良い.
	自動モードでは,ポイントの数は400に制限されている.自動関数は 
	RefPoint からこの点への方向を持つベクトルを与えるが,これは通常の形の
	オブジェクトでのみ正しい.一つのベクトル成分を xy xz yz vattr を使っ
	て抑えることができる.別の値はアセンブラを困惑させるだろう.例えば,
	円筒状のガスタンクに xy-flags を使うことができる.
	-
	x#  z#  y#      ポイントの位置 (integer)
	vx# vz# vy#     ベクトルの成分
	firstnum        最初の点の番号 (通常 0).
	vattr           ベクトル計算属性, see above.
			(a, xy, xz, yz, p)
	el#             上方への傾き(度,-90・.. +90・
	hd#             方位

AutoPoints( firstnum numcount   dx1 dz1 dy1   dx2 dz2 dy2 )
	-
	このコマンドは何も描画しない.単にポイントの表を計算し,埋めるだけで
	ある.Numcount 個のポイントが生成され,firstnum は最初のポイントであ
	る.このコマンドは P1 から P2 への破線の座標を計算し,ポイントリスト
	を埋めるものだと考えて良い.

MoveToPt( # )
	-
	描画カーソルを,3D ポイントリストの point # へ移動する.
	For lines and surfaces.
	-> Points(), ->VecPoints(), -> StartSurface, -> EndSurface,
	-> DrawToPt(), ConcavePoly

DrawToPt( # [#...#] )
	-
	以前の点から,この点へ描画する.
	点は 3D ポイントリストで定義されなければならない.
	このコマンドは括弧ないの全ての # について繰り返す.

StartSurface
	-
	このコマンドがあると,以上のコマンドは面(色またはビットマップで
	カバーされる)を定義する.
	-> EndSurface, -> SurfaceColor(), -> ConcavePoly, -> Bitmap()

EndSurface
	-
	Move, Draw コマンドによる面描画の終了を指示する.

MoveTo( x z y )
	-
	描画カーソルを指定ポイントへ移動する.
	For lines only.
	-> LineColor(), -> Brightness(), -> DrawTo()

DrawTo( x z y )
	-
	以前の点から指定した点へ描画する. For lines only.
	-> LineColor(), -> Brightness(), -> MoveTo()


LineColor( num attr )
	-
	線,破線,点の色を定義する.

ShadedColor( num attr )
	-
	shaded ポリゴンの色をセットする.
	このコマンドは面の色もセットするようだ.

SurfaceColor( num attr )
	-
	num     カラーコード (hex)
	attr    色のアトリビュート
		F0	通常の色
		68	透明色
		69	ダイレクトパレットカラー
	-
	以下で定義される通常ポリゴンと表面の色をセットする.
	-> StartSurface - Move..() - Draw..() - Endsurface または
	-> Poly()

LoadSurfaceColor( var )
	-
	表面色を変数からロードする.

LoadShadedColor( var )
	-
	shaded 表面色を変数からロードする.

Bitmap( name.ext  x  dx  dz  dy )
	-
	active な TEXTURE ディレクトリからビットマップ(テクスチャ)ファイルを
	ロードする.

	FS5.0 では通常:
		C:\FLTSIM5\TEXTURE
	FS5.1 では通常:
		C:\FLTSIM5\TEXTURE             または
		C:\FLTSIM5\MY_SCEN\TEXTURE     the active scenery directory
	-
	ビットマップファイルは大抵 '.R8' 拡張子がついているが,ほかの拡張子
	がついているものもある.
	name.ext        ビットマップファイル名. ドライブ名やパス名を含めるこ
			とはできない.(limit in BGL file format).
	dx              RefPoint unit での x オフセット
	dy              y オフセット
	dz              z オフセット, 通常 0
	x               unknown (decimal).
			Often found values: 0, 1, 8
	Note:
	FS5 のビットマップは簡単な 256 x 256 ピクセルの配列で,1ピクセルあた
	り1バイトを使用している.以下の x, y ピクセルアドレスに注意(?).
		top left	  0   0
		top right	255   0
		bottom left	  0 255
		bottom right	255 255
	いくつかの理由により,以下の方法で描かれるビットマップは
	Bitmap() - StartSurface - MovetoPt() - ... - Endsurface
	トップダウンに描かれる !
	標準カラーパレットは FS5.PAL にストアされている.(in FLTSIM5\TEXTURE
	dir). 普通のドロープログラムではこのビットマップを見たり編集できない.
	(訳注:R8PAINT などのプログラムを使用すれば可能)

RepeatBitmap( dx  dz  dy )
	-
	ロード済みのビットマップを再利用する.パラメータは Bitmap() を同じ.
	おそらく,HD のアクセスを減らす為のコマンドであろう(?)

BitmapMode( first_color )
	-
	preliminary, name may be changed in next versions
	(Bitmap copy mode)
	このコマンドはビットマップ注のピクセルの扱いをコントロールするようだ.
	このコマンドはあなたのシーナリにコピーされる最初の色番号をセットする.
	TexPoly() [and Poly() FS5.1 and later?] とともに使用する.
	TexWindows() または StartSurface - MoveToPt - DrawToPt - EndSurface 
	を使う場合,この値がビットマップのカラーインデックスに加算されるよう
	だ.

	-
	first_color     十進値. コピーされる最初の色番号.
			後で 0 (normal) に戻すことを忘れないこと.
			0 からこの値までの色は透明になる.

Inst_81( state )	; old not longer supported
Smoothing( state )
	-
	この命令は Bitmap() の後に非常によく使われる.
	この命令は地表のテクスチャのイメージスムージングをコントロールするよ
	うだ.Preferences の display option menu のなかで image smoothing 
	オプションがセットされている時に有効になる.
	-> TexWindow(), -> ShadedTexPoly()
	-
	state   0       off
		1       on

MoveTexture( x1 y1 x2 y2 )
	-
	将来のバージョンで名前が変更されるかもしれない.

Palette( name.ext )
	-
	パレットファイル 'name.ext' をロードする.ドライブ名パス名は指定でき
	ない.ビットマップ,テクスチャファイルに FS5 のデフォルトパレットを使
	用する場合はこの命令は必要ない.
	Note: FS5.1 の場合は,対応する *.HAZ ファイルが必要になる.そうしない
	とシーナリ中で haze オプションが使用できない.

Brightness( 1 - 100 )
	-
	色の明るさを指定する.範囲は 1.0 から 100.0 パーセントまで.
	-> LineColor(), -> Surfacecolor() & Startsurface .. Endsurface


DotLine( x1 z1 y1   x2 z2 y2   num )
	-
	point( x1 z1 y1 ) から point( x2 z2 y2 ) までの破線を描く.
	ドットの数は num.ドットの色は LineColor() で指定
	-> LineColor()

Dot( x z y )
	-
	point( x z y ) に点を打つ.点の色は
	-> LineColor()

DotPt( # )
	-
	事前に定義されたポイントリストの number # のポイントに点を打つ.
	コマンドは括弧内のドットの数だけ繰り返される.
	-> LineColor(), -> Points()

BigDot( size x z y )
	-
	x, y, z で指定された点に大きな点を打つ.このコマンドは興味深い
	light effect に使える.
	Set the color with LineColor() AND SurfceColor().
	size パラメータの役割は完全にははっきりしていない.推奨値は 512.
	Format of the size parameter may be changed in future versions.

ConcavePoly
	-
	凹型のポリゴンが続くことを指示する.
	FS5.0 のビットマップについては働かない.
	-> Poly(), -> StartSurface - Move..() - Draw..() EndSurface


Poly( vattr  [vx vz vy   len]   pnum1 ... pnumn )
Poly( m       vx vz vy   len    pnum1 ... pnumn )
Poly( a                         pnum1 ... pnumn )
	-
	現在のポイントリストの pnum1 から pnumn と現在の表面色を使ってポリゴ
	ンを描く.
	Note: 全てのポリゴンは片方の面からしか見えない.ベクトルパラメータは
	ポリゴンがどの方向から見えるのかという方向を指定する.使用する色の明
	るさは光源(太陽, day of time)からの角度により変化する
	-> SurfaceColor(), -> Points()


ShadedPoly( vattr [vx vz vy  len]   pnum1 ... pnumn )
ShadedPoly( m      vx vz vy  len    pnum1 ... pnumn )
ShadedPoly( a                       pnum1 ... pnumn )
	-
	shaded ポリゴンを描く.shading は VecPoints() で定義された 3D point 
	と ShadedColor() を必要とする.shading は一つのポリゴンから隣のポリゴ
	ンへの明るさの変化をスムーズにするために使用する.
	これにより octagonal object を完全に丸く見せることが出来る.
	-> ShadedColor(), -> VecPoints()


TexWindow( vattr [vx vz vy  len]   pnum1 ... pnumn )
TexWindow( m      vx vz vy  len    pnum1 ... pnumn )
TexWindow( a                       pnum1 ... pnumn )
	-
	pnum#   ポイントリストのポイントの番号 (インデックス)
	-
	ビットマップを表示するためのウィンドウを定義する.
	ウィンドウは凹型であってはならない.
	FS6/FSFW95 では使用してはならない。



TexPoly( vattr [vx vz vy  len]   pnum1 bx1 by1 ... pnumn bxn byn )
TexPoly( m      vx vz vy  len    pnum1 bx1 by1 ... pnumn bxn byn )
TexPoly( a                       pnum1 bx1 by1 ... pnumn bxn byn )
TexPoly( at                      pnum1         ... pnumn         )
	-
	テクスチャビットマップで覆われたポリゴンを描く.points は Point()コマ
	ンドで定義されていなければならない.ポリゴンは太陽の位置に関係なく常
	に同じ明るさで描かれる.ビットマップがその目的に用意されている場合,
	明るさは TexPolyShading() で変えられる.(see -> TexPolyShading() ).
	ビットマップポイント bx1-by1 は ptnum1 に対応する.
	イメージスムージングはこのコマンドでは働かない.カラーシェーディング
	は TexPolyShading() と特別に用意したビットマップで行うことができる.
	-> Bitmap(), -> Points(), -> TexPolyShading()
	-
	pnum#   number (index) of a point from the point list
	bx#     bitmap x coordinate (0...255)
	by#     bitmap y coordinate (0...255)
	t,b,r	-> see vattr, texture automatic


TexPolyShading( vx  vz  vy )
TexPolyShading( p   el  hd )
	-
	TexPoly() に続けて使い,ビルのビットマップ(side#.R8)のシェーディング
	強度を決定する.このシェーディングは8つのエリアを持つ特別に用意され
	たビットマップを必要とする.(one for each of the 8 intensity steps)
	-
	vx      x-vector component
	vz      z-vector component
	vy      y-vector component
	p       format flag -> polar coordinates, vector will be converted
		to FS5 format by SCASM.
	el      angle of elevation
	hd      angle of heading


ShadedTexPoly( vattr [vx vz vy  len]  pnum1 bx1 by1 ... pnumn bxn byn )
ShadedTexPoly( m      vx vz vy  len   pnum1 bx1 by1 ... pnumn bxn byn )
ShadedTexPoly( a                      pnum1 bx1 by1 ... pnumn bxn byn )
	-
	テクスチャビットマップに覆われた shaded ポリゴンを描く.points は 
	VecPoints() コマンドで定義されていなければならない.
	ビットマップポイント bx1-by1 は ptnum1 と対応づけられる.
	シェーディングは ShadedPoly() と同様に行われる.
	127 以上のビットマップの色は黒く表示される!
	->VecPoints(), ->Bitmap()
	-
	parameters see -> TexPoly() command.


VecPoly( vattr  [dx  dz  dy   vx  vz  vy]   pnum1 ... pnumn  )
VecPoly( m       dx  dz  dy   vx  vz  vy    pnum1 ... pnumn  )
VecPoly( a                                  pnum1 ... pnumn  )
	-
	現在のポイントリストの point pnum1 ...pnumn と現在の表面色を用いてポ
	リゴンを描く.このコマンドは Poly() と非常に良く似ている.唯一の違い
	は,visibility vector の原点であるようだ.
	自動モードでは,SCASM は最初のポイントの座標(pnum1 -> dx,dz,dy)をベク
	トルの原点として用い,ベクトル成分 (vx,vz,vy) を計算する.


TexVecPoly( a	pnum1	bx1  by1   ...   pnum#	bx#  by# )
TexVecPoly( vattr   dx dz dy    vx vz vy
	pnum1	bx1  by1
	...
	pnum#	bx#  by#
    )
	-
	テクスチャ付の VectorPolygon (-> VecPoly() )
	この命令は pnum1 から pnum# までの点を使ってポリゴンを描く.
	他のテクスチャ付ポリゴンと同じように,各点はビットマップの指定した
	点に結びつけられる.
	-
	vattr		SCASM がベクトルデータをどのように取り扱うか指定する
			ベクトルのアトリビュート (例. 'a')
			a	自動モード, dx,dz, dy, vx, vz, vy が最初の3点
				から取得/計算される.
			m	マニュアルモード, 全てのベクトルデータを入力
				する必要がある.
			t,b,r	-> vattr, texture automatic を見よ
	dx, dz, dy	ポリゴンの表面上の点のオフセット座標.
			このポリゴンを定義する点の1つを選べる.
	vx, vz, vy	ベクトルの 3成分.
	pnum#		ポイントの番号 (Points( ... ) で定義される)

TexRelief(  x y  wx wy  dx dy
        px  py  alt
        ...
        px  py  alt
    )
        -
	ロードされたビットマップが、地表のテクスチャされた起伏を描画する
	のに使用される。この目的のために、長方形の規則的な格子を定義し、
	各格子の格子点が特定の高度とテクスチャポイントに対応付けされる。
	長方形の側面の数を指定し、高度点の数が一致しなければなないこと
	に注意。もっとも小さな格子は X=1 Y=1 で 4 つの格子点を持つ!
	この命令は PerspectiveCall されたサブルーチン内で使うべきである。
	注意:このコマンドはフレームレートキラーである。この命令は衝突
	検出も含んでいる!
        -> PerspectiveCall, -> PerspectiveCall2()
        -
        x, y    格子の長方形の x y 方向の総数
        wx      x 方向(east-west)の格子の幅
        wy      y 方向(north-south)の格子の幅
        dx      x position offset of texture pixel 0 (related to the
                refpoint)
        dy      y position offset of texture pixel 0 (related to the
                refpoint)
                Note: Pixel 0 is the south-west (bottom left) corner of
                the bitmap.
        px      texture pixel x coordinate
        py      texture pixel y coordinate
        alt     altitude value for the given pixel and the current grid
                point (integer)


Jump( :Label )
	-
	実行を :Label へ移す.
	新しく Area() が開始されるとジャンプテーブルは削除されるので,異なる
	エリアで同じ名前を用いることができる.また,Area() ブロックからジャン
	プで脱出できないことを意味する.


VectorJump( :Label m  vx vz vy len )
VectorJump( :Label a  pnum1 pnum2 pnum3 ... )
VectorJump( :Label p  elev_angle  heading  len )
	-
	vx, vz, vy は,仮想平面(表面)に立つベクトルを表す(訳注:法線のことか?)
	Len は RefPoint 単位の距離である.以下のコマンドは viewer(aircraft) 
	とベクトルの方向で計った仮想平面との距離が 'dist' よりも大きい時に実
	行される.それ以外の場合は実行は :Label に移される(ジャンプする).
	ある場合には,平面はあなたが作ったオブジェクトの表面の1つと同じであ
	る.もしそうなら,ベクトルと距離を求めるのに自動ベクトル機能を使える.
	オブジェクト表面(ポリゴン)の3つのポイントの番号だけをいれれば良い.
	それ以上あった場合は無視される.
	-
	Note: この命令は FSFS aircraft factory の GLUE テンプレートと同様
	の機能を持っている.


IfVarRange( :Label      Var minval maxval )
	-
	FS5 の変数 Var の内容をテストする.もし値が minval と maxval の間に入っ
	ていれば次のコマンドから実行が続けられる.それ以外のばあいは :Label 
	へジャンプする.
	-
	Var     FS5 変数番号(16進数で指定)
	minval  最小値 (10進数または 0x. 16進数)
	maxval  最大値 (10進数または 0x. 16進数)



IfVarRange2( :Label	Var1 MinVal1 MaxVAl1
			Var2 MinVal2 MaxVal2
	)
	-
	5.1 のみ,条件は AND される

IfVarRange3( :Label	Var1 MinVal1 MaxVAl1
			Var2 MinVal2 MaxVal2
			Var3 MinVal3 MaxVal3
	)
	-
	5.1 のみ, 条件は AND される



IfVarAnd( :Label Var Mask )
	-
	FS5 の変数 Var を Mask と AND 演算する.結果が TRUE ならば次のコマン
	ドから実行が再開される.それ以外の場合は :Label へ飛ぶ.
	-
	Var     FS5の変数番号(16進数)
	Mask    ビットマスク, 16ビットの16進数値

IfHRes( :Label h s )
        -
        水平方向のサイズと解像度がテストされる
        -
        h       decimal, integer
        s       decimal, integer


IfVRes( :Label v s )
        -
        垂直方向のサイズがテストされる
        -
        h       decimal, integer
        s       decimal, integer


SetVar( var val )
	-
	var     FS5の変数番号(16進数)
	val     値(10進数,または 0x で始まる16進数)


SetVar7E( Var val )
	-
	別の SetVar 命令.ある種の add-on シーナリにのみ存在する.
	SetVar() との違いは不明.


Call( :Label )
	-
	:Label のサブルーチンをコールする.サブルーチンから返ると,
	実行は次のコマンドから再開される.
	-> Return


Return
	Call() コマンドの次の命令へコントロールを戻す(サブルーチンから戻る).
	全てのサブルーチンは Return コマンドで終わらなければならない.
	..Call.. コマンドで入った全ての part はサブルーチンであると考えら
	れる.
	ほとんどの 'database error' メッセージは Return がおかしな場所に置か
	れた Jump 命令により起こる.
	-> Call(), -> ..Call()


PerspectiveCall( :Label )
	-
	隠れ面用.3次元オブジェクトを描く時に使用する.この命令は FS5 にどの
	オブジェクトが隠れるか,あるいは隠れないかを決定させる.平地の表面を
	描く場合には必要ない.

	主な手順:
	;
	Area( ... )
	    PerspectiveCall( :House )
	    Jump( : )

	:House
	    Perspective
	    RefPoint( :H_end ... )
	    SurfaceColor(...)
	    Poly( ... )
	    ...
	:H_end
	    Return

	...
	EndA


PerspectiveCall2( :Label )
        -
        implemented for testing, name may be changed in future versions.


Perspective
	-
	PerspectiveCall() で呼ばれたサブルーチンの頭に置く.もし忘れると,何
	も見えないか,あるいはそれだけでは済まずにクラッシュするだろう!


ShadowCall( :Label )
	-
	:Label のオブジェクトの影を描く.
	PerspectiveCall() の後でだけ使用するべきである.
	-> Return, -> see Building(...) example


RotatedCall( :Label xdeg ydeg zdeg )
	-
	:Label のサブルーチンを回転した座標でコールする.回転中心は現在の 
	RefPoint() である.
	-> Return


TransformCall( :Label  delta_x  delta_z  delta_y
		x_deg  xvar	y_deg  yvar	z_deg  zvar  )
	-
	これは RotatedCall() の拡張である.
	サブルーチンは変換された座標でコールされる.すなわち,新しいテンポラ
	リ reference point は元の点から delta_# だけ移動した場所になる.また,
	座標系はこの点を中心にして #_deg だけ回転する.
	-> Return
	-
	:Label	変換座標系でコールされるサブルーチンのアドレス
	delta_#	オブジェクトの平行移動量(linear displacement) (integer)
	#_deg	回転角 [degree] (floating point, i.e. -22.5)
	#_var	variable (hex), 使わない場合は0 !


CallAsm( :Label x )
	-
	:Label 位置にある 8086 アセンブリプログラムをコールする.
	2番目のパラメータ x については不明.1 にセットすること.
	アセンブリ言語命令は Dbx(...) バイナリ命令群を使ってしか
	入力できない.


RoadMoveTo(     width   delta_x  delta_z  delta_y )

RoadMoveTo2(    width   delta_x  delta_z  delta_y )

TaxiMoveTo(     width   delta_x  delta_z  delta_y )

RoadLineTo(             delta_x  delta_z  delta_y ... )

RoadLineTo2(            delta_x  delta_z  delta_y ... )

TaxiLineTo(             delta_x  delta_z  delta_y ... )
	-

	全ての ..Move.. 命令は,道路または taxiway の開始点を,現在の 
	reference point からの相対位置で設定する...Line.. 命令は道路または 
	taxiway を以前のポイントからこの命令で指定した場所までまで描画し,こ
	の点を次の ..Line.. 命令の開始点に設定する.早朝や夜は,道にはオレン
	ジ色の灯,taxiway は青い灯がつく.
	色は SurfaceColor() で指定する.

	width   幅の 1/2 の値.単位は refpoint units
	-
	delta_x east-west 方向の距離 from reference point or
		from the previous point (integer).
	delta_z 高度差, usually 0 (int)
	delta_y north-south 方向の距離 from reference point
		or from the previous point (integer).

	Note!   ..LineTo() コマンドは各個ないの3項組の数だけ繰り返される.

	Road..To() と Road..To2() との違いは不明.


滑走路関係コマンド:
------------------------

RunwayCall( :Label [layer] )
LayerCall(  :Label layer )
	-
	これは1つ以上の RunwayData レコードをコールする -> see example.
	Note: このコマンドは他のシーナリコンパイラと全く同じコード列を
	生成するわけではない.この違いは multi runway block を作ることを
	可能にしている.
	layer パラメータを省略した場合は SCASM は 24(滑走路のデフォルト
	値)にセットする.0x## の形式の 16 進数を入力できる.このパラメー
	タは,描画順序(決定)に必要な地表レイヤ番号を定義する.
	より高い(レイヤ)番号のポリゴン(又は滑走路)は最後に描画されるので,
	可視になる.

RunwayData( Lat Lon   )
	-
	滑走路データレコード.Lat, Lon パラメータが最初になければならない.
	(without any keyword). 他の全てのパラメータはどの順序で入力しても
	良く,キーワードにより識別される.キーワードとデータの間には空白
	文字が必要である.大文字の N, F は Near/Far 端データを表す.滑走
	路の near 端は HEADing 方向で着陸するときに近い側の滑走路端を表す.
	省略したフィールドのデフォルト値は 0 である.滑走路データは通常
	type 5 の Area() ブロック内に埋め込まれる.
	幾つかの滑走路の機能は FS5.0 では表示されないが,いくつかの(全てで
	はない)機能は MS-Japan/MS-Caribbean シーナリをインストールした
	FS5.0 では表示される.

	-
	ALTitude        滑走路の高度 [m, MSL] (浮動小数点数可)
			この高度で滑走路の絵が描かれるだけであることに注意.
			もしこの値が地表の高度と一致しない場合はこの絵をす
			り抜けてしまう.Synth ブロックを使って地表高度を
			合わせること!
	HEADing         滑走路の真方位 [度] (float)
	LENgth          滑走路長 [ft] (integer)
	WIDth           滑走路幅 [ft] (integer)
	ID              滑走路の ID 番号で,[L|R|C] キャラクタを付加できる.
			ID 番号は "Markers" パラメータで ID ビットがセット
			されているときのみ表示される.
	SURFace         表面のタイプ
			0       泥,
			1       コンクリート,
			2       アスファルト,
			3       草原

	Markers         2桁の16進数.必要な機能の番号を加算すること.
		01	左右端の白い境界線
			(アップデートしていない FS5.0 では無効)
		02      treshold マーカ。滑走路端の 'piano key' ペイントを
			有効にする。
		04      touchdown マーカ。滑走路の threshold から150m(492ft)
			はなれた場所にある touchdown zone マーキングを有効に
			する。	
		08      fixed distance マーカ。滑走路の threshold から300m
			(984ft)はなれた場所に 2 fat distant マーカをおく。
		10      センターライン
		20      ID 番号
		40      distance マーカ。enables distant markings about
                        every 150m. This bit also enables the color
                        change to yellow for the far away runway edge
                        lights.
		80      ???
			Note: 0x40 と 0x08 の distance marker を同時に使うと
			問題が起きることが報告されている

	Lights          1桁の16進数で,滑走路脇のライトをコントロールする.
		00      オフ
		01      low intensity light
		03      high intensity light
		04      センターラインのライト

	以下のパラメータは滑走路の両方の端に対して利用できる.各滑走路端は最後の
	文字 N=near / F=far で定義される.near 端は "Heading" パラメータにより定
	義される.これは指定された方位でアプローチする際に,近い側にある滑走路端
	である.

	ThrLightsN ThrLightsF   16進数
				01 green/red treshold light を有効にする
 				04 REIL (Runway End Identification
 				   Lights, white flashlight, あるバージョンでは
				   無効) を有効にする.
				approach light か VASI が必要な場合は threshold
				light を on にしなければならない.
	StrobesN   StrobesF     ストロボライトの数 (dec)
	VasiSlopeN VasiSlopeF   VASI スロープ角[度]
	VasiSideN  VasiSideF    センターラインからの VASI の距離[ft](int)
				サイドを指定するのに,-/+ の変わりに R/L を使用
				できる.
				(例. VasiSideN L120 ). L/R がない場合は SCASM
				は VASI は左側にあると見なす.サイドは常にパイ
				ロット(から見た方向)で指定される.
	VasiDistN  VasiDistF    滑走路の中心からの VASI の距離[ft].
				符号は必要ない!'-' がついていると方向が逆になる.
				2-bar VASI の場合,距離は2つの bar の中心から計
				られる.この値は touch down markers (->Markers)
				ILS-GP に関係する.
	VasiSpaceN VasiSpaceF   VASI 要素間の間隔 [ft]
	VasiBarsN  VasiBarsF    VASI bars の数 - 1 (0|1|2).
				0       VASI なし
				1       2 bars
				2       3 bars

	AprLN      AprLF        Aproach ライトのタイプ(decimal). threshold lights
				を有効にしておかなければならない.
				0       なし
				1       syncronous flashing strobes
				2       MALSF
				3       MALSR
				6       ALSF-1
				7       ALSF-2
				8       running strobes
				9       10 と同じだが,赤いライトが crash しない.
					(FS5.0 german version w/o update)
				10      ICAO III
					(アップデートしていない FS5.0 では無視)
 	ThrOffN    ThrOffF      Offset distance in ft for displaced thresholds.
 				This section is subtracted from the runway
 				length and is painted with white arrows.
	ExtN       ExtF         Runway extension. This pre-threshold area is
				painted with a yellow chevron marking pointing
				to the threshold. This length is added to the
				runway. This area is not available
				for taxing and landing.


	This is a typical sequence for a runway block:
	;
	Area( 5  N54:11:13  E07:55:00  15 )
	    RunwayCall( :runways )
	    ;
	    Jump( : )
	    ; note! the Label is omitted, this is a Jump to the end of block

	:runways
	    ;
	    ; first runway record
	    ;
	    RunwayData( 54:11:17.0493 07:54:57.7855
		  altitude 3.5          heading 57.2    lenth 846
		  width    40           surface 1 )
	    ;
	    ;  next runway record
	    ;
	    RunwayData( 54:11:16.2394 07:55:00
		alt        3.5  heading    27.2 id      3
		lenth      4788 width      98
		surface    2    lights     13   markers 36
		THRLightsF 1    THRLightsN 1
		VASIBarsF  1    VASISpaceF 330  VASIdistF 1115
		VASIsideF  r120 VASIslopeF 3.0
		VASIBarsN  1    VASISpaceN 330  VASIdistN 1115
		VASIsideN  L120 VASIslopeN 3
		ThrOffN    740  ThrOffF    740
	    )
	    ;
	    ;  last runway record
	    ;
	    RunwayData( 54:11:10.4085 07:54:58.0623
		alt     3.5     head 327.2      len 1312
		wid     98      surf 1          id 33
		markers 32
	    )
	    Return
	    ;
	    ; Do NOT FORGET this Return !!!
	    ; =============================
	    ;
	EndA    ; this marks the end of the Area block


RunwayLights(  )
	-
	このコマンドは RunwayData() に非常に良く似ているが,より基本的である.
	もしあなたがビットマップを使っている場合,滑走路の写真もあるだろうか
	らもう1つ滑走路を作ろうとは思わないだろう.このコマンドではビットマ
	ップの滑走路を illuminate(?) することができる.通常,各滑走路端につ
	いてこのコマンドの1つが必要である.このレコードを1つの滑走路に対し
	2つ使う場合,そのうちの1つだけが 'Lights' パラメータを含むべきであ
	る.また,別のライトを有効にするために 'ThrLights' パラメータをセット
	しなければならない.
	このコマンドを RunwayData コマンドと compatible にするには,特別な
	スケーリングファクター(0.3048) を使う.高度の設定は RefPoint( 2 ... )
	で行わなければならない.
	-
	HEADing         方位[度]
	LENgth          滑走路長,スケーリングふぁ区田に依存
	WIDth           滑走路幅,スケーリングふぁ区田に依存
	Lights          see RunwayData()
	ThrLights       see -> ThrLights#
	Strobes         ストロボライトの数
	VasiBars        see -> VasiBars#
	VasiSlope       see -> VasiSlope#
	VasiSide        see -> VasiSide#
	VasiDist        see -> VasiDist#
	VasiSpace       see -> VasiSpace#
	AprL            see -> AprL#


Building( delta_x  delta_z  delta_y  height  x  y  type  wallflags )
	-
	このコマンドは FS5 内部の標準ビルの1つを描く.通常,各ビル毎に 
	RefPoint() を使う必要がある.ビルを RotatedCall で回転させることがで
	きる.
	-
	delta_? delta は現在の reference point からの位置を示す.通常は 0
		(int). 注意:大きな Delta_? の値を用いると,近くにビルがある
		場合に見え方がおかしくなるかもしれない!初心者は 0 を使うこと
		を強く推奨する.また,各ビルはそれぞれ Reference point と 
		PerspectiveCall() 命令を持つべきである.
	height  ビルの高さ.フロアの数で計る.各フロアは 4 refoint unit.
	x, y    X/Y (east-west/north-south) dimensions (int) of the building.
	type    hex value, 下位3ビットは SIDEx.R8 ビットマップを用いることを
		示す.望むタイプを得るには以下のそれぞれのグループから1つず
		つ選び,加算すること.

		value from each group.
		  00    beige with vertical stripes
		  01    white with vertical stripes
		  02    dark gray with vertical stripes
		  03    gray with vertical stripes
		  04    white with dark vertical stripes
		  05    white with horizontal stripes
		  06    beige with horizontal stripes
		  07    light gray with vertical stripes

		bits 3 と 4 はビルの形を定義する
		  00    通常のビル
		  08    屋根つき,屋根は北を向いている
		  10    斜めの壁.ピラミッド状.
		  18    8角ビル -> additional wallflags needed.

		8000    あらかじめ定義された SIDE#.R8 ビットマップの代わりに
			ユーザ定義のビットマップを使用する.->bitmap()
			Bitmap() コマンドを Building() コマンドの直前で使う.
			Note, ビットマップは特別のデザインを持っていなければ
			ならない.

		他のビットは不明

	wallflags       hex value. 各壁と天井のフラグ.通常は FFFF, 1FF また
			は 1F.
			0001    roof
			0002    west
			0004    east
			0008    south
			0010    north
			0020    south-east (needed for octogonal Buildings)
			0040    south-west ( -"- )
			0080    north-east ( -"- )
			0100    north-west ( -"- )

	; example for the use of a rotated building with shadow
	;
	Area( 5 54:55:25.6584  8:20:19.7976 8 )
	    PerspectiveCall( :SubRoutine1 )
	    ShadowCall( :SubRoutine1a )
	    Jump( : )

	:SubRoutine1
	    Perspective
	:SubRoutine1a
	    RefPoint( 7 :no_building  1  54:55:25.6584  8:20:19.7976 )
	    ;  Note, since this refpoint lays in a subroutine the label
	    ;  must NOT point to the end of the block but to a Return command!
	    ;
	    RotatedCall( :SubRoutine2 0 0 -3.5 )
	:no_building
	    Return
	    ;
	:SubRoutine2
	    Building( 0 0 0  5 35 50  0 1F )
	    Return

	EndA


City
	-
	標準の街を作る
	;
	; Example:
	Area( 5 53:42:30  07:49:20  80 )
	    PerspectiveCall( :A )
	    Jump( : )
	:A
	    Perspective
	    RefPoint( 7 :B  16  53:42:30  7:49:20  v1= 10000 )
	    City
	:B
	    Return
	EndA


Monitor3D( :Label  xmin xmax  zmin zmax  ymin ymax )
	-
	3D エリアがモニタされる.もし来たいが指定されたエリアに入っていな
	ければ :Label へジャンプする.
	値はすべて m 単位である.これを回転させることはできない.


SenseBorder( :Label  ptx0 pty0  ...  ptxn ptyn )
	-
	我々(機体)が点の座標のリストで定義されるポリゴンの中に入っている
	時に以下に続く命令ブロックを実行する.入っていなければ Label へ
	ジャンプする.
	スケールはRefPoint コマンドのに依存する.???
	凹型のポリンゴンは許されず,また点は時計回りに入力されていなけれ
	ばならない!


MonitorPt( :Label ptnum0 ... ptnumX )
	-
	3D エリアを定義する点の番号を使った 3D モニタ命令.
	我々(機体)が点のリストで定義されるポリゴンの中に入っている時に以
	下に続く命令ブロックを実行する.入っていなければ Label へジャンプ
	する.
	点は Points() コマンドで事前に定義しておかなければならない.
	凹型のポリンゴンは許されない.


MonitorTr( :label
	dx    dz    dy
	wx    wz    wy
	xdeg  ydeg  zdeg
    )
	-
	5.1 のみ, SCASM 1.6
	変換 3D モニタ命令.モニタされる 3D エリアは(RefPoint の位置から)
	シフト,回転される.
	機体が(エリアの)外にある場合は Label にジャンプする.
	-
	dx      reference point からの x オフセット (int)
	dz      reference point からの z オフセット (int)
	dy      reference point からの y オフセット (int)
	wx      エリアの x 幅 (int)
	wz      エリアの z 幅/高さ (int)
	wy      エリアの y 幅 (int)
	xdeg    x 回転角
	ydeg    y 回転角
	zdeg    z 回転角


SurfaceType( type  width_x  width_y  alt )
	-
	指定された矩形エリアの表面の特性を定義する.
	Note, elevate された表面を 'harden' することはできない(?).
	Use aditional section 16 commands for this.
	-
	type            0: 滑らかな面, 滑走路,taxiway
			1: 荒い面
			2: 水面.splash / crash を引き起こす.
	width_x
	width_y         N-E / N-S 方向のずれ,RefPoint() コマンドの scale factor
			に依存する.値は左(or 上)側から右(or 下)側へ測る
			(integer)
	alt             表面の高度 [m](integer).


以下の命令はオリジナルの *.BGL ファイルに多く見受けられます.多くのシーナリ
デザイナは binary/hex コマンドをこのために使います.最終的な名前が決まった
ときに古いソースファイルを修正するのを容易にするため,私はこれらの命令にダ
ミーの名称を付けています.


Inst_7D
	この命令は TexPoly() と ShadedTexPoly() 命令の直前に多用される.
	個の命令はビットマップに近いづいた時の bend up effect を回避す
	るようだ.
	その他の情報はない.
	-
	もっと良い名称が見つかったら教えて下さい.


visual scenery area に任意の hex-value を生成するコマンド.これらは
エキスパートに新しいシーナリコマンドを試すツールを与えるためのものです.


Dlx( hhhhhhhh )         DefineLongHex.32bit の16進数が挿入される.
Dld( dddddddd )         DefineLongDecimal.32bit の16進数に変換され
			挿入される.
Dwx( hhhh .. hhhh )     DefineWordHex.括弧内の全ての16進数がファイルに
			コピーされる.
Dwd( ddddd .. ddddd )   DefineWordDecimal. 括弧内の全ての値がファイルに
			コピーされる.
Dbx( hh .. hh )         DefineByteHex.
Dbd( dd .. dd )         DefineByteDecimal
Dba( AbCdE )            DefineByteASCII


Section 16 commands:
--------------------
ほかのレコードを除いてこのセクションはセクション9と類似したデータ構造を持っ
ている.以下の命令を使って高度つき表面を Synth1 ... Synth6 で定義した ground
level で定義できる.


Area16( Latmax Latmin Longmax Longmin )
	-
	Defines an rectangular area around your elevated surface.
	Atention: Due to the binary format of this command the total length
	of one Area16()...End16 is limited to 256 Bytes. SCASM does not test
	this limit!

End16
	-
	defines the end of this area16 instruction block.

SetElevation( elev )
	-
	defines an elevated hard surface i.e. for a runway on a mountain
	This instruction was found only in section 16 !
	elev	elevation (MSL) in meters (integer).

SenseBorder( :Label  ptx0 pty0  ...  ptxn ptyn )
	-
	the same as in section 9

RefPoint( 2 ... E= 0 )
	-
	the same as in section 9. Do not use other RefPoint types. Sometimes
	it is usefull to set parameter V1 on large elevated surfaces.

RotatedCall( ... )
	-
	the same as in section 9,
	Found in some original files but it seems this does not work in
	section 16!

Return
	-
	the same as in section 9

Jump( :Label )
	-
	the same as in section 9

IfVarRange( :Label  var minval maxval )
	-
	the same as in section 9

IfVarAnd( :Label Var Mask )
        -
        the same as in section 9

CallAsm( :label hval )
        -
        the same as in section 9

dbx, dwx, dlx, dbd, dwd, dld
	-
	the same as in section 9

other commands are simply ignored, no error message !

Example for an elevated surface:
	;
	; This defines the hard surface of the platform in the joke.stn in my
	; GERISNS scenery.
	;
	Area16( 54:43  54:41:30   7:12  7:07 )
	   Refpoint( 2 :  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 )
	End16


---------------- Appendix ----------------

..Color() コマンドで使用するカラーコード(hex value).
これらのカラーコードは,ビットマップファイル中の(色)数により異なる.

変化する明るさを持つ色.時刻により変動する (F0 colors)
	00      black
	01      dark gray
	02      gray
	03      light gray
	04      white
	05      red
	06      green
	07      blue
	08      orange
	09      yellow
	0A      brown
	0B      beige
	0C      orange/brown
	0D      green/gray
	0E      blue/marine

変化しない色.イルミネーションに使用
	0F      red
	10      green
	11      blue
	12      dark green/blue
	13      orange
	14      yellow
	15      white (high intensity)
	16      white/light gray (low intensity)

その他の色
	21      dark green, replacement color for some bitmaps ?
	2F      brown



---------------- よく使う変数 (hex) ---------------
これらの変数の殆どはユーザは変更してはならない.
	-
	282     ランニングビットタイマ. 0000.0000.0000.0001 から 
		1000.0000.0000.0000 まで1つのビットが6秒かけて移動する.
		フラッシュライトに使用.
	284     クラッシュコード
		2       mountain crash
		4       crash
		8       splash
		E       building crash
		10      crash with other aircraft
	288     給油所にいるかどうかのフラグ.1 にセットすると燃料が満タン
		になる.機体速度は殆ど0でなければならない.そうでないと
		FS5 はこのフラグを無視する.
	28C     Time of day コード
		1       day
		2       dusk/dawn
		4       night
	37E     Refpoint からの機体の delta X(east) 座標
	386     Refpoint からの機体の delta Y(north) 座標
	382     Refpoint からの機体の delta Z(alt) 座標
	346     scenery density コード
		0       very sparse
		1       sparse
		2       normal
		3       dense
		4       very dense
	340	地表のテクスチャフラグ
	342	ビルのテクスチャフラグ
	390	海面のテクスチャフラグ (FS5.1 のみ?)


--- ILS / VOR examples for flags -------------------------------------
	-
	flag bits for ILS / VOR
	-----------------------
	VOR      00   VOR, no DME
	VOR/DME  01
	VORTAC   03   ?(not approved)
	DME      09   only DME readout, without VOR !

	flag bits for ILS
	-----------------
	LLZ      82   localizer only, no GP, no DME
	LLZ/DME  83
	ILS      C2   normal ILS, no DME
	ILS/DME  C3   ILS, DME at Loc pos.
	ILS/DME  D3   ILS, DME at GP pos.


---------------- Hex calculation ----------------
For some parameters I chose hex values as input. The reason for this is
to give you full access to the data records.
Unfortunately hex calculation is not as easy as normal calculation, but I
will try to give some help.

	Hex conversion table:
	decimal hex
	0       0
	1       1
	2       2
	3       3
	4       4
	5       5
	6       6
	7       7
	8       8
	9       9
	10      A
	11      B
	12      C
	13      D
	14      E
	15      F

Example:
	We want to calculate the flag parameter for an ILS. We have to add
	the following values:
	80      for the localizer
	40      for the glidepath transmitter
	01      for the DME (if wanted)
		As the '8' and '4' are the same in both number systems we
		simply add them in the decimal system. This yields 12. The
		conversion Table gives you the letter 'C' as hex digit.
	---     With this we get the result:
	C1
	===


和訳:村上 卓弥