Skip to content

Releases: madscient/MsxSoundSuiteExtension

MsxSoundSuiteExtension v0.5.2

Choose a tag to compare

@madscient madscient released this 27 Oct 03:39

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.5.1 からの変更点

Y8960 カートリッジ v0.9.4 に対応しました。v0.9.4 で読めるようになった I/O Enabler 2(7FFFH)を使い、カートリッジの OPL2EX を電源投入時から MSX-AUDIO のポートに出します。この版の y8960bas.rom を実行するには Y8960 カートリッジ v0.9.4 以上が必要です。

変わったのは y8960bas.rom だけです。mmbe.rom・mabel.rom・sfg.rom は ROM に記録された版の日付だけが変わりました。midi.rom と makoto.rom は v0.5.1 とバイト単位で同じです。

既存のプログラムに影響しうるもの

Y8960 カートリッジ(y8960bas.rom)

  • OPL2EX が、電源投入時から MSX-AUDIO のポート(C0H/C1H)に応答するようになりました。 カートリッジの起動時(リセットを伴わない再起動を含む)に、そのポートに応答する音源がほかに無ければ OPL2EX を出し、以後はどの拡張BASIC が表に出ていても出したままにします。以前は、MSX-AUDIO BASIC Extension Lite か、CALL MINIT の後の Y8960 BASIC Extension が使っている間だけ応答していました。MSX-AUDIO のポートを直接使うプログラムは、拡張BASIC を通さずに OPL2EX を MSX-AUDIO として鳴らせます。
  • MSX-AUDIO のカートリッジとは併用できません。 起動時に MSX-AUDIO のポートに応答する音源があると、OPL2EX はポートに出ません。そのときカートリッジ版の CALL AUDIO と、Y8960 BASIC Extension のデバイス 2(OPL2EX)が書いたものは、その音源に届きます。

拡張BASICやアプリケーションを作る方へ

  • MSX Sound Suite の取り決めで、I/O Enabler 2 の bit0(OPL2EX)の扱いが変わりました(msse-abi.md)。開けるかどうかを決めるのは ID 0(MSX-MUSIC BASIC Extension V2)のカートリッジ INIT だけです。ほかの ROM は 7FFFH を書く前に読み、bit0 を読んだまま書き戻します。表に出るときも、明け渡すときも、bit0 は変えません。
  • Y8960 Sequencer BIOS の SQINIT と SQEXIT は、OPL2EX のポートに触らなくなりました(sequencer-bios.md)。
  • 7FFFH が読めるようになりました(hardware.md)。読めるのは 7FFFH だけで、ほかの Memory Mapped I/O は書き込み専用のままです。使っていないビット(bit3〜6)が何で読めるかは未確定です。

仕様の詳細は各リファレンス(Y8960・MSX-MUSIC)にあります。

収録物

ファイル サイズ 用途
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/ を参照して
ください。


Terms of use

These ROM images are licensed for personal use only.

Redistribution requires separate permission from MSX Licensing Corporation.
See the included NOTICE.md (in Japanese) for details.

Changes since v0.5.1

Supports Y8960 cartridge v0.9.4. Using I/O Enabler 2 (7FFFH), which became readable in v0.9.4, the cartridge's OPL2EX is exposed on the MSX-AUDIO ports from power-on. The y8960bas.rom of this release requires Y8960 cartridge v0.9.4 or later.

Only y8960bas.rom has changed. In mmbe.rom, mabel.rom and sfg.rom, only the version date recorded in the ROM has changed. midi.rom and makoto.rom are byte-for-byte identical to v0.5.1.

Changes that may affect existing programs

