Darkside(リンクエラー修正しました)

2012年8月18日(土) 19:39

最高速のモリ操作

 モリが刺さっているかどうかを判定するには、どうやら表示用キャラクターコードを見るのが早そうだ。別にフラグがあるのかもしれないが、良く分からない。
 自分がプログラムを作る立場で考えると、通常=0、1段階膨らんだ=1、2段階膨らんだ=2、みたいなフラグを用意。表示時はそれに応じてキャラクターコードに変換し、VRAMに値をセットする。それが、キャラクターコードを直接格納しているのはどういう訳か?
 表示用キャラクターコードに変換する手間を省き、コードの違いをフラグとして利用しているのかもしれない。

 この場合、プーカとファイガではキャラクターコードが異なるため、プログラムを共通化できない。だから筋が悪いと感じるが、考えてみればフラグ→キャラコードの変換を行なうときだってプーカとファイガで条件分岐させねばならない。
 いずれにしろ、TASは実時間で製作するものではない。だから処理速度は問題にならず、的確に判別さえできればOK。

 表示用キャラクターコードが先頭アドレス+3バイト目に格納されているのは、ほぼ確実。プーカならそこに40H〜42Hが格納されていれば、足止め中。ファイガなら44H〜46Hの場合である。

プーカ ファイガ 存在フラグ
刺さった直後 40H 44H 0
2段階膨らんだ 41H 45H 0
3段階膨らんだ 42H 46H 0
破裂 43H 47H 1

 破裂表示の直後には、得点数字のキャラクターになる。
 X座標とY座標は、変化しない。

 ところでモリや自機の操作だが、実は1フレーム単位で可能なことが判明した。
 エミュレーターの画面表示が何フレームか遅延しているため、反応が悪いと勘違いしてしまったのだ。実際は、1フレーム毎に左右交互に向き直るなんてことも可能。こうなると確実に、人外のモリ操作ができる。
 あと重要なのは、自機の向きである。使えそうなワークエリアが2箇所見つかった。

自機の向き 0012D868 001309D4
0 1
4 0
6 0
2 1

 自機の座標が格納されている近くに確保されているのが 001309D4 だが、2方向の区別しか付かない。
 0012D868 は4方向が区別されているが、アドレスが離れており本来の用途は別である可能性がある。
 TAS的には、区別さえできれば良い。

 ポンプボタンを押した直後に、移動キーを反対側に入れる。
 自機はモリが敵に刺さるか、壁にぶつかるか、最大射程まで延びるかしないと移動できず硬直時間に入る。だから、自機の向きが変わったことを検出できた時点で、次のポンプ操作が可能と判断できる。

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4