This document is written in Japanese. English document is here.
生成されたソースファイルを SCASM でコンパイルし、再び BGL ファイルを 生成することが可能です。
テクニックの学習や、シーナリ修正の目的などにお使いください。
「逆コンパイラは、 SCASM, BGLCOMPと BGLGEN 用のものについてはリリースされて いますが、 FSASM用のものはリリースされていません。 悪用される可能性があるた め、逆コンパイルに反対するむきもあります。 良心的でないシーナリの作成者が他 人のシーナリの内容を盗み、それを彼らのシーナリ中でクレジットを与えずに使用し - さらにはそのシーナリを売る、といった事件が起きているという報告がありま す。」このような問題を防ぐため、シーナリの原作者の著作権を*必ず*守ってください。 これに同意できない場合は、このソフトウェアを使用してはなりません。
World Wide Guide to FS Scenery Design より引用
http://flightinfo.ens.ne.jp/tmurakam/wwgscd-j/index.htm
SCDIS はフリーソフトウェアで無料で使用することができますが、public domain ではありません。SCDIS に関する全ての権利は村上卓弥が保持しています。
SCDIS は商用/非商用目的のどちらでも使用することができます。
配布条件などについては、以下の BSD style copyright に準じます。
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
なお、UNIX 上で使用することももできます。UNIX 対応の節を御覧ください。
scdis [オプション] <シーナリファイル名> <出力ディレクトリ名>シーナリファイル名は、BGL ファイルのファイル名です。出力ディレクトリは解析 結果の SCASM ソースファイルの出力ディレクトリ名です。存在しない場合は作成 されます。なお、出力ディレクトリ名を省略した場合、カレントディレクトリに出 力されます。
オプションには以下の値を指定できます。
-s : ラベル名を連番で採番します。-s を指定しない場合は、 ラベルは BGL ファイル内のオフセット位置になります。出力されるファイルは以下の通り。
scdhead.txt BGL ヘッダ情報 scd*.scm 各セクションのソース compall.bat SCASM で一括コンパイルするためのバッチファイル sclink.ctl SCLINK 用コントロールファイルscdhead.txt には BGL ヘッダの情報が出力されます。(これは SCASM ではコンパ イルできません。)
BGL ファイルは 22 のセクションから成り立っています。scdis で解析できるセク ションは以下の通り。
Section 0 : VOR, ILS Section 1-6 : Synthetic Scenery Section 9 : Procedural Scenery Section 10 : Library Section 11 : Airport Section 13 : ATIS Section 14 : NDB Section 15 : Dynamic Scenery Section 16 : IMO Marker, Landme, Area16 Section 19 : Exception各セクションの解析結果はセクション別のファイル名に格納されます。例えば、 セクション 0 については、ファイル名は scd0.scm になります。
それ以外のセクションは、各 LatRange(緯度の範囲)毎に1つのファイルが生成 されます。セクション9なら、ファイル名は scd9-1.scm, scd9-2.scm ,... とい うように順に名前がつきます。これは SCASM は一度に一つの Latrange しか1フ ァイル中で取り扱えないためです。
なお、SCASM は最新のものを使用してください。SCDIS が出力するコードは、 古い SCASM ではコンパイルできないものがあります。
最新の SCASM は単体では配布されていないので、Abacus 社の Airport & Scenery Designer を購入するか、 他のフリーのツールに添付されているものを使用してください。 現時点では、Airport Facility Directory (http://www.fly.to/scenery) に添付されているものが ver 2.30 とかなり新しいです。
compall.bat を実行すれば全ファイルを bgl ファイルにコンパイルします。 なお、Section 19 については、exclude.bgl というファイル名の BGL ファイルが 生成されるようになっています。
できたファイルを1つにまとめるには sclink を使用してください。 sclink sclink.ctl と実行すれば、output.bgl というファイルにまとめたファイル が生成されます。
ただし、util.c 中で _mkdir() というランタイムライブラリを使っているので、こ こだけ書き換える必要があるかも知れません。
なお、big endian のマシンで使用する場合は、type.h の先頭で BIG_ENDIAN を define してコンパイルしてください。ただしテスト はしていません。
下里 康一 MOJ Gene Kraybill Winfried Orthmann Alessandro Antonini Jim Reuter
Ver0.1 最初のバージョン。CPAJ 内でのみ公開。 Ver0.2 非公開 Ver0.3 '97/1/20 非公開 殆どのセクションを解析できるようにした。 Ver1.0 '97/2/1 公開版 Ver1.1 '97/2/16 ILS glide slope angle の解析が変だったのを直した TransformCall の回転角の解析を修正した RunwayData の ID の解析を修正した ATIS の runway id の解析を修正した Section9 の以下のレコードを解析するようにした 0x1d - VPPolygon 0x42 - Runway 0x7F - City Section9 の以下のレコードをダンプするようにした 0x17 - unknown, length = 4 0x40 - RefPointInd 0x41 - CondCall41 0x62 - PointList 0x6d - CondJump6D Section9 の以下のレコード長を修正した 0x82 - SimpleRefPoint (20bytes) Ver1.2 '97/2/23 南・西半球で緯度・経度の計算が違っていたのを修正 Section9 の以下のレコードを解析するようにした 0x1c - IfVarRange2 0x1d - VecPoly 0x21 - IfVarRange3 0x28 - BigDot 0x34 - CondJump34 0x72 - RunwayLights Section9 の以下のレコードをダンプするようにした 0x1b - GoIfOutRotatedCube(SceneryMaker) ATIS メッセージ最大長を 255 キャラクタにした Ver1.3 '97/3/15 いくつかのバグ修正 Section9 の以下のレコードを解析するようにした 0x15 - TexRelief 0x1b - MonitorTr 0x34 - SetScaleX 0x58 - MoveTexture 0x5d - RepeatBitmap 0x62 - MonitorPt 0x6d - IfHRes 0x75 - PerspectiveSurface 0x83 - SetScale Ver1.4 '97/3/16 VectorJump 解析のバグ修正 Ver1.5 '97/10/15 バグ修正 ドキュメント修正 DOS 環境のサポートを終了 Section9 の以下のレコードを解析するようにした。 0x8c - CallDll Ver1.6 '97/10/26 処理速度を向上 実行ファイル名を変更 Ver1.7 '98/2/14 VOR の名前表示が変だったのを修正 Section 0 の レコード 0x14 を読み飛ばすようにした。 Section9 の以下のレコードを解析するようにした。 0x54 - CallAsm Section16 の全レコードを解析するようにした。 Ver1.8 '99/10/16 Section19(GenIncl) の解析を行うようにした。 使用条件を変更。 ドキュメントの fix。 Ver1.9 2000/1/15 Section10(Library) の解析を行うようにした。 取り扱えるラベルの上限値を無制限とした。 -s オプションの追加 以下のレコードを解析するようにした。 ShadowPos/ShadowPosInd/ShadowCallVI IfVRes SetVar7E Transparency Call32 TimeZone StartTimer PtichCall Transparency PolyM MoveToPos1/MoveToPos5 TaxiTo MonitorRwy SetWeather Weather 以下の命令の出力が間違っていたのを修正 IfVarRange LandMe Block RunwayData/RunwayLights
SCDIS のホームページ : http://www.freesc.org/
作者のホームページ : http://flightinfo.ens.ne.jp/tmurakam/