なぜここまで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を貰えればデバッガでの再現ができるようになったので、ゲームロジック部分のデバッグが相当楽になる見込みです。
コメント