Skip to content

MsxSoundSuiteExtension v0.5.0

Choose a tag to compare

@madscient madscient released this 17 Oct 19:37
· 24 commits to master since this release

利用条件

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