ユニットの移動範囲を表示しているときにYボタンを押すとTalkDisplayが消えてそのままになっていた件について、Yボタンを離したら再度TalkDisplayを出すように変更しました。
概要
少し前のバージョンから、会話イベントの存在を示すアイコン「TalkDisplay」が追加されています。 (TalkDisplay is developed by Zane Avernathy.)
Zane氏のTalkDisplayでは、Aボタンを押してユニットの移動範囲を表示するときにのみフキダシを出すようになっていました。このフキダシはYボタンを押すと消えます。
そのため、遠くのユニットに対して会話があるかを確認するには、Yボタンによるカーソル高速移動を封印してゆっくりと近づかなければなりませんでした。今回の変更によってその問題が解決しました。
また、進撃準備画面でユニットの移動範囲を表示した際にTalkDisplayが出なかったのを、この場合も出るように変更しました。Yボタンを離したらTalkDisplayを出すようになったことで、最初は出ていなかったのにYボタンを押すと出てくることになって不自然だったので。
処理の変更箇所
マップ上でのYボタン押下を処理するJSR $838686にて、Yボタンを離したことを検知したらTalkDisplayのJSLを呼び出しています。TalkDisplayの先頭にはjsl $83CD2B (地形ウィンドウ表示用のフォントをコピーする処理) の呼び出しがあるので、この部分だけ飛ばして呼びます。
具体的には以下のように処理を追加しています。
lda $e4 ; Joypad1Input and #$4000 ; Yボタンをまだ押しているかチェック bne + jsl $839808 ; 退避していた操作状態の読み出し sta $0E25 ; 操作状態を書き戻し ; 追加判定 cmp #$0002 ; ユニット移動範囲表示中の判定 bne + ; ユニット移動範囲表示中にYボタンを離したときはTalkDisplayを再描画する jsl rlTalkDisplay_start + rtl
進撃準備画面については、fe5_rearrange.asmで定義されているAボタン入力時の処理の末尾(180行目)でTalkDisplayの処理を呼びだすようにしています。