ごちゃペディア

はなまるデジタル創作紀行(DTM、TAS、いろいろな技術)

ロックマン2のTASプロジェクトに挑戦しませんか(完結!)

FinalFighterさんからかけられたロックマン2のTAS協力者募集です。2009年の年始をもってそのTASの制作も無事終わりを迎えたため、ここもプロジェクトの足跡となりました。めでたしめでたし。

【TAS】 ロックマン2 世界記録 in 24:33.5 (2009-01-13) 【記録更新】‐ニコニコ動画(ββ)


Check the first post of TASLabo forum / Rockman 2 topic out, we've put all important links there.


募集開始からの経緯

  1. FinalFighterさんがディレイスクロールのメカニズム解明の手伝いをgochaに持ちかける
  2. gochaが「トレースログとかどぱぁって出して追えばいいのでは?」とテキトーなことを言う
  3. TaoTaoさんがトレースログ解析からディレイスクロールには命令数計測が有効であると結論づける
  4. TaoTaoさんが「ジャストスクロール」「音声の調整」がディレイ量の調整に有効なことを見つける
  5. FinalFighterさんが命令数自動出力のカスタムFCEUの初版を作成し、目標の命令までの距離を表示可能にした
  6. ピロ彦さんがカスタムFCEUを使って命令行数「26」の近隣値を発見、そのまま成功して早い結果を残す
  7. 続けて「1号ではなくメタルを用いたより早いものを作ろう」と試行錯誤し、極めて命令数が惜しいものを出すも未遂
  8. cstrakmさんが「クイックマンに更新箇所見つけた」と衝撃の発言。Shinryuuさんが光の速さで再走することですぐにチャレンジ再開。
  9. cstrakmさんがメタルブレードを利用したバブルマン前のディレイスクロールの成功例を出す。
  10. まもなくpirohikoさんがメタルブレードの成功例を更新。非常に無駄がなく、最終的にこの成功パターンが採用となった。
  11. 次のウッドマンステージにフォーカスが移る。理論上、ディレイ上スクロールとディレイ落下死を両立できると見ているが、実現可能かどうかはわからない。
  12. pirohikoさんがディレイ上スクロールとディレイ落下死の両方を成功させ、数日かけて最適化も綺麗に決まった。
  13. FinalFighterさんがTASLabo forumに「ディレイスクロールで特に難度の高いポイント(バブルマンディレイ下、ウッドマンディレイ上、ウッドマンディレイ死)を攻略したため、しばらくWIP公開を控えて潜行します」という声明を発表。
  14. 2009年1月12日13時(日本時刻)、ついに新しい動画が完成!
  15. 各所にさっそく更新点が見つかる。密かにプロジェクト進行中。

このエントリの以降の記述は今の状況とあっていないところもありますが、資料として残しておきます。今取るとよいとされている手段や、利用するファイルに関しては、上記リンクからたどってください。


以下、FinalFighterさんのmixiのエントリの引用。

人数が増えれば運もそれだけ増えるはず、もはやShinryuu氏1人で成功させるのはきついだろーということで、バブルマンステージのディレイ下スクロールにチャレンジしたいという猛者を募集しております。手だとかなり厳しい確率だとおもうので、FCEUのBasicBotを使ってプレーするのが得意な方などは大歓迎です。プレーするのがきつい場合はBasicBotの「*.bot」ファイルの投稿でもおkです。

こちらがロックマン2TASの途中からのFCMファイルとなります。このファイルはShinryuu氏の正規のプロジェクトから切り出したものなので、この続きをプレーしてもらってOKです。

条件としてはこの続きから2号から1号(または他の武器)に切り替えて素早くディレイ下スクロールを決めたFCMを作ってもらえればOKです。成功まで数万回はゆうに失敗するという確率なのでディレイ下までのスタート回数は2回までOKとします。(できれば1回が望ましい)スタートを押してメニュー画面を開いている時間はそこまで最適化しなくてもOKです。(あんまり遅いのはNG)

