ゲームに必要な設定集

SSFの実行に必要な最低環境
OS | Windows7/8/10/11
CPU | Windows7以降が動作するCPU
Memory | 1GB以上
Video | DirectX11に対応しているカード シェーダーモデル5.0に対応している必要があります
Sound | DirectX11に対応しているカード 48000Hz,ステレオPCMが再生できる必要があります
CD Drive | MMC3に対応したドライブ

XAudio2関係でエラーが出る場合は、 こちらをインストールしてみてください。

推奨環境
CPU | Intel Core Ultraシリーズ Intel Core i9シリーズ Intel Core i7シリーズ Intel Core i5シリーズ AMD Ryzenシリーズ
Memory | 1GB以上（Dual Channel） 64ビット版は2GB以上
Other | BIOS CDイメージ使用（CUE+BIN,CHD）

エミュレート状況
SH2 Emulator | 95%
68000 Emulator | 95%
VDP1 Block | 100%
VDP2 Block | 95%
SCU Block | 100%
SMPC Block | 100%
SCSP Block | 95%
CD Block | 85%

具体的な実装状況
SH2 | ほぼ全て実装 ゲームに不必要と思われる部分は未実装
68000 | ほぼ全て実装 BCD命令は未実装
VDP1 | ほぼ全て実装
VDP2 | ほぼ全て実装 回転面のモザイクは未実装
SCU | ほぼ全て実装
SMPC | ほぼ全て実装 キーボードは未対応 バーチャガンは非対応
SCSP | ほぼ全て実装 FM時のPLFOノイズは未実装
CD Block | ほぼ全て実装 CDCコマンドの一部は未実装 マルチセッションは非対応

主な機能