Y8960 cartridge (y8960bas.rom)

  • OPL2EX now responds on the MSX-AUDIO ports (C0H/C1H) from power-on. When the cartridge starts up (including a restart without reset), if no other sound chip responds on those ports, OPL2EX is exposed there and stays exposed regardless of which BASIC extension is active. Previously it responded only while MSX-AUDIO BASIC Extension Lite was in use, or while Y8960 BASIC Extension was in use after CALL MINIT. Programs that access the MSX-AUDIO ports directly can now play OPL2EX as an MSX-AUDIO without going through a BASIC extension.
  • It cannot be used together with an MSX-AUDIO cartridge. If a sound chip responds on the MSX-AUDIO ports at startup, OPL2EX is not exposed on them. In that case, the cartridge's CALL AUDIO and whatever Y8960 BASIC Extension writes to device 2 (OPL2EX) go to that sound chip.

For authors of BASIC extensions and applications

  • The MSX Sound Suite convention for bit0 (OPL2EX) of I/O Enabler 2 has changed (msse-abi.md, in Japanese). Only the cartridge INIT of ID 0 (MSX-MUSIC BASIC Extension V2) decides whether to open it. Other ROMs read 7FFFH before writing it and write bit0 back as read. They do not change bit0 when becoming active or when handing over.
  • SQINIT and SQEXIT of Y8960 Sequencer BIOS no longer touch the OPL2EX ports (sequencer-bios.md, in Japanese).
  • 7FFFH is now readable (hardware.md, in Japanese). Only 7FFFH is readable; the other memory-mapped I/O remains write-only. What the unused bits (bit3 to bit6) read as is not yet defined.

See each reference (Y8960, MSX-MUSIC, in Japanese) for the detailed specifications.

Contents

File Size Purpose
y8960bas.rom 128KB For the Y8960 cartridge. Contains all five BASIC extensions
mmbe.rom 16KB Standalone MSX-MUSIC. Replaces the built-in MSX-MUSIC of a computer, or runs as a ROM cartridge
mabel.rom 16KB Standalone cartridge for MSX-AUDIO (Y8950)
sfg.rom 16KB Standalone cartridge used together with an SFG-01/05
midi.rom 16KB Standalone cartridge that drives a MIDI interface
makoto.rom 16KB Standalone cartridge for Makoto (YM2608) and Misato (YMF288). Not included in y8960bas.rom

The "Source code (zip / tar.gz)" files below are added automatically by GitHub and
contain only the documentation and build scripts. They do not contain the source
code of the BASIC extensions (only distribution of the binaries is permitted).

The zip contains the documentation and MANIFEST.txt, which records the commit
each ROM was built from and its SHA256.

See docs/ (in Japanese)
for the specifications of the statements and MML.

MsxSoundSuiteExtension v0.5.1

Choose a tag to compare

@madscient madscient released this 21 Oct 15:55

利用条件

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

MsxSoundSuiteExtension v0.5.0

Choose a tag to compare

@madscient madscient released this 17 Oct 19:37

利用条件

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

MsxSoundSuiteExtension v0.4.3

Choose a tag to compare

@madscient madscient released this 28 Sep 18:59

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.4.2 からの変更点

ユーザ音色を増やした回です。変わったのは MSX-MUSIC BASIC Extension V2(mmbe.rom)、MSX-AUDIO BASIC Extension Lite(mabel.rom)、SFG BASIC Extension(sfg.rom)と、これらを収めた y8960bas.rom です。midi.rom・makoto.rom は ROM に書かれた日付だけが変わり、中身は v0.4.2 と同じです。

既存のプログラムに影響しうるもの

単体版 mabel.rom の CALL AUDIO が使うメモリが 1024 バイト増えました(1027 → 2051 バイト)。ユーザ音色 64〜95 を本体の RAM に置くためです。空きメモリがぎりぎりのプログラムは Out of memory になることがあります。Y8960 カートリッジ版はユーザ音色をカートリッジの RAM に置くので、増えたのは 32 バイトです(1281 → 1313 バイト)。

CALL MUSIC が使うメモリが 128 バイト増えました(837 → 965 バイト、Y8960 カートリッジ版は 1112 → 1240 バイト)。

新しい機能

