Repository navigation
MsxSoundSuiteExtension v0.3.1
利用条件
この ROM イメージは個人利用に限り許諾されています。
再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。
v0.3.0 からの変更点
注意:MSTART MPAUSE MMUTE MSTOP のシーケンスの指定が変わりました(Y8960)
Y8960 BASIC Extension の4つの文の第1引数が、シーケンス番号(0〜3)から
**ビットマップ(1〜15)**になりました。bit0 がシーケンス0、bit3 がシーケンス3
です。
| 書き方 | v0.3.0 | v0.3.1 |
|---|---|---|
CALL MSTART(0) |
シーケンス0 | Illegal function call |
CALL MSTART(1) |
シーケンス1 | シーケンス0 |
CALL MSTART(&B0101) |
— | シーケンス0と2を同時に |
**v0.3.0 向けに書いたプログラムは書き換えが必要です。**シーケンス n は
2^n(&B0001 &B0010 &B0100 &B1000)で指定してください。
指定したシーケンスは同時に操作され、1つでもエラーの条件に当たると、どの
シーケンスも変わりません。MSTAT や VOLUME などほかの文は番号のままです。
MSX-MUSIC・MSX-AUDIO・SFG・MIDI Play に共通
- 1つの
PLAY文に+や関数で作った文字列を並べると、前の文字列が後ろの
文字列の中身に化けることがあったのを直しました。
(MSX BASIC本体のPLAY文からある不具合)
PLAY#2, "C4"+T$, "D4"+T$の1本目も書いたとおりに鳴ります。 - そのかわり、
+や関数で作った文字列は1つのPLAY文で10本までに
なりました。11本目でString formula too complexです。文字列定数と
文字列変数は数に入りません。多く並べるときは先に変数へ入れてください。 PLAYの文字列を評価している途中でエラー(1/0など)になったあと、次の
PLAYが戻らなくなることがあったのを直しました。- 長さ 0 の音符のあとに
@Wを書くとエラーになっていたのを直しました。
C0@W8D4が通ります(MIDI Play と、MSX-MUSIC・MSX-AUDIO・SFG の FM
チャンネル)。
MSX-MUSIC・MSX-AUDIO・SFG に共通
- PSG チャンネルの
@n(0〜127)で、トーン/ノイズの切り替えとハードウェア
エンベロープを選べるようになりました。@96でノイズのみ、@64でトーン+
ノイズです。これまで PSG チャンネルの@0〜@63は受け付けて無視していた
ので、**PSG チャンネルに@nを書いていた MML は鳴り方が変わることが
あります。**FM チャンネルの@nは変わりません。 - ポルタメント
~と到達点の音符の間に置けるものを決めました。
O<>Lなど音を出さない命令は置けるので、C4~>C4のように
オクターブをまたげます。休符・@W・&や音源に働きかける命令を間に置くと、
Illegal function callになります。これまではエラーにならず、演奏が
終わらなくなったりスライドが消えたりしていました。置ける命令は拡張BASIC
ごとに少し違うので、各リファレンスの「ポルタメント」を参照してください。 - PSG チャンネルで長さ 0 の音符をポルタメントの始点にするとエラーに
なっていたのを直しました。C0~E4が通ります。
MSX-MUSIC BASIC Extension V2(mmbe.rom)
CALL MUSICが確保するメモリをリファレンスで 825 バイトに訂正しました
(v0.3.0 のリファレンスは 822 バイトのままでした)。- Y8960 カートリッジ(
y8960bas.rom)上では、FM-BIOS を割り込みから
呼んでいる間、この拡張BASIC のCALLステートメントを実行できません。
FM-BIOS の自動演奏を割り込みで進めているプログラムがこれに当たり、実行すると
暴走します。単体版のmmbe.romにこの制限はありません。
MSX-AUDIO BASIC Extension Lite(mabel.rom)
- ポルタメントの
~と到達点の音符の間にTは置けません(V2 では置けます)。 - リファレンスの「
#の無いPLAYは BASIC 標準の PSG PLAY として実行される」
という記述は誤りでした。CALL AUDIOのあとは、#の無いPLAYも
PLAY#0,として拡張BASIC が解釈します。
MIDI Play BASIC Extension(midi.rom)
- **曲の途中に
@n・@C・Zを書くと、その後ろの音が遅れていたのを
直しました。**送るバイト数だけ演奏が遅れて累積していました。
Y8960 BASIC Extension(y8960bas.rom)
MSTARTMPAUSEMMUTEMSTOPのビットマップ化(上記)。- **
CALL MSIZE(0,S)のあとの文がSyntax errorになることがあったのを
直しました。**倍精度変数で値を受ける文のあとで起き、曲によって出たり
出なかったりしました。 - リファレンスに「データの保存と読み込み」の章を足しました。シーケンス・
FM音色・SCC波形・ADPCM データを、配列変数か VRAM を経由してファイルに
保存する手順です(MSX1 の手順を含みます)。 MPLAYで1回に鳴らせる量の上限(演奏データと音色・波形の写しを合わせて
2KB)をリファレンスに書きました。
Y8960 Sequencer BIOS(アプリケーション開発者向け)
- ABI バージョンが 2 になりました。
SQSTRTSQPAUSSQSTOPSQMUTE
のAがシーケンスのビットマップになります(01hがシーケンス0)。ほかの
エントリのAはシーケンス番号のままです。
MSX Sound Suite 統合インターフェース(ROM 開発者向け)
- ID 0(MSX-MUSIC BASIC Extension V2)が、FM-BIOS の本体をバンク #5 の
7800h〜7FDFhに置くようになりました。 - 起動時、ID 0 のカートリッジ INIT がページ2 に #5 を出します(BANK2 の
4FFEhに書く)。スロットスキャンが #2 のヘッダを拾わないようにするためです。 - 詳細は
y8960/msse-abi.md
を参照してください。
収録物
| ファイル | サイズ | 用途 |
|---|---|---|
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 インターフェースを鳴らす単体カートリッジ用 |
下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身は
ドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは
含まれません(バイナリの配布のみが許諾されているため)。
zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録した
MANIFEST.txt が入っています。
ステートメントと MML の仕様は docs/ を参照して
ください。