BNE2 Tips(改造ヒント集)
FAQのノリで、使いこなしのコツなど書き加えていってください。
間違いを見つけたら遠慮なく訂正するんだッ!
- データの表示形式を変えたい場合、表示→選択セクションの表示
表示形式を変えた後、ファイル→設定の保存 を行うと、
INIファイルが上書きされる。
リスト形式のセクションの表示形式を
数値表示(16進,10進数)に変えておくとスムーズ。
キーボード編集派の人にもオススメ。
セルを選択後にメニューの「表示」→「選択セクションの表示」
ROMから別のROMへデータをコピー&ペーストするもよし、
ROMとRAMを両方参照しながら解析するもよし。
- Rom/Ram設定せずにうっかりファイルを開いた後でも、
その他→設定でRom/Ramの切り替えが出来る
(ファイルは再読み込みされる)
- 「クラス」で値が-1 または FFになっている項目
その顔キャラが就いているクラス(職業)の値が適用されるという意味。
(クラス依存)
- BNE2を開いたままでもINIファイルを編集できる。
INIファイルをエディタで編集して上書き保存した後、
ROMなどを再読み込み or BNE2を起動しなおすと、設定が反映される。
ステートセーブ、加速機能などのショートカットキーを
使いやすいようにカスタマイズしておくと効率が良いです
多ボタンのパッドがあるなら、パッドのボタンに設定する手も
「オプション」→「ツール」→「メモリビューア」
見たいアドレスまでスクロールするのが大変ではありますが、
メモリの変化がリアルタイムに見られるので、
その処理に使われているメモリがどこなのか一瞬で分かります。
コードサーチ機能は無いですが、実はメモリへの書き込みも
出来るので、アドレスが分かっている場合のコード検証には便利です。
(ステータス画面などの場合、一度画面を切り替えないと
値の表示には反映されないので注意)
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)
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
さて、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]の形式になる。
最終更新:2006年06月26日 15:29