Repository navigation
MsxSoundSuiteExtension v0.5.1
利用条件
この ROM イメージは個人利用に限り許諾されています。
再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。
v0.5.0 からの変更点
Y8960 カートリッジ v0.9.3 に対応しました。カートリッジの音源は SSGS・OPLLEX・OPL2EX・SCC・OPM の5つになり、SCC にチャンネルごとの定位、ミキサーに OPM の音量が入りました。この版の ROM を実行するには Y8960 カートリッジ v0.9.3 以上が必要です。
カートリッジ版の SFG BASIC Extension は、カートリッジ内蔵の OPM を鳴らす OPM BASIC Extension(CALL OPM)に置き換わりました。 SFG-01/05 を鳴らすのは単体版の sfg.rom です。
変わったのは makoto.rom 以外のすべてです。makoto.rom は v0.5.0 とバイト単位で同じです。midi.rom は ROM に記録された版の日付だけが変わりました。
既存のプログラムに影響しうるもの
Y8960 カートリッジ(y8960bas.rom)の拡張BASIC すべて
CALL SFGが無くなり、CALL OPMになりました。 カートリッジの拡張BASIC はどれもCALL SFGを受け付けません。切り替えの先は SFG-01/05 ではなく、カートリッジ内蔵の OPM を鳴らす OPM BASIC Extension です。CALL MIXERの引数が6つになりました(マスター、SSGS、OPLLEX、OPL2EX、SCC、OPM の順。各 0〜128)。6つとも省略できません。- ミキサーは、表に出る拡張BASIC が替わると6つとも 128 に戻るようになりました。 電源投入時(リセットを伴わない再起動を含む)と、
CALL MUSICなどで切り替えたときです。MIDI Play BASIC Extension に切り替えたときだけは値が残ります。Y8960 BASIC Extension のCALL MINITとCALL MEXITはミキサーに触らなくなりました(以前はMINITの直後とMEXITのあとに 128 に戻していました)。
MSX-MUSIC BASIC Extension V2・MSX-AUDIO BASIC Extension Lite・OPM BASIC Extension(カートリッジ版)
- PSG チャンネルの
@Vn が SSGS のチャンネル音量を書くようになりました(0〜128、128 が最大)。以前は無視されていました。Vとは別の音量で、実際の音量は2つを掛けたものです。FM と同じ文字列を PSG にも渡していると、FM 向けの値で SSGS の音量が変わります。CALL MUSIC・CALL AUDIO・CALL OPMが 128 にします。
OPM BASIC Extension
- プリセット音色がありません。
@0〜@47はIllegal function callになります。CALL OPMは全チャンネルに既定の音色(サイン波1つ)を入れます。ほかの音色はCALL VOICE COPYで配列からユーザー音色(@48〜@79)へ作ります。 CALL OPMが使うメモリは 1441 バイトです。 v0.5.0 のカートリッジ版CALL SFGより 15 バイト多く、SSGS のチャンネル音量と定位の控えのためです。
MSX-AUDIO BASIC Extension Lite(カートリッジ版のみ)
CALL AUDIOが使うメモリが 15 バイト増えました(1313 → 1328 バイト)。SSGS のチャンネル音量と定位の控えのためです。単体版は 2051 バイトのままです。
新しい機能
Y8960 BASIC Extension
- OPM をデバイス 4 として鳴らせます(チャンネル 0〜7)。
@Vの 1 が 0.75 dB です。定位in は、1〜64 が左だけ、65〜191 が両方、192〜255 が右だけに丸められます。音色はVOICE COPYで作った 128〜191 を OPM の音色データ(32 バイト)として読みます。プリセット 0〜63 は64番とも同じ音色(正弦波1つ)です。Yで OPM のレジスタに書けます(14Hを除く)。 - SCC のチャンネルごとの定位。
in が SCC にも効くようになりました。以前は何も起きませんでした。CALL MINITが中央にします。
MSX-MUSIC BASIC Extension V2・MSX-AUDIO BASIC Extension Lite・OPM BASIC Extension(カートリッジ版)
CALL MIXERで、カートリッジのミキサーの6つの音量を設定できます。初期化の文(CALL MUSICなど)の前でも使えます。
MSX-AUDIO BASIC Extension Lite・OPM BASIC Extension(カートリッジ版)
- PSG の
Yで SSGS のチャンネル音量(20H〜22H・24H〜26H)と定位(28H〜2AH・2CH〜2EH)を書けます。 MSX-MUSIC BASIC Extension V2 と同じ番号です。
単体版(mmbe.rom・mabel.rom・sfg.rom)
- PSG チャンネルの
@V(0〜128)と、Yの SSGS の番号(10H〜1DH・20H〜2EH)を受け付けて何もしません。カートリッジ版に向けて書いた MML がそのまま走ります。
文書の訂正
- 定位の
I0/i0を「中央」としていました(v0.5.0 のリリースノートも同じです)。0 はカートリッジの仕様に定めの無い値で、ROM はそのままレジスタに書くので、鳴り方は保証しません。いまのカートリッジでは左端で鳴ります。中央は 128 です。 - Y8960 BASIC Extension のリファレンスで、
CALL SFGとCALL MIDIは MSX-MUSIC BASIC Extension V2 と MSX-AUDIO BASIC Extension Lite からは使えないとしていました。実際はどの拡張BASIC からでも切り替えられます。 - MSX-AUDIO BASIC Extension Lite の「MSX-MUSIC BASIC Extension V2 との差分」で、V2 が使うメモリを 837 バイト(カートリッジ版 1112 バイト)としていました。正しくは 965 バイト(カートリッジ版 1255 バイト)です。
拡張BASICやアプリケーションを作る方へ
- Y8960 Sequencer BIOS の ABI バージョンが 8 になりました。
SQMIXは6バイト(マスターと5つのブロック。OPM が最後)を取り、SQINITの前でも呼べます。SQINITとSQEXITはミキサーに触りません。ID 0〜3 の ROM をアタッチすると6つとも 128 に戻るので、設定は Y8960 BASIC Extension をアタッチした後に行います(sequencer-bios.md)。 - Y8SQ 形式で、OPM のデバイス番号が 9 から 4 になりました(
bytecode.md)。9 は割り当ての無い番号です。Y8960 BASIC Extension はデバイス 4 のトラックと、デバイス 4 の音色のチャンク40を読みます。パンポット87は SCC にも効き、0 の意味は定めません。 - MSX Sound Suite の取り決めに Digital Mixer が入りました(
msse-abi.md)。カートリッジの音源を鳴らす ROM は、表に出た時点でミキサーの6つを 128 にします。ID 3 は OPM BASIC Extension になりました。 - カートリッジのレジスタの配置は
hardware.mdにあります。OPM は I/O7EH/7FH、ミキサーの OPM の音量は7FFDH、I/O Enabler 2 の OPM のビットは bit2、SCC の定位は SCC のレジスタの窓の+100H〜+104Hです。OPM は SFG-01/05 とは互換がありません。
仕様の詳細は各リファレンス(Y8960・MSX-MUSIC・MSX-AUDIO・SFG / OPM)にあります。
収録物
| ファイル | サイズ | 用途 |
|---|---|---|
y8960bas.rom |
128KB | Y8960 カートリッジ用。5つの拡張BASICをすべて収めたイメージ |
mmbe.rom |
16KB | MSX-MUSIC 単体用。本体内蔵 MSX-MUSIC の差し替え、または ROM カートリッジ |
mabel.rom |
16KB | MSX-AUDIO(Y8950)単体カートリッジ用 |
sfg.rom |
16KB | SFG-01/05 と併用する単体カートリッジ用 |
midi.rom |
16KB | MIDI インターフェースを鳴らす単体カートリッジ用 |
makoto.rom |
16KB | Makoto(YM2608)・Misato(YMF288)単体カートリッジ用。y8960bas.rom には含まれない |
下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身は
ドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは
含まれません(バイナリの配布のみが許諾されているため)。
zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録した
MANIFEST.txt が入っています。
ステートメントと MML の仕様は docs/ を参照して
ください。