検索列:
参照列:- / -
検索値:
置換列:
参照列:
置換値:
列ヘッダの高さ:
行ヘッダの横幅:
書き換えたセルの色付けをしない
書き換えたセルのポップアップをしない
Enter、Tabによるカーソル移動をしない
BNE2js [β版]

[更新]
2021/03/03
リスト表示の列において、値(h)が0埋めの奇数桁数(001など)の場合に
対応する文字が表示できていなかった不具合を修正しました。
(ご報告ありがとうございます!)

また、IEは未対応になりました。

[これは何?]
546◆rbsENsUukE氏が製作・公開されている『BNE2』を
JavaScriptで再現したものです。

ゲーム改造では定番のバイナリエディタとなっているBNE2なのですが
現在ではOS環境の変化によってコピペで落ちるなどの問題もあり
データを入力するには地道な作業が必要でした。

そこで『代替/大体BNE2』を目指して作り始めたのがこの『BNE2js』です。
方針としてはBNE2からの移行が容易なようにと極力似せて作ってはいますが
私自身、JavaScriptでどこまでできるのか実験・学習を同時進行で行っているため
機能や動作にはまだまだ不備があるかと思います。


[何故にJavaScript?]
言語の用途としてバイナリエディタには全く向いていないのは承知の上です。
単にJSで何かを作るのにハマっているだけで特にこれといった理由はありません。
強いて言えば誰でも修正や改変がしやすいという利点はありますが。
※なお着実にスパゲッティコードを製造中…(*´ω`*)


[動作環境]
最新版ならFirefoxでも動くように作ってはありますがChrome推奨です。
(IE、Edgeは未対応です)
外部ファイルを参照していないのでネット環境がなくても動きます。


[謝辞]
BNE2の作者である546◆rbsENsUukE様、
誠に勝手ながらBNEの冠称及び仕様を拝借させていただきました。
素晴らしいツールを公開してくださったことに深く感謝申し上げます。


[諸注意]
動作テストが十分でないため予期せぬエラーが発生するかもしれません。
また、ブラウザの仕様変更により正常に動作しなくなる可能性があります。
入力作業は一度に行わず、段階的な保存と検証をおすすめします。
(保存したものをBNE2で確認するなど)


[実装済み追加機能]
・タブ表示切り替え
 タブをセレクトボックス式に切り替えて表示領域を広くします。
・マーカー
 任意の選択範囲のセルに色を付けて視認性を向上させます。
・グレイアウト
 特定の値の色を薄くして視認性を向上させます。
・フローティングセル
 任意の選択範囲のセルを画面上に複製してメモ代わりにできます。
・検索
 任意の列から条件に一致した値を検索・置換します。
・書き換えたセルに色付けと初期値の復元
 変更点の確認や取り消しが素早く行えます。
・IPSパッチ
 IPSファイルの内容を変更点として適用できます。


[追加機能案]
とりあえず簡単に作れそうなものは実装してしまったので思案中…。
コメント欄の右側が何か無駄っぽい?
IPS作成機能いるかな?


[BNE2からの不足分]
設定ファイルの保存(対応予定なし)
undo redo(初期値の復元のみ可能)
サイズ可変ヘッダ(暫定対応)
表示形式の変更(必要?)
キー操作諸々(暫定対応)


[キーマップ]
矢印キー1セル分カーソル移動
Shift+矢印キー範囲選択
Ctrl+矢印キー10セル分カーソル移動
Page Up、Page Down1ページ分上下カーソル移動
Home、End行頭、行末へカーソル移動
Escデータの入力キャンセル
Enterデータの入力開始(全選択状態)、確定後下のセルに移動
Shift+Enterデータの入力開始(全選択状態)、確定後上のセルに移動
Tabデータの入力開始(全選択状態)、確定後右のセルに移動
Shift+Tabデータの入力開始(全選択状態)、確定後左のセルに移動
-、0~9、A~Fデータの入力開始(A~Fで入力開始の場合0xを自動付与)
Deleteデータ消去(0を入力確定と同じ、範囲選択有効)
Ctrl+C、Ctrl+Vコピー、貼り付け
Backspace初期値の復元(範囲選択有効)


[マウスホイール操作について]
通常回転で縦方向に100ピクセル分スクロールします。
Shift+ホイールで横方向に200ピクセル分スクロールします。
Ctrl+(Shift+)ホイールで縦(横)に1ページ分スクロールします。
スクロールバーが横方向にしかない場合はShiftキーなしでも横スクロールします。
表以外の部分ではブラウザ本来の動作となりますのでご注意ください。


[コピペについて]
ブラウザセキュリティの仕様上、本来のコピー・貼り付けのタイミングでしか
クリップボードにアクセスできないため、マウスとキーボード操作では
内部保持データが別管理になっています。
外部ツールとコピペをやり取りする場合はキーボードを使用してください。
マウス→クリップボード不使用
キーボード→クリップボード経由
※ただしテキストボックスの中ではマウスでもブラウザ本来の
コンテキストメニューが表示されるためクリップボード経由となる。


[マーカーについて]
右クリックのコンテキストメニューから利用できます。
「マーカーを引く」は現在範囲選択されているセルに色を付けます。
「マーカーを消す」は現在範囲選択されているセルの色を元に戻します。
「マーカーを全消去」はタブ内のマーカーを全消去します。
マーカーは設定ファイルが変更されない限り、
別のバイナリファイルやタブを表示しても記憶されています。


[グレイアウトについて]
右クリックのコンテキストメニューから利用できます。
「グレイアウト」は現在カーソルがあるセルの値の色を薄くして目立たなくします。
「グレイアウト解除」ですべての値の色を元に戻します。
複数の値を指定することができますが解除するまで適用され続けるため
誤って必要な値をグレイアウトしたまま見落とさないようにご注意ください。


[フローティングセルについて]
右クリックのコンテキストメニューから利用できます。
現在範囲選択されているセルのうち可視範囲にあるものを画面上に複製します。
複製されたセルはウィンドウ内をドラッグ可能です。
セル上で右クリックすると消去されます。
(主に離れたセルの値を比較したりする時のメモ代わりに使用します)


[検索について]
「検索列」から「検索値」を検索します。
検索値には数値の他に$1(セル値参照)や演算子が指定可能です。
==等しい!=等しくない
<未満>超過
<=以下>=以上
&&論理積(~かつ~)||論理和(~または~)
例: 「50」 → 検索列の値が50のセルを検索(「$1 == 50」と同じ)
例: 「0xFF」 → 検索列の値が255のセルを検索(0xを付けると16進数になります)
例: 「$1 >= 50」 → 検索列の値が50以上のセルを検索
例: 「$1 >= 50 && $1 < 60」 → 検索列の値が50以上かつ60未満のセルを検索

「参照列」を指定すると検索列とは異なる列を$2(セル値参照)として使用できます。
(今のところ参照可能な列は$1、$2の2つのみ)
例: 「$1 == 1 || $2 == 1」 → 検索列の値が1または参照列の値が1のセルを検索
例: 「$1 - $2 != 30」 → 検索列の値と参照列の値の差が30でないセルを検索

検索後、該当セルを「置換値」で置換できます。
「置換列」を指定すると検索列とは異なる列を置換対象にできます。
置換値には数値の他に$1や算術式が指定可能です。
検索と同じく置換でも参照列が$2として使用できます。
例: 「10」 → 置換対象セルの値を10で置換
例: 「$1 - 10」 → 置換対象セルの値から10引いて置換
例: 「$2」 → 置換対象セルの値を参照列の値で置換(コピー)
一度置換したセルは再度検索するまで置換、全置換できません。
(セル値参照による重複処理防止のため)

一応、四捨五入、切り上げ、切り捨てなども使用可能。
(JavaScriptに詳しい方はeval()を使っていると考えてください)
例: 「$1 + Math.round($2 * 2 / 3)」

右クリックのコンテキストメニューに「クイックサーチ」を追加しました。
現在カーソルがあるセルの列と値をキーにして素早く検索できます。


[特殊な読み込みについて]
編集対象のバイナリファイルAを読み込んだ後に
異なるバイナリファイルBをCtrlキーを押しながらドロップすると
「初期値の復元」用のデータとして読み込むことができます。
初期値と異なるセルは色付けされるため
これによりA-Bファイル間の簡易的な差分検出が可能となります。
(設定ファイルが共通であることが前提です)


[IPSパッチについて]
バイナリファイルを読み込んだ後にIPSファイルをドロップすると
IPSの内容を変更点として適用できます。
(複数当てたい場合も1ファイルずつドロップしてください)
パッチによるファイルサイズの拡大には対応していますが
縮小(Truncate)には対応しておりません(必要そうなら作るかも)。
バイナリファイルが未設定です
設定ファイルが未設定です
マーカーを引く
マーカーを消す
マーカーを全消去
グレイアウト
グレイアウト解除
フローティングセル


コピーCtrl+C
貼り付けCtrl+V
※クリップボードが必要な場合は
Ctrl+C、Ctrl+Vをご利用ください

初期値の復元Backspace