Snes9x SSのバージョンごとの互換性調査

Windows10上で自分の作った「Snes9x 1.51自動SS保存版」を使ってプレイしていると唐突にアプリケーションエラーで落ちることが頻繁にあり、Snes9x 1.58(通常版)でプレイすると問題ないので、おそらくWindows10上で正常動作しないものと思われます。まあ自動で直前数秒以内の状態が保存されているので、どんなゲームでも直前の状態に戻れるわけですが、流石にこの状態で「テストプレイにSnes9x 1.51自動SS保存版を使ってくれ」というのは無理があるので、どういう対処がいいのかと考えた結果到達したのが「もらったSSをいかなるバージョンでも1.51に変換できればいいのでは」という結論です。これならSnes9xを使う限りはプレイヤー側に対する負担はかなり減ります。

なぜここまでSnes9x 1.51にこだわるかというと、公開されているデバッガがSnes9x 1.51ベースのものだからです。作者氏のウェブサイトを見てもどうやら更新される気配はなさそうなのでしばらくはこの状態で我慢するしかありません。bsnesのデバッガは今のデバッガに慣れていると移行する気にならないので選択肢から外れます。

基本的にバージョンが上がるにつれてSSに格納される情報は増えるだけだろうという甘い見込みに基づいて作業をします。まずは各バージョンごとの情報を整理します。SSにはヘッダ部にバージョン情報があり、フォーマットが変わるごとにバージョン番号が上がっていくようになっています。また、SSは各カテゴリごとに3文字のカテゴリ略称+サイズをヘッダとしてその後に実データが連なるブロックを1単位として複数のカテゴリのコレクションで構成されています。

SS Version Snes9x Snes9x Ex+ 前バージョンからの違い
4 1.51
6 1.52 CPU部、PPU部、DMA部、SND部
7 1.53 CPU部
8 1.54 SND部
9 1.55 1.5.37 CTL部
10 1.56 TIM部
11 1.57-1.60 PPU部

Android版Snes9x(Snes9x Ex+)のSSの拡張子は.frzとなっていますが、中身はPC版と互換性があり、同じバージョンのSSなら拡張子を変えるだけで対応するPC版でそのまま使えます。現在Google Playからインストールできるバージョン1.5.37のSSはPC版のバージョン1.55と互換性があるようです(実際にロードできた)。おそらくiOS版も同様なのではと思います。32bit版でも64bit版でもSSは互換です。とりあえず必要なのは1.51以降だけなのでそれ以前のバージョンについては調査しません。ちなみに1.52は1.51とは公式で「互換性がない」と明記されています。

これを踏まえてどうすればいいかというと、SSファイルを読み込ませてバージョンを特定し、上記の差分を旧バージョンに戻しながら1.51まで到達できればいい、ということになります。というわけでここ数週間かかりっきりになって一応できたツール。1.51のサウンド部分で相当手こずり、ギブアップ寸前でしたがなんとかできました(サウンド再生しようとするとフリーズしていた)。1.51でサウンドは再生はされませんが、当面サウンド関係のデバッグをするつもりはないので良しとします。Snes9xを使っている限り、スマホ版でもどのバージョンでもSSを貰えればデバッガでの再現ができるようになったので、ゲームロジック部分のデバッグが相当楽になる見込みです。

コメント

タイトルとURLをコピーしました