THE PSP攻略+α ~SONYへの挑戦状~

PSP関連ブログ?いいえ、ただのゆとりブログです

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

東方の内部データを可視化してみる 

東方を移植するにあたっては、弾幕アルゴリズムを解明するのがもっとも重要である。
というか、弾幕アルゴリズムさえわかればPSPでそれっぽいものが完成する。
60fpsでキャプチャーできる環境なら、1コマ1コマじっくり見ればなんとなくわかるのだが、残念なことに当方の環境ではVGAサイズのキャプチャーはきつい。
また、エフェクトが邪魔で正確な弾数や位置が分かり辛い。
というわけで、メモリを参照して各種情報を可視化してみる。 とりあえず、弾数とフレーム数が分かれば何フレームに弾が何発生成してるのかが分かってくる。
紅魔郷、風神録で調べたところ、そのステージ開始からのフレーム数と各弾幕(スペル)ごとにリセットされるカウンターが存在することが分かった。
敵数とトータルのフレーム数を照らし合わせれば敵の出現テーブルが、弾幕用のフレーム数と敵弾を照らし合わせれば弾生成のタイミングがわかるだろう。

咲夜昨夜、適当に風神録のメモリから探せたものを表示してみる。
カウンターx2、弾数、アイテム数、ボスHPなど。
現段階のHPも見つけたのだが、正確なアドレスが計算できてなかったぽいので、表示できていない。
弾数などは固定アドレスかと思ったが、カウンター以外はすべて環境依存アドレスだったので、アドレスの計算があっているかは分からない。
本当はデバッガでメモリにブレークポイントを設置したり、逆アセンブラして探す必要があるのだが、私にはやり方が分かるはずも無く、時間も無い。

紅魔郷でもカウンターを表示して、咲夜の時止めなど色々試してみたのだが、どうにもウィンドウモードで起動すると、そのままフリーズするバグに遭遇するのでキャプチャーすることが出来ない。
なんかググったら同じ症状の人が何人か居るが、解決方法は再起動のみ。めんどい^^
確か、色々試してみたところ、メモリを大量に使ってるのが原因だった気がするから、ブラウザとか閉じればウィンドウモードでも起動できたはず。めんどい^^

というわけで、風神録をウィンドウモードで起動して、内部データを表示したウィンドウを重ねてみる。
キャプチャーソフトを探して録画するだけで1時から始めて4時間はかかってます^^
外明るいってレベルじゃねーぞ!非常に音夢い

動画を漁ってると、ハイスコアの部分に弾数を表示してるものを見かけたが、何かそういう改造パッチでも配布してるのだろうか?
普通にメモリを書き換えるだけだと右寄せになるし、一桁目はコンティニュー回数なので10の倍数になる。まあ、コンティニュー回数を弄れば良い話なのだが…

弾数が多い方が意味がありそうなので、HARDモードでやってみる。
やり込み度はHistoryでお察しください^^;
プレイ内容はつまらんので、弾数とかを眺めてください^^;



以下はNORMAL時のブロークンアミュレットのログを取ったものである。
弾数が同じものは省いている。
tはステージのトータルカウント、今回は関係ない。
sはスペル開始からのカウント。
他のスペルも見てみると、どれも2フレーム遅れてるようなので、2を引いた数が計算上の値だと思われる。
t[ 8899] s[ 152] bullet_num=0
t[ 8909] s[ 162] bullet_num=40
t[ 8919] s[ 172] bullet_num=80
t[ 8929] s[ 182] bullet_num=120
t[ 8939] s[ 192] bullet_num=160
t[ 8949] s[ 202] bullet_num=200
t[ 8959] s[ 212] bullet_num=240
t[ 8969] s[ 222] bullet_num=280
t[ 8979] s[ 232] bullet_num=320
t[ 8989] s[ 242] bullet_num=360
t[ 8999] s[ 252] bullet_num=400
t[ 9009] s[ 262] bullet_num=440
t[ 9019] s[ 272] bullet_num=440

スペルを発動する時に中央に戻り、開始までのウエイトが150フレーム(2.5秒)
そこから10フレームごとに40発ずつ弾を生成してることになる。
440から増えないので、これを11回行っていることがわかる。
このように、エフェクトが邪魔でどうなってるのか分かり辛い弾幕でも、大体の内容が把握できる。
後は各弾の位置情報などのログも取れればどういう動きになってるのかも分かってくるだろう。
しかし、私にはそんなことができる技術が無い^^
もう限界、寝ます。
[ 2009/07/18 05:42 ] 自作ソフト類 | TB(0) | CM(0)
コメントの投稿













管理者にだけ表示を許可する
プロフィール

七次元

Author:七次元
永遠の18才
夢を追い求める学生
プログラミング初心者(笑)
愛用言語はHSP(スイーツ)
プログラマーを目指すものの「C言語?読むだけ^^」「C++?知らんがな。クラスって何?おいしいの?」
というゆとりっぷり。
Delphi入れたりVC++2008入れたり迷走中。
夢はコミケで何かやりたい。一般参加すらしたこと無いけど。
PSP-1000(CFW)持ち。PSP-4000マダー?
よく難波周辺のゲーセンに出没するらしい。
STGも格げーも初心者。
ろ、ロリコンちゃうわ!!!

連絡先:homepage_touroku[a]yahoo.co.jp
(メールはほとんど確認してません。掲示板に書き込むのが確実です)

関連リンク
そふとうぇあこうかいじょ
公開したファイルが置いてあります。

掲示板
連絡やら雑談やら適当にどうぞ。
カウンター



現在の閲覧者数:
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。