SCMDv2.4.0について
v2.4.0では、サウンドカートリッジ必須という要件がなくなりました。
サウンドカートリッジがある場合は、従来通りそのRAMも使用します。
SCCに関係なく起動ができるようになり、メガロムSCCでも音が鳴るようになりました。
仕様について
SCMDv2.4.0はMSX2以上、64KB以上の空きメモリがあれば起動できます。例えばサウンドカートリッジや増設RAMを使わない場合は、メインRAM128KB以上で起動します。
曲を再生するには空きメモリが曲データのサイズ以上必要です。
※SDTで管理するサイズは最大4MBなので、それ以上の空きメモリがあっても意味はありません。
スロット制限について
これはv1からずっとあったのですが、旧サイトから引っ越したときに記述が抜けたようです。
SCMDでは、各SCCカートリッジ、データを置くマッパーRAMが同じ基本スロットでは動作しません。
今回の更新で同じ基本スロットに対応しようかと考えましたが、マッパーRAM、SCCRAMの組み合わせが複雑になった分、その切り替え処理に時間が掛かるようになってしまい、更に手間のかかる拡張スロット切り換えに対応すると速度的にマイナスが大きいとの判断でスロット制限はそのままにしました。
サウンドカートリッジのメモリ容量について
今までは2つサウンドカートリッジを挿しても、処理の都合上容量の少ない方のメモリ1つの増加分になるという仕様でしたが、今回色々なメモリの組み合わせに対応した結果、純粋にメモリ容量を合計して使用できるようになりました。
128KBと64KBのサウンドカートリッジを挿せば、64KB増ではなく192KB増になります。
DOS2について
開発後しばらくはDOS2環境を持っていなかったことや、RAMを全てデータ用に使いたいということから、DOS2に対応していませんでしたが、今回の更新ではマッパーサポートルーチンを検出すると、それに従ってメモリを確保するようにしました。
欠点としてDOS2自体に2セグメント、turboRの場合更に4セグメントが取られてしまいます(1セグメント=16KB)。
SCMDはセグメント4から連続で繋がったエリアが必要なので、turboRでは96KBがまるまる使えなくなります(空き容量で考えると、A1STでは256KB-96KB-64KB=残り96KBしかありません。)
その上DOS2では任意の指定したスロットのRAMに、直接FDDから読んだデータを配置する方法が不明だったので一旦小さなバッファを介してデータを読む事になりました。その結果、曲のロード時間も遅くなっています。
フロッピーディスクのフォーマットをDOS1で行った場合や1キー立ち上げの場合は、DOS1で動作することになるので、前バージョンと同様にturboRでもメモリをフルに使えます。
メモリ増設カートリッジについて
もしメモリマッパーの増設カートリッジを挿した場合は、そのメモリを使うことが出来ますが(複数のマッパー合算には対応しません)、外部スロットが2つの場合拡張スロットを使ってもスロットの制限仕様上、SCCは1つしか挿せなくなります。
また増設メモリで確保できる容量は増設容量から64KB引いた値になります(セグメント0から3は使えません)。
4MB増設メモリでマッパーサポートルーチンがある場合、マッパーサポートルーチンが256セグメントを扱えないようなので、255セグメント=4080KBが増設容量となります。
マッパーはDOS1がプライマリマッパーに選んだものをそのまま選択していますが、マッパー拡張ルーチンがあれば最大の空きセグメントがあるマッパーRAMを探しそれを使います。
SCCの認識順序について
MML上でs1からs5がプライマリ、s6からs10がセカンダリとなります。
SCCはスロットの数の大きい方(#3-3)から小さい方(#0-0)へ検索し、最初に見つかったSCCをプライマリとしますが、2つ見つかって、片方がサウンドカートリッジの場合、サウンドカートリッジを優先的にプライマリにします。
SCC音源yコマンドの無効化
SCCの処理が変わりyコマンド処理時にSCCが出ない構造になったので、SCCのyコマンドは無効となります。
メガロムSCCについて
サウンドカートリッジの代わりに、メガロムのSCCが使用できるようになりました。
ただし、ch4,5(本来表記はD,Eかと思いますがややこしくなると思いますので数字で書きます)の波形共有と、基本機能としての波形をch4,5はまともに再生できないという弱点があるようなので、サウンドカートリッジの性能とはかなり違う面があります。
波形共有の問題点については、ch5の波形データを書き込みを無視するモード(デフォルト)、ch5の波形データ書き込みをch4へ書いてしまうモードを起動時のキー入力で選択できるようにしました。以下のキー操作の変更点で説明します。
キー操作の変更点
何も押さずに起動すると、ch5の波形書き込みを無視するモードとなります。
これはch4の波形を壊さないメリットがある一方で、ch4に波形書き込みがないデータの場合、ch5の発音が無音になってしまう欠点があります。
デフォルトで問題がある場合は、起動時にctrlキーを押しっぱなしにしていれば、ch4の波形上書きモードで起動します。
どちらが良いかは曲データによりけりなので一概には決められず、またどちらにしてもサウンドカートリッジでの再生にはならないのでオマケ機能のようなものとなります。
波形書き込みモードのキー入力追加に伴い、これまでのパナソニック2+の高速モードを使用する為にスペースキーを押しっぱなしで起動する方法は、ctrlキーとスペースキーの相性が悪いようなので、スペースキーからshiftキーに変更になりました。
どちらも文字入力にならないので、scと入力してからctrlキー、shiftキーを押して、リターンキーを押すという順序で入力ミスが減ると思います。
※以前のスペースキーですと、ディスクアクセス中に押さないと判定を過ぎてしまう、リターンキー前に押してしまうと空白入力で、そんなsdtファイルはないとエラーになってしまうことがありました。
openMSXについて
曲データを作成するときはエミュレータを使いますが、現在はopenMSXが比較的に音の再現性が良く使いやすい思われます(ただフィルタが再現されていないようなので、高音が強く出てしまいますが)。
作業的にはdir as diskを使ってディレクトリをフロッピーディスクとして扱い、コンパイル→ディレクトリにファイル作成→openMSX内で再読み込みというループです。
これがたまにファイルデータが破損状態でopenMSXに読み込まれることがあり、破損データを再生するとSCMDは暴走する可能性があります。
この対策として簡易的な破損チェックをv2.4.0に組み込みました。
破損が検出されると、メッセージが出て演奏を強制停止します。
その場合は、メニューからdir as diskを再度実行してフロッピーの認識をリセットしてください(openMSXを一旦終了して再起動でも再認識されます)。
ただしこのチェックは簡易的なので、すり抜けて暴走してしまう場合や、暴走せずとも演奏がおかしくなる可能性はあります。
そのあたりは、挙動がどうも怪しいとおもったら再認識を試して下さい。
(再認識が上手くいかない場合、openMSXの再起動が確実かと思われます)
他についやってしまいがちなのが、ファイルサイズがフロッピーディスクのサイズをオーバーしてしまうことです。
一度オーバーしてしまうとディレクトリ内のファイルを削除してもopenMSXが管理するディスク構造が壊れたままになるようで、こちらも再認識が必要のようです。