Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

MGSDRVの音楽データをMSX1で聴きたい!

随時更新中。2020年8月頃は物凄く限定的な条件下で利用可能なようでしたが、10月現在は敷居がグッと下がりました! MSX1+NextorでMGSDRVをインストール

ちなみにMGSDRVの概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp

初代MSX(MSX1)での利用条件(2020.10.23現在)

  • 本体RAMは、内蔵RAM 64KB(MSX-DOS利用時)または マッパーRAM(メモリマッパ)128KB以上(Nextor利用時)。
  • Carnivore2、MegaFlashROM SCC+SD のような、ストレージドライブ・Nextorカーネル・マッパーRAM・音源チップを兼用する海外製の多機能カートリッジのご利用がおすすめです。
  • Nextorの利用時、MSX1のマッパーRAMにおけるMGSDRV側の初期化処理に問題があることが判明しています。ご利用の実行環境でフリーズする場合は後述の「MAINROMP.COM」を利用することで解決できるようです。

MSX1でMGSDRVの曲を聞く手順

MGSP・MGSP v2(再生アプリ)

 MGSDRVをNextor(DOS2の上位互換OS)上で常駐し、MGSDRV形式データ(拡張子.MGS)を再生するアプリを利用する方法です。

 簡易再生アプリの「MGSP」およびMGSELライクのオーディオビジュアライザー搭載「MGSP v2」が存在します。どちらもHRA!さん(twitter@thara1129)が開発しています。バージョンアップと有志によるデバッグが活性化しています。ありがとうございます。

MAINROMP.COM を併用してください

 MSX1におけるワークエリア参照の問題(後延)を解決するアプリ「MAINROMP.COM」を、MGSDRVの常駐前に実行してください。

 MSX1用再生アプリ「MGSP」「MGSP v2」および「MAINROMP.COM」はHRA!さんのWebサイトにてダウンロードできます。 hraroom.s602.xrea.com

MGSC(MMLコンパイラアプリ)

MGSDRV形式のMMLデータ(拡張子.MUS)を用意し、MGSC.COMでMMLコンパイルして聴く方法です。

らいきんぐ!さん(twitter@liking_birds)がまとめてくださりました。ありがとうございます。

MSXplayとは、Webブラウザ上でMGSDRV形式のMMLをエディット、コンパイルして音楽再生、MGSDRV形式データへのエクスポート、MMLのシェアリングができる便利なWebサービスです。今回はMSXplayでシェアリングされているMMLを取り出し、MSX1の実機で演奏までもってゆく方法を解説しています。

そもそも論(MGSDRVの動作環境のおさらい)

 MSXのミュージックドライバ「MGSDRV」の動作環境は以下の条件に合致するのものを推奨しています。

  • MSX2(VRAM64KB)以上 ※MGSEL.COMの動作条件として必要
  • MSX-DOS2 ※MGSDRVの通常利用の条件として必要
  • RAM 128KB以上 ※マッパーRAM準拠。DOS2が128KB以上必要なので

 あれば嬉しいものは以下の通り

  • FM音源MSX-MUSIC)とSCC音源
  • 漢字ROM ※MGSEL.COMの日本語表示機能として

 MSXturboRならSCC以外は全部入りですのでほぼturboRでの利用が前提なのですが、それ以下の規格ですと本体拡張が必要です。MSX-DOS2カートリッジを挿したり、FM-PACを挿したり…

 つまり、初代MSX(MSX1)は非推奨です。もの凄く頑張れば「MSX2バージョンアップアダプタ」+「FM-PAC」+「SCCカートリッジ」+「フロッピーディスクドライブ」+「MSX-DOS2カートリッジ」…鬼のような拡張を行えば可能かもしれませんがスロットが圧倒的に足りません。

いま流行の「多機能カートリッジ」

 令和のいま流行しているMSXのトレンドって何言ってるんだよお前は、って話はあるのですが。

 フロッピーディスクが死滅しつつある現状でMSXにおけるストレージの問題を解決すぺく、現在普及しているストレージをMSXで利用できるようにするカートリッジというものが生まれました。

 さらに、スロット節約の流れで、1つのカートリッジに複数の機能を持たせる「多機能カートリッジ」というジャンルが生まれました。海外発のプロダクトがいくつか発売され、2020年現在の人気アイテムとなっています。

