Skip to content

MsxSoundSuiteExtension v0.3.1

Choose a tag to compare

@madscient madscient released this 14 Sep 23:53
· 52 commits to master since this release

利用条件

この 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)

  • MSTART MPAUSE MMUTE MSTOP のビットマップ化(上記)。
  • **CALL MSIZE(0,S) のあとの文が Syntax error になることがあったのを
    直しました。**倍精度変数で値を受ける文のあとで起き、曲によって出たり
    出なかったりしました。
  • リファレンスに「データの保存と読み込み」の章を足しました。シーケンス・
    FM音色・SCC波形・ADPCM データを、配列変数か VRAM を経由してファイルに
    保存する手順です(MSX1 の手順を含みます)。
  • MPLAY で1回に鳴らせる量の上限(演奏データと音色・波形の写しを合わせて
    2KB)をリファレンスに書きました。

Y8960 Sequencer BIOS(アプリケーション開発者向け)

  • ABI バージョンが 2 になりました。SQSTRT SQPAUS SQSTOP SQMUTE
    の 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/ を参照して
ください。