MSX-MUSIC BASIC Extension V2(単体版・カートリッジ版とも)

  • ユーザ音色 @64・@80・@96・@112。 @63 と合わせて5つの音色を CALL VOICE COPY で書き込んでおき、MML の @n や CALL VOICE で切り替えられます。以前は Illegal function call になっていた番号です。同時に鳴らせるユーザ音色は従来どおり1つです。
  • CALL VOICE MODE。 * 印の15音色を OPLL の内蔵音色で鳴らすか(モード 0、従来どおり)、ライブラリに登録された音色パラメータで鳴らすか(モード 1)を切り替えます。モード 1 では * 印の音色も CALL VOICE COPY で取り出せます。

MSX-AUDIO BASIC Extension Lite(単体版・カートリッジ版とも)

  • ユーザ音色 64〜95。 FM の音色番号が 0〜95 になり、CALL VOICE COPY の転送先に 63〜95 を指定できます。64〜95 は CALL AUDIO のたびに Silence に戻ります。当時の MSX-AUDIO でユーザ音色 32〜62 を使っていたプログラムは、番号を 64〜94 へずらせば同じように使えます。

SFG BASIC Extension(Y8960 カートリッジ版のみ)

  • ユーザー音色が @48〜@79 の32個になりました。 カートリッジの RAM に置くので、CALL SFG が使うメモリは 640 バイト少ない 1426 バイトになりました。単体版 sfg.rom のユーザー音色は従来どおり @48〜@63 の16個です。

拡張BASICを作る方へ

Y8960 カートリッジのバンク RAM の使い方を msse-abi.md に定めました。バンク RAM はそのとき表に出ている拡張BASICが占有し、切り替えをまたいで中身を残すことは前提にできません。

仕様の詳細は各リファレンス(MSX-MUSIC・MSX-AUDIO・SFG)にあります。

収録物

ファイル サイズ 用途
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)単体カートリッジ用。y8960bas.rom には含まれない

下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身はドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは含まれません(バイナリの配布のみが許諾されているため)。

zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録したMANIFEST.txt が入っています。

ステートメントと MML の仕様は docs/ を参照してください。

MsxSoundSuiteExtension v0.4.2

Choose a tag to compare

@madscient madscient released this 28 Sep 01:18

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.4.1 からの変更点

変わったのは y8960bas.rom だけです。単体 ROM 5本(mmbe.rom・mabel.rom・sfg.rom・midi.rom・makoto.rom)は v0.4.1 とバイト単位で同じです。以下はすべて Y8960 BASIC Extension の変更です。

既存のプログラムの鳴り方が変わるもの

N が MSX-MUSIC BASIC Extension V2 と同じく N0 = O1C から数えるようになりました。 以前の N は1オクターブ低く鳴っていました(N36 が O3C)。いまは N36 が O4C です。範囲は 0-96 から 0-127 に広がりました。CALL MSAVE で保存したシーケンスデータは、読み戻すと保存したときと同じ高さで鳴ります。

オクターブが 0-9 になりました。 以前は 1-8 で、< は O1、> は O8 で止まっていました。いまは O0・O9 まで動きます。音源が出せる範囲の外でどう鳴るかは保証しません。

新しい機能

  • SSGS・SCC・DCSG のソフトウェアエンベロープ。 MuSICA と同じエンベロープを、MML の @En で選び、CALL ENV COPY で定義します。定義はシーケンスと一緒に CALL MSAVE で保存されます。
  • CALL MSAVE / CALL MLOAD がディスクのファイルと直接やり取りできるようになりました(保存先 2)。
  • CALL SAVE PCM / CALL LOAD PCM。 ボイスファイル1つを、MSX-AUDIO 拡張BASIC の CALL SAVE PCM と同じ形のファイルで読み書きします。MSX-AUDIO 側で保存したファイル(ADPCM)も読めます。
  • CALL MINIT 済みの状態でもう一度 CALL MINIT を実行できるようになりました。 以前は Illegal function call でした。演奏を止め、初期状態に戻してから新しい引数で初期化します。