MegaFlashROM SCC+SD

  • SDカードスロット(MegaSCSI・MegaSD互換品)
  • マッパーRAM 512KB 拡張
  • Nextor(DOS2上位互換のDOSカーネル
  • SCC音源(互換品)

www.msx.org

Carnivore2

  • CompactFlashカードスロット(Sunrise IDE互換品)
  • マッパーRAM 1MB拡張
  • Nextor(DOS2上位互換のDOSカーネル
  • MSX-MUSIC(互換品)
  • SCC音源(互換品)
  • Pana Amusement CartridgeのSRAMバックアップ(互換品, 要改造)

www.msx.org

Nextor という新OSの台頭

 最近の大容量ストレージを扱うにあたりMSX-DOSにつきまとうFAT12(最大容量32MBytes)の制限を突破する必要があり、MSX-DOS2の上位互換品である「Nextor」が開発されました。NextorはFAT16対応(最大容量2GBytes)で、ストレージのカートリッジに含まれることでユーザーは快適に利用できるようになりました。

www.msx.org

 Nextorを動作するためにはRAMを64KB以上に増設する必要があるため、Nextorの利用を前提とした大容量ストレージカートリッジは概ね増設用マッパーRAM(やオマケ要素の各種音源)も搭載しています。こういった多機能カートリッジをMSX1で利用することで、MSX1でもSDカードをストレージドライブに設定できたり、SCC音源・FM音源による音楽再生を楽しめることが可能になりました。

MSX1「再活用」の課題

 ただし、多機能カートリッジでMSX1を「再活用」することで問題が見つかることがあります。

Nextor=DOS2 ではない

 NextorはMSX-DOS2の上位互換品として開発されていますが、DOS2との完全互換ではありません。DOS2で動作するコマンドアプリがNextorで動作するかは、やってみなければ分かりません。

マッパーRAMへのアクセス方法がMSX1で怪しい(私がよく分かっていないだけかもしれません)

 64KB以上のRAMアクセスを仕様化した「マッパーRAM(メモリマッパー)」のマッパーBIOSMSX2の時代に実装されています。MSX1の時代には無かった概念です。よってマッパーRAMを利用するDOS2のコマンドアプリがMSX1+Nextorでは動作しない報告が上がっています。NextorのマッパーRAM制御機能がDOS2の挙動と少し違うようです。

 MGSDRVはMSX-DOS2環境下に「常駐(メモリに配置し続ける)」することを通常の利用方法としています。ですが、MGSDRV 3.20では元々MSX2以降の規格での利用を想定しており、メインROMスロット番号の参照をMSX2以降で新設されたワークエリア FFF7h(MINROM)から参照していました。MSX1ではFFF7hが使用されない(不定値となる)ためMSX1の実行環境では正しいスロット番号が参照できないためにMGSDRVの常駐処理でフリーズが発生していた模様です。

MSX1+マッパーRAM環境下における対処法

 よって、MSX1においては以下の手順を先行追加することで、MSX2以降の動作を前提としていた各種アプリケーションがMSX1でも利用できる可能性が高まることのようです。

  • FCC1h(EXPTBL)からメインROMスロット番号を参照するようにプログラムを修正する
  • プログラムでワークエリア FFF7h(MINROM)が参照される前にあらかじめ FCC1h(EXPTBL)の内容をFFF7hへコピーしておく

 MGSDRVにおいてもこの手順によりMSX1+マッパーRAM+Nextor環境での利用が可能となります。HRA!さん開発の「MAINROMP.COM」が上記ワークエリア値の変更を実現し、ワークエリア参照の問題を解決します。

BASIC(DMシステム2)環境下における対処法

 拙作DMシステム2でもMGSDRVを搭載していますのでMSX1でDMシステム2が動作するのであればMGSDRVのデータ再生がBASICから行えるのでは?と考えMSX1でDMシステム2のインストールを試みましたが、マッパーRAM 512KB搭載の状態ではフリーズしました。(RAMが64KBのままならそのままインストール可能です)

 調査の結果、MGSDRVと同等の問題を抱えていることが分かりました。DMシステム2のインストール前に「MAINROMP.COM」を先行実行することで、MSX1+マッパーRAM+Nextor環境においてもDMシステム2のインストールが可能になります。

 DMシステム2の概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp

古いアプリはNextor対応への修正がされにくい

 そもそも作者さんが不明、作者さんが居たとしても現在のMSX1ないしNextorをとりまく環境を再整備することができずにソフトウェアの修正が行えない場合が多々あります。

原因判明までの経緯

WebMSX+MSX1+Nextorの実行環境ではMGSDRVを常駐インストールできる

   ↓

実機(カシオ MX-101)を再現したOpenMSX+Carnivore2+Nextor+MGSDRV 3.20の実行環境ではインストール時にフリーズする(3.04ではフリーズしない)

   ↓

調査の結果、MSX1では未定義のFFF7hを参照しているMGSDRV 3.20のコードが原因であることが判明する

   ↓

MGSDRVのバージョンを3.04から3.20へ上げたことでフリーズする原因は、MSX2バージョンアップアダプタによるMSX2実行環境に対応したためである可能性が指摘される

   ↓

FFF7hはMSX2以降で新設されたメインROMスロット番号のワークエリアでありMSX1では初期化されないため、内容によってはRAMへのアクセスが正常に行えずフリーズする可能性があることが判明する

   ↓

FFF7hの参照箇所をFCC1hに変更する、MSX1+RAM64K+Nextorで動作する非公式パッチが開発される

   ↓

実機(カシオ MX-10)+MegaFlashROM SCC+SD+Nextorの実行環境で、常駐インストールが可能になる →不具合の原因が確定する

皆さんの情報提供があってフリーズの原因が判明しました。ありがとうございます。