PS4などに移植されたアーケードゲームと基板を同時に操作して全く同じ結果に出来るか?

 タイトルに書いたことが出来るか、というと浪漫はあるなと思いますが、現時点では無理です。ただし、出来たら良いなと以前から考えてはいます。
 以下になぜ出来ないのか、について書いてみたいと思います。

twitterに投稿したPS4ケツイと基板版ケツイを同時に操作した動画について

 twitterに以下の投稿を行いました。


 動画を見ると結構合っているように見えますが、最初に自機がやられるフレームを抜き出すと
f:id:HIN:20181202225206j:plain
自機がやられるフレーム
このような状態で、よく見ると敵弾の位置が全く違います。また、全体的に敵弾の挙動が違う、INSERT COINの点滅速度が違う、2回目のやられるタイミングが違う、3回目にやられたときのアイテムの出方が違うなど色々と違っています。
 このように操作を同じにしただけでは同じ結果にはなりません。
 なぜ同じ結果にならないか、を以下に書いてみたいと思います。間違っていたらツッコミがあるとうれしいです。

VSyncの周波数

 アーケードゲーム基板や家庭用ゲーム機はある基準単位で動いています。その中に画面を更新するタイミングを示し、1秒間に何回画面を更新するか、という単位があります。それをVSync(垂直同期信号)周波数と言います。
 この信号を基準に画面を表示するためのあれこれや、ボタンやレバーの入力の処理が行われる大事な信号です。


 この値はHDMIなどの映像信号の場合は60Hz(1秒間に60回更新)ですが、アーケードゲーム基板によってはこの数値がまちまちです。フレームマイスターにこの値を表示する機能がありますので、ケツイ基板の値を見てみると

f:id:HIN:20181203000043p:plain
ケツイ基板のVSync周波数
上記画像のV : 59.18HzがVSync周波数となります。
 本来この値は規格上60Hzにするべきなのですが、昔の基板の接続先として使われていたブラウン管は仕組み上ある程度の範囲のVSync周波数を映してくれるため60Hzを守っていない物が多いです。
 ケツイの基板も60Hzと微妙に異なるため、ボタンやレバーの入力のタイミングが60Hzで動いているPS4などとは異なります。これをそのまま60Hzにしてしまうとゲームスピードが変わってしまいます。そのためPS4版のタイトルではがんばってプログラム的に分からないようにしているはずです。
 この頑張りが微妙なタイミングの違いを生むため、同じタイミングでレバーやボタンを入力する、ということが難しくなります。

VSyncの同期

 もし上記VSync周波数がプログラムにより完全に同じ値となるようになっていたとします。ボタンの入力タイミングなどに影響があるVSync信号ですが、基板とPS4で同期して動いている訳ではありません。そのためPS4版でエミュレーションにより基板と全く同じタイミングでボタン入力を取り込んでいるとしても、異なるフレームとして処理されてしまう可能性があります。
 こちらは図を見てもらった方が分かりやすいかもしれません。


f:id:HIN:20181203154757p:plain
VSyncが同期している場合(理想)
 PS4と基板のVSyncが完全に同期している場合はPS4, 基板ともに同じフレームで同じ入力となります。


f:id:HIN:20181203161642p:plain
VSyncが同期していない場合(現実)
 PS4と基板のVSyncが同期せずにズレている場合、ボタン変化のタイミングによっては同じフレームでonであるべきところPS4ではon/基板ではoffとなり1フレームのズレが生じる場合があります。on/offのタイミングによってはきちんと合うこともあり、on/offが合ったり合わなかったりします。


 というわけでPS4と基板でVSyncの同期を取る必要があるはずです。

乱数の違い

 ゲームによっては毎回同じ動きをしても同じ結果になるわけではありません。これは上記動画の弾筋などがそれにあたります。
 これは乱数で決まっているのですが、こちらの値は種(seed)と呼ばれる値を変えることにより、毎回できるだけ違う値になるように作られている事が多いです。ケツイのプログラムを読んでいないのですが、おそらく種を使用した乱数生成を行っているのかなと。後で調べます…。
 この種の値をPS4と基板で同じになるようにすると全く同じ挙動になりますが、CPUその他諸々がPS4と基板で同期して動いている訳では無いため、同じ値になることはほぼありません。
 こちらも同じ値になるように細工をする必要があるはずです。

バージョン違い

 PS4版のケツイは修正版だと思われますが、私の手元にある版はVer1.00とロムシールに記載された物です。こちらもなんとか合わせたいところなのですが、修正版を入手できていません。

結論など

 というわけで、軽く考えただけでも4つの違いにより完全に同じになることは無いだろうな、と分かってはいるのですが、もしも完全に同じ結果になったら楽しそうだな、ということでRAIDEN FIGHTERS ACESの頃から色々と試してみています。
 今のところ上手くいったタイトルはありませんが、こうすればもうちょっと何とかなるのでは無いか、という考えがありますので、基板などを作って色々と試してみたいと考えています。いろいろと手を入れた基板を現在作成中です。


 twitterに投稿した動画ですが、特に何もせずにここまで揃うとは思ってもいなかったので、M2 Shot Triggersの移植はかなりすごいなと。他のタイトルも全部基板がありますので、時間を取って比較してみたいと考えています。


 PS4ケツイはダウンロード版もありますがパッケージ版も発売されています。移植としてはなかなか良く出来ていて、さらに簡単なモードの追加、練習モードや設定項目などが充実していてかなり気合いを込めて作られていると感じます。PS4版のケツイDeathtinyオススメです。

ケツイ Deathtiny ~絆地獄たち~ - PS4

ケツイ Deathtiny ~絆地獄たち~ - PS4