不具合の修正

  • CALL MLOAD で読み戻したシーケンスを CALL MSAVE で保存し直すと、音色と波形の区別がファイル上で変わっていた問題を修正しました。 鳴り方には影響していませんでした。

仕様の詳細は Y8960 のリファレンスにあります。ファイルの形は pcmfile.md・bytecode.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 インターフェースを鳴らす単体カートリッジ用
makoto.rom 16KB Makoto(YM2608)単体カートリッジ用。y8960bas.rom には含まれない

下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身はドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは含まれません(バイナリの配布のみが許諾されているため)。

zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録したMANIFEST.txt が入っています。

ステートメントと MML の仕様は docs/ を参照してください。

MsxSoundSuiteExtension v0.4.1

Choose a tag to compare

@madscient madscient released this 26 Sep 02:56

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.4.0 からの変更点

midi.rom 以外の ROM はすべて中身が変わっています。midi.rom は v0.4.0 とバイト単位で同じです。

既存のプログラムの鳴り方が変わるもの

Makoto BASIC Extension(makoto.rom):PLAY#2 の PSG 用の文字列がYM2608 の SSG を鳴らすようになりました。
YM2608 の SSG(PSG 互換部)を PLAY 文から鳴らせるようにしたことに伴い、PLAY のモードの意味が次のようになりました。

モード v0.4.0 v0.4.1
#0 / 省略 本体の PSG 同じ
#1 Illegal function call SSG と本体の PSG
#2 FM・PCM・リズム・本体の PSG FM・PCM・リズム・SSG
#3 #2 と同じ FM・PCM・リズム・SSG・本体の PSG

SSG と本体の PSG は同じ MML で同じ高さに鳴ります。違うのは Y が書き込むチップと、M(エンベロープ周期)・Y6(ノイズ周期)の速さです(SSG のほうが約 1.12 倍速い)。PLAY#3 では SSG 用の3本が本体の PSG 用の3本の前に入るので、CALL PLAY のストリング番号も本体の PSG のぶんが3つ後ろへずれます。
CALL MAKOTO が確保するメモリは 1191 バイトから 1399 バイトになりました。

Y8960 BASIC Extension:C- と B+ がその1音だけ隣のオクターブで鳴るようになりました。
O4C- は O3B、O4B+ は O5C と同じ高さです。
以前は同じオクターブの中で折り返していました(O4C- が O4B)。

新しい機能

y8960bas.rom の MSX-MUSIC V2・MSX-AUDIO Lite・SFG で、SSGS の第2セットを鳴らせるようになりました。
Y8960 の SSGS は PSG と同じ形の音源を2セット持っています。これまで PLAY 文から鳴らせたのは第1セット(本体 PSG と同じチャンネル)だけでしたが、PLAY#1 と PLAY#3 で第2セットの3チャンネルが加わります。#0 と #2 の鳴り方は変わりません。単体 ROM(mmbe.rom・mabel.rom・sfg.rom)にはこの機能はありません。

モード 文字列の並び
#1 PSG 3 本、第2セット 3 本
#3 #2 の並びの後ろに第2セット 3 本

これに伴い、カートリッジ版の初期化が確保するメモリが増えました
(CALL MUSIC は 1112 バイト、CALL AUDIO は 1281 バイト)。

Makoto BASIC Extension:YM2608 の SSG 3声を PLAY 文から鳴らせるようになりました(上記)。

不具合の修正

  • Y8960 BASIC Extension:Q が 8 未満でも & で前の音符をつなぐようになりました。 & の前の音符は Q に関係なく音長いっぱい鳴り、Q は最後の音符にだけ効きます。数値を書かない ~ の前の音符も同じです。以前は Q で先に音が切れ、次の音符が鳴り直していました。
  • PLAY 文の文字列が多い構成で、PSG チャンネルのピッチベンド(P・@P)が PLAY 文を実行するたびに消えていた問題を修正しました。
    MSX-MUSIC V2・MSX-AUDIO Lite では文字列が 9 本以上、SFG では FM が 8 本の構成で起きていました。 MSX-AUDIO Lite ではこのとき、PSG の1本目にベンドがあると Illegal function call になることもありました。この修正で mmbe.rom の CALL MUSIC が確保するメモリは 825 バイトから 837 バイトになりました
  • Makoto BASIC Extension で、PSG チャンネルの音長 0 の音符のあとに、長さを書かない R が全休符になることがあった問題を修正しました
  • Y8960 BASIC Extension の CALL MINIT が、OPL2EX の波形選択を有効にするようになりました。 波形選択のレジスタ(E0h〜F5h)は、有効にしないと書いても効きません

