本プログラム(rs_analyzer)は、スーパーファミコン版『ロマンシング サ・ガ』シリーズのROMイメージファイルから、モンスター・アイテムなどのデータを解析して、解析結果をテキストファイルに出力するプログラムです。
なお、解析結果の中には非常に信頼性の低い情報や明らかに間違っている情報も含まれています。ご注意ください。
アーカイブに含まれているファイルは以下のとおりです。なお、2種類のアーカイブを用意していますが、どちらも内容は同一です。
rs_analyzerが解析した結果を出力したテキストファイルです。文字コードはShift_JIS(改行コード: CR + LF)となっています。個々のファイルの内容についての説明は、『出力ファイルについての説明』を参照してください。
rs_analyzer・rs_decoderのソースファイル一式です。文字コードはShift_JIS(改行コード: CR + LF)となっています。
rs_analyzer・rs_decoderのWin32環境での実行ファイルです。
このファイルです。文字コードはISO-2022-JP(改行コード: LF)となっています。
rs_analyzer.htmlに適用しているスタイルシートです。
最初に断っておきますが、rs_analyzerは特に実行する必要はありません。rs_analyzerが出力するファイル群は、すでにアーカイブ内に含まれています。そして、現時点のrs_analyzerでは、出力するファイルの内容はオプション指定などに関係なく一定であり、アーカイブ内に含まれているファイルと同一内容のものが出力されるだけです。
ROMイメージファイルの形式は、基本的にはROMカートリッジの内容を「ベタに」ファイルに書き出したものにしてください(一応、ROMイメージファイルの先頭部分に何らかのヘッダが存在していても問題はないはずです)。なお、Interleave形式には対応していません。Normal形式にのみ対応しています。
rs2analyzer src-filename [dst-path] rs3analyzer src-filename [dst-path]
第1引数(src-path)には、ROMイメージファイル名を指定してください。第2引数(dst-path)には生成されるファイルの出力先のパスを指定してください。第2引数が指定されていない場合はカレントディレクトリにファイルを出力します。
rs2decoder src-filename dst-filename rs3decoder src-filename dst-filename
引数には変換元ファイル名と出力ファイル名を指定してください。
会話メッセージデータには各種フラグ情報やイベント情報などが含まれており、現在のrs_decoderではこれらの情報に対応していません(単なる文字として解釈する)。従って、出力されるメッセージデータには、実際のメッセージには含まれてない文字が混入しています。
ロマンシング サ・ガ3の文字の中で、「熒(けい)惑」の「熒」の文字はJIS X 0208に含まれていないため、「螢」に置き換えて出力しています。
rs_analyzerが出力するファイルについての簡単な説明です。
モンスターの各種パラメータのリストです。
「不明」は、術に関連する隠しパラメータのようです。この隠しパラメータは、モンスターだけでなくキャラクタにも存在します。
モンスターの耐性データのリストです。
モンスターの各種フラグ・種族のリストです。
モンスターから入手できるアイテムのリストです。
モンスターが装備しているアイテムのリストです。
モンスターの行動パターンデータのリストです。
リストには普通に戦っている限りでは使ってこない技も載っています。何らかの条件を満たすと使ってくるのかもしれません。このあたりは現在調査中です。
一般キャラクタの初期パラメータのリストです。
一般キャラクタの技や術の技能レベルは、「全体レベル」からの相対値として表されています。技・術には各系統ごとに「全体レベル」というものがそれぞれ存在していて、キャラクタの技能レベルと同様に、戦闘後に獲得する技術点によって成長します。
一般キャラクタの各種フラグ・種族のリストです。
特殊キャラクタの初期パラメータのリストです。
特殊キャラクタの各種フラグ・種族のリストです。
成長に必要な技術点のリストです。
アイテムの各種パラメータのリストです。
武器の攻撃力は、ゲーム中に表示されている値と実際の攻撃力とがくい違っていることがあります。また、防具の防御力は8つの属性それぞれについて設定されているのですが、ゲーム中に表示されている値は斬属性の防御力となっています。
アイテム(防具)の耐性データのリストです。
アイテム(武器)の武器固有技のリストです。
技を閃くことが可能かどうかのリストです。
「派生」は、その技から他の技を派生して閃くことが可能かどうかを示します。なお、このフラグは見切り技の閃きについては関係ありません。
「TY00」〜「TY15」は、16種類の閃きタイプを示します(『一般キャラクタのフラグ系データ(rs2chrflag.txt)』『特殊キャラクタのフラグ系データ(rs2chrspflag.txt)』の「閃きタイプ」参照)。
技修得に関する各種データのリストです。
このリストは、ある技を使用した際に、その技から(派生して)閃く可能性のある技を示したものです。「難度」とは「閃き難易度」を示しています。
なお、『技修得のフラグ系データ(rs2techlearnflag.txt)』の「派生可能」フラグが設定されていない技の場合、その技から派生して閃くことはありません。ですから、このリストでは「みね打ち(No.041)」から「活人剣(No.053)」への派生が設定されていますが、実際には閃きません。
見切り技に関する各種データのリストです。
「見切」のフラグは、その技を見切ることが可能であるかどうかを示します。「難度」とは「閃き難易度」を示しています。
陣形の各種データのリストです。
「選択率」は、陣形内の5か所のポジションそれぞれがモンスターの攻撃目標にされる確率を示します。「素早さ」は、素早さへの修正値を示します。なお、この数値がそのまま素早さの修正値になるわけではないようです。
「前防」「後防」は、それぞれ行動前防御・行動後防御の有無を示します。「遠攻」「近攻」「術攻」は、それぞれ遠距離攻撃(射属性)・近距離攻撃(斬殴突属性)・術攻撃(状態変化属性)のダメージが上昇することを意味します。
なお、「後防(実際)」という項目がありますが、これは「実際の行動後防御の有無」を示します。本来は「後防」のフラグによって行動後防御の有無が決まるべきところなのですが、実際にはバグのために「素早さ修正値(の絶対値)が奇数であるかどうか」によって決まってしまっています。
モンスターの各種パラメータのリストです。各種属性の防御力の値は、『モンスターの装備アイテムデータ(3)(rs3monequip.txt)』をもとに、各装備アイテムの防御力を単純に合計した値です。
「上LV」とは「技能上昇レベル」を示しています。この値が高いほど、戦闘終了時に技能レベルが上昇しやすいようです。「閃LV」とは「閃きレベル」を示しています。この値が高いほど、技を閃きやすいようです。
モンスターの耐性データのリストです。『モンスターの装備アイテムデータ(3)(rs3monequip.txt)』をもとに、各装備アイテムの耐性を単純に合成して出したデータです。
モンスターの各種フラグ・種族のリストです。
モンスターから入手できるアイテムのリストです。
「アイテム1」は必ず入手できるアイテムです。「アイテム2」「アイテム3」「アイテム4」の順に、入手確率が低くなります。
モンスターが装備しているアイテムのリストです。
「無刀1」「無刀2」のフラグは、それぞれ武器1と武器2を無刀取りできるかどうかを示します。
モンスターの行動パターンデータのリストです。
モンスターレベルに対応するリーダーモンスターのテーブルのリストです。
戦闘を重ねるごとに内部的に記録されている「種族ごとのモンスターレベル」が上昇していき、その値に対応して出現するリーダーモンスターが強くなっていきます。また、出現するリーダーモンスターに応じて、モンスターパーティの最大モンスター数・最大モンスターサイズ・編成パターンなども決まります。
モンスターレベルに対応する従属モンスターのテーブルのリストです。
戦闘を重ねるごとに内部的に記録されている「従属モンスターレベル」が上昇していき、その値に対応して出現する従属モンスターが強くなっていきます。
モンスターの画面上のサイズのリストです。
サイズの大小は、モンスターパーティの編成を決める際に関係します。
キャラクタの初期パラメータのリストです。
キャラクタの成長特性データです。
数値が大きいパラメータほど成長しやすいことを示しています。値が"255"の場合、そのパラメータは(基本的には)成長しないことを意味します。なお、最大技ポイント/最大術ポイントの成長特性は、実際には使用されていません。
キャラクタの各種フラグのリストです。
「HP」「剣」「槍」「斧」「弓」「体術」「地術」「天術」「不明」のフラグは、キャラクタがパーティから外れている期間にそのパラメータが成長するかどうかを示します。なお、「地術」は蒼龍・朱鳥・白虎・玄武のうち初期状態で修得している系統を、「天術」は太陽・月のうち初期状態で修得している系統を示します。
「武器」は「得意武器」を、「術」は「得意術」をそれぞれ示します。
「閃タイプ」は「閃きタイプ」を示します。なお、このリストにおける閃きタイプの値は、キャラクタを仲間として加入した場合のものです。主人公キャラクタの閃きタイプは、ゲーム開始時に選択した得意武器と得意術によって、以下のように決まります。
蒼龍 | 朱鳥 | 太陽 | 白虎 | 玄武 | |
---|---|---|---|---|---|
剣 | タイプ01 | タイプ01 | タイプ01 | タイプ01 | タイプ01 |
大剣 | タイプ09 | タイプ02 | タイプ02 | タイプ02 | タイプ02 |
斧 | タイプ03 | タイプ03 | タイプ03 | タイプ03 | タイプ03 |
棍棒 | タイプ04 | タイプ04 | タイプ04 | タイプ04 | タイプ04 |
小剣 | タイプ05 | タイプ05 | タイプ11 | タイプ05 | タイプ05 |
槍 | タイプ10 | タイプ06 | タイプ10 | タイプ06 | タイプ06 |
弓 | タイプ07 | タイプ07 | タイプ07 | タイプ07 | タイプ07 |
体術 | タイプ08 | タイプ08 | タイプ08 | タイプ08 | タイプ08 |
なし | タイプ00 | タイプ00 | タイプ00 | タイプ00 | タイプ00 |
アイテムの各種パラメータのリストです。
アイテム(防具)の耐性データのリストです。
防具の耐性を表す記号と、実際の防御力修正との関係は、以下のようになります。
記号 | 防御力修正 |
---|---|
☆ | 防御力が128になる |
◎ | 防御力が3倍になる |
○+ | 防御力が2倍になる |
○ | 防御力が1.5倍になる |
△ | 防御力が1/2になる |
× | 防御力が0になる |
アイテム(武器)の武器固有技のリストです。
技ごとの閃き適性のリストです。なお、このリストは見切り技の閃きについては関係ありません。
「派生」は、その技から他の技を派生して閃くことが可能かどうかを示します。
「TY00」〜「TY15」は、16種類の閃きタイプを示します(『キャラクタのフラグ系データ(rs3chrflag.txt)』の「閃きタイプ」参照)。なお、内部的には閃きタイプは16種類存在していますが、タイプ12〜15はまったく同じですし、そもそもタイプ12以降の閃きタイプを持ったキャラクタは存在しないので、実質的には全12種類ということになります。
2での技修得フラグは「閃きが可能か不可能か」を表していましたが、3では「閃きの適性があるかないか」を表しています。つまり、技修得フラグがセットされていない場合でも、(低確率ながら)その技を閃くことは可能です。
技修得に関する各種データのリストです。
このリストは、ある技を使用した際に、その技から(派生して)閃く可能性のある技を示したものです。「難度」とは「閃き難易度」を示しています。
「なし(No.009)」は、「氷の剣」での通常攻撃のことです。氷の剣の通常攻撃は、普通の大剣での通常攻撃とは別扱いになっているようです。
なお、『技修得のフラグ系データ(rs3techlearnflag.txt)』の「派生可能」フラグが設定されていない技の場合、その技から派生して閃くことはありません。ですから、このリストでは「アクセルターン(No.061)」から「オービットボーラ(No.070)」への派生が設定されていますが、実際には閃きません。
見切り技に関する各種データのリストです。
「見切」のフラグは、その技を見切ることが可能であるかどうかを示します。「難度」とは「閃き難易度」を示しています。
陣形の各種データのリストです。
「選択率」は、陣形内の5か所のポジションそれぞれがモンスターの攻撃目標にされる確率を示します。「素早さ」は、素早さへの修正値を示します。なお、この数値がそのまま素早さの修正値になるわけではないようです。
「前防」「後防」は、それぞれ行動前防御・行動後防御の有無を示します。「遠攻」「近攻」「術攻」は、それぞれ遠距離攻撃(射属性)・近距離攻撃(斬打突属性)・術攻撃のダメージが上昇することを意味します。
以下に示す解析資料は、基本的には、データ領域(と思われる部分)の内容を見て推測により解析したものです。よって、不正確な箇所も多数含まれています。
モンスターの各種データは、アドレス0x1e7700から格納されています。モンスター1体につき32バイトのデータがあり、これが320体分ならんで格納されています。32バイトのデータの内訳は以下のようになっています。
「行動パターンテーブル」とは、モンスターの行動8種類の番号を格納しているテーブルです。所持アイテムテーブルは、アドレス0x1e9f00から格納されています。テーブル1要素につき8バイトのデータがあり、これが256要素分ならんで格納されています。
モンスターの各種データは、アドレス0x3e3f8bから格納されています。モンスター1体につき25バイトのデータがあり、これが320体分ならんで格納されています。25バイトのデータの内訳は以下のようになっています。
「行動パターンテーブル」とは、モンスターの行動8種類の番号を格納しているテーブルです。行動パターンテーブルは、アドレス0x3e5ecbから格納されています。テーブル1要素につき8バイトのデータがあり、これが256要素分ならんで格納されています。
「所持アイテムテーブル」とは、モンスターが落とす4種類のアイテムの番号とお金の情報を格納しているテーブルです。所持アイテムテーブルは、アドレス0x3e678bから格納されています。テーブル1要素につき5バイトのデータがあり、これが64要素分ならんで格納されています。
まずは、一通り解析を終わらせたいところです。
今のままではあまりにも説明が少なすぎますね。
くれぐれも、解析結果を盲信しないようにしてください。例によって、私自身は解析結果の検証をほとんどやっていません。解析結果とプレイした際の結果との間に矛盾を感じた場合、解析結果にあまり重きをおかないようにしましょう。
本プログラム・本ドキュメントの著作権は、遠藤慎悟<s-endo@yk.rim.or.jp>(以下、原作者)にあります。
なお、原作者は本プログラムに関していかなる保証も行いません。同様に、本プログラムの出力結果・本ドキュメントの内容の正当性についてもいかなる保証も行いません。また、本プログラムを利用したことによって生起したいかなる損害に対する責任も負わないものとします。