■ 変更履歴一覧
- メッセージ(移動中メッセージ)で、ハートマーク(記号)が正しく編集できない問題を修正した。DQ3SFCEditor上での入力・表示は☆(白抜きの星マーク)で代替する。
- ゲーム中で存在が確認できない文字「ゝゞヽヾ」について、「々」に変換されてしまう問題を修正した(実際に使用可能なのか不明なため、現状では使用できない文字として扱うようにした)。
- メッセージ、戦闘中メッセージ、固定文字列の文字数が0(空文字列)の場合に例外が発生する問題を修正した。
- メッセージ、戦闘中メッセージの編集で、コントロール文字列([AF]、[AD])などの右側の括弧をない状態で編集終了するとプログラムがフリーズする問題を修正した。
- 「ROM内移動」の際に移動対象がSRかつプログラムノードをソートする設定の場合にツリービュー上の正しい位置に移動されない問題を修正した。
- 「ROM内移動」の際にスペースが空いているのに移動できない問題があったのを修正した。
- 「アドレスジャンプ」でROM索引を表示中でかつROM索引にフォーカスが存在する場合に指定したアドレスのレコードにフォーカスを移動できるようにした。
- メニュー「外部バイナリファイルのインポート」を追加した。指定ファイルをバイナリ形式で読み込み、指定アドレスにインポートする。
- PreDefineテーブルのレコード数がリレーション先のテーブルのレコード数より少ない場合に、必要に応じてダミーのレコードを追加し、エラーを起こさないようにした。
- 「ROM内移動」の際に、移動後の開始アドレスが移動前の範囲中にある場合に正しく移動されない問題を修正した。 例)
移動前: $020100-02014F(80バイト)、前後50バイトは空き領域
移動後: $020130-02017Fを想定移動後の開始アドレスは移動前の範囲中に存在する。この場合に移動後の開始アドレスが$020150(移動前の最後のアドレスの次)になり、結果として移動後の範囲は$020150-02019Fとなり、例えば$020180から別のデータが始まっていた場合はその部分を上書きしてしまう深刻な問題が起きていたのを修正した。また、移動前の領域を0x00ではなく、0xFFで上書きするようにした。
- スプライト画像のデコード部分のコードを修正した。モンスターの2枚目以降のスプライトのデコードもほぼ完全になった。
- 画像表示のツリーノードを選択したときに前回表示した画像を表示しないでクリアするようにした。
- 「ROM内移動」の際に移動対象がSRでかつSR名が設定されていない場合に移動処理が完全に終了しない問題を修正した。
- 「ROM索引」を表示する際に内部データを別テーブルにコピーして表示していたが、DataViewクラスを使用することで、コピーをしないで表示するようにした(パフォーマンスの多少の向上)。
- ROMの変更、RomMap.xmlの変更時にフラグをセットすることで、プログラム終了時などに変更が保存されていない場合はそれぞれ警告を表示するようにした。
- ツリービューのノード移動履歴をノード名ではなくTreeNodeオブジェクトの参照に変更した。これによりノードの名称が変更されても正しいノードをたどれるようになった。
- RomMap.xmlに対象ROMのファイルサイズを記述することでROMファイル解析開始時にファイルサイズの比較を行い、異なる場合は警告メッセージを表示するようにした。※ゲームタイトル($FFC0から21バイト)については、改造版ではオリジナルと異なる名称が設定されていることが多々あるので現状チェックは行わない。
- データの表示をする際に1列目のvisible属性がfalse(非表示)になっていると例外が発生する問題を修正した。
- スプライト画像のデコード部分のコードを修正した。DQ6のモンスターの静止画像のデコードも完全になった。
- モンスター画像、スプライト画像のデコード時に2枚目以降のスプライトも表示できるようにした。デコードルーチンはまだ完全ではない。
- 逆アセンブルを行う際、対象のアドレスから4バイト連続してFFもしくは00が続いていた場合(FF FF FF FFもしくは 00 00 00 00)に逆アセンブルを中止するようにした。
- メニュー「要素数を変更」を追加した。通常のデータ型に対しては要素数を変更でき、文字列型に対しては8個もしくは16個新しいレコードの追加が可能になった。
- 自動逆アセンブル機能によって追加されたSRエントリに対して、「SR定義情報を変更」「SR定義情報を削除」をできないようにした。
- 「ROM内移動」機能がSRの移動に対して不十分だったため、以下の点を修正した。
- エントリ名の開始アドレスの変更
- TreeViewペイン上の順序の変更
- 「ROM内移動」機能に関して、移動可能かどうかの判断をする際に、移動前の自分を含めていたため、以下のように移動前後の領域がオーバーラップしてる場合に移動できなかったのをできるようにした。 例)
移動前: $020100-02014F(80バイト)、前後50バイトは空き領域
移動後: $0200D0-02011F - モンスター画像データのエクスポート機能において、スプライトデータの最後の1バイトがエクスポートされない問題を修正した。
- メッセージ編集で、内部の文字テーブルの設定が間違っていたために「ば」が「ぱ」に変換される問題を修正した。
- 「アドレスジャンプ」を使ってジャンプしたノードが内部の移動履歴に残っていないために「ALT+→」「ALT+←」での履歴移動が正しく動作していなかった問題を修正した。
- DQ6のROMを読み込めるように文字列関連の定義がRomMap.xmlに存在しなくてもROMを解釈できるようにした。
- 「画像表示モード」で、16進数で入力した値でも「<」「>」ボタンで前後の移動ができるようにした。
- DQ6< ->DQ3のモンスター画像データ(アニメーションデータ含む)のエクスポート機能を追加した。現状では64K以上のデータの出力には対応していない。
- 「ROM内移動」で、移動先の空きサイズチェックにおいて、移動元のサイズ+1で判定を行うために移動ができない問題を修正した。
- メッセージ編集、戦闘メッセージ編集機能で、コントロール文字列(?[AD]など)のチェックをスキップしていたためにコントロール文字列が[ADあああああ…のようになっていると文字列インデックスともどもデータを破壊する深刻な問題を修正した。(このエラーを発生させたままROMを保存するとROMのサイズが正しくなくなりエミュで編集したROMを読ませてもゲームが開始しない)
- 3バイトにわたってデータを変更するケース(例:0バイト目の7ビット目から10ビットのデータを変更する場合、0、1、2バイトにわたって変更が必要になる)に、画面上では変更されているように見えるが実際には変更は反映されない問題を修正した。
- RomMap.xmlの解釈速度を上げるためにをDOMからSAXに変更した。しばらく問題がないか様子を見る。
- 「アドレス早引き」で入力されたアドレスの先頭だけでなくそのアドレスを含むエントリも検索できるようにした。
- SRの新規定義ですぐ後ろに別のエントリが存在する場合に例外が発生する問題を修正した。
- 「ROMを6MBに拡張」のメニューを削除した。Luner Expand(http://fusoya.eludevisibility.org/ からダウンロード可能)のほうが汎用性があるため不要な機能と判断した。
- RomMap.xml解釈時、ROM読み込み時の処理の高速化を行った。
- 「ROMを閉じる」の際に自動で解釈したSRのレコードをROM索引とツリービューから開放するようにした。処理が終わるまでに数秒かかる。
- メニュー「SR定義情報を削除」を追加した。
- メニュー「アドレスジャンプ」を追加した。指定したアドレス近くのノードにジャンプする。さらに改良予定あり。
- メモリ上でROMの内容を保存している配列の要素の型を変更したことにより、実行時のメモリ占有量を減らした。
- ROM索引の空き領域レコードの作成方法を見直した。これにより1バイトのレコード($6B,$60のみのSRなど)前後の空き領域の作成が正しくなった。
- SRを新しく定義、SR定義情報を変更した後の前後の空き領域レコードの作成が正しくなかった問題を修正した。
- SRを編集中にサイズが増やせない場合に例外が発生していた問題を修正した。
- SRを編集中に現在編集中の行のフォーカスを移動しないようにした。
- データペインにデータやSRを表示する際に前回表示したときに最後にフォーカスのある行番号をメモリ中に持つことでその行にフォーカスをセットするようにしてあるが、同時に一番上に表示していた行情報も保存するようにした。これにより表示位置が前回表示時と同じようになる。
- SR編集画面で引数の編集ができるようにした。
- スプライト画像(モンスター画像など)のデコード機能の中に画像データ開始位置がハードコードされていたのでRomMap.xml中の「画像データ(SNES4BPP)」のstartアドレスを使用するようにした。これにより拡張ROMでもモンスター情報を正しく表示できるようになった。
- メッセージ、戦闘メッセージ、固定メッセージ編集中に残り容量、残りレコード数をステータスバーに表示するようにした。
- データ編集中に現在フォーカスのあるレコードのROM中のアドレスをステータスバーに表示するようにした。
- メニュー「RomMap.xmlを保存」を追加した。その時点でのデータ、SR情報をRomMap.xmlに書き出す。すでに存在するRomMap.xmlはRomMap.bakでバックアップされる。すでにRomMap.bakが存在する場合はそのファイルを消して現在のRomMap.xmlをRomMap.bakとしてリネームする。
- メニュー「SRを新しく定義」を追加した。現バージョンは引数の編集機能は未実装のためOFFにしてある。
- メニュー「SR定義情報を変更」を追加した。現バージョンは引数の編集機能は未実装のためOFFにしてある。
- SRを編集可能にした。Valsフィールドに半角スペースで区切って16進数を入力する。
- データ編集中にフィールド表示を16進数(X?)で定義しているフィールドについて、編集時に16進数で編集できるようにした。編集開始時に数値の先頭に「$」がついている場合は16進数として扱われる。
- データ編集中に数値の入力範囲のチェックを行うようにした。範囲外の数値を入力すると編集が完了しないようになった。
- RomMap.xmlのトップタグをDQ3SFCからROMINFOに変更した。
- SR編集モードで、SRが編集可能になったのでVal列をダブルクリックしてもコールしているSRにジャンプしないようにした。
- メニュー「アドレス早引き」を追加した。アドレス早引きとは指定した先頭アドレスが何の意味を持つのかを返す機能である。
- メニュー「RomMap.xmlの再読み込み」のショートカットキーをCtrl+Alt+Rに変更した(変更前はCtrl+R)。
- 職人用DQ3SFC拡張ROMver1.43(86氏作成)に対応したRomMap.xmlを提供開始。6MBROMを読み込む際はRomMap6MB.xmlをRomMap.xmlにリネームすること。
- RomMap.xmlの職人用DQ3SFC拡張ROM対応に伴い、メッセージ、戦闘メッセージ、固定文字列の編集機能を実装した(文字列まわりに関して汎用性の大幅ダウン)。現状では新規追加はできない。
- 職人用DQ3SFC拡張ROM(86氏作成)に対応するために、メッセージのデコードを圧縮あり/なし両方対応するようにした。圧縮文字列は
タグのtypeアトリビュート:7で表現する。 - ROMを6MBに拡張した場合の4MB以降のROMのRAM上メモリマップに対応した。
- ROMを4MBから6MBに拡張した際に以下の処理を追加で行ようにした(これまた汎用性のダウン)。
- $00FFD5の値を$35(変更前$31)に変更する。
- $00FFD7の値を$0D(変更前$0C)に変更する
- $00FFA8-00FFFFの値を$40FFA8-40FFFFにコピーする。
- 拡張領域をFFで初期化するようにした。
- SRの解釈を行う際にスタック,X,Yをインデックスとして使用する命令のSource表示に、S,X,Yを追加するようにした。(例:$61, $71など)
- バージョンダイアログを表示するようにした。
- DataGridのセルをTabキーで移動しないようにした。
- バージョンの表記を0.5xから0.5.xに変更した。
- BRKの直後の2バイトをメッセージIDとして引数として扱うようにした。これによりBRKを多用しているNPC1,2のTalk,MoveSRの解釈能力が大幅に上がり、処理を把握しやすくなった。一方DQ3SFC固有の解釈仕様なので他のROMだと正しく解釈できないと思われる(汎用性のダウン)。今後の検討課題とする。
- ver0.5.3 1.の機能を追加した。データペインにROM索引が表示されていてかつStartPosが昇順でソートされているときはDescriptionフィールドの値で検索できるようにした。
- ver0.5.3 2.で実装した機能のバグ(ROMを読み込んだままROMMAP.xmlを再読み込みするとツリービューの情報が正しくなくなる)を修正した。
- RomMap.xmlのファイル名をDQ3SFCRomMap.xmlからRomMap.xmlに変更した。ただし、同じフォルダ内にDQ3SFCRomMap.xmlしか存在しない場合はRomMap.xmlの代わりに読み込む。
- ショートカットキー用のファイルShortCut.xmlを追加で読み込むようにし、ショートカットメニューを編集できるようにした。
- 逆アセンブル機能向上。MVN、MVPのコメントの可読性を向上させた。COP,BRKの引数を解釈するようにした。