Repository navigation
MsxSoundSuiteExtension v0.5.0
利用条件
この ROM イメージは個人利用に限り許諾されています。
再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。
v0.4.3 からの変更点
Y8960 カートリッジのハードウェアの仕様変更に合わせた回です。カートリッジの音源は SSGS・OPLLEX・OPL2EX・SCC の4つになり(OPLLEX と OPL2EX の2回路目と DCSG が無くなりました)、SSGS のレジスタの配置が変わり、OPLLEX と OPL2EX にチャンネルごとの定位、ミキサーにブロックごとの音量が入りました。この版の ROM は新しい仕様のカートリッジ向けです。
変わったのは midi.rom 以外のすべてです。midi.rom は v0.4.3 とバイト単位で同じです。
既存のプログラムに影響しうるもの
Y8960 BASIC Extension(y8960bas.rom)
- デバイス番号が 0〜3 になりました。 0 が SSGS、1 が OPLLEX、2 が OPL2EX、3 が SCC です。
CALL MASSIGNで以前の 2(OPLLEX の2回路目)や 3(OPL2EX の1回路目)を指定していたプログラムは、エラーにならずに別の音源へ割り当たります。4〜7 はIllegal function callです。DCSG は無くなりました。 CALL MINITの引数が分解能だけになりました(CALL MINIT[(分解能)])。定位モードの引数は無くなりました。CALL MINIT(0, 2)のような2つの引数の形はSyntax errorになります。CALL MINIT(0)とCALL MINIT(1)はエラーにならず、分解能 0(約60Hz)と 1(約100Hz)として読まれます。CALL MIXERの引数が5つになり、音に効くようになりました(マスター、SSGS、OPLLEX、OPL2EX、SCC の順。各 0〜128 で、128 が最大)。CALL MINITの直後とCALL MEXITのあとは5つとも 128 です。- 定位
in の目盛りが 0〜255 になりました。 1 が左端、128 が中央、255 が右端で、0 も中央です。以前のi8(中央)は左寄りに、i0(左端)は中央に鳴ります。SSGS に加えて OPLLEX と OPL2EX にも効くようになりました。 @Vn の 1 が 0.75 dB になりました。Vn は以前と同じ 1段 3 dB で鳴りますが、@Vで書いた音量は鳴り方が変わります。V8にあたる値は、以前の@V71から@V99になりました。SSGS の@VはVとは別の、チャンネルごとの線形の音量(0〜128)になりました。CALL VOLUMEは、127 から下げたぶんだけ全チャンネルの音量を同じだけ下げるようになりました。 パートどうしの釣り合いは変わりません。MSTOPのフェードアウトも同じ規則で下げます。- SCC の
Vは表で SCC の音量に直して書くようになりました。V1〜V7は同じ音量で鳴ります。表を通さずに書くには、新しい@G0を使います。 - OPLLEX で、音色の移調が効くようになりました(不具合の修正)。プリセット64音色のうち42音色が移調を持っているので、OPLLEX で鳴らしていた曲は音色によって高さが変わります。
- OPL2EX で、接続が加算の音色では
Vがモジュレータにも効くようになりました(不具合の修正)。 (TC)n と(FINE)n の n に 0 を書くとIllegal function callになります。 n は 1〜255 です。Yで書く SSGS の第2セットのレジスタ番号が10H〜1DHになりました。 以前の20H〜2DHは、いまは SSGS のチャンネル音量と定位の番号です。- v0.4.3 以前に
CALL MSAVEで書き出したシーケンスは、そのままでは使えません。 音色や音量の形が変わったので、読み込めないか、違う音で鳴ります。MML からCALL MTRKし直して書き出してください。
MSX-MUSIC BASIC Extension V2・MSX-AUDIO BASIC Extension Lite・SFG BASIC Extension(単体版・カートリッジ版とも)
- PSG の
In の目盛りが 0〜255 になりました。 1 が左端、128 が中央、255 が右端で、0 も中央です。以前のI8(中央)は左寄りに鳴ります。 - カートリッジ版で
Yで書く SSGS の第2セットのレジスタ番号が20H〜2DHから10H〜1DHになりました。 ノイズ周期ならY$26,n はY$16,n になります。
MSX-MUSIC BASIC Extension V2(カートリッジ版のみ)
CALL MUSICが使うメモリが 15 バイト増えました(1240 → 1255 バイト)。SSGS のチャンネル音量と定位の控えのためです。単体版は 965 バイトのままです。
Makoto BASIC Extension
CALL MAKOTOが使うメモリが 44 バイト増えました(1399 → 1443 バイト)。音色配列に SSG-EG と AMS が加わったためです。
新しい機能
Y8960 BASIC Extension
- OPLLEX と OPL2EX のチャンネルごとの定位。
in とYで設定します。OPL2EX では ADPCM にも効きます。リズム音はチャンネル 6〜8 の定位で鳴ります。 - SSGS のチャンネル音量。
@Vn(0〜128)で設定し、Vと掛け合わせて効きます。 - リズム音用 MML の楽器ごとの音量
@B@S@M@C@H。Vは5つの楽器をまとめて変えます。 - リズム音用 MML の長さ
0と@Wn。 楽器を鳴らして時間を取らずに進み、あとで待てます。 - SCC の
@Gn。 音量を表で直すか(@G1、既定)、そのまま書くか(@G0)を選びます。 Yで書けるレジスタが増えました。SSGS のチャンネル音量(20H〜22H・24H〜26H)と定位(28H〜2AH・2CH〜2EH)、OPLLEX の定位(50H〜58H)、OPL2EX の定位(F6H〜FFH)です。
MSX-MUSIC BASIC Extension V2
- FM の
In で OPLLEX の定位を設定できます。 以前はIllegal function callでした。リズム音の文字列ではチャンネル 7〜9 の定位がまとめて変わります。YとCALL AUDREGでも50H〜58Hに書けます。Y8960 カートリッジが無い機械では何も起きません。 - カートリッジ版では、PSG の
Yで SSGS のチャンネル音量と定位を書けます。 単体版はこれらの番号と第2セットの番号を受け付けて何もしないので、カートリッジ版に向けて書いた MML がそのまま走ります。
MSX-AUDIO BASIC Extension Lite
- FM・PCM・リズムの文字列の
In で OPL2EX の定位を設定できます。 FM と PCM の文字列では、以前はIllegal function callでした。YとCALL AUDREGでもF6H〜FFHに書けます。MSX-AUDIO(Y8950)では書き込みが無視されます。
Makoto BASIC Extension
- Misato(YMF288 を載せた音源カートリッジ)に対応しました。
CALL MAKOTOが見分けます。Misato には ADPCM が無いので、CALL SET PCM・CALL COPY PCM、CALL MAKOTOのモード bit1、CALL AUDREGの100H〜10FHはIllegal function callになります。MML のYの100H〜10FHはエラーにせず何もしないので、同じ MML を Makoto でも Misato でも鳴らせます。 - 音色配列に SSG-EG と AMS を加えました。 N88-BASIC(86) 用に作った音色配列はそのまま使えます。
文書の訂正
- Y8960 BASIC Extension のリファレンスの
CALL VOICE COPYの例で、移調の添字が誤っていました。正しくはA%(4)です。 - MSX-AUDIO BASIC Extension Lite のリファレンスで、PCM 音源用の文字列の
Yを「無視される」としていました。実際は Y8950 のレジスタに書き込みます。
拡張BASICやアプリケーションを作る方へ
- Y8960 Sequencer BIOS の ABI バージョンが 6 になりました。
SQINITはDを読まなくなりました。SQMIXは5バイト(マスターと4つのブロック、各 0〜128)を取り、音に効くようになりました。SQVOLはCALL VOLUMEと同じ規則で音量を下げます(sequencer-bios.md)。 - シーケンスのバイト列を「Y8SQ 形式」として定め直しました(
bytecode.md)。デバイス番号、音量の目盛り、FM 音色のレコード(12 バイトのレジスタイメージ)、定位のイベントなどが変わり、Y8960 が鳴らさない OPL3・OPM・OPNA・OPNB も表せるようになりました。ブロックの版は01のままですが、v0.4.3 以前のブロックとの互換はありません。 - カートリッジのレジスタの配置は
hardware.mdにあります。I/O Enabler 2 の SSG のビットは bit1 になりました。
仕様の詳細は各リファレンス(Y8960・MSX-MUSIC・MSX-AUDIO・SFG・Makoto)にあります。
収録物
| ファイル | サイズ | 用途 |
|---|---|---|
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/ を参照してください。