仕様の詳細は各リファレンスにあります。

収録物

ファイル サイズ 用途
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)単体カートリッジ用。y8960bas.rom には含まれない

下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身は
ドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは
含まれません(バイナリの配布のみが許諾されているため)。

zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録した
MANIFEST.txt が入っています。

ステートメントと MML の仕様は docs/ を参照して
ください。

MsxSoundSuiteExtension v0.4.0

Choose a tag to compare

@madscient madscient released this 23 Sep 05:06

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.3.3 からの変更点

新しい単体 ROM が1本増えました。既存の ROM で中身が変わったのは
y8960bas.rom だけです。mabel.rom・sfg.rom・midi.rom は v0.3.3 と
バイト単位で同じ、mmbe.rom は ROM に焼かれた版の文字列の日付だけが
変わっています(機能は同じ)。

新しい ROM:Makoto BASIC Extension

Makoto(YM2608 を載せた MSX 用音源カートリッジ)のための拡張BASIC
makoto.rom を加えました。MSX-AUDIO BASIC Extension Lite と同じ
ステートメントと MML で、FM 6声・リズム 6音・ADPCM 1声を PLAY 文から
鳴らします。CALL MAKOTO が初期化です。

y8960bas.rom には含まれません。 Makoto カートリッジに挿す単体 ROM です。

仕様は docs/makoto/basic-reference.md、
MSX-AUDIO BASIC Extension Lite との違いは
docs/makoto/diff-from-lite.md
にあります。

不具合の修正

Y8960 BASIC Extension で、ループ再生時に一瞬遅延が発生する問題を修正しました。
この影響で、(DC) と (FINE) で周が終わるとき、鳴っている音を止めるのは
次の周の最初のコマンドになりました。音符も休符も鳴っている音を止めてから始まるので、
どちらで始まるトラックにも音は残りません。

@Wn だけは音を止めません。 周の頭が @Wn のトラックは、前の周の
最後の音を保ったまま次の周に入ります。以前は周の終わりで全トラックの音を
止めていたので、ここが変わります。繰り返しを使い切って演奏が終わるときは、
どのトラックも音が止まります。

OPLLEX のチップ内蔵音色の一覧を載せました

@65〜@127 で選べるチップ内蔵音色について、番号と音色名の対応表を
リファレンスに載せました(Y8960 BASIC Extension と MSX-MUSIC BASIC
Extension V2 の両方)。バンク0 が OPLL、バンク1 が OPLL-X、バンク2 が
OPLL-P、バンク3 が VRC7 です。

名称は "Copyright free OPLL(x) ROM patches"
(https://github.com/plgDavid/misc/wiki/Copyright-free-OPLL(x)-ROM-patches)
の表によるもので、その表との突き合わせで確認しています。鳴らして名前と音を
照合したものではありません。

収録物

ファイル サイズ 用途
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)単体カートリッジ用。y8960bas.rom には含まれない

下の「Source code (zip / tar.gz)」は GitHub が自動で付けるもので、中身は
ドキュメントとビルド用スクリプトだけです。拡張BASIC 本体のソースコードは
含まれません(バイナリの配布のみが許諾されているため)。

zip にはドキュメントと、各 ROM のビルド元コミットおよび SHA256 を記録した
MANIFEST.txt が入っています。

ステートメントと MML の仕様は docs/ を参照して
ください。

MsxSoundSuiteExtension v0.3.3

Choose a tag to compare

