Skip to content

SSG Extend ja

ToughkidDEV edited this page Oct 15, 2026 · 1 revision

SCC/SCC+ SSG拡張とPCMInvert

4つの実行ファイルを同じ版で揃え、旧セッションを解放してから交換してください。

#SSGExtend OnはmucomDotNETの仮想SSG波形をSCCまたはSCC+で近似演奏します。実YM2608に任意波形機能を追加するものではありません。接頭辞のないD/E/Fのトーンを1–3チャンネルへ送り、ノイズはMAKOTOに残します。MSXD/E/Fは内蔵PSGのままです。FM・リズム・ADPCMも変更しません。通常SCCの4/5チャンネル共有波形はこの3チャンネル経路では使いません。

#SSGExtendと#PCMInvertの既定値はOff。最初のソース窓の音楽行より前に記述します。On/Offは大小文字を区別せず、不正な値や音楽行の後に置いたタグはエラーです。

#SSGExtend On
D @0 @I8 v15 t180 o4 l8 cdefgab>c
E @0 @I9 v12 o3 l4 ceg>c

通常の@nはソフトウェアエンベロープ、@I/@Wは波形です。適切なエンベロープと音量を指定してください。

  • @I0–@I7: デューティ8/16–1/16のパルス波。@I8: 三角波。@I9: 鋸歯状波。
  • @W0–@W255: 64サンプルの定義を選択。独立した @Wn行の後に通常16値×4行を記述します。十進数は-128–127、16進数$00–$FFは符号付き8ビットです。完全な例を参照。隣接2サンプルの平均で32サンプルへ変換し、最後の同番号定義を採用します。後続ソースバンクとマクロ内選択に対応。未定義、値の範囲、サンプル数の不正はエラーです。選択ごとに32バイトをDATAへ格納し、波形専用マッパーバンクは追加しません。
  • peL,R: 左右各0–8。元の減衰曲線をモノ平均へ変換。pe0,0は無音、pe8,8は最大。
  • p1/p2: 半音量モノ、p3: 全音量モノ。p4–p6は半音量モノ固定で、左右移動は再現しません。省略可能な待ち引数も読み取ります。Offでは従来のSSG pのノイズ指定を維持します。

これらはOnのD/E/F専用です。不正なパート・引数は拒否します。

SCC+はモノ、32サンプル、線形4ビット音量です。弱いSSG音量は量子化により無音になることがあります。ソフトウェアエンベロープ・音程LFO・ポルタメントの結果をSCC周期/音量へ変換し、極端な高音は最小周期へ制限します。S/mのハードウェアエンベロープはMAKOTOの矩形波/ノイズへ戻し、その間は選択したSCC波形を使用しません。中間pe減衰は再現せず完全ミュートのみ対応します。演奏/出力開始時に近似方式を表示します。PCの仮想SSGとの完全一致ではありません。ページの所有権切替時は波形・ゲインを復元しますが、物理チャンネル数は増えません。

ハードウェアはMAKOTOとSCCまたはSCC+。BIOSが列挙する基本スロット0–3と拡張サブスロット0–3を検索し、全SCC+候補を優先して、なければSCCへ切り替えます。MegaFlashROM SCC+ SDのSCC+は内部サブスロット1です。DOS登録RAMマッパーを事前に除外し、8000h/A000hを元に戻せる2パターン検査してから波形RAMを検査・復元します。BIOS inter-slotアクセスで実行中のバンクを保護し、変形レジスターは読みません。任意の特殊周辺機器の書き込み副作用まで保証する検査ではありません。両方見つからなければ演奏を中止。VGM出力に実SCCは不要です。終了時は5チャンネルを消音し、SCCは9000h=2、SCC+はB000h=3、その後BFFFh=0へ戻します。任意の以前の状態までは復元しないためSCC常駐ソフトと併用しないでください。MUCVOICEも両チップに対応し、建盤のスロット入力255は自動検索、既知のBIOS IDは手動選択です。

最低マッパーは512 KiBのまま。既存ネイティブドライバーの16 KiBバンクにコードとローダーキャッシュを配置し、追加バンクはありません。入力・編集・120 KiB DATAの上限も維持します。ただし全ての最大容量セッションの同時確保を保証する意味ではありません。

ファイル形式

従来のMUB8/muPb0100選択とmsPb0100は維持。SSG拡張のみmsPb0101を使用します。byte 26のbit 0はネイティブMSXパート、bit 1はSCC系SSG。許可値は2または3で、byte 27–33は0。未知のフラグ/版は拒否します。このMUCOMSX専用領域を元のmuPbのジャンプ情報と混同しないでください。旧プレイヤーやPCのmuPbプレイヤーでの再生互換性はありません。

SSG DATAはFF ED n(プリセット0–9)、FF ED FF+32バイト(波形)、FF EE gain(モノ0–255)。0101のD/E/Fだけで有効です。既存のページディレクトリーとDATA構造を再利用し、MUC2MUBとMUCPLAY/MUCEDIT exportは同じライターを使います。

同じmsPb0101 MUBを両チップで使用でき、SCC対応のためにDATAや版を変更しません。byte 26 bit 1はSCC系SSGを表します。VGMは1.61、1,789,773Hz、SCC+専用フラグなし、共通SCC波形ポート0のD2を用います。VGMPlay MSXでSCC/SCC+のどちらも選択できるよう、以前の開発版のポート4出力から変更しました。OPNAノイズ/ハードウェアエンベロープも記録します。5つの独立SCC+波形を通常SCCで再現する意味ではありません。

PCMInvert

#PCMInvert OnはK/ADPCMの相対オクターブ>/<だけをコンパイル時に反転します。K o4 c > d < eはOffのK o4 c < d > eと同じ音符です。絶対o、他パート、PCMサンプル自体は変更しません。今回の作業で#invertタグを別途実装したわけではありません。演奏時の追加処理はなく、PCMInvertだけでは0101を強制しません。

MUCEDITは同じ版のMUCPLAYと既存ブリッジで連携し、読込→コンパイル→演奏→EXPMUB→EXPVGMを使います。実行ファイル交換前に旧セッションを解放してください。

Clone this wiki locally