Seaside Laboratory

Posts

KFX 逆汗道中記 (2)

逆アセ解析のついでに前からやりたかったネームプレート関連の変更をやってみた。

ネームプレートの移動

スーパーコンボゲージ数とネームプレートの表示が 8 ドット重なっているので、キャラの名前が長かったり、視認性が低いフォントだとかなり見づらくなる。これを解消すべく 1P のネームプレート座標が代入されているコードを探す。色々調べた結果、以下の怪しい 2 行を発見。

// 番地、マシン語、アセンブリ言語の順
00411052 6a1d               push    +1d
00411054 6a00               push    +00

スプライトを描画するにはライブラリや自作関数の引数に表示座標を渡す必要がある。その引数を関数に渡す方法は、スタックに値を push するのが一般的なので、表示位置をずらすには push する値を変更してやればいいということになる。

00411052 6a20               push    +20
00411054 6a50               push    +50

思いきってストリートファイター ZERO 2 のように画面中央にネームプレートを寄せてみた。しかし、中央には勝敗マークがあるので、これも移動しなければ表示がかぶってしまう。

勝敗マークの移動

先程と同じ要領でコードの検索した結果、発見されたのは以下の行。

004091f0 6a1c               push    +1c

これは勝敗マークの Y 座標を push しているコード。

004091f0 6a1c               push    +00

今度はストリートファイター ZERO 3 のように上へ移動。画面上部の 16 ドットはキャンセルやリバーサル表示に使われているが、勝敗マークには被らないので問題は無さそう。勝利マークは 2 つあるのに変更箇所が 1 つなのは同じ Y 座標を参照しているのが要因だと思われる。