理想なら、Mか2号でディレイ下スクロールを決めるのが最適なんですが、たぶん1号以外でディレイ下やるのはかなり不可能に近いと思います。

時間がかかりすぎて速くなってないので採用されてませんが、サンプルの成功例はこちら。

http://youtube.com/watch?v=zQ37QL9RZKI

難度の高いクラッシュマンのディレイ下は理想的に決まったため、バブルマンステージのディレイ下は現在のロックマン2のTASプロジェクトで残っている最後の難関です。誰かのBOTか手プレーで是非最難関を突破したいところです。完成の暁には成功者の名前もクレジットされるので是非に宜しくお願いします。


ディレイ下スクロールとか言われてるテクです.長きにわたって「謎の技術」扱いになっていましたが,今年の夏だったかに仕組みが解明されました.TASvideosのフォーラムでBisqwitさんが解説していらっしゃいますが,なにぶん英語なので,FinalFighterさんがmixiに書いた文を参考までに引用しておきます.


[概要]

  • $37=スクロール方向を決める値 1=上 2=右 3=下
  • $38=現在のマップはどこか知るための情報が格納される
  1. 部屋に入ると$38の値をチェックにいく(スクロール方向を知るため) Yレジスタに$38の値が格納される
  2. $38を読み終わると、レベルデータを読みにいくためbankを切り替える
  3. bank切り替え中にディレイによってNMIがコールされる
  4. NMIから戻るとbank切り替え(マッパーを再構築するプログラム)がNMIのプログラムが消えたことに気づき、音のコードを実行する
  5. 音のコードがYレジスタを書き換える(ここで間違いが生じる)
  6. bank切り替え処理が書き換えられた後のYレジスタを読み込む
  7. 別のマップにいると思い込み下スクロールが生じる

というかなり複雑な処理で、ディレイ下スクロールは運がいいタイミングでディレイによってNMIという処理が呼ばれ、更にサウンドコードによってYレジスタの値が運がいい状態になるというBisqwitさんいわく「細い窓」を通ったときだけ成功するテクということが判明。

そしてYレジスタの値を決定するサウンドコードを読み解く新たなる戦いがはじまるサウンドコードの逆アセンブルは詳細なコメントがついて読みやすいのが幸いですが>< http://bisqwit.iki.fi/jutut/megamansource/mm2music.txt

[年表]

  • 2005年12月 ワイリー2面でディレイ右スクロール発見
  • 2006年2月 クワタさん、Bisqwit氏の調査により、同一のスクロール機構ではディレイ右、上スクロールしか生じないと思われると推定される
  • 2006年12月 メカドラゴン戦中にディレイ右スクロールが見つかる
  • 2006年12月 ディレイ下スクロールが見つかる
  • 2007年 Shinryuu氏によりディレイ下スクロールを導入したTASが始まったものの、botによるものを除いて20万回以上のトライで成功せずスタックに陥る Bisqwit氏や有志の解析でも糸口が見つからず
  • 2008年3月19日 Snex9xの活躍とかみてて解析できるのはgochaさんしかいないと思いmixiで頼み込む
  • 2008年3月29日 gocha氏とメッセで会話中に$38の値を適当に1〜3に書き換えるとメカドラゴン戦で下スクロールが生じる事に気づく
  • 2008年3月30日 $37と$38にブレークを仕掛け成功例と失敗例の処理を見比べデバッグを繰り返し828Bあたりの処理でYレジスタを「FF」に書き換えると下スクロールに変わることに気づく
  • 2008年3月31日 Bisqwit氏と共同で調査開始。メモリの値はどこから読み込んでいるのかというアプローチではなく、レジスタの値の変化に絞って処理を読み解きついにディレイ下スクロールがなぜ起きるか問題は解決へ

そんなわけで,ちょっとやってみたいと思った方は今すぐ始めるがよいです.BasicBotとか使い慣れてる人だとなおよいです.TaoTaoさんとか?

「バブルマンステージのディレイ下スクロールがかんせいした! ただちにけつごうシタマエ!」の声,お待ちしております.