- BIOS無しでも動作可
- バックアップ容量の無制限化（バックアップライブラリのフック）
- CDイメージ（CUE+BIN,CHD）に対応
- XInputに対応（DirectInputにも対応しています）
パッド、キーボード、マウスが使えます。ボタンの再割り当て可能。
デフォルトは
UP = UP Arrow
DOWN = DOWN Arrow
LEFT = LEFT Arrow
RIGHT = RIGHT Arrow
A Button = Z key
B Button = X key
C Button = C key
X Button = S key
Y Button = D key
Z Button = F key
L Button = A key
R Button = G key
START Button = Enter key
CD Open = F1 key
CD Close = F2 key
Emulator Restart = F3 key
Hard Reset = F4 key
連射のON/OFF切り替え = F5 key
SoundのON/OFF切り替え = F6 key
State Load = F7 key
State Save = Shift + F7 key
Snapshot = F8 key
Sound Record = F9 key
Video Record = Shift + F9 key
NBG0の表示ON/OFF切り替え = NUMPAD 1 key（テンキーの1）
NBG1の表示ON/OFF切り替え = NUMPAD 2 key（テンキーの2）
NBG2の表示ON/OFF切り替え = NUMPAD 3 key（テンキーの3）
NBG3の表示ON/OFF切り替え = NUMPAD 4 key（テンキーの4）
RBG0の表示ON/OFF切り替え = NUMPAD 5 key（テンキーの5）
RBG1の表示ON/OFF切り替え = NUMPAD 6 key（テンキーの6）
Spriteの表示ON/OFF切り替え = NUMPAD 7 key（テンキーの7）
画面の回転 = NUMPAD 0 key（テンキーの0）
ABCとXYZボタンの入れ替え = NUMPAD 9 key（テンキーの9）
ウィンドウサイズ変更 = NUMPAD + key (テンキーの+）
Windowsマウスカーソルの表示ON/OFF = NUMPAD - key (テンキーの-）
Window/Borderlessの切り替え = F12 key
Debug出力 = F11 Key (Enable Debug ON時)
以下は変更不可
終了 = ESC key
以下は変更不可（ST-V関係）
Test = 9 key
Service = 0 key
1P Coin = 5 key
2P Coin = 6 key
3P Coin = 7 key
4P Coin = 8 key
1P Start = 1 key
2P Start = 2 key
3P Start = 3 key
4P Start = 4 key
A～N = A～N key (Mahjong panel)
カン = Ctrl key (Mahjong panel)
ポン = Alt key (Mahjong panel)
チー = Space key (Mahjong panel)
リーチ = Shift key (Mahjong panel)
ロン = Z key (Mahjong panel)
2P側はデフォルトではキー設定されていません。ポートとキー設定を行えば使用できるようになります。
- ボタンの連射
- メッシュスプライトの半透明化
- デインターレース
- ST-Vに対応
Shiftを押しながら起動するとST-Vに切り替わります。
ROMセットの内容はこちら

問題がある部分

- 回転スクロールの座標計算に浮動小数点を使用している
サターン内部では固定小数点で計算しているようですが、SSFでは単精度浮動小数点を使用しています。
よって、誤差が発生する可能性があります。
- PCMが15ビットである
音量の計算にSSE2の符号付き乗算命令（PMULHW）を使用しています。
PCMは符号ありですが音量は符号なしなので音量を1/2にして計算しています（最下位ビットが失われる）。
ただし、実機のビット精度は13ビット程度なので問題ないかもしれません。
- 音の再生タイミングが実機と異なる
エミュレータの特性上、音が若干遅れて再生されます。
速度を確保するため一定時間毎にPCMを生成しているためです。
具体的には（オプションで設定したバッファサンプル数*4/44100）秒の遅延があります。
また、キーONも最大で（128/44100）秒遅れます（Alternative Decode OFFの場合）。
Alternative Decodeにチェックを入れるとキーONの遅延は無くなります。
- リングバッファのデータは独自
SCSP内蔵DSPが使用するリングバッファ用メモリに書き込む浮動小数点データは独自形式なので、リングバッファ上に直接アクセスするソフトは上手く動作しません。
実機の浮動小数点フォーマットは非公開で詳細不明なので、直接アクセスするソフトは無いと思いますが…

よくある質問

- ゲームの動作が怪しい
以下の設定をすると動くことがあります。
1. SH2 Write BufferをOFFにする
2. CD Task Numbersを下げる（1にしてダメなら上げる）
3. Bus WaitをOFFにする
4. SH2 CacheをOFFにする
5. 1Block Clockを下げる
6. WorkRAMH Read Waitを変更する
7. WorkRAMH Write Waitを変更する
8. SlaveSH2 Speedを下げる
1Block Clockを10くらいとかなり小さくしても動かない場合はSlaveSH2 Speedを下げてみてください。
SlaveSH2 Speedを60%くらいに下げると1Block Clockはそれほど下げなくても動く場合があります。
スプライトが欠けている場合はVDP1 Draw ThreadとVDP1 Draw SyncをONにしてみてください。
- コントローラのRedefineで固まる
リキャリブレートしてみてください。
Windows7ならコントロールパネル -> デバイスとプリンター -> コントローラを選択して右クリック -> ゲームコントローラの設定 -> プロパティ -> 設定タブの調整
アナログ入力がニュートラル状態で片方に振り切っている場合はRedefineで固まります。
どうしても固まるようならXInputを使用してみてください。
- 遅延ありますよね？
描画に関してはVDP2 RAM Write Timingにチェックで遅延が最大1/60秒になります（チェックしないと2/60秒の遅延）。
モニタ自体の表示遅延に関してはこちらではどうすることもできません。
入力に関しては入力装置やドライバに依存するのでこちらも対処できません。
入力装置（ドライバ）によってはデータのサンプリング間隔が1/60秒より遅い場合があります。
その場合、素早い操作では入力が遅く感じる又はデータの取りこぼしが発生します。
他には、変換アダプタを使用しているとアダプタ内部で遅延を起こしている可能性があります。
特にサイバーガジェットの変換アダプタは明らかに3/60秒以上の遅延があります。
あと、マシンパワーが足りないと描画が1/60秒に間に合わず遅延しているように見えます。
タイトルバーのDropの数値が増えていくようならマシンパワーが足りていません。
なお、DrawPrimitiveUP後に即Presentしているのでプログラムではこれ以上画面を素早く切り替えることはできません。
もっと良い方法があるなら教えてください。
- 1/60秒の遅延は無くなりませんか？
VSync Waitのチェックを外せば少しは短くなります。
しかし、完全に無くすことはできません。
実機では走査線に合わせて画像を表示しているので遅延はありません。
Windows環境では表示画面全体を作成してから切り替えるため、最悪の場合で1/60秒の遅延がどうしても発生します。
これはWindowsの仕様なのでどうすることもできません。
かなり速いマシンでVSync Waitのチェックを外せば、見た目はともかく遅延は無くなるはずですが…
- よくマルチプレイヤー画面に飛ぶ
CDブロックはCDドライブが実機と同じ動作することを前提として作成しています。
ドライブによってはタイミングが実機と違うため上手く同期できないことがあります。
そのためマルチプレイヤー画面に飛ぶことが多くなります。
CDイメージ化すると改善する可能性があります。
- ゲームの動きが遅い
ドットクロックが低いと一部のゲームで処理落ちします（ゲーム自体が処理落ちする）。
- BGMのテンポが狂っている
マシンパワーが足りないと処理が間に合わず、内蔵音源の曲が狂ってしまいます。
- 音が鳴らない
SGLでサウンド初期化時にメインCPUとサウンドCPUの同期に失敗すると、以降の再生コマンドを一切発行しないバージョンがあります。
Memory Access Waitにチェックを入れてみてください。
- 音がノイズだらけになる
オプションのサウンドバッファサイズを小さくすると発生します。
サウンドバッファサイズの下限はドライバによって異なります。
- 画面表示が狂っている
VDP2の制限事項に抵触しているソフトの可能性があります。
Check Cycle PatternやVDP2 RAM Revision Accessにチェックを入れてみてください。
- 遅い
SSは複雑なハードのためPSのように簡単にはエミュレートできません。
特にスプライトに関してはDirect3Dでは再現できません。
ねじれた四角形ポリゴンが現在のグラフィックスカードで簡単に描画できますか？
SSFはPC上でサターンというハードを完全再現するのが最終目標であり、実機より高解像度,綺麗な画面で遊べるようにすることは考えていません。
と言いつつ、メッシュの半透明化などを実装していますが…