@madscient madscient released this 19 Sep 14:35

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.3.2 からの変更点

変更はすべて Y8960 BASIC Extension(y8960bas.rom)です。MSX-MUSIC・
MSX-AUDIO・SFG・MIDI Play の単体 ROM は v0.3.2 と同じです。

注意:@n を書かないトラックの鳴り方が変わりました

FM 音源(OPLLEX・OPL2EX)と SCC のトラックで、@n を書かずに音符を置くと、
最初の音符の時点で @0 と書いたのと同じに扱われるようになりました。

  • 音色を共有するチャンネルでは、鳴る音が変わることがあります。OPLLEX の
    ユーザー音色は 1 回路に 1 つ、SCC のチャンネル 3 と 4 は波形を共有します。
    これまでは @n を書かないトラックが、別のトラックの選んだ音色で鳴ることが
    ありました。いまはそのトラックも音色 0 を選びます。
  • そうしたトラックも、シーケンスの音色用の置き場所(1 シーケンス 32 種類まで)を
    1 つ使います。シーケンスは音色 1 つぶんの 36 バイトと、トラックごとに
    2 バイト大きくなります。

注意:ADPCM のボイスファイルが 64 個になりました

  • SET PCM の音声ファイル番号と、ADPCM チャンネルの @n が 0-63 に
    なりました。
  • EXPORT PCM のファイルは形式を変えずに、設定の件数が最大 64 件になりました。
  • Y8960 Sequencer BIOS の ABI バージョンが 4 になりました。 SQPTBR が
    書き込む表は最大 448 バイト(これまでは 224 バイト)になります。
    224 バイトの場所を渡しているアプリケーションは、場所を広げてください。

注意:これまで通っていた MML がエラーになります

仕様どおりに Illegal function call になるよう直しました。

  • ADPCM チャンネルの @64 以上(これまでは 65-191 が通り、演奏時に無視されて
    いました)
  • Y で、その音源に無いレジスタを指定したもの(これまでは演奏時に無視されて
    いました)。DCSG ではデータの 0-15 も確かめます
  • 長さ 0 の N のあと、時間を進めずに次の音符を置いたもの。英字の音符では
    これまでもエラーでした

(TC)/(CODA) と (DS)/(*) を別の MTRK に書けるようになりました

同じトラックの中なら、別の CALL MTRK に書いたものどうしでも対になります。
曲を何回かに分けて書いても、1 回で書いたときと同じに演奏されます。

  • (TC) はトラックの (CODA) へ飛びます。(CODA) が前にあっても後から
    書いても同じです。
  • (DS)n は、それより前に書いた同じ番号の (*)n のうち最後のものへ
    飛びます。
  • (CODA) は 1 トラックに 1 つです。MTRK を分けても 2 つ目はエラーです。

直したもの

  • ADPCM チャンネルで、置いたボイスファイルの音が鳴らなかったのを直しました。
  • (CODA) の無いトラックに (TC) を 2 つ以上書くと、2 つ目以降が誤った
    位置へ飛んでいたのを直しました。
    (CODA) が無ければ (TC) は何もしません。

ドキュメント

挙動は変わらず、文書に書いていなかったことを書きました。

  • 長さを省いた R は Ln の音長になります(MSX-MUSIC BASIC Extension の
    R は L によらず四分休符で、ここは違います)。
  • 音符も休符も無い無限ループ(|::|0 など)は、そのトラックがそこで終わります。
  • シーケンスのバイトコード
    (docs/y8960/bytecode.md)に、
    セーニョの目印 86 を足しました。ほかに、クオンタイズの範囲(1-8)、
    テンポの初期値(120)、到達カウンタが 256 回で一周すること、時間を取らない
    イベントの上限、チャンク 03 を読み手が検査しないことを書きました。
    音色を選ばないトラックも、書き手は既定の音色のレコードをブロックに入れる
    ことにしました。

収録物

ファイル サイズ 用途
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/ を参照して
ください。

MsxSoundSuiteExtension v0.3.2

Choose a tag to compare

@madscient madscient released this 16 Sep 09:07

利用条件

この ROM イメージは個人利用に限り許諾されています。

再配布には MSX ライセンシングコーポレーションの許諾が別途必要です。
詳細は同梱の NOTICE.md を参照してください。

v0.3.1 からの変更点

変更はすべて Y8960 BASIC Extension(y8960bas.rom)です。MSX-MUSIC・
MSX-AUDIO・SFG・MIDI Play の単体 ROM に利用者から見える変更はありません。

注意:CALL MINIT の引数が変わりました

リズムモードを引数で選ぶのをやめたため、第2引数が分解能になりました。

書き方 v0.3.1 v0.3.2
CALL MINIT(0) Syntax error 定位モノラル・200Hz
CALL MINIT(0,0) 定位モノラル・リズムモードなし・200Hz 定位モノラル・VDP 割り込みに相乗り(約60Hz)
CALL MINIT(0,0,0) 定位モノラル・リズムモードなし・約60Hz Syntax error
CALL MINIT(0,15) 全デバイスのリズムチャンネルを有効に Illegal function call

**CALL MINIT(0,0) はエラーにならずに意味が変わります。**v0.3.1 で
200Hz のつもりで書いていたものが約60Hz になるので、書き換えてください。

リズムモードは、シーケンスが使うチャンネルから自動で決まるようになりました
(下記)。

注意:FM 音源の @n と、音色の初期値が変わりました

  • @ を書く前の音符が @0 で鳴るようになりました(全音源)。ADPCM
    チャンネルではボイスファイル 0 です。曲を繰り返すと、そのたびにこの音色から
    始まります。
  • OPLLEX の @n の 0-63 でプリセット音色を選択できない不具合を修正しました。
    チップ内蔵の音色は 65-127(n−64 の bit5-4 がバンク、bit3-0 がバンク内の番号)です。
    @64 は Illegal function call になります。
  • v0.3.1 までの OPLLEX は、@1〜@15 をチップ内蔵の音色として鳴らしていました
    (@16〜@63 も下位4ビットに畳んで同じ音色になり、@0 はチップのユーザー音色
    でした)。そう書いた MML は @65〜@79 に書き換えてください。
  • OPLLEX でプリセットと VOICE COPY の音色を鳴らすときは、チップのユーザー音色を
    使います。ユーザー音色は 1 回路に 1 つなので、**同じ OPLLEX の 2 つの
    チャンネルで違うプリセットを同時に鳴らすと、あとから選んだほうで両方が
    鳴ります。**チップ内蔵の音色(65-127)はチャンネルごとに選べます。

リズムモードがシーケンスから決まるようになりました

OPLLEX と OPL2EX の各ブロックは、チャンネル 10 のリズム音を鳴らすあいだ
チャンネル 6-8 をリズム音に使います。1 つのブロックでチャンネル 10 と 6-8 は
同時に使えません。

  • モードは MSTART(MPLAY は鳴らし始めるとき)に決まります。チャンネル 10 に
    トラックを持つブロックはリズムモードに入り、6-8 に持つブロックは出ます。
    MINIT の直後はどのブロックもリズムモードではありません。
  • 同じブロックのチャンネル 10 と 6-8 が揃ってしまう MASSIGN MLOAD MPLAY は
    エラーになります。先に割り当てたほうが優先されます。
  • 一時停止からの再開と、リピートで先頭に戻るときはモードを設定し直しません。

ADPCM のデータをディスクに出し入れする文が入りました

  • CALL EXPORT PCM(ファイル名,モード) ―― ボイスファイルの設定
    (番号・置き場所・長さ・サンプリング周波数)と ADPCM メモリの中身を、
    ディスクのファイルに書き出します。モードは 1 が設定、2 が ADPCM メモリ、
    3 が両方です。
  • CALL IMPORT PCM(ファイル名,モード) ―― 同じファイルから読み込み
    ます。設定を読み込むとボイスファイルの設定はすべて置き換わります。
    演奏中は Illegal function call です。
  • 書き出すのは ADPCM メモリに置いたボイスファイルだけで、配列変数と VRAM の
    ものは書き出しません。ディスクの無い機械では Illegal function call です。
  • ファイルのバイト単位の形は
    docs/y8960/pcmfile.md
    にあります。PC 側で同じファイルを作るときに使えます。

