Skip to content

MsxSoundSuiteExtension v0.5.1

Choose a tag to compare

@madscient madscient released this 21 Oct 15:55
· 23 commits to master since this release

利用条件

この 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/O 7EH/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/ を参照して
ください。