BNE2 Tips

「BNE2 Tips」の編集履歴(バックアップ)一覧はこちら

BNE2 Tips」(2006/06/26 (月) 15:29:50) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*BNE2 Tips(改造ヒント集) FAQのノリで、使いこなしのコツなど書き加えていってください。 間違いを見つけたら遠慮なく訂正するんだッ! ---- -セル幅の調節を保存するには、ファイル→設定の保存 -データの表示形式を変えたい場合、表示→選択セクションの表示 表示形式を変えた後、ファイル→設定の保存 を行うと、 INIファイルが上書きされる。 -複数のセルをまとめてコピーしたいとき リスト形式のセクションの表示形式を 数値表示(16進,10進数)に変えておくとスムーズ。 キーボード編集派の人にもオススメ。 -Rom/Ram設定せずにうっかりファイルを開いた後でも、 その他→設定でRom/Ramの切り替えが出来る (ファイルは再読み込みされる) -「クラス」で値が-1 または FFになっている項目 その顔キャラが就いているクラス(職業)の値が適用されるという意味。 (クラス依存) -BNE2を開いたままでもINIファイルを編集できる。 INIファイルをエディタで編集して上書き保存した後、 ROMなどを再読み込み or BNE2を起動しなおすと、設定が反映される。 -テストプレイ用にエミュ設定 ステートセーブ、加速機能などのショートカットキーを 使いやすいようにカスタマイズしておくと効率が良いです 多ボタンのパッドがあるなら、パッドのボタンに設定する手も -SNESGTの「メモリビューア」が地味に便利 「オプション」→「ツール」→「メモリビューア」 見たいアドレスまでスクロールするのが大変ではありますが、 メモリの変化がリアルタイムに見られるので、 その処理に使われているメモリがどこなのか一瞬で分かります。 コードサーチ機能は無いですが、実はメモリへの書き込みも 出来るので、アドレスが分かっている場合のコード検証には便利です。 (ステータス画面などの場合、一度画面を切り替えないと 値の表示には反映されないので注意) -ステートセーブの活用 SNESGT/ZSNESのステートセーブをBNE2で直接開いて、 知りたい項目の数値を調べると便利 (例えば、戦闘中キャラの行動ポイントの変化が分かる) Ram Dataのiniに書かれているアドレスはメモリアドレス、 つまり改造コードと同じ -SNESGTのステートセーブをStirlingなどバイナリエディタで 直接開いた場合、ファイル先頭44hバイトを削除すれば メモリアドレスと一致する あるいは、メモリアドレス+44hの場所を見る (BNE2は、初めから先頭44hを飛ばして読む設定になっています) -通常セーブ(.srm)およびSnes9x系のステートセーブの形式については、良く分かりません。情報求む。 -クラスの初期パラ、成長率を変えたときに強さを確認する方法 A.実際に通してプレイ(時間がかかって大変) B.3章終盤や4章のデータを用意して、ランダム戦闘   ランダム戦闘発生率を変えておくと効率が良いかも C.試したいクラスの初期レベルを変更する。   (例えば、全クラスの初期レベルを28に設定)   ショップの3番目の枠で雇えるように設定を変えておく。   ショップの3番目の枠で雇用すると、設定した初期レベルで出てくる。   →適当なMAPでトレーニングorランダム戦闘   「雇用」で設定したクラスをゲーム内で巡回して集めるなら、   ランダム戦闘なしにしておくとラクチン。 D.ショップで雇用できるクラスを変える改造コードを使うと、   移動せずに全クラスをそろえることもできる。   BNE2の「Ram Data」モード時の「雇用」を活用してください。   (改造コード対応EMUか、cepなどのSNESメモリエディタでもOK)   この場合、ソルジャーの初期レベルだけ変えればOK。   ショップの雇用クラス選択画面で一番上のところから雇用すると   Ram編集(改造コード)で入力したクラスが、ソルジャーの初期レベルで   出てきます。例えばLv23の各クラスをたくさん用意する時に便利。 味方ユニットとして育てた場合の強さを確かめるには、 やはり生のキャラデータをコツコツ変えるか、通しプレイ作業が必須・・・ 気長にやりましょう。 -イベントのデバッグ 1章序盤データを改造して、デニムのINT,MENを999、竜言語魔法orスターティアラを持たせたデータを用意しておくと、通しプレイでイベント確認する作業がスムーズです。 -進数表記と略号 h:16進数 (hexadecimal) b:2進数 (binary) d:10進数 (decimal) (進数指定が省略されている場合は10進数のことが多い) 0xFF=FFh=FF(h)= 1111 1111(b) =255(d) 0x100=256 0xFFFF=65535 0x10000=65536 0x63= 99 0x64=100 0x03E7= 999 ROM/RAM内では E7 03 (例外あり) 0x03E8=1000 ROM/RAM内では E8 03 (例外あり)     +1h= 0000 0001(b) =0bit(.0) = 1 = 2^0     +2h= 0000 0010(b) =1bit(.1) = 2 = 2^1     +4h= 0000 0100(b) =2bit(.2) = 4 = 2^2     +8h= 0000 1000(b) =3bit(.3) = 8 = 2^3    +10h= 0001 0000(b) =4bit(.4) = 16 = 2^4    +20h= 0010 0000(b) =5bit(.5) = 32 = 2^5    +40h= 0100 0000(b) =6bit(.6) = 64 = 2^6    +80h= 1000 0000(b) =7bit(.7) =128 = 2^7 +100h=0001 0000 0000(b) =8bit =256 = 2^8 XXh:1Bite= 8bit (0~255) or (-128~0~+127) XX YYh:2Bite=16bit (0~65535) or (-32768~0~+32767) -16進数、10進数、2進数の変換や計算には WindowsXP付属の電卓機能が便利。 スタート→プログラム→アクセサリ→電卓 「表示」→「関数電卓」にしてみよう。 -ビット指定、ビットフィルタの意味 16進数 XY(h)= pqrs tuvw(b) 2進数    例 7A(h)= 0111 1010(b) p:7bit q:6bit r:5bit s:4bit t:3bit u:2bit v:1bit w:0bit 【例1】 Tactics OgreのRAM上でキャラのエレメントの記述形式は p=0:一般 1:リーダー q=0:味方 1:CPU(敵/ゲスト) r:使わない(通常0) s=0:Sサイズ 1:Lサイズ t=0:男 1:女 uvw=000:なし 001:風 010:火 011:地 100:水 という法則になっています。たとえば、 デニム(リーダー)風→ 1000 0001(b) = 81h 味方♀水→ 0000 1100(b) = 0Ch 味方Lサイズ火→ 0001 0010(b) = 12h ゲストSサイズ女風→ 0100 1001(b) = 49h 敵リーダーSサイズ地→ 1100 0011(b) = C3h ※参考:Ogre.orgの改造コード記事 http://ogre.org/ogrebattle/TO-PScode.html#ElementID http://ogre.org/ogrebattle/TO-SFCcode.html さて、BNE2-INIファイルでの記述方式ですが Tactics Ogre Ram Dataの編成データ.ini 7EB2F3,♀,.3,2,,,,990,, ♀フラグは3bit(+8h)の部分なので、ビット指定.3で取得しています。 7EB2F3,リーダー,.7,2,,,,990,, リーダーフラグは7bit(+80h)なので、ビット指定.7 7EB2F3,エレメント,,2,,0,.07,990,,0 |エレメント.idn エレメント指定は3,2,1bitを2進数として数値化したものなので 欲しい桁のビットを立てて 0000 0111 = 07h これをビットフィルタ部分にすると、1になっている桁のビットだけが 数値換算されます。 例えば  デニム風 81h= 1000 0001(b)   →ビットフィルタ07hをかけると、 xxxx x001(b) = 01h = 1(風)    (xxxx x001 のxの部分が目隠しされると思ってください)  味方♀水 0Ch = 0000 1100(b)   →ビットフィルタ07hをかけると、 xxxx x100(b) = 04h = 4(水) このように、必要な情報だけが抽出されるわけです。 (ちなみに行の最後「,0 |エレメント.idn」の意味は、  「,エレメント.idn」だけだとキャラ不在のときエレメント値が0で  「物理」と表示されてしまうので、IDNファイルの前に「0 」  を読み込ませて、値が0の場合に空白を表示するように  ちょっと強引な設定がされています。 ※IDリスト&IDNの番号が重複したら先に読んだほうが優先) 【例2】 上位2ビットで「方向」を指定 p=0:右 1:左 q=0:上 1:下 下位6ビットで「移動距離」を指定 rstuvw(b)=r*32+s*16+t*8+u*4+v*2+w*1=移動距離 という形式のデータがあるとき 方向の左右だけ知りたい→ビット指定 .7 (pだけ取得、値=0 or 1) 移動距離が奇数か偶数か知りたい   →ビット指定 .0 (wだけ取得、値=0 or 1) 移動距離が32以上/未満の判定を知りたい   →ビット指定 .5 (rだけ取得、値=0 or 1) 移動距離だけ知りたい→ビットフィルタ .3F    (下位6ビットを取得して数値として出力、値=0~63) 取得したいビットの桁を1にした2進数は 00111111(2)=3F(h)なので ビットフィルタは.3Fになる。 上下左右の方向を一度に取得したい→ビットフィルタ .C0    (上位2ビットを取得して数値として出力、値=[0,64,128,192]) 取得したいビットの桁を1にした2進数は 11000000(2)=C0(h)なので ビットフィルタは .C0になる。 得られた値を÷64(ビットシフト)すれば、[0,1,2,3]の形式になる。
*BNE2 Tips(改造ヒント集) FAQのノリで、使いこなしのコツなど書き加えていってください。 間違いを見つけたら遠慮なく訂正するんだッ! ---- -セル幅の調節を保存するには、ファイル→設定の保存 -データの表示形式を変えたい場合、表示→選択セクションの表示 表示形式を変えた後、ファイル→設定の保存 を行うと、 INIファイルが上書きされる。 -複数のセルをまとめてコピーしたいとき リスト形式のセクションの表示形式を 数値表示(16進,10進数)に変えておくとスムーズ。 キーボード編集派の人にもオススメ。 セルを選択後にメニューの「表示」→「選択セクションの表示」 -BNE2は同時に複数起動できます。 ROMから別のROMへデータをコピー&ペーストするもよし、 ROMとRAMを両方参照しながら解析するもよし。 -Rom/Ram設定せずにうっかりファイルを開いた後でも、 その他→設定でRom/Ramの切り替えが出来る (ファイルは再読み込みされる) -「クラス」で値が-1 または FFになっている項目 その顔キャラが就いているクラス(職業)の値が適用されるという意味。 (クラス依存) -BNE2を開いたままでもINIファイルを編集できる。 INIファイルをエディタで編集して上書き保存した後、 ROMなどを再読み込み or BNE2を起動しなおすと、設定が反映される。 -テストプレイ用にエミュ設定 ステートセーブ、加速機能などのショートカットキーを 使いやすいようにカスタマイズしておくと効率が良いです 多ボタンのパッドがあるなら、パッドのボタンに設定する手も -SNESGTの「メモリビューア」が地味に便利 「オプション」→「ツール」→「メモリビューア」 見たいアドレスまでスクロールするのが大変ではありますが、 メモリの変化がリアルタイムに見られるので、 その処理に使われているメモリがどこなのか一瞬で分かります。 コードサーチ機能は無いですが、実はメモリへの書き込みも 出来るので、アドレスが分かっている場合のコード検証には便利です。 (ステータス画面などの場合、一度画面を切り替えないと 値の表示には反映されないので注意) -ステートセーブの活用 SNESGT/ZSNESのステートセーブをBNE2で直接開いて、 知りたい項目の数値を調べると便利 (例えば、戦闘中キャラの行動ポイントの変化が分かる) Ram Dataのiniに書かれているアドレスはメモリアドレス、 つまり改造コードと同じ -SNESGTのステートセーブをStirlingなどバイナリエディタで 直接開いた場合、ファイル先頭44hバイトを削除すれば メモリアドレスと一致する あるいは、メモリアドレス+44hの場所を見る (BNE2は、初めから先頭44hを飛ばして読む設定になっています) -通常セーブ(.srm)およびSnes9x系のステートセーブの形式については、良く分かりません。情報求む。 -クラスの初期パラ、成長率を変えたときに強さを確認する方法 A.実際に通してプレイ(時間がかかって大変) B.3章終盤や4章のデータを用意して、ランダム戦闘   ランダム戦闘発生率を変えておくと効率が良いかも C.試したいクラスの初期レベルを変更する。   (例えば、全クラスの初期レベルを28に設定)   ショップの3番目の枠で雇えるように設定を変えておく。   ショップの3番目の枠で雇用すると、設定した初期レベルで出てくる。   →適当なMAPでトレーニングorランダム戦闘   「雇用」で設定したクラスをゲーム内で巡回して集めるなら、   ランダム戦闘なしにしておくとラクチン。 D.ショップで雇用できるクラスを変える改造コードを使うと、   移動せずに全クラスをそろえることもできる。   BNE2の「Ram Data」モード時の「雇用」を活用してください。   (改造コード対応EMUか、cepなどのSNESメモリエディタでもOK)   この場合、ソルジャーの初期レベルだけ変えればOK。   ショップの雇用クラス選択画面で一番上のところから雇用すると   Ram編集(改造コード)で入力したクラスが、ソルジャーの初期レベルで   出てきます。例えばLv23の各クラスをたくさん用意する時に便利。 味方ユニットとして育てた場合の強さを確かめるには、 やはり生のキャラデータをコツコツ変えるか、通しプレイ作業が必須・・・ 気長にやりましょう。 -イベントのデバッグ 1章序盤データを改造して、デニムのINT,MENを999、竜言語魔法orスターティアラを持たせたデータを用意しておくと、通しプレイでイベント確認する作業がスムーズです。 -進数表記と略号 h:16進数 (hexadecimal) b:2進数 (binary) d:10進数 (decimal) (進数指定が省略されている場合は10進数のことが多い) 0xFF=FFh=FF(h)= 1111 1111(b) =255(d) 0x100=256 0xFFFF=65535 0x10000=65536 0x63= 99 0x64=100 0x03E7= 999 ROM/RAM内では E7 03 (例外あり) 0x03E8=1000 ROM/RAM内では E8 03 (例外あり)     +1h= 0000 0001(b) =0bit(.0) = 1 = 2^0     +2h= 0000 0010(b) =1bit(.1) = 2 = 2^1     +4h= 0000 0100(b) =2bit(.2) = 4 = 2^2     +8h= 0000 1000(b) =3bit(.3) = 8 = 2^3    +10h= 0001 0000(b) =4bit(.4) = 16 = 2^4    +20h= 0010 0000(b) =5bit(.5) = 32 = 2^5    +40h= 0100 0000(b) =6bit(.6) = 64 = 2^6    +80h= 1000 0000(b) =7bit(.7) =128 = 2^7 +100h=0001 0000 0000(b) =8bit =256 = 2^8 XXh:1Bite= 8bit (0~255) or (-128~0~+127) XX YYh:2Bite=16bit (0~65535) or (-32768~0~+32767) -16進数、10進数、2進数の変換や計算には WindowsXP付属の電卓機能が便利。 スタート→プログラム→アクセサリ→電卓 「表示」→「関数電卓」にしてみよう。 -ビット指定、ビットフィルタの意味 16進数 XY(h)= pqrs tuvw(b) 2進数    例 7A(h)= 0111 1010(b) p:7bit q:6bit r:5bit s:4bit t:3bit u:2bit v:1bit w:0bit 【例1】 Tactics OgreのRAM上でキャラのエレメントの記述形式は p=0:一般 1:リーダー q=0:味方 1:CPU(敵/ゲスト) r:使わない(通常0) s=0:Sサイズ 1:Lサイズ t=0:男 1:女 uvw=000:なし 001:風 010:火 011:地 100:水 という法則になっています。たとえば、 デニム(リーダー)風→ 1000 0001(b) = 81h 味方♀水→ 0000 1100(b) = 0Ch 味方Lサイズ火→ 0001 0010(b) = 12h ゲストSサイズ女風→ 0100 1001(b) = 49h 敵リーダーSサイズ地→ 1100 0011(b) = C3h ※参考:Ogre.orgの改造コード記事 http://ogre.org/ogrebattle/TO-PScode.html#ElementID http://ogre.org/ogrebattle/TO-SFCcode.html さて、BNE2-INIファイルでの記述方式ですが Tactics Ogre Ram Dataの編成データ.ini 7EB2F3,♀,.3,2,,,,990,, ♀フラグは3bit(+8h)の部分なので、ビット指定.3で取得しています。 7EB2F3,リーダー,.7,2,,,,990,, リーダーフラグは7bit(+80h)なので、ビット指定.7 7EB2F3,エレメント,,2,,0,.07,990,,0 |エレメント.idn エレメント指定は3,2,1bitを2進数として数値化したものなので 欲しい桁のビットを立てて 0000 0111 = 07h これをビットフィルタ部分にすると、1になっている桁のビットだけが 数値換算されます。 例えば  デニム風 81h= 1000 0001(b)   →ビットフィルタ07hをかけると、 xxxx x001(b) = 01h = 1(風)    (xxxx x001 のxの部分が目隠しされると思ってください)  味方♀水 0Ch = 0000 1100(b)   →ビットフィルタ07hをかけると、 xxxx x100(b) = 04h = 4(水) このように、必要な情報だけが抽出されるわけです。 (ちなみに行の最後「,0 |エレメント.idn」の意味は、  「,エレメント.idn」だけだとキャラ不在のときエレメント値が0で  「物理」と表示されてしまうので、IDNファイルの前に「0 」  を読み込ませて、値が0の場合に空白を表示するように  ちょっと強引な設定がされています。 ※IDリスト&IDNの番号が重複したら先に読んだほうが優先) 【例2】 上位2ビットで「方向」を指定 p=0:右 1:左 q=0:上 1:下 下位6ビットで「移動距離」を指定 rstuvw(b)=r*32+s*16+t*8+u*4+v*2+w*1=移動距離 という形式のデータがあるとき 方向の左右だけ知りたい→ビット指定 .7 (pだけ取得、値=0 or 1) 移動距離が奇数か偶数か知りたい   →ビット指定 .0 (wだけ取得、値=0 or 1) 移動距離が32以上/未満の判定を知りたい   →ビット指定 .5 (rだけ取得、値=0 or 1) 移動距離だけ知りたい→ビットフィルタ .3F    (下位6ビットを取得して数値として出力、値=0~63) 取得したいビットの桁を1にした2進数は 00111111(2)=3F(h)なので ビットフィルタは.3Fになる。 上下左右の方向を一度に取得したい→ビットフィルタ .C0    (上位2ビットを取得して数値として出力、値=[0,64,128,192]) 取得したいビットの桁を1にした2進数は 11000000(2)=C0(h)なので ビットフィルタは .C0になる。 得られた値を÷64(ビットシフト)すれば、[0,1,2,3]の形式になる。

表示オプション

横に並べて表示:
変化行の前後のみ表示: