Skip to content

Instantly share code, notes, and snippets.

@GOROman
Created August 31, 2026 01:05
Show Gist options
  • Select an option

  • Save GOROman/0ddb68dccf6859461256e4ed6246ce0f to your computer and use it in GitHub Desktop.

Select an option

Save GOROman/0ddb68dccf6859461256e4ed6246ce0f to your computer and use it in GitHub Desktop.
PS1 BIOS Audio Ripper SX Burst compression sweep 2026-08-31

PS1 BIOS Audio Ripper SX Burst — compression sweep

測定日: 2026-08-31

結論

現行の独立ブロック + fixed-Deflate 構成では、32 KiB ブロック / match-chain 192 が最小だった。

  • SX表示サイズ: 292,489 bytes
  • 入力: 524,288 bytes
  • 200,000 bytes目標との差: +92,489 bytes(約31.6%)
  • したがって、ブロックサイズと探索深さの調整だけでは200 KBには届かない

16 KiBの現行基準値は297,729 bytesで、32 KiB / chain 192への改善は5,240 bytes(約1.8%)だった。

ベンチマーク結果

chain は fixed-Deflate の一致検索深さ。SX は各PS1実行ファイルをDuckStationで動かし、画面に表示されたコンテナ格納サイズ。DFL/LZS/RAW はブロックごとのcodec選択数。

コンテナブロック chain SX ブロック数 DFL/LZS/RAW 画面表示率
4 KiB 96 314,551 128 127/0/1 59%
8 KiB 96 304,380 64 64/0/0 58%
16 KiB 24 298,752 32 32/0/0 56%
16 KiB 96 297,729 32 32/0/0 56%
16 KiB 192 297,555 32 32/0/0 56%
32 KiB 24 294,015 16 16/0/0 56%
32 KiB 96 292,768 16 16/0/0 55%
32 KiB 192 292,489 16 16/0/0 55%

実行条件

  • Mac Studio上でDocker版PSn00bSDKツールチェーンを使用
  • luksamuk/psxtoolchain:latest
  • 24 physical / 32 logical CPU
  • ブロックサイズ4条件を並列投入。chain sweepは6条件を並列投入し、各ビルドは-j24
  • 16 KiB / chain 24だけGCC内部エラーが出たため、同じ設定を-j1で再ビルドして測定
  • 生成した各CUEを、ローカルMacのDuckStation実行ファイルへ直接渡して確認
  • 圧縮・コンテナ比較中はwire V6のステレオOFDM、16QAM、96 carriers、FEC 16+6、FSKなしを維持

解釈

4 KiBはブロック境界のリセットが多く、8 KiBも16 KiBより大きかった。16 KiB / chain 96から32 KiB / chain 192にすると、実測で5,240 bytes縮む。一方、chainを96から192に増やした効果は16 KiBで174 bytes、32 KiBで279 bytesにとどまる。

ヘッダだけの差は、16 KiBの32ブロックから32 KiBの16ブロックにして256 bytes減るだけ。主な差は、ブロックごとの圧縮履歴リセットとfixed Huffmanの表現力であり、探索深さを増やすだけでは大幅な短縮にならない。

なお、画面に表示されるBLOCK SIZE 32 KiBはOFDM送信側のtransport chunkであり、表の「コンテナブロック」とは別の設定である。

検証範囲

  • 確認済み: Mac StudioでのPS1ビルド、各バリアントのDuckStation実行、画面上のcodec選択数・SX格納サイズ
  • エミュレーターのみ: DuckStation上の結果であり、実機のSPU音声出力・CD-R・録音機器を通した受信ではない
  • 未検証: 物理PlayStationからの音声キャプチャ、実機での転送時間、実機受信成功率
  • BIOS本体、復元ダンプ、鍵、CRCは保存・公開していない

次の候補

200 KBを狙うには、32 KiB境界の微調整ではなく、dynamic Huffmanと、独立ブロック復旧要件を見直した連続Deflate履歴の比較が必要。これは復旧単位とwire/container versionに影響するため、現行decoder互換を保った別バージョンの実験として扱う。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment