アカウント名:
パスワード:
> 今回のTASプレイは数年にわたって研究を行った末に完成した
「ロックマンのTAS」そのものは数年にわたって探求を続けているようですが、今回の「任意コード実行によるエンディング到達」については、> 2014/4/29 SMB3の任意コード実行の機構を知る> 2014/5/13 ついにわれわれは感動のエンディングを見ることができたというわけで、実質2週間で完成させてますね。
これまでに発見済の内容:・ロックマンには、(処理落ちしているなどの要因で)ごく特定のクリティカルなタイミングで割り込みが発生すると、(メモリのバンク切替を間違えて)変なオブジェクト番号の物体が画面に現れるバグがある。(これが今回使用した唯一のバグ。このバグそのものは2011年に発見していた)
・ロックマンのコード処理では、オブジェクト番号に基づいたジャンプテーブルでオブジェクトの挙動制御ルーチンを切り替えている(そのため、変なオブジェクト番号の物体を登場させた場合、通常は単に「暴走」していた)
今回の新技:・上述のバグでプレイ操作で制御可能なメモリ部分にジャンプするようなオブジェクト番号を持つ物体を発生させるようなタイミングを模索する。・オブジェクトが発生する丁度のタイミングで、メモリに内容が「エンディングルーチンにジャンプする」処理になるように、プレイを調整する
というわけで、具体的には、・目的のオブジェクト番号(55)のオブジェクトが発生するタイミング(時刻1929F)で割り込みが発生するように、ラグフレームを増やしたり、セレクトでメモリの数値調整を行ったりといった操作を行う。(そうなるような操作内容の探索が今回のプレイ実現への最大の難関だったようです。)・そのタイミングで、ロックマンのY座標=54に、ロックバスター1番目と2番目のY座標=50と4Dになるよう調整(これによりレジスタが書き換えられ、ステージクリアルーチン実行時の「ステージ番号」判定が10になり、下記メモリのルーチンにジャンプするようになる)・そのタイミングで、1コンの「左下」+2コンの「左右セレクト」を押す。(これにより、コントローラの状態を示すメモリが、「ステージクリアルーチン」のアドレスである「C460h」になる)・オブジェクト番号55のオブジェクト発生、55番のジャンプテーブル実行により、・以上の処理により、「ステージ番号=10」として、「ステージクリアルーチン」にジャンプし、エンディングに到達
以上のように、あくまでタイミングと操作の調整だけですので、とんでもなく操作はシビアですが「無改造の実機ファミコンと無改造の実カートリッジ」でも、理屈の上では再現可能というという技です。(エミュレータで実行してはいますが、「実機で再現可能」というのは「TAS」のシバリですね)
コントローラの物理的な動作に関しては、何をやっても許容される感じ。例えば64TASでは、スティック角度を本来あり得ないほど倒すことで高速にキャラクターを走らせたりとかもOK。でないと、例えば1フレームごとに左右を交互押しなんかも現実的にあり得ない部分の線引きが難しくなる。
「実機で可能」という決まり文句は、メモリ書き換え、ROM改造、カセット半差しバグといった、記憶・処理・通信といった部分に不正介入することを禁止するルールでしかない。
あれ、最後期のファミコンってスーパーファミコンと同じく、本体に共通コントローラを差し込むタイプだったんじゃ(スーパーファミコンすら落ち目の時期の鼠色に変更されたモデル。NESとおなじ)
普通に無改造で可能ですよ。(逆にこの頃だとマイクがなくてたけしの挑戦状ができないという落ちもあったよーなw)
ファミコン実機なら公式の1P2P切り替えついたジョイスティックさせば簡単に可能で、それが必要な有名な裏技もありますね。(ダンジョン&マジック)
あと、通常のコントローラでも1/60秒ごとにくる、コントローラが認識する処理までの間に超高速で左右入力できれば同時押し扱いになるので問題ないです。参考にそれを手で実証してる動画もYouTubeにあがってますよ。https://www.youtube.com/watch?v=6uV3RGBe5vo [youtube.com]
ジョイスティックさせばって、本体からケーブルで出ていたはず。#半田付け
それは無理に押し込んで同時押ししてるやつです。1/60秒以内に左右を押せば同時押しになるとよく言われるのは間違いでプログラムの命令単位で数行程度の余裕しか無いのでマイクロ秒単位の超高速で動かさないといけないのでマッハで指が壊れます
いわゆるAVファミコンですね
個人的には、TASの理論上実機で再現可能というのは詭弁に過ぎないと思いますね#まあ、人様がどんな縛りでどんな遊びをしようと勝手ですけど
ところで、こうしたエミュレータの再現性は誰か担保してるんでしょうか?
エミュレータ環境には一切バグが無いという前提ですよねそこが崩れていたら一切が全く無意味な行為になると思いますので、人ごとながら心配です
とりあえず、スーパーマリオのTAS実機再現ムービー [youtube.com]をどうぞ。
コントローラの代わりにArduinoを接続し、Arduinoからはリプレイデータを電子的に送り込むしくみです。
エミュレータ環境には一切バグが無いという前提ですよね そこが崩れていたら一切が全く無意味な行為になると思いますので、人ごとながら心配です
それを突っ込んではいけない エミュレータの再現性を担保した人がちゃんと再現性を確認したか担保する人が必要になる #エンドレス
TASVideosには入力を実機で再現する機材を持っている人がおり実機で動作確認済みの動画にはConsole Verifiedの文字が付きますhttp://tasvideos.org/ConsoleVerifiedMovies.html [tasvideos.org]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
実質2週間 (スコア:5, 参考になる)
> 今回のTASプレイは数年にわたって研究を行った末に完成した
「ロックマンのTAS」そのものは数年にわたって探求を続けているようですが、
今回の「任意コード実行によるエンディング到達」については、
> 2014/4/29 SMB3の任意コード実行の機構を知る
> 2014/5/13 ついにわれわれは感動のエンディングを見ることができた
というわけで、実質2週間で完成させてますね。
これまでに発見済の内容:
・ロックマンには、(処理落ちしているなどの要因で)ごく特定のクリティカルなタイミングで割り込みが発生すると、(メモリのバンク切替を間違えて)変なオブジェクト番号の物体が画面に現れるバグがある。
(これが今回使用した唯一のバグ。このバグそのものは2011年に発見していた)
・ロックマンのコード処理では、オブジェクト番号に基づいたジャンプテーブルでオブジェクトの挙動制御ルーチンを切り替えている
(そのため、変なオブジェクト番号の物体を登場させた場合、通常は単に「暴走」していた)
今回の新技:
・上述のバグでプレイ操作で制御可能なメモリ部分にジャンプするようなオブジェクト番号を持つ物体を発生させるようなタイミングを模索する。
・オブジェクトが発生する丁度のタイミングで、メモリに内容が「エンディングルーチンにジャンプする」処理になるように、プレイを調整する
というわけで、具体的には、
・目的のオブジェクト番号(55)のオブジェクトが発生するタイミング(時刻1929F)で割り込みが発生するように、ラグフレームを増やしたり、セレクトでメモリの数値調整を行ったりといった操作を行う。(そうなるような操作内容の探索が今回のプレイ実現への最大の難関だったようです。)
・そのタイミングで、ロックマンのY座標=54に、ロックバスター1番目と2番目のY座標=50と4Dになるよう調整(これによりレジスタが書き換えられ、ステージクリアルーチン実行時の「ステージ番号」判定が10になり、下記メモリのルーチンにジャンプするようになる)
・そのタイミングで、1コンの「左下」+2コンの「左右セレクト」を押す。(これにより、コントローラの状態を示すメモリが、「ステージクリアルーチン」のアドレスである「C460h」になる)
・オブジェクト番号55のオブジェクト発生、55番のジャンプテーブル実行により、
・以上の処理により、「ステージ番号=10」として、「ステージクリアルーチン」にジャンプし、エンディングに到達
以上のように、あくまでタイミングと操作の調整だけですので、とんでもなく操作はシビアですが「無改造の実機ファミコンと無改造の実カートリッジ」でも、理屈の上では再現可能というという技です。
(エミュレータで実行してはいますが、「実機で再現可能」というのは「TAS」のシバリですね)
Re:実質2週間 (スコア:2)
だけど、「無改造の実機ファミコン」で「2コンの「左右セレクト」を押す」は無理では?
(十字キー割って左右両方押すか、分解してなんとかするか、少なくとも「無改造」は無理っぽい…?)
Re: (スコア:0)
ジョイスティックなんかに1P2P切り替え機能がついてるやつがあったんで、
ジョイスティック(2P)と IIコンでやればいけるんじゃないですかね。
つか、IIコンにはセレクトもないよね?
Re: (スコア:0)
方向キー同時押しはなぜかTASではOKにされる決まりのようです。
Re: (スコア:0)
コントローラの物理的な動作に関しては、何をやっても許容される感じ。
例えば64TASでは、スティック角度を本来あり得ないほど倒すことで高速にキャラクターを走らせたりとかもOK。
でないと、例えば1フレームごとに左右を交互押しなんかも現実的にあり得ない部分の線引きが難しくなる。
「実機で可能」という決まり文句は、メモリ書き換え、ROM改造、カセット半差しバグといった、記憶・処理・通信といった部分に不正介入することを禁止するルールでしかない。
Re: (スコア:0)
あれ、最後期のファミコンってスーパーファミコンと同じく、本体に共通コントローラを差し込むタイプだったんじゃ
(スーパーファミコンすら落ち目の時期の鼠色に変更されたモデル。NESとおなじ)
普通に無改造で可能ですよ。
(逆にこの頃だとマイクがなくてたけしの挑戦状ができないという落ちもあったよーなw)
Re:実質2週間 (スコア:1)
意味だと思うんですよね。
で、共通コントローラの話は、セレクトボタンに関する突っ込みだと思うんだけど、そうじゃなくて、問題は「左右」の同時押しの方。
ファミコン(というか、殆どのゲーム機)のコントローラパッドの方向キーって、ABボタン等のように独立したボタンじゃなく、
上下左右で1枚の板状の部品になっていて、横から見るとシーソーのように、「右を押せば左が離れる」「左を押せば右が離れる」って
機構になっていた筈。
よって、無改造のコントローラでは、左右キーの同時入力は物理的に不可能じゃない?って話ですよ。
Re: (スコア:0)
ファミコン実機なら公式の1P2P切り替えついたジョイスティックさせば簡単に可能で、
それが必要な有名な裏技もありますね。(ダンジョン&マジック)
あと、通常のコントローラでも1/60秒ごとにくる、
コントローラが認識する処理までの間に超高速で左右入力できれば同時押し扱いになるので問題ないです。
参考にそれを手で実証してる動画もYouTubeにあがってますよ。
https://www.youtube.com/watch?v=6uV3RGBe5vo [youtube.com]
Re:実質2週間 (スコア:1)
そんなジョイスティックあったんですね。知りませんでした。
(何しろド田舎出身なもので…)
参考になります。
Re: (スコア:0)
ジョイスティックさせばって、本体からケーブルで出ていたはず。
#半田付け
Re:実質2週間 (スコア:1)
ファミコンの1コン、2コンは確かに本体からケーブルで伸びてますが、ファミコンでは拡張コントローラ接続用の
外部コネクタが存在します(旧ファミコン、AV仕様ファミコンとも)
この外部コネクタに連射パッドなどのコントローラを接続すると、通常は1コンの代替として認識されます。
(希に3人用モードなどあるゲームの3コンにも使われた。また通常の1コンの入力はそのまま使用できるので、
方向キー左右押しとかが可能になるんですね)
#2602555や #2601745がいっているのは、この外部コネクタから接続して1コン2コンが切り替え可能なコントローラがある。
と言っているんですよ。(で、私はそのコントローラの存在を知らなかったので、1コンならともかく、2コンと外部コントローラで
方向キー同時押しが出来るとは思っていなかった)
あと、半田付け?とか書いていますが、本体にケーブルで繋がった1コン2コンは、基盤にコネクタで接続されているので、
裏蓋を外す必要がありますが、半田付け不要で交換可能です。
(昔は補修部品としてコントローラだけ買って、ユーザー自身で交換もできた)
Re: (スコア:0)
それは無理に押し込んで同時押ししてるやつです。
1/60秒以内に左右を押せば同時押しになるとよく言われるのは間違いで
プログラムの命令単位で数行程度の余裕しか無いので
マイクロ秒単位の超高速で動かさないといけないのでマッハで指が壊れます
Re: (スコア:0)
いわゆるAVファミコンですね
個人的には、TASの理論上実機で再現可能というのは詭弁に過ぎないと思いますね
#まあ、人様がどんな縛りでどんな遊びをしようと勝手ですけど
ところで、こうしたエミュレータの再現性は誰か担保してるんでしょうか?
エミュレータ環境には一切バグが無いという前提ですよね
そこが崩れていたら一切が全く無意味な行為になると思いますので、人ごとながら心配です
Re:実質2週間 (スコア:1)
とりあえず、スーパーマリオのTAS実機再現ムービー [youtube.com]をどうぞ。
コントローラの代わりにArduinoを接続し、Arduinoからはリプレイデータを電子的に送り込むしくみです。
Re: (スコア:0)
ところで、こうしたエミュレータの再現性は誰か担保してるんでしょうか?
エミュレータ環境には一切バグが無いという前提ですよね そこが崩れていたら一切が全く無意味な行為になると思いますので、人ごとながら心配です
それを突っ込んではいけない
エミュレータの再現性を担保した人がちゃんと再現性を確認したか担保する人が必要になる
#エンドレス
Re: (スコア:0)
TASVideosには入力を実機で再現する機材を持っている人がおり
実機で動作確認済みの動画にはConsole Verifiedの文字が付きます
http://tasvideos.org/ConsoleVerifiedMovies.html [tasvideos.org]