申し訳ありませんが,まだチュートリアルはありません.命令の使い方の雰囲気をつ かむために,サンプルファイルを学習して下さい.
このプログラムを使って作成するシーナリは全て Header コマンドとそれに続く LatRenge コマンドで始まります.それからはどんなコマンドをどんな順番で使用して も構いませんが,1つ例外があります.Visual scenery コマンドは area ブロック内 でのみ使用でき,また area ブロック内ではその他のコマンドは使用できません.
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 プロンプトからタイプしてください。
これらのオプションは互換性の問題があるときにのみ使用してください。
Example: 53:30:30.0 N53:30.5 +53.50833 は全て正しく,同じものである.
以下は version 1.6 でのみ有効.将来変更/拡張されるかもしれない.
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 ===