SET PCM と COPY PCM が VRAM の 128KB 全体を扱えるようになりました

  • SET PCM のデバイス 5(VRAM)のページが 0-511(128KB) になりました
    (MSX1 は 0-63)。これまでは 64KB までしか読み書きできず、ページ 256 以降を
    指すと先頭に書いていました。
  • **領域が VRAM の外に出るとエラーになります。**これまで範囲の検査はありません
    でした。

直したもの

演奏エンジンが仕様と食い違っていた箇所をまとめて直しました。

  • ポルタメントが、1 tick に 2 半音を超える速さのとき到達点に届かなかったのを
    直しました。
  • (DC) と (FINE) を書いた tick で、番号の大きいトラックがもう1つ先まで
    進んでいたのを直しました。
  • **長さ 0 の音長イベントが 1 tick を取っていたのを直しました。**その tick の
    うちに次のイベントへ進みます。(C0R4 の C が、キーオンと同じ tick で
    キーオフされて鳴らないのはこれまでどおりです)
  • シーケンスが先頭に戻るとき 1 tick 空いていたのを直しました。(1 tick も
    取らずに終わる周だけは、これまでどおり次の tick を待ちます)
  • **フェードアウトが始まると曲が遅くなることがあったのを直しました。**1 回の
    割り込みで進む tick の数は、再生中と同じです。
  • リズムチャンネルに、シーケンス音量・ミュート・フェードが効くようになりました。
    鳴り続けている楽器にも、打撃を待たずにその場で効きます。
  • リズムモードに入るとき、チャンネル 6-8 の F-Number を設定するようにしました。
    これまでは 0 のままでした。
  • リズムのアクセント(@A)が、繰り返しや飛び越しのあとに前の周のものを
    引きずっていたのを直しました。
  • SCC で、シーケンスが持つ波形の読み込みが抜けることがあったのを直しました。
  • **Y で書いた値が、次の音符で消えていたのを直しました。**音符・V・@ が
    受け持たないビットは、Y で書いた値のまま残ります。
  • OPL2EX で @n を書かないトラックが、音色表に無い音色で鳴っていたのを
    直しました。
  • MTRK や MPLAY に式で作った文字列を渡していくと、10 個を超えたところで
    String formula too complex になり、その文が何もせずに戻っていたのを
    直しました。

Y8960 Sequencer BIOS

  • ABI バージョンが 3 になりました。
  • ADPCM のボイスファイル設定と ADPCM メモリを、メイン RAM との間で読み書きする
    4 本を足しました ―― SQPTBR(4097h)、SQPTBW(409Ah)、
    SQPCMR(409Dh)、SQPCMW(40A0h)。ファイルの読み書きは BIOS では行わず、
    アプリケーションが組み合わせます。
  • **SQINIT の E(リズムモード)は使わなくなりました。**リズムモードは
    SQSTRT が決めます。
  • SQALLC は、同じブロックのチャンネル 10 と 6-8 が揃うシーケンスを拒みます。

ドキュメント

  • docs/y8960/pcmfile.md
    を追加しました
    (EXPORT PCM / IMPORT PCM のファイル形式)。
  • シーケンスのバイトコードに、ADPCM ボイスファイルのチャンク 03 と、OPL2EX の
    リズム音色(索引 32-34)を書きました。A8(アクセント)を書き手が出すべき位置も
    はっきりさせました。
  • MML の Y で書いた値が、音符・V・@ とどう重なるかを書きました。

収録物

ファイル サイズ 用途
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/ を参照して
ください。

MsxSoundSuiteExtension v0.3.1

Choose a tag to compare

@madscient madscient released this 14 Sep 23:53

利用条件

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