セガサターンエミュレータをVitaで動かして、シーバスフィッシング2を約30FPSにした話

はじめに

シーバスフィッシング2はもともと好きなゲームで、思い出のゲームでもあります。これまではPCでエミュレータを動かし、Moonlightでリモートプレイしていました。ただ、外でもオフラインでサクッと遊びたいと思っていました。それなら自分で移植してみよう、チャレンジも兼ねてやってみよう、という流れです。

そうしたら、同じようなことをしている人が最近いて、それが嬉しかったです。

見つけた移植版

見つけたのは、yabause-vitaというVita向けの移植版です。

GitHub – shoui520/yabause-vita: Yet Another Broken And Useless Saturn Emulator, for PS Vita.
Yet Another Broken And Useless Saturn Emulator, for PS Vita. – shoui520/yabause-vita

動かしてみたら結構ちゃんと動いて、すごいなと思いました。ただ、シーバスフィッシング2は動作が重く、ちゃんと遊べる状態ではありませんでした。

フレームスキップを実装した

そこで、移植版のソースをローカルでビルドして、フレームスキップを実装してみました。ビルドはWSLのUbuntuにVitaSDKなどを入れて行っています。

フレームスキップは、ゲームの計算は毎回進めたまま、描画が間に合わないコマだけ絵を作らずに飛ばす仕組みです。描画が遅れても、ゲームの進行が遅れにくくなります。細かい実装は書きませんが、大まかにはこのような仕組みです。

設定の使い分け

メニューから Off、Auto、1、2、3 を選べるようにして、設定はゲームごとに保存しています。初期状態はOffです。

設定描画
Offスキップなし(通常)
Autoシーバスフィッシング2では30FPS
130FPS
220FPS
315FPS

結果

Autoにすると、魚が出てこない軽い場面では60〜58FPSほど出ます。魚が映る場面は約30FPSです。体感はいい感じで、ちゃんと遊べて、すごく嬉しいです。サクッと改善してみたら、めっちゃいい感じでした。

移植元の作者のIssueにお礼を書いておきました。

[Compatibility] Sea Bass Fishing 2 (Japan, T-9114G) is playable, with a frame skip experiment ツキ Issue #16 ツキ shoui520/yabause-vita
Thanks for this emulator! This is a compatibility report. No action is needed. Game: Sea Bass Fishing 2 (Japan, T-9114G)…

注意点

音ズレは測っていません。他のゲームでも試していません。

改造版のvpkは公開しないでほしいと書かれているので、公開しません。

Claude Codeで作業してみて

今回の作業はClaude Codeで行いました。自分では実装の詳細まで把握していませんが、印象に残ったことが3つあります。

  • VitaSDKの導入を調べるところから、自分で進めてくれた
  • エミュレータ本体が出すログを読み取り、原因を推測して直し、またログを見る、という改善のループを自分で回してくれた
  • Vita向けのSDKは情報が少ないはずなのに、自律的に進められていた

ユーザーの多い分野はこれからどんどんできるようになっていくと思っていました。今回のようなニッチな分野でも全般的なタスクに強くなっていると、実体験として感じました。AIの進歩を実感しています。

コメント